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 e45f7e7a5..b1d92af2e 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java @@ -293,8 +293,8 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList noteEdit.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_MULTI_LINE | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES); }else{ showFab(); + savePrivateNote(noteEdit.getText().toString()); } - savePrivateNote(noteEdit.getText().toString()); }); FrameLayout sizeWrapper=new FrameLayout(getActivity()){ @@ -822,7 +822,7 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList if(isOwnProfile){ UiUtils.enableOptionsMenuIcons(getActivity(), menu, R.id.scheduled, R.id.bookmarks, R.id.favorites); }else{ - UiUtils.enableOptionsMenuIcons(getActivity(), menu, R.id.bookmarks, R.id.followed_hashtags, R.id.favorites, R.id.scheduled); + UiUtils.enableOptionsMenuIcons(getActivity(), menu, R.id.edit_note, R.id.share); } boolean hasMultipleAccounts = AccountSessionManager.getInstance().getLoggedInAccounts().size() > 1; MenuItem openWithAccounts = menu.findItem(R.id.open_with_account); @@ -865,6 +865,9 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList }else{ blockDomain.setVisible(false); } + boolean canAddNote = noteWrap.getVisibility()==View.GONE && (relationship.note==null || relationship.note.isEmpty()); + menu.findItem(R.id.edit_note).setTitle(canAddNote ? R.string.sk_add_note : R.string.sk_delete_note); + menu.findItem(R.id.edit_note).setIcon(canAddNote ? R.drawable.ic_fluent_person_note_24_regular : R.drawable.ic_fluent_person_delete_note_24_regular); } @Override @@ -946,6 +949,26 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList }else if(id==R.id.save){ if(isInEditMode) saveAndExitEditMode(); + }else if(id==R.id.edit_note){ + if(noteWrap.getVisibility()==View.GONE){ + showPrivateNote(); + UiUtils.beginLayoutTransition(scrollableContent); + noteEdit.requestFocus(); + noteEdit.postDelayed(()->{ + InputMethodManager imm=getActivity().getSystemService(InputMethodManager.class); + imm.showSoftInput(noteEdit, 0); + }, 100); + }else if(relationship.note.isEmpty()){ + hidePrivateNote(); + UiUtils.beginLayoutTransition(scrollableContent); + }else{ + new M3AlertDialogBuilder(getActivity()) + .setMessage(getContext().getString(R.string.sk_private_note_confirm_delete, account.getDisplayUsername())) + .setPositiveButton(R.string.delete, (dlg, btn)->savePrivateNote(null)) + .setNegativeButton(R.string.cancel, null) + .show(); + } + invalidateOptionsMenu(); } return true; } @@ -971,7 +994,8 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList private void updateRelationship(){ if(getActivity()==null) return; - showPrivateNote(); + if(relationship.note!=null && !relationship.note.isEmpty()) showPrivateNote(); + else hidePrivateNote(); invalidateOptionsMenu(); actionButton.setVisibility(View.VISIBLE); notifyButton.setVisibility(relationship.following ? View.VISIBLE : View.GONE); 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 efd238071..caa89f797 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 @@ -217,6 +217,7 @@ public class AccountViewHolder extends BindableViewHolder impl Menu menu=contextMenu.getMenu(); Account account=item.account; + menu.findItem(R.id.edit_note).setVisible(false); menu.findItem(R.id.manage_user_lists).setTitle(fragment.getString(R.string.sk_lists_with_user, account.getShortUsername())); MenuItem mute=menu.findItem(R.id.mute); mute.setTitle(fragment.getString(relationship.muting ? R.string.unmute_user : R.string.mute_user, account.getShortUsername())); diff --git a/mastodon/src/main/res/drawable/ic_fluent_person_delete_note_24_regular.xml b/mastodon/src/main/res/drawable/ic_fluent_person_delete_note_24_regular.xml new file mode 100644 index 000000000..70827606b --- /dev/null +++ b/mastodon/src/main/res/drawable/ic_fluent_person_delete_note_24_regular.xml @@ -0,0 +1,17 @@ + + + + + + + diff --git a/mastodon/src/main/res/layout/fragment_profile.xml b/mastodon/src/main/res/layout/fragment_profile.xml index faf5c2070..cb73986bf 100644 --- a/mastodon/src/main/res/layout/fragment_profile.xml +++ b/mastodon/src/main/res/layout/fragment_profile.xml @@ -231,12 +231,13 @@ diff --git a/mastodon/src/main/res/menu/profile.xml b/mastodon/src/main/res/menu/profile.xml index aaaf7cae8..48b8d66e8 100644 --- a/mastodon/src/main/res/menu/profile.xml +++ b/mastodon/src/main/res/menu/profile.xml @@ -1,6 +1,9 @@ + + + @@ -9,9 +12,9 @@ - + - + diff --git a/mastodon/src/main/res/menu/profile_own.xml b/mastodon/src/main/res/menu/profile_own.xml index cf0630109..47b8219fc 100644 --- a/mastodon/src/main/res/menu/profile_own.xml +++ b/mastodon/src/main/res/menu/profile_own.xml @@ -4,7 +4,7 @@ - +