From f5c6fd4ce6fafc9845e70813555020c1399061c2 Mon Sep 17 00:00:00 2001 From: ottoptj Date: Fri, 5 Jul 2024 07:09:41 +0300 Subject: [PATCH] Shortcut size customization --- app/build.gradle.kts | 2 +- .../java/eu/ottop/yamlauncher/MainActivity.kt | 50 +++++++++++++++++-- .../eu/ottop/yamlauncher/SettingsActivity.kt | 12 +++++ .../yamlauncher/SharedPreferenceManager.kt | 13 +++++ app/src/main/res/layout/activity_settings.xml | 47 +++++++++++++++-- app/src/main/res/values/strings.xml | 7 ++- 6 files changed, 123 insertions(+), 8 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index f78aab4..c99c4de 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -46,6 +46,6 @@ dependencies { implementation("androidx.constraintlayout:constraintlayout:2.1.4") implementation("androidx.navigation:navigation-fragment-ktx:2.7.7") implementation("androidx.navigation:navigation-ui-ktx:2.7.7") - implementation("com.google.code.gson:gson:2.10") + implementation("com.google.code.gson:gson:2.11.0") implementation("androidx.recyclerview:recyclerview:1.3.2") } \ No newline at end of file diff --git a/app/src/main/java/eu/ottop/yamlauncher/MainActivity.kt b/app/src/main/java/eu/ottop/yamlauncher/MainActivity.kt index d587df2..66732f0 100644 --- a/app/src/main/java/eu/ottop/yamlauncher/MainActivity.kt +++ b/app/src/main/java/eu/ottop/yamlauncher/MainActivity.kt @@ -17,6 +17,7 @@ import android.view.GestureDetector import android.view.Gravity import android.view.MotionEvent import android.view.View +import android.view.ViewTreeObserver import android.view.inputmethod.InputMethodManager import android.widget.EditText import android.widget.LinearLayout @@ -115,7 +116,6 @@ class MainActivity : AppCompatActivity(), AppMenuAdapter.OnItemClickListener, Ap override fun onNewIntent(intent: Intent?) { backToHome() super.onNewIntent(intent) - } override fun onStop() { @@ -131,6 +131,7 @@ class MainActivity : AppCompatActivity(), AppMenuAdapter.OnItemClickListener, Ap @SuppressLint("NotifyDataSetChanged") override fun onStart() { + setShortcutSize(binding.homeView) super.onStart() startTask() @@ -144,6 +145,7 @@ class MainActivity : AppCompatActivity(), AppMenuAdapter.OnItemClickListener, Ap } + open inner class GestureListener : GestureDetector.SimpleOnGestureListener() { @RequiresApi(Build.VERSION_CODES.TIRAMISU) @@ -209,8 +211,6 @@ class MainActivity : AppCompatActivity(), AppMenuAdapter.OnItemClickListener, Ap setupSearch() } - - } private fun handleListItems() { @@ -225,7 +225,9 @@ class MainActivity : AppCompatActivity(), AppMenuAdapter.OnItemClickListener, Ap if (savedView?.get(1) != "e") { selectedSetup(textView, savedView) } + } + } @SuppressLint("ClickableViewAccessibility") @@ -581,6 +583,48 @@ class MainActivity : AppCompatActivity(), AppMenuAdapter.OnItemClickListener, Ap setLinearAlignment(binding.homeView) } + private fun setShortcutSize(shortcuts: LinearLayout) { + val viewTreeObserver = shortcuts.viewTreeObserver + if (viewTreeObserver.isAlive) { + viewTreeObserver.addOnGlobalLayoutListener { + shortcuts.children.forEach { + if (it is TextView) { + + /* + 0 = small + 1 = medium + 2 = large + */ + when (sharedPreferenceManager.getAppSize(this@MainActivity)) { + 0 -> { + it.setPadding( + it.paddingLeft, + it.height / 4, + it.paddingRight, + it.height / 4 + ) + } + + 1 -> { + it.setPadding( + it.paddingLeft, + it.height / 5, + it.paddingRight, + it.height / 5 + ) + } + + 2 -> { + it.setPadding(it.paddingLeft, 0, it.paddingRight, 0) + } + } + + } + } + } + } + } + private fun setLinearAlignment(shortcuts: LinearLayout) { shortcuts.children.forEach { diff --git a/app/src/main/java/eu/ottop/yamlauncher/SettingsActivity.kt b/app/src/main/java/eu/ottop/yamlauncher/SettingsActivity.kt index 1d90b7c..8e8c997 100644 --- a/app/src/main/java/eu/ottop/yamlauncher/SettingsActivity.kt +++ b/app/src/main/java/eu/ottop/yamlauncher/SettingsActivity.kt @@ -50,5 +50,17 @@ class SettingsActivity : AppCompatActivity() { override fun onNothingSelected(parent: AdapterView<*>) { } } + + binding.appSize.setSelection(sharedPreferenceManager.getAppSize(this@SettingsActivity)) + + binding.appSize.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { + override fun onItemSelected(parent: AdapterView<*>, view: View?, position: Int, id: Long) { + // Get the selected item + sharedPreferenceManager.setAppSize(this@SettingsActivity, position) + } + + override fun onNothingSelected(parent: AdapterView<*>) { + } + } } } \ No newline at end of file diff --git a/app/src/main/java/eu/ottop/yamlauncher/SharedPreferenceManager.kt b/app/src/main/java/eu/ottop/yamlauncher/SharedPreferenceManager.kt index ae329d6..a8ca78f 100644 --- a/app/src/main/java/eu/ottop/yamlauncher/SharedPreferenceManager.kt +++ b/app/src/main/java/eu/ottop/yamlauncher/SharedPreferenceManager.kt @@ -111,4 +111,17 @@ class SharedPreferenceManager { val key = "app_menu_alignment" return sharedPreferences.getInt(key, 0) } + + fun setAppSize(cont: Context, alignment: Int) { + val editor = cont.getSharedPreferences("preferences", AppCompatActivity.MODE_PRIVATE).edit() + val key = "app_size" + editor.putInt(key, alignment) + editor.apply() + } + + fun getAppSize(cont: Context) : Int { + val sharedPreferences = cont.getSharedPreferences("preferences", AppCompatActivity.MODE_PRIVATE) + val key = "app_size" + return sharedPreferences.getInt(key, 2) + } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index 8294764..4eea3c3 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -33,7 +33,7 @@ android:id="@+id/clock_alignment" android:layout_width="0dp" android:layout_height="0dp" - android:entries="@array/clock_alignment_options" + android:entries="@array/h_alignment_options" android:spinnerMode="dropdown" app:layout_constraintBottom_toBottomOf="@+id/clock_alignment_label" app:layout_constraintEnd_toEndOf="parent" @@ -74,7 +74,7 @@ android:id="@+id/home_app_alignment" android:layout_width="0dp" android:layout_height="0dp" - android:entries="@array/clock_alignment_options" + android:entries="@array/h_alignment_options" android:spinnerMode="dropdown" app:layout_constraintBottom_toBottomOf="@+id/home_app_alignment_label" app:layout_constraintEnd_toEndOf="parent" @@ -114,7 +114,7 @@ android:id="@+id/app_alignment" android:layout_width="0dp" android:layout_height="0dp" - android:entries="@array/clock_alignment_options" + android:entries="@array/h_alignment_options" android:spinnerMode="dropdown" app:layout_constraintBottom_toBottomOf="@+id/app_alignment_label" app:layout_constraintEnd_toEndOf="parent" @@ -130,4 +130,45 @@ android:background="?android:attr/listDivider" app:layout_constraintTop_toBottomOf="@+id/app_alignment_label" /> + + + + + + \ 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 17216cd..fc71a32 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -49,10 +49,15 @@ Search… App App - + Left Center Right + + Small + Medium + Large + \ No newline at end of file