Browse Source

open file details with sharing tab active for folders

AndyScherzinger 6 years ago
parent
commit
fe234cd942

+ 5 - 1
src/main/java/com/owncloud/android/ui/activity/ContactsPreferenceActivity.java

@@ -51,7 +51,6 @@ import java.util.Set;
 /**
  * This activity shows all settings for contact backup/restore
  */
-
 public class ContactsPreferenceActivity extends FileActivity implements FileFragment.ContainerActivity {
     public static final String TAG = ContactsPreferenceActivity.class.getSimpleName();
 
@@ -171,6 +170,11 @@ public class ContactsPreferenceActivity extends FileActivity implements FileFrag
         // not needed
     }
 
+    @Override
+    public void showDetails(OCFile file, int activeTab) {
+        // not needed
+    }
+
     @Override
     public void onBrowsedDownTo(OCFile folder) {
         // not needed

+ 12 - 1
src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java

@@ -1560,7 +1560,18 @@ public class FileDisplayActivity extends HookActivity
      */
     @Override
     public void showDetails(OCFile file) {
-        Fragment detailFragment = FileDetailFragment.newInstance(file, getAccount());
+        showDetails(file, 0);
+    }
+
+    /**
+     * Shows the information of the {@link OCFile} received as a
+     * parameter in the second fragment.
+     *
+     * @param file {@link OCFile} whose details will be shown
+     * @param activeTab the active tab in the details view
+     */
+    public void showDetails(OCFile file, int activeTab) {
+        Fragment detailFragment = FileDetailFragment.newInstance(file, getAccount(), activeTab);
         setSecondFragment(detailFragment);
         updateFragmentsVisibility(true);
         updateActionBarTitleAndHomeButton(file);

+ 5 - 6
src/main/java/com/owncloud/android/ui/activity/FolderPickerActivity.java

@@ -532,17 +532,16 @@ public class FolderPickerActivity extends FileActivity implements FileFragment.C
         }
     }
 
-    /**
-     * Shows the information of the {@link OCFile} received as a
-     * parameter in the second fragment.
-     *
-     * @param file          {@link OCFile} whose details will be shown
-     */
     @Override
     public void showDetails(OCFile file) {
         // not used at the moment
     }
 
+    @Override
+    public void showDetails(OCFile file, int activeTab) {
+        // not used at the moment
+    }
+
     /**
      * {@inheritDoc}
      */

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

@@ -77,6 +77,7 @@ public class FileDetailFragment extends FileFragment implements OnClickListener
 
     private static final String ARG_FILE = "FILE";
     private static final String ARG_ACCOUNT = "ACCOUNT";
+    private static final String ARG_ACTIVE_TAB = "TAB";
 
     @Nullable @BindView(R.id.fdProgressBlock)
     View downloadProgressContainer;
@@ -131,6 +132,7 @@ public class FileDetailFragment extends FileFragment implements OnClickListener
 
     public ProgressListener progressListener;
     private ToolbarActivity activity;
+    private int activeTab;
 
     /**
      * Public factory method to create new FileDetailFragment instances.
@@ -150,6 +152,26 @@ public class FileDetailFragment extends FileFragment implements OnClickListener
         return frag;
     }
 
+    /**
+     * Public factory method to create new FileDetailFragment instances.
+     *
+     * When 'fileToDetail' or 'ocAccount' are null, creates a dummy layout (to use when a file wasn't tapped before).
+     *
+     * @param fileToDetail      An {@link OCFile} to show in the fragment
+     * @param account           An ownCloud account; needed to start downloads
+     *                          @param activeTab to be active tab
+     * @return New fragment with arguments set
+     */
+    public static FileDetailFragment newInstance(OCFile fileToDetail, Account account, int activeTab) {
+        FileDetailFragment frag = new FileDetailFragment();
+        Bundle args = new Bundle();
+        args.putParcelable(ARG_FILE, fileToDetail);
+        args.putParcelable(ARG_ACCOUNT, account);
+        args.putInt(ARG_ACTIVE_TAB, activeTab);
+        frag.setArguments(args);
+        return frag;
+    }
+
     /**
      * Creates an empty details fragment.
      * 
@@ -205,6 +227,7 @@ public class FileDetailFragment extends FileFragment implements OnClickListener
 
         setFile(getArguments().getParcelable(ARG_FILE));
         account = getArguments().getParcelable(ARG_ACCOUNT);
+        activeTab = getArguments().getInt(ARG_ACTIVE_TAB, 0);
 
         if (savedInstanceState != null) {
             setFile(savedInstanceState.getParcelable(FileActivity.EXTRA_FILE));
@@ -229,12 +252,6 @@ public class FileDetailFragment extends FileFragment implements OnClickListener
             cancelButton.setOnClickListener(this);
             favoriteIcon.setOnClickListener(this);
             overflowMenu.setOnClickListener(this);
-            // TODO use whenever we switch to use glide for preview images
-            /*
-            if (MimeTypeUtil.isImage(getFile())) {
-                setHeaderImage();
-            }
-             */
 
             updateFileDetails(false, false);
         } else {
@@ -285,6 +302,8 @@ public class FileDetailFragment extends FileFragment implements OnClickListener
                 // unused at the moment
             }
         });
+
+        tabLayout.getTabAt(activeTab).select();
     }
 
     @Override

+ 8 - 0
src/main/java/com/owncloud/android/ui/fragment/FileFragment.java

@@ -131,6 +131,14 @@ public class FileFragment extends Fragment {
          */
         void showDetails(OCFile file);
 
+        /**
+         * Request the parent activity to show the details of an {@link OCFile}.
+         *
+         * @param file      File to show details
+         * @param activeTab the active tab
+         */
+        void showDetails(OCFile file, int activeTab);
+
         
         ///// TO UNIFY IN A SINGLE CALLBACK METHOD - EVENT NOTIFICATIONs  -> something happened
         // inside the fragment, MAYBE activity is interested --> unify in notification method

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

@@ -393,7 +393,11 @@ public class OCFileListFragment extends ExtendedListFragment implements
 
     @Override
     public void onShareIconClick(OCFile file) {
-        mContainerActivity.getFileOperationsHelper().sendShareFile(file);
+        if (file.isFolder()) {
+            mContainerActivity.showDetails(file, 1);
+        } else {
+            mContainerActivity.getFileOperationsHelper().sendShareFile(file);
+        }
     }
 
     @Override

+ 5 - 0
src/main/java/com/owncloud/android/ui/preview/PreviewImageActivity.java

@@ -312,6 +312,11 @@ public class PreviewImageActivity extends FileActivity implements
         finish();
     }
 
+    @Override
+    public void showDetails(OCFile file, int activeTab) {
+        showDetails(file);
+    }
+
     public void requestForDownload(OCFile file) {
         if (mDownloaderBinder == null) {
             Log_OC.d(TAG, "requestForDownload called without binder to download service");