diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index f580315..fd22359 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -1,31 +1,32 @@ --- name: Bug report about: Create a report to help improve this app -title: '' +title: '[bug] ' labels: bug assignees: '' --- -**Describe the bug** +# Describe the bug A clear and concise description of what the bug is. -**To Reproduce** +# To Reproduce Steps to reproduce the behavior: 1. Go to '...' 2. Click on '....' 3. Scroll down to '....' 4. See error -**Expected behavior** +# Expected behavior A clear and concise description of what you expected to happen. -**Screenshots** +# Screenshots If applicable, add screenshots to help explain your problem. -**Smartphone (please complete the following information):** +# Smartphone (please complete the following information) - Device: [e.g. Samsung A7] - Android Version: [e.g. Marshmallow, 6.0 or API 23] + - µLauncher Version: [e.g. j-0.0.11 or version code 25] -**Additional info** +# Additional info Add any other info or comments about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index e2b3f9d..4ab974b 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -1,20 +1,20 @@ --- name: Feature request about: Suggest an idea for this project -title: '' +title: '[feature] ' labels: enhancement assignees: '' --- -**Is your feature request related to a problem? Please describe.** -A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] +# Mandatory: Please describe the problem to be solved +(Remove this text: Add a clear and concise description of the addressed problem. Don't say "add a button such that ... " but **why** this button should be added. This is very important as it allows to discuss alternative solutions.) -**Describe the solution you'd like** -A clear and concise description of what you want to happen. +# Optional: Describe the solution you would suggest +(Remove this text: A description of the solution, e.g. "add a button to the settings activity. When clicking that button ..." ) -**Describe alternatives you've considered** -A clear and concise description of any alternative solutions or features you've considered. +# Optional: Describe alternative solutions you've considered +(Remove this text: A description of any alternative solutions or features you've considered.) -**Additional info** -Add any other info, comments or screenshots about the feature request here. +# Optional: Additional info +(Remove this text: Add any other info, comments or screenshots about the feature request here.) diff --git a/.gitignore b/.gitignore index e8c588d..c21100e 100644 --- a/.gitignore +++ b/.gitignore @@ -40,6 +40,7 @@ captures/ # IntelliJ *.iml +.idea/* .idea/workspace.xml .idea/tasks.xml .idea/other.xml diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml deleted file mode 100644 index feb0c69..0000000 --- a/.idea/codeStyles/Project.xml +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - - - -
- - - - 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 deleted file mode 100644 index 79ee123..0000000 --- a/.idea/codeStyles/codeStyleConfig.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml deleted file mode 100644 index b589d56..0000000 --- a/.idea/compiler.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/deviceManager.xml b/.idea/deviceManager.xml deleted file mode 100644 index 91f9558..0000000 --- a/.idea/deviceManager.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml deleted file mode 100644 index a5f05cd..0000000 --- a/.idea/jarRepositories.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml deleted file mode 100644 index 6d0ee1c..0000000 --- a/.idea/kotlinc.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - \ No newline at end of file diff --git a/.idea/migrations.xml b/.idea/migrations.xml deleted file mode 100644 index f8051a6..0000000 --- a/.idea/migrations.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 8f51cae..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/README.md b/README.md index 6e49591..3379726 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,10 @@ - +[![][shield-release]][latest-release] [![][shield-license]][license] +[![Chat on Matrix](https://matrix.to/img/matrix-badge.svg)][matrix] +[![Chat on Discord](https://img.shields.io/badge/discord-join%20chat-007ec6.svg?style=flat)][discord] + + # μLauncher @@ -28,7 +32,7 @@ Or download the latest APK from the [Releases Section](https://github.com/jrpie/ There are several ways to contribute to this app: * You can add or improve [translations][toolate]. -* If you find a bug or have an idea for a new feature you can open an [issue][issues]. Please note that I work on this project in my free time. Thus I might not respond immediately and not all ideas will be implemented. +* If you find a bug or have an idea for a new feature you can [join the Matrix chat][matrix] or open an [issue][issues]. Please note that I work on this project in my free time. Thus I might not respond immediately and not all ideas will be implemented. * You can implement a new feature yourself: - Create a fork of this repository: [![][shield-gh-fork]][fork] - Create a new branch named `feature/` of `fix/` and commit your changes. @@ -77,14 +81,15 @@ There are several ways to contribute to this app: [shield-release]: https://img.shields.io/github/v/release/jrpie/Launcher?style=flat + [latest-release]: https://github.com/jrpie/Launcher/releases/latest [shield-contribute]: https://img.shields.io/badge/contributions-welcome-007ec6.svg?style=flat [shield-license]: https://img.shields.io/badge/license-MIT-007ec6?style=flat [shield-gh-watch]: https://img.shields.io/github/watchers/jrpie/Launcher?label=Watch&style=social [shield-gh-star]: https://img.shields.io/github/stars/jrpie/Launcher?label=Star&style=social [shield-gh-fork]: https://img.shields.io/github/forks/jrpie/Launcher?label=Fork&style=social - - + [matrix]: https://s.jrpie.de/launcher-matrix + [discord]: https://s.jrpie.de/launcher-discord diff --git a/app/build.gradle b/app/build.gradle index b6a1b7c..f589b70 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -23,8 +23,8 @@ android { minSdkVersion 21 targetSdkVersion 35 compileSdk 35 - versionCode 24 - versionName "j-0.0.10" + versionCode 26 + versionName "j-0.0.12" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 241f10a..8cbc7ed 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -39,6 +39,7 @@ - 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 6f0aaad..88a0fb3 100644 --- a/app/src/main/java/de/jrpie/android/launcher/Application.kt +++ b/app/src/main/java/de/jrpie/android/launcher/Application.kt @@ -9,5 +9,6 @@ class Application : android.app.Application() { val preferences = PreferenceManager.getDefaultSharedPreferences(this) LauncherPreferences.init(preferences, this.resources) + } } \ No newline at end of file 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 f2d151d..37dc3fb 100644 --- a/app/src/main/java/de/jrpie/android/launcher/Functions.kt +++ b/app/src/main/java/de/jrpie/android/launcher/Functions.kt @@ -96,9 +96,13 @@ fun getIntent(packageName: String, context: Context): Intent? { } /* --- */ -fun getUserFromId(user: Int?, context: Context): UserHandle? { +fun getUserFromId(user: Int?, context: Context): UserHandle { + /* TODO: this is an ugly hack. + Use userManager#getUserForSerialNumber instead (breaking change to SharedPreferences!) + */ val userManager = context.getSystemService(Service.USER_SERVICE) as UserManager - return userManager.userProfiles.firstOrNull { it.hashCode() == user } + val profiles = userManager.userProfiles + return profiles.firstOrNull { it.hashCode() == user } ?: profiles[0] } @@ -106,10 +110,10 @@ fun uninstallApp(appInfo: AppInfo, activity: Activity) { val packageName = appInfo.packageName.toString() val user = appInfo.user - Log.i("Launcher", "uninstalling $packageName ($user)") + Log.i("Launcher", "uninstalling $appInfo") val intent = Intent(Intent.ACTION_UNINSTALL_PACKAGE) intent.data = Uri.parse("package:$packageName") - getUserFromId(user, activity)?.let { user -> + getUserFromId(user, activity).let { user -> intent.putExtra(Intent.EXTRA_USER, user) } 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 a1c6074..1eab2ee 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 @@ -39,7 +39,7 @@ interface Action { val id = gesture.id val preferences = LauncherPreferences.getSharedPreferences() - var actionId = preferences.getString("$id.app", "")!! + val actionId = preferences.getString("$id.app", "")!! var u: Int? = preferences.getInt("$id.user", INVALID_USER) u = if (u == INVALID_USER) null else u @@ -48,7 +48,7 @@ interface Action { fun resetToDefaultActions(context: Context) { val editor = LauncherPreferences.getSharedPreferences().edit() - Gesture.values().forEach { gesture -> + Gesture.entries.forEach { gesture -> context.resources .getStringArray(gesture.defaultsResource) .map { fromId(it, null) } @@ -96,7 +96,7 @@ interface Action { fun fromIntent(data: Intent): Action? { val value = data.getStringExtra("action_id") ?: return null - var user = data.getIntExtra("user", INVALID_USER) + val user = data.getIntExtra("user", INVALID_USER) return fromId(value, user) } } diff --git a/app/src/main/java/de/jrpie/android/launcher/actions/LauncherAction.kt b/app/src/main/java/de/jrpie/android/launcher/actions/LauncherAction.kt index 6442f47..4d5c8f4 100644 --- a/app/src/main/java/de/jrpie/android/launcher/actions/LauncherAction.kt +++ b/app/src/main/java/de/jrpie/android/launcher/actions/LauncherAction.kt @@ -65,6 +65,12 @@ enum class LauncherAction( R.drawable.baseline_notifications_24, ::expandNotificationsPanel ), + EXPAND_SETTINGS_PANEL( + "launcher:expandSettingsPanel", + R.string.list_other_expand_settings_panel, + R.drawable.baseline_settings_applications_24, + ::expandSettingsPanel + ), NOP("launcher:nop", R.string.list_other_nop, R.drawable.baseline_not_interested_24, {}); override fun invoke(context: Context, rect: Rect?): Boolean { @@ -170,7 +176,24 @@ private fun expandNotificationsPanel(context: Context) { } catch (e: Exception) { Toast.makeText( context, - context.getString(R.string.alert_cant_expand_notifications_panel), + context.getString(R.string.alert_cant_expand_status_bar_panel), + Toast.LENGTH_LONG + ).show() + } +} + +private fun expandSettingsPanel(context: Context) { + /* https://stackoverflow.com/a/31898506 */ + try { + @Suppress("SpellCheckingInspection") + val statusBarService: Any? = context.getSystemService("statusbar") + val statusBarManager = Class.forName("android.app.StatusBarManager") + val showStatusBar = statusBarManager.getMethod("expandSettingsPanel") + showStatusBar.invoke(statusBarService) + } catch (e: Exception) { + Toast.makeText( + context, + context.getString(R.string.alert_cant_expand_status_bar_panel), Toast.LENGTH_LONG ).show() } 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 6bc51a1..daa7d96 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 @@ -4,6 +4,7 @@ import android.app.Service import android.content.Context import android.content.pm.LauncherActivityInfo import android.content.pm.LauncherApps +import android.util.Log import de.jrpie.android.launcher.getUserFromId /** @@ -19,13 +20,13 @@ class AppInfo(val packageName: CharSequence, val activityName: CharSequence?, va var ret = "$packageName;$u" activityName?.let { ret += ";$activityName" } - return ret; + return ret } override fun equals(other: Any?): Boolean { if(other is AppInfo) { return other.user == user && other.packageName == packageName - && other.activityName == activityName; + && other.activityName == activityName } return super.equals(other) } @@ -38,11 +39,10 @@ class AppInfo(val packageName: CharSequence, val activityName: CharSequence?, va context: Context ): LauncherActivityInfo? { val launcherApps = context.getSystemService(Service.LAUNCHER_APPS_SERVICE) as LauncherApps - return getUserFromId(user, context)?.let { userHandle -> - launcherApps.getActivityList(packageName.toString(), userHandle).firstOrNull { app -> - app.name == activityName || activityName == null || activityName == "" - } - } + val userHandle = getUserFromId(user, context) + val activityList = launcherApps.getActivityList(packageName.toString(), userHandle) + return activityList.firstOrNull { app -> app.name == activityName } + ?: activityList.firstOrNull() } diff --git a/app/src/main/java/de/jrpie/android/launcher/preferences/LauncherPreferences$Config.java b/app/src/main/java/de/jrpie/android/launcher/preferences/LauncherPreferences$Config.java index 4c25b6e..970e97f 100644 --- a/app/src/main/java/de/jrpie/android/launcher/preferences/LauncherPreferences$Config.java +++ b/app/src/main/java/de/jrpie/android/launcher/preferences/LauncherPreferences$Config.java @@ -51,7 +51,7 @@ import eu.jonahbauer.android.preference.annotations.serializer.PreferenceSeriali @PreferenceGroup(name = "display", prefix = "settings_display_", suffix = "_key", value = { @Preference(name = "screen_timeout_disabled", type = boolean.class, defaultValue = "false"), @Preference(name = "full_screen", type = boolean.class, defaultValue = "true"), - @Preference(name = "rotate_screen", type = boolean.class, defaultValue = "false"), + @Preference(name = "rotate_screen", type = boolean.class, defaultValue = "true"), }), @PreferenceGroup(name = "functionality", prefix = "settings_functionality_", suffix = "_key", value = { @Preference(name = "search_auto_launch", type = boolean.class, defaultValue = "true"), 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 ba5f260..bcd255f 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 @@ -64,7 +64,8 @@ class HomeActivity : UIObject, AppCompatActivity(), private var clockTimer = Timer() override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) + super.onCreate(savedInstanceState) + super.onCreate() // Try to restore old preferences migratePreferencesToNewVersion(this) 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 94bf347..b352d95 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 @@ -37,16 +37,17 @@ fun setWindowFlags(window: Window, homeScreen: Boolean) { } interface UIObject { - fun onStart() { + fun onCreate() { if (this is Activity) { setWindowFlags(window, isHomeScreen()) - requestedOrientation = if (!LauncherPreferences.display().rotateScreen()) { - ActivityInfo.SCREEN_ORIENTATION_PORTRAIT - } else { - ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED - } - } + if (!LauncherPreferences.display().rotateScreen()) { + requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_NOSENSOR + } + + } + } + fun onStart() { setOnClicks() adjustLayout() } 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 5a01237..90b82ea 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 @@ -50,7 +50,8 @@ class ListActivity : AppCompatActivity(), UIObject { override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) + super.onCreate(savedInstanceState) + super.onCreate() // get info about which action this activity is open for intent.extras?.let { bundle -> @@ -109,6 +110,9 @@ class ListActivity : AppCompatActivity(), UIObject { override fun onPause() { super.onPause() + + // ensure that the activity closes then an app is launched + // and when the user navigates to recent apps finish() } 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 2a42ed7..50d3264 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 @@ -1,5 +1,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 @@ -36,6 +37,7 @@ import de.jrpie.android.launcher.uninstallApp * @param intention - why the list is displayed ("view", "pick") * @param forGesture - the action which an app is chosen for (when the intention is "pick") */ +@SuppressLint("NotifyDataSetChanged") class AppsRecyclerAdapter( val activity: Activity, val root: View, 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 f509235..e46a956 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 @@ -44,7 +44,9 @@ class SettingsActivity : AppCompatActivity(), UIObject { private lateinit var binding: SettingsBinding override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) + super.onCreate(savedInstanceState) + super.onCreate() + // Initialise layout binding = SettingsBinding.inflate(layoutInflater) 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 490f42d..28e2e02 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 @@ -30,7 +30,8 @@ import de.jrpie.android.launcher.ui.tutorial.tabs.TutorialFragmentUsage class TutorialActivity : AppCompatActivity(), UIObject { override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) + super.onCreate(savedInstanceState) + super.onCreate() // Initialise layout setContentView(R.layout.tutorial) diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 88a7580..45effcd 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -138,6 +138,7 @@ Einstellungen Mehr Optionen Benachrichtigungen - Fehler: Die Funktion \"Benachrichtigungen\" wird von deinem Gerät leider nicht unterstützt. + Fehler: Diese Funktion wird von deinem Gerät leider nicht unterstützt. Sekunden anzeigen - \ No newline at end of file + Schnelleinstellungen + diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 9b7fe48..c1df5bd 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -7,7 +7,7 @@ --> Impossible d\'ouvrir l\'application Souhaitez-vous modifier ses paramètres ? - Ouvrez les paramètres pour choisir une application pour cette action + Ouvrez les paramètres pour associer une action à ce geste - Applications + Toutes les Applications Choisir App Applications Autre @@ -93,7 +93,7 @@ Impossible de désinstaller l\'application Chercher des applications Réglages du launcher - Applications + Toutes les Applications Augmenter le volume Diminuer le volume Musique : passer au titre suivant @@ -140,4 +140,24 @@ Échanger la date et l\'heure Afficher la date Utiliser le format de date local + Applis + Fond d\'écran (liste d\'applications et réglages) + Police + Icônes d\'applications monochromes + Afficher les secondes + Rotation de l\'écran + Afficher le panneau de notifications + Applications cachées + Applications favorites + Applications masquées + Ajouter aux favoris + Retirer des favoris + Cacher + Montrer + Applications Favorites + Appli cachée. Vous pouvez l\'afficher à nouveau depuis les réglages. + Défaire + Erreur : impossible d\'afficher la barre de statut. +\nCette action utilise des fonctionalités qui ne sont pas officiellement dans l\'API Android. Malheuresement ça ne semble pas fonctionner sur votre appareil. + Réglages rapides \ No newline at end of file diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 2f6081e..e3ab69a 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -1,96 +1,79 @@ + - Não é possível abrir o aplicativo + Não foi possível abrir o app Quer alterar as suas configurações? - - Abrir as configurações para escolher uma aplicação para esta ação - + Abra as configurações para escolher uma ação para esse gesto Configurações - Apps Launcher Meta - Deslizar para cima - Duplo para cima + 2 dedos para cima Deslizar para baixo - Duplo para baixo + 2 dedos para baixo Deslizar para esquerda - Duplo para esquerda + 2 dedos para esquerda Deslizar para direita - Duplo para direita + 2 dedos para direita Deslizar para direita (Cima) - Deslizar para direita(Baixo) + Deslizar para direita (Baixo) Deslizar para esquerda (Baixo) Deslizar para esquerda (Cima) Deslizar para cima (Borda esquerda) Deslizar para cima (Borda direita) Deslizar para baixo (Borda esquerda) Deslizar para baixo (Borda direita) - Aumentar o volume - Diminuir o volume - Duplo clique - Clique longo - Clique em Data - Clique em Tempo - - Selecionar o aplicativo - - Ver todos os aplicativos - + Aumento de volume + Diminuição de volume + Toque duplo + Toque longo + Toque em Data + Toque em Tempo + Selecione um app + Ver todos os apps Instalar aplicativos Loja não encontrada - Aparência - - Tema Padrão Escuro - Mostrar Horário Mostrar Data Use formato de data localizado Inverter data e hora - Escolha um papel de parede Alterar papel de parede - Exibição - Manter a tela ligada Usar tela cheia - Funções - - Ações de deslizar duas vezes + Deslize com 2 dedos Ações de deslizar nas bordas Iniciar resultados da pesquisa - Iniciar teclado para pesquisa - + Mostrar teclado para pesquisa Sensibilidade - Definir o μLauncher como tela inicial Informações do aplicativo - Seu dispositivo não suporta esse recurso. Gerenciar detalhes do aplicativo em vez disso? - + 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? - Reportar um bug - Entre em contato com o desenvolvedor do fork - Política de Privacidade - Entre em contato com o desenvolvedor original - - Junte-se a nós no discord! - - Todos os aplicativos - Escolha o aplicativo - + Todos os apps + Escolha um app Aplicativos - Outro - + Outros Desinstalar Informações do aplicativo - - O aplicativo selecionado foi removido - Não é possível remover o aplicativo - + O app selecionado foi removido + Não foi possível remover o app Pesquisar Aplicativos - Configurações do Launcher - Todos os aplicativos - Music: Mais alto - Music: Mais silencioso - Music: Próximo - Music: Anterior + Todos os apps + Música: Mais alto + Música: Mais silencioso + Música: Próximo + Música: Anterior Não faça nada - Tutorial Tire alguns segundos para aprender a usar este Launcher! - Conceito O Launcher foi projetado para ser minimalista, eficiente e livre de distrações.\n\nEle é livre de pagamentos, anúncios e serviços de rastreamento. O aplicativo é de código aberto (licença MIT) e está disponível no GitHub!\n\nNão deixe de conferir o repositório! - Uso Sua tela inicial contém a data e a hora locais. Sem distração. - Você pode iniciar seus aplicativos com um único toque ou pressionamento de botão. Escolha alguns no próximo slide. - + Você pode iniciar seus aplicativos com um toque único ou pressionando um botão. Escolha algumas ações no próximo slide. Configurar Selecionamos alguns aplicativos padrões para você. Se quiser, você pode alterá-los agora. - Você também pode alterar sua seleção mais tarde. - - Vamos! + Você também pode alterar suas escolhas mais tarde. + Vamos lá! Você está pronto para começar!\n\nEspero que isso seja de grande valor para você!\n\n- Finn (que criou o Launcher)\n\te Josia (que fez algumas melhorias e mantém o fork μLauncher) Começar - - - Configurações Mais opções + Remover dos favoritos + Erro: Não foi possível expandir a barra de status. +\nEssa ação usa uma funcionalidade que não faz parte da API do Android publicada. Infelizmente, ela não vai funcionar no seu dispositivo. + Fundo (lista de apps e configurações) + Fonte + Ícones de apps monocromáticos + Data e hora + Mostrar segundos + Girar a tela + Apps + Apps ocultos + Apps favoritos + Apps ocultos + Adicione aos favoritos + Ocultar + Mostrar + Apps favoritos + Expandir painel de notificações + App está oculto. Você pode torná-lo visível nas configurações. + Desfazer \ No newline at end of file diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 9bce5b9..26531bc 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -12,7 +12,7 @@ 下滑 无法打开应用 要更改其设置吗? - 打开设置,为该操作绑定一个应用程序 + 打开设置,为该手势绑定一个应用程序 应用程序 启动器 杂项 @@ -29,7 +29,7 @@ 上滑(左边缘) 上滑(右边缘) 下滑(左边缘) - 下滑两次(右边缘) + 下滑(右边缘) 音量加 音量减 双击 @@ -103,4 +103,13 @@ 显示时间 显示日期 翻转日期和时间 + 背景(应用列表和设置) + 字体 + 黑白应用图标 + 显示秒 + 旋转屏幕 + 应用 + 展开通知面板 + 错误:无法打开通知栏。 +\n这个动作使用的功能并非现有的 Android API的一部分。不幸的是,它似乎不适用于您的设备。 \ 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 348a4b6..c17d4e3 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -204,7 +204,8 @@ Settings More options - Error: Can\'t expand status bar.\nThis action is using functionality that is not part of the published Android API. Unfortunately, it does not seem to work on your device. + Error: Can\'t expand status bar.\nThis action is using functionality that is not part of the published Android API. Unfortunately, it does not seem to work on your device. App hidden. You can make it visible again in settings. Undo + Quick Settings diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index d75781a..740cb5a 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -118,7 +118,7 @@ android:title="@string/settings_display_full_screen"/>