summaryrefslogtreecommitdiffstats
path: root/filestreemodel.cpp
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2012-12-30 13:42:35 +0100
committerArno <am@disconnect.de>2012-12-30 13:42:35 +0100
commit6ca8a6fab443c0b4ac7f6249c9ef02457ddf4f55 (patch)
treecf5a50340feeccf136eb7b99cd7a0699f43b7111 /filestreemodel.cpp
parenta069898249b863b0982b1807afa8d0b0912b496e (diff)
downloadSheMov-6ca8a6fab443c0b4ac7f6249c9ef02457ddf4f55.tar.gz
SheMov-6ca8a6fab443c0b4ac7f6249c9ef02457ddf4f55.tar.bz2
SheMov-6ca8a6fab443c0b4ac7f6249c9ef02457ddf4f55.zip
Allow moving files from one Series to another
Allow moving files from one SeriesPart to another. Had to add another global variable for this.
Diffstat (limited to 'filestreemodel.cpp')
-rw-r--r--filestreemodel.cpp28
1 files changed, 27 insertions, 1 deletions
diff --git a/filestreemodel.cpp b/filestreemodel.cpp
index e59bd99..5fa926e 100644
--- a/filestreemodel.cpp
+++ b/filestreemodel.cpp
@@ -45,6 +45,8 @@ FilesTreeModel::FilesTreeModel(QStringList &headers, QObject *parent) : SmTreeMo
mFileTypeQuery = new QSqlQuery(mDb);
mFileTypeQuery->prepare("SELECT sifiletype FROM files WHERE cmd5sum = :md5");
mFileSizeLessThanQueryTemplate = QString("SELECT cmd5sum FROM files WHERE bisize <= :size AND sifiletype = 1 AND idvd = -1 ORDER BY bisize DESC LIMIT %1");
+ mUpdateSeriesPartQuery = new QSqlQuery(mDb);
+ mUpdateSeriesPartQuery->prepare("UPDATE files SET iseriespart_id = :partid WHERE ifiles_id = :fileid");
//file types
mFileTypes.insert(1, tr("Movie"));
@@ -79,6 +81,7 @@ FilesTreeModel::~FilesTreeModel(){
}
void FilesTreeModel::setIds(const QList<int> &seriesPartIds){
+ mCurrentIds = seriesPartIds;
QStringList ids;
foreach(int s, seriesPartIds){
ids << QString::number(s);
@@ -175,7 +178,7 @@ QVariant FilesTreeModel::data(const QModelIndex &index, int role) const{
if(index.column() == FileName){
if(item->data(Favorite).toBool() == true){
return mFavoriteColor;
- }else if(item->data(DvdNo) == -1){
+ }else if(item->data(DvdNo) == -1){
return mLocalColor;
}else if(item->data(DvdNo).toInt() > 0){
return mArchivedColor;
@@ -492,6 +495,25 @@ bool FilesTreeModel::deleteFiles(const QModelIndexList &files){
return true;
}
+bool FilesTreeModel::updateSeries(int newSeries, QList<QPersistentModelIndex> files){
+ if(files.isEmpty()){
+ return false;
+ }
+ mDb.transaction();
+ foreach(QPersistentModelIndex idx, files){
+ mUpdateSeriesPartQuery->bindValue(":partid", newSeries);
+ mUpdateSeriesPartQuery->bindValue(":fileid", idx.data(FilesTreeModel::FilesIdRole));
+ if(!mUpdateSeriesPartQuery->exec()){
+ mDb.rollback();
+ return false;
+ }
+ }
+ mDb.commit();
+ refresh();
+ return true;
+}
+
+
void FilesTreeModel::readCache(){
QString settingsDir = QDesktopServices::storageLocation(QDesktopServices::DataLocation);
QString cacheFile = QString("%1/%2").arg(settingsDir).arg("sizeduration.cache");
@@ -545,6 +567,10 @@ void FilesTreeModel::readSettings(){
mFavoriteColor = favorite.value<QColor>();
}
+void FilesTreeModel::refresh(){
+ setIds(mCurrentIds);
+}
+
void FilesTreeModel::populate(QSqlQuery &filesQuery){
SmTreeItem *root = new SmTreeItem(16);
SmTreeItem *files = new SmTreeItem(16, root);