Fix bad revert from 547849e, refactor up next/remaining time string creation

This commit is contained in:
Eugene Cheung 2017-06-16 15:26:00 -04:00
commit a633a6c3a3
6 changed files with 97 additions and 6 deletions

View file

@ -32,10 +32,11 @@ import de.psdev.licensesdialog.LicensesDialog;
@SuppressWarnings("FieldCanBeLocal") @SuppressWarnings("FieldCanBeLocal")
public class AboutActivity extends AbsBaseActivity implements View.OnClickListener { public class AboutActivity extends AbsBaseActivity implements View.OnClickListener {
private static String GITHUB = "https://github.com/kabouzeid/Phonograph";
private static String GOOGLE_PLUS = "https://google.com/+KarimAbouZeid23697"; private static String GOOGLE_PLUS = "https://google.com/+KarimAbouZeid23697";
private static String TWITTER = "https://twitter.com/karim23697"; private static String TWITTER = "https://twitter.com/karim23697";
private static String GITHUB = "https://github.com/kabouzeid"; private static String WEBSITE = "https://kabouzeid.com/";
private static String WEBSITE = "http://kabouzeid.com/";
private static String GOOGLE_PLUS_COMMUNITY = "https://plus.google.com/u/0/communities/106227738496107108513"; private static String GOOGLE_PLUS_COMMUNITY = "https://plus.google.com/u/0/communities/106227738496107108513";
private static String TRANSLATE = "https://phonograph.oneskyapp.com/collaboration/project?id=26521"; private static String TRANSLATE = "https://phonograph.oneskyapp.com/collaboration/project?id=26521";
@ -61,6 +62,8 @@ public class AboutActivity extends AbsBaseActivity implements View.OnClickListen
LinearLayout intro; LinearLayout intro;
@BindView(R.id.licenses) @BindView(R.id.licenses)
LinearLayout licenses; LinearLayout licenses;
@BindView(R.id.write_an_email)
LinearLayout writeAnEmail;
@BindView(R.id.add_to_google_plus_circles) @BindView(R.id.add_to_google_plus_circles)
LinearLayout addToGooglePlusCircles; LinearLayout addToGooglePlusCircles;
@BindView(R.id.follow_on_twitter) @BindView(R.id.follow_on_twitter)
@ -132,6 +135,7 @@ public class AboutActivity extends AbsBaseActivity implements View.OnClickListen
forkOnGitHub.setOnClickListener(this); forkOnGitHub.setOnClickListener(this);
visitWebsite.setOnClickListener(this); visitWebsite.setOnClickListener(this);
reportBugs.setOnClickListener(this); reportBugs.setOnClickListener(this);
writeAnEmail.setOnClickListener(this);
joinGooglePlusCommunity.setOnClickListener(this); joinGooglePlusCommunity.setOnClickListener(this);
translate.setOnClickListener(this); translate.setOnClickListener(this);
rateOnGooglePlay.setOnClickListener(this); rateOnGooglePlay.setOnClickListener(this);
@ -180,6 +184,12 @@ public class AboutActivity extends AbsBaseActivity implements View.OnClickListen
openUrl(WEBSITE); openUrl(WEBSITE);
} else if (v == reportBugs) { } else if (v == reportBugs) {
startActivity(new Intent(this, BugReportActivity.class)); startActivity(new Intent(this, BugReportActivity.class));
} else if (v == writeAnEmail) {
Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("mailto:contact@kabouzeid.com"));
intent.putExtra(Intent.EXTRA_EMAIL, "contact@kabouzeid.com");
intent.putExtra(Intent.EXTRA_SUBJECT, "Phonograph");
startActivity(Intent.createChooser(intent, "E-Mail"));
} else if (v == joinGooglePlusCommunity) { } else if (v == joinGooglePlusCommunity) {
openUrl(GOOGLE_PLUS_COMMUNITY); openUrl(GOOGLE_PLUS_COMMUNITY);
} else if (v == translate) { } else if (v == translate) {

View file

@ -53,6 +53,7 @@ import com.kabouzeid.gramophone.ui.activities.base.AbsSlidingMusicPanelActivity;
import com.kabouzeid.gramophone.util.ArtistSignatureUtil; import com.kabouzeid.gramophone.util.ArtistSignatureUtil;
import com.kabouzeid.gramophone.util.NavigationUtil; import com.kabouzeid.gramophone.util.NavigationUtil;
import com.kabouzeid.gramophone.util.PhonographColorUtil; import com.kabouzeid.gramophone.util.PhonographColorUtil;
import com.kabouzeid.gramophone.util.PreferenceUtil;
import com.kabouzeid.gramophone.util.Util; import com.kabouzeid.gramophone.util.Util;
import butterknife.BindView; import butterknife.BindView;
@ -91,6 +92,7 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement
private int artistImageViewHeight; private int artistImageViewHeight;
private int toolbarColor; private int toolbarColor;
private float toolbarAlpha; private float toolbarAlpha;
private boolean usePalette;
private Artist artist; private Artist artist;
@Nullable @Nullable
@ -109,6 +111,7 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement
supportPostponeEnterTransition(); supportPostponeEnterTransition();
lastFMRestClient = new LastFMRestClient(this); lastFMRestClient = new LastFMRestClient(this);
usePalette = PreferenceUtil.getInstance(this).albumArtistColoredFooters();
initViews(); initViews();
setUpObservableListViewParams(); setUpObservableListViewParams();
@ -194,7 +197,7 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement
private void setUpAlbumRecyclerView() { private void setUpAlbumRecyclerView() {
albumRecyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)); albumRecyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));
albumAdapter = new HorizontalAlbumAdapter(this, getArtist().albums, true, this); albumAdapter = new HorizontalAlbumAdapter(this, getArtist().albums, usePalette, this);
albumRecyclerView.setAdapter(albumAdapter); albumRecyclerView.setAdapter(albumAdapter);
albumAdapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() { albumAdapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
@Override @Override
@ -205,6 +208,12 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement
}); });
} }
protected void setUsePalette(boolean usePalette) {
albumAdapter.usePalette(usePalette);
PreferenceUtil.getInstance(this).setAlbumArtistColoredFooters(usePalette);
this.usePalette = usePalette;
}
private void reload() { private void reload() {
getSupportLoaderManager().restartLoader(LOADER_ID, getIntent().getExtras(), this); getSupportLoaderManager().restartLoader(LOADER_ID, getIntent().getExtras(), this);
} }
@ -309,6 +318,7 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement
@Override @Override
public boolean onCreateOptionsMenu(Menu menu) { public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_artist_detail, menu); getMenuInflater().inflate(R.menu.menu_artist_detail, menu);
menu.findItem(R.id.action_colored_footers).setChecked(usePalette);
return true; return true;
} }
@ -339,6 +349,10 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement
Toast.makeText(ArtistDetailActivity.this, getResources().getString(R.string.updating), Toast.LENGTH_SHORT).show(); Toast.makeText(ArtistDetailActivity.this, getResources().getString(R.string.updating), Toast.LENGTH_SHORT).show();
loadArtistImage(true); loadArtistImage(true);
return true; return true;
case R.id.action_colored_footers:
item.setChecked(!item.isChecked());
setUsePalette(item.isChecked());
return true;
} }
return super.onOptionsItemSelected(item); return super.onOptionsItemSelected(item);
} }

