Added colored notification (as an option). Relabeled some vars.

This commit is contained in:
Karim Abou Zeid 2015-06-15 23:37:13 +02:00
commit 554bc25f83
15 changed files with 55 additions and 41 deletions

View file

@ -187,7 +187,7 @@ public class AlbumAdapter extends AbsMultiSelectAdapter<AlbumAdapter.ViewHolder,
public AlbumAdapter(AppCompatActivity activity, @Nullable CabHolder cabHolder) { public AlbumAdapter(AppCompatActivity activity, @Nullable CabHolder cabHolder) {
super(activity, cabHolder, R.menu.menu_media_selection); super(activity, cabHolder, R.menu.menu_media_selection);
this.activity = activity; this.activity = activity;
usePalette = PreferenceUtils.getInstance(activity).coloredAlbumFootersEnabled(); usePalette = PreferenceUtils.getInstance(activity).coloredAlbumFooters();
loadDataSet(); loadDataSet();
} }

View file

@ -12,14 +12,17 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.BitmapFactory; import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.support.v4.media.session.MediaSessionCompat; import android.support.v4.media.session.MediaSessionCompat;
import android.support.v7.app.NotificationCompat; import android.support.v7.app.NotificationCompat;
import android.support.v7.graphics.Palette;
import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.model.Song; import com.kabouzeid.gramophone.model.Song;
import com.kabouzeid.gramophone.service.MusicService; import com.kabouzeid.gramophone.service.MusicService;
import com.kabouzeid.gramophone.ui.activities.MusicControllerActivity; import com.kabouzeid.gramophone.ui.activities.MusicControllerActivity;
import com.kabouzeid.gramophone.util.MusicUtil; import com.kabouzeid.gramophone.util.MusicUtil;
import com.kabouzeid.gramophone.util.PreferenceUtils;
import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoader;
public class PlayingNotificationHelper { public class PlayingNotificationHelper {
@ -39,6 +42,9 @@ public class PlayingNotificationHelper {
if (albumArt == null) { if (albumArt == null) {
albumArt = BitmapFactory.decodeResource(context.getResources(), R.drawable.default_album_art); albumArt = BitmapFactory.decodeResource(context.getResources(), R.drawable.default_album_art);
} }
int notificationColor = PreferenceUtils.getInstance(context).coloredNotification() ?
Palette.from(albumArt).generate().getVibrantColor(Color.TRANSPARENT) :
Color.TRANSPARENT;
return new NotificationCompat.Builder(context) return new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.ic_notification) .setSmallIcon(R.drawable.ic_notification)
@ -65,6 +71,7 @@ public class PlayingNotificationHelper {
retrievePlaybackAction(context, 1)) retrievePlaybackAction(context, 1))
.setOnlyAlertOnce(true) .setOnlyAlertOnce(true)
.setColor(notificationColor)
.build(); .build();
} }
@ -100,22 +107,4 @@ public class PlayingNotificationHelper {
} }
return null; return null;
} }
// private void loadAlbumArt() {
// currentAlbumArtUri = MusicUtil.getAlbumArtUri(currentSong.albumId).toString();
// ImageLoader.getInstance().displayImage(currentAlbumArtUri, new NonViewAware(new ImageSize(-1, -1), ViewScaleType.CROP), new SimpleImageLoadingListener() {
// @Override
// public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
// if (currentAlbumArtUri.equals(imageUri))
// // copy() prevents the original bitmap in the memory cache from being recycled by the remote views
// setAlbumArt(loadedImage.copy(loadedImage.getConfig(), true));
// }
//
// @Override
// public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
// if (currentAlbumArtUri.equals(imageUri))
// setAlbumArt(null);
// }
// });
// }
} }

View file

