summaryrefslogtreecommitdiff
path: root/app/src/main/java
diff options
context:
space:
mode:
authorByteHamster <info@bytehamster.com>2021-01-02 20:17:17 +0100
committerByteHamster <info@bytehamster.com>2021-01-02 20:17:17 +0100
commit3104232e5d8c355aa090e13cc9ff871beb200b4e (patch)
tree648984f85e22414ba823f3b7d1d482a66bedc262 /app/src/main/java
parent052884e0813fbd4580d6139d3034a4fe57e2bce0 (diff)
downloadAntennaPod-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.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/NavDrawerFragment.java27
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));
}
}
}