Add jitsi button to RoomPage
This commit is contained in:
@@ -59,11 +59,33 @@ Kirigami.Page {
|
|||||||
*/
|
*/
|
||||||
property MediaMessageFilterModel mediaMessageFilterModel: RoomManager.mediaMessageFilterModel
|
property MediaMessageFilterModel mediaMessageFilterModel: RoomManager.mediaMessageFilterModel
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief The WidgetModel to use.
|
||||||
|
*
|
||||||
|
* This model has the list of widgets available in the current room.
|
||||||
|
*
|
||||||
|
* @note For loading a room in a different window, override this with a new
|
||||||
|
* WidgetModel.
|
||||||
|
*
|
||||||
|
* @sa WidgetModel
|
||||||
|
*/
|
||||||
|
property WidgetModel widgetModel: RoomManager.widgetModel
|
||||||
|
|
||||||
title: root.currentRoom ? root.currentRoom.displayName : ""
|
title: root.currentRoom ? root.currentRoom.displayName : ""
|
||||||
focus: true
|
focus: true
|
||||||
padding: 0
|
padding: 0
|
||||||
|
|
||||||
actions: [
|
actions: [
|
||||||
|
Kirigami.Action {
|
||||||
|
tooltip: i18nc("@action:button", "Open Jitsi Meet in browser")
|
||||||
|
icon.name: "camera-video-symbolic"
|
||||||
|
visible: root.widgetModel.jitsiIndex >= 0
|
||||||
|
onTriggered: {
|
||||||
|
let idx = root.widgetModel.index(root.widgetModel.jitsiIndex, 0);
|
||||||
|
let url = root.widgetModel.data(idx, WidgetModel.UrlRole);
|
||||||
|
Qt.openUrlExternally(url);
|
||||||
|
}
|
||||||
|
},
|
||||||
Kirigami.Action {
|
Kirigami.Action {
|
||||||
visible: Kirigami.Settings.isMobile || !(root.Kirigami.PageStack.pageStack as Kirigami.PageRow).wideMode
|
visible: Kirigami.Settings.isMobile || !(root.Kirigami.PageStack.pageStack as Kirigami.PageRow).wideMode
|
||||||
icon.name: "view-right-new"
|
icon.name: "view-right-new"
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ RoomManager::RoomManager(QObject *parent)
|
|||||||
, m_messageFilterModel(new MessageFilterModel(this, m_timelineModel))
|
, m_messageFilterModel(new MessageFilterModel(this, m_timelineModel))
|
||||||
, m_mediaMessageFilterModel(new MediaMessageFilterModel(this, m_messageFilterModel))
|
, m_mediaMessageFilterModel(new MediaMessageFilterModel(this, m_messageFilterModel))
|
||||||
, m_userListModel(new UserListModel(this))
|
, m_userListModel(new UserListModel(this))
|
||||||
|
, m_widgetModel(new WidgetModel(this))
|
||||||
{
|
{
|
||||||
#if defined(Q_OS_ANDROID) || defined(Q_OS_IOS) || defined(UBUNTU_TOUCH)
|
#if defined(Q_OS_ANDROID) || defined(Q_OS_IOS) || defined(UBUNTU_TOUCH)
|
||||||
m_isMobile = true;
|
m_isMobile = true;
|
||||||
@@ -53,6 +54,7 @@ RoomManager::RoomManager(QObject *parent)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
connect(this, &RoomManager::currentRoomChanged, this, [this]() {
|
connect(this, &RoomManager::currentRoomChanged, this, [this]() {
|
||||||
|
m_widgetModel->setRoom(m_currentRoom);
|
||||||
m_userListModel->setRoom(m_currentRoom);
|
m_userListModel->setRoom(m_currentRoom);
|
||||||
m_timelineModel->setRoom(m_currentRoom);
|
m_timelineModel->setRoom(m_currentRoom);
|
||||||
m_sortFilterRoomTreeModel->setCurrentRoom(m_currentRoom);
|
m_sortFilterRoomTreeModel->setCurrentRoom(m_currentRoom);
|
||||||
@@ -195,6 +197,11 @@ void RoomManager::activateUserModel()
|
|||||||
m_userListModel->activate();
|
m_userListModel->activate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WidgetModel *RoomManager::widgetModel() const
|
||||||
|
{
|
||||||
|
return m_widgetModel;
|
||||||
|
}
|
||||||
|
|
||||||
void RoomManager::resolveResource(const QString &idOrUri, const QString &action)
|
void RoomManager::resolveResource(const QString &idOrUri, const QString &action)
|
||||||
{
|
{
|
||||||
resolveResource(Uri{idOrUri}, action);
|
resolveResource(Uri{idOrUri}, action);
|
||||||
|
|||||||
@@ -22,6 +22,7 @@
|
|||||||
#include "models/sortfilterspacelistmodel.h"
|
#include "models/sortfilterspacelistmodel.h"
|
||||||
#include "models/timelinemodel.h"
|
#include "models/timelinemodel.h"
|
||||||
#include "models/userlistmodel.h"
|
#include "models/userlistmodel.h"
|
||||||
|
#include "models/widgetmodel.h"
|
||||||
#include "neochatroommember.h"
|
#include "neochatroommember.h"
|
||||||
|
|
||||||
class NeoChatRoom;
|
class NeoChatRoom;
|
||||||
@@ -129,6 +130,14 @@ class RoomManager : public QObject, public UriResolverBase
|
|||||||
*/
|
*/
|
||||||
Q_PROPERTY(UserListModel *userListModel READ userListModel CONSTANT)
|
Q_PROPERTY(UserListModel *userListModel READ userListModel CONSTANT)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief The WidgetModel that should be used for room widget visualisation.
|
||||||
|
*
|
||||||
|
* @note Available here so that the room page and drawer both have access to the
|
||||||
|
* same model.
|
||||||
|
*/
|
||||||
|
Q_PROPERTY(WidgetModel *widgetModel READ widgetModel CONSTANT)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Whether a room is currently open in NeoChat.
|
* @brief Whether a room is currently open in NeoChat.
|
||||||
*
|
*
|
||||||
@@ -160,6 +169,8 @@ public:
|
|||||||
UserListModel *userListModel() const;
|
UserListModel *userListModel() const;
|
||||||
Q_INVOKABLE void activateUserModel();
|
Q_INVOKABLE void activateUserModel();
|
||||||
|
|
||||||
|
WidgetModel *widgetModel() const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Resolve the given resource.
|
* @brief Resolve the given resource.
|
||||||
*
|
*
|
||||||
@@ -356,6 +367,7 @@ private:
|
|||||||
MediaMessageFilterModel *m_mediaMessageFilterModel;
|
MediaMessageFilterModel *m_mediaMessageFilterModel;
|
||||||
|
|
||||||
UserListModel *m_userListModel;
|
UserListModel *m_userListModel;
|
||||||
|
WidgetModel *m_widgetModel;
|
||||||
|
|
||||||
QPointer<NeoChatConnection> m_connection;
|
QPointer<NeoChatConnection> m_connection;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user