diff --git a/resources/css/style.css b/resources/css/style.css index ee91655..b7e21d6 100644 --- a/resources/css/style.css +++ b/resources/css/style.css @@ -75,6 +75,18 @@ SearchBar > QToolButton:hover { border-radius: 3px; } +MultiZimButton QListWidget { + border: 0px; + outline: 0px; + padding: 5px 0px; /* XXX: duplicated in css_constants.h */ + background-color: white; +} + +ZimItemWidget QLabel { + font-size: 16px; + line-height: 24px; /* XXX: duplicated in css_constants.h */ +} + TopWidget QToolButton:pressed, TopWidget QToolButton::hover { border: 1px solid #3366CC; diff --git a/src/css_constants.h b/src/css_constants.h index dba10b0..2df0acf 100644 --- a/src/css_constants.h +++ b/src/css_constants.h @@ -28,6 +28,18 @@ namespace SearchBar{ const int border = 1; } +namespace MultiZimButton { +namespace QListWidget { + const int paddingVertical = 5; +} +} + +namespace ZimItemWidget { +namespace QLabel { + const int lineHeight = 24; +} +} + namespace TopWidget { namespace QToolButton { namespace backButton { diff --git a/src/multizimbutton.cpp b/src/multizimbutton.cpp index 9d7c5e5..869c382 100644 --- a/src/multizimbutton.cpp +++ b/src/multizimbutton.cpp @@ -5,6 +5,7 @@ #include #include "kiwixapp.h" #include "multizimbutton.h" +#include "css_constants.h" MultiZimButton::MultiZimButton(QWidget *parent) : QToolButton(parent), @@ -36,6 +37,8 @@ void MultiZimButton::updateDisplay() const auto view = KiwixApp::instance()->getTabWidget()->currentWebView(); QListWidgetItem* currentItem = nullptr; QIcon currentIcon; + const int paddingTopBot = CSS::MultiZimButton::QListWidget::paddingVertical * 2; + const int itemHeight = paddingTopBot + CSS::ZimItemWidget::QLabel::lineHeight; for (const auto& bookId : library->getBookIds()) { try @@ -49,6 +52,7 @@ void MultiZimButton::updateDisplay() const auto item = new QListWidgetItem(); item->setData(Qt::UserRole, bookId); item->setData(Qt::DisplayRole, bookTitle); + item->setSizeHint(QSize(0, itemHeight)); if (view && view->zimId() == bookId) { @@ -78,6 +82,11 @@ void MultiZimButton::updateDisplay() mp_buttonList->scrollToTop(); mp_buttonList->setCurrentRow(0); + + /* We set a maximum display height for list. Respect padding. */ + const int listHeight = itemHeight * std::min(7, mp_buttonList->count()); + mp_buttonList->setFixedHeight(listHeight + paddingTopBot); + mp_buttonList->setFixedWidth(menu()->width()); } QStringList MultiZimButton::getZimIds() const @@ -118,8 +127,8 @@ ZimItemWidget::ZimItemWidget(QString text, QIcon icon, QWidget *parent) : textLabel->setText(text); - /* TODO: change temporary values once size is defined laters */ - const QSize iconSize = QSize(24, 24); + const int iconWidth = CSS::ZimItemWidget::QLabel::lineHeight; + const QSize iconSize = QSize(iconWidth, iconWidth); iconLabel->setPixmap(icon.pixmap(iconSize)); layout()->addWidget(iconLabel);