From e857052e37fc9baf7b9d3eaa82d05101c38aa8bf Mon Sep 17 00:00:00 2001 From: SpiritCroc <dev@spiritcroc.de> Date: Fri, 17 Jul 2020 13:46:24 +0200 Subject: [PATCH] Redo hidden bottom bar and combined chats view for v1.0 merge --- .../vector/riotx/features/home/HomeDetailFragment.kt | 7 ++++--- .../vector/riotx/features/home/HomeDetailViewState.kt | 2 +- .../vector/riotx/features/home/RoomListDisplayMode.kt | 1 + .../home/room/list/RoomListDisplayModeFilter.kt | 3 ++- .../riotx/features/home/room/list/RoomListFragment.kt | 10 ++++++++++ .../features/ui/SharedPreferencesUiStateRepository.kt | 3 +++ vector/src/main/res/values-de/strings_sc.xml | 4 ++++ vector/src/main/res/values/strings_sc.xml | 4 ++++ 8 files changed, 29 insertions(+), 5 deletions(-) diff --git a/vector/src/main/java/im/vector/riotx/features/home/HomeDetailFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/HomeDetailFragment.kt index 9d2f960281..202f53de5f 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/HomeDetailFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/HomeDetailFragment.kt @@ -90,8 +90,8 @@ class HomeDetailFragment @Inject constructor( withState(viewModel) { // Update the navigation view if needed (for when we restore the tabs) - bottomNavigationView.selectedItemId = it.displayMode.toMenuId() - bottomNavigationView.visibility = if (bottomNavigationView.selectedItemId != R.id.bottom_action_notification) View.VISIBLE else View.GONE + //bottomNavigationView.selectedItemId = it.displayMode.toMenuId() + bottomNavigationView.visibility = View.GONE } viewModel.selectSubscribe(this, HomeDetailViewState::groupSummary) { groupSummary -> @@ -249,7 +249,8 @@ class HomeDetailFragment @Inject constructor( val displayMode = when (it.itemId) { R.id.bottom_action_people -> RoomListDisplayMode.PEOPLE R.id.bottom_action_rooms -> RoomListDisplayMode.ROOMS - else -> RoomListDisplayMode.NOTIFICATIONS + R.id.bottom_action_notification -> RoomListDisplayMode.NOTIFICATIONS + else -> RoomListDisplayMode.ALL } viewModel.handle(HomeDetailAction.SwitchDisplayMode(displayMode)) true diff --git a/vector/src/main/java/im/vector/riotx/features/home/HomeDetailViewState.kt b/vector/src/main/java/im/vector/riotx/features/home/HomeDetailViewState.kt index a9a838195b..ce7eb03b72 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/HomeDetailViewState.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/HomeDetailViewState.kt @@ -27,7 +27,7 @@ import im.vector.matrix.android.api.session.sync.SyncState data class HomeDetailViewState( val groupSummary: Option<GroupSummary> = Option.empty(), val asyncRooms: Async<List<RoomSummary>> = Uninitialized, - val displayMode: RoomListDisplayMode = RoomListDisplayMode.PEOPLE, + val displayMode: RoomListDisplayMode = RoomListDisplayMode.ALL, val notificationCountCatchup: Int = 0, val notificationHighlightCatchup: Boolean = false, val notificationCountPeople: Int = 0, diff --git a/vector/src/main/java/im/vector/riotx/features/home/RoomListDisplayMode.kt b/vector/src/main/java/im/vector/riotx/features/home/RoomListDisplayMode.kt index 365eda74a8..9ac12a817b 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/RoomListDisplayMode.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/RoomListDisplayMode.kt @@ -20,6 +20,7 @@ import androidx.annotation.StringRes import im.vector.riotx.R enum class RoomListDisplayMode(@StringRes val titleRes: Int) { + ALL(R.string.bottom_action_all), NOTIFICATIONS(R.string.bottom_action_notification), PEOPLE(R.string.bottom_action_people_x), ROOMS(R.string.bottom_action_rooms), diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListDisplayModeFilter.kt b/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListDisplayModeFilter.kt index 72b143994e..27b3c31741 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListDisplayModeFilter.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListDisplayModeFilter.kt @@ -28,8 +28,9 @@ class RoomListDisplayModeFilter(private val displayMode: RoomListDisplayMode) : return false } return when (displayMode) { + RoomListDisplayMode.ALL -> true RoomListDisplayMode.NOTIFICATIONS -> - true //roomSummary.notificationCount > 0 || roomSummary.membership == Membership.INVITE || roomSummary.userDrafts.isNotEmpty() + roomSummary.notificationCount > 0 || roomSummary.membership == Membership.INVITE || roomSummary.userDrafts.isNotEmpty() RoomListDisplayMode.PEOPLE -> roomSummary.isDirect && roomSummary.membership.isActive() RoomListDisplayMode.ROOMS -> !roomSummary.isDirect && roomSummary.membership.isActive() RoomListDisplayMode.FILTERED -> roomSummary.membership == Membership.JOIN diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListFragment.kt index 2858097e24..615b0633c9 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/list/RoomListFragment.kt @@ -138,6 +138,7 @@ class RoomListFragment @Inject constructor( private fun setupCreateRoomButton() { when (roomListParams.displayMode) { + RoomListDisplayMode.ALL, RoomListDisplayMode.NOTIFICATIONS -> createChatFabMenu.isVisible = true RoomListDisplayMode.PEOPLE -> createChatRoomButton.isVisible = true RoomListDisplayMode.ROOMS -> createGroupRoomButton.isVisible = true @@ -164,6 +165,7 @@ class RoomListFragment @Inject constructor( RecyclerView.SCROLL_STATE_DRAGGING, RecyclerView.SCROLL_STATE_SETTLING -> { when (roomListParams.displayMode) { + RoomListDisplayMode.ALL, RoomListDisplayMode.NOTIFICATIONS -> createChatFabMenu.hide() RoomListDisplayMode.PEOPLE -> createChatRoomButton.hide() RoomListDisplayMode.ROOMS -> createGroupRoomButton.hide() @@ -207,6 +209,7 @@ class RoomListFragment @Inject constructor( private val showFabRunnable = Runnable { if (isAdded) { when (roomListParams.displayMode) { + RoomListDisplayMode.ALL, RoomListDisplayMode.NOTIFICATIONS -> createChatFabMenu.show() RoomListDisplayMode.PEOPLE -> createChatRoomButton.show() RoomListDisplayMode.ROOMS -> createGroupRoomButton.show() @@ -258,6 +261,7 @@ class RoomListFragment @Inject constructor( roomController.update(state) // Mark all as read menu when (roomListParams.displayMode) { + RoomListDisplayMode.ALL, RoomListDisplayMode.NOTIFICATIONS, RoomListDisplayMode.PEOPLE, RoomListDisplayMode.ROOMS -> { @@ -288,6 +292,12 @@ class RoomListFragment @Inject constructor( } .isNullOrEmpty() val emptyState = when (roomListParams.displayMode) { + RoomListDisplayMode.ALL -> + StateView.State.Empty( + getString(R.string.all_list_rooms_empty_title), + ContextCompat.getDrawable(requireContext(), R.drawable.ic_home_bottom_group), + getString(R.string.all_list_rooms_empty_body) + ) RoomListDisplayMode.NOTIFICATIONS -> { if (hasNoRoom) { StateView.State.Empty( diff --git a/vector/src/main/java/im/vector/riotx/features/ui/SharedPreferencesUiStateRepository.kt b/vector/src/main/java/im/vector/riotx/features/ui/SharedPreferencesUiStateRepository.kt index ec1f8e5131..4ce6e10ee3 100644 --- a/vector/src/main/java/im/vector/riotx/features/ui/SharedPreferencesUiStateRepository.kt +++ b/vector/src/main/java/im/vector/riotx/features/ui/SharedPreferencesUiStateRepository.kt @@ -37,6 +37,8 @@ class SharedPreferencesUiStateRepository @Inject constructor( } override fun getDisplayMode(): RoomListDisplayMode { + return RoomListDisplayMode.ALL + /* return when (sharedPreferences.getInt(KEY_DISPLAY_MODE, VALUE_DISPLAY_MODE_CATCHUP)) { VALUE_DISPLAY_MODE_PEOPLE -> RoomListDisplayMode.PEOPLE VALUE_DISPLAY_MODE_ROOMS -> RoomListDisplayMode.ROOMS @@ -46,6 +48,7 @@ class SharedPreferencesUiStateRepository @Inject constructor( RoomListDisplayMode.PEOPLE } } + */ } override fun storeDisplayMode(displayMode: RoomListDisplayMode) { diff --git a/vector/src/main/res/values-de/strings_sc.xml b/vector/src/main/res/values-de/strings_sc.xml index 962d98ae94..dcfa93ced7 100644 --- a/vector/src/main/res/values-de/strings_sc.xml +++ b/vector/src/main/res/values-de/strings_sc.xml @@ -12,4 +12,8 @@ <string name="bubble_style_start">Selbe Seite</string> <string name="bubble_style_both">Beide Seiten</string> + <string name="bottom_action_all">Übersicht</string> + <string name="all_list_rooms_empty_title">SchildiChat</string> + <string name="all_list_rooms_empty_body">Konversationen werden hier angezeigt</string> + </resources> diff --git a/vector/src/main/res/values/strings_sc.xml b/vector/src/main/res/values/strings_sc.xml index c6feeb8530..b9dc763d7b 100644 --- a/vector/src/main/res/values/strings_sc.xml +++ b/vector/src/main/res/values/strings_sc.xml @@ -12,4 +12,8 @@ <string name="bubble_style_start">Same side</string> <string name="bubble_style_both">Both sides</string> + <string name="bottom_action_all">Overview</string> + <string name="all_list_rooms_empty_title">SchildiChat</string> + <string name="all_list_rooms_empty_body">Chats will be displayed here</string> + </resources>