summaryrefslogtreecommitdiffstats
path: root/filestreemodel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'filestreemodel.cpp')
-rw-r--r--filestreemodel.cpp32
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()){