From 6392f7abd4c778e2058c7a37bea2c6cfdde26496 Mon Sep 17 00:00:00 2001 From: Martin Fietz Date: Sun, 24 Jan 2016 12:59:25 +0100 Subject: Eliminate confusion from UI elements that change playback speed --- .../antennapod/activity/MediaplayerActivity.java | 36 ++++++++++++++++------ .../antennapod/dialog/VariableSpeedDialog.java | 12 ++++++-- 2 files changed, 36 insertions(+), 12 deletions(-) (limited to 'app/src/main/java/de') diff --git a/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java index a066beee9..879a4544d 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java @@ -427,15 +427,23 @@ public abstract class MediaplayerActivity extends AppCompatActivity implements O }) .show(); final SeekBar barPlaybackSpeed = (SeekBar) dialog.findViewById(R.id.playback_speed); - final Button butDecSpeed = (Button) dialog.findViewById(R.id.butDecSpeed); butDecSpeed.setOnClickListener(v -> { - barPlaybackSpeed.setProgress(barPlaybackSpeed.getProgress() - 2); + if(controller != null && controller.canSetPlaybackSpeed()) { + barPlaybackSpeed.setProgress(barPlaybackSpeed.getProgress() - 2); + } else { + VariableSpeedDialog.showGetPluginDialog(this); + } }); final Button butIncSpeed = (Button) dialog.findViewById(R.id.butIncSpeed); butIncSpeed.setOnClickListener(v -> { - barPlaybackSpeed.setProgress(barPlaybackSpeed.getProgress() + 2); + if(controller != null && controller.canSetPlaybackSpeed()) { + barPlaybackSpeed.setProgress(barPlaybackSpeed.getProgress() + 2); + } else { + VariableSpeedDialog.showGetPluginDialog(this); + } }); + final TextView txtvPlaybackSpeed = (TextView) dialog.findViewById(R.id.txtvPlaybackSpeed); float currentSpeed = 1.0f; try { @@ -449,15 +457,25 @@ public abstract class MediaplayerActivity extends AppCompatActivity implements O barPlaybackSpeed.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { - float playbackSpeed = (progress + 10) / 20.0f; - controller.setPlaybackSpeed(playbackSpeed); - String speed = String.format("%.2f", playbackSpeed); - UserPreferences.setPlaybackSpeed(speed); - txtvPlaybackSpeed.setText(speed + "x"); + if(controller != null && controller.canSetPlaybackSpeed()) { + float playbackSpeed = (progress + 10) / 20.0f; + controller.setPlaybackSpeed(playbackSpeed); + String speed = String.format("%.2f", playbackSpeed); + UserPreferences.setPlaybackSpeed(speed); + txtvPlaybackSpeed.setText(speed + "x"); + } else if(fromUser) { + float speed = Float.valueOf(UserPreferences.getPlaybackSpeed()); + barPlaybackSpeed.post(() -> { + barPlaybackSpeed.setProgress((int) (20 * speed) - 10); + }); + } } @Override public void onStartTrackingTouch(SeekBar seekBar) { + if(controller != null && !controller.canSetPlaybackSpeed()) { + VariableSpeedDialog.showGetPluginDialog(MediaplayerActivity.this); + } } @Override @@ -740,7 +758,7 @@ public abstract class MediaplayerActivity extends AppCompatActivity implements O UserPreferences.setPlaybackSpeed(newSpeed); controller.setPlaybackSpeed(Float.parseFloat(newSpeed)); } else { - VariableSpeedDialog.showDialog(this); + VariableSpeedDialog.showGetPluginDialog(this); } }); butPlaybackSpeed.setOnLongClickListener(v -> { diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/VariableSpeedDialog.java b/app/src/main/java/de/danoeh/antennapod/dialog/VariableSpeedDialog.java index 6d19b0612..3ed82b9bd 100644 --- a/app/src/main/java/de/danoeh/antennapod/dialog/VariableSpeedDialog.java +++ b/app/src/main/java/de/danoeh/antennapod/dialog/VariableSpeedDialog.java @@ -35,11 +35,15 @@ public class VariableSpeedDialog { || Build.VERSION.SDK_INT >= 23) { showSpeedSelectorDialog(context); } else { - showGetPluginDialog(context); + showGetPluginDialog(context, true); } } - private static void showGetPluginDialog(final Context context) { + public static void showGetPluginDialog(final Context context) { + showGetPluginDialog(context, false); + } + + private static void showGetPluginDialog(final Context context, boolean showSpeedSelector) { MaterialDialog.Builder builder = new MaterialDialog.Builder(context); builder.title(R.string.no_playback_plugin_title); builder.content(R.string.no_playback_plugin_or_sonic_msg); @@ -49,7 +53,9 @@ public class VariableSpeedDialog { builder.onPositive((dialog, which) -> { if (Build.VERSION.SDK_INT >= 16) { // just to be safe UserPreferences.enableSonic(true); - showSpeedSelectorDialog(context); + if(showSpeedSelector) { + showSpeedSelectorDialog(context); + } } }); builder.onNegative((dialog, which) -> { -- cgit v1.2.3