diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTabFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTabFragment.java index 7f7dfcb79..55602ac8c 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTabFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTabFragment.java @@ -1,5 +1,7 @@ package org.joinmastodon.android.fragments; +import static org.joinmastodon.android.GlobalUserPreferences.showFederatedTimeline; + import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.AnimatorSet; @@ -109,7 +111,12 @@ public class HomeTabFragment extends MastodonToolbarFragment implements Scrollab fragments.add(new HomeTimelineFragment()); fragments.add(new LocalTimelineFragment()); - if (GlobalUserPreferences.showFederatedTimeline) fragments.add(new FederatedTimelineFragment()); + if (showFederatedTimeline) fragments.add(new FederatedTimelineFragment()); + args=new Bundle(args); + args.putBoolean("onlyPosts", true); + NotificationsListFragment postsFragment=new NotificationsListFragment(); + postsFragment.setArguments(args); + fragments.add(postsFragment); FragmentTransaction transaction = getChildFragmentManager().beginTransaction(); for (int i = 0; i < fragments.size(); i++) { @@ -302,7 +309,7 @@ public class HomeTabFragment extends MastodonToolbarFragment implements Scrollab private void updateSwitcherMenu() { Context context = getContext(); - switcherPopup.getMenu().findItem(R.id.federated).setVisible(GlobalUserPreferences.showFederatedTimeline); + switcherPopup.getMenu().findItem(R.id.federated).setVisible(showFederatedTimeline); if (!listItems.isEmpty()) { MenuItem listsItem = switcherPopup.getMenu().findItem(R.id.lists); @@ -342,6 +349,8 @@ public class HomeTabFragment extends MastodonToolbarFragment implements Scrollab } else if (id == R.id.federated) { navigateTo(2); return true; + } else if (id == R.id.post_notifications) { + navigateTo(showFederatedTimeline ? 3 : 2); } else if ((list = listItems.get(id)) != null) { Bundle args = new Bundle(); args.putString("account", accountID); @@ -365,16 +374,22 @@ public class HomeTabFragment extends MastodonToolbarFragment implements Scrollab } private void updateSwitcherIcon(int i) { - timelineIcon.setImageResource(switch (i) { - default -> R.drawable.ic_fluent_home_24_regular; - case 1 -> R.drawable.ic_fluent_people_community_24_regular; - case 2 -> R.drawable.ic_fluent_earth_24_regular; - }); - timelineTitle.setText(switch (i) { - default -> R.string.sk_timeline_home; - case 1 -> R.string.sk_timeline_local; - case 2 -> R.string.sk_timeline_federated; - }); + // todo: refactor when implementing pinned tabs + if (i == (showFederatedTimeline ? 3 : 2)) { + timelineIcon.setImageResource(R.drawable.ic_fluent_alert_24_regular); + timelineTitle.setText(R.string.sk_notify_posts); + } else { + timelineIcon.setImageResource(switch (i) { + default -> R.drawable.ic_fluent_home_24_regular; + case 1 -> R.drawable.ic_fluent_people_community_24_regular; + case 2 -> R.drawable.ic_fluent_earth_24_regular; + }); + timelineTitle.setText(switch (i) { + default -> R.string.sk_timeline_home; + case 1 -> R.string.sk_timeline_local; + case 2 -> R.string.sk_timeline_federated; + }); + } } @Override diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/NotificationsFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/NotificationsFragment.java index a8f4a537d..5bd23e3c1 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/NotificationsFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/NotificationsFragment.java @@ -44,7 +44,7 @@ public class NotificationsFragment extends MastodonToolbarFragment implements Sc private FrameLayout[] tabViews; private TabLayoutMediator tabLayoutMediator; - private NotificationsListFragment allNotificationsFragment, mentionsFragment, postsFragment; + private NotificationsListFragment allNotificationsFragment, mentionsFragment; private String accountID; @@ -104,13 +104,12 @@ public class NotificationsFragment extends MastodonToolbarFragment implements Sc pager=view.findViewById(R.id.pager); UiUtils.reduceSwipeSensitivity(pager); - tabViews=new FrameLayout[3]; + tabViews=new FrameLayout[2]; for(int i=0;i R.id.notifications_all; case 1 -> R.id.notifications_mentions; - case 2 -> R.id.notifications_posts; default -> throw new IllegalStateException("Unexpected value: "+i); }); tabView.setVisibility(View.GONE); @@ -150,15 +149,9 @@ public class NotificationsFragment extends MastodonToolbarFragment implements Sc mentionsFragment=new NotificationsListFragment(); mentionsFragment.setArguments(args); - args=new Bundle(args); - args.putBoolean("onlyPosts", true); - postsFragment=new NotificationsListFragment(); - postsFragment.setArguments(args); - getChildFragmentManager().beginTransaction() .add(R.id.notifications_all, allNotificationsFragment) .add(R.id.notifications_mentions, mentionsFragment) - .add(R.id.notifications_posts, postsFragment) .commit(); } @@ -168,7 +161,6 @@ public class NotificationsFragment extends MastodonToolbarFragment implements Sc tab.setText(switch(position){ case 0 -> R.string.all_notifications; case 1 -> R.string.mentions; - case 2 -> R.string.posts; default -> throw new IllegalStateException("Unexpected value: "+position); }); tab.view.textView.setAllCaps(true); @@ -217,7 +209,6 @@ public class NotificationsFragment extends MastodonToolbarFragment implements Sc return switch(page){ case 0 -> allNotificationsFragment; case 1 -> mentionsFragment; - case 2 -> postsFragment; default -> throw new IllegalStateException("Unexpected value: "+page); }; } @@ -238,7 +229,7 @@ public class NotificationsFragment extends MastodonToolbarFragment implements Sc @Override public int getItemCount(){ - return 3; + return 2; } @Override diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/NotificationsListFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/NotificationsListFragment.java index 97ec6f770..7950fa099 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/NotificationsListFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/NotificationsListFragment.java @@ -21,6 +21,7 @@ import org.joinmastodon.android.ui.displayitems.AccountCardStatusDisplayItem; import org.joinmastodon.android.ui.displayitems.HeaderStatusDisplayItem; import org.joinmastodon.android.ui.displayitems.ImageStatusDisplayItem; import org.joinmastodon.android.ui.displayitems.StatusDisplayItem; +import org.joinmastodon.android.ui.utils.DiscoverInfoBannerHelper; import org.joinmastodon.android.ui.utils.InsetStatusItemDecoration; import org.parceler.Parcels; @@ -41,6 +42,7 @@ public class NotificationsListFragment extends BaseStatusListFragment R.string.trending_links_info_banner; case LOCAL_TIMELINE -> R.string.local_timeline_info_banner; case FEDERATED_TIMELINE -> R.string.sk_federated_timeline_info_banner; + case POST_NOTIFICATIONS -> R.string.sk_notify_posts_info_banner; }); } } @@ -61,6 +62,7 @@ public class DiscoverInfoBannerHelper{ TRENDING_LINKS, LOCAL_TIMELINE, FEDERATED_TIMELINE, + POST_NOTIFICATIONS, // ACCOUNTS } } diff --git a/mastodon/src/main/res/menu/home_switcher.xml b/mastodon/src/main/res/menu/home_switcher.xml index 1530ef5cc..ccd7376a5 100644 --- a/mastodon/src/main/res/menu/home_switcher.xml +++ b/mastodon/src/main/res/menu/home_switcher.xml @@ -3,6 +3,7 @@ + diff --git a/mastodon/src/main/res/values/ids.xml b/mastodon/src/main/res/values/ids.xml index e03ac4a14..36c9bd779 100644 --- a/mastodon/src/main/res/values/ids.xml +++ b/mastodon/src/main/res/values/ids.xml @@ -18,7 +18,6 @@ - \ No newline at end of file diff --git a/mastodon/src/main/res/values/strings_sk.xml b/mastodon/src/main/res/values/strings_sk.xml index 0b5c0769f..8fe7da5ac 100644 --- a/mastodon/src/main/res/values/strings_sk.xml +++ b/mastodon/src/main/res/values/strings_sk.xml @@ -153,4 +153,5 @@ At least one attachment does not contain a description. Publish anyway Disable alt text reminder + If you enable post notifications for some people, their new posts will appear here. \ No newline at end of file