View file

@ -25,8 +25,11 @@ import com.kabouzeid.appthemehelper.common.prefs.supportv7.ATEColorPreference;
import com.kabouzeid.appthemehelper.common.prefs.supportv7.ATEPreferenceFragmentCompat; import com.kabouzeid.appthemehelper.common.prefs.supportv7.ATEPreferenceFragmentCompat;
import com.kabouzeid.appthemehelper.util.ColorUtil; import com.kabouzeid.appthemehelper.util.ColorUtil;
import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.appshortcuts.DynamicShortcutManager;
import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
import com.kabouzeid.gramophone.preferences.NowPlayingScreenPreference; import com.kabouzeid.gramophone.preferences.NowPlayingScreenPreference;
import com.kabouzeid.gramophone.preferences.NowPlayingScreenPreferenceDialog; import com.kabouzeid.gramophone.preferences.NowPlayingScreenPreferenceDialog;
import com.kabouzeid.gramophone.service.MusicService;
import com.kabouzeid.gramophone.ui.activities.base.AbsBaseActivity; import com.kabouzeid.gramophone.ui.activities.base.AbsBaseActivity;
import com.kabouzeid.gramophone.util.NavigationUtil; import com.kabouzeid.gramophone.util.NavigationUtil;
import com.kabouzeid.gramophone.util.PreferenceUtil; import com.kabouzeid.gramophone.util.PreferenceUtil;
@ -78,6 +81,10 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia
.commit(); .commit();
break; break;
} }
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) {
new DynamicShortcutManager(this).updateDynamicShortcuts();
}
recreate(); recreate();
} }
@ -122,10 +129,12 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia
public void onCreatePreferences(Bundle bundle, String s) { public void onCreatePreferences(Bundle bundle, String s) {
addPreferencesFromResource(R.xml.pref_general); addPreferencesFromResource(R.xml.pref_general);
addPreferencesFromResource(R.xml.pref_colors); addPreferencesFromResource(R.xml.pref_colors);
addPreferencesFromResource(R.xml.pref_notification);
addPreferencesFromResource(R.xml.pref_now_playing_screen); addPreferencesFromResource(R.xml.pref_now_playing_screen);
addPreferencesFromResource(R.xml.pref_images); addPreferencesFromResource(R.xml.pref_images);
addPreferencesFromResource(R.xml.pref_lockscreen); addPreferencesFromResource(R.xml.pref_lockscreen);
addPreferencesFromResource(R.xml.pref_audio); addPreferencesFromResource(R.xml.pref_audio);
addPreferencesFromResource(R.xml.pref_playlists);
} }
@Nullable @Nullable
@ -171,6 +180,13 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia
ThemeStore.editTheme(getActivity()) ThemeStore.editTheme(getActivity())
.activityTheme(PreferenceUtil.getThemeResFromPrefValue((String) o)) .activityTheme(PreferenceUtil.getThemeResFromPrefValue((String) o))
.commit(); .commit();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) {
//Set the new theme so that updateAppShortcuts can pull it
getActivity().setTheme(PreferenceUtil.getThemeResFromPrefValue((String) o));
new DynamicShortcutManager(getActivity()).updateDynamicShortcuts();
}
getActivity().recreate(); getActivity().recreate();
return true; return true;
} }
@ -186,7 +202,7 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia
} }
}); });
ATEColorPreference primaryColorPref = (ATEColorPreference) findPreference("primary_color"); final ATEColorPreference primaryColorPref = (ATEColorPreference) findPreference("primary_color");
final int primaryColor = ThemeStore.primaryColor(getActivity()); final int primaryColor = ThemeStore.primaryColor(getActivity());
primaryColorPref.setColor(primaryColor, ColorUtil.darkenColor(primaryColor)); primaryColorPref.setColor(primaryColor, ColorUtil.darkenColor(primaryColor));
primaryColorPref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { primaryColorPref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@ -202,7 +218,7 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia
} }
}); });
ATEColorPreference accentColorPref = (ATEColorPreference) findPreference("accent_color"); final ATEColorPreference accentColorPref = (ATEColorPreference) findPreference("accent_color");
final int accentColor = ThemeStore.accentColor(getActivity()); final int accentColor = ThemeStore.accentColor(getActivity());
accentColorPref.setColor(accentColor, ColorUtil.darkenColor(accentColor)); accentColorPref.setColor(accentColor, ColorUtil.darkenColor(accentColor));
accentColorPref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { accentColorPref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@ -236,7 +252,50 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia
}); });
} }
Preference equalizer = findPreference("equalizer"); final TwoStatePreference classicNotification = (TwoStatePreference) findPreference("classic_notification");
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N_MR1) {
classicNotification.setEnabled(false);
classicNotification.setSummary(R.string.pref_only_nougat);
} else {
classicNotification.setChecked(PreferenceUtil.getInstance(getActivity()).classicNotification());
classicNotification.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
//Save preference
PreferenceUtil.getInstance(getActivity()).setClassicNotification((Boolean)newValue);
final MusicService service = MusicPlayerRemote.musicService;
if (service != null) {
service.initNotification();
service.updateNotification();
}
return true;
}
});
}
final TwoStatePreference colorAppShortcuts = (TwoStatePreference) findPreference("should_color_app_shortcuts");
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N_MR1) {
colorAppShortcuts.setEnabled(false);
colorAppShortcuts.setSummary(R.string.pref_only_nougat_mr1);
} else {
colorAppShortcuts.setChecked(PreferenceUtil.getInstance(getActivity()).coloredAppShortcuts());
colorAppShortcuts.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
//Save preference
PreferenceUtil.getInstance(getActivity()).setColoredAppShortcuts((Boolean)newValue);
//Update app shortcuts
new DynamicShortcutManager(getActivity()).updateDynamicShortcuts();
return true;
}
});
}
final Preference equalizer = findPreference("equalizer");
if (!hasEqualizer()) { if (!hasEqualizer()) {
equalizer.setEnabled(false); equalizer.setEnabled(false);
equalizer.setSummary(getResources().getString(R.string.no_equalizer)); equalizer.setSummary(getResources().getString(R.string.no_equalizer));

View file

@ -88,6 +88,10 @@ public abstract class AbsPlayerFragment extends AbsMusicServiceFragment implemen
MusicUtil.toggleFavorite(getActivity(), song); MusicUtil.toggleFavorite(getActivity(), song);
} }
protected String getUpNextAndQueueTime() {
return getResources().getString(R.string.up_next) + "" + MusicUtil.getReadableDurationString(MusicPlayerRemote.getQueueDurationMillis(MusicPlayerRemote.getPosition()));
}
public abstract void onShow(); public abstract void onShow();
public abstract void onHide(); public abstract void onHide();

