From 5ec9789e734050c577dbb8b91305aaa6552f7671 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 19 Apr 2018 11:28:27 +0200 Subject: [PATCH 01/19] switch minSdkVersion to 14 (Android 4.0) #1379 --- app/src/main/AndroidManifest.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 7d2503634..9947074d8 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -4,7 +4,7 @@ android:installLocation="auto"> From 3a2c10f077db17452f3583c6f9b6a9c3817f94e9 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 19 Apr 2018 12:15:37 +0200 Subject: [PATCH 02/19] update to latest Gradle Android Plugin (3.1.1) and gradle (4.4.1) #1379 --- app/build.gradle | 21 +++------------------ build.gradle | 19 ++++++++++++++++--- gradle/wrapper/gradle-wrapper.properties | 4 ++-- 3 files changed, 21 insertions(+), 23 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index db7694526..1ea563512 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -13,13 +13,6 @@ def getVersionName = { -> return stdout.toString().trim() } -repositories { - jcenter() - maven { - url "https://jitpack.io" - } -} - dependencies { compile "com.android.support:support-v4:25.3.1" compile "com.android.support:appcompat-v7:25.3.1" @@ -67,14 +60,6 @@ dependencies { if (!hasProperty('sourceDeps')) { - repositories { - // This is here until we sort out all dependencies from mavenCentral/jcenter. Once all of - // the dependencies below have been sorted out, this can be removed. - flatDir { - dirs 'libs/binaryDeps' - } - } - dependencies { compile 'com.madgag.spongycastle:pkix:1.54.0.0' compile 'com.madgag.spongycastle:prov:1.54.0.0' @@ -82,16 +67,16 @@ if (!hasProperty('sourceDeps')) { // Upstream doesn't have a binary on mavenCentral/jcenter yet: // https://github.com/kolavar/android-support-v4-preferencefragment/issues/13 - compile(name: 'support-v4-preferencefragment-release', ext: 'aar') + 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(name: 'nanohttpd-2.1.0') + compile files('libs/binaryDeps/nanohttpd-2.1.0.jar') // Upstream doesn't have a binary on mavenCentral, and it is an SVN repo on // Google Code. We include this code directly in this repo, and have made // modifications that should be pushed to anyone who wants to maintain it. - compile(name: 'zipsigner') + compile files('libs/binaryDeps/zipsigner.jar') } // Only do the libraries imported from maven repositories. Our own libraries diff --git a/build.gradle b/build.gradle index 0c5d82fb1..506301943 100644 --- a/build.gradle +++ b/build.gradle @@ -1,10 +1,23 @@ buildscript { repositories { - jcenter() + maven { + url "https://repo1.maven.org/maven2" + jcenter() + } + maven { + url 'https://maven.google.com/' + name 'Google' + } } dependencies { - // 2.2.2 is the version that is included in Debian/stretch - classpath 'com.android.tools.build:gradle:2.2.2' + classpath 'com.android.tools.build:gradle:3.1.1' classpath files('libs/gradle-witness.jar') } } +allprojects { + repositories { + jcenter() + maven { url 'https://jitpack.io' } // for com.github.pserwylo:BottomNavigation:1.5.0. + maven { url 'https://maven.google.com' } + } +} diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 73aaa14be..077945983 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -2,5 +2,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-3.2.1-bin.zip -distributionSha256Sum=9843a3654d3e57dce54db06d05f18b664b95c22bf90c6becccb61fc63ce60689 +distributionUrl=https\://services.gradle.org/distributions/gradle-4.4.1-bin.zip +distributionSha256Sum=e7cf7d1853dfc30c1c44f571d3919eeeedef002823b66b6a988d27e919686389 From 6fbdd1210ee4bf861c4eafeb92cb66e87849fca1 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 19 Apr 2018 12:24:28 +0200 Subject: [PATCH 03/19] update to the latest version of the Android support libraries This requires bumping compile and built-tools verisons. --- app/build.gradle | 66 ++++++++++--------- app/lint.xml | 4 ++ .../fdroid/fdroid/NfcNotEnabledActivity.java | 4 +- .../fdroid/views/RepoDetailsActivity.java | 4 +- 4 files changed, 44 insertions(+), 34 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 1ea563512..ebd454a36 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -14,16 +14,16 @@ def getVersionName = { -> } dependencies { - compile "com.android.support:support-v4:25.3.1" - compile "com.android.support:appcompat-v7:25.3.1" - compile "com.android.support:gridlayout-v7:25.3.1" - compile "com.android.support:support-annotations:25.3.1" - compile "com.android.support:recyclerview-v7:25.3.1" - compile "com.android.support:cardview-v7:25.3.1" - compile "com.android.support:design:25.3.1" - compile "com.android.support:support-vector-drawable:25.3.1" - compile 'com.android.support.constraint:constraint-layout:1.0.2' - compile "com.android.support:palette-v7:25.3.1" + compile "com.android.support:support-v4:27.1.1" + compile "com.android.support:appcompat-v7:27.1.1" + compile "com.android.support:gridlayout-v7:27.1.1" + compile "com.android.support:support-annotations:27.1.1" + compile "com.android.support:recyclerview-v7:27.1.1" + compile "com.android.support:cardview-v7:27.1.1" + compile "com.android.support:design:27.1.1" + 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.nostra13.universalimageloader:universal-image-loader:1.9.5' compile 'com.google.zxing:core:3.3.2' @@ -85,28 +85,34 @@ if (!hasProperty('sourceDeps')) { // generate using: `gradle -q calculateChecksums | sort -V` dependencyVerification { verify = [ + 'android.arch.core:common:d34824b794bc92ff8f647a9bb13a7c73de920de5b47075b5d2c4f0770e9b8bfd', + 'android.arch.core:runtime:83400f7575bcfb8a2eeec64e05590f037bfaed1e56aa3a4214d20e55878445e3', + 'android.arch.lifecycle:common:614e31cfd33255dc4d5f5d8e62cfa6be2fbbc2a35643a79dc3ed008004c30807', + 'android.arch.lifecycle:livedata-core:14e57ff8ffb65a80c7e72d91f2076acccdaf2970f234c6261e03a6127eb5206b', + 'android.arch.lifecycle:runtime:094fd793924dd6a5136753e599ac8174a8147f4a401386b694ba7d818c223e2e', + 'android.arch.lifecycle:viewmodel:6407c93a5ea9850661dca42a0068d6f3deccefd7228ee69bae1c35d70cbc2557', 'cc.mvdan.accesspoint:library:0837b38adb48b66bb1385adb6ade8ecce7002ad815c55abf13517c82193458ea', 'ch.acra:acra:d2762968c448757a7d6acc9f141881d9632f664988e9723ece33b5f7c79f3bc9', 'commons-io:commons-io:a10418348d234968600ccb1d988efcbbd08716e1d96936ccc1880e7d22513474', 'commons-net:commons-net:c25b0da668b3c5649f002d504def22d1b4cb30d206f05428d2fe168fa1a901c2', - 'com.android.support.constraint:constraint-layout-solver:8c62525a9bc5cff5633a96cb9b32fffeccaf41b8841aa87fc22607070dea9b8d', - 'com.android.support.constraint:constraint-layout:b0c688cc2b7172608f8153a689d746da40f71e52d7e2fe2bfd9df2f92db77085', - 'com.android.support:animated-vector-drawable:4bc46edf1946b32d518b41416d1734e915e0cbb28021de3b340527419b070691', - 'com.android.support:appcompat-v7:ac1ebbc46589195dda3e0b1becfe410bafd75bdf3edd1cd9acf04850f3895830', - 'com.android.support:cardview-v7:defc17032ffa600a82e1c7d96bb574aa5ed64e2b57e28414a245da7d6db0c666', - 'com.android.support:design:a3e83064fe99d0a4369f9b46d8bfbe77d0c3022fffdee4be3ac3857b87cc89e3', - 'com.android.support:gridlayout-v7:de87a59472f19eb05429faf6b2683a09dd6995f5db562d3daf6033297c312388', - 'com.android.support:palette-v7:956276da2ed8b6c087c431da807a496f4908061c9c64d4c9f7b42c626d633662', - 'com.android.support:recyclerview-v7:375974a8724e359d97d77fa8522c614f813a3ac4583c1807f154a3f9a054b0a1', - 'com.android.support:support-annotations:aedf76962584adfaed2bd3fcaa22406461c4310237fc27e301128edaa2dba2fa', - 'com.android.support:support-compat:e02d781268dc60aab6638d8dc20156ea11ca20b962d294b85e6f1e8418cabfa7', - 'com.android.support:support-core-ui:6182278a6653e6c111c888963626cbb16f2d0022571cb239760475119e0b92a8', - 'com.android.support:support-core-utils:32fac02eb2c20a77fa3e3bc3ede62392a19613f72b8f8e10f5dfa84bb4c89ea1', - 'com.android.support:support-fragment:541d6393c1e024453aca2a14f31bea0c7270ff4e2a02783f3528aa426367444d', - 'com.android.support:support-media-compat:cbed07d07e0e84fdb4b75712f5fd946229a8af155933c9a92e41db64d00791e0', - 'com.android.support:support-v4:07d389154bcf73b47e514964df1578136b26cba78257b8a577a3ccb54beff0ae', - 'com.android.support:support-vector-drawable:13728f337f36d1c02d52198a6c20724edb447a0875454d829f95cb9eb4aa293b', - 'com.android.support:transition:36c688825a8c0e6e879e18886de83dc90673322822d5b606ee302f70fb558e16', + 'com.android.support.constraint:constraint-layout-solver:fcb4c7d705754ca3d69b1b2c3caf445a425599fda8caabbcf855d98ea0663e4e', + 'com.android.support.constraint:constraint-layout:d490188709b7bb2f11609beadd7e5eb7538892f308828ec3ff261a74e6ecf47e', + 'com.android.support:animated-vector-drawable:59670473f6e98fda792f7bef25dd7292b0a3106031c7a5e30eb020bf26f077bd', + 'com.android.support:appcompat-v7:0c7808fbbc5838d831e32e3c0a6f84e1f2c981deb8f11e010650f2b57923a335', + 'com.android.support:cardview-v7:8ed955dd037d82a7b4bbcaedb4f896523c3e4c1bf3ca698ce807c350767a2886', + 'com.android.support:design:7225973f7ee03765008a9c2f17a40b154c6885169fef022276e811c926a2202c', + 'com.android.support:gridlayout-v7:2f5af33c4be1d3e4e3fa999323265718ac1a4c81df4c0373d6ce8901613b1671', + 'com.android.support:palette-v7:6d24037fb375c7884f878edeb88c812b87a05c69221513507ecea21c257d6314', + 'com.android.support:recyclerview-v7:d735e4727878e99ef3980c10d15dc3468462fd509d4fb60cb8bd20b0f735085c', + 'com.android.support:support-annotations:3365960206c3d2b09e845f555e7f88f8effc8d2f00b369e66c4be384029299cf', + 'com.android.support:support-compat:880ce01ff5be42b233ff8ec0c61cefb7dc3dc9500fea9e24423214813ac27ea2', + 'com.android.support:support-core-ui:a3ae20e6d5dffba69ac97b99846d2738003af8563843d5f3c9dc4c35b4804241', + 'com.android.support:support-core-utils:61036832c54e8701aae954fc3bf96d1d80bf8d9dd531bff77d72def456ba087a', + 'com.android.support:support-fragment:ec72d6ac36a1a0e6523bbddba33d73ffad070b9b3dd246cc44d8727a41ddb5e6', + 'com.android.support:support-media-compat:55e9837dda88b74a8c812c63a78c63fd83c6c039a8c22d318492663a493585eb', + 'com.android.support:support-v4:4f41dfc3e89f2738e45c86264a85c0934d055ee8ebe2020e23c97f303b80a48b', + 'com.android.support:support-vector-drawable:1c0f421114cf4627cf208776d6eb4f76340c78b7e96fe6e12b3e6eb950caf1b9', + 'com.android.support:transition:c0765b2f3c78696567ec5b3f519d22da1e3df11ac994625adf4bb4dc571caacc', 'com.fasterxml.jackson.core:jackson-annotations:6b7802f6c22c09c4a92a2ebeb76e755c3c0a58dfbf419835fae470d89e469b86', 'com.fasterxml.jackson.core:jackson-core:256ff34118ab292d1b4f3ee4d2c3e5e5f0f609d8e07c57e8ad1f51c46d4fbb46', 'com.fasterxml.jackson.core:jackson-databind:4f74337b6d18664be0f5b15c6664b17aa3972c9c175092328b139b894ff66f19', @@ -165,8 +171,8 @@ def isCi = "true".equals(System.getenv("CI")) def preDexEnabled = "true".equals(System.getProperty("pre-dex", "true")) android { - compileSdkVersion 24 - buildToolsVersion '25.0.3' + compileSdkVersion 27 + buildToolsVersion '27.0.3' buildTypes { // use proguard on debug too since we have unknowingly broken diff --git a/app/lint.xml b/app/lint.xml index 9b3dccf85..5a30e2915 100644 --- a/app/lint.xml +++ b/app/lint.xml @@ -31,6 +31,10 @@ + + + + diff --git a/app/src/main/java/org/fdroid/fdroid/NfcNotEnabledActivity.java b/app/src/main/java/org/fdroid/fdroid/NfcNotEnabledActivity.java index e6f49ad48..3961ff65c 100644 --- a/app/src/main/java/org/fdroid/fdroid/NfcNotEnabledActivity.java +++ b/app/src/main/java/org/fdroid/fdroid/NfcNotEnabledActivity.java @@ -6,10 +6,10 @@ import android.nfc.NfcAdapter; import android.os.Build; import android.os.Bundle; import android.provider.Settings; -import android.support.v7.app.ActionBarActivity; +import android.support.v7.app.AppCompatActivity; // aka Android 4.0 aka Ice Cream Sandwich -public class NfcNotEnabledActivity extends ActionBarActivity { +public class NfcNotEnabledActivity extends AppCompatActivity { /* * ACTION_NFC_SETTINGS was added in 4.1 aka Jelly Bean MR1 as a diff --git a/app/src/main/java/org/fdroid/fdroid/views/RepoDetailsActivity.java b/app/src/main/java/org/fdroid/fdroid/views/RepoDetailsActivity.java index 546dcce4e..7af876e16 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/RepoDetailsActivity.java +++ b/app/src/main/java/org/fdroid/fdroid/views/RepoDetailsActivity.java @@ -15,8 +15,8 @@ import android.os.Bundle; import android.os.Parcelable; import android.support.v4.app.NavUtils; import android.support.v4.content.LocalBroadcastManager; -import android.support.v7.app.ActionBarActivity; import android.support.v7.app.AlertDialog; +import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.text.TextUtils; import android.text.format.DateUtils; @@ -40,7 +40,7 @@ import org.fdroid.fdroid.data.Schema.RepoTable; import java.util.Locale; -public class RepoDetailsActivity extends ActionBarActivity { +public class RepoDetailsActivity extends AppCompatActivity { private static final String TAG = "RepoDetailsActivity"; public static final String ARG_REPO_ID = "repo_id"; From e9234272323988b38011c5b215aaf86ca9b50e78 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 19 Apr 2018 12:28:50 +0200 Subject: [PATCH 04/19] gitlab-ci: convert connected10 job to connected14 #1379 --- .gitlab-ci.yml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e66a95211..eb4a4810a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -12,7 +12,7 @@ stages: before_script: - export GRADLE_USER_HOME=$PWD/.gradle - export ANDROID_COMPILE_SDK=`sed -n 's,.*compileSdkVersion\s*\([0-9][0-9]*\).*,\1,p' app/build.gradle` - - echo y | android --silent update sdk --no-ui --filter android-${ANDROID_COMPILE_SDK} + - echo y | $ANDROID_HOME/tools/bin/sdkmanager "platforms;android-${ANDROID_COMPILE_SDK}" .test-template: &test-template artifacts: @@ -54,13 +54,16 @@ errorprone: - ./gradlew assembleDebug allow_failure: true -connected10: +connected14: stage: test <<: *test-template variables: - AVD_SDK: "10" + AVD_SDK: "14" script: - ./gradlew assembleDebug + - echo y | $ANDROID_HOME/tools/bin/sdkmanager "platforms;android-$AVD_SDK" + - echo y | $ANDROID_HOME/tools/bin/sdkmanager "system-images;android-${AVD_SDK};default;armeabi-v7a" + - echo no | android --verbose create avd --name fcl-test-$AVD_SDK --target android-$AVD_SDK - emulator64-arm -avd fcl-test-$AVD_SDK -no-skin -no-audio -no-window & - ./tools/wait-for-emulator - adb shell input keyevent 82 & From 2a9c3fee5b23ce46cc81b01fb8418777e079027d Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 19 Apr 2018 13:00:10 +0200 Subject: [PATCH 05/19] purge all code blocks for < android-14, except installer stuff The installer stuff should hopefully become a standalone library, so that might as well keep the old support in place. #1379 --- .../fdroid/fdroid/AppUpdateStatusManager.java | 6 --- .../java/org/fdroid/fdroid/NfcHelper.java | 6 --- .../fdroid/fdroid/NfcNotEnabledActivity.java | 6 +-- .../org/fdroid/fdroid/NotificationHelper.java | 13 ++--- .../org/fdroid/fdroid/QrGenAsyncTask.java | 14 ++---- .../fdroid/fdroid/compat/ClipboardCompat.java | 49 ------------------- .../org/fdroid/fdroid/compat/UriCompat.java | 21 -------- .../net/bluetooth/BluetoothConnection.java | 8 +-- .../fdroid/views/ManageReposActivity.java | 18 +++++-- .../org/fdroid/fdroid/views/RepoAdapter.java | 7 +-- .../fdroid/views/RepoDetailsActivity.java | 4 +- .../fdroid/views/ScreenShotsActivity.java | 7 +-- .../fdroid/views/apps/FeatureImage.java | 24 ++++----- .../fdroid/views/main/MainActivity.java | 17 +++---- .../views/panic/PanicPreferencesFragment.java | 31 +++++------- .../fdroid/fdroid/views/swap/WifiQrView.java | 25 +++++----- .../camera/CameraCharacteristicsChecker.java | 2 +- app/src/main/res/values-v11/styles.xml | 26 ---------- 18 files changed, 70 insertions(+), 214 deletions(-) delete mode 100644 app/src/main/java/org/fdroid/fdroid/compat/ClipboardCompat.java delete mode 100644 app/src/main/java/org/fdroid/fdroid/compat/UriCompat.java delete mode 100644 app/src/main/res/values-v11/styles.xml diff --git a/app/src/main/java/org/fdroid/fdroid/AppUpdateStatusManager.java b/app/src/main/java/org/fdroid/fdroid/AppUpdateStatusManager.java index a270ee4d6..5a82d9612 100644 --- a/app/src/main/java/org/fdroid/fdroid/AppUpdateStatusManager.java +++ b/app/src/main/java/org/fdroid/fdroid/AppUpdateStatusManager.java @@ -7,7 +7,6 @@ import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageManager; -import android.os.Build; import android.os.Parcel; import android.os.Parcelable; import android.support.annotation.NonNull; @@ -511,11 +510,6 @@ public final class AppUpdateStatusManager { } break; } - if (Build.VERSION.SDK_INT < 11 && entry.intent == null) { - Intent intent = new Intent(); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - entry.intent = PendingIntent.getActivity(context, 0, intent, 0); - } } /** diff --git a/app/src/main/java/org/fdroid/fdroid/NfcHelper.java b/app/src/main/java/org/fdroid/fdroid/NfcHelper.java index 81787c04b..4f7f198e7 100644 --- a/app/src/main/java/org/fdroid/fdroid/NfcHelper.java +++ b/app/src/main/java/org/fdroid/fdroid/NfcHelper.java @@ -16,16 +16,10 @@ public class NfcHelper { private static final String TAG = "NfcHelper"; - @TargetApi(14) private static NfcAdapter getAdapter(Context context) { - if (Build.VERSION.SDK_INT < 14) { - return null; - } - return NfcAdapter.getDefaultAdapter(context.getApplicationContext()); } - @TargetApi(14) public static boolean setPushMessage(Activity activity, Uri toShare) { NfcAdapter adapter = getAdapter(activity); if (adapter != null) { diff --git a/app/src/main/java/org/fdroid/fdroid/NfcNotEnabledActivity.java b/app/src/main/java/org/fdroid/fdroid/NfcNotEnabledActivity.java index 3961ff65c..344003e80 100644 --- a/app/src/main/java/org/fdroid/fdroid/NfcNotEnabledActivity.java +++ b/app/src/main/java/org/fdroid/fdroid/NfcNotEnabledActivity.java @@ -46,12 +46,8 @@ public class NfcNotEnabledActivity extends AppCompatActivity { final Intent intent = new Intent(); if (Build.VERSION.SDK_INT >= 16) { doOnJellybean(intent); - } else if (Build.VERSION.SDK_INT >= 14) { - doOnIceCreamSandwich(intent); } else { - // no NFC support, so nothing to do here - finish(); - return; + doOnIceCreamSandwich(intent); } startActivity(intent); finish(); diff --git a/app/src/main/java/org/fdroid/fdroid/NotificationHelper.java b/app/src/main/java/org/fdroid/fdroid/NotificationHelper.java index 653f5fbba..c0eda020e 100644 --- a/app/src/main/java/org/fdroid/fdroid/NotificationHelper.java +++ b/app/src/main/java/org/fdroid/fdroid/NotificationHelper.java @@ -117,7 +117,7 @@ class NotificationHelper { } private boolean useStackedNotifications() { - return Build.VERSION.SDK_INT >= Build.VERSION_CODES.N; + return Build.VERSION.SDK_INT >= 24; } /** @@ -481,15 +481,8 @@ class NotificationHelper { } private Point getLargeIconSize() { - int w; - int h; - if (Build.VERSION.SDK_INT >= 11) { - w = context.getResources().getDimensionPixelSize(android.R.dimen.notification_large_icon_width); - h = context.getResources().getDimensionPixelSize(android.R.dimen.notification_large_icon_height); - } else { - w = context.getResources().getDimensionPixelSize(android.R.dimen.app_icon_size); - h = w; - } + int w = context.getResources().getDimensionPixelSize(android.R.dimen.notification_large_icon_width); + int h = context.getResources().getDimensionPixelSize(android.R.dimen.notification_large_icon_height); return new Point(w, h); } diff --git a/app/src/main/java/org/fdroid/fdroid/QrGenAsyncTask.java b/app/src/main/java/org/fdroid/fdroid/QrGenAsyncTask.java index c257859ed..ed17c160e 100644 --- a/app/src/main/java/org/fdroid/fdroid/QrGenAsyncTask.java +++ b/app/src/main/java/org/fdroid/fdroid/QrGenAsyncTask.java @@ -5,11 +5,9 @@ import android.app.Activity; import android.graphics.Bitmap; import android.graphics.Point; import android.os.AsyncTask; -import android.os.Build; import android.util.Log; import android.view.Display; import android.widget.ImageView; - import com.google.zxing.BarcodeFormat; import com.google.zxing.WriterException; import com.google.zxing.encode.Contents; @@ -39,15 +37,9 @@ public class QrGenAsyncTask extends AsyncTask { Display display = activity.getWindowManager().getDefaultDisplay(); Point outSize = new Point(); int x, y, qrCodeDimension; - /* lame, got to use both the new and old APIs here */ - if (Build.VERSION.SDK_INT >= 13) { - display.getSize(outSize); - x = outSize.x; - y = outSize.y; - } else { - x = display.getWidth(); - y = display.getHeight(); - } + display.getSize(outSize); + x = outSize.x; + y = outSize.y; if (x < y) { qrCodeDimension = x; } else { diff --git a/app/src/main/java/org/fdroid/fdroid/compat/ClipboardCompat.java b/app/src/main/java/org/fdroid/fdroid/compat/ClipboardCompat.java deleted file mode 100644 index 808acacd1..000000000 --- a/app/src/main/java/org/fdroid/fdroid/compat/ClipboardCompat.java +++ /dev/null @@ -1,49 +0,0 @@ -package org.fdroid.fdroid.compat; - -import android.annotation.TargetApi; -import android.content.ClipData; -import android.content.ClipboardManager; -import android.content.Context; -import android.os.Build; - -public abstract class ClipboardCompat { - - public abstract String getText(); - - public static ClipboardCompat create(Context context) { - if (Build.VERSION.SDK_INT >= 11) { - return new HoneycombClipboard(context); - } - return new OldClipboard(); - } - - @TargetApi(11) - private static class HoneycombClipboard extends ClipboardCompat { - - private final ClipboardManager manager; - - HoneycombClipboard(Context context) { - this.manager = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE); - } - - @Override - public String getText() { - CharSequence text = null; - if (manager.hasPrimaryClip()) { - ClipData data = manager.getPrimaryClip(); - if (data.getItemCount() > 0) { - text = data.getItemAt(0).getText(); - } - } - return text != null ? text.toString() : null; - } - } - - private static class OldClipboard extends ClipboardCompat { - - @Override - public String getText() { - return null; - } - } -} diff --git a/app/src/main/java/org/fdroid/fdroid/compat/UriCompat.java b/app/src/main/java/org/fdroid/fdroid/compat/UriCompat.java deleted file mode 100644 index 67e3e29a0..000000000 --- a/app/src/main/java/org/fdroid/fdroid/compat/UriCompat.java +++ /dev/null @@ -1,21 +0,0 @@ -package org.fdroid.fdroid.compat; - -import android.net.Uri; -import android.os.Build; - -public class UriCompat { - - /** - * Uri#getQueryParameter(String) has the following warning: - * - * > Prior to Ice Cream Sandwich, this decoded the '+' character as '+' rather than ' '. - */ - public static String getQueryParameter(Uri uri, String key) { - String value = uri.getQueryParameter(key); - if (value != null && Build.VERSION.SDK_INT < 14) { - value = value.replaceAll("\\+", " "); - } - return value; - } - -} diff --git a/app/src/main/java/org/fdroid/fdroid/net/bluetooth/BluetoothConnection.java b/app/src/main/java/org/fdroid/fdroid/net/bluetooth/BluetoothConnection.java index dc57e4628..56873ab76 100644 --- a/app/src/main/java/org/fdroid/fdroid/net/bluetooth/BluetoothConnection.java +++ b/app/src/main/java/org/fdroid/fdroid/net/bluetooth/BluetoothConnection.java @@ -1,9 +1,6 @@ package org.fdroid.fdroid.net.bluetooth; -import android.annotation.TargetApi; import android.bluetooth.BluetoothSocket; -import android.os.Build; - import org.fdroid.fdroid.Utils; import java.io.BufferedInputStream; @@ -32,15 +29,14 @@ public class BluetoothConnection { return output; } - @TargetApi(14) public void open() throws IOException { - if (Build.VERSION.SDK_INT >= 14 && !socket.isConnected()) { + if (!socket.isConnected()) { // Server sockets will already be connected when they are passed to us, // client sockets require us to call connect(). socket.connect(); } - input = new BufferedInputStream(socket.getInputStream()); + input = new BufferedInputStream(socket.getInputStream()); output = new BufferedOutputStream(socket.getOutputStream()); Utils.debugLog(TAG, "Opened connection to Bluetooth device"); } diff --git a/app/src/main/java/org/fdroid/fdroid/views/ManageReposActivity.java b/app/src/main/java/org/fdroid/fdroid/views/ManageReposActivity.java index b57b38b57..5ff7e3556 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/ManageReposActivity.java +++ b/app/src/main/java/org/fdroid/fdroid/views/ManageReposActivity.java @@ -20,6 +20,8 @@ package org.fdroid.fdroid.views; import android.annotation.SuppressLint; +import android.content.ClipData; +import android.content.ClipboardManager; import android.content.ContentValues; import android.content.Context; import android.content.DialogInterface; @@ -55,7 +57,6 @@ import org.fdroid.fdroid.FDroidApp; import org.fdroid.fdroid.R; import org.fdroid.fdroid.UpdateService; import org.fdroid.fdroid.Utils; -import org.fdroid.fdroid.compat.ClipboardCompat; import org.fdroid.fdroid.compat.CursorAdapterCompat; import org.fdroid.fdroid.data.NewRepoConfig; import org.fdroid.fdroid.data.Repo; @@ -158,13 +159,24 @@ public class ManageReposActivity extends AppCompatActivity return super.onOptionsItemSelected(item); } + public String getPrimaryClipAsText() { + CharSequence text = null; + ClipboardManager clipboardManager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); + if (clipboardManager.hasPrimaryClip()) { + ClipData data = clipboardManager.getPrimaryClip(); + if (data.getItemCount() > 0) { + text = data.getItemAt(0).getText(); + } + } + return text != null ? text.toString() : null; + } + private void showAddRepo() { /* * If there is text in the clipboard, and it looks like a URL, use that. * Otherwise use "https://" as default repo string. */ - ClipboardCompat clipboard = ClipboardCompat.create(this); - String text = clipboard.getText(); + String text = getPrimaryClipAsText(); String fingerprint = null; String username = null; String password = null; diff --git a/app/src/main/java/org/fdroid/fdroid/views/RepoAdapter.java b/app/src/main/java/org/fdroid/fdroid/views/RepoAdapter.java index fbb139c01..9c1a48b7b 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/RepoAdapter.java +++ b/app/src/main/java/org/fdroid/fdroid/views/RepoAdapter.java @@ -2,14 +2,12 @@ package org.fdroid.fdroid.views; import android.content.Context; import android.database.Cursor; -import android.os.Build; import android.support.v4.widget.CursorAdapter; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.CompoundButton; import android.widget.TextView; - import org.fdroid.fdroid.R; import org.fdroid.fdroid.data.Repo; @@ -24,10 +22,7 @@ public class RepoAdapter extends CursorAdapter { private EnabledListener enabledListener; public static RepoAdapter create(Context context, Cursor cursor, int flags) { - if (Build.VERSION.SDK_INT >= 11) { - return new RepoAdapter(context, cursor, flags); - } - return new RepoAdapter(context, cursor); + return new RepoAdapter(context, cursor, flags); } private RepoAdapter(Context context, Cursor c, int flags) { diff --git a/app/src/main/java/org/fdroid/fdroid/views/RepoDetailsActivity.java b/app/src/main/java/org/fdroid/fdroid/views/RepoDetailsActivity.java index 7af876e16..0a862ea9b 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/RepoDetailsActivity.java +++ b/app/src/main/java/org/fdroid/fdroid/views/RepoDetailsActivity.java @@ -223,9 +223,7 @@ public class RepoDetailsActivity extends AppCompatActivity { @Override public boolean onPrepareOptionsMenu(Menu menu) { - if (Build.VERSION.SDK_INT >= 14) { - prepareNfcMenuItems(menu); - } + prepareNfcMenuItems(menu); return true; } diff --git a/app/src/main/java/org/fdroid/fdroid/views/ScreenShotsActivity.java b/app/src/main/java/org/fdroid/fdroid/views/ScreenShotsActivity.java index 4e930ce06..6ed519855 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/ScreenShotsActivity.java +++ b/app/src/main/java/org/fdroid/fdroid/views/ScreenShotsActivity.java @@ -3,7 +3,6 @@ package org.fdroid.fdroid.views; import android.annotation.TargetApi; import android.content.Context; import android.content.Intent; -import android.os.Build; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; @@ -65,10 +64,8 @@ public class ScreenShotsActivity extends AppCompatActivity { viewPager.setAdapter(adapter); viewPager.setCurrentItem(startPosition); - if (Build.VERSION.SDK_INT >= 11) { - // display some nice animation while swiping - viewPager.setPageTransformer(true, new DepthPageTransformer()); - } + // display some nice animation while swiping + viewPager.setPageTransformer(true, new DepthPageTransformer()); } @Override diff --git a/app/src/main/java/org/fdroid/fdroid/views/apps/FeatureImage.java b/app/src/main/java/org/fdroid/fdroid/views/apps/FeatureImage.java index e22345d26..20555f685 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/apps/FeatureImage.java +++ b/app/src/main/java/org/fdroid/fdroid/views/apps/FeatureImage.java @@ -1,7 +1,6 @@ package org.fdroid.fdroid.views.apps; import android.animation.ValueAnimator; -import android.annotation.TargetApi; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; @@ -10,7 +9,6 @@ import android.graphics.Paint; import android.graphics.Path; import android.graphics.Point; import android.graphics.PorterDuff; -import android.os.Build; import android.support.annotation.ColorInt; import android.support.annotation.NonNull; import android.support.annotation.Nullable; @@ -20,12 +18,10 @@ import android.support.v7.widget.AppCompatImageView; import android.text.TextUtils; import android.util.AttributeSet; import android.view.View; - import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.assist.FailReason; import com.nostra13.universalimageloader.core.listener.ImageLoadingListener; - import org.fdroid.fdroid.R; import java.util.Random; @@ -34,7 +30,7 @@ import java.util.Random; * A feature image can have a {@link android.graphics.drawable.Drawable} or a {@link Palette}. If * a Drawable is available, then it will draw that, otherwise it will attempt to fall back to the * Palette you gave it. If a Palette is given, it will draw a series of triangles like so: - * + *

