From c4da659dcb488189ee34c1f714defb96473c8eae Mon Sep 17 00:00:00 2001 From: evgeny Date: Tue, 20 Oct 2026 19:55:11 +0200 Subject: [PATCH] Keep publisher shortcut available in every desktop group --- doc/stream.txt | 5 +++++ tools/chatgui/src/messagelist.cpp | 7 ++++--- tools/chatgui/src/messagelist.h | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/doc/stream.txt b/doc/stream.txt index 040c34e7..95a776c6 100644 --- a/doc/stream.txt +++ b/doc/stream.txt @@ -1050,6 +1050,11 @@ Desktop: - Без FFmpeg окно сообщает, что декодирование недоступно. Нужна desktop-сборка с HAVE_FFMPEG. Просмотр всех активных трансляций (desktop и Android): +- Шапки всех каналов показывают дополнительную красную камеру при действующей собственной публикации; + на Android она есть также в шапке главного экрана. Нажатие открывает управление текущей публикацией, + даже из другого канала. Состояние берётся из локального publisher, независимо от каталога; + после завершения своей публикации кнопка скрыта. + Одиночный выбор просмотра и его счётчик включают только чужие источники; общая сетка включает также свой. - Добавление/удаление определяется каталогом текущего канала. Порядок существующих плиток стабилен; добавление, удаление, смена эпохи и ошибки одного player не пересоздают остальные. Пропавший источник дочитывает FIN/готовый хвост: дедлайн равен остатку media + 2s, не более 30s. diff --git a/tools/chatgui/src/messagelist.cpp b/tools/chatgui/src/messagelist.cpp index 44a2a66c..c8682d16 100644 --- a/tools/chatgui/src/messagelist.cpp +++ b/tools/chatgui/src/messagelist.cpp @@ -538,11 +538,12 @@ MessageList::MessageList(DbManager* db, AudioRecorder* recorder, QWidget *parent m_streamPublishBtn->setToolTip(QCoreApplication::translate("ChatGui", "Manage stream")); m_streamPublishBtn->setAccessibleName(m_streamPublishBtn->toolTip()); connect(m_streamPublishBtn, &QPushButton::clicked, this, [this] { - if (!m_streamPublisherGroup || m_currentChannelId.toULongLong() != m_streamPublisherGroup) { + if (!m_streamPublisherGroup) { DEBUG_WARN(DEBUG_CATEGORY_STREAM, "desktop own stream action stale channel=%s publisher_group=%llx", qPrintable(m_currentChannelId), (unsigned long long)m_streamPublisherGroup); return; } - DEBUG_INFO(DEBUG_CATEGORY_STREAM, "desktop own stream header clicked group=%llx", (unsigned long long)m_streamPublisherGroup); + DEBUG_INFO(DEBUG_CATEGORY_STREAM, "desktop own stream header clicked channel=%s publisher_group=%llx", + qPrintable(m_currentChannelId), (unsigned long long)m_streamPublisherGroup); emit streamPublishRequested(m_streamPublisherGroup); }); hl->addWidget(m_streamPublishBtn); @@ -1594,7 +1595,7 @@ void MessageList::clearStreams() { /* Кнопка следует за локальным publisher, а не за запаздывающим/недоступным сетевым каталогом. */ void MessageList::setStreamPublisherGroup(quint64 group) { m_streamPublisherGroup = group; - const bool visible = group && group == m_currentChannelId.toULongLong(); + const bool visible = group && m_currentChannelId.toULongLong() != 0; if (visible == !m_streamPublishBtn->isHidden()) return; m_streamPublishBtn->setVisible(visible); DEBUG_INFO(DEBUG_CATEGORY_STREAM, "desktop own stream header channel=%s publisher_group=%llx visible=%d", diff --git a/tools/chatgui/src/messagelist.h b/tools/chatgui/src/messagelist.h index 71b32141..32996267 100644 --- a/tools/chatgui/src/messagelist.h +++ b/tools/chatgui/src/messagelist.h @@ -53,7 +53,7 @@ public: void onStreamSources(const uint8_t* data, int len); void clearStreams(); void watchStreams(); - /* Обновляет кнопку своей публикации в её канале; group=0 скрывает после завершения. GUI-поток. */ + /* Показывает кнопку своей публикации во всех каналах; group=0 скрывает после завершения. GUI-поток. */ void setStreamPublisherGroup(quint64 group); signals: