aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/github/daneren2005/dsub/fragments/NowPlayingFragment.java
diff options
context:
space:
mode:
authorMarcus <marcuswrogers@gmail.com>2017-04-12 09:19:26 -0700
committerMarcus <marcuswrogers@gmail.com>2017-04-12 09:19:26 -0700
commitbb221e09ffe719ecd2d1c41aeba492ac2adf6151 (patch)
tree9d6a6022165b89690b598b5f697b68d8c2517277 /app/src/main/java/github/daneren2005/dsub/fragments/NowPlayingFragment.java
parent977526485a1b9999c1f441121b6529972ea6ee8b (diff)
downloaddsub-bb221e09ffe719ecd2d1c41aeba492ac2adf6151.tar.gz
dsub-bb221e09ffe719ecd2d1c41aeba492ac2adf6151.tar.bz2
dsub-bb221e09ffe719ecd2d1c41aeba492ac2adf6151.zip
Enhanced Playback speed UI using shehabic/Droppy library and persistence of speed settings between songs and non-songs.
Diffstat (limited to 'app/src/main/java/github/daneren2005/dsub/fragments/NowPlayingFragment.java')
-rw-r--r--app/src/main/java/github/daneren2005/dsub/fragments/NowPlayingFragment.java137
1 files changed, 53 insertions, 84 deletions
diff --git a/app/src/main/java/github/daneren2005/dsub/fragments/NowPlayingFragment.java b/app/src/main/java/github/daneren2005/dsub/fragments/NowPlayingFragment.java
index bf91bd1a..19df9bfb 100644
--- a/app/src/main/java/github/daneren2005/dsub/fragments/NowPlayingFragment.java
+++ b/app/src/main/java/github/daneren2005/dsub/fragments/NowPlayingFragment.java
@@ -55,6 +55,9 @@ import android.widget.PopupMenu;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.ViewFlipper;
+import com.shehabic.droppy.DroppyClickCallbackInterface;
+import com.shehabic.droppy.DroppyMenuPopup;
+import com.shehabic.droppy.animations.DroppyFadeInAnimation;
import github.daneren2005.dsub.R;
import github.daneren2005.dsub.activity.SubsonicFragmentActivity;
import github.daneren2005.dsub.adapter.SectionAdapter;
@@ -132,6 +135,7 @@ public class NowPlayingFragment extends SubsonicFragment implements OnGestureLis
private int lastY = 0;
private int currentPlayingSize = 0;
private MenuItem timerMenu;
+ private DroppySpeedControl speed;
/**
* Called when the activity is first created.
@@ -391,41 +395,7 @@ public class NowPlayingFragment extends SubsonicFragment implements OnGestureLis
});
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
- playbackSpeedButton.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- PopupMenu popup = new PopupMenu(context, v);
- popup.getMenuInflater().inflate(R.menu.playback_speed_options, popup.getMenu());
-
- popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
- @Override
- public boolean onMenuItemClick(MenuItem menuItem) {
- float playbackSpeed = 1.0f;
- switch (menuItem.getItemId()) {
- case R.id.playback_speed_half:
- playbackSpeed = 0.5f;
- break;
- case R.id.playback_speed_one_half:
- playbackSpeed = 1.5f;
- break;
- case R.id.playback_speed_double:
- playbackSpeed = 2.0f;
- break;
- case R.id.playback_speed_tripple:
- playbackSpeed = 3.0f;
- break;
- case R.id.playback_speed_custom:
- setPlaybackSpeed();
- return true;
- }
-
- setPlaybackSpeed(playbackSpeed);
- return true;
- }
- });
- popup.show();
- }
- });
+ setPlaybackSpeed();
} else {
playbackSpeedButton.setVisibility(View.GONE);
}
@@ -1277,6 +1247,7 @@ public class NowPlayingFragment extends SubsonicFragment implements OnGestureLis
}
}
updateTitle();
+ setPlaybackSpeed();
}
private void setupSubtitle(int currentPlayingIndex) {
@@ -1345,6 +1316,7 @@ public class NowPlayingFragment extends SubsonicFragment implements OnGestureLis
toggleListButton.setVisibility(View.VISIBLE);
repeatButton.setVisibility(View.VISIBLE);
}
+ setPlaybackSpeed();
}
@Override
@@ -1546,55 +1518,52 @@ public class NowPlayingFragment extends SubsonicFragment implements OnGestureLis
}
private void setPlaybackSpeed() {
- View dialogView = context.getLayoutInflater().inflate(R.layout.set_playback_speed, null);
-
- // Setup playbackSpeed label
- final TextView playbackSpeedBox = (TextView) dialogView.findViewById(R.id.playback_speed_label);
- final SharedPreferences prefs = Util.getPreferences(context);
- String playbackSpeedString = prefs.getString(Constants.PREFERENCES_KEY_CUSTOM_PLAYBACK_SPEED, "17");
- int playbackSpeed = Integer.parseInt(playbackSpeedString);
- playbackSpeedBox.setText(new Float(playbackSpeed / 10.0).toString());
-
- // Setup playbackSpeed slider
- final SeekBar playbackSpeedBar = (SeekBar) dialogView.findViewById(R.id.playback_speed_bar);
- playbackSpeedBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
- @Override
- public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
- if (fromUser) {
- playbackSpeedBox.setText(new Float((progress + 5) / 10.0).toString());
- seekBar.setProgress(progress);
- }
- }
-
- @Override
- public void onStartTrackingTouch(SeekBar seekBar) {
- }
-
- @Override
- public void onStopTrackingTouch(SeekBar seekBar) {
- }
- });
- playbackSpeedBar.setProgress(playbackSpeed - 5);
-
- AlertDialog.Builder builder = new AlertDialog.Builder(context);
- builder.setTitle(R.string.download_playback_speed_custom)
- .setView(dialogView)
- .setPositiveButton(R.string.common_ok, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int id) {
- int playbackSpeed = playbackSpeedBar.getProgress() + 5;
-
- SharedPreferences.Editor editor = prefs.edit();
- editor.putString(Constants.PREFERENCES_KEY_CUSTOM_PLAYBACK_SPEED, Integer.toString(playbackSpeed));
- editor.commit();
-
- setPlaybackSpeed(new Float(playbackSpeed / 10.0));
- }
- })
- .setNegativeButton(R.string.common_cancel, null);
- AlertDialog dialog = builder.create();
- dialog.show();
- }
+ if (playbackSpeedButton.getVisibility() == View.GONE)
+ return;
+ speed = new DroppySpeedControl(R.layout.set_playback_speed);
+ DroppyMenuPopup.Builder builder = new DroppyMenuPopup.Builder(context,playbackSpeedButton);
+ speed.setClickable(true);
+ float playbackSpeed;
+
+ playbackSpeed = getDownloadService() != null ? getDownloadService().getPlaybackSpeed() : 1.0f;
+
+ final DroppyMenuPopup popup = builder.triggerOnAnchorClick(true).addMenuItem(speed).setPopupAnimation(new DroppyFadeInAnimation()).build();
+ speed.setOnSeekBarChangeListener(context, new DroppyClickCallbackInterface() {
+ @Override
+ public void call(View v, int id) {
+ SeekBar playbackSpeedBar = (SeekBar) v;
+ int playbackSpeed = playbackSpeedBar.getProgress() +5 ;
+ setPlaybackSpeed(playbackSpeed/10f);
+ }
+ },R.id.playback_speed_bar,R.id.playback_speed_label,playbackSpeed);
+ speed.setOnClicks(context,
+ new DroppyClickCallbackInterface() {
+ @Override
+ public void call(View v, int id) {
+ float playbackSpeed = 1.0f;
+ switch (id) {
+ case R.id.playback_speed_one_half:
+ playbackSpeed = 1.5f;
+ break;
+ case R.id.playback_speed_double:
+ playbackSpeed = 2.0f;
+ break;
+ case R.id.playback_speed_triple:
+ playbackSpeed = 3.0f;
+ break;
+ default:
+ break;
+ }
+ setPlaybackSpeed(playbackSpeed);
+ speed.updateSeekBar(playbackSpeed);
+ popup.dismiss(true);
+ }
+ }
+ ,R.id.playback_speed_normal,R.id.playback_speed_one_half,R.id.playback_speed_double,
+ R.id.playback_speed_triple);
+ speed.updateSeekBar(playbackSpeed);
+
+ }
private void setPlaybackSpeed(float playbackSpeed) {
DownloadService downloadService = getDownloadService();
if (downloadService == null) {