diff options
author | Scott Jackson <daneren2005@gmail.com> | 2012-11-27 22:56:57 -0800 |
---|---|---|
committer | Scott Jackson <daneren2005@gmail.com> | 2012-11-27 22:56:57 -0800 |
commit | 8691998f4c7ebb4ed1123222338e7a16b9d57f2e (patch) | |
tree | c0e0dc4c02896218a97a42a209083150c72ea3f3 /subsonic-android | |
parent | 6cff977bd3b1f7e324fb86cf94faea1b0d6132a7 (diff) | |
download | dsub-8691998f4c7ebb4ed1123222338e7a16b9d57f2e.tar.gz dsub-8691998f4c7ebb4ed1123222338e7a16b9d57f2e.tar.bz2 dsub-8691998f4c7ebb4ed1123222338e7a16b9d57f2e.zip |
Added shuffle by start/end year + genre
Diffstat (limited to 'subsonic-android')
7 files changed, 131 insertions, 6 deletions
diff --git a/subsonic-android/res/layout/shuffle_dialog.xml b/subsonic-android/res/layout/shuffle_dialog.xml new file mode 100644 index 00000000..2a21dc11 --- /dev/null +++ b/subsonic-android/res/layout/shuffle_dialog.xml @@ -0,0 +1,71 @@ +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:orientation="vertical" + android:layout_width="wrap_content" + android:layout_height="wrap_content"> + + <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:orientation="horizontal" + android:layout_width="fill_parent" + android:layout_height="wrap_content"> + + <TextView + android:id="@+id/start_year_label" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginLeft="4dp" + android:textSize="20dp" + android:text="@string/shuffle.startYear" /> + <EditText + android:id="@+id/start_year" + android:inputType="number" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:layout_weight="1" + android:layout_marginLeft="4dp" + android:hint="@string/shuffle.startYear" /> + </LinearLayout> + + <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:orientation="horizontal" + android:layout_width="fill_parent" + android:layout_height="wrap_content"> + + <TextView + android:id="@+id/end_year_label" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginLeft="4dp" + android:textSize="20dp" + android:text="@string/shuffle.endYear" /> + <EditText + android:id="@+id/end_year" + android:inputType="number" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:layout_weight="1" + android:layout_marginLeft="4dp" + android:hint="@string/shuffle.endYear" /> + </LinearLayout> + + <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:orientation="horizontal" + android:layout_width="fill_parent" + android:layout_height="wrap_content"> + + <TextView + android:id="@+id/genre_label" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginLeft="4dp" + android:textSize="20dp" + android:text="@string/shuffle.genre" /> + <EditText + android:id="@+id/genre" + android:inputType="text" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:layout_weight="1" + android:layout_marginLeft="4dp" + android:hint="@string/shuffle.genre" /> + </LinearLayout> +</LinearLayout>
\ No newline at end of file diff --git a/subsonic-android/res/values/strings.xml b/subsonic-android/res/values/strings.xml index dc02569a..bc8f31f7 100644 --- a/subsonic-android/res/values/strings.xml +++ b/subsonic-android/res/values/strings.xml @@ -235,6 +235,10 @@ <string name="settings.temp_loss_pause_lower">Pause, lower volume when requested</string>
<string name="settings.temp_loss_lower">Always lower volume</string>
<string name="settings.temp_loss_nothing">Do Nothing</string>
+
+ <string name="shuffle.startYear">Start Year:</string>
+ <string name="shuffle.endYear">End Year:</string>
+ <string name="shuffle.genre">Genre:</string>
<string name="music_service.retry">A network error occurred. Retrying %1$d of %2$d.</string>
diff --git a/subsonic-android/src/github/daneren2005/dsub/activity/MainActivity.java b/subsonic-android/src/github/daneren2005/dsub/activity/MainActivity.java index 4da6d689..39653e1c 100644 --- a/subsonic-android/src/github/daneren2005/dsub/activity/MainActivity.java +++ b/subsonic-android/src/github/daneren2005/dsub/activity/MainActivity.java @@ -142,9 +142,7 @@ public class MainActivity extends SubsonicTabActivity { Intent intent; switch (item.getItemId()) { case R.id.menu_shuffle: - intent = new Intent(MainActivity.this, DownloadActivity.class); - intent.putExtra(Constants.INTENT_EXTRA_NAME_SHUFFLE, true); - Util.startActivityWithoutTransition(MainActivity.this, intent); + onShuffleRequested(); return true; case R.id.menu_search: onSearchRequested(); diff --git a/subsonic-android/src/github/daneren2005/dsub/activity/SelectArtistActivity.java b/subsonic-android/src/github/daneren2005/dsub/activity/SelectArtistActivity.java index ff8a21c1..59aec73c 100644 --- a/subsonic-android/src/github/daneren2005/dsub/activity/SelectArtistActivity.java +++ b/subsonic-android/src/github/daneren2005/dsub/activity/SelectArtistActivity.java @@ -94,9 +94,7 @@ public class SelectArtistActivity extends SubsonicTabActivity implements Adapter refresh(); return true; case R.id.menu_shuffle: - intent = new Intent(SelectArtistActivity.this, DownloadActivity.class); - intent.putExtra(Constants.INTENT_EXTRA_NAME_SHUFFLE, true); - Util.startActivityWithoutTransition(SelectArtistActivity.this, intent); + onShuffleRequested(); return true; case R.id.menu_exit: intent = new Intent(this, MainActivity.class); diff --git a/subsonic-android/src/github/daneren2005/dsub/activity/SubsonicTabActivity.java b/subsonic-android/src/github/daneren2005/dsub/activity/SubsonicTabActivity.java index dc72d311..66687b9a 100644 --- a/subsonic-android/src/github/daneren2005/dsub/activity/SubsonicTabActivity.java +++ b/subsonic-android/src/github/daneren2005/dsub/activity/SubsonicTabActivity.java @@ -28,6 +28,7 @@ import android.app.AlertDialog; import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
+import android.content.SharedPreferences;
import android.content.pm.PackageInfo;
import android.media.AudioManager;
import android.os.Build;
@@ -37,6 +38,7 @@ import android.util.Log; import android.view.KeyEvent;
import android.view.View;
import android.view.Window;
+import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.TextView;
import github.daneren2005.dsub.R;
@@ -47,6 +49,7 @@ import github.daneren2005.dsub.domain.Playlist; import github.daneren2005.dsub.service.*;
import github.daneren2005.dsub.util.*;
import java.util.ArrayList;
+import java.util.Arrays;
/**
* @author Sindre Mehus
@@ -62,6 +65,11 @@ public class SubsonicTabActivity extends SherlockActivity { private View musicButton;
private View playlistButton;
private View nowPlayingButton;
+
+ private static final int SHUFFLE_EVERYTHING = 0;
+ private static final int SHUFFLE_YEAR = 1;
+ private static final int SHUFFLE_YEAR_RANGE = 2;
+ private static final int SHUFFLE_GENRE = 3;
@Override
protected void onCreate(Bundle bundle) {
@@ -437,6 +445,45 @@ public class SubsonicTabActivity extends SherlockActivity { }
}.execute();
}
+
+ protected void onShuffleRequested() {
+ View dialogView = getLayoutInflater().inflate(R.layout.shuffle_dialog, null);
+ final EditText startYearBox = (EditText)dialogView.findViewById(R.id.start_year);
+ final EditText endYearBox = (EditText)dialogView.findViewById(R.id.end_year);
+ final EditText genreBox = (EditText)dialogView.findViewById(R.id.genre);
+
+ final SharedPreferences prefs = Util.getPreferences(SubsonicTabActivity.this);
+ startYearBox.setText(prefs.getString(Constants.PREFERENCES_KEY_SHUFFLE_START_YEAR, ""));
+ endYearBox.setText(prefs.getString(Constants.PREFERENCES_KEY_SHUFFLE_END_YEAR, ""));
+ genreBox.setText(prefs.getString(Constants.PREFERENCES_KEY_SHUFFLE_GENRE, ""));
+
+ AlertDialog.Builder builder = new AlertDialog.Builder(SubsonicTabActivity.this);
+ builder.setTitle("Shuffle By")
+ .setView(dialogView)
+ .setPositiveButton("OK", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int id) {
+ Intent intent = new Intent(SubsonicTabActivity.this, DownloadActivity.class);
+ intent.putExtra(Constants.INTENT_EXTRA_NAME_SHUFFLE, true);
+ String genre = genreBox.getText().toString();
+ String startYear = startYearBox.getText().toString();
+ String endYear = endYearBox.getText().toString();
+ getDownloadService().setShuffleParams(genre.isEmpty() ? null : genre,
+ startYear.isEmpty() ? null : startYear, endYear.isEmpty() ? null : endYear);
+
+ SharedPreferences.Editor editor = prefs.edit();
+ editor.putString(Constants.PREFERENCES_KEY_SHUFFLE_START_YEAR, startYear);
+ editor.putString(Constants.PREFERENCES_KEY_SHUFFLE_END_YEAR, endYear);
+ editor.putString(Constants.PREFERENCES_KEY_SHUFFLE_GENRE, genre);
+ editor.commit();
+
+ Util.startActivityWithoutTransition(SubsonicTabActivity.this, intent);
+ }
+ })
+ .setNegativeButton("Cancel", null);
+ AlertDialog dialog = builder.create();
+ dialog.show();
+ }
private void setUncaughtExceptionHandler() {
Thread.UncaughtExceptionHandler handler = Thread.getDefaultUncaughtExceptionHandler();
diff --git a/subsonic-android/src/github/daneren2005/dsub/util/Constants.java b/subsonic-android/src/github/daneren2005/dsub/util/Constants.java index eb0a15fd..42acde16 100644 --- a/subsonic-android/src/github/daneren2005/dsub/util/Constants.java +++ b/subsonic-android/src/github/daneren2005/dsub/util/Constants.java @@ -80,6 +80,9 @@ public final class Constants { public static final String PREFERENCES_KEY_SLEEP_TIMER_DURATION = "sleepTimerDuration"; public static final String PREFERENCES_KEY_OFFLINE = "offline"; public static final String PREFERENCES_KEY_TEMP_LOSS = "tempLoss"; + public static final String PREFERENCES_KEY_SHUFFLE_START_YEAR = "startYear"; + public static final String PREFERENCES_KEY_SHUFFLE_END_YEAR = "endYear"; + public static final String PREFERENCES_KEY_SHUFFLE_GENRE = "genre"; // Name of the preferences file. public static final String PREFERENCES_FILE_NAME = "github.daneren2005.dsub_preferences"; diff --git a/subsonic-android/src/github/daneren2005/dsub/util/ShufflePlayBuffer.java b/subsonic-android/src/github/daneren2005/dsub/util/ShufflePlayBuffer.java index 3cc26057..c82f0708 100644 --- a/subsonic-android/src/github/daneren2005/dsub/util/ShufflePlayBuffer.java +++ b/subsonic-android/src/github/daneren2005/dsub/util/ShufflePlayBuffer.java @@ -117,6 +117,10 @@ public class ShufflePlayBuffer { this.genre = genre; this.startYear = startYear; this.endYear = endYear; + + synchronized (buffer) { + buffer.clear(); + } } } |