OSDN Git Service

CMFileManager: change breadcrumb views in dialogs for better visibility
authorRaj Yengisetty <rajesh@cyngn.com>
Wed, 7 Jan 2015 23:15:41 +0000 (15:15 -0800)
committerRaj Yengisetty <rajesh@cyngn.com>
Thu, 8 Jan 2015 00:33:33 +0000 (16:33 -0800)
Change-Id: I0af7aef6d2605c1a2bf107ffce87236b01f11c42

17 files changed:
res/drawable-hdpi/ic_material_dialog_fs_locked.png [new file with mode: 0644]
res/drawable-hdpi/ic_material_dialog_fs_unlocked.png [new file with mode: 0644]
res/drawable-hdpi/ic_material_dialog_fs_warning.png [new file with mode: 0644]
res/drawable-mdpi/ic_material_dialog_fs_locked.png [new file with mode: 0644]
res/drawable-mdpi/ic_material_dialog_fs_unlocked.png [new file with mode: 0644]
res/drawable-mdpi/ic_material_dialog_fs_warning.png [new file with mode: 0644]
res/drawable-xhdpi/ic_material_dialog_fs_locked.png [new file with mode: 0644]
res/drawable-xhdpi/ic_material_dialog_fs_unlocked.png [new file with mode: 0644]
res/drawable-xhdpi/ic_material_dialog_fs_warning.png [new file with mode: 0644]
res/drawable-xxhdpi/ic_material_dialog_fs_locked.png [new file with mode: 0644]
res/drawable-xxhdpi/ic_material_dialog_fs_unlocked.png [new file with mode: 0644]
res/drawable-xxhdpi/ic_material_dialog_fs_warning.png [new file with mode: 0644]
res/layout/picker.xml
res/values/theme.xml
src/com/cyanogenmod/filemanager/tasks/FilesystemAsyncTask.java
src/com/cyanogenmod/filemanager/ui/widgets/BreadcrumbView.java
src/com/cyanogenmod/filemanager/ui/widgets/DialogBreadcrumbView.java [new file with mode: 0644]

