mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2024-12-27 08:19:30 +08:00
Replace CheckBox with Arrow in transferlistfilterswidget.cpp
This commit is contained in:
parent
3d6dccc689
commit
e283026a3c
@ -30,10 +30,13 @@
|
|||||||
|
|
||||||
#include <QCheckBox>
|
#include <QCheckBox>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
#include <QGuiApplication>
|
||||||
#include <QIcon>
|
#include <QIcon>
|
||||||
#include <QListWidgetItem>
|
#include <QListWidgetItem>
|
||||||
#include <QMenu>
|
#include <QMenu>
|
||||||
|
#include <QPainter>
|
||||||
#include <QScrollArea>
|
#include <QScrollArea>
|
||||||
|
#include <QStyleOptionButton>
|
||||||
#include <QUrl>
|
#include <QUrl>
|
||||||
#include <QVBoxLayout>
|
#include <QVBoxLayout>
|
||||||
|
|
||||||
@ -66,6 +69,30 @@ namespace
|
|||||||
scheme = "http";
|
scheme = "http";
|
||||||
return scheme;
|
return scheme;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class ArrowCheckBox : public QCheckBox
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
using QCheckBox::QCheckBox;
|
||||||
|
|
||||||
|
private:
|
||||||
|
void paintEvent(QPaintEvent *) override
|
||||||
|
{
|
||||||
|
QPainter painter(this);
|
||||||
|
|
||||||
|
QStyleOption indicatorOption;
|
||||||
|
indicatorOption.initFrom(this);
|
||||||
|
indicatorOption.rect = style()->subElementRect(QStyle::SE_CheckBoxIndicator, &indicatorOption, this);
|
||||||
|
style()->drawPrimitive((isChecked() ? QStyle::PE_IndicatorArrowDown
|
||||||
|
: (QGuiApplication::isLeftToRight() ? QStyle::PE_IndicatorArrowRight : QStyle::PE_IndicatorArrowLeft))
|
||||||
|
, &indicatorOption, &painter, this);
|
||||||
|
|
||||||
|
QStyleOptionButton labelOption;
|
||||||
|
initStyleOption(&labelOption);
|
||||||
|
labelOption.rect = style()->subElementRect(QStyle::SE_CheckBoxContents, &labelOption, this);
|
||||||
|
style()->drawControl(QStyle::CE_CheckBoxLabel, &labelOption, &painter, this);
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
BaseFilterWidget::BaseFilterWidget(QWidget *parent, TransferListWidget *transferList)
|
BaseFilterWidget::BaseFilterWidget(QWidget *parent, TransferListWidget *transferList)
|
||||||
@ -575,7 +602,7 @@ TransferListFiltersWidget::TransferListFiltersWidget(QWidget *parent, TransferLi
|
|||||||
vLayout->addWidget(scroll);
|
vLayout->addWidget(scroll);
|
||||||
setLayout(vLayout);
|
setLayout(vLayout);
|
||||||
|
|
||||||
QCheckBox *statusLabel = new QCheckBox(tr("Status"), this);
|
QCheckBox *statusLabel = new ArrowCheckBox(tr("Status"), this);
|
||||||
statusLabel->setChecked(pref->getStatusFilterState());
|
statusLabel->setChecked(pref->getStatusFilterState());
|
||||||
statusLabel->setFont(font);
|
statusLabel->setFont(font);
|
||||||
frameLayout->addWidget(statusLabel);
|
frameLayout->addWidget(statusLabel);
|
||||||
@ -583,7 +610,7 @@ TransferListFiltersWidget::TransferListFiltersWidget(QWidget *parent, TransferLi
|
|||||||
auto *statusFilters = new StatusFilterWidget(this, transferList);
|
auto *statusFilters = new StatusFilterWidget(this, transferList);
|
||||||
frameLayout->addWidget(statusFilters);
|
frameLayout->addWidget(statusFilters);
|
||||||
|
|
||||||
QCheckBox *categoryLabel = new QCheckBox(tr("Categories"), this);
|
QCheckBox *categoryLabel = new ArrowCheckBox(tr("Categories"), this);
|
||||||
categoryLabel->setChecked(pref->getCategoryFilterState());
|
categoryLabel->setChecked(pref->getCategoryFilterState());
|
||||||
categoryLabel->setFont(font);
|
categoryLabel->setFont(font);
|
||||||
connect(categoryLabel, &QCheckBox::toggled, this
|
connect(categoryLabel, &QCheckBox::toggled, this
|
||||||
@ -602,7 +629,7 @@ TransferListFiltersWidget::TransferListFiltersWidget(QWidget *parent, TransferLi
|
|||||||
toggleCategoryFilter(pref->getCategoryFilterState());
|
toggleCategoryFilter(pref->getCategoryFilterState());
|
||||||
frameLayout->addWidget(m_categoryFilterWidget);
|
frameLayout->addWidget(m_categoryFilterWidget);
|
||||||
|
|
||||||
QCheckBox *tagsLabel = new QCheckBox(tr("Tags"), this);
|
QCheckBox *tagsLabel = new ArrowCheckBox(tr("Tags"), this);
|
||||||
tagsLabel->setChecked(pref->getTagFilterState());
|
tagsLabel->setChecked(pref->getTagFilterState());
|
||||||
tagsLabel->setFont(font);
|
tagsLabel->setFont(font);
|
||||||
connect(tagsLabel, &QCheckBox::toggled, this, &TransferListFiltersWidget::onTagFilterStateChanged);
|
connect(tagsLabel, &QCheckBox::toggled, this, &TransferListFiltersWidget::onTagFilterStateChanged);
|
||||||
@ -620,7 +647,7 @@ TransferListFiltersWidget::TransferListFiltersWidget(QWidget *parent, TransferLi
|
|||||||
toggleTagFilter(pref->getTagFilterState());
|
toggleTagFilter(pref->getTagFilterState());
|
||||||
frameLayout->addWidget(m_tagFilterWidget);
|
frameLayout->addWidget(m_tagFilterWidget);
|
||||||
|
|
||||||
QCheckBox *trackerLabel = new QCheckBox(tr("Trackers"), this);
|
QCheckBox *trackerLabel = new ArrowCheckBox(tr("Trackers"), this);
|
||||||
trackerLabel->setChecked(pref->getTrackerFilterState());
|
trackerLabel->setChecked(pref->getTrackerFilterState());
|
||||||
trackerLabel->setFont(font);
|
trackerLabel->setFont(font);
|
||||||
frameLayout->addWidget(trackerLabel);
|
frameLayout->addWidget(trackerLabel);
|
||||||
|
Loading…
Reference in New Issue
Block a user