From 795cec2a73de26295fc93b2efece2d545da049f8 Mon Sep 17 00:00:00 2001 From: Thomas Date: Thu, 30 Jun 2022 15:59:43 +0200 Subject: [PATCH] Improve top bar --- .../app/fedilab/android/BaseMainActivity.java | 5 +- .../activities/WebviewConnectActivity.java | 2 +- .../app/fedilab/android/helper/Helper.java | 3 +- .../android/helper/NotificationsHelper.java | 3 +- .../android/helper/PinnedTimelineHelper.java | 52 +++++++++++++++++-- .../android/helper/TimelineHelper.java | 2 +- .../drawer/AccountFollowRequestAdapter.java | 24 ++++----- app/src/main/res/drawable/ic_tl_list.xml | 11 ++++ app/src/main/res/drawable/ic_tl_tag.xml | 10 ++++ app/src/main/res/layout/tab_custom_view.xml | 23 ++++++++ 10 files changed, 110 insertions(+), 25 deletions(-) create mode 100644 app/src/main/res/drawable/ic_tl_list.xml create mode 100644 app/src/main/res/drawable/ic_tl_tag.xml create mode 100644 app/src/main/res/layout/tab_custom_view.xml diff --git a/app/src/main/java/app/fedilab/android/BaseMainActivity.java b/app/src/main/java/app/fedilab/android/BaseMainActivity.java index 56c824fe..c69760d7 100644 --- a/app/src/main/java/app/fedilab/android/BaseMainActivity.java +++ b/app/src/main/java/app/fedilab/android/BaseMainActivity.java @@ -90,6 +90,7 @@ import app.fedilab.android.activities.FollowRequestActivity; import app.fedilab.android.activities.InstanceActivity; import app.fedilab.android.activities.InstanceHealthActivity; import app.fedilab.android.activities.LoginActivity; +import app.fedilab.android.activities.MainActivity; import app.fedilab.android.activities.MastodonListActivity; import app.fedilab.android.activities.PartnerShipActivity; import app.fedilab.android.activities.ProfileActivity; @@ -251,7 +252,7 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt SharedPreferences.Editor editor = sharedpreferences.edit(); editor.putString(PREF_USER_TOKEN, account.token); editor.commit(); - Intent mainActivity = new Intent(this, BaseMainActivity.class); + Intent mainActivity = new Intent(this, MainActivity.class); mainActivity.putExtra(Helper.INTENT_ACTION, Helper.OPEN_NOTIFICATION); startActivity(mainActivity); finish(); @@ -456,7 +457,7 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt editor.commit(); //The user is now aut //The user is now authenticated, it will be redirected to MainActivity - Intent mainActivity = new Intent(this, BaseMainActivity.class); + Intent mainActivity = new Intent(this, MainActivity.class); startActivity(mainActivity); finish(); headerMainBinding.ownerAccounts.setImageResource(R.drawable.ic_baseline_arrow_drop_down_24); diff --git a/app/src/main/java/app/fedilab/android/activities/WebviewConnectActivity.java b/app/src/main/java/app/fedilab/android/activities/WebviewConnectActivity.java index 2120a7fb..d02a4217 100644 --- a/app/src/main/java/app/fedilab/android/activities/WebviewConnectActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/WebviewConnectActivity.java @@ -100,7 +100,7 @@ public class WebviewConnectActivity extends BaseActivity { editor.commit(); //The user is now authenticated, it will be redirected to MainActivity Runnable myRunnable = () -> { - Intent mainActivity = new Intent(activity, BaseMainActivity.class); + Intent mainActivity = new Intent(activity, MainActivity.class); activity.startActivity(mainActivity); activity.finish(); }; diff --git a/app/src/main/java/app/fedilab/android/helper/Helper.java b/app/src/main/java/app/fedilab/android/helper/Helper.java index c4be44a0..6d5454d5 100644 --- a/app/src/main/java/app/fedilab/android/helper/Helper.java +++ b/app/src/main/java/app/fedilab/android/helper/Helper.java @@ -124,6 +124,7 @@ import app.fedilab.android.BaseMainActivity; import app.fedilab.android.MainApplication; import app.fedilab.android.R; import app.fedilab.android.activities.LoginActivity; +import app.fedilab.android.activities.MainActivity; import app.fedilab.android.activities.WebviewActivity; import app.fedilab.android.broadcastreceiver.ToastMessage; import app.fedilab.android.client.entities.api.Attachment; @@ -906,7 +907,7 @@ public class Helper { BaseMainActivity.currentToken = newAccount.token; BaseMainActivity.currentInstance = newAccount.instance; editor.commit(); - Intent changeAccount = new Intent(activity, BaseMainActivity.class); + Intent changeAccount = new Intent(activity, MainActivity.class); changeAccount.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); activity.startActivity(changeAccount); } diff --git a/app/src/main/java/app/fedilab/android/helper/NotificationsHelper.java b/app/src/main/java/app/fedilab/android/helper/NotificationsHelper.java index 8e74a8b8..0fc8d260 100644 --- a/app/src/main/java/app/fedilab/android/helper/NotificationsHelper.java +++ b/app/src/main/java/app/fedilab/android/helper/NotificationsHelper.java @@ -49,6 +49,7 @@ import java.util.concurrent.TimeUnit; import app.fedilab.android.BaseMainActivity; import app.fedilab.android.R; +import app.fedilab.android.activities.MainActivity; import app.fedilab.android.client.endpoints.MastodonNotificationsService; import app.fedilab.android.client.entities.api.Notification; import app.fedilab.android.client.entities.api.Notifications; @@ -283,7 +284,7 @@ public class NotificationsHelper { } if (message != null) { //Some others notification - final Intent intent = new Intent(context, BaseMainActivity.class); + final Intent intent = new Intent(context, MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); intent.putExtra(Helper.INTENT_ACTION, Helper.NOTIFICATION_INTENT); intent.putExtra(Helper.PREF_KEY_ID, account.user_id); diff --git a/app/src/main/java/app/fedilab/android/helper/PinnedTimelineHelper.java b/app/src/main/java/app/fedilab/android/helper/PinnedTimelineHelper.java index d04c89c0..28375c1e 100644 --- a/app/src/main/java/app/fedilab/android/helper/PinnedTimelineHelper.java +++ b/app/src/main/java/app/fedilab/android/helper/PinnedTimelineHelper.java @@ -52,6 +52,7 @@ import app.fedilab.android.client.entities.app.RemoteInstance; import app.fedilab.android.client.entities.app.TagTimeline; import app.fedilab.android.client.entities.app.Timeline; import app.fedilab.android.databinding.ActivityMainBinding; +import app.fedilab.android.databinding.TabCustomViewBinding; import app.fedilab.android.exception.DBException; import app.fedilab.android.ui.fragment.timeline.FragmentMastodonConversation; import app.fedilab.android.ui.fragment.timeline.FragmentMastodonTimeline; @@ -149,9 +150,13 @@ public class PinnedTimelineHelper { //Small hack to hide first tabs (they represent the item of the bottom menu) int toRemove = itemToRemoveInBottomMenu(activity); List tabTitle = new ArrayList<>(); + List tabTypeRemote = new ArrayList<>(); + List tabType = new ArrayList<>(); for (int i = 0; i < (BOTTOM_TIMELINE_COUNT - toRemove); i++) { activityMainBinding.tabLayout.addTab(activityMainBinding.tabLayout.newTab()); tabTitle.add(""); + tabType.add(Timeline.TimeLineEnum.HOME); + tabTypeRemote.add(RemoteInstance.InstanceType.MASTODON); ((ViewGroup) activityMainBinding.tabLayout.getChildAt(0)).getChildAt(i).setVisibility(View.GONE); } List pinnedTimelineVisibleList = new ArrayList<>(); @@ -166,9 +171,6 @@ public class PinnedTimelineHelper { break; case TAG: name = pinnedTimeline.tagTimeline.name; - if (!name.startsWith("#")) { - name = "#" + name; - } break; case REMOTE: name = pinnedTimeline.remoteInstance.host; @@ -177,8 +179,13 @@ public class PinnedTimelineHelper { TextView tv = (TextView) LayoutInflater.from(activity).inflate(R.layout.custom_tab_instance, new LinearLayout(activity), false); tv.setText(name); tabTitle.add(name); + tabType.add(pinnedTimeline.type); + if (pinnedTimeline.type == Timeline.TimeLineEnum.REMOTE) { + tabTypeRemote.add(pinnedTimeline.remoteInstance.type); + } else { + tabTypeRemote.add(null); + } tab.setCustomView(tv); - activityMainBinding.tabLayout.addTab(tab); pinnedTimelineVisibleList.add(pinnedTimeline); } @@ -225,7 +232,42 @@ public class PinnedTimelineHelper { } }); new TabLayoutMediator(activityMainBinding.tabLayout, activityMainBinding.viewPager, - (tab, position) -> tab.setText(tabTitle.get(position)) + (tab, position) -> { + TabCustomViewBinding tabCustomViewBinding = TabCustomViewBinding.inflate(activity.getLayoutInflater()); + tabCustomViewBinding.title.setText(tabTitle.get(position)); + switch (tabType.get(position)) { + case LIST: + tabCustomViewBinding.icon.setImageResource(R.drawable.ic_tl_list); + break; + case TAG: + tabCustomViewBinding.icon.setImageResource(R.drawable.ic_tl_tag); + break; + case REMOTE: + switch (tabTypeRemote.get(position)) { + case PIXELFED: + tabCustomViewBinding.icon.setImageResource(R.drawable.pixelfed); + break; + case MASTODON: + tabCustomViewBinding.icon.setImageResource(R.drawable.mastodon_icon_item); + break; + + case MISSKEY: + tabCustomViewBinding.icon.setImageResource(R.drawable.misskey); + break; + case NITTER: + tabCustomViewBinding.icon.setImageResource(R.drawable.nitter); + break; + case GNU: + tabCustomViewBinding.icon.setImageResource(R.drawable.ic_gnu_social); + break; + case PEERTUBE: + tabCustomViewBinding.icon.setImageResource(R.drawable.peertube_icon); + break; + } + break; + } + tab.setCustomView(tabCustomViewBinding.getRoot()); + } ).attach(); activityMainBinding.tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { diff --git a/app/src/main/java/app/fedilab/android/helper/TimelineHelper.java b/app/src/main/java/app/fedilab/android/helper/TimelineHelper.java index fe43f14b..b37f899f 100644 --- a/app/src/main/java/app/fedilab/android/helper/TimelineHelper.java +++ b/app/src/main/java/app/fedilab/android/helper/TimelineHelper.java @@ -89,7 +89,7 @@ public class TimelineHelper { } //If there are filters: - if (BaseMainActivity.mainFilters != null && BaseMainActivity.mainFilters.size() > 0) { + if (BaseMainActivity.mainFilters != null && BaseMainActivity.mainFilters.size() > 0 && statuses != null && statuses.size() > 0) { for (Filter filter : BaseMainActivity.mainFilters) { if (filter.irreversible) { //Dealt by the server continue; diff --git a/app/src/main/java/app/fedilab/android/ui/drawer/AccountFollowRequestAdapter.java b/app/src/main/java/app/fedilab/android/ui/drawer/AccountFollowRequestAdapter.java index 4931c927..0a38f89f 100644 --- a/app/src/main/java/app/fedilab/android/ui/drawer/AccountFollowRequestAdapter.java +++ b/app/src/main/java/app/fedilab/android/ui/drawer/AccountFollowRequestAdapter.java @@ -76,20 +76,16 @@ public class AccountFollowRequestAdapter extends RecyclerView.Adapter { - accountsVM.acceptFollow(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, account.id) - .observe((LifecycleOwner) context, relationShip -> { - accountList.remove(position); - notifyItemRemoved(position); - }); - }); - holderFollow.binding.rejectButton.setOnClickListener(v -> { - accountsVM.rejectFollow(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, account.id) - .observe((LifecycleOwner) context, relationShip -> { - accountList.remove(position); - notifyItemRemoved(position); - }); - }); + holderFollow.binding.acceptButton.setOnClickListener(v -> accountsVM.acceptFollow(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, account.id) + .observe((LifecycleOwner) context, relationShip -> { + accountList.remove(position); + notifyItemRemoved(position); + })); + holderFollow.binding.rejectButton.setOnClickListener(v -> accountsVM.rejectFollow(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, account.id) + .observe((LifecycleOwner) context, relationShip -> { + accountList.remove(position); + notifyItemRemoved(position); + })); holderFollow.binding.avatar.setOnClickListener(v -> { Intent intent = new Intent(context, ProfileActivity.class); Bundle b = new Bundle(); diff --git a/app/src/main/res/drawable/ic_tl_list.xml b/app/src/main/res/drawable/ic_tl_list.xml new file mode 100644 index 00000000..732e2de9 --- /dev/null +++ b/app/src/main/res/drawable/ic_tl_list.xml @@ -0,0 +1,11 @@ + + + diff --git a/app/src/main/res/drawable/ic_tl_tag.xml b/app/src/main/res/drawable/ic_tl_tag.xml new file mode 100644 index 00000000..e996ae23 --- /dev/null +++ b/app/src/main/res/drawable/ic_tl_tag.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/layout/tab_custom_view.xml b/app/src/main/res/layout/tab_custom_view.xml new file mode 100644 index 00000000..0069cb66 --- /dev/null +++ b/app/src/main/res/layout/tab_custom_view.xml @@ -0,0 +1,23 @@ + + + + + + +