View file

@ -198,6 +198,7 @@ public class CardPlayerFragment extends AbsPlayerFragment implements PlayerAlbum
private void updateQueue() { private void updateQueue() {
playingQueueAdapter.swapDataSet(MusicPlayerRemote.getPlayingQueue(), MusicPlayerRemote.getPosition()); playingQueueAdapter.swapDataSet(MusicPlayerRemote.getPlayingQueue(), MusicPlayerRemote.getPosition());
playerQueueSubHeader.setText(getUpNextAndQueueTime());
if (slidingUpPanelLayout.getPanelState() == SlidingUpPanelLayout.PanelState.COLLAPSED) { if (slidingUpPanelLayout.getPanelState() == SlidingUpPanelLayout.PanelState.COLLAPSED) {
resetToCurrentPosition(); resetToCurrentPosition();
} }
@ -205,6 +206,7 @@ public class CardPlayerFragment extends AbsPlayerFragment implements PlayerAlbum
private void updateQueuePosition() { private void updateQueuePosition() {
playingQueueAdapter.setCurrent(MusicPlayerRemote.getPosition()); playingQueueAdapter.setCurrent(MusicPlayerRemote.getPosition());
playerQueueSubHeader.setText(getUpNextAndQueueTime());
if (slidingUpPanelLayout.getPanelState() == SlidingUpPanelLayout.PanelState.COLLAPSED) { if (slidingUpPanelLayout.getPanelState() == SlidingUpPanelLayout.PanelState.COLLAPSED) {
resetToCurrentPosition(); resetToCurrentPosition();
} }

View file

@ -194,6 +194,7 @@ public class FlatPlayerFragment extends AbsPlayerFragment implements PlayerAlbum
private void updateQueue() { private void updateQueue() {
playingQueueAdapter.swapDataSet(MusicPlayerRemote.getPlayingQueue(), MusicPlayerRemote.getPosition()); playingQueueAdapter.swapDataSet(MusicPlayerRemote.getPlayingQueue(), MusicPlayerRemote.getPosition());
playerQueueSubHeader.setText(getUpNextAndQueueTime());
if (slidingUpPanelLayout == null || slidingUpPanelLayout.getPanelState() == SlidingUpPanelLayout.PanelState.COLLAPSED) { if (slidingUpPanelLayout == null || slidingUpPanelLayout.getPanelState() == SlidingUpPanelLayout.PanelState.COLLAPSED) {
resetToCurrentPosition(); resetToCurrentPosition();
} }
@ -201,6 +202,7 @@ public class FlatPlayerFragment extends AbsPlayerFragment implements PlayerAlbum
private void updateQueuePosition() { private void updateQueuePosition() {
playingQueueAdapter.setCurrent(MusicPlayerRemote.getPosition()); playingQueueAdapter.setCurrent(MusicPlayerRemote.getPosition());
playerQueueSubHeader.setText(getUpNextAndQueueTime());
if (slidingUpPanelLayout == null || slidingUpPanelLayout.getPanelState() == SlidingUpPanelLayout.PanelState.COLLAPSED) { if (slidingUpPanelLayout == null || slidingUpPanelLayout.getPanelState() == SlidingUpPanelLayout.PanelState.COLLAPSED) {
resetToCurrentPosition(); resetToCurrentPosition();
} }