Cleaned up the settings

This commit is contained in:
Karim Abou Zeid 2015-07-15 17:49:03 +02:00
commit e42867e066
11 changed files with 62 additions and 100 deletions

View file

@ -43,7 +43,6 @@ import com.kabouzeid.gramophone.ui.activities.tageditor.AlbumTagEditorActivity;
import com.kabouzeid.gramophone.util.ColorUtil;
import com.kabouzeid.gramophone.util.MusicUtil;
import com.kabouzeid.gramophone.util.NavigationUtil;
import com.kabouzeid.gramophone.util.PreferenceUtil;
import com.kabouzeid.gramophone.util.Util;
import com.kabouzeid.gramophone.util.ViewUtil;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
@ -103,10 +102,11 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
postponeEnterTransition();
if (PreferenceUtil.getInstance(this).coloredNavigationBarAlbum())
setNavigationBarColor(DialogUtils.resolveColor(this, R.attr.default_bar_color));
}
if (shouldColorNavigationBar())
setNavigationBarColor(DialogUtils.resolveColor(this, R.attr.default_bar_color));
getAlbumFromIntentExtras();
setUpObservableListViewParams();
setUpToolBar();
@ -255,7 +255,7 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements
albumTitleView.setBackgroundColor(vibrantColor);
albumTitleView.setTextColor(ColorUtil.getTextColorForBackground(vibrantColor));
if (PreferenceUtil.getInstance(this).coloredNavigationBarArtist())
if (shouldColorNavigationBar())
setNavigationBarColor(vibrantColor);
notifyTaskColorChange(vibrantColor);

View file

@ -50,7 +50,6 @@ import com.kabouzeid.gramophone.ui.activities.base.AbsSlidingMusicPanelActivity;
import com.kabouzeid.gramophone.util.ColorUtil;
import com.kabouzeid.gramophone.util.MusicUtil;
import com.kabouzeid.gramophone.util.NavigationUtil;
import com.kabouzeid.gramophone.util.PreferenceUtil;
import com.kabouzeid.gramophone.util.Util;
import com.kabouzeid.gramophone.util.ViewUtil;
import com.kabouzeid.gramophone.views.SquareIfPlaceImageView;
@ -120,10 +119,11 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
postponeEnterTransition();
if (PreferenceUtil.getInstance(this).coloredNavigationBarArtist())
setNavigationBarColor(DialogUtils.resolveColor(this, R.attr.default_bar_color));
}
if (shouldColorNavigationBar())
setNavigationBarColor(DialogUtils.resolveColor(this, R.attr.default_bar_color));
lastFMRestClient = new LastFMRestClient(this);
getArtistFromIntentExtras();
@ -379,7 +379,7 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement
artistName.setBackgroundColor(vibrantColor);
artistName.setTextColor(ColorUtil.getTextColorForBackground(vibrantColor));
if (PreferenceUtil.getInstance(this).coloredNavigationBarArtist())
if (shouldColorNavigationBar())
setNavigationBarColor(vibrantColor);
notifyTaskColorChange(vibrantColor);

View file

@ -104,7 +104,7 @@ public class MainActivity extends AbsSlidingMusicPanelActivity
setUpToolbar();
setUpViewPager();
if (PreferenceUtil.getInstance(this).coloredNavigationBarOtherScreens())
if (shouldColorNavigationBar())
setNavigationBarThemeColor();
}

View file

@ -497,7 +497,7 @@ public class MusicControllerActivity extends AbsSlidingMusicPanelActivity {
if (opaqueStatusBar) setStatusBarColor(newColor);
else setStatusBarColor(Color.TRANSPARENT);
if (PreferenceUtil.getInstance(this).coloredNavigationBarCurrentPlaying())
if (shouldColorNavigationBar())
setNavigationBarColor(newColor);
lastFooterColor = newColor;
}

View file

@ -27,7 +27,6 @@ import com.kabouzeid.gramophone.model.smartplaylist.AbsSmartPlaylist;
import com.kabouzeid.gramophone.ui.activities.base.AbsSlidingMusicPanelActivity;
import com.kabouzeid.gramophone.util.NavigationUtil;
import com.kabouzeid.gramophone.util.PlaylistsUtil;
import com.kabouzeid.gramophone.util.PreferenceUtil;
import java.util.ArrayList;
import java.util.List;
@ -67,7 +66,7 @@ public class PlaylistDetailActivity extends AbsSlidingMusicPanelActivity impleme
setUpToolBar();
if (PreferenceUtil.getInstance(this).coloredNavigationBarPlaylist())
if (shouldColorNavigationBar())
setNavigationBarThemeColor();
setStatusBarThemeColor();
}

View file

