mirror of
https://gitlab.linphone.org/BC/public/linphone-android.git
synced 2026-05-03 15:26:27 +00:00
Store selected contacts list filter & show favorites user preferences to re-use them later
This commit is contained in:
parent
5cc491335c
commit
8a410fc77f
4 changed files with 72 additions and 26 deletions
|
|
@ -47,4 +47,7 @@ fec_enabled=1
|
||||||
[magic_search]
|
[magic_search]
|
||||||
return_empty_friends=1
|
return_empty_friends=1
|
||||||
|
|
||||||
|
[ui]
|
||||||
|
contacts_filter=sip.linphone.org
|
||||||
|
|
||||||
## End of default rc
|
## End of default rc
|
||||||
|
|
|
||||||
|
|
@ -442,6 +442,13 @@ class CoreContext @UiThread constructor(val context: Context) : HandlerThread("C
|
||||||
|
|
||||||
core.config.setBool("magic_search", "return_empty_friends", true)
|
core.config.setBool("magic_search", "return_empty_friends", true)
|
||||||
Log.i("$TAG Showing 'empty' friends enabled")
|
Log.i("$TAG Showing 'empty' friends enabled")
|
||||||
|
|
||||||
|
if (LinphoneUtils.getDefaultAccount()?.params?.domain == corePreferences.defaultDomain) {
|
||||||
|
corePreferences.contactsFilter = corePreferences.defaultDomain
|
||||||
|
Log.i(
|
||||||
|
"$TAG Setting default contacts list filter to [${corePreferences.contactsFilter}]"
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
corePreferences.linphoneConfigurationVersion = currentVersion
|
corePreferences.linphoneConfigurationVersion = currentVersion
|
||||||
|
|
|
||||||
|
|
@ -57,6 +57,13 @@ class CorePreferences @UiThread constructor(private val context: Context) {
|
||||||
config.setBool("app", "first_6.0_launch", value)
|
config.setBool("app", "first_6.0_launch", value)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@get:WorkerThread @set:WorkerThread
|
||||||
|
var linphoneConfigurationVersion: Int
|
||||||
|
get() = config.getInt("app", "config_version", 52005)
|
||||||
|
set(value) {
|
||||||
|
config.setInt("app", "config_version", value)
|
||||||
|
}
|
||||||
|
|
||||||
@get:WorkerThread
|
@get:WorkerThread
|
||||||
val checkForUpdateServerUrl: String
|
val checkForUpdateServerUrl: String
|
||||||
get() = config.getString("misc", "version_check_url_root", "").orEmpty()
|
get() = config.getString("misc", "version_check_url_root", "").orEmpty()
|
||||||
|
|
@ -82,7 +89,7 @@ class CorePreferences @UiThread constructor(private val context: Context) {
|
||||||
config.setBool("app", "keep_service_alive", value)
|
config.setBool("app", "keep_service_alive", value)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Calls settings
|
/* Call settings */
|
||||||
|
|
||||||
// This won't be done if bluetooth or wired headset is used
|
// This won't be done if bluetooth or wired headset is used
|
||||||
@get:WorkerThread @set:WorkerThread
|
@get:WorkerThread @set:WorkerThread
|
||||||
|
|
@ -106,14 +113,32 @@ class CorePreferences @UiThread constructor(private val context: Context) {
|
||||||
config.setBool("app", "show_confirmation_dialog_zrtp_trust_call", value)
|
config.setBool("app", "show_confirmation_dialog_zrtp_trust_call", value)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Voice Recordings */
|
/* Contacts related */
|
||||||
|
|
||||||
|
@get:WorkerThread @set:WorkerThread
|
||||||
|
var contactsFilter: String
|
||||||
|
get() = config.getString("ui", "contacts_filter", "")!! // Default value must be empty!
|
||||||
|
set(value) {
|
||||||
|
config.setString("ui", "contacts_filter", value)
|
||||||
|
}
|
||||||
|
|
||||||
|
@get:WorkerThread @set:WorkerThread
|
||||||
|
var showFavoriteContacts: Boolean
|
||||||
|
get() = config.getBool("ui", "show_favorites_contacts", true)
|
||||||
|
set(value) {
|
||||||
|
config.setBool("ui", "show_favorites_contacts", value)
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Voice recordings related */
|
||||||
|
|
||||||
@get:WorkerThread @set:WorkerThread
|
@get:WorkerThread @set:WorkerThread
|
||||||
var voiceRecordingMaxDuration: Int
|
var voiceRecordingMaxDuration: Int
|
||||||
get() = config.getInt("app", "voice_recording_max_duration", 600000) // in ms
|
get() = config.getInt("app", "voice_recording_max_duration", 600000) // in ms
|
||||||
set(value) = config.setInt("app", "voice_recording_max_duration", value)
|
set(value) = config.setInt("app", "voice_recording_max_duration", value)
|
||||||
|
|
||||||
/** -1 means auto, 0 no, 1 yes */
|
/* User interface related */
|
||||||
|
|
||||||
|
// -1 means auto, 0 no, 1 yes
|
||||||
@get:WorkerThread @set:WorkerThread
|
@get:WorkerThread @set:WorkerThread
|
||||||
var darkMode: Int
|
var darkMode: Int
|
||||||
get() {
|
get() {
|
||||||
|
|
@ -124,14 +149,7 @@ class CorePreferences @UiThread constructor(private val context: Context) {
|
||||||
config.setInt("app", "dark_mode", value)
|
config.setInt("app", "dark_mode", value)
|
||||||
}
|
}
|
||||||
|
|
||||||
@get:WorkerThread @set:WorkerThread
|
// Allows to make screenshots
|
||||||
var linphoneConfigurationVersion: Int
|
|
||||||
get() = config.getInt("app", "config_version", 52005)
|
|
||||||
set(value) {
|
|
||||||
config.setInt("app", "config_version", value)
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Allows to make screenshots */
|
|
||||||
@get:WorkerThread @set:WorkerThread
|
@get:WorkerThread @set:WorkerThread
|
||||||
var enableSecureMode: Boolean
|
var enableSecureMode: Boolean
|
||||||
get() = config.getBool("ui", "enable_secure_mode", true)
|
get() = config.getBool("ui", "enable_secure_mode", true)
|
||||||
|
|
@ -198,6 +216,8 @@ class CorePreferences @UiThread constructor(private val context: Context) {
|
||||||
val hideAssistantThirdPartySipAccount: Boolean
|
val hideAssistantThirdPartySipAccount: Boolean
|
||||||
get() = config.getBool("ui", "assistant_hide_third_party_account", false)
|
get() = config.getBool("ui", "assistant_hide_third_party_account", false)
|
||||||
|
|
||||||
|
/* Paths */
|
||||||
|
|
||||||
@get:WorkerThread
|
@get:WorkerThread
|
||||||
val defaultDomain: String
|
val defaultDomain: String
|
||||||
get() = config.getString("app", "default_domain", "sip.linphone.org")!!
|
get() = config.getString("app", "default_domain", "sip.linphone.org")!!
|
||||||
|
|
|
||||||
|
|
@ -94,7 +94,7 @@ class ContactsListViewModel @UiThread constructor() : AbstractMainViewModel() {
|
||||||
|
|
||||||
init {
|
init {
|
||||||
fetchInProgress.value = true
|
fetchInProgress.value = true
|
||||||
showFavourites.value = true
|
showFavourites.value = corePreferences.showFavoriteContacts
|
||||||
|
|
||||||
coreContext.postOnCoreThread { core ->
|
coreContext.postOnCoreThread { core ->
|
||||||
updateDomainFilter()
|
updateDomainFilter()
|
||||||
|
|
@ -103,9 +103,11 @@ class ContactsListViewModel @UiThread constructor() : AbstractMainViewModel() {
|
||||||
magicSearch = core.createMagicSearch()
|
magicSearch = core.createMagicSearch()
|
||||||
magicSearch.limitedSearch = false
|
magicSearch.limitedSearch = false
|
||||||
magicSearch.addListener(magicSearchListener)
|
magicSearch.addListener(magicSearchListener)
|
||||||
}
|
|
||||||
|
|
||||||
applyFilter(currentFilter)
|
coreContext.postOnMainThread {
|
||||||
|
applyFilter(currentFilter)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@UiThread
|
@UiThread
|
||||||
|
|
@ -139,14 +141,21 @@ class ContactsListViewModel @UiThread constructor() : AbstractMainViewModel() {
|
||||||
|
|
||||||
@UiThread
|
@UiThread
|
||||||
fun changeContactsFilter(onlyLinphoneContacts: Boolean, onlySipContacts: Boolean) {
|
fun changeContactsFilter(onlyLinphoneContacts: Boolean, onlySipContacts: Boolean) {
|
||||||
domainFilter = if (onlyLinphoneContacts) {
|
coreContext.postOnCoreThread {
|
||||||
corePreferences.defaultDomain
|
domainFilter = if (onlyLinphoneContacts) {
|
||||||
} else if (onlySipContacts) {
|
corePreferences.defaultDomain
|
||||||
"*"
|
} else if (onlySipContacts) {
|
||||||
} else {
|
"*"
|
||||||
""
|
} else {
|
||||||
|
""
|
||||||
|
}
|
||||||
|
corePreferences.contactsFilter = domainFilter
|
||||||
|
Log.i("$TAG Newly set filter is [${corePreferences.contactsFilter}]")
|
||||||
|
|
||||||
|
coreContext.postOnMainThread {
|
||||||
|
applyFilter(currentFilter)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
applyFilter(currentFilter)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun areAllContactsDisplayed(): Boolean {
|
fun areAllContactsDisplayed(): Boolean {
|
||||||
|
|
@ -155,7 +164,9 @@ class ContactsListViewModel @UiThread constructor() : AbstractMainViewModel() {
|
||||||
|
|
||||||
@UiThread
|
@UiThread
|
||||||
fun toggleFavouritesVisibility() {
|
fun toggleFavouritesVisibility() {
|
||||||
showFavourites.value = showFavourites.value == false
|
val show = showFavourites.value == false
|
||||||
|
showFavourites.value = show
|
||||||
|
corePreferences.showFavoriteContacts = show
|
||||||
}
|
}
|
||||||
|
|
||||||
@WorkerThread
|
@WorkerThread
|
||||||
|
|
@ -163,10 +174,15 @@ class ContactsListViewModel @UiThread constructor() : AbstractMainViewModel() {
|
||||||
val defaultAccount = coreContext.core.defaultAccount
|
val defaultAccount = coreContext.core.defaultAccount
|
||||||
val defaultDomain = defaultAccount?.params?.domain == corePreferences.defaultDomain
|
val defaultDomain = defaultAccount?.params?.domain == corePreferences.defaultDomain
|
||||||
isDefaultAccountLinphone.postValue(defaultDomain)
|
isDefaultAccountLinphone.postValue(defaultDomain)
|
||||||
domainFilter = if (isEndToEndEncryptionMandatory()) {
|
|
||||||
corePreferences.defaultDomain
|
Log.i("$TAG Currently selected filter is [${corePreferences.contactsFilter}]")
|
||||||
} else {
|
domainFilter = corePreferences.contactsFilter
|
||||||
"*"
|
if (isEndToEndEncryptionMandatory() && (domainFilter.isEmpty() || domainFilter == "*")) {
|
||||||
|
domainFilter = corePreferences.defaultDomain
|
||||||
|
corePreferences.contactsFilter = domainFilter
|
||||||
|
Log.i(
|
||||||
|
"$TAG Filter updated to [${corePreferences.contactsFilter}] to match mandatory IM encryption"
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue