Loading app/src/main/java/at/bitfire/davdroid/ui/AccountListFragment.kt +45 −0 Original line number Diff line number Diff line Loading @@ -14,6 +14,11 @@ import android.accounts.OnAccountsUpdateListener import android.app.Application import android.content.Context import android.content.Intent import android.net.ConnectivityManager import android.net.Network import android.net.NetworkCapabilities import android.net.NetworkRequest import android.os.Build import android.os.Bundle import android.view.LayoutInflater import android.view.View Loading @@ -28,6 +33,7 @@ import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProviders import at.bitfire.davdroid.R import at.bitfire.davdroid.ui.account.AccountActivity import kotlinx.android.synthetic.main.account_list.* import kotlinx.android.synthetic.main.account_list_item.view.* class AccountListFragment: ListFragment() { Loading @@ -42,6 +48,10 @@ class AccountListFragment: ListFragment() { adapter.addAll(*accounts) }) model.networkAvailable.observe(this, Observer { networkAvailable -> no_network_info.visibility = if (networkAvailable) View.GONE else View.VISIBLE }) return inflater.inflate(R.layout.account_list, container, false) } Loading Loading @@ -81,13 +91,48 @@ class AccountListFragment: ListFragment() { val accounts = MutableLiveData<Array<out Account>>() val networkAvailable = MutableLiveData<Boolean>() private var networkObserver: ConnectivityManager.NetworkCallback? = null private val accountManager = AccountManager.get(getApplication())!! private val connectivityManager = application.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager init { accountManager.addOnAccountsUpdatedListener(this, null, true) if (Build.VERSION.SDK_INT >= 21) { networkAvailable.postValue(false) val networkRequest = NetworkRequest.Builder() .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) .build() networkObserver = object: ConnectivityManager.NetworkCallback() { val availableNetworks = hashSetOf<Network>() override fun onAvailable(network: Network) { availableNetworks += network update() } override fun onLost(network: Network) { availableNetworks -= network update() } private fun update() { networkAvailable.postValue(availableNetworks.isNotEmpty()) } } connectivityManager.registerNetworkCallback(networkRequest, networkObserver) } } override fun onCleared() { accountManager.removeOnAccountsUpdatedListener(this) if (Build.VERSION.SDK_INT >= 21) networkObserver?.let { connectivityManager.unregisterNetworkCallback(it) } } override fun onAccountsUpdated(newAccounts: Array<out Account>) { Loading app/src/main/res/drawable/ic_signal_cellular_off_dark.xml 0 → 100644 +10 −0 Original line number Diff line number Diff line <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24.0" android:viewportHeight="24.0"> <path android:fillAlpha="0.54" android:fillColor="#FF000000" android:pathData="M21,1l-8.59,8.59L21,18.18V1zM4.77,4.5L3.5,5.77l6.36,6.36L1,21h17.73l2,2L22,21.73 4.77,4.5z"/> </vector> app/src/main/res/layout/account_list.xml +11 −0 Original line number Diff line number Diff line Loading @@ -12,6 +12,17 @@ android:layout_height="match_parent" android:orientation="vertical"> <TextView android:id="@+id/no_network_info" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="12dp" android:gravity="center_vertical" android:visibility="gone" android:drawableLeft="@drawable/ic_signal_cellular_off_dark" android:drawablePadding="8dp" android:text="@string/account_list_no_internet"/> <ListView android:id="@android:id/list" android:layout_width="match_parent" Loading app/src/main/res/values/strings.xml +1 −1 Original line number Diff line number Diff line Loading @@ -77,7 +77,7 @@ <string name="navigation_drawer_faq">FAQ</string> <string name="navigation_drawer_forums">Help / Forums</string> <string name="navigation_drawer_donate">Donate</string> <string name="account_list_no_internet">No Internet connectivity. Android will not run synchronization.</string> <string name="account_list_empty">Welcome to DAVx⁵!\n\nYou can add a CalDAV/CardDAV account now.</string> <string name="accounts_global_sync_disabled">System-wide automatic synchronization is disabled</string> <string name="accounts_global_sync_enable">Enable</string> Loading build.gradle +1 −1 Original line number Diff line number Diff line Loading @@ -18,7 +18,7 @@ buildscript { google() } dependencies { classpath 'com.android.tools.build:gradle:3.5.0' classpath 'com.android.tools.build:gradle:3.5.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${versions.kotlin}" classpath "org.jetbrains.dokka:dokka-android-gradle-plugin:${versions.dokka}" } Loading Loading
app/src/main/java/at/bitfire/davdroid/ui/AccountListFragment.kt +45 −0 Original line number Diff line number Diff line Loading @@ -14,6 +14,11 @@ import android.accounts.OnAccountsUpdateListener import android.app.Application import android.content.Context import android.content.Intent import android.net.ConnectivityManager import android.net.Network import android.net.NetworkCapabilities import android.net.NetworkRequest import android.os.Build import android.os.Bundle import android.view.LayoutInflater import android.view.View Loading @@ -28,6 +33,7 @@ import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProviders import at.bitfire.davdroid.R import at.bitfire.davdroid.ui.account.AccountActivity import kotlinx.android.synthetic.main.account_list.* import kotlinx.android.synthetic.main.account_list_item.view.* class AccountListFragment: ListFragment() { Loading @@ -42,6 +48,10 @@ class AccountListFragment: ListFragment() { adapter.addAll(*accounts) }) model.networkAvailable.observe(this, Observer { networkAvailable -> no_network_info.visibility = if (networkAvailable) View.GONE else View.VISIBLE }) return inflater.inflate(R.layout.account_list, container, false) } Loading Loading @@ -81,13 +91,48 @@ class AccountListFragment: ListFragment() { val accounts = MutableLiveData<Array<out Account>>() val networkAvailable = MutableLiveData<Boolean>() private var networkObserver: ConnectivityManager.NetworkCallback? = null private val accountManager = AccountManager.get(getApplication())!! private val connectivityManager = application.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager init { accountManager.addOnAccountsUpdatedListener(this, null, true) if (Build.VERSION.SDK_INT >= 21) { networkAvailable.postValue(false) val networkRequest = NetworkRequest.Builder() .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) .build() networkObserver = object: ConnectivityManager.NetworkCallback() { val availableNetworks = hashSetOf<Network>() override fun onAvailable(network: Network) { availableNetworks += network update() } override fun onLost(network: Network) { availableNetworks -= network update() } private fun update() { networkAvailable.postValue(availableNetworks.isNotEmpty()) } } connectivityManager.registerNetworkCallback(networkRequest, networkObserver) } } override fun onCleared() { accountManager.removeOnAccountsUpdatedListener(this) if (Build.VERSION.SDK_INT >= 21) networkObserver?.let { connectivityManager.unregisterNetworkCallback(it) } } override fun onAccountsUpdated(newAccounts: Array<out Account>) { Loading
app/src/main/res/drawable/ic_signal_cellular_off_dark.xml 0 → 100644 +10 −0 Original line number Diff line number Diff line <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24.0" android:viewportHeight="24.0"> <path android:fillAlpha="0.54" android:fillColor="#FF000000" android:pathData="M21,1l-8.59,8.59L21,18.18V1zM4.77,4.5L3.5,5.77l6.36,6.36L1,21h17.73l2,2L22,21.73 4.77,4.5z"/> </vector>
app/src/main/res/layout/account_list.xml +11 −0 Original line number Diff line number Diff line Loading @@ -12,6 +12,17 @@ android:layout_height="match_parent" android:orientation="vertical"> <TextView android:id="@+id/no_network_info" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="12dp" android:gravity="center_vertical" android:visibility="gone" android:drawableLeft="@drawable/ic_signal_cellular_off_dark" android:drawablePadding="8dp" android:text="@string/account_list_no_internet"/> <ListView android:id="@android:id/list" android:layout_width="match_parent" Loading
app/src/main/res/values/strings.xml +1 −1 Original line number Diff line number Diff line Loading @@ -77,7 +77,7 @@ <string name="navigation_drawer_faq">FAQ</string> <string name="navigation_drawer_forums">Help / Forums</string> <string name="navigation_drawer_donate">Donate</string> <string name="account_list_no_internet">No Internet connectivity. Android will not run synchronization.</string> <string name="account_list_empty">Welcome to DAVx⁵!\n\nYou can add a CalDAV/CardDAV account now.</string> <string name="accounts_global_sync_disabled">System-wide automatic synchronization is disabled</string> <string name="accounts_global_sync_enable">Enable</string> Loading
build.gradle +1 −1 Original line number Diff line number Diff line Loading @@ -18,7 +18,7 @@ buildscript { google() } dependencies { classpath 'com.android.tools.build:gradle:3.5.0' classpath 'com.android.tools.build:gradle:3.5.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${versions.kotlin}" classpath "org.jetbrains.dokka:dokka-android-gradle-plugin:${versions.dokka}" } Loading