@ -118,7 +118,7 @@ public class AlbumDetailActivity extends AbsFabActivity implements PaletteColorH
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
postponeEnterTransition(); postponeEnterTransition();
if (PreferenceUtils.getInstance(this).coloredNavigationBarAlbumEnabled()) if (PreferenceUtils.getInstance(this).coloredNavigationBarAlbum())
setNavigationBarColor(DialogUtils.resolveColor(this, R.attr.default_bar_color)); setNavigationBarColor(DialogUtils.resolveColor(this, R.attr.default_bar_color));
} }
@ -236,7 +236,7 @@ public class AlbumDetailActivity extends AbsFabActivity implements PaletteColorH
toolbarColor = vibrantSwatch.getRgb(); toolbarColor = vibrantSwatch.getRgb();
albumTitleView.setBackgroundColor(toolbarColor); albumTitleView.setBackgroundColor(toolbarColor);
albumTitleView.setTextColor(Util.getOpaqueColor(vibrantSwatch.getTitleTextColor())); albumTitleView.setTextColor(Util.getOpaqueColor(vibrantSwatch.getTitleTextColor()));
if (Util.isAtLeastLollipop() && PreferenceUtils.getInstance(AlbumDetailActivity.this).coloredNavigationBarAlbumEnabled()) if (Util.isAtLeastLollipop() && PreferenceUtils.getInstance(AlbumDetailActivity.this).coloredNavigationBarAlbum())
setNavigationBarColor(toolbarColor); setNavigationBarColor(toolbarColor);
notifyTaskColorChange(toolbarColor); notifyTaskColorChange(toolbarColor);
} else { } else {
@ -258,7 +258,7 @@ public class AlbumDetailActivity extends AbsFabActivity implements PaletteColorH
albumTitleView.setBackgroundColor(defaultBarColor); albumTitleView.setBackgroundColor(defaultBarColor);
albumTitleView.setTextColor(titleTextColor); albumTitleView.setTextColor(titleTextColor);
if (Util.isAtLeastLollipop() && PreferenceUtils.getInstance(this).coloredNavigationBarArtistEnabled()) if (Util.isAtLeastLollipop() && PreferenceUtils.getInstance(this).coloredNavigationBarArtist())
setNavigationBarColor(DialogUtils.resolveColor(this, R.attr.default_bar_color)); setNavigationBarColor(DialogUtils.resolveColor(this, R.attr.default_bar_color));
notifyTaskColorChange(toolbarColor); notifyTaskColorChange(toolbarColor);

View file

@ -132,7 +132,7 @@ public class ArtistDetailActivity extends AbsFabActivity implements PaletteColor
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
postponeEnterTransition(); postponeEnterTransition();
if (PreferenceUtils.getInstance(this).coloredNavigationBarArtistEnabled()) if (PreferenceUtils.getInstance(this).coloredNavigationBarArtist())
setNavigationBarColor(DialogUtils.resolveColor(this, R.attr.default_bar_color)); setNavigationBarColor(DialogUtils.resolveColor(this, R.attr.default_bar_color));
} }
@ -317,7 +317,7 @@ public class ArtistDetailActivity extends AbsFabActivity implements PaletteColor
toolbarColor = vibrantSwatch.getRgb(); toolbarColor = vibrantSwatch.getRgb();
artistNameTv.setBackgroundColor(vibrantSwatch.getRgb()); artistNameTv.setBackgroundColor(vibrantSwatch.getRgb());
artistNameTv.setTextColor(Util.getOpaqueColor(vibrantSwatch.getTitleTextColor())); artistNameTv.setTextColor(Util.getOpaqueColor(vibrantSwatch.getTitleTextColor()));
if (Util.isAtLeastLollipop() && PreferenceUtils.getInstance(ArtistDetailActivity.this).coloredNavigationBarArtistEnabled()) if (Util.isAtLeastLollipop() && PreferenceUtils.getInstance(ArtistDetailActivity.this).coloredNavigationBarArtist())
setNavigationBarColor(vibrantSwatch.getRgb()); setNavigationBarColor(vibrantSwatch.getRgb());
notifyTaskColorChange(toolbarColor); notifyTaskColorChange(toolbarColor);
} else { } else {
@ -356,7 +356,7 @@ public class ArtistDetailActivity extends AbsFabActivity implements PaletteColor
artistNameTv.setBackgroundColor(defaultBarColor); artistNameTv.setBackgroundColor(defaultBarColor);
artistNameTv.setTextColor(titleTextColor); artistNameTv.setTextColor(titleTextColor);
if (Util.isAtLeastLollipop() && PreferenceUtils.getInstance(this).coloredNavigationBarArtistEnabled()) if (Util.isAtLeastLollipop() && PreferenceUtils.getInstance(this).coloredNavigationBarArtist())
setNavigationBarColor(DialogUtils.resolveColor(this, R.attr.default_bar_color)); setNavigationBarColor(DialogUtils.resolveColor(this, R.attr.default_bar_color));
notifyTaskColorChange(toolbarColor); notifyTaskColorChange(toolbarColor);

View file

@ -88,7 +88,7 @@ public class MainActivity extends AbsFabActivity
setUpToolbar(); setUpToolbar();
setUpViewPager(); setUpViewPager();
if (PreferenceUtils.getInstance(this).coloredNavigationBarOtherScreensEnabled()) if (PreferenceUtils.getInstance(this).coloredNavigationBarOtherScreens())
setNavigationBarThemeColor(); setNavigationBarThemeColor();
handlePlaybackIntent(getIntent()); handlePlaybackIntent(getIntent());

View file

@ -417,7 +417,7 @@ public class MusicControllerActivity extends AbsFabActivity {
if (opaqueStatusBar) setStatusBarColor(newColor); if (opaqueStatusBar) setStatusBarColor(newColor);
else setStatusBarColor(Color.TRANSPARENT); else setStatusBarColor(Color.TRANSPARENT);
if (Util.isAtLeastLollipop() && PreferenceUtils.getInstance(this).coloredNavigationBarCurrentPlayingEnabled()) if (Util.isAtLeastLollipop() && PreferenceUtils.getInstance(this).coloredNavigationBarCurrentPlaying())
setNavigationBarColor(newColor); setNavigationBarColor(newColor);
lastFooterColor = newColor; lastFooterColor = newColor;
} }

