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 41ab1046c..2488e7452 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTabFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTabFragment.java @@ -400,9 +400,8 @@ public class HomeTabFragment extends MastodonToolbarFragment implements Scrollab addListsToOverflowMenu(); addHashtagsToOverflowMenu(); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P && !UiUtils.isEMUI()) { + if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.P && !UiUtils.isEMUI()) m.setGroupDividerEnabled(true); - } } @Override diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java index 4adea014f..8ed09b1dc 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java @@ -755,20 +755,21 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList boolean hasMultipleAccounts = AccountSessionManager.getInstance().getLoggedInAccounts().size() > 1; MenuItem openWithAccounts = menu.findItem(R.id.open_with_account); openWithAccounts.setVisible(hasMultipleAccounts); - SubMenu accountsMenu = openWithAccounts.getSubMenu(); - if (hasMultipleAccounts) { + SubMenu accountsMenu=openWithAccounts.getSubMenu(); + if(hasMultipleAccounts){ accountsMenu.clear(); UiUtils.populateAccountsMenu(accountID, accountsMenu, s-> UiUtils.openURL( getActivity(), s.getID(), account.url, false )); } - menu.findItem(R.id.share).setTitle(R.string.share_user); + if(isOwnProfile) { if (isInstancePixelfed()) menu.findItem(R.id.scheduled).setVisible(false); return; } - MenuItem mute = menu.findItem(R.id.mute); + menu.findItem(R.id.manage_user_lists).setTitle(getString(R.string.sk_lists_with_user, account.getShortUsername())); + MenuItem mute=menu.findItem(R.id.mute); mute.setTitle(getString(relationship.muting ? R.string.unmute_user : R.string.mute_user, account.getShortUsername())); mute.setIcon(relationship.muting ? R.drawable.ic_fluent_speaker_0_24_regular : R.drawable.ic_fluent_speaker_off_24_regular); UiUtils.insetPopupMenuIcon(getContext(), mute); @@ -776,19 +777,22 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList menu.findItem(R.id.report).setTitle(getString(R.string.report_user, account.getShortUsername())); menu.findItem(R.id.manage_user_lists).setVisible(relationship.following); menu.findItem(R.id.soft_block).setVisible(relationship.followedBy && !relationship.following); + MenuItem hideBoosts=menu.findItem(R.id.hide_boosts); if (relationship.following) { - MenuItem hideBoosts = menu.findItem(R.id.hide_boosts); hideBoosts.setTitle(getString(relationship.showingReblogs ? R.string.hide_boosts_from_user : R.string.show_boosts_from_user, account.getShortUsername())); hideBoosts.setIcon(relationship.showingReblogs ? R.drawable.ic_fluent_arrow_repeat_all_off_24_regular : R.drawable.ic_fluent_arrow_repeat_all_24_regular); UiUtils.insetPopupMenuIcon(getContext(), hideBoosts); - menu.findItem(R.id.manage_user_lists).setTitle(getString(R.string.sk_lists_with_user, account.getShortUsername())); + hideBoosts.setVisible(true); } else { - menu.findItem(R.id.hide_boosts).setVisible(false); + hideBoosts.setVisible(false); + } + MenuItem blockDomain=menu.findItem(R.id.block_domain); + if(!account.isLocal()){ + blockDomain.setTitle(getString(relationship.domainBlocking ? R.string.unblock_domain : R.string.block_domain, account.getDomain())); + blockDomain.setVisible(true); + }else{ + blockDomain.setVisible(false); } - if(!account.isLocal()) - menu.findItem(R.id.block_domain).setTitle(getString(relationship.domainBlocking ? R.string.unblock_domain : R.string.block_domain, account.getDomain())); - else - menu.findItem(R.id.block_domain).setVisible(false); } @Override @@ -800,11 +804,11 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList intent.putExtra(Intent.EXTRA_TEXT, account.url); startActivity(Intent.createChooser(intent, item.getTitle())); }else if(id==R.id.mute){ - confirmToggleMuted(); + UiUtils.confirmToggleMuteUser(getActivity(), accountID, account, relationship.muting, this::updateRelationship); }else if(id==R.id.block){ - confirmToggleBlocked(); + UiUtils.confirmToggleBlockUser(getActivity(), accountID, account, relationship.blocking, this::updateRelationship); }else if(id==R.id.soft_block){ - confirmSoftBlockUser(); + UiUtils.confirmSoftBlockUser(getActivity(), accountID, account, this::updateRelationship); }else if(id==R.id.report){ Bundle args=new Bundle(); args.putString("account", accountID); @@ -1207,18 +1211,6 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList .exec(accountID); } - private void confirmToggleMuted(){ - UiUtils.confirmToggleMuteUser(getActivity(), accountID, account, relationship.muting, this::updateRelationship); - } - - private void confirmToggleBlocked(){ - UiUtils.confirmToggleBlockUser(getActivity(), accountID, account, relationship.blocking, this::updateRelationship); - } - - private void confirmSoftBlockUser(){ - UiUtils.confirmSoftBlockUser(getActivity(), accountID, account, this::updateRelationship); - } - private void updateRelationship(Relationship r){ relationship=r; updateRelationship(); diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/viewholders/AccountViewHolder.java b/mastodon/src/main/java/org/joinmastodon/android/ui/viewholders/AccountViewHolder.java index 483c543d8..7e709e5e2 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/viewholders/AccountViewHolder.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/viewholders/AccountViewHolder.java @@ -6,6 +6,7 @@ import android.app.Fragment; import android.content.Intent; import android.graphics.drawable.Animatable; import android.graphics.drawable.Drawable; +import android.os.Build; import android.os.Bundle; import android.text.SpannableStringBuilder; import android.text.style.TypefaceSpan; @@ -25,6 +26,7 @@ import org.joinmastodon.android.GlobalUserPreferences; import org.joinmastodon.android.R; import org.joinmastodon.android.api.requests.accounts.SetAccountFollowed; import org.joinmastodon.android.api.session.AccountSessionManager; +import org.joinmastodon.android.fragments.ListsFragment; import org.joinmastodon.android.fragments.ProfileFragment; import org.joinmastodon.android.fragments.report.ReportReasonChoiceFragment; import org.joinmastodon.android.model.Account; @@ -98,6 +100,9 @@ public class AccountViewHolder extends BindableViewHolder impl contextMenu=new PopupMenu(fragment.getActivity(), menuAnchor); contextMenu.inflate(R.menu.profile); contextMenu.setOnMenuItemClickListener(this::onContextMenuItemSelected); + if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.P && !UiUtils.isEMUI()) + contextMenu.getMenu().setGroupDividerEnabled(true); + UiUtils.enablePopupMenuIcons(fragment.getContext(), contextMenu); setStyle(AccessoryType.BUTTON, false); } @@ -212,14 +217,20 @@ public class AccountViewHolder extends BindableViewHolder impl Menu menu=contextMenu.getMenu(); Account account=item.account; - menu.findItem(R.id.share).setTitle(fragment.getString(R.string.share_user, account.getDisplayUsername())); menu.findItem(R.id.manage_user_lists).setTitle(fragment.getString(R.string.sk_lists_with_user, account.getShortUsername())); - menu.findItem(R.id.mute).setTitle(fragment.getString(relationship.muting ? R.string.unmute_user : R.string.mute_user, account.getDisplayUsername())); - menu.findItem(R.id.block).setTitle(fragment.getString(relationship.blocking ? R.string.unblock_user : R.string.block_user, account.getDisplayUsername())); - menu.findItem(R.id.report).setTitle(fragment.getString(R.string.report_user, account.getDisplayUsername())); + MenuItem mute=menu.findItem(R.id.mute); + mute.setTitle(fragment.getString(relationship.muting ? R.string.unmute_user : R.string.mute_user, account.getShortUsername())); + mute.setIcon(relationship.muting ? R.drawable.ic_fluent_speaker_0_24_regular : R.drawable.ic_fluent_speaker_off_24_regular); + UiUtils.insetPopupMenuIcon(fragment.getContext(), mute); + menu.findItem(R.id.block).setTitle(fragment.getString(relationship.blocking ? R.string.unblock_user : R.string.block_user, account.getShortUsername())); + menu.findItem(R.id.report).setTitle(fragment.getString(R.string.report_user, account.getShortUsername())); + menu.findItem(R.id.manage_user_lists).setVisible(relationship.following); + menu.findItem(R.id.soft_block).setVisible(relationship.followedBy && !relationship.following); MenuItem hideBoosts=menu.findItem(R.id.hide_boosts); if(relationship.following){ - hideBoosts.setTitle(fragment.getString(relationship.showingReblogs ? R.string.hide_boosts_from_user : R.string.show_boosts_from_user, account.getDisplayUsername())); + hideBoosts.setTitle(fragment.getString(relationship.showingReblogs ? R.string.hide_boosts_from_user : R.string.show_boosts_from_user, account.getShortUsername())); + hideBoosts.setIcon(relationship.showingReblogs ? R.drawable.ic_fluent_arrow_repeat_all_off_24_regular : R.drawable.ic_fluent_arrow_repeat_all_24_regular); + UiUtils.insetPopupMenuIcon(fragment.getContext(), hideBoosts); hideBoosts.setVisible(true); }else{ hideBoosts.setVisible(false); @@ -274,6 +285,8 @@ public class AccountViewHolder extends BindableViewHolder impl UiUtils.confirmToggleMuteUser(fragment.getActivity(), accountID, account, relationship.muting, this::updateRelationship); }else if(id==R.id.block){ UiUtils.confirmToggleBlockUser(fragment.getActivity(), accountID, account, relationship.blocking, this::updateRelationship); + }else if(id==R.id.soft_block){ + UiUtils.confirmSoftBlockUser(fragment.getActivity(), accountID, account, this::updateRelationship); }else if(id==R.id.report){ Bundle args=new Bundle(); args.putString("account", accountID); @@ -303,6 +316,12 @@ public class AccountViewHolder extends BindableViewHolder impl }) .wrapProgress(fragment.getActivity(), R.string.loading, false) .exec(accountID); + }else if(id==R.id.manage_user_lists){ + final Bundle args=new Bundle(); + args.putString("account", accountID); + args.putString("profileAccount", account.id); + args.putString("profileDisplayUsername", account.getDisplayUsername()); + Nav.go(fragment.getActivity(), ListsFragment.class, args); } return true; } diff --git a/mastodon/src/main/res/menu/profile.xml b/mastodon/src/main/res/menu/profile.xml index 3a0e39c43..75d3f9d88 100644 --- a/mastodon/src/main/res/menu/profile.xml +++ b/mastodon/src/main/res/menu/profile.xml @@ -1,15 +1,19 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + + \ No newline at end of file