diff --git a/app/build.gradle b/app/build.gradle index ebd454a36..4e8cc3900 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -24,6 +24,7 @@ dependencies { compile "com.android.support:support-vector-drawable:27.1.1" compile 'com.android.support.constraint:constraint-layout:1.1.0' compile "com.android.support:palette-v7:27.1.1" + compile "com.android.support:preference-v7:27.1.1" compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5' compile 'com.google.zxing:core:3.3.2' @@ -65,10 +66,6 @@ if (!hasProperty('sourceDeps')) { compile 'com.madgag.spongycastle:prov:1.54.0.0' compile 'com.madgag.spongycastle:core:1.54.0.0' - // Upstream doesn't have a binary on mavenCentral/jcenter yet: - // https://github.com/kolavar/android-support-v4-preferencefragment/issues/13 - compile files('libs/binaryDeps/support-v4-preferencefragment-release.aar') - // Fork for F-Droid, including support for https. Not merged into upstream // yet (seems to be a little unsupported as of late), so not using mavenCentral/jcenter. compile files('libs/binaryDeps/nanohttpd-2.1.0.jar') @@ -138,9 +135,6 @@ if (!hasProperty('sourceDeps')) { logger.info "Setting up *source* dependencies for F-Droid (because you passed in the -PsourceDeps argument to gradle while building)." dependencies { - compile(project(':extern:support-v4-preferencefragment')) { - exclude module: 'support-v4' - } compile project(':extern:nanohttpd:core') compile project(':extern:zipsigner') } @@ -151,7 +145,6 @@ if (!hasProperty('sourceDeps')) { description = "Copies .jar and .aar files from subproject dependencies in extern/ to app/libs. Requires the sourceDeps property to be set (\"gradle -PsourceDeps binaryDeps\")" from('../extern/') { - include 'support-v4-preferencefragment/build/outputs/aar/support-v4-preferencefragment-release.aar' include 'nanohttpd/core/build/libs/nanohttpd-2.1.0.jar' include 'zipsigner/build/libs/zipsigner.jar' } diff --git a/app/libs/binaryDeps/support-v4-preferencefragment-release.aar b/app/libs/binaryDeps/support-v4-preferencefragment-release.aar deleted file mode 100644 index fa9199fe7..000000000 Binary files a/app/libs/binaryDeps/support-v4-preferencefragment-release.aar and /dev/null differ diff --git a/app/src/main/java/com/geecko/QuickLyric/view/AppCompatListPreference.java b/app/src/main/java/com/geecko/QuickLyric/view/AppCompatListPreference.java deleted file mode 100644 index 507f37755..000000000 --- a/app/src/main/java/com/geecko/QuickLyric/view/AppCompatListPreference.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * * - * * This file is part of QuickLyric - * * Created by geecko - * * - * * QuickLyric is free software: you can redistribute it and/or modify - * * it under the terms of the GNU General Public License as published by - * * the Free Software Foundation, either version 3 of the License, or - * * (at your option) any later version. - * * - * * QuickLyric is distributed in the hope that it will be useful, - * * but WITHOUT ANY WARRANTY; without even the implied warranty of - * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * * GNU General Public License for more details. - * * You should have received a copy of the GNU General Public License - * * along with QuickLyric. If not, see . - * - */ - -package com.geecko.QuickLyric.view; - -import android.content.Context; -import android.content.DialogInterface; -import android.os.Bundle; -import android.preference.ListPreference; -import android.preference.PreferenceManager; -import android.support.v7.app.AlertDialog; -import android.support.v7.app.AppCompatDialog; -import android.util.AttributeSet; - -import java.lang.reflect.Method; - -public class AppCompatListPreference extends ListPreference { - - private AppCompatDialog appCompatDialog; - - public AppCompatListPreference(Context context) { - super(context); - } - - public AppCompatListPreference(Context context, AttributeSet attrs) { - super(context, attrs); - } - - @Override - public AppCompatDialog getDialog() { - return appCompatDialog; - } - - @Override - protected void showDialog(Bundle state) { - if (getEntries() == null || getEntryValues() == null) { - throw new IllegalStateException( - "ListPreference requires an entries array and an entryValues array."); - } - - int preselect = findIndexOfValue(getValue()); - AlertDialog.Builder builder = new AlertDialog.Builder(getContext()) - .setTitle(getDialogTitle()) - .setIcon(getDialogIcon()) - .setSingleChoiceItems(getEntries(), preselect, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - if (which >= 0 && getEntryValues() != null) { - String value = getEntryValues()[which].toString(); - if (callChangeListener(value) && isPersistent()) { - setValue(value); - } - } - dialog.dismiss(); - } - }); - - PreferenceManager pm = getPreferenceManager(); - try { - Method method = pm.getClass().getDeclaredMethod( - "registerOnActivityDestroyListener", - PreferenceManager.OnActivityDestroyListener.class); - method.setAccessible(true); - method.invoke(pm, this); - } catch (Exception e) { - e.printStackTrace(); - } - - appCompatDialog = builder.create(); - if (state != null) { - appCompatDialog.onRestoreInstanceState(state); - } - appCompatDialog.show(); - } - - @Override - public void onActivityDestroy() { - super.onActivityDestroy(); - if (appCompatDialog != null && appCompatDialog.isShowing() && - appCompatDialog.getWindow() != null && appCompatDialog.getWindow().getWindowManager() != null) { - appCompatDialog.dismiss(); - } - } -} \ No newline at end of file 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 c52250bec..f597f4b7e 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 @@ -5,16 +5,15 @@ import android.content.Intent; import android.content.SharedPreferences; import android.os.Build; import android.os.Bundle; -import android.preference.CheckBoxPreference; -import android.preference.EditTextPreference; -import android.preference.ListPreference; -import android.preference.Preference; -import android.preference.PreferenceCategory; -import android.support.v4.preference.PreferenceFragment; +import android.support.v14.preference.PreferenceFragment; +import android.support.v7.preference.CheckBoxPreference; +import android.support.v7.preference.EditTextPreference; +import android.support.v7.preference.ListPreference; +import android.support.v7.preference.Preference; +import android.support.v7.preference.PreferenceCategory; import android.text.TextUtils; import android.view.WindowManager; -import com.geecko.QuickLyric.view.AppCompatListPreference; import info.guardianproject.netcipher.NetCipher; import info.guardianproject.netcipher.proxy.OrbotHelper; import org.fdroid.fdroid.AppDetails2; @@ -59,15 +58,14 @@ public class PreferencesFragment extends PreferenceFragment private FDroidApp fdroidApp; @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); + public void onCreatePreferences(Bundle bundle, String s) { addPreferencesFromResource(R.xml.preferences); useTorCheckPref = (CheckBoxPreference) findPreference(Preferences.PREF_USE_TOR); enableProxyCheckPref = (CheckBoxPreference) findPreference(Preferences.PREF_ENABLE_PROXY); updateAutoDownloadPref = findPreference(Preferences.PREF_AUTO_DOWNLOAD_INSTALL_UPDATES); updatePrivilegedExtensionPref = findPreference(Preferences.PREF_UNINSTALL_PRIVILEGED_APP); - AppCompatListPreference languagePref = (AppCompatListPreference) findPreference(Preferences.PREF_LANGUAGE); + ListPreference languagePref = (ListPreference) findPreference(Preferences.PREF_LANGUAGE); if (Build.VERSION.SDK_INT >= 24) { PreferenceCategory category = (PreferenceCategory) findPreference("pref_category_display"); category.removePreference(languagePref); @@ -162,8 +160,8 @@ public class PreferencesFragment extends PreferenceFragment Activity activity = getActivity(); Languages.setLanguage(activity); - RepoProvider.Helper.clearEtags(getContext()); - UpdateService.updateNow(getContext()); + RepoProvider.Helper.clearEtags(getActivity()); + UpdateService.updateNow(getActivity()); Languages.forceChangeLanguage(activity); } @@ -173,7 +171,7 @@ public class PreferencesFragment extends PreferenceFragment entrySummary(key); if (changing && currentKeepCacheTime != Preferences.get().getKeepCacheTime()) { - CleanCacheService.schedule(getContext()); + CleanCacheService.schedule(getActivity()); } break; @@ -219,9 +217,9 @@ public class PreferencesFragment extends PreferenceFragment case Preferences.PREF_KEEP_INSTALL_HISTORY: CheckBoxPreference p = (CheckBoxPreference) findPreference(key); if (p.isChecked()) { - InstallHistoryService.register(getContext()); + InstallHistoryService.register(getActivity()); } else { - InstallHistoryService.unregister(getContext()); + InstallHistoryService.unregister(getActivity()); } break; } @@ -310,13 +308,13 @@ public class PreferencesFragment extends PreferenceFragment @Override public boolean onPreferenceChange(Preference preference, Object newValue) { if (newValue instanceof Boolean && (boolean) newValue) { - UpdateService.autoDownloadUpdates(getContext()); + UpdateService.autoDownloadUpdates(getActivity()); } return true; } }); - if (PrivilegedInstaller.isDefault(getContext())) { + if (PrivilegedInstaller.isDefault(getActivity())) { updateAutoDownloadPref.setTitle(R.string.update_auto_install); updateAutoDownloadPref.setSummary(R.string.update_auto_install_summary); } diff --git a/app/src/main/java/org/fdroid/fdroid/views/main/SettingsView.java b/app/src/main/java/org/fdroid/fdroid/views/main/SettingsView.java index d12121575..22458c79a 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/main/SettingsView.java +++ b/app/src/main/java/org/fdroid/fdroid/views/main/SettingsView.java @@ -1,9 +1,9 @@ package org.fdroid.fdroid.views.main; import android.annotation.TargetApi; +import android.app.Fragment; +import android.app.FragmentTransaction; import android.content.Context; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentTransaction; import android.support.v7.app.AppCompatActivity; import android.util.AttributeSet; import android.widget.FrameLayout; @@ -55,7 +55,7 @@ public class SettingsView extends FrameLayout { } if (currentTransaction == null) { - currentTransaction = activity.getSupportFragmentManager().beginTransaction(); + currentTransaction = activity.getFragmentManager().beginTransaction(); } currentTransaction.replace(getId(), new PreferencesFragment(), "preferences-fragment"); @@ -73,18 +73,18 @@ public class SettingsView extends FrameLayout { throw new IllegalArgumentException("Cannot add a SettingsView to activities which are not an AppCompatActivity"); } - Fragment existingFragment = activity.getSupportFragmentManager().findFragmentByTag("preferences-fragment"); + Fragment existingFragment = activity.getFragmentManager().findFragmentByTag("preferences-fragment"); if (existingFragment == null) { return; } if (currentTransaction == null) { - currentTransaction = activity.getSupportFragmentManager().beginTransaction(); + currentTransaction = activity.getFragmentManager().beginTransaction(); } currentTransaction.remove(existingFragment); currentTransaction.commitAllowingStateLoss(); currentTransaction = null; - activity.getSupportFragmentManager().executePendingTransactions(); + activity.getFragmentManager().executePendingTransactions(); } } diff --git a/app/src/main/java/org/fdroid/fdroid/views/panic/PanicPreferencesFragment.java b/app/src/main/java/org/fdroid/fdroid/views/panic/PanicPreferencesFragment.java index f846debc4..937c1b330 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/panic/PanicPreferencesFragment.java +++ b/app/src/main/java/org/fdroid/fdroid/views/panic/PanicPreferencesFragment.java @@ -12,14 +12,14 @@ import android.graphics.PorterDuff; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Bundle; -import android.preference.CheckBoxPreference; -import android.preference.ListPreference; -import android.preference.Preference; import android.support.annotation.ColorInt; import android.support.annotation.Nullable; +import android.support.v14.preference.PreferenceFragment; import android.support.v4.content.ContextCompat; -import android.support.v4.preference.PreferenceFragment; import android.support.v7.app.AlertDialog; +import android.support.v7.preference.CheckBoxPreference; +import android.support.v7.preference.ListPreference; +import android.support.v7.preference.Preference; import android.text.TextUtils; import android.util.TypedValue; import info.guardianproject.panic.Panic; @@ -30,8 +30,8 @@ import org.fdroid.fdroid.views.hiding.HidingManager; import java.util.ArrayList; -public class PanicPreferencesFragment extends PreferenceFragment implements SharedPreferences - .OnSharedPreferenceChangeListener { +public class PanicPreferencesFragment extends PreferenceFragment + implements SharedPreferences.OnSharedPreferenceChangeListener { private static final String PREF_EXIT = Preferences.PREF_PANIC_EXIT; private static final String PREF_APP = "pref_panic_app"; @@ -43,8 +43,7 @@ public class PanicPreferencesFragment extends PreferenceFragment implements Shar private CheckBoxPreference prefHide; @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); + public void onCreatePreferences(Bundle bundle, String s) { addPreferencesFromResource(R.xml.preferences_panic); pm = getActivity().getPackageManager(); @@ -147,9 +146,9 @@ public class PanicPreferencesFragment extends PreferenceFragment implements Shar prefApp.setSummary(getString(R.string.panic_app_setting_summary)); prefApp.setIcon(null); // otherwise re-setting view resource doesn't work - Drawable icon = ContextCompat.getDrawable(getContext(), R.drawable.ic_cancel); + Drawable icon = ContextCompat.getDrawable(getActivity(), R.drawable.ic_cancel); TypedValue typedValue = new TypedValue(); - Resources.Theme theme = getContext().getTheme(); + Resources.Theme theme = getActivity().getTheme(); theme.resolveAttribute(R.attr.appListItem, typedValue, true); @ColorInt int color = typedValue.data; icon.setColorFilter(color, PorterDuff.Mode.SRC_IN); @@ -189,7 +188,7 @@ public class PanicPreferencesFragment extends PreferenceFragment implements Shar } }; - AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setTitle(getString(R.string.panic_app_dialog_title)); CharSequence app = getString(R.string.panic_app_unknown_app); @@ -221,10 +220,10 @@ public class PanicPreferencesFragment extends PreferenceFragment implements Shar private void showHideConfirmationDialog() { String appName = getString(R.string.app_name); - AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setTitle(R.string.panic_hide_warning_title); builder.setMessage(getString(R.string.panic_hide_warning_message, appName, - HidingManager.getUnhidePin(getContext()), getString(R.string.hiding_calculator))); + HidingManager.getUnhidePin(getActivity()), getString(R.string.hiding_calculator))); builder.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 49c63556d..04ed6ef7b 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -23,6 +23,7 @@ #ffffff #a6a6a6 @drawable/ic_warning_white_24dp + @style/PreferenceThemeOverlay