diff options
author | Arno <am@disconnect.de> | 2013-06-01 06:53:34 +0200 |
---|---|---|
committer | Arno <am@disconnect.de> | 2013-06-01 06:53:34 +0200 |
commit | ac5f624734f712bce84f36cc47c0133a1382534f (patch) | |
tree | ff3f0105b341dbc91dbe4471b4a55429fe127ce4 | |
parent | 39223db7f24eb285af7f0b7a3b061d9a92453122 (diff) | |
download | SheMov-ac5f624734f712bce84f36cc47c0133a1382534f.tar.gz SheMov-ac5f624734f712bce84f36cc47c0133a1382534f.tar.bz2 SheMov-ac5f624734f712bce84f36cc47c0133a1382534f.zip |
Add view for new ArchiveModel
Display the new ArchiveModel in an experimental tab
-rw-r--r-- | archivemodel.cpp | 3 | ||||
-rw-r--r-- | archiveview.cpp | 60 | ||||
-rw-r--r-- | archiveview.h | 50 | ||||
-rw-r--r-- | shemov.cpp | 7 | ||||
-rw-r--r-- | shemov.h | 2 | ||||
-rw-r--r-- | shemov.pro | 6 |
6 files changed, 125 insertions, 3 deletions
diff --git a/archivemodel.cpp b/archivemodel.cpp index 874b252..3bae59b 100644 --- a/archivemodel.cpp +++ b/archivemodel.cpp @@ -42,6 +42,7 @@ void ArchiveModel::setOrder(int order) { void ArchiveModel::populateBySeriesName() { SmTreeItem *rootItem = new SmTreeItem(NumFields); + //fetchChildren(rootItem); fetchSeries(QVariant(), rootItem); fetchParts(rootItem); setRoot(rootItem); @@ -124,7 +125,7 @@ void ArchiveModel::fetchParts(SmTreeItem *parent){ partsQuery.exec(); while(partsQuery.next()){ QList<QVariant> partData; - partData << parent->data(Name) << parent->data(SeriesId) << partsQuery.value(0) << partsQuery.value(1) << SeriesPartNode << partsQuery.value(2) << partsQuery.value(3) << QVariant(); + partData << parent->child(i)->data(Name) << parent->child(i)->data(SeriesId) << partsQuery.value(0) << partsQuery.value(1) << SeriesPartNode << partsQuery.value(2) << partsQuery.value(3) << QVariant(); SmTreeItem *partItem = new SmTreeItem(partData, parent->child(i)); parent->child(i)->appendChild(partItem); } diff --git a/archiveview.cpp b/archiveview.cpp new file mode 100644 index 0000000..d91fab7 --- /dev/null +++ b/archiveview.cpp @@ -0,0 +1,60 @@ +/* + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version + 2 of the License, or (at your option) any later version. +*/ + +#include <QComboBox> +#include <QHBoxLayout> +#include <QLabel> +#include <QLineEdit> +#include <QPushButton> +#include <QSortFilterProxyModel> +#include <QSplitter> +#include <QVBoxLayout> + +#include "archiveview.h" +#include "smglobals.h" + +ArchiveView::ArchiveView(QWidget *parent) : QWidget(parent) { + mArchiveModel = static_cast<ArchiveModel*>(SmGlobals::instance()->model("ArchiveModel")); + mTree = new ArchiveTree; + mSortOrder = new QComboBox; + mSortOrder->addItems(mArchiveModel->availableOrders()); + QLabel *l1 = new QLabel(tr("Filter")); + mFilter = new QLineEdit; + QPushButton *filter = new QPushButton(tr("Filter")); + QPushButton *clear = new QPushButton(tr("Clear")); + QHBoxLayout *filterLayout = new QHBoxLayout; + filterLayout->addWidget(l1); + filterLayout->addWidget(mFilter); + filterLayout->addWidget(filter); + filterLayout->addWidget(clear); + QVBoxLayout *treeLayout = new QVBoxLayout; + treeLayout->addWidget(mSortOrder); + treeLayout->addLayout(filterLayout); + treeLayout->addWidget(mTree); + QWidget *treeWidget = new QWidget; + treeWidget->setLayout(treeLayout); + mFiles = new ArchiveFiles; + QSplitter *treeSplitter = new QSplitter(Qt::Horizontal); + treeSplitter->addWidget(treeWidget); + treeSplitter->addWidget(mFiles); + treeSplitter->setStretchFactor(0, 2); + treeSplitter->setStretchFactor(1, 3); + QHBoxLayout *mainLayout = new QHBoxLayout; + mainLayout->addWidget(treeSplitter); + setLayout(mainLayout); + +} + +ArchiveTree::ArchiveTree(QWidget *parent) : QTreeView(parent) { + mModel = static_cast<ArchiveModel*>(SmGlobals::instance()->model("ArchiveModel")); + mProxy = new QSortFilterProxyModel; + mProxy->setSourceModel(mModel); + setModel(mProxy); +} + +ArchiveFiles::ArchiveFiles(QWidget *parent) : QTreeView(parent){ +} diff --git a/archiveview.h b/archiveview.h new file mode 100644 index 0000000..a8aed6b --- /dev/null +++ b/archiveview.h @@ -0,0 +1,50 @@ +/* + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version + 2 of the License, or (at your option) any later version. +*/ + +#ifndef ARCHIVEVIEW_H +#define ARCHIVEVIEW_H + +#include <QWidget> +#include <QTreeView> + +#include "archivemodel.h" + +class QSortFilterProxyModel; +class QComboBox; +class QLineEdit; + +class ArchiveTree; +class ArchiveFiles; + +class ArchiveView : public QWidget { + Q_OBJECT + public: + explicit ArchiveView(QWidget *parent = 0); + + private: + QComboBox *mSortOrder; + QLineEdit *mFilter; + ArchiveTree *mTree; + ArchiveFiles *mFiles; + ArchiveModel *mArchiveModel; +}; + +class ArchiveTree : public QTreeView { + public: + explicit ArchiveTree(QWidget *parent = 0); + + private: + QSortFilterProxyModel *mProxy; + ArchiveModel *mModel; +}; + +class ArchiveFiles : public QTreeView { + public: + explicit ArchiveFiles(QWidget *parent = 0); +}; + +#endif // ARCHIVEVIEW_H @@ -39,6 +39,7 @@ #include "pictureswidget.h" #include "smdirmodel.h" #include "framecache.h" +#include "archiveview.h" SheMov::SheMov(QWidget *parent, Qt::WindowFlags flags) : QMainWindow(parent, flags), mOpenWithGroupFS(0), mOpenWithGroupAV(0) { //application icon @@ -73,6 +74,12 @@ SheMov::SheMov(QWidget *parent, Qt::WindowFlags flags) : QMainWindow(parent, fla connect(mATree->filesWidget(), SIGNAL(statusMessage(QString)), this, SLOT(statusbarMessage(QString))); connect(this, SIGNAL(configChanged()), mATree, SLOT(readSettings())); + //experimental + splash.showMessage(tr("Creating experimental"), Qt::AlignHCenter, Qt::yellow); + qApp->processEvents(); + mArchive = new ArchiveView; + mTab->addTab(mArchive, "Experimental"); + //pictures splash.showMessage(tr("Creating Picture Archive..."), Qt::AlignHCenter, Qt::yellow); qApp->processEvents(); @@ -22,6 +22,7 @@ class DbAnalyzerDialog; class PicturesWidget; class SmTreeModel; class NewPicsDialog; +class ArchiveView; class SheMov : public QMainWindow { Q_OBJECT @@ -215,5 +216,6 @@ class SheMov : public QMainWindow { NewPicsDialog *mNewPicsDialog; DbAnalyzerDialog *mDbAnalyzerDialog; PicturesWidget *mPicWidget; + ArchiveView *mArchive; }; #endif @@ -44,7 +44,8 @@ SOURCES = main.cpp \ smdirmodel.cpp \ framecache.cpp \ smtreeview.cpp \ - archivemodel.cpp + archivemodel.cpp \ + archiveview.cpp HEADERS = \ filesystemdirproxy.h \ filesystemwidget.h \ @@ -84,6 +85,7 @@ HEADERS = \ smdirmodel.h \ framecache.h \ smtreeview.h \ - archivemodel.h + archivemodel.h \ + archiveview.h LIBS += -lmagic -lXfixes -lX11 RESOURCES = shemov.qrc |