diff options
Diffstat (limited to 'seriestreewidget.cpp')
-rw-r--r-- | seriestreewidget.cpp | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/seriestreewidget.cpp b/seriestreewidget.cpp index d440140..5fb7d2c 100644 --- a/seriestreewidget.cpp +++ b/seriestreewidget.cpp @@ -12,6 +12,9 @@ #include <QLabel> #include <QSortFilterProxyModel> #include <QRegExp> +#include <QContextMenuEvent> +#include <QMenu> +#include <QAction> #include "seriestreewidget.h" #include "smubermodel.h" @@ -35,15 +38,15 @@ SeriesTreeWidget::SeriesTreeWidget(QWidget *parent) : QWidget(parent){ //the view mView = new SeriesTreeView; mProxy = new QSortFilterProxyModel; - SeriesTreeModel *sourceModel = SmUberModelSingleton::instance()->seriesModel(); - mProxy->setSourceModel(sourceModel); + mModel = SmUberModelSingleton::instance()->seriesModel(); + mProxy->setSourceModel(mModel); mView->setModel(mProxy); mView->setSortingEnabled(true); for(int i = 1; i < 5 ;++i){ mView->setColumnHidden(i, true); } mView->resizeColumnToContents(0); - connect(sourceModel, SIGNAL(needResort()), this, SLOT(resort())); + connect(mModel, SIGNAL(needResort()), this, SLOT(resort())); //layout QVBoxLayout *mainLayout = new QVBoxLayout; @@ -53,6 +56,17 @@ SeriesTreeWidget::SeriesTreeWidget(QWidget *parent) : QWidget(parent){ } +void SeriesTreeWidget::newSeries(){ + QList<QVariant> data; + data << tr("<New series>") << -1 << -1 << 0 << SeriesTreeModel::NewSeries; + if(mModel->addRow(data, QModelIndex())){ + QModelIndex newRow = mModel->index(mModel->rowCount(QModelIndex()) - 1, 0, QModelIndex()); + if(newRow.isValid()){ + mView->edit(newRow); + } + } +} + void SeriesTreeWidget::filter(){ mProxy->setFilterRegExp(mFilterEdit->text()); } @@ -62,3 +76,11 @@ void SeriesTreeWidget::resort(){ } SeriesTreeView::SeriesTreeView(QWidget *parent) : QTreeView(parent) {} + +void SeriesTreeView::contextMenuEvent(QContextMenuEvent *e){ + QMenu contextMenu(this); + foreach(QAction *a, actions()){ + contextMenu.addAction(a); + } + contextMenu.exec(e->globalPos()); +} |