mirror of
https://github.com/nextcloud/android.git
synced 2024-10-23 20:46:04 +03:00
Fix #2705 - displaying copy icon and adding send action to the link menu
This commit is contained in:
parent
87379285aa
commit
429da18285
9 changed files with 109 additions and 6 deletions
1
drawable_resources/ic_content-copy.svg
Normal file
1
drawable_resources/ic_content-copy.svg
Normal 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 |
|
@ -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();
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
37
src/main/java/com/owncloud/android/utils/ClipboardUtil.java
Normal file
37
src/main/java/com/owncloud/android/utils/ClipboardUtil.java
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
23
src/main/res/drawable/ic_content_copy.xml
Normal file
23
src/main/res/drawable/ic_content_copy.xml
Normal 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>
|
|
@ -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"
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Reference in a new issue