瀏覽代碼

WiP expiration Date, permission text calculation

AndyScherzinger 7 年之前
父節點
當前提交
f5d9af71b9

+ 16 - 8
src/main/java/com/owncloud/android/ui/dialog/ExpirationDatePickerDialogFragment.java

@@ -24,10 +24,12 @@ package com.owncloud.android.ui.dialog;
 import android.app.DatePickerDialog;
 import android.app.Dialog;
 import android.os.Bundle;
+import android.support.annotation.NonNull;
 import android.support.v4.app.DialogFragment;
 import android.text.format.DateUtils;
 import android.widget.DatePicker;
 
+import com.owncloud.android.R;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.ui.activity.FileActivity;
 
@@ -50,14 +52,14 @@ public class ExpirationDatePickerDialogFragment
     private static final String ARG_CHOSEN_DATE_IN_MILLIS = "CHOSEN_DATE_IN_MILLIS";
 
     /** File to bind an expiration date */
-    private OCFile mFile;
+    private OCFile file;
 
     /**
      *  Factory method to create new instances
      *
      *  @param file                 File to bind an expiration date
      *  @param chosenDateInMillis   Date chosen when the dialog appears
-     *  @return                     New dialog instance
+     *  @return New dialog instance
      */
     public static ExpirationDatePickerDialogFragment newInstance(OCFile file, long chosenDateInMillis) {
         Bundle arguments = new Bundle();
@@ -72,12 +74,13 @@ public class ExpirationDatePickerDialogFragment
     /**
      * {@inheritDoc}
      *
-     * @return      A new dialog to let the user choose an expiration date that will be bound to a share link.
+     * @return A new dialog to let the user choose an expiration date that will be bound to a share link.
      */
     @Override
+    @NonNull
     public Dialog onCreateDialog(Bundle savedInstanceState) {
         // Load arguments
-        mFile = getArguments().getParcelable(ARG_FILE);
+        file = getArguments().getParcelable(ARG_FILE);
 
         // Chosen date received as an argument must be later than tomorrow ; default to tomorrow in other case
         final Calendar chosenDate = Calendar.getInstance();
@@ -97,6 +100,13 @@ public class ExpirationDatePickerDialogFragment
                 chosenDate.get(Calendar.MONTH),
                 chosenDate.get(Calendar.DAY_OF_MONTH)
         );
+        dialog.setButton(
+                Dialog.BUTTON_NEUTRAL,
+                getText(R.string.share_via_link_unset_password),
+                (dialog1, which) -> {
+                    ((FileActivity) getActivity()).getFileOperationsHelper()
+                            .setExpirationDateToShareViaLink(file, 0);
+                });
 
         // Prevent days in the past may be chosen
         DatePicker picker = dialog.getDatePicker();
@@ -127,9 +137,7 @@ public class ExpirationDatePickerDialogFragment
         chosenDate.set(Calendar.DAY_OF_MONTH, dayOfMonth);
         long chosenDateInMillis = chosenDate.getTimeInMillis();
 
-        ((FileActivity)getActivity()).getFileOperationsHelper().setExpirationDateToShareViaLink(
-                mFile,
-                chosenDateInMillis
-        );
+        ((FileActivity) getActivity()).getFileOperationsHelper()
+                .setExpirationDateToShareViaLink(file, chosenDateInMillis);
     }
 }

+ 38 - 2
src/main/java/com/owncloud/android/ui/fragment/FileDetailSharingFragment.java

@@ -312,11 +312,48 @@ public class FileDetailSharingFragment extends Fragment implements UserListAdapt
     }
 
     private void prepareOptionsMenu(Menu menu) {
-        // TODO implement setting the correct menu item titles based on the share/permissions info
         Resources res = getResources();
+        setupPermissionsMenuItem(menu.findItem(R.id.action_share_link_permissions), res);
+        setupPasswordMenuItem(menu.findItem(R.id.action_share_link_password), res);
         setupExpirationDateMenuItem(menu.findItem(R.id.action_share_link_expiration_date), res);
     }
 