@ -41,7 +41,7 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia
if (savedInstanceState == null)
getFragmentManager().beginTransaction().replace(R.id.content_frame, new SettingsFragment()).commit();
if (PreferenceUtil.getInstance(this).coloredNavigationBarOtherScreens())
if (shouldColorNavigationBar())
setNavigationBarThemeColor();
setStatusBarThemeColor();
}
@ -123,10 +123,19 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia
}
});
Preference colorNavBar = findPreference("colored_navigation_bar");
Preference colorNavBar = findPreference("should_color_navigation_bar");
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
colorNavBar.setEnabled(false);
colorNavBar.setSummary(R.string.pref_only_lollipop);
} else {
colorNavBar.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
PreferenceUtil.getInstance(getActivity()).setColoredNavigationBar((boolean) newValue);
((SettingsActivity) getActivity()).recreateIfThemeChanged();
return true;
}
});
}
Preference ignoreMediaStoreArtwork = findPreference("ignore_media_store_artwork");

View file

@ -23,6 +23,7 @@ public abstract class AbsThemeActivity extends AppCompatActivity implements KabV
private int colorPrimaryDarker;
private int colorAccent;
private boolean darkTheme;
private boolean coloredNavigationBar;
@Nullable
private ActivityManager.TaskDescription taskDescription;
@ -45,6 +46,7 @@ public abstract class AbsThemeActivity extends AppCompatActivity implements KabV
colorPrimaryDarker = ColorUtil.shiftColorDown(colorPrimary);
colorAccent = PreferenceUtil.getInstance(this).getThemeColorAccent(this);
darkTheme = PreferenceUtil.getInstance(this).getGeneralTheme() == R.style.Theme_MaterialMusic;
coloredNavigationBar = PreferenceUtil.getInstance(this).shouldUseColoredNavigationBar();
ThemeSingleton.get().positiveColor = colorAccent;
ThemeSingleton.get().negativeColor = colorAccent;
@ -64,7 +66,8 @@ public abstract class AbsThemeActivity extends AppCompatActivity implements KabV
}
private boolean didThemeChanged() {
return colorPrimary != PreferenceUtil.getInstance(this).getThemeColorPrimary(this) ||
return coloredNavigationBar != PreferenceUtil.getInstance(this).shouldUseColoredNavigationBar() ||
colorPrimary != PreferenceUtil.getInstance(this).getThemeColorPrimary(this) ||
colorAccent != PreferenceUtil.getInstance(this).getThemeColorAccent(this) ||
darkTheme != (PreferenceUtil.getInstance(this).getGeneralTheme() == R.style.Theme_MaterialMusic);
}
@ -94,6 +97,10 @@ public abstract class AbsThemeActivity extends AppCompatActivity implements KabV
return colorAccent;
}
public boolean shouldColorNavigationBar() {
return coloredNavigationBar;
}
protected void setStatusBarTransparent() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
Util.setAllowDrawUnderStatusBar(getWindow());

View file

