Apply sorting of vaults when sharing with CM and biometric setup too
This commit is contained in:
parent
503a6cf0c1
commit
9767466064
@ -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
|
||||
}
|
||||
}
|
@ -2,15 +2,18 @@ package org.cryptomator.presentation.ui.adapter
|
||||
|
||||
import android.view.View
|
||||
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.model.VaultModel
|
||||
import org.cryptomator.presentation.model.comparator.VaultPositionComparator
|
||||
import org.cryptomator.presentation.ui.adapter.BiometricAuthSettingsAdapter.BiometricAuthSettingsViewHolder
|
||||
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 //
|
||||
@Inject
|
||||
constructor() : RecyclerViewBaseAdapter<VaultModel, BiometricAuthSettingsAdapter.OnVaultBiometricAuthSettingsChanged, BiometricAuthSettingsViewHolder>() {
|
||||
constructor() : RecyclerViewBaseAdapter<VaultModel, BiometricAuthSettingsAdapter.OnVaultBiometricAuthSettingsChanged, BiometricAuthSettingsViewHolder>(VaultPositionComparator()) {
|
||||
|
||||
private var onVaultBiometricAuthSettingsChanged: OnVaultBiometricAuthSettingsChanged? = null
|
||||
|
||||
|
@ -1,14 +1,19 @@
|
||||
package org.cryptomator.presentation.ui.adapter
|
||||
|
||||
import android.view.View
|
||||
import kotlinx.android.synthetic.main.item_shareable_location.view.*
|
||||
import org.cryptomator.presentation.R
|
||||
import org.cryptomator.presentation.model.VaultModel
|
||||
import org.cryptomator.presentation.model.comparator.VaultPositionComparator
|
||||
import org.cryptomator.presentation.ui.adapter.SharedLocationsAdapter.VaultViewHolder
|
||||
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
|
||||
constructor() : RecyclerViewBaseAdapter<VaultModel, SharedLocationsAdapter.Callback, VaultViewHolder>() {
|
||||
constructor() : RecyclerViewBaseAdapter<VaultModel, SharedLocationsAdapter.Callback, VaultViewHolder>(VaultPositionComparator()) {
|
||||
|
||||
private var selectedVault: VaultModel? = null
|
||||
private var selectedLocation: String? = null
|
||||
|
@ -1,15 +1,22 @@
|
||||
package org.cryptomator.presentation.ui.adapter
|
||||
|
||||
import android.view.View
|
||||
import kotlinx.android.synthetic.main.item_vault.view.*
|
||||
import org.cryptomator.presentation.R
|
||||
import org.cryptomator.presentation.model.VaultModel
|
||||
import org.cryptomator.presentation.model.comparator.VaultPositionComparator
|
||||
import org.cryptomator.presentation.ui.adapter.VaultsAdapter.VaultViewHolder
|
||||
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
|
||||
internal constructor() : RecyclerViewBaseAdapter<VaultModel, VaultsAdapter.OnItemInteractionListener, VaultViewHolder>(VaultModelComparator()), VaultsMoveListener.Listener {
|
||||
internal constructor() : RecyclerViewBaseAdapter<VaultModel, VaultsAdapter.OnItemInteractionListener, VaultViewHolder>(VaultPositionComparator()), VaultsMoveListener.Listener {
|
||||
|
||||
interface OnItemInteractionListener {
|
||||
|
||||
fun onVaultClicked(vaultModel: VaultModel)
|
||||
|
||||
fun onVaultSettingsClicked(vaultModel: VaultModel)
|
||||
@ -76,10 +83,4 @@ internal constructor() : RecyclerViewBaseAdapter<VaultModel, VaultsAdapter.OnIte
|
||||
override fun onRowMoved(fromPosition: Int, toPosition: Int) {
|
||||
callback.onRowMoved(fromPosition, toPosition)
|
||||
}
|
||||
|
||||
internal class VaultModelComparator : java.util.Comparator<VaultModel> {
|
||||
override fun compare(o1: VaultModel, o2: VaultModel): Int {
|
||||
return o1.position - o2.position
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ import org.cryptomator.presentation.R
|
||||
import org.cryptomator.presentation.model.CloudFolderModel
|
||||
import org.cryptomator.presentation.model.SharedFileModel
|
||||
import org.cryptomator.presentation.model.VaultModel
|
||||
import org.cryptomator.presentation.model.comparator.VaultPositionComparator
|
||||
import org.cryptomator.presentation.presenter.SharedFilesPresenter
|
||||
import org.cryptomator.presentation.ui.adapter.SharedFilesAdapter
|
||||
import org.cryptomator.presentation.ui.adapter.SharedFilesAdapter.Callback
|
||||
@ -69,9 +70,10 @@ class SharedFilesFragment : BaseFragment() {
|
||||
}
|
||||
|
||||
fun displayVaults(vaults: List<VaultModel>?) {
|
||||
if (vaults?.isNotEmpty() == true) {
|
||||
presenter.selectedVault?.let { presenter.selectedVault = vaults[vaults.indexOf(it)] }
|
||||
val preselectedVault = presenter.selectedVault ?: vaults[0]
|
||||
val sortedVaults = vaults?.sortedWith(VaultPositionComparator())
|
||||
if (sortedVaults?.isNotEmpty() == true) {
|
||||
presenter.selectedVault?.let { presenter.selectedVault = sortedVaults[sortedVaults.indexOf(it)] }
|
||||
val preselectedVault = presenter.selectedVault ?: sortedVaults[0]
|
||||
locationsAdapter.setPreselectedVault(preselectedVault)
|
||||
presenter.onVaultSelected(preselectedVault)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user