Fix the reply an edit text being shown in all chat rooms when multiple windows are open. This is done by changing chatBoxHelper from a singleton to being instantiated for each instance of roompage.
BUG: 454963
### Summary
This merge request adds a horizontal bar at top of room list, which shows spaces. By clicking on a space, user can filter out rooms belonging only to that specific space.
### Pending/ Help needed
#### Segfault when loading active connection on startup
Refer `void SortFilterRoomListModel::cacheSpaceHierarchy()` ([link](8c372800d7 (b969e462c30df43ef3714ea441948d8d8027f6a0_117_126))) in `src/sortfilterroomlistmodel.cpp`.
On [line 129](8c372800d7 (b969e462c30df43ef3714ea441948d8d8027f6a0_117_129)), I have called `connection->allRooms()`, which segfaults if the active connection hasn't been loaded yet. Is there a way to ensure that `Controller::instance().activeConnection()` on line 128 waits till connection is loaded?
#### Avatars
Avatars on space horizontal bar aren't aligned to vertical middle. I'll need help with that.
Using the code below doesn't help with padding
```qml
delegate: QQC2.Control {
topPadding: 10
contentItem: Kirigami.Avatar { ..... }
}
```
This complains about uninitialized properties in `Kirigami.Avatar`. (`id`, `currentRoom`, `avatar`, `index` are properties utilized during run time)
After we get around these two issue, this MR will be ready from my side.
QDesktopServices::openUrl does not have XDG activation support yet so it can't raise an existing browser window when opening URLs
Instead use KIO::OpenUrlJob, which does support that
* use KWindowSystem::updateStartupId() for abstract update of X11
startup id or wayland activation token
* call QWindow::raise() also for wayland to prepare when it will
support it
* call KWindowSystem::activateWindow() for all platforms, like done
by other apps on user-triggered activation
If the user wants to automatically launch NeoChat when the system
starts up, the user may also want to minimize the window to system tray
on startup. So a new option named "Minimize to system tray on startup"
is added.
The option is only visible on desktop platforms, and is only enabled
when "Close to system tray" is checked.
In order to restore window geometry for the first time the user opens
the window if the option is checked,
1. a new function named `restoreWindowGeometry` is added, and
`restoreWindowGeometryConnections` will be enabled if the option is
checked, and will be disabled after the window debuts.
2. `saveWindowGeometryConnections` will be enabled if the option is not
checked, and will be disabled if checked and enabled after the window
debuts.
Adds support for xdg_activation_v1 when calling the application from the
system tray by using KStatusNotifier which supports it.
Listens to XDG_ACTIVATION_TOKEN as it's passed when we are started from
dbus.
Only display up to 10 emojis when searching
Related to #310 but a better solution needs to be found because we get
the same problem on big room when autocompleting usernames.
The filter callback is called very often (O(messages)). The current
filter model shows some significant overhead in QML internals. Moving
that to C++ makes it quite a bit faster.