diff --git a/.gitignore b/.gitignore
index 81de63c889360ec55f4d0a168c5f0cb248f86678..5c038db904d1d3762e5118f8b5b1acd460340646 100755
--- a/.gitignore
+++ b/.gitignore
@@ -1,17 +1,64 @@
-.gradle
-/.i
-/local.properties
-.DS_Store
-/captures
-.externalNativeBuild
-.idea/
-*iml
+# Built application files
+*.apk
+*.aar
+*.ap_
+*.aab
+
+# Files for the ART/Dalvik VM
+*.dex
+
+# Java class files
+*.class
+
+# Generated files
bin/
gen/
out/
+
+# Gradle files
+.gradle/
build/
+
+# Local configuration file (sdk path, etc)
+/local.properties
+
+# Log Files
+*.log
+
+# General
+.DS_Store
+
+# Android Studio captures folder
+/captures
+
+# Android Studio Navigation editor temp files
+.navigation/
+
+# IntelliJ
+*iml
+.idea/workspace.xml
+.idea/libraries
+.idea/caches
+.idea/navEditor.xml
+.idea/tasks.xml
+.idea/modules.xml
+.idea/assetWizardSettings.xml
+gradle.xml
+
.classpath
.project
-lint.xml
-/dist
+ktlint
+
+# External native build folder generated in Android Studio 2.2 and later
+.externalNativeBuild
+.cxx/
+
+# lint
+lint/intermediates/
+lint/generated/
+lint/outputs/
+lint/tmp/
+
+#ktlint
+ktlint
diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
new file mode 100644
index 0000000000000000000000000000000000000000..41d41678a275c37553153aad7340a2144155f639
--- /dev/null
+++ b/.idea/codeStyles/Project.xml
@@ -0,0 +1,157 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ xmlns:android
+
+ ^$
+
+
+
+
+
+
+
+
+ xmlns:.*
+
+ ^$
+
+
+ BY_NAME
+
+
+
+
+
+
+ .*:id
+
+ http://schemas.android.com/apk/res/android
+
+
+
+
+
+
+
+
+ .*:name
+
+ http://schemas.android.com/apk/res/android
+
+
+
+
+
+
+
+
+ name
+
+ ^$
+
+
+
+
+
+
+
+
+ style
+
+ ^$
+
+
+
+
+
+
+
+
+ .*
+
+ ^$
+
+
+ BY_NAME
+
+
+
+
+
+
+ .*
+
+ http://schemas.android.com/apk/res/android
+
+
+ ANDROID_ATTRIBUTE_ORDER
+
+
+
+
+
+
+ .*
+
+ .*
+
+
+ BY_NAME
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml
new file mode 100644
index 0000000000000000000000000000000000000000..79ee123c2b23e069e35ed634d687e17f731cc702
--- /dev/null
+++ b/.idea/codeStyles/codeStyleConfig.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/encodings.xml b/.idea/encodings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..97626ba45445dc9f3afa66e6a149914dc39e3df6
--- /dev/null
+++ b/.idea/encodings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/ktlint.xml b/.idea/inspectionProfiles/ktlint.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ff4779898c68934d6303d2e318c7812f59ee7712
--- /dev/null
+++ b/.idea/inspectionProfiles/ktlint.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..30d5fbc6c8ee164806c145f816d74d0b565a96a9
--- /dev/null
+++ b/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml
new file mode 100644
index 0000000000000000000000000000000000000000..78eb99429f19440fa82e98be13fc4cefebdedd2e
--- /dev/null
+++ b/.idea/kotlinc.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f5c6d9eb6a991d73b50e99d55a1a22a208ef247d
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7f68460d8b38ac04e3a3224d7c79ef719b1991a9
--- /dev/null
+++ b/.idea/runConfigurations.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000000000000000000000000000000000000..35eb1ddfbbc029bcab630581847471d7f238ec53
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 244d89366314d2c9a1b5825ff0eebaf5412d9129..bd0fba222bdb666414e4225243824130d216d75a 100755
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,17 +1,22 @@
+import foundation.e.blisslauncher.buildsrc.Libs
+import foundation.e.blisslauncher.buildsrc.Versions
+
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
+apply plugin: 'kotlin-kapt'
+apply plugin: 'kotlin-android-extensions'
// Manifest version information!
def versionMajor = 1
def versionMinor = 3
-def versionPatch = 1
+def versionPatch = 2
android {
- compileSdkVersion rootProject.ext.compileSdkVersion
+ compileSdkVersion Versions.compile_sdk
defaultConfig {
applicationId "foundation.e.blisslauncher"
- minSdkVersion rootProject.ext.minSdkVersion
- targetSdkVersion rootProject.ext.targetSdkVersion
+ minSdkVersion Versions.min_sdk
+ targetSdkVersion Versions.target_sdk
versionCode versionMajor * 10000 + versionMinor * 1000 + versionPatch * 100
versionName "${versionMajor}.${versionMinor}.${versionPatch}"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
@@ -76,9 +81,7 @@ android {
}
dependencies {
- implementation 'me.relex:circleindicator:1.2.2@aar'
- implementation 'io.github.inflationx:calligraphy3:3.1.1'
- implementation 'io.github.inflationx:viewpump:1.0.0'
+ implementation 'me.relex:circleindicator:2.1.4'
apiNougatImplementation 'org.cyanogenmod:platform.sdk:6.0'
apiOreoImplementation files('libs/lineage-sdk.jar')
@@ -88,59 +91,47 @@ dependencies {
implementation 'org.greenrobot:eventbus:3.1.1'
// Support Libs
- implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibraryVersion}"
- implementation "com.android.support:support-media-compat:${rootProject.ext.supportLibraryVersion}"
- implementation "com.android.support:support-v4:${rootProject.ext.supportLibraryVersion}"
- implementation "com.android.support:recyclerview-v7:${rootProject.ext.supportLibraryVersion}"
+ implementation Libs.AndroidX.appcompat
+ implementation Libs.AndroidX.recyclerview
// Rx Java and Android
- implementation "io.reactivex.rxjava2:rxandroid:${rootProject.ext.rxAndroidVersion}"
- implementation "io.reactivex.rxjava2:rxjava:${rootProject.ext.rxJavaVersion}"
- implementation 'com.jakewharton.rxbinding2:rxbinding:2.1.1'
+ implementation Libs.RxJava.rxAndroid
+ implementation Libs.RxJava.rxJava
+ implementation 'com.jakewharton.rxbinding3:rxbinding:3.0.0'
// Retrofit
- implementation 'com.squareup.retrofit2:retrofit:2.4.0'
- implementation 'com.squareup.retrofit2:converter-gson:2.4.0'
- implementation 'com.squareup.retrofit2:adapter-rxjava2:2.4.0'
+ implementation Libs.Retrofit.retrofit
+ implementation Libs.Retrofit.gsonConverter
+ implementation Libs.Retrofit.retrofit_rxjava_adapter
// Okhttp
- implementation 'com.squareup.okhttp3:logging-interceptor:3.11.0'
+ implementation Libs.OkHttp.okhttp
+ implementation Libs.OkHttp.loggingInterceptor
// Rx Relay
- implementation "com.jakewharton.rxrelay2:rxrelay:${rootProject.ext.rxRelayVersion}"
+ implementation "com.jakewharton.rxrelay2:rxrelay:2.1.1"
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
// Blur Library
- implementation project(':hoko-blur')
+ implementation 'com.hoko:hoko-blur:1.3.4'
// Room
- implementation "android.arch.persistence.room:runtime:1.1.1"
- annotationProcessor "android.arch.persistence.room:compiler:1.1.1"
- implementation "com.android.support:support-annotations:${rootProject.ext.supportLibraryVersion}"
+ implementation Libs.AndroidX.Room.runtime
+ kapt Libs.AndroidX.Room.compiler
// Unit test dependencies
- testImplementation "junit:junit:${rootProject.ext.junitVersion}"
- testImplementation "org.robolectric:robolectric:${rootProject.ext.robolectricVersion}"
- testImplementation "org.mockito:mockito-core:${rootProject.ext.mockitoVersion}"
- testImplementation "org.hamcrest:hamcrest-core:${rootProject.ext.hamcrestVersion}"
- testImplementation "org.hamcrest:hamcrest-library:${rootProject.ext.hamcrestVersion}"
- testImplementation "org.hamcrest:hamcrest-integration:${rootProject.ext.hamcrestVersion}"
+ testImplementation Libs.junit
+ testImplementation Libs.robolectric
+ testImplementation "org.mockito:mockito-core:2.19.0"
+ testImplementation Libs.AndroidX.Test.archCoreTesting
// Instrumentation tests dependencies
- androidTestImplementation "junit:junit:${rootProject.ext.junitVersion}"
- androidTestImplementation "org.mockito:mockito-core:${rootProject.ext.mockitoVersion}"
- androidTestImplementation "org.mockito:mockito-android:${rootProject.ext.mockitoVersion}"
- androidTestImplementation "com.android.support:support-annotations:${rootProject.ext.supportLibraryVersion}"
- androidTestImplementation("com.android.support.test.espresso:espresso-contrib:${rootProject.ext.espressoVersion}", {
- exclude group: 'com.android.support', module: 'appcompat-v7'
- exclude group: 'com.android.support', module: 'support-v4'
- exclude group: 'com.android.support', module: 'recyclerview-v7'
- exclude group: 'com.android.support', module: 'design'
- })
- androidTestImplementation "com.android.support.test.espresso:espresso-core:${rootProject.ext.espressoVersion}"
- androidTestImplementation "com.android.support.test:runner:${rootProject.ext.runnerRulesVersion}"
- androidTestImplementation "com.android.support.test:rules:${rootProject.ext.runnerRulesVersion}"
+ androidTestImplementation Libs.junit
+ androidTestImplementation Libs.AndroidX.Test.espressoCore
+ androidTestImplementation Libs.AndroidX.Test.runner
+ androidTestImplementation Libs.AndroidX.Test.rules
+ implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0'
}
apply plugin: 'com.getkeepsafe.dexcount'
diff --git a/app/google-services.json b/app/google-services.json
deleted file mode 100644
index 75816a23d3607234060e0213cb33cd05f3f0454c..0000000000000000000000000000000000000000
--- a/app/google-services.json
+++ /dev/null
@@ -1,73 +0,0 @@
-{
- "project_info": {
- "project_number": "191380968379",
- "firebase_url": "https://bliauncher-1aee3.firebaseio.com",
- "project_id": "bliauncher-1aee3",
- "storage_bucket": "bliauncher-1aee3.appspot.com"
- },
- "client": [
- {
- "client_info": {
- "mobilesdk_app_id": "1:191380968379:android:176663723927e694",
- "android_client_info": {
- "package_name": "foundation.e.blisslauncher"
- }
- },
- "oauth_client": [
- {
- "client_id": "191380968379-qor00svlni9fh3gur1tsp72a39rpscpt.apps.googleusercontent.com",
- "client_type": 3
- }
- ],
- "api_key": [
- {
- "current_key": "AIzaSyCF8GkM4BXi6m640PPY6PN7EQHn3CGjyJQ"
- }
- ],
- "services": {
- "analytics_service": {
- "status": 1
- },
- "appinvite_service": {
- "status": 1,
- "other_platform_oauth_client": []
- },
- "ads_service": {
- "status": 2
- }
- }
- },
- {
- "client_info": {
- "mobilesdk_app_id": "1:191380968379:android:49f659378ae2bd2c",
- "android_client_info": {
- "package_name": "foundation.e.blisslauncher.debug"
- }
- },
- "oauth_client": [
- {
- "client_id": "191380968379-qor00svlni9fh3gur1tsp72a39rpscpt.apps.googleusercontent.com",
- "client_type": 3
- }
- ],
- "api_key": [
- {
- "current_key": "AIzaSyCF8GkM4BXi6m640PPY6PN7EQHn3CGjyJQ"
- }
- ],
- "services": {
- "analytics_service": {
- "status": 1
- },
- "appinvite_service": {
- "status": 1,
- "other_platform_oauth_client": []
- },
- "ads_service": {
- "status": 2
- }
- }
- }
- ],
- "configuration_version": "1"
-}
\ No newline at end of file
diff --git a/app/src/apiNougat/java/foundation/e/blisslauncher/features/weather/IconSelectionPreference.java b/app/src/apiNougat/java/foundation/e/blisslauncher/features/weather/IconSelectionPreference.java
index cf1120accbe75e3cdc306e7fffa4bb15696ee86d..57b4e882da15b8cacc64c9557aa4bab3d5362f13 100644
--- a/app/src/apiNougat/java/foundation/e/blisslauncher/features/weather/IconSelectionPreference.java
+++ b/app/src/apiNougat/java/foundation/e/blisslauncher/features/weather/IconSelectionPreference.java
@@ -16,7 +16,6 @@ import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
import android.preference.DialogPreference;
-import android.support.annotation.NonNull;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
@@ -27,6 +26,8 @@ import android.widget.GridView;
import android.widget.ImageView;
import android.widget.TextView;
+import androidx.annotation.NonNull;
+
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Locale;
diff --git a/app/src/apiNougat/java/foundation/e/blisslauncher/features/weather/PermissionRequestActivity.java b/app/src/apiNougat/java/foundation/e/blisslauncher/features/weather/PermissionRequestActivity.java
index 0be8d19e880276974d65e8a73dcb59c5061dccb3..9b4637a9a7e222dd4de16d7b3c9ec75e8da4fced 100644
--- a/app/src/apiNougat/java/foundation/e/blisslauncher/features/weather/PermissionRequestActivity.java
+++ b/app/src/apiNougat/java/foundation/e/blisslauncher/features/weather/PermissionRequestActivity.java
@@ -6,7 +6,8 @@ import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.os.ResultReceiver;
-import android.support.annotation.NonNull;
+
+import androidx.annotation.NonNull;
public class PermissionRequestActivity extends Activity {
diff --git a/app/src/apiNougat/java/foundation/e/blisslauncher/features/weather/WeatherPreferences.java b/app/src/apiNougat/java/foundation/e/blisslauncher/features/weather/WeatherPreferences.java
index eaab34c8c3d318cf2b1bf5b33e40b74bc89757cc..460e32a5838e70b32775a10996dfca3d5d9b9c87 100644
--- a/app/src/apiNougat/java/foundation/e/blisslauncher/features/weather/WeatherPreferences.java
+++ b/app/src/apiNougat/java/foundation/e/blisslauncher/features/weather/WeatherPreferences.java
@@ -16,11 +16,12 @@ import android.preference.PreferenceActivity;
import android.preference.PreferenceScreen;
import android.preference.SwitchPreference;
import android.provider.Settings;
-import android.support.annotation.NonNull;
import android.text.TextUtils;
import android.util.Log;
import android.widget.Toast;
+import androidx.annotation.NonNull;
+
import cyanogenmod.weather.CMWeatherManager;
import foundation.e.blisslauncher.R;
import foundation.e.blisslauncher.core.Preferences;
diff --git a/app/src/apiNougat/java/foundation/e/blisslauncher/features/weather/WeatherUpdateService.java b/app/src/apiNougat/java/foundation/e/blisslauncher/features/weather/WeatherUpdateService.java
index a6a6b7bbcf7f28141a31d821b0587381739575cf..92445be07d5ecb1f9e667fbbf64bdcb73e349352 100644
--- a/app/src/apiNougat/java/foundation/e/blisslauncher/features/weather/WeatherUpdateService.java
+++ b/app/src/apiNougat/java/foundation/e/blisslauncher/features/weather/WeatherUpdateService.java
@@ -22,11 +22,12 @@ import android.os.Message;
import android.os.PowerManager;
import android.os.PowerManager.WakeLock;
import android.os.SystemClock;
-import android.support.v4.content.LocalBroadcastManager;
import android.text.TextUtils;
import android.util.Log;
import android.widget.Toast;
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
+
import java.lang.ref.WeakReference;
import java.util.Date;
diff --git a/app/src/apiOreo/java/foundation/e/blisslauncher/features/weather/IconSelectionPreference.java b/app/src/apiOreo/java/foundation/e/blisslauncher/features/weather/IconSelectionPreference.java
index cf1120accbe75e3cdc306e7fffa4bb15696ee86d..57b4e882da15b8cacc64c9557aa4bab3d5362f13 100644
--- a/app/src/apiOreo/java/foundation/e/blisslauncher/features/weather/IconSelectionPreference.java
+++ b/app/src/apiOreo/java/foundation/e/blisslauncher/features/weather/IconSelectionPreference.java
@@ -16,7 +16,6 @@ import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
import android.preference.DialogPreference;
-import android.support.annotation.NonNull;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
@@ -27,6 +26,8 @@ import android.widget.GridView;
import android.widget.ImageView;
import android.widget.TextView;
+import androidx.annotation.NonNull;
+
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Locale;
diff --git a/app/src/apiOreo/java/foundation/e/blisslauncher/features/weather/PermissionRequestActivity.java b/app/src/apiOreo/java/foundation/e/blisslauncher/features/weather/PermissionRequestActivity.java
index 0be8d19e880276974d65e8a73dcb59c5061dccb3..9b4637a9a7e222dd4de16d7b3c9ec75e8da4fced 100644
--- a/app/src/apiOreo/java/foundation/e/blisslauncher/features/weather/PermissionRequestActivity.java
+++ b/app/src/apiOreo/java/foundation/e/blisslauncher/features/weather/PermissionRequestActivity.java
@@ -6,7 +6,8 @@ import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.os.ResultReceiver;
-import android.support.annotation.NonNull;
+
+import androidx.annotation.NonNull;
public class PermissionRequestActivity extends Activity {
diff --git a/app/src/apiOreo/java/foundation/e/blisslauncher/features/weather/WeatherPreferences.java b/app/src/apiOreo/java/foundation/e/blisslauncher/features/weather/WeatherPreferences.java
index 75a2192c91fab4b1efb8b307235200bf4044261b..4b11985e79acf330a98b260b375c441fb4cd23f2 100644
--- a/app/src/apiOreo/java/foundation/e/blisslauncher/features/weather/WeatherPreferences.java
+++ b/app/src/apiOreo/java/foundation/e/blisslauncher/features/weather/WeatherPreferences.java
@@ -16,11 +16,12 @@ import android.preference.PreferenceActivity;
import android.preference.PreferenceScreen;
import android.preference.SwitchPreference;
import android.provider.Settings;
-import android.support.annotation.NonNull;
import android.text.TextUtils;
import android.util.Log;
import android.widget.Toast;
+import androidx.annotation.NonNull;
+
import foundation.e.blisslauncher.R;
import foundation.e.blisslauncher.core.Preferences;
import foundation.e.blisslauncher.core.utils.Constants;
diff --git a/app/src/apiOreo/java/foundation/e/blisslauncher/features/weather/WeatherUpdateService.java b/app/src/apiOreo/java/foundation/e/blisslauncher/features/weather/WeatherUpdateService.java
index c940d0606be61fdc70ea7cb5d555a97a3391bcf9..02af6ea1a7ac6759cffbaa1d20f5e052d0007941 100644
--- a/app/src/apiOreo/java/foundation/e/blisslauncher/features/weather/WeatherUpdateService.java
+++ b/app/src/apiOreo/java/foundation/e/blisslauncher/features/weather/WeatherUpdateService.java
@@ -22,11 +22,12 @@ import android.os.Message;
import android.os.PowerManager;
import android.os.PowerManager.WakeLock;
import android.os.SystemClock;
-import android.support.v4.content.LocalBroadcastManager;
import android.text.TextUtils;
import android.util.Log;
import android.widget.Toast;
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
+
import java.lang.ref.WeakReference;
import java.util.Date;
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 4b28a9c9af7ac05eda2f977d2a21752a27648222..d0185de9553f34b85b096f7013a5b93460da606e 100755
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -9,46 +9,61 @@
android:label="@string/permlab_install_shortcut"
android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
android:protectionLevel="dangerous" />
+
+ android:protectionLevel="dangerous" />
+
+
-
+
+
+
+
+
+
-
-
+
+
+
+
-
-
+
+
@@ -56,20 +71,25 @@
+
-
+
-
+
-
+
+ android:theme="@style/AppTheme" />
+
+
+
+
+
+
+
+
+
+
+
-
+
+
-
+
+
+
-
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/foundation/e/blisslauncher/BlissLauncher.java b/app/src/main/java/foundation/e/blisslauncher/BlissLauncher.java
index 9e6af38e7c15687bc8a98c2be311204469dc7271..4270b6b8a90bd8ca121f4bf7dd4b7d406d97fc01 100755
--- a/app/src/main/java/foundation/e/blisslauncher/BlissLauncher.java
+++ b/app/src/main/java/foundation/e/blisslauncher/BlissLauncher.java
@@ -9,9 +9,6 @@ import foundation.e.blisslauncher.core.IconsHandler;
import foundation.e.blisslauncher.core.blur.BlurWallpaperProvider;
import foundation.e.blisslauncher.core.customviews.WidgetHost;
import foundation.e.blisslauncher.features.launcher.AppProvider;
-import io.github.inflationx.calligraphy3.CalligraphyConfig;
-import io.github.inflationx.calligraphy3.CalligraphyInterceptor;
-import io.github.inflationx.viewpump.ViewPump;
public class BlissLauncher extends Application {
private IconsHandler iconsPackHandler;
@@ -25,15 +22,6 @@ public class BlissLauncher extends Application {
@Override
public void onCreate() {
super.onCreate();
-
- ViewPump.init(ViewPump.builder()
- .addInterceptor(new CalligraphyInterceptor(
- new CalligraphyConfig.Builder()
- .setDefaultFontPath("Roboto-Regular.ttf")
- .setFontAttrId(R.attr.fontPath)
- .build()))
- .build());
-
sAppWidgetManager = AppWidgetManager.getInstance(getApplicationContext());
sAppWidgetHost = new WidgetHost(getApplicationContext(),
R.id.APPWIDGET_HOST_ID);
diff --git a/app/src/main/java/foundation/e/blisslauncher/core/AdaptiveIconProvider.java b/app/src/main/java/foundation/e/blisslauncher/core/AdaptiveIconProvider.java
index f8bc43535c8ecf6fa9ba0e8de8855109f468634f..573887f2e6240d96018de3a00d7c1709c3b96356 100755
--- a/app/src/main/java/foundation/e/blisslauncher/core/AdaptiveIconProvider.java
+++ b/app/src/main/java/foundation/e/blisslauncher/core/AdaptiveIconProvider.java
@@ -6,9 +6,10 @@ import android.content.res.AssetManager;
import android.content.res.Resources;
import android.content.res.XmlResourceParser;
import android.graphics.drawable.Drawable;
-import android.support.v4.content.res.ResourcesCompat;
import android.util.Log;
+import androidx.core.content.res.ResourcesCompat;
+
import org.xmlpull.v1.XmlPullParser;
import foundation.e.blisslauncher.core.customviews.AdaptiveIconDrawableCompat;
diff --git a/app/src/main/java/foundation/e/blisslauncher/core/KotlinUtils.kt b/app/src/main/java/foundation/e/blisslauncher/core/KotlinUtils.kt
index e45d2b68824c1cfd0143ccc6e74441211f690a44..ea369873f2c276e49bf4b29523b9c3c868e6157b 100644
--- a/app/src/main/java/foundation/e/blisslauncher/core/KotlinUtils.kt
+++ b/app/src/main/java/foundation/e/blisslauncher/core/KotlinUtils.kt
@@ -5,7 +5,6 @@ import android.os.Looper
val mainHandler by lazy { Handler(Looper.getMainLooper()) }
-
fun runOnMainThread(r: () -> Unit) {
runOnThread(mainHandler, r)
}
diff --git a/app/src/main/java/foundation/e/blisslauncher/core/blur/BlurWallpaperProvider.kt b/app/src/main/java/foundation/e/blisslauncher/core/blur/BlurWallpaperProvider.kt
index 765c27f398efbba063e64d10bf02de05c1e1b766..68b5f1ccc7e5d46855911e7265998eb53274b678 100644
--- a/app/src/main/java/foundation/e/blisslauncher/core/blur/BlurWallpaperProvider.kt
+++ b/app/src/main/java/foundation/e/blisslauncher/core/blur/BlurWallpaperProvider.kt
@@ -9,18 +9,18 @@ import android.graphics.Canvas
import android.graphics.ColorMatrix
import android.graphics.ColorMatrixColorFilter
import android.graphics.Paint
-import android.support.v4.app.ActivityCompat
import android.util.DisplayMetrics
import android.util.Log
import android.view.WindowManager
import android.widget.Toast
+import androidx.core.app.ActivityCompat
import foundation.e.blisslauncher.core.Utilities
import foundation.e.blisslauncher.core.runOnMainThread
import foundation.e.blisslauncher.core.safeForEach
import foundation.e.blisslauncher.core.utils.SingletonHolder
import foundation.e.blisslauncher.core.utils.ensureOnMainThread
import foundation.e.blisslauncher.core.utils.useApplicationContext
-import java.util.*
+import java.util.ArrayList
import kotlin.math.max
class BlurWallpaperProvider(val context: Context) {
@@ -115,12 +115,12 @@ class BlurWallpaperProvider(val context: Context) {
}
wallpaper = scaleAndCropToScreenSize(wallpaper)
wallpaper = applyVibrancy(wallpaper)
- applyTask = wallpaperFilter.apply(wallpaper).setCallback {result, error ->
- if(error == null) {
+ applyTask = wallpaperFilter.apply(wallpaper).setCallback { result, error ->
+ if (error == null) {
this@BlurWallpaperProvider.wallpaper = result
runOnMainThread(::notifyWallpaperChanged)
wallpaper.recycle()
- }else {
+ } else {
if (error is OutOfMemoryError) {
runOnMainThread {
Toast.makeText(context, "Failed", Toast.LENGTH_LONG).show()
@@ -137,7 +137,6 @@ class BlurWallpaperProvider(val context: Context) {
}
}
-
private fun notifyWallpaperChanged() {
listeners.forEach(Listener::onWallpaperChanged)
}
diff --git a/app/src/main/java/foundation/e/blisslauncher/core/blur/ShaderBlurDrawable.kt b/app/src/main/java/foundation/e/blisslauncher/core/blur/ShaderBlurDrawable.kt
index e74a2792536bc877b2cb66975b6f30543b1af8d8..2578758dfd24c0536ee15261dba21208794ab95e 100644
--- a/app/src/main/java/foundation/e/blisslauncher/core/blur/ShaderBlurDrawable.kt
+++ b/app/src/main/java/foundation/e/blisslauncher/core/blur/ShaderBlurDrawable.kt
@@ -40,14 +40,13 @@ class ShaderBlurDrawable internal constructor(private val blurWallpaperProvider:
var noRadius = true
-
override fun draw(canvas: Canvas) = draw(canvas, noRadius)
fun draw(canvas: Canvas, noRadius: Boolean = false) {
if (blurAlpha == 0) return
blurBitmap = blurWallpaperProvider.wallpaper
- if(blurBitmap == null) {
+ if (blurBitmap == null) {
blurBitmap = blurWallpaperProvider.placeholder
}
blurBitmap =
diff --git a/app/src/main/java/foundation/e/blisslauncher/core/customviews/AdaptiveIconDrawableCompat.java b/app/src/main/java/foundation/e/blisslauncher/core/customviews/AdaptiveIconDrawableCompat.java
index 95601914a2c068d0e93dbbaad183c1cbfb059c2f..f3f6603c7cf42d950391874f9080042a2c819f53 100755
--- a/app/src/main/java/foundation/e/blisslauncher/core/customviews/AdaptiveIconDrawableCompat.java
+++ b/app/src/main/java/foundation/e/blisslauncher/core/customviews/AdaptiveIconDrawableCompat.java
@@ -21,12 +21,13 @@ import android.graphics.Region;
import android.graphics.Shader;
import android.graphics.Shader.TileMode;
import android.graphics.drawable.Drawable;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.util.TypedValue;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
diff --git a/app/src/main/java/foundation/e/blisslauncher/core/customviews/AppWidgetResizeFrame.java b/app/src/main/java/foundation/e/blisslauncher/core/customviews/AppWidgetResizeFrame.java
index f4cfb39baa1e1fe6e55702a2e9cd8ee22697e2a6..7f34e229e027986cc72538a284feb4d23e0a63b2 100644
--- a/app/src/main/java/foundation/e/blisslauncher/core/customviews/AppWidgetResizeFrame.java
+++ b/app/src/main/java/foundation/e/blisslauncher/core/customviews/AppWidgetResizeFrame.java
@@ -4,10 +4,11 @@ import android.appwidget.AppWidgetHostView;
import android.appwidget.AppWidgetProviderInfo;
import android.content.Context;
import android.graphics.Rect;
-import android.support.annotation.NonNull;
import android.widget.FrameLayout;
import android.widget.ImageView;
+import androidx.annotation.NonNull;
+
import foundation.e.blisslauncher.R;
public class AppWidgetResizeFrame extends FrameLayout {
diff --git a/app/src/main/java/foundation/e/blisslauncher/core/customviews/BlissInput.java b/app/src/main/java/foundation/e/blisslauncher/core/customviews/BlissInput.java
index fe7368df99ff6b3d7c2f7713e194afe5f4590cde..659c9e593ae74ac2ce3009e8f663b29ad3fbe36c 100755
--- a/app/src/main/java/foundation/e/blisslauncher/core/customviews/BlissInput.java
+++ b/app/src/main/java/foundation/e/blisslauncher/core/customviews/BlissInput.java
@@ -4,7 +4,9 @@ import android.content.Context;
import android.util.AttributeSet;
import android.view.DragEvent;
-public class BlissInput extends android.support.v7.widget.AppCompatEditText {
+import androidx.appcompat.widget.AppCompatEditText;
+
+public class BlissInput extends AppCompatEditText {
public BlissInput(Context context) {
super(context);
}
diff --git a/app/src/main/java/foundation/e/blisslauncher/core/customviews/CustomAnalogClock.java b/app/src/main/java/foundation/e/blisslauncher/core/customviews/CustomAnalogClock.java
index 21baa13ebdf9197d7191cfe2a516ef0861067db1..1cb819d9d5fb5b9f84fedbcc84bcfe5e27dfea4f 100755
--- a/app/src/main/java/foundation/e/blisslauncher/core/customviews/CustomAnalogClock.java
+++ b/app/src/main/java/foundation/e/blisslauncher/core/customviews/CustomAnalogClock.java
@@ -5,10 +5,11 @@ import android.content.res.Resources;
import android.graphics.Canvas;
import android.graphics.drawable.Drawable;
import android.os.Handler;
-import android.support.v4.content.ContextCompat;
import android.util.AttributeSet;
import android.view.View;
+import androidx.core.content.ContextCompat;
+
import java.util.Calendar;
import foundation.e.blisslauncher.BlissLauncher;
diff --git a/app/src/main/java/foundation/e/blisslauncher/core/customviews/DockGridLayout.java b/app/src/main/java/foundation/e/blisslauncher/core/customviews/DockGridLayout.java
deleted file mode 100755
index 126079e484c7e274e09b0592e7127dba2a904375..0000000000000000000000000000000000000000
--- a/app/src/main/java/foundation/e/blisslauncher/core/customviews/DockGridLayout.java
+++ /dev/null
@@ -1,120 +0,0 @@
-package foundation.e.blisslauncher.core.customviews;
-
-import android.content.Context;
-import android.graphics.Canvas;
-import android.graphics.drawable.Drawable;
-import android.support.annotation.NonNull;
-import android.util.AttributeSet;
-import android.view.WindowInsets;
-import android.widget.GridLayout;
-
-import foundation.e.blisslauncher.BlissLauncher;
-import foundation.e.blisslauncher.core.DeviceProfile;
-import foundation.e.blisslauncher.core.KotlinUtilsKt;
-import foundation.e.blisslauncher.core.blur.BlurWallpaperProvider;
-import foundation.e.blisslauncher.core.blur.ShaderBlurDrawable;
-
-public class DockGridLayout extends GridLayout implements Insettable, BlurWallpaperProvider.Listener {
-
- private Context mContext;
-
- private final BlurWallpaperProvider blurWallpaperProvider;
- private ShaderBlurDrawable fullBlurDrawable = null;
- private int blurAlpha = 255;
-
- private final Drawable.Callback blurDrawableCallback = new Drawable.Callback() {
- @Override
- public void invalidateDrawable(@NonNull Drawable who) {
- KotlinUtilsKt.runOnMainThread(() -> {
- invalidate();
- return null;
- });
- }
-
- @Override
- public void scheduleDrawable(@NonNull Drawable who, @NonNull Runnable what, long when) {
-
- }
-
- @Override
- public void unscheduleDrawable(@NonNull Drawable who, @NonNull Runnable what) {
-
- }
- };
-
- public DockGridLayout(Context context) {
- this(context, null);
- }
-
- public DockGridLayout(Context context, AttributeSet attrs) {
- this(context, attrs, 0);
- }
-
- public DockGridLayout(Context context, AttributeSet attrs, int defStyleAttr) {
- super(context, attrs, defStyleAttr);
- this.mContext = context;
- setWillNotDraw(false);
- blurWallpaperProvider = BlurWallpaperProvider.Companion.getInstance(context);
- createBlurDrawable();
- }
-
- @Override
- protected void onAttachedToWindow() {
- super.onAttachedToWindow();
-
- BlurWallpaperProvider.Companion.getInstance(mContext).addListener(this);
- fullBlurDrawable.startListening();
- }
-
- @Override
- protected void onDetachedFromWindow() {
- super.onDetachedFromWindow();
-
- BlurWallpaperProvider.Companion.getInstance(mContext).removeListener(this);
- fullBlurDrawable.stopListening();
- }
-
- @Override
- protected void onDraw(Canvas canvas) {
- fullBlurDrawable.setAlpha(blurAlpha);
- fullBlurDrawable.draw(canvas);
- super.onDraw(canvas);
- }
-
- @Override
- protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
- super.onLayout(changed, left, top, right, bottom);
- if (changed) {
- fullBlurDrawable.setBounds(left, top, right, bottom);
- }
- }
-
- @Override
- public void setInsets(WindowInsets insets) {
- DeviceProfile deviceProfile = BlissLauncher.getApplication(mContext).getDeviceProfile();
- InsettableRelativeLayout.LayoutParams lp = (InsettableRelativeLayout.LayoutParams) getLayoutParams();
- lp.height = deviceProfile.hotseatCellHeightPx + insets.getSystemWindowInsetBottom();
- setPadding(deviceProfile.iconDrawablePaddingPx / 2, 0,
- deviceProfile.iconDrawablePaddingPx / 2, insets.getSystemWindowInsetBottom());
- setLayoutParams(lp);
- }
-
- private void createBlurDrawable() {
- if (isAttachedToWindow()) {
- fullBlurDrawable.stopListening();
- }
- fullBlurDrawable = blurWallpaperProvider.createDrawable();
- fullBlurDrawable.setCallback(blurDrawableCallback);
- fullBlurDrawable.setBounds(getLeft(), getTop(), getRight(), getBottom());
- if (isAttachedToWindow()) fullBlurDrawable.startListening();
- }
-
- @Override
- public void onEnabledChanged() {
- createBlurDrawable();
- }
-
- @Override
- public void onWallpaperChanged() {
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/foundation/e/blisslauncher/core/customviews/DockGridLayout.kt b/app/src/main/java/foundation/e/blisslauncher/core/customviews/DockGridLayout.kt
new file mode 100755
index 0000000000000000000000000000000000000000..35d42e2109643960c8106593770d4e0d3640cc49
--- /dev/null
+++ b/app/src/main/java/foundation/e/blisslauncher/core/customviews/DockGridLayout.kt
@@ -0,0 +1,109 @@
+package foundation.e.blisslauncher.core.customviews
+
+import android.content.Context
+import android.graphics.Canvas
+import android.graphics.drawable.Drawable
+import android.util.AttributeSet
+import android.view.WindowInsets
+import android.widget.GridLayout
+import foundation.e.blisslauncher.BlissLauncher
+import foundation.e.blisslauncher.core.blur.BlurWallpaperProvider
+import foundation.e.blisslauncher.core.blur.ShaderBlurDrawable
+import foundation.e.blisslauncher.core.runOnMainThread
+
+class DockGridLayout @JvmOverloads constructor(
+ private val mContext: Context,
+ attrs: AttributeSet? = null,
+ defStyleAttr: Int = 0
+) : GridLayout(mContext, attrs, defStyleAttr), Insettable,
+ BlurWallpaperProvider.Listener {
+ private val blurWallpaperProvider: BlurWallpaperProvider
+ private var fullBlurDrawable: ShaderBlurDrawable? = null
+ private val blurAlpha = 255
+ private val blurDrawableCallback: Drawable.Callback = object : Drawable.Callback {
+ override fun invalidateDrawable(who: Drawable) {
+ runOnMainThread {
+ invalidate()
+ null
+ }
+ }
+
+ override fun scheduleDrawable(
+ who: Drawable,
+ what: Runnable,
+ `when`: Long
+ ) {
+ }
+
+ override fun unscheduleDrawable(
+ who: Drawable,
+ what: Runnable
+ ) {
+ }
+ }
+
+ override fun onAttachedToWindow() {
+ super.onAttachedToWindow()
+ BlurWallpaperProvider.getInstance(mContext).addListener(this)
+ fullBlurDrawable!!.startListening()
+ }
+
+ override fun onDetachedFromWindow() {
+ super.onDetachedFromWindow()
+ BlurWallpaperProvider.getInstance(mContext).removeListener(this)
+ fullBlurDrawable!!.stopListening()
+ }
+
+ override fun onDraw(canvas: Canvas) {
+ fullBlurDrawable!!.alpha = blurAlpha
+ fullBlurDrawable!!.draw(canvas)
+ super.onDraw(canvas)
+ }
+
+ override fun onLayout(
+ changed: Boolean,
+ left: Int,
+ top: Int,
+ right: Int,
+ bottom: Int
+ ) {
+ super.onLayout(changed, left, top, right, bottom)
+ if (changed) {
+ fullBlurDrawable!!.setBounds(left, top, right, bottom)
+ }
+ }
+
+ override fun setInsets(insets: WindowInsets) {
+ val deviceProfile = BlissLauncher.getApplication(mContext).deviceProfile
+ val lp =
+ layoutParams as InsettableRelativeLayout.LayoutParams
+ lp.height = deviceProfile.hotseatCellHeightPx + insets.systemWindowInsetBottom
+ setPadding(
+ deviceProfile.iconDrawablePaddingPx / 2, 0,
+ deviceProfile.iconDrawablePaddingPx / 2, insets.systemWindowInsetBottom
+ )
+ layoutParams = lp
+ }
+
+ private fun createBlurDrawable() {
+ if (isAttachedToWindow) {
+ fullBlurDrawable!!.stopListening()
+ }
+ fullBlurDrawable = blurWallpaperProvider.createDrawable()
+ fullBlurDrawable!!.callback = blurDrawableCallback
+ fullBlurDrawable!!.setBounds(left, top, right, bottom)
+ if (isAttachedToWindow) fullBlurDrawable!!.startListening()
+ }
+
+ override fun onEnabledChanged() {
+ createBlurDrawable()
+ }
+
+ override fun onWallpaperChanged() {}
+
+ init {
+ setWillNotDraw(false)
+ blurWallpaperProvider = BlurWallpaperProvider.getInstance(mContext)
+ createBlurDrawable()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/foundation/e/blisslauncher/core/customviews/HorizontalPager.java b/app/src/main/java/foundation/e/blisslauncher/core/customviews/HorizontalPager.java
index e6f800ecfe2db46b26263bf443b6930f9a11d35f..e475ead2d51615fea51d630981047e487430f3a5 100755
--- a/app/src/main/java/foundation/e/blisslauncher/core/customviews/HorizontalPager.java
+++ b/app/src/main/java/foundation/e/blisslauncher/core/customviews/HorizontalPager.java
@@ -7,7 +7,6 @@ import android.graphics.Canvas;
import android.graphics.Rect;
import android.os.Parcel;
import android.os.Parcelable;
-import android.support.v4.view.GestureDetectorCompat;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
@@ -19,6 +18,8 @@ import android.view.ViewParent;
import android.view.WindowInsets;
import android.widget.Scroller;
+import androidx.core.view.GestureDetectorCompat;
+
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;
diff --git a/app/src/main/java/foundation/e/blisslauncher/core/customviews/InsettableScrollLayout.java b/app/src/main/java/foundation/e/blisslauncher/core/customviews/InsettableScrollLayout.java
index 438e4b29c9027a5a6fd99321a553e6023896f545..b052001cd3c12c8f75fff0ca5892177481f4af8f 100644
--- a/app/src/main/java/foundation/e/blisslauncher/core/customviews/InsettableScrollLayout.java
+++ b/app/src/main/java/foundation/e/blisslauncher/core/customviews/InsettableScrollLayout.java
@@ -1,12 +1,13 @@
package foundation.e.blisslauncher.core.customviews;
import android.content.Context;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.WindowInsets;
import android.widget.ScrollView;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
public class InsettableScrollLayout extends ScrollView implements Insettable {
public InsettableScrollLayout(@NonNull Context context) {
diff --git a/app/src/main/java/foundation/e/blisslauncher/core/customviews/PageIndicatorLinearLayout.java b/app/src/main/java/foundation/e/blisslauncher/core/customviews/PageIndicatorLinearLayout.java
index 72f7baaf82810ea3afa893f0ddc2ef675d7c4101..25514bcb9348c7a33aee3f7fb4067c075472b0f1 100755
--- a/app/src/main/java/foundation/e/blisslauncher/core/customviews/PageIndicatorLinearLayout.java
+++ b/app/src/main/java/foundation/e/blisslauncher/core/customviews/PageIndicatorLinearLayout.java
@@ -1,10 +1,11 @@
package foundation.e.blisslauncher.core.customviews;
import android.content.Context;
-import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.widget.LinearLayout;
+import androidx.annotation.Nullable;
+
import foundation.e.blisslauncher.BlissLauncher;
import foundation.e.blisslauncher.core.DeviceProfile;
diff --git a/app/src/main/java/foundation/e/blisslauncher/core/customviews/RoundedWidgetView.java b/app/src/main/java/foundation/e/blisslauncher/core/customviews/RoundedWidgetView.java
index dcb15a6c10bb5fa72affe833e6e54ada56dc18be..101be1547f41d321ba33ab3e55ef9a9392586976 100644
--- a/app/src/main/java/foundation/e/blisslauncher/core/customviews/RoundedWidgetView.java
+++ b/app/src/main/java/foundation/e/blisslauncher/core/customviews/RoundedWidgetView.java
@@ -5,7 +5,6 @@ import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Path;
import android.graphics.Rect;
-import android.support.annotation.Nullable;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
@@ -13,6 +12,8 @@ import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.ImageView;
+import androidx.annotation.Nullable;
+
import foundation.e.blisslauncher.R;
import foundation.e.blisslauncher.features.widgets.CheckLongPressHelper;
diff --git a/app/src/main/java/foundation/e/blisslauncher/core/customviews/SquareFrameLayout.java b/app/src/main/java/foundation/e/blisslauncher/core/customviews/SquareFrameLayout.java
index 6d6ac74198d6275a8013f0824aaed6ccd200749f..67e4b0c262805ecafdc0f3be37bf21f38049cfe3 100755
--- a/app/src/main/java/foundation/e/blisslauncher/core/customviews/SquareFrameLayout.java
+++ b/app/src/main/java/foundation/e/blisslauncher/core/customviews/SquareFrameLayout.java
@@ -1,11 +1,12 @@
package foundation.e.blisslauncher.core.customviews;
import android.content.Context;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.widget.FrameLayout;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
/**
* Created by falcon on 9/3/18.
*/
diff --git a/app/src/main/java/foundation/e/blisslauncher/core/customviews/SquareImageView.java b/app/src/main/java/foundation/e/blisslauncher/core/customviews/SquareImageView.java
index a13a834178b5f8fcae38fbad9eb90d72d38adaac..ce90e78fbcb879ab16e06dd74f0b2267e818a0d1 100755
--- a/app/src/main/java/foundation/e/blisslauncher/core/customviews/SquareImageView.java
+++ b/app/src/main/java/foundation/e/blisslauncher/core/customviews/SquareImageView.java
@@ -3,11 +3,13 @@ package foundation.e.blisslauncher.core.customviews;
import android.content.Context;
import android.util.AttributeSet;
+import androidx.appcompat.widget.AppCompatImageView;
+
/**
* Created by falcon on 16/2/18.
*/
-public class SquareImageView extends android.support.v7.widget.AppCompatImageView {
+public class SquareImageView extends AppCompatImageView {
public SquareImageView(Context context) {
this(context, null);
diff --git a/app/src/main/java/foundation/e/blisslauncher/core/database/LauncherDB.java b/app/src/main/java/foundation/e/blisslauncher/core/database/LauncherDB.java
index 8201de4cfa5000d8c56ce48f3a2228f54e336ed9..477e022ca28d44ef933fba4bac41e7178b1c86d6 100644
--- a/app/src/main/java/foundation/e/blisslauncher/core/database/LauncherDB.java
+++ b/app/src/main/java/foundation/e/blisslauncher/core/database/LauncherDB.java
@@ -1,13 +1,15 @@
package foundation.e.blisslauncher.core.database;
-import android.arch.persistence.db.SupportSQLiteDatabase;
-import android.arch.persistence.room.Database;
-import android.arch.persistence.room.Room;
-import android.arch.persistence.room.RoomDatabase;
-import android.arch.persistence.room.TypeConverters;
-import android.arch.persistence.room.migration.Migration;
+
import android.content.Context;
-import android.support.annotation.NonNull;
+
+import androidx.annotation.NonNull;
+import androidx.room.Database;
+import androidx.room.Room;
+import androidx.room.RoomDatabase;
+import androidx.room.TypeConverters;
+import androidx.room.migration.Migration;
+import androidx.sqlite.db.SupportSQLiteDatabase;
import foundation.e.blisslauncher.core.database.converters.CharSequenceConverter;
import foundation.e.blisslauncher.core.database.daos.LauncherDao;
diff --git a/app/src/main/java/foundation/e/blisslauncher/core/database/converters/CharSequenceConverter.java b/app/src/main/java/foundation/e/blisslauncher/core/database/converters/CharSequenceConverter.java
index 7deffa335a032ee53ba8f6881a7f39a85c030d8d..6ab349367f9d41a3d46108b7cef41061fa360b94 100644
--- a/app/src/main/java/foundation/e/blisslauncher/core/database/converters/CharSequenceConverter.java
+++ b/app/src/main/java/foundation/e/blisslauncher/core/database/converters/CharSequenceConverter.java
@@ -1,6 +1,6 @@
package foundation.e.blisslauncher.core.database.converters;
-import android.arch.persistence.room.TypeConverter;
+import androidx.room.TypeConverter;
public class CharSequenceConverter {
@@ -10,7 +10,7 @@ public class CharSequenceConverter {
}
@TypeConverter
- public static CharSequence toCharSequence(String value){
+ public static CharSequence toCharSequence(String value) {
return value;
}
}
diff --git a/app/src/main/java/foundation/e/blisslauncher/core/database/daos/LauncherDao.java b/app/src/main/java/foundation/e/blisslauncher/core/database/daos/LauncherDao.java
index dbc42ae2921ae060995616b7123d452f37b878ce..68a3ea571465429f411588a0e2a9308ad73f93e7 100644
--- a/app/src/main/java/foundation/e/blisslauncher/core/database/daos/LauncherDao.java
+++ b/app/src/main/java/foundation/e/blisslauncher/core/database/daos/LauncherDao.java
@@ -1,9 +1,10 @@
package foundation.e.blisslauncher.core.database.daos;
-import android.arch.persistence.room.Dao;
-import android.arch.persistence.room.Insert;
-import android.arch.persistence.room.OnConflictStrategy;
-import android.arch.persistence.room.Query;
+
+import androidx.room.Dao;
+import androidx.room.Insert;
+import androidx.room.OnConflictStrategy;
+import androidx.room.Query;
import java.util.List;
diff --git a/app/src/main/java/foundation/e/blisslauncher/core/database/daos/WidgetDao.java b/app/src/main/java/foundation/e/blisslauncher/core/database/daos/WidgetDao.java
index 171267fffa5d19a64880fcaf9d0e396e61b1e7fe..e23172c2e47e09d0544da1d0c76999f3a7d68dbe 100644
--- a/app/src/main/java/foundation/e/blisslauncher/core/database/daos/WidgetDao.java
+++ b/app/src/main/java/foundation/e/blisslauncher/core/database/daos/WidgetDao.java
@@ -1,9 +1,9 @@
package foundation.e.blisslauncher.core.database.daos;
-import android.arch.persistence.room.Dao;
-import android.arch.persistence.room.Insert;
-import android.arch.persistence.room.OnConflictStrategy;
-import android.arch.persistence.room.Query;
+import androidx.room.Dao;
+import androidx.room.Insert;
+import androidx.room.OnConflictStrategy;
+import androidx.room.Query;
import java.util.List;
diff --git a/app/src/main/java/foundation/e/blisslauncher/core/database/model/LauncherItem.java b/app/src/main/java/foundation/e/blisslauncher/core/database/model/LauncherItem.java
index 6c0ad6159d77ab937ba91944537b2eeb8c98c0ff..15860ca805d8ae3a9bb98f2d47fa9cda0652cf68 100644
--- a/app/src/main/java/foundation/e/blisslauncher/core/database/model/LauncherItem.java
+++ b/app/src/main/java/foundation/e/blisslauncher/core/database/model/LauncherItem.java
@@ -1,14 +1,15 @@
package foundation.e.blisslauncher.core.database.model;
-import android.arch.persistence.room.ColumnInfo;
-import android.arch.persistence.room.Entity;
-import android.arch.persistence.room.Ignore;
-import android.arch.persistence.room.Index;
-import android.arch.persistence.room.PrimaryKey;
import android.content.ComponentName;
import android.content.Intent;
import android.graphics.drawable.Drawable;
-import android.support.annotation.NonNull;
+
+import androidx.annotation.NonNull;
+import androidx.room.ColumnInfo;
+import androidx.room.Entity;
+import androidx.room.Ignore;
+import androidx.room.Index;
+import androidx.room.PrimaryKey;
import java.net.URISyntaxException;
diff --git a/app/src/main/java/foundation/e/blisslauncher/core/database/model/WidgetItem.java b/app/src/main/java/foundation/e/blisslauncher/core/database/model/WidgetItem.java
index dbea107dec9944417c194f4a77da57973a879826..28de71e054c76f08a3147360554bad7f50e00bfb 100644
--- a/app/src/main/java/foundation/e/blisslauncher/core/database/model/WidgetItem.java
+++ b/app/src/main/java/foundation/e/blisslauncher/core/database/model/WidgetItem.java
@@ -1,7 +1,8 @@
package foundation.e.blisslauncher.core.database.model;
-import android.arch.persistence.room.Entity;
-import android.arch.persistence.room.PrimaryKey;
+
+import androidx.room.Entity;
+import androidx.room.PrimaryKey;
@Entity(tableName = "widget_items")
public class WidgetItem {
diff --git a/app/src/main/java/foundation/e/blisslauncher/core/dragndrop/DragSource.kt b/app/src/main/java/foundation/e/blisslauncher/core/dragndrop/DragSource.kt
index 4bed240f3941ed666f521d31d5e4f9ae739c29ce..ce6a6feaa7d42dc20c717016d5320acd375bf1f6 100644
--- a/app/src/main/java/foundation/e/blisslauncher/core/dragndrop/DragSource.kt
+++ b/app/src/main/java/foundation/e/blisslauncher/core/dragndrop/DragSource.kt
@@ -1,2 +1 @@
package foundation.e.blisslauncher.core.dragndrop
-
diff --git a/app/src/main/java/foundation/e/blisslauncher/core/dragndrop/DropTarget.kt b/app/src/main/java/foundation/e/blisslauncher/core/dragndrop/DropTarget.kt
index 4bed240f3941ed666f521d31d5e4f9ae739c29ce..ce6a6feaa7d42dc20c717016d5320acd375bf1f6 100644
--- a/app/src/main/java/foundation/e/blisslauncher/core/dragndrop/DropTarget.kt
+++ b/app/src/main/java/foundation/e/blisslauncher/core/dragndrop/DropTarget.kt
@@ -1,2 +1 @@
package foundation.e.blisslauncher.core.dragndrop
-
diff --git a/app/src/main/java/foundation/e/blisslauncher/core/executors/MainThreadExecutor.java b/app/src/main/java/foundation/e/blisslauncher/core/executors/MainThreadExecutor.java
index 367db09fb02ce557b50b68bc88a760fb47a77a07..1088b1c02d725227458563cee90d926b7f171cdd 100644
--- a/app/src/main/java/foundation/e/blisslauncher/core/executors/MainThreadExecutor.java
+++ b/app/src/main/java/foundation/e/blisslauncher/core/executors/MainThreadExecutor.java
@@ -2,7 +2,8 @@ package foundation.e.blisslauncher.core.executors;
import android.os.Handler;
import android.os.Looper;
-import android.support.annotation.NonNull;
+
+import androidx.annotation.NonNull;
import java.util.List;
import java.util.concurrent.AbstractExecutorService;
diff --git a/app/src/main/java/foundation/e/blisslauncher/core/utils/AppUtils.java b/app/src/main/java/foundation/e/blisslauncher/core/utils/AppUtils.java
index c7e410846e7f4f904751cdcb15e8804f064b7036..a8b2808c9dd8cd14088ecfef2b2a9541f00c3a6b 100755
--- a/app/src/main/java/foundation/e/blisslauncher/core/utils/AppUtils.java
+++ b/app/src/main/java/foundation/e/blisslauncher/core/utils/AppUtils.java
@@ -25,9 +25,10 @@ import android.content.pm.LauncherApps;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.os.UserManager;
-import android.support.annotation.Nullable;
import android.util.Log;
+import androidx.annotation.Nullable;
+
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
diff --git a/app/src/main/java/foundation/e/blisslauncher/core/utils/LongArrayMap.java b/app/src/main/java/foundation/e/blisslauncher/core/utils/LongArrayMap.java
index 63e623369b96b9012b2668fde2a596b52617a406..415f07892f73b09ef4ebbb755e6fb1087cb6c259 100755
--- a/app/src/main/java/foundation/e/blisslauncher/core/utils/LongArrayMap.java
+++ b/app/src/main/java/foundation/e/blisslauncher/core/utils/LongArrayMap.java
@@ -15,9 +15,10 @@
*/
package foundation.e.blisslauncher.core.utils;
-import android.support.annotation.NonNull;
import android.util.LongSparseArray;
+import androidx.annotation.NonNull;
+
import java.util.Iterator;
/**
diff --git a/app/src/main/java/foundation/e/blisslauncher/core/utils/SingletonHolder.kt b/app/src/main/java/foundation/e/blisslauncher/core/utils/SingletonHolder.kt
index 7a9b470ab958b1997e25e6a3023453a048388749..7e58554df7dc5e03e016c7f1dd0b0ba383a50607 100644
--- a/app/src/main/java/foundation/e/blisslauncher/core/utils/SingletonHolder.kt
+++ b/app/src/main/java/foundation/e/blisslauncher/core/utils/SingletonHolder.kt
@@ -33,8 +33,7 @@ open class SingletonHolder(creator: (A) -> T) {
protected fun dangerousGetInstance() = instance
}
-
-fun ensureOnMainThread(creator: (A) -> T): (A) -> T {
+fun ensureOnMainThread(creator: (A) -> T): (A) -> T {
return { it ->
if (Looper.myLooper() == Looper.getMainLooper()) {
creator(it)
@@ -46,10 +45,9 @@ fun ensureOnMainThread(creator: (A) -> T): (A) -> T {
} catch (e: ExecutionException) {
throw RuntimeException(e)
}
-
}
}
}
-fun useApplicationContext(creator: (Context) -> T): (Context) -> T {
+fun useApplicationContext(creator: (Context) -> T): (Context) -> T {
return { it -> creator(it.applicationContext) }
}
\ No newline at end of file
diff --git a/app/src/main/java/foundation/e/blisslauncher/features/launcher/AppProvider.java b/app/src/main/java/foundation/e/blisslauncher/features/launcher/AppProvider.java
index fe221fcab4628c7a6dda0201d2e680856a205236..71f1ee4c5fc2de46e25d45119efb6241e2b83162 100644
--- a/app/src/main/java/foundation/e/blisslauncher/features/launcher/AppProvider.java
+++ b/app/src/main/java/foundation/e/blisslauncher/features/launcher/AppProvider.java
@@ -80,6 +80,7 @@ public class AppProvider {
private static final String MICROG_PACKAGE = "com.google.android.gms";
private static final String MUPDF_PACKAGE = "com.artifex.mupdf.mini.app";
+ private static final String PDF_VIEWER_PACKAGE = "com.gsnathan.pdfviewer";
private static final String OPENKEYCHAIN_PACKAGE = "org.sufficientlysecure.keychain";
private static final String LIBREOFFICE_PACKAGE = "org.documentfoundation.libreoffice";
@@ -90,6 +91,7 @@ public class AppProvider {
static {
DISABLED_PACKAGES.add(MICROG_PACKAGE);
DISABLED_PACKAGES.add(MUPDF_PACKAGE);
+ DISABLED_PACKAGES.add(PDF_VIEWER_PACKAGE);
DISABLED_PACKAGES.add(OPENKEYCHAIN_PACKAGE);
DISABLED_PACKAGES.add(LIBREOFFICE_PACKAGE);
}
@@ -162,11 +164,12 @@ public class AppProvider {
public void onPackagesAvailable(String[] packageNames, android.os.UserHandle user,
boolean replacing) {
Log.d(TAG, "onPackagesAvailable() called with: packageNames = [" + packageNames + "], user = [" + user + "], replacing = [" + replacing + "]");
- PackageAddedRemovedHandler.handleEvent(mContext,
- "android.intent.action.MEDIA_MOUNTED",
- null, new UserHandle(manager.getSerialNumberForUser(user), user), false
- );
-
+ for (String packageName : packageNames) {
+ PackageAddedRemovedHandler.handleEvent(mContext,
+ "android.intent.action.MEDIA_MOUNTED",
+ packageName, new UserHandle(manager.getSerialNumberForUser(user), user), false
+ );
+ }
}
@Override
@@ -298,9 +301,10 @@ public class AppProvider {
ApplicationItem applicationItem = mApplicationItems.get(databaseItem.id);
if (applicationItem == null) {
UserHandle userHandle = new UserHandle();
- if (isAppOnSdcard(databaseItem.packageName, userHandle) || !isSdCardReady) {
+ if ((isAppOnSdcard(databaseItem.packageName, userHandle) || !isSdCardReady
+ ) && !DISABLED_PACKAGES.contains(databaseItem.packageName)) {
Log.d(TAG, "Missing package: " + databaseItem.packageName);
- Log.d(TAG, "Is App on Sdcard " + isAppOnSdcard(databaseItem.packageName, databaseItem.user));
+ Log.d(TAG, "Is App on Sdcard " + isAppOnSdcard(databaseItem.packageName, userHandle));
Log.d(TAG, "Is Sdcard ready " + isSdCardReady);
pendingPackages.addToList(userHandle, databaseItem.packageName);
diff --git a/app/src/main/java/foundation/e/blisslauncher/features/launcher/LauncherActivity.java b/app/src/main/java/foundation/e/blisslauncher/features/launcher/LauncherActivity.java
index 2e90a097a3e4e284b82cc15f4c5ebf64f8381f54..cfe9cd778a42c1efddfccfc159b9ffa15e2e9cad 100755
--- a/app/src/main/java/foundation/e/blisslauncher/features/launcher/LauncherActivity.java
+++ b/app/src/main/java/foundation/e/blisslauncher/features/launcher/LauncherActivity.java
@@ -38,15 +38,6 @@ import android.os.Process;
import android.os.StrictMode;
import android.os.UserManager;
import android.provider.Settings;
-import android.support.annotation.NonNull;
-import android.support.v4.app.ActivityCompat;
-import android.support.v4.content.LocalBroadcastManager;
-import android.support.v4.view.PagerAdapter;
-import android.support.v4.view.ViewPager;
-import android.support.v7.app.AppCompatActivity;
-import android.support.v7.widget.DividerItemDecoration;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
@@ -70,7 +61,17 @@ import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.Toast;
-import com.jakewharton.rxbinding2.widget.RxTextView;
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.app.ActivityCompat;
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
+import androidx.recyclerview.widget.DividerItemDecoration;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.viewpager.widget.PagerAdapter;
+import androidx.viewpager.widget.ViewPager;
+
+import com.jakewharton.rxbinding3.widget.RxTextView;
import java.util.ArrayList;
import java.util.Arrays;
@@ -139,7 +140,6 @@ import foundation.e.blisslauncher.features.weather.WeatherUtils;
import foundation.e.blisslauncher.features.widgets.WidgetManager;
import foundation.e.blisslauncher.features.widgets.WidgetViewBuilder;
import foundation.e.blisslauncher.features.widgets.WidgetsActivity;
-import io.github.inflationx.viewpump.ViewPumpContextWrapper;
import io.reactivex.Observable;
import io.reactivex.ObservableSource;
import io.reactivex.android.schedulers.AndroidSchedulers;
@@ -383,10 +383,6 @@ public class LauncherActivity extends AppCompatActivity implements
managedProfileReceiver = ManagedProfileBroadcastReceiver.register(this);
}
- protected void attachBaseContext(Context context) {
- super.attachBaseContext(ViewPumpContextWrapper.wrap(context));
- }
-
public CompositeDisposable getCompositeDisposable() {
if (mCompositeDisposable == null || mCompositeDisposable.isDisposed()) {
mCompositeDisposable = new CompositeDisposable();
@@ -3402,4 +3398,4 @@ public class LauncherActivity extends AppCompatActivity implements
}
}
-}
+}
\ No newline at end of file
diff --git a/app/src/main/java/foundation/e/blisslauncher/features/launcher/SearchInputDisposableObserver.java b/app/src/main/java/foundation/e/blisslauncher/features/launcher/SearchInputDisposableObserver.java
index b3a0249def15b316872c6e8708f744672be18e2b..0da9bf53dd1d3d27a9a3e95ae5cb1edb01af2c42 100644
--- a/app/src/main/java/foundation/e/blisslauncher/features/launcher/SearchInputDisposableObserver.java
+++ b/app/src/main/java/foundation/e/blisslauncher/features/launcher/SearchInputDisposableObserver.java
@@ -1,9 +1,10 @@
package foundation.e.blisslauncher.features.launcher;
-import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
+import androidx.recyclerview.widget.RecyclerView;
+
import java.util.ArrayList;
import foundation.e.blisslauncher.R;
diff --git a/app/src/main/java/foundation/e/blisslauncher/features/shortcuts/AddItemActivity.java b/app/src/main/java/foundation/e/blisslauncher/features/shortcuts/AddItemActivity.java
index 4ce1da14addbc460ee063bca65f20d55ed1dd132..391237bbfa6f08b58db3f4b10632169fcf419b11 100644
--- a/app/src/main/java/foundation/e/blisslauncher/features/shortcuts/AddItemActivity.java
+++ b/app/src/main/java/foundation/e/blisslauncher/features/shortcuts/AddItemActivity.java
@@ -5,7 +5,8 @@ import android.content.Context;
import android.content.pm.LauncherApps;
import android.os.Build;
import android.os.Bundle;
-import android.support.v7.app.AppCompatActivity;
+
+import androidx.appcompat.app.AppCompatActivity;
@TargetApi(Build.VERSION_CODES.O)
public class AddItemActivity extends AppCompatActivity {
diff --git a/app/src/main/java/foundation/e/blisslauncher/features/suggestions/AutoCompleteAdapter.java b/app/src/main/java/foundation/e/blisslauncher/features/suggestions/AutoCompleteAdapter.java
index cfd7a7eb4949cc9af2040b5a90340fba62130dd6..69d80421091f4052d532d2d576a4cade5e5f3050 100755
--- a/app/src/main/java/foundation/e/blisslauncher/features/suggestions/AutoCompleteAdapter.java
+++ b/app/src/main/java/foundation/e/blisslauncher/features/suggestions/AutoCompleteAdapter.java
@@ -3,8 +3,6 @@ package foundation.e.blisslauncher.features.suggestions;
import android.content.Context;
import android.graphics.Color;
import android.graphics.Typeface;
-import android.support.annotation.NonNull;
-import android.support.v7.widget.RecyclerView;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.style.ForegroundColorSpan;
@@ -15,6 +13,9 @@ import android.view.ViewGroup;
import android.view.animation.AlphaAnimation;
import android.widget.TextView;
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
diff --git a/app/src/main/java/foundation/e/blisslauncher/features/widgets/AddedWidgetsAdapter.java b/app/src/main/java/foundation/e/blisslauncher/features/widgets/AddedWidgetsAdapter.java
index 4849643fc5e711d164267cb9cbe76bbcf3bbac16..099b1c22c04fe1263a3012b0b6586b73a29ab5ce 100644
--- a/app/src/main/java/foundation/e/blisslauncher/features/widgets/AddedWidgetsAdapter.java
+++ b/app/src/main/java/foundation/e/blisslauncher/features/widgets/AddedWidgetsAdapter.java
@@ -2,14 +2,15 @@ package foundation.e.blisslauncher.features.widgets;
import android.appwidget.AppWidgetProviderInfo;
import android.content.Context;
-import android.support.annotation.NonNull;
-import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+
import java.util.ArrayList;
import java.util.List;
diff --git a/app/src/main/java/foundation/e/blisslauncher/features/widgets/WidgetPicker.java b/app/src/main/java/foundation/e/blisslauncher/features/widgets/WidgetPicker.java
index 9ec080d0dce276b8e943452a2f2f8d1b1a53ca61..6c99bc829fcdb325612b17deff78dde2c9e75f73 100644
--- a/app/src/main/java/foundation/e/blisslauncher/features/widgets/WidgetPicker.java
+++ b/app/src/main/java/foundation/e/blisslauncher/features/widgets/WidgetPicker.java
@@ -10,13 +10,14 @@ import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.Parcelable;
-import android.support.v7.widget.DividerItemDecoration;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
import android.util.DisplayMetrics;
import android.util.Log;
import android.widget.Toast;
+import androidx.recyclerview.widget.DividerItemDecoration;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
import java.text.Collator;
import java.util.ArrayList;
import java.util.Collections;
diff --git a/app/src/main/java/foundation/e/blisslauncher/features/widgets/WidgetPickerAdapter.java b/app/src/main/java/foundation/e/blisslauncher/features/widgets/WidgetPickerAdapter.java
index 64825076eb4522f579a7828bd8d354d4081dd4df..50b2b7fda764df06d4eda709fcd88677aa0c598e 100644
--- a/app/src/main/java/foundation/e/blisslauncher/features/widgets/WidgetPickerAdapter.java
+++ b/app/src/main/java/foundation/e/blisslauncher/features/widgets/WidgetPickerAdapter.java
@@ -7,14 +7,15 @@ import android.content.pm.ResolveInfo;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.UserHandle;
-import android.support.annotation.NonNull;
-import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+
import java.util.ArrayList;
import java.util.List;
diff --git a/app/src/main/java/foundation/e/blisslauncher/features/widgets/WidgetViewBuilder.java b/app/src/main/java/foundation/e/blisslauncher/features/widgets/WidgetViewBuilder.java
index 4cfb5eb9d79752f7abb5e7f0ff68476618803426..d1829fa4d38c9bde552afa6751fb6fb692628f7a 100644
--- a/app/src/main/java/foundation/e/blisslauncher/features/widgets/WidgetViewBuilder.java
+++ b/app/src/main/java/foundation/e/blisslauncher/features/widgets/WidgetViewBuilder.java
@@ -4,10 +4,11 @@ import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProviderInfo;
import android.content.Context;
import android.os.Bundle;
-import android.support.annotation.NonNull;
import android.widget.LinearLayout;
import android.widget.Toast;
+import androidx.annotation.NonNull;
+
import foundation.e.blisslauncher.BlissLauncher;
import foundation.e.blisslauncher.R;
import foundation.e.blisslauncher.core.customviews.RoundedWidgetView;
diff --git a/app/src/main/java/foundation/e/blisslauncher/features/widgets/WidgetsActivity.java b/app/src/main/java/foundation/e/blisslauncher/features/widgets/WidgetsActivity.java
index 4932285c547f7c74030ec5218ff9e075bbe50f6c..a0ea7d1c2d2ba73c2c1be3bb55e8d7c131644591 100644
--- a/app/src/main/java/foundation/e/blisslauncher/features/widgets/WidgetsActivity.java
+++ b/app/src/main/java/foundation/e/blisslauncher/features/widgets/WidgetsActivity.java
@@ -6,12 +6,13 @@ import android.appwidget.AppWidgetProviderInfo;
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.os.Bundle;
-import android.support.v7.widget.DividerItemDecoration;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
import android.util.DisplayMetrics;
import android.widget.Toast;
+import androidx.recyclerview.widget.DividerItemDecoration;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index fd86f7d15c44e02f176536bd88d0c0d46e925e99..52eca39bcf3b19abeaffdea4ce3b83e44a4715ac 100755
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -4,8 +4,8 @@
android:id="@+id/workspace"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:clipToPadding="false"
android:clipChildren="false"
+ android:clipToPadding="false"
tools:context="features.launcher.LauncherActivity">
+ android:visibility="gone"
+ android:focusable="true">
-
diff --git a/app/src/main/res/layout/activity_widget_picker.xml b/app/src/main/res/layout/activity_widget_picker.xml
index fca9644f8a24088e42cf567aabd87c1a3b5668cc..ae816672f5e3beab21f7846eaa66b5b544d04dce 100644
--- a/app/src/main/res/layout/activity_widget_picker.xml
+++ b/app/src/main/res/layout/activity_widget_picker.xml
@@ -1,6 +1,5 @@
-
\ No newline at end of file
+ android:layout_height="wrap_content" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_widgets.xml b/app/src/main/res/layout/activity_widgets.xml
index bd10873800b47a36fde9d86f3eb8403c0cebcb4e..e71e5dec5665b8fc4466befdfa5e6bc2a1cf051e 100644
--- a/app/src/main/res/layout/activity_widgets.xml
+++ b/app/src/main/res/layout/activity_widgets.xml
@@ -1,20 +1,23 @@
-
-
-
+
+
+
+
-
+ android:orientation="vertical" />
+
+ android:textSize="16sp" />
-
+
diff --git a/app/src/main/res/layout/app_view.xml b/app/src/main/res/layout/app_view.xml
index 3d6e5dc8a7120a63448ce9dec316ab7453e451b6..1458006f6dd52bc12cd1b8b9bfbb7a7ec9abf6af 100755
--- a/app/src/main/res/layout/app_view.xml
+++ b/app/src/main/res/layout/app_view.xml
@@ -1,6 +1,5 @@
-
+ android:scaleType="fitCenter" />
+ android:visibility="gone" />
+ android:visibility="gone" />
@@ -52,7 +51,7 @@
android:gravity="center"
android:maxLines="1"
android:textColor="@color/app_label_color"
- android:textSize="@dimen/labelSize"/>
+ android:textSize="@dimen/labelSize" />
diff --git a/app/src/main/res/layout/apps_page.xml b/app/src/main/res/layout/apps_page.xml
index 58574fcc94950ab5c4d8389d6cd453d5778fbf2d..7b4ca321331ab893d89884b05c80b4b31023d4df 100755
--- a/app/src/main/res/layout/apps_page.xml
+++ b/app/src/main/res/layout/apps_page.xml
@@ -1,6 +1,6 @@
+ android:id="@+id/appGrid"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:columnCount="@integer/col_count" />
diff --git a/app/src/main/res/layout/calendar_icon.xml b/app/src/main/res/layout/calendar_icon.xml
index 9ca7c0fcc5501b8fc23ad5f6df9f925f7308970d..3e34eabd19796ff04656219791808f84f9883055 100755
--- a/app/src/main/res/layout/calendar_icon.xml
+++ b/app/src/main/res/layout/calendar_icon.xml
@@ -1,6 +1,5 @@
-
+ android:textColor="#FFF" />
+ android:textColor="#000" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/icon_item.xml b/app/src/main/res/layout/icon_item.xml
index dad499fbe05684c0aba4c6f5ec1def4ef8e0d7d5..7a70d57f307141a534677e36d807fe0cf0fbee3b 100644
--- a/app/src/main/res/layout/icon_item.xml
+++ b/app/src/main/res/layout/icon_item.xml
@@ -1,28 +1,29 @@
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:background="@drawable/icon_set_selector">
+ android:padding="12dp"
+ tools:ignore="UseCompoundDrawables">
+ android:gravity="center_horizontal" />
+ android:gravity="center_horizontal" />
diff --git a/app/src/main/res/layout/icon_style_selection.xml b/app/src/main/res/layout/icon_style_selection.xml
index 89c8d8312f01e1d9b1c210465bb4123ba2e56b36..8774fcf10be3a9022d8a4c2c67d6ab7c7fb2cdc3 100644
--- a/app/src/main/res/layout/icon_style_selection.xml
+++ b/app/src/main/res/layout/icon_style_selection.xml
@@ -1,15 +1,15 @@
+ android:id="@+id/icon_list"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:choiceMode="singleChoice"
+ android:columnWidth="0dp"
+ android:gravity="center"
+ android:horizontalSpacing="4dp"
+ android:numColumns="2"
+ android:padding="4dp"
+ android:stretchMode="columnWidth"
+ android:verticalSpacing="4dp">
diff --git a/app/src/main/res/layout/item_added_widget.xml b/app/src/main/res/layout/item_added_widget.xml
index cdc750fd120c9d5cab67aaf60e7470214ac2ebac..9bbac8acbfdc31e6af52f44bb6bba42bc8934f65 100644
--- a/app/src/main/res/layout/item_added_widget.xml
+++ b/app/src/main/res/layout/item_added_widget.xml
@@ -1,29 +1,35 @@
-
-
-
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ android:paddingLeft="16dp"
+ android:paddingTop="8dp"
+ android:paddingRight="16dp"
+ android:paddingBottom="8dp">
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_all_widget.xml b/app/src/main/res/layout/item_all_widget.xml
index e05e3cae7fe8e92bae81b834a3d55f20e75c8f03..d48de2203d3c4d57f31424a9f2b7dd312ada4047 100644
--- a/app/src/main/res/layout/item_all_widget.xml
+++ b/app/src/main/res/layout/item_all_widget.xml
@@ -1,22 +1,26 @@
-
-
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ android:paddingLeft="16dp"
+ android:paddingTop="8dp"
+ android:paddingRight="16dp"
+ android:paddingBottom="8dp">
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_suggestion.xml b/app/src/main/res/layout/item_suggestion.xml
index b328248c42b61d063833f3f9105ae935e6aa8b78..b63d812463c9e751b4f4a6eabb9881e0bc463657 100755
--- a/app/src/main/res/layout/item_suggestion.xml
+++ b/app/src/main/res/layout/item_suggestion.xml
@@ -1,16 +1,16 @@
\ No newline at end of file
+ android:id="@+id/suggestionTextView"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:background="@drawable/item_suggestion_background"
+ android:drawableStart="@drawable/ic_search_white_alpha_24dp"
+ android:drawablePadding="8dp"
+ android:ellipsize="marquee"
+ android:paddingLeft="8dp"
+ android:paddingTop="6dp"
+ android:paddingRight="8dp"
+ android:paddingBottom="6dp"
+ android:singleLine="true"
+ android:textColor="#CCFFFFFF"
+ android:textSize="16sp" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_weather_forecast.xml b/app/src/main/res/layout/item_weather_forecast.xml
index 85701b182bebc61681450ef683ad213162d902a6..0366cd234a9c6aa4325c005a73f8de83d47cab8a 100644
--- a/app/src/main/res/layout/item_weather_forecast.xml
+++ b/app/src/main/res/layout/item_weather_forecast.xml
@@ -1,10 +1,10 @@
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:gravity="center_horizontal"
+ android:orientation="vertical">
+ android:textColor="@color/transparent_white" />
+ tools:ignore="ContentDescription" />
+ android:textColor="@color/white" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/layout_search_suggestion.xml b/app/src/main/res/layout/layout_search_suggestion.xml
index 570a58917735e696283e030a37d060f9f78071ea..a9f705449c9beea3c966d04757dd2df37788798c 100644
--- a/app/src/main/res/layout/layout_search_suggestion.xml
+++ b/app/src/main/res/layout/layout_search_suggestion.xml
@@ -1,8 +1,8 @@
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical">
+ android:maxLines="1" />
+ android:visibility="gone" />
-
+ android:paddingEnd="4dp" />
+ layout="@layout/layout_used_apps" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/layout_used_apps.xml b/app/src/main/res/layout/layout_used_apps.xml
index 9a9a1f89761ece16045072226878a89c76d7f9f2..5b26e9678dc074c98d41ff41d296aeec96eddea2 100755
--- a/app/src/main/res/layout/layout_used_apps.xml
+++ b/app/src/main/res/layout/layout_used_apps.xml
@@ -1,12 +1,12 @@
-
+
+ android:textSize="16sp" />
+
+ android:background="@drawable/item_widget_bottom_round_corner"
+ android:minHeight="96dp">
+
+ android:rowCount="1" />
+
+ android:textSize="16sp" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/layout_weather_info.xml b/app/src/main/res/layout/layout_weather_info.xml
index 97ebdd504e983efaa556539266c67e0eeaa5eb85..afb603c94fd9dd2cf8b2425ebb7cc9b77185404e 100644
--- a/app/src/main/res/layout/layout_weather_info.xml
+++ b/app/src/main/res/layout/layout_weather_info.xml
@@ -1,6 +1,5 @@
-
+ android:textSize="16sp" />
+ android:src="@drawable/ic_settings_white_24dp" />
+
+
+ android:visibility="gone" />
+
+ android:layout_marginTop="8dp"
+ android:layout_marginEnd="16dp"
+ android:layout_marginBottom="8dp">
+ android:src="@drawable/weather_color_32" />
+
+ android:textSize="18sp" />
+ android:textSize="16sp" />
+ android:textSize="14sp" />
+
+
+ android:textSize="32sp" />
+ android:textColor="@color/white" />
+
+ android:orientation="horizontal" />
diff --git a/app/src/main/res/layout/layout_widget_host_container.xml b/app/src/main/res/layout/layout_widget_host_container.xml
index a3da1d0d117e11463b5c656c36f1f467660a5566..4ba5f8056b0cf72297ca068e0dc34fe82c5eb5c3 100644
--- a/app/src/main/res/layout/layout_widget_host_container.xml
+++ b/app/src/main/res/layout/layout_widget_host_container.xml
@@ -1,24 +1,27 @@
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content">
-
+
-
+
-
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/widgets_page.xml b/app/src/main/res/layout/widgets_page.xml
index 30cc0f5d8b7b597e08f3a9b38974b36225abd8cb..55a322c244345d3b0152262f3203d0aaf93aac56 100755
--- a/app/src/main/res/layout/widgets_page.xml
+++ b/app/src/main/res/layout/widgets_page.xml
@@ -4,6 +4,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:animateLayoutChanges="true">
+
+ android:layout_toEndOf="@id/min_label" />
+
\ No newline at end of file
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a6b3daec9354f9ae75cdf8d94a67446c6227dd96
--- /dev/null
+++ b/app/src/main/res/values-es/strings.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c6c405bdba0c898b5d1ee722b007a7606a667703
--- /dev/null
+++ b/app/src/main/res/values-fr/strings.xml
@@ -0,0 +1,130 @@
+
+
+ Averses de neige
+ Averses
+ Averses
+ Pluie verglaçante
+ Bruine
+ Bruine verglaçante
+ Neige et neige fondue mélangées
+ Pluie et neige fondue
+ Pluie et neige mêlées
+ Orages
+ Orages violents
+ Ouragan
+ Tempête tropicale
+ Tornade
+ Annuler
+ Inconnu
+ Activer l\'accès aux application pour pouvoir afficher les suggestions d\'application.
+ Suggestions d\'application
+ Sans titre
+ Rechercher
+ BlissLauncher
+ Légères averses de neige
+ Rafales de neige
+ Neige
+ Ajouter à l\'écran d\'accueil
+ Ajouter automatiquement
+ Autorise une app à supprimer des raccourcis sans l\'intervention de l\'utilisateur
+ Donne la permission à une app d\'ajouter un raccourci sans l\'intervention de l\'utilisateur.
+ racourcis de désinstallation
+ raccourcis d\'installation
+ Image du jeu d\'icones
+ Images de la situation météo
+ Icone de configuration de la Météo
+ 42° / 28°
+ 36°
+ Appuyer pour configurer la météo
+ Météo
+ Accéder à davantage…
+ Monochrome
+ En couleurs
+ Jeu d\'icones
+ Sélectionner l\'emplacement
+ Afficher un résumé météo quand le widget est minimisé
+ Montrer lors de la minimisation
+ Sélectionner pour basculer des icones par défaut (Couleurs) aux icones alternatives (Blanches)
+ Utiliser les icones en couleurs
+ Emplacement en cours de vérification
+ Inverser basses et hautes températures
+ Activer
+ La géolocalisation est désactivée.
+\n
+\nActivez la géolocalisation pour utiliser le widget Météo.
+ Impossible de trouver l\'emplacement !
+ Utiliser le système métrique (°C)
+ Intervalle de mise à jour
+ Afficher l\'heure
+ Montrer l\'emplacement
+ Emplacement
+ Ville, Etat/Pays
+ Saisir l\'emplacement
+ Géolocalisation en utilisant le réseau
+ Utiliser une localisation personnalisée
+ Service Météo
+ Afficher la Météo
+ Activé
+ Affichage
+ Panneau Météo
+ Général
+ 8 heures
+ 6 heures
+ 4 heures
+ 2 heures
+ 60 minutes
+ 30 minutes
+ Manuellement
+ Toucher pour sélectionner
+ Aucun service météo sélectionné
+ %s actuellement injoignable
+ Maintenant
+ Mise à jour
+ Appuyer pour rafraîchir
+ Aucunes données
+ NO
+ O
+ SO
+ S
+ SE
+ E
+ NE
+ N
+ mph
+ km/h
+ Averses orageuses isolées
+ Averses de neige
+ Averses orageuses
+ Partiellement couvert
+ Fortes chûtes de neige
+ Averses de neiges éparses
+ Fortes chutes de neige
+ Averses isolées
+ Orages isolés
+ Orages isolés
+ Orages isolés
+ Chaud
+ Giboulées
+ Beau temps
+ Beau temps
+ Ensoleillé
+ Clair
+ Nuages éparses
+ Partiellement nuageux
+ Jour
+ Nuit
+ Couvert
+ Froid
+ Venteux
+ Venteux
+ Fumée
+ Brumeux
+ Brouillard
+ Beau temps
+ Poussières
+ Grêle
+ Afficher les bulles de notification
+ Page %1$d sur %2$d
+ L\'app n\'est pas installée
+ Appuyer pour configurer les suggestions d\'applications
+
\ No newline at end of file
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3a84aea5f5fc2e4ac8d490bba8f5a486ccd601ec
--- /dev/null
+++ b/app/src/main/res/values-it/strings.xml
@@ -0,0 +1,128 @@
+
+
+ Mostra puntini di notifica
+ Pagina %1$d di %2$d
+ App non installata
+ Tocca per impostare suggerimenti App
+ Aggiungi a schermata Home
+ Aggiungi automaticamente
+ Permetti ad una App di rimuovere scorciatoie senza intervento utente.
+ Permetti ad una App di aggiungere scorciatoie senza intervento utente.
+ disinstalla scorciatoie
+ installa scorciatoie
+ Immagine gruppo di icone
+ Immagine Condizioni del Tempo
+ Icona impostazione Tempo
+ 42° / 28°
+ 36°
+ Tocca per impostare il Tempo
+ Tempo
+ Altre…
+ Schermata Tempo
+ Sorgente del Tempo non selezionata
+ Al momento, %s è irraggiungibile
+ Tornado
+ Bliss Launcher
+ Bianche
+ A colori
+ Raccolta Icone
+ Scegli la posizione
+ Mosra le informazioni base sul tempo quando il widget è minimizzato
+ Mostra quando minimizzato
+ Seleziona per scambiare le icone di default (Colori) con quelle in alternativa (Bianche)
+ Utilizza icone a colori
+ Sto verificando la posizione
+ Inverti le temperature basse/alte
+ Abilita
+ Consenti al widget Tempo di localizzarti.
+ Non riesco a recuperare la posizione!
+ (°C) su scala decimale
+ Intervallo di aggiornamento
+ Mostra orario
+ Mostra posizione
+ Posizione
+ Città, Stato/Provincia
+ Inserisci la posizione
+ Geolocalizzato usando la rete dati
+ Utilizza una posizione personalizzata
+ Sorgente del Tempo
+ Mostra il Tempo
+ Abilitato
+ Schermo
+ Generale
+ 8 ore
+ 6 ore
+ 4 ore
+ 2 ore
+ 60 minuti
+ 30 minuti
+ Manuale
+ Tocca per selezionarne uno
+ Adesso
+ Sto Aggiornando
+ Tocca per aggiornare
+ Nessun dato
+ NO
+ O
+ SO
+ S
+ SE
+ E
+ NE
+ N
+ mph
+ km/h
+ Isolati Acquazzoni
+ Nevicate
+ Acquazzoni
+ Parzialmente Nuvoloso
+ Neve Pesante
+ Sporadiche Nevicate
+ Neve Pesante
+ Piogge Sporadiche
+ Sporadici Temporali
+ Sporadici Temporali
+ Isolati Temporali
+ Caldo
+ Pioggia e Grandine insieme
+ Sereno
+ Sereno
+ Soleggiato
+ Terso
+ Parzialmente Nuvoloso
+ Parzialmente Nuvoloso
+ Quasi Completamente Nuvoloso
+ Quasi Completamente Nuvoloso
+ Nuvoloso
+ Freddo
+ Ventoso
+ Tempestoso
+ Nebbioso
+ Foschia
+ Nebbia
+ Pulviscolo
+ Nevischio
+ Grandine
+ Neve
+ Tempesta di Neve
+ Nevicate Leggere
+ Spruzzate di Neve
+ Acquazzoni
+ Acquazzoni
+ Pioggia Ghiacciata
+ Pioggerella
+ Pioggerella Ghiacchiata
+ neve e nevischio insieme
+ Pioggia e nevischio insieme
+ Pioggia e Neve insieme
+ Temporali
+ Forti Temporali
+ Uragano
+ Tempesta Tropicale
+ Annulla
+ Sconosciuto
+ Consenti l\'accesso ad appusage per vedere le app suggerite.
+ APP SUGGERITE
+ Senza titolo
+ Cerca
+
\ No newline at end of file
diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a6b3daec9354f9ae75cdf8d94a67446c6227dd96
--- /dev/null
+++ b/app/src/main/res/values-nl/strings.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a6b3daec9354f9ae75cdf8d94a67446c6227dd96
--- /dev/null
+++ b/app/src/main/res/values-pl/strings.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a6b3daec9354f9ae75cdf8d94a67446c6227dd96
--- /dev/null
+++ b/app/src/main/res/values-ro/strings.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 808350c9782b6368053a245dae837b79c01fb041..057771f3fd17205f80c4519fa95c992db3a85836 100755
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -168,5 +168,6 @@
App isn\'t installedPage %1$d of %2$d
+ Show notification dots
diff --git a/build.gradle b/build.gradle
index 97061585b55636ac2f20b16427544fef88c94dfc..b16585da3cd92cc633a807572210d032cffcbd41 100755
--- a/build.gradle
+++ b/build.gradle
@@ -1,4 +1,5 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
+import foundation.e.blisslauncher.buildsrc.Libs
buildscript {
ext.kotlin_version = '1.3.61'
@@ -10,14 +11,21 @@ buildscript {
}
}
dependencies {
- classpath 'com.android.tools.build:gradle:3.5.3'
- classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
- classpath 'com.getkeepsafe.dexcount:dexcount-gradle-plugin:0.8.6'
+ classpath Libs.androidGradlePlugin
+
+ classpath Libs.Kotlin.gradlePlugin
+ classpath Libs.Kotlin.extensions
+
+ classpath Libs.Google.fabricPlugin
+ classpath Libs.Google.gmsGoogleServices
+
+ classpath Libs.dexcountGradlePlugin
}
}
plugins {
id "com.diffplug.gradle.spotless" version "3.14.0"
+ id 'com.github.ben-manes.versions' version "0.25.0"
}
allprojects {
@@ -36,25 +44,14 @@ subprojects {
target '**/*.java'
removeUnusedImports() // removes any unused imports
}
+ kotlin {
+ target "**/*.kt"
+ ktlint()
+ }
+ kotlinGradle {
+ // same as kotlin, but for .gradle.kts files (defaults to '*.gradle.kts')
+ target '*.gradle.kts', 'additionalScripts/*.gradle.kts'
+ ktlint()
+ }
}
}
-
-ext {
- compileSdkVersion = 27
- minSdkVersion = 24
- targetSdkVersion = 27
- sourceCompatibilityVersion = '1.7'
- targetCompatibilityVersion = '1.7'
- supportLibraryVersion = '27.1.1'
- junitVersion = '4.12'
- mockitoVersion = '2.16.0'
- hamcrestVersion = '1.3'
- daggerVersion = '2.15'
- archVersion = '1.1.0'
- rxJavaVersion = '2.1.10'
- rxAndroidVersion = '2.0.2'
- rxRelayVersion = '2.0.0'
- robolectricVersion = '3.7.1'
- espressoVersion = '3.0.1'
- runnerRulesVersion = '1.0.0'
-}
diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts
new file mode 100644
index 0000000000000000000000000000000000000000..445e21f767b47d0d6d4198770c581bb9d0ea0083
--- /dev/null
+++ b/buildSrc/build.gradle.kts
@@ -0,0 +1,7 @@
+repositories {
+ jcenter()
+}
+
+plugins {
+ `kotlin-dsl`
+}
\ No newline at end of file
diff --git a/buildSrc/src/main/java/foundation/e/blisslauncher/buildsrc/Dependencies.kt b/buildSrc/src/main/java/foundation/e/blisslauncher/buildsrc/Dependencies.kt
new file mode 100644
index 0000000000000000000000000000000000000000..d7f98933d3bfd2bc734956c498ec57e8239faefd
--- /dev/null
+++ b/buildSrc/src/main/java/foundation/e/blisslauncher/buildsrc/Dependencies.kt
@@ -0,0 +1,129 @@
+package foundation.e.blisslauncher.buildsrc
+
+object Versions {
+ const val compile_sdk = 28
+ const val min_sdk = 24
+ const val target_sdk = 28
+ const val android_gradle_plugin = "3.5.0"
+ const val dexcount_gradle_plugin = "0.8.6"
+ const val kotlin = "1.3.41"
+ const val timber = "4.7.1"
+ const val junit = "4.12"
+ const val robolectric = "4.3"
+ const val mockK = "1.9.3"
+ const val firebase_core = "17.1.0"
+ const val crashlytics = "2.10.1"
+ const val google_services = "4.3.0"
+ const val fabric = "1.31.0"
+ const val okhttp = "4.1.0"
+ const val retrofit = "2.6.1"
+ const val dagger = "2.24"
+ const val rxjava = "2.2.11"
+ const val rxandroid = "2.1.1"
+ const val rxkotlin = "2.4.0"
+ const val ktlint = "0.34.2"
+}
+
+object Libs {
+ const val androidGradlePlugin = "com.android.tools.build:gradle:${Versions.android_gradle_plugin}"
+ const val dexcountGradlePlugin = "com.getkeepsafe.dexcount:dexcount-gradle-plugin:${Versions.dexcount_gradle_plugin}"
+
+ const val timber = "com.jakewharton.timber:timber:${Versions.timber}"
+
+ const val junit = "junit:junit:${Versions.junit}"
+ const val robolectric = "org.robolectric:robolectric:${Versions.robolectric}"
+ const val mockK = "io.mockk:mockk:${Versions.mockK}"
+
+ object Google {
+ const val firebaseCore = "com.google.firebase:firebase-core:${Versions.firebase_core}"
+ const val crashlytics = "com.crashlytics.sdk.android:crashlytics:${Versions.crashlytics}"
+ const val gmsGoogleServices = "com.google.gms:google-services:${Versions.google_services}"
+ const val fabricPlugin = "io.fabric.tools:gradle:${Versions.fabric}"
+ }
+
+ object Kotlin {
+ const val stdlib = "org.jetbrains.kotlin:kotlin-stdlib-jdk8:${Versions.kotlin}"
+ const val reflect = "org.jetbrains.kotlin:kotlin-reflect:${Versions.kotlin}"
+ const val gradlePlugin = "org.jetbrains.kotlin:kotlin-gradle-plugin:${Versions.kotlin}"
+ const val extensions = "org.jetbrains.kotlin:kotlin-android-extensions:${Versions.kotlin}"
+ }
+
+ object AndroidX {
+ const val appcompat = "androidx.appcompat:appcompat:1.1.0-rc01"
+ const val collection = "androidx.collection:collection-ktx:1.1.0"
+ const val palette = "androidx.palette:palette:1.0.0"
+ const val recyclerview = "androidx.recyclerview:recyclerview:1.1.0-beta03"
+
+ object Navigation {
+ private const val version = "2.2.0-alpha01"
+ const val fragment = "androidx.navigation:navigation-fragment-ktx:$version"
+ const val ui = "androidx.navigation:navigation-ui-ktx:$version"
+ const val safeArgs = "androidx.navigation:navigation-safe-args-gradle-plugin:$version"
+ }
+
+ object Fragment {
+ private const val version = "1.2.0-alpha02"
+ const val fragment = "androidx.fragment:fragment:$version"
+ const val fragmentKtx = "androidx.fragment:fragment-ktx:$version"
+ }
+
+ object Test {
+ private const val version = "1.2.0"
+ const val core = "androidx.test:core:$version"
+ const val runner = "androidx.test:runner:$version"
+ const val rules = "androidx.test:rules:$version"
+
+ const val espressoCore = "androidx.test.espresso:espresso-core:3.2.0"
+ const val espressoContrib = "androidx.test.espresso:espresso-contrib:3.2.0"
+ const val espressoIntents = "androidx.test.espresso:espresso-intents:3.2.0"
+ const val archCoreTesting = "androidx.arch.core:core-testing:2.0.1"
+
+ }
+
+ const val preference = "androidx.preference:preference:1.1.0-rc01"
+
+ const val constraintlayout = "androidx.constraintlayout:constraintlayout:2.0.0-beta2"
+
+ const val coreKtx = "androidx.core:core-ktx:1.2.0-alpha03"
+
+ object Lifecycle {
+ private const val version = "2.2.0-alpha03"
+ const val extensions = "androidx.lifecycle:lifecycle-extensions:$version"
+ const val compiler = "androidx.lifecycle:lifecycle-compiler:$version"
+ const val viewmodel = "androidx.lifecycle:lifecycle-viewmodel-ktx:$version"
+ }
+
+ object Room {
+ private const val version = "2.2.0-beta01"
+ const val common = "androidx.room:room-common:$version"
+ const val runtime = "androidx.room:room-runtime:$version"
+ const val compiler = "androidx.room:room-compiler:$version"
+ const val ktx = "androidx.room:room-ktx:$version"
+ const val testing = "androidx.room:room-testing:$version"
+ }
+ }
+
+ object RxJava {
+ const val rxJava = "io.reactivex.rxjava2:rxjava:${Versions.rxjava}"
+ const val rxAndroid = "io.reactivex.rxjava2:rxandroid:${Versions.rxandroid}"
+ const val rxKotlin = "io.reactivex.rxjava2:rxkotlin:${Versions.rxkotlin}"
+ }
+
+ object Dagger {
+ const val dagger = "com.google.dagger:dagger:${Versions.dagger}"
+ const val androidSupport = "com.google.dagger:dagger-android-support:${Versions.dagger}"
+ const val compiler = "com.google.dagger:dagger-compiler:${Versions.dagger}"
+ const val androidProcessor = "com.google.dagger:dagger-android-processor:${Versions.dagger}"
+ }
+
+ object Retrofit {
+ const val retrofit = "com.squareup.retrofit2:retrofit:${Versions.retrofit}"
+ const val retrofit_rxjava_adapter = "com.squareup.retrofit2:adapter-rxjava2:${Versions.retrofit}"
+ const val gsonConverter = "com.squareup.retrofit2:converter-gson:${Versions.retrofit}"
+ }
+
+ object OkHttp {
+ const val okhttp = "com.squareup.okhttp3:okhttp:${Versions.okhttp}"
+ const val loggingInterceptor = "com.squareup.okhttp3:logging-interceptor:${Versions.okhttp}"
+ }
+}
\ No newline at end of file
diff --git a/hoko-blur/.gitignore b/data/.gitignore
similarity index 63%
rename from hoko-blur/.gitignore
rename to data/.gitignore
index c591fdeb454c166d7e86d3512b2c39c1fa26336f..796b96d1c402326528b4ba3c12ee9d92d0e212e9 100644
--- a/hoko-blur/.gitignore
+++ b/data/.gitignore
@@ -1,2 +1 @@
/build
-.cxx
\ No newline at end of file
diff --git a/data/build.gradle b/data/build.gradle
new file mode 100644
index 0000000000000000000000000000000000000000..2e3d8bef1a129ba62261e72536de0005069fd18a
--- /dev/null
+++ b/data/build.gradle
@@ -0,0 +1,48 @@
+import foundation.e.blisslauncher.buildsrc.Libs
+import foundation.e.blisslauncher.buildsrc.Versions
+
+apply plugin: 'com.android.library'
+apply plugin: 'kotlin-android'
+apply plugin: 'kotlin-kapt'
+
+android {
+ compileSdkVersion Versions.compile_sdk
+ defaultConfig {
+ minSdkVersion Versions.min_sdk
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ consumerProguardFiles 'consumer-rules.pro'
+ }
+
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+
+ testOptions {
+ unitTests {
+ includeAndroidResources = true
+
+ all {
+ minHeapSize = "64m"
+ maxHeapSize = "128m"
+ }
+ }
+ }
+}
+
+dependencies {
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
+ implementation Libs.Kotlin.stdlib
+ implementation Libs.AndroidX.appcompat
+ implementation Libs.AndroidX.coreKtx
+
+ implementation Libs.AndroidX.Room.runtime
+ kapt Libs.AndroidX.Room.compiler
+
+ kapt Libs.Dagger.compiler
+
+ testImplementation Libs.junit
+ testImplementation Libs.robolectric
+ testImplementation Libs.mockK
+}
diff --git a/data/consumer-rules.pro b/data/consumer-rules.pro
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/data/proguard-rules.pro b/data/proguard-rules.pro
new file mode 100644
index 0000000000000000000000000000000000000000..f1b424510da51fd82143bc74a0a801ae5a1e2fcd
--- /dev/null
+++ b/data/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
diff --git a/data/src/main/AndroidManifest.xml b/data/src/main/AndroidManifest.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3cc832571af20a6f6ede1c748d0b555781cdd2b7
--- /dev/null
+++ b/data/src/main/AndroidManifest.xml
@@ -0,0 +1,2 @@
+
diff --git a/data/src/main/res/values/strings.xml b/data/src/main/res/values/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e4ffffe8b9df199f4fdd163f54b39e20803dbb55
--- /dev/null
+++ b/data/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ Data
+
diff --git a/data/src/test/java/foundation/e/blisslauncher/data/ExampleUnitTest.kt b/data/src/test/java/foundation/e/blisslauncher/data/ExampleUnitTest.kt
new file mode 100644
index 0000000000000000000000000000000000000000..1ed56b7767ccab8a8a712e68cf1a5c82dbdb4bde
--- /dev/null
+++ b/data/src/test/java/foundation/e/blisslauncher/data/ExampleUnitTest.kt
@@ -0,0 +1,17 @@
+package foundation.e.blisslauncher.data
+
+import org.junit.Test
+
+import org.junit.Assert
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * See [testing documentation](http://d.android.com/tools/testing).
+ */
+class ExampleUnitTest {
+ @Test
+ fun addition_isCorrect() {
+ Assert.assertEquals(4, 2 + 2)
+ }
+}
diff --git a/domain/.gitignore b/domain/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..796b96d1c402326528b4ba3c12ee9d92d0e212e9
--- /dev/null
+++ b/domain/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/domain/build.gradle b/domain/build.gradle
new file mode 100644
index 0000000000000000000000000000000000000000..dcca293e86e96225fcd3f89989e9c55b37b87f1c
--- /dev/null
+++ b/domain/build.gradle
@@ -0,0 +1,30 @@
+import foundation.e.blisslauncher.buildsrc.Libs
+import foundation.e.blisslauncher.buildsrc.Versions
+
+apply plugin: 'com.android.library'
+apply plugin: 'kotlin-android'
+apply plugin: 'kotlin-kapt'
+
+android {
+ compileSdkVersion Versions.compile_sdk
+
+ defaultConfig {
+ minSdkVersion Versions.min_sdk
+ targetSdkVersion Versions.target_sdk
+ }
+
+ compileOptions {
+ sourceCompatibility 1.8
+ targetCompatibility 1.8
+ }
+}
+
+dependencies {
+ implementation Libs.Kotlin.stdlib
+
+ kapt Libs.Dagger.compiler
+
+ implementation Libs.RxJava.rxKotlin
+ implementation Libs.timber
+ testImplementation Libs.junit
+}
diff --git a/domain/consumer-rules.pro b/domain/consumer-rules.pro
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/domain/proguard-rules.pro b/domain/proguard-rules.pro
new file mode 100644
index 0000000000000000000000000000000000000000..f1b424510da51fd82143bc74a0a801ae5a1e2fcd
--- /dev/null
+++ b/domain/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
diff --git a/domain/src/main/AndroidManifest.xml b/domain/src/main/AndroidManifest.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d405b99707fe0a2d3175c38de27168575c2ba815
--- /dev/null
+++ b/domain/src/main/AndroidManifest.xml
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/domain/src/main/java/foundation/e/blisslauncher/domain/executors/PostExecutionThread.kt b/domain/src/main/java/foundation/e/blisslauncher/domain/executors/PostExecutionThread.kt
new file mode 100644
index 0000000000000000000000000000000000000000..ba8ed2ca00f0cd30c86908b522b3adf42eedacdd
--- /dev/null
+++ b/domain/src/main/java/foundation/e/blisslauncher/domain/executors/PostExecutionThread.kt
@@ -0,0 +1,7 @@
+package foundation.e.blisslauncher.domain.executors
+
+import io.reactivex.Scheduler
+
+interface PostExecutionThread {
+ val scheduler: Scheduler
+}
\ No newline at end of file
diff --git a/domain/src/main/java/foundation/e/blisslauncher/domain/executors/ThreadExecutor.kt b/domain/src/main/java/foundation/e/blisslauncher/domain/executors/ThreadExecutor.kt
new file mode 100644
index 0000000000000000000000000000000000000000..f2b27ad31beacca6d30360477de737e9baa5f98a
--- /dev/null
+++ b/domain/src/main/java/foundation/e/blisslauncher/domain/executors/ThreadExecutor.kt
@@ -0,0 +1,5 @@
+package foundation.e.blisslauncher.domain.executors
+
+import java.util.concurrent.Executor
+
+interface ThreadExecutor : Executor
\ No newline at end of file
diff --git a/domain/src/main/java/foundation/e/blisslauncher/domain/interactors/Interactor.kt b/domain/src/main/java/foundation/e/blisslauncher/domain/interactors/Interactor.kt
new file mode 100644
index 0000000000000000000000000000000000000000..144ad143f1e9ea9003559ac72ca3be03011eae04
--- /dev/null
+++ b/domain/src/main/java/foundation/e/blisslauncher/domain/interactors/Interactor.kt
@@ -0,0 +1,52 @@
+package foundation.e.blisslauncher.domain.interactors
+
+import foundation.e.blisslauncher.domain.executors.PostExecutionThread
+import foundation.e.blisslauncher.domain.executors.ThreadExecutor
+import io.reactivex.Completable
+import io.reactivex.Flowable
+import io.reactivex.disposables.CompositeDisposable
+import io.reactivex.disposables.Disposable
+import io.reactivex.rxkotlin.plusAssign
+import io.reactivex.schedulers.Schedulers
+import timber.log.Timber
+
+interface Interactor {
+ val threadExecutor: ThreadExecutor
+ val postExecutionThread: PostExecutionThread
+}
+
+abstract class FlowableInteractor : Interactor
, Disposable {
+
+ private val disposables: CompositeDisposable = CompositeDisposable()
+
+ protected abstract fun buildObservable(params: P? = null): Flowable
+
+ operator fun invoke(params: P, onNext: (next: T) -> Unit = {}, onComplete: () -> Unit = {}) {
+ disposables += this.buildObservable(params)
+ .subscribeOn(Schedulers.from(threadExecutor))
+ .observeOn(postExecutionThread.scheduler)
+ .subscribe(onNext, Timber::w, onComplete)
+ }
+
+ override fun dispose() = disposables.dispose()
+
+ override fun isDisposed(): Boolean = disposables.isDisposed
+}
+
+abstract class CompletableInteractor : Interactor
, Disposable {
+
+ private val disposables: CompositeDisposable = CompositeDisposable()
+
+ protected abstract fun buildObservable(params: P? = null): Completable
+
+ operator fun invoke(params: P, onComplete: () -> Unit = {}) {
+ disposables += this.buildObservable(params)
+ .subscribeOn(Schedulers.from(threadExecutor))
+ .observeOn(postExecutionThread.scheduler)
+ .subscribe(onComplete, Timber::w)
+ }
+
+ override fun dispose() = disposables.dispose()
+
+ override fun isDisposed(): Boolean = disposables.isDisposed
+}
\ No newline at end of file
diff --git a/domain/src/test/java/foundation/e/blisslauncher/domain/ExampleUnitTest.kt b/domain/src/test/java/foundation/e/blisslauncher/domain/ExampleUnitTest.kt
new file mode 100644
index 0000000000000000000000000000000000000000..7c5a7b55e68f9443f2d8e80a4d187df12feeb94d
--- /dev/null
+++ b/domain/src/test/java/foundation/e/blisslauncher/domain/ExampleUnitTest.kt
@@ -0,0 +1,17 @@
+package foundation.e.blisslauncher.domain
+
+import org.junit.Test
+
+import org.junit.Assert.assertEquals
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * See [testing documentation](http://d.android.com/tools/testing).
+ */
+class ExampleUnitTest {
+ @Test
+ fun addition_isCorrect() {
+ assertEquals(4, 2 + 2)
+ }
+}
diff --git a/gradle.properties b/gradle.properties
index 2ce72056ac1213dda73471e6ea0e527c7f15854f..4b862715dc7d100816ac4837adabc43b5687ee0f 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -20,8 +20,8 @@ android.enableD8.desugaring=true
android.enableR8=true
# AndroidX
-android.useAndroidX=false
-android.enableJetifier=false
+android.useAndroidX=true
+android.enableJetifier=true
# The default memory is 512m
org.gradle.jvmargs=-Xmx1g
diff --git a/hoko-blur/build.gradle b/hoko-blur/build.gradle
deleted file mode 100644
index c3333b5fc9b862c8f1d2cbb67fce22d34f26bfea..0000000000000000000000000000000000000000
--- a/hoko-blur/build.gradle
+++ /dev/null
@@ -1,66 +0,0 @@
-apply plugin: 'com.android.library'
-
-def isReleaseBuildType = false
-gradle.startParameter.taskNames.each({
- String taskNameL = it.toLowerCase()
- if (taskNameL.contains("release")) {
- isReleaseBuildType = true
- }
- if (taskNameL.equalsIgnoreCase('uploadArchives')) {
- isReleaseBuildType = true
- }
-})
-
-android {
- compileSdkVersion rootProject.ext.compileSdkVersion
-
- defaultConfig {
- minSdkVersion rootProject.ext.minSdkVersion
- targetSdkVersion rootProject.ext.targetSdkVersion
- versionCode 1
- versionName "1.0"
-
- renderscriptTargetApi 27
- renderscriptSupportModeEnabled true
-
- externalNativeBuild {
- cmake {
- arguments '-DANDROID_PLATFORM=android-13', '-DANDROID_TOOLCHAIN=clang'
- cppFlags "-std=c++11 -frtti -fexceptions"
- }
- }
- externalNativeBuild.cmake.abiFilters = isReleaseBuildType ? ['armeabi-v7a', 'arm64-v8a'] : ['armeabi-v7a', 'arm64-v8a', 'x86']
- }
-
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_8
- targetCompatibility JavaVersion.VERSION_1_8
- }
-
- buildTypes {
- release {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- }
-
- debug {
- jniDebuggable true
- }
- }
-
- lintOptions {
- abortOnError false
- }
-
- externalNativeBuild {
- cmake {
- path 'src/main/jni/CMakeLists.txt'
- }
- }
-}
-
-dependencies {
- implementation fileTree(include: ['*.jar'], dir: 'libs')
- testImplementation 'junit:junit:4.12'
- implementation "com.android.support:support-annotations:${rootProject.ext.supportLibraryVersion}"
-}
\ No newline at end of file
diff --git a/hoko-blur/proguard-rules.pro b/hoko-blur/proguard-rules.pro
deleted file mode 100644
index a6e4c0bc693633ad706984bb58c9939bc370af48..0000000000000000000000000000000000000000
--- a/hoko-blur/proguard-rules.pro
+++ /dev/null
@@ -1,17 +0,0 @@
-# Add project specific ProGuard rules here.
-# By default, the flags in this file are appended to flags specified
-# in /Users/yuxfzju/Library/Android/sdk/tools/proguard/proguard-android.txt
-# You can edit the include path and order by changing the proguardFiles
-# directive in build.gradle.
-#
-# For more details, see
-# http://developer.android.com/guide/developing/tools/proguard.html
-
-# Add any project specific keep options here:
-
-# If your project uses WebView with JS, uncomment the following
-# and specify the fully qualified class name to the JavaScript helper
-# class:
-#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
-# public *;
-#}
diff --git a/hoko-blur/src/androidTest/java/com/hoko/blur/ApplicationTest.java b/hoko-blur/src/androidTest/java/com/hoko/blur/ApplicationTest.java
deleted file mode 100644
index f1b8f139f58c77f534246d31b02380556e5b81b2..0000000000000000000000000000000000000000
--- a/hoko-blur/src/androidTest/java/com/hoko/blur/ApplicationTest.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.hoko.blur;
-
-import android.app.Application;
-import android.test.ApplicationTestCase;
-
-/**
- * Testing Fundamentals
- */
-public class ApplicationTest extends ApplicationTestCase {
- public ApplicationTest() {
- super(Application.class);
- }
-}
\ No newline at end of file
diff --git a/hoko-blur/src/main/AndroidManifest.xml b/hoko-blur/src/main/AndroidManifest.xml
deleted file mode 100644
index d6d463e2eec3aada84e1400a2502a4d4ba2ebf60..0000000000000000000000000000000000000000
--- a/hoko-blur/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/hoko-blur/src/main/java/com/hoko/blur/HokoBlur.java b/hoko-blur/src/main/java/com/hoko/blur/HokoBlur.java
deleted file mode 100644
index 6a1521bb5d8cee06e21c86134ae1ace5ee8b25c3..0000000000000000000000000000000000000000
--- a/hoko-blur/src/main/java/com/hoko/blur/HokoBlur.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.hoko.blur;
-
-import android.content.Context;
-
-import com.hoko.blur.api.IBlurBuild;
-import com.hoko.blur.processor.HokoBlurBuild;
-
-/**
- * Created by yuxfzju on 16/9/7.
- */
-public final class HokoBlur {
-
- public static final int MODE_BOX = 0;
- public static final int MODE_GAUSSIAN = 1;
- public static final int MODE_STACK = 2;
-
- public static final int SCHEME_RENDER_SCRIPT = 1001;
- public static final int SCHEME_OPENGL = 1002;
- public static final int SCHEME_NATIVE = 1003;
- public static final int SCHEME_JAVA = 1004;
-
- public static final int HORIZONTAL = 0;
- public static final int VERTICAL = 1;
- public static final int BOTH = 2;
-
- public static IBlurBuild with(Context context) {
- return new HokoBlurBuild(context.getApplicationContext());
- }
-
-}
diff --git a/hoko-blur/src/main/java/com/hoko/blur/anno/Direction.java b/hoko-blur/src/main/java/com/hoko/blur/anno/Direction.java
deleted file mode 100644
index 1b2068a71d091c45571e705a45501a81c1381669..0000000000000000000000000000000000000000
--- a/hoko-blur/src/main/java/com/hoko/blur/anno/Direction.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.hoko.blur.anno;
-
-import android.support.annotation.IntDef;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-import static com.hoko.blur.HokoBlur.BOTH;
-import static com.hoko.blur.HokoBlur.HORIZONTAL;
-import static com.hoko.blur.HokoBlur.VERTICAL;
-
-/**
- * Created by yuxfzju on 2017/2/20.
- */
-
-@IntDef({HORIZONTAL, VERTICAL, BOTH})
-@Retention(RetentionPolicy.SOURCE)
-public @interface Direction {
-}
diff --git a/hoko-blur/src/main/java/com/hoko/blur/anno/Mode.java b/hoko-blur/src/main/java/com/hoko/blur/anno/Mode.java
deleted file mode 100644
index 882ed4dd7f58579db618de7dd9236f6b45cf0f23..0000000000000000000000000000000000000000
--- a/hoko-blur/src/main/java/com/hoko/blur/anno/Mode.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.hoko.blur.anno;
-
-import android.support.annotation.IntDef;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-import static com.hoko.blur.HokoBlur.MODE_BOX;
-import static com.hoko.blur.HokoBlur.MODE_GAUSSIAN;
-import static com.hoko.blur.HokoBlur.MODE_STACK;
-
-/**
- * Created by yuxfzju on 2017/2/9.
- */
-
-@IntDef({MODE_BOX, MODE_GAUSSIAN, MODE_STACK})
-@Retention(RetentionPolicy.SOURCE)
-public @interface Mode {
-}
\ No newline at end of file
diff --git a/hoko-blur/src/main/java/com/hoko/blur/anno/NotThreadSafe.java b/hoko-blur/src/main/java/com/hoko/blur/anno/NotThreadSafe.java
deleted file mode 100644
index fb4ad0819f353c6dfb2fe12b81674cb7bcab9000..0000000000000000000000000000000000000000
--- a/hoko-blur/src/main/java/com/hoko/blur/anno/NotThreadSafe.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.hoko.blur.anno;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-@Documented
-@Target(ElementType.TYPE)
-@Retention(RetentionPolicy.CLASS)
-public @interface NotThreadSafe {
-}
diff --git a/hoko-blur/src/main/java/com/hoko/blur/anno/Scheme.java b/hoko-blur/src/main/java/com/hoko/blur/anno/Scheme.java
deleted file mode 100644
index 75bea1a98debb09d97445736eee54be8f1165cbc..0000000000000000000000000000000000000000
--- a/hoko-blur/src/main/java/com/hoko/blur/anno/Scheme.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.hoko.blur.anno;
-
-import android.support.annotation.IntDef;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-import static com.hoko.blur.HokoBlur.SCHEME_JAVA;
-import static com.hoko.blur.HokoBlur.SCHEME_NATIVE;
-import static com.hoko.blur.HokoBlur.SCHEME_OPENGL;
-import static com.hoko.blur.HokoBlur.SCHEME_RENDER_SCRIPT;
-
-/**
- * Created by yuxfzju on 2017/2/9.
- */
-
-@IntDef({SCHEME_RENDER_SCRIPT, SCHEME_OPENGL, SCHEME_NATIVE, SCHEME_JAVA})
-@Retention(RetentionPolicy.SOURCE)
-public @interface Scheme {
-}
diff --git a/hoko-blur/src/main/java/com/hoko/blur/anno/ThreadSafe.java b/hoko-blur/src/main/java/com/hoko/blur/anno/ThreadSafe.java
deleted file mode 100644
index f5db51bcb05b5987a0cb41b396f903e11a91b53d..0000000000000000000000000000000000000000
--- a/hoko-blur/src/main/java/com/hoko/blur/anno/ThreadSafe.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.hoko.blur.anno;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-@Documented
-@Target({ElementType.TYPE})
-@Retention(RetentionPolicy.CLASS)
-public @interface ThreadSafe {
-}
-
diff --git a/hoko-blur/src/main/java/com/hoko/blur/api/IBlurBuild.java b/hoko-blur/src/main/java/com/hoko/blur/api/IBlurBuild.java
deleted file mode 100644
index 8e3a8b2506b3cbf19a6f2279581e512507153b38..0000000000000000000000000000000000000000
--- a/hoko-blur/src/main/java/com/hoko/blur/api/IBlurBuild.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package com.hoko.blur.api;
-
-import android.content.Context;
-import android.graphics.Bitmap;
-import android.view.View;
-
-import com.hoko.blur.anno.Mode;
-import com.hoko.blur.anno.Scheme;
-import com.hoko.blur.processor.BlurProcessor;
-import com.hoko.blur.task.AsyncBlurTask;
-
-import java.util.concurrent.Future;
-
-public interface IBlurBuild {
- IBlurBuild context(Context context);
-
- IBlurBuild mode(@Mode int mode);
-
- IBlurBuild scheme(@Scheme int scheme);
-
- IBlurBuild radius(int radius);
-
- IBlurBuild sampleFactor(float sampleFactor);
-
- IBlurBuild forceCopy(boolean isForceCopy);
-
- IBlurBuild needUpscale(boolean needUpscale);
-
- IBlurBuild translateX(int translateX);
-
- IBlurBuild translateY(int translateY);
-
- IBlurBuild dispatcher(IBlurResultDispatcher dispatcher);
-
- /**
- * Get different types of Blur Processors
- */
- BlurProcessor processor();
-
- Bitmap blur(Bitmap bitmap);
-
- Bitmap blur(View view);
-
- Future asyncBlur(Bitmap bitmap, AsyncBlurTask.Callback callback);
-
- Future asyncBlur(View view, AsyncBlurTask.Callback callback);
-
-}
diff --git a/hoko-blur/src/main/java/com/hoko/blur/api/IBlurProcessor.java b/hoko-blur/src/main/java/com/hoko/blur/api/IBlurProcessor.java
deleted file mode 100644
index d3c19f8e186790a867c69a206225427a98d3602b..0000000000000000000000000000000000000000
--- a/hoko-blur/src/main/java/com/hoko/blur/api/IBlurProcessor.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package com.hoko.blur.api;
-
-import android.graphics.Bitmap;
-import android.view.View;
-
-import com.hoko.blur.task.AsyncBlurTask;
-
-import java.util.concurrent.Future;
-
-/**
- * Created by yuxfzju on 16/9/8.
- */
-public interface IBlurProcessor {
- /**
- * apply the blur effect to a bitmap
- *
- * @param bitmap the original bitmap
- * @return the blurred bitmap
- */
- Bitmap blur(Bitmap bitmap);
-
- /**
- * apply the blur effect to a view
- *
- * @param view the original view
- * @return the bitmap of the blurred view
- */
- Bitmap blur(View view);
-
- /**
- * Asynchronously apply the blur effect to a bitmap
- *
- * @param bitmap the original bitmap
- * @param callback task callback
- */
- Future asyncBlur(Bitmap bitmap, AsyncBlurTask.Callback callback);
-
- /**
- * Asynchronously apply the blur effect to a view
- *
- * @param view the original view
- * @param callback task callback
- */
- Future asyncBlur(View view, AsyncBlurTask.Callback callback);
-
-}
diff --git a/hoko-blur/src/main/java/com/hoko/blur/api/IBlurResultDispatcher.java b/hoko-blur/src/main/java/com/hoko/blur/api/IBlurResultDispatcher.java
deleted file mode 100644
index 7acd517f5a6943fb2cfda511fff7eb4947965e22..0000000000000000000000000000000000000000
--- a/hoko-blur/src/main/java/com/hoko/blur/api/IBlurResultDispatcher.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package com.hoko.blur.api;
-
-import com.hoko.blur.task.BlurResultRunnable;
-
-public interface IBlurResultDispatcher {
- void dispatch(BlurResultRunnable result);
-}
diff --git a/hoko-blur/src/main/java/com/hoko/blur/api/IFrameBuffer.java b/hoko-blur/src/main/java/com/hoko/blur/api/IFrameBuffer.java
deleted file mode 100644
index 0c5dda1c107d79cb8011ca669b9847862e6ce646..0000000000000000000000000000000000000000
--- a/hoko-blur/src/main/java/com/hoko/blur/api/IFrameBuffer.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.hoko.blur.api;
-
-/**
- * Created by yuxfzju on 2017/1/22.
- */
-
-public interface IFrameBuffer {
-
- void create();
-
- void bindTexture(ITexture texture);
-
- void bindSelf();
-
- void delete();
-}
diff --git a/hoko-blur/src/main/java/com/hoko/blur/api/IProgram.java b/hoko-blur/src/main/java/com/hoko/blur/api/IProgram.java
deleted file mode 100644
index 8830e5167f75fa25dda5e8b19d34e7938ff62c66..0000000000000000000000000000000000000000
--- a/hoko-blur/src/main/java/com/hoko/blur/api/IProgram.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.hoko.blur.api;
-
-public interface IProgram {
-
- void create(String vertexShaderCode, String fragmentShaderCode);
-
- void delete();
-
- int id();
-}
diff --git a/hoko-blur/src/main/java/com/hoko/blur/api/IRenderer.java b/hoko-blur/src/main/java/com/hoko/blur/api/IRenderer.java
deleted file mode 100644
index eb696f914ac261c8171541ae2f3001f0bebf424a..0000000000000000000000000000000000000000
--- a/hoko-blur/src/main/java/com/hoko/blur/api/IRenderer.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.hoko.blur.api;
-
-
-/**
- * Created by yuxfzju on 2017/2/10.
- */
-public interface IRenderer {
-
- void onDrawFrame(T t);
-
-}
diff --git a/hoko-blur/src/main/java/com/hoko/blur/api/ITexture.java b/hoko-blur/src/main/java/com/hoko/blur/api/ITexture.java
deleted file mode 100644
index 3eefd38459562bb8cdb1bf99366bc68a9d04b427..0000000000000000000000000000000000000000
--- a/hoko-blur/src/main/java/com/hoko/blur/api/ITexture.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.hoko.blur.api;
-
-/**
- * Created by yuxfzju on 17/1/20.
- */
-
-public interface ITexture {
-
- void create();
-
- void delete();
-
- int id();
-
- int width();
-
- int height();
-
-}
diff --git a/hoko-blur/src/main/java/com/hoko/blur/filter/BoxBlurFilter.java b/hoko-blur/src/main/java/com/hoko/blur/filter/BoxBlurFilter.java
deleted file mode 100644
index 081fda36d3f88b4ff98cc3efe9ae7b36b1053801..0000000000000000000000000000000000000000
--- a/hoko-blur/src/main/java/com/hoko/blur/filter/BoxBlurFilter.java
+++ /dev/null
@@ -1,117 +0,0 @@
-package com.hoko.blur.filter;
-
-import com.hoko.blur.HokoBlur;
-import com.hoko.blur.anno.Direction;
-
-import static com.hoko.blur.util.MathUtil.clamp;
-
-/**
- * Created by yuxfzju on 2016/7/24.
- */
-final class BoxBlurFilter {
-
- static void doBlur(int[] in, int width, int height, int radius, @Direction int round) {
- int[] result = new int[width * height];
-
- if (round == HokoBlur.HORIZONTAL) {
- boxBlurHorizontal(in, result, width, height, radius);
- System.arraycopy(result, 0, in, 0, result.length);
- } else if (round == HokoBlur.VERTICAL) {
- boxBlurVertical(in, result, width, height, radius);
- System.arraycopy(result, 0, in, 0, result.length);
-
- } else {
- boxBlurHorizontal(in, result, width, height, radius);
- boxBlurVertical(result, in, width, height, radius);
-
- }
- }
-
- private static void boxBlurHorizontal(int[] in, int[] out, int width, int height, int radius) {
- int widthMinus1 = width - 1;
- int tableSize = 2 * radius + 1;
- int[] divide = new int[256 * tableSize];
-
- // construct a query table from 0 to 255
- for (int i = 0; i < 256 * tableSize; i++)
- divide[i] = i / tableSize;
-
- int inIndex = 0;
-
- //
- for (int y = 0; y < height; y++) {
- int ta = 0, tr = 0, tg = 0, tb = 0; // ARGB
-
- for (int i = -radius; i <= radius; i++) {
- int rgb = in[inIndex + clamp(i, 0, width - 1)];
- ta += (rgb >> 24) & 0xff;
- tr += (rgb >> 16) & 0xff;
- tg += (rgb >> 8) & 0xff;
- tb += rgb & 0xff;
- }
-
- int baseIndex = y * width;
- for (int x = 0; x < width; x++) {
- out[baseIndex + x] = (divide[ta] << 24) | (divide[tr] << 16) | (divide[tg] << 8) | divide[tb];
-
- int i1 = x + radius + 1;
- if (i1 > widthMinus1)
- i1 = widthMinus1;
- int i2 = x - radius;
- if (i2 < 0)
- i2 = 0;
- int rgb1 = in[inIndex + i1];
- int rgb2 = in[inIndex + i2];
-
- ta += ((rgb1 >> 24) & 0xff) - ((rgb2 >> 24) & 0xff);
- tr += ((rgb1 & 0xff0000) - (rgb2 & 0xff0000)) >> 16;
- tg += ((rgb1 & 0xff00) - (rgb2 & 0xff00)) >> 8;
- tb += (rgb1 & 0xff) - (rgb2 & 0xff);
-// outIndex += height;
- }
- inIndex += width;
- }
- }
-
- private static void boxBlurVertical(int[] in, int[] out, int width, int height, int radius) {
- int heightMinus1 = height - 1;
- int tableSize = 2 * radius + 1;
- int[] divide = new int[256 * tableSize];
-
- // construct a query table from 0 to 255
- for (int i = 0; i < 256 * tableSize; i++)
- divide[i] = i / tableSize;
-
- for (int x = 0; x < width; x++) {
- int ta = 0, tr = 0, tg = 0, tb = 0; // ARGB
-
- for (int i = -radius; i <= radius; i++) {
- int rgb = in[x + clamp(i, 0, height - 1) * width];
- ta += (rgb >> 24) & 0xff;
- tr += (rgb >> 16) & 0xff;
- tg += (rgb >> 8) & 0xff;
- tb += rgb & 0xff;
- }
-
- for (int y = 0; y < height; y++) { // Sliding window computation
- out[y * width + x] = (divide[ta] << 24) | (divide[tr] << 16) | (divide[tg] << 8) | divide[tb];
-
- int i1 = y + radius + 1;
- if (i1 > heightMinus1)
- i1 = heightMinus1;
- int i2 = y - radius;
- if (i2 < 0)
- i2 = 0;
- int rgb1 = in[x + i1 * width];
- int rgb2 = in[x + i2 * width];
-
- ta += ((rgb1 >> 24) & 0xff) - ((rgb2 >> 24) & 0xff);
- tr += ((rgb1 & 0xff0000) - (rgb2 & 0xff0000)) >> 16;
- tg += ((rgb1 & 0xff00) - (rgb2 & 0xff00)) >> 8;
- tb += (rgb1 & 0xff) - (rgb2 & 0xff);
- }
- }
- }
-
-
-}
\ No newline at end of file
diff --git a/hoko-blur/src/main/java/com/hoko/blur/filter/GaussianBlurFilter.java b/hoko-blur/src/main/java/com/hoko/blur/filter/GaussianBlurFilter.java
deleted file mode 100644
index c4184786439b6d2cdd4a096a6356a3ee64eb0fc1..0000000000000000000000000000000000000000
--- a/hoko-blur/src/main/java/com/hoko/blur/filter/GaussianBlurFilter.java
+++ /dev/null
@@ -1,127 +0,0 @@
-package com.hoko.blur.filter;
-
-import com.hoko.blur.HokoBlur;
-import com.hoko.blur.anno.Direction;
-
-import static com.hoko.blur.util.MathUtil.clamp;
-
-/**
- * Created by yuxfzju on 16/9/10.
- */
-final class GaussianBlurFilter {
-
-
- static void doBlur(int[] in, int width, int height, int radius, @Direction int direction) {
-
- int[] result = new int[width * height];
- float[] kernel = makeKernel(radius);
-
- if (direction == HokoBlur.HORIZONTAL) {
- gaussianBlurHorizontal(kernel, in, result, width, height);
- System.arraycopy(result, 0, in, 0, result.length);
- } else if (direction == HokoBlur.VERTICAL) {
- gaussianBlurVertical(kernel, in, result, width, height);
- System.arraycopy(result, 0, in, 0, result.length);
-
- } else {
- gaussianBlurHorizontal(kernel, in, result, width, height);
- gaussianBlurVertical(kernel, result, in, width, height);
- }
-
-
- }
-
- private static void gaussianBlurHorizontal(float[] kernel, int[] inPixels, int[] outPixels, int width, int height) {
- int cols = kernel.length;
- int cols2 = cols / 2;
-
- for (int y = 0; y < height; y++) {
- int ioffset = y * width;
- for (int x = 0; x < width; x++) {
- float r = 0, g = 0, b = 0;
- int moffset = cols2;
- for (int col = -cols2; col <= cols2; col++) {
- float f = kernel[moffset + col];
-
- if (f != 0) {
- int ix = x + col;
- if (ix < 0) {
- ix = 0;
- } else if (ix >= width) {
- ix = width - 1;
- }
- int rgb = inPixels[ioffset + ix];
- r += f * ((rgb >> 16) & 0xff);
- g += f * ((rgb >> 8) & 0xff);
- b += f * (rgb & 0xff);
- }
- }
- int outIndex = ioffset + x;
- int ia = (inPixels[outIndex] >> 24) & 0xff;
- int ir = clamp((int) (r + 0.5), 0, 255);
- int ig = clamp((int) (g + 0.5), 0, 255);
- int ib = clamp((int) (b + 0.5), 0, 255);
- outPixels[outIndex] = (ia << 24) | (ir << 16) | (ig << 8) | ib;
- }
- }
- }
-
- private static void gaussianBlurVertical(float[] kernel, int[] inPixels, int[] outPixels, int width, int height) {
- int cols = kernel.length;
- int cols2 = cols / 2;
- for (int x = 0; x < width; x++) {
- int ioffset = x;
- for (int y = 0; y < height; y++) {
- float r = 0, g = 0, b = 0;
- int moffset = cols2;
- for (int col = -cols2; col <= cols2; col++) {
- float f = kernel[moffset + col];
-
- if (f != 0) {
- int iy = y + col;
- if (iy < 0) {
- iy = 0;
- } else if (iy >= height) {
- iy = height - 1;
- }
- int rgb = inPixels[ioffset + iy * width];
- r += f * ((rgb >> 16) & 0xff);
- g += f * ((rgb >> 8) & 0xff);
- b += f * (rgb & 0xff);
- }
- }
- int outIndex = ioffset + y * width;
- int ia = (inPixels[outIndex] >> 24) & 0xff;
- int ir = clamp((int) (r + 0.5), 0, 255);
- int ig = clamp((int) (g + 0.5), 0, 255);
- int ib = clamp((int) (b + 0.5), 0, 255);
- outPixels[outIndex] = (ia << 24) | (ir << 16) | (ig << 8) | ib;
- }
- }
-//
- }
-
- /**
- * Make a Gaussian blur kernel.
- */
- private static float[] makeKernel(int r) {
- int rows = r * 2 + 1;
- float[] matrix = new float[rows];
- float sigma = (r + 1) / 2.0f;
- float sigma22 = 2 * sigma * sigma;
- float total = 0;
- int index = 0;
- for (int row = -r; row <= r; row++) {
- matrix[index] = (float) (Math.exp(-1 * (row * row) / sigma22) / sigma);
-
- total += matrix[index];
- index++;
- }
- for (int i = 0; i < rows; i++)
- matrix[i] /= total;
-
- return matrix;
- }
-
-
-}
diff --git a/hoko-blur/src/main/java/com/hoko/blur/filter/NativeBlurFilter.java b/hoko-blur/src/main/java/com/hoko/blur/filter/NativeBlurFilter.java
deleted file mode 100644
index 172f81415852c8d3619bd37c453af4010ffe1662..0000000000000000000000000000000000000000
--- a/hoko-blur/src/main/java/com/hoko/blur/filter/NativeBlurFilter.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.hoko.blur.filter;
-
-import android.graphics.Bitmap;
-
-import com.hoko.blur.HokoBlur;
-import com.hoko.blur.anno.Direction;
-import com.hoko.blur.anno.Mode;
-
-/**
- * Created by yuxfzju on 2017/2/18.
- */
-
-public class NativeBlurFilter {
-
- public static void doBlur(@Mode int mode, Bitmap bitmap, int radius, int cores, int index, @Direction int direction) {
- switch (mode) {
- case HokoBlur.MODE_BOX:
- nativeBoxBlur(bitmap, radius, cores, index, direction);
- break;
- case HokoBlur.MODE_STACK:
- nativeStackBlur(bitmap, radius, cores, index, direction);
- break;
- case HokoBlur.MODE_GAUSSIAN:
- nativeGaussianBlur(bitmap, radius, cores, index, direction);
- break;
- }
- }
-
- public static void doFullBlur(@Mode int mode, Bitmap bitmap, int radius) {
- doBlur(mode, bitmap, radius, 1, 0, HokoBlur.HORIZONTAL);
- doBlur(mode, bitmap, radius, 1, 0, HokoBlur.VERTICAL);
- }
-
- private static native void nativeBoxBlur(Bitmap bitmap, int radius, int cores, int index, int direction);
-
- private static native void nativeStackBlur(Bitmap bitmap, int radius, int cores, int index, int direction);
-
- private static native void nativeGaussianBlur(Bitmap bitmap, int radius, int cores, int index, int direction);
-
-}
diff --git a/hoko-blur/src/main/java/com/hoko/blur/filter/OriginBlurFilter.java b/hoko-blur/src/main/java/com/hoko/blur/filter/OriginBlurFilter.java
deleted file mode 100644
index d0ffbb60afa8dc76aeb34d99b2eda00a081a80e3..0000000000000000000000000000000000000000
--- a/hoko-blur/src/main/java/com/hoko/blur/filter/OriginBlurFilter.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package com.hoko.blur.filter;
-
-import android.graphics.Bitmap;
-
-import com.hoko.blur.HokoBlur;
-import com.hoko.blur.anno.Direction;
-import com.hoko.blur.anno.Mode;
-
-import static com.hoko.blur.util.BitmapUtil.replaceBitmap;
-
-/**
- * Created by yuxfzju on 2017/2/19.
- */
-
-public final class OriginBlurFilter {
-
- public static void doBlur(@Mode int mode, Bitmap bitmap, int radius, int cores, int index, @Direction int direction) {
-
- int w = bitmap.getWidth();
- int h = bitmap.getHeight();
-
- int x = 0;
- int y = 0;
- int deltaX = 0;
- int deltaY = 0;
-
- if (direction == HokoBlur.HORIZONTAL) {
- deltaY = h / cores;
- y = index * deltaY;
-
- if (index == cores - 1) {
- deltaY = h - (cores - 1) * deltaY;
- }
-
- deltaX = w;
- } else if (direction == HokoBlur.VERTICAL) {
- deltaX = w / cores;
- x = index * deltaX;
-
- if (index == cores - 1) {
- deltaX = w - (cores - 1) * deltaX;
- }
-
- deltaY = h;
- }
-
-
- final int[] pixels = new int[deltaX * deltaY];
- bitmap.getPixels(pixels, 0, deltaX, x, y, deltaX, deltaY);
-
- switch (mode) {
- case HokoBlur.MODE_BOX:
- BoxBlurFilter.doBlur(pixels, deltaX, deltaY, radius, direction);
- break;
-
- case HokoBlur.MODE_GAUSSIAN:
- GaussianBlurFilter.doBlur(pixels, deltaX, deltaY, radius, direction);
- break;
-
- case HokoBlur.MODE_STACK:
- StackBlurFilter.doBlur(pixels, deltaX, deltaY, radius, direction);
- break;
- }
- if (bitmap.isMutable()) {
- bitmap.setPixels(pixels, 0, deltaX, x, y, deltaX, deltaY);
- } else {
- replaceBitmap(bitmap, pixels, x, y, deltaX, deltaY);
- }
-
- }
-
- public static void doFullBlur(@Mode int mode, Bitmap bitmap, int radius) {
- int w = bitmap.getWidth();
- int h = bitmap.getHeight();
-
- final int[] pixels = new int[w * h];
- bitmap.getPixels(pixels, 0, w, 0, 0, w, h);
-
- switch (mode) {
- case HokoBlur.MODE_BOX:
- BoxBlurFilter.doBlur(pixels, w, h, radius, HokoBlur.BOTH);
- break;
-
- case HokoBlur.MODE_GAUSSIAN:
- GaussianBlurFilter.doBlur(pixels, w, h, radius, HokoBlur.BOTH);
- break;
-
- case HokoBlur.MODE_STACK:
- StackBlurFilter.doBlur(pixels, w, h, radius, HokoBlur.BOTH);
- break;
- }
- if (bitmap.isMutable()) {
- bitmap.setPixels(pixels, 0, w, 0, 0, w, h);
- } else {
- replaceBitmap(bitmap, pixels, 0, 0, w, h);
- }
- }
-}
diff --git a/hoko-blur/src/main/java/com/hoko/blur/filter/StackBlurFilter.java b/hoko-blur/src/main/java/com/hoko/blur/filter/StackBlurFilter.java
deleted file mode 100644
index 96ff82482fec9ba40d8ab8e7f0bb2ca5659a446f..0000000000000000000000000000000000000000
--- a/hoko-blur/src/main/java/com/hoko/blur/filter/StackBlurFilter.java
+++ /dev/null
@@ -1,277 +0,0 @@
-package com.hoko.blur.filter;
-
-import com.hoko.blur.HokoBlur;
-import com.hoko.blur.anno.Direction;
-
-/**
- * Stack HokoBlur v1.0 from
- * http://www.quasimondo.com/StackBlurForCanvas/StackBlurDemo.html
- *
- * Java Author: Mario Klingemann mario@quasimondo.com
- * http://incubator.quasimondo.com
- * created Feburary 29, 2004
- * Android port : Yahel Bouaziz yahel@kayenko.com
- * http://www.kayenko.com
- * ported april 5th, 2012
- *
- * This is a compromise between Gaussian HokoBlur and Box blur
- * It creates much better looking blurs than Box HokoBlur, but is
- * 7x faster than my Gaussian HokoBlur implementation.
- *
- * I called it Stack HokoBlur because this describes best how this
- * filter works internally: it creates a kind of moving stack
- * of colors whilst scanning through the image. Thereby it
- * just has to add one new block of color to the right side
- * of the stack and remove the leftmost color. The remaining
- * colors on the topmost layer of the stack are either added on
- * or reduced by one, depending on if they are on the right or
- * on the left side of the stack.
- *
- * If you are using this algorithm in your code please add
- * the following line:
- *
- * Stack HokoBlur Algorithm by Mario Klingemann mario@quasimondo.com
- **/
-final class StackBlurFilter {
-
- public static void doBlur(int[] pix, int w, int h, int radius, @Direction int direction) {
-
- if (direction == HokoBlur.HORIZONTAL) {
- doHorizontalBlur(pix, w, h, radius);
- } else if (direction == HokoBlur.VERTICAL) {
- doVerticalBlur(pix, w, h, radius);
- } else {
- doHorizontalBlur(pix, w, h, radius);
- doVerticalBlur(pix, w, h, radius);
- }
-
- }
-
- private static void doHorizontalBlur(int[] pix, int w, int h, int radius) {
- int wm = w - 1;
- int hm = h - 1;
- int wh = w * h;
- int div = radius + radius + 1;
-
- int[] r = new int[wh];
- int[] g = new int[wh];
- int[] b = new int[wh];
- int rsum, gsum, bsum, x, y, i, p, yp, yi, yw;
- int[] vmin = new int[Math.max(w, h)];
-
- int divsum = (div + 1) >> 1;
- divsum *= divsum;
- int[] dv = new int[256 * divsum];
- for (i = 0; i < 256 * divsum; i++) {
- dv[i] = (i / divsum);
- }
-
- yw = yi = 0;
-
- int[][] stack = new int[div][3];
- int stackpointer;
- int stackstart;
- int[] sir;
- int rbs;
- int r1 = radius + 1;
- int routsum, goutsum, boutsum;
- int rinsum, ginsum, binsum;
-
-
- for (y = 0; y < h; y++) {
- rinsum = ginsum = binsum = routsum = goutsum = boutsum = rsum = gsum = bsum = 0;
- for (i = -radius; i <= radius; i++) {
- p = pix[yi + Math.min(wm, Math.max(i, 0))];
- sir = stack[i + radius];
- sir[0] = (p & 0xff0000) >> 16;
- sir[1] = (p & 0x00ff00) >> 8;
- sir[2] = (p & 0x0000ff);
- rbs = r1 - Math.abs(i);
- rsum += sir[0] * rbs;
- gsum += sir[1] * rbs;
- bsum += sir[2] * rbs;
- if (i > 0) {
- rinsum += sir[0];
- ginsum += sir[1];
- binsum += sir[2];
- } else {
- routsum += sir[0];
- goutsum += sir[1];
- boutsum += sir[2];
- }
- }
- stackpointer = radius;
-
- for (x = 0; x < w; x++) {
-
- r[yi] = dv[rsum];
- g[yi] = dv[gsum];
- b[yi] = dv[bsum];
-
- pix[yi] = (0xff000000 & pix[yi]) | (dv[rsum] << 16) | (dv[gsum] << 8) | dv[bsum];
-
- rsum -= routsum;
- gsum -= goutsum;
- bsum -= boutsum;
-
- stackstart = stackpointer - radius + div;
- sir = stack[stackstart % div];
-
- routsum -= sir[0];
- goutsum -= sir[1];
- boutsum -= sir[2];
-
- if (y == 0) {
- vmin[x] = Math.min(x + radius + 1, wm);
- }
- p = pix[yw + vmin[x]];
-
- sir[0] = (p & 0xff0000) >> 16;
- sir[1] = (p & 0x00ff00) >> 8;
- sir[2] = (p & 0x0000ff);
-
- rinsum += sir[0];
- ginsum += sir[1];
- binsum += sir[2];
-
- rsum += rinsum;
- gsum += ginsum;
- bsum += binsum;
-
- stackpointer = (stackpointer + 1) % div;
- sir = stack[(stackpointer) % div];
-
- routsum += sir[0];
- goutsum += sir[1];
- boutsum += sir[2];
-
- rinsum -= sir[0];
- ginsum -= sir[1];
- binsum -= sir[2];
-
- yi++;
- }
- yw += w;
- }
- }
-
- private static void doVerticalBlur(int[] pix, int w, int h, int radius) {
- int wm = w - 1;
- int hm = h - 1;
- int wh = w * h;
- int div = radius + radius + 1;
-
- int[] r = new int[wh];
- int[] g = new int[wh];
- int[] b = new int[wh];
- int rsum, gsum, bsum, x, y, i, p, yp, yi, yw;
- int[] vmin = new int[Math.max(w, h)];
-
- int divsum = (div + 1) >> 1;
- divsum *= divsum;
- int[] dv = new int[256 * divsum];
- for (i = 0; i < 256 * divsum; i++) {
- dv[i] = (i / divsum);
- }
-
- yw = yi = 0;
-
- int[][] stack = new int[div][3];
- int stackpointer;
- int stackstart;
- int[] sir;
- int rbs;
- int r1 = radius + 1;
- int routsum, goutsum, boutsum;
- int rinsum, ginsum, binsum;
-
- for (i = 0; i < wh; i++) {
-
- r[i] = (pix[i] & 0xff0000) >> 16;
- g[i] = (pix[i] & 0x00ff00) >> 8;
- b[i] = (pix[i] & 0x0000ff);
- }
-
- for (x = 0; x < w; x++) {
- rinsum = ginsum = binsum = routsum = goutsum = boutsum = rsum = gsum = bsum = 0;
- yp = -radius * w;
- for (i = -radius; i <= radius; i++) {
- yi = Math.max(0, yp) + x;
-
- sir = stack[i + radius];
-
- sir[0] = r[yi];
- sir[1] = g[yi];
- sir[2] = b[yi];
-
- rbs = r1 - Math.abs(i);
-
- rsum += r[yi] * rbs;
- gsum += g[yi] * rbs;
- bsum += b[yi] * rbs;
-
- if (i > 0) {
- rinsum += sir[0];
- ginsum += sir[1];
- binsum += sir[2];
- } else {
- routsum += sir[0];
- goutsum += sir[1];
- boutsum += sir[2];
- }
-
- if (i < hm) {
- yp += w;
- }
- }
- yi = x;
- stackpointer = radius;
- for (y = 0; y < h; y++) {
- // Preserve alpha channel: ( 0xff000000 & pix[yi] )
- pix[yi] = (0xff000000 & pix[yi]) | (dv[rsum] << 16) | (dv[gsum] << 8) | dv[bsum];
-
- rsum -= routsum;
- gsum -= goutsum;
- bsum -= boutsum;
-
- stackstart = stackpointer - radius + div;
- sir = stack[stackstart % div];
-
- routsum -= sir[0];
- goutsum -= sir[1];
- boutsum -= sir[2];
-
- if (x == 0) {
- vmin[y] = Math.min(y + r1, hm) * w;
- }
- p = x + vmin[y];
-
- sir[0] = r[p];
- sir[1] = g[p];
- sir[2] = b[p];
-
- rinsum += sir[0];
- ginsum += sir[1];
- binsum += sir[2];
-
- rsum += rinsum;
- gsum += ginsum;
- bsum += binsum;
-
- stackpointer = (stackpointer + 1) % div;
- sir = stack[stackpointer];
-
- routsum += sir[0];
- goutsum += sir[1];
- boutsum += sir[2];
-
- rinsum -= sir[0];
- ginsum -= sir[1];
- binsum -= sir[2];
-
- yi += w;
- }
- }
- }
-}
-
diff --git a/hoko-blur/src/main/java/com/hoko/blur/opengl/cache/CachePool.java b/hoko-blur/src/main/java/com/hoko/blur/opengl/cache/CachePool.java
deleted file mode 100644
index cd5dd3c6173f7236ba6f9f82bf515629494b6c16..0000000000000000000000000000000000000000
--- a/hoko-blur/src/main/java/com/hoko/blur/opengl/cache/CachePool.java
+++ /dev/null
@@ -1,123 +0,0 @@
-package com.hoko.blur.opengl.cache;
-
-import com.hoko.blur.util.Preconditions;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-
-/**
- * Created by yuxfzju on 2017/1/21.
- */
-
-public abstract class CachePool {
-
- private static final int MAX_SIZE = 1024;
-
- private int mMaxSize;
-
- private List mInternalCache;
-
- public CachePool() {
- this(MAX_SIZE);
- }
-
- public CachePool(int maxSize) {
- Preconditions.checkArgument(maxSize > 0, "maxSize <= 0");
- mMaxSize = maxSize;
- mInternalCache = new LinkedList<>();
- }
-
- public final V get(K key) {
- Preconditions.checkNotNull(key, "size == null");
- V listValue = remove(key);
- if (listValue != null) {
- return listValue;
- }
-
- //listValue is null
- return create(key);
- }
-
- public final void put(V v) {
- Preconditions.checkNotNull(v, "value == null");
- try {
- if (!mInternalCache.contains(v)) {
- synchronized (this) {
- if (!mInternalCache.contains(v)) {
- mInternalCache.add(v);
- }
- }
- }
- } finally {
- trimToSize(mMaxSize);
- }
-
- }
-
- private V remove(K key) {
- Preconditions.checkNotNull(key, "key == null");
-
- V previous = null;
- synchronized (this) {
- Iterator it = mInternalCache.iterator();
- while(it.hasNext()) {
- V value = it.next();
- if (checkHit(key, value)) {
- it.remove();
- previous = value;
- break;
- }
- }
- }
-
- return previous;
- }
-
- public void delete(K key) {
- Preconditions.checkNotNull(key, "key == null");
- V removed = remove(key);
- if (removed != null) {
- entryDeleted(removed);
- }
- }
-
- protected V create(K key) {
- return null;
- }
-
- protected void entryDeleted(V v) {
-
- }
-
- protected abstract boolean checkHit(K key, V value);
-
- private void trimToSize(int maxSize) {
- List removedCollection = new ArrayList<>();
- synchronized (this) {
- while (mInternalCache.size() > maxSize && !mInternalCache.isEmpty()) {
- V removed = mInternalCache.remove(0);
- if (removed != null) {
- removedCollection.add(removed);
- }
- }
- }
-
- for(V removed : removedCollection) {
- if (removed != null) {
- entryDeleted(removed);
- }
- }
-
- }
-
- public synchronized final int maxSize() {
- return mMaxSize;
- }
-
- public final void evictAll() {
- trimToSize(-1);
- }
-
-}
diff --git a/hoko-blur/src/main/java/com/hoko/blur/opengl/cache/FrameBufferCache.java b/hoko-blur/src/main/java/com/hoko/blur/opengl/cache/FrameBufferCache.java
deleted file mode 100644
index 9183744432c13cadaa851af0a4ef61f78cef6385..0000000000000000000000000000000000000000
--- a/hoko-blur/src/main/java/com/hoko/blur/opengl/cache/FrameBufferCache.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package com.hoko.blur.opengl.cache;
-
-import com.hoko.blur.api.IFrameBuffer;
-import com.hoko.blur.opengl.framebuffer.FrameBufferFactory;
-
-/**
- * Created by yuxfzju on 2017/1/21.
- */
-
-public class FrameBufferCache {
-
- private static class FrameBufferCacheHolder {
- private static final FrameBufferCache INSTANCE = new FrameBufferCache();
- }
-
- private CachePool