diff --git a/mastodon/src/main/java/org/joinmastodon/android/GlobalUserPreferences.java b/mastodon/src/main/java/org/joinmastodon/android/GlobalUserPreferences.java index 5ffa48d54..839fc3a1c 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/GlobalUserPreferences.java +++ b/mastodon/src/main/java/org/joinmastodon/android/GlobalUserPreferences.java @@ -8,6 +8,7 @@ public class GlobalUserPreferences{ public static boolean useCustomTabs; public static boolean trueBlackTheme; public static ThemePreference theme; + public static boolean voteButtonForSingleChoice; private static SharedPreferences getPrefs(){ return MastodonApp.context.getSharedPreferences("global", Context.MODE_PRIVATE); @@ -18,6 +19,7 @@ public class GlobalUserPreferences{ playGifs=prefs.getBoolean("playGifs", true); useCustomTabs=prefs.getBoolean("useCustomTabs", true); trueBlackTheme=prefs.getBoolean("trueBlackTheme", false); + voteButtonForSingleChoice=prefs.getBoolean("voteButtonForSingleChoice", true); theme=ThemePreference.values()[prefs.getInt("theme", 0)]; } diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/BaseStatusListFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/BaseStatusListFragment.java index 32faa1c90..88cf5ee38 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/BaseStatusListFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/BaseStatusListFragment.java @@ -19,6 +19,7 @@ import android.view.WindowInsets; import android.widget.Toolbar; import org.joinmastodon.android.E; +import org.joinmastodon.android.GlobalUserPreferences; import org.joinmastodon.android.R; import org.joinmastodon.android.api.requests.accounts.GetAccountRelationships; import org.joinmastodon.android.api.requests.polls.SubmitPollVote; @@ -395,10 +396,12 @@ public abstract class BaseStatusListFragment exten public void onPollOptionClick(PollOptionStatusDisplayItem.Holder holder){ Poll poll=holder.getItem().poll; Poll.Option option=holder.getItem().option; - if(poll.multiple){ + if(poll.multiple || GlobalUserPreferences.voteButtonForSingleChoice){ if(poll.selectedOptions==null) poll.selectedOptions=new ArrayList<>(); - if(poll.selectedOptions.contains(option)){ + boolean optionContained=poll.selectedOptions.contains(option); + if(!poll.multiple) poll.selectedOptions.clear(); + if(optionContained){ poll.selectedOptions.remove(option); holder.itemView.setSelected(false); }else{ @@ -407,6 +410,9 @@ public abstract class BaseStatusListFragment exten } for(int i=0;i