The room context menu is a jumbled mess of actions, so the first idea of
this commit is to organize them. The first item is "Mark as Read"
because let's be honest, you're going to be using that the most. Then
the next "group" of actions are what users can "do" with the room. This
is like "Notification settings", "Favorite" and etc. Then there's room
settings, and leave.
Secondly, the "Favorite" action now uses the same icon we use elsewhere.
Third, "Notification State" is a weird name for this action and renamed
to simply "Notifications".
Finally, the "Mark as Read" action is now disabled when there's nothing
else to read.
"Room ID or Alias" is duplicated twice here, once in the dialog title
and a second time as the label for the text field. Let's change it to a
more suitable name "Manually Enter a Room".
This adds a short explanatory label to the "Enter a room address" button
in this list, in case the user does not know where to find their room
address.
Also changes the name of the button to "Enter a Room Manually" to refer
that you can enter aliases here as well.
Currently the page experienc on mobile is suboptimal as back gestures do not work and the startup behaviour is not ideal.
This reworks it so that pages are now pushed as a layer on mobile and at startup only a saved space is restored. It is also setup so that on mobile you'll never see a blank room page (like when you select friends or home).
Make sure that the search filter is removed when another button is pressed.
Make sure that the popup closes when one of the other menus is open.
Make the separator is at the top on NavigationTabBar
A separator has been added to the drawer view's left side, and the position of the NavigationTabBar has been set so it correctly draws the separator at the top and not the bottom.
Rework notifications manager to no longer be a singleton, but a component of controller.
The dependency on it for neochat room and connection is also removed.
Rework ActionsHandler as static helper functions.
The functions are now invoked from ChatBarCache so there is no need to pass an actions handler object around qml simplifying the code.
Have controller link to neochatconnection for errorOccured rather than call directly to remove dependency on controller.
For all the same reasons as network/neochat!1926
Move showMessage to RoomManager and merge warning in. A new Message type enum is created aligned with the Kirgami.MessageType used by Kirigami.Banner to avoid needing to translate from 2 enums.
showMessage is also sent as a signal from NeoChatRoom (and via the room from ActionsModel), this removes the need for them to have a dependency on Controller (and RoomManager). While not necessarily the cause of Windows crashes the spaghetti dependencies of RoomManager and Controller throughout the code base has made debugging that harder so this aims to simplify that as well.
The default timeout is a bit long, "short" is 3 seconds shorter than the
default. For long-term network errors, we have a banner telling you so
anyway. This should hopefully reduce the notification spam when you have
temporary network dropouts.
This button doesn't actually configure anything, you can do plenty of
actions like "mark as read" and such. Since the button isn't solely for
configuration, we should use an overflow menu icon instead.