migrate to viewbinding

This commit is contained in:
fatih ergin 2023-08-16 01:08:17 +03:00
parent ee64d29218
commit 20605da669
7 changed files with 226 additions and 145 deletions

View File

@ -7,6 +7,7 @@ import com.simplemobiletools.applauncher.BuildConfig
import com.simplemobiletools.applauncher.LauncherAdapterUpdateListener
import com.simplemobiletools.applauncher.R
import com.simplemobiletools.applauncher.adapters.LaunchersAdapter
import com.simplemobiletools.applauncher.databinding.ActivityMainBinding
import com.simplemobiletools.applauncher.dialogs.AddLaunchersDialog
import com.simplemobiletools.applauncher.dialogs.ChangeSortingDialog
import com.simplemobiletools.applauncher.extensions.config
@ -22,11 +23,13 @@ import com.simplemobiletools.commons.models.RadioItem
import com.simplemobiletools.commons.models.Release
import com.simplemobiletools.commons.views.MyGridLayoutManager
import com.simplemobiletools.commons.views.MyRecyclerView
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : SimpleActivity(), LauncherAdapterUpdateListener {
private val MAX_COLUMN_COUNT = 15
companion object {
private const val MAX_COLUMN_COUNT = 15
}
private val binding by lazy(LazyThreadSafetyMode.NONE) { ActivityMainBinding.inflate(layoutInflater) }
private var launchersIgnoringSearch = ArrayList<AppLauncher>()
private var allLaunchers: ArrayList<AppLauncher>? = null
private var zoomListener: MyRecyclerView.MyZoomListener? = null
@ -37,12 +40,12 @@ class MainActivity : SimpleActivity(), LauncherAdapterUpdateListener {
override fun onCreate(savedInstanceState: Bundle?) {
isMaterialActivity = true
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setContentView(binding.root)
appLaunched(BuildConfig.APPLICATION_ID)
setupOptionsMenu()
refreshMenuItems()
updateMaterialActivityViews(main_coordinator, launchers_grid, useTransparentNavigation = true, useTopSearchMenu = true)
updateMaterialActivityViews(binding.mainCoordinator, binding.launchersGrid, useTransparentNavigation = true, useTopSearchMenu = true)
setupEmptyView()
setupLaunchers()
@ -50,7 +53,7 @@ class MainActivity : SimpleActivity(), LauncherAdapterUpdateListener {
storeStateVariables()
setupGridLayoutManager()
fab.setOnClickListener {
binding.fab.setOnClickListener {
fabClicked()
}
}
@ -70,10 +73,13 @@ class MainActivity : SimpleActivity(), LauncherAdapterUpdateListener {
}
}
updateTextColors(coordinator_layout)
no_items_placeholder_2.setTextColor(properPrimaryColor)
launchers_fastscroller.updateColors(properPrimaryColor)
(fab.layoutParams as CoordinatorLayout.LayoutParams).bottomMargin = navigationBarHeight + resources.getDimension(R.dimen.activity_margin).toInt()
binding.apply {
updateTextColors(coordinatorLayout)
noItemsPlaceholder2.setTextColor(properPrimaryColor)
launchersFastscroller.updateColors(properPrimaryColor)
(fab.layoutParams as CoordinatorLayout.LayoutParams).bottomMargin = navigationBarHeight + resources.getDimension(R.dimen.activity_margin).toInt()
}
}
override fun onPause() {
@ -82,39 +88,41 @@ class MainActivity : SimpleActivity(), LauncherAdapterUpdateListener {
}
override fun onBackPressed() {
if (main_menu.isSearchOpen) {
main_menu.closeSearch()
if (binding.mainMenu.isSearchOpen) {
binding.mainMenu.closeSearch()
} else {
super.onBackPressed()
}
}
private fun refreshMenuItems() {
main_menu.getToolbar().menu.apply {
binding.mainMenu.getToolbar().menu.apply {
findItem(R.id.more_apps_from_us).isVisible = !resources.getBoolean(R.bool.hide_google_relations)
}
}
private fun setupOptionsMenu() {
main_menu.getToolbar().inflateMenu(R.menu.menu)
main_menu.toggleHideOnScroll(false)
main_menu.setupMenu()
binding.mainMenu.apply {
getToolbar().inflateMenu(R.menu.menu)
toggleHideOnScroll(false)
setupMenu()
main_menu.onSearchTextChangedListener = { text ->
searchTextChanged(text)
}
main_menu.getToolbar().setOnMenuItemClickListener { menuItem ->
when (menuItem.itemId) {
R.id.sort -> showSortingDialog()
R.id.toggle_app_name -> toggleAppName()
R.id.column_count -> changeColumnCount()
R.id.more_apps_from_us -> launchMoreAppsFromUsIntent()
R.id.settings -> launchSettings()
R.id.about -> launchAbout()
else -> return@setOnMenuItemClickListener false
onSearchTextChangedListener = { text ->
searchTextChanged(text)
}
getToolbar().setOnMenuItemClickListener { menuItem ->
when (menuItem.itemId) {
R.id.sort -> showSortingDialog()
R.id.toggle_app_name -> toggleAppName()
R.id.column_count -> changeColumnCount()
R.id.more_apps_from_us -> launchMoreAppsFromUsIntent()
R.id.settings -> launchSettings()
R.id.about -> launchAbout()
else -> return@setOnMenuItemClickListener false
}
return@setOnMenuItemClickListener true
}
return@setOnMenuItemClickListener true
}
}
@ -125,10 +133,10 @@ class MainActivity : SimpleActivity(), LauncherAdapterUpdateListener {
private fun updateMenuColors() {
updateStatusbarColor(getProperBackgroundColor())
main_menu.updateColors()
binding.mainMenu.updateColors()
}
private fun getGridAdapter() = launchers_grid.adapter as? LaunchersAdapter
private fun getGridAdapter() = binding.launchersGrid.adapter as? LaunchersAdapter
private fun setupLaunchers() {
launchersIgnoringSearch = dbHelper.getLaunchers()
@ -145,7 +153,7 @@ class MainActivity : SimpleActivity(), LauncherAdapterUpdateListener {
activity = this,
launchers = launchers,
listener = this,
recyclerView = launchers_grid,
recyclerView = binding.launchersGrid,
) {
hideKeyboard()
val launchIntent = packageManager.getLaunchIntentForPackage((it as AppLauncher).packageName)
@ -167,7 +175,7 @@ class MainActivity : SimpleActivity(), LauncherAdapterUpdateListener {
}
}.apply {
setupZoomListener(zoomListener)
launchers_grid.adapter = this
binding.launchersGrid.adapter = this
}
maybeShowEmptyView()
@ -193,11 +201,11 @@ class MainActivity : SimpleActivity(), LauncherAdapterUpdateListener {
items.add(RadioItem(i, resources.getQuantityString(R.plurals.column_counts, i, i)))
}
val currentColumnCount = (launchers_grid.layoutManager as MyGridLayoutManager).spanCount
val currentColumnCount = (binding.launchersGrid.layoutManager as MyGridLayoutManager).spanCount
RadioGroupDialog(this, items, currentColumnCount) {
val newColumnCount = it as Int
if (currentColumnCount != newColumnCount) {
(launchers_grid.layoutManager as MyGridLayoutManager).spanCount = newColumnCount
(binding.launchersGrid.layoutManager as MyGridLayoutManager).spanCount = newColumnCount
if (portrait) {
config.portraitColumnCnt = newColumnCount
} else {
@ -209,7 +217,7 @@ class MainActivity : SimpleActivity(), LauncherAdapterUpdateListener {
}
private fun increaseColumnCount() {
val newColumnCount = ++(launchers_grid.layoutManager as MyGridLayoutManager).spanCount
val newColumnCount = ++(binding.launchersGrid.layoutManager as MyGridLayoutManager).spanCount
if (portrait) {
config.portraitColumnCnt = newColumnCount
} else {
@ -219,7 +227,7 @@ class MainActivity : SimpleActivity(), LauncherAdapterUpdateListener {
}
private fun reduceColumnCount() {
val newColumnCount = --(launchers_grid.layoutManager as MyGridLayoutManager).spanCount
val newColumnCount = --(binding.launchersGrid.layoutManager as MyGridLayoutManager).spanCount
if (portrait) {
config.portraitColumnCnt = newColumnCount
} else {
@ -237,7 +245,7 @@ class MainActivity : SimpleActivity(), LauncherAdapterUpdateListener {
}
private fun setupGridLayoutManager() {
val layoutManager = launchers_grid.layoutManager as MyGridLayoutManager
val layoutManager = binding.launchersGrid.layoutManager as MyGridLayoutManager
if (portrait) {
layoutManager.spanCount = config.portraitColumnCnt
} else {
@ -246,7 +254,7 @@ class MainActivity : SimpleActivity(), LauncherAdapterUpdateListener {
}
private fun initZoomListener() {
val layoutManager = launchers_grid.layoutManager as MyGridLayoutManager
val layoutManager = binding.launchersGrid.layoutManager as MyGridLayoutManager
zoomListener = object : MyRecyclerView.MyZoomListener {
override fun zoomIn() {
if (layoutManager.spanCount > 1) {
@ -283,7 +291,7 @@ class MainActivity : SimpleActivity(), LauncherAdapterUpdateListener {
}
override fun refreshItems() {
main_menu.closeSearch()
binding.mainMenu.closeSearch()
setupLaunchers()
}
@ -308,23 +316,27 @@ class MainActivity : SimpleActivity(), LauncherAdapterUpdateListener {
}
private fun setupEmptyView() {
val properPrimaryColor = getProperPrimaryColor()
no_items_placeholder_2.underlineText()
no_items_placeholder_2.setTextColor(properPrimaryColor)
no_items_placeholder_2.setOnClickListener {
fabClicked()
binding.noItemsPlaceholder2.apply {
val properPrimaryColor = getProperPrimaryColor()
underlineText()
setTextColor(properPrimaryColor)
setOnClickListener {
fabClicked()
}
}
}
private fun maybeShowEmptyView() {
if (getGridAdapter()?.launchers?.isEmpty() == true) {
launchers_fastscroller.beGone()
no_items_placeholder_2.beVisibleIf(main_menu.getCurrentQuery().isEmpty())
no_items_placeholder.beVisible()
} else {
no_items_placeholder_2.beGone()
no_items_placeholder.beGone()
launchers_fastscroller.beVisible()
binding.apply {
if (getGridAdapter()?.launchers?.isEmpty() == true) {
launchersFastscroller.beGone()
noItemsPlaceholder2.beVisibleIf(mainMenu.getCurrentQuery().isEmpty())
noItemsPlaceholder.beVisible()
} else {
noItemsPlaceholder2.beGone()
noItemsPlaceholder.beGone()
launchersFastscroller.beVisible()
}
}
}

View File

@ -1,79 +1,93 @@
package com.simplemobiletools.applauncher.activities
import android.os.Bundle
import com.simplemobiletools.applauncher.R
import com.simplemobiletools.applauncher.databinding.ActivitySettingsBinding
import com.simplemobiletools.applauncher.extensions.config
import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.helpers.NavigationIcon
import com.simplemobiletools.commons.helpers.isTiramisuPlus
import kotlinx.android.synthetic.main.activity_settings.*
import java.util.*
import java.util.Locale
import kotlin.system.exitProcess
class SettingsActivity : SimpleActivity() {
private val binding by lazy(LazyThreadSafetyMode.NONE) { ActivitySettingsBinding.inflate(layoutInflater) }
override fun onCreate(savedInstanceState: Bundle?) {
isMaterialActivity = true
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_settings)
setContentView(binding.root)
updateMaterialActivityViews(settings_coordinator, settings_holder, useTransparentNavigation = true, useTopSearchMenu = false)
setupMaterialScrollListener(settings_nested_scrollview, settings_toolbar)
binding.apply {
updateMaterialActivityViews(settingsCoordinator, settingsHolder, useTransparentNavigation = true, useTopSearchMenu = false)
setupMaterialScrollListener(settingsNestedScrollview, settingsToolbar)
}
}
override fun onResume() {
super.onResume()
setupToolbar(settings_toolbar, NavigationIcon.Arrow)
setupToolbar(binding.settingsToolbar, NavigationIcon.Arrow)
setupPurchaseThankYou()
setupCustomizeColors()
setupUseEnglish()
setupLanguage()
setupCloseApp()
updateTextColors(settings_holder)
updateTextColors(binding.settingsHolder)
arrayOf(settings_color_customization_section_label, settings_general_settings_label).forEach {
it.setTextColor(getProperPrimaryColor())
binding.apply {
arrayOf(settingsColorCustomizationSectionLabel, settingsGeneralSettingsLabel).forEach {
it.setTextColor(getProperPrimaryColor())
}
}
}
private fun setupPurchaseThankYou() {
settings_purchase_thank_you_holder.beGoneIf(isOrWasThankYouInstalled())
settings_purchase_thank_you_holder.setOnClickListener {
launchPurchaseThankYouIntent()
binding.settingsPurchaseThankYouHolder.apply {
beGoneIf(isOrWasThankYouInstalled())
setOnClickListener {
launchPurchaseThankYouIntent()
}
}
}
private fun setupCustomizeColors() {
settings_color_customization_label.text = getCustomizeColorsString()
settings_color_customization_holder.setOnClickListener {
handleCustomizeColorsClick()
binding.apply {
settingsColorCustomizationLabel.text = getCustomizeColorsString()
settingsColorCustomizationHolder.setOnClickListener {
handleCustomizeColorsClick()
}
}
}
private fun setupUseEnglish() {
settings_use_english_holder.beVisibleIf((config.wasUseEnglishToggled || Locale.getDefault().language != "en") && !isTiramisuPlus())
settings_use_english.isChecked = config.useEnglish
settings_use_english_holder.setOnClickListener {
settings_use_english.toggle()
config.useEnglish = settings_use_english.isChecked
exitProcess(0)
binding.apply {
settingsUseEnglishHolder.beVisibleIf((config.wasUseEnglishToggled || Locale.getDefault().language != "en") && !isTiramisuPlus())
settingsUseEnglish.isChecked = config.useEnglish
settingsUseEnglishHolder.setOnClickListener {
settingsUseEnglish.toggle()
config.useEnglish = settingsUseEnglish.isChecked
exitProcess(0)
}
}
}
private fun setupLanguage() {
settings_language.text = Locale.getDefault().displayLanguage
settings_language_holder.beVisibleIf(isTiramisuPlus())
settings_language_holder.setOnClickListener {
launchChangeAppLanguageIntent()
binding.apply {
settingsLanguage.text = Locale.getDefault().displayLanguage
settingsLanguageHolder.beVisibleIf(isTiramisuPlus())
settingsLanguageHolder.setOnClickListener {
launchChangeAppLanguageIntent()
}
}
}
private fun setupCloseApp() {
settings_close_app.isChecked = config.closeApp
settings_close_app_holder.setOnClickListener {
settings_close_app.toggle()
config.closeApp = settings_close_app.isChecked
binding.apply {
settingsCloseApp.isChecked = config.closeApp
settingsCloseAppHolder.setOnClickListener {
settingsCloseApp.toggle()
config.closeApp = settingsCloseApp.isChecked
}
}
}
}

View File

@ -1,18 +1,17 @@
package com.simplemobiletools.applauncher.adapters
import android.app.Activity
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.simplemobiletools.applauncher.R
import com.simplemobiletools.applauncher.databinding.ItemAddLauncherBinding
import com.simplemobiletools.applauncher.models.AppLauncher
import com.simplemobiletools.commons.extensions.getProperPrimaryColor
import com.simplemobiletools.commons.extensions.getProperTextColor
import kotlinx.android.synthetic.main.item_add_launcher.view.*
class AddLaunchersAdapter(activity: Activity, val allLaunchers: ArrayList<AppLauncher>, val shownLaunchers: ArrayList<AppLauncher>) :
RecyclerView.Adapter<AddLaunchersAdapter.ViewHolder>() {
private var layoutInflater = activity.layoutInflater
private var textColor = activity.getProperTextColor()
private var adjustedPrimaryColor = activity.getProperPrimaryColor()
private var selectedKeys = HashSet<Int>()
@ -42,8 +41,7 @@ class AddLaunchersAdapter(activity: Activity, val allLaunchers: ArrayList<AppLau
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.item_add_launcher, parent, false)
return ViewHolder(view)
return ViewHolder(ItemAddLauncherBinding.inflate(layoutInflater, parent, false).root)
}
override fun getItemCount() = allLaunchers.size
@ -53,16 +51,16 @@ class AddLaunchersAdapter(activity: Activity, val allLaunchers: ArrayList<AppLau
inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
fun bindView(launcher: AppLauncher): View {
val isSelected = isKeySelected(launcher.packageName.hashCode())
itemView.apply {
launcher_checkbox.apply {
ItemAddLauncherBinding.bind(itemView).apply {
launcherCheckbox.apply {
isChecked = isSelected
text = launcher.title
setColors(textColor, adjustedPrimaryColor, 0)
}
launcher_icon.setImageDrawable(launcher.drawable!!)
setOnClickListener { viewClicked(launcher) }
setOnLongClickListener { viewClicked(launcher); true }
launcherIcon.setImageDrawable(launcher.drawable!!)
root.setOnClickListener { viewClicked(launcher) }
root.setOnLongClickListener { viewClicked(launcher); true }
}
return itemView

View File

@ -1,15 +1,18 @@
package com.simplemobiletools.applauncher.adapters
import android.view.Menu
import android.view.MotionEvent
import android.view.View
import android.view.ViewGroup
import android.view.*
import android.widget.FrameLayout
import android.widget.ImageView
import android.widget.TextView
import androidx.recyclerview.widget.ItemTouchHelper
import androidx.recyclerview.widget.RecyclerView
import androidx.viewbinding.ViewBinding
import com.qtalk.recyclerviewfastscroller.RecyclerViewFastScroller
import com.simplemobiletools.applauncher.LauncherAdapterUpdateListener
import com.simplemobiletools.applauncher.R
import com.simplemobiletools.applauncher.activities.SimpleActivity
import com.simplemobiletools.applauncher.databinding.ItemLauncherLabelBinding
import com.simplemobiletools.applauncher.databinding.ItemLauncherNoLabelBinding
import com.simplemobiletools.applauncher.dialogs.EditDialog
import com.simplemobiletools.applauncher.extensions.config
import com.simplemobiletools.applauncher.extensions.dbHelper
@ -23,7 +26,6 @@ import com.simplemobiletools.commons.interfaces.ItemMoveCallback
import com.simplemobiletools.commons.interfaces.ItemTouchHelperContract
import com.simplemobiletools.commons.interfaces.StartReorderDragListener
import com.simplemobiletools.commons.views.MyRecyclerView
import kotlinx.android.synthetic.main.item_launcher_label.view.*
import java.util.*
class LaunchersAdapter(
@ -72,19 +74,15 @@ class LaunchersAdapter(
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val layoutId = if (activity.config.showAppName) {
R.layout.item_launcher_label
} else {
R.layout.item_launcher_no_label
}
val binding = Binding.getByAppConfig(activity.config.showAppName).inflate(layoutInflater, parent, false)
return createViewHolder(layoutId, parent)
return createViewHolder(binding.root)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val launcher = launchers[position]
holder.bindView(launcher, true, true) { itemView, adapterPosition ->
setupView(itemView, launcher, holder)
setupView(Binding.getByAppConfig(activity.config.showAppName).bind(itemView), launcher, holder)
}
bindViewHolder(holder)
}
@ -185,14 +183,14 @@ class LaunchersAdapter(
}
}
private fun setupView(view: View, launcher: AppLauncher, holder: ViewHolder) {
view.apply {
private fun setupView(binding: ItemViewBinding, launcher: AppLauncher, holder: ViewHolder) {
binding.apply {
val isSelected = selectedKeys.contains(launcher.packageName.hashCode())
launcher_check?.beInvisibleIf(!isSelected)
launcher_label?.text = launcher.title
launcher_label?.setTextColor(textColor)
launcher_label?.beVisibleIf(activity.config.showAppName)
launcher_icon.setImageDrawable(launcher.drawable!!)
launcherCheck?.beInvisibleIf(!isSelected)
launcherLabel?.text = launcher.title
launcherLabel?.setTextColor(textColor)
launcherLabel?.beVisibleIf(activity.config.showAppName)
launcherIcon.setImageDrawable(launcher.drawable!!)
val bottomPadding = if (activity.config.showAppName) {
0
@ -200,11 +198,11 @@ class LaunchersAdapter(
iconPadding
}
launcher_icon.setPadding(iconPadding, iconPadding, iconPadding, bottomPadding)
launcher_drag_handle.beVisibleIf(isChangingOrder)
launcherIcon.setPadding(iconPadding, iconPadding, iconPadding, bottomPadding)
launcherDragHandle.beVisibleIf(isChangingOrder)
if (isChangingOrder) {
launcher_drag_handle.applyColorFilter(textColor)
launcher_drag_handle.setOnTouchListener { v, event ->
launcherDragHandle.applyColorFilter(textColor)
launcherDragHandle.setOnTouchListener { v, event ->
if (event.action == MotionEvent.ACTION_DOWN) {
startReorderDragListener.requestDrag(holder)
}
@ -213,7 +211,7 @@ class LaunchersAdapter(
}
if (isSelected) {
launcher_check?.background?.applyColorFilter(properPrimaryColor)
launcherCheck?.background?.applyColorFilter(properPrimaryColor)
}
}
}
@ -238,4 +236,64 @@ class LaunchersAdapter(
override fun onRowSelected(myViewHolder: ViewHolder?) {}
override fun onChange(position: Int) = launchers.getOrNull(position)?.getBubbleText() ?: ""
private sealed interface Binding {
companion object {
fun getByAppConfig(showAppName: Boolean): Binding {
return if (showAppName) {
ItemLauncherLabel
} else {
ItemLauncherNoLabel
}
}
}
fun inflate(layoutInflater: LayoutInflater, viewGroup: ViewGroup, attachToRoot: Boolean): ItemViewBinding
fun bind(view: View): ItemViewBinding
data object ItemLauncherLabel : Binding {
override fun inflate(layoutInflater: LayoutInflater, viewGroup: ViewGroup, attachToRoot: Boolean): ItemViewBinding {
return ItemLauncherLabelBindingAdapter(ItemLauncherLabelBinding.inflate(layoutInflater, viewGroup, attachToRoot))
}
override fun bind(view: View): ItemViewBinding {
return ItemLauncherLabelBindingAdapter(ItemLauncherLabelBinding.bind(view))
}
}
data object ItemLauncherNoLabel : Binding {
override fun inflate(layoutInflater: LayoutInflater, viewGroup: ViewGroup, attachToRoot: Boolean): ItemViewBinding {
return ItemLauncherNoLabelBindingAdapter(ItemLauncherNoLabelBinding.inflate(layoutInflater, viewGroup, attachToRoot))
}
override fun bind(view: View): ItemViewBinding {
return ItemLauncherNoLabelBindingAdapter(ItemLauncherNoLabelBinding.bind(view))
}
}
}
private interface ItemViewBinding : ViewBinding {
val launcherCheck: ImageView
val launcherIcon: ImageView
val launcherDragHandle: ImageView
val launcherLabel: TextView?
}
private class ItemLauncherLabelBindingAdapter(val binding: ItemLauncherLabelBinding) : ItemViewBinding {
override val launcherCheck: ImageView = binding.launcherCheck
override val launcherIcon: ImageView = binding.launcherIcon
override val launcherDragHandle: ImageView = binding.launcherDragHandle
override val launcherLabel: TextView = binding.launcherLabel
override fun getRoot(): View = binding.root
}
private class ItemLauncherNoLabelBindingAdapter(val binding: ItemLauncherNoLabelBinding) : ItemViewBinding {
override val launcherCheck: ImageView = binding.launcherCheck
override val launcherIcon: ImageView = binding.launcherIcon
override val launcherDragHandle: ImageView = binding.launcherDragHandle
override val launcherLabel: TextView? = null
override fun getRoot(): View = binding.root
}
}

View File

@ -1,15 +1,14 @@
package com.simplemobiletools.applauncher.dialogs
import android.app.Activity
import android.view.ViewGroup
import com.simplemobiletools.applauncher.R
import com.simplemobiletools.applauncher.adapters.AddLaunchersAdapter
import com.simplemobiletools.applauncher.databinding.DialogAddLaunchersBinding
import com.simplemobiletools.applauncher.extensions.dbHelper
import com.simplemobiletools.applauncher.models.AppLauncher
import com.simplemobiletools.commons.extensions.areSystemAnimationsEnabled
import com.simplemobiletools.commons.extensions.getAlertDialogBuilder
import com.simplemobiletools.commons.extensions.setupDialogStuff
import kotlinx.android.synthetic.main.dialog_add_launchers.view.*
class AddLaunchersDialog(
val activity: Activity,
@ -17,20 +16,21 @@ class AddLaunchersDialog(
val shownLaunchers: ArrayList<AppLauncher>,
val callback: () -> Unit
) {
private var view = (activity.layoutInflater.inflate(R.layout.dialog_add_launchers, null) as ViewGroup)
private var adapter: AddLaunchersAdapter? = null
init {
val binding = DialogAddLaunchersBinding.inflate(activity.layoutInflater)
activity.getAlertDialogBuilder()
.setPositiveButton(R.string.ok) { dialogInterface, i -> confirmSelection() }
.setNegativeButton(R.string.cancel, null)
.apply {
activity.setupDialogStuff(view, this) {
activity.setupDialogStuff(binding.root, this) {
adapter = AddLaunchersAdapter(activity, allLaunchers, shownLaunchers)
view.add_launchers_holder.adapter = adapter
binding.addLaunchersHolder.adapter = adapter
if (activity.areSystemAnimationsEnabled) {
view.add_launchers_holder.scheduleLayoutAnimation()
binding.addLaunchersHolder.scheduleLayoutAnimation()
}
}
}

View File

@ -1,6 +1,7 @@
package com.simplemobiletools.applauncher.dialogs
import com.simplemobiletools.applauncher.R
import com.simplemobiletools.applauncher.databinding.DialogChangeSortingBinding
import com.simplemobiletools.applauncher.extensions.config
import com.simplemobiletools.commons.activities.BaseSimpleActivity
import com.simplemobiletools.commons.extensions.beGoneIf
@ -9,19 +10,18 @@ import com.simplemobiletools.commons.extensions.setupDialogStuff
import com.simplemobiletools.commons.helpers.SORT_BY_CUSTOM
import com.simplemobiletools.commons.helpers.SORT_BY_TITLE
import com.simplemobiletools.commons.helpers.SORT_DESCENDING
import kotlinx.android.synthetic.main.dialog_change_sorting.view.*
class ChangeSortingDialog(val activity: BaseSimpleActivity, private val callback: () -> Unit) {
private var currSorting = 0
private var config = activity.config
private var view = activity.layoutInflater.inflate(R.layout.dialog_change_sorting, null)
private val binding = DialogChangeSortingBinding.inflate(activity.layoutInflater)
init {
activity.getAlertDialogBuilder()
.setPositiveButton(R.string.ok) { dialog, which -> dialogConfirmed() }
.setNegativeButton(R.string.cancel, null)
.apply {
activity.setupDialogStuff(view, this, R.string.sort_by)
activity.setupDialogStuff(binding.root, this, R.string.sort_by)
}
currSorting = config.sorting
@ -30,38 +30,38 @@ class ChangeSortingDialog(val activity: BaseSimpleActivity, private val callback
}
private fun setupSortRadio() {
val sortingRadio = view.sorting_dialog_radio_sorting
sortingRadio.setOnCheckedChangeListener { group, checkedId ->
val isCustomSorting = checkedId == sortingRadio.sorting_dialog_radio_custom.id
view.sorting_dialog_radio_order.beGoneIf(isCustomSorting)
view.sorting_dialog_divider.beGoneIf(isCustomSorting)
binding.apply {
sortingDialogRadioSorting.setOnCheckedChangeListener { group, checkedId ->
val isCustomSorting = checkedId == sortingDialogRadioCustom.id
sortingDialogRadioOrder.beGoneIf(isCustomSorting)
sortingDialogDivider.beGoneIf(isCustomSorting)
}
}
val sortBtn = when {
currSorting and SORT_BY_TITLE != 0 -> sortingRadio.sorting_dialog_radio_title
else -> sortingRadio.sorting_dialog_radio_custom
currSorting and SORT_BY_TITLE != 0 -> binding.sortingDialogRadioTitle
else -> binding.sortingDialogRadioCustom
}
sortBtn.isChecked = true
}
private fun setupOrderRadio() {
val orderRadio = view.sorting_dialog_radio_order
var orderBtn = orderRadio.sorting_dialog_radio_ascending
var orderBtn = binding.sortingDialogRadioAscending
if (currSorting and SORT_DESCENDING != 0) {
orderBtn = orderRadio.sorting_dialog_radio_descending
orderBtn = binding.sortingDialogRadioDescending
}
orderBtn.isChecked = true
}
private fun dialogConfirmed() {
val sortingRadio = view.sorting_dialog_radio_sorting
val sortingRadio = binding.sortingDialogRadioSorting
var sorting = when (sortingRadio.checkedRadioButtonId) {
R.id.sorting_dialog_radio_title -> SORT_BY_TITLE
else -> SORT_BY_CUSTOM
}
if (sortingRadio.checkedRadioButtonId != R.id.sorting_dialog_radio_custom && view.sorting_dialog_radio_order.checkedRadioButtonId == R.id.sorting_dialog_radio_descending) {
if (sortingRadio.checkedRadioButtonId != R.id.sorting_dialog_radio_custom && binding.sortingDialogRadioOrder.checkedRadioButtonId == R.id.sorting_dialog_radio_descending) {
sorting = sorting or SORT_DESCENDING
}

View File

@ -2,27 +2,26 @@ package com.simplemobiletools.applauncher.dialogs
import android.app.Activity
import android.app.AlertDialog
import android.view.ViewGroup
import com.simplemobiletools.applauncher.R
import com.simplemobiletools.applauncher.databinding.DialogEditLauncherBinding
import com.simplemobiletools.applauncher.extensions.dbHelper
import com.simplemobiletools.applauncher.models.AppLauncher
import com.simplemobiletools.commons.extensions.*
import kotlinx.android.synthetic.main.dialog_edit_launcher.view.*
class EditDialog(val activity: Activity, val appLauncher: AppLauncher, val callback: () -> Unit) {
init {
val view = (activity.layoutInflater.inflate(R.layout.dialog_edit_launcher, null) as ViewGroup)
view.edit_launcher_edittext.setText(appLauncher.title)
val binding = DialogEditLauncherBinding.inflate(activity.layoutInflater)
binding.editLauncherEdittext.setText(appLauncher.title)
activity.getAlertDialogBuilder()
.setPositiveButton(R.string.ok, null)
.setNegativeButton(R.string.cancel, null)
.apply {
activity.setupDialogStuff(view, this, R.string.rename) { alertDialog ->
alertDialog.showKeyboard(view.edit_launcher_edittext)
activity.setupDialogStuff(binding.root, this, R.string.rename) { alertDialog ->
alertDialog.showKeyboard(binding.editLauncherEdittext)
alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener {
val newName = view.edit_launcher_edittext.value
val newName = binding.editLauncherEdittext.value
if (!newName.isEmpty()) {
if (activity.dbHelper.updateLauncherName(appLauncher.id, newName)) {
callback()