From da115bb2d980aef599917f0558c8f1b49a646a29 Mon Sep 17 00:00:00 2001 From: Josia Pietsch Date: Sun, 16 Mar 2025 16:37:39 +0100 Subject: [PATCH] refactor: remove unused stuff, fix lint warnings --- app/build.gradle | 2 +- .../de/jrpie/android/launcher/Application.kt | 10 +- .../de/jrpie/android/launcher/Functions.kt | 24 +- .../jrpie/android/launcher/actions/Action.kt | 56 +- .../jrpie/android/launcher/actions/Gesture.kt | 2 +- .../launcher/actions/lock/LockMethod.kt | 1 - .../de/jrpie/android/launcher/apps/AppInfo.kt | 20 +- .../launcher/apps/PinnedShortcutInfo.kt | 23 +- .../android/launcher/apps/PrivateSpace.kt | 1 + .../launcher/preferences/ColorPreference.kt | 9 +- .../launcher/preferences/ListLayout.kt | 7 +- .../launcher/preferences/legacy/Version1.kt | 16 +- .../preferences/legacy/VersionUnknown.kt | 621 +++++++++--------- .../launcher/preferences/theme/ColorTheme.kt | 1 - .../jrpie/android/launcher/ui/HomeActivity.kt | 3 + .../launcher/ui/PinShortcutActivity.kt | 18 +- .../de/jrpie/android/launcher/ui/UIObject.kt | 2 + .../android/launcher/ui/list/ListActivity.kt | 21 +- .../ui/list/apps/AppsRecyclerAdapter.kt | 11 +- .../ui/list/apps/ContextMenuActions.kt | 15 +- .../ui/list/other/OtherRecyclerAdapter.kt | 17 +- .../launcher/ui/settings/SettingsActivity.kt | 10 +- .../SettingsFragmentActionsRecycler.kt | 6 +- .../ui/settings/meta/SettingsFragmentMeta.kt | 2 - .../launcher/ui/tutorial/TutorialActivity.kt | 13 +- .../android/launcher/ui/util/HtmlTextView.kt | 1 + .../tutorial_app_list.png | Bin .../tutorial_home_screen.png | Bin .../res/drawable/baseline_more_horiz_24.xml | 11 - .../res/drawable/ic_launcher_background.xml | 10 - app/src/main/res/drawable/round_outline.xml | 6 - .../main/res/layout/activity_pin_shortcut.xml | 2 +- app/src/main/res/layout/tutorial_4_setup.xml | 2 +- .../mipmap-hdpi/ic_launcher_foreground.webp | Bin 612 -> 0 bytes .../mipmap-mdpi/ic_launcher_foreground.webp | Bin 372 -> 0 bytes .../mipmap-xhdpi/ic_launcher_foreground.webp | Bin 880 -> 0 bytes .../mipmap-xxhdpi/ic_launcher_foreground.webp | Bin 1416 -> 0 bytes .../ic_launcher_foreground.webp | Bin 2046 -> 0 bytes app/src/main/res/values-de/strings.xml | 6 - app/src/main/res/values-es/strings.xml | 6 - app/src/main/res/values-fr/strings.xml | 6 - app/src/main/res/values-it/strings.xml | 6 - app/src/main/res/values-pt-rBR/strings.xml | 6 - app/src/main/res/values-tr/strings.xml | 6 - app/src/main/res/values-w820dp/dimens.xml | 6 - app/src/main/res/values-zh-rCN/strings.xml | 6 - .../res/values/ic_launcher_background.xml | 4 - app/src/main/res/values/strings.xml | 9 - app/src/main/res/values/styles.xml | 11 - docs/launcher.md | 1 + gradle.properties | 4 +- 51 files changed, 415 insertions(+), 605 deletions(-) rename app/src/main/res/{drawable => drawable-mdpi}/tutorial_app_list.png (100%) rename app/src/main/res/{drawable => drawable-mdpi}/tutorial_home_screen.png (100%) delete mode 100644 app/src/main/res/drawable/baseline_more_horiz_24.xml delete mode 100644 app/src/main/res/drawable/ic_launcher_background.xml delete mode 100644 app/src/main/res/drawable/round_outline.xml delete mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp delete mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp delete mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp delete mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp delete mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp delete mode 100644 app/src/main/res/values-w820dp/dimens.xml delete mode 100644 app/src/main/res/values/ic_launcher_background.xml diff --git a/app/build.gradle b/app/build.gradle index c75bb3d..8e6f551 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -95,7 +95,7 @@ android { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" - implementation 'androidx.activity:activity:1.8.0' + implementation 'androidx.activity:activity-ktx:1.8.0' implementation 'androidx.appcompat:appcompat:1.7.0' implementation 'androidx.core:core-ktx:1.15.0' implementation 'androidx.constraintlayout:constraintlayout:2.2.0' diff --git a/app/src/main/java/de/jrpie/android/launcher/Application.kt b/app/src/main/java/de/jrpie/android/launcher/Application.kt index e674e4e..e6cce23 100644 --- a/app/src/main/java/de/jrpie/android/launcher/Application.kt +++ b/app/src/main/java/de/jrpie/android/launcher/Application.kt @@ -7,11 +7,8 @@ import android.content.IntentFilter import android.content.SharedPreferences import android.content.pm.LauncherApps import android.content.pm.ShortcutInfo -import android.os.AsyncTask import android.os.Build import android.os.Build.VERSION_CODES -import android.os.Handler -import android.os.Looper import android.os.UserHandle import androidx.core.content.ContextCompat import androidx.lifecycle.MutableLiveData @@ -23,6 +20,9 @@ import de.jrpie.android.launcher.apps.isPrivateSpaceLocked import de.jrpie.android.launcher.preferences.LauncherPreferences import de.jrpie.android.launcher.preferences.migratePreferencesToNewVersion import de.jrpie.android.launcher.preferences.resetPreferences +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch class Application : android.app.Application() { val apps = MutableLiveData>() @@ -153,6 +153,8 @@ class Application : android.app.Application() { private fun loadApps() { privateSpaceLocked.postValue(isPrivateSpaceLocked(this)) - AsyncTask.execute { apps.postValue(getApps(packageManager, applicationContext)) } + CoroutineScope(Dispatchers.Default).launch { + apps.postValue(getApps(packageManager, applicationContext)) + } } } diff --git a/app/src/main/java/de/jrpie/android/launcher/Functions.kt b/app/src/main/java/de/jrpie/android/launcher/Functions.kt index d5e8d13..7bbbdb5 100644 --- a/app/src/main/java/de/jrpie/android/launcher/Functions.kt +++ b/app/src/main/java/de/jrpie/android/launcher/Functions.kt @@ -12,7 +12,6 @@ import android.content.pm.LauncherApps import android.content.pm.LauncherApps.ShortcutQuery import android.content.pm.PackageManager import android.content.pm.ShortcutInfo -import android.net.Uri import android.os.Build import android.os.Bundle import android.os.UserHandle @@ -34,15 +33,9 @@ import de.jrpie.android.launcher.apps.getPrivateSpaceUser import de.jrpie.android.launcher.apps.isPrivateSpaceSupported import de.jrpie.android.launcher.preferences.LauncherPreferences import de.jrpie.android.launcher.ui.tutorial.TutorialActivity +import androidx.core.net.toUri -/* REQUEST CODES */ - -const val REQUEST_CHOOSE_APP = 1 -const val REQUEST_UNINSTALL = 2 - -const val REQUEST_SET_DEFAULT_HOME = 42 - const val LOG_TAG = "Launcher" fun isDefaultHomeScreen(context: Context): Boolean { @@ -69,9 +62,8 @@ fun setDefaultHomeScreen(context: Context, checkDefault: Boolean = false) { && !isDefault // using role manager only works when µLauncher is not already the default. ) { val roleManager = context.getSystemService(RoleManager::class.java) - context.startActivityForResult( - roleManager.createRequestRoleIntent(RoleManager.ROLE_HOME), - REQUEST_SET_DEFAULT_HOME + context.startActivity( + roleManager.createRequestRoleIntent(RoleManager.ROLE_HOME) ) return } @@ -125,7 +117,7 @@ fun removeUnusedShortcuts(context: Context) { } fun openInBrowser(url: String, context: Context) { - val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url)) + val intent = Intent(Intent.ACTION_VIEW, url.toUri()) intent.putExtras(Bundle().apply { putBoolean("new_window", true) }) try { context.startActivity(intent) @@ -212,14 +204,6 @@ fun getApps( return loadList } - -// Used in Tutorial and Settings `ActivityOnResult` -fun saveListActivityChoice(data: Intent?) { - val forGesture = data?.getStringExtra("forGesture") ?: return - Gesture.byId(forGesture)?.let { Action.setActionForGesture(it, Action.fromIntent(data)) } -} - - // used for the bug report button fun getDeviceInfo(): String { return """ diff --git a/app/src/main/java/de/jrpie/android/launcher/actions/Action.kt b/app/src/main/java/de/jrpie/android/launcher/actions/Action.kt index ddef92a..9a2dc62 100644 --- a/app/src/main/java/de/jrpie/android/launcher/actions/Action.kt +++ b/app/src/main/java/de/jrpie/android/launcher/actions/Action.kt @@ -2,7 +2,6 @@ package de.jrpie.android.launcher.actions import android.app.Activity import android.content.Context -import android.content.Intent import android.content.SharedPreferences.Editor import android.graphics.Rect import android.graphics.drawable.Drawable @@ -12,6 +11,7 @@ import de.jrpie.android.launcher.preferences.LauncherPreferences import kotlinx.serialization.Serializable import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json +import androidx.core.content.edit @Serializable @@ -29,10 +29,6 @@ sealed interface Action { prefEditor.putString(id, Json.encodeToString(this)) } - fun writeToIntent(intent: Intent) { - intent.putExtra("action", Json.encodeToString(this)) - } - companion object { fun forGesture(gesture: Gesture): Action? { @@ -44,23 +40,23 @@ sealed interface Action { } fun resetToDefaultActions(context: Context) { - val editor = LauncherPreferences.getSharedPreferences().edit() - val boundActions = HashSet() - Gesture.entries.forEach { gesture -> - context.resources - .getStringArray(gesture.defaultsResource) - .filterNot { boundActions.contains(it) } - .map { Pair(it, Json.decodeFromString(it)) } - .firstOrNull { it.second.isAvailable(context) } - ?.apply { - // allow to bind CHOOSE to multiple gestures - if (second != LauncherAction.CHOOSE) { - boundActions.add(first) + LauncherPreferences.getSharedPreferences().edit { + val boundActions = HashSet() + Gesture.entries.forEach { gesture -> + context.resources + .getStringArray(gesture.defaultsResource) + .filterNot { boundActions.contains(it) } + .map { Pair(it, Json.decodeFromString(it)) } + .firstOrNull { it.second.isAvailable(context) } + ?.apply { + // allow to bind CHOOSE to multiple gestures + if (second != LauncherAction.CHOOSE) { + boundActions.add(first) + } + second.bindToGesture(this@edit, gesture.id) } - second.bindToGesture(editor, gesture.id) - } + } } - editor.apply() } fun setActionForGesture(gesture: Gesture, action: Action?) { @@ -68,15 +64,15 @@ sealed interface Action { clearActionForGesture(gesture) return } - val editor = LauncherPreferences.getSharedPreferences().edit() - action.bindToGesture(editor, gesture.id) - editor.apply() + LauncherPreferences.getSharedPreferences().edit { + action.bindToGesture(this, gesture.id) + } } fun clearActionForGesture(gesture: Gesture) { - LauncherPreferences.getSharedPreferences().edit() - .remove(gesture.id) - .apply() + LauncherPreferences.getSharedPreferences().edit { + remove(gesture.id) + } } fun launch( @@ -87,6 +83,9 @@ sealed interface Action { ) { if (action != null && action.invoke(context)) { if (context is Activity) { + // There does not seem to be a good alternative to overridePendingTransition. + // Note that we can't use overrideActivityTransition here. + @Suppress("deprecation") context.overridePendingTransition(animationIn, animationOut) } } else { @@ -97,10 +96,5 @@ sealed interface Action { ).show() } } - - fun fromIntent(data: Intent): Action? { - val json = data.getStringExtra("action") ?: return null - return Json.decodeFromString(json) - } } } \ No newline at end of file diff --git a/app/src/main/java/de/jrpie/android/launcher/actions/Gesture.kt b/app/src/main/java/de/jrpie/android/launcher/actions/Gesture.kt index 110e4f8..a2434e1 100644 --- a/app/src/main/java/de/jrpie/android/launcher/actions/Gesture.kt +++ b/app/src/main/java/de/jrpie/android/launcher/actions/Gesture.kt @@ -250,7 +250,7 @@ enum class Gesture( "action.back", R.string.settings_gesture_back, R.string.settings_gesture_description_back, - R.array.default_up + R.array.default_back ); enum class Edge { diff --git a/app/src/main/java/de/jrpie/android/launcher/actions/lock/LockMethod.kt b/app/src/main/java/de/jrpie/android/launcher/actions/lock/LockMethod.kt index 8ae2415..541510a 100644 --- a/app/src/main/java/de/jrpie/android/launcher/actions/lock/LockMethod.kt +++ b/app/src/main/java/de/jrpie/android/launcher/actions/lock/LockMethod.kt @@ -9,7 +9,6 @@ import de.jrpie.android.launcher.R import de.jrpie.android.launcher.preferences.LauncherPreferences -@Suppress("unused") enum class LockMethod( private val lock: (Context) -> Unit, private val isEnabled: (Context) -> Boolean, diff --git a/app/src/main/java/de/jrpie/android/launcher/apps/AppInfo.kt b/app/src/main/java/de/jrpie/android/launcher/apps/AppInfo.kt index 944cfaa..9534431 100644 --- a/app/src/main/java/de/jrpie/android/launcher/apps/AppInfo.kt +++ b/app/src/main/java/de/jrpie/android/launcher/apps/AppInfo.kt @@ -15,19 +15,7 @@ import kotlinx.serialization.Serializable */ @Serializable @SerialName("app") -class AppInfo(val packageName: String, val activityName: String?, val user: Int = INVALID_USER): AbstractAppInfo { - - override fun equals(other: Any?): Boolean { - if(other is AppInfo) { - return other.user == user && other.packageName == packageName - && other.activityName == activityName - } - return super.equals(other) - } - - override fun hashCode(): Int { - return packageName.hashCode() - } +data class AppInfo(val packageName: String, val activityName: String?, val user: Int = INVALID_USER): AbstractAppInfo { fun getLauncherActivityInfo( context: Context @@ -38,10 +26,4 @@ class AppInfo(val packageName: String, val activityName: String?, val user: Int return activityList.firstOrNull { app -> app.name == activityName } ?: activityList.firstOrNull() } - - - override fun toString(): String { - return "AppInfo {package=$packageName, activity=$activityName, user=$user}" - } - } \ No newline at end of file diff --git a/app/src/main/java/de/jrpie/android/launcher/apps/PinnedShortcutInfo.kt b/app/src/main/java/de/jrpie/android/launcher/apps/PinnedShortcutInfo.kt index 1dc1e1f..54230ae 100644 --- a/app/src/main/java/de/jrpie/android/launcher/apps/PinnedShortcutInfo.kt +++ b/app/src/main/java/de/jrpie/android/launcher/apps/PinnedShortcutInfo.kt @@ -16,7 +16,7 @@ import kotlinx.serialization.Serializable @RequiresApi(Build.VERSION_CODES.N_MR1) @Serializable @SerialName("shortcut") -class PinnedShortcutInfo( +data class PinnedShortcutInfo( val id: String, val packageName: String, val activityName: String, @@ -43,25 +43,4 @@ class PinnedShortcutInfo( null } } - - override fun equals(other: Any?): Boolean { - return (other as? PinnedShortcutInfo)?.let { - packageName == this.packageName && - activityName == this.activityName && - id == this.id && - user == this.user - } ?: false - } - - override fun hashCode(): Int { - var result = id.hashCode() - result = 31 * result + packageName.hashCode() - result = 31 * result + activityName.hashCode() - result = 31 * result + user - return result - } - - override fun toString(): String { - return "PinnedShortcutInfo { package=$packageName, activity=$activityName, user=$user, id=$id}" - } } \ No newline at end of file diff --git a/app/src/main/java/de/jrpie/android/launcher/apps/PrivateSpace.kt b/app/src/main/java/de/jrpie/android/launcher/apps/PrivateSpace.kt index e44ff1c..24665d7 100644 --- a/app/src/main/java/de/jrpie/android/launcher/apps/PrivateSpace.kt +++ b/app/src/main/java/de/jrpie/android/launcher/apps/PrivateSpace.kt @@ -123,6 +123,7 @@ fun togglePrivateSpaceLock(context: Context) { } } +@Suppress("SameReturnValue") fun hidePrivateSpaceWhenLocked(context: Context): Boolean { // Trying to access the setting as a 3rd party launcher raises a security exception. // This is an Android bug: https://issuetracker.google.com/issues/352276244#comment5 diff --git a/app/src/main/java/de/jrpie/android/launcher/preferences/ColorPreference.kt b/app/src/main/java/de/jrpie/android/launcher/preferences/ColorPreference.kt index a21d458..0f95efd 100644 --- a/app/src/main/java/de/jrpie/android/launcher/preferences/ColorPreference.kt +++ b/app/src/main/java/de/jrpie/android/launcher/preferences/ColorPreference.kt @@ -17,6 +17,7 @@ import androidx.core.graphics.green import androidx.core.graphics.red import androidx.preference.Preference import de.jrpie.android.launcher.R +import androidx.core.graphics.toColorInt class ColorPreference(context: Context, attrs: AttributeSet?) : Preference(context, attrs) { @@ -52,7 +53,7 @@ class ColorPreference(context: Context, attrs: AttributeSet?) : AlertDialog.Builder(context, R.style.AlertDialogCustom).apply { setView(R.layout.dialog_choose_color) setTitle(R.string.dialog_choose_color_title) - setPositiveButton(R.string.dialog_select_color_ok) { _, _ -> + setPositiveButton(android.R.string.ok) { _, _ -> persistInt(currentColor) summary = currentColor.getHex() } @@ -83,10 +84,10 @@ class ColorPreference(context: Context, attrs: AttributeSet?) : override fun onTextChanged(text: CharSequence?, p1: Int, p2: Int, p3: Int) {} override fun afterTextChanged(editable: Editable?) { preview.hasFocus() || return - val newText = editable?.toString() - newText.isNullOrBlank() && return + val newText = editable?.toString() ?: return + newText.isBlank() && return try { - val newColor = Color.parseColor(newText.toString()) + val newColor = newText.toColorInt() currentColor = newColor updateColor(false) } catch (_: IllegalArgumentException) { diff --git a/app/src/main/java/de/jrpie/android/launcher/preferences/ListLayout.kt b/app/src/main/java/de/jrpie/android/launcher/preferences/ListLayout.kt index e20945a..5f7b9d6 100644 --- a/app/src/main/java/de/jrpie/android/launcher/preferences/ListLayout.kt +++ b/app/src/main/java/de/jrpie/android/launcher/preferences/ListLayout.kt @@ -1,6 +1,7 @@ package de.jrpie.android.launcher.preferences import android.content.Context +import android.util.TypedValue import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView @@ -27,8 +28,10 @@ enum class ListLayout( GRID( { c -> val displayMetrics = c.resources.displayMetrics - val widthSp = displayMetrics.widthPixels / displayMetrics.scaledDensity - GridLayoutManager(c, (widthSp / 90).toInt()) + val widthColumnPx = + TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 90f, displayMetrics) + val numColumns = (displayMetrics.widthPixels / widthColumnPx).toInt() + GridLayoutManager(c, numColumns) }, R.layout.list_apps_row_variant_grid, false diff --git a/app/src/main/java/de/jrpie/android/launcher/preferences/legacy/Version1.kt b/app/src/main/java/de/jrpie/android/launcher/preferences/legacy/Version1.kt index 6252811..a1cb022 100644 --- a/app/src/main/java/de/jrpie/android/launcher/preferences/legacy/Version1.kt +++ b/app/src/main/java/de/jrpie/android/launcher/preferences/legacy/Version1.kt @@ -13,9 +13,11 @@ import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json import org.json.JSONException import org.json.JSONObject +import androidx.core.content.edit @Serializable +@Suppress("unused") private class LegacyMapEntry(val key: AppInfo, val value: String) private fun serializeMapAppInfo(value: Map?): Set? { @@ -100,7 +102,7 @@ private fun migrateAppInfoStringMap(key: String) { } }?.toMap(HashMap()) )?.let { - preferences.edit().putStringSet(key, it).apply() + preferences.edit { putStringSet(key, it) } } } @@ -109,16 +111,16 @@ private fun migrateAppInfoSet(key: String) { .map(AppInfo.Companion::legacyDeserialize) .map(AppInfo::serialize) .toSet() - .let { LauncherPreferences.getSharedPreferences().edit().putStringSet(key, it).apply() } + .let { LauncherPreferences.getSharedPreferences().edit { putStringSet(key, it) } } } private fun migrateAction(key: String) { Action.legacyFromPreference(key)?.let { action -> - LauncherPreferences.getSharedPreferences().edit() - .putString(key, Json.encodeToString(action)) - .remove("$key.app") - .remove("$key.user") - .apply() + LauncherPreferences.getSharedPreferences().edit { + putString(key, Json.encodeToString(action)) + .remove("$key.app") + .remove("$key.user") + } } } diff --git a/app/src/main/java/de/jrpie/android/launcher/preferences/legacy/VersionUnknown.kt b/app/src/main/java/de/jrpie/android/launcher/preferences/legacy/VersionUnknown.kt index a33670b..2d1152d 100644 --- a/app/src/main/java/de/jrpie/android/launcher/preferences/legacy/VersionUnknown.kt +++ b/app/src/main/java/de/jrpie/android/launcher/preferences/legacy/VersionUnknown.kt @@ -6,7 +6,7 @@ import android.util.Log import de.jrpie.android.launcher.preferences.LauncherPreferences import de.jrpie.android.launcher.preferences.theme.Background import de.jrpie.android.launcher.preferences.theme.ColorTheme - +import androidx.core.content.edit private fun migrateStringPreference( @@ -64,318 +64,317 @@ fun migratePreferencesFromVersionUnknown(context: Context) { return } - val newPrefs = LauncherPreferences.getSharedPreferences().edit() + LauncherPreferences.getSharedPreferences().edit { - migrateBooleanPreference( - oldPrefs, - newPrefs, - "startedBefore", - "internal.started_before", - false - ) + migrateBooleanPreference( + oldPrefs, + this, + "startedBefore", + "internal.started_before", + false + ) - migrateStringPreference( - oldPrefs, - newPrefs, - "action_volumeUpApp", - "action.volume_up.app", - "" - ) - migrateIntPreference( - oldPrefs, - newPrefs, - "action_volumeUpApp_user", - "action.volume_up.user", - -1 - ) - migrateStringPreference( - oldPrefs, - newPrefs, - "action_volumeDownApp", - "action.volume_down.app", - "" - ) - migrateIntPreference( - oldPrefs, - newPrefs, - "action_volumeDownApp_user", - "action.volume_down.user", - -1 - ) - migrateStringPreference(oldPrefs, newPrefs, "action_timeApp", "action.time.app", "") - migrateIntPreference(oldPrefs, newPrefs, "action_timeApp_user", "action.time.user", -1) - migrateStringPreference(oldPrefs, newPrefs, "action_dateApp", "action.date.app", "") - migrateIntPreference(oldPrefs, newPrefs, "action_dateApp_user", "action.date.user", -1) - migrateStringPreference( - oldPrefs, - newPrefs, - "action_longClickApp", - "action.long_click.app", - "" - ) - migrateIntPreference( - oldPrefs, - newPrefs, - "action_longClickApp_user", - "action.long_click.user", - -1 - ) - migrateStringPreference( - oldPrefs, - newPrefs, - "action_doubleClickApp", - "action.double_click.app", - "" - ) - migrateIntPreference( - oldPrefs, - newPrefs, - "action_doubleClickApp_user", - "action.double_click.user", - -1 - ) - migrateStringPreference(oldPrefs, newPrefs, "action_upApp", "action.up.app", "") - migrateIntPreference(oldPrefs, newPrefs, "action_upApp_user", "action.up.user", -1) - migrateStringPreference( - oldPrefs, - newPrefs, - "action_up_leftApp", - "action.up_left.app", - "" - ) - migrateIntPreference( - oldPrefs, - newPrefs, - "action_up_leftApp_user", - "action.up_left.user", - -1 - ) - migrateStringPreference( - oldPrefs, - newPrefs, - "action_up_rightApp", - "action.up_right.app", - "" - ) - migrateIntPreference( - oldPrefs, - newPrefs, - "action_up_rightApp_user", - "action.up_right.user", - -1 - ) - migrateStringPreference( - oldPrefs, - newPrefs, - "action_doubleUpApp", - "action.double_up.app", - "" - ) - migrateIntPreference( - oldPrefs, - newPrefs, - "action_doubleUpApp_user", - "action.double_up.user", - -1 - ) - migrateStringPreference(oldPrefs, newPrefs, "action_downApp", "action.down.app", "") - migrateIntPreference(oldPrefs, newPrefs, "action_downApp_user", "action.down.user", -1) - migrateStringPreference( - oldPrefs, - newPrefs, - "action_down_leftApp", - "action.down_left.app", - "" - ) - migrateIntPreference( - oldPrefs, - newPrefs, - "action_down_leftApp_user", - "action.down_left.user", - -1 - ) - migrateStringPreference( - oldPrefs, - newPrefs, - "action_down_rightApp", - "action.down_right.app", - "" - ) - migrateIntPreference( - oldPrefs, - newPrefs, - "action_down_rightApp_user", - "action.down_right.user", - -1 - ) - migrateStringPreference( - oldPrefs, - newPrefs, - "action_doubleDownApp", - "action.double_down.app", - "" - ) - migrateIntPreference( - oldPrefs, - newPrefs, - "action_doubleDownApp_user", - "action.double_down.user", - -1 - ) - migrateStringPreference(oldPrefs, newPrefs, "action_leftApp", "action.left.app", "") - migrateIntPreference(oldPrefs, newPrefs, "action_leftApp_user", "action.left.user", -1) - migrateStringPreference( - oldPrefs, - newPrefs, - "action_left_topApp", - "action.left_top.app", - "" - ) - migrateIntPreference( - oldPrefs, - newPrefs, - "action_left_topApp_user", - "action.left_top.user", - -1 - ) - migrateStringPreference( - oldPrefs, - newPrefs, - "action_left_bottomApp", - "action.left_bottom.app", - "" - ) - migrateIntPreference( - oldPrefs, - newPrefs, - "action_left_bottomApp_user", - "action.left_bottom.user", - -1 - ) - migrateStringPreference( - oldPrefs, - newPrefs, - "action_doubleLeftApp", - "action.double_left.app", - "" - ) - migrateIntPreference( - oldPrefs, - newPrefs, - "action_doubleLeftApp_user", - "action.double_left.user", - -1 - ) - migrateStringPreference(oldPrefs, newPrefs, "action_rightApp", "action.right.app", "") - migrateIntPreference( - oldPrefs, - newPrefs, - "action_rightApp_user", - "action.right.user", - -1 - ) - migrateStringPreference( - oldPrefs, - newPrefs, - "action_right_topApp", - "action.right_top.app", - "" - ) - migrateIntPreference( - oldPrefs, - newPrefs, - "action_right_topApp_user", - "action.right_top.user", - -1 - ) - migrateStringPreference( - oldPrefs, - newPrefs, - "action_right_bottomApp", - "action.right_bottom.app", - "" - ) - migrateIntPreference( - oldPrefs, - newPrefs, - "action_right_bottomApp_user", - "action.right_bottom.user", - -1 - ) - migrateStringPreference( - oldPrefs, - newPrefs, - "action_doubleRightApp", - "action.double_right.app", - "" - ) - migrateIntPreference( - oldPrefs, - newPrefs, - "action_doubleRightApp_user", - "action.double_right.user", - -1 - ) - migrateBooleanPreference(oldPrefs, newPrefs, "timeVisible", "clock.time_visible", true) - migrateBooleanPreference(oldPrefs, newPrefs, "dateVisible", "clock.date_visible", true) - migrateBooleanPreference( - oldPrefs, - newPrefs, - "dateLocalized", - "clock.date_localized", - false - ) - migrateBooleanPreference( - oldPrefs, - newPrefs, - "dateTimeFlip", - "clock.date_time_flip", - false - ) - migrateBooleanPreference( - oldPrefs, - newPrefs, - "disableTimeout", - "display.disable_timeout", - false - ) - migrateBooleanPreference( - oldPrefs, - newPrefs, - "useFullScreen", - "display.use_full_screen", - true - ) - migrateBooleanPreference( - oldPrefs, - newPrefs, - "enableDoubleActions", - "enabled_gestures.double_actions", - true - ) - migrateBooleanPreference( - oldPrefs, - newPrefs, - "enableEdgeActions", - "enabled_gestures.edge_actions", - true - ) - migrateBooleanPreference( - oldPrefs, - newPrefs, - "searchAutoLaunch", - "functionality.search_auto_launch", - true - ) - migrateBooleanPreference( - oldPrefs, - newPrefs, - "searchAutoKeyboard", - "functionality.search_auto_keyboard", - true - ) - - newPrefs.apply() + migrateStringPreference( + oldPrefs, + this, + "action_volumeUpApp", + "action.volume_up.app", + "" + ) + migrateIntPreference( + oldPrefs, + this, + "action_volumeUpApp_user", + "action.volume_up.user", + -1 + ) + migrateStringPreference( + oldPrefs, + this, + "action_volumeDownApp", + "action.volume_down.app", + "" + ) + migrateIntPreference( + oldPrefs, + this, + "action_volumeDownApp_user", + "action.volume_down.user", + -1 + ) + migrateStringPreference(oldPrefs, this, "action_timeApp", "action.time.app", "") + migrateIntPreference(oldPrefs, this, "action_timeApp_user", "action.time.user", -1) + migrateStringPreference(oldPrefs, this, "action_dateApp", "action.date.app", "") + migrateIntPreference(oldPrefs, this, "action_dateApp_user", "action.date.user", -1) + migrateStringPreference( + oldPrefs, + this, + "action_longClickApp", + "action.long_click.app", + "" + ) + migrateIntPreference( + oldPrefs, + this, + "action_longClickApp_user", + "action.long_click.user", + -1 + ) + migrateStringPreference( + oldPrefs, + this, + "action_doubleClickApp", + "action.double_click.app", + "" + ) + migrateIntPreference( + oldPrefs, + this, + "action_doubleClickApp_user", + "action.double_click.user", + -1 + ) + migrateStringPreference(oldPrefs, this, "action_upApp", "action.up.app", "") + migrateIntPreference(oldPrefs, this, "action_upApp_user", "action.up.user", -1) + migrateStringPreference( + oldPrefs, + this, + "action_up_leftApp", + "action.up_left.app", + "" + ) + migrateIntPreference( + oldPrefs, + this, + "action_up_leftApp_user", + "action.up_left.user", + -1 + ) + migrateStringPreference( + oldPrefs, + this, + "action_up_rightApp", + "action.up_right.app", + "" + ) + migrateIntPreference( + oldPrefs, + this, + "action_up_rightApp_user", + "action.up_right.user", + -1 + ) + migrateStringPreference( + oldPrefs, + this, + "action_doubleUpApp", + "action.double_up.app", + "" + ) + migrateIntPreference( + oldPrefs, + this, + "action_doubleUpApp_user", + "action.double_up.user", + -1 + ) + migrateStringPreference(oldPrefs, this, "action_downApp", "action.down.app", "") + migrateIntPreference(oldPrefs, this, "action_downApp_user", "action.down.user", -1) + migrateStringPreference( + oldPrefs, + this, + "action_down_leftApp", + "action.down_left.app", + "" + ) + migrateIntPreference( + oldPrefs, + this, + "action_down_leftApp_user", + "action.down_left.user", + -1 + ) + migrateStringPreference( + oldPrefs, + this, + "action_down_rightApp", + "action.down_right.app", + "" + ) + migrateIntPreference( + oldPrefs, + this, + "action_down_rightApp_user", + "action.down_right.user", + -1 + ) + migrateStringPreference( + oldPrefs, + this, + "action_doubleDownApp", + "action.double_down.app", + "" + ) + migrateIntPreference( + oldPrefs, + this, + "action_doubleDownApp_user", + "action.double_down.user", + -1 + ) + migrateStringPreference(oldPrefs, this, "action_leftApp", "action.left.app", "") + migrateIntPreference(oldPrefs, this, "action_leftApp_user", "action.left.user", -1) + migrateStringPreference( + oldPrefs, + this, + "action_left_topApp", + "action.left_top.app", + "" + ) + migrateIntPreference( + oldPrefs, + this, + "action_left_topApp_user", + "action.left_top.user", + -1 + ) + migrateStringPreference( + oldPrefs, + this, + "action_left_bottomApp", + "action.left_bottom.app", + "" + ) + migrateIntPreference( + oldPrefs, + this, + "action_left_bottomApp_user", + "action.left_bottom.user", + -1 + ) + migrateStringPreference( + oldPrefs, + this, + "action_doubleLeftApp", + "action.double_left.app", + "" + ) + migrateIntPreference( + oldPrefs, + this, + "action_doubleLeftApp_user", + "action.double_left.user", + -1 + ) + migrateStringPreference(oldPrefs, this, "action_rightApp", "action.right.app", "") + migrateIntPreference( + oldPrefs, + this, + "action_rightApp_user", + "action.right.user", + -1 + ) + migrateStringPreference( + oldPrefs, + this, + "action_right_topApp", + "action.right_top.app", + "" + ) + migrateIntPreference( + oldPrefs, + this, + "action_right_topApp_user", + "action.right_top.user", + -1 + ) + migrateStringPreference( + oldPrefs, + this, + "action_right_bottomApp", + "action.right_bottom.app", + "" + ) + migrateIntPreference( + oldPrefs, + this, + "action_right_bottomApp_user", + "action.right_bottom.user", + -1 + ) + migrateStringPreference( + oldPrefs, + this, + "action_doubleRightApp", + "action.double_right.app", + "" + ) + migrateIntPreference( + oldPrefs, + this, + "action_doubleRightApp_user", + "action.double_right.user", + -1 + ) + migrateBooleanPreference(oldPrefs, this, "timeVisible", "clock.time_visible", true) + migrateBooleanPreference(oldPrefs, this, "dateVisible", "clock.date_visible", true) + migrateBooleanPreference( + oldPrefs, + this, + "dateLocalized", + "clock.date_localized", + false + ) + migrateBooleanPreference( + oldPrefs, + this, + "dateTimeFlip", + "clock.date_time_flip", + false + ) + migrateBooleanPreference( + oldPrefs, + this, + "disableTimeout", + "display.disable_timeout", + false + ) + migrateBooleanPreference( + oldPrefs, + this, + "useFullScreen", + "display.use_full_screen", + true + ) + migrateBooleanPreference( + oldPrefs, + this, + "enableDoubleActions", + "enabled_gestures.double_actions", + true + ) + migrateBooleanPreference( + oldPrefs, + this, + "enableEdgeActions", + "enabled_gestures.edge_actions", + true + ) + migrateBooleanPreference( + oldPrefs, + this, + "searchAutoLaunch", + "functionality.search_auto_launch", + true + ) + migrateBooleanPreference( + oldPrefs, + this, + "searchAutoKeyboard", + "functionality.search_auto_keyboard", + true + ) + } when (oldPrefs.getString("theme", "finn")) { "finn" -> { diff --git a/app/src/main/java/de/jrpie/android/launcher/preferences/theme/ColorTheme.kt b/app/src/main/java/de/jrpie/android/launcher/preferences/theme/ColorTheme.kt index 816d94f..d3088f4 100644 --- a/app/src/main/java/de/jrpie/android/launcher/preferences/theme/ColorTheme.kt +++ b/app/src/main/java/de/jrpie/android/launcher/preferences/theme/ColorTheme.kt @@ -5,7 +5,6 @@ import android.content.res.Resources import com.google.android.material.color.DynamicColors import de.jrpie.android.launcher.R -@Suppress("unused") enum class ColorTheme( private val id: Int, private val labelResource: Int, diff --git a/app/src/main/java/de/jrpie/android/launcher/ui/HomeActivity.kt b/app/src/main/java/de/jrpie/android/launcher/ui/HomeActivity.kt index 14e04d5..a658cd1 100644 --- a/app/src/main/java/de/jrpie/android/launcher/ui/HomeActivity.kt +++ b/app/src/main/java/de/jrpie/android/launcher/ui/HomeActivity.kt @@ -57,6 +57,8 @@ class HomeActivity : UIObject, AppCompatActivity() { super.onCreate() val displayMetrics = DisplayMetrics() + + @Suppress("deprecation") // required to support API < 30 windowManager.defaultDisplay.getMetrics(displayMetrics) val width = displayMetrics.widthPixels @@ -78,6 +80,7 @@ class HomeActivity : UIObject, AppCompatActivity() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { binding.root.setOnApplyWindowInsetsListener { _, windowInsets -> + @Suppress("deprecation") // required to support API 29 val insets = windowInsets.systemGestureInsets touchGestureDetector.setSystemGestureInsets(insets) diff --git a/app/src/main/java/de/jrpie/android/launcher/ui/PinShortcutActivity.kt b/app/src/main/java/de/jrpie/android/launcher/ui/PinShortcutActivity.kt index 4d5d700..71908ba 100644 --- a/app/src/main/java/de/jrpie/android/launcher/ui/PinShortcutActivity.kt +++ b/app/src/main/java/de/jrpie/android/launcher/ui/PinShortcutActivity.kt @@ -24,6 +24,7 @@ import de.jrpie.android.launcher.actions.ShortcutAction import de.jrpie.android.launcher.apps.PinnedShortcutInfo import de.jrpie.android.launcher.databinding.ActivityPinShortcutBinding import de.jrpie.android.launcher.preferences.LauncherPreferences +import androidx.core.content.edit class PinShortcutActivity : AppCompatActivity(), UIObject { private lateinit var binding: ActivityPinShortcutBinding @@ -72,9 +73,12 @@ class PinShortcutActivity : AppCompatActivity(), UIObject { isBound = true request.accept() } - val editor = LauncherPreferences.getSharedPreferences().edit() - ShortcutAction(PinnedShortcutInfo(request.shortcutInfo!!)).bindToGesture(editor, gesture.id) - editor.apply() + LauncherPreferences.getSharedPreferences().edit { + ShortcutAction(PinnedShortcutInfo(request.shortcutInfo!!)).bindToGesture( + this, + gesture.id + ) + } dialog.dismiss() } dialog.findViewById(R.id.dialog_select_gesture_recycler).apply { @@ -117,11 +121,11 @@ class PinShortcutActivity : AppCompatActivity(), UIObject { } inner class GestureRecyclerAdapter(val context: Context, val onClick: (Gesture) -> Unit): RecyclerView.Adapter() { - val gestures = Gesture.entries.filter { it.isEnabled() }.toList() + private val gestures = Gesture.entries.filter { it.isEnabled() }.toList() inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val label = itemView.findViewById(R.id.dialog_select_gesture_row_name) - val description = itemView.findViewById(R.id.dialog_select_gesture_row_description) - val icon = itemView.findViewById(R.id.dialog_select_gesture_row_icon) + val label: TextView = itemView.findViewById(R.id.dialog_select_gesture_row_name) + val description: TextView = itemView.findViewById(R.id.dialog_select_gesture_row_description) + val icon: ImageView = itemView.findViewById(R.id.dialog_select_gesture_row_icon) } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { diff --git a/app/src/main/java/de/jrpie/android/launcher/ui/UIObject.kt b/app/src/main/java/de/jrpie/android/launcher/ui/UIObject.kt index d97388f..51324f4 100644 --- a/app/src/main/java/de/jrpie/android/launcher/ui/UIObject.kt +++ b/app/src/main/java/de/jrpie/android/launcher/ui/UIObject.kt @@ -15,8 +15,10 @@ import de.jrpie.android.launcher.preferences.LauncherPreferences * An interface implemented by every [Activity], Fragment etc. in Launcher. * It handles themes and window flags - a useful abstraction as it is the same everywhere. */ +@Suppress("deprecation") // FLAG_FULLSCREEN is required to support API level < 30 fun setWindowFlags(window: Window, homeScreen: Boolean) { window.setFlags(0, 0) // clear flags + // Display notification bar if (LauncherPreferences.display().hideStatusBar()) window.setFlags( diff --git a/app/src/main/java/de/jrpie/android/launcher/ui/list/ListActivity.kt b/app/src/main/java/de/jrpie/android/launcher/ui/list/ListActivity.kt index 997d2b0..59d83e5 100644 --- a/app/src/main/java/de/jrpie/android/launcher/ui/list/ListActivity.kt +++ b/app/src/main/java/de/jrpie/android/launcher/ui/list/ListActivity.kt @@ -1,13 +1,10 @@ package de.jrpie.android.launcher.ui.list -import android.app.Activity -import android.content.Intent import android.content.res.Resources import android.graphics.Rect import android.os.Build import android.os.Bundle import android.view.View -import android.widget.Toast import android.window.OnBackInvokedDispatcher import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.content.res.AppCompatResources @@ -16,7 +13,6 @@ import androidx.viewpager2.adapter.FragmentStateAdapter import com.google.android.material.tabs.TabLayoutMediator import de.jrpie.android.launcher.Application import de.jrpie.android.launcher.R -import de.jrpie.android.launcher.REQUEST_UNINSTALL import de.jrpie.android.launcher.actions.LauncherAction import de.jrpie.android.launcher.apps.AppFilter import de.jrpie.android.launcher.apps.hidePrivateSpaceWhenLocked @@ -113,10 +109,13 @@ class ListActivity : AppCompatActivity(), UIObject { ?.let { ListActivityIntention.valueOf(it) } ?: ListActivityIntention.VIEW + @Suppress("deprecation") // required to support API level < 33 favoritesVisibility = bundle.getSerializable("favoritesVisibility") as? AppFilter.Companion.AppSetVisibility ?: favoritesVisibility + @Suppress("deprecation") // required to support API level < 33 privateSpaceVisibility = bundle.getSerializable("privateSpaceVisibility") as? AppFilter.Companion.AppSetVisibility ?: privateSpaceVisibility + @Suppress("deprecation") // required to support API level < 33 hiddenVisibility = bundle.getSerializable("hiddenVisibility") as? AppFilter.Companion.AppSetVisibility ?: hiddenVisibility @@ -183,20 +182,6 @@ class ListActivity : AppCompatActivity(), UIObject { finish() } - override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { - super.onActivityResult(requestCode, resultCode, data) - if (requestCode == REQUEST_UNINSTALL) { - if (resultCode == Activity.RESULT_OK) { - Toast.makeText(this, getString(R.string.list_removed), Toast.LENGTH_LONG).show() - finish() - } else if (resultCode == Activity.RESULT_FIRST_USER) { - Toast.makeText(this, getString(R.string.list_not_removed), Toast.LENGTH_LONG).show() - finish() - } - } - } - - fun updateTitle() { var titleResource = intention.titleResource if (intention == ListActivityIntention.VIEW) { diff --git a/app/src/main/java/de/jrpie/android/launcher/ui/list/apps/AppsRecyclerAdapter.kt b/app/src/main/java/de/jrpie/android/launcher/ui/list/apps/AppsRecyclerAdapter.kt index c4428b7..65278ce 100644 --- a/app/src/main/java/de/jrpie/android/launcher/ui/list/apps/AppsRecyclerAdapter.kt +++ b/app/src/main/java/de/jrpie/android/launcher/ui/list/apps/AppsRecyclerAdapter.kt @@ -2,7 +2,6 @@ package de.jrpie.android.launcher.ui.list.apps import android.annotation.SuppressLint import android.app.Activity -import android.content.Intent import android.graphics.Rect import android.view.LayoutInflater import android.view.View @@ -15,7 +14,8 @@ import androidx.appcompat.app.AppCompatActivity import androidx.recyclerview.widget.RecyclerView import de.jrpie.android.launcher.Application import de.jrpie.android.launcher.R -import de.jrpie.android.launcher.REQUEST_CHOOSE_APP +import de.jrpie.android.launcher.actions.Action +import de.jrpie.android.launcher.actions.Gesture import de.jrpie.android.launcher.apps.AbstractDetailedAppInfo import de.jrpie.android.launcher.apps.AppFilter import de.jrpie.android.launcher.apps.AppInfo @@ -195,11 +195,10 @@ class AppsRecyclerAdapter( } ListActivity.ListActivityIntention.PICK -> { - val returnIntent = Intent() - appInfo.getAction().writeToIntent(returnIntent) - returnIntent.putExtra("forGesture", forGesture) - activity.setResult(REQUEST_CHOOSE_APP, returnIntent) activity.finish() + forGesture ?: return + val gesture = Gesture.byId(forGesture) ?: return + Action.setActionForGesture(gesture, appInfo.getAction()) } } } diff --git a/app/src/main/java/de/jrpie/android/launcher/ui/list/apps/ContextMenuActions.kt b/app/src/main/java/de/jrpie/android/launcher/ui/list/apps/ContextMenuActions.kt index 8b681b9..22dff02 100644 --- a/app/src/main/java/de/jrpie/android/launcher/ui/list/apps/ContextMenuActions.kt +++ b/app/src/main/java/de/jrpie/android/launcher/ui/list/apps/ContextMenuActions.kt @@ -6,7 +6,6 @@ import android.content.Context import android.content.Intent import android.content.pm.LauncherApps import android.graphics.Rect -import android.net.Uri import android.os.Bundle import android.util.Log import android.view.View @@ -14,11 +13,9 @@ import android.widget.EditText import androidx.appcompat.app.AlertDialog import com.google.android.material.snackbar.Snackbar import de.jrpie.android.launcher.R -import de.jrpie.android.launcher.REQUEST_UNINSTALL import de.jrpie.android.launcher.apps.AppInfo import de.jrpie.android.launcher.apps.AbstractAppInfo import de.jrpie.android.launcher.apps.AbstractDetailedAppInfo -import de.jrpie.android.launcher.apps.DetailedAppInfo import de.jrpie.android.launcher.apps.PinnedShortcutInfo import de.jrpie.android.launcher.getUserFromId import de.jrpie.android.launcher.preferences.LauncherPreferences @@ -44,17 +41,13 @@ fun AbstractAppInfo.uninstall(activity: Activity) { Log.i(LOG_TAG, "uninstalling $this") - val intent = Intent(Intent.ACTION_UNINSTALL_PACKAGE) + val intent = Intent(Intent.ACTION_DELETE) intent.data = "package:$packageName".toUri() getUserFromId(userId, activity).let { user -> intent.putExtra(Intent.EXTRA_USER, user) } + activity.startActivity(intent) - intent.putExtra(Intent.EXTRA_RETURN_RESULT, true) - activity.startActivityForResult( - intent, - REQUEST_UNINSTALL - ) } else if(this is PinnedShortcutInfo) { val pinned = LauncherPreferences.apps().pinnedShortcuts() ?: mutableSetOf() pinned.remove(this) @@ -102,8 +95,8 @@ fun AbstractDetailedAppInfo.showRenameDialog(context: Context) { AlertDialog.Builder(context, R.style.AlertDialogCustom).apply { setTitle(context.getString(R.string.dialog_rename_title, getLabel())) setView(R.layout.dialog_rename_app) - setNegativeButton(R.string.dialog_cancel) { d, _ -> d.cancel() } - setPositiveButton(R.string.dialog_rename_ok) { d, _ -> + setNegativeButton(android.R.string.cancel) { d, _ -> d.cancel() } + setPositiveButton(android.R.string.ok) { d, _ -> setCustomLabel( (d as? AlertDialog) ?.findViewById(R.id.dialog_rename_app_edit_text) diff --git a/app/src/main/java/de/jrpie/android/launcher/ui/list/other/OtherRecyclerAdapter.kt b/app/src/main/java/de/jrpie/android/launcher/ui/list/other/OtherRecyclerAdapter.kt index 70d5376..f176469 100644 --- a/app/src/main/java/de/jrpie/android/launcher/ui/list/other/OtherRecyclerAdapter.kt +++ b/app/src/main/java/de/jrpie/android/launcher/ui/list/other/OtherRecyclerAdapter.kt @@ -1,7 +1,6 @@ package de.jrpie.android.launcher.ui.list.other import android.app.Activity -import android.content.Intent import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -9,7 +8,8 @@ import android.widget.ImageView import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import de.jrpie.android.launcher.R -import de.jrpie.android.launcher.REQUEST_CHOOSE_APP +import de.jrpie.android.launcher.actions.Action +import de.jrpie.android.launcher.actions.Gesture import de.jrpie.android.launcher.actions.LauncherAction import de.jrpie.android.launcher.ui.list.ListActivity @@ -36,7 +36,10 @@ class OtherRecyclerAdapter(val activity: Activity) : val pos = bindingAdapterPosition val content = othersList[pos] - (activity as? ListActivity)?.forGesture?.let { returnChoiceIntent(it, content) } + activity.finish() + val gestureId = (activity as? ListActivity)?.forGesture ?: return + val gesture = Gesture.byId(gestureId) ?: return + Action.setActionForGesture(gesture, content) } init { @@ -61,12 +64,4 @@ class OtherRecyclerAdapter(val activity: Activity) : val view: View = inflater.inflate(R.layout.list_other_row, parent, false) return ViewHolder(view) } - - private fun returnChoiceIntent(forGesture: String, action: LauncherAction) { - val returnIntent = Intent() - returnIntent.putExtra("forGesture", forGesture) - action.writeToIntent(returnIntent) - activity.setResult(REQUEST_CHOOSE_APP, returnIntent) - activity.finish() - } } \ No newline at end of file diff --git a/app/src/main/java/de/jrpie/android/launcher/ui/settings/SettingsActivity.kt b/app/src/main/java/de/jrpie/android/launcher/ui/settings/SettingsActivity.kt index 2b3cdc6..4c464e5 100644 --- a/app/src/main/java/de/jrpie/android/launcher/ui/settings/SettingsActivity.kt +++ b/app/src/main/java/de/jrpie/android/launcher/ui/settings/SettingsActivity.kt @@ -11,12 +11,10 @@ import androidx.fragment.app.FragmentActivity import androidx.viewpager2.adapter.FragmentStateAdapter import com.google.android.material.tabs.TabLayoutMediator import de.jrpie.android.launcher.R -import de.jrpie.android.launcher.REQUEST_CHOOSE_APP import de.jrpie.android.launcher.databinding.SettingsBinding import de.jrpie.android.launcher.preferences.LauncherPreferences import de.jrpie.android.launcher.preferences.theme.Background import de.jrpie.android.launcher.preferences.theme.ColorTheme -import de.jrpie.android.launcher.saveListActivityChoice import de.jrpie.android.launcher.ui.UIObject import de.jrpie.android.launcher.ui.settings.actions.SettingsFragmentActions import de.jrpie.android.launcher.ui.settings.launcher.SettingsFragmentLauncher @@ -32,7 +30,6 @@ import de.jrpie.android.launcher.ui.settings.meta.SettingsFragmentMeta * Settings are closed automatically if the activity goes `onPause` unexpectedly. */ class SettingsActivity : AppCompatActivity(), UIObject { - private val EXTRA_TAB = "tab" private val solidBackground = LauncherPreferences.theme().background() == Background.SOLID || LauncherPreferences.theme().colorTheme() == ColorTheme.LIGHT @@ -106,11 +103,8 @@ class SettingsActivity : AppCompatActivity(), UIObject { } } - override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { - when (requestCode) { - REQUEST_CHOOSE_APP -> saveListActivityChoice(data) - else -> super.onActivityResult(requestCode, resultCode, data) - } + companion object { + private const val EXTRA_TAB = "tab" } } diff --git a/app/src/main/java/de/jrpie/android/launcher/ui/settings/actions/SettingsFragmentActionsRecycler.kt b/app/src/main/java/de/jrpie/android/launcher/ui/settings/actions/SettingsFragmentActionsRecycler.kt index 630b5b0..ae47ce2 100644 --- a/app/src/main/java/de/jrpie/android/launcher/ui/settings/actions/SettingsFragmentActionsRecycler.kt +++ b/app/src/main/java/de/jrpie/android/launcher/ui/settings/actions/SettingsFragmentActionsRecycler.kt @@ -16,7 +16,6 @@ import androidx.fragment.app.Fragment import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import de.jrpie.android.launcher.R -import de.jrpie.android.launcher.REQUEST_CHOOSE_APP import de.jrpie.android.launcher.actions.Action import de.jrpie.android.launcher.actions.Gesture import de.jrpie.android.launcher.apps.AppFilter @@ -179,9 +178,6 @@ class ActionsRecyclerAdapter(val activity: Activity) : intent.putExtra("intention", ListActivity.ListActivityIntention.PICK.toString()) intent.putExtra("hiddenVisibility", AppFilter.Companion.AppSetVisibility.VISIBLE) intent.putExtra("forGesture", gesture.id) // for which action we choose the app - activity.startActivityForResult( - intent, - REQUEST_CHOOSE_APP - ) + activity.startActivity(intent) } } diff --git a/app/src/main/java/de/jrpie/android/launcher/ui/settings/meta/SettingsFragmentMeta.kt b/app/src/main/java/de/jrpie/android/launcher/ui/settings/meta/SettingsFragmentMeta.kt index 26f276a..dea0bcf 100644 --- a/app/src/main/java/de/jrpie/android/launcher/ui/settings/meta/SettingsFragmentMeta.kt +++ b/app/src/main/java/de/jrpie/android/launcher/ui/settings/meta/SettingsFragmentMeta.kt @@ -2,7 +2,6 @@ package de.jrpie.android.launcher.ui.settings.meta import android.app.AlertDialog import android.content.Intent -import android.net.Uri import android.os.Bundle import android.view.LayoutInflater import android.view.View @@ -20,7 +19,6 @@ import de.jrpie.android.launcher.openTutorial import de.jrpie.android.launcher.preferences.resetPreferences import de.jrpie.android.launcher.ui.LegalInfoActivity import de.jrpie.android.launcher.ui.UIObject -import de.jrpie.android.launcher.ui.tutorial.TutorialActivity /** * The [SettingsFragmentMeta] is a used as a tab in the SettingsActivity. diff --git a/app/src/main/java/de/jrpie/android/launcher/ui/tutorial/TutorialActivity.kt b/app/src/main/java/de/jrpie/android/launcher/ui/tutorial/TutorialActivity.kt index 12c6c8a..847639c 100644 --- a/app/src/main/java/de/jrpie/android/launcher/ui/tutorial/TutorialActivity.kt +++ b/app/src/main/java/de/jrpie/android/launcher/ui/tutorial/TutorialActivity.kt @@ -1,6 +1,5 @@ package de.jrpie.android.launcher.ui.tutorial -import android.content.Intent import android.content.res.Resources import android.os.Build import android.os.Bundle @@ -12,10 +11,8 @@ import androidx.fragment.app.FragmentActivity import androidx.viewpager2.adapter.FragmentStateAdapter import androidx.viewpager2.widget.ViewPager2 import com.google.android.material.tabs.TabLayoutMediator -import de.jrpie.android.launcher.REQUEST_CHOOSE_APP import de.jrpie.android.launcher.databinding.TutorialBinding import de.jrpie.android.launcher.preferences.LauncherPreferences -import de.jrpie.android.launcher.saveListActivityChoice import de.jrpie.android.launcher.ui.UIObject import de.jrpie.android.launcher.ui.blink import de.jrpie.android.launcher.ui.tutorial.tabs.TutorialFragment0Start @@ -36,6 +33,7 @@ class TutorialActivity : AppCompatActivity(), UIObject { private lateinit var binding: TutorialBinding + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) super.onCreate() @@ -113,14 +111,9 @@ class TutorialActivity : AppCompatActivity(), UIObject { super.onStart() } - override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { - when (requestCode) { - REQUEST_CHOOSE_APP -> saveListActivityChoice(data) - else -> super.onActivityResult(requestCode, resultCode, data) - } - } - // prevent going back when the tutorial is shown for the first time + @Deprecated("Deprecated in Java", ReplaceWith("use anyway")) + @Suppress("deprecation") // support API level < 33 override fun onBackPressed() { if (LauncherPreferences.internal().started()) super.onBackPressed() diff --git a/app/src/main/java/de/jrpie/android/launcher/ui/util/HtmlTextView.kt b/app/src/main/java/de/jrpie/android/launcher/ui/util/HtmlTextView.kt index 549f10f..5e38b9f 100644 --- a/app/src/main/java/de/jrpie/android/launcher/ui/util/HtmlTextView.kt +++ b/app/src/main/java/de/jrpie/android/launcher/ui/util/HtmlTextView.kt @@ -12,6 +12,7 @@ class HtmlTextView(context: Context, attr: AttributeSet?, int: Int) : constructor(context: Context) : this(context, null, 0) init { + @Suppress("deprecation") // required to support API level < 24 text = Html.fromHtml(text.toString()) movementMethod = LinkMovementMethod.getInstance() } diff --git a/app/src/main/res/drawable/tutorial_app_list.png b/app/src/main/res/drawable-mdpi/tutorial_app_list.png similarity index 100% rename from app/src/main/res/drawable/tutorial_app_list.png rename to app/src/main/res/drawable-mdpi/tutorial_app_list.png diff --git a/app/src/main/res/drawable/tutorial_home_screen.png b/app/src/main/res/drawable-mdpi/tutorial_home_screen.png similarity index 100% rename from app/src/main/res/drawable/tutorial_home_screen.png rename to app/src/main/res/drawable-mdpi/tutorial_home_screen.png diff --git a/app/src/main/res/drawable/baseline_more_horiz_24.xml b/app/src/main/res/drawable/baseline_more_horiz_24.xml deleted file mode 100644 index 061fae2..0000000 --- a/app/src/main/res/drawable/baseline_more_horiz_24.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml deleted file mode 100644 index 4f1c4ab..0000000 --- a/app/src/main/res/drawable/ic_launcher_background.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - diff --git a/app/src/main/res/drawable/round_outline.xml b/app/src/main/res/drawable/round_outline.xml deleted file mode 100644 index 3650338..0000000 --- a/app/src/main/res/drawable/round_outline.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_pin_shortcut.xml b/app/src/main/res/layout/activity_pin_shortcut.xml index 5e10118..2519374 100644 --- a/app/src/main/res/layout/activity_pin_shortcut.xml +++ b/app/src/main/res/layout/activity_pin_shortcut.xml @@ -116,7 +116,7 @@ android:layout_margin="10dp" android:layout_width="match_parent" android:layout_height="wrap_content" - android:text="@string/pin_shortcut_button_ok" + android:text="@android:string/ok" app:layout_constraintBottom_toBottomOf="parent" /> \ No newline at end of file diff --git a/app/src/main/res/layout/tutorial_4_setup.xml b/app/src/main/res/layout/tutorial_4_setup.xml index bf62261..9650c57 100644 --- a/app/src/main/res/layout/tutorial_4_setup.xml +++ b/app/src/main/res/layout/tutorial_4_setup.xml @@ -33,7 +33,7 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/tutorial_setup_title" /> - YN+qP}nwr%@u+qP|E$^`WE|I`0ZecR*NaVU8R3$Fbh+(gKMv_6ER zKK~v?@=pavo(oT!@EZhtNY&?yQm}*$7@EB3tr;S{7kdIH2yx|zYlh5}_iAzwf`y^V zlPTg}(e`}#@9*+}WyKv5F+kB?%8EFo!Z!M6*@EBj@_hM+>c5JKIKNSs_cS+ryvFnw z!%Geu2@pfu-?bdxE9QD$_;J5H@CENhe&{Df+UgQGK(R-2gEbz4g0*Z=U84UIi*D}# z#RkWdE0TO$WkqQCBN)dY5>9nK%!c^uUln9{OPwY4jlHNKrk=~xs z@&wJTmjf=Z&qdlRcyy~pXX!e}=PEM`Yc$tM7baZy40O>Kx?u4*hwep`myxSbStiL$ ziA*@{5fMz?6L>UhRjMG##Q~CB@wo`aH@9J~fz3B31~_x4ki2yrVFT-v8{Z=49i(u8 z$Shmn0B{aol>Q~90%=~50Sx{dA{6#31YHTPyavt|70~PRwr)& diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp deleted file mode 100644 index 7cfdde1db49d496c0c3f2adf905097bcc19c581d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 372 zcmV-)0gL`pNk&F&0RRA3MM6+kP&iCr0RR9mYrq;1mB5lD$yKxWzjOlfT0Uh8?}-RF zkZhZ_&a?f#ZTqLTjmWlb+qP}n_Rnlvp=$#A_x}&E2JL!+`38dJuZb}D{|;i+tQR zl*%TvxO)~)+q$$8;)oUH2bOl8_|vm5FmOv6sBm|Kd4Rl`KQI?PQDC@9vv&U;+r`d8 z&^{^lQmnDM=!~ul@Y2Djwp^R^H4^srs`Yw*kD+2^Ej)gaUsF@O3?#^>?fc!n;POUp z7Ign`m3pZ~(?>a>R`%b43zy zMj7QTH23VE(6sQ+6b0ipSPg(#uTyh04dLo(^CDF?#qLsyisFJhJ8-BQVF0#5iizYR SvUTiGC!R8Zf0}>)|MUw1+Pb~~ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp deleted file mode 100644 index 68b43ba9113735c1998b0d9e54d7376cac7be60b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 880 zcmV-$1CRVtNk&F!0{{S5MM6+kP&iCn0{{Ro*T6Lpbx3j>Ns^@e|DPK?L}XPq&@uZ= zS}isiAprouvXMHRZQHhO+qTWOZQJ(Qwr$%#Z+ExDnhD71|I`1c|4;v){{L0p2V>WD z8O8A>VApZc`Ihj_+bb_ls<1P;-b3PI?17^{In zH0K2L45MUSu!y!4Fxl}=8JV{;rV-$@@m!LKf>F#Eg}pAH(GTkD!o-XEJ{YYNHc>4h z0QG6c!bTlGjaYYFhO>{0D9D!V7VPu{j|KqErcoF$s<@d2fQza+wD+#&B?WI=n5(dys4`PEJw3RcOp}K`NxD^2~*fuD6yZ{@Vp*9GEEXSx+ zcXXgQNfHBoJ{~OzGIP(WTPUGx`L0 zyYu3m5n@SG2*^u94IkuLMzwV_304?D?grh83$~Jy1f7)%N#Zr2F;i|ei+-jBYO>Bd zu!-_TmvNI18-TfkWK9&*!z9#OI`^<0Vj2*eKpLz+T&B_hWLz^BvoJcAT3FM@YaMtV zBx&N`ge`zd>>g%2;x;H4t@cKTcxU1khQ(~P(!~f3Rk8PYc?|11B=I@EirW>7aVBat zly6}PAQ9W3(b-xY)YZkw`xtWIGXDff19dicE{GIbiSG!mdFTOBeXR|O>gfP!@EDAi z>h>qZ^J-omR+|;Q!@fvF2ab-51hGMh+cl0c30p_U#FZjZo#4Q81YJjH{AUmvd%)x+9R7eW8Y2zTA#sOOw8T_P0nPPlI+y&cn zjT!;Mj9fAA=CW{U2e&l|orEV!(GXFqk37P~W`hzaUw}Rwf_-!8ppeoIt|MeeMWuZR zdNkX$%QvmsIH0;g@V`5EBVbbUmm4Pye6(KmC9D G|94f_z>CoU diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp deleted file mode 100644 index 337c6cc9f7b4bd0d4faf8f5fed0ace1c244aa28b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1416 zcmV;31$X*VNk&G11pok7MM6+kP&iC;1pojqL%~oGb$*DG*kFQFM<)~^&;$rtVkBBii;d=byP(EB{c817CLDzgAV!%#9Ofr+REnq z6?~z}w9`?A5P~@pvcfD>6{R#SKPm+0Xi;cwyVs0J609%lZt2j-6fe>?jx=}?*U35( zy!mk)A~M=L7zFXPO(dQ|t8&V(D+$&&`{bghxVN=_As{$!b%$m!TDz+82Fc4+b?6xf zz42OB5gFnY79-!68G)Xs zk24S&(R?z7ts$FmC()Y1u?%fGUJO5NmVSB|VFv>U&Ls41ez#39tAlOA%OMUBMD>W= zuj*4Btm(_K#HRgh z$Mj@@uuJWrZA_T?E!5XHx>n!B#4k+85)glAYA6K`gP@tT6_`52J5^hjIJKX))#sK( zMTg4g#7^{scnq{i5aJD`=ZQ5nrt~3EKf@@t4ji!nHToHCLK4?N*6X{mOBs;h63sfI z5fEJ#>M;z^K-mq#Wh0y|(PDzoRS=_QJR~}9v?h28gUQcsj3Nib?1>f~4GApeLEhF- zF`RJUC{N;y9b-HFNX(mA_tasN;8l{mIks@(?rs`|JwVrlS@?t2R}auWUvEoiEIVxc zeN5OK)Kv;U+9X!}LG(x%g+7h03F4hs^KHV61xF1sH(}KVZ=w2a*@JZ1O`8NO?rF46 zU{O@_#NPk{&yuzRT|>yI7NZ>^MND(&ivS)naGjWf|o!#)ANPMMw7JO$x zT*DkaZayT&P7(Q$w21>k=acx^(=uU|)lbpAWxHspkOk(E#xRL}~3Z0hD%8K< z@2gi3Up=gGzz)-uQ7=>#t*A@Dpy+hB&H-DD5QAALJW-dhbVx*9!iffGk=I2zQ8yp0 z&9%*bo7)uCbT#BA>JmI66M0>Dqk?GFwQ06GXpdzEO6LqM)L5XXi|$CB{y+VH`v3I* W>HpLJr~gm?pZ-7nfBOG_g988tudbQ^ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp deleted file mode 100644 index ba69e326f6bce4fd0505d3b0d04e5effcd427263..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2046 zcmaKt`#;kQ1AwubNLCYZ%KdAS<6bc)VX-fBSweEZoZN2-ix{F@Rymu_aUUI-id^Pi z49Q%gHBn4L|GHLnXYkPm zd{d}v7(0Z0bDvt+7|S>Hxs$?5aZ_m=NliZ!=s27vipB^CBt<+PdnPx=Rc1Gavg6p- z8$&m_gqVcJMyc@Nf~58>!Vmro{|!Hje}b>I@3~9=pMl?mjDK=JvxXlX(L)iY4A!otjKhk&T`GQ){KgTAd$XCr=oE zNtRn#UEAIqiL<3>z59DpFL+O3@FmKr(&MGYtryy6S1osAc*}>ET?h6){tF{p&(6+{ z9>|ZmK$va;jqjHin>7D92n8@hQ z7*xSXTE6A3n*RQ?Y^IMIz?QKfL-d6*>1i5OCq*ebwvR{@84F2)iMzB}BzD=Z2oP5& z^>v2!e*ZQe!pe6~iq=C6Du#pW&nHszb9A{ea8;NSt_g^|`333_Ha4Kyk;yODXMjp! z=oXyEKdSUfw!zwLvY&)t=tnT6vCVC~2UE9w$?r0CY$qLCH3c zE-nn((-DsGHVluduh?YNkw^=2**;@bNNLQQ6ik-WLu`_@T`cB`)qdiBy>u6gdclgC zOgphy4PKr!J*)8SGwGAsrI6lZ2rFFr7uUMLlv671v(+Jg1>Zj&R(K$O8rDx_U1hxa z6S{gwTWMAGsi!yfN?z?7`E{{+YYYM25qwx<7FbYu=q2CnvNkS99)!&#oXAzZ0naix zStdxz^?}Af$Fm&Yt08|}V=Po|v}ok9$74%nf}=t;lUZq;!Ob}w+~{n1PPzaRvP$Kg z&M17R7(pQ$sBvDzsT(`_z9p^fB)5TZsQFeXPz$!hUh}fi{0(W<7Re*5d!=FDSa_iY z@DEYS2gr;}z;~KBfJ}kubYW&xZ-xuYDYwHMEJ3AcuV{ibbF1peo+NT?;Xc@JTyw!+ z72>W+!W*g`>oEV!1|Eqb1#s)6i8{``N#C?95KVK?YN+E$9uO_v+SIjOREE07knZ`& z7so%PkaHe`$4nsSGOgj2kfD66kM!d0+vt#_bz}y#CLxF9)y!fKuz~Tgp5`OEU)PS+ zepNviqTzMzUWkT7tBNU&U2W2oOoX5@*tamhAvjSp$^{HHH#6)~%)(PEfV+{zPZd8~ zpfh52dF?I{_IbJY?HqJB#=15PMLGpFL8Ym}{-VieiWy;_j7#dsR{`kQkZQ(=r*epI zK`_4m`Ag#HxhIAZ22Vi&u_180bgF)?BPQcPMcelcvD~|XL}K-4hi3`*)Hg{JIAba) z?lj;Dn@id{WUReGEKCDxIhK9o?gH6m&KElE;|>*9jHoqV^zr)TuQXobFO$*=EVS#I zUfW4LR7Ch~&K7=U=>#N;0=~^MF2Ph1gzY1<(ZUZV54q4OuqVT*00Q~hLk#Z@iY0KP ziXus51qUNYgGYWaIlo)1U8*&Y=}Ss)mOg4ldZj#c;XGJ)RMuIPyp>!fVq!t!MPkh0 z19loHDq1wVEXSR=W(6-eeqDZV85nvvoQpQ{BXuCI zjkt{l*LxF_ifg-dEK-Q^Q&qD7xY|RzcX98Pd$_|=S*0qtXBH@{a79-(v%u=a^y!RH zokQlB36E3rXPat9i-CeYo@GNO0Pol|?eDq&>zCt0D;wlV_t8T~OJ5)>-&Iz?*mBrXWogcYuPg;GIoa}LJxKJb~|$`((e>-`d= zMV(j`&>&BS|LK?Kl{=*6We8=$YDhmea;C|hmNg?3p#P$9E6t>EWu-XioZLzrb%Z0s z6UQt!EQSv+YVX>3P;b$k*i+Y?InCX?^?)5;XT{lzoKFMMeAy7twxXwOdbur&=C>Vi zAhE*8q1Z*x3nBgYzBMlf$}3;OqjXQLf5W3j#iyjWQV$u*ljW1OB2P_BPK6s;&W@`; z>NQM#r$4~(%?KgIqU0Pq>VHbo&q8{Wj2F07ffDnmPcjt^f4N?elQbVJnREuafSAbY zBW=FkXWnNKCM2xBzL1wTiEVoI3k#=Jc{24c7nb2?2dg=5eRsHh=Gk=ex4c-7R>kyo PTJZmy?0;?eVCjDVRon>g diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 349d730..33e6c3d 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -67,7 +67,6 @@ Uhr Auf die Uhrzeit klicken App wählen - Alle Anwendungen Apps installieren Store nicht gefunden Seleccionar Launcher Información de la aplicación - Su dispositivo no posee esta caracrerística. Desea cambiar los detalles de la aplicación? Ver tutorial de Launcher Configuración por defecto Todas sus preferencias se eliminarán. Desea continuar? @@ -96,8 +92,6 @@ Otros Desinstalar Información - Se eliminó la aplicación - No se pudo eliminar la aplicación Buscar Aplicaciones Configuración de Launcher Aplicaciones diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 388e089..0487823 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -37,7 +37,6 @@ Date Horloge Choisir une application - Voir toutes les applications Installer des applications Magasin d\'applications introuvable Choisir μLauncher comme application d\'écran d\'accueil par défaut Informations sur l\'application - Votre appareil ne prend pas en charge cette fonctionnalité. Souhaitez-vous plutôt accéder aux détails de l\'application ? Regarder le tutoriel Réinitialiser Vous allez réinitialiser tous vos paramètres. Souhaitez-vous poursuivre ? @@ -88,8 +84,6 @@ Autre Désinstaller Informations - Application supprimée - Impossible de désinstaller l\'application Chercher des applications Réglages d\'µLauncher Toutes les Applications diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 320bfc6..5a4b16a 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -34,7 +34,6 @@



Puoi cambiare le tue scelte in seguito nelle impostazioni. ]]>
- Il tuo dispositivo non supporta questa funzione. Vuoi aprire la pagina di dettaglio dell\'applicazione? Impossibile aprire l\'applicazione Desideri modificare le impostazioni? Apri le impostazioni per abbinare un\'azione a questo gesto @@ -83,7 +82,6 @@ Premi il pulsante di aumento del volume Riduci il volume Premi il pulsante per ridurre il volume - Vedi tutte le applicazioni Installa le applicazioni Icone monocromatiche Mostra l\'ora @@ -112,10 +110,8 @@ Font Inverti data e ora Scegli uno sfondo - Cambia immagine di sfondo Schermo Mantieni lo schermo acceso - Schermo intero Ruota lo schermo Funzionalità Apri automaticamente la tastiera per cercare @@ -181,7 +177,6 @@ Nascondi Mostra Rinomina - Le applicazioni selezionate sono state rimosse Cerca Impostazioni μLauncher Espandi il pannello notifiche @@ -197,7 +192,6 @@ Questa funzione richiede Android 6 o successivi. Ok Rinomina %1$s - Impossibile rimuovere l\'applicazione Dinamico Colore Due dita verso l\'alto diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 6a6149c..9a0544f 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -45,7 +45,6 @@ Data Hora Selecione um app - Ver todos os apps Instalar aplicativos Loja não encontrada Definir o μLauncher como tela inicial Informações do aplicativo - Seu dispositivo não é compatível com esse recurso. Gerenciar detalhes do app em vez disso? Ver tutorial do launcher Redefinir configuraçãos Você vai descartar todas as suas preferências. Continuar? @@ -100,8 +96,6 @@ Outros Desinstalar Informações do aplicativo - O app selecionado foi removido - Não foi possível remover o app Busque Configurações do µLauncher Todos os apps diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index bfd0cfe..e6fc115 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -105,7 +105,6 @@ Saat Saate tıklayın Uygulama Seçin - Tüm uygulamaları göster Uygulamaları yükle Mağaza bulunamadı Görünüş @@ -120,8 +119,6 @@ Hiçbir şey yapma Kaynak kodunu göster Hatayı bildirin - Seçilen uygulama kaldırıldı - Uygulama kaldırılamadı Uygulamaları Ara Tüm Uygulamalar Favori Uygulamalar @@ -134,10 +131,8 @@ Saniyeleri gösteri Tarih ile zamanı yer değiştir Duvar kağıdı seç - Duvar kağıdını değiştir Ekran Ekranı açık tut - Tam ekran kullan Ekranı döndür İşlevsellik Ekranın köşesinden kaydırın @@ -165,7 +160,6 @@ Metin Izgara Uygulama Detayı - Sizin cihazınız bu özelliği desteklemiyor. Onun yerine uygulama detaylarını düzenleyin? Ayarları Sıfırlayın Tüm tercihlerinizi bir kenara bırakacaksınız. Devam mı? Tek uzay diff --git a/app/src/main/res/values-w820dp/dimens.xml b/app/src/main/res/values-w820dp/dimens.xml deleted file mode 100644 index 63fc816..0000000 --- a/app/src/main/res/values-w820dp/dimens.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - 64dp - diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 793ef9d..07b411d 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -37,21 +37,17 @@ 日期 时间 选择应用 - 浏览全部应用 安装应用 没有找到应用市场 选择一个壁纸 - 换壁纸 保持屏幕常亮 - 使用全屏 功能 边缘滑动动作 零点击启动唯一搜索结果 搜索时呼出键盘 灵敏度 应用信息 - 您的设备不支持此功能。要不打开应用程序详细? 查看启动器教程 重置设置 你将放弃你所有的配置。继续吗? @@ -74,8 +70,6 @@ 应用 卸载 应用信息 - 无法移除应用 - 移除了选定的应用 搜索 启动器设置 全部应用 diff --git a/app/src/main/res/values/ic_launcher_background.xml b/app/src/main/res/values/ic_launcher_background.xml deleted file mode 100644 index beab31f..0000000 --- a/app/src/main/res/values/ic_launcher_background.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - #000000 - \ 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 b94a92b..6205281 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -101,8 +101,6 @@ Choose App - View all apps - Install apps Store not found @@ -148,7 +146,6 @@ Flip date and time Choose a wallpaper - Change wallpaper Display @@ -240,9 +237,6 @@ Show Rename - Removed the selected application - Unable to remove application - Search Search (no auto launch) @@ -265,7 +259,6 @@ Add Shortcut Bind to gesture - Ok Show in app list