+    private void setupPermissionsMenuItem(MenuItem permission, Resources res) {
+        if (publicShare.getPermissions() > OCShare.READ_PERMISSION_FLAG) {
+            boolean uploadOnly = (publicShare.getPermissions() & OCShare.READ_PERMISSION_FLAG) != 0;
+            if (uploadOnly) {
+                permission.setTitle(res.getString(
+                        R.string.share_via_link_menu_permissions_label,
+                        res.getString(R.string.share_privilege_can_edit),
+                        res.getString(R.string.share_via_link_menu_permissions_upload_only_label)
+                ));
+            } else {
+                permission.setTitle(res.getString(
+                        R.string.share_via_link_menu_permission_label,
+                        res.getString(R.string.share_privilege_can_edit)));
+            }
+        } else {
+            // read only
+            permission.setTitle(res.getString(
+                    R.string.share_via_link_menu_permission_label,
+                    res.getString(R.string.share_via_link_menu_permissions_read_only_label)));
+        }
+    }
+
+    private void setupPasswordMenuItem(MenuItem password, Resources res) {
+        if (publicShare.isPasswordProtected()) {
+            password.setTitle(res.getString(
+                    R.string.share_via_link_menu_password_label,
+                    res.getString(R.string.share_via_link_password_title)
+            ));
+        } else {
+            password.setTitle(res.getString(
+                    R.string.share_via_link_menu_password_label,
+                    res.getString(R.string.share_via_link_no_password_title)
+            ));
+        }
+    }
+
     private void setupExpirationDateMenuItem(MenuItem expirationDate, Resources res) {
         long expirationDateValue = publicShare.getExpirationDate();
         if (expirationDateValue > 0) {
@@ -342,7 +379,6 @@ public class FileDetailSharingFragment extends Fragment implements UserListAdapt
                 return true;
             }
             case R.id.action_share_link_password: {
-                // TODO extend password dialog to allow for clearing/unsetting a password
                 // TODO refresh share object after password has been set
                 requestPasswordForShareViaLink(false);
                 return true;

+ 1 - 1
src/main/java/com/owncloud/android/ui/fragment/ShareFileFragment.java

@@ -846,7 +846,7 @@ public class ShareFileFragment extends Fragment implements ShareUserListAdapter.
     }
 
 
-    /// BEWARE: next methods will failed with NullPointerException if called before onCreateView() finishes
+    // BEWARE: next methods will failed with NullPointerException if called before onCreateView() finishes
 
     private SwitchCompat getShareViaLinkSwitch() {
         return (SwitchCompat) getView().findViewById(R.id.shareViaLinkSectionSwitch);

+ 0 - 2
src/main/res/layout/share_file_layout.xml

@@ -169,7 +169,6 @@
                     android:id="@+id/shareViaLinkEditPermissionSection"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    android:visibility="invisible"
                     android:layout_marginBottom="@dimen/standard_half_margin"
                     >
 
@@ -204,7 +203,6 @@
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:layout_marginBottom="@dimen/standard_half_margin"
-                    android:visibility="invisible"
                     >
 
                     <android.support.v7.widget.SwitchCompat

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

@@ -480,7 +480,10 @@
     <string name="share_with_user_section_title">Share with users and groups</string>
     <string name="share_no_users">No data shared with users yet</string>
     <string name="share_add_user_or_group">Add user or group</string>
-    <string name="share_via_link_menu_permissions_label">Permissions (%1$s)</string>
+    <string name="share_via_link_menu_permission_label">Permissions (%1$s)</string>
+    <string name="share_via_link_menu_permissions_label">Permissions (%1$s, %2$s)</string>
+    <string name="share_via_link_menu_permissions_read_only_label">read-only</string>
+    <string name="share_via_link_menu_permissions_upload_only_label">upload-only</string>
     <string name="share_via_link_menu_password_label">Password protect (%1$s)</string>
     <string name="share_via_link_menu_expiration_date_label">Set expiration date (%1$s)</string>
     <string name="share_via_link_menu_expiration_date_never">never</string>
@@ -488,6 +491,7 @@
     <string name="share_via_link_expiration_date_label">Set expiration date</string>
     <string name="share_via_link_password_label">Protect with password</string>
     <string name="share_via_link_password_title">Secured</string>
+    <string name="share_via_link_no_password_title">none</string>
     <string name="share_via_link_edit_permission_label">Allow editing</string>
     <string name="share_via_link_hide_file_listing_permission_label">Hide file listing</string>
     <string name="share_get_public_link_button">Get link</string>