diff --git a/app/src/main/java/eu/ottop/yamlauncher/AppActionMenu.kt b/app/src/main/java/eu/ottop/yamlauncher/AppActionMenu.kt index d2731f2..4ece7d7 100644 --- a/app/src/main/java/eu/ottop/yamlauncher/AppActionMenu.kt +++ b/app/src/main/java/eu/ottop/yamlauncher/AppActionMenu.kt @@ -108,6 +108,7 @@ class AppActionMenu(private val activity: MainActivity, private val binding: Act } private fun renameApp(textView: TextView, editLayout: LinearLayout, actionMenu: View, appActivity: LauncherActivityInfo?, appInfo: ApplicationInfo, userHandle: UserHandle, workProfile: Int) { + activity.disableAppMenuScroll() textView.visibility = View.INVISIBLE animations.fadeViewIn(editLayout) animations.fadeViewOut(actionMenu) @@ -134,8 +135,9 @@ class AppActionMenu(private val activity: MainActivity, private val binding: Act editLayout.clearFocus() animations.fadeViewOut(editLayout) - textView.visibility = View.VISIBLE + animations.fadeViewIn(textView) searchView.visibility = View.VISIBLE + activity.enableAppMenuScroll() } } @@ -154,7 +156,7 @@ class AppActionMenu(private val activity: MainActivity, private val binding: Act activity.lifecycleScope.launch { activity.applySearch() } - + activity.enableAppMenuScroll() return@setOnEditorActionListener true } diff --git a/app/src/main/java/eu/ottop/yamlauncher/AppMenuAdapter.kt b/app/src/main/java/eu/ottop/yamlauncher/AppMenuAdapter.kt index c508807..36028a0 100644 --- a/app/src/main/java/eu/ottop/yamlauncher/AppMenuAdapter.kt +++ b/app/src/main/java/eu/ottop/yamlauncher/AppMenuAdapter.kt @@ -70,9 +70,6 @@ class AppMenuAdapter( val editText: TextInputEditText = editView.findViewById(R.id.appNameEdit) init { - actionMenuLayout.visibility = View.INVISIBLE - editView.visibility = View.INVISIBLE - textView.setOnClickListener { val position = bindingAdapterPosition val app = apps[position].first @@ -119,6 +116,8 @@ class AppMenuAdapter( } override fun onBindViewHolder(holder: AppViewHolder, position: Int) { + holder.actionMenuLayout.visibility = View.INVISIBLE + holder.editView.visibility = View.INVISIBLE val app = apps[position] // Set initial drawables @@ -166,6 +165,8 @@ class AppMenuAdapter( } else {holder.textView.text = appLabel} + uiUtils.setAppSpacing(holder.textView) + holder.textView.visibility = View.VISIBLE if (appInfo != null) { diff --git a/app/src/main/java/eu/ottop/yamlauncher/MainActivity.kt b/app/src/main/java/eu/ottop/yamlauncher/MainActivity.kt index 8da7e11..4862f5a 100644 --- a/app/src/main/java/eu/ottop/yamlauncher/MainActivity.kt +++ b/app/src/main/java/eu/ottop/yamlauncher/MainActivity.kt @@ -660,6 +660,16 @@ class MainActivity : AppCompatActivity(), SharedPreferences.OnSharedPreferenceCh } } + fun disableAppMenuScroll() { + appMenuLinearLayoutManager.setScrollEnabled(false) + recyclerView.layoutManager = appMenuLinearLayoutManager + } + + fun enableAppMenuScroll() { + appMenuLinearLayoutManager.setScrollEnabled(true) + recyclerView.layoutManager = appMenuLinearLayoutManager + } + // On home key or swipe, return to home screen override fun onNewIntent(intent: Intent) { super.onNewIntent(intent) diff --git a/app/src/main/java/eu/ottop/yamlauncher/settings/SharedPreferenceManager.kt b/app/src/main/java/eu/ottop/yamlauncher/settings/SharedPreferenceManager.kt index f20b8c4..75844de 100644 --- a/app/src/main/java/eu/ottop/yamlauncher/settings/SharedPreferenceManager.kt +++ b/app/src/main/java/eu/ottop/yamlauncher/settings/SharedPreferenceManager.kt @@ -164,6 +164,10 @@ class SharedPreferenceManager (private val context: Context) { return preferences.getString("searchSize", "medium") } + fun getAppSpacing(): Int? { + return preferences.getString("appSpacing", "20")?.toInt() + } + fun isAutoKeyboardEnabled(): Boolean { return preferences.getBoolean("autoKeyboard", false) } diff --git a/app/src/main/java/eu/ottop/yamlauncher/utils/Animations.kt b/app/src/main/java/eu/ottop/yamlauncher/utils/Animations.kt index bb07608..77a3b7c 100644 --- a/app/src/main/java/eu/ottop/yamlauncher/utils/Animations.kt +++ b/app/src/main/java/eu/ottop/yamlauncher/utils/Animations.kt @@ -137,7 +137,7 @@ class Animations (context: Context) { .setDuration(duration/2) .setListener(object : AnimatorListenerAdapter() { override fun onAnimationEnd(animation: Animator) { - visibility = View.GONE + visibility = View.INVISIBLE } }) diff --git a/app/src/main/java/eu/ottop/yamlauncher/utils/AppMenuLinearLayoutManager.kt b/app/src/main/java/eu/ottop/yamlauncher/utils/AppMenuLinearLayoutManager.kt index 293d1a3..c474a26 100644 --- a/app/src/main/java/eu/ottop/yamlauncher/utils/AppMenuLinearLayoutManager.kt +++ b/app/src/main/java/eu/ottop/yamlauncher/utils/AppMenuLinearLayoutManager.kt @@ -8,6 +8,16 @@ class AppMenuLinearLayoutManager(private val activity: MainActivity) : LinearLay private var firstVisibleItemPosition = 0 private var scrollStarted = false + private var isScrollEnabled: Boolean = true + + fun setScrollEnabled(enabled: Boolean) { + isScrollEnabled = enabled + } + + override fun canScrollVertically(): Boolean { + // Control vertical scrolling based on the flag + return isScrollEnabled && super.canScrollVertically() + } fun setScrollInfo() { firstVisibleItemPosition = findFirstCompletelyVisibleItemPosition() diff --git a/app/src/main/java/eu/ottop/yamlauncher/utils/UIUtils.kt b/app/src/main/java/eu/ottop/yamlauncher/utils/UIUtils.kt index 0ce59c0..e26d450 100644 --- a/app/src/main/java/eu/ottop/yamlauncher/utils/UIUtils.kt +++ b/app/src/main/java/eu/ottop/yamlauncher/utils/UIUtils.kt @@ -19,7 +19,7 @@ import androidx.core.view.children import com.google.android.material.textfield.TextInputEditText import eu.ottop.yamlauncher.settings.SharedPreferenceManager -class UIUtils(context: Context) { +class UIUtils(private val context: Context) { private val sharedPreferenceManager = SharedPreferenceManager(context) @@ -335,4 +335,17 @@ class UIUtils(context: Context) { shortcut.layoutParams = layoutParams } + + fun setAppSpacing(app: TextView) { + val spacing = sharedPreferenceManager.getAppSpacing() + if (spacing != null) { + val spacingPx = dpToPx(spacing) + app.setPadding(app.paddingLeft, spacingPx, app.paddingRight, spacingPx) + } + } + + private fun dpToPx(dp: Int): Int { + val density = context.resources.displayMetrics.density + return (dp * density).toInt() + } } \ No newline at end of file diff --git a/app/src/main/res/layout/app_item_layout.xml b/app/src/main/res/layout/app_item_layout.xml index 83d90c9..3bba771 100644 --- a/app/src/main/res/layout/app_item_layout.xml +++ b/app/src/main/res/layout/app_item_layout.xml @@ -10,24 +10,28 @@ @@ -79,6 +85,7 @@ android:layout_weight="1" android:background="#A7000000" android:foreground="@drawable/app_action_foreground" + android:paddingVertical="3dp" android:text="@string/info" android:textAlignment="center" android:textAppearance="@android:style/TextAppearance.DeviceDefault" @@ -92,6 +99,7 @@ android:layout_weight="1" android:background="#A7000000" android:foreground="@drawable/app_action_foreground" + android:paddingVertical="3dp" android:text="@string/uninstall" android:textAlignment="center" android:textAppearance="@android:style/TextAppearance.DeviceDefault" @@ -105,6 +113,7 @@ android:layout_weight="1" android:background="#A7000000" android:foreground="@drawable/app_action_foreground" + android:paddingVertical="3dp" android:text="@string/rename" android:textAlignment="center" android:textAppearance="@android:style/TextAppearance.DeviceDefault" @@ -118,6 +127,7 @@ android:layout_weight="1" android:background="#A7000000" android:foreground="@drawable/app_action_foreground" + android:paddingVertical="3dp" android:text="@string/hide" android:textAlignment="center" android:textAppearance="@android:style/TextAppearance.DeviceDefault" @@ -131,6 +141,7 @@ android:layout_weight="1" android:background="#A7000000" android:foreground="@drawable/app_action_foreground" + android:paddingVertical="3dp" android:text="@string/close" android:textAlignment="center" android:textAppearance="@android:style/TextAppearance.DeviceDefault" diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index a1cba8d..c270812 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -123,6 +123,24 @@ 0.21 + + Tiny + Small + Medium + Large + Extra Large + Huge + + + + 0 + 15 + 20 + 25 + 30 + 35 + + °C diff --git a/app/src/main/res/xml/root_preferences.xml b/app/src/main/res/xml/root_preferences.xml index f973fc7..bbc6d04 100644 --- a/app/src/main/res/xml/root_preferences.xml +++ b/app/src/main/res/xml/root_preferences.xml @@ -241,6 +241,15 @@ app:key="searchSize" app:title="Search Size" app:useSimpleSummaryProvider="true" /> +