diff options
author | Marcus <marcuswrogers@gmail.com> | 2017-04-12 09:19:26 -0700 |
---|---|---|
committer | Marcus <marcuswrogers@gmail.com> | 2017-04-12 09:19:26 -0700 |
commit | bb221e09ffe719ecd2d1c41aeba492ac2adf6151 (patch) | |
tree | 9d6a6022165b89690b598b5f697b68d8c2517277 /app/src/main/java/github/daneren2005/dsub/fragments/NowPlayingFragment.java | |
parent | 977526485a1b9999c1f441121b6529972ea6ee8b (diff) | |
download | dsub-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.java | 137 |
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) { |