diff --git a/res/drawable-hdpi/ic_material_dialog_fs_locked.png b/res/drawable-hdpi/ic_material_dialog_fs_locked.png
new file mode 100644 (file)
index 0000000..b61917a
Binary files /dev/null and b/res/drawable-hdpi/ic_material_dialog_fs_locked.png differ
diff --git a/res/drawable-hdpi/ic_material_dialog_fs_unlocked.png b/res/drawable-hdpi/ic_material_dialog_fs_unlocked.png
new file mode 100644 (file)
index 0000000..bab5401
Binary files /dev/null and b/res/drawable-hdpi/ic_material_dialog_fs_unlocked.png differ
diff --git a/res/drawable-hdpi/ic_material_dialog_fs_warning.png b/res/drawable-hdpi/ic_material_dialog_fs_warning.png
new file mode 100644 (file)
index 0000000..929ab5e
Binary files /dev/null and b/res/drawable-hdpi/ic_material_dialog_fs_warning.png differ
diff --git a/res/drawable-mdpi/ic_material_dialog_fs_locked.png b/res/drawable-mdpi/ic_material_dialog_fs_locked.png
new file mode 100644 (file)
index 0000000..21b679c
Binary files /dev/null and b/res/drawable-mdpi/ic_material_dialog_fs_locked.png differ
diff --git a/res/drawable-mdpi/ic_material_dialog_fs_unlocked.png b/res/drawable-mdpi/ic_material_dialog_fs_unlocked.png
new file mode 100644 (file)
index 0000000..e7ff986
Binary files /dev/null and b/res/drawable-mdpi/ic_material_dialog_fs_unlocked.png differ
diff --git a/res/drawable-mdpi/ic_material_dialog_fs_warning.png b/res/drawable-mdpi/ic_material_dialog_fs_warning.png
new file mode 100644 (file)
index 0000000..b787fab
Binary files /dev/null and b/res/drawable-mdpi/ic_material_dialog_fs_warning.png differ
diff --git a/res/drawable-xhdpi/ic_material_dialog_fs_locked.png b/res/drawable-xhdpi/ic_material_dialog_fs_locked.png
new file mode 100644 (file)
index 0000000..112a25c
Binary files /dev/null and b/res/drawable-xhdpi/ic_material_dialog_fs_locked.png differ
diff --git a/res/drawable-xhdpi/ic_material_dialog_fs_unlocked.png b/res/drawable-xhdpi/ic_material_dialog_fs_unlocked.png
new file mode 100644 (file)
index 0000000..7684ff8
Binary files /dev/null and b/res/drawable-xhdpi/ic_material_dialog_fs_unlocked.png differ
diff --git a/res/drawable-xhdpi/ic_material_dialog_fs_warning.png b/res/drawable-xhdpi/ic_material_dialog_fs_warning.png
new file mode 100644 (file)
index 0000000..3d9ebc7
Binary files /dev/null and b/res/drawable-xhdpi/ic_material_dialog_fs_warning.png differ
diff --git a/res/drawable-xxhdpi/ic_material_dialog_fs_locked.png b/res/drawable-xxhdpi/ic_material_dialog_fs_locked.png
new file mode 100644 (file)
index 0000000..7948955
Binary files /dev/null and b/res/drawable-xxhdpi/ic_material_dialog_fs_locked.png differ
diff --git a/res/drawable-xxhdpi/ic_material_dialog_fs_unlocked.png b/res/drawable-xxhdpi/ic_material_dialog_fs_unlocked.png
new file mode 100644 (file)
index 0000000..78c2bdb
Binary files /dev/null and b/res/drawable-xxhdpi/ic_material_dialog_fs_unlocked.png differ
diff --git a/res/drawable-xxhdpi/ic_material_dialog_fs_warning.png b/res/drawable-xxhdpi/ic_material_dialog_fs_warning.png
new file mode 100644 (file)
index 0000000..4f8f354
Binary files /dev/null and b/res/drawable-xxhdpi/ic_material_dialog_fs_warning.png differ
index 8baa52e..3e6d56c 100644 (file)
@@ -23,7 +23,7 @@
   android:orientation="vertical">
 
   <!-- Breadcrumb -->
-  <com.cyanogenmod.filemanager.ui.widgets.BreadcrumbView
+  <com.cyanogenmod.filemanager.ui.widgets.DialogBreadcrumbView
     android:id="@+id/breadcrumb_view"
     android:layout_width="match_parent"
     android:layout_height="@dimen/default_row_height"
index 826d2d2..9ebf67e 100644 (file)
     <drawable name="filesystem_unlocked_drawable">@drawable/ic_material_light_fs_unlocked</drawable>
     <!-- FileSystem warning drawable -->
     <drawable name="filesystem_warning_drawable">@drawable/ic_material_light_fs_warning</drawable>
+    <!-- FileSystem locked drawable -->
+    <drawable name="filesystem_dialog_locked_drawable">@drawable/ic_material_dialog_fs_locked</drawable>
+    <!-- FileSystem unlocked drawable -->
+    <drawable name="filesystem_dialog_unlocked_drawable">@drawable/ic_material_dialog_fs_unlocked</drawable>
+    <!-- FileSystem warning drawable -->
+    <drawable name="filesystem_dialog_warning_drawable">@drawable/ic_material_dialog_fs_warning</drawable>
 
     <!-- Secure FileSystem icon -->
     <drawable name="secure_filesystem_drawable">@drawable/ic_material_light_secure</drawable>
