Apply sorting of vaults when sharing with CM and biometric setup too

This commit is contained in:
Julian Raufelder 2021-02-20 17:11:20 +01:00
parent 503a6cf0c1
commit 9767466064
No known key found for this signature in database
GPG Key ID: 17EE71F6634E381D
5 changed files with 36 additions and 15 deletions

View File

@ -0,0 +1,10 @@
package org.cryptomator.presentation.model.comparator
import org.cryptomator.presentation.model.VaultModel
class VaultPositionComparator : Comparator<VaultModel> {
override fun compare(v1: VaultModel, v2: VaultModel): Int {
return v1.position - v2.position
}
}

View File

@ -2,15 +2,18 @@ package org.cryptomator.presentation.ui.adapter
import android.view.View import android.view.View
import com.google.android.material.switchmaterial.SwitchMaterial import com.google.android.material.switchmaterial.SwitchMaterial
import kotlinx.android.synthetic.main.item_biometric_auth_vault.view.*
import org.cryptomator.presentation.R import org.cryptomator.presentation.R
import org.cryptomator.presentation.model.VaultModel import org.cryptomator.presentation.model.VaultModel
import org.cryptomator.presentation.model.comparator.VaultPositionComparator
import org.cryptomator.presentation.ui.adapter.BiometricAuthSettingsAdapter.BiometricAuthSettingsViewHolder import org.cryptomator.presentation.ui.adapter.BiometricAuthSettingsAdapter.BiometricAuthSettingsViewHolder
import javax.inject.Inject import javax.inject.Inject
import kotlinx.android.synthetic.main.item_biometric_auth_vault.view.cloud
import kotlinx.android.synthetic.main.item_biometric_auth_vault.view.toggleBiometricAuth
import kotlinx.android.synthetic.main.item_biometric_auth_vault.view.vaultName
class BiometricAuthSettingsAdapter // class BiometricAuthSettingsAdapter //
@Inject @Inject
constructor() : RecyclerViewBaseAdapter<VaultModel, BiometricAuthSettingsAdapter.OnVaultBiometricAuthSettingsChanged, BiometricAuthSettingsViewHolder>() { constructor() : RecyclerViewBaseAdapter<VaultModel, BiometricAuthSettingsAdapter.OnVaultBiometricAuthSettingsChanged, BiometricAuthSettingsViewHolder>(VaultPositionComparator()) {
private var onVaultBiometricAuthSettingsChanged: OnVaultBiometricAuthSettingsChanged? = null private var onVaultBiometricAuthSettingsChanged: OnVaultBiometricAuthSettingsChanged? = null

View File

@ -1,14 +1,19 @@
package org.cryptomator.presentation.ui.adapter package org.cryptomator.presentation.ui.adapter
import android.view.View import android.view.View
import kotlinx.android.synthetic.main.item_shareable_location.view.*
import org.cryptomator.presentation.R import org.cryptomator.presentation.R
import org.cryptomator.presentation.model.VaultModel import org.cryptomator.presentation.model.VaultModel
import org.cryptomator.presentation.model.comparator.VaultPositionComparator
import org.cryptomator.presentation.ui.adapter.SharedLocationsAdapter.VaultViewHolder import org.cryptomator.presentation.ui.adapter.SharedLocationsAdapter.VaultViewHolder
import javax.inject.Inject import javax.inject.Inject
import kotlinx.android.synthetic.main.item_shareable_location.view.chooseFolderLocation
import kotlinx.android.synthetic.main.item_shareable_location.view.chosenLocation
import kotlinx.android.synthetic.main.item_shareable_location.view.cloudImage
import kotlinx.android.synthetic.main.item_shareable_location.view.selectedVault
import kotlinx.android.synthetic.main.item_shareable_location.view.vaultName
class SharedLocationsAdapter @Inject class SharedLocationsAdapter @Inject
constructor() : RecyclerViewBaseAdapter<VaultModel, SharedLocationsAdapter.Callback, VaultViewHolder>() { constructor() : RecyclerViewBaseAdapter<VaultModel, SharedLocationsAdapter.Callback, VaultViewHolder>(VaultPositionComparator()) {
private var selectedVault: VaultModel? = null private var selectedVault: VaultModel? = null
private var selectedLocation: String? = null private var selectedLocation: String? = null

View File

@ -1,15 +1,22 @@
package org.cryptomator.presentation.ui.adapter package org.cryptomator.presentation.ui.adapter
import android.view.View import android.view.View
import kotlinx.android.synthetic.main.item_vault.view.*
import org.cryptomator.presentation.R import org.cryptomator.presentation.R
import org.cryptomator.presentation.model.VaultModel import org.cryptomator.presentation.model.VaultModel
import org.cryptomator.presentation.model.comparator.VaultPositionComparator
import org.cryptomator.presentation.ui.adapter.VaultsAdapter.VaultViewHolder import org.cryptomator.presentation.ui.adapter.VaultsAdapter.VaultViewHolder
import javax.inject.Inject import javax.inject.Inject
import kotlinx.android.synthetic.main.item_vault.view.cloudImage
import kotlinx.android.synthetic.main.item_vault.view.settings
import kotlinx.android.synthetic.main.item_vault.view.unlockedImage
import kotlinx.android.synthetic.main.item_vault.view.vaultName
import kotlinx.android.synthetic.main.item_vault.view.vaultPath
class VaultsAdapter @Inject class VaultsAdapter @Inject
internal constructor() : RecyclerViewBaseAdapter<VaultModel, VaultsAdapter.OnItemInteractionListener, VaultViewHolder>(VaultModelComparator()), VaultsMoveListener.Listener { internal constructor() : RecyclerViewBaseAdapter<VaultModel, VaultsAdapter.OnItemInteractionListener, VaultViewHolder>(VaultPositionComparator()), VaultsMoveListener.Listener {
interface OnItemInteractionListener { interface OnItemInteractionListener {
fun onVaultClicked(vaultModel: VaultModel) fun onVaultClicked(vaultModel: VaultModel)
fun onVaultSettingsClicked(vaultModel: VaultModel) fun onVaultSettingsClicked(vaultModel: VaultModel)
@ -76,10 +83,4 @@ internal constructor() : RecyclerViewBaseAdapter<VaultModel, VaultsAdapter.OnIte
override fun onRowMoved(fromPosition: Int, toPosition: Int) { override fun onRowMoved(fromPosition: Int, toPosition: Int) {
callback.onRowMoved(fromPosition, toPosition) callback.onRowMoved(fromPosition, toPosition)
} }
internal class VaultModelComparator : java.util.Comparator<VaultModel> {
override fun compare(o1: VaultModel, o2: VaultModel): Int {
return o1.position - o2.position
}
}
} }

View File

@ -8,6 +8,7 @@ import org.cryptomator.presentation.R
import org.cryptomator.presentation.model.CloudFolderModel import org.cryptomator.presentation.model.CloudFolderModel
import org.cryptomator.presentation.model.SharedFileModel import org.cryptomator.presentation.model.SharedFileModel
import org.cryptomator.presentation.model.VaultModel import org.cryptomator.presentation.model.VaultModel
import org.cryptomator.presentation.model.comparator.VaultPositionComparator
import org.cryptomator.presentation.presenter.SharedFilesPresenter import org.cryptomator.presentation.presenter.SharedFilesPresenter
import org.cryptomator.presentation.ui.adapter.SharedFilesAdapter import org.cryptomator.presentation.ui.adapter.SharedFilesAdapter
import org.cryptomator.presentation.ui.adapter.SharedFilesAdapter.Callback import org.cryptomator.presentation.ui.adapter.SharedFilesAdapter.Callback
@ -69,9 +70,10 @@ class SharedFilesFragment : BaseFragment() {
} }
fun displayVaults(vaults: List<VaultModel>?) { fun displayVaults(vaults: List<VaultModel>?) {
if (vaults?.isNotEmpty() == true) { val sortedVaults = vaults?.sortedWith(VaultPositionComparator())
presenter.selectedVault?.let { presenter.selectedVault = vaults[vaults.indexOf(it)] } if (sortedVaults?.isNotEmpty() == true) {
val preselectedVault = presenter.selectedVault ?: vaults[0] presenter.selectedVault?.let { presenter.selectedVault = sortedVaults[sortedVaults.indexOf(it)] }
val preselectedVault = presenter.selectedVault ?: sortedVaults[0]
locationsAdapter.setPreselectedVault(preselectedVault) locationsAdapter.setPreselectedVault(preselectedVault)
presenter.onVaultSelected(preselectedVault) presenter.onVaultSelected(preselectedVault)
} }