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

Unverified Commit b26ae345 authored by Ricki Hirner's avatar Ricki Hirner
Browse files

Nextcloud: pre-select contact group method (CATEGORIES) (bitfireAT/davx5#410)

* LoginActivity: refactor menu to MenuProvider; LoginModel: add contact group type

* Take LoginModel group method into account when creating the account; Nextcloud login: set preferred contact group type
parent 52747e63
Loading
Loading
Loading
Loading
+20 −6
Original line number Diff line number Diff line
@@ -19,7 +19,11 @@ import android.widget.ArrayAdapter
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import androidx.fragment.app.viewModels
import androidx.lifecycle.*
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import at.bitfire.davdroid.InvalidAccountException
import at.bitfire.davdroid.R
import at.bitfire.davdroid.databinding.LoginAccountDetailsBinding
@@ -126,6 +130,7 @@ class AccountDetailsFragment : Fragment() {

        val forcedGroupMethod = settings.getString(AccountSettings.KEY_CONTACT_GROUP_METHOD)?.let { GroupMethod.valueOf(it) }
        if (forcedGroupMethod != null) {
            // contact group type forced by settings
            v.contactGroupMethod.isEnabled = false
            for ((i, method) in resources.getStringArray(R.array.settings_contact_group_method_values).withIndex()) {
                if (method == forcedGroupMethod.name) {
@@ -133,8 +138,17 @@ class AccountDetailsFragment : Fragment() {
                    break
                }
            }
        } else
        } else {
            // contact group type selectable
            v.contactGroupMethod.isEnabled = true
            for ((i, method) in resources.getStringArray(R.array.settings_contact_group_method_values).withIndex()) {
                // take suggestion from detection process into account
                if (method == loginModel.suggestedGroupMethod.name) {
                    v.contactGroupMethod.setSelection(i)
                    break
                }
            }
        }

        return v.root
    }
+18 −10
Original line number Diff line number Diff line
@@ -6,8 +6,10 @@ package at.bitfire.davdroid.ui.setup

import android.os.Bundle
import android.view.Menu
import android.view.MenuInflater
import android.view.MenuItem
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.MenuProvider
import androidx.fragment.app.Fragment
import at.bitfire.davdroid.App
import at.bitfire.davdroid.R
@@ -51,6 +53,22 @@ class LoginActivity: AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        addMenuProvider(object: MenuProvider {
            override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {
                menuInflater.inflate(R.menu.activity_login, menu)
            }

            override fun onMenuItemSelected(menuItem: MenuItem): Boolean {
                if (menuItem.itemId == R.id.help) {
                    UiUtils.launchUri(this@LoginActivity,
                        App.homepageUrl(this@LoginActivity).buildUpon().appendPath("tested-with").build())
                    return true
                }

                return false
            }
        })

        if (savedInstanceState == null) {
            // first call, add first login fragment
            val factories = loginFragmentFactories      // get factories from hilt
@@ -71,14 +89,4 @@ class LoginActivity: AppCompatActivity() {
        }
    }

    override fun onCreateOptionsMenu(menu: Menu): Boolean {
        menuInflater.inflate(R.menu.activity_login, menu)
        return true
    }

    fun showHelp(item: MenuItem) {
        UiUtils.launchUri(this,
                App.homepageUrl(this).buildUpon().appendPath("tested-with").build())
    }

}
+6 −4
Original line number Diff line number Diff line
@@ -7,6 +7,7 @@ package at.bitfire.davdroid.ui.setup
import androidx.lifecycle.ViewModel
import at.bitfire.davdroid.db.Credentials
import at.bitfire.davdroid.servicedetection.DavResourceFinder
import at.bitfire.vcard4android.GroupMethod
import java.net.URI

class LoginModel: ViewModel() {
@@ -16,9 +17,10 @@ class LoginModel: ViewModel() {

    var configuration: DavResourceFinder.Configuration? = null

    /**
     * Account name that should be used as default account name when no email addresses have been found.
     */
    /** account name that should be used as default account name when no email addresses have been found */
    var suggestedAccountName: String? = null

    /** group method that should be pre-selectedbr */
    var suggestedGroupMethod: GroupMethod = GroupMethod.GROUP_VCARDS

}
 No newline at end of file
+2 −0
Original line number Diff line number Diff line
@@ -54,6 +54,7 @@ import at.bitfire.davdroid.db.Credentials
import at.bitfire.davdroid.log.Logger
import at.bitfire.davdroid.network.HttpClient
import at.bitfire.davdroid.ui.UiUtils.haveCustomTabs
import at.bitfire.vcard4android.GroupMethod
import com.google.accompanist.themeadapter.material.MdcTheme
import com.google.android.material.snackbar.Snackbar
import dagger.Binds
@@ -159,6 +160,7 @@ class NextcloudLoginFlowFragment: Fragment() {
            // continue to next fragment
            loginModel.baseURI = baseUri
            loginModel.credentials = credentials
            loginModel.suggestedGroupMethod = GroupMethod.CATEGORIES
            parentFragmentManager.beginTransaction()
                    .replace(android.R.id.content, DetectConfigurationFragment(), null)
                    .addToBackStack(null)
+2 −4
Original line number Diff line number Diff line
@@ -7,8 +7,6 @@
        android:id="@+id/help"
        android:title="@string/help"
        android:icon="@drawable/ic_help"
        app:showAsAction="always"
        android:onClick="showHelp">
    </item>
        app:showAsAction="always" />

</menu>
 No newline at end of file