aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorScott Jackson <daneren2005@gmail.com>2012-11-27 22:56:57 -0800
committerScott Jackson <daneren2005@gmail.com>2012-11-27 22:56:57 -0800
commit8691998f4c7ebb4ed1123222338e7a16b9d57f2e (patch)
treec0e0dc4c02896218a97a42a209083150c72ea3f3
parent6cff977bd3b1f7e324fb86cf94faea1b0d6132a7 (diff)
downloaddsub-8691998f4c7ebb4ed1123222338e7a16b9d57f2e.tar.gz
dsub-8691998f4c7ebb4ed1123222338e7a16b9d57f2e.tar.bz2
dsub-8691998f4c7ebb4ed1123222338e7a16b9d57f2e.zip
Added shuffle by start/end year + genre
-rw-r--r--subsonic-android/res/layout/shuffle_dialog.xml71
-rw-r--r--subsonic-android/res/values/strings.xml4
-rw-r--r--subsonic-android/src/github/daneren2005/dsub/activity/MainActivity.java4
-rw-r--r--subsonic-android/src/github/daneren2005/dsub/activity/SelectArtistActivity.java4
-rw-r--r--subsonic-android/src/github/daneren2005/dsub/activity/SubsonicTabActivity.java47
-rw-r--r--subsonic-android/src/github/daneren2005/dsub/util/Constants.java3
-rw-r--r--subsonic-android/src/github/daneren2005/dsub/util/ShufflePlayBuffer.java4
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();
+ }
}
}