diff --git a/app/src/main/java/org/fdroid/fdroid/views/LiveSeekBarPreference.java b/app/src/main/java/org/fdroid/fdroid/views/LiveSeekBarPreference.java index 80e7f5c3e..f1fda57f7 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/LiveSeekBarPreference.java +++ b/app/src/main/java/org/fdroid/fdroid/views/LiveSeekBarPreference.java @@ -5,10 +5,11 @@ import android.support.v7.preference.PreferenceViewHolder; import android.support.v7.preference.SeekBarPreference; import android.util.AttributeSet; import android.widget.SeekBar; +import android.widget.TextView; import org.fdroid.fdroid.R; public class LiveSeekBarPreference extends SeekBarPreference { - private Runnable progressChangedRunnable; + private SeekBarLiveUpdater seekBarLiveUpdater; private boolean trackingTouch; private int value = -1; @@ -33,7 +34,7 @@ public class LiveSeekBarPreference extends SeekBarPreference { } @Override - public void onBindViewHolder(PreferenceViewHolder holder) { + public void onBindViewHolder(final PreferenceViewHolder holder) { super.onBindViewHolder(holder); SeekBar seekbar = holder.itemView.findViewById(R.id.seekbar); @@ -41,8 +42,12 @@ public class LiveSeekBarPreference extends SeekBarPreference { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { value = progress; - if (progressChangedRunnable != null) { - progressChangedRunnable.run(); + if (seekBarLiveUpdater != null) { + String message = seekBarLiveUpdater.seekBarUpdated(value); + TextView summary = holder.itemView.findViewById(android.R.id.summary); + if (summary != null) { + summary.setText(message); + } } if (fromUser && !trackingTouch) { persistInt(value); @@ -77,7 +82,11 @@ public class LiveSeekBarPreference extends SeekBarPreference { return value; } - public void setProgressChangedRunnable(Runnable runnable) { - progressChangedRunnable = runnable; + public void setSeekBarLiveUpdater(SeekBarLiveUpdater updater) { + seekBarLiveUpdater = updater; + } + + public interface SeekBarLiveUpdater { + String seekBarUpdated(int position); } } diff --git a/app/src/main/java/org/fdroid/fdroid/views/fragments/PreferencesFragment.java b/app/src/main/java/org/fdroid/fdroid/views/fragments/PreferencesFragment.java index 180a850ff..574474f24 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/fragments/PreferencesFragment.java +++ b/app/src/main/java/org/fdroid/fdroid/views/fragments/PreferencesFragment.java @@ -116,26 +116,26 @@ public class PreferencesFragment extends PreferenceFragment overWifiSeekBar = (LiveSeekBarPreference) findPreference(Preferences.PREF_OVER_WIFI); overWifiPrevious = overWifiSeekBar.getValue(); - overWifiSeekBar.setProgressChangedRunnable(new Runnable() { + overWifiSeekBar.setSeekBarLiveUpdater(new LiveSeekBarPreference.SeekBarLiveUpdater() { @Override - public void run() { - updateSummary(overWifiSeekBar.getKey(), false); + public String seekBarUpdated(int position) { + return getNetworkSeekBarSummary(position); } }); overDataSeekBar = (LiveSeekBarPreference) findPreference(Preferences.PREF_OVER_DATA); overDataPrevious = overDataSeekBar.getValue(); - overDataSeekBar.setProgressChangedRunnable(new Runnable() { + overDataSeekBar.setSeekBarLiveUpdater(new LiveSeekBarPreference.SeekBarLiveUpdater() { @Override - public void run() { - updateSummary(overDataSeekBar.getKey(), false); + public String seekBarUpdated(int position) { + return getNetworkSeekBarSummary(position); } }); updateIntervalSeekBar = (LiveSeekBarPreference) findPreference(Preferences.PREF_UPDATE_INTERVAL); updateIntervalPrevious = updateIntervalSeekBar.getValue(); - updateIntervalSeekBar.setProgressChangedRunnable(new Runnable() { + updateIntervalSeekBar.setSeekBarLiveUpdater(new LiveSeekBarPreference.SeekBarLiveUpdater() { @Override - public void run() { - updateSummary(updateIntervalSeekBar.getKey(), false); + public String seekBarUpdated(int position) { + return getString(UPDATE_INTERVAL_NAMES[position]); } }); @@ -172,17 +172,21 @@ public class PreferencesFragment extends PreferenceFragment } } + private String getNetworkSeekBarSummary(int position) { + if (position == 0) { + return getString(R.string.over_network_never_summary); + } else if (position == 1) { + return getString(R.string.over_network_on_demand_summary); + } else if (position == 2) { + return getString(R.string.over_network_always_summary); + } else { + throw new IllegalArgumentException("Unknown seekbar position"); + } + } + private void setNetworkSeekBarSummary(SeekBarPreference seekBarPreference) { int position = seekBarPreference.getValue(); - if (position == 0) { - seekBarPreference.setSummary(R.string.over_network_never_summary); - } else if (position == 1) { - seekBarPreference.setSummary(R.string.over_network_on_demand_summary); - } else if (position == 2) { - seekBarPreference.setSummary(R.string.over_network_always_summary); - } else { - throw new IllegalArgumentException("No such " + seekBarPreference.getTitle() + " position: " + position); - } + seekBarPreference.setSummary(getNetworkSeekBarSummary(position)); } private void enableUpdateInverval() {