Эх сурвалжийг харах

fix file display of custom folders

AndyScherzinger 7 жил өмнө
parent
commit
68622733a1

+ 1 - 0
build.gradle

@@ -220,6 +220,7 @@ dependencies {
     //androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.2'
     // fix conflict in dependencies; see http://g.co/androidstudio/app-test-app-conflict for details
     //androidTestCompile "com.android.support:support-annotations:${supportLibraryVersion}"
+    compile 'org.jetbrains:annotations:15.0'
 }
 
 configurations.all {

+ 40 - 2
src/main/java/com/owncloud/android/ui/activity/FolderSyncActivity.java

@@ -65,7 +65,9 @@ import org.greenrobot.eventbus.Subscribe;
 import org.greenrobot.eventbus.ThreadMode;
 
 import java.io.File;
+import java.io.FileFilter;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashMap;
@@ -231,7 +233,6 @@ public class FolderSyncActivity extends FileActivity implements FolderSyncAdapte
         Map<String, SyncedFolder> syncedFoldersMap = createSyncedFoldersMap(syncedFolders);
         List<SyncedFolderDisplayItem> result = new ArrayList<>();
 
-
         for (MediaFolder mediaFolder : mediaFolders) {
             if (syncedFoldersMap.containsKey(mediaFolder.absolutePath)) {
                 SyncedFolder syncedFolder = syncedFoldersMap.get(mediaFolder.absolutePath);
@@ -242,6 +243,7 @@ public class FolderSyncActivity extends FileActivity implements FolderSyncAdapte
             }
         }
 
+        // No media folder and thus always a custom folder
         for (SyncedFolder syncedFolder : syncedFoldersMap.values()) {
             SyncedFolderDisplayItem syncedFolderDisplayItem = createSyncedFolderWithoutMediaFolder(syncedFolder);
             result.add(syncedFolderDisplayItem);
@@ -293,6 +295,11 @@ public class FolderSyncActivity extends FileActivity implements FolderSyncAdapte
 
     @NonNull
     private SyncedFolderDisplayItem createSyncedFolderWithoutMediaFolder(@NonNull SyncedFolder syncedFolder) {
+
+        File localFolder = new File(syncedFolder.getLocalPath());
+        File[] files = getFileList(localFolder);
+        List<String> filePaths = getDisplayFilePathList(files);
+
         return new SyncedFolderDisplayItem(
                 syncedFolder.getId(),
                 syncedFolder.getLocalPath(),
@@ -303,7 +310,9 @@ public class FolderSyncActivity extends FileActivity implements FolderSyncAdapte
                 syncedFolder.getAccount(),
                 syncedFolder.getUploadAction(),
                 syncedFolder.isEnabled(),
-                new File(syncedFolder.getLocalPath()).getName(),
+                filePaths,
+                localFolder.getName(),
+                files.length,
                 syncedFolder.getType());
     }
 
@@ -356,6 +365,35 @@ public class FolderSyncActivity extends FileActivity implements FolderSyncAdapte
                 mediaFolder.type);
     }
 
+    private File[] getFileList(File localFolder) {
+        File[] files = localFolder.listFiles(new FileFilter() {
+            @Override
+            public boolean accept(File pathname) {
+                return !pathname.isDirectory();
+            }
+        });
+        Arrays.sort(files, new Comparator<File>(){
+            public int compare(File f1, File f2)
+            {
+                return Long.valueOf(f1.lastModified()).compareTo(f2.lastModified());
+            } });
+
+        return files;
+    }
+
+    private List<String> getDisplayFilePathList(File[] files) {
+        List<String> filePaths = null;
+
+        if (files != null && files.length > 0) {
+            filePaths = new ArrayList<>();
+            for (int i = 0; i < 7 && i < files.length; i++) {
+                filePaths.add(files[i].getAbsolutePath());
+            }
+        }
+
+        return filePaths;
+    }
+
     /**
      * creates a lookup map for a list of given {@link SyncedFolder}s with their local path as the key.
      *

+ 9 - 10
src/main/java/com/owncloud/android/ui/activity/UploadFilesActivity.java

@@ -27,6 +27,8 @@ import android.graphics.PorterDuff;
 import android.os.AsyncTask;
 import android.os.Bundle;
 import android.os.Environment;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
 import android.support.v4.app.DialogFragment;
 import android.support.v4.app.Fragment;
 import android.support.v4.app.FragmentManager;
@@ -310,7 +312,6 @@ public class UploadFilesActivity extends FileActivity implements
         }
         return true;
     }
-
     
     @Override
     public void onBackPressed() {
@@ -332,7 +333,6 @@ public class UploadFilesActivity extends FileActivity implements
             setSelectAllMenuItem(mOptionsMenu.findItem(R.id.action_select_all), false);
         }
     }
-
     
     @Override
     protected void onSaveInstanceState(Bundle outState) {
@@ -383,15 +383,16 @@ public class UploadFilesActivity extends FileActivity implements
         }
     }
 
-
-    // Custom array adapter to override text colors
+    /**
+     * Custom array adapter to override text colors
+     */
     private class CustomArrayAdapter<T> extends ArrayAdapter<T> {
     
         public CustomArrayAdapter(UploadFilesActivity ctx, int view) {
             super(ctx, view);
         }
-    
-        public View getView(int position, View convertView, ViewGroup parent) {
+
+        public @NonNull View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
             View v = super.getView(position, convertView, parent);
     
             ((TextView) v).setTextColor(getResources().getColorStateList(
@@ -399,8 +400,7 @@ public class UploadFilesActivity extends FileActivity implements
             return v;
         }
     
-        public View getDropDownView(int position, View convertView,
-                ViewGroup parent) {
+        public View getDropDownView(int position, View convertView, @NonNull ViewGroup parent) {
             View v = super.getDropDownView(position, convertView, parent);
     
             ((TextView) v).setTextColor(getResources().getColorStateList(
@@ -408,7 +408,6 @@ public class UploadFilesActivity extends FileActivity implements
     
             return v;
         }
-    
     }
 
     /**
@@ -487,7 +486,7 @@ public class UploadFilesActivity extends FileActivity implements
     private class CheckAvailableSpaceTask extends AsyncTask<Boolean, Void, Boolean> {
 
         /**
-         * Updates the UI before trying the movement
+         * Updates the UI before trying the movement.
          */
         @Override
         protected void onPreExecute () {