From 9da727b623a0a5acccc281fda49c88fb4869a46b Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 29 May 2019 15:29:02 +0200 Subject: [PATCH] All caught up screen --- .../riotredesign/core/platform/StateView.kt | 8 ++-- .../home/room/list/RoomListFragment.kt | 33 +++++++++++-- .../res/drawable/ic_noun_party_popper.xml | 10 ++++ vector/src/main/res/layout/view_state.xml | 48 ++++++++++++------- vector/src/main/res/values/strings_riotX.xml | 4 ++ 5 files changed, 78 insertions(+), 25 deletions(-) create mode 100644 vector/src/main/res/drawable/ic_noun_party_popper.xml diff --git a/vector/src/main/java/im/vector/riotredesign/core/platform/StateView.kt b/vector/src/main/java/im/vector/riotredesign/core/platform/StateView.kt index a6fa745732..52c37baaa3 100755 --- a/vector/src/main/java/im/vector/riotredesign/core/platform/StateView.kt +++ b/vector/src/main/java/im/vector/riotredesign/core/platform/StateView.kt @@ -62,19 +62,19 @@ class StateView @JvmOverloads constructor(context: Context, attrs: AttributeSet? private fun update(newState: State) { when (newState) { - is StateView.State.Content -> { + is State.Content -> { progressBar.visibility = View.INVISIBLE errorView.visibility = View.INVISIBLE emptyView.visibility = View.INVISIBLE contentView?.visibility = View.VISIBLE } - is StateView.State.Loading -> { + is State.Loading -> { progressBar.visibility = View.VISIBLE errorView.visibility = View.INVISIBLE emptyView.visibility = View.INVISIBLE contentView?.visibility = View.INVISIBLE } - is StateView.State.Empty -> { + is State.Empty -> { progressBar.visibility = View.INVISIBLE errorView.visibility = View.INVISIBLE emptyView.visibility = View.VISIBLE @@ -85,7 +85,7 @@ class StateView @JvmOverloads constructor(context: Context, attrs: AttributeSet? contentView!!.visibility = View.INVISIBLE } } - is StateView.State.Error -> { + is State.Error -> { progressBar.visibility = View.INVISIBLE errorView.visibility = View.VISIBLE emptyView.visibility = View.INVISIBLE diff --git a/vector/src/main/java/im/vector/riotredesign/features/home/room/list/RoomListFragment.kt b/vector/src/main/java/im/vector/riotredesign/features/home/room/list/RoomListFragment.kt index 1ffb13f52e..7e13e66546 100644 --- a/vector/src/main/java/im/vector/riotredesign/features/home/room/list/RoomListFragment.kt +++ b/vector/src/main/java/im/vector/riotredesign/features/home/room/list/RoomListFragment.kt @@ -19,12 +19,14 @@ package im.vector.riotredesign.features.home.room.list import android.os.Bundle import android.os.Parcelable import androidx.annotation.StringRes +import androidx.core.content.ContextCompat import androidx.core.view.isVisible import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.airbnb.mvrx.* import com.google.android.material.floatingactionbutton.FloatingActionButton import im.vector.matrix.android.api.failure.Failure +import im.vector.matrix.android.api.session.room.model.Membership import im.vector.matrix.android.api.session.room.model.RoomSummary import im.vector.riotredesign.R import im.vector.riotredesign.core.epoxy.LayoutManagerStateRestorer @@ -149,17 +151,38 @@ class RoomListFragment : VectorBaseFragment(), RoomSummaryController.Callback { } private fun renderEmptyState(allRooms: List?) { - val hasNoRoom = allRooms.isNullOrEmpty() + val hasNoRoom = allRooms + ?.filter { + it.membership == Membership.JOIN || it.membership == Membership.INVITE + } + .isNullOrEmpty() val emptyState = when (roomListParams.displayMode) { DisplayMode.HOME -> { if (hasNoRoom) { - StateView.State.Empty(getString(R.string.room_list_catchup_welcome_title), null, getString(R.string.room_list_catchup_welcome_body)) + StateView.State.Empty( + getString(R.string.room_list_catchup_welcome_title), + ContextCompat.getDrawable(requireContext(), R.drawable.ic_home_bottom_catchup), + getString(R.string.room_list_catchup_welcome_body) + ) } else { - StateView.State.Empty(getString(R.string.room_list_catchup_empty_title), null, getString(R.string.room_list_catchup_empty_body)) + StateView.State.Empty( + getString(R.string.room_list_catchup_empty_title), + ContextCompat.getDrawable(requireContext(), R.drawable.ic_noun_party_popper), + getString(R.string.room_list_catchup_empty_body)) } } - DisplayMode.PEOPLE -> StateView.State.Empty() - DisplayMode.ROOMS -> StateView.State.Empty() + DisplayMode.PEOPLE -> + StateView.State.Empty( + getString(R.string.room_list_people_empty_title), + ContextCompat.getDrawable(requireContext(), R.drawable.ic_home_bottom_chat), + getString(R.string.room_list_people_empty_body) + ) + DisplayMode.ROOMS -> + StateView.State.Empty( + getString(R.string.room_list_rooms_empty_title), + ContextCompat.getDrawable(requireContext(), R.drawable.ic_home_bottom_group), + getString(R.string.room_list_rooms_empty_body) + ) } stateView.state = emptyState } diff --git a/vector/src/main/res/drawable/ic_noun_party_popper.xml b/vector/src/main/res/drawable/ic_noun_party_popper.xml new file mode 100644 index 0000000000..2ace9bd928 --- /dev/null +++ b/vector/src/main/res/drawable/ic_noun_party_popper.xml @@ -0,0 +1,10 @@ + + + diff --git a/vector/src/main/res/layout/view_state.xml b/vector/src/main/res/layout/view_state.xml index 91803d86f1..83f9424d48 100644 --- a/vector/src/main/res/layout/view_state.xml +++ b/vector/src/main/res/layout/view_state.xml @@ -1,5 +1,6 @@ + android:padding="@dimen/layout_horizontal_margin"> - + android:padding="@dimen/layout_horizontal_margin"> + android:textColor="#2E2F32" + android:textSize="15sp" + android:textStyle="bold" + app:layout_constraintBottom_toTopOf="@+id/emptyImageView" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + tools:text="@string/room_list_catchup_empty_title" /> + android:layout_width="64dp" + android:layout_height="64dp" + android:layout_gravity="center_horizontal" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + tools:src="@drawable/ic_noun_party_popper" /> + android:textColor="#7E899C" + android:textSize="14sp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/emptyImageView" + tools:text="@string/room_list_catchup_empty_body" /> - + \ No newline at end of file diff --git a/vector/src/main/res/values/strings_riotX.xml b/vector/src/main/res/values/strings_riotX.xml index 1c7580e158..299b34f6e2 100644 --- a/vector/src/main/res/values/strings_riotX.xml +++ b/vector/src/main/res/values/strings_riotX.xml @@ -11,6 +11,10 @@ You have no more unread messages Welcome home! Catch up on unread messages here + Conversations + Your direct message conversation will be displayed here + Rooms + Your rooms will be displayed here Reactions Agree