* +_----+----_+_----+----_+ * | \_ | _/ | \_ | _/ | * | \_|_/ | \_|_/ | @@ -42,12 +38,12 @@ import java.util.Random; * | \_ | _/ | \_ | _/ | * | \_|_/ | \_|_/ | * +-----+-----+-----+-----+ - * + *

* where each triangle is filled with one of two variations of the {@link Palette#getDominantColor(int)} * that is chosen randomly. The randomness is first seeded with the colour that has been selected. * This is so that if this repaints itself in the future, it will have the same unique pattern rather * than picking a new random pattern each time. - * + *

* It is suggested that you obtain the Palette from the icon of an app. */ @SuppressWarnings("LineLength") @@ -143,12 +139,7 @@ public class FeatureImage extends AppCompatImageView { private int currentAlpha = 255; private ValueAnimator alphaAnimator = null; - @TargetApi(11) private void animateColourChange() { - if (Build.VERSION.SDK_INT < 11) { - return; - } - if (alphaAnimator == null) { alphaAnimator = ValueAnimator.ofInt(0, 255); } else { @@ -294,12 +285,15 @@ public class FeatureImage extends AppCompatImageView { private abstract static class ImageLoadingAdapter implements ImageLoadingListener { @Override - public void onLoadingStarted(String imageUri, View view) { } + public void onLoadingStarted(String imageUri, View view) { + } @Override - public void onLoadingFailed(String imageUri, View view, FailReason failReason) { } + public void onLoadingFailed(String imageUri, View view, FailReason failReason) { + } @Override - public void onLoadingCancelled(String imageUri, View view) { } + public void onLoadingCancelled(String imageUri, View view) { + } } } diff --git a/app/src/main/java/org/fdroid/fdroid/views/main/MainActivity.java b/app/src/main/java/org/fdroid/fdroid/views/main/MainActivity.java index 1e3ad2412..6f6ef76ee 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/main/MainActivity.java +++ b/app/src/main/java/org/fdroid/fdroid/views/main/MainActivity.java @@ -28,7 +28,6 @@ import org.fdroid.fdroid.Preferences; import org.fdroid.fdroid.R; import org.fdroid.fdroid.UpdateService; import org.fdroid.fdroid.Utils; -import org.fdroid.fdroid.compat.UriCompat; import org.fdroid.fdroid.data.NewRepoConfig; import org.fdroid.fdroid.views.ManageReposActivity; import org.fdroid.fdroid.views.apps.AppListActivity; @@ -232,29 +231,29 @@ public class MainActivity extends AppCompatActivity implements BottomNavigationB packageName = data.getLastPathSegment(); } else if (path.startsWith("/repository/browse")) { // http://f-droid.org/repository/browse?fdfilter=search+query - query = UriCompat.getQueryParameter(data, "fdfilter"); + query = data.getQueryParameter("fdfilter"); // http://f-droid.org/repository/browse?fdid=packageName - packageName = UriCompat.getQueryParameter(data, "fdid"); + packageName = data.getQueryParameter("fdid"); } else if ("/app".equals(data.getPath()) || "/packages".equals(data.getPath())) { packageName = null; } break; case "details": // market://details?id=app.id - packageName = UriCompat.getQueryParameter(data, "id"); + packageName = data.getQueryParameter("id"); break; case "search": // market://search?q=query - query = UriCompat.getQueryParameter(data, "q"); + query = data.getQueryParameter("q"); break; case "play.google.com": if (path.startsWith("/store/apps/details")) { // http://play.google.com/store/apps/details?id=app.id - packageName = UriCompat.getQueryParameter(data, "id"); + packageName = data.getQueryParameter("id"); } else if (path.startsWith("/store/search")) { // http://play.google.com/store/search?q=foo - query = UriCompat.getQueryParameter(data, "q"); + query = data.getQueryParameter("q"); } break; case "apps": @@ -262,8 +261,8 @@ public class MainActivity extends AppCompatActivity implements BottomNavigationB case "www.amazon.com": // amzn://apps/android?p=app.id // http://amazon.com/gp/mas/dl/android?s=app.id - packageName = UriCompat.getQueryParameter(data, "p"); - query = UriCompat.getQueryParameter(data, "s"); + packageName = data.getQueryParameter("p"); + query = data.getQueryParameter("s"); break; } } else if ("fdroid.app".equals(scheme)) { 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 973168e6f..f846debc4 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 @@ -11,7 +11,6 @@ import android.content.res.Resources; import android.graphics.PorterDuff; import android.graphics.drawable.Drawable; import android.net.Uri; -import android.os.Build; import android.os.Bundle; import android.preference.CheckBoxPreference; import android.preference.ListPreference; @@ -23,16 +22,14 @@ import android.support.v4.preference.PreferenceFragment; import android.support.v7.app.AlertDialog; import android.text.TextUtils; import android.util.TypedValue; - +import info.guardianproject.panic.Panic; +import info.guardianproject.panic.PanicResponder; import org.fdroid.fdroid.Preferences; import org.fdroid.fdroid.R; import org.fdroid.fdroid.views.hiding.HidingManager; import java.util.ArrayList; -import info.guardianproject.panic.Panic; -import info.guardianproject.panic.PanicResponder; - public class PanicPreferencesFragment extends PreferenceFragment implements SharedPreferences .OnSharedPreferenceChangeListener { @@ -148,16 +145,16 @@ public class PanicPreferencesFragment extends PreferenceFragment implements Shar // no panic app set prefApp.setValue(Panic.PACKAGE_NAME_NONE); prefApp.setSummary(getString(R.string.panic_app_setting_summary)); - if (Build.VERSION.SDK_INT >= 11) { - prefApp.setIcon(null); // otherwise re-setting view resource doesn't work - Drawable icon = ContextCompat.getDrawable(getContext(), R.drawable.ic_cancel); - TypedValue typedValue = new TypedValue(); - Resources.Theme theme = getContext().getTheme(); - theme.resolveAttribute(R.attr.appListItem, typedValue, true); - @ColorInt int color = typedValue.data; - icon.setColorFilter(color, PorterDuff.Mode.SRC_IN); - prefApp.setIcon(icon); - } + + prefApp.setIcon(null); // otherwise re-setting view resource doesn't work + Drawable icon = ContextCompat.getDrawable(getContext(), R.drawable.ic_cancel); + TypedValue typedValue = new TypedValue(); + Resources.Theme theme = getContext().getTheme(); + theme.resolveAttribute(R.attr.appListItem, typedValue, true); + @ColorInt int color = typedValue.data; + icon.setColorFilter(color, PorterDuff.Mode.SRC_IN); + prefApp.setIcon(icon); + // disable destructive panic actions prefHide.setEnabled(false); } else { @@ -165,9 +162,7 @@ public class PanicPreferencesFragment extends PreferenceFragment implements Shar try { prefApp.setValue(packageName); prefApp.setSummary(pm.getApplicationLabel(pm.getApplicationInfo(packageName, 0))); - if (Build.VERSION.SDK_INT >= 11) { - prefApp.setIcon(pm.getApplicationIcon(packageName)); - } + prefApp.setIcon(pm.getApplicationIcon(packageName)); prefHide.setEnabled(true); } catch (PackageManager.NameNotFoundException e) { // revert back to no app, just to be safe diff --git a/app/src/main/java/org/fdroid/fdroid/views/swap/WifiQrView.java b/app/src/main/java/org/fdroid/fdroid/views/swap/WifiQrView.java index 8ec198c8b..ab55abd2c 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/swap/WifiQrView.java +++ b/app/src/main/java/org/fdroid/fdroid/views/swap/WifiQrView.java @@ -7,7 +7,6 @@ import android.content.Intent; import android.content.IntentFilter; import android.graphics.LightingColorFilter; import android.net.Uri; -import android.os.Build; import android.support.annotation.ColorRes; import android.support.annotation.NonNull; import android.support.v4.content.LocalBroadcastManager; @@ -148,20 +147,18 @@ public class WifiQrView extends ScrollView implements SwapWorkflowActivity.Inner qrUrlBuilder.append(sharingUri.getPath()); boolean first = true; - if (Build.VERSION.SDK_INT > 10) { - Set names = sharingUri.getQueryParameterNames(); - for (String name : names) { - if (!"ssid".equals(name)) { - if (first) { - qrUrlBuilder.append('?'); - first = false; - } else { - qrUrlBuilder.append('&'); - } - qrUrlBuilder.append(name.toUpperCase(Locale.ENGLISH)); - qrUrlBuilder.append('='); - qrUrlBuilder.append(sharingUri.getQueryParameter(name).toUpperCase(Locale.ENGLISH)); + Set names = sharingUri.getQueryParameterNames(); + for (String name : names) { + if (!"ssid".equals(name)) { + if (first) { + qrUrlBuilder.append('?'); + first = false; + } else { + qrUrlBuilder.append('&'); } + qrUrlBuilder.append(name.toUpperCase(Locale.ENGLISH)); + qrUrlBuilder.append('='); + qrUrlBuilder.append(sharingUri.getQueryParameter(name).toUpperCase(Locale.ENGLISH)); } } diff --git a/app/src/main/java/org/fdroid/fdroid/views/swap/device/camera/CameraCharacteristicsChecker.java b/app/src/main/java/org/fdroid/fdroid/views/swap/device/camera/CameraCharacteristicsChecker.java index 53889a7a5..bdb23d306 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/swap/device/camera/CameraCharacteristicsChecker.java +++ b/app/src/main/java/org/fdroid/fdroid/views/swap/device/camera/CameraCharacteristicsChecker.java @@ -4,7 +4,7 @@ import android.content.Context; public abstract class CameraCharacteristicsChecker { public static CameraCharacteristicsChecker getInstance(final Context context) { - if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) { + if (android.os.Build.VERSION.SDK_INT >= 21) { return new CameraCharacteristicsMinApiLevel21(context); } else { return new CameraCharacteristicsMaxApiLevel20(); diff --git a/app/src/main/res/values-v11/styles.xml b/app/src/main/res/values-v11/styles.xml deleted file mode 100644 index 567d28f0c..000000000 --- a/app/src/main/res/values-v11/styles.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - From dfc6524fc1d91752c740eddc7ee17327992a0758 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 19 Apr 2018 13:04:27 +0200 Subject: [PATCH 06/19] switch Robolectric to use compile SDK version --- app/src/test/java/org/fdroid/fdroid/AntiFeaturesTest.java | 2 +- app/src/test/java/org/fdroid/fdroid/ProvisionerTest.java | 2 +- app/src/test/java/org/fdroid/fdroid/UtilsTest.java | 2 +- app/src/test/java/org/fdroid/fdroid/data/ApkProviderTest.java | 2 +- .../test/java/org/fdroid/fdroid/data/AppPrefsProviderTest.java | 2 +- app/src/test/java/org/fdroid/fdroid/data/AppProviderTest.java | 2 +- app/src/test/java/org/fdroid/fdroid/data/DatabaseMigration.java | 2 +- .../java/org/fdroid/fdroid/data/InstalledAppProviderTest.java | 2 +- .../java/org/fdroid/fdroid/data/PreferredSignatureTest.java | 2 +- app/src/test/java/org/fdroid/fdroid/data/ProviderUriTests.java | 2 +- app/src/test/java/org/fdroid/fdroid/data/RepoProviderTest.java | 2 +- .../test/java/org/fdroid/fdroid/data/SuggestedVersionTest.java | 2 +- app/src/test/java/org/fdroid/fdroid/net/HttpDownloaderTest.java | 2 +- .../fdroid/fdroid/updater/AcceptableMultiRepoUpdaterTest.java | 2 +- .../java/org/fdroid/fdroid/updater/FDroidRepoUpdateTest.java | 2 +- .../test/java/org/fdroid/fdroid/updater/IndexV1UpdaterTest.java | 2 +- .../test/java/org/fdroid/fdroid/updater/Issue763MultiRepo.java | 2 +- .../org/fdroid/fdroid/updater/ProperMultiRepoUpdaterTest.java | 2 +- .../test/java/org/fdroid/fdroid/updater/RepoXMLHandlerTest.java | 2 +- .../java/org/fdroid/fdroid/views/AppDetailsAdapterTest.java | 2 +- 20 files changed, 20 insertions(+), 20 deletions(-) diff --git a/app/src/test/java/org/fdroid/fdroid/AntiFeaturesTest.java b/app/src/test/java/org/fdroid/fdroid/AntiFeaturesTest.java index 16b2f712e..bd9cd993c 100644 --- a/app/src/test/java/org/fdroid/fdroid/AntiFeaturesTest.java +++ b/app/src/test/java/org/fdroid/fdroid/AntiFeaturesTest.java @@ -23,7 +23,7 @@ import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; -@Config(constants = BuildConfig.class, application = Application.class, sdk = 24) +@Config(constants = BuildConfig.class, application = Application.class) @RunWith(RobolectricTestRunner.class) public class AntiFeaturesTest extends FDroidProviderTest { diff --git a/app/src/test/java/org/fdroid/fdroid/ProvisionerTest.java b/app/src/test/java/org/fdroid/fdroid/ProvisionerTest.java index 14882e15f..238eb86c6 100644 --- a/app/src/test/java/org/fdroid/fdroid/ProvisionerTest.java +++ b/app/src/test/java/org/fdroid/fdroid/ProvisionerTest.java @@ -16,7 +16,7 @@ import java.util.List; /** * @author Michael Poehn (michael.poehn@fsfe.org) */ -@Config(constants = BuildConfig.class, sdk = 24) +@Config(constants = BuildConfig.class) @RunWith(RobolectricTestRunner.class) @SuppressWarnings("LineLength") public class ProvisionerTest { diff --git a/app/src/test/java/org/fdroid/fdroid/UtilsTest.java b/app/src/test/java/org/fdroid/fdroid/UtilsTest.java index bb9589da0..18ac2d62d 100644 --- a/app/src/test/java/org/fdroid/fdroid/UtilsTest.java +++ b/app/src/test/java/org/fdroid/fdroid/UtilsTest.java @@ -17,7 +17,7 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; -@Config(constants = BuildConfig.class, sdk = 24) +@Config(constants = BuildConfig.class) @RunWith(RobolectricTestRunner.class) @SuppressWarnings("LineLength") public class UtilsTest { diff --git a/app/src/test/java/org/fdroid/fdroid/data/ApkProviderTest.java b/app/src/test/java/org/fdroid/fdroid/data/ApkProviderTest.java index bd0f2b86e..e012cc079 100644 --- a/app/src/test/java/org/fdroid/fdroid/data/ApkProviderTest.java +++ b/app/src/test/java/org/fdroid/fdroid/data/ApkProviderTest.java @@ -28,7 +28,7 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.fail; -@Config(constants = BuildConfig.class, application = Application.class, sdk = 24) +@Config(constants = BuildConfig.class, application = Application.class) @RunWith(RobolectricTestRunner.class) public class ApkProviderTest extends FDroidProviderTest { diff --git a/app/src/test/java/org/fdroid/fdroid/data/AppPrefsProviderTest.java b/app/src/test/java/org/fdroid/fdroid/data/AppPrefsProviderTest.java index d0044c8ae..715fbb0f1 100644 --- a/app/src/test/java/org/fdroid/fdroid/data/AppPrefsProviderTest.java +++ b/app/src/test/java/org/fdroid/fdroid/data/AppPrefsProviderTest.java @@ -15,7 +15,7 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; -@Config(constants = BuildConfig.class, application = Application.class, sdk = 24) +@Config(constants = BuildConfig.class, application = Application.class) @RunWith(RobolectricTestRunner.class) public class AppPrefsProviderTest extends FDroidProviderTest { diff --git a/app/src/test/java/org/fdroid/fdroid/data/AppProviderTest.java b/app/src/test/java/org/fdroid/fdroid/data/AppProviderTest.java index 6cc8803c7..113d27920 100644 --- a/app/src/test/java/org/fdroid/fdroid/data/AppProviderTest.java +++ b/app/src/test/java/org/fdroid/fdroid/data/AppProviderTest.java @@ -29,7 +29,7 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; -@Config(constants = BuildConfig.class, application = Application.class, sdk = 24) +@Config(constants = BuildConfig.class, application = Application.class) @RunWith(RobolectricTestRunner.class) @SuppressWarnings("LineLength") public class AppProviderTest extends FDroidProviderTest { diff --git a/app/src/test/java/org/fdroid/fdroid/data/DatabaseMigration.java b/app/src/test/java/org/fdroid/fdroid/data/DatabaseMigration.java index fa6ff4d0d..510c8a955 100644 --- a/app/src/test/java/org/fdroid/fdroid/data/DatabaseMigration.java +++ b/app/src/test/java/org/fdroid/fdroid/data/DatabaseMigration.java @@ -19,7 +19,7 @@ import org.robolectric.Shadows; import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowContentResolver; -@Config(constants = BuildConfig.class, application = Application.class, sdk = 24) +@Config(constants = BuildConfig.class, application = Application.class) @RunWith(RobolectricTestRunner.class) public class DatabaseMigration { diff --git a/app/src/test/java/org/fdroid/fdroid/data/InstalledAppProviderTest.java b/app/src/test/java/org/fdroid/fdroid/data/InstalledAppProviderTest.java index 5bbedaa8d..616677fd4 100644 --- a/app/src/test/java/org/fdroid/fdroid/data/InstalledAppProviderTest.java +++ b/app/src/test/java/org/fdroid/fdroid/data/InstalledAppProviderTest.java @@ -23,7 +23,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; -@Config(constants = BuildConfig.class, application = Application.class, sdk = 24) +@Config(constants = BuildConfig.class, application = Application.class) @RunWith(RobolectricTestRunner.class) public class InstalledAppProviderTest extends FDroidProviderTest { diff --git a/app/src/test/java/org/fdroid/fdroid/data/PreferredSignatureTest.java b/app/src/test/java/org/fdroid/fdroid/data/PreferredSignatureTest.java index 2d2ddf8ef..c4dd49d40 100644 --- a/app/src/test/java/org/fdroid/fdroid/data/PreferredSignatureTest.java +++ b/app/src/test/java/org/fdroid/fdroid/data/PreferredSignatureTest.java @@ -13,7 +13,7 @@ import org.robolectric.annotation.Config; import static org.junit.Assert.assertEquals; -@Config(constants = BuildConfig.class, application = Application.class, sdk = 24) +@Config(constants = BuildConfig.class, application = Application.class) @RunWith(RobolectricTestRunner.class) public class PreferredSignatureTest extends FDroidProviderTest { diff --git a/app/src/test/java/org/fdroid/fdroid/data/ProviderUriTests.java b/app/src/test/java/org/fdroid/fdroid/data/ProviderUriTests.java index 5f738bcc0..9ffb5c9ad 100644 --- a/app/src/test/java/org/fdroid/fdroid/data/ProviderUriTests.java +++ b/app/src/test/java/org/fdroid/fdroid/data/ProviderUriTests.java @@ -20,7 +20,7 @@ import java.util.List; import static org.fdroid.fdroid.Assert.assertInvalidUri; import static org.fdroid.fdroid.Assert.assertValidUri; -@Config(constants = BuildConfig.class, sdk = 24) +@Config(constants = BuildConfig.class) @RunWith(RobolectricTestRunner.class) @SuppressWarnings("LineLength") public class ProviderUriTests { diff --git a/app/src/test/java/org/fdroid/fdroid/data/RepoProviderTest.java b/app/src/test/java/org/fdroid/fdroid/data/RepoProviderTest.java index c7e75d6f9..378ef8cfa 100644 --- a/app/src/test/java/org/fdroid/fdroid/data/RepoProviderTest.java +++ b/app/src/test/java/org/fdroid/fdroid/data/RepoProviderTest.java @@ -42,7 +42,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; -@Config(constants = BuildConfig.class, application = Application.class, sdk = 24) +@Config(constants = BuildConfig.class, application = Application.class) @RunWith(RobolectricTestRunner.class) public class RepoProviderTest extends FDroidProviderTest { diff --git a/app/src/test/java/org/fdroid/fdroid/data/SuggestedVersionTest.java b/app/src/test/java/org/fdroid/fdroid/data/SuggestedVersionTest.java index 269684c4d..5fe3ad3a2 100644 --- a/app/src/test/java/org/fdroid/fdroid/data/SuggestedVersionTest.java +++ b/app/src/test/java/org/fdroid/fdroid/data/SuggestedVersionTest.java @@ -16,7 +16,7 @@ import java.util.List; import static org.junit.Assert.assertEquals; -@Config(constants = BuildConfig.class, application = Application.class, sdk = 24) +@Config(constants = BuildConfig.class, application = Application.class) @RunWith(RobolectricTestRunner.class) public class SuggestedVersionTest extends FDroidProviderTest { diff --git a/app/src/test/java/org/fdroid/fdroid/net/HttpDownloaderTest.java b/app/src/test/java/org/fdroid/fdroid/net/HttpDownloaderTest.java index d5aee05c8..50ddb53b1 100644 --- a/app/src/test/java/org/fdroid/fdroid/net/HttpDownloaderTest.java +++ b/app/src/test/java/org/fdroid/fdroid/net/HttpDownloaderTest.java @@ -15,7 +15,7 @@ import java.net.URL; import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertFalse; -@Config(constants = BuildConfig.class, sdk = 24) +@Config(constants = BuildConfig.class) @RunWith(RobolectricTestRunner.class) @SuppressWarnings("LineLength") public class HttpDownloaderTest { diff --git a/app/src/test/java/org/fdroid/fdroid/updater/AcceptableMultiRepoUpdaterTest.java b/app/src/test/java/org/fdroid/fdroid/updater/AcceptableMultiRepoUpdaterTest.java index fe90ccc26..aa74a4f13 100644 --- a/app/src/test/java/org/fdroid/fdroid/updater/AcceptableMultiRepoUpdaterTest.java +++ b/app/src/test/java/org/fdroid/fdroid/updater/AcceptableMultiRepoUpdaterTest.java @@ -19,7 +19,7 @@ import java.util.List; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; -@Config(constants = BuildConfig.class, sdk = 24) +@Config(constants = BuildConfig.class) @RunWith(RobolectricTestRunner.class) public class AcceptableMultiRepoUpdaterTest extends MultiRepoUpdaterTest { private static final String TAG = "AcceptableMultiRepoTest"; diff --git a/app/src/test/java/org/fdroid/fdroid/updater/FDroidRepoUpdateTest.java b/app/src/test/java/org/fdroid/fdroid/updater/FDroidRepoUpdateTest.java index 9cca0faaf..8ee352682 100644 --- a/app/src/test/java/org/fdroid/fdroid/updater/FDroidRepoUpdateTest.java +++ b/app/src/test/java/org/fdroid/fdroid/updater/FDroidRepoUpdateTest.java @@ -14,7 +14,7 @@ import org.robolectric.annotation.Config; * because there is so much metadata to parse in the main repo, covering many different aspects * of the available metadata. Some apps will be added, others updated, and it should all just work. */ -@Config(constants = BuildConfig.class, sdk = 24) +@Config(constants = BuildConfig.class) @RunWith(RobolectricTestRunner.class) public class FDroidRepoUpdateTest extends MultiRepoUpdaterTest { diff --git a/app/src/test/java/org/fdroid/fdroid/updater/IndexV1UpdaterTest.java b/app/src/test/java/org/fdroid/fdroid/updater/IndexV1UpdaterTest.java index 9ea25f9a4..bc49fd16b 100644 --- a/app/src/test/java/org/fdroid/fdroid/updater/IndexV1UpdaterTest.java +++ b/app/src/test/java/org/fdroid/fdroid/updater/IndexV1UpdaterTest.java @@ -55,7 +55,7 @@ import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; -@Config(constants = BuildConfig.class, sdk = 24) +@Config(constants = BuildConfig.class) @RunWith(RobolectricTestRunner.class) public class IndexV1UpdaterTest extends FDroidProviderTest { public static final String TAG = "IndexV1UpdaterTest"; diff --git a/app/src/test/java/org/fdroid/fdroid/updater/Issue763MultiRepo.java b/app/src/test/java/org/fdroid/fdroid/updater/Issue763MultiRepo.java index 6f5608f4b..e44d2c375 100644 --- a/app/src/test/java/org/fdroid/fdroid/updater/Issue763MultiRepo.java +++ b/app/src/test/java/org/fdroid/fdroid/updater/Issue763MultiRepo.java @@ -18,7 +18,7 @@ import java.util.List; import static org.junit.Assert.assertEquals; -@Config(constants = BuildConfig.class, sdk = 24) +@Config(constants = BuildConfig.class) @RunWith(RobolectricTestRunner.class) @SuppressWarnings("LineLength") public class Issue763MultiRepo extends MultiRepoUpdaterTest { diff --git a/app/src/test/java/org/fdroid/fdroid/updater/ProperMultiRepoUpdaterTest.java b/app/src/test/java/org/fdroid/fdroid/updater/ProperMultiRepoUpdaterTest.java index aad16e4f8..d62a98eb9 100644 --- a/app/src/test/java/org/fdroid/fdroid/updater/ProperMultiRepoUpdaterTest.java +++ b/app/src/test/java/org/fdroid/fdroid/updater/ProperMultiRepoUpdaterTest.java @@ -34,7 +34,7 @@ import java.util.Map; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; -@Config(constants = BuildConfig.class, sdk = 24, shadows = ProperMultiRepoUpdaterTest.ArmSystemProperties.class) +@Config(constants = BuildConfig.class, shadows = ProperMultiRepoUpdaterTest.ArmSystemProperties.class) @RunWith(RobolectricTestRunner.class) @SuppressWarnings("LineLength") public class ProperMultiRepoUpdaterTest extends MultiRepoUpdaterTest { diff --git a/app/src/test/java/org/fdroid/fdroid/updater/RepoXMLHandlerTest.java b/app/src/test/java/org/fdroid/fdroid/updater/RepoXMLHandlerTest.java index b5df872ce..7b568c579 100644 --- a/app/src/test/java/org/fdroid/fdroid/updater/RepoXMLHandlerTest.java +++ b/app/src/test/java/org/fdroid/fdroid/updater/RepoXMLHandlerTest.java @@ -53,7 +53,7 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; -@Config(constants = BuildConfig.class, sdk = 24) +@Config(constants = BuildConfig.class) @RunWith(RobolectricTestRunner.class) public class RepoXMLHandlerTest { private static final String TAG = "RepoXMLHandlerTest"; diff --git a/app/src/test/java/org/fdroid/fdroid/views/AppDetailsAdapterTest.java b/app/src/test/java/org/fdroid/fdroid/views/AppDetailsAdapterTest.java index 3532f1192..8a904f4e4 100644 --- a/app/src/test/java/org/fdroid/fdroid/views/AppDetailsAdapterTest.java +++ b/app/src/test/java/org/fdroid/fdroid/views/AppDetailsAdapterTest.java @@ -27,7 +27,7 @@ import org.robolectric.annotation.Config; import static org.junit.Assert.assertEquals; -@Config(constants = BuildConfig.class, application = Application.class, sdk = 24) +@Config(constants = BuildConfig.class, application = Application.class) @RunWith(RobolectricTestRunner.class) public class AppDetailsAdapterTest extends FDroidProviderTest { From 404796a9faf54d8d26c59d875d5f7ba4e5595c80 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 19 Apr 2018 14:10:47 +0200 Subject: [PATCH 07/19] switch to official support PreferenceFragment #1379 --- app/build.gradle | 9 +- .../support-v4-preferencefragment-release.aar | Bin 16149 -> 0 bytes .../view/AppCompatListPreference.java | 100 ----- .../views/fragments/PreferencesFragment.java | 32 +- .../fdroid/views/main/SettingsView.java | 12 +- .../views/panic/PanicPreferencesFragment.java | 25 +- app/src/main/res/values/styles.xml | 2 + app/src/main/res/xml/preferences.xml | 8 +- .../AndroidManifest.xml | 20 - extern/support-v4-preferencefragment/LICENSE | 191 ---------- .../build.gradle | 41 -- .../gradle.properties | 22 -- .../project.properties | 15 - .../res/layout/preference_list_fragment.xml | 82 ---- .../res/values-sw320dp/dimens.xml | 9 - .../res/values-v21/dimens.xml | 7 - .../res/values-w720dp/dimens.xml | 7 - .../res/values/dimens.xml | 29 -- .../res/values/strings.xml | 29 -- .../support-v4-preferencefragment/src/.readme | 2 - .../v4/preference/PreferenceFragment.java | 349 ------------------ .../preference/PreferenceManagerCompat.java | 230 ------------ 22 files changed, 40 insertions(+), 1181 deletions(-) delete mode 100644 app/libs/binaryDeps/support-v4-preferencefragment-release.aar delete mode 100644 app/src/main/java/com/geecko/QuickLyric/view/AppCompatListPreference.java delete mode 100644 extern/support-v4-preferencefragment/AndroidManifest.xml delete mode 100644 extern/support-v4-preferencefragment/LICENSE delete mode 100644 extern/support-v4-preferencefragment/build.gradle delete mode 100644 extern/support-v4-preferencefragment/gradle.properties delete mode 100644 extern/support-v4-preferencefragment/project.properties delete mode 100644 extern/support-v4-preferencefragment/res/layout/preference_list_fragment.xml delete mode 100644 extern/support-v4-preferencefragment/res/values-sw320dp/dimens.xml delete mode 100644 extern/support-v4-preferencefragment/res/values-v21/dimens.xml delete mode 100644 extern/support-v4-preferencefragment/res/values-w720dp/dimens.xml delete mode 100644 extern/support-v4-preferencefragment/res/values/dimens.xml delete mode 100644 extern/support-v4-preferencefragment/res/values/strings.xml delete mode 100644 extern/support-v4-preferencefragment/src/.readme delete mode 100644 extern/support-v4-preferencefragment/src/android/support/v4/preference/PreferenceFragment.java delete mode 100644 extern/support-v4-preferencefragment/src/android/support/v4/preference/PreferenceManagerCompat.java 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 fa9199fe74c7ce3a53d908c73be4d7b9ae4b13a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16149 zcmeIZW0YmvvM!pHwr$(CZD&>5w(UyWwr!)*ww+mN+qzYI?S0N(Yu|O=Y47)q+2)u( zW_;13$A}SVqldf{5HKVF05~|nk%pgWe2xGlIv@Z*A`k!o5&!^zfVH8$jhUg0p0$~= zk%J?xtCgjZl9tUHJ+$Xk_4eI7U~Q%&P?M2F81)3b!FQ&4vv6KY)^pQZ5}CNuy{+gE zOhsk7Ao3emv8==9;yPb7W>xZ5T_vAh0HZubf?JSs%>ysJ=CPT#fWt`L%Da`2x9x3n zFBrD?W3go%cvVIg$%2{%ast&v33zX;doUz6OaX@r5&v0z$VBNGUyCqixud!6h@H}W z0Jaa{sx;t5zS>h8oZ)XO@;6N4`#E*u zbUb0JT(Te;lFS=*W6Ik=*ALhkbM^Qor>loF7CNci%pfo$Tr;in`%6xfR!Kt zK2&<*_aD%jNY#Otp;kQ>@}REPF`F6Yu1liqX;0`CqnZ;i&ith{lObOFn-SK!5;t^6 zrmmWR8Uyfy&|TF(>2Y1?r*_rCS3ZR(N6qk*AlEjN} zPj1!HosZ*ykve|6&juT+iJj#JF;m*qQ(JZ9HNA*2oZg=i#*VFit z5u1&pZLHu}4YbF1ohvVP3-quj$LSeP{!fmSn^rAa{>y;|zW@M${Q6a-b#!%%jMjh+ zz=s$4)B=&>KQ|!I0{DV4Aq)&;kk?KZTc-S~zEn zDIDOiQ-gyuGY`i`b+ZpoK|$~F(WPX|$V#h(XiI8mT;qiNqziKL);)CPgR%8yz3XO4 zK#EI7L{m~Qib3j*#llKV%r!|7jma%eMNh9#Gfp$uSlwCyd!k$p)T0D&mwv4p^Q0L)>92zSWK} zMB0o$HrS`+XzZbqMGN@G5qIm7d^Kwo#?tv?7R4CA^_Jo$)1J&qGV%&( zt&S{4R9&f>d>GPdgTRMmRNa*)|B{@2;G2ql%^Mj8+N(dp;Iz2rBth@T3;Sm%)nDI~m0mx=g;+1G~?V>8IK zuE8Q7#fh8yxQxwCs7ePU?v(6+S%T)UDX?)By1qhGHNT%JB3VY>GO|!bD9{OQ2AW1* zZ-lH2yHH~R9nG?+vK>|UT?zMM3e@E`#VX*j743H;EqVT zRY2C-dZ0cpuf=C}bjK0)GX3La{6qbrn%&7v-6Lt(Fx1xEyw10KcyM`)M3lc_2O@9WWmh zAH-r5iOBJ|CHa7I7g^;EiVz5~j7I8-$SA&I{e${m;R$x6CrlqO_awV|v`E5bGnCZG3@l`=%UyIGd){Lumn*6YKddJr~*y3;ks+Dnb zRdNQkAoU;kDk@0dXPd#sGz!S;%c0P?#mg68SK-I36O)W9T{VE~$X|*uZ`{Nuogv5V z+N(@Y3)s#scX>BsbmV?O&}q!Kvh2K5hb{oDwIFVz+Mw)|Ak$pkGi&H5V)G+GJ69tU z(_f&UE<4;kL4>`ZmkOF}yL?qTm!5k6Y4Hq(T}v>-(=|`xS;^|g{5p=f(453IyXOM* zx^n?*7i#wXgavV^5Dl!pKUtC{(oNWDVIgom%i`J~6CH3pYUMKM0BH+fSyL2&hLcrF zHgU>7K1Q1IRQL$W2$qKoH_3kxe;JQA`6qGR5>--fU=o7R2n2zf{t;}AP)-WknJ~hR zJOZ=^o}jfc=-0zJtgRtWar%bN+9bRdPI%WuTowVw#+F@YtE6%T{^v z6<0X>-i1zRV(#2t(Eb`_7X&-8s;+or`|XBU4m190oETl&=yiQ2I6pzZRGn%k2IFYV zl_^L??58Ble4&m`BiSNSHwK)KTN1wQ)`+bviQuH<21-*Pbg&$^1=aP0?HE~6A=p>K zVh?7Hh}z(4m>e3gdNdt?-iRG*9#Tip${N&!Gu)E7+eHv|(v?X^8@W@h6FF}5 z#X6~(_BX!H@M+7g?7VKAh)sbDMz&itO>0UOm`(;CKzlF9qTS#;cEC!<(x?NE*WL?I zbwkxI*Mpzb=p?ztRuD$jNS}k?+!Mh8!SwwSFZW{v_%gR~6Yd;7+C$EHAWC(>3GO+K zX`s(B`qjLEi(6vn)W`4qvU}y62twdw3gR8|vq;!GbS)rCxQW^4<$>0wBSfMdwxnd8 z2!pIlXc0(;q{BQdhcdy{W{^D-W{raKSVILKzxFYcdks8HH^BI$ z*d`eJV*u-l$sQ;_41fJqXR=t)GAWv1A}f0QjHsOf=hh{30Kw&OKc=<_W*SLpN*)gZ zb%WRhgD(l>@ za*v4cJeO=j8P@JK5d{3PDWg~IJmEQ`QyeQW)(_B^)3zc2w8HI=Tk28hYqTYnCca6i zGIdB($)oBJJRyBRtO^Et$<}cv#P>!gz2*QIW8{Ed)R%OCth-C;uvyyzyizW_o%K{4 z!dP;yY{tB*#hdx~YLrrS+&Uk_=Z5ulZe}gtALf!iN6#VGvznG6<==ZcgBe&I=P&?3 zEW#Lq>gJFfoC(8al?v?h*Nk7lS+pGi3AC*z2Ym`JHZ`!6+oj`n^-l7q7KF?PTCj!q zgM+>;DR_THbwth$K%GajLv;qfH)vcM>rFz!Dz4ygYbEAM|L6@0C5`#1WR2(-$VJn8 z1_Zpq?>rQWp11uadO;R_4sNj6(7oRjvwis8-Lj>ux|1cHMf=540A24mbnnVqQaLQP zwRqR5l^FFdsQJAFu%TOO=^4c-gg21{<>?Jy!!_m!e$bx z`%>bzbPvXxI9G6a0mI2lkbLjH^4)>2B7i>P-3Yd09I1z-&l$vu8ClXhmD%z2Yk8kZ zOrEO#-LuP(Fwyy|&i2&#rKfXd=|*-0Beh>wl%R8SC>6F8MUvJb1y@~WQuFB`lE}I2 zZM|Z#(h&hEwI}kLmPk1txkU?~ARme0`w^F6iATQmzh{6^h-m!)et754aN9XGdLUMd zI;2`bpfQ7m>_n&6fnT9gMxkUJp!aqOaZ{FdT_CSuh3V-az#f>x>&i##1eyu%>H@+= zXB(D>cA=_envo_*c1OTvYtQbU9%|lQ3yzT9;J}f=Ehy0K#`pcd%*u8syj{@ zf#ENS2YsW_Q;;fUn ztkKH9YRjn_UlGr?|GrzLzHF=bHR0zlv8gI5eY`@leV<@M)TjcG0)rkFq%A|auF%Yu2N=~<3xu}$|}(3DR%G&L7?N{1sxK%@Y;JjrNLnNhT5at zTZ7z9l_hUDV+roDj!gxd3J$KjLc&)ABMB%8h=?f8apWw^7~G&O%6xghaw}o4=pfLB z|A0DxXg{7>*U^G|vgq2I!>?kROX@*@isj%D6quc3Cf%@MX>`v_1K*OQ3GbgKn#?9Q zn20UfuQ{Z1Ch(f-~q|WXqyD$Uvn;fvKvmmq}7RW65$s!H;2K`=)A{8I@fQ z=M$j({E=JUj2yF!nIhfhV`v4Oe1i29RL-#q+d)u}dNbqmSMc=2>$2f&<8Yk=dNQH3 zf_c3dPf2!&Q`s3wcCs4lmF3~Brt(#sNy@tv324g0vBD@!193u_{e7!FY1F}VCYC{4 zLn>wv&3<^LD2Q@ql_QN(Ka9grVx2W(wE`YQa;5_CosG88%f~yZ4C|d)_9p%7i3!ik zrOV>M?F0=-ZY{CUXgcR|0(PgP?SuiI{haC6rr*u0t}xR{u#K3l(=JS+Pta%HEJNrD zjP)TMy4KxfQfD8QBqJB8gAw~xjA^xO8HH$?CR+0?cj7>J8(DS4o#A$Ixra|T(Zsq4 z#UtqHTA}b8mY8w1T7gVO{Gkf zs-^>aC{;RwV3U$-!Mt!S_7vkv%3^0o$t!X1=^r6gwe4gqi*wA*I5sbxmb_K!d zi71};;j=cy1-G*OF(lI547NOjl=l-mgVk3j@~0mD6QzDiGSnrp(Q){}m~VRHDMlxx z+Hp~WaG=3O_&dC+9s|7E!4dG8S^FT>+*v`<3884=(mPT>c5q30UK7hii7g?9Zfj#K zmZOEM#P-iEt43@1O%4a_x6EY=b5RyL$hQOg2b4`3d4wWqg)f8YeIt{4T*l1$wpb`* zLLIbjmbbQ4u|%%PAXvQR8ZARU>}xGmO`Wrfgl*TX`kfR60M|hcIjru;52Cq> zA+o#Nwd|J7!#kC>LrnY{!Us~dU@^6;T}FXL*V3aR6wa)rVk0}_(;%QaPj7J{XY!6- zS^e&;d604isJrU~XuDnA@g58|8>nud#U4rRVD_=~V5m%h*OKPhxe^?{i#U|kr%DM1 zbNs9a;&Br3i*@ur4)jRKcMo`$t7q{V9b1Dj1CL)GdoWlBqcJ+8BGjg-1DjXwOk3dz zU4boqVjLXkq<`!kkq7H*gPL}pEVM$j+S-j&%WIZHsz*4n5rzUMv)=X{d{Qp%5ISqA z5{GzTrXa6I1osDPoUaf)$_G$GQh>S>qmz*feaTKp+DuEP>;=>n0e zY|Mj0&f~WV;KY-ChUQErCziPr1gnFr>&-&j{UgxFQH;uVHnMppBj@LefQx%p8nJ_Bx(FdGrXg)z>2+(vOCv z!B?vN&V;B6{i4GAz+O6lk$S@R2YuI9+N69|#|)Sl8%!xBonZ)Kh1 zMNj$CSedcEJ(P)^rm5*RHt)=B`|A@-#%R~HEMM?3GBP<+ppITG*kkA=VFFX$-63M9 z>n37wX1Ge#Yt-ZYMB%^GXINsqD4_Ek*tCk3tYdVz;|ruvzO!B5BO((lTwj7PH!$tb zZ@%L|TXJc+;he=y00tbwS#s`N+gQ8BJx|Dl2Di&*Zj|Ch1Ds9~s zrB!V$MIPRH50}=C3wMRb4UQ;QYF=4rEnQgaJ_blqZVf-bAkVgF33878unSaw>B%?W z8MK*=0MH4|FXg8|O@zG)S?rS{*moVM`7kyicBFAtJ*bj|R9t0xn~KY;7F5y2%>9UWw#X>=%rrRHhbwHkTCvcc^Ql6PpNo)%qx4~Hi=N#4oQL)QT zskF|XAw9rlbL5&IB1rdXx9aJhu_J3L_avefoQT-p^dBh09Z&Q=By=Q}q+nsGDq(nE ziLnqz4u`^7=AD>C)UiOSsL_U1N*H@(W~&D9O@eXjis-L#@nQ4o*;>Oj9)ElbZW^)* znEpyz=Za>arLK4SLk&QaS^fTQfi^oK_zirOujfdpxkJ~_>{4(&3}I2jiy22oqY1dB zw+LE9wB@$HS?r+0NvSJ#N1GDK>H^7H-_31}!>5{aN`#1a8vAN&u8dz#Kg2{~d!X`23k{#*kW8-wlCx3*Tu)Z(Aoj^y4Sjb~?iH}~1DPf#8J1g5 zmv{zCi*fxn0dg1I2KMA_a?o!Ijh1L;l)+kD6?#(y6M7RGma2urcm+k%M_t0Da;VlO zp2G@k?;BU3DID4w05)Qu)z6%X=Hl#}Kv;{tFA)%%2e7volVon0qOV5w z$~01As{}W0&kh>a_cv(zz*xciwONowZ|+TS%OCDMVLjkD*-ID~Rn%H*!)1Q7CMD!$ zt6Ac5n>6oiucyU?xtc&yotlpC-v*R$pLW|u!ACh~&Y?UURxx?5Z>EHSs67LQCXa!m z1yOj|U#zCJ69ia|*Kc`d7ks69A0Q&`<86Q^nE(=JZ8(|>1Dngd-v;yuy>X77v|QD- z4nsJ-`+6wF%z(f~F}**owS?rl`UZ@j2aFAaE%p~_tLdGi#?m*cYEJg~dCrNbp3ytK6?vA9|7e~IIVjl0-&Y33tAWLD#%Ln*2J0F6Due;qi+FjF z&RWM4Iu0P_ytzfgQ60Dal zQKp|~@J|8oAn7a4Y z*%+4i8op5CBpDt}*BiQW!H)nr8za0Jg+CuQbpgF&G+tgM-9TUIoTjXeb@oE?V5Yu< z^MLko@Z_OrNAeE8Ek-9rn>;a7KQ%!L*Z#5`MSY&~p|S4J5FIXi0A|d{IxL>75k}RI zdvK{@73b>KwR`UL-9V|UZN-?gafZ~3M(^0B8{9!|Kq@dfXU7uc$Xpj4*30JPHkapc z<0PU{F5Y1CYGRy8vd1SA`)9{mga4hl0kRT)n^DXSj!dSeRR)_$d{Ry z&td3&fF=MYBryaoERP@6PPQsyNJt14P()PUpvX*+G?0e)APH*6Rdof2d(xM2>M3~w zkS6D0`g)a!mNtgNuG)+yF=#_8C{9J;n)xe-T$Y~q_FGGa;Rj0DFVa1+rVg<=@goih zNC-$wseWp4uH2I*Mtf27SJugJ>6zrUifd$#=pC@MFHB*&5 z48>6xLj~%Hz}6aV^ zuI~6eBs_@~Y}B(zdlV>V%>)7-rzb}iH=yj&xn#9 z05tF(C?as+CtdUb-X#H+ij%T2UrskE85)Qm@=2M0cq8*gzBj+IHyw^#N% z{#Tjd)GM&Qyo9_0WQsiY?(Lk~yJg8DZ{xhJB537JhVwf9C6FKDcfH}#MO!qv6%TpD zOw{l(p0uOw%7Pn+J0mSzMzAELP-^Ld-x@|WC9 zwOe&%d{_)28IzJrOAPK3hoio&0bpB7G2a2@%=b)@FE zAHl|Q-mv!8yo)XEb?4v^2V0yM5CfON5@MF4R2jgPyoarod5!XnXyUj7>xjmSBz#R3 zN$NOQCvQiraD`!zI7THWjXDl2G9RASU_aJ?PV~UEY@E}VDGa>6s-$Ry(_dtdhbwd+ z7WM5E%&JCHQzmlGN7}pzt_7wBk@6BZUu9`L^VB%~>R-_kgfyTP&USYb_J+E564K~@ z7LJ${NYxrM{WB-}Fe4FL$T;cEqV=v?>i(WCeb+5m=gmK${$`S#Ks+ z8wEt|efxTxjjVpBlA5u*X8E+cpzN3}{kGMR6dw%&aN;9QzDCI^Z%t;WD);+9j$fw$ zA%&@K7uZi5ZwPxAhRl2L3BUB0Gd?3+HQVr7nAudQVGbdKwY2?=0sG|au^$&nD+%v} z<%1m>E1aF_0?XmK9*?p7DYfSA&%yvO(XKC7Lur6mcE0kyN4Kx>xdi%FdOz;d)NGb) zR2I%M2Dx$2;bY|3@$ox+oV?!{xR|@!b7}NDU`cN=VukO0nG*8_=@vu;#>lZEQx=ow z2}48z4`+~u(Q6SkKx*y!LFy~XGUA6&+>C&y#;HB&nX?Jt^0>HoH;2u}MzcuV1y{$$ zCnp~|(U+uI7bOoi1L{`MPi@;=zdo+s*?I7~owgi2J3gia22xd}m7d`9*j7xSA)hEQ zij)38>yZ?4bzqTR;Omki%0U?+mT%#q+J;GG@)^l|+z23V$2vSI%6TTi_rDGe75{Yi zxMS#j{{|!Av#9OB4<+=4v~)Q*+&qBl4wTJJ&MYgmWmZ)^C3qB&12JA* zl3Z>xOsy{uUBm~L6kGf@u`6Q8p(oapzGJhNmXkR&_?erI1-TNfEe#@l-7RvMSPwrq zB00ClI}II5J|7x=g)dK|Ofm-zPbPz=6s#;?Dm%R;n;IB!s78VHuPa{g^($CBYmw~n z(%jax@_Y;K{qvmXYNKDk(V`MUWl*8|&D#uyE1BfDQmsJ0#mZ5AN*5(>0#9Hx0s)^l zwlaPf`AqdHL04IIu8%~1SE5SwU(h#mcvIt0uWiU<<$-Q{ocSq8mpvP#mXkOA(vPOu z6DAzs`Mq~9+|LVUz*FZa-dwGa?DV!95z<;26)lZgKCGZFyK498S94F>M`&M`s(L0Y zVzR71aY$gVHfQeL0B>_O^yxlyqAL2<>4166xMo|YHFE3I_=JkMgSzp16e1+)>(J_iRCici`?5zhRncVpAcTBc#27s zB=@Mz9e@~)CHkCIG8HTjEiOtb6B|ljuKJTWQQ>zbmOvnSfD*We#zkQb!%5jhg-lh9 zMRuSu<_ImuIJp$zG+gva&rGm^BpW9Yc+XGDw1nZ-E_D|ce)vz|z6$+36^NK0+g@00 z_Kls;;3ozv^jkg@GY%>zSJyz=GO_L9B2wQH&{PLoDppSc!@P}8iwV5q(A>OmC(WP- z@g(!1ICG&JxSYHX<7c?>asp$(7ZnoIJO(LuCfCFOz6VtbMLn+{4x-fZ)y|9aR^dYT zcL$1?x&U8jnD9sZAeCl!p;{8FQG^``g_ebHXdprN$Jzi#cb0=Sb%w<=-JXh^Kyu|y znF|0LcYC>{b0vI5}9C zgzk21MiXTyr?x@j9v6K*!_kG_WVD>*?O```qA2n};2$`kDVUvzB8b|EL9hYcddbksRa`jc>c5c=`Mkk~#a))u$a7uBQ9MNu_AVu~F z>kN3KHe~tMJ}0Y97HpSGM`ONGxEepqtD-jd?6rlTIyROcO`ciW&^&Gq&pjU z;!$kTQG<2HMC^jDF$slIXRcW$H$7zuoJ)K@vax~|E&Hc;NvfV4u|%iOx)N%4It z`15h^VE8rB^AUek2v5T^Hbc_dEk0?uz()-yo0}!@#hUhh8SDiWkeZk01~7Veg7Bty zewi{q{8gp3fod$1W;uEC$FEyY!VY>W_S)93q2~KFAmfu5Szeijh#s)1f*M;S){G)* z{oUQZYkaOo3EP{Nw4;Z*(`60xQSrp#= z4kr!E543Q{*K&L%iDX=+2Rk$ssnJk(#CP#QG450(#Kv8q9}-_{n%x=GX`2DX$5Fg~ zFvn9@6)SGSnQZ$7*Vop1WUZE{C>MWl+A1?SYT9VcFT@wY}{VqrB@eTkP(S(dK$9+aS%EhbKv}36|64`yW?mI~#<@#)YHO|rgOn9> z{@1gV0EUpw*Ce!AHoEx2`__&E2OuAX>hA!ZAZ*QXMIeoN8NHBt{T61AaWy&=`vOv& z%gQ&3a#GfPu5MWgr&KLs94QrqYoh`(xKP#A^)n(}Me@R6y5j*i{e^DrpgBqV$Z!&2lH@g>RI42}xi zb8|Z%kNTeF>^SFzip=Bdp2!&dR6G9l^C)d7j|kMcnVGC|DUxXPh}Ue`8b_jKb-V?= zL;O2BimE{6gCg0_f3!Y>6di%Z{TSI9EAB$BXSM645Qfdb6NHmUiR$nt{FPpPK}{2O|Orv*c$ zVH9?#KHUP#4vrR>6a`{iukq^*aw9OD7b}N!QO4q^TZjSs>7U?*RZ~|um@+FyYP2O= z0HtjZ4cWlw7E`C^dziPLkHF6fZHQwHD`oks%!L}f;hUk#*MeT*qey*rh|||v)v-lb zgQrLLW|(S8FXL$L-ys3?@_Nitd1m)cakwseN;G!Y+I?t83*KBzSm*e((LXZT9fWLl zDPByX%s!cr4?o$%YQn!a)`nzOmVRHsW6YiEyKxm9Ca~#LRZ#COc|;cMty#aw>jW3@ z0JmfU<&+AXr)kw$;>Z&MAA5GebM{9R0S}GEKiFod#p%LVczPn~RP}m&c-VdfeL?Sv zif&^z=EpK6(kznRVu$d;8ZEH%dBjZ};zhRr)+CCN*h+)xmRWLtwl2IPg1~vqBf!b* zjs4{IoR`++&7^V+zbT`Vk=!?KASvP0W{dif0AGGEGVtjPZUjcQBQhBwb;?` z*Aua`jB|&B9!Z=c1$i#12BakQ&V}%Lt=*%h^z&zb-yJ$n+Ki*86iPBSs?!z?%|D}R zlvv;H;^v~KvT+DJQo>+Fi+nXbW03%y5EOy)?maLU4`sRhM$8d;R!0B@h8bBCbFIbv zg}Fbno`GlZYa`T#!Wx_uhSX64c8{9xxg;=RK46(2JvY5@5x)asIAomd9aNZI6Td5& zbe^R(KHjD8kN}iZQ>ykOYQTk6gAFjK#dr}5#$dRQtYe{xw&kV4xrGX$kN#Ii`I__KEoP4)N{yPG5lqjv& z7aZ?bf*e=3lv#+*6E9LK79iuxj2HOvC$RGg(JgEU6%~PC=H1gYCOPG-j!B99NcIU& zVpB>li&ZC@E7CZRs?F?BHgfcrU+$9iL6>`z3O~F>S>WUHswMfZqvpqV&xfG;Nu_(F zElyR;`Y({P5b?|9;*}hb4-2vQob8a@gs1R z;6o=-H;BtY_);e_{Pf zCe01^>r`>tFPSKRX8i;4`;dBL+=O`_J$&G$8>E_xh%7}R@QNR<`xyzGuA$j^*im$% z<$81V&lYrPiQ`-k1Zbvg(eNj;x+3&1`43fu!Cn%OwzE{{FJaK7`E+~Am+XRfK$0Q% zRl|LFUhpjlp`^EpF4x*_*26`I%Vy%Ybf2uO@wN%&@8xvVF`W4 zpWxmi=}GXF;-`JB%pQ-_BjI&kAF2K1Ear~oyNS;Kx3Mkt+-#g2|Kq;Qcj#FF|GH`K z&;S5r|1|bLS#9l&jE(G#tPPBGEX^Dob&T!xOstHo|1l%5peEz6#tPqgs%GhCt|b-2 zG$K7%8#juVYI+jO9rsgO7BfUsp+o=x1b^nF`qIC^lJX^F|G2Qt6ue8Tt(s+sc^-zCVp@PLes3ijxf{1b&l5}yVo^p zS|xOW(9cf*gs8KIp*M5ENAHY+Sa>50J+TiMl~MqT7Z?L~PRHpG`9ccus%Rld2ME8+ zTBO?xoI=(83xV5pzk;8Om@ zRNFz~1D=w~BvS$!+od9HhfesJ8apEwO1AC?4%Q3>5`nj>(rDg&^(-Qa+F&sjnga7U z0yfA!MlSPMnL)%`?z?mW)do+CII!*Sc9+J$0R);bFH4_crdr%|`?FLm z6o}?)+Sr#=b12y^h5Kie6!u7kQL$tX&^bGh6g);kbK}Unk&?svr{I1RaeIqblICU} zMc?aJ6gG`(RB56J`3oV3I)7;EejwAG*b(M-IV`}6#c2hDe=vPKpZ=GAc)4S_BDG4~~rABqY5R2+9_LINB6xWIUto+Y$D3ehVrrP%E~p zT~L&5#d%H?mLyIXLO!2VPTxK^tVK4ixEzHkwbpFIDe1rQ42%;kZ30sH+69IYeC>#m zb_zAaxorFT-N|TD?IMk}vl=(1wvhBfc$1bMu*rIXffv_WWjsRXJ-O2z-eQrqtF57Q zUus7!GlVo&tR3bnBw3LlYKn4s8-`E&)_wTU0Mj1b{&p@KRddWL#GU7CgqYGn$n=cF=ZDeGnQf<@ z4cGON99p{-s&Rg z=sdLjY{?LrbXl^F&gE-k-vO#ZNIXneeDd5k$Qz~U#i>lqdOuOv_go`Mz5P%{ANc!K zB41ZqTNk}EK^IR@v7<0mT$A(}X{gzxP@W=|!5;6sUjRr3>5Nx{}~Fj$Hk3=r32o|6A1Gm`D>65xmi8h^4H=PO`u_CLT3PZWOAqb9#sob94^!Q$ zp4G9V^uUjsPfeQ)JBj(KAFc0j>tcm!!MxvO>bT}PS@9fWd%7o}{@zT#N3ittZ2vRC z|NFon`oEa|-_+m#oBI3zHTCz)f&S~s1pDnxzoz6I|L1D|AD(GuX!(y=_5~0b=!#_q6{|fo*q~9Na-w?E4BeDNB_xD%e zZ^nP`a{d6q1Dp#e)Be%V{7;DAJpvqBN);B75LW<=wHwRzx+P~|2vrdRm5+| zzqI}H+WT~WX#3A9|F6KmHU$5@Haz{Gfd5l_@K>S#uFdb_;1Bw3yKl_@-V6SzRQRiq zzm^LB5>wz8^Y=pjcNY4cdHoU3NvGd=_^-PBH4py_Uf|dLpWy$U4!;xKAM{&? zLe@X&@Na4Fud4ht?fpwif#2HS%J|=D^!v&EgMMo?&i2m?^H&A_nqmG0D)77h7vz8O zDE~(N%VB>kj~c F{{tE5^BMpE 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