mirror of
https://gitlab.linphone.org/BC/public/linphone-android.git
synced 2026-01-17 11:28:06 +00:00
Added some customization settings
This commit is contained in:
parent
37af11d3e1
commit
7d7b037741
12 changed files with 83 additions and 8 deletions
|
|
@ -120,19 +120,49 @@ class CorePreferences @UiThread constructor(private val context: Context) {
|
|||
}
|
||||
|
||||
@get:WorkerThread
|
||||
private val darkModeAllowed: Boolean
|
||||
get() = config.getBool("app", "dark_mode_allowed", true)
|
||||
val darkModeAllowed: Boolean
|
||||
get() = config.getBool("ui", "dark_mode_allowed", true)
|
||||
|
||||
// Will disable chat feature completely
|
||||
@get:WorkerThread
|
||||
val disableChat: Boolean
|
||||
get() = config.getBool("app", "disable_chat_feature", false)
|
||||
get() = config.getBool("ui", "disable_chat_feature", false)
|
||||
|
||||
// Will disable meetings feature completely
|
||||
@get:WorkerThread
|
||||
val disableMeetings: Boolean
|
||||
get() = config.getBool("app", "disable_meetings_feature", false)
|
||||
|
||||
@get:WorkerThread
|
||||
val disableBroadcasts: Boolean
|
||||
get() = config.getBool("ui", "disable_broadcast_feature", true) // TODO: not implemented
|
||||
|
||||
@get:WorkerThread
|
||||
val disableCallRecordings: Boolean // TODO FIXME: also disable recording in call
|
||||
get() = config.getBool("ui", "disable_call_recordings_feature", true) // TODO: not implemented
|
||||
|
||||
@get:WorkerThread
|
||||
val oneAccountMax: Boolean
|
||||
get() = config.getBool("ui", "one_account_max", false)
|
||||
|
||||
@get:WorkerThread
|
||||
val hideSettings: Boolean
|
||||
get() = config.getBool("ui", "hide_settings", false)
|
||||
|
||||
@get:WorkerThread
|
||||
val hideAccountSettings: Boolean
|
||||
get() = config.getBool("ui", "hide_account_settings", false)
|
||||
|
||||
@get:WorkerThread
|
||||
val hideAssistantCreateAccount: Boolean
|
||||
get() = config.getBool("ui", "assistant_hide_create_account", false)
|
||||
|
||||
@get:WorkerThread
|
||||
val hideAssistantScanQrCode: Boolean
|
||||
get() = config.getBool("ui", "assistant_disable_qr_code", false)
|
||||
|
||||
@get:WorkerThread
|
||||
val hideAssistantThirdPartySipAccount: Boolean
|
||||
get() = config.getBool("ui", "assistant_hide_third_party_account", false)
|
||||
|
||||
@get:WorkerThread
|
||||
val defaultDomain: String
|
||||
get() = config.getString("app", "default_domain", "sip.linphone.org")!!
|
||||
|
|
|
|||
|
|
@ -37,6 +37,12 @@ class LandingViewModel @UiThread constructor() : ViewModel() {
|
|||
|
||||
val sipIdentity = MutableLiveData<String>()
|
||||
|
||||
val hideCreateAccount = MutableLiveData<Boolean>()
|
||||
|
||||
val hideScanQrCode = MutableLiveData<Boolean>()
|
||||
|
||||
val hideThirdPartyAccount = MutableLiveData<Boolean>()
|
||||
|
||||
val redirectToDigestAuthEvent: MutableLiveData<Event<String>> by lazy {
|
||||
MutableLiveData<Event<String>>()
|
||||
}
|
||||
|
|
@ -51,6 +57,9 @@ class LandingViewModel @UiThread constructor() : ViewModel() {
|
|||
coreContext.postOnCoreThread { core ->
|
||||
// Prevent user from leaving assistant if no account was configured yet
|
||||
showBackButton.postValue(core.accountList.isNotEmpty())
|
||||
hideCreateAccount.postValue(corePreferences.hideAssistantCreateAccount)
|
||||
hideScanQrCode.postValue(corePreferences.hideAssistantScanQrCode)
|
||||
hideThirdPartyAccount.postValue(corePreferences.hideAssistantThirdPartySipAccount)
|
||||
conditionsAndPrivacyPolicyAccepted = corePreferences.conditionsAndPrivacyPolicyAccepted
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ import java.util.Calendar
|
|||
import java.util.Locale
|
||||
import java.util.TimeZone
|
||||
import org.linphone.LinphoneApplication.Companion.coreContext
|
||||
import org.linphone.LinphoneApplication.Companion.corePreferences
|
||||
import org.linphone.R
|
||||
import org.linphone.core.Address
|
||||
import org.linphone.core.ChatRoom
|
||||
|
|
@ -76,6 +77,8 @@ class ScheduleMeetingViewModel @UiThread constructor() : ViewModel() {
|
|||
|
||||
val conferenceCreatedEvent = MutableLiveData<Event<Boolean>>()
|
||||
|
||||
val hideBroadcast = MutableLiveData<Boolean>()
|
||||
|
||||
private var startTimestamp = 0L
|
||||
private var endTimestamp = 0L
|
||||
|
||||
|
|
@ -160,6 +163,9 @@ class ScheduleMeetingViewModel @UiThread constructor() : ViewModel() {
|
|||
}
|
||||
|
||||
init {
|
||||
coreContext.postOnCoreThread {
|
||||
hideBroadcast.postValue(corePreferences.disableBroadcasts)
|
||||
}
|
||||
isBroadcastSelected.value = false
|
||||
showBroadcastHelp.value = false
|
||||
allDayMeeting.value = false
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import androidx.annotation.UiThread
|
|||
import androidx.lifecycle.MutableLiveData
|
||||
import androidx.lifecycle.ViewModel
|
||||
import org.linphone.LinphoneApplication.Companion.coreContext
|
||||
import org.linphone.LinphoneApplication.Companion.corePreferences
|
||||
import org.linphone.core.Account
|
||||
import org.linphone.core.DialPlan
|
||||
import org.linphone.core.Factory
|
||||
|
|
@ -46,6 +47,8 @@ class AccountProfileViewModel @UiThread constructor() : ViewModel() {
|
|||
|
||||
val expandDevices = MutableLiveData<Boolean>()
|
||||
|
||||
val hideAccountSettings = MutableLiveData<Boolean>()
|
||||
|
||||
val accountRemovedEvent: MutableLiveData<Event<Boolean>> by lazy {
|
||||
MutableLiveData<Event<Boolean>>()
|
||||
}
|
||||
|
|
@ -57,6 +60,7 @@ class AccountProfileViewModel @UiThread constructor() : ViewModel() {
|
|||
expandDevices.value = false // TODO: set to true when feature will be available
|
||||
|
||||
coreContext.postOnCoreThread {
|
||||
hideAccountSettings.postValue(corePreferences.hideAccountSettings)
|
||||
dialPlansLabelList.add("") // To allow removing selected dial plan
|
||||
|
||||
val dialPlans = Factory.instance().dialPlans.toList()
|
||||
|
|
|
|||
|
|
@ -87,6 +87,7 @@ class SettingsViewModel @UiThread constructor() : ViewModel() {
|
|||
// Contacts settings
|
||||
val showContactsSettings = MutableLiveData<Boolean>()
|
||||
|
||||
val ldapAvailable = MutableLiveData<Boolean>()
|
||||
val ldapServers = MutableLiveData<List<CardDavLdapModel>>()
|
||||
|
||||
val cardDavFriendsLists = MutableLiveData<List<CardDavLdapModel>>()
|
||||
|
|
@ -123,6 +124,7 @@ class SettingsViewModel @UiThread constructor() : ViewModel() {
|
|||
val useWifiOnly = MutableLiveData<Boolean>()
|
||||
|
||||
// User Interface settings
|
||||
val showThemeSelector = MutableLiveData<Boolean>()
|
||||
val theme = MutableLiveData<Int>()
|
||||
val availableThemesNames = arrayListOf(
|
||||
AppUtils.getString(R.string.settings_user_interface_auto_theme_label),
|
||||
|
|
@ -146,6 +148,8 @@ class SettingsViewModel @UiThread constructor() : ViewModel() {
|
|||
hideVideoCallSetting.postValue(!core.isVideoEnabled)
|
||||
showConversationsSettings.postValue(!corePreferences.disableChat)
|
||||
showMeetingsSettings.postValue(!corePreferences.disableMeetings)
|
||||
ldapAvailable.postValue(core.ldapAvailable())
|
||||
showThemeSelector.postValue(corePreferences.darkModeAllowed)
|
||||
}
|
||||
showContactsSettings.value = true
|
||||
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ import androidx.annotation.WorkerThread
|
|||
import androidx.lifecycle.MutableLiveData
|
||||
import androidx.lifecycle.ViewModel
|
||||
import org.linphone.LinphoneApplication.Companion.coreContext
|
||||
import org.linphone.LinphoneApplication.Companion.corePreferences
|
||||
import org.linphone.core.Account
|
||||
import org.linphone.core.Core
|
||||
import org.linphone.core.CoreListenerStub
|
||||
|
|
@ -39,6 +40,12 @@ class DrawerMenuViewModel @UiThread constructor() : ViewModel() {
|
|||
|
||||
val accounts = MutableLiveData<ArrayList<AccountModel>>()
|
||||
|
||||
val hideAddAccount = MutableLiveData<Boolean>()
|
||||
|
||||
val hideRecordings = MutableLiveData<Boolean>()
|
||||
|
||||
val hideSettings = MutableLiveData<Boolean>()
|
||||
|
||||
val startAssistantEvent: MutableLiveData<Event<Boolean>> by lazy {
|
||||
MutableLiveData<Event<Boolean>>()
|
||||
}
|
||||
|
|
@ -96,6 +103,9 @@ class DrawerMenuViewModel @UiThread constructor() : ViewModel() {
|
|||
coreContext.postOnCoreThread { core ->
|
||||
core.addListener(coreListener)
|
||||
|
||||
hideRecordings.postValue(corePreferences.disableCallRecordings)
|
||||
hideSettings.postValue(corePreferences.hideSettings)
|
||||
|
||||
computeAccountsList()
|
||||
}
|
||||
}
|
||||
|
|
@ -140,5 +150,7 @@ class DrawerMenuViewModel @UiThread constructor() : ViewModel() {
|
|||
list.add(model)
|
||||
}
|
||||
accounts.postValue(list)
|
||||
|
||||
hideAddAccount.postValue(corePreferences.oneAccountMax && list.isNotEmpty())
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -516,6 +516,7 @@
|
|||
android:background="@drawable/action_background"
|
||||
android:text="@string/manage_account_settings"
|
||||
android:drawableStart="@drawable/gear"
|
||||
android:visibility="@{viewModel.hideAccountSettings ? View.GONE : View.VISIBLE}"
|
||||
app:layout_constraintTop_toTopOf="@id/actions_background"
|
||||
app:layout_constraintStart_toStartOf="@id/actions_background"
|
||||
app:layout_constraintEnd_toEndOf="@id/actions_background"/>
|
||||
|
|
|
|||
|
|
@ -169,6 +169,7 @@
|
|||
android:text="@string/assistant_scan_qr_code"
|
||||
android:drawableStart="@drawable/qr_code"
|
||||
android:drawablePadding="8dp"
|
||||
android:visibility="@{viewModel.hideScanQrCode ? View.GONE : View.VISIBLE}"
|
||||
app:drawableTint="@color/secondary_button_label_color"
|
||||
app:layout_constraintWidth_max="@dimen/button_max_width"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
|
|
@ -187,6 +188,7 @@
|
|||
android:paddingStart="20dp"
|
||||
android:paddingEnd="20dp"
|
||||
android:text="@string/assistant_login_third_party_sip_account"
|
||||
android:visibility="@{viewModel.hideThirdPartyAccount ? View.GONE : View.VISIBLE}"
|
||||
app:layout_constraintWidth_max="@dimen/button_max_width"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
|
|
@ -202,6 +204,7 @@
|
|||
android:text="@string/assistant_no_account_yet"
|
||||
android:textSize="14sp"
|
||||
android:textColor="?attr/color_main2_700"
|
||||
android:visibility="@{viewModel.hideCreateAccount ? View.GONE : View.VISIBLE}"
|
||||
app:layout_constraintHorizontal_chainStyle="packed"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@id/register"
|
||||
|
|
@ -220,6 +223,7 @@
|
|||
android:paddingStart="20dp"
|
||||
android:paddingEnd="20dp"
|
||||
android:text="@string/assistant_account_register"
|
||||
android:visibility="@{viewModel.hideCreateAccount ? View.GONE : View.VISIBLE}"
|
||||
app:layout_constraintVertical_bias="1"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@id/no_account_yet"
|
||||
|
|
|
|||
|
|
@ -115,6 +115,7 @@
|
|||
android:text="@string/drawer_menu_add_account"
|
||||
android:drawableStart="@drawable/plus_circle"
|
||||
android:drawablePadding="8dp"
|
||||
android:visibility="@{viewModel.hideAddAccount ? View.GONE : View.VISIBLE}"
|
||||
app:drawableTint="@color/secondary_button_label_color"
|
||||
app:layout_constraintWidth_max="@dimen/button_max_width"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
|
|
@ -146,6 +147,7 @@
|
|||
android:drawableStart="@drawable/gear"
|
||||
android:drawableEnd="@drawable/caret_right"
|
||||
android:drawablePadding="8dp"
|
||||
android:visibility="@{viewModel.hideSettings ? View.GONE : View.VISIBLE}"
|
||||
app:drawableTint="?attr/color_main2_500"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
|
|
@ -164,6 +166,7 @@
|
|||
android:drawableStart="@drawable/microphone_stage"
|
||||
android:drawableEnd="@drawable/caret_right"
|
||||
android:drawablePadding="8dp"
|
||||
android:visibility="@{viewModel.hideRecordings ? View.GONE : View.VISIBLE}"
|
||||
app:drawableTint="?attr/color_main2_500"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
|
|
|
|||
|
|
@ -97,7 +97,7 @@
|
|||
android:paddingBottom="@dimen/primary_secondary_buttons_label_padding"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingEnd="16dp"
|
||||
android:visibility="@{viewModel.isBroadcastSelected ? View.GONE : View.VISIBLE}"
|
||||
android:visibility="@{viewModel.hideBroadcast || viewModel.isBroadcastSelected ? View.GONE : View.VISIBLE}"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@id/broadcast"/>
|
||||
|
|
@ -123,7 +123,7 @@
|
|||
android:paddingBottom="@dimen/primary_secondary_buttons_label_padding"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingEnd="16dp"
|
||||
android:visibility="@{viewModel.isBroadcastSelected ? View.GONE : View.VISIBLE}"
|
||||
android:visibility="@{viewModel.hideBroadcast || viewModel.isBroadcastSelected ? View.GONE : View.VISIBLE}"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@id/meeting_selected"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@
|
|||
android:ellipsize="end"
|
||||
android:drawableEnd="@drawable/caret_right"
|
||||
android:drawableTint="?attr/color_main2_600"
|
||||
android:visibility="@{viewModel.ldapAvailable ? View.VISIBLE : View.GONE}"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@id/existing_ldap_servers"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
|
|
|
|||
|
|
@ -248,6 +248,7 @@
|
|||
android:text="@string/settings_user_interface_title"
|
||||
android:drawableEnd="@{viewModel.expandUserInterface ? @drawable/caret_up : @drawable/caret_down, default=@drawable/caret_up}"
|
||||
android:drawableTint="?attr/color_main2_600"
|
||||
android:visibility="@{viewModel.showThemeSelector ? View.VISIBLE : View.GONE}"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/network_settings"/>
|
||||
|
|
@ -260,7 +261,7 @@
|
|||
android:layout_marginTop="8dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:visibility="@{viewModel.expandUserInterface ? View.VISIBLE : View.GONE}"
|
||||
android:visibility="@{viewModel.showThemeSelector && viewModel.expandUserInterface ? View.VISIBLE : View.GONE}"
|
||||
app:layout_constraintTop_toBottomOf="@id/user_interface"
|
||||
bind:viewModel="@{viewModel}"/>
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue