diff --git a/src/view/maintoolbar.cpp b/src/view/maintoolbar.cpp index 818401d..61adc64 100644 --- a/src/view/maintoolbar.cpp +++ b/src/view/maintoolbar.cpp @@ -29,7 +29,7 @@ MainToolBar::MainToolBar(QobuzBackend *backend, PlayQueue *queue, QWidget *paren rootLo->setContentsMargins(6, 2, 6, 2); rootLo->setSpacing(0); - // ---- LEFT: album art + track info + controls + progress ---- + // ---- LEFT: album art | track info | prev/play/next ---- auto *leftWidget = new QWidget(root); auto *leftLo = new QHBoxLayout(leftWidget); leftLo->setContentsMargins(0, 0, 0, 0); @@ -43,22 +43,12 @@ MainToolBar::MainToolBar(QobuzBackend *backend, PlayQueue *queue, QWidget *paren m_trackLabel = new QLabel(tr("Not playing"), leftWidget); m_trackLabel->setMinimumWidth(100); - m_trackLabel->setMaximumWidth(200); + m_trackLabel->setMaximumWidth(220); m_trackLabel->setAlignment(Qt::AlignVCenter | Qt::AlignLeft); m_trackLabel->setWordWrap(false); - // Controls + progress stacked vertically - auto *ctrlWidget = new QWidget(leftWidget); - auto *ctrlVLo = new QVBoxLayout(ctrlWidget); - ctrlVLo->setContentsMargins(0, 0, 0, 0); - ctrlVLo->setSpacing(2); - - auto *ctrlRow = new QHBoxLayout; - ctrlRow->setSpacing(4); - ctrlRow->setContentsMargins(0, 0, 0, 0); - auto makeBtn = [&](const QIcon &icon, const QString &tip) -> QToolButton * { - auto *btn = new QToolButton(ctrlWidget); + auto *btn = new QToolButton(leftWidget); btn->setIcon(icon); btn->setToolTip(tip); btn->setAutoRaise(true); @@ -75,41 +65,37 @@ MainToolBar::MainToolBar(QobuzBackend *backend, PlayQueue *queue, QWidget *paren connect(m_playBtn, &QToolButton::clicked, this, &MainToolBar::onPlayPause); connect(m_nextBtn, &QToolButton::clicked, this, &MainToolBar::onNext); - ctrlRow->addWidget(m_prevBtn); - ctrlRow->addWidget(m_playBtn); - ctrlRow->addWidget(m_nextBtn); - ctrlRow->addSpacing(4); + leftLo->addWidget(m_artLabel); + leftLo->addWidget(m_trackLabel); + leftLo->addWidget(m_prevBtn); + leftLo->addWidget(m_playBtn); + leftLo->addWidget(m_nextBtn); - auto *progRow = new QHBoxLayout; - progRow->setSpacing(6); - progRow->setContentsMargins(0, 0, 0, 0); + // ---- CENTER: elapsed | progress slider | total ---- + auto *centerWidget = new QWidget(root); + auto *centerLo = new QHBoxLayout(centerWidget); + centerLo->setContentsMargins(0, 0, 0, 0); + centerLo->setSpacing(6); - m_elapsedLabel = new QLabel(QStringLiteral("0:00"), ctrlWidget); + m_elapsedLabel = new QLabel(QStringLiteral("0:00"), centerWidget); m_elapsedLabel->setAlignment(Qt::AlignRight | Qt::AlignVCenter); m_elapsedLabel->setMinimumWidth(36); - m_progress = new ClickableSlider(Qt::Horizontal, ctrlWidget); + m_progress = new ClickableSlider(Qt::Horizontal, centerWidget); m_progress->setRange(0, 1000); m_progress->setValue(0); - m_progress->setMinimumWidth(120); + m_progress->setMinimumWidth(160); - m_totalLabel = new QLabel(QStringLiteral("0:00"), ctrlWidget); + m_totalLabel = new QLabel(QStringLiteral("0:00"), centerWidget); m_totalLabel->setAlignment(Qt::AlignLeft | Qt::AlignVCenter); m_totalLabel->setMinimumWidth(36); connect(m_progress, &QSlider::sliderPressed, this, [this] { m_seeking = true; }); connect(m_progress, &QSlider::sliderReleased, this, &MainToolBar::onProgressReleased); - progRow->addWidget(m_elapsedLabel); - progRow->addWidget(m_progress, 1); - progRow->addWidget(m_totalLabel); - - ctrlVLo->addLayout(ctrlRow); - ctrlVLo->addLayout(progRow); - - leftLo->addWidget(m_artLabel); - leftLo->addWidget(m_trackLabel); - leftLo->addWidget(ctrlWidget, 1); + centerLo->addWidget(m_elapsedLabel); + centerLo->addWidget(m_progress, 1); + centerLo->addWidget(m_totalLabel); // ---- RIGHT: volume + shuffle + queue + search ---- auto *rightWidget = new QWidget(root); @@ -145,9 +131,10 @@ MainToolBar::MainToolBar(QobuzBackend *backend, PlayQueue *queue, QWidget *paren rightLo->addWidget(m_queueBtn); rightLo->addWidget(m_searchBtn); - // ---- Assemble root ---- - rootLo->addWidget(leftWidget, 1); - rootLo->addWidget(rightWidget, 0); + // ---- Assemble root: equal stretch keeps center bar centred ---- + rootLo->addWidget(leftWidget, 1); + rootLo->addWidget(centerWidget, 2); + rootLo->addWidget(rightWidget, 1); root->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); addWidget(root);