Enable customization of column count for application drawer
This commit is contained in:
parent
552b7e561a
commit
7bbdf581de
|
@ -11,7 +11,7 @@ import com.simplemobiletools.commons.interfaces.RefreshRecyclerViewListener
|
||||||
import com.simplemobiletools.commons.views.MyGridLayoutManager
|
import com.simplemobiletools.commons.views.MyGridLayoutManager
|
||||||
import com.simplemobiletools.launcher.R
|
import com.simplemobiletools.launcher.R
|
||||||
import com.simplemobiletools.launcher.adapters.HiddenIconsAdapter
|
import com.simplemobiletools.launcher.adapters.HiddenIconsAdapter
|
||||||
import com.simplemobiletools.launcher.extensions.getColumnCount
|
import com.simplemobiletools.launcher.extensions.getDrawerColumnCount
|
||||||
import com.simplemobiletools.launcher.extensions.getDrawableForPackageName
|
import com.simplemobiletools.launcher.extensions.getDrawableForPackageName
|
||||||
import com.simplemobiletools.launcher.extensions.hiddenIconsDB
|
import com.simplemobiletools.launcher.extensions.hiddenIconsDB
|
||||||
import com.simplemobiletools.launcher.models.HiddenIcon
|
import com.simplemobiletools.launcher.models.HiddenIcon
|
||||||
|
@ -28,7 +28,7 @@ class HiddenIconsActivity : SimpleActivity(), RefreshRecyclerViewListener {
|
||||||
setupMaterialScrollListener(manage_hidden_icons_list, manage_hidden_icons_toolbar)
|
setupMaterialScrollListener(manage_hidden_icons_list, manage_hidden_icons_toolbar)
|
||||||
|
|
||||||
val layoutManager = manage_hidden_icons_list.layoutManager as MyGridLayoutManager
|
val layoutManager = manage_hidden_icons_list.layoutManager as MyGridLayoutManager
|
||||||
layoutManager.spanCount = getColumnCount()
|
layoutManager.spanCount = getDrawerColumnCount()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
|
|
|
@ -208,6 +208,8 @@ class MainActivity : SimpleActivity(), FlingListener {
|
||||||
if (window.navigationBarColor != resources.getColor(R.color.semitransparent_navigation)) {
|
if (window.navigationBarColor != resources.getColor(R.color.semitransparent_navigation)) {
|
||||||
window.navigationBarColor = Color.TRANSPARENT
|
window.navigationBarColor = Color.TRANSPARENT
|
||||||
}
|
}
|
||||||
|
|
||||||
|
(all_apps_fragment as? AllAppsFragment)?.onResume()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onStop() {
|
override fun onStop() {
|
||||||
|
|
|
@ -2,15 +2,19 @@ package com.simplemobiletools.launcher.activities
|
||||||
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import com.simplemobiletools.commons.dialogs.RadioGroupDialog
|
||||||
import com.simplemobiletools.commons.extensions.*
|
import com.simplemobiletools.commons.extensions.*
|
||||||
import com.simplemobiletools.commons.helpers.NavigationIcon
|
import com.simplemobiletools.commons.helpers.NavigationIcon
|
||||||
import com.simplemobiletools.commons.helpers.isTiramisuPlus
|
import com.simplemobiletools.commons.helpers.isTiramisuPlus
|
||||||
import com.simplemobiletools.commons.models.FAQItem
|
import com.simplemobiletools.commons.models.FAQItem
|
||||||
|
import com.simplemobiletools.commons.models.RadioItem
|
||||||
import com.simplemobiletools.launcher.BuildConfig
|
import com.simplemobiletools.launcher.BuildConfig
|
||||||
import com.simplemobiletools.launcher.R
|
import com.simplemobiletools.launcher.R
|
||||||
import com.simplemobiletools.launcher.extensions.config
|
import com.simplemobiletools.launcher.extensions.config
|
||||||
|
import com.simplemobiletools.launcher.extensions.getDrawerColumnCount
|
||||||
|
import com.simplemobiletools.launcher.helpers.MAX_COLUMN_COUNT
|
||||||
import kotlinx.android.synthetic.main.activity_settings.*
|
import kotlinx.android.synthetic.main.activity_settings.*
|
||||||
import java.util.*
|
import java.util.Locale
|
||||||
import kotlin.system.exitProcess
|
import kotlin.system.exitProcess
|
||||||
|
|
||||||
class SettingsActivity : SimpleActivity() {
|
class SettingsActivity : SimpleActivity() {
|
||||||
|
@ -32,6 +36,7 @@ class SettingsActivity : SimpleActivity() {
|
||||||
setupPurchaseThankYou()
|
setupPurchaseThankYou()
|
||||||
setupCustomizeColors()
|
setupCustomizeColors()
|
||||||
setupUseEnglish()
|
setupUseEnglish()
|
||||||
|
setupDrawerColumnCount()
|
||||||
setupLanguage()
|
setupLanguage()
|
||||||
setupManageHiddenIcons()
|
setupManageHiddenIcons()
|
||||||
updateTextColors(settings_holder)
|
updateTextColors(settings_holder)
|
||||||
|
@ -82,6 +87,29 @@ class SettingsActivity : SimpleActivity() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun setupDrawerColumnCount() {
|
||||||
|
val currentColumnCount = getDrawerColumnCount()
|
||||||
|
settings_drawer_column_count.text = currentColumnCount.toString()
|
||||||
|
settings_drawer_column_count_holder.setOnClickListener {
|
||||||
|
val items = ArrayList<RadioItem>()
|
||||||
|
for (i in 1..MAX_COLUMN_COUNT) {
|
||||||
|
items.add(RadioItem(i, resources.getQuantityString(R.plurals.column_counts, i, i)))
|
||||||
|
}
|
||||||
|
|
||||||
|
RadioGroupDialog(this, items, currentColumnCount) {
|
||||||
|
val newColumnCount = it as Int
|
||||||
|
if (currentColumnCount != newColumnCount) {
|
||||||
|
if (portrait) {
|
||||||
|
config.portraitDrawerColumnCount = newColumnCount
|
||||||
|
} else {
|
||||||
|
config.landscapeDrawerColumnCount = newColumnCount
|
||||||
|
}
|
||||||
|
setupDrawerColumnCount()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun setupLanguage() {
|
private fun setupLanguage() {
|
||||||
settings_language.text = Locale.getDefault().displayLanguage
|
settings_language.text = Locale.getDefault().displayLanguage
|
||||||
settings_language_holder.beVisibleIf(isTiramisuPlus())
|
settings_language_holder.beVisibleIf(isTiramisuPlus())
|
||||||
|
|
|
@ -11,10 +11,10 @@ import com.bumptech.glide.request.transition.DrawableCrossFadeFactory
|
||||||
import com.qtalk.recyclerviewfastscroller.RecyclerViewFastScroller
|
import com.qtalk.recyclerviewfastscroller.RecyclerViewFastScroller
|
||||||
import com.simplemobiletools.commons.extensions.getColoredDrawableWithColor
|
import com.simplemobiletools.commons.extensions.getColoredDrawableWithColor
|
||||||
import com.simplemobiletools.commons.extensions.getProperTextColor
|
import com.simplemobiletools.commons.extensions.getProperTextColor
|
||||||
import com.simplemobiletools.commons.extensions.portrait
|
|
||||||
import com.simplemobiletools.commons.extensions.realScreenSize
|
import com.simplemobiletools.commons.extensions.realScreenSize
|
||||||
import com.simplemobiletools.launcher.R
|
import com.simplemobiletools.launcher.R
|
||||||
import com.simplemobiletools.launcher.activities.SimpleActivity
|
import com.simplemobiletools.launcher.activities.SimpleActivity
|
||||||
|
import com.simplemobiletools.launcher.extensions.getDrawerColumnCount
|
||||||
import com.simplemobiletools.launcher.interfaces.AllAppsListener
|
import com.simplemobiletools.launcher.interfaces.AllAppsListener
|
||||||
import com.simplemobiletools.launcher.models.AppLauncher
|
import com.simplemobiletools.launcher.models.AppLauncher
|
||||||
import com.simplemobiletools.launcher.models.HomeScreenGridItem
|
import com.simplemobiletools.launcher.models.HomeScreenGridItem
|
||||||
|
@ -47,13 +47,7 @@ class LaunchersAdapter(
|
||||||
override fun getItemCount() = launchers.size
|
override fun getItemCount() = launchers.size
|
||||||
|
|
||||||
private fun calculateIconWidth() {
|
private fun calculateIconWidth() {
|
||||||
val currentColumnCount = activity.resources.getInteger(
|
val currentColumnCount = activity.getDrawerColumnCount()
|
||||||
if (activity.portrait) {
|
|
||||||
R.integer.portrait_column_count
|
|
||||||
} else {
|
|
||||||
R.integer.landscape_column_count
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
val iconWidth = activity.realScreenSize.x / currentColumnCount
|
val iconWidth = activity.realScreenSize.x / currentColumnCount
|
||||||
iconPadding = (iconWidth * 0.1f).toInt()
|
iconPadding = (iconWidth * 0.1f).toInt()
|
||||||
|
|
|
@ -23,11 +23,11 @@ val Context.homeScreenGridItemsDB: HomeScreenGridItemsDao get() = AppsDatabase.g
|
||||||
|
|
||||||
val Context.hiddenIconsDB: HiddenIconsDao get() = AppsDatabase.getInstance(applicationContext).HiddenIconsDao()
|
val Context.hiddenIconsDB: HiddenIconsDao get() = AppsDatabase.getInstance(applicationContext).HiddenIconsDao()
|
||||||
|
|
||||||
fun Context.getColumnCount(): Int {
|
fun Context.getDrawerColumnCount(): Int {
|
||||||
return if (portrait) {
|
return if (portrait) {
|
||||||
resources.getInteger(R.integer.portrait_column_count)
|
config.portraitDrawerColumnCount
|
||||||
} else {
|
} else {
|
||||||
resources.getInteger(R.integer.landscape_column_count)
|
config.landscapeDrawerColumnCount
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ import com.simplemobiletools.commons.views.MyGridLayoutManager
|
||||||
import com.simplemobiletools.launcher.R
|
import com.simplemobiletools.launcher.R
|
||||||
import com.simplemobiletools.launcher.activities.MainActivity
|
import com.simplemobiletools.launcher.activities.MainActivity
|
||||||
import com.simplemobiletools.launcher.adapters.LaunchersAdapter
|
import com.simplemobiletools.launcher.adapters.LaunchersAdapter
|
||||||
import com.simplemobiletools.launcher.extensions.getColumnCount
|
import com.simplemobiletools.launcher.extensions.getDrawerColumnCount
|
||||||
import com.simplemobiletools.launcher.extensions.launchApp
|
import com.simplemobiletools.launcher.extensions.launchApp
|
||||||
import com.simplemobiletools.launcher.helpers.ITEM_TYPE_ICON
|
import com.simplemobiletools.launcher.helpers.ITEM_TYPE_ICON
|
||||||
import com.simplemobiletools.launcher.interfaces.AllAppsListener
|
import com.simplemobiletools.launcher.interfaces.AllAppsListener
|
||||||
|
@ -40,6 +40,20 @@ class AllAppsFragment(context: Context, attributeSet: AttributeSet) : MyFragment
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressLint("NotifyDataSetChanged")
|
||||||
|
fun onResume() {
|
||||||
|
if (all_apps_grid?.layoutManager == null || all_apps_grid?.adapter == null) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
val layoutManager = all_apps_grid.layoutManager as MyGridLayoutManager
|
||||||
|
if (layoutManager.spanCount != context.getDrawerColumnCount()) {
|
||||||
|
onConfigurationChanged()
|
||||||
|
// Force redraw due to changed item size
|
||||||
|
(all_apps_grid.adapter as LaunchersAdapter).notifyDataSetChanged()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fun onConfigurationChanged() {
|
fun onConfigurationChanged() {
|
||||||
if (all_apps_grid == null) {
|
if (all_apps_grid == null) {
|
||||||
return
|
return
|
||||||
|
@ -50,7 +64,7 @@ class AllAppsFragment(context: Context, attributeSet: AttributeSet) : MyFragment
|
||||||
setupViews()
|
setupViews()
|
||||||
|
|
||||||
val layoutManager = all_apps_grid.layoutManager as MyGridLayoutManager
|
val layoutManager = all_apps_grid.layoutManager as MyGridLayoutManager
|
||||||
layoutManager.spanCount = context.getColumnCount()
|
layoutManager.spanCount = context.getDrawerColumnCount()
|
||||||
val launchers = (all_apps_grid.adapter as LaunchersAdapter).launchers
|
val launchers = (all_apps_grid.adapter as LaunchersAdapter).launchers
|
||||||
setupAdapter(launchers)
|
setupAdapter(launchers)
|
||||||
}
|
}
|
||||||
|
@ -100,7 +114,7 @@ class AllAppsFragment(context: Context, attributeSet: AttributeSet) : MyFragment
|
||||||
private fun setupAdapter(launchers: ArrayList<AppLauncher>) {
|
private fun setupAdapter(launchers: ArrayList<AppLauncher>) {
|
||||||
activity?.runOnUiThread {
|
activity?.runOnUiThread {
|
||||||
val layoutManager = all_apps_grid.layoutManager as MyGridLayoutManager
|
val layoutManager = all_apps_grid.layoutManager as MyGridLayoutManager
|
||||||
layoutManager.spanCount = context.getColumnCount()
|
layoutManager.spanCount = context.getDrawerColumnCount()
|
||||||
|
|
||||||
val currAdapter = all_apps_grid.adapter
|
val currAdapter = all_apps_grid.adapter
|
||||||
if (currAdapter == null) {
|
if (currAdapter == null) {
|
||||||
|
|
|
@ -2,6 +2,7 @@ package com.simplemobiletools.launcher.helpers
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import com.simplemobiletools.commons.helpers.BaseConfig
|
import com.simplemobiletools.commons.helpers.BaseConfig
|
||||||
|
import com.simplemobiletools.launcher.R
|
||||||
|
|
||||||
class Config(context: Context) : BaseConfig(context) {
|
class Config(context: Context) : BaseConfig(context) {
|
||||||
companion object {
|
companion object {
|
||||||
|
@ -11,4 +12,12 @@ class Config(context: Context) : BaseConfig(context) {
|
||||||
var wasHomeScreenInit: Boolean
|
var wasHomeScreenInit: Boolean
|
||||||
get() = prefs.getBoolean(WAS_HOME_SCREEN_INIT, false)
|
get() = prefs.getBoolean(WAS_HOME_SCREEN_INIT, false)
|
||||||
set(wasHomeScreenInit) = prefs.edit().putBoolean(WAS_HOME_SCREEN_INIT, wasHomeScreenInit).apply()
|
set(wasHomeScreenInit) = prefs.edit().putBoolean(WAS_HOME_SCREEN_INIT, wasHomeScreenInit).apply()
|
||||||
|
|
||||||
|
var portraitDrawerColumnCount: Int
|
||||||
|
get() = prefs.getInt(PORTRAIT_DRAWER_COLUMN_COUNT, context.resources.getInteger(R.integer.portrait_column_count))
|
||||||
|
set(portraitDrawerColumnCount) = prefs.edit().putInt(PORTRAIT_DRAWER_COLUMN_COUNT, portraitDrawerColumnCount).apply()
|
||||||
|
|
||||||
|
var landscapeDrawerColumnCount: Int
|
||||||
|
get() = prefs.getInt(LANDSCAPE_DRAWER_COLUMN_COUNT, context.resources.getInteger(R.integer.landscape_column_count))
|
||||||
|
set(landscapeDrawerColumnCount) = prefs.edit().putInt(LANDSCAPE_DRAWER_COLUMN_COUNT, landscapeDrawerColumnCount).apply()
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,10 +5,13 @@ const val WIDGET_LIST_ITEMS_HOLDER = 1
|
||||||
|
|
||||||
// shared prefs
|
// shared prefs
|
||||||
const val WAS_HOME_SCREEN_INIT = "was_home_screen_init"
|
const val WAS_HOME_SCREEN_INIT = "was_home_screen_init"
|
||||||
|
const val PORTRAIT_DRAWER_COLUMN_COUNT = "portrait_drawer_column_count"
|
||||||
|
const val LANDSCAPE_DRAWER_COLUMN_COUNT = "landscape_drawer_column_count"
|
||||||
|
|
||||||
// default home screen grid size
|
// default home screen grid size
|
||||||
const val ROW_COUNT = 6
|
const val ROW_COUNT = 6
|
||||||
const val COLUMN_COUNT = 5
|
const val COLUMN_COUNT = 5
|
||||||
|
const val MAX_COLUMN_COUNT = 15
|
||||||
|
|
||||||
const val UNINSTALL_APP_REQUEST_CODE = 50
|
const val UNINSTALL_APP_REQUEST_CODE = 50
|
||||||
const val REQUEST_CONFIGURE_WIDGET = 51
|
const val REQUEST_CONFIGURE_WIDGET = 51
|
||||||
|
|
|
@ -120,6 +120,30 @@
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
||||||
|
<RelativeLayout
|
||||||
|
android:id="@+id/settings_drawer_column_count_holder"
|
||||||
|
style="@style/SettingsHolderTextViewOneLinerStyle"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="@drawable/ripple_bottom_corners">
|
||||||
|
|
||||||
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
|
android:id="@+id/settings_drawer_column_count_label"
|
||||||
|
style="@style/SettingsTextLabelStyle"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="Drawer column count" />
|
||||||
|
|
||||||
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
|
android:id="@+id/settings_drawer_column_count"
|
||||||
|
style="@style/SettingsTextValueStyle"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_below="@+id/settings_drawer_column_count_label"
|
||||||
|
tools:text="3" />
|
||||||
|
|
||||||
|
</RelativeLayout>
|
||||||
|
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
android:id="@+id/settings_manage_hidden_icons_holder"
|
android:id="@+id/settings_manage_hidden_icons_holder"
|
||||||
style="@style/SettingsHolderTextViewOneLinerStyle"
|
style="@style/SettingsHolderTextViewOneLinerStyle"
|
||||||
|
|
Loading…
Reference in New Issue