summaryrefslogtreecommitdiff
path: root/app/src/main/java/de
diff options
context:
space:
mode:
authordamoasda <46045854+damoasda@users.noreply.github.com>2019-07-09 08:55:46 +0200
committerdamoasda <46045854+damoasda@users.noreply.github.com>2019-07-09 08:55:46 +0200
commit9b7a61471d342a2db4a2a6fe0681e748f15ca903 (patch)
treec87cd23f6c33f8421326637955cd0c01cc3d9392 /app/src/main/java/de
parent63eb766dffe9684899f2d27e3dad540bc3c9f184 (diff)
downloadAntennaPod-9b7a61471d342a2db4a2a6fe0681e748f15ca903.zip
Queue: Keep sorted #1556
Diffstat (limited to 'app/src/main/java/de')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java30
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/preferences/UserInterfacePreferencesFragment.java16
-rw-r--r--app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java5
3 files changed, 37 insertions, 14 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java
index 71b3c27a2..f3421c8fd 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java
@@ -272,6 +272,13 @@ public class QueueFragment extends Fragment {
MenuItemUtils.refreshLockItem(getActivity(), menu);
+ // Show Lock Item and Sort Item only if queue is sorted manually
+ boolean sortedManually = UserPreferences.isQueueSortedManually();
+ MenuItem lockItem = menu.findItem(R.id.queue_lock);
+ lockItem.setVisible(sortedManually);
+ MenuItem sortItem = menu.findItem(R.id.queue_sort);
+ sortItem.setVisible(sortedManually);
+
isUpdatingFeeds = MenuItemUtils.updateRefreshMenuItem(menu, R.id.refresh_item, updateRefreshMenuItemChecker);
}
}
@@ -317,37 +324,37 @@ public class QueueFragment extends Fragment {
conDialog.createNewDialog().show();
return true;
case R.id.queue_sort_episode_title_asc:
- QueueSorter.sort(getActivity(), QueueSorter.Rule.EPISODE_TITLE_ASC, true);
+ QueueSorter.sort(QueueSorter.Rule.EPISODE_TITLE_ASC, true);
return true;
case R.id.queue_sort_episode_title_desc:
- QueueSorter.sort(getActivity(), QueueSorter.Rule.EPISODE_TITLE_DESC, true);
+ QueueSorter.sort(QueueSorter.Rule.EPISODE_TITLE_DESC, true);
return true;
case R.id.queue_sort_date_asc:
- QueueSorter.sort(getActivity(), QueueSorter.Rule.DATE_ASC, true);
+ QueueSorter.sort(QueueSorter.Rule.DATE_ASC, true);
return true;
case R.id.queue_sort_date_desc:
- QueueSorter.sort(getActivity(), QueueSorter.Rule.DATE_DESC, true);
+ QueueSorter.sort(QueueSorter.Rule.DATE_DESC, true);
return true;
case R.id.queue_sort_duration_asc:
- QueueSorter.sort(getActivity(), QueueSorter.Rule.DURATION_ASC, true);
+ QueueSorter.sort(QueueSorter.Rule.DURATION_ASC, true);
return true;
case R.id.queue_sort_duration_desc:
- QueueSorter.sort(getActivity(), QueueSorter.Rule.DURATION_DESC, true);
+ QueueSorter.sort(QueueSorter.Rule.DURATION_DESC, true);
return true;
case R.id.queue_sort_feed_title_asc:
- QueueSorter.sort(getActivity(), QueueSorter.Rule.FEED_TITLE_ASC, true);
+ QueueSorter.sort(QueueSorter.Rule.FEED_TITLE_ASC, true);
return true;
case R.id.queue_sort_feed_title_desc:
- QueueSorter.sort(getActivity(), QueueSorter.Rule.FEED_TITLE_DESC, true);
+ QueueSorter.sort(QueueSorter.Rule.FEED_TITLE_DESC, true);
return true;
case R.id.queue_sort_random:
- QueueSorter.sort(getActivity(), QueueSorter.Rule.RANDOM, true);
+ QueueSorter.sort(QueueSorter.Rule.RANDOM, true);
return true;
case R.id.queue_sort_smart_shuffle_asc:
- QueueSorter.sort(getActivity(), QueueSorter.Rule.SMART_SHUFFLE_ASC, true);
+ QueueSorter.sort(QueueSorter.Rule.SMART_SHUFFLE_ASC, true);
return true;
case R.id.queue_sort_smart_shuffle_desc:
- QueueSorter.sort(getActivity(), QueueSorter.Rule.SMART_SHUFFLE_DESC, true);
+ QueueSorter.sort(QueueSorter.Rule.SMART_SHUFFLE_DESC, true);
return true;
default:
return false;
@@ -661,5 +668,4 @@ public class QueueFragment extends Fragment {
}
}, error -> Log.e(TAG, Log.getStackTraceString(error)));
}
-
}
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/UserInterfacePreferencesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/UserInterfacePreferencesFragment.java
index e1d44f7d3..db852cee7 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/UserInterfacePreferencesFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/UserInterfacePreferencesFragment.java
@@ -11,7 +11,12 @@ import android.widget.ListView;
import android.widget.Toast;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.activity.MainActivity;
+import de.danoeh.antennapod.core.feed.FeedItem;
import de.danoeh.antennapod.core.preferences.UserPreferences;
+import de.danoeh.antennapod.core.storage.DBWriter;
+import de.danoeh.antennapod.core.util.Permutor;
+import de.danoeh.antennapod.core.util.QueueSorter;
+
import org.apache.commons.lang3.ArrayUtils;
import java.util.List;
@@ -89,6 +94,17 @@ public class UserInterfacePreferencesFragment extends PreferenceFragmentCompat {
if (Build.VERSION.SDK_INT >= 26) {
findPreference(UserPreferences.PREF_EXPANDED_NOTIFICATION).setVisible(false);
}
+
+ findPreference(UserPreferences.PREF_QUEUE_SORT_ORDER)
+ .setOnPreferenceChangeListener((preference, newValue) -> {
+ UserPreferences.QueueSortOrder newSortOrder = UserPreferences.parseQueueSortOrder((String) newValue);
+ if (newSortOrder != UserPreferences.QueueSortOrder.MANUALLY) {
+ QueueSorter.Rule sortRule = QueueSorter.queueSortOrder2Rule(newSortOrder);
+ Permutor<FeedItem> permutor = QueueSorter.getPermutor(sortRule);
+ DBWriter.reorderQueue(permutor, true);
+ }
+ return true;
+ });
}
private void showDrawerPreferencesDialog() {
diff --git a/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java b/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java
index 3f8d88af7..2886a7e33 100644
--- a/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java
+++ b/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java
@@ -68,16 +68,17 @@ public class FeedItemMenuHandler {
}
boolean hasMedia = selectedItem.getMedia() != null;
boolean isPlaying = hasMedia && selectedItem.getState() == FeedItem.State.PLAYING;
+ boolean sortedManually = UserPreferences.isQueueSortedManually();
if (!isPlaying) {
mi.setItemVisibility(R.id.skip_episode_item, false);
}
boolean isInQueue = selectedItem.isTagged(FeedItem.TAG_QUEUE);
- if(queueAccess == null || queueAccess.size() == 0 || queueAccess.get(0) == selectedItem.getId()) {
+ if (queueAccess == null || queueAccess.size() == 0 || queueAccess.get(0) == selectedItem.getId() || !sortedManually) {
mi.setItemVisibility(R.id.move_to_top_item, false);
}
- if(queueAccess == null || queueAccess.size() == 0 || queueAccess.get(queueAccess.size()-1) == selectedItem.getId()) {
+ if (queueAccess == null || queueAccess.size() == 0 || queueAccess.get(queueAccess.size()-1) == selectedItem.getId() || !sortedManually) {
mi.setItemVisibility(R.id.move_to_bottom_item, false);
}
if (!isInQueue) {