diff options
-rw-r--r-- | archivetreeview.cpp | 8 | ||||
-rw-r--r-- | archivetreeview.h | 3 | ||||
-rw-r--r-- | seriestreewidget.cpp | 56 | ||||
-rw-r--r-- | seriestreewidget.h | 40 | ||||
-rw-r--r-- | shemov.pro | 6 | ||||
-rw-r--r-- | smtreemodel.cpp | 9 | ||||
-rw-r--r-- | smubermodel.cpp | 2 |
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 @@ -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(); } |