aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/github
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/github')
-rw-r--r--app/src/main/java/github/daneren2005/dsub/activity/SubsonicActivity.java24
-rw-r--r--app/src/main/java/github/daneren2005/dsub/activity/SubsonicFragmentActivity.java75
-rw-r--r--app/src/main/java/github/daneren2005/dsub/adapter/SectionAdapter.java32
-rw-r--r--app/src/main/java/github/daneren2005/dsub/adapter/SettingsAdapter.java7
-rw-r--r--app/src/main/java/github/daneren2005/dsub/fragments/AdminFragment.java6
-rw-r--r--app/src/main/java/github/daneren2005/dsub/fragments/DownloadFragment.java7
-rw-r--r--app/src/main/java/github/daneren2005/dsub/fragments/EqualizerFragment.java11
-rw-r--r--app/src/main/java/github/daneren2005/dsub/fragments/MainFragment.java9
-rw-r--r--app/src/main/java/github/daneren2005/dsub/fragments/NowPlayingFragment.java6
-rw-r--r--app/src/main/java/github/daneren2005/dsub/fragments/SearchFragment.java4
-rw-r--r--app/src/main/java/github/daneren2005/dsub/fragments/SelectArtistFragment.java5
-rw-r--r--app/src/main/java/github/daneren2005/dsub/fragments/SelectBookmarkFragment.java7
-rw-r--r--app/src/main/java/github/daneren2005/dsub/fragments/SelectDirectoryFragment.java2
-rw-r--r--app/src/main/java/github/daneren2005/dsub/fragments/SelectGenreFragment.java6
-rw-r--r--app/src/main/java/github/daneren2005/dsub/fragments/SelectPlaylistFragment.java4
-rw-r--r--app/src/main/java/github/daneren2005/dsub/fragments/SelectPodcastsFragment.java3
-rw-r--r--app/src/main/java/github/daneren2005/dsub/fragments/SelectShareFragment.java3
-rw-r--r--app/src/main/java/github/daneren2005/dsub/fragments/SelectVideoFragment.java5
-rw-r--r--app/src/main/java/github/daneren2005/dsub/fragments/SelectYearFragment.java5
-rw-r--r--app/src/main/java/github/daneren2005/dsub/fragments/SimilarArtistFragment.java2
-rw-r--r--app/src/main/java/github/daneren2005/dsub/fragments/UserFragment.java10
-rw-r--r--app/src/main/java/github/daneren2005/dsub/service/RESTMusicService.java8
-rw-r--r--app/src/main/java/github/daneren2005/dsub/util/Constants.java1
-rw-r--r--app/src/main/java/github/daneren2005/dsub/util/UserUtil.java25
-rw-r--r--app/src/main/java/github/daneren2005/dsub/view/FastScroller.java2
25 files changed, 155 insertions, 114 deletions
diff --git a/app/src/main/java/github/daneren2005/dsub/activity/SubsonicActivity.java b/app/src/main/java/github/daneren2005/dsub/activity/SubsonicActivity.java
index d67893ef..a0f3333e 100644
--- a/app/src/main/java/github/daneren2005/dsub/activity/SubsonicActivity.java
+++ b/app/src/main/java/github/daneren2005/dsub/activity/SubsonicActivity.java
@@ -352,12 +352,9 @@ public class SubsonicActivity extends AppCompatActivity implements OnItemSelecte
drawerToggle = new ActionBarDrawerToggle(this, drawer, toolbar, R.string.common_appname, R.string.common_appname) {
@Override
public void onDrawerClosed(View view) {
- setTitle(currentFragment.getTitle());
-
drawerIdle = true;
drawerOpen = false;
- supportInvalidateOptionsMenu();
if(!showingTabs) {
populateTabs();
}
@@ -372,13 +369,8 @@ public class SubsonicActivity extends AppCompatActivity implements OnItemSelecte
}
setDrawerItemVisible(R.id.drawer_downloading, downloadingVisible);
- getSupportActionBar().setTitle(R.string.common_appname);
- getSupportActionBar().setDisplayShowCustomEnabled(false);
-
drawerIdle = true;
drawerOpen = true;
-
- supportInvalidateOptionsMenu();
}
@Override
@@ -954,6 +946,22 @@ public class SubsonicActivity extends AppCompatActivity implements OnItemSelecte
runnable.run();
} else {
afterServiceAvailable.add(runnable);
+ checkIfServiceAvailable();
+ }
+ }
+ private void checkIfServiceAvailable() {
+ if(getDownloadService() == null) {
+ handler.postDelayed(new Runnable() {
+ @Override
+ public void run() {
+ checkIfServiceAvailable();
+ }
+ }, 50);
+ } else if(afterServiceAvailable.size() > 0) {
+ for(Runnable runnable: afterServiceAvailable) {
+ handler.post(runnable);
+ }
+ afterServiceAvailable.clear();
}
}
diff --git a/app/src/main/java/github/daneren2005/dsub/activity/SubsonicFragmentActivity.java b/app/src/main/java/github/daneren2005/dsub/activity/SubsonicFragmentActivity.java
index f32c5255..72b63e69 100644
--- a/app/src/main/java/github/daneren2005/dsub/activity/SubsonicFragmentActivity.java
+++ b/app/src/main/java/github/daneren2005/dsub/activity/SubsonicFragmentActivity.java
@@ -32,11 +32,13 @@ import android.os.Handler;
import android.preference.PreferenceManager;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
+import android.support.v7.app.AlertDialog;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.CheckBox;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
@@ -673,6 +675,10 @@ public class SubsonicFragmentActivity extends SubsonicActivity implements Downlo
}.execute();
}
private void loadRemotePlayQueue() {
+ if(Util.getPreferences(this).getBoolean(Constants.PREFERENCES_KEY_RESUME_PLAY_QUEUE_NEVER, false)) {
+ return;
+ }
+
final SubsonicActivity context = this;
new SilentBackgroundTask<Void>(this) {
private PlayerQueue playerQueue;
@@ -715,32 +721,57 @@ public class SubsonicFragmentActivity extends SubsonicActivity implements Downlo
}.execute();
}
private void promptRestoreFromRemoteQueue(final PlayerQueue remoteState) {
- Util.confirmDialog(this, R.string.download_restore_play_queue, Util.formatDate(remoteState.changed), new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- new SilentBackgroundTask<Void>(SubsonicFragmentActivity.this) {
+ AlertDialog.Builder builder = new AlertDialog.Builder(this);
+ String message = getResources().getString(R.string.common_confirm_message, getResources().getString(R.string.download_restore_play_queue).toLowerCase(), Util.formatDate(remoteState.changed));
+ builder.setIcon(android.R.drawable.ic_dialog_alert)
+ .setTitle(R.string.common_confirm)
+ .setMessage(message)
+ .setPositiveButton(R.string.common_ok, new DialogInterface.OnClickListener() {
@Override
- protected Void doInBackground() throws Throwable {
- DownloadService downloadService = getDownloadService();
- downloadService.clear();
- downloadService.download(remoteState.songs, false, false, false, false, remoteState.currentPlayingIndex, remoteState.currentPlayingPosition);
- return null;
+ public void onClick(DialogInterface dialogInterface, int i) {
+ new SilentBackgroundTask<Void>(SubsonicFragmentActivity.this) {
+ @Override
+ protected Void doInBackground() throws Throwable {
+ DownloadService downloadService = getDownloadService();
+ downloadService.clear();
+ downloadService.download(remoteState.songs, false, false, false, false, remoteState.currentPlayingIndex, remoteState.currentPlayingPosition);
+ return null;
+ }
+ }.execute();
}
- }.execute();
- }
- }, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- new SilentBackgroundTask<Void>(SubsonicFragmentActivity.this) {
+ })
+ .setNeutralButton(R.string.common_cancel, new DialogInterface.OnClickListener() {
@Override
- protected Void doInBackground() throws Throwable {
- DownloadService downloadService = getDownloadService();
- downloadService.serializeQueue(false);
- return null;
+ public void onClick(DialogInterface dialogInterface, int i) {
+ new SilentBackgroundTask<Void>(SubsonicFragmentActivity.this) {
+ @Override
+ protected Void doInBackground() throws Throwable {
+ DownloadService downloadService = getDownloadService();
+ downloadService.serializeQueue(false);
+ return null;
+ }
+ }.execute();
}
- }.execute();
- }
- });
+ })
+ .setNegativeButton(R.string.common_never, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialogInterface, int i) {
+ new SilentBackgroundTask<Void>(SubsonicFragmentActivity.this) {
+ @Override
+ protected Void doInBackground() throws Throwable {
+ DownloadService downloadService = getDownloadService();
+ downloadService.serializeQueue(false);
+
+ SharedPreferences.Editor editor = Util.getPreferences(SubsonicFragmentActivity.this).edit();
+ editor.putBoolean(Constants.PREFERENCES_KEY_RESUME_PLAY_QUEUE_NEVER, true);
+ editor.commit();
+ return null;
+ }
+ }.execute();
+ }
+ });
+
+ builder.create().show();
}
private void createAccount() {
diff --git a/app/src/main/java/github/daneren2005/dsub/adapter/SectionAdapter.java b/app/src/main/java/github/daneren2005/dsub/adapter/SectionAdapter.java
index 75b1562f..000832d7 100644
--- a/app/src/main/java/github/daneren2005/dsub/adapter/SectionAdapter.java
+++ b/app/src/main/java/github/daneren2005/dsub/adapter/SectionAdapter.java
@@ -125,7 +125,7 @@ public abstract class SectionAdapter<T> extends RecyclerView.Adapter<UpdateViewH
}
}
} else if (onItemClickedListener != null) {
- onItemClickedListener.onItemClicked(item);
+ onItemClickedListener.onItemClicked(updateView, item);
}
}
});
@@ -138,18 +138,22 @@ public abstract class SectionAdapter<T> extends RecyclerView.Adapter<UpdateViewH
moreButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- final T item = holder.getItem();
- if(onItemClickedListener != null) {
- PopupMenu popup = new PopupMenu(context, v);
- onItemClickedListener.onCreateContextMenu(popup.getMenu(), popup.getMenuInflater(), updateView, item);
-
- popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
- @Override
- public boolean onMenuItemClick(MenuItem menuItem) {
- return onItemClickedListener.onContextItemSelected(menuItem, updateView, item);
- }
- });
- popup.show();
+ try {
+ final T item = holder.getItem();
+ if (onItemClickedListener != null) {
+ PopupMenu popup = new PopupMenu(context, v);
+ onItemClickedListener.onCreateContextMenu(popup.getMenu(), popup.getMenuInflater(), updateView, item);
+
+ popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
+ @Override
+ public boolean onMenuItemClick(MenuItem menuItem) {
+ return onItemClickedListener.onContextItemSelected(menuItem, updateView, item);
+ }
+ });
+ popup.show();
+ }
+ } catch(Exception e) {
+ Log.w(TAG, "Failed to show popup", e);
}
}
});
@@ -494,7 +498,7 @@ public abstract class SectionAdapter<T> extends RecyclerView.Adapter<UpdateViewH
}
public interface OnItemClickedListener<T> {
- void onItemClicked(T item);
+ void onItemClicked(UpdateView<T> updateView, T item);
void onCreateContextMenu(Menu menu, MenuInflater menuInflater, UpdateView<T> updateView, T item);
boolean onContextItemSelected(MenuItem menuItem, UpdateView<T> updateView, T item);
}
diff --git a/app/src/main/java/github/daneren2005/dsub/adapter/SettingsAdapter.java b/app/src/main/java/github/daneren2005/dsub/adapter/SettingsAdapter.java
index d99b294b..0328e607 100644
--- a/app/src/main/java/github/daneren2005/dsub/adapter/SettingsAdapter.java
+++ b/app/src/main/java/github/daneren2005/dsub/adapter/SettingsAdapter.java
@@ -16,6 +16,7 @@
package github.daneren2005.dsub.adapter;
import android.content.Context;
+import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -33,17 +34,19 @@ import github.daneren2005.dsub.view.UpdateView;
import static github.daneren2005.dsub.domain.User.Setting;
public class SettingsAdapter extends SectionAdapter<Setting> {
+ private static final String TAG = SettingsAdapter.class.getSimpleName();
public final int VIEW_TYPE_SETTING = 1;
private final User user;
private final boolean editable;
private final ImageLoader imageLoader;
- public SettingsAdapter(Context context, User user, ImageLoader imageLoader, boolean editable) {
+ public SettingsAdapter(Context context, User user, ImageLoader imageLoader, boolean editable, OnItemClickedListener<Setting> onItemClickedListener) {
super(context, user.getSettings(), imageLoader != null);
this.user = user;
this.imageLoader = imageLoader;
this.editable = editable;
+ this.onItemClickedListener = onItemClickedListener;
List<Setting> settings = sections.get(0);
for(Setting setting: settings) {
@@ -92,7 +95,7 @@ public class SettingsAdapter extends SectionAdapter<Setting> {
@Override
public void setChecked(UpdateView updateView, boolean checked) {
if(updateView instanceof SettingView) {
- ((SettingView) updateView).setChecked(checked);
+ updateView.setChecked(checked);
}
}
}
diff --git a/app/src/main/java/github/daneren2005/dsub/fragments/AdminFragment.java b/app/src/main/java/github/daneren2005/dsub/fragments/AdminFragment.java
index d4afa67e..630acf2c 100644
--- a/app/src/main/java/github/daneren2005/dsub/fragments/AdminFragment.java
+++ b/app/src/main/java/github/daneren2005/dsub/fragments/AdminFragment.java
@@ -16,13 +16,9 @@
package github.daneren2005.dsub.fragments;
import android.os.Bundle;
-import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
-import android.view.View;
-import android.widget.AdapterView;
-import android.widget.ArrayAdapter;
import java.io.File;
import java.util.ArrayList;
@@ -136,7 +132,7 @@ public class AdminFragment extends SelectRecyclerFragment<User> {
}
@Override
- public void onItemClicked(User user) {
+ public void onItemClicked(UpdateView<User> updateView, User user) {
SubsonicFragment fragment = new UserFragment();
Bundle args = new Bundle();
args.putSerializable(Constants.INTENT_EXTRA_NAME_ID, user);
diff --git a/app/src/main/java/github/daneren2005/dsub/fragments/DownloadFragment.java b/app/src/main/java/github/daneren2005/dsub/fragments/DownloadFragment.java
index edbeff43..7594a99e 100644
--- a/app/src/main/java/github/daneren2005/dsub/fragments/DownloadFragment.java
+++ b/app/src/main/java/github/daneren2005/dsub/fragments/DownloadFragment.java
@@ -18,17 +18,13 @@ package github.daneren2005.dsub.fragments;
import android.content.DialogInterface;
import android.os.Bundle;
import android.os.Handler;
-import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.helper.ItemTouchHelper;
-import android.view.ContextMenu;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.AdapterView;
-import android.widget.ArrayAdapter;
import java.util.ArrayList;
import java.util.List;
@@ -47,7 +43,6 @@ import github.daneren2005.dsub.util.ProgressListener;
import github.daneren2005.dsub.util.SilentBackgroundTask;
import github.daneren2005.dsub.util.Util;
import github.daneren2005.dsub.adapter.DownloadFileAdapter;
-import github.daneren2005.dsub.view.SongView;
import github.daneren2005.dsub.view.UpdateView;
public class DownloadFragment extends SelectRecyclerFragment<DownloadFile> implements SectionAdapter.OnItemClickedListener<DownloadFile> {
@@ -125,7 +120,7 @@ public class DownloadFragment extends SelectRecyclerFragment<DownloadFile> imple
}
@Override
- public void onItemClicked(DownloadFile item) {
+ public void onItemClicked(UpdateView<DownloadFile> updateView, DownloadFile item) {
}
diff --git a/app/src/main/java/github/daneren2005/dsub/fragments/EqualizerFragment.java b/app/src/main/java/github/daneren2005/dsub/fragments/EqualizerFragment.java
index e2535e04..6ca2da4f 100644
--- a/app/src/main/java/github/daneren2005/dsub/fragments/EqualizerFragment.java
+++ b/app/src/main/java/github/daneren2005/dsub/fragments/EqualizerFragment.java
@@ -112,10 +112,15 @@ public class EqualizerFragment extends SubsonicFragment {
@Override
public void onPause() {
super.onPause();
- equalizerController.saveSettings();
- if(!equalizer.getEnabled()) {
- equalizerController.release();
+ try {
+ equalizerController.saveSettings();
+
+ if (!equalizer.getEnabled()) {
+ equalizerController.release();
+ }
+ } catch(Exception e) {
+ Log.w(TAG, "Failed to release controller", e);
}
}
diff --git a/app/src/main/java/github/daneren2005/dsub/fragments/MainFragment.java b/app/src/main/java/github/daneren2005/dsub/fragments/MainFragment.java
index cb94ed19..5d12c2df 100644
--- a/app/src/main/java/github/daneren2005/dsub/fragments/MainFragment.java
+++ b/app/src/main/java/github/daneren2005/dsub/fragments/MainFragment.java
@@ -2,8 +2,6 @@ package github.daneren2005.dsub.fragments;
import android.content.res.Resources;
import android.os.Environment;
-import android.support.v7.app.AlertDialog;
-import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
@@ -14,24 +12,19 @@ import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
-import android.view.View;
-import android.widget.CheckBox;
import github.daneren2005.dsub.R;
import github.daneren2005.dsub.adapter.MainAdapter;
import github.daneren2005.dsub.adapter.SectionAdapter;
import github.daneren2005.dsub.domain.ServerInfo;
-import github.daneren2005.dsub.service.DownloadService;
import github.daneren2005.dsub.util.Constants;
import github.daneren2005.dsub.util.FileUtil;
import github.daneren2005.dsub.util.LoadingTask;
-import github.daneren2005.dsub.util.Pair;
import github.daneren2005.dsub.util.ProgressListener;
import github.daneren2005.dsub.util.UserUtil;
import github.daneren2005.dsub.util.Util;
import github.daneren2005.dsub.service.MusicService;
import github.daneren2005.dsub.service.MusicServiceFactory;
-import github.daneren2005.dsub.util.SilentBackgroundTask;
import github.daneren2005.dsub.view.ChangeLog;
import github.daneren2005.dsub.view.UpdateView;
@@ -295,7 +288,7 @@ public class MainFragment extends SelectRecyclerFragment<Integer> {
}
@Override
- public void onItemClicked(Integer item) {
+ public void onItemClicked(UpdateView<Integer> updateView, Integer item) {
if (item == R.string.main_albums_newest) {
showAlbumList("newest");
} else if (item == R.string.main_albums_random) {
diff --git a/app/src/main/java/github/daneren2005/dsub/fragments/NowPlayingFragment.java b/app/src/main/java/github/daneren2005/dsub/fragments/NowPlayingFragment.java
index 5db79e99..5a3b8cf5 100644
--- a/app/src/main/java/github/daneren2005/dsub/fragments/NowPlayingFragment.java
+++ b/app/src/main/java/github/daneren2005/dsub/fragments/NowPlayingFragment.java
@@ -35,7 +35,6 @@ import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.helper.ItemTouchHelper;
import android.util.Log;
-import android.view.ContextMenu;
import android.view.Display;
import android.view.GestureDetector;
import android.view.GestureDetector.OnGestureListener;
@@ -49,7 +48,6 @@ import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.view.animation.AnimationUtils;
-import android.widget.AdapterView;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
@@ -77,7 +75,6 @@ import github.daneren2005.dsub.util.SilentBackgroundTask;
import github.daneren2005.dsub.adapter.DownloadFileAdapter;
import github.daneren2005.dsub.view.FadeOutAnimation;
import github.daneren2005.dsub.view.FastScroller;
-import github.daneren2005.dsub.view.SongView;
import github.daneren2005.dsub.view.UpdateView;
import github.daneren2005.dsub.util.Util;
@@ -87,7 +84,6 @@ import github.daneren2005.dsub.util.*;
import github.daneren2005.dsub.view.AutoRepeatButton;
import java.util.ArrayList;
import java.util.concurrent.ScheduledFuture;
-import github.daneren2005.dsub.activity.SubsonicActivity;
public class NowPlayingFragment extends SubsonicFragment implements OnGestureListener, SectionAdapter.OnItemClickedListener<DownloadFile>, OnSongChangedListener {
private static final String TAG = NowPlayingFragment.class.getSimpleName();
@@ -1148,7 +1144,7 @@ public class NowPlayingFragment extends SubsonicFragment implements OnGestureLis
}
@Override
- public void onItemClicked(final DownloadFile item) {
+ public void onItemClicked(UpdateView<DownloadFile> updateView, final DownloadFile item) {
warnIfStorageUnavailable();
new SilentBackgroundTask<Void>(context) {
@Override
diff --git a/app/src/main/java/github/daneren2005/dsub/fragments/SearchFragment.java b/app/src/main/java/github/daneren2005/dsub/fragments/SearchFragment.java
index cd294161..70a8d190 100644
--- a/app/src/main/java/github/daneren2005/dsub/fragments/SearchFragment.java
+++ b/app/src/main/java/github/daneren2005/dsub/fragments/SearchFragment.java
@@ -11,13 +11,11 @@ import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
-import android.view.ContextMenu;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.View;
import android.view.MenuItem;
-import android.widget.AdapterView;
import android.net.Uri;
import android.view.ViewGroup;
import github.daneren2005.dsub.R;
@@ -143,7 +141,7 @@ public class SearchFragment extends SubsonicFragment implements SectionAdapter.O
}
@Override
- public void onItemClicked(Serializable item) {
+ public void onItemClicked(UpdateView<Serializable> updateView, Serializable item) {
Log.d(TAG, item.getClass().getSimpleName());
if (item instanceof Artist) {
onArtistSelected((Artist) item, false);
diff --git a/app/src/main/java/github/daneren2005/dsub/fragments/SelectArtistFragment.java b/app/src/main/java/github/daneren2005/dsub/fragments/SelectArtistFragment.java
index 4599d3cb..db0aa9a8 100644
--- a/app/src/main/java/github/daneren2005/dsub/fragments/SelectArtistFragment.java
+++ b/app/src/main/java/github/daneren2005/dsub/fragments/SelectArtistFragment.java
@@ -3,15 +3,12 @@ package github.daneren2005.dsub.fragments;
import android.annotation.TargetApi;
import android.os.Build;
import android.os.Bundle;
-import android.util.Log;
-import android.view.ContextMenu;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.AdapterView;
import android.widget.LinearLayout;
import github.daneren2005.dsub.R;
@@ -92,7 +89,7 @@ public class SelectArtistFragment extends SelectRecyclerFragment<Artist> impleme
}
@Override
- public void onItemClicked(Artist artist) {
+ public void onItemClicked(UpdateView<Artist> updateView, Artist artist) {
SubsonicFragment fragment;
if((Util.isFirstLevelArtist(context) || Util.isOffline(context) || Util.isTagBrowsing(context)) || "root".equals(artist.getId()) || groupId != null) {
fragment = new SelectDirectoryFragment();
diff --git a/app/src/main/java/github/daneren2005/dsub/fragments/SelectBookmarkFragment.java b/app/src/main/java/github/daneren2005/dsub/fragments/SelectBookmarkFragment.java
index ceca2bff..5f3ca38b 100644
--- a/app/src/main/java/github/daneren2005/dsub/fragments/SelectBookmarkFragment.java
+++ b/app/src/main/java/github/daneren2005/dsub/fragments/SelectBookmarkFragment.java
@@ -18,13 +18,10 @@
*/
package github.daneren2005.dsub.fragments;
-import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
-import android.view.View;
-import android.widget.AdapterView;
-import android.widget.ArrayAdapter;
+
import github.daneren2005.dsub.R;
import github.daneren2005.dsub.adapter.SectionAdapter;
import github.daneren2005.dsub.domain.Bookmark;
@@ -86,7 +83,7 @@ public class SelectBookmarkFragment extends SelectRecyclerFragment<MusicDirector
}
@Override
- public void onItemClicked(final MusicDirectory.Entry bookmark) {
+ public void onItemClicked(UpdateView<MusicDirectory.Entry> updateView, final MusicDirectory.Entry bookmark) {
final DownloadService downloadService = getDownloadService();
if(downloadService == null) {
return;
diff --git a/app/src/main/java/github/daneren2005/dsub/fragments/SelectDirectoryFragment.java b/app/src/main/java/github/daneren2005/dsub/fragments/SelectDirectoryFragment.java
index 9e6fec45..c7d8e191 100644
--- a/app/src/main/java/github/daneren2005/dsub/fragments/SelectDirectoryFragment.java
+++ b/app/src/main/java/github/daneren2005/dsub/fragments/SelectDirectoryFragment.java
@@ -357,7 +357,7 @@ public class SelectDirectoryFragment extends SubsonicFragment implements Section
}
@Override
- public void onItemClicked(Entry entry) {
+ public void onItemClicked(UpdateView<Entry> updateView, Entry entry) {
if (entry.isDirectory()) {
SubsonicFragment fragment = new SelectDirectoryFragment();
Bundle args = new Bundle();
diff --git a/app/src/main/java/github/daneren2005/dsub/fragments/SelectGenreFragment.java b/app/src/main/java/github/daneren2005/dsub/fragments/SelectGenreFragment.java
index cb57c280..8cbc273c 100644
--- a/app/src/main/java/github/daneren2005/dsub/fragments/SelectGenreFragment.java
+++ b/app/src/main/java/github/daneren2005/dsub/fragments/SelectGenreFragment.java
@@ -19,9 +19,7 @@ import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
-import android.view.View;
-import android.widget.AdapterView;
-import android.widget.ArrayAdapter;
+
import github.daneren2005.dsub.R;
import github.daneren2005.dsub.adapter.SectionAdapter;
import github.daneren2005.dsub.domain.Genre;
@@ -57,7 +55,7 @@ public class SelectGenreFragment extends SelectRecyclerFragment<Genre> {
}
@Override
- public void onItemClicked(Genre genre) {
+ public void onItemClicked(UpdateView<Genre> updateView, Genre genre) {
SubsonicFragment fragment = new SelectDirectoryFragment();
Bundle args = new Bundle();
args.putString(Constants.INTENT_EXTRA_NAME_ALBUM_LIST_TYPE, "genres");
diff --git a/app/src/main/java/github/daneren2005/dsub/fragments/SelectPlaylistFragment.java b/app/src/main/java/github/daneren2005/dsub/fragments/SelectPlaylistFragment.java
index 793e0877..6e2c9da5 100644
--- a/app/src/main/java/github/daneren2005/dsub/fragments/SelectPlaylistFragment.java
+++ b/app/src/main/java/github/daneren2005/dsub/fragments/SelectPlaylistFragment.java
@@ -5,8 +5,6 @@ import android.content.DialogInterface;
import android.content.res.Resources;
import android.os.Bundle;
import android.support.v4.app.FragmentTransaction;
-import android.support.v7.widget.RecyclerView;
-import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
@@ -173,7 +171,7 @@ public class SelectPlaylistFragment extends SelectRecyclerFragment<Playlist> {
}
@Override
- public void onItemClicked(Playlist playlist) {
+ public void onItemClicked(UpdateView<Playlist> updateView, Playlist playlist) {
SubsonicFragment fragment = new SelectDirectoryFragment();
Bundle args = new Bundle();
args.putString(Constants.INTENT_EXTRA_NAME_PLAYLIST_ID, playlist.getId());
diff --git a/app/src/main/java/github/daneren2005/dsub/fragments/SelectPodcastsFragment.java b/app/src/main/java/github/daneren2005/dsub/fragments/SelectPodcastsFragment.java
index 381453c0..815b3c41 100644
--- a/app/src/main/java/github/daneren2005/dsub/fragments/SelectPodcastsFragment.java
+++ b/app/src/main/java/github/daneren2005/dsub/fragments/SelectPodcastsFragment.java
@@ -17,7 +17,6 @@ package github.daneren2005.dsub.fragments;
import android.support.v7.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
-import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
@@ -123,7 +122,7 @@ public class SelectPodcastsFragment extends SelectRecyclerFragment<PodcastChanne
}
@Override
- public void onItemClicked(PodcastChannel channel) {
+ public void onItemClicked(UpdateView<PodcastChannel> updateView, PodcastChannel channel) {
if("error".equals(channel.getStatus())) {
Util.toast(context, context.getResources().getString(R.string.select_podcasts_invalid_podcast_channel, channel.getErrorMessage() == null ? "error" : channel.getErrorMessage()));
} else if("downloading".equals(channel.getStatus())) {
diff --git a/app/src/main/java/github/daneren2005/dsub/fragments/SelectShareFragment.java b/app/src/main/java/github/daneren2005/dsub/fragments/SelectShareFragment.java
index 65723618..cb0e48b9 100644
--- a/app/src/main/java/github/daneren2005/dsub/fragments/SelectShareFragment.java
+++ b/app/src/main/java/github/daneren2005/dsub/fragments/SelectShareFragment.java
@@ -18,7 +18,6 @@ package github.daneren2005.dsub.fragments;
import android.support.v7.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
-import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
@@ -95,7 +94,7 @@ public class SelectShareFragment extends SelectRecyclerFragment<Share> {
}
@Override
- public void onItemClicked(Share share) {
+ public void onItemClicked(UpdateView<Share> updateView, Share share) {
SubsonicFragment fragment = new SelectDirectoryFragment();
Bundle args = new Bundle();
args.putSerializable(Constants.INTENT_EXTRA_NAME_SHARE, share);
diff --git a/app/src/main/java/github/daneren2005/dsub/fragments/SelectVideoFragment.java b/app/src/main/java/github/daneren2005/dsub/fragments/SelectVideoFragment.java
index 0a79b3d5..a09125ff 100644
--- a/app/src/main/java/github/daneren2005/dsub/fragments/SelectVideoFragment.java
+++ b/app/src/main/java/github/daneren2005/dsub/fragments/SelectVideoFragment.java
@@ -15,12 +15,9 @@
package github.daneren2005.dsub.fragments;
-import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
-import android.view.View;
-import android.widget.AdapterView;
import java.util.List;
@@ -57,7 +54,7 @@ public class SelectVideoFragment extends SelectRecyclerFragment<MusicDirectory.E
}
@Override
- public void onItemClicked(MusicDirectory.Entry entry) {
+ public void onItemClicked(UpdateView<MusicDirectory.Entry> updateView, MusicDirectory.Entry entry) {
playVideo(entry);
}
diff --git a/app/src/main/java/github/daneren2005/dsub/fragments/SelectYearFragment.java b/app/src/main/java/github/daneren2005/dsub/fragments/SelectYearFragment.java
index 22676d8b..3e5883d6 100644
--- a/app/src/main/java/github/daneren2005/dsub/fragments/SelectYearFragment.java
+++ b/app/src/main/java/github/daneren2005/dsub/fragments/SelectYearFragment.java
@@ -19,9 +19,6 @@ import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
-import android.view.View;
-import android.widget.AdapterView;
-import android.widget.ArrayAdapter;
import java.util.ArrayList;
import java.util.List;
@@ -69,7 +66,7 @@ public class SelectYearFragment extends SelectRecyclerFragment<String> {
}
@Override
- public void onItemClicked(String decade) {
+ public void onItemClicked(UpdateView<String> updateView, String decade) {
SubsonicFragment fragment = new SelectDirectoryFragment();
Bundle args = new Bundle();
args.putString(Constants.INTENT_EXTRA_NAME_ALBUM_LIST_TYPE, "years");
diff --git a/app/src/main/java/github/daneren2005/dsub/fragments/SimilarArtistFragment.java b/app/src/main/java/github/daneren2005/dsub/fragments/SimilarArtistFragment.java
index 5677e445..93e3a93a 100644
--- a/app/src/main/java/github/daneren2005/dsub/fragments/SimilarArtistFragment.java
+++ b/app/src/main/java/github/daneren2005/dsub/fragments/SimilarArtistFragment.java
@@ -92,7 +92,7 @@ public class SimilarArtistFragment extends SelectRecyclerFragment<Artist> {
}
@Override
- public void onItemClicked(Artist artist) {
+ public void onItemClicked(UpdateView<Artist> updateView, Artist artist) {
SubsonicFragment fragment = new SelectDirectoryFragment();
Bundle args = new Bundle();
args.putString(Constants.INTENT_EXTRA_NAME_ID, artist.getId());
diff --git a/app/src/main/java/github/daneren2005/dsub/fragments/UserFragment.java b/app/src/main/java/github/daneren2005/dsub/fragments/UserFragment.java
index bdd0472b..dab104bd 100644
--- a/app/src/main/java/github/daneren2005/dsub/fragments/UserFragment.java
+++ b/app/src/main/java/github/daneren2005/dsub/fragments/UserFragment.java
@@ -78,7 +78,7 @@ public class UserFragment extends SelectRecyclerFragment<User.Setting>{
@Override
public SectionAdapter<User.Setting> getAdapter(List<User.Setting> objs) {
- return new SettingsAdapter(context, user, getImageLoader(), UserUtil.isCurrentAdmin() && ServerInfo.checkServerVersion(context, "1.10"));
+ return new SettingsAdapter(context, user, getImageLoader(), UserUtil.isCurrentAdmin() && ServerInfo.checkServerVersion(context, "1.10"), this);
}
@Override
@@ -93,8 +93,12 @@ public class UserFragment extends SelectRecyclerFragment<User.Setting>{
}
@Override
- public void onItemClicked(User.Setting item) {
-
+ public void onItemClicked(UpdateView<User.Setting> updateView, User.Setting item) {
+ if(updateView.isCheckable()) {
+ boolean newValue = !item.getValue();
+ item.setValue(newValue);
+ updateView.setChecked(newValue);
+ }
}
@Override
diff --git a/app/src/main/java/github/daneren2005/dsub/service/RESTMusicService.java b/app/src/main/java/github/daneren2005/dsub/service/RESTMusicService.java
index 88489e10..b405211d 100644
--- a/app/src/main/java/github/daneren2005/dsub/service/RESTMusicService.java
+++ b/app/src/main/java/github/daneren2005/dsub/service/RESTMusicService.java
@@ -41,7 +41,9 @@ import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
+import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
+import org.apache.http.client.methods.HttpRequestBase;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.conn.params.ConnManagerParams;
import org.apache.http.conn.params.ConnPerRouteBean;
@@ -1902,7 +1904,7 @@ public class RESTMusicService implements MusicService {
while (true) {
attempts++;
HttpContext httpContext = new BasicHttpContext();
- final HttpPost request = new HttpPost(url);
+ final HttpRequestBase request = (url.indexOf("rest") == -1) ? new HttpGet(url) : new HttpPost(url);
if (task != null) {
// Attempt to abort the HTTP request if the task is cancelled.
@@ -1929,12 +1931,12 @@ public class RESTMusicService implements MusicService {
});
}
- if (parameterNames != null) {
+ if (parameterNames != null && request instanceof HttpPost) {
List<NameValuePair> params = new ArrayList<NameValuePair>();
for (int i = 0; i < parameterNames.size(); i++) {
params.add(new BasicNameValuePair(parameterNames.get(i), String.valueOf(parameterValues.get(i))));
}
- request.setEntity(new UrlEncodedFormEntity(params, Constants.UTF_8));
+ ((HttpPost) request).setEntity(new UrlEncodedFormEntity(params, Constants.UTF_8));
}
if (requestParams != null) {
diff --git a/app/src/main/java/github/daneren2005/dsub/util/Constants.java b/app/src/main/java/github/daneren2005/dsub/util/Constants.java
index 34cfac45..89e7de3b 100644
--- a/app/src/main/java/github/daneren2005/dsub/util/Constants.java
+++ b/app/src/main/java/github/daneren2005/dsub/util/Constants.java
@@ -167,6 +167,7 @@ public final class Constants {
public static final String PREFERENCES_KEY_START_ON_HEADPHONES = "startOnHeadphones";
public static final String PREFERENCES_KEY_COLOR_ACTION_BAR = "colorActionBar";
public static final String PREFERENCES_KEY_SHUFFLE_BY_ALBUM = "shuffleByAlbum";
+ public static final String PREFERENCES_KEY_RESUME_PLAY_QUEUE_NEVER = "neverResumePlayQueue";
public static final String OFFLINE_SCROBBLE_COUNT = "scrobbleCount";
public static final String OFFLINE_SCROBBLE_ID = "scrobbleID";
diff --git a/app/src/main/java/github/daneren2005/dsub/util/UserUtil.java b/app/src/main/java/github/daneren2005/dsub/util/UserUtil.java
index d758c4c9..e5388d72 100644
--- a/app/src/main/java/github/daneren2005/dsub/util/UserUtil.java
+++ b/app/src/main/java/github/daneren2005/dsub/util/UserUtil.java
@@ -24,6 +24,9 @@ import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
import android.view.View;
import android.view.WindowManager;
import android.widget.ArrayAdapter;
@@ -40,6 +43,7 @@ import github.daneren2005.dsub.service.MusicServiceFactory;
import github.daneren2005.dsub.service.OfflineException;
import github.daneren2005.dsub.service.ServerTooOldException;
import github.daneren2005.dsub.adapter.SettingsAdapter;
+import github.daneren2005.dsub.view.UpdateView;
public final class UserUtil {
private static final String TAG = UserUtil.class.getSimpleName();
@@ -385,7 +389,26 @@ public final class UserUtil {
LinearLayoutManager layoutManager = new LinearLayoutManager(context);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
recyclerView.setLayoutManager(layoutManager);
- recyclerView.setAdapter(new SettingsAdapter(context, user, null, true));
+ recyclerView.setAdapter(new SettingsAdapter(context, user, null, true, new SectionAdapter.OnItemClickedListener<User.Setting>() {
+ @Override
+ public void onItemClicked(UpdateView<User.Setting> updateView, User.Setting item) {
+ if(updateView.isCheckable()) {
+ boolean newValue = !item.getValue();
+ item.setValue(newValue);
+ updateView.setChecked(newValue);
+ }
+ }
+
+ @Override
+ public void onCreateContextMenu(Menu menu, MenuInflater menuInflater, UpdateView<User.Setting> updateView, User.Setting item) {
+
+ }
+
+ @Override
+ public boolean onContextItemSelected(MenuItem menuItem, UpdateView<User.Setting> updateView, User.Setting item) {
+ return false;
+ }
+ }));
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle(R.string.menu_add_user)
diff --git a/app/src/main/java/github/daneren2005/dsub/view/FastScroller.java b/app/src/main/java/github/daneren2005/dsub/view/FastScroller.java
index 1ac809fd..9a108804 100644
--- a/app/src/main/java/github/daneren2005/dsub/view/FastScroller.java
+++ b/app/src/main/java/github/daneren2005/dsub/view/FastScroller.java
@@ -104,7 +104,7 @@ public class FastScroller extends LinearLayout {
handle.setSelected(true);
case MotionEvent.ACTION_MOVE:
final float y = event.getY();
- setBubbleAndHandlePosition(y);
+ // setBubbleAndHandlePosition(y);
setRecyclerViewPosition(y);
return true;
case MotionEvent.ACTION_UP: