Browse Source

Open desktop stream playback windows from channel sources

master
evgeny 1 week ago
parent
commit
b4ebaa8863
  1. 2
      tools/chatgui/CMakeLists.txt
  2. 15
      tools/chatgui/src/mainwindow.cpp
  3. 2
      tools/chatgui/src/mainwindow.h

2
tools/chatgui/CMakeLists.txt

@ -195,6 +195,7 @@ add_executable(vibechat
src/media_blocks.cpp
src/videoplayer_engine.cpp
src/videoplayer_window.cpp
src/streamplayer_window.cpp
src/imageviewer_window.cpp
src/member_files/browser.cpp
src/member_files/batch.cpp
@ -216,6 +217,7 @@ add_executable(vibechat
transport/node_config.cpp
transport/config_updater.cpp
transport/gui_bridge_impl.cpp
transport/stream_bridge.cpp
transport/miniaudio_impl.c
transport/audio_diagnostics.cpp
db/db_manager.cpp

15
tools/chatgui/src/mainwindow.cpp

@ -1,5 +1,6 @@
#include <QCoreApplication>
#include "mainwindow.h"
#include "streamplayer_window.h"
#include "channellist.h"
#include "messagelist.h"
#include "messagedelegate.h"
@ -197,6 +198,8 @@ MainWindow::MainWindow(QWidget *parent, DbManager* db, const QString& cfgPath,
}
MainWindow::~MainWindow() {
if (m_streamPlayer) delete m_streamPlayer.data();
gui_bridge_set_stream_sources_cb(nullptr);
s_mainWindow = nullptr;
m_cpuLoadTimer->stop();
gui_bridge_set_cpu_load_cb(nullptr);
@ -585,8 +588,11 @@ void MainWindow::setupBridgeCallbacks() {
s_mainWindow->m_channelList->setCpuLoad(0);
s_mainWindow->m_accountList->model()->setRadioState(0, false, false);
s_mainWindow->m_messageList->clearDmCallRoute();
s_mainWindow->m_messageList->clearStreams();
if (s_mainWindow->m_streamPlayer) s_mainWindow->m_streamPlayer->close();
s_mainWindow->m_channelList->clearDmPresence();
} else {
if (type == 12) s_mainWindow->m_messageList->watchStreams();
s_mainWindow->m_channelList->refreshDmPresence();
}
});
@ -599,12 +605,21 @@ void MainWindow::setupBridgeCallbacks() {
if (s_mainWindow)
s_mainWindow->m_messageList->onDmMessages(data, len);
});
gui_bridge_set_stream_sources_cb([](const uint8_t* data, int len) {
if (s_mainWindow) s_mainWindow->m_messageList->onStreamSources(data, len);
});
gui_bridge_set_attachment_preparation_cb([](const uint8_t* data, int len) {
if (s_mainWindow) s_mainWindow->m_messageList->onAttachmentPreparation(data, len);
});
}
void MainWindow::setupConnects() {
connect(m_messageList, &MessageList::streamRequested, this,
[this](quint64 group, quint64 source, quint64 epoch, const QString& name) {
if (m_streamPlayer) delete m_streamPlayer.data();
m_streamPlayer = new StreamPlayerWindow(group, source, epoch, name);
m_streamPlayer->setAttribute(Qt::WA_DeleteOnClose); m_streamPlayer->show();
});
connect(RadioAudioEngine::instance(), &RadioAudioEngine::stateChanged, this, [this] {
auto* engine = RadioAudioEngine::instance();
m_accountList->model()->setRadioState(engine->groupId(), engine->isActive(), engine->isTransmitting());

2
tools/chatgui/src/mainwindow.h

@ -21,6 +21,7 @@ class UtunNode;
class AudioRecorder;
class ConnMonitorWindow;
class VideoPlayerWindow;
class StreamPlayerWindow;
class ImageViewerWindow;
class CallWindow;
class CallAudioEngine;
@ -124,6 +125,7 @@ private:
AudioRecorder *m_recorder = nullptr;
ConnMonitorWindow *m_connMonitor = nullptr;
VideoPlayerWindow *m_videoPlayer = nullptr;
QPointer<StreamPlayerWindow> m_streamPlayer;
ImageViewerWindow *m_imageViewer = nullptr;
QPointer<MemberFileBrowser> m_fileBrowser;

Loading…
Cancel
Save