mirror of
https://gitlab.linphone.org/BC/public/linphone-android.git
synced 2026-01-17 11:28:06 +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]
|
||||
return_empty_friends=1
|
||||
|
||||
[ui]
|
||||
contacts_filter=sip.linphone.org
|
||||
|
||||
## 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)
|
||||
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
|
||||
|
|
|
|||
|
|
@ -57,6 +57,13 @@ class CorePreferences @UiThread constructor(private val context: Context) {
|
|||
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
|
||||
val checkForUpdateServerUrl: String
|
||||
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)
|
||||
}
|
||||
|
||||
// Calls settings
|
||||
/* Call settings */
|
||||
|
||||
// This won't be done if bluetooth or wired headset is used
|
||||
@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)
|
||||
}
|
||||
|
||||
/* 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
|
||||
var voiceRecordingMaxDuration: Int
|
||||
get() = config.getInt("app", "voice_recording_max_duration", 600000) // in ms
|
||||
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
|
||||
var darkMode: Int
|
||||
get() {
|
||||
|
|
@ -124,14 +149,7 @@ class CorePreferences @UiThread constructor(private val context: Context) {
|
|||
config.setInt("app", "dark_mode", value)
|
||||
}
|
||||
|
||||
@get:WorkerThread @set:WorkerThread
|
||||
var linphoneConfigurationVersion: Int
|
||||
get() = config.getInt("app", "config_version", 52005)
|
||||
set(value) {
|
||||
config.setInt("app", "config_version", value)
|
||||
}
|
||||
|
||||
/** Allows to make screenshots */
|
||||
// Allows to make screenshots
|
||||
@get:WorkerThread @set:WorkerThread
|
||||
var enableSecureMode: Boolean
|
||||
get() = config.getBool("ui", "enable_secure_mode", true)
|
||||
|
|
@ -198,6 +216,8 @@ class CorePreferences @UiThread constructor(private val context: Context) {
|
|||
val hideAssistantThirdPartySipAccount: Boolean
|
||||
get() = config.getBool("ui", "assistant_hide_third_party_account", false)
|
||||
|
||||
/* Paths */
|
||||
|
||||
@get:WorkerThread
|
||||
val defaultDomain: String
|
||||
get() = config.getString("app", "default_domain", "sip.linphone.org")!!
|
||||
|
|
|
|||
|
|
@ -94,7 +94,7 @@ class ContactsListViewModel @UiThread constructor() : AbstractMainViewModel() {
|
|||
|
||||
init {
|
||||
fetchInProgress.value = true
|
||||
showFavourites.value = true
|
||||
showFavourites.value = corePreferences.showFavoriteContacts
|
||||
|
||||
coreContext.postOnCoreThread { core ->
|
||||
updateDomainFilter()
|
||||
|
|
@ -103,9 +103,11 @@ class ContactsListViewModel @UiThread constructor() : AbstractMainViewModel() {
|
|||
magicSearch = core.createMagicSearch()
|
||||
magicSearch.limitedSearch = false
|
||||
magicSearch.addListener(magicSearchListener)
|
||||
}
|
||||
|
||||
applyFilter(currentFilter)
|
||||
coreContext.postOnMainThread {
|
||||
applyFilter(currentFilter)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@UiThread
|
||||
|
|
@ -139,14 +141,21 @@ class ContactsListViewModel @UiThread constructor() : AbstractMainViewModel() {
|
|||
|
||||
@UiThread
|
||||
fun changeContactsFilter(onlyLinphoneContacts: Boolean, onlySipContacts: Boolean) {
|
||||
domainFilter = if (onlyLinphoneContacts) {
|
||||
corePreferences.defaultDomain
|
||||
} else if (onlySipContacts) {
|
||||
"*"
|
||||
} else {
|
||||
""
|
||||
coreContext.postOnCoreThread {
|
||||
domainFilter = if (onlyLinphoneContacts) {
|
||||
corePreferences.defaultDomain
|
||||
} else if (onlySipContacts) {
|
||||
"*"
|
||||
} else {
|
||||
""
|
||||
}
|
||||
corePreferences.contactsFilter = domainFilter
|
||||
Log.i("$TAG Newly set filter is [${corePreferences.contactsFilter}]")
|
||||
|
||||
coreContext.postOnMainThread {
|
||||
applyFilter(currentFilter)
|
||||
}
|
||||
}
|
||||
applyFilter(currentFilter)
|
||||
}
|
||||
|
||||
fun areAllContactsDisplayed(): Boolean {
|
||||
|
|
@ -155,7 +164,9 @@ class ContactsListViewModel @UiThread constructor() : AbstractMainViewModel() {
|
|||
|
||||
@UiThread
|
||||
fun toggleFavouritesVisibility() {
|
||||
showFavourites.value = showFavourites.value == false
|
||||
val show = showFavourites.value == false
|
||||
showFavourites.value = show
|
||||
corePreferences.showFavoriteContacts = show
|
||||
}
|
||||
|
||||
@WorkerThread
|
||||
|
|
@ -163,10 +174,15 @@ class ContactsListViewModel @UiThread constructor() : AbstractMainViewModel() {
|
|||
val defaultAccount = coreContext.core.defaultAccount
|
||||
val defaultDomain = defaultAccount?.params?.domain == corePreferences.defaultDomain
|
||||
isDefaultAccountLinphone.postValue(defaultDomain)
|
||||
domainFilter = if (isEndToEndEncryptionMandatory()) {
|
||||
corePreferences.defaultDomain
|
||||
} else {
|
||||
"*"
|
||||
|
||||
Log.i("$TAG Currently selected filter is [${corePreferences.contactsFilter}]")
|
||||
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