mirror of
https://github.com/bitfireAT/davx5-ose
synced 2024-07-23 19:50:18 +00:00
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
This commit is contained in:
parent
52747e632f
commit
b26ae345cd
|
@ -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
|
||||
|
@ -101,10 +105,10 @@ class AccountDetailsFragment : Fragment() {
|
|||
v.createAccount.visibility = View.GONE
|
||||
|
||||
model.createAccount(
|
||||
name,
|
||||
loginModel.credentials,
|
||||
config,
|
||||
GroupMethod.valueOf(groupMethodName)
|
||||
name,
|
||||
loginModel.credentials,
|
||||
config,
|
||||
GroupMethod.valueOf(groupMethodName)
|
||||
).observe(viewLifecycleOwner, Observer { success ->
|
||||
if (success) {
|
||||
// close Create account activity
|
||||
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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())
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
||||
}
|
|
@ -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)
|
||||
|
|
|
@ -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>
|
Loading…
Reference in a new issue