diff options
author | Arno <am@disconnect.de> | 2010-12-06 19:10:19 +0100 |
---|---|---|
committer | Arno <am@disconnect.de> | 2010-12-06 19:10:19 +0100 |
commit | a87e4d8c3c2102e9728dd5df303acca7ae08b343 (patch) | |
tree | 29b2b7d2c5f532da2ea18152e7cf34ad51b1016f /filestreemodel.cpp | |
parent | cb4d80e6a642ef0cd3180aed2155d86144c83395 (diff) | |
download | SheMov-a87e4d8c3c2102e9728dd5df303acca7ae08b343.tar.gz SheMov-a87e4d8c3c2102e9728dd5df303acca7ae08b343.tar.bz2 SheMov-a87e4d8c3c2102e9728dd5df303acca7ae08b343.zip |
Edit values in archive
This commit introduces QInputDialogs for all values editable in the
archive. Inline editing in the view doesn't seem the right choice
regarding usability.
Fixed a long standing bug in nextDvdNo(). That was off by one. Return
one more than max(value). Also got rid of DvdNoDialog, replaced by a
QInputDialog.
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; } |