diff options
author | ByteHamster <info@bytehamster.com> | 2021-01-02 20:17:17 +0100 |
---|---|---|
committer | ByteHamster <info@bytehamster.com> | 2021-01-02 20:17:17 +0100 |
commit | 3104232e5d8c355aa090e13cc9ff871beb200b4e (patch) | |
tree | 648984f85e22414ba823f3b7d1d482a66bedc262 /app/src/main/java | |
parent | 052884e0813fbd4580d6139d3034a4fe57e2bce0 (diff) | |
download | AntennaPod-3104232e5d8c355aa090e13cc9ff871beb200b4e.zip |
Calculate layer in makeFlatDrawerData
Diffstat (limited to 'app/src/main/java')
-rw-r--r-- | app/src/main/java/de/danoeh/antennapod/adapter/NavListAdapter.java | 2 | ||||
-rw-r--r-- | app/src/main/java/de/danoeh/antennapod/fragment/NavDrawerFragment.java | 27 |
2 files changed, 21 insertions, 8 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/NavListAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/NavListAdapter.java index 83abd4091..5533197b9 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/NavListAdapter.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/NavListAdapter.java @@ -303,7 +303,7 @@ public class NavListAdapter extends RecyclerView.Adapter<NavListAdapter.Holder> holder.count.setVisibility(View.GONE); } holder.title.setText(item.getTitle()); - holder.itemView.setPadding(item.layer * 50, 0, 0, 0); // TODO + holder.itemView.setPadding(item.getLayer() * 50, 0, 0, 0); // TODO } private void bindFeedView(NavDrawerData.FeedDrawerItem drawerItem, FeedHolder holder) { diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/NavDrawerFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/NavDrawerFragment.java index b7d968828..3d82bf7a1 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/NavDrawerFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/NavDrawerFragment.java @@ -19,6 +19,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; import androidx.appcompat.app.AlertDialog; +import androidx.core.util.Pair; import androidx.fragment.app.Fragment; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -379,8 +380,15 @@ public class NavDrawerFragment extends Fragment implements SharedPreferences.OnS } else { openFolders.add(folder.name); } - flatItemList = makeFlatDrawerData(navDrawerData.items); - navAdapter.notifyDataSetChanged(); + + disposable = Observable.fromCallable(() -> makeFlatDrawerData(navDrawerData.items, 0)) + .subscribeOn(Schedulers.computation()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe( + result -> { + flatItemList = result; + navAdapter.notifyDataSetChanged(); + }, error -> Log.e(TAG, Log.getStackTraceString(error))); } } } else if (UserPreferences.getSubscriptionsFilter().isEnabled() @@ -403,13 +411,17 @@ public class NavDrawerFragment extends Fragment implements SharedPreferences.OnS private void loadData() { progressBar.setVisibility(View.VISIBLE); - disposable = Observable.fromCallable(DBReader::getNavDrawerData) + disposable = Observable.fromCallable( + () -> { + NavDrawerData data = DBReader.getNavDrawerData(); + return new Pair<>(data, makeFlatDrawerData(data.items, 0)); + }) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe( result -> { - navDrawerData = result; - flatItemList = makeFlatDrawerData(navDrawerData.items); // TODO: This is the main thread! + navDrawerData = result.first; + flatItemList = result.second; updateSelection(); // Selected item might be a feed navAdapter.notifyDataSetChanged(); progressBar.setVisibility(View.GONE); @@ -419,15 +431,16 @@ public class NavDrawerFragment extends Fragment implements SharedPreferences.OnS }); } - private List<NavDrawerData.DrawerItem> makeFlatDrawerData(List<NavDrawerData.DrawerItem> items) { + private List<NavDrawerData.DrawerItem> makeFlatDrawerData(List<NavDrawerData.DrawerItem> items, int layer) { List<NavDrawerData.DrawerItem> flatItems = new ArrayList<>(); for (NavDrawerData.DrawerItem item : items) { + item.setLayer(layer); flatItems.add(item); if (item.type == NavDrawerData.DrawerItem.Type.FOLDER) { NavDrawerData.FolderDrawerItem folder = ((NavDrawerData.FolderDrawerItem) item); folder.isOpen = openFolders.contains(folder.name); if (folder.isOpen) { - flatItems.addAll(makeFlatDrawerData(((NavDrawerData.FolderDrawerItem) item).children)); + flatItems.addAll(makeFlatDrawerData(((NavDrawerData.FolderDrawerItem) item).children, layer + 1)); } } } |