From dbf3b09b26ed91cd228631d50d694ce837b9e1b4 Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 30 Jul 2018 20:58:02 +0200 Subject: [PATCH] add a settings item for managing visible tabs --- .../contacts/activities/SettingsActivity.kt | 8 ++++ .../dialogs/ManageVisibleFieldsDialog.kt | 2 +- .../dialogs/ManageVisibleTabsDialog.kt | 47 +++++++++++++++++++ .../contacts/helpers/Config.kt | 4 ++ .../contacts/helpers/Constants.kt | 1 + app/src/main/res/layout/activity_settings.xml | 22 +++++++++ .../res/layout/dialog_manage_visible_tabs.xml | 42 +++++++++++++++++ 7 files changed, 125 insertions(+), 1 deletion(-) create mode 100644 app/src/main/kotlin/com/simplemobiletools/contacts/dialogs/ManageVisibleTabsDialog.kt create mode 100644 app/src/main/res/layout/dialog_manage_visible_tabs.xml diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/SettingsActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/SettingsActivity.kt index 19eb91db..ffadba2f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/SettingsActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/SettingsActivity.kt @@ -9,6 +9,7 @@ import com.simplemobiletools.commons.extensions.updateTextColors import com.simplemobiletools.commons.models.RadioItem import com.simplemobiletools.contacts.R import com.simplemobiletools.contacts.dialogs.ManageVisibleFieldsDialog +import com.simplemobiletools.contacts.dialogs.ManageVisibleTabsDialog import com.simplemobiletools.contacts.extensions.config import com.simplemobiletools.contacts.helpers.ON_CLICK_CALL_CONTACT import com.simplemobiletools.contacts.helpers.ON_CLICK_EDIT_CONTACT @@ -28,6 +29,7 @@ class SettingsActivity : SimpleActivity() { setupPurchaseThankYou() setupCustomizeColors() setupManageShownContactFields() + setupManageShownTabs() setupUseEnglish() setupAvoidWhatsNew() setupShowInfoBubble() @@ -58,6 +60,12 @@ class SettingsActivity : SimpleActivity() { } } + private fun setupManageShownTabs() { + settings_manage_tabs_holder.setOnClickListener { + ManageVisibleTabsDialog(this) + } + } + private fun setupUseEnglish() { settings_use_english_holder.beVisibleIf(config.wasUseEnglishToggled || Locale.getDefault().language != "en") settings_use_english.isChecked = config.useEnglish diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/dialogs/ManageVisibleFieldsDialog.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/dialogs/ManageVisibleFieldsDialog.kt index cb0b8424..dfd89e5c 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/dialogs/ManageVisibleFieldsDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/dialogs/ManageVisibleFieldsDialog.kt @@ -36,7 +36,7 @@ class ManageVisibleFieldsDialog(val activity: BaseSimpleActivity) { } AlertDialog.Builder(activity) - .setPositiveButton(R.string.ok, { dialog, which -> dialogConfirmed() }) + .setPositiveButton(R.string.ok) { dialog, which -> dialogConfirmed() } .setNegativeButton(R.string.cancel, null) .create().apply { activity.setupDialogStuff(view, this) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/dialogs/ManageVisibleTabsDialog.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/dialogs/ManageVisibleTabsDialog.kt new file mode 100644 index 00000000..65c75389 --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/dialogs/ManageVisibleTabsDialog.kt @@ -0,0 +1,47 @@ +package com.simplemobiletools.contacts.dialogs + +import android.support.v7.app.AlertDialog +import com.simplemobiletools.commons.activities.BaseSimpleActivity +import com.simplemobiletools.commons.extensions.setupDialogStuff +import com.simplemobiletools.commons.views.MyAppCompatCheckbox +import com.simplemobiletools.contacts.R +import com.simplemobiletools.contacts.extensions.config +import com.simplemobiletools.contacts.helpers.CONTACTS_TAB_MASK +import com.simplemobiletools.contacts.helpers.FAVORITES_TAB_MASK +import com.simplemobiletools.contacts.helpers.GROUPS_TAB_MASK + +class ManageVisibleTabsDialog(val activity: BaseSimpleActivity) { + private var view = activity.layoutInflater.inflate(R.layout.dialog_manage_visible_tabs, null) + private val tabs = LinkedHashMap() + + init { + tabs.apply { + put(CONTACTS_TAB_MASK, R.id.manage_visible_tabs_contacts) + put(FAVORITES_TAB_MASK, R.id.manage_visible_tabs_favorites) + put(GROUPS_TAB_MASK, R.id.manage_visible_tabs_groups) + } + + val showTabs = activity.config.showTabs + for ((key, value) in tabs) { + view.findViewById(value).isChecked = showTabs and key != 0 + } + + AlertDialog.Builder(activity) + .setPositiveButton(R.string.ok) { dialog, which -> dialogConfirmed() } + .setNegativeButton(R.string.cancel, null) + .create().apply { + activity.setupDialogStuff(view, this) + } + } + + private fun dialogConfirmed() { + var result = 0 + for ((key, value) in tabs) { + if (view.findViewById(value).isChecked) { + result += key + } + } + + activity.config.showTabs = result + } +} diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/Config.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/Config.kt index de1bb860..64d4ac77 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/Config.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/Config.kt @@ -48,4 +48,8 @@ class Config(context: Context) : BaseConfig(context) { var filterDuplicates: Boolean get() = prefs.getBoolean(FILTER_DUPLICATES, true) set(filterDuplicates) = prefs.edit().putBoolean(FILTER_DUPLICATES, filterDuplicates).apply() + + var showTabs: Int + get() = prefs.getInt(SHOW_TABS, ALL_TABS_MASK) + set(showTabs) = prefs.edit().putInt(SHOW_TABS, showTabs).apply() } diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/Constants.kt index 4eb29248..eb14c935 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/Constants.kt @@ -12,6 +12,7 @@ const val LOCAL_ACCOUNT_NAME = "local_account_name" const val LOCAL_ACCOUNT_TYPE = "local_account_type" const val ON_CONTACT_CLICK = "on_contact_click" const val SHOW_CONTACT_FIELDS = "show_contact_fields" +const val SHOW_TABS = "show_tabs" const val FILTER_DUPLICATES = "filter_duplicates" const val CONTACT_ID = "contact_id" diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index b1f7cccc..f950dd49 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -77,6 +77,28 @@ + + + + + + + + + + + + + + + + + +