summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--seriestreemodel.cpp25
-rw-r--r--seriestreemodel.h3
-rw-r--r--seriestreewidget.cpp9
-rw-r--r--seriestreewidget.h1
-rw-r--r--shemov.cpp1
5 files changed, 38 insertions, 1 deletions
diff --git a/seriestreemodel.cpp b/seriestreemodel.cpp
index 0da1b04..b8a4425 100644
--- a/seriestreemodel.cpp
+++ b/seriestreemodel.cpp
@@ -8,6 +8,7 @@
#include <QSqlQuery>
#include <QSqlError>
#include <QIcon>
+#include <QFile>
#include <QDebug>
@@ -25,6 +26,8 @@ SeriesTreeModel::SeriesTreeModel(QStringList &headers, QObject *parent) : SmTree
mUpdateSeriesNameQuery->prepare("UPDATE series SET tseries_name = :newname WHERE iseries_id = :id");
mDeleteSeriesQuery = new QSqlQuery(mDb);
mDeleteSeriesQuery->prepare("DELETE FROM series where iseries_id = :id");
+ mDeleteSeriesPartQuery = new QSqlQuery(mDb);
+ mDeleteSeriesPartQuery->prepare("DELETE FROM seriesparts WHERE iseriesparts_id = :id");
mSeriesInsertQuery = new QSqlQuery(mDb);
mSeriesInsertQuery->prepare("INSERT INTO series(tseries_name) VALUES(:name)");
mSeriesFilesQuery = new QSqlQuery(mDb);
@@ -177,6 +180,28 @@ QFileInfoList SeriesTreeModel::findFiles(const QModelIndex &where) const{
return retval;
}
+bool SeriesTreeModel::deleteFromSeries(const QModelIndex &what){
+ int nodeType = what.data(TypeRole).toInt();
+ QSqlQuery *query = 0;
+ if(nodeType == Series || nodeType == NewSeries){
+ query = mDeleteSeriesQuery;
+ query->bindValue(":id", what.data(SeriesIdRole));
+ }else if(nodeType == Part){
+ query = mDeleteSeriesPartQuery;
+ query->bindValue(":id", what.data(SeriesPartIdRole));
+ }
+ if(query){
+ QFileInfoList files = findFiles(what);
+ if(query->exec()){
+ foreach(QFileInfo fi, files){
+ QFile::remove(fi.absoluteFilePath());
+ }
+ return true;
+ }
+ }
+ return false;
+}
+
void SeriesTreeModel::populate(){
QSqlQuery seriesQuery = QSqlQuery("SELECT iseries_id, tseries_name FROM series ORDER BY tseries_name", mDb);
SmTreeItem *rootItem = new SmTreeItem(5);
diff --git a/seriestreemodel.h b/seriestreemodel.h
index a393c32..6cb55b8 100644
--- a/seriestreemodel.h
+++ b/seriestreemodel.h
@@ -34,7 +34,7 @@ class SeriesTreeModel : public SmTreeModel {
QFileInfoList findFiles(const QModelIndex &where) const;
//delete
- //bool deleteFromSeries(const QModelIndex &what);
+ bool deleteFromSeries(const QModelIndex &what);
signals:
void needResort();
@@ -49,6 +49,7 @@ class SeriesTreeModel : public SmTreeModel {
QSqlQuery *mUpdateSeriesIdQuery;
QSqlQuery *mUpdateSeriesNameQuery;
QSqlQuery *mDeleteSeriesQuery;
+ QSqlQuery *mDeleteSeriesPartQuery;
QSqlQuery *mSeriesInsertQuery;
QSqlQuery *mSeriesFilesQuery;
QSqlQuery *mSeriesPartFilesQuery;
diff --git a/seriestreewidget.cpp b/seriestreewidget.cpp
index 816a293..071667d 100644
--- a/seriestreewidget.cpp
+++ b/seriestreewidget.cpp
@@ -46,6 +46,7 @@ SeriesTreeWidget::SeriesTreeWidget(QWidget *parent) : QWidget(parent){
mView->setColumnHidden(i, true);
}
mView->resizeColumnToContents(0);
+ mView->setSelectionMode(QAbstractItemView::ExtendedSelection);
connect(mModel, SIGNAL(needResort()), this, SLOT(resort()));
//layout
@@ -69,6 +70,14 @@ void SeriesTreeWidget::newSeries(){
}
}
+void SeriesTreeWidget::deleteFromSeries(){
+ QModelIndexList selected = mView->selectionModel()->selectedRows();
+ if(selected.isEmpty()){
+ return;
+ }
+
+}
+
void SeriesTreeWidget::filter(){
mProxy->setFilterRegExp(mFilterEdit->text());
}
diff --git a/seriestreewidget.h b/seriestreewidget.h
index 6e949b2..4f23afb 100644
--- a/seriestreewidget.h
+++ b/seriestreewidget.h
@@ -25,6 +25,7 @@ class SeriesTreeWidget : public QWidget {
public slots:
void newSeries();
+ void deleteFromSeries();
private slots:
void filter();
diff --git a/shemov.cpp b/shemov.cpp
index d60c00c..d735ba3 100644
--- a/shemov.cpp
+++ b/shemov.cpp
@@ -363,6 +363,7 @@ void SheMov::createActions(){
mDeleteFromSeriesA = new QAction(tr("Delete entry..."), this);
mATree->seriesWidget()->seriesTree()->addAction(mDeleteFromSeriesA);
+
// misc
mOpenWithMapperFS = new QSignalMapper(this);
mOpenWithMapperAV = new QSignalMapper(this);