diff options
author | Arno Moeller <am@mindwerk.de> | 2010-06-25 16:40:16 +0200 |
---|---|---|
committer | Arno Moeller <am@mindwerk.de> | 2010-06-25 16:40:16 +0200 |
commit | c5125a0cdb79d13169f44fcfd03e517e7dd557d6 (patch) | |
tree | 35f88efce0e7aba2e17a22a22d5ae8f12ceb741f /filestreemodel.cpp | |
parent | 7ad391f932c9ec33cccf49eff8996ccaf2d303d5 (diff) | |
download | SheMov-c5125a0cdb79d13169f44fcfd03e517e7dd557d6.tar.gz SheMov-c5125a0cdb79d13169f44fcfd03e517e7dd557d6.tar.bz2 SheMov-c5125a0cdb79d13169f44fcfd03e517e7dd557d6.zip |
Sorting for FilesTreeModel
Implemented individual sorting for FilesTreeModel:
1. Don't compare the "Movies" and "Covers" nodes, keep the initial
order.
2. Compare Size and DvdNo by int/longlong instead of comparing the
displayed strings.
Diffstat (limited to 'filestreemodel.cpp')
-rw-r--r-- | filestreemodel.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/filestreemodel.cpp b/filestreemodel.cpp index 87c1e8d..973e7a6 100644 --- a/filestreemodel.cpp +++ b/filestreemodel.cpp @@ -29,7 +29,7 @@ FilesTreeModel::~FilesTreeModel(){ void FilesTreeModel::setIds(const QList<int> &seriesPartIds){ SmTreeItem *root = new SmTreeItem(11); SmTreeItem *files = new SmTreeItem(11, root); - files->setData(FileName, tr("Files")); + files->setData(FileName, tr("Movies")); root->appendChild(files); SmTreeItem *covers = new SmTreeItem(11, root); covers->setData(FileName, tr("Covers")); @@ -39,7 +39,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 FROM files WHERE iseriespart_id IN (%1) 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 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(query, mDb); while(filesQuery.next()){ QList<QVariant> data; @@ -54,6 +54,9 @@ void FilesTreeModel::setIds(const QList<int> &seriesPartIds){ data << filesQuery.value(2); //md5sum data << filesQuery.value(0); //seriesparts_id data << filesQuery.value(8); //files_id + data << filesQuery.value(10); //seriespart + QString displayName = QString("%1 %2").arg(filesQuery.value(9).toString()).arg(filesQuery.value(10).toString()); + data << displayName; switch(filesQuery.value(5).toInt()){ case Movie:{ SmTreeItem *item = new SmTreeItem(data, files); @@ -82,6 +85,7 @@ QVariant FilesTreeModel::data(const QModelIndex &index, int role) const{ SmTreeItem *item = static_cast<SmTreeItem*>(index.internalPointer()); if(role == Qt::DisplayRole){ + if(index.column()) if(index.column() == DvdNo){ if(index.data(FileTypeRole) == QVariant()){ return QVariant(); @@ -93,6 +97,11 @@ QVariant FilesTreeModel::data(const QModelIndex &index, int role) const{ return retval; } } + if(index.column() == PartNo){ + if(item->data(PartNo).toInt() == -1){ + return QVariant(); + } + } return item->data(index.column()); } if(role == Qt::EditRole){ |