diff --git a/app/src/main/java/org/linphone/activities/assistant/fragments/WelcomeFragment.kt b/app/src/main/java/org/linphone/activities/assistant/fragments/WelcomeFragment.kt
index 3802e7350..eb0dc97b0 100644
--- a/app/src/main/java/org/linphone/activities/assistant/fragments/WelcomeFragment.kt
+++ b/app/src/main/java/org/linphone/activities/assistant/fragments/WelcomeFragment.kt
@@ -24,12 +24,15 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
+import androidx.lifecycle.ViewModelProvider
import androidx.navigation.fragment.findNavController
import org.linphone.R
+import org.linphone.activities.assistant.viewmodels.WelcomeViewModel
import org.linphone.databinding.AssistantWelcomeFragmentBinding
class WelcomeFragment : Fragment() {
private lateinit var binding: AssistantWelcomeFragmentBinding
+ private lateinit var viewModel: WelcomeViewModel
override fun onCreateView(
inflater: LayoutInflater,
@@ -45,6 +48,9 @@ class WelcomeFragment : Fragment() {
binding.lifecycleOwner = this
+ viewModel = ViewModelProvider(this).get(WelcomeViewModel::class.java)
+ binding.viewModel = viewModel
+
binding.setCreateAccountClickListener {
if (findNavController().currentDestination?.id == R.id.welcomeFragment) {
if (resources.getBoolean(R.bool.isTablet)) {
diff --git a/app/src/main/java/org/linphone/activities/assistant/viewmodels/AccountLoginViewModel.kt b/app/src/main/java/org/linphone/activities/assistant/viewmodels/AccountLoginViewModel.kt
index b5f102991..4b4aff03d 100644
--- a/app/src/main/java/org/linphone/activities/assistant/viewmodels/AccountLoginViewModel.kt
+++ b/app/src/main/java/org/linphone/activities/assistant/viewmodels/AccountLoginViewModel.kt
@@ -21,6 +21,7 @@ package org.linphone.activities.assistant.viewmodels
import androidx.lifecycle.*
import org.linphone.LinphoneApplication.Companion.coreContext
+import org.linphone.R
import org.linphone.core.*
import org.linphone.core.tools.Log
import org.linphone.utils.Event
@@ -100,7 +101,7 @@ class AccountLoginViewModel(accountCreator: AccountCreator) : AbstractPhoneViewM
init {
accountCreator.addListener(listener)
- loginWithUsernamePassword.value = false
+ loginWithUsernamePassword.value = coreContext.context.resources.getBoolean(R.bool.isTablet)
loginEnabled.value = false
loginEnabled.addSource(prefix) {
diff --git a/app/src/main/java/org/linphone/activities/assistant/viewmodels/WelcomeViewModel.kt b/app/src/main/java/org/linphone/activities/assistant/viewmodels/WelcomeViewModel.kt
new file mode 100644
index 000000000..8dfd7fc7c
--- /dev/null
+++ b/app/src/main/java/org/linphone/activities/assistant/viewmodels/WelcomeViewModel.kt
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2010-2020 Belledonne Communications SARL.
+ *
+ * This file is part of linphone-android
+ * (see https://www.linphone.org).
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+package org.linphone.activities.assistant.viewmodels
+
+import androidx.lifecycle.ViewModel
+import org.linphone.LinphoneApplication.Companion.corePreferences
+
+class WelcomeViewModel : ViewModel() {
+ val showCreateAccount: Boolean = corePreferences.showCreateAccount
+ val showLinphoneLogin: Boolean = corePreferences.showLinphoneLogin
+ val showGenericLogin: Boolean = corePreferences.showGenericLogin
+ val showRemoteProvisioning: Boolean = corePreferences.showRemoteProvisioning
+}
diff --git a/app/src/main/java/org/linphone/activities/main/settings/viewmodels/SettingsViewModel.kt b/app/src/main/java/org/linphone/activities/main/settings/viewmodels/SettingsViewModel.kt
index 7a92fd673..5ee45e404 100644
--- a/app/src/main/java/org/linphone/activities/main/settings/viewmodels/SettingsViewModel.kt
+++ b/app/src/main/java/org/linphone/activities/main/settings/viewmodels/SettingsViewModel.kt
@@ -22,11 +22,22 @@ package org.linphone.activities.main.settings.viewmodels
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import org.linphone.LinphoneApplication.Companion.coreContext
+import org.linphone.LinphoneApplication.Companion.corePreferences
import org.linphone.activities.main.settings.SettingListenerStub
class SettingsViewModel : ViewModel() {
val tunnelAvailable: Boolean = coreContext.core.tunnelAvailable()
+ val showAccountSettings: Boolean = corePreferences.showAccountSettings
+ val showTunnelSettings: Boolean = tunnelAvailable && corePreferences.showTunnelSettings
+ val showAudioSettings: Boolean = corePreferences.showAudioSettings
+ val showVideoSettings: Boolean = corePreferences.showVideoSettings
+ val showCallSettings: Boolean = corePreferences.showCallSettings
+ val showChatSettings: Boolean = corePreferences.showChatSettings
+ val showNetworkSettings: Boolean = corePreferences.showNetworkSettings
+ val showContactsSettings: Boolean = corePreferences.showContactsSettings
+ val showAdvancedSettings: Boolean = corePreferences.showAdvancedSettings
+
val accounts = MutableLiveData>()
private var accountClickListener = object : SettingListenerStub() {
diff --git a/app/src/main/java/org/linphone/activities/main/sidemenu/viewmodels/SideMenuViewModel.kt b/app/src/main/java/org/linphone/activities/main/sidemenu/viewmodels/SideMenuViewModel.kt
index e31225072..000d68150 100644
--- a/app/src/main/java/org/linphone/activities/main/sidemenu/viewmodels/SideMenuViewModel.kt
+++ b/app/src/main/java/org/linphone/activities/main/sidemenu/viewmodels/SideMenuViewModel.kt
@@ -22,15 +22,18 @@ package org.linphone.activities.main.sidemenu.viewmodels
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import org.linphone.LinphoneApplication.Companion.coreContext
+import org.linphone.LinphoneApplication.Companion.corePreferences
import org.linphone.activities.main.settings.SettingListenerStub
import org.linphone.activities.main.settings.viewmodels.AccountSettingsViewModel
import org.linphone.core.*
class SideMenuViewModel : ViewModel() {
- val showAssistant: Boolean = true
- val showSettings: Boolean = true
- val showRecordings: Boolean = true
- val showAbout: Boolean = true
+ val showAccounts: Boolean = corePreferences.showAccountsInSideMenu
+ val showAssistant: Boolean = corePreferences.showAssistantInSideMenu
+ val showSettings: Boolean = corePreferences.showSettingsInSideMenu
+ val showRecordings: Boolean = corePreferences.showRecordingsInSideMenu
+ val showAbout: Boolean = corePreferences.showAboutInSideMenu
+ val showQuit: Boolean = corePreferences.showQuitInSideMenu
val defaultAccount = MutableLiveData()
val defaultAccountFound = MutableLiveData()
diff --git a/app/src/main/java/org/linphone/activities/main/viewmodels/TabsViewModel.kt b/app/src/main/java/org/linphone/activities/main/viewmodels/TabsViewModel.kt
index e6e01708a..aa8bf389c 100644
--- a/app/src/main/java/org/linphone/activities/main/viewmodels/TabsViewModel.kt
+++ b/app/src/main/java/org/linphone/activities/main/viewmodels/TabsViewModel.kt
@@ -22,9 +22,15 @@ package org.linphone.activities.main.viewmodels
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import org.linphone.LinphoneApplication.Companion.coreContext
+import org.linphone.LinphoneApplication.Companion.corePreferences
import org.linphone.core.*
class TabsViewModel : ViewModel() {
+ val showHistory: Boolean = corePreferences.showHistory
+ val showContacts: Boolean = corePreferences.showContacts
+ val showDialer: Boolean = corePreferences.showDialer
+ val showChat: Boolean = corePreferences.showChat
+
val historySelected = MutableLiveData()
val contactsSelected = MutableLiveData()
val dialerSelected = MutableLiveData()
diff --git a/app/src/main/java/org/linphone/core/CorePreferences.kt b/app/src/main/java/org/linphone/core/CorePreferences.kt
index 6337358a9..0ba5f50de 100644
--- a/app/src/main/java/org/linphone/core/CorePreferences.kt
+++ b/app/src/main/java/org/linphone/core/CorePreferences.kt
@@ -239,6 +239,85 @@ class CorePreferences constructor(private val context: Context) {
val checkUpdateAvailableInterval: Int
get() = config.getInt("app", "version_check_interval", 86400000)
+ /* Tabs */
+
+ val showHistory: Boolean
+ get() = config.getBool("app", "tabs_history", true)
+
+ val showContacts: Boolean
+ get() = config.getBool("app", "tabs_contacts", true)
+
+ val showDialer: Boolean
+ get() = config.getBool("app", "tabs_dialer", true)
+
+ val showChat: Boolean
+ get() = config.getBool("app", "tabs_chat", true)
+
+ /* Assistant */
+
+ val showCreateAccount: Boolean
+ get() = config.getBool("app", "assistant_create_account", true)
+
+ val showLinphoneLogin: Boolean
+ get() = config.getBool("app", "assistant_linphone_login", true)
+
+ val showGenericLogin: Boolean
+ get() = config.getBool("app", "assistant_generic_login", true)
+
+ val showRemoteProvisioning: Boolean
+ get() = config.getBool("app", "assistant_remote_provisioning", true)
+
+ /* Side Menu */
+
+ val showAccountsInSideMenu: Boolean
+ get() = config.getBool("app", "side_menu_accounts", true)
+
+ val showAssistantInSideMenu: Boolean
+ get() = config.getBool("app", "side_menu_assistant", true)
+
+ val showSettingsInSideMenu: Boolean
+ get() = config.getBool("app", "side_menu_settings", true)
+
+ val showRecordingsInSideMenu: Boolean
+ get() = config.getBool("app", "side_menu_recordings", true)
+
+ val showAboutInSideMenu: Boolean
+ get() = config.getBool("app", "side_menu_about", true)
+
+ val showQuitInSideMenu: Boolean
+ get() = config.getBool("app", "side_menu_quit", true)
+
+ /* Settings */
+
+ val showAccountSettings: Boolean
+ get() = config.getBool("app", "settings_accounts", true)
+
+ val showTunnelSettings: Boolean
+ get() = config.getBool("app", "settings_tunnel", true)
+
+ val showAudioSettings: Boolean
+ get() = config.getBool("app", "settings_audio", true)
+
+ val showVideoSettings: Boolean
+ get() = config.getBool("app", "settings_video", true)
+
+ val showCallSettings: Boolean
+ get() = config.getBool("app", "settings_call", true)
+
+ val showChatSettings: Boolean
+ get() = config.getBool("app", "settings_chat", true)
+
+ val showNetworkSettings: Boolean
+ get() = config.getBool("app", "settings_network", true)
+
+ val showContactsSettings: Boolean
+ get() = config.getBool("app", "settings_contacts", true)
+
+ val showAdvancedSettings: Boolean
+ get() = config.getBool("app", "settings_advanced", true)
+
+ /* Other stuff */
+
private val darkModeAllowed: Boolean
get() = config.getBool("app", "dark_mode_allowed", true)
diff --git a/app/src/main/res/layout-land/assistant_welcome_fragment.xml b/app/src/main/res/layout-land/assistant_welcome_fragment.xml
index 8fceb6fd3..2d8b9c539 100644
--- a/app/src/main/res/layout-land/assistant_welcome_fragment.xml
+++ b/app/src/main/res/layout-land/assistant_welcome_fragment.xml
@@ -16,6 +16,9 @@
+
@@ -99,42 +101,49 @@
diff --git a/app/src/main/res/layout-sw533dp/settings_fragment.xml b/app/src/main/res/layout-sw533dp/settings_fragment.xml
index 0dfaff72c..5e70aa604 100644
--- a/app/src/main/res/layout-sw533dp/settings_fragment.xml
+++ b/app/src/main/res/layout-sw533dp/settings_fragment.xml
@@ -75,6 +75,7 @@
@@ -99,42 +101,49 @@
diff --git a/app/src/main/res/layout/assistant_welcome_fragment.xml b/app/src/main/res/layout/assistant_welcome_fragment.xml
index 6d20bdd39..d82ed2b08 100644
--- a/app/src/main/res/layout/assistant_welcome_fragment.xml
+++ b/app/src/main/res/layout/assistant_welcome_fragment.xml
@@ -16,6 +16,9 @@
+
@@ -93,41 +95,48 @@
diff --git a/app/src/main/res/layout/side_menu_fragment.xml b/app/src/main/res/layout/side_menu_fragment.xml
index b5634c3a6..216451fe2 100644
--- a/app/src/main/res/layout/side_menu_fragment.xml
+++ b/app/src/main/res/layout/side_menu_fragment.xml
@@ -34,6 +34,7 @@
android:id="@+id/main_account"
android:onClick="@{() -> viewModel.defaultAccount.accountsSettingsListener.onAccountClicked(viewModel.defaultAccount.identity)}"
android:enabled="@{viewModel.defaultAccountFound}"
+ android:visibility="@{viewModel.showAccounts ? View.VISIBLE : View.GONE}"
android:layout_width="match_parent"
android:layout_height="70dp"
android:background="?attr/lightToolbarBackgroundColor">
@@ -91,6 +92,7 @@