Double broadcast control icons and tighten button spacing
This commit is contained in:
1 parent
07b8c2b338
commit
01dd40fdd1
1 file changed
+14
-6
@@ -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());
|
||||
}
|
||||
Reference in new issue
Block a user