From 253e2dc6548160021909636103538713effe3ea6 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Mon, 24 Aug 2020 14:18:02 +0200 Subject: [PATCH] Added setting to disable new contact account dialog + prevent saving new empty contact --- .../main/contact/fragments/ContactEditorFragment.kt | 6 +++++- .../main/contact/viewmodels/ContactEditorViewModel.kt | 10 ++++------ .../settings/viewmodels/ContactsSettingsViewModel.kt | 8 ++++++++ app/src/main/java/org/linphone/core/CorePreferences.kt | 6 ++++++ app/src/main/res/layout/contact_editor_fragment.xml | 1 + app/src/main/res/layout/settings_contacts_fragment.xml | 8 ++++++++ app/src/main/res/values/strings.xml | 2 ++ 7 files changed, 34 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/org/linphone/activities/main/contact/fragments/ContactEditorFragment.kt b/app/src/main/java/org/linphone/activities/main/contact/fragments/ContactEditorFragment.kt index 511ac61f9..e782597d1 100644 --- a/app/src/main/java/org/linphone/activities/main/contact/fragments/ContactEditorFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/contact/fragments/ContactEditorFragment.kt @@ -35,6 +35,7 @@ import androidx.lifecycle.lifecycleScope import androidx.navigation.fragment.findNavController import java.io.File import kotlinx.coroutines.launch +import org.linphone.LinphoneApplication.Companion.corePreferences import org.linphone.R import org.linphone.activities.main.MainActivity import org.linphone.activities.main.contact.viewmodels.* @@ -86,7 +87,10 @@ class ContactEditorFragment : Fragment(), SyncAccountPickerFragment.SyncAccountP } binding.setSaveChangesClickListener { - if (viewModel.c == null) { + viewModel.syncAccountName = null + viewModel.syncAccountType = null + + if (viewModel.c == null && corePreferences.showNewContactAccountDialog) { Log.i("[Contact Editor] New contact, ask user where to store it") SyncAccountPickerFragment(this).show(childFragmentManager, "SyncAccountPicker") } else { diff --git a/app/src/main/java/org/linphone/activities/main/contact/viewmodels/ContactEditorViewModel.kt b/app/src/main/java/org/linphone/activities/main/contact/viewmodels/ContactEditorViewModel.kt index a3d2aa29b..af4365b12 100644 --- a/app/src/main/java/org/linphone/activities/main/contact/viewmodels/ContactEditorViewModel.kt +++ b/app/src/main/java/org/linphone/activities/main/contact/viewmodels/ContactEditorViewModel.kt @@ -68,12 +68,10 @@ class ContactEditorViewModel(val c: Contact?) : ViewModel(), ContactViewModelInt var syncAccountType: String? = null init { - if (c != null) { - contact.value = c - firstName.value = c.firstName - lastName.value = c.lastName - organization.value = c.organization - } + contact.value = c + firstName.value = c?.firstName ?: "" + lastName.value = c?.lastName ?: "" + organization.value = c?.organization ?: "" updateNumbersAndAddresses() } diff --git a/app/src/main/java/org/linphone/activities/main/settings/viewmodels/ContactsSettingsViewModel.kt b/app/src/main/java/org/linphone/activities/main/settings/viewmodels/ContactsSettingsViewModel.kt index be6a160ae..805279621 100644 --- a/app/src/main/java/org/linphone/activities/main/settings/viewmodels/ContactsSettingsViewModel.kt +++ b/app/src/main/java/org/linphone/activities/main/settings/viewmodels/ContactsSettingsViewModel.kt @@ -38,6 +38,13 @@ class ContactsSettingsViewModel : GenericSettingsViewModel() { } val friendListSubscribe = MutableLiveData() + val showNewContactAccountDialogListener = object : SettingListenerStub() { + override fun onBoolValueChanged(newValue: Boolean) { + prefs.showNewContactAccountDialog = newValue + } + } + val showNewContactAccountDialog = MutableLiveData() + val nativePresenceListener = object : SettingListenerStub() { override fun onBoolValueChanged(newValue: Boolean) { if (newValue) { @@ -73,6 +80,7 @@ class ContactsSettingsViewModel : GenericSettingsViewModel() { readContactsPermissionGranted.value = PermissionHelper.get().hasReadContactsPermission() friendListSubscribe.value = core.isFriendListSubscriptionEnabled + showNewContactAccountDialog.value = prefs.showNewContactAccountDialog nativePresence.value = prefs.storePresenceInNativeContact showOrganization.value = prefs.displayOrganization launcherShortcuts.value = prefs.contactsShortcuts diff --git a/app/src/main/java/org/linphone/core/CorePreferences.kt b/app/src/main/java/org/linphone/core/CorePreferences.kt index 25e6a7aa3..8bf2894ca 100644 --- a/app/src/main/java/org/linphone/core/CorePreferences.kt +++ b/app/src/main/java/org/linphone/core/CorePreferences.kt @@ -125,6 +125,12 @@ class CorePreferences constructor(private val context: Context) { config.setBool("app", "store_presence_in_native_contact", value) } + var showNewContactAccountDialog: Boolean + get() = config.getBool("app", "show_new_contact_account_dialog", true) + set(value) { + config.setBool("app", "show_new_contact_account_dialog", value) + } + var displayOrganization: Boolean get() = config.getBool("app", "display_contact_organization", contactOrganizationVisible) set(value) { diff --git a/app/src/main/res/layout/contact_editor_fragment.xml b/app/src/main/res/layout/contact_editor_fragment.xml index 909bd2f78..42653b1cf 100644 --- a/app/src/main/res/layout/contact_editor_fragment.xml +++ b/app/src/main/res/layout/contact_editor_fragment.xml @@ -48,6 +48,7 @@ + + Create shortcuts to contacts in launcher Will replace chat room shortcuts if any + Always ask in which account save newly created contact + If disabled contact will be stored locally Debug logs