Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 90c503fc authored by Ricki Hirner's avatar Ricki Hirner
Browse files

add "show only personal" as setting

parent 6411dfef
Loading
Loading
Loading
Loading
+14 −2
Original line number Diff line number Diff line
@@ -377,8 +377,20 @@ class AccountSettings(

    // UI settings

    fun getShowOnlyPersonal(): Boolean =
            accountManager.getUserData(account, KEY_SHOW_ONLY_PERSONAL) != null
    /**
     * Whether only personal collections should be shown.
     *
     * @return [Pair] of values:
     *
     *   1. (first) whether only personal collections should be shown
     *   2. (second) whether the user shall be able to change the setting (= setting not locked)
     */
    fun getShowOnlyPersonal(): Pair<Boolean, Boolean> =
            when (settings.getIntOrNull(KEY_SHOW_ONLY_PERSONAL)) {
                0 -> Pair(false, false)
                1 -> Pair(true, false)
                else /* including -1 */ -> Pair(accountManager.getUserData(account, KEY_SHOW_ONLY_PERSONAL) != null, true)
            }

    fun setShowOnlyPersonal(showOnlyPersonal: Boolean) {
        accountManager.setUserData(account, KEY_SHOW_ONLY_PERSONAL, if (showOnlyPersonal) "1" else null)
+1 −1
Original line number Diff line number Diff line
@@ -93,7 +93,7 @@ class SettingsManager private constructor(
        for (provider in providers)
            try {
                val value = reader(provider)
                Logger.log.finer("${provider::class.java.simpleName}: value = $value")
                Logger.log.finer("${provider::class.java.simpleName}: $key = $value")
                if (value != null) {
                    Logger.log.fine("Looked up setting $key -> $value")
                    return value
+5 −1
Original line number Diff line number Diff line
@@ -242,6 +242,7 @@ class AccountActivity: AppCompatActivity() {
        val calDavService = MutableLiveData<Long>()

        val showOnlyPersonal = MutableLiveData<Boolean>()
        val showOnlyPersonal_writable = MutableLiveData<Boolean>()


        init {
@@ -249,7 +250,10 @@ class AccountActivity: AppCompatActivity() {
                cardDavService.postValue(db.serviceDao().getIdByAccountAndType(account.name, Service.TYPE_CARDDAV))
                calDavService.postValue(db.serviceDao().getIdByAccountAndType(account.name, Service.TYPE_CALDAV))

                showOnlyPersonal.postValue(accountSettings.getShowOnlyPersonal())
                accountSettings.getShowOnlyPersonal().let { (value, locked) ->
                    showOnlyPersonal.postValue(value)
                    showOnlyPersonal_writable.postValue(locked)
                }
            }
        }

+11 −3
Original line number Diff line number Diff line
@@ -6,7 +6,6 @@ import android.os.Bundle
import android.os.IBinder
import android.provider.CalendarContract
import android.provider.ContactsContract
import android.util.Log
import android.view.*
import android.widget.PopupMenu
import androidx.annotation.WorkerThread
@@ -30,6 +29,8 @@ import at.bitfire.davdroid.model.AppDatabase
import at.bitfire.davdroid.model.Collection
import at.bitfire.davdroid.resource.LocalAddressBook
import at.bitfire.davdroid.resource.TaskUtils
import at.bitfire.davdroid.settings.AccountSettings
import at.bitfire.davdroid.settings.SettingsManager
import kotlinx.android.synthetic.main.account_collections.*
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
@@ -119,8 +120,15 @@ abstract class CollectionsFragment: Fragment(), SwipeRefreshLayout.OnRefreshList
    }

    override fun onPrepareOptionsMenu(menu: Menu) {
        accountModel.showOnlyPersonal.value?.let { showOnlyPersonal ->
            menu.findItem(R.id.showOnlyPersonal).isChecked = showOnlyPersonal
        val settings = SettingsManager.getInstance(requireActivity())

        menu.findItem(R.id.showOnlyPersonal).let { showOnlyPersonal ->
            accountModel.showOnlyPersonal.value?.let { value ->
                showOnlyPersonal.isChecked = value
            }
            accountModel.showOnlyPersonal_writable.value?.let { writable ->
                showOnlyPersonal.isEnabled = writable
            }
        }
    }