add drag to open to visibility button

This commit is contained in:
sk 2022-12-20 12:58:18 +01:00 committed by LucasGGamerM
parent 7ab634cc08
commit 56d344045a
1 changed files with 11 additions and 9 deletions

View File

@ -155,7 +155,7 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
private int charCount, charLimit, trimmedCharCount; private int charCount, charLimit, trimmedCharCount;
private Button publishButton, languageButton; private Button publishButton, languageButton;
private PopupMenu languagePopup; private PopupMenu languagePopup, visibilityPopup;
private ImageButton mediaBtn, pollBtn, emojiBtn, spoilerBtn, visibilityBtn; private ImageButton mediaBtn, pollBtn, emojiBtn, spoilerBtn, visibilityBtn;
private ImageView sensitiveIcon; private ImageView sensitiveIcon;
private ComposeMediaLayout attachmentsView; private ComposeMediaLayout attachmentsView;
@ -255,6 +255,7 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
wm=activity.getSystemService(WindowManager.class); wm=activity.getSystemService(WindowManager.class);
} }
@SuppressLint("ClickableViewAccessibility")
@Override @Override
public View onCreateContentView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ public View onCreateContentView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
creatingView=true; creatingView=true;
@ -295,7 +296,9 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
pollBtn.setOnClickListener(v->togglePoll()); pollBtn.setOnClickListener(v->togglePoll());
emojiBtn.setOnClickListener(v->emojiKeyboard.toggleKeyboardPopup(mainEditText)); emojiBtn.setOnClickListener(v->emojiKeyboard.toggleKeyboardPopup(mainEditText));
spoilerBtn.setOnClickListener(v->toggleSpoiler()); spoilerBtn.setOnClickListener(v->toggleSpoiler());
visibilityBtn.setOnClickListener(this::onVisibilityClick); buildVisibilityPopup(visibilityBtn);
visibilityBtn.setOnClickListener(v->visibilityPopup.show());
visibilityBtn.setOnTouchListener(visibilityPopup.getDragToOpenListener());
sensitiveItem.setOnClickListener(v->toggleSensitive()); sensitiveItem.setOnClickListener(v->toggleSensitive());
emojiKeyboard.setOnIconChangedListener(new PopupKeyboard.OnIconChangeListener(){ emojiKeyboard.setOnIconChangedListener(new PopupKeyboard.OnIconChangeListener(){
@Override @Override
@ -1396,11 +1399,11 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
return attachments.size(); return attachments.size();
} }
private void onVisibilityClick(View v){ private void buildVisibilityPopup(View v){
PopupMenu menu=new PopupMenu(getActivity(), v); visibilityPopup=new PopupMenu(getActivity(), v);
menu.inflate(R.menu.compose_visibility); visibilityPopup.inflate(R.menu.compose_visibility);
Menu m=menu.getMenu(); Menu m=visibilityPopup.getMenu();
UiUtils.enablePopupMenuIcons(getActivity(), menu); UiUtils.enablePopupMenuIcons(getActivity(), visibilityPopup);
m.setGroupCheckable(0, true, true); m.setGroupCheckable(0, true, true);
m.findItem(switch(statusVisibility){ m.findItem(switch(statusVisibility){
case PUBLIC -> R.id.vis_public; case PUBLIC -> R.id.vis_public;
@ -1408,7 +1411,7 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
case PRIVATE -> R.id.vis_followers; case PRIVATE -> R.id.vis_followers;
case DIRECT -> R.id.vis_private; case DIRECT -> R.id.vis_private;
}).setChecked(true); }).setChecked(true);
menu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener(){ visibilityPopup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener(){
@Override @Override
public boolean onMenuItemClick(MenuItem item){ public boolean onMenuItemClick(MenuItem item){
int id=item.getItemId(); int id=item.getItemId();
@ -1426,7 +1429,6 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr
return true; return true;
} }
}); });
menu.show();
} }
private void loadDefaultStatusVisibility(Bundle savedInstanceState) { private void loadDefaultStatusVisibility(Bundle savedInstanceState) {