Fix #2705 - displaying copy icon and adding send action to the link menu

This commit is contained in:
AndyScherzinger 2018-06-19 17:15:05 +02:00
parent 87379285aa
commit 429da18285
No known key found for this signature in database
GPG Key ID: 6CADC7E3523C308B
9 changed files with 109 additions and 6 deletions

View File

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z" /></svg>

After

Width:  |  Height:  |  Size: 418 B

View File

@ -23,6 +23,7 @@ package com.owncloud.android.ui.activity;
import android.app.Activity;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
@ -45,7 +46,7 @@ public class CopyToClipboardActivity extends Activity {
try {
// get the clipboard system service
ClipboardManager clipboardManager = (ClipboardManager) this.getSystemService(CLIPBOARD_SERVICE);
ClipboardManager clipboardManager = (ClipboardManager) this.getSystemService(Context.CLIPBOARD_SERVICE);
// get the text to copy into the clipboard
Intent intent = getIntent();

View File

@ -1937,6 +1937,7 @@ public class FileDisplayActivity extends HookActivity
chooserDialog.show(getSupportFragmentManager(), FTAG_CHOOSER_DIALOG);
fileDetailFragment.getFileDetailSharingFragment().refreshPublicShareFromDB();
fileDetailFragment.getFileDetailSharingFragment().onUpdateShareInformation(result, getFile());
refreshListOfFilesFragment(false);
} else {
// Detect Failure (403) --> maybe needs password

View File

@ -52,6 +52,7 @@ import com.owncloud.android.lib.resources.shares.OCShare;
import com.owncloud.android.lib.resources.shares.SharePermissionsBuilder;
import com.owncloud.android.lib.resources.shares.ShareType;
import com.owncloud.android.lib.resources.status.OCCapability;
import com.owncloud.android.ui.activity.CopyToClipboardActivity;
import com.owncloud.android.ui.activity.FileActivity;
import com.owncloud.android.ui.adapter.UserListAdapter;
import com.owncloud.android.ui.decoration.SimpleListItemDividerDecoration;
@ -59,6 +60,7 @@ import com.owncloud.android.ui.dialog.ExpirationDatePickerDialogFragment;
import com.owncloud.android.ui.dialog.SharePasswordDialogFragment;
import com.owncloud.android.ui.fragment.util.FileDetailSharingFragmentHelper;
import com.owncloud.android.ui.fragment.util.SharingMenuHelper;
import com.owncloud.android.utils.ClipboardUtil;
import com.owncloud.android.utils.ThemeUtils;
import java.util.ArrayList;
@ -95,6 +97,9 @@ public class FileDetailSharingFragment extends Fragment implements UserListAdapt
@BindView(R.id.share_by_link)
AppCompatCheckBox shareByLink;
@BindView(R.id.share_link_copy_icon)
ImageView shareLinkCopyIcon;
@BindView(R.id.overflow_menu_share_link)
ImageView overflowMenuShareLink;
@ -171,6 +176,11 @@ public class FileDetailSharingFragment extends Fragment implements UserListAdapt
*/
public void setShareByLinkInfo(boolean isShareByLink) {
shareByLink.setChecked(isShareByLink);
if (isShareByLink) {
shareLinkCopyIcon.setVisibility(View.VISIBLE);
} else {
shareLinkCopyIcon.setVisibility(View.INVISIBLE);
}
int accentColor = ThemeUtils.primaryAccentColor(getContext());
ThemeUtils.tintCheckbox(shareByLink, accentColor);
ThemeUtils.tintCheckbox(shareByLinkAllowEditing, accentColor);
@ -240,13 +250,19 @@ public class FileDetailSharingFragment extends Fragment implements UserListAdapt
}
}
@OnClick(R.id.share_link_label)
public void showSendLinkTo() {
private void showSendLinkTo() {
if (file.isSharedViaLink()) {
((FileActivity) getActivity()).getFileOperationsHelper().getFileWithLink(file);
}
}
@OnClick({R.id.share_link_label, R.id.share_link_copy_icon})
public void copyLinkToClipboard() {
if (file.isSharedViaLink()) {
ClipboardUtil.copyToClipboard(getActivity(), file.getPublicLink());
}
}
@OnClick(R.id.share_by_link_allow_editing)
public void toggleShareLinkAllowEditing() {
if (file.isSharedViaLink()) {
@ -307,7 +323,7 @@ public class FileDetailSharingFragment extends Fragment implements UserListAdapt
requestPasswordForShareViaLink(false);
return true;
}
case R.id.action_expiration_date: {
case R.id.action_share_expiration_date: {
ExpirationDatePickerDialogFragment dialog = ExpirationDatePickerDialogFragment.newInstance(file, -1);
dialog.show(
getActivity().getSupportFragmentManager(),
@ -315,6 +331,10 @@ public class FileDetailSharingFragment extends Fragment implements UserListAdapt
);
return true;
}
case R.id.action_share_send_link: {
showSendLinkTo();
return true;
}
default:
return super.onOptionsItemSelected(item);
}

View File

@ -0,0 +1,37 @@
package com.owncloud.android.utils;
import android.app.Activity;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.widget.Toast;
import com.owncloud.android.R;
import com.owncloud.android.lib.common.utils.Log_OC;
public class ClipboardUtil {
private static final String TAG = ClipboardUtil.class.getName();
private ClipboardUtil() {
}
public static void copyToClipboard(Activity activity, String text) {
if (text != null && text.length() > 0) {
try {
ClipData clip = ClipData.newPlainText(
activity.getString(
R.string.clipboard_label, activity.getString(R.string.app_name)),
text
);
((ClipboardManager) activity.getSystemService(Context.CLIPBOARD_SERVICE)).setPrimaryClip(clip);
Toast.makeText(activity, R.string.clipboard_text_copied, Toast.LENGTH_SHORT).show();
} catch (Exception e) {
Toast.makeText(activity, R.string.clipboard_uxexpected_error, Toast.LENGTH_SHORT).show();
Log_OC.e(TAG, "Exception caught while copying to clipboard", e);
}
} else {
Toast.makeText(activity, R.string.clipboard_no_text_to_copy, Toast.LENGTH_SHORT).show();
}
}
}

View File

@ -0,0 +1,23 @@
<!--
@author Google LLC
Copyright (C) 2018 Google LLC
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
android:width="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path android:fillColor="#757575" android:pathData="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z" />
</vector>

View File

@ -58,16 +58,30 @@
<TextView
android:id="@+id/share_link_label"
android:layout_width="0dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start|center"
android:textColor="@color/black"
android:layout_weight="1"
android:textSize="16sp"
android:paddingTop="@dimen/standard_half_padding"
android:paddingBottom="@dimen/standard_half_padding"
android:text="@string/share_via_link_section_title" />
<ImageView
android:id="@+id/share_link_copy_icon"
android:layout_width="0dp"
android:layout_height="24dp"
android:layout_marginEnd="@dimen/standard_eighth_margin"
android:layout_marginLeft="@dimen/standard_eighth_margin"
android:layout_marginRight="@dimen/standard_eighth_margin"
android:layout_marginStart="@dimen/standard_eighth_margin"
android:layout_marginTop="@dimen/standard_half_margin"
android:layout_weight="1"
android:contentDescription="@string/copy_link"
android:paddingBottom="@dimen/standard_half_padding"
android:scaleType="fitStart"
android:src="@drawable/ic_content_copy" />
<android.support.v7.widget.AppCompatCheckBox
android:id="@+id/share_by_link_allow_editing"
android:layout_width="wrap_content"

View File

@ -38,5 +38,10 @@
android:showAsAction="never"
android:title="@string/share_expiration_date_label"
app:showAsAction="never" />
<item
android:id="@+id/action_share_send_link"
android:showAsAction="never"
android:title="@string/share_via_link_send_link_label"
app:showAsAction="never" />
</menu>

View File

@ -493,6 +493,7 @@
<string name="share_expiration_date_label">Expires %1$s</string>
<string name="share_no_expiration_date_label">Set expiration date</string>
<string name="share_via_link_section_title">Share link</string>
<string name="share_via_link_send_link_label">Send link</string>
<string name="share_password_title">Password-protected</string>
<string name="share_no_password_title">Set password</string>
<string name="edit_permission_label">edit</string>