summaryrefslogtreecommitdiffstats
path: root/archiveview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'archiveview.cpp')
-rw-r--r--archiveview.cpp44
1 files changed, 41 insertions, 3 deletions
diff --git a/archiveview.cpp b/archiveview.cpp
index def3609..dbc3c39 100644
--- a/archiveview.cpp
+++ b/archiveview.cpp
@@ -6,6 +6,7 @@
*/
#include <QComboBox>
+#include <QDialog>
#include <QHBoxLayout>
#include <QLabel>
#include <QLineEdit>
@@ -17,9 +18,15 @@
#include "archiveview.h"
#include "smglobals.h"
-ArchiveView::ArchiveView(QWidget *parent) : QWidget(parent) {
+ArchiveView::ArchiveView(QWidget *parent) : QWidget(parent), mConstructing(true) {
QSettings s;
mArchiveModel = static_cast<ArchiveModel*>(SmGlobals::instance()->model("ArchiveModel"));
+ connect(mArchiveModel->collector(), SIGNAL(started()), this, SLOT(collectorStarted()));
+ connect(mArchiveModel->collector(), SIGNAL(finished()), this, SLOT(collectorFinished()));
+ mProgress = new ArchiveProgressDialog(this);
+ mProgress->setHidden(true);
+ connect(mArchiveModel->collector(), SIGNAL(message(QString)), mProgress, SLOT(setMessage(QString)));
+
mProxy = new ArchiveProxy;
mProxy->setSourceModel(mArchiveModel);
mTree = new ArchiveTree;
@@ -32,12 +39,16 @@ ArchiveView::ArchiveView(QWidget *parent) : QWidget(parent) {
mTree->setColumnHidden(ArchiveModel::Subtitle, true);
mTree->setColumnHidden(ArchiveModel::Count, true);
mTree->resizeColumnToContents(ArchiveModel::Name);
+
QString sortOrderName = s.value("archivemodel/sortorder", "Series Name").toString();
mSortOrder = new QComboBox;
mSortOrder->addItems(mArchiveModel->availableOrders());
- connect(mSortOrder, SIGNAL(currentIndexChanged(QString)), mArchiveModel, SLOT(setOrder(QString)));
- connect(mSortOrder, SIGNAL(currentTextChanged(QString)), mArchiveModel, SLOT(setOrder(QString)));
mSortOrder->setCurrentText(sortOrderName);
+ // this is _not_ redundant! when sortOrderName is the first
+ // item in the list, nothing will happen otherwise!
+ mArchiveModel->setOrder(sortOrderName);
+ connect(mSortOrder, SIGNAL(currentIndexChanged(QString)), mArchiveModel, SLOT(setOrder(QString)));
+
QLabel *l1 = new QLabel(tr("Filter"));
mFilter = new QLineEdit;
QString savedFilter = s.value("archivemodel/filter", QString()).toString();
@@ -80,6 +91,10 @@ void ArchiveView::writeSettings() {
s.setValue("archivemodel/filter", mFilter->text());
}
+QWidget *ArchiveView::progressDialog(){
+ return qobject_cast<QWidget *>(mProgress);
+}
+
void ArchiveView::setFilter(){
QString filter = mFilter->text();
mProxy->setFilter(filter, currentSortOrder());
@@ -92,9 +107,32 @@ void ArchiveView::clearFilter(){
mTree->collapseAll();
}
+void ArchiveView::collectorStarted(){
+ if(mConstructing){
+ return;
+ }
+ mProgress->show();
+}
+
+void ArchiveView::collectorFinished(){
+ mProgress->hide();
+}
+
ArchiveTree::ArchiveTree(QWidget *parent) : SmTreeView(parent) {
}
+ArchiveProgressDialog::ArchiveProgressDialog(QWidget *parent, Qt::WindowFlags f) : QDialog(parent, f){
+ QHBoxLayout *mainLayout = new QHBoxLayout;
+ mMessage = new QLabel;
+ mainLayout->addWidget(mMessage);
+ setLayout(mainLayout);
+}
+
+void ArchiveProgressDialog::setMessage(const QString &msg){
+ QString message = QString(tr("<b>Gathering data... please wait!</b><br/><ul><li>%1</li></ul>")).arg(msg);
+ mMessage->setText(message);
+}
+
ArchiveFiles::ArchiveFiles(QWidget *parent) : SmTreeView(parent){
}