diff options
Diffstat (limited to 'filestreemodel.cpp')
-rw-r--r-- | filestreemodel.cpp | 32 |
1 files changed, 23 insertions, 9 deletions
diff --git a/filestreemodel.cpp b/filestreemodel.cpp index 33c5be4..5b776dc 100644 --- a/filestreemodel.cpp +++ b/filestreemodel.cpp @@ -93,7 +93,7 @@ void FilesTreeModel::setIds(const QList<int> &seriesPartIds){ foreach(int s, seriesPartIds){ ids << QString::number(s); } - QString query = QString("SELECT iseriespart_id, tfilename, cmd5sum, bisize, idvd, sifiletype, sifileno, siquality, ifiles_id, series.tseries_name, seriesparts.iseriespart FROM files, seriesparts, series WHERE iseriespart_id IN (%1) AND files.iseriespart_id = seriesparts.iseriesparts_id AND seriesparts.iseries_id = series.iseries_id ORDER BY tfilename, sifileno ASC").arg(ids.join(",")); + QString query = QString("SELECT iseriespart_id, tfilename, cmd5sum, bisize, idvd, sifiletype, sifileno, siquality, ifiles_id, series.tseries_name, seriesparts.iseriespart, seriesparts.bfavorite FROM files, seriesparts, series WHERE iseriespart_id IN (%1) AND files.iseriespart_id = seriesparts.iseriesparts_id AND seriesparts.iseries_id = series.iseries_id ORDER BY tfilename, sifileno ASC").arg(ids.join(",")); QSqlQuery filesQuery(mDb); filesQuery.prepare(query); populate(filesQuery); @@ -104,10 +104,10 @@ void FilesTreeModel::setMode(int mode){ bool queryOk = false; switch(mode){ case Local: - queryOk = modeQuery.prepare("SELECT iseriespart_id, tfilename, cmd5sum, bisize, idvd, sifiletype, sifileno, siquality, ifiles_id, series.tseries_name, seriesparts.iseriespart FROM files, seriesparts, series WHERE files.idvd = -1 AND files.sifiletype = 1 AND files.iseriespart_id = seriesparts.iseriesparts_id AND seriesparts.iseries_id = series.iseries_id"); + queryOk = modeQuery.prepare("SELECT iseriespart_id, tfilename, cmd5sum, bisize, idvd, sifiletype, sifileno, siquality, ifiles_id, series.tseries_name, seriesparts.iseriespart, seriesparts.bfavorite FROM files, seriesparts, series WHERE files.idvd = -1 AND files.sifiletype = 1 AND files.iseriespart_id = seriesparts.iseriesparts_id AND seriesparts.iseries_id = series.iseries_id"); break; case Archived: - queryOk = modeQuery.prepare("SELECT iseriespart_id, tfilename, cmd5sum, bisize, idvd, sifiletype, sifileno, siquality, ifiles_id, series.tseries_name, seriesparts.iseriespart FROM files, seriesparts, series WHERE files.idvd != -1 AND files.iseriespart_id = seriesparts.iseriesparts_id AND seriesparts.iseries_id = series.iseries_id"); + queryOk = modeQuery.prepare("SELECT iseriespart_id, tfilename, cmd5sum, bisize, idvd, sifiletype, sifileno, siquality, ifiles_id, series.tseries_name, seriesparts.iseriespart, seriesparts.bfavorite FROM files, seriesparts, series WHERE files.idvd != -1 AND files.iseriespart_id = seriesparts.iseriesparts_id AND seriesparts.iseries_id = series.iseries_id"); break; default: ; @@ -202,7 +202,9 @@ QVariant FilesTreeModel::data(const QModelIndex &index, int role) const{ return QColor(Qt::green); } if(index.column() == FileName){ - if(item->data(DvdNo) == -1){ + if(item->data(Favorite).toBool() == true){ + return mFavoriteColor; + }else if(item->data(DvdNo) == -1){ return mLocalColor; }else if(item->data(DvdNo).toInt() > 0){ return mArchivedColor; @@ -256,6 +258,9 @@ QVariant FilesTreeModel::data(const QModelIndex &index, int role) const{ if(role == SeriesNameRole){ return item->data(SeriesName); } + if(role == FavoriteRole){ + return item->data(Favorite); + } return QVariant(); } @@ -322,11 +327,17 @@ Qt::ItemFlags FilesTreeModel::flags(const QModelIndex &index) const{ if(index.data(FileTypeRole) == QVariant()){ return Qt::ItemIsEnabled; } - Qt::ItemFlags retval = Qt::ItemIsEnabled | Qt::ItemIsSelectable; + int retval = Qt::ItemIsEnabled | Qt::ItemIsSelectable; if(mEditableColumns.values().contains(index.column())){ retval |= Qt::ItemIsEditable; } - return retval; + if(mode() == Local){ + if(index.data(FavoriteRole).toBool() == true){ + int inverse = ~Qt::ItemIsSelectable; + retval &= inverse; + } + } + return static_cast<Qt::ItemFlags>(retval); } QHash<QString, QString> FilesTreeModel::filesBySeriesPartId(int seriesPartId) const{ @@ -532,14 +543,16 @@ void FilesTreeModel::readSettings(){ mLocalColor = local.value<QColor>(); QVariant archived = s.value("ui/archivedcolor", Qt::black); mArchivedColor = archived.value<QColor>(); + QVariant favorite = s.value("ui/favoritecolor", Qt::red); + mFavoriteColor = favorite.value<QColor>(); } void FilesTreeModel::populate(QSqlQuery &filesQuery){ - SmTreeItem *root = new SmTreeItem(15); - SmTreeItem *files = new SmTreeItem(15, root); + SmTreeItem *root = new SmTreeItem(16); + SmTreeItem *files = new SmTreeItem(16, root); files->setData(FileName, tr("Movies")); root->appendChild(files); - SmTreeItem *covers = new SmTreeItem(15, root); + SmTreeItem *covers = new SmTreeItem(16, root); covers->setData(FileName, tr("Covers")); root->appendChild(covers); QLocale l; @@ -562,6 +575,7 @@ void FilesTreeModel::populate(QSqlQuery &filesQuery){ data << displayName; data << tr("N/A"); // duration or size data << filesQuery.value(9).toString(); // series name + data << filesQuery.value(11); QString fullPath = data.at(FullPath).toString(); QFileInfo fi(fullPath); switch(filesQuery.value(5).toInt()){ |