From efb3d857be1232337f64f134c2fc19f590b4fb4f Mon Sep 17 00:00:00 2001
From: Taras Smakula <tarassmakula@gmail.com>
Date: Thu, 14 Mar 2024 16:35:27 +0200
Subject: [PATCH] Create list item

---
 .../filter/FilterTimelinesDialogFragment.kt   | 10 ++-
 .../filter/list/FilterTimelinesViewHolder.kt  | 32 ++++++++++
 .../res/layout/list_item_timeline_filter.xml  | 63 +++++++++++++++++++
 3 files changed, 103 insertions(+), 2 deletions(-)
 create mode 100644 core/src/main/java/org/futo/circles/core/feature/circles/filter/list/FilterTimelinesViewHolder.kt
 create mode 100644 core/src/main/res/layout/list_item_timeline_filter.xml

diff --git a/core/src/main/java/org/futo/circles/core/feature/circles/filter/FilterTimelinesDialogFragment.kt b/core/src/main/java/org/futo/circles/core/feature/circles/filter/FilterTimelinesDialogFragment.kt
index 8c01da7d9..3ad28e157 100644
--- a/core/src/main/java/org/futo/circles/core/feature/circles/filter/FilterTimelinesDialogFragment.kt
+++ b/core/src/main/java/org/futo/circles/core/feature/circles/filter/FilterTimelinesDialogFragment.kt
@@ -30,7 +30,10 @@ class FilterTimelinesDialogFragment :
 
     private val filterTimelinesAdapter by lazy {
         FilterTimelinesAdapter(
-            onItemSelected = { id -> viewModel.toggleItemSelected(id) }
+            onItemSelected = { id ->
+                binding.btnSave.isEnabled = true
+                viewModel.toggleItemSelected(id)
+            }
         )
     }
 
@@ -46,7 +49,10 @@ class FilterTimelinesDialogFragment :
                 startLoading(btnSave)
                 viewModel.saveFilter()
             }
-            btnSelectAll.setOnClickListener { viewModel.selectAllItems() }
+            btnSelectAll.setOnClickListener {
+                binding.btnSave.isEnabled = true
+                viewModel.selectAllItems()
+            }
             rvTimelines.apply {
                 addItemDecoration(DividerItemDecoration(context, DividerItemDecoration.VERTICAL))
                 adapter = filterTimelinesAdapter
diff --git a/core/src/main/java/org/futo/circles/core/feature/circles/filter/list/FilterTimelinesViewHolder.kt b/core/src/main/java/org/futo/circles/core/feature/circles/filter/list/FilterTimelinesViewHolder.kt
new file mode 100644
index 000000000..ced137870
--- /dev/null
+++ b/core/src/main/java/org/futo/circles/core/feature/circles/filter/list/FilterTimelinesViewHolder.kt
@@ -0,0 +1,32 @@
+package org.futo.circles.core.feature.circles.filter.list
+
+import android.view.ViewGroup
+import androidx.recyclerview.widget.RecyclerView
+import org.futo.circles.core.base.list.ViewBindingHolder
+import org.futo.circles.core.databinding.ListItemTimelineFilterBinding
+import org.futo.circles.core.extensions.loadRoomProfileIcon
+import org.futo.circles.core.extensions.onClick
+import org.futo.circles.core.model.FilterTimelinesListItem
+
+class FilterTimelinesViewHolder(
+    parent: ViewGroup,
+    onItemClicked: (Int) -> Unit
+) : RecyclerView.ViewHolder(inflate(parent, ListItemTimelineFilterBinding::inflate)) {
+
+    private companion object : ViewBindingHolder
+
+    private val binding = baseBinding as ListItemTimelineFilterBinding
+
+    init {
+        onClick(itemView) { position -> onItemClicked(position) }
+    }
+
+    fun bind(data: FilterTimelinesListItem) {
+        with(binding) {
+            tvRoomName.text = data.name
+            tvOwnerName.text = data.ownerName
+            ivRoom.loadRoomProfileIcon(data.avatarUrl, data.name)
+            vCheck.isChecked = data.isSelected
+        }
+    }
+}
\ No newline at end of file
diff --git a/core/src/main/res/layout/list_item_timeline_filter.xml b/core/src/main/res/layout/list_item_timeline_filter.xml
new file mode 100644
index 000000000..f51d40d0c
--- /dev/null
+++ b/core/src/main/res/layout/list_item_timeline_filter.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:background="?selectableItemBackground"
+    android:clickable="true"
+    android:focusable="true"
+    android:padding="8dp">
+
+
+    <com.google.android.material.imageview.ShapeableImageView
+        android:id="@+id/ivRoom"
+        android:layout_width="45dp"
+        android:layout_height="45dp"
+        android:scaleType="fitCenter"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.App.CornerSize50Percent"
+        tools:src="@color/blue" />
+
+
+    <TextView
+        android:id="@+id/tvRoomName"
+        style="@style/headline"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="8dp"
+        android:layout_marginEnd="8dp"
+        android:ellipsize="end"
+        android:lines="1"
+        app:layout_constraintBottom_toTopOf="@id/tvOwnerName"
+        app:layout_constraintEnd_toStartOf="@+id/vCheck"
+        app:layout_constraintStart_toEndOf="@id/ivRoom"
+        app:layout_constraintTop_toTopOf="@id/ivRoom"
+        app:layout_constraintVertical_chainStyle="packed"
+        tools:text="texsdt" />
+
+    <TextView
+        android:id="@+id/tvOwnerName"
+        style="@style/footNote"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:ellipsize="end"
+        android:lines="1"
+        app:layout_constraintBottom_toBottomOf="@id/ivRoom"
+        app:layout_constraintEnd_toEndOf="@id/tvRoomName"
+        app:layout_constraintStart_toStartOf="@id/tvRoomName"
+        app:layout_constraintTop_toBottomOf="@id/tvRoomName"
+        tools:text="texsdt" />
+
+    <com.google.android.material.checkbox.MaterialCheckBox
+        android:id="@+id/vCheck"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
+
+</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
-- 
GitLab