Skip to content

Commit e14dfda

Browse files
committed
show poll vote button for single choice polls
1 parent c9aae82 commit e14dfda

File tree

3 files changed

+12
-3
lines changed

3 files changed

+12
-3
lines changed

mastodon/src/main/java/org/joinmastodon/android/GlobalUserPreferences.java

+2
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ public class GlobalUserPreferences{
88
public static boolean useCustomTabs;
99
public static boolean trueBlackTheme;
1010
public static ThemePreference theme;
11+
public static boolean voteButtonForSingleChoice;
1112

1213
private static SharedPreferences getPrefs(){
1314
return MastodonApp.context.getSharedPreferences("global", Context.MODE_PRIVATE);
@@ -18,6 +19,7 @@ public static void load(){
1819
playGifs=prefs.getBoolean("playGifs", true);
1920
useCustomTabs=prefs.getBoolean("useCustomTabs", true);
2021
trueBlackTheme=prefs.getBoolean("trueBlackTheme", false);
22+
voteButtonForSingleChoice=prefs.getBoolean("voteButtonForSingleChoice", true);
2123
theme=ThemePreference.values()[prefs.getInt("theme", 0)];
2224
}
2325

mastodon/src/main/java/org/joinmastodon/android/fragments/BaseStatusListFragment.java

+8-2
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import android.widget.Toolbar;
2020

2121
import org.joinmastodon.android.E;
22+
import org.joinmastodon.android.GlobalUserPreferences;
2223
import org.joinmastodon.android.R;
2324
import org.joinmastodon.android.api.requests.accounts.GetAccountRelationships;
2425
import org.joinmastodon.android.api.requests.polls.SubmitPollVote;
@@ -395,10 +396,12 @@ protected void updatePoll(String itemID, Status status, Poll poll){
395396
public void onPollOptionClick(PollOptionStatusDisplayItem.Holder holder){
396397
Poll poll=holder.getItem().poll;
397398
Poll.Option option=holder.getItem().option;
398-
if(poll.multiple){
399+
if(poll.multiple || GlobalUserPreferences.voteButtonForSingleChoice){
399400
if(poll.selectedOptions==null)
400401
poll.selectedOptions=new ArrayList<>();
401-
if(poll.selectedOptions.contains(option)){
402+
boolean optionContained=poll.selectedOptions.contains(option);
403+
if(!poll.multiple) poll.selectedOptions.clear();
404+
if(optionContained){
402405
poll.selectedOptions.remove(option);
403406
holder.itemView.setSelected(false);
404407
}else{
@@ -407,6 +410,9 @@ public void onPollOptionClick(PollOptionStatusDisplayItem.Holder holder){
407410
}
408411
for(int i=0;i<list.getChildCount();i++){
409412
RecyclerView.ViewHolder vh=list.getChildViewHolder(list.getChildAt(i));
413+
if(!poll.multiple && vh instanceof PollOptionStatusDisplayItem.Holder item){
414+
if (item != holder) item.itemView.setSelected(false);
415+
}
410416
if(vh instanceof PollFooterStatusDisplayItem.Holder footer){
411417
if(footer.getItemID().equals(holder.getItemID())){
412418
footer.rebind();

mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/PollFooterStatusDisplayItem.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import android.widget.Button;
77
import android.widget.TextView;
88

9+
import org.joinmastodon.android.GlobalUserPreferences;
910
import org.joinmastodon.android.R;
1011
import org.joinmastodon.android.fragments.BaseStatusListFragment;
1112
import org.joinmastodon.android.model.Poll;
@@ -44,7 +45,7 @@ public void onBind(PollFooterStatusDisplayItem item){
4445
text+=" · "+item.parentFragment.getString(R.string.poll_closed);
4546
}
4647
this.text.setText(text);
47-
button.setVisibility(item.poll.isExpired() || item.poll.voted || !item.poll.multiple ? View.GONE : View.VISIBLE);
48+
button.setVisibility(item.poll.isExpired() || item.poll.voted || (!item.poll.multiple && !GlobalUserPreferences.voteButtonForSingleChoice) ? View.GONE : View.VISIBLE);
4849
button.setEnabled(item.poll.selectedOptions!=null && !item.poll.selectedOptions.isEmpty());
4950
}
5051
}

0 commit comments

Comments
 (0)