summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2010-06-13 14:52:16 +0200
committerArno <am@disconnect.de>2010-06-13 14:52:16 +0200
commitc7e25a4bb75417f1615b71940694f5f4479f9043 (patch)
tree9774bd30984a8abc0a7c2b66abc5146b5a788d54
parentf0970f64fd92fb65a3e0bd2b07b733f9932d8b35 (diff)
downloadSheMov-c7e25a4bb75417f1615b71940694f5f4479f9043.tar.gz
SheMov-c7e25a4bb75417f1615b71940694f5f4479f9043.tar.bz2
SheMov-c7e25a4bb75417f1615b71940694f5f4479f9043.zip
Implemented SeriesTreeWidget
Implemented a widget for showing series in a tree. Also implemented filtering and sorting for this widget. Some bugfixes and enhancements: -Show dildo as DecorationRole in SeriesWidget -removed Quality from SeriesWidget
-rw-r--r--archivetreeview.cpp8
-rw-r--r--archivetreeview.h3
-rw-r--r--seriestreewidget.cpp56
-rw-r--r--seriestreewidget.h40
-rw-r--r--shemov.pro6
-rw-r--r--smtreemodel.cpp9
-rw-r--r--smubermodel.cpp2
7 files changed, 115 insertions, 9 deletions
diff --git a/archivetreeview.cpp b/archivetreeview.cpp
index 824ac42..4131218 100644
--- a/archivetreeview.cpp
+++ b/archivetreeview.cpp
@@ -8,20 +8,20 @@
#include <QTreeView>
#include <QSplitter>
#include <QHBoxLayout>
+#include <QVBoxLayout>
#include "archivetreeview.h"
#include "smubermodel.h"
#include "smubermodelsingleton.h"
#include "smtreemodel.h"
+#include "seriestreewidget.h"
ArchiveTreeView::ArchiveTreeView(QWidget *parent) : QWidget(parent), mUberModel(0){
// get model
mUberModel = SmUberModelSingleton::instance();
// series view
- mSeriesView = new QTreeView;
- mSeriesView->setModel(mUberModel->seriesModel());
- mSeriesView->setColumnHidden(2, true);
+ mSeriesWidget = new SeriesTreeWidget;
// files view
mFilesView = new QTreeView;
@@ -29,7 +29,7 @@ ArchiveTreeView::ArchiveTreeView(QWidget *parent) : QWidget(parent), mUberModel(
// layout
QHBoxLayout *mainLayout = new QHBoxLayout;
QSplitter *splitter = new QSplitter;
- splitter->addWidget(mSeriesView);
+ splitter->addWidget(mSeriesWidget);
splitter->addWidget(mFilesView);
mainLayout->addWidget(splitter);
setLayout(mainLayout);
diff --git a/archivetreeview.h b/archivetreeview.h
index d03319b..ef0e51a 100644
--- a/archivetreeview.h
+++ b/archivetreeview.h
@@ -12,6 +12,7 @@
class SmUberModel;
class QTreeView;
+class SeriesTreeWidget;
class ArchiveTreeView : public QWidget
{
@@ -21,7 +22,7 @@ class ArchiveTreeView : public QWidget
private:
//widgets
- QTreeView *mSeriesView;
+ SeriesTreeWidget *mSeriesWidget;
QTreeView *mFilesView;
//models
diff --git a/seriestreewidget.cpp b/seriestreewidget.cpp
new file mode 100644
index 0000000..9395046
--- /dev/null
+++ b/seriestreewidget.cpp
@@ -0,0 +1,56 @@
+/*
+ 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 <QHBoxLayout>
+#include <QVBoxLayout>
+#include <QPushButton>
+#include <QLineEdit>
+#include <QLabel>
+#include <QSortFilterProxyModel>
+#include <QRegExp>
+
+#include "seriestreewidget.h"
+#include "smubermodel.h"
+#include "smtreemodel.h"
+#include "smubermodelsingleton.h"
+
+SeriesTreeWidget::SeriesTreeWidget(QWidget *parent) : QWidget(parent){
+ //filter bar
+ QLabel *l1 = new QLabel(tr("&Filter:"));
+ mFilterEdit = new QLineEdit;
+ l1->setBuddy(mFilterEdit);
+ mFilter = new QPushButton(tr("Filter"));
+ QHBoxLayout *filterLayout = new QHBoxLayout;
+ connect(mFilter, SIGNAL(clicked()), this, SLOT(filter()));
+ connect(mFilterEdit, SIGNAL(returnPressed()), this, SLOT(filter()));
+ filterLayout->addWidget(l1);
+ filterLayout->addWidget(mFilterEdit);
+ filterLayout->addWidget(mFilter);
+
+ //the view
+ mView = new SeriesTreeView;
+ mProxy = new QSortFilterProxyModel;
+ mProxy->setSourceModel(SmUberModelSingleton::instance()->seriesModel());
+ mView->setModel(mProxy);
+ mView->setSortingEnabled(true);
+ mView->setColumnHidden(1, true);
+ mView->setColumnHidden(2, true);
+ mView->resizeColumnToContents(0);
+
+ //layout
+ QVBoxLayout *mainLayout = new QVBoxLayout;
+ mainLayout->addLayout(filterLayout);
+ mainLayout->addWidget(mView);
+ setLayout(mainLayout);
+
+}
+
+void SeriesTreeWidget::filter(){
+ mProxy->setFilterRegExp(mFilterEdit->text());
+}
+
+SeriesTreeView::SeriesTreeView(QWidget *parent) : QTreeView(parent) {}
diff --git a/seriestreewidget.h b/seriestreewidget.h
new file mode 100644
index 0000000..45801b7
--- /dev/null
+++ b/seriestreewidget.h
@@ -0,0 +1,40 @@
+/*
+ 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 SERIESTREEWIDGET_H
+#define SERIESTREEWIDGET_H
+
+#include <QWidget>
+#include <QTreeView>
+
+class QLineEdit;
+class QPushButton;
+class QTreeView;
+class QSortFilterProxyModel;
+
+class SeriesTreeWidget : public QWidget {
+ Q_OBJECT
+ public:
+ explicit SeriesTreeWidget(QWidget *parent = 0);
+
+ private slots:
+ void filter();
+
+ private:
+ QLineEdit *mFilterEdit;
+ QPushButton *mFilter;
+ QTreeView *mView;
+ QSortFilterProxyModel *mProxy;
+};
+
+class SeriesTreeView : public QTreeView {
+ Q_OBJECT
+ public:
+ explicit SeriesTreeView(QWidget *parent = 0);
+};
+
+#endif
diff --git a/shemov.pro b/shemov.pro
index 4a4188d..39dd494 100644
--- a/shemov.pro
+++ b/shemov.pro
@@ -50,7 +50,8 @@ SOURCES = main.cpp \
smtreemodel.cpp \
smubermodel.cpp \
smubermodelsingleton.cpp \
- archivetreeview.cpp
+ archivetreeview.cpp \
+ seriestreewidget.cpp
HEADERS = listitem.h \
listmodel.h \
movieitem.h \
@@ -96,6 +97,7 @@ HEADERS = listitem.h \
smtreemodel.h \
smubermodel.h \
smubermodelsingleton.h \
- archivetreeview.h
+ archivetreeview.h \
+ seriestreewidget.h
LIBS += -lmagic
RESOURCES = shemov.qrc
diff --git a/smtreemodel.cpp b/smtreemodel.cpp
index fe5482c..c762802 100644
--- a/smtreemodel.cpp
+++ b/smtreemodel.cpp
@@ -5,6 +5,8 @@
2 of the License, or (at your option) any later version.
*/
+#include <QIcon>
+
#include "smtreemodel.h"
#include "smtreeitem.h"
@@ -62,7 +64,7 @@ Qt::ItemFlags SmTreeModel::flags(const QModelIndex &index) const{
QVariant SmTreeModel::headerData(int section, Qt::Orientation orientation, int role) const{
if((orientation == Qt::Horizontal) && (role == Qt::DisplayRole)){
- return mRootItem->data(section);
+ return mHeaders.at(section);
}
return QVariant();
}
@@ -87,6 +89,11 @@ QVariant SmTreeModel::data(const QModelIndex &index, int role) const{
if(role == Qt::EditRole){
return item->data(index.column());
}
+ if(role == Qt::DecorationRole){
+ if(index.column() == 0){
+ return QIcon(":/dildo.png");
+ }
+ }
return QVariant();
}
diff --git a/smubermodel.cpp b/smubermodel.cpp
index 9bb8195..d07b762 100644
--- a/smubermodel.cpp
+++ b/smubermodel.cpp
@@ -26,7 +26,7 @@ SmUberModel::SmUberModel(QObject *parent) : QObject(parent), mSeriesModel(0), mF
mSeriesPartsQuery->prepare("SELECT iseriesparts_id, iseriespart, iseries_id, iquality FROM seriesparts WHERE iseries_id = :id ORDER BY iseriespart");
//series model
- QStringList seriesHeaders = QStringList() << tr("Name") << tr("Quality") << tr("Id");
+ QStringList seriesHeaders = QStringList() << tr("Series") << tr("Quality") << tr("Id");
mSeriesModel = new SmTreeModel(seriesHeaders, this);
populateSeriesmodel();
}