aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/dev/msfjarvis/aps/ui/adapters
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/dev/msfjarvis/aps/ui/adapters')
-rw-r--r--app/src/main/java/dev/msfjarvis/aps/ui/adapters/FieldItemAdapter.kt112
-rw-r--r--app/src/main/java/dev/msfjarvis/aps/ui/adapters/PasswordItemRecyclerAdapter.kt101
2 files changed, 107 insertions, 106 deletions
diff --git a/app/src/main/java/dev/msfjarvis/aps/ui/adapters/FieldItemAdapter.kt b/app/src/main/java/dev/msfjarvis/aps/ui/adapters/FieldItemAdapter.kt
index 0822fdd3..afb2a130 100644
--- a/app/src/main/java/dev/msfjarvis/aps/ui/adapters/FieldItemAdapter.kt
+++ b/app/src/main/java/dev/msfjarvis/aps/ui/adapters/FieldItemAdapter.kt
@@ -17,74 +17,74 @@ import dev.msfjarvis.aps.data.password.FieldItem
import dev.msfjarvis.aps.databinding.ItemFieldBinding
class FieldItemAdapter(
- private var fieldItemList: List<FieldItem>,
- private val showPassword: Boolean,
- private val copyTextToClipBoard: (text: String?) -> Unit,
+ private var fieldItemList: List<FieldItem>,
+ private val showPassword: Boolean,
+ private val copyTextToClipBoard: (text: String?) -> Unit,
) : RecyclerView.Adapter<FieldItemAdapter.FieldItemViewHolder>() {
- override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): FieldItemViewHolder {
- val binding = ItemFieldBinding.inflate(LayoutInflater.from(parent.context), parent, false)
- return FieldItemViewHolder(binding.root, binding)
- }
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): FieldItemViewHolder {
+ val binding = ItemFieldBinding.inflate(LayoutInflater.from(parent.context), parent, false)
+ return FieldItemViewHolder(binding.root, binding)
+ }
- override fun onBindViewHolder(holder: FieldItemViewHolder, position: Int) {
- holder.bind(fieldItemList[position], showPassword, copyTextToClipBoard)
- }
+ override fun onBindViewHolder(holder: FieldItemViewHolder, position: Int) {
+ holder.bind(fieldItemList[position], showPassword, copyTextToClipBoard)
+ }
- override fun getItemCount(): Int {
- return fieldItemList.size
- }
-
- fun updateOTPCode(code: String) {
- var otpItemPosition = -1;
- fieldItemList = fieldItemList.mapIndexed { position, item ->
- if (item.key.equals(FieldItem.ItemType.OTP.type, true)) {
- otpItemPosition = position
- return@mapIndexed FieldItem.createOtpField(code)
- }
+ override fun getItemCount(): Int {
+ return fieldItemList.size
+ }
- return@mapIndexed item
+ fun updateOTPCode(code: String) {
+ var otpItemPosition = -1
+ fieldItemList =
+ fieldItemList.mapIndexed { position, item ->
+ if (item.key.equals(FieldItem.ItemType.OTP.type, true)) {
+ otpItemPosition = position
+ return@mapIndexed FieldItem.createOtpField(code)
}
- notifyItemChanged(otpItemPosition)
- }
+ return@mapIndexed item
+ }
- fun updateItems(itemList: List<FieldItem>) {
- fieldItemList = itemList
- notifyDataSetChanged()
- }
+ notifyItemChanged(otpItemPosition)
+ }
+
+ fun updateItems(itemList: List<FieldItem>) {
+ fieldItemList = itemList
+ notifyDataSetChanged()
+ }
- class FieldItemViewHolder(itemView: View, val binding: ItemFieldBinding) :
- RecyclerView.ViewHolder(itemView) {
+ class FieldItemViewHolder(itemView: View, val binding: ItemFieldBinding) : RecyclerView.ViewHolder(itemView) {
- fun bind(fieldItem: FieldItem, showPassword: Boolean, copyTextToClipBoard: (String?) -> Unit) {
- with(binding) {
- itemText.hint = fieldItem.key
- itemTextContainer.hint = fieldItem.key
- itemText.setText(fieldItem.value)
+ fun bind(fieldItem: FieldItem, showPassword: Boolean, copyTextToClipBoard: (String?) -> Unit) {
+ with(binding) {
+ itemText.hint = fieldItem.key
+ itemTextContainer.hint = fieldItem.key
+ itemText.setText(fieldItem.value)
- when (fieldItem.action) {
- FieldItem.ActionType.COPY -> {
- itemTextContainer.apply {
- endIconDrawable = ContextCompat.getDrawable(itemView.context, R.drawable.ic_content_copy)
- endIconMode = TextInputLayout.END_ICON_CUSTOM
- setEndIconOnClickListener { copyTextToClipBoard(itemText.text.toString()) }
- }
- }
- FieldItem.ActionType.HIDE -> {
- itemTextContainer.apply {
- endIconMode = TextInputLayout.END_ICON_PASSWORD_TOGGLE
- setOnClickListener { copyTextToClipBoard(itemText.text.toString()) }
- }
- itemText.apply {
- if (!showPassword) {
- transformationMethod = PasswordTransformationMethod.getInstance()
- }
- setOnClickListener { copyTextToClipBoard(itemText.text.toString()) }
- }
- }
- }
+ when (fieldItem.action) {
+ FieldItem.ActionType.COPY -> {
+ itemTextContainer.apply {
+ endIconDrawable = ContextCompat.getDrawable(itemView.context, R.drawable.ic_content_copy)
+ endIconMode = TextInputLayout.END_ICON_CUSTOM
+ setEndIconOnClickListener { copyTextToClipBoard(itemText.text.toString()) }
+ }
+ }
+ FieldItem.ActionType.HIDE -> {
+ itemTextContainer.apply {
+ endIconMode = TextInputLayout.END_ICON_PASSWORD_TOGGLE
+ setOnClickListener { copyTextToClipBoard(itemText.text.toString()) }
+ }
+ itemText.apply {
+ if (!showPassword) {
+ transformationMethod = PasswordTransformationMethod.getInstance()
+ }
+ setOnClickListener { copyTextToClipBoard(itemText.text.toString()) }
}
+ }
}
+ }
}
+ }
}
diff --git a/app/src/main/java/dev/msfjarvis/aps/ui/adapters/PasswordItemRecyclerAdapter.kt b/app/src/main/java/dev/msfjarvis/aps/ui/adapters/PasswordItemRecyclerAdapter.kt
index b68059ad..fc3b1a7e 100644
--- a/app/src/main/java/dev/msfjarvis/aps/ui/adapters/PasswordItemRecyclerAdapter.kt
+++ b/app/src/main/java/dev/msfjarvis/aps/ui/adapters/PasswordItemRecyclerAdapter.kt
@@ -19,65 +19,66 @@ import dev.msfjarvis.aps.util.viewmodel.SearchableRepositoryAdapter
import dev.msfjarvis.aps.util.viewmodel.stableId
open class PasswordItemRecyclerAdapter :
- SearchableRepositoryAdapter<PasswordItemRecyclerAdapter.PasswordItemViewHolder>(
- R.layout.password_row_layout,
- ::PasswordItemViewHolder,
- PasswordItemViewHolder::bind
- ) {
+ SearchableRepositoryAdapter<PasswordItemRecyclerAdapter.PasswordItemViewHolder>(
+ R.layout.password_row_layout,
+ ::PasswordItemViewHolder,
+ PasswordItemViewHolder::bind
+ ) {
- fun makeSelectable(recyclerView: RecyclerView) {
- makeSelectable(recyclerView, ::PasswordItemDetailsLookup)
- }
+ fun makeSelectable(recyclerView: RecyclerView) {
+ makeSelectable(recyclerView, ::PasswordItemDetailsLookup)
+ }
- override fun onItemClicked(listener: (holder: PasswordItemViewHolder, item: PasswordItem) -> Unit): PasswordItemRecyclerAdapter {
- return super.onItemClicked(listener) as PasswordItemRecyclerAdapter
- }
+ override fun onItemClicked(
+ listener: (holder: PasswordItemViewHolder, item: PasswordItem) -> Unit
+ ): PasswordItemRecyclerAdapter {
+ return super.onItemClicked(listener) as PasswordItemRecyclerAdapter
+ }
- override fun onSelectionChanged(listener: (selection: Selection<String>) -> Unit): PasswordItemRecyclerAdapter {
- return super.onSelectionChanged(listener) as PasswordItemRecyclerAdapter
- }
+ override fun onSelectionChanged(listener: (selection: Selection<String>) -> Unit): PasswordItemRecyclerAdapter {
+ return super.onSelectionChanged(listener) as PasswordItemRecyclerAdapter
+ }
- class PasswordItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+ class PasswordItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
- private val name: AppCompatTextView = itemView.findViewById(R.id.label)
- private val childCount: AppCompatTextView = itemView.findViewById(R.id.child_count)
- private val folderIndicator: AppCompatImageView =
- itemView.findViewById(R.id.folder_indicator)
- lateinit var itemDetails: ItemDetailsLookup.ItemDetails<String>
+ private val name: AppCompatTextView = itemView.findViewById(R.id.label)
+ private val childCount: AppCompatTextView = itemView.findViewById(R.id.child_count)
+ private val folderIndicator: AppCompatImageView = itemView.findViewById(R.id.folder_indicator)
+ lateinit var itemDetails: ItemDetailsLookup.ItemDetails<String>
- fun bind(item: PasswordItem) {
- val parentPath = item.fullPathToParent.replace("(^/)|(/$)".toRegex(), "")
- val source = if (parentPath.isNotEmpty()) {
- "$parentPath\n$item"
- } else {
- "$item"
- }
- val spannable = SpannableString(source)
- spannable.setSpan(RelativeSizeSpan(0.7f), 0, parentPath.length, 0)
- name.text = spannable
- if (item.type == PasswordItem.TYPE_CATEGORY) {
- folderIndicator.visibility = View.VISIBLE
- val count = item.file.listFiles { path -> path.isDirectory || path.extension == "gpg" }?.size
- ?: 0
- childCount.visibility = if (count > 0) View.VISIBLE else View.GONE
- childCount.text = "$count"
- } else {
- childCount.visibility = View.GONE
- folderIndicator.visibility = View.GONE
- }
- itemDetails = object : ItemDetailsLookup.ItemDetails<String>() {
- override fun getPosition() = absoluteAdapterPosition
- override fun getSelectionKey() = item.stableId
- }
+ fun bind(item: PasswordItem) {
+ val parentPath = item.fullPathToParent.replace("(^/)|(/$)".toRegex(), "")
+ val source =
+ if (parentPath.isNotEmpty()) {
+ "$parentPath\n$item"
+ } else {
+ "$item"
+ }
+ val spannable = SpannableString(source)
+ spannable.setSpan(RelativeSizeSpan(0.7f), 0, parentPath.length, 0)
+ name.text = spannable
+ if (item.type == PasswordItem.TYPE_CATEGORY) {
+ folderIndicator.visibility = View.VISIBLE
+ val count = item.file.listFiles { path -> path.isDirectory || path.extension == "gpg" }?.size ?: 0
+ childCount.visibility = if (count > 0) View.VISIBLE else View.GONE
+ childCount.text = "$count"
+ } else {
+ childCount.visibility = View.GONE
+ folderIndicator.visibility = View.GONE
+ }
+ itemDetails =
+ object : ItemDetailsLookup.ItemDetails<String>() {
+ override fun getPosition() = absoluteAdapterPosition
+ override fun getSelectionKey() = item.stableId
}
}
+ }
- class PasswordItemDetailsLookup(private val recyclerView: RecyclerView) :
- ItemDetailsLookup<String>() {
+ class PasswordItemDetailsLookup(private val recyclerView: RecyclerView) : ItemDetailsLookup<String>() {
- override fun getItemDetails(event: MotionEvent): ItemDetails<String>? {
- val view = recyclerView.findChildViewUnder(event.x, event.y) ?: return null
- return (recyclerView.getChildViewHolder(view) as PasswordItemViewHolder).itemDetails
- }
+ override fun getItemDetails(event: MotionEvent): ItemDetails<String>? {
+ val view = recyclerView.findChildViewUnder(event.x, event.y) ?: return null
+ return (recyclerView.getChildViewHolder(view) as PasswordItemViewHolder).itemDetails
}
+ }
}