Browse Source

Merge pull request #1792 from nextcloud/combineSendShare

Combine send share
Mario Đanić 7 years ago
parent
commit
3ebc31db17
76 changed files with 895 additions and 403 deletions
  1. 2 8
      src/main/java/com/ortiz/touch/TouchImageView.java
  2. 2 11
      src/main/java/com/owncloud/android/files/FileMenuFilter.java
  3. 7 1
      src/main/java/com/owncloud/android/files/services/FileDownloader.java
  4. 14 1
      src/main/java/com/owncloud/android/operations/DownloadFileOperation.java
  5. 33 15
      src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java
  6. 88 0
      src/main/java/com/owncloud/android/ui/adapter/SendButtonAdapter.java
  7. 54 0
      src/main/java/com/owncloud/android/ui/components/SendButtonData.java
  8. 235 0
      src/main/java/com/owncloud/android/ui/dialog/SendShareDialog.java
  9. 6 13
      src/main/java/com/owncloud/android/ui/fragment/FileDetailFragment.java
  10. 4 28
      src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java
  11. 13 16
      src/main/java/com/owncloud/android/ui/helpers/FileOperationsHelper.java
  12. 5 12
      src/main/java/com/owncloud/android/ui/preview/PreviewImageFragment.java
  13. 6 16
      src/main/java/com/owncloud/android/ui/preview/PreviewMediaFragment.java
  14. 4 11
      src/main/java/com/owncloud/android/ui/preview/PreviewTextFragment.java
  15. 28 29
      src/main/res/layout/activity_row.xml
  16. 178 178
      src/main/res/layout/file_details_fragment.xml
  17. 37 0
      src/main/res/layout/send_button.xml
  18. 118 0
      src/main/res/layout/send_share_fragment.xml
  19. 2 8
      src/main/res/menu/file_actions_menu.xml
  20. 1 1
      src/main/res/values-ar/strings.xml
  21. 1 1
      src/main/res/values-ast/strings.xml
  22. 1 1
      src/main/res/values-b+en+001/strings.xml
  23. 0 1
      src/main/res/values-b+es+419/strings.xml
  24. 1 1
      src/main/res/values-bg-rBG/strings.xml
  25. 1 1
      src/main/res/values-ca/strings.xml
  26. 1 1
      src/main/res/values-cs-rCZ/strings.xml
  27. 1 1
      src/main/res/values-da/strings.xml
  28. 1 1
      src/main/res/values-de-rDE/strings.xml
  29. 1 1
      src/main/res/values-de/strings.xml
  30. 1 1
      src/main/res/values-el/strings.xml
  31. 1 1
      src/main/res/values-es-rAR/strings.xml
  32. 1 1
      src/main/res/values-es-rCL/strings.xml
  33. 1 1
      src/main/res/values-es-rCO/strings.xml
  34. 1 1
      src/main/res/values-es-rCR/strings.xml
  35. 1 1
      src/main/res/values-es-rDO/strings.xml
  36. 1 1
      src/main/res/values-es-rEC/strings.xml
  37. 1 1
      src/main/res/values-es-rGT/strings.xml
  38. 1 1
      src/main/res/values-es-rHN/strings.xml
  39. 1 1
      src/main/res/values-es-rMX/strings.xml
  40. 1 1
      src/main/res/values-es-rNI/strings.xml
  41. 1 1
      src/main/res/values-es-rPA/strings.xml
  42. 1 1
      src/main/res/values-es-rPE/strings.xml
  43. 1 1
      src/main/res/values-es-rPR/strings.xml
  44. 1 1
      src/main/res/values-es-rPY/strings.xml
  45. 1 1
      src/main/res/values-es-rSV/strings.xml
  46. 1 1
      src/main/res/values-es-rUY/strings.xml
  47. 1 1
      src/main/res/values-es/strings.xml
  48. 1 1
      src/main/res/values-eu/strings.xml
  49. 1 1
      src/main/res/values-fa/strings.xml
  50. 1 1
      src/main/res/values-fi-rFI/strings.xml
  51. 1 1
      src/main/res/values-fr/strings.xml
  52. 1 1
      src/main/res/values-hu-rHU/strings.xml
  53. 1 1
      src/main/res/values-id/strings.xml
  54. 1 1
      src/main/res/values-is/strings.xml
  55. 1 1
      src/main/res/values-it/strings.xml
  56. 1 1
      src/main/res/values-ja-rJP/strings.xml
  57. 1 1
      src/main/res/values-ka-rGE/strings.xml
  58. 1 1
      src/main/res/values-ko/strings.xml
  59. 1 1
      src/main/res/values-lt-rLT/strings.xml
  60. 1 1
      src/main/res/values-nb-rNO/strings.xml
  61. 1 1
      src/main/res/values-nl/strings.xml
  62. 1 1
      src/main/res/values-pl/strings.xml
  63. 1 1
      src/main/res/values-pt-rBR/strings.xml
  64. 0 1
      src/main/res/values-pt-rPT/strings.xml
  65. 1 1
      src/main/res/values-ro/strings.xml
  66. 1 1
      src/main/res/values-ru/strings.xml
  67. 1 1
      src/main/res/values-sk-rSK/strings.xml
  68. 1 1
      src/main/res/values-sl/strings.xml
  69. 1 1
      src/main/res/values-sq/strings.xml
  70. 1 1
      src/main/res/values-sr/strings.xml
  71. 1 1
      src/main/res/values-sv/strings.xml
  72. 1 1
      src/main/res/values-tr/strings.xml
  73. 1 1
      src/main/res/values-zh-rCN/strings.xml
  74. 1 1
      src/main/res/values-zh-rTW/strings.xml
  75. 1 0
      src/main/res/values/dims.xml
  76. 5 1
      src/main/res/values/strings.xml

+ 2 - 8
src/main/java/com/ortiz/touch/TouchImageView.java

