summaryrefslogtreecommitdiff
path: root/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java86
1 files changed, 49 insertions, 37 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java
index 9bbc03fba..58cfece14 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java
@@ -28,6 +28,7 @@ import android.widget.TextView;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.joanzapata.iconify.Iconify;
+import java.util.List;
import java.util.Locale;
import java.util.concurrent.Callable;
@@ -44,6 +45,7 @@ import de.danoeh.antennapod.core.service.download.DownloadService;
import de.danoeh.antennapod.core.storage.DBReader;
import de.danoeh.antennapod.core.storage.DBWriter;
import de.danoeh.antennapod.core.storage.DownloadRequester;
+import de.danoeh.antennapod.core.storage.NavDrawerData;
import de.danoeh.antennapod.core.util.download.AutoUpdateManager;
import de.danoeh.antennapod.dialog.RemoveFeedDialog;
import de.danoeh.antennapod.dialog.SubscriptionsFilterDialog;
@@ -68,6 +70,7 @@ public class SubscriptionFragment extends Fragment implements Toolbar.OnMenuItem
private static final String PREFS = "SubscriptionFragment";
private static final String PREF_NUM_COLUMNS = "columns";
private static final String KEY_UP_ARROW = "up_arrow";
+ private static final String ARGUMENT_FOLDER = "folder";
private static final int MIN_NUM_COLUMNS = 2;
private static final int[] COLUMN_CHECKBOX_IDS = {
@@ -77,21 +80,30 @@ public class SubscriptionFragment extends Fragment implements Toolbar.OnMenuItem
R.id.subscription_num_columns_5};
private GridView subscriptionGridLayout;
- private DBReader.NavDrawerData navDrawerData;
+ private List<NavDrawerData.DrawerItem> listItems;
private SubscriptionsAdapter subscriptionAdapter;
private FloatingActionButton subscriptionAddButton;
private ProgressBar progressBar;
private EmptyViewHandler emptyView;
private TextView feedsFilteredMsg;
private Toolbar toolbar;
+ private String displayedFolder = null;
- private int mPosition = -1;
+ private Feed selectedFeed = null;
private boolean isUpdatingFeeds = false;
private boolean displayUpArrow;
private Disposable disposable;
private SharedPreferences prefs;
+ public static SubscriptionFragment newInstance(String folderTitle) {
+ SubscriptionFragment fragment = new SubscriptionFragment();
+ Bundle args = new Bundle();
+ args.putString(ARGUMENT_FOLDER, folderTitle);
+ fragment.setArguments(args);
+ return fragment;
+ }
+
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -119,6 +131,13 @@ public class SubscriptionFragment extends Fragment implements Toolbar.OnMenuItem
}
refreshToolbarState();
+ if (getArguments() != null) {
+ displayedFolder = getArguments().getString(ARGUMENT_FOLDER, null);
+ if (displayedFolder != null) {
+ toolbar.setTitle(displayedFolder);
+ }
+ }
+
subscriptionGridLayout = root.findViewById(R.id.subscriptions_grid);
subscriptionGridLayout.setNumColumns(prefs.getInt(PREF_NUM_COLUMNS, getDefaultNumOfColumns()));
registerForContextMenu(subscriptionGridLayout);
@@ -231,12 +250,23 @@ public class SubscriptionFragment extends Fragment implements Toolbar.OnMenuItem
disposable.dispose();
}
emptyView.hide();
- disposable = Observable.fromCallable(DBReader::getNavDrawerData)
+ disposable = Observable.fromCallable(
+ () -> {
+ NavDrawerData data = DBReader.getNavDrawerData();
+ List<NavDrawerData.DrawerItem> items = data.items;
+ for (NavDrawerData.DrawerItem item : items) {
+ if (item.type == NavDrawerData.DrawerItem.Type.FOLDER
+ && item.getTitle().equals(displayedFolder)) {
+ return ((NavDrawerData.FolderDrawerItem) item).children;
+ }
+ }
+ return items;
+ })
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
result -> {
- navDrawerData = result;
+ listItems = result;
subscriptionAdapter.notifyDataSetChanged();
emptyView.updateVisibility();
progressBar.setVisibility(View.GONE); // Keep hidden to avoid flickering while refreshing
@@ -264,37 +294,24 @@ public class SubscriptionFragment extends Fragment implements Toolbar.OnMenuItem
AdapterView.AdapterContextMenuInfo adapterInfo = (AdapterView.AdapterContextMenuInfo) menuInfo;
int position = adapterInfo.position;
- Object selectedObject = subscriptionAdapter.getItem(position);
- if (selectedObject.equals(SubscriptionsAdapter.ADD_ITEM_OBJ)) {
- mPosition = position;
- return;
- }
-
- Feed feed = (Feed) selectedObject;
-
- MenuInflater inflater = requireActivity().getMenuInflater();
- inflater.inflate(R.menu.nav_feed_context, menu);
+ NavDrawerData.DrawerItem selectedObject = (NavDrawerData.DrawerItem) subscriptionAdapter.getItem(position);
- menu.setHeaderTitle(feed.getTitle());
-
- mPosition = position;
+ if (selectedObject.type == NavDrawerData.DrawerItem.Type.FEED) {
+ MenuInflater inflater = requireActivity().getMenuInflater();
+ inflater.inflate(R.menu.nav_feed_context, menu);
+ selectedFeed = ((NavDrawerData.FeedDrawerItem) selectedObject).feed;
+ }
+ menu.setHeaderTitle(selectedObject.getTitle());
}
@Override
public boolean onContextItemSelected(MenuItem item) {
- final int position = mPosition;
- mPosition = -1; // reset
- if (position < 0) {
- return false;
- }
-
- Object selectedObject = subscriptionAdapter.getItem(position);
- if (selectedObject.equals(SubscriptionsAdapter.ADD_ITEM_OBJ)) {
- // this is the add object, do nothing
+ if (selectedFeed == null) {
return false;
}
- Feed feed = (Feed) selectedObject;
+ Feed feed = selectedFeed;
+ selectedFeed = null;
switch (item.getItemId()) {
case R.id.remove_all_new_flags_item:
displayConfirmationDialog(
@@ -359,25 +376,20 @@ public class SubscriptionFragment extends Fragment implements Toolbar.OnMenuItem
private final SubscriptionsAdapter.ItemAccess itemAccess = new SubscriptionsAdapter.ItemAccess() {
@Override
public int getCount() {
- if (navDrawerData != null) {
- return navDrawerData.feeds.size();
+ if (listItems != null) {
+ return listItems.size();
} else {
return 0;
}
}
@Override
- public Feed getItem(int position) {
- if (navDrawerData != null && 0 <= position && position < navDrawerData.feeds.size()) {
- return navDrawerData.feeds.get(position);
+ public NavDrawerData.DrawerItem getItem(int position) {
+ if (listItems != null && 0 <= position && position < listItems.size()) {
+ return listItems.get(position);
} else {
return null;
}
}
-
- @Override
- public int getFeedCounter(long feedId) {
- return navDrawerData != null ? navDrawerData.feedCounters.get(feedId) : 0;
- }
};
}