Skip to content

Commit

Permalink
Temporary backup commit
Browse files Browse the repository at this point in the history
  • Loading branch information
ShaopengLin committed Sep 14, 2024
1 parent ed182d2 commit 08b9904
Show file tree
Hide file tree
Showing 5 changed files with 99 additions and 33 deletions.
17 changes: 11 additions & 6 deletions resources/css/popup.css
Original file line number Diff line number Diff line change
@@ -1,27 +1,32 @@
QTreeView {
border: none;
border: 1px solid #ccc;
background-color: white;
outline: 0px;
}

QTreeView::item {
border: 1px solid transparent;
padding-left: 5px;
padding-right: 5px;
border: 2px solid transparent;
padding-left: 10px;
padding-right: 10px;
font-size: 20px;
line-height: 28px;
}

QTreeView::item:selected {
border: 1px solid #3366CC;
border: 2px solid #3366CC;
background-color: #D9E9FF;
color: black;
}

QHeaderView::section {
border: none;
color: grey;
padding: 10px;
padding: 15px;
padding-bottom: 0px;
background-color: white;
font-size: 18px;
line-height: 26px;
font-weight: 500;
}

QScrollBar {
Expand Down
36 changes: 27 additions & 9 deletions resources/css/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -87,16 +87,21 @@ MultiZimButton QListWidget {
outline: 0px;
}

MultiZimButton #zimItemWidget {
background-color: white;
}

MultiZimButton QListWidget::item:selected {
border: 1px solid #3366CC;
background-color: #D9E9FF;
}

MultiZimButton QRadioButton {
background-color: white;
background-color: transparent;
outline: none;
}

MultiZimButton QRadioButton:hover {
MultiZimButton #zimItemWidget:hover {
border: 1px solid #3366CC;
background-color: #D9E9FF;
}
Expand All @@ -123,6 +128,13 @@ MultiZimButton QScrollBar::handle {
background-color: grey;
}

MultiZimButton QLabel {
background-color: transparent;
padding: 0px;
margin: 0px;

}

SearchBar > QToolButton:pressed,
SearchBar > QToolButton:hover {
border: 1px solid #3366CC;
Expand All @@ -134,23 +146,29 @@ SearchBar > QToolButton:hover {
border: 1px solid transparent;
background-color: white;
font-size: 20px;
font-weight: bold;
padding: 3px;
font-weight: 500;
padding: 5px;
}

#selectAllButton::indicator {
width: 20px;
height: 20px;
border: 2px solid black;
border-radius: 3px;
width: 32px;
height: 32px;
image: none;
}

#selectAllButton::indicator:unchecked {
image: url(:/icons/checkbox.svg);
}

#selectAllButton::indicator:checked {
image: url(:/icons/check-solid.svg);
image: url(:/icons/checkbox-active.svg);
}

#selectAllButton:disabled {
background-color: white;
}

#selectAllButton::indicator:disabled {
background-color: #ccc;
}

Expand Down
64 changes: 49 additions & 15 deletions src/searchbar.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
#include <QStyledItemDelegate>
#include <QWidgetAction>
#include <QRadioButton>
#include <QButtonGroup>

#include "kiwixapp.h"
#include "suggestionlistworker.h"
Expand Down Expand Up @@ -62,7 +63,7 @@ SearchBarLineEdit::SearchBarLineEdit(QWidget *parent) :
m_completer.setCaseSensitivity(Qt::CaseInsensitive);

/* +2 for fulltext and load more */
m_completer.setMaxVisibleItems(SuggestionListWorker::getFetchSize() + 2);
m_completer.setMaxVisibleItems(8);
m_completer.setWidget(this);

/* QCompleter's uses default list views, which do not have headers. */
Expand Down Expand Up @@ -210,9 +211,10 @@ void SearchBarLineEdit::updateCompletion()
x is flipped so it became -x in the sense of LTR, hence the
adjustment of moving width + 2 * size.
*/
int left = KiwixApp::isRightToLeft() ? -searchGeo.width() - (38 * 2)
: -39;