@@ -1184,14 +1184,8 @@ public class TouchImageView extends AppCompatImageView {
     	boolean isPreGingerbread;
     	
     	public CompatScroller(Context context) {
-    		if (VERSION.SDK_INT < VERSION_CODES.GINGERBREAD) {
-    			isPreGingerbread = true;
-    			scroller = new Scroller(context);
-    			
-    		} else {
-    			isPreGingerbread = false;
-    			overScroller = new OverScroller(context);
-    		}
+    		isPreGingerbread = false;
+    		overScroller = new OverScroller(context);
     	}
     	
     	public void fling(int startX, int startY, int velocityX, int velocityY, int minX, int maxX, int minY, int maxY) {

+ 2 - 11
src/main/java/com/owncloud/android/files/FileMenuFilter.java

@@ -242,9 +242,9 @@ public class FileMenuFilter {
                 );
         if ((!shareViaLinkAllowed && !shareWithUsersAllowed) ||
                 !isSingleSelection() || !shareApiEnabled || mOverflowMenu) {
-            toHide.add(R.id.action_share_file);
+            toHide.add(R.id.action_send_share_file);
         } else {
-            toShow.add(R.id.action_share_file);
+            toShow.add(R.id.action_send_share_file);
         }
 
         // SEE DETAILS
@@ -254,15 +254,6 @@ public class FileMenuFilter {
             toShow.add(R.id.action_see_details);
         }
 
-        // SEND
-        boolean sendAllowed = (mContext != null &&
-                mContext.getString(R.string.send_files_to_other_apps).equalsIgnoreCase("on"));
-        if (!isSingleFile() || !sendAllowed || synchronizing) {
-            toHide.add(R.id.action_send_file);
-        } else {
-            toShow.add(R.id.action_send_file);
-        }
-
         // Kept available offline
         if (!allFiles() || synchronizing || allKeptAvailableOffline()) {
             toHide.add(R.id.action_keep_files_offline);

+ 7 - 1
src/main/java/com/owncloud/android/files/services/FileDownloader.java

@@ -55,6 +55,7 @@ import com.owncloud.android.lib.resources.files.FileUtils;
 import com.owncloud.android.operations.DownloadFileOperation;
 import com.owncloud.android.ui.activity.FileActivity;
 import com.owncloud.android.ui.activity.FileDisplayActivity;
+import com.owncloud.android.ui.dialog.SendShareDialog;
 import com.owncloud.android.ui.fragment.OCFileListFragment;
 import com.owncloud.android.ui.notifications.NotificationUtils;
 import com.owncloud.android.ui.preview.PreviewImageActivity;
@@ -182,9 +183,12 @@ public class FileDownloader extends Service
             final Account account = intent.getParcelableExtra(EXTRA_ACCOUNT);
             final OCFile file = intent.getParcelableExtra(EXTRA_FILE);
             final String behaviour = intent.getStringExtra(OCFileListFragment.DOWNLOAD_BEHAVIOUR);
+            String activityName = intent.getStringExtra(SendShareDialog.ACTIVITY_NAME);
+            String packageName = intent.getStringExtra(SendShareDialog.PACKAGE_NAME);
             AbstractList<String> requestedDownloads = new Vector<String>();
             try {
-                DownloadFileOperation newDownload = new DownloadFileOperation(account, file, behaviour);
+                DownloadFileOperation newDownload = new DownloadFileOperation(account, file, behaviour, activityName,
+                        packageName);
                 newDownload.addDatatransferProgressListener(this);
                 newDownload.addDatatransferProgressListener((FileDownloaderBinder) mBinder);
                 Pair<String, String> putResult = mPendingDownloads.putIfAbsent(
@@ -648,6 +652,8 @@ public class FileDownloader extends Service
         end.putExtra(EXTRA_REMOTE_PATH, download.getRemotePath());
         end.putExtra(EXTRA_FILE_PATH, download.getSavePath());
         end.putExtra(OCFileListFragment.DOWNLOAD_BEHAVIOUR, download.getBehaviour());
+        end.putExtra(SendShareDialog.ACTIVITY_NAME, download.getActivityName());
+        end.putExtra(SendShareDialog.PACKAGE_NAME, download.getPackageName());
         if (unlinkedFromRemotePath != null) {
             end.putExtra(EXTRA_LINKED_TO_PATH, unlinkedFromRemotePath);
         }

+ 14 - 1
src/main/java/com/owncloud/android/operations/DownloadFileOperation.java

@@ -56,9 +56,12 @@ public class DownloadFileOperation extends RemoteOperation {
     private final AtomicBoolean mCancellationRequested = new AtomicBoolean(false);
     
     private DownloadRemoteFileOperation mDownloadOperation;
+    private String mActivityName;
+    private String mPackageName;
 
 
-    public DownloadFileOperation(Account account, OCFile file, String behaviour) {
+    public DownloadFileOperation(Account account, OCFile file, String behaviour, String activityName,
+                                 String packageName) {
         if (account == null) {
             throw new IllegalArgumentException("Illegal null account in DownloadFileOperation " +
                     "creation");
@@ -71,6 +74,8 @@ public class DownloadFileOperation extends RemoteOperation {
         mAccount = account;
         mFile = file;
         mBehaviour = behaviour;
+        mActivityName = activityName;
+        mPackageName = packageName;
     }
 
 
@@ -201,4 +206,12 @@ public class DownloadFileOperation extends RemoteOperation {
             mDataTransferListeners.remove(listener);
         }
     }
+
+    public String getActivityName() {
+        return mActivityName;
+    }
+
+    public String getPackageName() {
+        return mPackageName;
+    }
 }

+ 33 - 15
src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java

@@ -86,6 +86,7 @@ import com.owncloud.android.operations.SynchronizeFileOperation;
 import com.owncloud.android.operations.UploadFileOperation;
 import com.owncloud.android.services.observer.FileObserverService;
 import com.owncloud.android.syncadapter.FileSyncAdapter;
+import com.owncloud.android.ui.dialog.SendShareDialog;
 import com.owncloud.android.ui.dialog.SortingOrderDialogFragment;
 import com.owncloud.android.ui.events.SyncEventFinished;
 import com.owncloud.android.ui.events.TokenPushEvent;
@@ -1448,7 +1449,10 @@ public class FileDisplayActivity extends HookActivity
                     if (mWaitingToSend.isDown() && downloadBehaviour != null) {
                         switch (downloadBehaviour) {
                             case OCFileListFragment.DOWNLOAD_SEND:
-                                sendDownloadedFile();
+                                String packageName = intent.getStringExtra(SendShareDialog.PACKAGE_NAME);
+                                String activityName = intent.getStringExtra(SendShareDialog.ACTIVITY_NAME);
+
+                                sendDownloadedFile(packageName, activityName);
                                 break;
                             default:
                                 // do nothing
@@ -1560,19 +1564,16 @@ public class FileDisplayActivity extends HookActivity
 
         @Override
         public void onServiceConnected(ComponentName component, IBinder service) {
-            if (component.equals(new ComponentName(
-                    FileDisplayActivity.this, FileDownloader.class))) {
+            if (component.equals(new ComponentName(FileDisplayActivity.this, FileDownloader.class))) {
                 Log_OC.d(TAG, "Download service connected");
                 mDownloaderBinder = (FileDownloaderBinder) service;
                 if (mWaitingToPreview != null && getStorageManager() != null) {
                     // update the file
-                    mWaitingToPreview =
-                            getStorageManager().getFileById(mWaitingToPreview.getFileId());
+                    mWaitingToPreview = getStorageManager().getFileById(mWaitingToPreview.getFileId());
                     if (!mWaitingToPreview.isDown()) {
                         requestForDownload();
                     }
                 }
-
             } else if (component.equals(new ComponentName(FileDisplayActivity.this,
                     FileUploader.class))) {
                 Log_OC.d(TAG, "Upload service connected");
@@ -1597,12 +1598,10 @@ public class FileDisplayActivity extends HookActivity
 
         @Override
         public void onServiceDisconnected(ComponentName component) {
-            if (component.equals(new ComponentName(FileDisplayActivity.this,
-                    FileDownloader.class))) {
+            if (component.equals(new ComponentName(FileDisplayActivity.this, FileDownloader.class))) {
                 Log_OC.d(TAG, "Download service disconnected");
                 mDownloaderBinder = null;
-            } else if (component.equals(new ComponentName(FileDisplayActivity.this,
-                    FileUploader.class))) {
+            } else if (component.equals(new ComponentName(FileDisplayActivity.this, FileUploader.class))) {
                 Log_OC.d(TAG, "Upload service disconnected");
                 mUploaderBinder = null;
             }
@@ -1968,19 +1967,35 @@ public class FileDisplayActivity extends HookActivity
         }
     }
 
-    private void requestForDownload(OCFile file, String downloadBehaviour) {
+    private void requestForDownload(OCFile file, String downloadBehaviour, String packageName, String activityName) {
         Account account = getAccount();
         if (!mDownloaderBinder.isDownloading(account, mWaitingToPreview)) {
             Intent i = new Intent(this, FileDownloader.class);
             i.putExtra(FileDownloader.EXTRA_ACCOUNT, account);
             i.putExtra(FileDownloader.EXTRA_FILE, file);
+            i.putExtra(SendShareDialog.PACKAGE_NAME, packageName);
+            i.putExtra(SendShareDialog.ACTIVITY_NAME, activityName);
             i.putExtra(OCFileListFragment.DOWNLOAD_BEHAVIOUR, downloadBehaviour);
             startService(i);
         }
     }
 
-    private void sendDownloadedFile() {
-        getFileOperationsHelper().sendDownloadedFile(mWaitingToSend);
+    private void sendDownloadedFile(String packageName, String activityName) {
+        if (mWaitingToSend != null) {
+            Intent sendIntent = new Intent(Intent.ACTION_SEND);
+            sendIntent.setType(mWaitingToSend.getMimetype());
+            sendIntent.putExtra(Intent.EXTRA_STREAM, mWaitingToSend.getExposedFileUri(this));
+            sendIntent.putExtra(Intent.ACTION_SEND, true);
+
+            sendIntent.setComponent(new ComponentName(packageName, activityName));
+
+            // Show dialog
+            String sendTitle = getString(R.string.activity_chooser_send_file_title);
+            startActivity(Intent.createChooser(sendIntent, sendTitle));
+        } else {
+            Log_OC.e(TAG, "Trying to send a NULL OCFile");
+        }
+        
         mWaitingToSend = null;
     }
 
@@ -1990,10 +2005,13 @@ public class FileDisplayActivity extends HookActivity
      * when the download finishes.
      *
      * @param file {@link OCFile} to download and preview.
+     * @param packageName
+     * @param activityName
      */
-    public void startDownloadForSending(OCFile file, String downloadBehaviour) {
+    public void startDownloadForSending(OCFile file, String downloadBehaviour, String packageName,
+                                        String activityName) {
         mWaitingToSend = file;
-        requestForDownload(mWaitingToSend, downloadBehaviour);
+        requestForDownload(mWaitingToSend, downloadBehaviour, packageName, activityName);
         boolean hasSecondFragment = (getSecondFragment() != null);
         updateFragmentsVisibility(hasSecondFragment);
     }

+ 88 - 0
src/main/java/com/owncloud/android/ui/adapter/SendButtonAdapter.java

@@ -0,0 +1,88 @@
+package com.owncloud.android.ui.adapter;
+
+/*
+ * Nextcloud Android client application
+ *
+ * @author Tobias Kaminsky
+ * Copyright (C) 2017 Tobias Kaminsky
+ * Copyright (C) 2017 Nextcloud GmbH.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+import android.support.v7.widget.RecyclerView;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import com.owncloud.android.R;
+import com.owncloud.android.ui.components.SendButtonData;
+
+import java.util.List;
+
+public class SendButtonAdapter extends RecyclerView.Adapter<SendButtonAdapter.ViewHolder> {
+
+    private List<SendButtonData> sendButtonDataList;
+    private ClickListener clickListener;
+
+    public SendButtonAdapter(List<SendButtonData> sendButtonDataList, ClickListener clickListener) {
+        this.sendButtonDataList = sendButtonDataList;
+        this.clickListener = clickListener;
+    }
+
+    @Override
+    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+        return new ViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.send_button, parent, false));
+    }
+
+    @Override
+    public void onBindViewHolder(ViewHolder holder, int position) {
+        holder.setData(sendButtonDataList.get(position));
+    }
+
+    @Override
+    public int getItemCount() {
+        return sendButtonDataList.size();
+    }
+
+    public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
+
+        private TextView sendButton;
+        private SendButtonData sendButtonDataData;
+
+        public ViewHolder(View itemView) {
+            super(itemView);
+            itemView.setOnClickListener(this);
+            sendButton = (TextView) itemView.findViewById(R.id.send_button);
+        }
+
+        @Override
+        public void onClick(View v) {
+            if (clickListener != null) {
+                clickListener.onClick(sendButtonDataData);
+            }
+        }
+
+        public void setData(SendButtonData item) {
+            sendButtonDataData = item;
+            sendButton.setCompoundDrawablesWithIntrinsicBounds(null, item.getDrawable(), null, null);
+            sendButton.setText(item.getTitle());
+        }
+    }
+
+    public interface ClickListener {
+        void onClick(SendButtonData sendButtonDataData);
+    }
+}

+ 54 - 0
src/main/java/com/owncloud/android/ui/components/SendButtonData.java

@@ -0,0 +1,54 @@
+package com.owncloud.android.ui.components;
+
+/*
+ * Nextcloud Android client application
+ *
+ * @author Tobias Kaminsky
+ * Copyright (C) 2017 Tobias Kaminsky
+ * Copyright (C) 2017 Nextcloud GmbH.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+import android.graphics.drawable.Drawable;
+
+public class SendButtonData {
+    private Drawable drawable;
+    private CharSequence title;
+    private String packageName;
+    private String activityName;
+
+    public SendButtonData(Drawable drawable, CharSequence title, String packageName, String activityName) {
+        this.drawable = drawable;
+        this.title = title;
+        this.packageName = packageName;
+        this.activityName = activityName;
+    }
+
+    public Drawable getDrawable() {
+        return drawable;
+    }
+
+    public CharSequence getTitle() {
+        return title;
+    }
+
+    public String getPackageName() {
+        return packageName;
+    }
+
+    public String getActivityName() {
+        return activityName;
+    }
+}

+ 235 - 0
src/main/java/com/owncloud/android/ui/dialog/SendShareDialog.java

@@ -0,0 +1,235 @@
+package com.owncloud.android.ui.dialog;
+
+import android.content.ComponentName;
+import android.content.Intent;
+import android.content.pm.ResolveInfo;
+import android.graphics.PorterDuff;
+import android.graphics.drawable.Drawable;
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.support.design.widget.BottomSheetDialogFragment;
+import android.support.design.widget.Snackbar;
+import android.support.v7.widget.GridLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.owncloud.android.R;
+import com.owncloud.android.datamodel.OCFile;
+import com.owncloud.android.lib.common.utils.Log_OC;
+import com.owncloud.android.ui.activity.FileDisplayActivity;
+import com.owncloud.android.ui.adapter.SendButtonAdapter;
+import com.owncloud.android.ui.components.SendButtonData;
+import com.owncloud.android.ui.fragment.OCFileListFragment;
+import com.owncloud.android.ui.helpers.FileOperationsHelper;
+import com.owncloud.android.utils.MimeTypeUtil;
+import com.owncloud.android.utils.ThemeUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/*
+ * Nextcloud Android client application
+ *
+ * @author Tobias Kaminsky
+ * Copyright (C) 2017 Tobias Kaminsky
+ * Copyright (C) 2017 Nextcloud GmbH.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+public class SendShareDialog extends BottomSheetDialogFragment {
+
+    private static final String KEY_OCFILE = "KEY_OCFILE";
+    private static final String TAG = SendShareDialog.class.getSimpleName();
+    public static final String PACKAGE_NAME = "PACKAGE_NAME";
+    public static final String ACTIVITY_NAME = "ACTIVITY_NAME";
+
+    private View view;
+    private OCFile file;
+    private FileOperationsHelper fileOperationsHelper;
+    private FileDisplayActivity fileDisplayActivity;
+
+    public static SendShareDialog newInstance(OCFile file) {
+
+        SendShareDialog dialogFragment = new SendShareDialog();
+
+        Bundle args = new Bundle();
+        args.putParcelable(KEY_OCFILE, file);
+        dialogFragment.setArguments(args);
+
+        return dialogFragment;
+    }
+
+    @Override
+    public void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        // keep the state of the fragment on configuration changes
+        setRetainInstance(true);
+
+        view = null;
+
+        file = getArguments().getParcelable(KEY_OCFILE);
+    }
+
+    @Nullable
+    @Override
+    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+
+        view = inflater.inflate(R.layout.send_share_fragment, container, false);
+
+        // Share with people
+        TextView sharePeopleText = view.findViewById(R.id.share_people_button);
+        sharePeopleText.setOnClickListener(v -> shareFile(file));
+
+        ImageView sharePeopleImageView = view.findViewById(R.id.share_people_icon);
+        themeShareButtonImage(sharePeopleImageView);
+        sharePeopleImageView.setOnClickListener(v -> shareFile(file));
+
+        // Share via link button
+        TextView shareLinkText = view.findViewById(R.id.share_link_button);
+        shareLinkText.setOnClickListener(v -> shareFile(file));
+
+        ImageView shareLinkImageView = view.findViewById(R.id.share_link_icon);
+        themeShareButtonImage(shareLinkImageView);
+        shareLinkImageView.setOnClickListener(v -> shareFile(file));
+
+        if (file.isSharedWithMe() && !file.canReshare()) {
+            showResharingNotAllowedSnackbar();
+
+            if (file.isFolder()) {
+                shareLinkText.setVisibility(View.GONE);
+                shareLinkImageView.setVisibility(View.GONE);
+                sharePeopleText.setVisibility(View.GONE);
+                sharePeopleImageView.setVisibility(View.GONE);
+                getDialog().hide();
+            } else {
+                shareLinkText.setEnabled(false);
+                shareLinkText.setAlpha(0.3f);
+                shareLinkImageView.setEnabled(false);
+                shareLinkImageView.setAlpha(0.3f);
+                sharePeopleText.setEnabled(false);
+                sharePeopleText.setAlpha(0.3f);
+                sharePeopleImageView.setEnabled(false);
+                sharePeopleImageView.setAlpha(0.3f);
+            }
+        }
+
+        // populate send apps
+        Intent sendIntent = createSendIntent();
+
+        List<SendButtonData> sendButtonDataList = setupSendButtonData(sendIntent);
+
+        if (getContext().getString(R.string.send_files_to_other_apps).equalsIgnoreCase("off")) {
+            sharePeopleText.setVisibility(View.GONE);
+        }
+
+        SendButtonAdapter.ClickListener clickListener = setupSendButtonClickListener(sendIntent);
+
+        RecyclerView sendButtonsView = view.findViewById(R.id.send_button_recycler_view);
+        sendButtonsView.setHasFixedSize(true);
+        sendButtonsView.setLayoutManager(new GridLayoutManager(getActivity(), 3));
+        sendButtonsView.setAdapter(new SendButtonAdapter(sendButtonDataList, clickListener));
+
+        return view;
+    }
+
+    private void themeShareButtonImage(ImageView shareImageView) {
+        shareImageView.getBackground().setColorFilter(ThemeUtils.elementColor(), PorterDuff.Mode.SRC_IN);
+        shareImageView.getDrawable().setColorFilter(ThemeUtils.fontColor(), PorterDuff.Mode.SRC_IN);
+    }
+
+    private void showResharingNotAllowedSnackbar() {
+        Snackbar snackbar = Snackbar.make(view, R.string.resharing_is_not_allowed, Snackbar.LENGTH_LONG);
+        snackbar.addCallback(new Snackbar.Callback() {
+            @Override
+            public void onDismissed(Snackbar transientBottomBar, int event) {
+                super.onDismissed(transientBottomBar, event);
+
+                if (file.isFolder()) {
+                    dismiss();
+                }
+            }
+        });
+
+        snackbar.show();
+    }
+
+    @NonNull
+    private SendButtonAdapter.ClickListener setupSendButtonClickListener(Intent sendIntent) {
+        return sendButtonDataData -> {
+
+                if (MimeTypeUtil.isImage(file) && !file.isDown()) {
+                    fileOperationsHelper.sendCachedImage(file);
+                } else {
+                    String packageName = sendButtonDataData.getPackageName();
+                    String activityName = sendButtonDataData.getActivityName();
+
+                    // Obtain the file
+                    if (file.isDown()) {
+                        sendIntent.setComponent(new ComponentName(packageName, activityName));
+                        getActivity().startActivity(Intent.createChooser(sendIntent, getString(R.string.send)));
+
+                    } else {  // Download the file
+                        Log_OC.d(TAG, file.getRemotePath() + ": File must be downloaded");
+                        fileDisplayActivity.startDownloadForSending(file, OCFileListFragment.DOWNLOAD_SEND,
+                                packageName, activityName);
+                    }
+                }
+
+                dismiss();
+            };
+    }
+
+    @NonNull
+    private List<SendButtonData> setupSendButtonData(Intent sendIntent) {
+        List<SendButtonData> sendButtonDataList = new ArrayList<>();
+        for (ResolveInfo match : getActivity().getPackageManager().queryIntentActivities(sendIntent, 0)) {
+            Drawable icon = match.loadIcon(getActivity().getPackageManager());
+            CharSequence label = match.loadLabel(getActivity().getPackageManager());
+            SendButtonData sendButtonData = new SendButtonData(icon, label,
+                    match.activityInfo.packageName,
+                    match.activityInfo.name);
+
+            sendButtonDataList.add(sendButtonData);
+        }
+        return sendButtonDataList;
+    }
+
+    @NonNull
+    private Intent createSendIntent() {
+        Intent sendIntent = new Intent(Intent.ACTION_SEND);
+        sendIntent.setType(file.getMimetype());
+        sendIntent.putExtra(Intent.EXTRA_STREAM, file.getExposedFileUri(getActivity()));
+        sendIntent.putExtra(Intent.ACTION_SEND, true);
+        return sendIntent;
+    }
+
+    private void shareFile(OCFile file) {
+        fileOperationsHelper.showShareFile(file);
+        dismiss();
+    }
+
+    public void setFileOperationsHelper(FileOperationsHelper fileOperationsHelper) {
+        this.fileOperationsHelper = fileOperationsHelper;
+    }
+
+    public void setFileDisplayActivity(FileDisplayActivity fileDisplayActivity) {
+        this.fileDisplayActivity = fileDisplayActivity;
+    }
+}

+ 6 - 13
src/main/java/com/owncloud/android/ui/fragment/FileDetailFragment.java

@@ -137,11 +137,11 @@ public class FileDetailFragment extends FileFragment implements OnClickListener,
     public View onCreateView(LayoutInflater inflater, ViewGroup container,
             Bundle savedInstanceState) {
 
-        setFile((OCFile) getArguments().getParcelable(ARG_FILE));
+        setFile(getArguments().getParcelable(ARG_FILE));
         mAccount = getArguments().getParcelable(ARG_ACCOUNT);
 
         if (savedInstanceState != null) {
-            setFile((OCFile) savedInstanceState.getParcelable(FileActivity.EXTRA_FILE));
+            setFile(savedInstanceState.getParcelable(FileActivity.EXTRA_FILE));
             mAccount = savedInstanceState.getParcelable(FileActivity.EXTRA_ACCOUNT);
         }
 
@@ -292,7 +292,7 @@ public class FileDetailFragment extends FileFragment implements OnClickListener,
             item.setEnabled(false);
         }
 
-        item = menu.findItem(R.id.action_share_file);
+        item = menu.findItem(R.id.action_send_share_file);
         item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
 
         if(getFile().isSharedWithMe() && !getFile().canReshare()){
@@ -311,8 +311,9 @@ public class FileDetailFragment extends FileFragment implements OnClickListener,
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
         switch (item.getItemId()) {
-            case R.id.action_share_file: {
-                mContainerActivity.getFileOperationsHelper().showShareFile(getFile());
+            case R.id.action_send_share_file: {
+                mContainerActivity.getFileOperationsHelper().sendShareFile(getFile(),
+                        (FileDisplayActivity) mContainerActivity);
                 return true;
             }
             case R.id.action_open_file_with: {
@@ -338,14 +339,6 @@ public class FileDetailFragment extends FileFragment implements OnClickListener,
                 mContainerActivity.getFileOperationsHelper().syncFile(getFile());
                 return true;
             }
-            case R.id.action_send_file: {
-                if (getFile().isDown()) {
-                    mContainerActivity.getFileOperationsHelper().sendDownloadedFile(getFile());
-                } else {
-                    mContainerActivity.getFileOperationsHelper().sendCachedImage(getFile());
-                }
-                return true;
-            }
             default:
                 return super.onOptionsItemSelected(item);
         }

+ 4 - 28
src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java

@@ -516,7 +516,7 @@ public class OCFileListFragment extends ExtendedListFragment implements OCFileLi
 
     @Override
     public void onShareIconClick(OCFile file) {
-        shareFile(file);
+        mContainerActivity.getFileOperationsHelper().sendShareFile(file, (FileDisplayActivity) mContainerActivity);
     }
 
     @Override
@@ -946,8 +946,9 @@ public class OCFileListFragment extends ExtendedListFragment implements OCFileLi
             /// action only possible on a single file
             OCFile singleFile = checkedFiles.get(0);
             switch (menuId) {
-                case R.id.action_share_file: {
-                    shareFile(singleFile);
+                case R.id.action_send_share_file: {
+                    mContainerActivity.getFileOperationsHelper().sendShareFile(singleFile,
+                            (FileDisplayActivity) mContainerActivity);
                     return true;
                 }
                 case R.id.action_open_file_with: {
@@ -966,23 +967,6 @@ public class OCFileListFragment extends ExtendedListFragment implements OCFileLi
                     mContainerActivity.showDetails(singleFile);
                     return true;
                 }
-                case R.id.action_send_file: {
-                    if (MimeTypeUtil.isImage(singleFile) && !singleFile.isDown()) {
-                        mContainerActivity.getFileOperationsHelper().sendCachedImage(singleFile);
-                        return true;
-                    } else {
-                        // Obtain the file
-                        if (!singleFile.isDown()) {  // Download the file
-                            Log_OC.d(TAG, singleFile.getRemotePath() + " : File must be downloaded");
-                            ((FileDisplayActivity) mContainerActivity).startDownloadForSending(singleFile,
-                                    DOWNLOAD_SEND);
-
-                        } else {
-                            mContainerActivity.getFileOperationsHelper().sendDownloadedFile(singleFile);
-                        }
-                        return true;
-                    }
-                }
                 case R.id.action_set_as_wallpaper: {
                     mContainerActivity.getFileOperationsHelper().setPictureAs(singleFile, getView());
                     return true;
@@ -1049,14 +1033,6 @@ public class OCFileListFragment extends ExtendedListFragment implements OCFileLi
         }
     }
 
-    private void shareFile(OCFile file) {
-        if(file.isSharedWithMe() && !file.canReshare()){
-            Snackbar.make(getView(), R.string.resharing_is_not_allowed, Snackbar.LENGTH_LONG).show();
-        } else {
-            mContainerActivity.getFileOperationsHelper().showShareFile(file);
-        }
-    }
-
     /**
      * Use this to query the {@link OCFile} that is currently
      * being displayed by this fragment

+ 13 - 16
src/main/java/com/owncloud/android/ui/helpers/FileOperationsHelper.java

@@ -31,6 +31,8 @@ import android.net.Uri;
 import android.os.Build;
 import android.support.annotation.Nullable;
 import android.support.design.widget.Snackbar;
+import android.support.v4.app.FragmentManager;
+import android.support.v4.app.FragmentTransaction;
 import android.support.v4.content.FileProvider;
 import android.view.View;
 import android.webkit.MimeTypeMap;
@@ -52,7 +54,9 @@ import com.owncloud.android.services.OperationsService;
 import com.owncloud.android.services.observer.FileObserverService;
 import com.owncloud.android.ui.activity.ConflictsResolveActivity;
 import com.owncloud.android.ui.activity.FileActivity;
+import com.owncloud.android.ui.activity.FileDisplayActivity;
 import com.owncloud.android.ui.activity.ShareActivity;
+import com.owncloud.android.ui.dialog.SendShareDialog;
 import com.owncloud.android.ui.events.FavoriteEvent;
 import com.owncloud.android.ui.events.SyncEventFinished;
 import com.owncloud.android.utils.DisplayUtils;
@@ -539,23 +543,16 @@ public class FileOperationsHelper {
         return false;
     }
 
-    public void sendDownloadedFile(OCFile file) {
-        if (file != null) {
-            Intent sendIntent = new Intent(Intent.ACTION_SEND);
-            // set MimeType
-            sendIntent.setType(file.getMimetype());
-            sendIntent.putExtra(
-                    Intent.EXTRA_STREAM,
-                    file.getExposedFileUri(mFileActivity)
-            );
-            sendIntent.putExtra(Intent.ACTION_SEND, true);      // Send Action
+    public void sendShareFile(OCFile file, FileDisplayActivity fileDisplayActivity) {
+        // Show dialog
+        FragmentManager fm = mFileActivity.getSupportFragmentManager();
+        FragmentTransaction ft = fm.beginTransaction();
+        ft.addToBackStack(null);
 
-            // Show dialog
-            final String sendTitle = mFileActivity.getString(R.string.activity_chooser_send_file_title);
-            mFileActivity.startActivity(Intent.createChooser(sendIntent, sendTitle));
-        } else {
-            Log_OC.e(TAG, "Trying to send a NULL OCFile");
-        }
+        SendShareDialog mSendShareDialog = SendShareDialog.newInstance(file);
+        mSendShareDialog.setFileOperationsHelper(this);
+        mSendShareDialog.setFileDisplayActivity(fileDisplayActivity);
+        mSendShareDialog.show(ft, "TAG_SEND_SHARE_DIALOG");
     }
 
     public void syncFiles(Collection<OCFile> files) {

+ 5 - 12
src/main/java/com/owncloud/android/ui/preview/PreviewImageFragment.java

@@ -60,6 +60,7 @@ import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.datamodel.ThumbnailsCacheManager;
 import com.owncloud.android.files.FileMenuFilter;
 import com.owncloud.android.lib.common.utils.Log_OC;
+import com.owncloud.android.ui.activity.FileDisplayActivity;
 import com.owncloud.android.ui.dialog.ConfirmationDialogFragment;
 import com.owncloud.android.ui.dialog.RemoveFilesDialogFragment;
 import com.owncloud.android.ui.fragment.FileFragment;
@@ -404,7 +405,7 @@ public class PreviewImageFragment extends FileFragment {
 
         if(getFile().isSharedWithMe() && !getFile().canReshare()){
             // additional restriction for this fragment
-            item = menu.findItem(R.id.action_share_file);
+            item = menu.findItem(R.id.action_send_share_file);
             if(item != null){
                 item.setVisible(false);
                 item.setEnabled(false);
@@ -420,8 +421,9 @@ public class PreviewImageFragment extends FileFragment {
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
         switch (item.getItemId()) {
-            case R.id.action_share_file:
-                mContainerActivity.getFileOperationsHelper().showShareFile(getFile());
+            case R.id.action_send_share_file:
+                mContainerActivity.getFileOperationsHelper().sendShareFile(getFile(),
+                        (FileDisplayActivity) mContainerActivity);
                 return true;
 
             case R.id.action_open_file_with:
@@ -437,15 +439,6 @@ public class PreviewImageFragment extends FileFragment {
                 seeDetails();
                 return true;
 
-            case R.id.action_send_file:
-                if (MimeTypeUtil.isImage(getFile()) && !getFile().isDown()) {
-                    mContainerActivity.getFileOperationsHelper().sendCachedImage(getFile());
-                    return true;
-                } else {
-                    mContainerActivity.getFileOperationsHelper().sendDownloadedFile(getFile());
-                    return true;
-                }
-
             case R.id.action_download_file:
             case R.id.action_sync_file:
                 mContainerActivity.getFileOperationsHelper().syncFile(getFile());

+ 6 - 16
src/main/java/com/owncloud/android/ui/preview/PreviewMediaFragment.java

@@ -169,7 +169,7 @@ public class PreviewMediaFragment extends FileFragment implements
 
         Bundle bundle = getArguments();
 
-        setFile((OCFile) bundle.getParcelable(FILE));
+        setFile(bundle.getParcelable(FILE));
         mAccount = bundle.getParcelable(ACCOUNT);
         mSavedPlaybackPosition = bundle.getInt(PLAYBACK_POSITION);
         mAutoplay = bundle.getBoolean(AUTOPLAY);
@@ -427,7 +427,7 @@ public class PreviewMediaFragment extends FileFragment implements
 
         if(getFile().isSharedWithMe() && !getFile().canReshare()){
             // additional restriction for this fragment
-            item = menu.findItem(R.id.action_share_file);
+            item = menu.findItem(R.id.action_send_share_file);
             if(item != null){
                 item.setVisible(false);
                 item.setEnabled(false);
@@ -443,8 +443,8 @@ public class PreviewMediaFragment extends FileFragment implements
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
         switch (item.getItemId()) {
-            case R.id.action_share_file: {
-                seeShareFile();
+            case R.id.action_send_share_file: {
+                sendShareFile();
                 return true;
             }
             case R.id.action_open_file_with: {
@@ -460,10 +460,6 @@ public class PreviewMediaFragment extends FileFragment implements
                 seeDetails();
                 return true;
             }
-            case R.id.action_send_file: {
-                sendFile();
-                return true;
-            }
             case R.id.action_sync_file: {
                 mContainerActivity.getFileOperationsHelper().syncFile(getFile());
                 return true;
@@ -483,20 +479,14 @@ public class PreviewMediaFragment extends FileFragment implements
         setFile(file);
     }
 
-    private void sendFile() {
-        stopPreview(false);
-        mContainerActivity.getFileOperationsHelper().sendDownloadedFile(getFile());
-
-    }
-
     private void seeDetails() {
         stopPreview(false);
         mContainerActivity.showDetails(getFile());
     }
 
-    private void seeShareFile() {
+    private void sendShareFile() {
         stopPreview(false);
-        mContainerActivity.getFileOperationsHelper().showShareFile(getFile());
+        mContainerActivity.getFileOperationsHelper().sendShareFile(getFile(), (FileDisplayActivity) mContainerActivity);
     }
 
     private void prepareVideo() {

+ 4 - 11
src/main/java/com/owncloud/android/ui/preview/PreviewTextFragment.java

@@ -366,7 +366,7 @@ public class PreviewTextFragment extends FileFragment {
 
         if(getFile().isSharedWithMe() && !getFile().canReshare()){
             // additional restriction for this fragment
-            item = menu.findItem(R.id.action_share_file);
+            item = menu.findItem(R.id.action_send_share_file);
             if(item != null){
                 item.setVisible(false);
                 item.setEnabled(false);
@@ -381,8 +381,9 @@ public class PreviewTextFragment extends FileFragment {
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
         switch (item.getItemId()) {
-            case R.id.action_share_file: {
-                mContainerActivity.getFileOperationsHelper().showShareFile(getFile());
+            case R.id.action_send_share_file: {
+                mContainerActivity.getFileOperationsHelper().sendShareFile(getFile(),
+                        (FileDisplayActivity) mContainerActivity);
                 return true;
             }
             case R.id.action_open_file_with: {
@@ -398,10 +399,6 @@ public class PreviewTextFragment extends FileFragment {
                 seeDetails();
                 return true;
             }
-            case R.id.action_send_file: {
-                sendFile();
-                return true;
-            }
             case R.id.action_sync_file: {
                 mContainerActivity.getFileOperationsHelper().syncFile(getFile());
                 return true;
@@ -421,10 +418,6 @@ public class PreviewTextFragment extends FileFragment {
         setFile(file);
     }
 
-    private void sendFile() {
-        mContainerActivity.getFileOperationsHelper().sendDownloadedFile(getFile());
-    }
-
     private void seeDetails() {
         mContainerActivity.showDetails(getFile());
     }

+ 28 - 29
src/main/res/layout/activity_row.xml

@@ -16,35 +16,34 @@
   You should have received a copy of the GNU General Public License
   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 -->
-
-	<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-		android:id="@+id/list_item"
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+	android:id="@+id/list_item"
+	android:layout_width="match_parent"
+	android:layout_height="48dp"
+	android:background="?android:attr/activatedBackgroundIndicator"
+	android:minWidth="@dimen/activity_row_layout_min_width_independent"
+	android:orientation="horizontal"
+	android:paddingEnd="@dimen/standard_padding"
+	android:paddingLeft="@dimen/standard_padding"
+	android:paddingRight="@dimen/standard_padding"
+	android:paddingStart="@dimen/standard_padding">
+
+	<ImageView
+		android:id="@+id/icon"
+		android:layout_width="@dimen/user_icon_size_independent"
+		android:layout_height="@dimen/user_icon_size_independent"
+		android:layout_gravity="center_vertical"
+		android:layout_marginEnd="@dimen/standard_padding"
+		android:layout_marginRight="@dimen/standard_padding"
+		android:contentDescription="@string/activity_icon" />
+
+	<TextView
+		android:id="@+id/title"
 		android:layout_width="match_parent"
-		android:layout_height="48dp"
-		android:paddingStart="@dimen/standard_padding"
-		android:paddingEnd="@dimen/standard_padding"
-		android:paddingRight="@dimen/standard_padding"
-		android:paddingLeft="@dimen/standard_padding"
-		android:minWidth="@dimen/activity_row_layout_min_width_independent"
-		android:background="?android:attr/activatedBackgroundIndicator"
-		android:orientation="horizontal" >
-
-		<ImageView
-			android:id="@+id/icon"
-			android:layout_width="@dimen/user_icon_size_independent"
-			android:layout_height="@dimen/user_icon_size_independent"
-			android:layout_gravity="center_vertical"
-			android:layout_marginEnd="@dimen/standard_padding"
-			android:layout_marginRight="@dimen/standard_padding"
-			android:contentDescription="@string/activity_icon"/>
-
-        <TextView
-            android:id="@+id/title"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_gravity="center_vertical"
-            android:textAppearance="?android:attr/textAppearanceLargePopupMenu"
-			android:singleLine="true"
-            android:ellipsize="marquee"/>
+		android:layout_height="wrap_content"
+		android:layout_gravity="center_vertical"
+		android:ellipsize="marquee"
+		android:singleLine="true"
+		android:textAppearance="?android:attr/textAppearanceLargePopupMenu" />
 
     </LinearLayout>

+ 178 - 178
src/main/res/layout/file_details_fragment.xml

@@ -18,55 +18,55 @@
   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 -->
 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
-			android:id="@+id/fdScrollView"
-			android:layout_width="match_parent"
-			android:layout_height="match_parent"
-			android:fillViewport="true">
-
-	<LinearLayout
-		android:layout_width="match_parent"
-		android:layout_height="wrap_content"
-		android:orientation="vertical">
-
-		<RelativeLayout
-			android:id="@+id/fdFileHeaderContainer"
-			android:layout_width="match_parent"
-			android:layout_height="wrap_content"
-			android:layout_margin="@dimen/standard_margin">
-
-			<ImageView
+            android:id="@+id/fdScrollView"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:fillViewport="true">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical">
+
+        <RelativeLayout
+            android:id="@+id/fdFileHeaderContainer"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_margin="@dimen/standard_margin">
+
+            <ImageView
                 android:id="@+id/fdIcon"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:src="@drawable/file"
-                android:contentDescription="@string/file_icon"/>
+                android:contentDescription="@string/file_icon"
+                android:src="@drawable/file"/>
 
-			<LinearLayout
+            <LinearLayout
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_centerVertical="true"
-                android:layout_toRightOf="@+id/fdIcon"
                 android:layout_toEndOf="@+id/fdIcon"
+                android:layout_toRightOf="@+id/fdIcon"
                 android:paddingLeft="@dimen/standard_padding"
                 android:paddingStart="@dimen/standard_padding"
                 android:paddingEnd="@dimen/zero"
                 android:paddingRight="@dimen/zero"
                 android:orientation="vertical">
 
-				<TextView
-					android:id="@+id/fdFilename"
-					android:layout_width="wrap_content"
-					android:layout_height="wrap_content"
-					android:text="@string/placeholder_filename"
-					android:textAppearance="?android:attr/textAppearanceLarge"/>
+                <TextView
+                    android:id="@+id/fdFilename"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="@string/placeholder_filename"
+                    android:textAppearance="?android:attr/textAppearanceLarge"/>
 
-				<LinearLayout
-					android:id="@+id/fdFiledetails"
-					android:layout_width="wrap_content"
-					android:layout_height="wrap_content"
-					android:orientation="horizontal">
+                <LinearLayout
+                    android:id="@+id/fdFiledetails"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:orientation="horizontal">
 
-					<TextView
+                    <TextView
                         android:id="@+id/fdSize"
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
@@ -74,7 +74,7 @@
                         android:textColor="@color/list_item_lastmod_and_filesize_text"
                         android:textSize="@dimen/two_line_secondary_text_size"/>
 
-					<TextView
+                    <TextView
                         android:id="@+id/file_separator"
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
@@ -87,7 +87,7 @@
                         android:textColor="@color/list_item_lastmod_and_filesize_text"
                         android:textSize="@dimen/two_line_secondary_text_size"/>
 
-					<TextView
+                    <TextView
                         android:id="@+id/fdModified"
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
@@ -96,160 +96,160 @@
                         android:textColor="@color/list_item_lastmod_and_filesize_text"
                         android:textSize="@dimen/two_line_secondary_text_size"/>
 
-				</LinearLayout>
-
-			</LinearLayout>
-
-		</RelativeLayout>
-
-		<View
-			android:layout_width="match_parent"
-			android:layout_height="1dp"
-			android:background="@color/list_divider_background"/>
-
-		<RelativeLayout
-			android:id="@+id/fdProgressAndControl"
-			android:layout_width="match_parent"
-			android:layout_height="wrap_content"
-			android:layout_marginBottom="@dimen/standard_half_margin"
-			android:layout_marginLeft="@dimen/standard_margin"
-			android:layout_marginRight="@dimen/standard_margin"
-			android:layout_marginTop="@dimen/standard_half_margin"
-			android:gravity="center_horizontal">
-
-			<android.support.v7.widget.SwitchCompat
-				android:id="@+id/fdFavorite"
-				android:layout_width="match_parent"
-				android:layout_height="wrap_content"
-				android:layout_gravity="start"
-				android:text="@string/favorite_switch"
-				android:textSize="16sp"
-				android:layout_alignParentTop="true"
-				android:layout_alignParentLeft="true"
-				android:layout_alignParentStart="true"/>
-
-			<LinearLayout
-				android:layout_width="match_parent"
-				android:layout_height="wrap_content"
-				android:layout_below="@id/fdFavorite"
-				android:orientation="vertical">
-
-				<TextView
-					android:id="@+id/fdProgressText"
-					android:layout_width="match_parent"
-					android:layout_height="wrap_content"
-					android:layout_marginTop="8dp"
-					android:text="@string/downloader_download_in_progress_ticker"/>
-
-				<LinearLayout
-					android:id="@+id/fdProgressBlock"
-					android:layout_width="match_parent"
-					android:layout_height="wrap_content"
-					android:layout_marginBottom="@dimen/standard_quarter_margin"
-					android:layout_marginTop="@dimen/standard_half_margin"
-					android:gravity="center"
-					android:orientation="horizontal">
-
-					<ProgressBar
-						android:id="@+id/fdProgressBar"
-						style="?android:attr/progressBarStyleHorizontal"
-						android:layout_width="0dp"
-						android:layout_height="wrap_content"
-						android:layout_weight="1"
-						android:indeterminate="false"
-						android:indeterminateOnly="false"/>
-
-					<ImageButton
+                </LinearLayout>
+
+            </LinearLayout>
+
+        </RelativeLayout>
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="1dp"
+            android:background="@color/list_divider_background"/>
+
+        <RelativeLayout
+            android:id="@+id/fdProgressAndControl"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginBottom="@dimen/standard_half_margin"
+            android:layout_marginLeft="@dimen/standard_margin"
+            android:layout_marginRight="@dimen/standard_margin"
+            android:layout_marginTop="@dimen/standard_half_margin"
+            android:gravity="center_horizontal">
+
+            <android.support.v7.widget.SwitchCompat
+                android:id="@+id/fdFavorite"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_alignParentLeft="true"
+                android:layout_alignParentStart="true"
+                android:layout_alignParentTop="true"
+                android:layout_gravity="start"
+                android:text="@string/favorite_switch"
+                android:textSize="16sp"/>
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_below="@id/fdFavorite"
+                android:orientation="vertical">
+
+                <TextView
+                    android:id="@+id/fdProgressText"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="8dp"
+                    android:text="@string/downloader_download_in_progress_ticker"/>
+
+                <LinearLayout
+                    android:id="@+id/fdProgressBlock"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginBottom="@dimen/standard_quarter_margin"
+                    android:layout_marginTop="@dimen/standard_half_margin"
+                    android:gravity="center"
+                    android:orientation="horizontal">
+
+                    <ProgressBar
+                        android:id="@+id/fdProgressBar"
+                        style="?android:attr/progressBarStyleHorizontal"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_weight="1"
+                        android:indeterminate="false"
+                        android:indeterminateOnly="false"/>
+
+                    <ImageButton
                         android:id="@+id/fdCancelBtn"
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
                         android:layout_marginLeft="@dimen/standard_half_margin"
                         android:layout_marginStart="@dimen/standard_half_margin"
                         android:background="@android:color/transparent"
-                        android:src="@drawable/ic_cancel"
-                        android:contentDescription="@string/common_cancel"/>
-
-				</LinearLayout>
-
-			</LinearLayout>
-
-		</RelativeLayout>
-
-		<View
-			android:layout_width="match_parent"
-			android:layout_height="1dp"
-			android:background="@color/list_divider_background"/>
-
-		<LinearLayout
-			android:id="@+id/fdShareContainer"
-			android:layout_width="match_parent"
-			android:layout_height="match_parent"
-			android:layout_marginBottom="@dimen/standard_half_margin"
-			android:layout_marginLeft="@dimen/standard_margin"
-			android:layout_marginRight="@dimen/standard_margin"
-			android:layout_marginTop="@dimen/standard_half_margin"
-			android:orientation="vertical">
-
-			<TextView
-				android:id="@+id/fdShareTitle"
-				style="@style/TextAppearance.AppCompat.Body2"
-				android:textColor="@color/color_accent"
-				android:layout_width="match_parent"
-				android:layout_height="wrap_content"
-				android:layout_marginBottom="@dimen/standard_half_margin"
-				android:text="@string/action_share"/>
-
-			<LinearLayout
-				android:layout_width="match_parent"
-				android:layout_height="wrap_content"
-				android:orientation="horizontal">
-
-				<ImageView
+                        android:contentDescription="@string/common_cancel"
+                        android:src="@drawable/ic_cancel"/>
+
+                </LinearLayout>
+
+            </LinearLayout>
+
+        </RelativeLayout>
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="1dp"
+            android:background="@color/list_divider_background"/>
+
+        <LinearLayout
+            android:id="@+id/fdShareContainer"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_marginBottom="@dimen/standard_half_margin"
+            android:layout_marginLeft="@dimen/standard_margin"
+            android:layout_marginRight="@dimen/standard_margin"
+            android:layout_marginTop="@dimen/standard_half_margin"
+            android:orientation="vertical">
+
+            <TextView
+                android:id="@+id/fdShareTitle"
+                style="@style/TextAppearance.AppCompat.Body2"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginBottom="@dimen/standard_half_margin"
+                android:text="@string/action_send_share"
+                android:textColor="@color/color_accent"/>
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal">
+
+                <ImageView
+                    android:contentDescription="@string/shared_icon"
                     android:id="@+id/fdShareLinkIcon"
                     android:layout_width="14sp"
                     android:layout_height="14sp"
                     android:layout_gravity="center_vertical"
-                    android:layout_marginRight="@dimen/standard_half_margin"
                     android:layout_marginEnd="@dimen/standard_half_margin"
+                    android:layout_marginRight="@dimen/standard_half_margin"
                     android:src="@drawable/shared_via_link"
-                    android:visibility="gone"
-                    android:contentDescription="@string/shared_via_link_icon"/>
-
-				<TextView
-					android:id="@+id/fdSharebyLink"
-					android:layout_width="match_parent"
-					android:layout_height="wrap_content"
-					android:layout_gravity="start"
-					android:text="@string/filedetails_share_link_disable"/>
-			</LinearLayout>
-
-			<TextView
-				android:id="@+id/fdShareWithUsersTitle"
-				style="@style/TextAppearance.AppCompat.Body2"
-				android:textColor="@color/color_accent"
-				android:layout_width="match_parent"
-				android:layout_height="wrap_content"
-				android:layout_gravity="start"
-				android:layout_marginBottom="@dimen/standard_half_margin"
-				android:layout_marginTop="@dimen/standard_half_margin"
-				android:text="@string/filedetails_share_users_with_access"/>
-
-			<ListView
-				android:id="@+id/fdshareUsersList"
-				android:layout_width="match_parent"
-				android:layout_height="0dip"
-				android:layout_weight="1"
-				android:visibility="gone"/>
-
-			<TextView
-				android:id="@+id/fdShareNoUsers"
-				android:layout_width="match_parent"
-				android:layout_height="wrap_content"
-				android:text="@string/share_no_users"
-				android:textSize="14sp"/>
-
-		</LinearLayout>
-
-	</LinearLayout>
+                    android:visibility="gone"/>
+
+                <TextView
+                    android:id="@+id/fdSharebyLink"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="start"
+                    android:text="@string/filedetails_share_link_disable"/>
+            </LinearLayout>
+
+            <TextView
+                android:id="@+id/fdShareWithUsersTitle"
+                style="@style/TextAppearance.AppCompat.Body2"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_gravity="start"
+                android:layout_marginBottom="@dimen/standard_half_margin"
+                android:layout_marginTop="@dimen/standard_half_margin"
+                android:text="@string/filedetails_share_users_with_access"
+                android:textColor="@color/color_accent"/>
+
+            <ListView
+                android:id="@+id/fdshareUsersList"
+                android:layout_width="match_parent"
+                android:layout_height="0dip"
+                android:layout_weight="1"
+                android:visibility="gone"/>
+
+            <TextView
+                android:id="@+id/fdShareNoUsers"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:text="@string/share_no_users"
+                android:textSize="14sp"/>
+
+        </LinearLayout>
+
+    </LinearLayout>
 
 </ScrollView>

+ 37 - 0
src/main/res/layout/send_button.xml

@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Nextcloud Android client application
+
+ @author Tobias Kaminsky
+ Copyright (C) 2017 Tobias Kaminsky
+ Copyright (C) 2017 Nextcloud GmbH.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+-->
+
+<FrameLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content">
+
+    <TextView
+        android:id="@+id/send_button"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center"
+        android:gravity="center_horizontal"
+        android:drawablePadding="@dimen/standard_half_padding"
+        android:padding="@dimen/standard_padding"
+        android:textColor="@color/black"/>
+</FrameLayout>

+ 118 - 0
src/main/res/layout/send_share_fragment.xml

@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Nextcloud Android client application
+
+ @author Tobias Kaminsky
+ Copyright (C) 2017 Tobias Kaminsky
+ Copyright (C) 2017 Nextcloud GmbH.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+-->
+
+<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
+                                                 android:layout_width="match_parent"
+                                                 android:layout_height="match_parent">
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+
+        <LinearLayout
+            android:id="@+id/send_share_buttons"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginEnd="24dp"
+            android:layout_marginLeft="24dp"
+            android:layout_marginRight="24dp"
+            android:layout_marginStart="24dp"
+            android:orientation="horizontal"
+            android:baselineAligned="false"
+            android:padding="24dp">
+
+        <LinearLayout
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            android:orientation="vertical">
+
+            <ImageView
+                android:id="@+id/share_people_icon"
+                android:layout_width="@dimen/share_icon_size"
+                android:layout_height="@dimen/share_icon_size"
+                android:layout_gravity="center_horizontal"
+                android:contentDescription="@string/share"
+                android:src="@drawable/shared_via_users"
+                android:paddingTop="12dp"
+                android:paddingRight="12dp"
+                android:paddingEnd="12dp"
+                android:paddingBottom="12dp"
+                android:paddingLeft="8dp"
+                android:paddingStart="8dp"
+                android:background="@drawable/round_bgnd"/>
+
+            <TextView
+                android:id="@+id/share_people_button"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_horizontal"
+                android:drawable="@drawable/ic_share"
+                android:text="@string/share"
+                android:paddingTop="@dimen/standard_half_padding"
+                android:textColor="@color/black"/>
+        </LinearLayout>
+
+        <LinearLayout
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            android:orientation="vertical">
+
+            <ImageView
+                android:id="@+id/share_link_icon"
+                android:layout_width="@dimen/share_icon_size"
+                android:layout_height="@dimen/share_icon_size"
+                android:layout_gravity="center_horizontal"
+                android:contentDescription="@string/link"
+                android:src="@drawable/shared_via_link"
+                android:padding="12dp"
+                android:background="@drawable/round_bgnd"/>
+
+            <TextView
+                android:id="@+id/share_link_button"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_horizontal"
+                android:drawable="@drawable/ic_share"
+                android:text="@string/link"
+                android:paddingTop="@dimen/standard_half_padding"
+                android:textColor="@color/black"/>
+        </LinearLayout>
+
+    </LinearLayout>
+
+    <View
+        android:id="@+id/divider"
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:layout_below="@id/send_share_buttons"
+        android:alpha="0.3"
+        android:background="@color/black"/>
+
+    <android.support.v7.widget.RecyclerView
+        android:id="@+id/send_button_recycler_view"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_below="@id/divider"/>
+    </RelativeLayout>
+</android.support.design.widget.CoordinatorLayout>

+ 2 - 8
src/main/res/menu/file_actions_menu.xml

@@ -23,8 +23,8 @@
       tools:ignore="AppCompatResource">
 
     <item
-        android:id="@+id/action_share_file"
-        android:title="@string/action_share"
+        android:id="@+id/action_send_share_file"
+        android:title="@string/action_send_share"
         app:showAsAction="never"
         android:showAsAction="never"
         android:icon="@drawable/ic_share"
@@ -83,12 +83,6 @@
         app:showAsAction="never"
         android:showAsAction="never"
         android:orderInCategory="1" />
-    <item
-        android:id="@+id/action_send_file"
-        android:title="@string/actionbar_send_file"
-        app:showAsAction="never"
-        android:showAsAction="never"
-        android:orderInCategory="1" />
     <item
         android:id="@+id/action_keep_files_offline"
         android:title="@string/favorite"

+ 1 - 1
src/main/res/values-ar/strings.xml

@@ -95,7 +95,7 @@
     <string name="filedetails_select_file">اضغظ على الملف ليتم عرض خيارات أكثر</string>
     <string name="filedetails_download">تحميل</string>
     <string name="filedetails_sync_file">زامِن</string>
-    <string name="action_share">شارك</string>
+    <string name="action_send_share">شارك</string>
     <string name="common_yes">نعم</string>
     <string name="common_no">لا</string>
     <string name="common_ok">تم</string>

+ 1 - 1
src/main/res/values-ast/strings.xml

@@ -94,7 +94,7 @@
     <string name="filedetails_download">Descargar</string>
     <string name="filedetails_sync_file">Sincroniza</string>
     <string name="filedetails_renamed_in_upload_msg">Renomóse\'l ficheru %1$s na xuba</string>
-    <string name="action_share">Compartir</string>
+    <string name="action_send_share">Compartir</string>
     <string name="common_yes">Sí</string>
     <string name="common_no">Non</string>
     <string name="common_ok">Aceutar</string>

+ 1 - 1
src/main/res/values-b+en+001/strings.xml

@@ -119,7 +119,7 @@
     <string name="filedetails_sync_file">Synchronise</string>
     <string name="filedetails_renamed_in_upload_msg">File renamed to %1$s during upload</string>
     <string name="list_layout">Listed layout</string>
-    <string name="action_share">Share</string>
+    <string name="action_send_share">Share</string>
     <string name="common_yes">Yes</string>
     <string name="common_no">No</string>
     <string name="common_ok">OK</string>

+ 0 - 1
src/main/res/values-b+es+419/strings.xml

@@ -119,7 +119,6 @@
     <string name="filedetails_sync_file">Sincronizar</string>
     <string name="filedetails_renamed_in_upload_msg">El archivo se renombró como %1$s durante la carga</string>
     <string name="list_layout">Vista de lista</string>
-    <string name="action_share">Compartir</string>
     <string name="common_yes">Sí</string>
     <string name="common_no">No</string>
     <string name="common_ok">OK</string>

+ 1 - 1
src/main/res/values-bg-rBG/strings.xml

@@ -90,7 +90,7 @@
     <string name="filedetails_select_file">Натиснете върху файл, за да видите допълнителна информация.</string>
     <string name="filedetails_download">Изтегляне</string>
     <string name="filedetails_sync_file">Синхронизиране</string>
-    <string name="action_share">Споделяне</string>
+    <string name="action_send_share">Споделяне</string>
     <string name="common_yes">Да</string>
     <string name="common_no">Не</string>
     <string name="common_ok">ОК</string>

+ 1 - 1
src/main/res/values-ca/strings.xml

@@ -119,7 +119,7 @@
     <string name="filedetails_sync_file">Sincronitza</string>
     <string name="filedetails_renamed_in_upload_msg">S\'ha canviat el nom del fitxer %1$sdurant la càrrega</string>
     <string name="list_layout">Disposició llistada</string>
-    <string name="action_share">Comparteix</string>
+    <string name="action_send_share">Comparteix</string>
     <string name="common_yes">Sí</string>
     <string name="common_no">No</string>
     <string name="common_ok">D\'acord</string>

+ 1 - 1
src/main/res/values-cs-rCZ/strings.xml

@@ -119,7 +119,7 @@
     <string name="filedetails_sync_file">Synchronizovat</string>
     <string name="filedetails_renamed_in_upload_msg">Soubor byl během nahrávání přejmenován na %1$s</string>
     <string name="list_layout">Náhled seznamu</string>
-    <string name="action_share">Sdílet</string>
+    <string name="action_send_share">Sdílet</string>
     <string name="common_yes">Ano</string>
     <string name="common_no">Ne</string>
     <string name="common_ok">OK</string>

+ 1 - 1
src/main/res/values-da/strings.xml

@@ -97,7 +97,7 @@
     <string name="filedetails_select_file">Tryk på en fil for at vise yderligere information.</string>
     <string name="filedetails_download">Hent</string>
     <string name="filedetails_sync_file">Synkronisér</string>
-    <string name="action_share">Del</string>
+    <string name="action_send_share">Del</string>
     <string name="common_yes">Ja</string>
     <string name="common_no">Nej</string>
     <string name="common_ok">OK</string>

+ 1 - 1
src/main/res/values-de-rDE/strings.xml

@@ -119,7 +119,7 @@
     <string name="filedetails_sync_file">Synchronisieren</string>
     <string name="filedetails_renamed_in_upload_msg">Datei während des Hochladens in %1$s umbenannt</string>
     <string name="list_layout">Layout der Liste</string>
-    <string name="action_share">Teilen</string>
+    <string name="action_send_share">Teilen</string>
     <string name="common_yes">Ja</string>
     <string name="common_no">Nein</string>
     <string name="common_ok">OK</string>

+ 1 - 1
src/main/res/values-de/strings.xml

@@ -120,7 +120,7 @@
     <string name="filedetails_sync_file">Synchronisation</string>
     <string name="filedetails_renamed_in_upload_msg">Datei während des Hochladens in %1$s umbenannt</string>
     <string name="list_layout">Layout der Liste</string>
-    <string name="action_share">Teilen</string>
+    <string name="action_send_share">Teilen</string>
     <string name="common_yes">Ja</string>
     <string name="common_no">Nein</string>
     <string name="common_ok">OK</string>

+ 1 - 1
src/main/res/values-el/strings.xml

@@ -115,7 +115,7 @@
     <string name="filedetails_sync_file">Συγχρονισμός</string>
     <string name="filedetails_renamed_in_upload_msg">Το αρχείο μετονομάστηκε σε %1$s κατά τη μεταφόρτωση</string>
     <string name="list_layout">Διάταξη λίστας</string>
-    <string name="action_share">Διαμοιρασμός</string>
+    <string name="action_send_share">Διαμοιρασμός</string>
     <string name="common_yes">Ναι</string>
     <string name="common_no">Όχι</string>
     <string name="common_ok">Εντάξει</string>

+ 1 - 1
src/main/res/values-es-rAR/strings.xml

@@ -114,7 +114,7 @@
     <string name="filedetails_sync_file">Sincronizar</string>
     <string name="filedetails_renamed_in_upload_msg">El archivo se renombró como %1$s durante la carga</string>
     <string name="list_layout">Vista enlistada</string>
-    <string name="action_share">Compartir</string>
+    <string name="action_send_share">Compartir</string>
     <string name="common_yes">Sí</string>
     <string name="common_no">No</string>
     <string name="common_ok">OK</string>

+ 1 - 1
src/main/res/values-es-rCL/strings.xml

@@ -119,7 +119,7 @@
     <string name="filedetails_sync_file">Sincronizar</string>
     <string name="filedetails_renamed_in_upload_msg">El archivo se renombró como %1$s durante la carga</string>
     <string name="list_layout">Vista de lista</string>
-    <string name="action_share">Compartir</string>
+    <string name="action_send_share">Compartir</string>
     <string name="common_yes">Sí</string>
     <string name="common_no">No</string>
     <string name="common_ok">OK</string>

+ 1 - 1
src/main/res/values-es-rCO/strings.xml

@@ -119,7 +119,7 @@
     <string name="filedetails_sync_file">Sincronizar</string>
     <string name="filedetails_renamed_in_upload_msg">El archivo se renombró como %1$s durante la carga</string>
     <string name="list_layout">Vista de lista</string>
-    <string name="action_share">Compartir</string>
+    <string name="action_send_share">Compartir</string>
     <string name="common_yes">Sí</string>
     <string name="common_no">No</string>
     <string name="common_ok">OK</string>

+ 1 - 1
src/main/res/values-es-rCR/strings.xml

@@ -119,7 +119,7 @@
     <string name="filedetails_sync_file">Sincronizar</string>
     <string name="filedetails_renamed_in_upload_msg">El archivo se renombró como %1$s durante la carga</string>
     <string name="list_layout">Vista de lista</string>
-    <string name="action_share">Compartir</string>
+    <string name="action_send_share">Compartir</string>
     <string name="common_yes">Sí</string>
     <string name="common_no">No</string>
     <string name="common_ok">OK</string>

+ 1 - 1
src/main/res/values-es-rDO/strings.xml

@@ -119,7 +119,7 @@
     <string name="filedetails_sync_file">Sincronizar</string>
     <string name="filedetails_renamed_in_upload_msg">El archivo se renombró como %1$s durante la carga</string>
     <string name="list_layout">Vista de lista</string>
-    <string name="action_share">Compartir</string>
+    <string name="action_send_share">Compartir</string>
     <string name="common_yes">Sí</string>
     <string name="common_no">No</string>
     <string name="common_ok">OK</string>

+ 1 - 1
src/main/res/values-es-rEC/strings.xml

@@ -119,7 +119,7 @@
     <string name="filedetails_sync_file">Sincronizar</string>
     <string name="filedetails_renamed_in_upload_msg">El archivo se renombró como %1$s durante la carga</string>
     <string name="list_layout">Vista de lista</string>
-    <string name="action_share">Compartir</string>
+    <string name="action_send_share">Compartir</string>
     <string name="common_yes">Sí</string>
     <string name="common_no">No</string>
     <string name="common_ok">OK</string>

+ 1 - 1
src/main/res/values-es-rGT/strings.xml

@@ -119,7 +119,7 @@
     <string name="filedetails_sync_file">Sincronizar</string>
     <string name="filedetails_renamed_in_upload_msg">El archivo se renombró como %1$s durante la carga</string>
     <string name="list_layout">Vista de lista</string>
-    <string name="action_share">Compartir</string>
+    <string name="action_send_share">Compartir</string>
     <string name="common_yes">Sí</string>
     <string name="common_no">No</string>
     <string name="common_ok">OK</string>

+ 1 - 1
src/main/res/values-es-rHN/strings.xml

@@ -119,7 +119,7 @@
     <string name="filedetails_sync_file">Sincronizar</string>
     <string name="filedetails_renamed_in_upload_msg">El archivo se renombró como %1$s durante la carga</string>
     <string name="list_layout">Vista de lista</string>
-    <string name="action_share">Compartir</string>
+    <string name="action_send_share">Compartir</string>
     <string name="common_yes">Sí</string>
     <string name="common_no">No</string>
     <string name="common_ok">OK</string>

+ 1 - 1
src/main/res/values-es-rMX/strings.xml

@@ -119,7 +119,7 @@
     <string name="filedetails_sync_file">Sincronizar</string>
     <string name="filedetails_renamed_in_upload_msg">El archivo se renombró como %1$s durante la carga</string>
     <string name="list_layout">Vista de lista</string>
-    <string name="action_share">Compartir</string>
+    <string name="action_send_share">Compartir</string>
     <string name="common_yes">Sí</string>
     <string name="common_no">No</string>
     <string name="common_ok">OK</string>

+ 1 - 1
src/main/res/values-es-rNI/strings.xml

@@ -119,7 +119,7 @@
     <string name="filedetails_sync_file">Sincronizar</string>
     <string name="filedetails_renamed_in_upload_msg">El archivo se renombró como %1$s durante la carga</string>
     <string name="list_layout">Vista de lista</string>
-    <string name="action_share">Compartir</string>
+    <string name="action_send_share">Compartir</string>
     <string name="common_yes">Sí</string>
     <string name="common_no">No</string>
     <string name="common_ok">OK</string>

+ 1 - 1
src/main/res/values-es-rPA/strings.xml

@@ -119,7 +119,7 @@
     <string name="filedetails_sync_file">Sincronizar</string>
     <string name="filedetails_renamed_in_upload_msg">El archivo se renombró como %1$s durante la carga</string>
     <string name="list_layout">Vista de lista</string>
-    <string name="action_share">Compartir</string>
+    <string name="action_send_share">Compartir</string>
     <string name="common_yes">Sí</string>
     <string name="common_no">No</string>
     <string name="common_ok">OK</string>

+ 1 - 1
src/main/res/values-es-rPE/strings.xml

@@ -119,7 +119,7 @@
     <string name="filedetails_sync_file">Sincronizar</string>
     <string name="filedetails_renamed_in_upload_msg">El archivo se renombró como %1$s durante la carga</string>
     <string name="list_layout">Vista de lista</string>
-    <string name="action_share">Compartir</string>
+    <string name="action_send_share">Compartir</string>
     <string name="common_yes">Sí</string>
     <string name="common_no">No</string>
     <string name="common_ok">OK</string>

+ 1 - 1
src/main/res/values-es-rPR/strings.xml

@@ -119,7 +119,7 @@
     <string name="filedetails_sync_file">Sincronizar</string>
     <string name="filedetails_renamed_in_upload_msg">El archivo se renombró como %1$s durante la carga</string>
     <string name="list_layout">Vista de lista</string>
-    <string name="action_share">Compartir</string>
+    <string name="action_send_share">Compartir</string>
     <string name="common_yes">Sí</string>
     <string name="common_no">No</string>
     <string name="common_ok">OK</string>

+ 1 - 1
src/main/res/values-es-rPY/strings.xml

@@ -119,7 +119,7 @@
     <string name="filedetails_sync_file">Sincronizar</string>
     <string name="filedetails_renamed_in_upload_msg">El archivo se renombró como %1$s durante la carga</string>
     <string name="list_layout">Vista de lista</string>
-    <string name="action_share">Compartir</string>
+    <string name="action_send_share">Compartir</string>
     <string name="common_yes">Sí</string>
     <string name="common_no">No</string>
     <string name="common_ok">OK</string>

+ 1 - 1
src/main/res/values-es-rSV/strings.xml

@@ -119,7 +119,7 @@
     <string name="filedetails_sync_file">Sincronizar</string>
     <string name="filedetails_renamed_in_upload_msg">El archivo se renombró como %1$s durante la carga</string>
     <string name="list_layout">Vista de lista</string>
-    <string name="action_share">Compartir</string>
+    <string name="action_send_share">Compartir</string>
     <string name="common_yes">Sí</string>
     <string name="common_no">No</string>
     <string name="common_ok">OK</string>

+ 1 - 1
src/main/res/values-es-rUY/strings.xml

@@ -119,7 +119,7 @@
     <string name="filedetails_sync_file">Sincronizar</string>
     <string name="filedetails_renamed_in_upload_msg">El archivo se renombró como %1$s durante la carga</string>
     <string name="list_layout">Vista de lista</string>
-    <string name="action_share">Compartir</string>
+    <string name="action_send_share">Compartir</string>
     <string name="common_yes">Sí</string>
     <string name="common_no">No</string>
     <string name="common_ok">OK</string>

+ 1 - 1
src/main/res/values-es/strings.xml

@@ -119,7 +119,7 @@
     <string name="filedetails_sync_file">Sincronizar</string>
     <string name="filedetails_renamed_in_upload_msg">Archivo renombrado a %1$s durante la subida</string>
     <string name="list_layout">Formato de lista</string>
-    <string name="action_share">Compartir</string>
+    <string name="action_send_share">Compartir</string>
     <string name="common_yes">Sí</string>
     <string name="common_no">No</string>
     <string name="common_ok">Aceptar</string>

+ 1 - 1
src/main/res/values-eu/strings.xml

@@ -116,7 +116,7 @@
     <string name="filedetails_sync_file">Sinkronizatu</string>
     <string name="filedetails_renamed_in_upload_msg">Fitxategia igotzean %1$s izenarekin berrizendatu da</string>
     <string name="list_layout">Zerrenda ikuspegia</string>
-    <string name="action_share">Partekatu</string>
+    <string name="action_send_share">Partekatu</string>
     <string name="common_yes">Bai</string>
     <string name="common_no">Ez</string>
     <string name="common_ok">Ados</string>

+ 1 - 1
src/main/res/values-fa/strings.xml

@@ -114,7 +114,7 @@
     <string name="filedetails_sync_file">همگام سازی</string>
     <string name="filedetails_renamed_in_upload_msg">در حین اپلود فایل به نام %1$s تغییر کرد</string>
     <string name="list_layout">Listed layout</string>
-    <string name="action_share">اشتراک‌گذاری</string>
+    <string name="action_send_share">اشتراک‌گذاری</string>
     <string name="common_yes">بله</string>
     <string name="common_no">نه</string>
     <string name="common_ok">تایید</string>

+ 1 - 1
src/main/res/values-fi-rFI/strings.xml

@@ -106,7 +106,7 @@
     <string name="filedetails_select_file">Napauta tiedostoa nähdäksesi lisätietoja.</string>
     <string name="filedetails_download">Lataa</string>
     <string name="filedetails_sync_file">Synkronoi</string>
-    <string name="action_share">Jaa</string>
+    <string name="action_send_share">Jaa</string>
     <string name="common_yes">Kyllä</string>
     <string name="common_no">Ei</string>
     <string name="common_ok">OK</string>

+ 1 - 1
src/main/res/values-fr/strings.xml

@@ -119,7 +119,7 @@
     <string name="filedetails_sync_file">Synchroniser</string>
     <string name="filedetails_renamed_in_upload_msg">Le fichier a été renommé en %1$s pendant l\'envoi</string>
     <string name="list_layout">Affichage en liste</string>
-    <string name="action_share">Partager</string>
+    <string name="action_send_share">Partager</string>
     <string name="common_yes">Oui</string>
     <string name="common_no">Non</string>
     <string name="common_ok">OK</string>

+ 1 - 1
src/main/res/values-hu-rHU/strings.xml

@@ -119,7 +119,7 @@
     <string name="filedetails_sync_file">Szinkronizálás</string>
     <string name="filedetails_renamed_in_upload_msg">A fájl feltöltés közben átnevezve erre: %1$s</string>
     <string name="list_layout">Listás elrendezés</string>
-    <string name="action_share">Megosztás</string>
+    <string name="action_send_share">Megosztás</string>
     <string name="common_yes">Igen</string>
     <string name="common_no">Nem</string>
     <string name="common_ok">OK</string>

+ 1 - 1
src/main/res/values-id/strings.xml

@@ -114,7 +114,7 @@
     <string name="filedetails_sync_file">Sinkronisasi</string>
     <string name="filedetails_renamed_in_upload_msg">Nama berkas diubah menjadi  %1$s waktu diunggah</string>
     <string name="list_layout">Daftar tampilan</string>
-    <string name="action_share">Bagikan</string>
+    <string name="action_send_share">Bagikan</string>
     <string name="common_yes">Ya</string>
     <string name="common_no">Tidak</string>
     <string name="common_ok">Oke</string>

+ 1 - 1
src/main/res/values-is/strings.xml

@@ -118,7 +118,7 @@ Smelltu hér til að fá þér einn frá þjónustuaðila.</string>
     <string name="filedetails_sync_file">Samstilla</string>
     <string name="filedetails_renamed_in_upload_msg">Skrá endurnefnd sem %1$s við innsendingu</string>
     <string name="list_layout">Framsetning sem listi</string>
-    <string name="action_share">Deila</string>
+    <string name="action_send_share">Deila</string>
     <string name="common_yes">Já</string>
     <string name="common_no">Nei</string>
     <string name="common_ok">Í lagi</string>

+ 1 - 1
src/main/res/values-it/strings.xml

@@ -119,7 +119,7 @@
     <string name="filedetails_sync_file">Sincronizza</string>
     <string name="filedetails_renamed_in_upload_msg">File rinominato in %1$s durante il caricamento</string>
     <string name="list_layout">Struttura a elenco</string>
-    <string name="action_share">Condividi</string>
+    <string name="action_send_share">Condividi</string>
     <string name="common_yes">Sì</string>
     <string name="common_no">No</string>
     <string name="common_ok">OK</string>

+ 1 - 1
src/main/res/values-ja-rJP/strings.xml

@@ -110,7 +110,7 @@
     <string name="filedetails_download">ダウンロード</string>
     <string name="filedetails_sync_file">ファイルを同期</string>
     <string name="list_layout">リスト表示</string>
-    <string name="action_share">共有</string>
+    <string name="action_send_share">共有</string>
     <string name="common_yes">はい</string>
     <string name="common_no">いいえ</string>
     <string name="common_ok">OK</string>

+ 1 - 1
src/main/res/values-ka-rGE/strings.xml

@@ -119,7 +119,7 @@
     <string name="filedetails_sync_file">სინქრონიზაცია</string>
     <string name="filedetails_renamed_in_upload_msg">ატვირთვისას ფაილს სახელი შეეცვალა %1$s-ზე</string>
     <string name="list_layout">ჩამოწერილი მაკეტი</string>
-    <string name="action_share">გაზიარება</string>
+    <string name="action_send_share">გაზიარება</string>
     <string name="common_yes">კი</string>
     <string name="common_no">არა</string>
     <string name="common_ok">კარგი</string>

+ 1 - 1
src/main/res/values-ko/strings.xml

@@ -108,7 +108,7 @@
     <string name="filedetails_sync_file">동기화</string>
     <string name="filedetails_renamed_in_upload_msg">업로드 중 파일이름 %1$s로 변경</string>
     <string name="list_layout">목록 보기</string>
-    <string name="action_share">공유</string>
+    <string name="action_send_share">공유</string>
     <string name="common_yes">예</string>
     <string name="common_no">아니요</string>
     <string name="common_ok">확인</string>

+ 1 - 1
src/main/res/values-lt-rLT/strings.xml

@@ -114,7 +114,7 @@
     <string name="filedetails_sync_file">Sinchronizuojama</string>
     <string name="filedetails_renamed_in_upload_msg">Įkėlimo metu failas buvo pervadintas į %1$s</string>
     <string name="list_layout">Išdėstymas sąraše</string>
-    <string name="action_share">Dalintis</string>
+    <string name="action_send_share">Dalintis</string>
     <string name="common_yes">Taip</string>
     <string name="common_no">Ne</string>
     <string name="common_ok">Gerai</string>

+ 1 - 1
src/main/res/values-nb-rNO/strings.xml

@@ -119,7 +119,7 @@
     <string name="filedetails_sync_file">Synkroniser</string>
     <string name="filedetails_renamed_in_upload_msg">Filnavnet ble endret til  %1$s under opplasting</string>
     <string name="list_layout">Listevisning</string>
-    <string name="action_share">Del med andre</string>
+    <string name="action_send_share">Del med andre</string>
     <string name="common_yes">Ja</string>
     <string name="common_no">Nei</string>
     <string name="common_ok">OK</string>

+ 1 - 1
src/main/res/values-nl/strings.xml

@@ -120,7 +120,7 @@ Kies er eentje van een provider.</string>
     <string name="filedetails_sync_file">Synchroniseren</string>
     <string name="filedetails_renamed_in_upload_msg">Bestand hernoemd naar %1$s tijdens de upload</string>
     <string name="list_layout">Lijstoverzicht</string>
-    <string name="action_share">Delen</string>
+    <string name="action_send_share">Delen</string>
     <string name="common_yes">Ja</string>
     <string name="common_no">Nee</string>
     <string name="common_ok">OK</string>

+ 1 - 1
src/main/res/values-pl/strings.xml

@@ -119,7 +119,7 @@
     <string name="filedetails_sync_file">Synchronizuj</string>
     <string name="filedetails_renamed_in_upload_msg">Podczas wysyłania zmieniono nazwę pliku na %1$s</string>
     <string name="list_layout">Wygląd listy</string>
-    <string name="action_share">Udostępnij</string>
+    <string name="action_send_share">Udostępnij</string>
     <string name="common_yes">Tak</string>
     <string name="common_no">Nie</string>
     <string name="common_ok">OK</string>

+ 1 - 1
src/main/res/values-pt-rBR/strings.xml

@@ -119,7 +119,7 @@
     <string name="filedetails_sync_file">Sincronizar</string>
     <string name="filedetails_renamed_in_upload_msg">Arquivo renomeado para %1$s durante o envio</string>
     <string name="list_layout">Layout listado</string>
-    <string name="action_share">Compartilhar</string>
+    <string name="action_send_share">Compartilhar</string>
     <string name="common_yes">Sim</string>
     <string name="common_no">Não</string>
     <string name="common_ok">OK</string>

+ 0 - 1
src/main/res/values-pt-rPT/strings.xml

@@ -106,7 +106,6 @@
     <string name="filedetails_select_file">Toque num ficheiro para visualizar a informação adicional.</string>
     <string name="filedetails_download">Descarregar</string>
     <string name="filedetails_sync_file">Sincronizar</string>
-    <string name="action_share">Partilhar</string>
     <string name="common_yes">Sim</string>
     <string name="common_no">Não</string>
     <string name="common_ok">OK</string>

+ 1 - 1
src/main/res/values-ro/strings.xml

@@ -78,7 +78,7 @@
     <string name="filedetails_select_file">Selectați un fișier pentru a afișa informația adițională.</string>
     <string name="filedetails_download">Descarcă</string>
     <string name="filedetails_sync_file">Sincronizează</string>
-    <string name="action_share">Partajează</string>
+    <string name="action_send_share">Partajează</string>
     <string name="common_yes">Da</string>
     <string name="common_no">Nu</string>
     <string name="common_ok">OK</string>

+ 1 - 1
src/main/res/values-ru/strings.xml

@@ -119,7 +119,7 @@
     <string name="filedetails_sync_file">Синхронизировать</string>
     <string name="filedetails_renamed_in_upload_msg">Во время передачи на сервер файл был переименован в «%1$s»</string>
     <string name="list_layout">Вид списком</string>
-    <string name="action_share">Общий доступ</string>
+    <string name="action_send_share">Общий доступ</string>
     <string name="common_yes">Да</string>
     <string name="common_no">Нет</string>
     <string name="common_ok">ОК</string>

+ 1 - 1
src/main/res/values-sk-rSK/strings.xml

@@ -104,7 +104,7 @@
     <string name="filedetails_download">Stiahnuť</string>
     <string name="filedetails_sync_file">Synchronizovať</string>
     <string name="list_layout">Náhľad zoznamu</string>
-    <string name="action_share">Sprístupniť</string>
+    <string name="action_send_share">Sprístupniť</string>
     <string name="common_yes">Áno</string>
     <string name="common_no">Nie</string>
     <string name="common_ok">OK</string>

+ 1 - 1
src/main/res/values-sl/strings.xml

@@ -113,7 +113,7 @@
     <string name="filedetails_download">Prejmi</string>
     <string name="filedetails_sync_file">Uskladi</string>
     <string name="filedetails_renamed_in_upload_msg">Datoteka je bila preimenovana v %1$s med nalaganjem</string>
-    <string name="action_share">Souporaba</string>
+    <string name="action_send_share">Souporaba</string>
     <string name="common_yes">Da</string>
     <string name="common_no">Ne</string>
     <string name="common_ok">V redu</string>

+ 1 - 1
src/main/res/values-sq/strings.xml

@@ -117,7 +117,7 @@
     <string name="filedetails_sync_file">Sinkronizo</string>
     <string name="filedetails_renamed_in_upload_msg">Skedari u riemërtua %1$s gjatë ngarkimit</string>
     <string name="list_layout">Strukturë e listuar</string>
-    <string name="action_share">Ndaje</string>
+    <string name="action_send_share">Ndaje</string>
     <string name="common_yes">Po</string>
     <string name="common_no">Jo</string>
     <string name="common_ok">OK</string>

+ 1 - 1
src/main/res/values-sr/strings.xml

@@ -119,7 +119,7 @@
     <string name="filedetails_sync_file">Синхронизуј</string>
     <string name="filedetails_renamed_in_upload_msg">Фајл преименован у %1$sза време отпремања</string>
     <string name="list_layout">Излистани распоред</string>
-    <string name="action_share">Дељење</string>
+    <string name="action_send_share">Дељење</string>
     <string name="common_yes">Да</string>
     <string name="common_no">Не</string>
     <string name="common_ok">У реду</string>

+ 1 - 1
src/main/res/values-sv/strings.xml

@@ -114,7 +114,7 @@
     <string name="filedetails_sync_file">Synkronisera</string>
     <string name="filedetails_renamed_in_upload_msg">Fil döptes om till %1$s under uppladdning</string>
     <string name="list_layout">Listad layout</string>
-    <string name="action_share">Dela</string>
+    <string name="action_send_share">Dela</string>
     <string name="common_yes">Ja</string>
     <string name="common_no">Nej</string>
     <string name="common_ok">OK</string>

+ 1 - 1
src/main/res/values-tr/strings.xml

@@ -119,7 +119,7 @@
     <string name="filedetails_sync_file">Eşitle</string>
     <string name="filedetails_renamed_in_upload_msg">Dosya adı, yükleme sırasında %1$s olarak değiştirildi</string>
     <string name="list_layout">Liste düzeni</string>
-    <string name="action_share">Paylaş</string>
+    <string name="action_send_share">Paylaş</string>
     <string name="common_yes">Evet</string>
     <string name="common_no">Hayır</string>
     <string name="common_ok">Tamam</string>

+ 1 - 1
src/main/res/values-zh-rCN/strings.xml

@@ -119,7 +119,7 @@
     <string name="filedetails_sync_file">同步</string>
     <string name="filedetails_renamed_in_upload_msg">文件在上传时被重命名为%1$s</string>
     <string name="list_layout">列出的布局</string>
-    <string name="action_share">共享</string>
+    <string name="action_send_share">共享</string>
     <string name="common_yes">是</string>
     <string name="common_no">否</string>
     <string name="common_ok">确定</string>

+ 1 - 1
src/main/res/values-zh-rTW/strings.xml

@@ -120,7 +120,7 @@
     <string name="filedetails_sync_file">同步</string>
     <string name="filedetails_renamed_in_upload_msg">上傳過程中檔案%1$s被重新命名</string>
     <string name="list_layout">清單顯示</string>
-    <string name="action_share">分享</string>
+    <string name="action_send_share">分享</string>
     <string name="common_yes">是</string>
     <string name="common_no">否</string>
     <string name="common_ok">好</string>

+ 1 - 0
src/main/res/values/dims.xml

@@ -52,6 +52,7 @@
     <dimen name="zero">0dp</dimen>
     <dimen name="account_item_layout_height">72dp</dimen>
     <dimen name="user_icon_size">40dp</dimen>
+    <dimen name="share_icon_size">56dp</dimen>
     <dimen name="alternate_margin">10dp</dimen>
     <dimen name="alternate_half_margin">5dp</dimen>
     <dimen name="alternate_padding">10dp</dimen>

+ 5 - 1
src/main/res/values/strings.xml

@@ -118,7 +118,7 @@
     <string name="filedetails_sync_file">Synchronize</string>
     <string name="filedetails_renamed_in_upload_msg">File renamed to %1$s during upload</string>
     <string name="list_layout">Listed layout</string>
-    <string name="action_share">Share</string>
+    <string name="action_send_share">Send/Share</string>
     <string name="common_yes">Yes</string>
     <string name="common_no">No</string>
     <string name="common_ok">OK</string>
@@ -723,4 +723,8 @@
     <string name="dev_version_no_information_available">No information available.</string>
     <string name="dev_version_no_new_version_available">No new version available.</string>
     <string name="folder_icon">Folder icon</string>
+
+    <string name="send">Send</string>
+    <string name="share">Share</string>
+    <string name="link">Link</string>
 </resources>