summaryrefslogtreecommitdiff
path: root/app/src/main/java/de/danoeh/antennapod/dialog/VariableSpeedDialog.java
blob: b009e76a7ac73e0e6da7ae6729b0919dc9352663 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
package de.danoeh.antennapod.dialog;

import android.app.AlertDialog;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.preferences.UserPreferences;

import java.util.Arrays;
import java.util.List;

public class VariableSpeedDialog {
	private VariableSpeedDialog() {
	}

	public static void showDialog(final Context context) {
		if (com.aocate.media.MediaPlayer.isPrestoLibraryInstalled(context)) {
			showSpeedSelectorDialog(context);
		} else {
			showGetPluginDialog(context);
		}
	}

	private static void showGetPluginDialog(final Context context) {
		AlertDialog.Builder builder = new AlertDialog.Builder(context);
		builder.setTitle(R.string.no_playback_plugin_title);
		builder.setMessage(R.string.no_playback_plugin_msg);
		builder.setNegativeButton(R.string.close_label, null);
		builder.setPositiveButton(R.string.download_plugin_label,
				new DialogInterface.OnClickListener() {
					@Override
					public void onClick(DialogInterface dialog, int which) {
                        try {
						    Intent playStoreIntent = new Intent(
								    Intent.ACTION_VIEW,
							    	Uri.parse("market://details?id=com.falconware.prestissimo"));
						    context.startActivity(playStoreIntent);
                        } catch (ActivityNotFoundException e) {
                            // this is usually thrown on an emulator if the Android market is not installed
                            e.printStackTrace();
                        }
					}
				});
		builder.create().show();
	}

	private static void showSpeedSelectorDialog(final Context context) {
		final String[] speedValues = context.getResources().getStringArray(
				R.array.playback_speed_values);
		// According to Java spec these get initialized to false on creation
		final boolean[] speedChecked = new boolean[speedValues.length];

		// Build the "isChecked" array so that multiChoice dialog is
		// populated correctly
		List<String> selectedSpeedList = Arrays.asList(UserPreferences
				.getPlaybackSpeedArray());
		for (int i = 0; i < speedValues.length; i++) {
			speedChecked[i] = selectedSpeedList.contains(speedValues[i]);
		}

		AlertDialog.Builder builder = new AlertDialog.Builder(context);
		builder.setTitle(R.string.set_playback_speed_label);
		builder.setMultiChoiceItems(R.array.playback_speed_values,
				speedChecked, new DialogInterface.OnMultiChoiceClickListener() {
					@Override
					public void onClick(DialogInterface dialog, int which,
							boolean isChecked) {
						speedChecked[which] = isChecked;
					}

				});
		builder.setNegativeButton(android.R.string.cancel, null);
		builder.setPositiveButton(android.R.string.ok,
				new DialogInterface.OnClickListener() {
					@Override
					public void onClick(DialogInterface dialog, int which) {
						int choiceCount = 0;
						for (int i = 0; i < speedChecked.length; i++) {
							if (speedChecked[i]) {
								choiceCount++;
							}
						}
						String[] newSpeedValues = new String[choiceCount];
						int newSpeedIndex = 0;
						for (int i = 0; i < speedChecked.length; i++) {
							if (speedChecked[i]) {
								newSpeedValues[newSpeedIndex++] = speedValues[i];
							}
						}

						UserPreferences.setPlaybackSpeedArray(newSpeedValues);

					}
				});
		builder.create().show();
	}
}