index dceeed5..1f457d3 100644 (file)
@@ -58,6 +58,11 @@ public class FilesystemAsyncTask extends AsyncTask<String, Integer, Boolean> {
     /**
      * @hide
      */
+    final boolean mIsDialog;
+
+    /**
+     * @hide
+     */
     static int sColorFilterNormal;
 
     /**
@@ -71,12 +76,29 @@ public class FilesystemAsyncTask extends AsyncTask<String, Integer, Boolean> {
     public FilesystemAsyncTask(
             Context context, ImageView mountPointInfo,
             ProgressBar diskUsageInfo, int freeDiskSpaceWarningLevel) {
+        this(context, mountPointInfo, diskUsageInfo, freeDiskSpaceWarningLevel,
+                false);
+    }
+
+    /**
+     * Constructor of <code>FilesystemAsyncTask</code>.
+     *
+     * @param context The current context
+     * @param mountPointInfo The mount point info view
+     * @param diskUsageInfo The mount point info view
+     * @param freeDiskSpaceWarningLevel The free disk space warning level
+     * @param isDialog Whether or not to use dialog theme resources
+     */
+    public FilesystemAsyncTask(
+            Context context, ImageView mountPointInfo,
+            ProgressBar diskUsageInfo, int freeDiskSpaceWarningLevel, boolean isDialog) {
         super();
         this.mContext = context;
         this.mMountPointInfo = mountPointInfo;
         this.mDiskUsageInfo = diskUsageInfo;
         this.mFreeDiskSpaceWarningLevel = freeDiskSpaceWarningLevel;
         this.mRunning = false;
+        this.mIsDialog = isDialog;
     }
 
     /**
@@ -116,7 +138,9 @@ public class FilesystemAsyncTask extends AsyncTask<String, Integer, Boolean> {
                     theme.setImageDrawable(
                             FilesystemAsyncTask.this.mContext,
                             FilesystemAsyncTask.this.mMountPointInfo,
-                            "filesystem_warning_drawable"); //$NON-NLS-1$
+                            FilesystemAsyncTask.this.mIsDialog ?
+                                    "filesystem_dialog_warning_drawable" //$NON-NLS-1$
+                                    : "filesystem_warning_drawable"); //$NON-NLS-1$
                     FilesystemAsyncTask.this.mMountPointInfo.setTag(null);
                 }
             });
@@ -130,8 +154,12 @@ public class FilesystemAsyncTask extends AsyncTask<String, Integer, Boolean> {
                 public void run() {
                    String resource =
                             MountPointHelper.isReadOnly(mp)
-                            ? "filesystem_locked_drawable" //$NON-NLS-1$
-                            : "filesystem_unlocked_drawable"; //$NON-NLS-1$
+                            ? FilesystemAsyncTask.this.mIsDialog ?
+                                    "filesystem_dialog_locked_drawable" //$NON-NLS-1$
+                                    : "filesystem_locked_drawable" //$NON-NLS-1$
+                            : FilesystemAsyncTask.this.mIsDialog ?
+                                    "filesystem_dialog_unlocked_drawable" //$NON-NLS-1$
+                                    : "filesystem_unlocked_drawable"; //$NON-NLS-1$
                     Theme theme = ThemeManager.getCurrentTheme(FilesystemAsyncTask.this.mContext);
                     theme.setImageDrawable(
                             FilesystemAsyncTask.this.mContext,
index baef88f..fbe397a 100644 (file)
@@ -52,7 +52,7 @@ public class BreadcrumbView extends RelativeLayout implements Breadcrumb, OnClic
      * @hide
      */
     HorizontalScrollView mScrollView;
-    private ViewGroup mBreadcrumbBar;
+    protected ViewGroup mBreadcrumbBar;
     /**
      * @hide
      */
@@ -65,13 +65,13 @@ public class BreadcrumbView extends RelativeLayout implements Breadcrumb, OnClic
      * @hide
      */
     View mLoading;
-    private FilesystemAsyncTask mFilesystemAsyncTask;
+    protected FilesystemAsyncTask mFilesystemAsyncTask;
 
-    private int mFreeDiskSpaceWarningLevel = 95;
+    protected int mFreeDiskSpaceWarningLevel = 95;
 
     private List<BreadcrumbListener> mBreadcrumbListeners;
 
-    private String mCurrentPath;
+    protected String mCurrentPath;
 
     /**
      * Constructor of <code>BreadcrumbView</code>.
diff --git a/src/com/cyanogenmod/filemanager/ui/widgets/DialogBreadcrumbView.java b/src/com/cyanogenmod/filemanager/ui/widgets/DialogBreadcrumbView.java
new file mode 100644 (file)
index 0000000..1993af6
--- /dev/null
@@ -0,0 +1,83 @@
+package com.cyanogenmod.filemanager.ui.widgets;
+
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+import android.util.AttributeSet;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.ProgressBar;
+import com.cyanogenmod.filemanager.R;
+import com.cyanogenmod.filemanager.model.MountPoint;
+import com.cyanogenmod.filemanager.tasks.FilesystemAsyncTask;
+import com.cyanogenmod.filemanager.ui.ThemeManager;
+import com.cyanogenmod.filemanager.util.MountPointHelper;
+
+public class DialogBreadcrumbView extends BreadcrumbView {
+    public DialogBreadcrumbView(Context context) {
+        super(context);
+    }
+
+    public DialogBreadcrumbView(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    public DialogBreadcrumbView(Context context, AttributeSet attrs, int defStyle) {
+        super(context, attrs, defStyle);
+    }
+
+    @Override
+    public void applyTheme() {
+        ThemeManager.Theme theme = ThemeManager.getCurrentTheme(getContext());
+
+        //- Breadcrumb
+        if (this.mBreadcrumbBar != null) {
+            int cc = this.mBreadcrumbBar.getChildCount();
+            for (int i = 0; i < cc; i++) {
+                // There are 2 types: Breadcrumb items and separators
+                View v = this.mBreadcrumbBar.getChildAt(i);
+                if (v instanceof BreadcrumbItem) {
+                    // Breadcrumb item
+                    theme.setTextColor(
+                            getContext(), (BreadcrumbItem)v, "text_color"); //$NON-NLS-1$
+                } else if (v instanceof ImageView) {
+                    // Divider drawable
+                    theme.setImageDrawable(
+                            getContext(),
+                            (ImageView)v, "breadcrumb_divider_drawable"); //$NON-NLS-1$
+                }
+            }
+        }
+        if (this.mDiskUsageInfo != null) {
+            Drawable dw = theme.getDrawable(getContext(), "horizontal_progress_bar"); //$NON-NLS-1$
+            this.mDiskUsageInfo.setProgressDrawable(dw);
+        }
+        final ImageView fsInfo = (ImageView)findViewById(R.id.ab_filesystem_info);
+        if (fsInfo != null) {
+            MountPoint mp = (MountPoint) fsInfo.getTag();
+            if (mp == null) {
+                theme.setImageDrawable(getContext(), fsInfo, "filesystem_dialog_warning_drawable");
+            } else {
+                String resource =
+                        MountPointHelper.isReadOnly(mp)
+                                ? "filesystem_dialog_locked_drawable"
+                                : "filesystem_dialog_unlocked_drawable";
+                theme.setImageDrawable(getContext(), fsInfo, resource);
+            }
+        }
+    }
+
+    @Override
+    public synchronized void updateMountPointInfo() {
+        //Cancel the current execution (if any) and launch again
+        if (this.mFilesystemAsyncTask != null && this.mFilesystemAsyncTask.isRunning()) {
+            this.mFilesystemAsyncTask.cancel(true);
+        }
+        final ImageView filesystemInfo = (ImageView)findViewById(R.id.ab_filesystem_info);
+        final ProgressBar diskUsageInfo = (ProgressBar)findViewById(R.id.breadcrumb_diskusage);
+        this.mFilesystemAsyncTask =
+                new FilesystemAsyncTask(
+                        getContext(), filesystemInfo,
+                        diskUsageInfo, this.mFreeDiskSpaceWarningLevel, true);
+        this.mFilesystemAsyncTask.execute(this.mCurrentPath);
+    }
+}