diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 06cbbcb..469c3d8 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -27,6 +27,7 @@ #include #include #include +#include #include #include @@ -36,7 +37,9 @@ #include "libdanbooru/danbooruservice.h" #include "libdanbooru/danboorupost.h" +#include "libdanbooru/danboorupool.h" #include "model/danboorupostmodel.h" +#include "model/danboorupoolmodel.h" #include "mainwindow.h" #include "danbooruconnectwidget.h" #include "danboorusettings.h" @@ -55,7 +58,9 @@ DanbooruMainWindow::DanbooruMainWindow(QWidget *parent) : KXmlGuiWindow(parent), m_view(new QQuickWidget(this)), m_model(new DanbooruPostModel(this)), + m_poolModel(new DanbooruPoolModel(this)), m_service(new DanbooruService()), + m_tableView(new QTableView(this)), m_cache(0) { @@ -95,6 +100,18 @@ DanbooruMainWindow::DanbooruMainWindow(QWidget *parent) statusBar()->addPermanentWidget(m_connectWidget); m_connectWidget->hide(); + // Set up PoolWidget + m_tableView->setModel(m_poolModel); + QDockWidget* dockWidget = new QDockWidget(i18n("Pools"), this); + dockWidget->setAllowedAreas(Qt::BottomDockWidgetArea); + dockWidget->setWidget(m_tableView); + dockWidget->setObjectName("PoolView"); + // Prevent the use of winId() when detached, leads to QQuickWidget bugs + dockWidget->setFeatures(QDockWidget::NoDockWidgetFeatures); + addDockWidget(Qt::BottomDockWidgetArea, dockWidget); + dockWidget->show(); + m_tableView->show(); + // then, setup our actions setupActions(); @@ -125,7 +142,14 @@ DanbooruMainWindow::DanbooruMainWindow(QWidget *parent) m_connectWidget->hide(); }); - connect(m_service, &Danbooru::DanbooruService::postDownloaded, m_model, &Danbooru::DanbooruPostModel::addPost); + connect(m_service, &Danbooru::DanbooruService::postDownloaded, m_model, + &Danbooru::DanbooruPostModel::addPost); + connect(m_service, &Danbooru::DanbooruService::poolDownloaded, m_poolModel, + &DanbooruPoolModel::addPool); + connect(m_service, &Danbooru::DanbooruService::poolDownloadFinished, [this]() { + m_tableView->resizeColumnsToContents(); + } + ); } @@ -178,6 +202,7 @@ void DanbooruMainWindow::connectToBoard() } m_model->clear(); + m_poolModel->clear(); m_service->reset(); m_connectWidget->show(); @@ -189,8 +214,7 @@ void DanbooruMainWindow::downloadPosts() return; } - // TODO Pick from configuration - m_service->getPostList(); + m_service->getPoolList(); } diff --git a/src/mainwindow.h b/src/mainwindow.h index a3b2a3c..77ca87b 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -23,11 +23,15 @@ #ifndef DANBOORU_CLIENT_H #define DANBOORU_CLIENT_H +#include "libdanbooru/danboorupost.h" + +#include + #include #include #include -#include "libdanbooru/danboorupost.h" + class QQuickWidget; @@ -37,6 +41,7 @@ namespace Danbooru class DanbooruClientView; class DanbooruService; class DanbooruPostModel; +class DanbooruPoolModel; class DanbooruConnectWidget; /** @@ -54,8 +59,10 @@ class DanbooruMainWindow : public KXmlGuiWindow private: QQuickWidget *m_view; DanbooruPostModel *m_model; + DanbooruPoolModel *m_poolModel; DanbooruService *m_service; DanbooruConnectWidget *m_connectWidget; + QTableView *m_tableView; KImageCache *m_cache; static QHash ratingMap;