summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorflofriday <flohacksfriday@gmail.com>2024-09-08 16:05:36 +0200
committerGitHub <noreply@github.com>2024-09-08 16:05:36 +0200
commit60f6e175a8dc3a6b67655c920a9f70aceeb5b7db (patch)
tree10efa073867b0427f057854f6a8b5949d28248c8
parent5ac3185605bb6bf3dd709513bd4ac84994aab386 (diff)
downloadAntennaPod-60f6e175a8dc3a6b67655c920a9f70aceeb5b7db.zip
Show message for empty home sections (#7221)
-rw-r--r--app/src/main/java/de/danoeh/antennapod/ui/screen/home/sections/DownloadsSection.java25
-rw-r--r--app/src/main/java/de/danoeh/antennapod/ui/screen/home/sections/EpisodesSurpriseSection.java31
-rw-r--r--app/src/main/java/de/danoeh/antennapod/ui/screen/home/sections/InboxSection.java31
-rw-r--r--app/src/main/java/de/danoeh/antennapod/ui/screen/home/sections/QueueSection.java2
-rw-r--r--app/src/main/res/layout/home_section.xml10
-rw-r--r--ui/i18n/src/main/res/values/strings.xml4
6 files changed, 69 insertions, 34 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/ui/screen/home/sections/DownloadsSection.java b/app/src/main/java/de/danoeh/antennapod/ui/screen/home/sections/DownloadsSection.java
index 06de7803a..af497bbe8 100644
--- a/app/src/main/java/de/danoeh/antennapod/ui/screen/home/sections/DownloadsSection.java
+++ b/app/src/main/java/de/danoeh/antennapod/ui/screen/home/sections/DownloadsSection.java
@@ -6,35 +6,38 @@ import android.view.ContextMenu;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
+
+import org.greenrobot.eventbus.Subscribe;
+import org.greenrobot.eventbus.ThreadMode;
+
+import java.util.List;
+
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.activity.MainActivity;
-import de.danoeh.antennapod.ui.episodeslist.EpisodeItemListAdapter;
import de.danoeh.antennapod.event.DownloadLogEvent;
-import de.danoeh.antennapod.ui.MenuItemUtils;
-import de.danoeh.antennapod.storage.database.DBReader;
import de.danoeh.antennapod.event.FeedItemEvent;
import de.danoeh.antennapod.event.PlayerStatusEvent;
import de.danoeh.antennapod.event.playback.PlaybackPositionEvent;
-import de.danoeh.antennapod.ui.screen.download.CompletedDownloadsFragment;
-import de.danoeh.antennapod.ui.swipeactions.SwipeActions;
import de.danoeh.antennapod.model.feed.FeedItem;
import de.danoeh.antennapod.model.feed.FeedItemFilter;
import de.danoeh.antennapod.model.feed.SortOrder;
+import de.danoeh.antennapod.storage.database.DBReader;
import de.danoeh.antennapod.storage.preferences.UserPreferences;
-import de.danoeh.antennapod.ui.screen.home.HomeSection;
+import de.danoeh.antennapod.ui.MenuItemUtils;
+import de.danoeh.antennapod.ui.episodeslist.EpisodeItemListAdapter;
import de.danoeh.antennapod.ui.episodeslist.EpisodeItemViewHolder;
+import de.danoeh.antennapod.ui.screen.download.CompletedDownloadsFragment;
+import de.danoeh.antennapod.ui.screen.home.HomeSection;
+import de.danoeh.antennapod.ui.swipeactions.SwipeActions;
import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
-import org.greenrobot.eventbus.Subscribe;
-import org.greenrobot.eventbus.ThreadMode;
-
-import java.util.List;
public class DownloadsSection extends HomeSection {
public static final String TAG = "DownloadsSection";
@@ -63,6 +66,7 @@ public class DownloadsSection extends HomeSection {
};
adapter.setDummyViews(NUM_EPISODES);
viewBinding.recyclerView.setAdapter(adapter);
+ viewBinding.emptyLabel.setText(R.string.home_downloads_empty_text);
SwipeActions swipeActions = new SwipeActions(this, CompletedDownloadsFragment.TAG);
swipeActions.attachTo(viewBinding.recyclerView);
@@ -133,6 +137,7 @@ public class DownloadsSection extends HomeSection {
items = downloads;
adapter.setDummyViews(0);
adapter.updateItems(items);
+ viewBinding.emptyLabel.setVisibility(items.isEmpty() ? View.VISIBLE : View.GONE);
}, error -> Log.e(TAG, Log.getStackTraceString(error)));
}
}
diff --git a/app/src/main/java/de/danoeh/antennapod/ui/screen/home/sections/EpisodesSurpriseSection.java b/app/src/main/java/de/danoeh/antennapod/ui/screen/home/sections/EpisodesSurpriseSection.java
index 09f060f81..1f1a633c7 100644
--- a/app/src/main/java/de/danoeh/antennapod/ui/screen/home/sections/EpisodesSurpriseSection.java
+++ b/app/src/main/java/de/danoeh/antennapod/ui/screen/home/sections/EpisodesSurpriseSection.java
@@ -6,33 +6,36 @@ import android.view.ContextMenu;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
+
+import org.greenrobot.eventbus.Subscribe;
+import org.greenrobot.eventbus.ThreadMode;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Random;
+
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.activity.MainActivity;
-import de.danoeh.antennapod.ui.episodeslist.HorizontalItemListAdapter;
-import de.danoeh.antennapod.ui.MenuItemUtils;
-import de.danoeh.antennapod.storage.database.DBReader;
import de.danoeh.antennapod.event.EpisodeDownloadEvent;
import de.danoeh.antennapod.event.FeedItemEvent;
import de.danoeh.antennapod.event.PlayerStatusEvent;
import de.danoeh.antennapod.event.playback.PlaybackPositionEvent;
-import de.danoeh.antennapod.ui.screen.AllEpisodesFragment;
import de.danoeh.antennapod.model.feed.FeedItem;
-import de.danoeh.antennapod.ui.screen.home.HomeSection;
+import de.danoeh.antennapod.storage.database.DBReader;
+import de.danoeh.antennapod.ui.MenuItemUtils;
+import de.danoeh.antennapod.ui.episodeslist.HorizontalItemListAdapter;
import de.danoeh.antennapod.ui.episodeslist.HorizontalItemViewHolder;
+import de.danoeh.antennapod.ui.screen.AllEpisodesFragment;
+import de.danoeh.antennapod.ui.screen.home.HomeSection;
import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
-import org.greenrobot.eventbus.Subscribe;
-import org.greenrobot.eventbus.ThreadMode;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Random;
public class EpisodesSurpriseSection extends HomeSection {
public static final String TAG = "EpisodesSurpriseSection";
@@ -69,6 +72,7 @@ public class EpisodesSurpriseSection extends HomeSection {
if (seed == 0) {
seed = new Random().nextInt();
}
+ viewBinding.emptyLabel.setText(R.string.home_no_recent_unplayed_episodes_text);
return view;
}
@@ -149,6 +153,11 @@ public class EpisodesSurpriseSection extends HomeSection {
this.episodes = episodes;
listAdapter.setDummyViews(0);
listAdapter.updateData(episodes);
+
+ boolean isShuffleable = !episodes.isEmpty();
+ viewBinding.shuffleButton.setVisibility(isShuffleable ? View.VISIBLE : View.GONE);
+ viewBinding.recyclerView.setVisibility(isShuffleable ? View.VISIBLE : View.GONE);
+ viewBinding.emptyLabel.setVisibility(!isShuffleable ? View.VISIBLE : View.GONE);
}, error -> Log.e(TAG, Log.getStackTraceString(error)));
}
}
diff --git a/app/src/main/java/de/danoeh/antennapod/ui/screen/home/sections/InboxSection.java b/app/src/main/java/de/danoeh/antennapod/ui/screen/home/sections/InboxSection.java
index d30fa85bc..7bb791746 100644
--- a/app/src/main/java/de/danoeh/antennapod/ui/screen/home/sections/InboxSection.java
+++ b/app/src/main/java/de/danoeh/antennapod/ui/screen/home/sections/InboxSection.java
@@ -6,36 +6,39 @@ import android.view.ContextMenu;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.util.Pair;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
+
+import org.greenrobot.eventbus.Subscribe;
+import org.greenrobot.eventbus.ThreadMode;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.activity.MainActivity;
-import de.danoeh.antennapod.ui.episodeslist.EpisodeItemListAdapter;
-import de.danoeh.antennapod.ui.MenuItemUtils;
-import de.danoeh.antennapod.storage.database.DBReader;
import de.danoeh.antennapod.event.EpisodeDownloadEvent;
import de.danoeh.antennapod.event.FeedItemEvent;
import de.danoeh.antennapod.event.FeedListUpdateEvent;
import de.danoeh.antennapod.event.UnreadItemsUpdateEvent;
-import de.danoeh.antennapod.ui.screen.InboxFragment;
-import de.danoeh.antennapod.ui.swipeactions.SwipeActions;
import de.danoeh.antennapod.model.feed.FeedItem;
import de.danoeh.antennapod.model.feed.FeedItemFilter;
+import de.danoeh.antennapod.storage.database.DBReader;
import de.danoeh.antennapod.storage.preferences.UserPreferences;
+import de.danoeh.antennapod.ui.MenuItemUtils;
+import de.danoeh.antennapod.ui.episodeslist.EpisodeItemListAdapter;
+import de.danoeh.antennapod.ui.screen.InboxFragment;
import de.danoeh.antennapod.ui.screen.home.HomeSection;
+import de.danoeh.antennapod.ui.swipeactions.SwipeActions;
import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
-import org.greenrobot.eventbus.Subscribe;
-import org.greenrobot.eventbus.ThreadMode;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Locale;
public class InboxSection extends HomeSection {
public static final String TAG = "InboxSection";
@@ -53,7 +56,7 @@ public class InboxSection extends HomeSection {
viewBinding.recyclerView.setOverScrollMode(RecyclerView.OVER_SCROLL_NEVER);
viewBinding.recyclerView.setLayoutManager(new LinearLayoutManager(getContext(), RecyclerView.VERTICAL, false));
viewBinding.recyclerView.setRecycledViewPool(((MainActivity) requireActivity()).getRecycledViewPool());
- adapter = new EpisodeItemListAdapter((MainActivity) requireActivity()) {
+ adapter = new EpisodeItemListAdapter(requireActivity()) {
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
@@ -62,6 +65,7 @@ public class InboxSection extends HomeSection {
};
adapter.setDummyViews(NUM_EPISODES);
viewBinding.recyclerView.setAdapter(adapter);
+ viewBinding.emptyLabel.setText(R.string.home_new_empty_text);
SwipeActions swipeActions = new SwipeActions(this, InboxFragment.TAG);
swipeActions.attachTo(viewBinding.recyclerView);
@@ -129,7 +133,8 @@ public class InboxSection extends HomeSection {
items = data.first;
adapter.setDummyViews(0);
adapter.updateItems(items);
- viewBinding.numNewItemsLabel.setVisibility(View.VISIBLE);
+ viewBinding.emptyLabel.setVisibility(items.isEmpty() ? View.VISIBLE : View.GONE);
+ viewBinding.numNewItemsLabel.setVisibility(!items.isEmpty() ? View.VISIBLE : View.GONE);
if (data.second >= 100) {
viewBinding.numNewItemsLabel.setText(String.format(Locale.getDefault(), "%d+", 99));
} else {
diff --git a/app/src/main/java/de/danoeh/antennapod/ui/screen/home/sections/QueueSection.java b/app/src/main/java/de/danoeh/antennapod/ui/screen/home/sections/QueueSection.java
index 790992420..a06f4baba 100644
--- a/app/src/main/java/de/danoeh/antennapod/ui/screen/home/sections/QueueSection.java
+++ b/app/src/main/java/de/danoeh/antennapod/ui/screen/home/sections/QueueSection.java
@@ -59,6 +59,7 @@ public class QueueSection extends HomeSection {
viewBinding.recyclerView.setAdapter(listAdapter);
int paddingHorizontal = (int) (12 * getResources().getDisplayMetrics().density);
viewBinding.recyclerView.setPadding(paddingHorizontal, 0, paddingHorizontal, 0);
+ viewBinding.emptyLabel.setText(R.string.home_continue_empty_text);
return view;
}
@@ -156,6 +157,7 @@ public class QueueSection extends HomeSection {
this.queue = queue;
listAdapter.setDummyViews(0);
listAdapter.updateData(queue);
+ viewBinding.emptyLabel.setVisibility(queue.isEmpty() ? View.VISIBLE : View.GONE);
}, error -> Log.e(TAG, Log.getStackTraceString(error)));
}
diff --git a/app/src/main/res/layout/home_section.xml b/app/src/main/res/layout/home_section.xml
index f8379b0ff..3064b7d44 100644
--- a/app/src/main/res/layout/home_section.xml
+++ b/app/src/main/res/layout/home_section.xml
@@ -106,4 +106,14 @@
tools:listitem="@layout/horizontal_itemlist_item"
tools:itemCount="1" />
+ <TextView
+ android:id="@+id/emptyLabel"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:visibility="gone"
+ android:paddingHorizontal="32dp"
+ android:paddingVertical="8dp"
+ android:textAlignment="center"
+ app:layout_constraintTop_toBottomOf="@id/barrier" />
+
</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/ui/i18n/src/main/res/values/strings.xml b/ui/i18n/src/main/res/values/strings.xml
index ea9d23fb0..8b0fbf25b 100644
--- a/ui/i18n/src/main/res/values/strings.xml
+++ b/ui/i18n/src/main/res/values/strings.xml
@@ -61,6 +61,10 @@
<string name="home_continue_title">Continue listening</string>
<string name="home_new_title">See what\'s new</string>
<string name="home_downloads_title">Manage downloads</string>
+ <string name="home_no_recent_unplayed_episodes_text">You already played all recent episodes. Nothing to be surprised here ;)</string>
+ <string name="home_continue_empty_text">You can add episodes by downloading them or long-pressing them and selecting \"Add to queue\".</string>
+ <string name="home_new_empty_text">New episodes will show up here. You can then decide whether you are interested in them.</string>
+ <string name="home_downloads_empty_text">You can download any episode to listen to it offline.</string>
<string name="home_welcome_title">Welcome to AntennaPod!</string>
<string name="home_welcome_text">You are not subscribed to any podcasts yet. Open the side menu to add a podcast.</string>
<string name="notification_permission_text">AntennaPod needs your permission to show notifications. By default, AntennaPod only shows notifications while something is being downloaded or when something goes wrong.</string>