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

Commit 69513979 authored by Ricki Hirner's avatar Ricki Hirner
Browse files

AccountActivity: use ViewModel, RecyclerView

parent 6153b3aa
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -19,7 +19,7 @@ android {
    defaultConfig {
        applicationId "at.bitfire.davdroid"

        versionCode 275
        versionCode 276
        buildConfigField "long", "buildTime", System.currentTimeMillis() + "L"
        buildConfigField "boolean", "customCerts", "true"

+11 −0
Original line number Diff line number Diff line
package at.bitfire.davdroid

import android.content.ContentProviderClient
import android.os.Build

fun ContentProviderClient.closeCompat() {
    if (Build.VERSION.SDK_INT >= 24)
        close()
    else
        release()
}
+8 −4
Original line number Diff line number Diff line
@@ -65,10 +65,10 @@ class DavService: Service() {
            when (intent.action) {
                ACTION_REFRESH_COLLECTIONS ->
                    if (runningRefresh.add(id)) {
                        thread { refreshCollections(id) }
                        refreshingStatusListeners.forEach { listener ->
                            listener.get()?.onDavRefreshStatusChanged(id, true)
                        }
                        thread { refreshCollections(id) }
                    }

                ACTION_FORCE_SYNC -> {
@@ -93,6 +93,7 @@ class DavService: Service() {

    interface RefreshingStatusListener {
        fun onDavRefreshStatusChanged(id: Long, refreshing: Boolean)
        fun onDavRefreshFinished(id: Long)
    }

    private val binder = InfoBinder()
@@ -100,9 +101,9 @@ class DavService: Service() {
    inner class InfoBinder: Binder() {
        fun isRefreshing(id: Long) = runningRefresh.contains(id)

        fun addRefreshingStatusListener(listener: RefreshingStatusListener, callImmediate: Boolean) {
        fun addRefreshingStatusListener(listener: RefreshingStatusListener, callImmediateIfRunning: Boolean) {
            refreshingStatusListeners += WeakReference<RefreshingStatusListener>(listener)
            if (callImmediate)
            if (callImmediateIfRunning)
                runningRefresh.forEach { id -> listener.onDavRefreshStatusChanged(id, true) }
        }

@@ -400,7 +401,10 @@ class DavService: Service() {
                        .notify(service.toString(), NotificationUtils.NOTIFY_REFRESH_COLLECTIONS, notify)
            } finally {
                runningRefresh.remove(service)
                refreshingStatusListeners.forEach { it.get()?.onDavRefreshStatusChanged(service, false) }
                refreshingStatusListeners.mapNotNull { it.get() }.forEach {
                    it.onDavRefreshStatusChanged(service, false)
                    it.onDavRefreshFinished(service)
                }
            }
        }

+22 −0
Original line number Diff line number Diff line
@@ -8,11 +8,17 @@

package at.bitfire.davdroid

import android.accounts.Account
import android.annotation.TargetApi
import android.content.ContentProviderClient
import android.content.ContentResolver
import android.content.Context
import android.net.ConnectivityManager
import android.os.Build
import android.os.Bundle
import android.provider.CalendarContract
import at.bitfire.davdroid.log.Logger
import at.bitfire.ical4android.TaskProvider
import okhttp3.HttpUrl
import org.xbill.DNS.*
import java.util.*
@@ -28,6 +34,7 @@ object DavUtils {
        return String.format("#%06X%02X", color, alpha)
    }


    fun lastSegmentOfUrl(url: HttpUrl): String {
        // the list returned by HttpUrl.pathSegments() is unmodifiable, so we have to create a copy
        val segments = LinkedList<String>(url.pathSegments())
@@ -79,4 +86,19 @@ object DavUtils {
        return paths
    }


    fun requestSync(context: Context, account: Account) {
        val authorities = arrayOf(
                context.getString(R.string.address_books_authority),
                CalendarContract.AUTHORITY,
                TaskProvider.ProviderName.OpenTasks.authority
        )

        for (authority in authorities) {
            val extras = Bundle(2)
            extras.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, true)        // manual sync
            extras.putBoolean(ContentResolver.SYNC_EXTRAS_EXPEDITED, true)     // run immediately (don't queue)
            ContentResolver.requestSync(account, authority, extras)
        }
    }
}
+2 −1
Original line number Diff line number Diff line
@@ -53,7 +53,8 @@ data class CollectionInfo(
        var source: String? = null,

        // non-persistent properties
        var confirmed: Boolean = false
        var confirmed: Boolean = false,
        var uiEnabled: Boolean = true
): Parcelable {

    enum class Type {
Loading