diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java index 45f344961..d40b4ec2b 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/ComposeFragment.java @@ -41,6 +41,7 @@ import android.view.WindowManager; import android.view.animation.LinearInterpolator; import android.view.inputmethod.InputMethodManager; import android.widget.Button; +import android.widget.CheckBox; import android.widget.EditText; import android.widget.FrameLayout; import android.widget.ImageButton; @@ -152,6 +153,8 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr private ReorderableLinearLayout pollOptionsView; private View pollWrap; private View addPollOptionBtn; + private View pollAllowMultipleItem; + private CheckBox pollAllowMultipleCheckbox; private View sensitiveItem; private TextView pollDurationView; @@ -297,6 +300,9 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr pollOptionsView=view.findViewById(R.id.poll_options); pollWrap=view.findViewById(R.id.poll_wrap); addPollOptionBtn=view.findViewById(R.id.add_poll_option); + pollAllowMultipleItem=view.findViewById(R.id.poll_allow_multiple); + pollAllowMultipleCheckbox=view.findViewById(R.id.poll_allow_multiple_checkbox); + pollAllowMultipleItem.setOnClickListener(v->this.togglePollAllowMultiple()); addPollOptionBtn.setOnClickListener(v->{ createDraftPollOption().edit.requestFocus(); @@ -311,6 +317,7 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr pollBtn.setSelected(true); mediaBtn.setEnabled(false); pollWrap.setVisibility(View.VISIBLE); + updatePollAllowMultiple(savedInstanceState.getBoolean("pollAllowMultiple", false)); for(String oldText:savedInstanceState.getStringArrayList("pollOptions")){ DraftPollOption opt=createDraftPollOption(); opt.edit.setText(oldText); @@ -321,6 +328,7 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr pollBtn.setSelected(true); mediaBtn.setEnabled(false); pollWrap.setVisibility(View.VISIBLE); + updatePollAllowMultiple(editingStatus.poll.multiple); for(Poll.Option eopt:editingStatus.poll.options){ DraftPollOption opt=createDraftPollOption(); opt.edit.setText(eopt.title); @@ -391,6 +399,7 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr outState.putStringArrayList("pollOptions", opts); outState.putInt("pollDuration", pollDuration); outState.putString("pollDurationStr", pollDurationStr); + outState.putBoolean("pollAllowMultiple", pollAllowMultipleItem.isSelected()); } outState.putBoolean("sensitive", sensitive); outState.putBoolean("hasSpoiler", hasSpoiler); @@ -527,15 +536,14 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr ignoreSelectionChanges=true; mainEditText.setSelection(mainEditText.length()); ignoreSelectionChanges=false; - if(!TextUtils.isEmpty(replyTo.spoilerText)){ + if(!TextUtils.isEmpty(replyTo.spoilerText) && AccountSessionManager.getInstance().isSelf(accountID, replyTo.account)){ hasSpoiler=true; spoilerEdit.setVisibility(View.VISIBLE); spoilerEdit.setText(replyTo.spoilerText); spoilerBtn.setSelected(true); } } - }else if (editingStatus==null || editingStatus.inReplyToId==null){ - // TODO: remove workaround after https://github.com/mastodon/mastodon-android/issues/341 gets fixed + }else{ replyText.setVisibility(View.GONE); } if(savedInstanceState==null){ @@ -1208,6 +1216,11 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr option.view=LayoutInflater.from(getActivity()).inflate(R.layout.compose_poll_option, pollOptionsView, false); option.edit=option.view.findViewById(R.id.edit); option.dragger=option.view.findViewById(R.id.dragger_thingy); + ImageView icon = option.view.findViewById(R.id.icon); + icon.setImageDrawable(getContext().getDrawable(pollAllowMultipleItem.isSelected() ? + R.drawable.ic_poll_checkbox_regular_selector : + R.drawable.ic_poll_option_button + )); option.dragger.setOnLongClickListener(v->{ pollOptionsView.startDragging(option.view); @@ -1385,6 +1398,27 @@ public class ComposeFragment extends MastodonToolbarFragment implements OnBackPr }); } + private void togglePollAllowMultiple() { + updatePollAllowMultiple(!pollAllowMultipleItem.isSelected()); + } + + private void updatePollAllowMultiple(boolean multiple){ + pollAllowMultipleItem.setSelected(multiple); + pollAllowMultipleCheckbox.setChecked(multiple); + ImageView btn = addPollOptionBtn.findViewById(R.id.add_poll_option_icon); + btn.setImageDrawable(getContext().getDrawable(multiple ? + R.drawable.ic_fluent_add_square_24_regular : + R.drawable.ic_fluent_add_circle_24_regular + )); + for (DraftPollOption opt:pollOptions) { + ImageView icon = opt.view.findViewById(R.id.icon); + icon.setImageDrawable(getContext().getDrawable(multiple ? + R.drawable.ic_poll_checkbox_regular_selector : + R.drawable.ic_poll_option_button + )); + } + } + @Override public void onSelectionChanged(int start, int end){ if(ignoreSelectionChanges) diff --git a/mastodon/src/main/res/drawable/ic_fluent_add_square_24_regular.xml b/mastodon/src/main/res/drawable/ic_fluent_add_square_24_regular.xml new file mode 100644 index 000000000..0aa232d6c --- /dev/null +++ b/mastodon/src/main/res/drawable/ic_fluent_add_square_24_regular.xml @@ -0,0 +1,3 @@ + + + diff --git a/mastodon/src/main/res/layout/compose_poll_option.xml b/mastodon/src/main/res/layout/compose_poll_option.xml index d806da362..d93a68014 100644 --- a/mastodon/src/main/res/layout/compose_poll_option.xml +++ b/mastodon/src/main/res/layout/compose_poll_option.xml @@ -15,6 +15,7 @@ android:outlineProvider="background" android:elevation="2dp"> + + + + + + + Welcome Back Log in with the server where you created your account. Server URL - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + Allow multiple choices + \ No newline at end of file