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 @@