summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas <tschneider.ac@gmail.com>2022-09-12 17:21:04 +0200
committerThomas <tschneider.ac@gmail.com>2022-09-12 17:21:04 +0200
commit76801bf64049657150d3763929f29fba5cfae17b (patch)
treee1664f4a11c87b7475c1aa2b961fae704a5cc3c5
parentcdc1f933908a6becfadf54a1d432797b687902e5 (diff)
Fix issue #14
-rw-r--r--app/src/main/java/app/fedilab/android/helper/PinnedTimelineHelper.java76
-rw-r--r--app/src/main/res/drawable/ic_baseline_more_horiz_24.xml10
-rw-r--r--app/src/main/res/layout/activity_main.xml12
3 files changed, 96 insertions, 2 deletions
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 fe8110524..fa157fb71 100644
--- a/app/src/main/java/app/fedilab/android/helper/PinnedTimelineHelper.java
+++ b/app/src/main/java/app/fedilab/android/helper/PinnedTimelineHelper.java
@@ -21,6 +21,7 @@ import static app.fedilab.android.BaseMainActivity.show_boosts;
import static app.fedilab.android.BaseMainActivity.show_replies;
import static app.fedilab.android.ui.pageadapter.FedilabPageAdapter.BOTTOM_TIMELINE_COUNT;
+import android.annotation.SuppressLint;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.text.Editable;
@@ -45,10 +46,12 @@ import androidx.viewpager.widget.ViewPager;
import com.google.android.material.tabs.TabLayout;
+import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
+import java.util.Objects;
import java.util.regex.Pattern;
import app.fedilab.android.BaseMainActivity;
@@ -99,6 +102,12 @@ public class PinnedTimelineHelper {
}
SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(activity);
boolean singleBar = sharedpreferences.getBoolean(activity.getString(R.string.SET_USE_SINGLE_TOPBAR), false);
+ boolean timeInList = sharedpreferences.getBoolean(activity.getString(R.string.SET_TIMELINES_IN_A_LIST), false);
+ if (timeInList) {
+ activityMainBinding.moreTimelines.setVisibility(View.VISIBLE);
+ } else {
+ activityMainBinding.moreTimelines.setVisibility(View.GONE);
+ }
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) activityMainBinding.viewPager.getLayoutParams();
//Hiding/Showing bottom menu depending of settings
@@ -320,13 +329,76 @@ public class PinnedTimelineHelper {
pinnedTimelineVisibleList.add(pinnedTimeline);
}
}
+
+
+ Pinned finalPinned = pinned;
+ activityMainBinding.moreTimelines.setOnClickListener(v -> {
+ PopupMenu popup = new PopupMenu(new ContextThemeWrapper(activity, Helper.popupStyle()), v);
+ try {
+ @SuppressLint("PrivateApi")
+ Method method = popup.getMenu().getClass().getDeclaredMethod("setOptionalIconsVisible", boolean.class);
+ method.setAccessible(true);
+ method.invoke(popup.getMenu(), true);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ int i = 0;
+ for (PinnedTimeline pinnedTimeline : finalPinned.pinnedTimelines) {
+ MenuItem item = null;
+ switch (pinnedTimeline.type) {
+ case LIST:
+ item = popup.getMenu().add(0, 0, Menu.NONE, pinnedTimeline.mastodonList.title);
+ item.setIcon(R.drawable.ic_tl_list);
+ break;
+ case TAG:
+ String name = (pinnedTimeline.tagTimeline.displayName != null && pinnedTimeline.tagTimeline.displayName.length() > 0) ? pinnedTimeline.tagTimeline.displayName : pinnedTimeline.tagTimeline.name;
+ item = popup.getMenu().add(0, 0, Menu.NONE, name);
+ item.setIcon(R.drawable.ic_tl_tag);
+ break;
+ case REMOTE:
+ item = popup.getMenu().add(0, 0, Menu.NONE, pinnedTimeline.remoteInstance.host);
+ switch (pinnedTimeline.remoteInstance.type) {
+ case MASTODON:
+ item.setIcon(R.drawable.mastodon_icon_item);
+ break;
+ case PEERTUBE:
+ item.setIcon(R.drawable.peertube_icon);
+ break;
+ case GNU:
+ item.setIcon(R.drawable.ic_gnu_social);
+ break;
+ case MISSKEY:
+ item.setIcon(R.drawable.misskey);
+ break;
+ case PIXELFED:
+ item.setIcon(R.drawable.pixelfed);
+ break;
+ case NITTER:
+ item.setIcon(R.drawable.nitter);
+ break;
+ }
+ break;
+ }
+ if (item != null) {
+ int finalI = i;
+ item.setOnMenuItemClickListener(item1 -> {
+ if (finalI < activityMainBinding.tabLayout.getTabCount() && activityMainBinding.tabLayout.getTabAt(finalI) != null) {
+ Objects.requireNonNull(activityMainBinding.tabLayout.getTabAt(finalI)).select();
+ }
+ return false;
+ });
+ }
+ i++;
+ }
+ popup.show();
+ });
+
+
LinearLayout tabStrip = (LinearLayout) activityMainBinding.tabLayout.getChildAt(0);
int finalToRemove = toRemove;
for (int i = 0; i < tabStrip.getChildCount(); i++) {
// Set LongClick listener to each Tab
int finalI = i;
- Pinned finalPinned = pinned;
-
tabStrip.getChildAt(i).setOnLongClickListener(v -> {
switch (pinnedTimelineVisibleList.get(finalI - (BOTTOM_TIMELINE_COUNT - finalToRemove)).type) {
case LIST:
diff --git a/app/src/main/res/drawable/ic_baseline_more_horiz_24.xml b/app/src/main/res/drawable/ic_baseline_more_horiz_24.xml
new file mode 100644
index 000000000..3bfd30d03
--- /dev/null
+++ b/app/src/main/res/drawable/ic_baseline_more_horiz_24.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:tint="#FFFFFF"
+ android:viewportWidth="24"
+ android:viewportHeight="24">
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M6,10c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2zM18,10c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2zM12,10c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2z" />
+</vector>
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index e80725809..b2eb174db 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -70,6 +70,18 @@
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:gravity="end" />
+
+ <androidx.appcompat.widget.AppCompatImageView
+ android:id="@+id/more_timelines"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_vertical"
+ android:layout_marginEnd="10dp"
+ android:gravity="end"
+ android:src="@drawable/ic_baseline_more_horiz_24"
+ android:tint="?attr/iconColor"
+ android:visibility="gone" />
+
</LinearLayout>
</androidx.appcompat.widget.Toolbar>