Add tag sorting (based on counts) to the tag view
This commit is contained in:
parent
ebd9e559ef
commit
db03bdbce2
2 changed files with 24 additions and 12 deletions
|
@ -30,6 +30,7 @@
|
||||||
#include <QDockWidget>
|
#include <QDockWidget>
|
||||||
#include <QQuickItem>
|
#include <QQuickItem>
|
||||||
#include <QFileDialog>
|
#include <QFileDialog>
|
||||||
|
#include <QSortFilterProxyModel>
|
||||||
|
|
||||||
#include <kactioncollection.h>
|
#include <kactioncollection.h>
|
||||||
#include <KStandardAction>
|
#include <KStandardAction>
|
||||||
|
@ -74,6 +75,7 @@ DanbooruMainWindow::DanbooruMainWindow(QWidget *parent)
|
||||||
m_connectWidget(Q_NULLPTR),
|
m_connectWidget(Q_NULLPTR),
|
||||||
m_searchWidget(new DanbooruSearchWidget(this)),
|
m_searchWidget(new DanbooruSearchWidget(this)),
|
||||||
m_tagWidget(new DanbooruTagWidget(this)),
|
m_tagWidget(new DanbooruTagWidget(this)),
|
||||||
|
m_proxyModel(new QSortFilterProxyModel(this)),
|
||||||
m_tableView(new QTableView(this)),
|
m_tableView(new QTableView(this)),
|
||||||
m_cache(Q_NULLPTR)
|
m_cache(Q_NULLPTR)
|
||||||
{
|
{
|
||||||
|
@ -89,8 +91,14 @@ DanbooruMainWindow::DanbooruMainWindow(QWidget *parent)
|
||||||
|
|
||||||
m_cache = new KImageCache(qApp->applicationName(), DanbooruSettings::self()->cacheSize());
|
m_cache = new KImageCache(qApp->applicationName(), DanbooruSettings::self()->cacheSize());
|
||||||
m_service->setImageCache(m_cache);
|
m_service->setImageCache(m_cache);
|
||||||
|
|
||||||
|
m_proxyModel->setSortRole(DanbooruTagModel::TagCountRole);
|
||||||
|
m_proxyModel->setSourceModel(m_tagModel);
|
||||||
|
m_proxyModel->setDynamicSortFilter(true);
|
||||||
|
|
||||||
m_tableView->setModel(m_poolModel);
|
m_tableView->setModel(m_poolModel);
|
||||||
m_tagWidget->setModel(m_tagModel);
|
m_tagWidget->setModel(m_proxyModel);
|
||||||
|
|
||||||
|
|
||||||
// Set up declarative bindings for the QQuickWidget
|
// Set up declarative bindings for the QQuickWidget
|
||||||
|
|
||||||
|
@ -183,6 +191,18 @@ DanbooruMainWindow::DanbooruMainWindow(QWidget *parent)
|
||||||
searchDockWidget->hide();
|
searchDockWidget->hide();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
connect(m_service, &DanbooruService::postDownloadFinished, [this]() {
|
||||||
|
|
||||||
|
if (m_tagModel->rowCount() == 0) {
|
||||||
|
// Only get tags if we don't have any already
|
||||||
|
for (auto tag: m_model->postTags()) {
|
||||||
|
m_service->getTagList(1, tag);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
m_proxyModel->sort(0, Qt::DescendingOrder);
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
connect(m_view->rootObject(), SIGNAL(downloadRequested(const QUrl&)), this,
|
connect(m_view->rootObject(), SIGNAL(downloadRequested(const QUrl&)), this,
|
||||||
SLOT(slotHandleDownload(const QUrl&)));
|
SLOT(slotHandleDownload(const QUrl&)));
|
||||||
|
|
||||||
|
@ -375,17 +395,6 @@ void DanbooruMainWindow::setupDockWidgets() {
|
||||||
qobject_cast<KDualAction*>(actionCollection()->action(QLatin1String("tags")))->setActive(visible);
|
qobject_cast<KDualAction*>(actionCollection()->action(QLatin1String("tags")))->setActive(visible);
|
||||||
});
|
});
|
||||||
|
|
||||||
connect(m_service, &DanbooruService::postDownloadFinished, [this]() {
|
|
||||||
|
|
||||||
if (m_tagModel->rowCount() == 0) {
|
|
||||||
// Only get tags if we don't have any already
|
|
||||||
for (auto tag: m_model->postTags()) {
|
|
||||||
m_service->getTagList(1, tag);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DanbooruMainWindow::connectToBoard()
|
void DanbooruMainWindow::connectToBoard()
|
||||||
|
|
|
@ -35,6 +35,7 @@
|
||||||
|
|
||||||
|
|
||||||
class QQuickWidget;
|
class QQuickWidget;
|
||||||
|
class QSortFilterProxyModel;
|
||||||
|
|
||||||
|
|
||||||
namespace Danbooru
|
namespace Danbooru
|
||||||
|
@ -70,6 +71,8 @@ private:
|
||||||
DanbooruConnectWidget *m_connectWidget;
|
DanbooruConnectWidget *m_connectWidget;
|
||||||
DanbooruSearchWidget *m_searchWidget;
|
DanbooruSearchWidget *m_searchWidget;
|
||||||
DanbooruTagWidget *m_tagWidget;
|
DanbooruTagWidget *m_tagWidget;
|
||||||
|
QSortFilterProxyModel *m_proxyModel;
|
||||||
|
|
||||||
QTableView *m_tableView;
|
QTableView *m_tableView;
|
||||||
KImageCache *m_cache;
|
KImageCache *m_cache;
|
||||||
static QHash<int, DanbooruPost::Rating> ratingMap;
|
static QHash<int, DanbooruPost::Rating> ratingMap;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue