From 54eaa273b6fefc4e1ce9dce1242960e744cc68ab Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Fri, 8 Jun 2018 19:23:29 +0200 Subject: [PATCH 1/3] Changed seekbar style --- app/src/main/res/drawable/seekbar_bg.9.png | Bin 0 -> 207 bytes app/src/main/res/drawable/seekbar_fill.9.png | Bin 0 -> 206 bytes app/src/main/res/drawable/seekbar_progress.xml | 12 ++++++++++++ app/src/main/res/drawable/seekbar_thumb.xml | 11 +++++++++++ app/src/main/res/layout/preference_seekbar.xml | 3 ++- 5 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 app/src/main/res/drawable/seekbar_bg.9.png create mode 100644 app/src/main/res/drawable/seekbar_fill.9.png create mode 100644 app/src/main/res/drawable/seekbar_progress.xml create mode 100644 app/src/main/res/drawable/seekbar_thumb.xml diff --git a/app/src/main/res/drawable/seekbar_bg.9.png b/app/src/main/res/drawable/seekbar_bg.9.png new file mode 100644 index 0000000000000000000000000000000000000000..49f844016c0b1121eaf4a6740d0e60e7c9884767 GIT binary patch literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)P!3HG%MVKuHQfx`y?k+$Y2!1;6t_M<_1s;*b z3=De8Ak0{?)V>TT$X?><>&pI!jYCjCWn1T`g+L+664!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiAh|PZ!4!iOb0e4y^wrIXDFb+C4TMi0JL@EtvZC>(?G0An17^ r_E)P!3HG%MVKuHQfx`y?k+$Y2!1;6t_M<_1s;*b z3=De8Ak0{?)V>TT$X?><>&pI!jYCjS^~TiCAR);T*N775{M_8syb=cIqSVBa)D(sC z%#sWRcTeAd@J2pypdvF*7sn8Z%gG52tp6oBI0XdSJvJSPh?N%5I?W^@At@oDz_N*D q5)+$R%G4KDA8(y>IT30xm!IKj2H%A3M|nZ6W$<+Mb6Mw<&;$Uj$u+tF literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/seekbar_progress.xml b/app/src/main/res/drawable/seekbar_progress.xml new file mode 100644 index 000000000..72c15e8c5 --- /dev/null +++ b/app/src/main/res/drawable/seekbar_progress.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/seekbar_thumb.xml b/app/src/main/res/drawable/seekbar_thumb.xml new file mode 100644 index 000000000..23a860ce6 --- /dev/null +++ b/app/src/main/res/drawable/seekbar_thumb.xml @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/preference_seekbar.xml b/app/src/main/res/layout/preference_seekbar.xml index 87b4c0ccc..fccdff8d5 100644 --- a/app/src/main/res/layout/preference_seekbar.xml +++ b/app/src/main/res/layout/preference_seekbar.xml @@ -46,7 +46,8 @@ android:layout_below="@android:id/summary" android:layout_alignStart="@android:id/summary" android:layout_alignLeft="@android:id/summary" - android:thumb="@android:drawable/radiobutton_off_background" + android:progressDrawable="@drawable/seekbar_progress" + android:thumb="@drawable/seekbar_thumb" android:padding="16dip" android:theme="@style/Widget.AppCompat.SeekBar.Discrete"/> From da856786bae50ae925492420b003f59eeb27b349 Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Fri, 8 Jun 2018 20:00:45 +0200 Subject: [PATCH 2/3] Live updates --- .../fdroid/views/LiveSeekBarPreference.java | 77 +++++++++++++++++++ .../views/fragments/PreferencesFragment.java | 31 ++++++-- app/src/main/res/xml/preferences.xml | 6 +- 3 files changed, 105 insertions(+), 9 deletions(-) create mode 100644 app/src/main/java/org/fdroid/fdroid/views/LiveSeekBarPreference.java diff --git a/app/src/main/java/org/fdroid/fdroid/views/LiveSeekBarPreference.java b/app/src/main/java/org/fdroid/fdroid/views/LiveSeekBarPreference.java new file mode 100644 index 000000000..3aa98d3bc --- /dev/null +++ b/app/src/main/java/org/fdroid/fdroid/views/LiveSeekBarPreference.java @@ -0,0 +1,77 @@ +package org.fdroid.fdroid.views; + +import android.content.Context; +import android.support.v7.preference.PreferenceViewHolder; +import android.support.v7.preference.SeekBarPreference; +import android.util.AttributeSet; +import android.widget.SeekBar; +import org.fdroid.fdroid.R; + +public class LiveSeekBarPreference extends SeekBarPreference { + private Runnable progressChangedListener; + private boolean trackingTouch; + private int value = -1; + + @SuppressWarnings("unused") + public LiveSeekBarPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { + super(context, attrs, defStyleAttr, defStyleRes); + } + + @SuppressWarnings("unused") + public LiveSeekBarPreference(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + @SuppressWarnings("unused") + public LiveSeekBarPreference(Context context, AttributeSet attrs) { + super(context, attrs); + } + + @SuppressWarnings("unused") + public LiveSeekBarPreference(Context context) { + super(context); + } + + @Override + public void onBindViewHolder(PreferenceViewHolder holder) { + super.onBindViewHolder(holder); + + SeekBar seekbar = holder.itemView.findViewById(R.id.seekbar); + seekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { + @Override + public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { + value = progress; + if (progressChangedListener != null) { + progressChangedListener.run(); + } + value = progress; + if (fromUser && !trackingTouch) { + persistInt(value); + } + } + + @Override + public void onStartTrackingTouch(SeekBar seekBar) { + trackingTouch = true; + } + + @Override + public void onStopTrackingTouch(SeekBar seekBar) { + trackingTouch = false; + persistInt(value); + } + }); + seekbar.setProgress(value); + } + + public int getValue() { + if (value == -1) { + value = super.getValue(); + } + return value; + } + + public void setProgressChangedListener(Runnable listener) { + progressChangedListener = listener; + } +} 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 ab2dc6936..8b54dea24 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 @@ -53,6 +53,7 @@ import org.fdroid.fdroid.Utils; import org.fdroid.fdroid.data.RepoProvider; import org.fdroid.fdroid.installer.InstallHistoryService; import org.fdroid.fdroid.installer.PrivilegedInstaller; +import org.fdroid.fdroid.views.LiveSeekBarPreference; public class PreferencesFragment extends PreferenceFragment implements SharedPreferences.OnSharedPreferenceChangeListener { @@ -90,9 +91,9 @@ public class PreferencesFragment extends PreferenceFragment private static final int REQUEST_INSTALL_ORBOT = 0x1234; - private SeekBarPreference overWifiSeekBar; - private SeekBarPreference overDataSeekBar; - private SeekBarPreference updateIntervalSeekBar; + private LiveSeekBarPreference overWifiSeekBar; + private LiveSeekBarPreference overDataSeekBar; + private LiveSeekBarPreference updateIntervalSeekBar; private SwitchPreference enableProxyCheckPref; private SwitchPreference useTorCheckPref; private Preference updateAutoDownloadPref; @@ -113,12 +114,30 @@ public class PreferencesFragment extends PreferenceFragment updateAutoDownloadPref = findPreference(Preferences.PREF_AUTO_DOWNLOAD_INSTALL_UPDATES); updatePrivilegedExtensionPref = findPreference(Preferences.PREF_UNINSTALL_PRIVILEGED_APP); - overWifiSeekBar = (SeekBarPreference) findPreference(Preferences.PREF_OVER_WIFI); + overWifiSeekBar = (LiveSeekBarPreference) findPreference(Preferences.PREF_OVER_WIFI); overWifiPrevious = overWifiSeekBar.getValue(); - overDataSeekBar = (SeekBarPreference) findPreference(Preferences.PREF_OVER_DATA); + overWifiSeekBar.setProgressChangedListener(new Runnable() { + @Override + public void run() { + updateSummary(overWifiSeekBar.getKey(), false); + } + }); + overDataSeekBar = (LiveSeekBarPreference) findPreference(Preferences.PREF_OVER_DATA); overDataPrevious = overDataSeekBar.getValue(); - updateIntervalSeekBar = (SeekBarPreference) findPreference(Preferences.PREF_UPDATE_INTERVAL); + overDataSeekBar.setProgressChangedListener(new Runnable() { + @Override + public void run() { + updateSummary(overDataSeekBar.getKey(), false); + } + }); + updateIntervalSeekBar = (LiveSeekBarPreference) findPreference(Preferences.PREF_UPDATE_INTERVAL); updateIntervalPrevious = updateIntervalSeekBar.getValue(); + updateIntervalSeekBar.setProgressChangedListener(new Runnable() { + @Override + public void run() { + updateSummary(updateIntervalSeekBar.getKey(), false); + } + }); ListPreference languagePref = (ListPreference) findPreference(Preferences.PREF_LANGUAGE); if (Build.VERSION.SDK_INT >= 24) { diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index efe9b853b..75d6dd58e 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -27,11 +27,11 @@ - - @@ -40,7 +40,7 @@ android:summary="@string/update_auto_download_summary" android:defaultValue="false" android:key="updateAutoDownload"/> - From 67e90bd1e72aabea7fb923bfe6da6b87f12b6fa6 Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Fri, 8 Jun 2018 20:05:24 +0200 Subject: [PATCH 3/3] Updated tickmark --- app/src/main/res/drawable/seekbar_tickmark.xml | 11 +++++++++++ app/src/main/res/layout/preference_seekbar.xml | 2 +- app/src/main/res/values/styles.xml | 4 ++++ 3 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 app/src/main/res/drawable/seekbar_tickmark.xml diff --git a/app/src/main/res/drawable/seekbar_tickmark.xml b/app/src/main/res/drawable/seekbar_tickmark.xml new file mode 100644 index 000000000..7c11d874e --- /dev/null +++ b/app/src/main/res/drawable/seekbar_tickmark.xml @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/preference_seekbar.xml b/app/src/main/res/layout/preference_seekbar.xml index fccdff8d5..06356ad03 100644 --- a/app/src/main/res/layout/preference_seekbar.xml +++ b/app/src/main/res/layout/preference_seekbar.xml @@ -49,6 +49,6 @@ android:progressDrawable="@drawable/seekbar_progress" android:thumb="@drawable/seekbar_thumb" android:padding="16dip" - android:theme="@style/Widget.AppCompat.SeekBar.Discrete"/> + android:theme="@style/DiscreteSeekBar"/> diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index d34733560..5f5980f83 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -317,4 +317,8 @@