diff --git a/src/timeline/TimelineViewManager.cpp b/src/timeline/TimelineViewManager.cpp
index ed720056..18151173 100644
--- a/src/timeline/TimelineViewManager.cpp
+++ b/src/timeline/TimelineViewManager.cpp
@@ -8,7 +8,6 @@
#include <QString>
#include "BlurhashProvider.h"
-#include "CallManager.h"
#include "ChatPage.h"
#include "ColorImageProvider.h"
#include "DelegateChooser.h"
@@ -233,6 +232,12 @@ TimelineViewManager::TimelineViewManager(QSharedPointer<UserSettings> userSettin
isInitialSync_ = true;
emit initialSyncChanged(true);
});
+ connect(&WebRTCSession::instance(),
+ &WebRTCSession::stateChanged,
+ this,
+ &TimelineViewManager::callStateChanged);
+ connect(
+ callManager_, &CallManager::newCallParty, this, &TimelineViewManager::callPartyChanged);
}
void
@@ -305,6 +310,13 @@ TimelineViewManager::escapeEmoji(QString str) const
}
void
+TimelineViewManager::toggleMicMute()
+{
+ WebRTCSession::instance().toggleMicMute();
+ emit micMuteChanged();
+}
+
+void
TimelineViewManager::openImageOverlay(QString mxcUrl, QString eventId) const
{
QQuickImageResponse *imgResponse =
diff --git a/src/timeline/TimelineViewManager.h b/src/timeline/TimelineViewManager.h
index a8bd2e06..9a2a6467 100644
--- a/src/timeline/TimelineViewManager.h
+++ b/src/timeline/TimelineViewManager.h
@@ -10,16 +10,17 @@
#include <mtx/responses.hpp>
#include "Cache.h"
+#include "CallManager.h"
#include "DeviceVerificationFlow.h"
#include "Logging.h"
#include "TimelineModel.h"
#include "Utils.h"
+#include "WebRTCSession.h"
#include "emoji/EmojiModel.h"
#include "emoji/Provider.h"
class MxcImageProvider;
class BlurhashProvider;
-class CallManager;
class ColorImageProvider;
class UserSettings;
class ChatPage;
@@ -34,6 +35,10 @@ class TimelineViewManager : public QObject
bool isInitialSync MEMBER isInitialSync_ READ isInitialSync NOTIFY initialSyncChanged)
Q_PROPERTY(
bool isNarrowView MEMBER isNarrowView_ READ isNarrowView NOTIFY narrowViewChanged)
+ Q_PROPERTY(webrtc::State callState READ callState NOTIFY callStateChanged)
+ Q_PROPERTY(QString callPartyName READ callPartyName NOTIFY callPartyChanged)
+ Q_PROPERTY(QString callPartyAvatarUrl READ callPartyAvatarUrl NOTIFY callPartyChanged)
+ Q_PROPERTY(bool isMicMuted READ isMicMuted NOTIFY micMuteChanged)
public:
TimelineViewManager(QSharedPointer<UserSettings> userSettings,
@@ -49,6 +54,11 @@ public:
Q_INVOKABLE TimelineModel *activeTimeline() const { return timeline_; }
Q_INVOKABLE bool isInitialSync() const { return isInitialSync_; }
bool isNarrowView() const { return isNarrowView_; }
+ webrtc::State callState() const { return WebRTCSession::instance().state(); }
+ QString callPartyName() const { return callManager_->callPartyName(); }
+ QString callPartyAvatarUrl() const { return callManager_->callPartyAvatarUrl(); }
+ bool isMicMuted() const { return WebRTCSession::instance().isMicMuted(); }
+ Q_INVOKABLE void toggleMicMute();
Q_INVOKABLE void openImageOverlay(QString mxcUrl, QString eventId) const;
Q_INVOKABLE QColor userColor(QString id, QColor background);
Q_INVOKABLE QString escapeEmoji(QString str) const;
@@ -78,6 +88,9 @@ signals:
void inviteUsers(QStringList users);
void showRoomList();
void narrowViewChanged();
+ void callStateChanged(webrtc::State);
+ void callPartyChanged();
+ void micMuteChanged();
public slots:
void updateReadReceipts(const QString &room_id, const std::vector<QString> &event_ids);
|