// int left = KiwixApp::isRightToLeft() ? -searchGeo.width() - (38 * 2)
// : -39;
int left = KiwixApp::isRightToLeft() ? - (38 * 2) - 12
: -39;

/* Can't set height to 0. Will cause rectangle to be ignored. */
m_completer.complete(QRect(QPoint(left, top), QSize(width, 1)));
Expand Down Expand Up @@ -293,14 +295,14 @@ SearchBar::SearchBar(QWidget *parent) :
}

MultiZimButton::MultiZimButton(QWidget *parent)
: QToolButton(parent), mp_buttonList(nullptr), mp_selectAllButton(nullptr)
: QToolButton(parent), mp_buttonList(nullptr), mp_selectAllButton(nullptr), mp_radioButtonGroup(nullptr)
{
setMenu(new QMenu(this));
setPopupMode(QToolButton::InstantPopup);
setIcon(QIcon(":/icons/filter.svg"));
setToolTip(gt("multi-zim-search"));

mp_buttonList = new QListWidget(this);
mp_buttonList = new MultiZimListWidget;
mp_selectAllButton = new QCheckBox(gt("select-all"),this);
auto popupAction = new QWidgetAction(menu());

Expand All @@ -314,20 +316,24 @@ MultiZimButton::MultiZimButton(QWidget *parent)
menu()->addAction(popupAction);
mp_buttonList->setSelectionMode(QAbstractItemView::SingleSelection);
mp_buttonList->setFixedWidth(menu()->sizeHint().width());
mp_buttonList->setMinimumHeight(42 * 7);
mp_buttonList->setMaximumHeight(42 * 7);
mp_buttonList->setSizeAdjustPolicy(QListWidget::AdjustToContents);
mp_selectAllButton->setObjectName("selectAllButton");
mp_selectAllButton->setFixedHeight(42);
mp_selectAllButton->setLayoutDirection(KiwixApp::isRightToLeft() ? Qt::LayoutDirection::LeftToRight : Qt::LayoutDirection::RightToLeft);

/* TODO: connect with list widget after multi-zim */
mp_selectAllButton->setDisabled(true);
// mp_selectAllButton->setDisabled(true);

mp_radioButtonGroup = new QButtonGroup(this);
}

