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