Loading app/src/main/java/app/fedilab/android/client/entities/app/RemoteInstance.java +2 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,8 @@ public class RemoteInstance implements Serializable { public String id; @SerializedName("host") public String host; @SerializedName("displayName") public String displayName; @SerializedName("type") public InstanceType type; @SerializedName("tags") Loading app/src/main/java/app/fedilab/android/helper/PinnedTimelineHelper.java +98 −46 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ import android.widget.TextView; import android.widget.Toast; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.widget.AppCompatTextView; import androidx.appcompat.widget.PopupMenu; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentTransaction; Loading Loading @@ -356,6 +357,10 @@ public class PinnedTimelineHelper { name = pinnedTimeline.remoteInstance.host; if (pinnedTimeline.remoteInstance.type == RemoteInstance.InstanceType.NITTER) { String remoteInstance = sharedpreferences.getString(activity.getString(R.string.SET_NITTER_HOST), activity.getString(R.string.DEFAULT_NITTER_HOST)).toLowerCase(); //Custom name for Nitter instances if (pinnedTimeline.remoteInstance.displayName != null && pinnedTimeline.remoteInstance.displayName.trim().length() > 0) { name = pinnedTimeline.remoteInstance.displayName; } ident = "@R@" + remoteInstance; } else { ident = "@R@" + pinnedTimeline.remoteInstance.host; Loading Loading @@ -521,7 +526,7 @@ public class PinnedTimelineHelper { if (pinnedTimelineVisibleList.get(position).remoteInstance.type != RemoteInstance.InstanceType.NITTER) { instanceClick(activity, finalPinned, v, activityMainBinding, finalI, activityMainBinding.tabLayout.getTabAt(finalI).getTag().toString()); } else { nitterClick(activity, finalPinned, activityMainBinding, finalI, activityMainBinding.tabLayout.getTabAt(finalI).getTag().toString()); nitterClick(activity, finalPinned, v, activityMainBinding, finalI, activityMainBinding.tabLayout.getTabAt(finalI).getTag().toString()); } break; case HOME: Loading Loading @@ -979,6 +984,10 @@ public class PinnedTimelineHelper { if (values.trim().length() == 0) values = tag; tagTimeline.displayName = values; View titleView = view.findViewById(R.id.title); if (titleView instanceof AppCompatTextView) { ((AppCompatTextView) titleView).setText(tagTimeline.displayName); } pinned.pinnedTimelines.get(finalOffSetPosition).tagTimeline = tagTimeline; try { new Pinned(activity).updatePinned(pinned); Loading Loading @@ -1224,7 +1233,7 @@ public class PinnedTimelineHelper { * @param pinned - {@link Pinned} * @param position - int position of the tab */ public static void nitterClick(BaseMainActivity activity, Pinned pinned, ActivityMainBinding activityMainBinding, int position, String slug) { public static void nitterClick(BaseMainActivity activity, Pinned pinned, View view, ActivityMainBinding activityMainBinding, int position, String slug) { int toRemove = itemToRemoveInBottomMenu(activity); int offSetPosition = position - (BOTTOM_TIMELINE_COUNT - toRemove); Loading @@ -1236,6 +1245,46 @@ public class PinnedTimelineHelper { RemoteInstance remoteInstance = pinned.pinnedTimelines.get(offSetPosition).remoteInstance; if (remoteInstance == null) return; PopupMenu popup = new PopupMenu(activity, view); popup.getMenuInflater() .inflate(R.menu.option_nitter_timeline, popup.getMenu()); int finalOffSetPosition = offSetPosition; popup.setOnMenuItemClickListener(item -> { int itemId = item.getItemId(); if (itemId == R.id.action_displayname) { AlertDialog.Builder dialogBuilder; LayoutInflater inflater; View dialogView; AlertDialog alertDialog; dialogBuilder = new AlertDialog.Builder(activity, Helper.dialogStyle()); inflater = activity.getLayoutInflater(); dialogView = inflater.inflate(R.layout.tags_name, new LinearLayout(activity), false); dialogBuilder.setView(dialogView); final EditText editTextName = dialogView.findViewById(R.id.column_name); if (remoteInstance.displayName != null) { editTextName.setText(remoteInstance.displayName); editTextName.setSelection(editTextName.getText().toString().length()); } dialogBuilder.setPositiveButton(R.string.validate, (dialog, id) -> { String values = editTextName.getText().toString(); if (values.trim().length() == 0) { values = remoteInstance.displayName; } remoteInstance.displayName = values; View titleView = view.findViewById(R.id.title); if (titleView instanceof AppCompatTextView) { ((AppCompatTextView) titleView).setText(remoteInstance.displayName); } pinned.pinnedTimelines.get(finalOffSetPosition).remoteInstance = remoteInstance; try { new Pinned(activity).updatePinned(pinned); } catch (DBException e) { e.printStackTrace(); } }); alertDialog = dialogBuilder.create(); alertDialog.show(); } else if (itemId == R.id.action_nitter_manage_accounts) { String accounts = remoteInstance.host; AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(activity, Helper.dialogStyle()); LayoutInflater inflater = activity.getLayoutInflater(); Loading @@ -1247,7 +1296,6 @@ public class PinnedTimelineHelper { editText.setText(accounts); editText.setSelection(editText.getText().toString().length()); } int finalOffSetPosition = offSetPosition; dialogBuilder.setPositiveButton(R.string.validate, (dialog, id) -> { pinned.pinnedTimelines.get(finalOffSetPosition).remoteInstance.host = editText.getText().toString().trim(); try { Loading Loading @@ -1285,6 +1333,10 @@ public class PinnedTimelineHelper { AlertDialog alertDialog = dialogBuilder.create(); alertDialog.show(); } return true; }); popup.show(); } } app/src/main/res/menu/option_nitter_timeline.xml 0 → 100644 +12 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/action_displayname" android:title="@string/change_tag_column" app:showAsAction="always" /> <item android:id="@+id/action_nitter_manage_accounts" android:title="@string/manage_accounts" app:showAsAction="always" /> </menu> app/src/main/res/values/strings.xml +1 −0 Original line number Diff line number Diff line Loading @@ -2111,4 +2111,5 @@ <string name="mute_them_all">Mute them all</string> <string name="import_data">Import data</string> <string name="group_reblogs">Group reblogs in home timeline</string> <string name="manage_accounts">Manage accounts</string> </resources> No newline at end of file src/fdroid/fastlane/metadata/android/en/changelogs/452.txt +1 −1 Original line number Diff line number Diff line Added: - Rename Nitter timelines Changed: Loading Loading
app/src/main/java/app/fedilab/android/client/entities/app/RemoteInstance.java +2 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,8 @@ public class RemoteInstance implements Serializable { public String id; @SerializedName("host") public String host; @SerializedName("displayName") public String displayName; @SerializedName("type") public InstanceType type; @SerializedName("tags") Loading
app/src/main/java/app/fedilab/android/helper/PinnedTimelineHelper.java +98 −46 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ import android.widget.TextView; import android.widget.Toast; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.widget.AppCompatTextView; import androidx.appcompat.widget.PopupMenu; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentTransaction; Loading Loading @@ -356,6 +357,10 @@ public class PinnedTimelineHelper { name = pinnedTimeline.remoteInstance.host; if (pinnedTimeline.remoteInstance.type == RemoteInstance.InstanceType.NITTER) { String remoteInstance = sharedpreferences.getString(activity.getString(R.string.SET_NITTER_HOST), activity.getString(R.string.DEFAULT_NITTER_HOST)).toLowerCase(); //Custom name for Nitter instances if (pinnedTimeline.remoteInstance.displayName != null && pinnedTimeline.remoteInstance.displayName.trim().length() > 0) { name = pinnedTimeline.remoteInstance.displayName; } ident = "@R@" + remoteInstance; } else { ident = "@R@" + pinnedTimeline.remoteInstance.host; Loading Loading @@ -521,7 +526,7 @@ public class PinnedTimelineHelper { if (pinnedTimelineVisibleList.get(position).remoteInstance.type != RemoteInstance.InstanceType.NITTER) { instanceClick(activity, finalPinned, v, activityMainBinding, finalI, activityMainBinding.tabLayout.getTabAt(finalI).getTag().toString()); } else { nitterClick(activity, finalPinned, activityMainBinding, finalI, activityMainBinding.tabLayout.getTabAt(finalI).getTag().toString()); nitterClick(activity, finalPinned, v, activityMainBinding, finalI, activityMainBinding.tabLayout.getTabAt(finalI).getTag().toString()); } break; case HOME: Loading Loading @@ -979,6 +984,10 @@ public class PinnedTimelineHelper { if (values.trim().length() == 0) values = tag; tagTimeline.displayName = values; View titleView = view.findViewById(R.id.title); if (titleView instanceof AppCompatTextView) { ((AppCompatTextView) titleView).setText(tagTimeline.displayName); } pinned.pinnedTimelines.get(finalOffSetPosition).tagTimeline = tagTimeline; try { new Pinned(activity).updatePinned(pinned); Loading Loading @@ -1224,7 +1233,7 @@ public class PinnedTimelineHelper { * @param pinned - {@link Pinned} * @param position - int position of the tab */ public static void nitterClick(BaseMainActivity activity, Pinned pinned, ActivityMainBinding activityMainBinding, int position, String slug) { public static void nitterClick(BaseMainActivity activity, Pinned pinned, View view, ActivityMainBinding activityMainBinding, int position, String slug) { int toRemove = itemToRemoveInBottomMenu(activity); int offSetPosition = position - (BOTTOM_TIMELINE_COUNT - toRemove); Loading @@ -1236,6 +1245,46 @@ public class PinnedTimelineHelper { RemoteInstance remoteInstance = pinned.pinnedTimelines.get(offSetPosition).remoteInstance; if (remoteInstance == null) return; PopupMenu popup = new PopupMenu(activity, view); popup.getMenuInflater() .inflate(R.menu.option_nitter_timeline, popup.getMenu()); int finalOffSetPosition = offSetPosition; popup.setOnMenuItemClickListener(item -> { int itemId = item.getItemId(); if (itemId == R.id.action_displayname) { AlertDialog.Builder dialogBuilder; LayoutInflater inflater; View dialogView; AlertDialog alertDialog; dialogBuilder = new AlertDialog.Builder(activity, Helper.dialogStyle()); inflater = activity.getLayoutInflater(); dialogView = inflater.inflate(R.layout.tags_name, new LinearLayout(activity), false); dialogBuilder.setView(dialogView); final EditText editTextName = dialogView.findViewById(R.id.column_name); if (remoteInstance.displayName != null) { editTextName.setText(remoteInstance.displayName); editTextName.setSelection(editTextName.getText().toString().length()); } dialogBuilder.setPositiveButton(R.string.validate, (dialog, id) -> { String values = editTextName.getText().toString(); if (values.trim().length() == 0) { values = remoteInstance.displayName; } remoteInstance.displayName = values; View titleView = view.findViewById(R.id.title); if (titleView instanceof AppCompatTextView) { ((AppCompatTextView) titleView).setText(remoteInstance.displayName); } pinned.pinnedTimelines.get(finalOffSetPosition).remoteInstance = remoteInstance; try { new Pinned(activity).updatePinned(pinned); } catch (DBException e) { e.printStackTrace(); } }); alertDialog = dialogBuilder.create(); alertDialog.show(); } else if (itemId == R.id.action_nitter_manage_accounts) { String accounts = remoteInstance.host; AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(activity, Helper.dialogStyle()); LayoutInflater inflater = activity.getLayoutInflater(); Loading @@ -1247,7 +1296,6 @@ public class PinnedTimelineHelper { editText.setText(accounts); editText.setSelection(editText.getText().toString().length()); } int finalOffSetPosition = offSetPosition; dialogBuilder.setPositiveButton(R.string.validate, (dialog, id) -> { pinned.pinnedTimelines.get(finalOffSetPosition).remoteInstance.host = editText.getText().toString().trim(); try { Loading Loading @@ -1285,6 +1333,10 @@ public class PinnedTimelineHelper { AlertDialog alertDialog = dialogBuilder.create(); alertDialog.show(); } return true; }); popup.show(); } }
app/src/main/res/menu/option_nitter_timeline.xml 0 → 100644 +12 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/action_displayname" android:title="@string/change_tag_column" app:showAsAction="always" /> <item android:id="@+id/action_nitter_manage_accounts" android:title="@string/manage_accounts" app:showAsAction="always" /> </menu>
app/src/main/res/values/strings.xml +1 −0 Original line number Diff line number Diff line Loading @@ -2111,4 +2111,5 @@ <string name="mute_them_all">Mute them all</string> <string name="import_data">Import data</string> <string name="group_reblogs">Group reblogs in home timeline</string> <string name="manage_accounts">Manage accounts</string> </resources> No newline at end of file
src/fdroid/fastlane/metadata/android/en/changelogs/452.txt +1 −1 Original line number Diff line number Diff line Added: - Rename Nitter timelines Changed: Loading