Merge pull request #4400 from asdoi/sort_subscriptions

Add 'sort' to subscriptions view
This commit is contained in:
H. Lehmann 2020-09-07 22:55:16 +02:00 committed by GitHub
commit 410dfabeb5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 69 additions and 15 deletions

View File

@ -6,6 +6,9 @@ import androidx.appcompat.app.AlertDialog;
import org.greenrobot.eventbus.EventBus;
import java.util.Arrays;
import java.util.List;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.core.event.UnreadItemsUpdateEvent;
import de.danoeh.antennapod.core.preferences.UserPreferences;
@ -16,20 +19,15 @@ public class FeedFilterDialog {
dialog.setTitle(context.getString(R.string.pref_filter_feed_title));
dialog.setNegativeButton(android.R.string.cancel, (d, listener) -> d.dismiss());
int selectedIndexTemp = 0;
int selected = UserPreferences.getFeedFilter();
String[] entryValues = context.getResources().getStringArray(R.array.nav_drawer_feed_filter_values);
for (int i = 0; i < entryValues.length; i++) {
if (Integer.parseInt(entryValues[i]) == selected) {
selectedIndexTemp = i;
}
}
List<String> entryValues =
Arrays.asList(context.getResources().getStringArray(R.array.nav_drawer_feed_filter_values));
final int selectedIndex = entryValues.indexOf("" + selected);
final int selectedIndex = selectedIndexTemp;
String[] items = context.getResources().getStringArray(R.array.nav_drawer_feed_filter_options);
dialog.setSingleChoiceItems(items, selectedIndex, (d, which) -> {
if (selectedIndex != which) {
UserPreferences.setFeedFilter(entryValues[which]);
UserPreferences.setFeedFilter(entryValues.get(which));
//Update subscriptions
EventBus.getDefault().post(new UnreadItemsUpdateEvent());
}

View File

@ -0,0 +1,38 @@
package de.danoeh.antennapod.dialog;
import android.content.Context;
import androidx.appcompat.app.AlertDialog;
import org.greenrobot.eventbus.EventBus;
import java.util.Arrays;
import java.util.List;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.core.event.UnreadItemsUpdateEvent;
import de.danoeh.antennapod.core.preferences.UserPreferences;
public class FeedSortDialog {
public static void showDialog(Context context) {
AlertDialog.Builder dialog = new AlertDialog.Builder(context);
dialog.setTitle(context.getString(R.string.pref_nav_drawer_feed_order_title));
dialog.setNegativeButton(android.R.string.cancel, (d, listener) -> d.dismiss());
int selected = UserPreferences.getFeedOrder();
List<String> entryValues =
Arrays.asList(context.getResources().getStringArray(R.array.nav_drawer_feed_order_values));
final int selectedIndex = entryValues.indexOf("" + selected);
String[] items = context.getResources().getStringArray(R.array.nav_drawer_feed_order_options);
dialog.setSingleChoiceItems(items, selectedIndex, (d, which) -> {
if (selectedIndex != which) {
UserPreferences.setFeedOrder(entryValues.get(which));
//Update subscriptions
EventBus.getDefault().post(new UnreadItemsUpdateEvent());
}
d.dismiss();
});
dialog.show();
}
}

View File

@ -46,6 +46,7 @@ import de.danoeh.antennapod.core.util.FeedItemUtil;
import de.danoeh.antennapod.core.util.IntentUtils;
import de.danoeh.antennapod.core.util.download.AutoUpdateManager;
import de.danoeh.antennapod.dialog.FeedFilterDialog;
import de.danoeh.antennapod.dialog.FeedSortDialog;
import de.danoeh.antennapod.dialog.RenameFeedDialog;
import de.danoeh.antennapod.menuhandler.MenuItemUtils;
import de.danoeh.antennapod.view.EmptyViewHandler;
@ -131,6 +132,9 @@ public class SubscriptionFragment extends Fragment {
case R.id.subscriptions_filter:
FeedFilterDialog.showDialog(requireContext());
return true;
case R.id.subscriptions_sort:
FeedSortDialog.showDialog(requireContext());
return true;
case R.id.subscription_num_columns_2:
setColumnNumber(2);
return true;

View File

@ -13,6 +13,7 @@ import de.danoeh.antennapod.activity.MainActivity;
import de.danoeh.antennapod.activity.PreferenceActivity;
import de.danoeh.antennapod.core.preferences.UserPreferences;
import de.danoeh.antennapod.dialog.FeedFilterDialog;
import de.danoeh.antennapod.dialog.FeedSortDialog;
import de.danoeh.antennapod.fragment.NavDrawerFragment;
import org.apache.commons.lang3.ArrayUtils;
@ -82,6 +83,12 @@ public class UserInterfacePreferencesFragment extends PreferenceFragmentCompat {
return true;
}));
findPreference(UserPreferences.PREF_DRAWER_FEED_ORDER)
.setOnPreferenceClickListener((preference -> {
FeedSortDialog.showDialog(requireContext());
return true;
}));
if (Build.VERSION.SDK_INT >= 26) {
findPreference(UserPreferences.PREF_EXPANDED_NOTIFICATION).setVisible(false);
}

View File

@ -14,6 +14,10 @@
android:id="@+id/subscriptions_filter"
android:title="@string/filter"
custom:showAsAction="never" />
<item
android:id="@+id/subscriptions_sort"
android:title="@string/sort"
custom:showAsAction="never" />
<item
android:id="@+id/subscription_num_columns"
android:title="@string/subscription_num_columns"

View File

@ -22,13 +22,10 @@
android:enabled="true"/>
</PreferenceCategory>
<PreferenceCategory android:title="@string/subscriptions_label">
<ListPreference
android:entryValues="@array/nav_drawer_feed_order_values"
android:entries="@array/nav_drawer_feed_order_options"
<Preference
android:title="@string/pref_nav_drawer_feed_order_title"
android:key="prefDrawerFeedOrder"
android:summary="@string/pref_nav_drawer_feed_order_sum"
android:defaultValue="0"/>
android:summary="@string/pref_nav_drawer_feed_order_sum"/>
<ListPreference
android:entryValues="@array/nav_drawer_feed_counter_values"
android:entries="@array/nav_drawer_feed_counter_options"

View File

@ -55,7 +55,7 @@ public class UserPreferences {
// User Interface
public static final String PREF_THEME = "prefTheme";
public static final String PREF_HIDDEN_DRAWER_ITEMS = "prefHiddenDrawerItems";
private static final String PREF_DRAWER_FEED_ORDER = "prefDrawerFeedOrder";
public static final String PREF_DRAWER_FEED_ORDER = "prefDrawerFeedOrder";
private static final String PREF_DRAWER_FEED_COUNTER = "prefDrawerFeedIndicator";
public static final String PREF_EXPANDED_NOTIFICATION = "prefExpandNotify";
public static final String PREF_USE_EPISODE_COVER = "prefEpisodeCover";
@ -246,6 +246,12 @@ public class UserPreferences {
return Integer.parseInt(value);
}
public static void setFeedOrder(String selected) {
prefs.edit()
.putString(PREF_DRAWER_FEED_ORDER, selected)
.commit();
}
public static int getFeedCounterSetting() {
String value = prefs.getString(PREF_DRAWER_FEED_COUNTER, "" + FEED_COUNTER_SHOW_NEW);
return Integer.parseInt(value);