summaryrefslogtreecommitdiffstats
path: root/seriestreemodel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'seriestreemodel.cpp')
-rw-r--r--seriestreemodel.cpp52
1 files changed, 52 insertions, 0 deletions
diff --git a/seriestreemodel.cpp b/seriestreemodel.cpp
index d5257bb..4ff34e0 100644
--- a/seriestreemodel.cpp
+++ b/seriestreemodel.cpp
@@ -34,6 +34,8 @@ SeriesTreeModel::SeriesTreeModel(QStringList &headers, QObject *parent) : SmTree
mSeriesFilesQuery->prepare("SELECT files.tfilename, files.cmd5sum FROM series, seriesparts, files WHERE series.iseries_id = :id AND series.iseries_id = seriesparts.iseries_id AND seriesparts.iseriesparts_id = files.iseriespart_id");
mSeriesPartFilesQuery = new QSqlQuery(mDb);
mSeriesPartFilesQuery->prepare("SELECT files.tfilename, files.cmd5sum FROM seriesparts, files WHERE seriesparts.iseriesparts_id = :id AND seriesparts.iseriesparts_id = files.iseriespart_id");
+ mSeriesPartInsertQuery = new QSqlQuery(mDb);
+ mSeriesPartInsertQuery->prepare("INSERT INTO seriesparts(iseriespart, iseries_id) VALUES(:part, :id)");
mSortedMovieListQuery = new QSqlQuery(mDb);
mSortedMovieListQuery->prepare("SELECT files.tfilename, files.cmd5sum FROM series, seriesparts, files WHERE series.iseries_id = :id AND seriesparts.iseries_id = series.iseries_id AND seriesparts.iseriesparts_id = files.iseriespart_id AND files.sifiletype = 1 ORDER BY seriesparts.iseriespart, files.sifileno");
mNextDvdNoQuery = new QSqlQuery(mDb);
@@ -49,6 +51,9 @@ SeriesTreeModel::~SeriesTreeModel(){
delete mSeriesInsertQuery;
delete mSeriesFilesQuery;
delete mSeriesPartFilesQuery;
+ delete mSeriesPartInsertQuery;
+ delete mSortedMovieListQuery;
+ delete mNextDvdNoQuery;
mDb.close();
mDb = QSqlDatabase();
}
@@ -264,6 +269,53 @@ bool SeriesTreeModel::deleteFromSeries(const QModelIndex &what){
return false;
}
+bool SeriesTreeModel::addSeries(const QVariant &seriesName, const QModelIndex &parent){
+ const QString name = seriesName.toString().toLower().trimmed();
+ if(name.isEmpty()){
+ return false;
+ }
+ mDb.transaction();
+ mSeriesInsertQuery->bindValue(":name", name);
+ if(mSeriesInsertQuery->exec()){
+ QSqlQuery lastId("SELECT currval('series_iseries_id__seq')", mDb);
+ if(lastId.next()){
+ int id = lastId.value(0).toInt();
+ QList<QVariant> seriesData;
+ seriesData << name << id << QVariant() << QVariant() << Series;
+ if(addRow(seriesData, parent)){
+ mDb.commit();
+ return true;
+ }
+ }
+ }
+ mDb.rollback();
+ return false;
+}
+
+bool SeriesTreeModel::addSeriesPart(int seriesPart, const QModelIndex &parent){
+ if(!parent.isValid() || parent.data(TypeRole) != Series){
+ return false;
+ }
+ int seriesId = parent.data(SeriesIdRole).toInt();
+ mDb.transaction();
+ mSeriesPartInsertQuery->bindValue(":part", seriesPart);
+ mSeriesPartInsertQuery->bindValue(":id", seriesId);
+ if(mSeriesPartInsertQuery->exec()){
+ QSqlQuery lastId("SELECT currval('seriesparts_seriesparts_id__seq')", mDb);
+ if(lastId.exec()){
+ int id = lastId.value(0).toInt();
+ QList<QVariant> partData;
+ partData << parent.data(NameRole) << seriesId << id << seriesPart << Part;
+ if(addRow(partData, parent)){
+ mDb.commit();
+ return true;
+ }
+ }
+ }
+ mDb.rollback();
+ 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);