Procházet zdrojové kódy

Personal view

Signed-off-by: tobiasKaminsky <tobias@kaminsky.me>
tobiasKaminsky před 1 rokem
rodič
revize
998d46da67

+ 8 - 0
app/src/main/java/com/owncloud/android/MainApp.java

@@ -141,6 +141,7 @@ public class MainApp extends MultiDexApplication implements HasAndroidInjector {
     private static String storagePath;
 
     private static boolean mOnlyOnDevice;
+    private static boolean mOnlyPersonalFiles;
 
     @Inject
     protected AppPreferences preferences;
@@ -705,11 +706,18 @@ public class MainApp extends MultiDexApplication implements HasAndroidInjector {
         mOnlyOnDevice = state;
     }
 
+    public static void showOnlyPersonalFiles(boolean state) {
+        mOnlyPersonalFiles = state;
+    }
 
     public static boolean isOnlyOnDevice() {
         return mOnlyOnDevice;
     }
 
+    public static boolean isOnlyPersonFiles() {
+        return mOnlyPersonalFiles;
+    }
+
     public static String getUserAgent() {
         // Mozilla/5.0 (Android) Nextcloud-android/2.1.0
         return getUserAgent(R.string.nextcloud_user_agent);

+ 6 - 4
app/src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java

@@ -486,17 +486,18 @@ public abstract class DrawerActivity extends ToolbarActivity
 
         int itemId = menuItem.getItemId();
 
-        if (itemId == R.id.nav_all_files) {
+        if (itemId == R.id.nav_all_files || itemId == R.id.nav_personal_files) {
             if (this instanceof FileDisplayActivity &&
                 !(((FileDisplayActivity) this).getLeftFragment() instanceof GalleryFragment) &&
                 !(((FileDisplayActivity) this).getLeftFragment() instanceof SharedListFragment) &&
                 !(((FileDisplayActivity) this).getLeftFragment() instanceof GroupfolderListFragment) &&
                 !(((FileDisplayActivity) this).getLeftFragment() instanceof PreviewTextStringFragment)) {
-                showFiles(false);
+                showFiles(false, itemId == R.id.nav_personal_files);
                 ((FileDisplayActivity) this).browseToRoot();
                 EventBus.getDefault().post(new ChangeMenuEvent());
             } else {
                 MainApp.showOnlyFilesOnDevice(false);
+                MainApp.showOnlyPersonalFiles(itemId == R.id.nav_personal_files);
                 Intent intent = new Intent(getApplicationContext(), FileDisplayActivity.class);
                 intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                 intent.setAction(FileDisplayActivity.ALL_FILES);
@@ -510,7 +511,7 @@ public abstract class DrawerActivity extends ToolbarActivity
             startPhotoSearch(menuItem.getItemId());
         } else if (itemId == R.id.nav_on_device) {
             EventBus.getDefault().post(new ChangeMenuEvent());
-            showFiles(true);
+            showFiles(true, false);
         } else if (itemId == R.id.nav_uploads) {
             startActivity(UploadListActivity.class, Intent.FLAG_ACTIVITY_CLEAR_TOP);
         } else if (itemId == R.id.nav_trashbin) {
@@ -1105,8 +1106,9 @@ public abstract class DrawerActivity extends ToolbarActivity
      *
      * @param onDeviceOnly flag to decide if all files or only the ones on the device should be shown
      */
-    public void showFiles(boolean onDeviceOnly) {
+    public void showFiles(boolean onDeviceOnly, boolean onlyPersonalFiles) {
         MainApp.showOnlyFilesOnDevice(onDeviceOnly);
+        MainApp.showOnlyPersonalFiles(onlyPersonalFiles);
         Intent fileDisplayActivity = new Intent(getApplicationContext(), FileDisplayActivity.class);
         fileDisplayActivity.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
         fileDisplayActivity.setAction(FileDisplayActivity.ALL_FILES);

+ 2 - 1
app/src/main/java/com/owncloud/android/ui/activity/FileActivity.java

@@ -187,9 +187,10 @@ public abstract class FileActivity extends DrawerActivity
     ArbitraryDataProvider arbitraryDataProvider;
 
     @Override
-    public void showFiles(boolean onDeviceOnly) {
+    public void showFiles(boolean onDeviceOnly, boolean personalFiles) {
         // must be specialized in subclasses
         MainApp.showOnlyFilesOnDevice(onDeviceOnly);
+        MainApp.showOnlyPersonalFiles(personalFiles);
         if (onDeviceOnly) {
             setupToolbar();
         } else {

+ 7 - 4
app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java

@@ -1130,7 +1130,7 @@ public class FileDisplayActivity extends FileActivity
         if (menuItemId == -1) {
             setDrawerAllFiles();
         } else {
-            if (menuItemId == R.id.nav_all_files) {
+            if (menuItemId == R.id.nav_all_files || menuItemId == R.id.nav_personal_files) {
                 setupHomeSearchToolbarWithSortAndListButtons();
             } else {
                 setupToolbar();
@@ -1148,7 +1148,10 @@ public class FileDisplayActivity extends FileActivity
     }
 
     private void setDrawerAllFiles() {
-        if (MainApp.isOnlyOnDevice()) {
+        if (MainApp.isOnlyPersonFiles()) {
+            setDrawerMenuItemChecked(R.id.nav_personal_files);
+            setupHomeSearchToolbarWithSortAndListButtons();
+        } else if (MainApp.isOnlyOnDevice()) {
             setDrawerMenuItemChecked(R.id.nav_on_device);
             setupToolbar();
         } else {
@@ -2202,8 +2205,8 @@ public class FileDisplayActivity extends FileActivity
     }
 
     @Override
-    public void showFiles(boolean onDeviceOnly) {
-        super.showFiles(onDeviceOnly);
+    public void showFiles(boolean onDeviceOnly, boolean personalFiles) {
+        super.showFiles(onDeviceOnly, personalFiles);
         if (onDeviceOnly) {
             updateActionBarTitleAndHomeButtonByString(getString(R.string.drawer_item_on_device));
         }

+ 19 - 2
app/src/main/java/com/owncloud/android/ui/adapter/OCFileListAdapter.java

@@ -748,6 +748,9 @@ public class OCFileListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
             if (!limitToMimeType.isEmpty()) {
                 mFiles = filterByMimeType(mFiles, limitToMimeType);
             }
+            if (OCFile.ROOT_PATH.equals(directory.getRemotePath()) && MainApp.isOnlyPersonFiles()) {
+                mFiles = limitToPersonalFiles(mFiles);
+            }
             sortOrder = preferences.getSortOrderByFolder(directory);
             mFiles = sortOrder.sortCloudFiles(mFiles);
             prepareListOfHiddenFiles();
@@ -1051,7 +1054,7 @@ public class OCFileListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
      * @param files Collection of files to filter
      * @return Non-hidden files
      */
-    private List<OCFile> filterHiddenFiles(List<OCFile> files) {
+    private List<OCFile> filterHiddenFiles(Iterable<OCFile> files) {
         List<OCFile> ret = new ArrayList<>();
 
         for (OCFile file : files) {
@@ -1063,7 +1066,7 @@ public class OCFileListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
         return ret;
     }
 
-    private List<OCFile> filterByMimeType(List<OCFile> files, String mimeType) {
+    private List<OCFile> filterByMimeType(Iterable<OCFile> files, String mimeType) {
         List<OCFile> ret = new ArrayList<>();
 
         for (OCFile file : files) {
@@ -1075,6 +1078,20 @@ public class OCFileListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
         return ret;
     }
 
+    private List<OCFile> limitToPersonalFiles(Iterable<OCFile> files) {
+        List<OCFile> ret = new ArrayList<>();
+
+        for (OCFile file : files) {
+            if (file.getOwnerId().equals(userId) &&
+                !file.isSharedWithMe() &&
+                !file.isGroupFolder()) {
+                ret.add(file);
+            }
+        }
+
+        return ret;
+    }
+
     public void cancelAllPendingTasks() {
         ocFileListDelegate.cancelAllPendingTasks();
     }

+ 8 - 3
app/src/main/res/menu/partial_drawer_entries.xml

@@ -29,16 +29,21 @@
             android:id="@+id/nav_all_files"
             android:icon="@drawable/all_files"
             android:orderInCategory="0"
-            android:title="@string/drawer_item_all_files"/>
+            android:title="@string/drawer_item_all_files" />
+        <item
+            android:id="@+id/nav_personal_files"
+            android:icon="@drawable/ic_user"
+            android:orderInCategory="0"
+            android:title="@string/drawer_item_personal_files" />
         <item
             android:id="@+id/nav_activity"
             android:icon="@drawable/ic_activity"
-            android:title="@string/drawer_item_activities"/>
+            android:title="@string/drawer_item_activities" />
         <item
             android:id="@+id/nav_favorites"
             android:icon="@drawable/nav_favorites"
             android:orderInCategory="0"
-            android:title="@string/drawer_item_favorites"/>
+            android:title="@string/drawer_item_favorites" />
         <item
             android:id="@+id/nav_gallery"
             android:icon="@drawable/nav_photos"

+ 1 - 0
app/src/main/res/values/strings.xml

@@ -19,6 +19,7 @@
     <string name="menu_item_sort_by_size_smallest_first">Smallest first</string>
 
     <string name="drawer_item_all_files">All files</string>
+    <string name="drawer_item_personal_files">Personal files</string>
     <string name="drawer_item_home">Home</string>
     <string name="drawer_item_favorites">Favorites</string>
     <string name="drawer_item_on_device">On device</string>