#include "yacreader_main_toolbar.h" #include #include #include #include #include #include #include YACReaderMainToolBar::YACReaderMainToolBar(QWidget *parent) : QWidget(parent) { mainLayout = new QHBoxLayout; currentFolder = new QLabel(this); // currentFolder->setAlignment(Qt::AlignCenter); currentFolder->setStyleSheet(" QLabel {color:#404040; font-size:22px; font-weight:bold;}"); QFont f = currentFolder->font(); f.setStyleStrategy(QFont::PreferAntialias); currentFolder->setFont(f); QString qToolButtonStyleSheet = "QToolButton {border:none;}"; backButton = new QToolButton(); backButton->setStyleSheet(qToolButtonStyleSheet); forwardButton = new QToolButton(); forwardButton->setStyleSheet(qToolButtonStyleSheet); forwardButton->setDisabled(true); settingsButton = new QToolButton(); settingsButton->setStyleSheet(qToolButtonStyleSheet); settingsButton->setIconSize(QSize(24, 24)); serverButton = new QToolButton(); serverButton->setStyleSheet(qToolButtonStyleSheet); serverButton->setIconSize(QSize(17, 24)); helpButton = new QToolButton(); helpButton->setStyleSheet(qToolButtonStyleSheet); helpButton->setIconSize(QSize(14, 25)); toggleComicsViewButton = new QToolButton; toggleComicsViewButton->setStyleSheet(qToolButtonStyleSheet); toggleComicsViewButton->setIconSize(QSize(24, 24)); fullscreenButton = new QToolButton(); fullscreenButton->setStyleSheet(qToolButtonStyleSheet); fullscreenButton->setIconSize(QSize(24, 24)); mainLayout->setContentsMargins(0, 0, 0, 0); mainLayout->setSpacing(0); mainLayout->addSpacing(12); mainLayout->addWidget(backButton, 0, Qt::AlignVCenter); addDivider(); mainLayout->addWidget(forwardButton, 0, Qt::AlignVCenter); mainLayout->addSpacing(34); mainLayout->addWidget(settingsButton, 0, Qt::AlignVCenter); addWideDivider(); mainLayout->addWidget(serverButton, 0, Qt::AlignVCenter); addWideDivider(); mainLayout->addWidget(helpButton, 0, Qt::AlignVCenter); mainLayout->addStretch(); mainLayout->addWidget(toggleComicsViewButton, 0, Qt::AlignVCenter); #ifndef Q_OS_MACOS addWideDivider(); mainLayout->addWidget(fullscreenButton, 0, Qt::AlignVCenter); #endif setLayout(mainLayout); setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); } QSize YACReaderMainToolBar::sizeHint() const { return QSize(200, 40); } void YACReaderMainToolBar::setSearchWidget(QWidget *w) { addWideDivider(); mainLayout->addWidget(w, 0, Qt::AlignVCenter); mainLayout->addSpacing(6); } void YACReaderMainToolBar::paintEvent(QPaintEvent *event) { Q_UNUSED(event); QPainter painter(this); painter.fillRect(0, 0, width(), height(), QColor("#F0F0F0")); } void YACReaderMainToolBar::resizeEvent(QResizeEvent *event) { // 210px x 2 = 420px int freeWidth = event->size().width() - 420; int maxLabelWidth = freeWidth >= 0 ? freeWidth : 0; currentFolder->setMaximumWidth(maxLabelWidth); currentFolder->adjustSize(); QFontMetrics metrix(currentFolder->font()); QString clippedText = metrix.elidedText(currentFolderName, Qt::ElideRight, maxLabelWidth); currentFolder->setText(clippedText); currentFolder->adjustSize(); currentFolder->move((event->size().width() - currentFolder->width()) / 2, (event->size().height() - currentFolder->height()) / 2); } void YACReaderMainToolBar::addDivider() { QPixmap img(":/images/main_toolbar/divider.svg"); QLabel *divider = new QLabel(); divider->setPixmap(img); mainLayout->addSpacing(5); mainLayout->addWidget(divider, 0, Qt::AlignVCenter); mainLayout->addSpacing(5); } void YACReaderMainToolBar::addWideDivider() { mainLayout->addSpacing(3); addDivider(); mainLayout->addSpacing(3); } void YACReaderMainToolBar::setCurrentFolderName(const QString &name) { currentFolder->setText(name); currentFolderName = name; currentFolder->adjustSize(); int freeWidth = size().width() - 420; int maxLabelWidth = freeWidth >= 0 ? freeWidth : 0; currentFolder->setMaximumWidth(maxLabelWidth); QFontMetrics metrix(currentFolder->font()); QString clippedText = metrix.elidedText(currentFolderName, Qt::ElideRight, maxLabelWidth); currentFolder->setText(clippedText); currentFolder->adjustSize(); currentFolder->move((width() - currentFolder->width()) / 2, (height() - currentFolder->height()) / 2); }