diff options
Diffstat (limited to 'filestreemodel.cpp')
-rw-r--r-- | filestreemodel.cpp | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/filestreemodel.cpp b/filestreemodel.cpp index f47f8c3..5bb0741 100644 --- a/filestreemodel.cpp +++ b/filestreemodel.cpp @@ -33,6 +33,8 @@ FilesTreeModel::FilesTreeModel(QStringList &headers, QObject *parent) : SmTreeMo mUpdateQualityQuery->prepare("UPDATE files SET siquality = :quality WHERE ifiles_id = :id"); mUpdatePartNoQuery = new QSqlQuery(mDb); mUpdatePartNoQuery->prepare("UPDATE files SET sifileno = :partno WHERE ifiles_id = :id"); + mUpdateFileTypeQuery = new QSqlQuery(mDb); + mUpdateFileTypeQuery->prepare("UPDATE files SET sifiletype = :filetype WHERE ifiles_id = :id"); mInsertFileQuery = new QSqlQuery(mDb); mInsertFileQuery->prepare("INSERT INTO files(iseriespart_id, tfilename, cmd5sum, bisize, idvd, sifiletype, sifileno, siquality) VALUES(:seriespartid, :fname, :md5, :size, :dvd, :type, :fileno, :quality)"); mFilesQuery = new QSqlQuery(mDb); @@ -60,6 +62,10 @@ FilesTreeModel::FilesTreeModel(QStringList &headers, QObject *parent) : SmTreeMo //misc mSeriesModel = static_cast<SeriesTreeModel*>(SmGlobals::instance()->model("SeriesModel")); readCache(); + mEditableColumns.insert(tr("Set part no."), PartNo); + mEditableColumns.insert(tr("Set quality"), Quality); + mEditableColumns.insert(tr("Set file type"), FileType); + mEditableColumns.insert(tr("Set dvd no."), DvdNo); } FilesTreeModel::~FilesTreeModel(){ @@ -277,6 +283,25 @@ bool FilesTreeModel::setData(const QModelIndex &index, const QVariant &value, in return true; } } + if(index.column() == FileType){ + mUpdateFileTypeQuery->bindValue(":id", index.data(FilesIdRole)); + mUpdateFileTypeQuery->bindValue(":filetype", value); + if(mUpdateFileTypeQuery->exec()){ + int oldFileType = index.data(FileTypeRole).toInt(); + item->setData(FileType, value); + QModelIndex newParent = QModelIndex(); + if((oldFileType == 1) && (value.toInt() != 1)){ + newParent = find("Covers"); + } + if((oldFileType > 1) && (value.toInt() == 1)){ + newParent = find("Movies"); + } + if(newParent.isValid()){ + reparent(index, newParent); + } + return true; + } + } } return false; } @@ -289,8 +314,8 @@ Qt::ItemFlags FilesTreeModel::flags(const QModelIndex &index) const{ return Qt::ItemIsEnabled; } Qt::ItemFlags retval = Qt::ItemIsEnabled | Qt::ItemIsSelectable; - if(index.column() == DvdNo || index.column() == Quality || index.column() == PartNo){ - return retval | Qt::ItemIsEditable; + if(mEditableColumns.values().contains(index.column())){ + retval |= Qt::ItemIsEditable; } return retval; } |