@ -29,7 +29,6 @@ import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.misc.SmallObservableScrollViewCallbacks;
import com.kabouzeid.gramophone.ui.activities.base.AbsBaseActivity;
import com.kabouzeid.gramophone.util.MusicUtil;
import com.kabouzeid.gramophone.util.PreferenceUtil;
import com.kabouzeid.gramophone.util.Util;
import com.kabouzeid.gramophone.util.ViewUtil;
import com.nostra13.universalimageloader.core.ImageLoader;
@ -203,7 +202,7 @@ public abstract class AbsTagEditorActivity extends AbsBaseActivity {
paletteColorPrimary = getThemeColorPrimary();
observableScrollViewCallbacks.onScrollChanged(observableScrollView.getCurrentScrollY(), false, false);
setStatusBarColor(paletteColorPrimary);
if (PreferenceUtil.getInstance(this).coloredNavigationBarTagEditor())
if (shouldColorNavigationBar())
setNavigationBarColor(paletteColorPrimary);
header.setBackgroundColor(paletteColorPrimary);
notifyTaskColorChange(paletteColorPrimary);
@ -256,9 +255,9 @@ public abstract class AbsTagEditorActivity extends AbsBaseActivity {
toolbar.setBackgroundColor(paletteColorPrimary);
header.setBackgroundColor(paletteColorPrimary);
setStatusBarColor(paletteColorPrimary);
if (PreferenceUtil.getInstance(this).coloredNavigationBarTagEditor())
if (shouldColorNavigationBar())
setNavigationBarColor(paletteColorPrimary);
setStatusBarColor(paletteColorPrimary);
}
protected void dataChanged() {
@ -299,9 +298,9 @@ public abstract class AbsTagEditorActivity extends AbsBaseActivity {
if (vibrantSwatch != null) {
paletteColorPrimary = palette.getVibrantColor(DialogUtils.resolveColor(AbsTagEditorActivity.this, R.attr.default_bar_color));
observableScrollViewCallbacks.onScrollChanged(observableScrollView.getCurrentScrollY(), false, false);
setStatusBarColor(paletteColorPrimary);
if (PreferenceUtil.getInstance(AbsTagEditorActivity.this).coloredNavigationBarTagEditor())
if (shouldColorNavigationBar())
setNavigationBarColor(paletteColorPrimary);
setStatusBarColor(paletteColorPrimary);
header.setBackgroundColor(paletteColorPrimary);
notifyTaskColorChange(paletteColorPrimary);
} else {

View file

@ -10,9 +10,6 @@ import android.support.annotation.Nullable;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.helper.SortOrder;
import java.util.HashSet;
import java.util.Set;
public final class PreferenceUtil {
public static final String GENERAL_THEME = "general_theme";
public static final String DEFAULT_START_PAGE = "default_start_page";
@ -25,13 +22,8 @@ public final class PreferenceUtil {
public static final String ALBUM_SONG_SORT_ORDER = "album_song_sort_order";
public static final String SONG_SORT_ORDER = "song_sort_order";
public static final String COLORED_NAVIGATION_BAR = "colored_navigation_bar";
public static final String COLORED_NAVIGATION_BAR_ALBUM = "colored_navigation_bar_album";
public static final String COLORED_NAVIGATION_BAR_ARTIST = "colored_navigation_bar_artist";
public static final String COLORED_NAVIGATION_BAR_CURRENT_PLAYING = "colored_navigation_bar_current_playing";
public static final String COLORED_NAVIGATION_BAR_PLAYLIST = "colored_navigation_bar_playlist";
public static final String COLORED_NAVIGATION_BAR_TAG_EDITOR = "colored_navigation_bar_tag_editor";
public static final String COLORED_NAVIGATION_BAR_OTHER_SCREENS = "colored_navigation_bar_other_screens";
// don't use "colored_navigation_bar" key here as this causes a class cast exception for users upgrading from older versions
public static final String COLORED_NAVIGATION_BAR = "should_color_navigation_bar";
public static final String ALBUM_LAYOUT_MODE = "album_layout_mode";
public static final String ALBUM_COLORED_FOOTERS = "album_colored_footers";
@ -127,6 +119,17 @@ public final class PreferenceUtil {
mPreferences.edit().putInt("accent_color", color).commit();
}
public final boolean shouldUseColoredNavigationBar() {
return mPreferences.getBoolean(COLORED_NAVIGATION_BAR, true);
}
@SuppressLint("CommitPrefEdits")
public void setColoredNavigationBar(boolean coloredNavigationBar) {
final SharedPreferences.Editor editor = mPreferences.edit();
editor.putBoolean(COLORED_NAVIGATION_BAR, coloredNavigationBar);
editor.commit();
}
public final int getDefaultStartPage() {
return Integer.parseInt(mPreferences.getString(DEFAULT_START_PAGE, "-1"));
}
@ -144,52 +147,7 @@ public final class PreferenceUtil {
}
public final boolean coloredNotification() {
return mPreferences.getBoolean(COLORED_NOTIFICATION, false);
}
public final boolean coloredNavigationBarAlbum() {
return coloredNavigationBarFor(COLORED_NAVIGATION_BAR_ALBUM);
}
public final boolean coloredNavigationBarArtist() {
return coloredNavigationBarFor(COLORED_NAVIGATION_BAR_ARTIST);
}
public final boolean coloredNavigationBarCurrentPlaying() {
return coloredNavigationBarFor(COLORED_NAVIGATION_BAR_CURRENT_PLAYING);
}
public final boolean coloredNavigationBarPlaylist() {
return coloredNavigationBarFor(COLORED_NAVIGATION_BAR_PLAYLIST);
}
public final boolean coloredNavigationBarTagEditor() {
return coloredNavigationBarFor(COLORED_NAVIGATION_BAR_TAG_EDITOR);
}
public final boolean coloredNavigationBarOtherScreens() {
return coloredNavigationBarFor(COLORED_NAVIGATION_BAR_OTHER_SCREENS);
}
@SuppressLint("CommitPrefEdits")
private boolean coloredNavigationBarFor(String key) {
final Set<String> defaultVals = new HashSet<>();
defaultVals.add(COLORED_NAVIGATION_BAR_ALBUM);
defaultVals.add(COLORED_NAVIGATION_BAR_ARTIST);
defaultVals.add(COLORED_NAVIGATION_BAR_CURRENT_PLAYING);
defaultVals.add(COLORED_NAVIGATION_BAR_PLAYLIST);
defaultVals.add(COLORED_NAVIGATION_BAR_TAG_EDITOR);
defaultVals.add(COLORED_NAVIGATION_BAR_OTHER_SCREENS);
if (!mPreferences.contains(COLORED_NAVIGATION_BAR))
mPreferences.edit().putStringSet(COLORED_NAVIGATION_BAR, defaultVals).commit();
try {
//noinspection ConstantConditions
return mPreferences.getStringSet(COLORED_NAVIGATION_BAR, defaultVals).contains(key);
} catch (NullPointerException e) {
return false;
}
return mPreferences.getBoolean(COLORED_NOTIFICATION, true);
}
public final boolean opaqueStatusbarNowPlaying() {

View file

@ -106,7 +106,7 @@
<string name="pref_header_general">General</string>
<string name="pref_header_images">Images</string>
<string name="pref_header_lockscreen">Lockscreen</string>
<string name="pref_summary_colored_navigation_bar">In which views the navigation bar should be colored.</string>
<string name="pref_summary_colored_navigation_bar">Colors the navigation bar in the primary color.</string>
<string name="pref_title_navigation_bar">Colored Navigation Bar</string>
<string name="pref_title_set_default_start_page">Start Page</string>
<string name="pref_title_colored_navigation_bar_artists">Artist View</string>
@ -115,7 +115,6 @@
<string name="pref_title_colored_navigation_bar_playlists">Playlist View</string>
<string name="pref_title_colored_navigation_bar_tag_editor">Tag Editor</string>
<string name="pref_title_colored_navigation_bar_other_screens">Everywhere Else</string>
<string name="pref_title_colored_album_footers">Colored Album Footers</string>
<string name="pref_title_album_art_on_lockscreen">Album Art on Lockscreen</string>
<string name="pref_title_colored_notification">Colored Notification</string>
<string name="pref_title_ignore_media_store_artwork">Ignore Media Store artwork</string>
@ -152,7 +151,6 @@
<string name="playlist_name_empty">Playlist name</string>
<string name="song">Song</string>
<string name="pref_only_lollipop">"Only available on Lollipop."</string>
<string name="pref_summary_colored_album_footers">"Album footers in the grid are colored with the album cover\'s vibrant color."</string>
<string name="pref_summary_album_art_on_lockscreen">The album art is shown on the lockscreen. You might have to restart Phonograph in order for changes to take affect.</string>
<string name="pref_summary_colored_notification">"The notification is colored with the album cover\'s vibrant color."</string>
<string name="pref_summary_gapless_playback">"Eliminates the gap between two songs. This can cause playback issues on some devices."</string>

View file

@ -3,48 +3,40 @@
<com.kabouzeid.gramophone.prefs.DynamicPreferenceCategory android:title="@string/pref_header_colors">
<com.afollestad.materialdialogs.prefs.MaterialListPreference
android:layout="@layout/preference_custom"
android:defaultValue="0"
android:entries="@array/pref_general_theme_list_titles"
android:entryValues="@array/pref_general_theme_list_values"
android:key="general_theme"
android:layout="@layout/preference_custom"
android:negativeButtonText="@null"
android:positiveButtonText="@null"
android:title="@string/pref_title_general_theme" />
<com.kabouzeid.gramophone.prefs.ColorChooserPreference
android:key="primary_color"
android:title="@string/primary_color"
android:summary="@string/primary_color_desc" />
android:summary="@string/primary_color_desc"
android:title="@string/primary_color" />
<com.kabouzeid.gramophone.prefs.ColorChooserPreference
android:key="accent_color"
android:title="@string/accent_color"
android:summary="@string/accent_color_desc" />
android:summary="@string/accent_color_desc"
android:title="@string/accent_color" />
<CheckBoxPreference
android:layout="@layout/preference_custom"
android:defaultValue="true"
android:key="colored_album_footers"
android:title="@string/pref_title_colored_album_footers"
android:summary="@string/pref_summary_colored_album_footers"
android:key="colored_notification"
android:layout="@layout/preference_custom"
android:summary="@string/pref_summary_colored_notification"
android:title="@string/pref_title_colored_notification"
android:widgetLayout="@layout/preference_dynamic_checkbox" />
<CheckBoxPreference
android:defaultValue="true"
android:key="should_color_navigation_bar"
android:layout="@layout/preference_custom"
android:defaultValue="false"
android:key="colored_notification"
android:title="@string/pref_title_colored_notification"
android:summary="@string/pref_summary_colored_notification"
android:widgetLayout="@layout/preference_dynamic_checkbox" />
<com.afollestad.materialdialogs.prefs.MaterialMultiSelectListPreference
android:layout="@layout/preference_custom"
android:key="colored_navigation_bar"
android:entries="@array/pref_navigation_bar_color_titles"
android:entryValues="@array/pref_navigation_bar_color_values"
android:summary="@string/pref_summary_colored_navigation_bar"
android:title="@string/pref_title_navigation_bar"
android:summary="@string/pref_summary_colored_navigation_bar" />
android:widgetLayout="@layout/preference_dynamic_checkbox" />
</com.kabouzeid.gramophone.prefs.DynamicPreferenceCategory>