From 1c57709d2d091a11d164553e477c06c3117ccae7 Mon Sep 17 00:00:00 2001 From: Taras Smakula <tarassmakula@gmail.com> Date: Mon, 4 Mar 2024 15:13:11 +0200 Subject: [PATCH] <erge create room into one fragment --- .../create/CreateCircleDialogFragment.kt | 54 ------ .../create/CreateGroupDialogFragment.kt | 50 ------ .../layout/dialog_fragment_create_group.xml | 162 ------------------ .../main/res/navigation/circles_nav_graph.xml | 33 +++- .../main/res/navigation/groups_nav_graph.xml | 22 ++- app/src/main/res/values/strings.xml | 1 - .../room/create/CreateRoomDialogFragment.kt | 93 ++++++++-- .../layout/dialog_fragment_create_room.xml | 36 +++- core/src/main/res/values/strings.xml | 1 + .../create/CreateGalleryDialogFragment.kt | 48 ------ .../gallery/grid/GalleryGridFragment.kt | 3 +- .../layout/dialog_fragment_create_gallery.xml | 107 ------------ .../main/res/navigation/photos_nav_graph.xml | 22 ++- 13 files changed, 178 insertions(+), 454 deletions(-) delete mode 100644 app/src/main/java/org/futo/circles/feature/circles/create/CreateCircleDialogFragment.kt delete mode 100644 app/src/main/java/org/futo/circles/feature/groups/create/CreateGroupDialogFragment.kt delete mode 100644 app/src/main/res/layout/dialog_fragment_create_group.xml rename app/src/main/res/layout/dialog_fragment_create_circle.xml => core/src/main/res/layout/dialog_fragment_create_room.xml (83%) delete mode 100644 gallery/src/main/java/org/futo/circles/gallery/feature/create/CreateGalleryDialogFragment.kt delete mode 100644 gallery/src/main/res/layout/dialog_fragment_create_gallery.xml diff --git a/app/src/main/java/org/futo/circles/feature/circles/create/CreateCircleDialogFragment.kt b/app/src/main/java/org/futo/circles/feature/circles/create/CreateCircleDialogFragment.kt deleted file mode 100644 index 6e5449912..000000000 --- a/app/src/main/java/org/futo/circles/feature/circles/create/CreateCircleDialogFragment.kt +++ /dev/null @@ -1,54 +0,0 @@ -package org.futo.circles.feature.circles.create - -import android.net.Uri -import android.os.Bundle -import android.view.View -import androidx.core.widget.doAfterTextChanged -import androidx.fragment.app.Fragment -import dagger.hilt.android.AndroidEntryPoint -import org.futo.circles.R -import org.futo.circles.core.extensions.getText -import org.futo.circles.core.feature.picker.helper.MediaPickerHelper -import org.futo.circles.core.feature.room.create.CreateRoomDialogFragment -import org.futo.circles.core.model.CircleRoomTypeArg -import org.futo.circles.databinding.DialogFragmentCreateCircleBinding - -@AndroidEntryPoint -class CreateCircleDialogFragment : - CreateRoomDialogFragment(DialogFragmentCreateCircleBinding::inflate) { - - override val fragment: Fragment = this - override val inviteContainerId: Int = R.id.lContainer - override val mediaPickerHelper = MediaPickerHelper(this) - - private val binding by lazy { - getBinding() as DialogFragmentCreateCircleBinding - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - setupViews() - } - - override fun onCoverImageSelected(uri: Uri) { - binding.ivCover.setImageURI(uri) - } - - private fun setupViews() { - with(binding) { - ivCover.setOnClickListener { changeCoverImage() } - tilName.editText?.doAfterTextChanged { - it?.let { btnCreate.isEnabled = it.isNotEmpty() } - } - btnCreate.setOnClickListener { - createRoom( - CircleRoomTypeArg.Circle, - tilName.getText(), - null, - binding.btnPublic.isChecked - ) - startLoading(btnCreate) - } - } - } -} \ No newline at end of file diff --git a/app/src/main/java/org/futo/circles/feature/groups/create/CreateGroupDialogFragment.kt b/app/src/main/java/org/futo/circles/feature/groups/create/CreateGroupDialogFragment.kt deleted file mode 100644 index 95b9332ed..000000000 --- a/app/src/main/java/org/futo/circles/feature/groups/create/CreateGroupDialogFragment.kt +++ /dev/null @@ -1,50 +0,0 @@ -package org.futo.circles.feature.groups.create - - -import android.net.Uri -import android.os.Bundle -import android.view.View -import androidx.core.widget.doAfterTextChanged -import androidx.fragment.app.Fragment -import dagger.hilt.android.AndroidEntryPoint -import org.futo.circles.R -import org.futo.circles.core.extensions.getText -import org.futo.circles.core.feature.picker.helper.MediaPickerHelper -import org.futo.circles.core.feature.room.create.CreateRoomDialogFragment -import org.futo.circles.core.model.CircleRoomTypeArg -import org.futo.circles.databinding.DialogFragmentCreateGroupBinding - -@AndroidEntryPoint -class CreateGroupDialogFragment : - CreateRoomDialogFragment(DialogFragmentCreateGroupBinding::inflate) { - - override val fragment: Fragment = this - override val inviteContainerId: Int = R.id.lContainer - override val mediaPickerHelper = MediaPickerHelper(this) - - private val binding by lazy { - getBinding() as DialogFragmentCreateGroupBinding - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - setupViews() - } - - override fun onCoverImageSelected(uri: Uri) { - binding.ivCover.setImageURI(uri) - } - - private fun setupViews() { - with(binding) { - ivCover.setOnClickListener { changeCoverImage() } - tilName.editText?.doAfterTextChanged { - it?.let { btnCreate.isEnabled = it.isNotEmpty() } - } - btnCreate.setOnClickListener { - createRoom(CircleRoomTypeArg.Group, tilName.getText(), tilTopic.getText()) - startLoading(btnCreate) - } - } - } -} \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_fragment_create_group.xml b/app/src/main/res/layout/dialog_fragment_create_group.xml deleted file mode 100644 index 328481c8a..000000000 --- a/app/src/main/res/layout/dialog_fragment_create_group.xml +++ /dev/null @@ -1,162 +0,0 @@ -<?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" - android:layout_width="match_parent" - android:layout_height="match_parent"> - - - <com.google.android.material.appbar.MaterialToolbar - android:id="@+id/toolbar" - android:layout_width="0dp" - android:layout_height="?attr/actionBarSize" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" - app:navigationIcon="?attr/homeAsUpIndicator" - app:title="@string/create_new_group" - app:titleCentered="true" - app:titleMarginEnd="72dp"> - - <org.futo.circles.core.view.LoadingButton - android:id="@+id/btnCreate" - android:layout_width="56dp" - android:layout_height="match_parent" - android:layout_gravity="end" - android:layout_marginVertical="8dp" - android:layout_marginEnd="8dp" - android:enabled="false" - android:text="@string/create" - android:textSize="13sp" - app:textPadding="1dp" /> - - </com.google.android.material.appbar.MaterialToolbar> - - - <View - android:id="@+id/toolbarDivider" - android:layout_width="0dp" - android:layout_height="@dimen/divider_height" - android:background="@color/divider_color" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/toolbar" /> - - - <androidx.constraintlayout.widget.Guideline - android:id="@+id/guidelineStart" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:orientation="vertical" - app:layout_constraintGuide_begin="8dp" /> - - <androidx.constraintlayout.widget.Guideline - android:id="@+id/guidelineEnd" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:orientation="vertical" - app:layout_constraintGuide_end="8dp" /> - - <com.google.android.material.imageview.ShapeableImageView - android:id="@+id/ivCover" - android:layout_width="@dimen/group_icon_size" - android:layout_height="@dimen/group_icon_size" - android:layout_marginTop="16dp" - android:clickable="true" - android:focusable="true" - android:scaleType="centerCrop" - android:src="@drawable/add_image_placeholder" - app:layout_constraintEnd_toEndOf="@id/guidelineEnd" - app:layout_constraintStart_toStartOf="@id/guidelineStart" - app:layout_constraintTop_toBottomOf="@id/toolbarDivider" - app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.App.GroupIconRadius" /> - - - <TextView - android:id="@+id/tvNameHeader" - style="@style/headline" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_marginTop="16dp" - android:text="@string/group_name" - app:layout_constraintEnd_toEndOf="@id/guidelineEnd" - app:layout_constraintStart_toStartOf="@id/guidelineStart" - app:layout_constraintTop_toBottomOf="@id/ivCover" /> - - <com.google.android.material.textfield.TextInputLayout - android:id="@+id/tilName" - style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_marginTop="8dp" - app:hintEnabled="false" - app:layout_constraintEnd_toEndOf="@id/guidelineEnd" - app:layout_constraintStart_toStartOf="@id/guidelineStart" - app:layout_constraintTop_toBottomOf="@id/tvNameHeader"> - - <com.google.android.material.textfield.TextInputEditText - android:id="@+id/etName" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:imeOptions="actionNext" - android:inputType="textCapSentences" - android:maxLines="1" - android:padding="12dp" /> - - </com.google.android.material.textfield.TextInputLayout> - - <TextView - android:id="@+id/tvTopicHeader" - style="@style/headline" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_marginTop="16dp" - android:text="@string/group_topic_optional" - app:layout_constraintEnd_toEndOf="@id/guidelineEnd" - app:layout_constraintStart_toStartOf="@id/guidelineStart" - app:layout_constraintTop_toBottomOf="@id/tilName" /> - - <com.google.android.material.textfield.TextInputLayout - android:id="@+id/tilTopic" - style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_marginTop="8dp" - app:hintEnabled="false" - app:layout_constraintEnd_toEndOf="@id/guidelineEnd" - app:layout_constraintStart_toStartOf="@id/guidelineStart" - app:layout_constraintTop_toBottomOf="@id/tvTopicHeader"> - - <com.google.android.material.textfield.TextInputEditText - android:id="@+id/etTopic" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:imeOptions="actionDone" - android:inputType="text" - android:maxLines="1" - android:padding="12dp" /> - - </com.google.android.material.textfield.TextInputLayout> - - - <TextView - android:id="@+id/tvInviteUsers" - style="@style/headline" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_marginTop="16dp" - android:text="@string/invite_members" - app:layout_constraintEnd_toEndOf="@id/guidelineEnd" - app:layout_constraintStart_toStartOf="@id/guidelineStart" - app:layout_constraintTop_toBottomOf="@id/tilTopic" /> - - - <FrameLayout - android:id="@+id/lContainer" - android:layout_width="0dp" - android:layout_height="0dp" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/tvInviteUsers" /> - -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/navigation/circles_nav_graph.xml b/app/src/main/res/navigation/circles_nav_graph.xml index b374b8174..2d246ed74 100644 --- a/app/src/main/res/navigation/circles_nav_graph.xml +++ b/app/src/main/res/navigation/circles_nav_graph.xml @@ -29,7 +29,15 @@ <action android:id="@+id/to_createCircleDialogFragment" - app:destination="@id/createCircleDialogFragment" /> + app:destination="@id/createCircleDialogFragment"> + + <argument + android:name="type" + android:defaultValue="Circle" + app:argType="org.futo.circles.core.model.CircleRoomTypeArg" + app:nullable="false" /> + + </action> <action android:id="@+id/to_invites" app:destination="@id/invites_nav_graph"> @@ -47,9 +55,16 @@ <dialog android:id="@+id/createCircleDialogFragment" - android:name="org.futo.circles.feature.circles.create.CreateCircleDialogFragment" - android:label="CreateCircleDialogFragment" - tools:layout="@layout/dialog_fragment_create_circle" /> + android:name="org.futo.circles.core.feature.room.create.CreateRoomDialogFragment" + tools:layout="@layout/dialog_fragment_create_room"> + + <argument + android:name="type" + android:defaultValue="Circle" + app:argType="org.futo.circles.core.model.CircleRoomTypeArg" + app:nullable="false" /> + + </dialog> <dialog android:id="@+id/acceptCircleInviteDialogFragment" android:name="org.futo.circles.feature.circles.accept_invite.AcceptCircleInviteDialogFragment" @@ -63,7 +78,15 @@ <action android:id="@+id/to_createCircleDialogFragment" - app:destination="@id/createCircleDialogFragment" /> + app:destination="@id/createCircleDialogFragment"> + + <argument + android:name="type" + android:defaultValue="Circle" + app:argType="org.futo.circles.core.model.CircleRoomTypeArg" + app:nullable="false" /> + + </action> </dialog> diff --git a/app/src/main/res/navigation/groups_nav_graph.xml b/app/src/main/res/navigation/groups_nav_graph.xml index d296c0ef5..36a64c55d 100644 --- a/app/src/main/res/navigation/groups_nav_graph.xml +++ b/app/src/main/res/navigation/groups_nav_graph.xml @@ -24,7 +24,15 @@ <action android:id="@+id/to_createGroupDialogFragment" - app:destination="@id/createGroupDialogFragment" /> + app:destination="@id/createGroupDialogFragment"> + + <argument + android:name="type" + android:defaultValue="Group" + app:argType="org.futo.circles.core.model.CircleRoomTypeArg" + app:nullable="false" /> + + </action> <action android:id="@+id/to_invites" @@ -46,7 +54,15 @@ <dialog android:id="@+id/createGroupDialogFragment" - android:name="org.futo.circles.feature.groups.create.CreateGroupDialogFragment" - tools:layout="@layout/dialog_fragment_create_group" /> + android:name="org.futo.circles.core.feature.room.create.CreateRoomDialogFragment" + tools:layout="@layout/dialog_fragment_create_room"> + + <argument + android:name="type" + android:defaultValue="Group" + app:argType="org.futo.circles.core.model.CircleRoomTypeArg" + app:nullable="false" /> + + </dialog> </navigation> \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b78a4fdad..51facd4c3 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -188,7 +188,6 @@ <string name="circles_empty_message">Create your first Circle</string> <string name="people_category_empty_message">%s will be shown here</string> <string name="creating_timeline">Creating timeline</string> - <string name="group_topic_optional">Group topic (optional)</string> <string name="session">Session</string> <string name="help">Help</string> <string name="optional_request_message">Optional: Request message</string> diff --git a/core/src/main/java/org/futo/circles/core/feature/room/create/CreateRoomDialogFragment.kt b/core/src/main/java/org/futo/circles/core/feature/room/create/CreateRoomDialogFragment.kt index 7a7dd9fd6..67e625f1d 100644 --- a/core/src/main/java/org/futo/circles/core/feature/room/create/CreateRoomDialogFragment.kt +++ b/core/src/main/java/org/futo/circles/core/feature/room/create/CreateRoomDialogFragment.kt @@ -1,44 +1,55 @@ package org.futo.circles.core.feature.room.create -import android.net.Uri import android.os.Bundle -import android.view.LayoutInflater +import android.util.Log import android.view.View -import android.view.ViewGroup +import androidx.core.os.BundleCompat.getParcelable +import androidx.core.widget.doAfterTextChanged +import androidx.fragment.app.Fragment import androidx.fragment.app.viewModels -import androidx.viewbinding.ViewBinding +import dagger.hilt.android.AndroidEntryPoint +import org.futo.circles.core.R +import org.futo.circles.core.base.fragment.BaseFullscreenDialogFragment +import org.futo.circles.core.base.fragment.HasLoadingState +import org.futo.circles.core.databinding.DialogFragmentCreateRoomBinding +import org.futo.circles.core.extensions.getText import org.futo.circles.core.extensions.observeData import org.futo.circles.core.extensions.observeResponse import org.futo.circles.core.extensions.onBackPressed -import org.futo.circles.core.base.fragment.BaseFullscreenDialogFragment -import org.futo.circles.core.base.fragment.HasLoadingState -import org.futo.circles.core.model.CircleRoomTypeArg import org.futo.circles.core.feature.picker.helper.MediaPickerHelper import org.futo.circles.core.feature.select_users.SelectUsersFragment +import org.futo.circles.core.model.CircleRoomTypeArg -abstract class CreateRoomDialogFragment(inflate: (LayoutInflater, ViewGroup?, Boolean) -> ViewBinding) : - BaseFullscreenDialogFragment(inflate), HasLoadingState { +@AndroidEntryPoint +class CreateRoomDialogFragment : + BaseFullscreenDialogFragment(DialogFragmentCreateRoomBinding::inflate), HasLoadingState { - abstract val inviteContainerId: Int? - abstract val mediaPickerHelper: MediaPickerHelper + override val fragment: Fragment = this private val viewModel by viewModels<CreateRoomViewModel>() - private var selectedUsersFragment: SelectUsersFragment? = null + private val binding by lazy { + getBinding() as DialogFragmentCreateRoomBinding + } - abstract fun onCoverImageSelected(uri: Uri) + private val mediaPickerHelper = MediaPickerHelper(this) + private val roomType: CircleRoomTypeArg by lazy { + getParcelable(requireArguments(), "type", CircleRoomTypeArg::class.java) + ?: CircleRoomTypeArg.Group + } + private var selectedUsersFragment: SelectUsersFragment? = null override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - inviteContainerId?.let { addSelectUsersFragment(it) } + if (savedInstanceState == null) addSelectUsersFragment() setupObservers() } - protected fun changeCoverImage() { + private fun changeCoverImage() { mediaPickerHelper.showMediaPickerDialog(onImageSelected = { _, uri -> viewModel.setImageUri(uri) }) } - protected fun createRoom( + private fun createRoom( type: CircleRoomTypeArg, name: String, topic: String? = null, @@ -55,18 +66,62 @@ abstract class CreateRoomDialogFragment(inflate: (LayoutInflater, ViewGroup?, Bo private fun setupObservers() { viewModel.selectedImageLiveData.observeData(this) { - onCoverImageSelected(it) + binding.ivCover.setImageURI(it) } viewModel.createRoomResponseLiveData.observeResponse(this, success = { onBackPressed() } ) } - private fun addSelectUsersFragment(containerId: Int) { + private fun addSelectUsersFragment() { selectedUsersFragment = SelectUsersFragment.create(null).also { childFragmentManager.beginTransaction() - .replace(containerId, it) + .replace(R.id.lContainer, it) .commitAllowingStateLoss() } } + + private fun setupViewsCircle() { + with(binding) { + ivCover.setOnClickListener { changeCoverImage() } + tilName.editText?.doAfterTextChanged { + it?.let { btnCreate.isEnabled = it.isNotEmpty() } + } + btnCreate.setOnClickListener { + createRoom( + CircleRoomTypeArg.Circle, + tilName.getText(), + null, + binding.btnPublic.isChecked + ) + startLoading(btnCreate) + } + } + } + + private fun setupViewsGroup() { + with(binding) { + ivCover.setOnClickListener { changeCoverImage() } + tilName.editText?.doAfterTextChanged { + it?.let { btnCreate.isEnabled = it.isNotEmpty() } + } + btnCreate.setOnClickListener { + createRoom(CircleRoomTypeArg.Group, tilName.getText(), tilTopic.getText()) + startLoading(btnCreate) + } + } + } + + private fun setupViewsGallery() { + with(binding) { + ivCover.setOnClickListener { changeCoverImage() } + tilName.editText?.doAfterTextChanged { + it?.let { btnCreate.isEnabled = it.isNotEmpty() } + } + btnCreate.setOnClickListener { + createRoom(CircleRoomTypeArg.Photo, tilName.getText()) + startLoading(btnCreate) + } + } + } } \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_fragment_create_circle.xml b/core/src/main/res/layout/dialog_fragment_create_room.xml similarity index 83% rename from app/src/main/res/layout/dialog_fragment_create_circle.xml rename to core/src/main/res/layout/dialog_fragment_create_room.xml index 5a4f4cf85..9a98127d7 100644 --- a/app/src/main/res/layout/dialog_fragment_create_circle.xml +++ b/core/src/main/res/layout/dialog_fragment_create_room.xml @@ -104,6 +104,40 @@ </com.google.android.material.textfield.TextInputLayout> + <TextView + android:id="@+id/tvTopicHeader" + style="@style/headline" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginTop="16dp" + android:text="@string/group_topic_optional" + app:layout_constraintEnd_toEndOf="@id/guidelineEnd" + app:layout_constraintStart_toStartOf="@id/guidelineStart" + app:layout_constraintTop_toBottomOf="@id/tilName" /> + + <com.google.android.material.textfield.TextInputLayout + android:id="@+id/tilTopic" + style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + app:hintEnabled="false" + app:layout_constraintEnd_toEndOf="@id/guidelineEnd" + app:layout_constraintStart_toStartOf="@id/guidelineStart" + app:layout_constraintTop_toBottomOf="@id/tvTopicHeader"> + + <com.google.android.material.textfield.TextInputEditText + android:id="@+id/etTopic" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:imeOptions="actionDone" + android:inputType="text" + android:maxLines="1" + android:padding="12dp" /> + + </com.google.android.material.textfield.TextInputLayout> + + <TextView android:id="@+id/tvTypeHeader" style="@style/headline" @@ -113,7 +147,7 @@ android:text="@string/circle_type" app:layout_constraintEnd_toEndOf="@id/guidelineEnd" app:layout_constraintStart_toStartOf="@id/guidelineStart" - app:layout_constraintTop_toBottomOf="@+id/tilName" /> + app:layout_constraintTop_toBottomOf="@+id/tilTopic" /> <RadioGroup android:id="@+id/circleTypeGroup" diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml index 771a28d27..c79f6eaee 100644 --- a/core/src/main/res/values/strings.xml +++ b/core/src/main/res/values/strings.xml @@ -129,6 +129,7 @@ <string name="circle_name">Circle name</string> <string name="circle_type">Circle type</string> <string name="public_type">Public</string> + <string name="group_topic_optional">Group topic (optional)</string> <string name="public_circle_explanation">Other users can ask to join</string> <string name="private_type">Private</string> <string name="private_circle_explanation">Accessible only by your invitation</string> diff --git a/gallery/src/main/java/org/futo/circles/gallery/feature/create/CreateGalleryDialogFragment.kt b/gallery/src/main/java/org/futo/circles/gallery/feature/create/CreateGalleryDialogFragment.kt deleted file mode 100644 index 32ca176c1..000000000 --- a/gallery/src/main/java/org/futo/circles/gallery/feature/create/CreateGalleryDialogFragment.kt +++ /dev/null @@ -1,48 +0,0 @@ -package org.futo.circles.gallery.feature.create - -import android.net.Uri -import android.os.Bundle -import android.view.View -import androidx.core.widget.doAfterTextChanged -import androidx.fragment.app.Fragment -import dagger.hilt.android.AndroidEntryPoint -import org.futo.circles.core.extensions.getText -import org.futo.circles.core.feature.picker.helper.MediaPickerHelper -import org.futo.circles.core.feature.room.create.CreateRoomDialogFragment -import org.futo.circles.core.model.CircleRoomTypeArg -import org.futo.circles.gallery.databinding.DialogFragmentCreateGalleryBinding - -@AndroidEntryPoint -class CreateGalleryDialogFragment : - CreateRoomDialogFragment(DialogFragmentCreateGalleryBinding::inflate) { - - override val fragment: Fragment = this - override val inviteContainerId: Int? = null - override val mediaPickerHelper = MediaPickerHelper(this) - - private val binding by lazy { - getBinding() as DialogFragmentCreateGalleryBinding - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - setupViews() - } - - override fun onCoverImageSelected(uri: Uri) { - binding.ivCover.setImageURI(uri) - } - - private fun setupViews() { - with(binding) { - ivCover.setOnClickListener { changeCoverImage() } - tilName.editText?.doAfterTextChanged { - it?.let { btnCreate.isEnabled = it.isNotEmpty() } - } - btnCreate.setOnClickListener { - createRoom(CircleRoomTypeArg.Photo, tilName.getText()) - startLoading(btnCreate) - } - } - } -} \ No newline at end of file diff --git a/gallery/src/main/java/org/futo/circles/gallery/feature/gallery/grid/GalleryGridFragment.kt b/gallery/src/main/java/org/futo/circles/gallery/feature/gallery/grid/GalleryGridFragment.kt index c033d5e2f..4071678c4 100644 --- a/gallery/src/main/java/org/futo/circles/gallery/feature/gallery/grid/GalleryGridFragment.kt +++ b/gallery/src/main/java/org/futo/circles/gallery/feature/gallery/grid/GalleryGridFragment.kt @@ -73,7 +73,8 @@ class GalleryGridFragment : Fragment(R.layout.fragment_gallery_grid) { binding.rvGallery.getRecyclerView() .findViewHolderForAdapterPosition(returnViewPosition) ?: return - val t = selectedViewHolder.itemView.findViewById<View>(R.id.ivCover) + val t = + selectedViewHolder.itemView.findViewById<View>(org.futo.circles.core.R.id.ivCover) sharedElements[names[0]] = t returnViewPosition = -1 } diff --git a/gallery/src/main/res/layout/dialog_fragment_create_gallery.xml b/gallery/src/main/res/layout/dialog_fragment_create_gallery.xml deleted file mode 100644 index 9c81ccdf6..000000000 --- a/gallery/src/main/res/layout/dialog_fragment_create_gallery.xml +++ /dev/null @@ -1,107 +0,0 @@ -<?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" - android:layout_width="match_parent" - android:layout_height="match_parent"> - - - <com.google.android.material.appbar.MaterialToolbar - android:id="@+id/toolbar" - android:layout_width="0dp" - android:layout_height="?attr/actionBarSize" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" - app:navigationIcon="?attr/homeAsUpIndicator" - app:title="@string/create_new_gallery" - app:titleCentered="true" - app:titleMarginEnd="72dp"> - - <org.futo.circles.core.view.LoadingButton - android:id="@+id/btnCreate" - android:layout_width="56dp" - android:layout_height="match_parent" - android:layout_gravity="end" - android:layout_marginVertical="8dp" - android:layout_marginEnd="8dp" - android:enabled="false" - android:text="@string/create" - android:textSize="13sp" - app:textPadding="1dp" /> - - </com.google.android.material.appbar.MaterialToolbar> - - - <View - android:id="@+id/toolbarDivider" - android:layout_width="0dp" - android:layout_height="@dimen/divider_height" - android:background="@color/divider_color" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/toolbar" /> - - - <androidx.constraintlayout.widget.Guideline - android:id="@+id/guidelineStart" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:orientation="vertical" - app:layout_constraintGuide_begin="8dp" /> - - <androidx.constraintlayout.widget.Guideline - android:id="@+id/guidelineEnd" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:orientation="vertical" - app:layout_constraintGuide_end="8dp" /> - - <com.google.android.material.imageview.ShapeableImageView - android:id="@+id/ivCover" - android:layout_width="@dimen/group_icon_size" - android:layout_height="@dimen/group_icon_size" - android:layout_marginTop="16dp" - android:clickable="true" - android:focusable="true" - android:scaleType="centerCrop" - android:src="@drawable/add_image_placeholder" - app:layout_constraintEnd_toEndOf="@id/guidelineEnd" - app:layout_constraintStart_toStartOf="@id/guidelineStart" - app:layout_constraintTop_toBottomOf="@id/toolbarDivider" - app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.App.GroupIconRadius" /> - - - <TextView - android:id="@+id/tvNameHeader" - style="@style/headline" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_marginTop="16dp" - android:text="@string/gallery_name" - app:layout_constraintEnd_toEndOf="@id/guidelineEnd" - app:layout_constraintStart_toStartOf="@id/guidelineStart" - app:layout_constraintTop_toBottomOf="@id/ivCover" /> - - <com.google.android.material.textfield.TextInputLayout - android:id="@+id/tilName" - style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_marginTop="8dp" - app:hintEnabled="false" - app:layout_constraintEnd_toEndOf="@id/guidelineEnd" - app:layout_constraintStart_toStartOf="@id/guidelineStart" - app:layout_constraintTop_toBottomOf="@id/tvNameHeader"> - - <com.google.android.material.textfield.TextInputEditText - android:id="@+id/etName" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:imeOptions="actionNext" - android:inputType="textCapSentences" - android:maxLines="1" - android:padding="12dp" /> - - </com.google.android.material.textfield.TextInputLayout> - -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/gallery/src/main/res/navigation/photos_nav_graph.xml b/gallery/src/main/res/navigation/photos_nav_graph.xml index eee66c918..287e1f7c9 100644 --- a/gallery/src/main/res/navigation/photos_nav_graph.xml +++ b/gallery/src/main/res/navigation/photos_nav_graph.xml @@ -13,7 +13,15 @@ <action android:id="@+id/to_createGalleryDialogFragment" - app:destination="@id/createGalleryDialogFragment" /> + app:destination="@id/createGalleryDialogFragment"> + + <argument + android:name="type" + android:defaultValue="Photo" + app:argType="org.futo.circles.core.model.CircleRoomTypeArg" + app:nullable="false" /> + + </action> <action android:id="@+id/to_galleryFragment" @@ -43,8 +51,16 @@ <dialog android:id="@+id/createGalleryDialogFragment" - android:name="org.futo.circles.gallery.feature.create.CreateGalleryDialogFragment" - tools:layout="@layout/dialog_fragment_create_gallery" /> + android:name="org.futo.circles.core.feature.room.create.CreateRoomDialogFragment" + tools:layout="@layout/dialog_fragment_create_room"> + + <argument + android:name="type" + android:defaultValue="Photo" + app:argType="org.futo.circles.core.model.CircleRoomTypeArg" + app:nullable="false" /> + + </dialog> <dialog android:id="@+id/galleryFragment" android:name="org.futo.circles.gallery.feature.gallery.GalleryDialogFragment" -- GitLab