Double broadcast control icons and tighten button spacing

This commit is contained in:
evgeny committed 2026-10-28 13:47:09 +01:00
1 parent 07b8c2b338
commit 01dd40fdd1
1 file changed
+14 -6
+14 -6
View File
@@ -33,7 +33,11 @@ constexpr int MaximumManualBitrate = 12000000;
class StreamMenuStyle : public QProxyStyle {
public:
int pixelMetric(PixelMetric metric, const QStyleOption* option, const QWidget* widget) const override {
return metric == PM_SmallIconSize && qobject_cast<const QMenuBar*>(widget) ? 36 : QProxyStyle::pixelMetric(metric, option, widget);
if (qobject_cast<const QMenuBar*>(widget)) {
if (metric == PM_SmallIconSize) return 72;
if (metric == PM_MenuBarItemSpacing) return 0;
}
return QProxyStyle::pixelMetric(metric, option, widget);
}
};
QString text(const char* value) { return QCoreApplication::translate("ChatGui", value); }
@@ -60,7 +64,7 @@ void clearOptions(QMenu* menu, const char* heading) { menu->clear(); menu->addSe
/* Компактные векторные значки с текущим значением, читаемые в обеих темах. */
QIcon controlIcon(const QPalette& palette, const QString& shape, const QString& label = {}) {
QPixmap pixmap(40, 36); pixmap.fill(Qt::transparent); QPainter painter(&pixmap);
QPixmap pixmap(80, 72); pixmap.fill(Qt::transparent); QPainter painter(&pixmap); painter.scale(2, 2);
painter.setRenderHint(QPainter::Antialiasing); painter.setPen(QPen(palette.windowText(), 1.6));
if (shape == "camera") {
painter.drawRoundedRect(QRectF(5, 9, 30, 21), 3, 3); painter.drawEllipse(QPointF(20, 19), 6, 6);
@@ -155,11 +159,11 @@ StreamPublishWindow::StreamPublishWindow(StreamPublishEngine* engine, uint64_t g
auto* escape = new QShortcut(QKeySequence(Qt::Key_Escape), this); escape->setContext(Qt::WidgetWithChildrenShortcut);
connect(escape, &QShortcut::activated, this, &QWidget::close);
auto* layout = new QVBoxLayout(this);
auto* controls = new QHBoxLayout;
auto* controls = new QHBoxLayout; controls->setSpacing(4);
m_menuBar = new QMenuBar(this); m_menuBar->setNativeMenuBar(false); m_menuBar->setMouseTracking(true);
auto* menuStyle = new StreamMenuStyle; menuStyle->setParent(this); m_menuBar->setStyle(menuStyle);
m_menuBar->setObjectName(QStringLiteral("streamControls"));
m_menuBar->setStyleSheet("QMenuBar { background: transparent; } QMenuBar::item { padding: 3px; }");
m_menuBar->setStyleSheet("QMenuBar { background: transparent; } QMenuBar::item { padding: 2px; }");
auto makeMenu = [this](const char* heading, const char* name) {
auto* menu = m_menuBar->addMenu(QString()); menu->setObjectName(QString::fromLatin1(name));
menu->menuAction()->setToolTip(text(heading)); menu->setAccessibleName(text(heading));
@@ -175,9 +179,10 @@ StreamPublishWindow::StreamPublishWindow(StreamPublishEngine* engine, uint64_t g
m_microphone = makeMenu("Audio source", "streamAudioSource");
auto* settingsMenu = makeMenu("Settings", "streamExtraSettings");
settingsMenu->menuAction()->setIcon(controlIcon(palette(), "settings"));
controls->addWidget(m_menuBar); controls->addStretch();
m_sound = new QToolButton(this); m_sound->setCheckable(true); m_sound->setIconSize(QSize(40, 36));
controls->addWidget(m_menuBar);
m_sound = new QToolButton(this); m_sound->setCheckable(true); m_sound->setIconSize(QSize(80, 72));
m_sound->setObjectName(QStringLiteral("streamSound")); m_sound->setAutoRaise(true); controls->addWidget(m_sound);
controls->addStretch();
m_start = new QPushButton(text("Start stream"), this); m_start->setMinimumHeight(40);
m_start->setObjectName(QStringLiteral("streamStart"));
m_buffer = new StreamBufferIndicator(this); m_buffer->setFixedSize(std::max(80, m_start->sizeHint().width()), 20);
@@ -285,6 +290,7 @@ StreamPublishWindow::StreamPublishWindow(StreamPublishEngine* engine, uint64_t g
.arg(bytes(stats.video_bytes), bytes(stats.inflight_bytes), bytes(stats.total_bytes), bytes(stats.acked_1s)));
});
refreshSources(); refreshCodecs(); restoreSettings(); synchronize();
DEBUG_DEBUG(DEBUG_CATEGORY_STREAM, "desktop publisher control row icon=80x72 menu_icon=72 spacing=4 minimum_width=%d", minimumWidth());
}
void StreamPublishWindow::closeEvent(QCloseEvent* event) {
@@ -547,4 +553,6 @@ void StreamPublishWindow::updateMenuButtons() {
m_sound->setIcon(controlIcon(palette(), m_sound->isChecked() ? "sound" : "silent"));
m_sound->setToolTip(text(m_sound->isChecked() ? "Turn stream audio off" : "Turn stream audio on"));
m_sound->setAccessibleName(m_sound->toolTip());
m_menuBar->setFixedWidth(m_menuBar->sizeHint().width());
setMinimumWidth(layout()->minimumSize().width());
}