View file

@ -77,7 +77,7 @@ public class PlaylistDetailActivity extends AbsFabActivity implements CabHolder
getSupportActionBar().setTitle(playlist.name); getSupportActionBar().setTitle(playlist.name);
getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true);
if (PreferenceUtils.getInstance(this).coloredNavigationBarPlaylistEnabled()) if (PreferenceUtils.getInstance(this).coloredNavigationBarPlaylist())
setNavigationBarThemeColor(); setNavigationBarThemeColor();
setStatusBarThemeColor(); setStatusBarThemeColor();

View file

@ -41,7 +41,7 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia
if (savedInstanceState == null) if (savedInstanceState == null)
getFragmentManager().beginTransaction().replace(R.id.content_frame, new SettingsFragment()).commit(); getFragmentManager().beginTransaction().replace(R.id.content_frame, new SettingsFragment()).commit();
if (PreferenceUtils.getInstance(this).coloredNavigationBarOtherScreensEnabled()) if (PreferenceUtils.getInstance(this).coloredNavigationBarOtherScreens())
setNavigationBarThemeColor(); setNavigationBarThemeColor();
setStatusBarThemeColor(); setStatusBarThemeColor();
} }
@ -136,6 +136,13 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia
}); });
} }
Preference coloredNotification = findPreference("colored_notification");
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
coloredNotification.setEnabled(false);
coloredNotification.setWidgetLayoutResource(0);
coloredNotification.setSummary(R.string.pref_only_lollipop);
}
equalizer = findPreference("equalizer"); equalizer = findPreference("equalizer");
resolveEqualizer(); resolveEqualizer();
equalizer.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { equalizer.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {

View file

@ -193,7 +193,7 @@ public abstract class AbsTagEditorActivity extends AbsBaseActivity {
paletteColorPrimary = primaryColor; paletteColorPrimary = primaryColor;
observableScrollViewCallbacks.onScrollChanged(scrollView.getCurrentScrollY(), false, false); observableScrollViewCallbacks.onScrollChanged(scrollView.getCurrentScrollY(), false, false);
setStatusBarColor(paletteColorPrimary); setStatusBarColor(paletteColorPrimary);
if (Util.isAtLeastLollipop() && PreferenceUtils.getInstance(this).coloredNavigationBarTagEditorEnabled()) if (Util.isAtLeastLollipop() && PreferenceUtils.getInstance(this).coloredNavigationBarTagEditor())
setNavigationBarColor(paletteColorPrimary); setNavigationBarColor(paletteColorPrimary);
header.setBackgroundColor(paletteColorPrimary); header.setBackgroundColor(paletteColorPrimary);
notifyTaskColorChange(paletteColorPrimary); notifyTaskColorChange(paletteColorPrimary);
@ -246,7 +246,7 @@ public abstract class AbsTagEditorActivity extends AbsBaseActivity {
header.setBackgroundColor(paletteColorPrimary); header.setBackgroundColor(paletteColorPrimary);
setStatusBarColor(paletteColorPrimary); setStatusBarColor(paletteColorPrimary);
if (PreferenceUtils.getInstance(this).coloredNavigationBarTagEditorEnabled()) if (PreferenceUtils.getInstance(this).coloredNavigationBarTagEditor())
setNavigationBarColor(paletteColorPrimary); setNavigationBarColor(paletteColorPrimary);
} }
@ -289,7 +289,7 @@ public abstract class AbsTagEditorActivity extends AbsBaseActivity {
paletteColorPrimary = vibrantColor; paletteColorPrimary = vibrantColor;
observableScrollViewCallbacks.onScrollChanged(scrollView.getCurrentScrollY(), false, false); observableScrollViewCallbacks.onScrollChanged(scrollView.getCurrentScrollY(), false, false);
setStatusBarColor(paletteColorPrimary); setStatusBarColor(paletteColorPrimary);
if (Util.isAtLeastLollipop() && PreferenceUtils.getInstance(AbsTagEditorActivity.this).coloredNavigationBarTagEditorEnabled()) if (Util.isAtLeastLollipop() && PreferenceUtils.getInstance(AbsTagEditorActivity.this).coloredNavigationBarTagEditor())
setNavigationBarColor(paletteColorPrimary); setNavigationBarColor(paletteColorPrimary);
header.setBackgroundColor(paletteColorPrimary); header.setBackgroundColor(paletteColorPrimary);
notifyTaskColorChange(paletteColorPrimary); notifyTaskColorChange(paletteColorPrimary);

View file

@ -41,6 +41,7 @@ public final class PreferenceUtils {
public static final String ALTERNATIVE_PROGRESS_SLIDER_NOW_PLAYING = "alternative_progress_slider_now_playing"; public static final String ALTERNATIVE_PROGRESS_SLIDER_NOW_PLAYING = "alternative_progress_slider_now_playing";
public static final String PLAYBACK_CONTROLLER_CARD_NOW_PLAYING = "playback_controller_card_now_playing"; public static final String PLAYBACK_CONTROLLER_CARD_NOW_PLAYING = "playback_controller_card_now_playing";
public static final String FADE_PLAY_PAUSE = "fade_play_pause"; public static final String FADE_PLAY_PAUSE = "fade_play_pause";
public static final String COLORED_NOTIFICATION = "colored_notification";
private static PreferenceUtils sInstance; private static PreferenceUtils sInstance;
@ -110,31 +111,35 @@ public final class PreferenceUtils {
// return mPreferences.getBoolean(ONLY_ON_WIFI, false); // return mPreferences.getBoolean(ONLY_ON_WIFI, false);
// } // }
public final boolean coloredAlbumFootersEnabled() { public final boolean coloredAlbumFooters() {
return mPreferences.getBoolean(COLORED_ALBUM_FOOTERS, true); return mPreferences.getBoolean(COLORED_ALBUM_FOOTERS, true);
} }
public final boolean coloredNavigationBarAlbumEnabled() { public final boolean coloredNotification() {
return mPreferences.getBoolean(COLORED_NOTIFICATION, true);
}
public final boolean coloredNavigationBarAlbum() {
return coloredNavigationBarFor(COLORED_NAVIGATION_BAR_ALBUM); return coloredNavigationBarFor(COLORED_NAVIGATION_BAR_ALBUM);
} }
public final boolean coloredNavigationBarArtistEnabled() { public final boolean coloredNavigationBarArtist() {
return coloredNavigationBarFor(COLORED_NAVIGATION_BAR_ARTIST); return coloredNavigationBarFor(COLORED_NAVIGATION_BAR_ARTIST);
} }
public final boolean coloredNavigationBarCurrentPlayingEnabled() { public final boolean coloredNavigationBarCurrentPlaying() {
return coloredNavigationBarFor(COLORED_NAVIGATION_BAR_CURRENT_PLAYING); return coloredNavigationBarFor(COLORED_NAVIGATION_BAR_CURRENT_PLAYING);
} }
public final boolean coloredNavigationBarPlaylistEnabled() { public final boolean coloredNavigationBarPlaylist() {
return coloredNavigationBarFor(COLORED_NAVIGATION_BAR_PLAYIST); return coloredNavigationBarFor(COLORED_NAVIGATION_BAR_PLAYIST);
} }
public final boolean coloredNavigationBarTagEditorEnabled() { public final boolean coloredNavigationBarTagEditor() {
return coloredNavigationBarFor(COLORED_NAVIGATION_BAR_TAG_EDITOR); return coloredNavigationBarFor(COLORED_NAVIGATION_BAR_TAG_EDITOR);
} }
public final boolean coloredNavigationBarOtherScreensEnabled() { public final boolean coloredNavigationBarOtherScreens() {
return coloredNavigationBarFor(COLORED_NAVIGATION_BAR_OTHER_SCREENS); return coloredNavigationBarFor(COLORED_NAVIGATION_BAR_OTHER_SCREENS);
} }

View file

@ -1,7 +1,6 @@
package com.kabouzeid.gramophone.views; package com.kabouzeid.gramophone.views;
import android.content.Context; import android.content.Context;
import android.support.v7.widget.AppCompatCheckBox; import android.support.v7.widget.AppCompatCheckBox;
import android.util.AttributeSet; import android.util.AttributeSet;

View file

@ -107,6 +107,7 @@
<string name="pref_title_colored_navigation_bar_tag_editor">Tag editor</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_navigation_bar_other_screens">Everywhere else</string>
<string name="pref_title_colored_album_footers">Colored album footers</string> <string name="pref_title_colored_album_footers">Colored album footers</string>
<string name="pref_title_colored_notification">Colored notification</string>
<string name="pref_title_fade_play_pause">Fade play/pause</string> <string name="pref_title_fade_play_pause">Fade play/pause</string>
<string name="pref_title_force_square_album_art">Force square album art</string> <string name="pref_title_force_square_album_art">Force square album art</string>
<string name="pref_title_opaque_toolbar_now_playing">Opaque toolbar</string> <string name="pref_title_opaque_toolbar_now_playing">Opaque toolbar</string>
@ -139,7 +140,8 @@
<string name="playlist_name">Playlist name</string> <string name="playlist_name">Playlist name</string>
<string name="song">Song</string> <string name="song">Song</string>
<string name="pref_only_lollipop">"Only available on Lollipop."</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 palette."</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_colored_notification">"The notification is colored with the album cover\'s vibrant color."</string>
<string name="pref_summary_fade_play_pause">"Fades the song in/out on play/pause."</string> <string name="pref_summary_fade_play_pause">"Fades the song in/out on play/pause."</string>
<string name="pref_summary_force_square_album_art">Album art in the now playing view is forced to be squared.</string> <string name="pref_summary_force_square_album_art">Album art in the now playing view is forced to be squared.</string>
<string name="pref_summary_opaque_toolbar_now_playing">The toolbar is opaque and do not cover the album art.</string> <string name="pref_summary_opaque_toolbar_now_playing">The toolbar is opaque and do not cover the album art.</string>

View file

@ -12,6 +12,7 @@
android:widgetLayout="@layout/preference_dynamic_checkbox" /> android:widgetLayout="@layout/preference_dynamic_checkbox" />
<Preference <Preference
android:layout="@layout/preference_custom"
android:key="equalizer" android:key="equalizer"
android:title="@string/equalizer" /> android:title="@string/equalizer" />

View file

@ -3,6 +3,7 @@
<com.kabouzeid.gramophone.prefs.DynamicPreferenceCategory android:title="@string/pref_header_colors"> <com.kabouzeid.gramophone.prefs.DynamicPreferenceCategory android:title="@string/pref_header_colors">
<com.afollestad.materialdialogs.prefs.MaterialListPreference <com.afollestad.materialdialogs.prefs.MaterialListPreference
android:layout="@layout/preference_custom"
android:defaultValue="0" android:defaultValue="0"
android:entries="@array/pref_general_theme_list_titles" android:entries="@array/pref_general_theme_list_titles"
android:entryValues="@array/pref_general_theme_list_values" android:entryValues="@array/pref_general_theme_list_values"
@ -29,7 +30,16 @@
android:summary="@string/pref_summary_colored_album_footers" android:summary="@string/pref_summary_colored_album_footers"
android:widgetLayout="@layout/preference_dynamic_checkbox" /> android:widgetLayout="@layout/preference_dynamic_checkbox" />
<CheckBoxPreference
android:layout="@layout/preference_custom"
android:defaultValue="true"
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 <com.afollestad.materialdialogs.prefs.MaterialMultiSelectListPreference
android:layout="@layout/preference_custom"
android:key="colored_navigation_bar" android:key="colored_navigation_bar"
android:entries="@array/pref_navigation_bar_color_titles" android:entries="@array/pref_navigation_bar_color_titles"
android:entryValues="@array/pref_navigation_bar_color_values" android:entryValues="@array/pref_navigation_bar_color_values"

View file

@ -3,6 +3,7 @@
<com.kabouzeid.gramophone.prefs.DynamicPreferenceCategory android:title="@string/pref_header_general"> <com.kabouzeid.gramophone.prefs.DynamicPreferenceCategory android:title="@string/pref_header_general">
<com.afollestad.materialdialogs.prefs.MaterialListPreference <com.afollestad.materialdialogs.prefs.MaterialListPreference
android:layout="@layout/preference_custom"
android:defaultValue="-1" android:defaultValue="-1"
android:entries="@array/pref_start_page_list_titles" android:entries="@array/pref_start_page_list_titles"
android:entryValues="@array/pref_start_page_list_values" android:entryValues="@array/pref_start_page_list_values"