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>