Add java8 support
This commit is contained in:
parent
723912d928
commit
7793cc822d
44 changed files with 512 additions and 929 deletions
|
|
@ -211,15 +211,12 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements
|
|||
setUpRecyclerViewPadding();
|
||||
recyclerView.setScrollViewCallbacks(observableScrollViewCallbacks);
|
||||
final View contentView = getWindow().getDecorView().findViewById(android.R.id.content);
|
||||
contentView.post(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
songsBackgroundView.getLayoutParams().height = contentView.getHeight();
|
||||
observableScrollViewCallbacks.onScrollChanged(-(albumArtViewHeight + titleViewHeight), false, false);
|
||||
// necessary to fix a bug
|
||||
recyclerView.scrollBy(0, 1);
|
||||
recyclerView.scrollBy(0, -1);
|
||||
}
|
||||
contentView.post(() -> {
|
||||
songsBackgroundView.getLayoutParams().height = contentView.getHeight();
|
||||
observableScrollViewCallbacks.onScrollChanged(-(albumArtViewHeight + titleViewHeight), false, false);
|
||||
// necessary to fix a bug
|
||||
recyclerView.scrollBy(0, 1);
|
||||
recyclerView.scrollBy(0, -1);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -186,12 +186,9 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement
|
|||
songListView.setAdapter(songAdapter);
|
||||
|
||||
final View contentView = getWindow().getDecorView().findViewById(android.R.id.content);
|
||||
contentView.post(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
songListBackground.getLayoutParams().height = contentView.getHeight();
|
||||
observableScrollViewCallbacks.onScrollChanged(-(artistImageViewHeight + titleViewHeight), false, false);
|
||||
}
|
||||
contentView.post(() -> {
|
||||
songListBackground.getLayoutParams().height = contentView.getHeight();
|
||||
observableScrollViewCallbacks.onScrollChanged(-(artistImageViewHeight + titleViewHeight), false, false);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -86,13 +86,9 @@ public class MainActivity extends AbsSlidingMusicPanelActivity {
|
|||
//noinspection ConstantConditions
|
||||
findViewById(R.id.drawer_content_container).setFitsSystemWindows(false);
|
||||
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
drawerLayout.setOnApplyWindowInsetsListener(new View.OnApplyWindowInsetsListener() {
|
||||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
||||
@Override
|
||||
public WindowInsets onApplyWindowInsets(View view, WindowInsets windowInsets) {
|
||||
navigationView.dispatchApplyWindowInsets(windowInsets);
|
||||
return windowInsets.replaceSystemWindowInsets(0, 0, 0, 0);
|
||||
}
|
||||
drawerLayout.setOnApplyWindowInsetsListener((view, windowInsets) -> {
|
||||
navigationView.dispatchApplyWindowInsets(windowInsets);
|
||||
return windowInsets.replaceSystemWindowInsets(0, 0, 0, 0);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -174,54 +170,26 @@ public class MainActivity extends AbsSlidingMusicPanelActivity {
|
|||
NavigationViewUtil.setItemTextColors(navigationView, ThemeStore.textColorPrimary(this), accentColor);
|
||||
|
||||
checkSetUpPro();
|
||||
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
|
||||
@Override
|
||||
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
|
||||
drawerLayout.closeDrawers();
|
||||
switch (menuItem.getItemId()) {
|
||||
case R.id.nav_library:
|
||||
new Handler().postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
setMusicChooser(LIBRARY);
|
||||
}
|
||||
}, 200);
|
||||
break;
|
||||
case R.id.nav_folders:
|
||||
new Handler().postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
setMusicChooser(FOLDERS);
|
||||
}
|
||||
}, 200);
|
||||
break;
|
||||
case R.id.buy_pro:
|
||||
new Handler().postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
startActivityForResult(new Intent(MainActivity.this, PurchaseActivity.class), PURCHASE_REQUEST);
|
||||
}
|
||||
}, 200);
|
||||
break;
|
||||
case R.id.nav_settings:
|
||||
new Handler().postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
startActivity(new Intent(MainActivity.this, SettingsActivity.class));
|
||||
}
|
||||
}, 200);
|
||||
break;
|
||||
case R.id.nav_about:
|
||||
new Handler().postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
startActivity(new Intent(MainActivity.this, AboutActivity.class));
|
||||
}
|
||||
}, 200);
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
navigationView.setNavigationItemSelectedListener(menuItem -> {
|
||||
drawerLayout.closeDrawers();
|
||||
switch (menuItem.getItemId()) {
|
||||
case R.id.nav_library:
|
||||
new Handler().postDelayed(() -> setMusicChooser(LIBRARY), 200);
|
||||
break;
|
||||
case R.id.nav_folders:
|
||||
new Handler().postDelayed(() -> setMusicChooser(FOLDERS), 200);
|
||||
break;
|
||||
case R.id.buy_pro:
|
||||
new Handler().postDelayed(() -> startActivityForResult(new Intent(MainActivity.this, PurchaseActivity.class), PURCHASE_REQUEST), 200);
|
||||
break;
|
||||
case R.id.nav_settings:
|
||||
new Handler().postDelayed(() -> startActivity(new Intent(MainActivity.this, SettingsActivity.class)), 200);
|
||||
break;
|
||||
case R.id.nav_about:
|
||||
new Handler().postDelayed(() -> startActivity(new Intent(MainActivity.this, AboutActivity.class)), 200);
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -245,13 +213,10 @@ public class MainActivity extends AbsSlidingMusicPanelActivity {
|
|||
if (navigationDrawerHeader == null) {
|
||||
navigationDrawerHeader = navigationView.inflateHeaderView(R.layout.navigation_drawer_header);
|
||||
//noinspection ConstantConditions
|
||||
navigationDrawerHeader.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
drawerLayout.closeDrawers();
|
||||
if (getPanelState() == SlidingUpPanelLayout.PanelState.COLLAPSED) {
|
||||
expandPanel();
|
||||
}
|
||||
navigationDrawerHeader.setOnClickListener(v -> {
|
||||
drawerLayout.closeDrawers();
|
||||
if (getPanelState() == SlidingUpPanelLayout.PanelState.COLLAPSED) {
|
||||
expandPanel();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
@ -387,12 +352,7 @@ public class MainActivity extends AbsSlidingMusicPanelActivity {
|
|||
PreferenceUtil.getInstance(this).setIntroShown();
|
||||
ChangelogDialog.setChangelogRead(this);
|
||||
blockRequestPermissions = true;
|
||||
new Handler().postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
startActivityForResult(new Intent(MainActivity.this, AppIntroActivity.class), APP_INTRO_REQUEST);
|
||||
}
|
||||
}, 50);
|
||||
new Handler().postDelayed(() -> startActivityForResult(new Intent(MainActivity.this, AppIntroActivity.class), APP_INTRO_REQUEST), 50);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
|
|
|||
|
|
@ -103,14 +103,11 @@ public class PlaylistDetailActivity extends AbsSlidingMusicPanelActivity impleme
|
|||
} else {
|
||||
recyclerViewDragDropManager = new RecyclerViewDragDropManager();
|
||||
final GeneralItemAnimator animator = new RefactoredDefaultItemAnimator();
|
||||
adapter = new OrderablePlaylistSongAdapter(this, new ArrayList<PlaylistSong>(), R.layout.item_list, false, this, new OrderablePlaylistSongAdapter.OnMoveItemListener() {
|
||||
@Override
|
||||
public void onMoveItem(int fromPosition, int toPosition) {
|
||||
if (PlaylistsUtil.moveItem(PlaylistDetailActivity.this, playlist.id, fromPosition, toPosition)) {
|
||||
Song song = adapter.getDataSet().remove(fromPosition);
|
||||
adapter.getDataSet().add(toPosition, song);
|
||||
adapter.notifyItemMoved(fromPosition, toPosition);
|
||||
}
|
||||
adapter = new OrderablePlaylistSongAdapter(this, new ArrayList<PlaylistSong>(), R.layout.item_list, false, this, (fromPosition, toPosition) -> {
|
||||
if (PlaylistsUtil.moveItem(PlaylistDetailActivity.this, playlist.id, fromPosition, toPosition)) {
|
||||
Song song = adapter.getDataSet().remove(fromPosition);
|
||||
adapter.getDataSet().add(toPosition, song);
|
||||
adapter.notifyItemMoved(fromPosition, toPosition);
|
||||
}
|
||||
});
|
||||
wrappedAdapter = recyclerViewDragDropManager.createWrappedAdapter(adapter);
|
||||
|
|
|
|||
|
|
@ -66,27 +66,21 @@ public class PurchaseActivity extends AbsBaseActivity implements BillingProcesso
|
|||
restoreButton.setEnabled(false);
|
||||
purchaseButton.setEnabled(false);
|
||||
|
||||
restoreButton.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (restorePurchaseAsyncTask == null || restorePurchaseAsyncTask.getStatus() != AsyncTask.Status.RUNNING) {
|
||||
restorePurchase();
|
||||
}
|
||||
restoreButton.setOnClickListener(v -> {
|
||||
if (restorePurchaseAsyncTask == null || restorePurchaseAsyncTask.getStatus() != AsyncTask.Status.RUNNING) {
|
||||
restorePurchase();
|
||||
}
|
||||
});
|
||||
|
||||
purchaseButton.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
billingProcessor.purchase(PurchaseActivity.this, App.PRO_VERSION_PRODUCT_ID);
|
||||
purchaseButton.setOnClickListener(v -> {
|
||||
billingProcessor.purchase(PurchaseActivity.this, App.PRO_VERSION_PRODUCT_ID);
|
||||
|
||||
if (!BuildConfig.DEBUG) {
|
||||
Answers.getInstance().logAddToCart(new AddToCartEvent()
|
||||
.putCurrency(Currency.getInstance("EUR"))
|
||||
.putItemId("pro_version")
|
||||
.putItemName("Phonograph Pro")
|
||||
.putItemPrice(BigDecimal.valueOf(3)));
|
||||
}
|
||||
if (!BuildConfig.DEBUG) {
|
||||
Answers.getInstance().logAddToCart(new AddToCartEvent()
|
||||
.putCurrency(Currency.getInstance("EUR"))
|
||||
.putItemId("pro_version")
|
||||
.putItemName("Phonograph Pro")
|
||||
.putItemPrice(BigDecimal.valueOf(3)));
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -74,12 +74,9 @@ public class SearchActivity extends AbsMusicServiceActivity implements SearchVie
|
|||
});
|
||||
recyclerView.setAdapter(adapter);
|
||||
|
||||
recyclerView.setOnTouchListener(new View.OnTouchListener() {
|
||||
@Override
|
||||
public boolean onTouch(View v, MotionEvent event) {
|
||||
hideSoftKeyboard();
|
||||
return false;
|
||||
}
|
||||
recyclerView.setOnTouchListener((v, event) -> {
|
||||
hideSoftKeyboard();
|
||||
return false;
|
||||
});
|
||||
|
||||
setUpToolBar();
|
||||
|
|
@ -133,12 +130,7 @@ public class SearchActivity extends AbsMusicServiceActivity implements SearchVie
|
|||
});
|
||||
|
||||
searchView.setQuery(query, false);
|
||||
searchView.post(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
searchView.setOnQueryTextListener(SearchActivity.this);
|
||||
}
|
||||
});
|
||||
searchView.post(() -> searchView.setOnQueryTextListener(SearchActivity.this));
|
||||
|
||||
return super.onCreateOptionsMenu(menu);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -188,83 +188,68 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia
|
|||
private void invalidateSettings() {
|
||||
final Preference defaultStartPage = findPreference("default_start_page");
|
||||
setSummary(defaultStartPage);
|
||||
defaultStartPage.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
||||
@Override
|
||||
public boolean onPreferenceChange(Preference preference, @NonNull Object o) {
|
||||
setSummary(defaultStartPage, o);
|
||||
return true;
|
||||
}
|
||||
defaultStartPage.setOnPreferenceChangeListener((preference, o) -> {
|
||||
setSummary(defaultStartPage, o);
|
||||
return true;
|
||||
});
|
||||
|
||||
final Preference generalTheme = findPreference("general_theme");
|
||||
setSummary(generalTheme);
|
||||
generalTheme.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
||||
@Override
|
||||
public boolean onPreferenceChange(Preference preference, @NonNull Object o) {
|
||||
String themeName = (String) o;
|
||||
if (themeName.equals("black") && !App.isProVersion()) {
|
||||
Toast.makeText(getActivity(), R.string.black_theme_is_a_pro_feature, Toast.LENGTH_LONG).show();
|
||||
startActivity(new Intent(getContext(), PurchaseActivity.class));
|
||||
return false;
|
||||
}
|
||||
|
||||
int theme = PreferenceUtil.getThemeResFromPrefValue(themeName);
|
||||
setSummary(generalTheme, o);
|
||||
ThemeStore.editTheme(getActivity())
|
||||
.activityTheme(theme)
|
||||
.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();
|
||||
return true;
|
||||
generalTheme.setOnPreferenceChangeListener((preference, o) -> {
|
||||
String themeName = (String) o;
|
||||
if (themeName.equals("black") && !App.isProVersion()) {
|
||||
Toast.makeText(getActivity(), R.string.black_theme_is_a_pro_feature, Toast.LENGTH_LONG).show();
|
||||
startActivity(new Intent(getContext(), PurchaseActivity.class));
|
||||
return false;
|
||||
}
|
||||
|
||||
int theme = PreferenceUtil.getThemeResFromPrefValue(themeName);
|
||||
setSummary(generalTheme, o);
|
||||
ThemeStore.editTheme(getActivity())
|
||||
.activityTheme(theme)
|
||||
.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();
|
||||
return true;
|
||||
});
|
||||
|
||||
final Preference autoDownloadImagesPolicy = findPreference("auto_download_images_policy");
|
||||
setSummary(autoDownloadImagesPolicy);
|
||||
autoDownloadImagesPolicy.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
||||
@Override
|
||||
public boolean onPreferenceChange(Preference preference, @NonNull Object o) {
|
||||
setSummary(autoDownloadImagesPolicy, o);
|
||||
return true;
|
||||
}
|
||||
autoDownloadImagesPolicy.setOnPreferenceChangeListener((preference, o) -> {
|
||||
setSummary(autoDownloadImagesPolicy, o);
|
||||
return true;
|
||||
});
|
||||
|
||||
final ATEColorPreference primaryColorPref = (ATEColorPreference) findPreference("primary_color");
|
||||
final int primaryColor = ThemeStore.primaryColor(getActivity());
|
||||
primaryColorPref.setColor(primaryColor, ColorUtil.darkenColor(primaryColor));
|
||||
primaryColorPref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
|
||||
@Override
|
||||
public boolean onPreferenceClick(@NonNull Preference preference) {
|
||||
new ColorChooserDialog.Builder(((SettingsActivity) getActivity()), R.string.primary_color)
|
||||
.accentMode(false)
|
||||
.allowUserColorInput(true)
|
||||
.allowUserColorInputAlpha(false)
|
||||
.preselect(primaryColor)
|
||||
.show();
|
||||
return true;
|
||||
}
|
||||
primaryColorPref.setOnPreferenceClickListener(preference -> {
|
||||
new ColorChooserDialog.Builder(((SettingsActivity) getActivity()), R.string.primary_color)
|
||||
.accentMode(false)
|
||||
.allowUserColorInput(true)
|
||||
.allowUserColorInputAlpha(false)
|
||||
.preselect(primaryColor)
|
||||
.show();
|
||||
return true;
|
||||
});
|
||||
|
||||
final ATEColorPreference accentColorPref = (ATEColorPreference) findPreference("accent_color");
|
||||
final int accentColor = ThemeStore.accentColor(getActivity());
|
||||
accentColorPref.setColor(accentColor, ColorUtil.darkenColor(accentColor));
|
||||
accentColorPref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
|
||||
@Override
|
||||
public boolean onPreferenceClick(@NonNull Preference preference) {
|
||||
new ColorChooserDialog.Builder(((SettingsActivity) getActivity()), R.string.accent_color)
|
||||
.accentMode(true)
|
||||
.allowUserColorInput(true)
|
||||
.allowUserColorInputAlpha(false)
|
||||
.preselect(accentColor)
|
||||
.show();
|
||||
return true;
|
||||
}
|
||||
accentColorPref.setOnPreferenceClickListener(preference -> {
|
||||
new ColorChooserDialog.Builder(((SettingsActivity) getActivity()), R.string.accent_color)
|
||||
.accentMode(true)
|
||||
.allowUserColorInput(true)
|
||||
.allowUserColorInputAlpha(false)
|
||||
.preselect(accentColor)
|
||||
.show();
|
||||
return true;
|
||||
});
|
||||
|
||||
TwoStatePreference colorNavBar = (TwoStatePreference) findPreference("should_color_navigation_bar");
|
||||
|
|
@ -272,15 +257,12 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia
|
|||
colorNavBar.setVisible(false);
|
||||
} else {
|
||||
colorNavBar.setChecked(ThemeStore.coloredNavigationBar(getActivity()));
|
||||
colorNavBar.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
||||
@Override
|
||||
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||
ThemeStore.editTheme(getActivity())
|
||||
.coloredNavigationBar((Boolean) newValue)
|
||||
.commit();
|
||||
getActivity().recreate();
|
||||
return true;
|
||||
}
|
||||
colorNavBar.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
ThemeStore.editTheme(getActivity())
|
||||
.coloredNavigationBar((Boolean) newValue)
|
||||
.commit();
|
||||
getActivity().recreate();
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -289,13 +271,10 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia
|
|||
classicNotification.setVisible(false);
|
||||
} 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);
|
||||
return true;
|
||||
}
|
||||
classicNotification.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
// Save preference
|
||||
PreferenceUtil.getInstance(getActivity()).setClassicNotification((Boolean) newValue);
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -304,13 +283,10 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia
|
|||
coloredNotification.setEnabled(PreferenceUtil.getInstance(getActivity()).classicNotification());
|
||||
} else {
|
||||
coloredNotification.setChecked(PreferenceUtil.getInstance(getActivity()).coloredNotification());
|
||||
coloredNotification.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
||||
@Override
|
||||
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||
// Save preference
|
||||
PreferenceUtil.getInstance(getActivity()).setColoredNotification((Boolean) newValue);
|
||||
return true;
|
||||
}
|
||||
coloredNotification.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
// Save preference
|
||||
PreferenceUtil.getInstance(getActivity()).setColoredNotification((Boolean) newValue);
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -319,17 +295,14 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia
|
|||
colorAppShortcuts.setVisible(false);
|
||||
} 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);
|
||||
colorAppShortcuts.setOnPreferenceChangeListener((preference, newValue) -> {
|
||||
// Save preference
|
||||
PreferenceUtil.getInstance(getActivity()).setColoredAppShortcuts((Boolean) newValue);
|
||||
|
||||
// Update app shortcuts
|
||||
new DynamicShortcutManager(getActivity()).updateDynamicShortcuts();
|
||||
// Update app shortcuts
|
||||
new DynamicShortcutManager(getActivity()).updateDynamicShortcuts();
|
||||
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -338,12 +311,9 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia
|
|||
equalizer.setEnabled(false);
|
||||
equalizer.setSummary(getResources().getString(R.string.no_equalizer));
|
||||
}
|
||||
equalizer.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
|
||||
@Override
|
||||
public boolean onPreferenceClick(Preference preference) {
|
||||
NavigationUtil.openEqualizer(getActivity());
|
||||
return true;
|
||||
}
|
||||
equalizer.setOnPreferenceClickListener(preference -> {
|
||||
NavigationUtil.openEqualizer(getActivity());
|
||||
return true;
|
||||
});
|
||||
|
||||
updateNowPlayingScreenSummary();
|
||||
|
|
|
|||
|
|
@ -120,27 +120,19 @@ public abstract class AbsBaseActivity extends AbsThemeActivity {
|
|||
//User has deny from permission dialog
|
||||
Snackbar.make(getSnackBarContainer(), getPermissionDeniedMessage(),
|
||||
Snackbar.LENGTH_INDEFINITE)
|
||||
.setAction(R.string.action_grant, new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
requestPermissions();
|
||||
}
|
||||
})
|
||||
.setAction(R.string.action_grant, view -> requestPermissions())
|
||||
.setActionTextColor(ThemeStore.accentColor(this))
|
||||
.show();
|
||||
} else {
|
||||
// User has deny permission and checked never show permission dialog so you can redirect to Application settings page
|
||||
Snackbar.make(getSnackBarContainer(), getPermissionDeniedMessage(),
|
||||
Snackbar.LENGTH_INDEFINITE)
|
||||
.setAction(R.string.action_settings, new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
Intent intent = new Intent();
|
||||
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
|
||||
Uri uri = Uri.fromParts("package", AbsBaseActivity.this.getPackageName(), null);
|
||||
intent.setData(uri);
|
||||
startActivity(intent);
|
||||
}
|
||||
.setAction(R.string.action_settings, view -> {
|
||||
Intent intent = new Intent();
|
||||
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
|
||||
Uri uri = Uri.fromParts("package", AbsBaseActivity.this.getPackageName(), null);
|
||||
intent.setData(uri);
|
||||
startActivity(intent);
|
||||
})
|
||||
.setActionTextColor(ThemeStore.accentColor(this))
|
||||
.show();
|
||||
|
|
|
|||
|
|
@ -76,12 +76,7 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
|
|||
miniPlayerFragment = (MiniPlayerFragment) getSupportFragmentManager().findFragmentById(R.id.mini_player_fragment);
|
||||
|
||||
//noinspection ConstantConditions
|
||||
miniPlayerFragment.getView().setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
expandPanel();
|
||||
}
|
||||
});
|
||||
miniPlayerFragment.getView().setOnClickListener(v -> expandPanel());
|
||||
|
||||
slidingUpPanelLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
|
||||
@Override
|
||||
|
|
@ -267,13 +262,7 @@ public abstract class AbsSlidingMusicPanelActivity extends AbsMusicServiceActivi
|
|||
.ofArgb(getWindow().getNavigationBarColor(), color)
|
||||
.setDuration(ViewUtil.PHONOGRAPH_ANIM_TIME);
|
||||
navigationBarColorAnimator.setInterpolator(new PathInterpolator(0.4f, 0f, 1f, 1f));
|
||||
navigationBarColorAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
|
||||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
||||
@Override
|
||||
public void onAnimationUpdate(ValueAnimator animation) {
|
||||
AbsSlidingMusicPanelActivity.super.setNavigationbarColor((Integer) animation.getAnimatedValue());
|
||||
}
|
||||
});
|
||||
navigationBarColorAnimator.addUpdateListener(animation -> AbsSlidingMusicPanelActivity.super.setNavigationbarColor((Integer) animation.getAnimatedValue()));
|
||||
navigationBarColorAnimator.start();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -170,31 +170,18 @@ public class BugReportActivity extends AbsThemeActivity {
|
|||
}
|
||||
});
|
||||
|
||||
inputPassword.setOnEditorActionListener(new TextView.OnEditorActionListener() {
|
||||
@Override
|
||||
public boolean onEditorAction(TextView textView, int actionId, KeyEvent event) {
|
||||
if (actionId == EditorInfo.IME_ACTION_SEND) {
|
||||
reportIssue();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
inputPassword.setOnEditorActionListener((textView, actionId, event) -> {
|
||||
if (actionId == EditorInfo.IME_ACTION_SEND) {
|
||||
reportIssue();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
textDeviceInfo.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
copyDeviceInfoToClipBoard();
|
||||
}
|
||||
});
|
||||
textDeviceInfo.setOnClickListener(v -> copyDeviceInfoToClipBoard());
|
||||
|
||||
TintHelper.setTintAuto(sendFab, accentColor, true);
|
||||
sendFab.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
reportIssue();
|
||||
}
|
||||
});
|
||||
sendFab.setOnClickListener(v -> reportIssue());
|
||||
|
||||
TintHelper.setTintAuto(inputTitle, accentColor, false);
|
||||
TintHelper.setTintAuto(inputDescription, accentColor, false);
|
||||
|
|
@ -392,19 +379,8 @@ public class BugReportActivity extends AbsThemeActivity {
|
|||
.title(R.string.bug_report_failed)
|
||||
.content(R.string.bug_report_failed_unknown)
|
||||
.positiveText(android.R.string.ok)
|
||||
.onPositive(new MaterialDialog.SingleButtonCallback() {
|
||||
@Override
|
||||
public void onClick(@NonNull MaterialDialog dialog,
|
||||
@NonNull DialogAction which) {
|
||||
tryToFinishActivity();
|
||||
}
|
||||
})
|
||||
.cancelListener(new DialogInterface.OnCancelListener() {
|
||||
@Override
|
||||
public void onCancel(DialogInterface dialog) {
|
||||
tryToFinishActivity();
|
||||
}
|
||||
})
|
||||
.onPositive((dialog, which) -> tryToFinishActivity())
|
||||
.cancelListener(dialog -> tryToFinishActivity())
|
||||
.show();
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -137,33 +137,25 @@ public abstract class AbsTagEditorActivity extends AbsBaseActivity {
|
|||
getString(R.string.web_search),
|
||||
getString(R.string.remove_cover)
|
||||
};
|
||||
image.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
new MaterialDialog.Builder(AbsTagEditorActivity.this)
|
||||
.title(R.string.update_image)
|
||||
.items(items)
|
||||
.itemsCallback(new MaterialDialog.ListCallback() {
|
||||
@Override
|
||||
public void onSelection(MaterialDialog dialog, View view, int which, CharSequence text) {
|
||||
switch (which) {
|
||||
case 0:
|
||||
getImageFromLastFM();
|
||||
break;
|
||||
case 1:
|
||||
startImagePicker();
|
||||
break;
|
||||
case 2:
|
||||
searchImageOnWeb();
|
||||
break;
|
||||
case 3:
|
||||
deleteImage();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}).show();
|
||||
}
|
||||
});
|
||||
image.setOnClickListener(v -> new MaterialDialog.Builder(AbsTagEditorActivity.this)
|
||||
.title(R.string.update_image)
|
||||
.items(items)
|
||||
.itemsCallback((dialog, view, which, text) -> {
|
||||
switch (which) {
|
||||
case 0:
|
||||
getImageFromLastFM();
|
||||
break;
|
||||
case 1:
|
||||
startImagePicker();
|
||||
break;
|
||||
case 2:
|
||||
searchImageOnWeb();
|
||||
break;
|
||||
case 3:
|
||||
deleteImage();
|
||||
break;
|
||||
}
|
||||
}).show());
|
||||
}
|
||||
|
||||
private void startImagePicker() {
|
||||
|
|
@ -184,12 +176,7 @@ public abstract class AbsTagEditorActivity extends AbsBaseActivity {
|
|||
fab.setScaleX(0);
|
||||
fab.setScaleY(0);
|
||||
fab.setEnabled(false);
|
||||
fab.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
save();
|
||||
}
|
||||
});
|
||||
fab.setOnClickListener(v -> save());
|
||||
|
||||
TintHelper.setTintAuto(fab, ThemeStore.accentColor(this), true);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -298,42 +298,24 @@ public class FoldersFragment extends AbsMainActivityFragment implements MainActi
|
|||
if (file.isDirectory()) {
|
||||
setCrumb(new BreadCrumbLayout.Crumb(file), true);
|
||||
} else {
|
||||
FileFilter fileFilter = new FileFilter() {
|
||||
@Override
|
||||
public boolean accept(File pathname) {
|
||||
return !pathname.isDirectory() && getFileFilter().accept(pathname);
|
||||
FileFilter fileFilter = pathname -> !pathname.isDirectory() && getFileFilter().accept(pathname);
|
||||
new ListSongsAsyncTask(getActivity(), file, (songs, extra) -> {
|
||||
File file1 = (File) extra;
|
||||
int startIndex = -1;
|
||||
for (int i = 0; i < songs.size(); i++) {
|
||||
if (file1.getPath().equals(songs.get(i).data)) { // path is already canonical here
|
||||
startIndex = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
new ListSongsAsyncTask(getActivity(), file, new ListSongsAsyncTask.OnSongsListedCallback() {
|
||||
@Override
|
||||
public void onSongsListed(@NonNull ArrayList<Song> songs, Object extra) {
|
||||
File file = (File) extra;
|
||||
int startIndex = -1;
|
||||
for (int i = 0; i < songs.size(); i++) {
|
||||
if (file.getPath().equals(songs.get(i).data)) { // path is already canonical here
|
||||
startIndex = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (startIndex > -1) {
|
||||
MusicPlayerRemote.openQueue(songs, startIndex, true);
|
||||
} else {
|
||||
final File finalFile = file;
|
||||
Snackbar.make(coordinatorLayout, Html.fromHtml(String.format(getString(R.string.not_listed_in_media_store), file.getName())), Snackbar.LENGTH_LONG)
|
||||
.setAction(R.string.action_scan, new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
new ListPathsAsyncTask(getActivity(), new ListPathsAsyncTask.OnPathsListedCallback() {
|
||||
@Override
|
||||
public void onPathsListed(@Nullable String[] paths) {
|
||||
scanPaths(paths);
|
||||
}
|
||||
}).execute(new ListPathsAsyncTask.LoadingInfo(finalFile, getFileFilter()));
|
||||
}
|
||||
})
|
||||
.setActionTextColor(ThemeStore.accentColor(getActivity()))
|
||||
.show();
|
||||
}
|
||||
if (startIndex > -1) {
|
||||
MusicPlayerRemote.openQueue(songs, startIndex, true);
|
||||
} else {
|
||||
final File finalFile = file1;
|
||||
Snackbar.make(coordinatorLayout, Html.fromHtml(String.format(getString(R.string.not_listed_in_media_store), file1.getName())), Snackbar.LENGTH_LONG)
|
||||
.setAction(R.string.action_scan, v -> new ListPathsAsyncTask(getActivity(), paths -> scanPaths(paths)).execute(new ListPathsAsyncTask.LoadingInfo(finalFile, getFileFilter())))
|
||||
.setActionTextColor(ThemeStore.accentColor(getActivity()))
|
||||
.show();
|
||||
}
|
||||
}).execute(new ListSongsAsyncTask.LoadingInfo(toList(file.getParentFile()), fileFilter, getFileComparator()));
|
||||
}
|
||||
|
|
@ -342,12 +324,7 @@ public class FoldersFragment extends AbsMainActivityFragment implements MainActi
|
|||
@Override
|
||||
public void onMultipleItemAction(MenuItem item, ArrayList<File> files) {
|
||||
final int itemId = item.getItemId();
|
||||
new ListSongsAsyncTask(getActivity(), null, new ListSongsAsyncTask.OnSongsListedCallback() {
|
||||
@Override
|
||||
public void onSongsListed(@NonNull ArrayList<Song> songs, Object extra) {
|
||||
SongsMenuHelper.handleMenuClick(getActivity(), songs, itemId);
|
||||
}
|
||||
}).execute(new ListSongsAsyncTask.LoadingInfo(files, getFileFilter(), getFileComparator()));
|
||||
new ListSongsAsyncTask(getActivity(), null, (songs, extra) -> SongsMenuHelper.handleMenuClick(getActivity(), songs, itemId)).execute(new ListSongsAsyncTask.LoadingInfo(files, getFileFilter(), getFileComparator()));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -355,73 +332,47 @@ public class FoldersFragment extends AbsMainActivityFragment implements MainActi
|
|||
PopupMenu popupMenu = new PopupMenu(getActivity(), view);
|
||||
if (file.isDirectory()) {
|
||||
popupMenu.inflate(R.menu.menu_item_directory);
|
||||
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
|
||||
@Override
|
||||
public boolean onMenuItemClick(MenuItem item) {
|
||||
final int itemId = item.getItemId();
|
||||
switch (itemId) {
|
||||
case R.id.action_play_next:
|
||||
case R.id.action_add_to_current_playing:
|
||||
case R.id.action_add_to_playlist:
|
||||
case R.id.action_delete_from_device:
|
||||
new ListSongsAsyncTask(getActivity(), null, new ListSongsAsyncTask.OnSongsListedCallback() {
|
||||
@Override
|
||||
public void onSongsListed(@NonNull ArrayList<Song> songs, Object extra) {
|
||||
SongsMenuHelper.handleMenuClick(getActivity(), songs, itemId);
|
||||
}
|
||||
}).execute(new ListSongsAsyncTask.LoadingInfo(toList(file), getFileFilter(), getFileComparator()));
|
||||
return true;
|
||||
case R.id.action_set_as_start_directory:
|
||||
PreferenceUtil.getInstance(getActivity()).setStartDirectory(file);
|
||||
Toast.makeText(getActivity(), String.format(getString(R.string.new_start_directory), file.getPath()), Toast.LENGTH_SHORT).show();
|
||||
return true;
|
||||
case R.id.action_scan:
|
||||
new ListPathsAsyncTask(getActivity(), new ListPathsAsyncTask.OnPathsListedCallback() {
|
||||
@Override
|
||||
public void onPathsListed(@Nullable String[] paths) {
|
||||
scanPaths(paths);
|
||||
}
|
||||
}).execute(new ListPathsAsyncTask.LoadingInfo(file, getFileFilter()));
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
popupMenu.setOnMenuItemClickListener(item -> {
|
||||
final int itemId = item.getItemId();
|
||||
switch (itemId) {
|
||||
case R.id.action_play_next:
|
||||
case R.id.action_add_to_current_playing:
|
||||
case R.id.action_add_to_playlist:
|
||||
case R.id.action_delete_from_device:
|
||||
new ListSongsAsyncTask(getActivity(), null, (songs, extra) -> SongsMenuHelper.handleMenuClick(getActivity(), songs, itemId)).execute(new ListSongsAsyncTask.LoadingInfo(toList(file), getFileFilter(), getFileComparator()));
|
||||
return true;
|
||||
case R.id.action_set_as_start_directory:
|
||||
PreferenceUtil.getInstance(getActivity()).setStartDirectory(file);
|
||||
Toast.makeText(getActivity(), String.format(getString(R.string.new_start_directory), file.getPath()), Toast.LENGTH_SHORT).show();
|
||||
return true;
|
||||
case R.id.action_scan:
|
||||
new ListPathsAsyncTask(getActivity(), paths -> scanPaths(paths)).execute(new ListPathsAsyncTask.LoadingInfo(file, getFileFilter()));
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
} else {
|
||||
popupMenu.inflate(R.menu.menu_item_file);
|
||||
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
|
||||
@Override
|
||||
public boolean onMenuItemClick(MenuItem item) {
|
||||
final int itemId = item.getItemId();
|
||||
switch (itemId) {
|
||||
case R.id.action_play_next:
|
||||
case R.id.action_add_to_current_playing:
|
||||
case R.id.action_add_to_playlist:
|
||||
case R.id.action_go_to_album:
|
||||
case R.id.action_go_to_artist:
|
||||
case R.id.action_share:
|
||||
case R.id.action_tag_editor:
|
||||
case R.id.action_details:
|
||||
case R.id.action_set_as_ringtone:
|
||||
case R.id.action_delete_from_device:
|
||||
new ListSongsAsyncTask(getActivity(), null, new ListSongsAsyncTask.OnSongsListedCallback() {
|
||||
@Override
|
||||
public void onSongsListed(@NonNull ArrayList<Song> songs, Object extra) {
|
||||
SongMenuHelper.handleMenuClick(getActivity(), songs.get(0), itemId);
|
||||
}
|
||||
}).execute(new ListSongsAsyncTask.LoadingInfo(toList(file), getFileFilter(), getFileComparator()));
|
||||
return true;
|
||||
case R.id.action_scan:
|
||||
new ListPathsAsyncTask(getActivity(), new ListPathsAsyncTask.OnPathsListedCallback() {
|
||||
@Override
|
||||
public void onPathsListed(@Nullable String[] paths) {
|
||||
scanPaths(paths);
|
||||
}
|
||||
}).execute(new ListPathsAsyncTask.LoadingInfo(file, getFileFilter()));
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
popupMenu.setOnMenuItemClickListener(item -> {
|
||||
final int itemId = item.getItemId();
|
||||
switch (itemId) {
|
||||
case R.id.action_play_next:
|
||||
case R.id.action_add_to_current_playing:
|
||||
case R.id.action_add_to_playlist:
|
||||
case R.id.action_go_to_album:
|
||||
case R.id.action_go_to_artist:
|
||||
case R.id.action_share:
|
||||
case R.id.action_tag_editor:
|
||||
case R.id.action_details:
|
||||
case R.id.action_set_as_ringtone:
|
||||
case R.id.action_delete_from_device:
|
||||
new ListSongsAsyncTask(getActivity(), null, (songs, extra) -> SongMenuHelper.handleMenuClick(getActivity(), songs.get(0), itemId)).execute(new ListSongsAsyncTask.LoadingInfo(toList(file), getFileFilter(), getFileComparator()));
|
||||
return true;
|
||||
case R.id.action_scan:
|
||||
new ListPathsAsyncTask(getActivity(), paths -> scanPaths(paths)).execute(new ListPathsAsyncTask.LoadingInfo(file, getFileFilter()));
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
}
|
||||
popupMenu.show();
|
||||
|
|
@ -433,17 +384,14 @@ public class FoldersFragment extends AbsMainActivityFragment implements MainActi
|
|||
return files;
|
||||
}
|
||||
|
||||
Comparator<File> fileComparator = new Comparator<File>() {
|
||||
@Override
|
||||
public int compare(File lhs, File rhs) {
|
||||
if (lhs.isDirectory() && !rhs.isDirectory()) {
|
||||
return -1;
|
||||
} else if (!lhs.isDirectory() && rhs.isDirectory()) {
|
||||
return 1;
|
||||
} else {
|
||||
return lhs.getName().compareToIgnoreCase
|
||||
(rhs.getName());
|
||||
}
|
||||
Comparator<File> fileComparator = (lhs, rhs) -> {
|
||||
if (lhs.isDirectory() && !rhs.isDirectory()) {
|
||||
return -1;
|
||||
} else if (!lhs.isDirectory() && rhs.isDirectory()) {
|
||||
return 1;
|
||||
} else {
|
||||
return lhs.getName().compareToIgnoreCase
|
||||
(rhs.getName());
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -451,14 +399,9 @@ public class FoldersFragment extends AbsMainActivityFragment implements MainActi
|
|||
return fileComparator;
|
||||
}
|
||||
|
||||
FileFilter audioFileFilter = new FileFilter() {
|
||||
@Override
|
||||
public boolean accept(File file) {
|
||||
return !file.isHidden() && (file.isDirectory() ||
|
||||
FileUtil.fileIsMimeType(file, "audio/*", MimeTypeMap.getSingleton()) ||
|
||||
FileUtil.fileIsMimeType(file, "application/ogg", MimeTypeMap.getSingleton()));
|
||||
}
|
||||
};
|
||||
FileFilter audioFileFilter = file -> !file.isHidden() && (file.isDirectory() ||
|
||||
FileUtil.fileIsMimeType(file, "audio/*", MimeTypeMap.getSingleton()) ||
|
||||
FileUtil.fileIsMimeType(file, "application/ogg", MimeTypeMap.getSingleton()));
|
||||
|
||||
private FileFilter getFileFilter() {
|
||||
return audioFileFilter;
|
||||
|
|
@ -722,25 +665,10 @@ public class FoldersFragment extends AbsMainActivityFragment implements MainActi
|
|||
.title(R.string.listing_files)
|
||||
.progress(true, 0)
|
||||
.progressIndeterminateStyle(true)
|
||||
.cancelListener(new DialogInterface.OnCancelListener() {
|
||||
@Override
|
||||
public void onCancel(DialogInterface dialog) {
|
||||
cancel(false);
|
||||
}
|
||||
})
|
||||
.dismissListener(new DialogInterface.OnDismissListener() {
|
||||
@Override
|
||||
public void onDismiss(DialogInterface dialog) {
|
||||
cancel(false);
|
||||
}
|
||||
})
|
||||
.cancelListener(dialog -> cancel(false))
|
||||
.dismissListener(dialog -> cancel(false))
|
||||
.negativeText(android.R.string.cancel)
|
||||
.onNegative(new MaterialDialog.SingleButtonCallback() {
|
||||
@Override
|
||||
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
|
||||
cancel(false);
|
||||
}
|
||||
})
|
||||
.onNegative((dialog, which) -> cancel(false))
|
||||
.show();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -113,12 +113,7 @@ public abstract class AbsPlayerFragment extends AbsMusicServiceFragment implemen
|
|||
|
||||
setToolbarShown(false);
|
||||
|
||||
toolbar.animate().alpha(0f).setDuration(PlayerAlbumCoverFragment.VISIBILITY_ANIM_DURATION).withEndAction(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
toolbar.setVisibility(View.GONE);
|
||||
}
|
||||
});
|
||||
toolbar.animate().alpha(0f).setDuration(PlayerAlbumCoverFragment.VISIBILITY_ANIM_DURATION).withEndAction(() -> toolbar.setVisibility(View.GONE));
|
||||
}
|
||||
|
||||
protected void toggleToolbar(@Nullable final View toolbar) {
|
||||
|
|
|
|||
|
|
@ -167,18 +167,13 @@ public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements
|
|||
favoriteIcon.setVisibility(View.INVISIBLE);
|
||||
}
|
||||
})
|
||||
.withEndAction(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
favoriteIcon.animate()
|
||||
.setDuration(ViewUtil.PHONOGRAPH_ANIM_TIME / 2)
|
||||
.setInterpolator(new AccelerateInterpolator())
|
||||
.scaleX(0f)
|
||||
.scaleY(0f)
|
||||
.alpha(0f)
|
||||
.start();
|
||||
}
|
||||
})
|
||||
.withEndAction(() -> favoriteIcon.animate()
|
||||
.setDuration(ViewUtil.PHONOGRAPH_ANIM_TIME / 2)
|
||||
.setInterpolator(new AccelerateInterpolator())
|
||||
.scaleX(0f)
|
||||
.scaleY(0f)
|
||||
.alpha(0f)
|
||||
.start())
|
||||
.start();
|
||||
}
|
||||
|
||||
|
|
@ -191,14 +186,11 @@ public class PlayerAlbumCoverFragment extends AbsMusicServiceFragment implements
|
|||
}
|
||||
|
||||
private void hideLyricsLayout() {
|
||||
lyricsLayout.animate().alpha(0f).setDuration(PlayerAlbumCoverFragment.VISIBILITY_ANIM_DURATION).withEndAction(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (!isLyricsLayoutBound()) return;
|
||||
lyricsLayout.setVisibility(View.GONE);
|
||||
lyricsLine1.setText(null);
|
||||
lyricsLine2.setText(null);
|
||||
}
|
||||
lyricsLayout.animate().alpha(0f).setDuration(PlayerAlbumCoverFragment.VISIBILITY_ANIM_DURATION).withEndAction(() -> {
|
||||
if (!isLyricsLayoutBound()) return;
|
||||
lyricsLayout.setVisibility(View.GONE);
|
||||
lyricsLine1.setText(null);
|
||||
lyricsLine2.setText(null);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -234,12 +234,7 @@ public class CardPlayerFragment extends AbsPlayerFragment implements PlayerAlbum
|
|||
private void setUpPlayerToolbar() {
|
||||
toolbar.inflateMenu(R.menu.menu_player);
|
||||
toolbar.setNavigationIcon(R.drawable.ic_close_white_24dp);
|
||||
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
getActivity().onBackPressed();
|
||||
}
|
||||
});
|
||||
toolbar.setNavigationOnClickListener(v -> getActivity().onBackPressed());
|
||||
toolbar.setOnMenuItemClickListener(this);
|
||||
}
|
||||
|
||||
|
|
@ -521,15 +516,12 @@ public class CardPlayerFragment extends AbsPlayerFragment implements PlayerAlbum
|
|||
currentSongViewHolder.image.setScaleType(ImageView.ScaleType.CENTER);
|
||||
currentSongViewHolder.image.setColorFilter(ATHUtil.resolveColor(fragment.getActivity(), R.attr.iconColor, ThemeStore.textColorSecondary(fragment.getActivity())), PorterDuff.Mode.SRC_IN);
|
||||
currentSongViewHolder.image.setImageResource(R.drawable.ic_volume_up_white_24dp);
|
||||
currentSongViewHolder.itemView.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
// toggle the panel
|
||||
if (fragment.slidingUpPanelLayout.getPanelState() == SlidingUpPanelLayout.PanelState.COLLAPSED) {
|
||||
fragment.slidingUpPanelLayout.setPanelState(SlidingUpPanelLayout.PanelState.EXPANDED);
|
||||
} else if (fragment.slidingUpPanelLayout.getPanelState() == SlidingUpPanelLayout.PanelState.EXPANDED) {
|
||||
fragment.slidingUpPanelLayout.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED);
|
||||
}
|
||||
currentSongViewHolder.itemView.setOnClickListener(v -> {
|
||||
// toggle the panel
|
||||
if (fragment.slidingUpPanelLayout.getPanelState() == SlidingUpPanelLayout.PanelState.COLLAPSED) {
|
||||
fragment.slidingUpPanelLayout.setPanelState(SlidingUpPanelLayout.PanelState.EXPANDED);
|
||||
} else if (fragment.slidingUpPanelLayout.getPanelState() == SlidingUpPanelLayout.PanelState.EXPANDED) {
|
||||
fragment.slidingUpPanelLayout.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED);
|
||||
}
|
||||
});
|
||||
currentSongViewHolder.menu.setOnClickListener(new SongMenuHelper.OnClickSongMenu((AppCompatActivity) fragment.getActivity()) {
|
||||
|
|
|
|||
|
|
@ -145,13 +145,10 @@ public class CardPlayerPlaybackControlsFragment extends AbsMusicServiceFragment
|
|||
playPauseFab.setImageDrawable(playerFabPlayPauseDrawable); // Note: set the drawable AFTER TintHelper.setTintAuto() was called
|
||||
playPauseFab.setColorFilter(MaterialValueHelper.getPrimaryTextColor(getContext(), ColorUtil.isColorLight(fabColor)), PorterDuff.Mode.SRC_IN);
|
||||
playPauseFab.setOnClickListener(new PlayPauseButtonOnClickHandler());
|
||||
playPauseFab.post(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (playPauseFab != null) {
|
||||
playPauseFab.setPivotX(playPauseFab.getWidth() / 2);
|
||||
playPauseFab.setPivotY(playPauseFab.getHeight() / 2);
|
||||
}
|
||||
playPauseFab.post(() -> {
|
||||
if (playPauseFab != null) {
|
||||
playPauseFab.setPivotX(playPauseFab.getWidth() / 2);
|
||||
playPauseFab.setPivotY(playPauseFab.getHeight() / 2);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
@ -174,18 +171,8 @@ public class CardPlayerPlaybackControlsFragment extends AbsMusicServiceFragment
|
|||
|
||||
private void setUpPrevNext() {
|
||||
updatePrevNextColor();
|
||||
nextButton.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
MusicPlayerRemote.playNextSong();
|
||||
}
|
||||
});
|
||||
prevButton.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
MusicPlayerRemote.back();
|
||||
}
|
||||
});
|
||||
nextButton.setOnClickListener(v -> MusicPlayerRemote.playNextSong());
|
||||
prevButton.setOnClickListener(v -> MusicPlayerRemote.back());
|
||||
}
|
||||
|
||||
private void updateProgressTextColor() {
|
||||
|
|
@ -200,12 +187,7 @@ public class CardPlayerPlaybackControlsFragment extends AbsMusicServiceFragment
|
|||
}
|
||||
|
||||
private void setUpShuffleButton() {
|
||||
shuffleButton.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
MusicPlayerRemote.toggleShuffleMode();
|
||||
}
|
||||
});
|
||||
shuffleButton.setOnClickListener(v -> MusicPlayerRemote.toggleShuffleMode());
|
||||
}
|
||||
|
||||
private void updateShuffleState() {
|
||||
|
|
@ -220,12 +202,7 @@ public class CardPlayerPlaybackControlsFragment extends AbsMusicServiceFragment
|
|||
}
|
||||
|
||||
private void setUpRepeatButton() {
|
||||
repeatButton.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
MusicPlayerRemote.cycleRepeatMode();
|
||||
}
|
||||
});
|
||||
repeatButton.setOnClickListener(v -> MusicPlayerRemote.cycleRepeatMode());
|
||||
}
|
||||
|
||||
private void updateRepeatState() {
|
||||
|
|
|
|||
|
|
@ -229,12 +229,7 @@ public class FlatPlayerFragment extends AbsPlayerFragment implements PlayerAlbum
|
|||
private void setUpPlayerToolbar() {
|
||||
toolbar.inflateMenu(R.menu.menu_player);
|
||||
toolbar.setNavigationIcon(R.drawable.ic_close_white_24dp);
|
||||
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
getActivity().onBackPressed();
|
||||
}
|
||||
});
|
||||
toolbar.setNavigationOnClickListener(v -> getActivity().onBackPressed());
|
||||
toolbar.setOnMenuItemClickListener(this);
|
||||
}
|
||||
|
||||
|
|
@ -500,15 +495,12 @@ public class FlatPlayerFragment extends AbsPlayerFragment implements PlayerAlbum
|
|||
currentSongViewHolder.image.setScaleType(ImageView.ScaleType.CENTER);
|
||||
currentSongViewHolder.image.setColorFilter(ATHUtil.resolveColor(fragment.getActivity(), R.attr.iconColor, ThemeStore.textColorSecondary(fragment.getActivity())), PorterDuff.Mode.SRC_IN);
|
||||
currentSongViewHolder.image.setImageResource(R.drawable.ic_volume_up_white_24dp);
|
||||
currentSongViewHolder.itemView.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
// toggle the panel
|
||||
if (fragment.slidingUpPanelLayout.getPanelState() == SlidingUpPanelLayout.PanelState.COLLAPSED) {
|
||||
fragment.slidingUpPanelLayout.setPanelState(SlidingUpPanelLayout.PanelState.EXPANDED);
|
||||
} else if (fragment.slidingUpPanelLayout.getPanelState() == SlidingUpPanelLayout.PanelState.EXPANDED) {
|
||||
fragment.slidingUpPanelLayout.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED);
|
||||
}
|
||||
currentSongViewHolder.itemView.setOnClickListener(v -> {
|
||||
// toggle the panel
|
||||
if (fragment.slidingUpPanelLayout.getPanelState() == SlidingUpPanelLayout.PanelState.COLLAPSED) {
|
||||
fragment.slidingUpPanelLayout.setPanelState(SlidingUpPanelLayout.PanelState.EXPANDED);
|
||||
} else if (fragment.slidingUpPanelLayout.getPanelState() == SlidingUpPanelLayout.PanelState.EXPANDED) {
|
||||
fragment.slidingUpPanelLayout.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED);
|
||||
}
|
||||
});
|
||||
currentSongViewHolder.menu.setOnClickListener(new SongMenuHelper.OnClickSongMenu((AppCompatActivity) fragment.getActivity()) {
|
||||
|
|
|
|||
|
|
@ -150,13 +150,10 @@ public class FlatPlayerPlaybackControlsFragment extends AbsMusicServiceFragment
|
|||
playPauseButton.setImageDrawable(playPauseDrawable);
|
||||
updatePlayPauseColor();
|
||||
playPauseButton.setOnClickListener(new PlayPauseButtonOnClickHandler());
|
||||
playPauseButton.post(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (playPauseButton != null) {
|
||||
playPauseButton.setPivotX(playPauseButton.getWidth() / 2);
|
||||
playPauseButton.setPivotY(playPauseButton.getHeight() / 2);
|
||||
}
|
||||
playPauseButton.post(() -> {
|
||||
if (playPauseButton != null) {
|
||||
playPauseButton.setPivotX(playPauseButton.getWidth() / 2);
|
||||
playPauseButton.setPivotY(playPauseButton.getHeight() / 2);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
@ -179,18 +176,8 @@ public class FlatPlayerPlaybackControlsFragment extends AbsMusicServiceFragment
|
|||
|
||||
private void setUpPrevNext() {
|
||||
updatePrevNextColor();
|
||||
nextButton.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
MusicPlayerRemote.playNextSong();
|
||||
}
|
||||
});
|
||||
prevButton.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
MusicPlayerRemote.back();
|
||||
}
|
||||
});
|
||||
nextButton.setOnClickListener(v -> MusicPlayerRemote.playNextSong());
|
||||
prevButton.setOnClickListener(v -> MusicPlayerRemote.back());
|
||||
}
|
||||
|
||||
private void updateProgressTextColor() {
|
||||
|
|
@ -209,12 +196,7 @@ public class FlatPlayerPlaybackControlsFragment extends AbsMusicServiceFragment
|
|||
}
|
||||
|
||||
private void setUpShuffleButton() {
|
||||
shuffleButton.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
MusicPlayerRemote.toggleShuffleMode();
|
||||
}
|
||||
});
|
||||
shuffleButton.setOnClickListener(v -> MusicPlayerRemote.toggleShuffleMode());
|
||||
}
|
||||
|
||||
private void updateShuffleState() {
|
||||
|
|
@ -229,12 +211,7 @@ public class FlatPlayerPlaybackControlsFragment extends AbsMusicServiceFragment
|
|||
}
|
||||
|
||||
private void setUpRepeatButton() {
|
||||
repeatButton.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
MusicPlayerRemote.cycleRepeatMode();
|
||||
}
|
||||
});
|
||||
repeatButton.setOnClickListener(v -> MusicPlayerRemote.cycleRepeatMode());
|
||||
}
|
||||
|
||||
private void updateRepeatState() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue