Merge branch 'seekbar-updates' into 'master'
Tiny updates to seekbar See merge request fdroid/fdroidclient!690
This commit is contained in:
commit
361281aa3b
@ -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,10 +42,13 @@ 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);
|
||||
}
|
||||
}
|
||||
value = progress;
|
||||
if (fromUser && !trackingTouch) {
|
||||
persistInt(value);
|
||||
}
|
||||
@ -64,6 +68,13 @@ public class LiveSeekBarPreference extends SeekBarPreference {
|
||||
seekbar.setProgress(value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setValue(int value) {
|
||||
super.setValue(value);
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getValue() {
|
||||
if (value == -1) {
|
||||
value = super.getValue();
|
||||
@ -71,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);
|
||||
}
|
||||
}
|
||||
|
@ -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() {
|
||||
|
Loading…
x
Reference in New Issue
Block a user