Loading app/src/main/java/app/fedilab/android/BaseMainActivity.java +112 −132 Original line number Diff line number Diff line Loading @@ -128,6 +128,7 @@ import app.fedilab.android.activities.LoginActivity; import app.fedilab.android.activities.MainActivity; import app.fedilab.android.databinding.ActivityMainBinding; import app.fedilab.android.databinding.NavHeaderMainBinding; import app.fedilab.android.databinding.PopupFilterTimelineBinding; import app.fedilab.android.mastodon.activities.ActionActivity; import app.fedilab.android.mastodon.activities.AnnouncementActivity; import app.fedilab.android.mastodon.activities.BaseActivity; Loading Loading @@ -1668,41 +1669,12 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt } private void manageFilters(int position) { View view = binding.bottomNavView.findViewById(R.id.nav_home); boolean showExtendedFilter = true; if (position == BottomMenu.getPosition(bottomMenu, R.id.nav_local)) { view = binding.bottomNavView.findViewById(R.id.nav_local); showExtendedFilter = false; } else if (position == BottomMenu.getPosition(bottomMenu, R.id.nav_public)) { view = binding.bottomNavView.findViewById(R.id.nav_public); showExtendedFilter = false; } PopupMenu popup = new PopupMenu(BaseMainActivity.this, view, Gravity.TOP); popup.getMenuInflater() .inflate(R.menu.option_filter_toots, popup.getMenu()); Menu menu = popup.getMenu(); final MenuItem itemShowBoosts = menu.findItem(R.id.action_show_boosts); final MenuItem itemShowMyMessages = menu.findItem(R.id.action_show_my_messages); final MenuItem itemShowSelfBoosts = menu.findItem(R.id.action_show_self_boosts); final MenuItem itemShowDMs = menu.findItem(R.id.action_show_dms); final MenuItem itemShowReplies = menu.findItem(R.id.action_show_replies); final MenuItem itemShowSelfReplies = menu.findItem(R.id.action_show_self_replies); final MenuItem itemFilter = menu.findItem(R.id.action_filter); if (!showExtendedFilter) { itemShowBoosts.setVisible(false); itemShowReplies.setVisible(false); itemShowSelfBoosts.setVisible(false); itemShowSelfReplies.setVisible(false); itemShowMyMessages.setVisible(false); itemShowDMs.setVisible(false); } else { itemShowBoosts.setVisible(true); itemShowReplies.setVisible(true); itemShowSelfBoosts.setVisible(true); itemShowSelfReplies.setVisible(true); itemShowMyMessages.setVisible(true); itemShowDMs.setVisible(true); } SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(BaseMainActivity.this); String show_filtered = null; Loading @@ -1714,77 +1686,78 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt show_filtered = sharedpreferences.getString(getString(R.string.SET_FILTER_REGEX_PUBLIC) + currentUserID + currentInstance, null); } itemShowBoosts.setChecked(show_boosts); itemShowMyMessages.setChecked(show_my_messages); itemShowReplies.setChecked(show_replies); itemShowSelfBoosts.setChecked(show_self_boosts); itemShowSelfReplies.setChecked(show_self_replies); itemShowDMs.setChecked(show_dms); if (show_filtered != null && show_filtered.length() > 0) { itemFilter.setTitle(show_filtered); } popup.setOnDismissListener(menu1 -> { if (binding.viewPager.getAdapter() != null) { int tabPosition = binding.tabLayout.getSelectedTabPosition(); Fragment fragment = (Fragment) binding.viewPager.getAdapter().instantiateItem(binding.viewPager, Math.max(tabPosition, 0)); if (fragment instanceof FragmentMastodonTimeline fragmentMastodonTimeline && fragment.isVisible()) { fragmentMastodonTimeline.refreshAllAdapters(); } } }); String finalShow_filtered = show_filtered; popup.setOnMenuItemClickListener(item -> { item.setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW); item.setActionView(new View(BaseMainActivity.this)); item.setOnActionExpandListener(new MenuItem.OnActionExpandListener() { @Override public boolean onMenuItemActionExpand(MenuItem item) { return false; AlertDialog.Builder dialogBuilder = new MaterialAlertDialogBuilder(BaseMainActivity.this); PopupFilterTimelineBinding dialogView = PopupFilterTimelineBinding.inflate(getLayoutInflater()); dialogBuilder.setView(dialogView.getRoot()); // Set initial checkbox states dialogView.showBoosts.setChecked(show_boosts); dialogView.showReplies.setChecked(show_replies); dialogView.showSelfBoosts.setChecked(show_self_boosts); dialogView.showSelfReplies.setChecked(show_self_replies); dialogView.showMyMessages.setChecked(show_my_messages); dialogView.showDms.setChecked(show_dms); // Hide extended filters for local/public timelines if (!showExtendedFilter) { dialogView.showBoosts.setVisibility(View.GONE); dialogView.showReplies.setVisibility(View.GONE); dialogView.showSelfBoosts.setVisibility(View.GONE); dialogView.showSelfReplies.setVisibility(View.GONE); dialogView.showMyMessages.setVisibility(View.GONE); dialogView.showDms.setVisibility(View.GONE); } @Override public boolean onMenuItemActionCollapse(MenuItem item) { return false; // Update filter button text if there's an active filter if (show_filtered != null && show_filtered.length() > 0) { dialogView.filterRegex.setText(show_filtered); } }); final SharedPreferences.Editor editor = sharedpreferences.edit(); int itemId = item.getItemId(); if (itemId == R.id.action_show_boosts) { show_boosts = !show_boosts; // Checkbox listeners dialogView.showBoosts.setOnCheckedChangeListener((buttonView, isChecked) -> { show_boosts = isChecked; editor.putBoolean(getString(R.string.SET_SHOW_BOOSTS) + currentUserID + currentInstance, show_boosts); itemShowBoosts.setChecked(show_boosts); editor.apply(); } else if (itemId == R.id.action_show_my_messages) { show_my_messages = !show_my_messages; editor.putBoolean(getString(R.string.SET_SHOW_MY_MESSAGES) + currentUserID + currentInstance, show_my_messages); itemShowMyMessages.setChecked(show_my_messages); }); dialogView.showReplies.setOnCheckedChangeListener((buttonView, isChecked) -> { show_replies = isChecked; editor.putBoolean(getString(R.string.SET_SHOW_REPLIES) + currentUserID + currentInstance, show_replies); editor.apply(); } else if (itemId == R.id.action_show_self_boosts) { show_self_boosts = !show_self_boosts; }); dialogView.showSelfBoosts.setOnCheckedChangeListener((buttonView, isChecked) -> { show_self_boosts = isChecked; editor.putBoolean(getString(R.string.SET_SHOW_SELF_BOOSTS) + currentUserID + currentInstance, show_self_boosts); itemShowSelfBoosts.setChecked(show_self_boosts); editor.apply(); } else if (itemId == R.id.action_show_replies) { show_replies = !show_replies; editor.putBoolean(getString(R.string.SET_SHOW_REPLIES) + currentUserID + currentInstance, show_replies); itemShowReplies.setChecked(show_replies); editor.apply(); } else if (itemId == R.id.action_show_self_replies) { show_self_replies = !show_self_replies; }); dialogView.showSelfReplies.setOnCheckedChangeListener((buttonView, isChecked) -> { show_self_replies = isChecked; editor.putBoolean(getString(R.string.SET_SHOW_SELF_REPLIES) + currentUserID + currentInstance, show_self_replies); itemShowSelfReplies.setChecked(show_self_replies); editor.apply(); } else if (itemId == R.id.action_show_dms) { show_dms = !show_dms; }); dialogView.showMyMessages.setOnCheckedChangeListener((buttonView, isChecked) -> { show_my_messages = isChecked; editor.putBoolean(getString(R.string.SET_SHOW_MY_MESSAGES) + currentUserID + currentInstance, show_my_messages); editor.apply(); }); dialogView.showDms.setOnCheckedChangeListener((buttonView, isChecked) -> { show_dms = isChecked; editor.putBoolean(getString(R.string.SET_SHOW_DMS) + currentUserID + currentInstance, show_dms); itemShowDMs.setChecked(show_dms); editor.apply(); } else if (itemId == R.id.action_filter) { AlertDialog.Builder dialogBuilder = new MaterialAlertDialogBuilder(BaseMainActivity.this); LayoutInflater inflater = getLayoutInflater(); View dialogView = inflater.inflate(R.layout.popup_filter_regex, new LinearLayout(BaseMainActivity.this), false); dialogBuilder.setView(dialogView); final EditText editText = dialogView.findViewById(R.id.filter_regex); }); String finalShow_filtered = show_filtered; dialogView.filterRegex.setOnClickListener(v -> { AlertDialog.Builder regexDialogBuilder = new MaterialAlertDialogBuilder(BaseMainActivity.this); View regexDialogView = getLayoutInflater().inflate(R.layout.popup_filter_regex, new LinearLayout(BaseMainActivity.this), false); regexDialogBuilder.setView(regexDialogView); final EditText editText = regexDialogView.findViewById(R.id.filter_regex); Toast alertRegex = Toasty.warning(BaseMainActivity.this, getString(R.string.alert_regex), Toast.LENGTH_LONG); editText.addTextChangedListener(new TextWatcher() { @Override Loading @@ -1804,15 +1777,14 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt alertRegex.show(); } } } }); if (finalShow_filtered != null) { editText.setText(finalShow_filtered); editText.setSelection(editText.getText().toString().length()); } dialogBuilder.setPositiveButton(R.string.validate, (dialog, id) -> { itemFilter.setTitle(editText.getText().toString().trim()); regexDialogBuilder.setPositiveButton(R.string.validate, (dialog, id) -> { dialogView.filterRegex.setText(editText.getText().toString().trim()); if (position == 0) { editor.putString(getString(R.string.SET_FILTER_REGEX_HOME) + currentUserID + currentInstance, editText.getText().toString().trim()); regex_home = editText.getText().toString().trim(); Loading @@ -1825,14 +1797,22 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt } editor.apply(); }); AlertDialog alertDialog = dialogBuilder.create(); alertDialog.show(); return true; } return false; AlertDialog regexAlertDialog = regexDialogBuilder.create(); regexAlertDialog.show(); }); popup.show(); dialogBuilder.setPositiveButton(R.string.close, (dialog, id) -> dialog.dismiss()); dialogBuilder.setOnDismissListener(dialog -> { if (binding.viewPager.getAdapter() != null) { int tabPosition = binding.tabLayout.getSelectedTabPosition(); Fragment fragment = (Fragment) binding.viewPager.getAdapter().instantiateItem(binding.viewPager, Math.max(tabPosition, 0)); if (fragment instanceof FragmentMastodonTimeline fragmentMastodonTimeline && fragment.isVisible()) { fragmentMastodonTimeline.refreshAllAdapters(); } } }); AlertDialog alertDialog = dialogBuilder.create(); alertDialog.show(); } public void refreshFragment() { Loading app/src/main/java/app/fedilab/android/mastodon/helper/PinnedTimelineHelper.java +545 −715 File changed.Preview size limit exceeded, changes collapsed. Show changes app/src/main/res/layouts/mastodon/layout/popup_filter_bubble_timeline.xml 0 → 100644 +43 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content"> <androidx.appcompat.widget.LinearLayoutCompat android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="@dimen/fab_margin"> <com.google.android.material.checkbox.MaterialCheckBox android:id="@+id/action_show_media_only" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/show_media_only" /> <com.google.android.material.checkbox.MaterialCheckBox android:id="@+id/action_remote" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/remote" /> <com.google.android.material.button.MaterialButton android:id="@+id/action_exclude_visibility" style="@style/Widget.Material3.Button.TextButton" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/exclude_visibility" android:textAlignment="textStart" /> <com.google.android.material.button.MaterialButton android:id="@+id/action_reply_visibility" style="@style/Widget.Material3.Button.TextButton" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/reply_visibility" android:textAlignment="textStart" /> </androidx.appcompat.widget.LinearLayoutCompat> </ScrollView> app/src/main/res/layouts/mastodon/layout/popup_filter_instance_timeline.xml 0 → 100644 +31 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content"> <androidx.appcompat.widget.LinearLayoutCompat android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="@dimen/fab_margin"> <RadioGroup android:id="@+id/filter_group" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" /> <com.google.android.material.button.MaterialButton android:id="@+id/action_add_tags" style="@style/Widget.Material3.Button.TextButton" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="8dp" android:text="@string/add_tags" android:textAlignment="textStart" app:icon="@drawable/ic_baseline_add_24" /> </androidx.appcompat.widget.LinearLayoutCompat> </ScrollView> app/src/main/res/layouts/mastodon/layout/popup_filter_nitter_timeline.xml 0 → 100644 +31 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content"> <androidx.appcompat.widget.LinearLayoutCompat android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="@dimen/fab_margin"> <com.google.android.material.button.MaterialButton android:id="@+id/action_displayname" style="@style/Widget.Material3.Button.TextButton" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/change_tag_column" android:textAlignment="textStart" /> <com.google.android.material.button.MaterialButton android:id="@+id/action_nitter_manage_accounts" style="@style/Widget.Material3.Button.TextButton" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/manage_accounts" android:textAlignment="textStart" /> </androidx.appcompat.widget.LinearLayoutCompat> </ScrollView> Loading
app/src/main/java/app/fedilab/android/BaseMainActivity.java +112 −132 Original line number Diff line number Diff line Loading @@ -128,6 +128,7 @@ import app.fedilab.android.activities.LoginActivity; import app.fedilab.android.activities.MainActivity; import app.fedilab.android.databinding.ActivityMainBinding; import app.fedilab.android.databinding.NavHeaderMainBinding; import app.fedilab.android.databinding.PopupFilterTimelineBinding; import app.fedilab.android.mastodon.activities.ActionActivity; import app.fedilab.android.mastodon.activities.AnnouncementActivity; import app.fedilab.android.mastodon.activities.BaseActivity; Loading Loading @@ -1668,41 +1669,12 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt } private void manageFilters(int position) { View view = binding.bottomNavView.findViewById(R.id.nav_home); boolean showExtendedFilter = true; if (position == BottomMenu.getPosition(bottomMenu, R.id.nav_local)) { view = binding.bottomNavView.findViewById(R.id.nav_local); showExtendedFilter = false; } else if (position == BottomMenu.getPosition(bottomMenu, R.id.nav_public)) { view = binding.bottomNavView.findViewById(R.id.nav_public); showExtendedFilter = false; } PopupMenu popup = new PopupMenu(BaseMainActivity.this, view, Gravity.TOP); popup.getMenuInflater() .inflate(R.menu.option_filter_toots, popup.getMenu()); Menu menu = popup.getMenu(); final MenuItem itemShowBoosts = menu.findItem(R.id.action_show_boosts); final MenuItem itemShowMyMessages = menu.findItem(R.id.action_show_my_messages); final MenuItem itemShowSelfBoosts = menu.findItem(R.id.action_show_self_boosts); final MenuItem itemShowDMs = menu.findItem(R.id.action_show_dms); final MenuItem itemShowReplies = menu.findItem(R.id.action_show_replies); final MenuItem itemShowSelfReplies = menu.findItem(R.id.action_show_self_replies); final MenuItem itemFilter = menu.findItem(R.id.action_filter); if (!showExtendedFilter) { itemShowBoosts.setVisible(false); itemShowReplies.setVisible(false); itemShowSelfBoosts.setVisible(false); itemShowSelfReplies.setVisible(false); itemShowMyMessages.setVisible(false); itemShowDMs.setVisible(false); } else { itemShowBoosts.setVisible(true); itemShowReplies.setVisible(true); itemShowSelfBoosts.setVisible(true); itemShowSelfReplies.setVisible(true); itemShowMyMessages.setVisible(true); itemShowDMs.setVisible(true); } SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(BaseMainActivity.this); String show_filtered = null; Loading @@ -1714,77 +1686,78 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt show_filtered = sharedpreferences.getString(getString(R.string.SET_FILTER_REGEX_PUBLIC) + currentUserID + currentInstance, null); } itemShowBoosts.setChecked(show_boosts); itemShowMyMessages.setChecked(show_my_messages); itemShowReplies.setChecked(show_replies); itemShowSelfBoosts.setChecked(show_self_boosts); itemShowSelfReplies.setChecked(show_self_replies); itemShowDMs.setChecked(show_dms); if (show_filtered != null && show_filtered.length() > 0) { itemFilter.setTitle(show_filtered); } popup.setOnDismissListener(menu1 -> { if (binding.viewPager.getAdapter() != null) { int tabPosition = binding.tabLayout.getSelectedTabPosition(); Fragment fragment = (Fragment) binding.viewPager.getAdapter().instantiateItem(binding.viewPager, Math.max(tabPosition, 0)); if (fragment instanceof FragmentMastodonTimeline fragmentMastodonTimeline && fragment.isVisible()) { fragmentMastodonTimeline.refreshAllAdapters(); } } }); String finalShow_filtered = show_filtered; popup.setOnMenuItemClickListener(item -> { item.setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW); item.setActionView(new View(BaseMainActivity.this)); item.setOnActionExpandListener(new MenuItem.OnActionExpandListener() { @Override public boolean onMenuItemActionExpand(MenuItem item) { return false; AlertDialog.Builder dialogBuilder = new MaterialAlertDialogBuilder(BaseMainActivity.this); PopupFilterTimelineBinding dialogView = PopupFilterTimelineBinding.inflate(getLayoutInflater()); dialogBuilder.setView(dialogView.getRoot()); // Set initial checkbox states dialogView.showBoosts.setChecked(show_boosts); dialogView.showReplies.setChecked(show_replies); dialogView.showSelfBoosts.setChecked(show_self_boosts); dialogView.showSelfReplies.setChecked(show_self_replies); dialogView.showMyMessages.setChecked(show_my_messages); dialogView.showDms.setChecked(show_dms); // Hide extended filters for local/public timelines if (!showExtendedFilter) { dialogView.showBoosts.setVisibility(View.GONE); dialogView.showReplies.setVisibility(View.GONE); dialogView.showSelfBoosts.setVisibility(View.GONE); dialogView.showSelfReplies.setVisibility(View.GONE); dialogView.showMyMessages.setVisibility(View.GONE); dialogView.showDms.setVisibility(View.GONE); } @Override public boolean onMenuItemActionCollapse(MenuItem item) { return false; // Update filter button text if there's an active filter if (show_filtered != null && show_filtered.length() > 0) { dialogView.filterRegex.setText(show_filtered); } }); final SharedPreferences.Editor editor = sharedpreferences.edit(); int itemId = item.getItemId(); if (itemId == R.id.action_show_boosts) { show_boosts = !show_boosts; // Checkbox listeners dialogView.showBoosts.setOnCheckedChangeListener((buttonView, isChecked) -> { show_boosts = isChecked; editor.putBoolean(getString(R.string.SET_SHOW_BOOSTS) + currentUserID + currentInstance, show_boosts); itemShowBoosts.setChecked(show_boosts); editor.apply(); } else if (itemId == R.id.action_show_my_messages) { show_my_messages = !show_my_messages; editor.putBoolean(getString(R.string.SET_SHOW_MY_MESSAGES) + currentUserID + currentInstance, show_my_messages); itemShowMyMessages.setChecked(show_my_messages); }); dialogView.showReplies.setOnCheckedChangeListener((buttonView, isChecked) -> { show_replies = isChecked; editor.putBoolean(getString(R.string.SET_SHOW_REPLIES) + currentUserID + currentInstance, show_replies); editor.apply(); } else if (itemId == R.id.action_show_self_boosts) { show_self_boosts = !show_self_boosts; }); dialogView.showSelfBoosts.setOnCheckedChangeListener((buttonView, isChecked) -> { show_self_boosts = isChecked; editor.putBoolean(getString(R.string.SET_SHOW_SELF_BOOSTS) + currentUserID + currentInstance, show_self_boosts); itemShowSelfBoosts.setChecked(show_self_boosts); editor.apply(); } else if (itemId == R.id.action_show_replies) { show_replies = !show_replies; editor.putBoolean(getString(R.string.SET_SHOW_REPLIES) + currentUserID + currentInstance, show_replies); itemShowReplies.setChecked(show_replies); editor.apply(); } else if (itemId == R.id.action_show_self_replies) { show_self_replies = !show_self_replies; }); dialogView.showSelfReplies.setOnCheckedChangeListener((buttonView, isChecked) -> { show_self_replies = isChecked; editor.putBoolean(getString(R.string.SET_SHOW_SELF_REPLIES) + currentUserID + currentInstance, show_self_replies); itemShowSelfReplies.setChecked(show_self_replies); editor.apply(); } else if (itemId == R.id.action_show_dms) { show_dms = !show_dms; }); dialogView.showMyMessages.setOnCheckedChangeListener((buttonView, isChecked) -> { show_my_messages = isChecked; editor.putBoolean(getString(R.string.SET_SHOW_MY_MESSAGES) + currentUserID + currentInstance, show_my_messages); editor.apply(); }); dialogView.showDms.setOnCheckedChangeListener((buttonView, isChecked) -> { show_dms = isChecked; editor.putBoolean(getString(R.string.SET_SHOW_DMS) + currentUserID + currentInstance, show_dms); itemShowDMs.setChecked(show_dms); editor.apply(); } else if (itemId == R.id.action_filter) { AlertDialog.Builder dialogBuilder = new MaterialAlertDialogBuilder(BaseMainActivity.this); LayoutInflater inflater = getLayoutInflater(); View dialogView = inflater.inflate(R.layout.popup_filter_regex, new LinearLayout(BaseMainActivity.this), false); dialogBuilder.setView(dialogView); final EditText editText = dialogView.findViewById(R.id.filter_regex); }); String finalShow_filtered = show_filtered; dialogView.filterRegex.setOnClickListener(v -> { AlertDialog.Builder regexDialogBuilder = new MaterialAlertDialogBuilder(BaseMainActivity.this); View regexDialogView = getLayoutInflater().inflate(R.layout.popup_filter_regex, new LinearLayout(BaseMainActivity.this), false); regexDialogBuilder.setView(regexDialogView); final EditText editText = regexDialogView.findViewById(R.id.filter_regex); Toast alertRegex = Toasty.warning(BaseMainActivity.this, getString(R.string.alert_regex), Toast.LENGTH_LONG); editText.addTextChangedListener(new TextWatcher() { @Override Loading @@ -1804,15 +1777,14 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt alertRegex.show(); } } } }); if (finalShow_filtered != null) { editText.setText(finalShow_filtered); editText.setSelection(editText.getText().toString().length()); } dialogBuilder.setPositiveButton(R.string.validate, (dialog, id) -> { itemFilter.setTitle(editText.getText().toString().trim()); regexDialogBuilder.setPositiveButton(R.string.validate, (dialog, id) -> { dialogView.filterRegex.setText(editText.getText().toString().trim()); if (position == 0) { editor.putString(getString(R.string.SET_FILTER_REGEX_HOME) + currentUserID + currentInstance, editText.getText().toString().trim()); regex_home = editText.getText().toString().trim(); Loading @@ -1825,14 +1797,22 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt } editor.apply(); }); AlertDialog alertDialog = dialogBuilder.create(); alertDialog.show(); return true; } return false; AlertDialog regexAlertDialog = regexDialogBuilder.create(); regexAlertDialog.show(); }); popup.show(); dialogBuilder.setPositiveButton(R.string.close, (dialog, id) -> dialog.dismiss()); dialogBuilder.setOnDismissListener(dialog -> { if (binding.viewPager.getAdapter() != null) { int tabPosition = binding.tabLayout.getSelectedTabPosition(); Fragment fragment = (Fragment) binding.viewPager.getAdapter().instantiateItem(binding.viewPager, Math.max(tabPosition, 0)); if (fragment instanceof FragmentMastodonTimeline fragmentMastodonTimeline && fragment.isVisible()) { fragmentMastodonTimeline.refreshAllAdapters(); } } }); AlertDialog alertDialog = dialogBuilder.create(); alertDialog.show(); } public void refreshFragment() { Loading
app/src/main/java/app/fedilab/android/mastodon/helper/PinnedTimelineHelper.java +545 −715 File changed.Preview size limit exceeded, changes collapsed. Show changes
app/src/main/res/layouts/mastodon/layout/popup_filter_bubble_timeline.xml 0 → 100644 +43 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content"> <androidx.appcompat.widget.LinearLayoutCompat android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="@dimen/fab_margin"> <com.google.android.material.checkbox.MaterialCheckBox android:id="@+id/action_show_media_only" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/show_media_only" /> <com.google.android.material.checkbox.MaterialCheckBox android:id="@+id/action_remote" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/remote" /> <com.google.android.material.button.MaterialButton android:id="@+id/action_exclude_visibility" style="@style/Widget.Material3.Button.TextButton" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/exclude_visibility" android:textAlignment="textStart" /> <com.google.android.material.button.MaterialButton android:id="@+id/action_reply_visibility" style="@style/Widget.Material3.Button.TextButton" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/reply_visibility" android:textAlignment="textStart" /> </androidx.appcompat.widget.LinearLayoutCompat> </ScrollView>
app/src/main/res/layouts/mastodon/layout/popup_filter_instance_timeline.xml 0 → 100644 +31 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content"> <androidx.appcompat.widget.LinearLayoutCompat android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="@dimen/fab_margin"> <RadioGroup android:id="@+id/filter_group" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" /> <com.google.android.material.button.MaterialButton android:id="@+id/action_add_tags" style="@style/Widget.Material3.Button.TextButton" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="8dp" android:text="@string/add_tags" android:textAlignment="textStart" app:icon="@drawable/ic_baseline_add_24" /> </androidx.appcompat.widget.LinearLayoutCompat> </ScrollView>
app/src/main/res/layouts/mastodon/layout/popup_filter_nitter_timeline.xml 0 → 100644 +31 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content"> <androidx.appcompat.widget.LinearLayoutCompat android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="@dimen/fab_margin"> <com.google.android.material.button.MaterialButton android:id="@+id/action_displayname" style="@style/Widget.Material3.Button.TextButton" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/change_tag_column" android:textAlignment="textStart" /> <com.google.android.material.button.MaterialButton android:id="@+id/action_nitter_manage_accounts" style="@style/Widget.Material3.Button.TextButton" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/manage_accounts" android:textAlignment="textStart" /> </androidx.appcompat.widget.LinearLayoutCompat> </ScrollView>