From f48301800d58b9bb82a6d41f9573237f183e0b2a Mon Sep 17 00:00:00 2001 From: Karim Abou Zeid Date: Sun, 19 Apr 2015 20:24:51 +0200 Subject: [PATCH] TagEditor now closes the dialog just before the finish() call instead before the scanning process. AlbumDetail activity resets the colors if the new album art set in tag editor is empty or has no vibrant color --- .../ui/activities/AlbumDetailActivity.java | 16 +++++++++++ .../tageditor/AbsTagEditorActivity.java | 28 ++++++++++++++++--- app/src/main/res/values/strings.xml | 1 + 3 files changed, 41 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java index 4f5c5a9b..6f509260 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java @@ -189,6 +189,7 @@ public class AlbumDetailActivity extends AbsFabActivity implements PaletteColorH applyPalette(result); } else { albumArtImageView.setImageResource(R.drawable.default_album_art); + resetColors(); } if (Util.hasLollipopSDK()) startPostponedEnterTransition(); } @@ -210,11 +211,26 @@ public class AlbumDetailActivity extends AbsFabActivity implements PaletteColorH notifyTaskColorChange(toolbarColor); if (Util.hasLollipopSDK() && PreferenceUtils.getInstance(AlbumDetailActivity.this).coloredNavigationBarAlbumEnabled()) getWindow().setNavigationBarColor(toolbarColor); + } else { + resetColors(); } } }); } + @TargetApi(Build.VERSION_CODES.LOLLIPOP) + private void resetColors() { + int titleTextColor = DialogUtils.resolveColor(this, R.attr.title_text_color); + int defaultBarColor = DialogUtils.resolveColor(this, R.attr.default_bar_color); + + toolbarColor = defaultBarColor; + albumTitleView.setBackgroundColor(defaultBarColor); + albumTitleView.setTextColor(titleTextColor); + + if (Util.hasLollipopSDK() && PreferenceUtils.getInstance(this).coloredNavigationBarArtistEnabled()) + getWindow().setNavigationBarColor(DialogUtils.resolveColor(this, R.attr.default_bar_color)); + } + @Override protected boolean overrideTaskColor() { return true; diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/tageditor/AbsTagEditorActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/tageditor/AbsTagEditorActivity.java index c44ad4d4..95194e8d 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/tageditor/AbsTagEditorActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/tageditor/AbsTagEditorActivity.java @@ -3,6 +3,7 @@ package com.kabouzeid.gramophone.ui.activities.tageditor; import android.annotation.TargetApi; import android.app.SearchManager; import android.content.Intent; +import android.content.pm.ActivityInfo; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.media.MediaScannerConnection; @@ -320,11 +321,15 @@ public abstract class AbsTagEditorActivity extends AbsBaseActivity { Util.hideSoftKeyboard(this); final String writingFileStr = getResources().getString(R.string.writing_file_number); final String savingStr = getResources().getString(R.string.saving_changes); + final String rescanningStr = getResources().getString(R.string.rescanning_changed_files); + //TODO dialog currently disappears on orientation change and using DialogFragment causes an exception for some reason final MaterialDialog progressDialog = new MaterialDialog.Builder(AbsTagEditorActivity.this) .title(savingStr) .cancelable(false) .progress(true, 0) .build(); + if (Build.VERSION.SDK_INT >= 18) + setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED); progressDialog.show(); new Thread(new Runnable() { @Override @@ -369,13 +374,24 @@ public abstract class AbsTagEditorActivity extends AbsBaseActivity { Ion.getDefault(AbsTagEditorActivity.this).getBitmapCache().clear(); Ion.getDefault(AbsTagEditorActivity.this).getCache().clear(); } - progressDialog.dismiss(); - rescanMedia(); + runOnUiThread(new Runnable() { + @Override + public void run() { + progressDialog.setContent(rescanningStr); + } + }); + rescanMediaAndQuitOnFinish(new OnScannedAllListener() { + @Override + public void onScannedAll() { + progressDialog.dismiss(); + finish(); + } + }); } }).start(); } - private void rescanMedia() { + private void rescanMediaAndQuitOnFinish(final OnScannedAllListener listener) { String[] toBeScanned = new String[songPaths.size()]; toBeScanned = songPaths.toArray(toBeScanned); final int toBeScannedLength = toBeScanned.length; @@ -390,7 +406,7 @@ public abstract class AbsTagEditorActivity extends AbsBaseActivity { if (i == 0 || i == toBeScannedLength - 1) { App.bus.post(new DataBaseChangedEvent(DataBaseChangedEvent.DATABASE_CHANGED)); if (i == toBeScannedLength - 1) - finish(); + listener.onScannedAll(); } i++; } @@ -505,4 +521,8 @@ public abstract class AbsTagEditorActivity extends AbsBaseActivity { } return null; } + + private interface OnScannedAllListener { + void onScannedAll(); + } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5f38539f..d6a77248 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -126,6 +126,7 @@ Album footers in the grid are colored with the album cover\'s palette. Unable to download the art for this album. Search your library… + Rescanning changed files Download from Last.fm