QString MultiZimButton::getZimId() const
{
for (int row = 0; row < mp_buttonList->model()->rowCount(); row++)
{
auto listItem = mp_buttonList->item(row);
auto radioBt = qobject_cast<QRadioButton *>(mp_buttonList->itemWidget(listItem));
auto radioBt = mp_buttonList->itemWidget(listItem)->findChild<QRadioButton *>();
if (radioBt && radioBt->isChecked())
return listItem->data(Qt::UserRole).toString();
}
Expand Down Expand Up @@ -364,6 +370,10 @@ QString elideDisplayText(const QString& text, const QFont& font, int width)
void MultiZimButton::update_display()
{
mp_buttonList->clear();
for (auto button : mp_radioButtonGroup->buttons())
{
mp_radioButtonGroup->removeButton(button);
}
auto library = KiwixApp::instance()->getLibrary();
WebView* current = KiwixApp::instance()->getTabWidget()->currentWebView();
for (const auto& bookId : library->getBookIds())
Expand All @@ -378,12 +388,24 @@ void MultiZimButton::update_display()
zimIcon = library->getZimIcon(bookId, QIcon(":/icons/placeholder-icon.png"));

QRadioButton* radioBt = new QRadioButton;
mp_radioButtonGroup->addButton(radioBt);
QListWidgetItem* item = new QListWidgetItem();
item->setData(Qt::UserRole, bookId);
item->setSizeHint(QSize(0, 42));
radioBt->setIcon(zimIcon);
radioBt->setIconSize(QSize(32, 32));
radioBt->setFont(QFont("Selawik", 16));
QWidget* zimItemWidget = new QWidget;
zimItemWidget->setObjectName("zimItemWidget");
zimItemWidget->setLayout(new QHBoxLayout);
zimItemWidget->layout()->setSpacing(0);
QLabel* iconLabel = new QLabel;
iconLabel->setFixedSize(QSize(32, 32));
iconLabel->setText("");
iconLabel->setPixmap(zimIcon.pixmap(QSize(32, 32)));
radioBt->setFixedSize(QSize(32, 32));

zimItemWidget->layout()->addWidget(iconLabel);
// radioBt->setIcon(zimIcon);
// radioBt->setIconSize(QSize(32, 32));
// radioBt->setFont(QFont("Selawik", 16));

/* See MultiZimButton::QRadioButton::indicator and
MultiZimButton::QScrollBar size values in resources/css/style.css
Expand All @@ -397,8 +419,16 @@ void MultiZimButton::update_display()
else
mp_buttonList->addItem(item);
bookTitle = elideDisplayText(bookTitle, radioBt->font(), length);
radioBt->setText(bookTitle);
mp_buttonList->setItemWidget(item, radioBt);
QLabel* textLabel = new QLabel(bookTitle);
textLabel->setFixedHeight(32);
textLabel->setContentsMargins(0,0,0,0);
textLabel->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
textLabel->setAlignment({Qt::AlignVCenter | Qt::AlignLeft});
zimItemWidget->layout()->addWidget(textLabel);
zimItemWidget->layout()->addWidget(radioBt);
zimItemWidget->layout()->setAlignment(Qt::AlignVCenter);
zimItemWidget->layout()->setContentsMargins(0,0,0,0);
mp_buttonList->setItemWidget(item, zimItemWidget);
}
catch(...)
{
Expand All @@ -411,8 +441,12 @@ void MultiZimButton::update_display()
else
{
auto firstWidget = mp_buttonList->itemWidget(mp_buttonList->item(0));
qobject_cast<QRadioButton *>(firstWidget)->setChecked(true);
firstWidget->findChild<QRadioButton *>()->setChecked(true);
mp_buttonList->scrollToTop();
setDisabled(false);
}
}

QSize MultiZimListWidget::sizeHint() const {
return QSize(0, count() * 42);
}
8 changes: 7 additions & 1 deletion src/searchbar.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@
#include <QThread>
#include <QToolBar>
#include "suggestionlistmodel.h"
#include <QListWidget>

class QListWidget;
class QCheckBox;

class BookmarkButton : public QToolButton {
Expand Down Expand Up @@ -67,9 +67,15 @@ public slots:
private:
QListWidget* mp_buttonList;
QCheckBox* mp_selectAllButton;
QButtonGroup* mp_radioButtonGroup;
QString m_zimId;
};

class MultiZimListWidget : public QListWidget {
protected:
QSize sizeHint() const;
};

class SearchBar : public QToolBar {
Q_OBJECT
public:
Expand Down
7 changes: 5 additions & 2 deletions src/suggestionlistmodel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,9 @@ QVariant SuggestionListModel::loadMoreButtonData(const QModelIndex &index, int r
if (!isLoadMoreIndex(index))
return QVariant();

QFont font = QFont("Selawik", 16, QFont::Bold);
QFont font = QFont("Selawik");
font.setWeight(QFont::Weight::DemiBold);
font.setPixelSize(20);
switch (role)
{
case Qt::DisplayRole:
Expand All @@ -70,7 +72,8 @@ QVariant SuggestionListModel::data(const QModelIndex &index, int role) const
return loadMoreButtonData(index, role);

auto app = KiwixApp::instance();
QFont font = QFont("Selawik", 16);
QFont font = QFont("Selawik");
font.setPixelSize(20);
switch (role)
{
case Qt::DisplayRole:
Expand Down

0 comments on commit 08b9904

Please sign in to comment.