diff options
17 files changed, 125 insertions, 8 deletions
diff --git a/res/drawable-hdpi/ic_material_dialog_fs_locked.png b/res/drawable-hdpi/ic_material_dialog_fs_locked.png Binary files differnew file mode 100644 index 00000000..b61917a0 --- /dev/null +++ b/res/drawable-hdpi/ic_material_dialog_fs_locked.png diff --git a/res/drawable-hdpi/ic_material_dialog_fs_unlocked.png b/res/drawable-hdpi/ic_material_dialog_fs_unlocked.png Binary files differnew file mode 100644 index 00000000..bab5401f --- /dev/null +++ b/res/drawable-hdpi/ic_material_dialog_fs_unlocked.png diff --git a/res/drawable-hdpi/ic_material_dialog_fs_warning.png b/res/drawable-hdpi/ic_material_dialog_fs_warning.png Binary files differnew file mode 100644 index 00000000..929ab5eb --- /dev/null +++ b/res/drawable-hdpi/ic_material_dialog_fs_warning.png diff --git a/res/drawable-mdpi/ic_material_dialog_fs_locked.png b/res/drawable-mdpi/ic_material_dialog_fs_locked.png Binary files differnew file mode 100644 index 00000000..21b679c7 --- /dev/null +++ b/res/drawable-mdpi/ic_material_dialog_fs_locked.png diff --git a/res/drawable-mdpi/ic_material_dialog_fs_unlocked.png b/res/drawable-mdpi/ic_material_dialog_fs_unlocked.png Binary files differnew file mode 100644 index 00000000..e7ff986e --- /dev/null +++ b/res/drawable-mdpi/ic_material_dialog_fs_unlocked.png diff --git a/res/drawable-mdpi/ic_material_dialog_fs_warning.png b/res/drawable-mdpi/ic_material_dialog_fs_warning.png Binary files differnew file mode 100644 index 00000000..b787fabd --- /dev/null +++ b/res/drawable-mdpi/ic_material_dialog_fs_warning.png diff --git a/res/drawable-xhdpi/ic_material_dialog_fs_locked.png b/res/drawable-xhdpi/ic_material_dialog_fs_locked.png Binary files differnew file mode 100644 index 00000000..112a25cf --- /dev/null +++ b/res/drawable-xhdpi/ic_material_dialog_fs_locked.png diff --git a/res/drawable-xhdpi/ic_material_dialog_fs_unlocked.png b/res/drawable-xhdpi/ic_material_dialog_fs_unlocked.png Binary files differnew file mode 100644 index 00000000..7684ff8a --- /dev/null +++ b/res/drawable-xhdpi/ic_material_dialog_fs_unlocked.png diff --git a/res/drawable-xhdpi/ic_material_dialog_fs_warning.png b/res/drawable-xhdpi/ic_material_dialog_fs_warning.png Binary files differnew file mode 100644 index 00000000..3d9ebc71 --- /dev/null +++ b/res/drawable-xhdpi/ic_material_dialog_fs_warning.png diff --git a/res/drawable-xxhdpi/ic_material_dialog_fs_locked.png b/res/drawable-xxhdpi/ic_material_dialog_fs_locked.png Binary files differnew file mode 100644 index 00000000..7948955f --- /dev/null +++ b/res/drawable-xxhdpi/ic_material_dialog_fs_locked.png diff --git a/res/drawable-xxhdpi/ic_material_dialog_fs_unlocked.png b/res/drawable-xxhdpi/ic_material_dialog_fs_unlocked.png Binary files differnew file mode 100644 index 00000000..78c2bdb7 --- /dev/null +++ b/res/drawable-xxhdpi/ic_material_dialog_fs_unlocked.png diff --git a/res/drawable-xxhdpi/ic_material_dialog_fs_warning.png b/res/drawable-xxhdpi/ic_material_dialog_fs_warning.png Binary files differnew file mode 100644 index 00000000..4f8f354c --- /dev/null +++ b/res/drawable-xxhdpi/ic_material_dialog_fs_warning.png diff --git a/res/layout/picker.xml b/res/layout/picker.xml index 8baa52e0..3e6d56c5 100644 --- a/res/layout/picker.xml +++ b/res/layout/picker.xml @@ -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" diff --git a/res/values/theme.xml b/res/values/theme.xml index 826d2d22..9ebf67e4 100644 --- a/res/values/theme.xml +++ b/res/values/theme.xml @@ -108,6 +108,12 @@ <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> diff --git a/src/com/cyanogenmod/filemanager/tasks/FilesystemAsyncTask.java b/src/com/cyanogenmod/filemanager/tasks/FilesystemAsyncTask.java index dceeed5f..1f457d3d 100644 --- a/src/com/cyanogenmod/filemanager/tasks/FilesystemAsyncTask.java +++ b/src/com/cyanogenmod/filemanager/tasks/FilesystemAsyncTask.java @@ -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, diff --git a/src/com/cyanogenmod/filemanager/ui/widgets/BreadcrumbView.java b/src/com/cyanogenmod/filemanager/ui/widgets/BreadcrumbView.java index baef88f6..fbe397ab 100644 --- a/src/com/cyanogenmod/filemanager/ui/widgets/BreadcrumbView.java +++ b/src/com/cyanogenmod/filemanager/ui/widgets/BreadcrumbView.java @@ -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 index 00000000..1993af64 --- /dev/null +++ b/src/com/cyanogenmod/filemanager/ui/widgets/DialogBreadcrumbView.java @@ -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); + } +} |