summaryrefslogtreecommitdiff
path: root/app/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/AudioplayerActivity.java183
-rw-r--r--app/src/main/res/layout/choose_speed_dialog.xml33
2 files changed, 135 insertions, 81 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/AudioplayerActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/AudioplayerActivity.java
index b975d482a..480f8a5f8 100644
--- a/app/src/main/java/de/danoeh/antennapod/activity/AudioplayerActivity.java
+++ b/app/src/main/java/de/danoeh/antennapod/activity/AudioplayerActivity.java
@@ -5,6 +5,7 @@ import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.content.res.TypedArray;
+import android.graphics.drawable.BitmapDrawable;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.Fragment;
@@ -15,21 +16,24 @@ import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.ContextMenu;
+import android.view.Gravity;
+import android.view.LayoutInflater;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.View.OnLongClickListener;
+import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ListView;
+import android.widget.PopupWindow;
+import android.widget.SeekBar;
import android.widget.TextView;
import com.bumptech.glide.Glide;
-import com.bumptech.glide.load.engine.DiskCacheStrategy;
+import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import de.danoeh.antennapod.R;
@@ -50,7 +54,6 @@ import de.danoeh.antennapod.core.storage.DBWriter;
import de.danoeh.antennapod.core.util.playback.ExternalMedia;
import de.danoeh.antennapod.core.util.playback.Playable;
import de.danoeh.antennapod.core.util.playback.PlaybackController;
-import de.danoeh.antennapod.dialog.VariableSpeedDialog;
import de.danoeh.antennapod.fragment.CoverFragment;
import de.danoeh.antennapod.fragment.ItemDescriptionFragment;
import de.danoeh.antennapod.menuhandler.NavDrawerActivity;
@@ -61,6 +64,7 @@ import de.danoeh.antennapod.preferences.PreferenceController;
*/
public class AudioplayerActivity extends MediaplayerActivity implements ItemDescriptionFragment.ItemDescriptionFragmentCallback,
NavDrawerActivity {
+
private static final int POS_COVER = 0;
private static final int POS_DESCR = 1;
private static final int POS_CHAPTERS = 2;
@@ -98,6 +102,8 @@ public class AudioplayerActivity extends MediaplayerActivity implements ItemDesc
private ImageButton butNavChaptersShownotes;
private ImageButton butShowCover;
+ private PopupWindow popupWindow;
+
private void resetFragmentView() {
FragmentTransaction fT = getSupportFragmentManager().beginTransaction();
@@ -325,14 +331,11 @@ public class AudioplayerActivity extends MediaplayerActivity implements ItemDesc
};
chapterFragment.setListAdapter(new ChapterListAdapter(
AudioplayerActivity.this, 0, media
- .getChapters(), media, new ChapterListAdapter.Callback() {
- @Override
- public void onPlayChapterButtonClicked(int position) {
- Chapter chapter = (Chapter)
- chapterFragment.getListAdapter().getItem(position);
- controller.seekToChapter(chapter);
- }
- }
+ .getChapters(), media, position -> {
+ Chapter chapter = (Chapter)
+ chapterFragment.getListAdapter().getItem(position);
+ controller.seekToChapter(chapter);
+ }
));
}
currentlyShownFragment = chapterFragment;
@@ -426,91 +429,108 @@ public class AudioplayerActivity extends MediaplayerActivity implements ItemDesc
navAdapter = new NavListAdapter(itemAccess, this);
navList.setAdapter(navAdapter);
- navList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
- int viewType = parent.getAdapter().getItemViewType(position);
- if (viewType != NavListAdapter.VIEW_TYPE_SECTION_DIVIDER) {
- Intent intent = new Intent(AudioplayerActivity.this, MainActivity.class);
- intent.putExtra(MainActivity.EXTRA_NAV_TYPE, viewType);
- intent.putExtra(MainActivity.EXTRA_NAV_INDEX, position);
- startActivity(intent);
- }
- drawerLayout.closeDrawer(navDrawer);
+ navList.setOnItemClickListener((parent, view, position, id) -> {
+ int viewType = parent.getAdapter().getItemViewType(position);
+ if (viewType != NavListAdapter.VIEW_TYPE_SECTION_DIVIDER) {
+ Intent intent = new Intent(AudioplayerActivity.this, MainActivity.class);
+ intent.putExtra(MainActivity.EXTRA_NAV_TYPE, viewType);
+ intent.putExtra(MainActivity.EXTRA_NAV_INDEX, position);
+ startActivity(intent);
}
+ drawerLayout.closeDrawer(navDrawer);
});
registerForContextMenu(navList);
drawerToggle.syncState();
- findViewById(R.id.nav_settings).setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- drawerLayout.closeDrawer(navDrawer);
- startActivity(new Intent(AudioplayerActivity.this, PreferenceController.getPreferenceActivity()));
- }
- });
-
- butNavChaptersShownotes.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- if (currentlyShownPosition == POS_CHAPTERS) {
- switchToFragment(POS_DESCR);
- } else if (currentlyShownPosition == POS_DESCR) {
- switchToFragment(POS_CHAPTERS);
- } else if (currentlyShownPosition == POS_COVER) {
- switchToLastFragment();
- }
- }
+ findViewById(R.id.nav_settings).setOnClickListener(v -> {
+ drawerLayout.closeDrawer(navDrawer);
+ startActivity(new Intent(AudioplayerActivity.this, PreferenceController.getPreferenceActivity()));
});
- butShowCover.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- switchToFragment(POS_COVER);
+ butNavChaptersShownotes.setOnClickListener(v -> {
+ if (currentlyShownPosition == POS_CHAPTERS) {
+ switchToFragment(POS_DESCR);
+ } else if (currentlyShownPosition == POS_DESCR) {
+ switchToFragment(POS_CHAPTERS);
+ } else if (currentlyShownPosition == POS_COVER) {
+ switchToLastFragment();
}
});
- butPlaybackSpeed.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
- if (controller != null && controller.canSetPlaybackSpeed()) {
- String[] availableSpeeds = UserPreferences
- .getPlaybackSpeedArray();
- String currentSpeed = UserPreferences.getPlaybackSpeed();
-
- // Provide initial value in case the speed list has changed
- // out from under us
- // and our current speed isn't in the new list
- String newSpeed;
- if (availableSpeeds.length > 0) {
- newSpeed = availableSpeeds[0];
- } else {
- newSpeed = "1.0";
- }
+ butShowCover.setOnClickListener(v -> switchToFragment(POS_COVER));
+
+ butPlaybackSpeed.setOnClickListener(v -> {
+ if (controller != null && controller.canSetPlaybackSpeed()) {
+ String[] availableSpeeds = UserPreferences
+ .getPlaybackSpeedArray();
+ String currentSpeed = UserPreferences.getPlaybackSpeed();
+
+ // Provide initial value in case the speed list has changed
+ // out from under us
+ // and our current speed isn't in the new list
+ String newSpeed;
+ if (availableSpeeds.length > 0) {
+ newSpeed = availableSpeeds[0];
+ } else {
+ newSpeed = "1.0";
+ }
- for (int i = 0; i < availableSpeeds.length; i++) {
- if (availableSpeeds[i].equals(currentSpeed)) {
- if (i == availableSpeeds.length - 1) {
- newSpeed = availableSpeeds[0];
- } else {
- newSpeed = availableSpeeds[i + 1];
- }
- break;
+ for (int i = 0; i < availableSpeeds.length; i++) {
+ if (availableSpeeds[i].equals(currentSpeed)) {
+ if (i == availableSpeeds.length - 1) {
+ newSpeed = availableSpeeds[0];
+ } else {
+ newSpeed = availableSpeeds[i + 1];
}
+ break;
}
- UserPreferences.setPlaybackSpeed(newSpeed);
- controller.setPlaybackSpeed(Float.parseFloat(newSpeed));
}
+ UserPreferences.setPlaybackSpeed(newSpeed);
+ controller.setPlaybackSpeed(Float.parseFloat(newSpeed));
}
});
- butPlaybackSpeed.setOnLongClickListener(new OnLongClickListener() {
- @Override
- public boolean onLongClick(View v) {
- VariableSpeedDialog.showDialog(AudioplayerActivity.this);
- return true;
- }
+ butPlaybackSpeed.setOnLongClickListener(v -> {
+
+ String[] availableSpeeds = getResources().getStringArray(R.array.playback_speed_values);
+ String currentSpeed = UserPreferences.getPlaybackSpeed();
+
+ LayoutInflater inflater = getLayoutInflater();
+ View popupView = inflater.inflate(R.layout.choose_speed_dialog, null);
+ TextView txtvSelectedSpeed = (TextView) popupView.findViewById(R.id.txtvSelectedSpeed);
+ SeekBar sbSelectSpeed = (SeekBar) popupView.findViewById(R.id.sbSelectSpeed);
+
+ txtvSelectedSpeed.setText(currentSpeed);
+ sbSelectSpeed.setMax(availableSpeeds.length - 1);
+ sbSelectSpeed.setProgress(ArrayUtils.indexOf(availableSpeeds, currentSpeed));
+ sbSelectSpeed.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
+ @Override
+ public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
+ txtvSelectedSpeed.setText(availableSpeeds[progress]);
+ }
+
+ @Override
+ public void onStartTrackingTouch(SeekBar seekBar) {
+ }
+
+ @Override
+ public void onStopTrackingTouch(SeekBar seekBar) {
+ String selectedSpeed = availableSpeeds[sbSelectSpeed.getProgress()];
+ UserPreferences.setPlaybackSpeed(selectedSpeed);
+ controller.setPlaybackSpeed(Float.parseFloat(selectedSpeed));
+ if (popupWindow != null && popupWindow.isShowing()) {
+ popupWindow.dismiss();
+ }
+ }
+ });
+ popupWindow = new PopupWindow(popupView,
+ ViewGroup.LayoutParams.MATCH_PARENT,
+ ViewGroup.LayoutParams.WRAP_CONTENT,
+ true);
+ popupWindow.setBackgroundDrawable(new BitmapDrawable());
+ popupWindow.setOutsideTouchable(true);
+ popupWindow.showAtLocation(popupView, Gravity.CENTER, 0, 0);
+ return true;
});
}
@@ -630,7 +650,7 @@ public class AudioplayerActivity extends MediaplayerActivity implements ItemDesc
}
public interface AudioplayerContentFragment {
- public void onDataSetChanged(Playable media);
+ void onDataSetChanged(Playable media);
}
@Override
@@ -793,4 +813,5 @@ public class AudioplayerActivity extends MediaplayerActivity implements ItemDesc
return navDrawerData != null ? navDrawerData.feedCounters.get(feedId) : 0;
}
};
+
}
diff --git a/app/src/main/res/layout/choose_speed_dialog.xml b/app/src/main/res/layout/choose_speed_dialog.xml
new file mode 100644
index 000000000..7fac5261f
--- /dev/null
+++ b/app/src/main/res/layout/choose_speed_dialog.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+
+ <LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_vertical"
+ android:gravity="center"
+ android:layout_margin="16dp"
+ android:background="@color/white">
+
+ <TextView
+ android:id="@+id/txtvSelectedSpeed"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="8dp"
+ android:textSize="22sp"
+ android:textStyle="bold"/>
+
+ <SeekBar
+ android:id="@+id/sbSelectSpeed"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginBottom="8dp"/>
+
+ </LinearLayout>
+
+</LinearLayout>