summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2013-06-01 06:53:34 +0200
committerArno <am@disconnect.de>2013-06-01 06:53:34 +0200
commitac5f624734f712bce84f36cc47c0133a1382534f (patch)
treeff3f0105b341dbc91dbe4471b4a55429fe127ce4
parent39223db7f24eb285af7f0b7a3b061d9a92453122 (diff)
downloadSheMov-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.cpp3
-rw-r--r--archiveview.cpp60
-rw-r--r--archiveview.h50
-rw-r--r--shemov.cpp7
-rw-r--r--shemov.h2
-rw-r--r--shemov.pro6
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
diff --git a/shemov.cpp b/shemov.cpp
index b6be75f..9859d2f 100644
--- a/shemov.cpp
+++ b/shemov.cpp
@@ -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();
diff --git a/shemov.h b/shemov.h
index 5d5bdd1..9bb2e4d 100644
--- a/shemov.h
+++ b/shemov.h
@@ -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
diff --git a/shemov.pro b/shemov.pro
index 8f8288c..1bae612 100644
--- a/shemov.pro
+++ b/shemov.pro
@@ -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