This draws heavily on what @carlschwan did in network/neochat!1579 but I found it easier to start again and grab the bits as I needed them plus some other copying from what I did in the Space tree model.
From my current limited testing this seems to work nicely try and break it.
Shutup qt about below
```
SortFilterRoomListModel is neither a QObject, nor default- and copy-constructible, nor uncreatable. You should not use it as a QML type.
SortFilterRoomTreeModel is neither a QObject, nor default- and copy-constructible, nor uncreatable. You should not use it as a QML type.
SortFilterSpaceListModel is neither a QObject, nor default- and copy-constructible, nor uncreatable. You should not use it as a QML type.
```
Move the various room models into RoomManager. This means the same room models are always used and is a base from which further logic can be moved from QML to cpp.
Fixes#645
- Active space handling is moved from QML to RoomManager
- Active tab in SpaceDrawer (space / no space / DM) is unified in a single variable
- RoomList & RoomPage loading is simplified: We're always pushing a RoomPage now; if there is no room, a placeholder is shown
- SpaceHomePage is moved into RoomPage; This replaces the entire push/replace room/spacehome logic
- If the current room is a space, the space home is shown, otherwise the timeline
- The concept of "previous room" is removed entirely. If we're leaving the active room, the placeholder room page is shown
- When clicking on a space in the list, the space room list is switched and the space home page is shown
In short, these changes should (after some initial regressions) lead to a less crashy NeoChat :)
Make sure that messages are not marked as read when going back to the roomlist after entering a room when neochat is thin and only showing a single page
Fixes#642
At its best, this worked ok-ish, though it was always missing basic features.
It's also a massive memory leak and significantly complicates the codebase.
(Which is not yet cleaned up by this commit)
Currently, it is entirely broken and noone noticed or cared enough to report or fix that.
BUG: 455984