Merge pull request #1792 from nextcloud/combineSendShare

Combine send share
This commit is contained in:
Mario Đanić 2017-12-29 00:54:47 +01:00 committed by GitHub
commit 3ebc31db17
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
76 changed files with 867 additions and 375 deletions

View file

@ -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) {

View file

@ -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);

View file

@ -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);
}

View file

@ -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;
}
}

View file

@ -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);
}

View file

@ -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);
}
}

View file

@ -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;
}
}

View file

@ -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;
}
}

View file

@ -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);
}

View file

@ -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

View file

@ -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) {

View file

@ -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());

View file

@ -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() {

View file

@ -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());
}

View file

@ -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"
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">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/list_item"
<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>

View file

@ -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">
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">
<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">
<RelativeLayout
android:id="@+id/fdFileHeaderContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/standard_margin">
<ImageView
<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>
</LinearLayout>
</LinearLayout>
</RelativeLayout>
</RelativeLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/list_divider_background"/>
<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">
<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"/>
<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">
<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"/>
<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">
<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"/>
<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
<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"/>
android:contentDescription="@string/common_cancel"
android:src="@drawable/ic_cancel"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</RelativeLayout>
</RelativeLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/list_divider_background"/>
<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">
<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"/>
<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">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
<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"/>
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/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"/>
<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"/>
<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"/>
<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>
</LinearLayout>
</LinearLayout>
</ScrollView>

View file

@ -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>

View file

@ -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>

View file

@ -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"

View file

@ -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>

View file

@ -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"></string>
<string name="common_no">Non</string>
<string name="common_ok">Aceutar</string>

View file

@ -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>

View file

@ -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"></string>
<string name="common_no">No</string>
<string name="common_ok">OK</string>

View file

@ -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>

View file

@ -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"></string>
<string name="common_no">No</string>
<string name="common_ok">D\'acord</string>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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"></string>
<string name="common_no">No</string>
<string name="common_ok">OK</string>

View file

@ -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"></string>
<string name="common_no">No</string>
<string name="common_ok">OK</string>

View file

@ -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"></string>
<string name="common_no">No</string>
<string name="common_ok">OK</string>

View file

@ -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"></string>
<string name="common_no">No</string>
<string name="common_ok">OK</string>

View file

@ -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"></string>
<string name="common_no">No</string>
<string name="common_ok">OK</string>

View file

@ -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"></string>
<string name="common_no">No</string>
<string name="common_ok">OK</string>

View file

@ -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"></string>
<string name="common_no">No</string>
<string name="common_ok">OK</string>

View file

@ -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"></string>
<string name="common_no">No</string>
<string name="common_ok">OK</string>

View file

@ -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"></string>
<string name="common_no">No</string>
<string name="common_ok">OK</string>

View file

@ -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"></string>
<string name="common_no">No</string>
<string name="common_ok">OK</string>

View file

@ -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"></string>
<string name="common_no">No</string>
<string name="common_ok">OK</string>

View file

@ -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"></string>
<string name="common_no">No</string>
<string name="common_ok">OK</string>

View file

@ -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"></string>
<string name="common_no">No</string>
<string name="common_ok">OK</string>

View file

@ -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"></string>
<string name="common_no">No</string>
<string name="common_ok">OK</string>

View file

@ -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"></string>
<string name="common_no">No</string>
<string name="common_ok">OK</string>

View file

@ -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"></string>
<string name="common_no">No</string>
<string name="common_ok">OK</string>

View file

@ -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"></string>
<string name="common_no">No</string>
<string name="common_ok">Aceptar</string>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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"></string>
<string name="common_no">Nei</string>
<string name="common_ok">Í lagi</string>

View file

@ -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"></string>
<string name="common_no">No</string>
<string name="common_ok">OK</string>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>