diff options
author | Arno <arno@disconnect.de> | 2016-09-03 07:06:55 +0200 |
---|---|---|
committer | Arno <arno@disconnect.de> | 2016-09-03 07:06:55 +0200 |
commit | c3cfc9dd9d94a3c3ce2d58c0ec9320c03489f496 (patch) | |
tree | afae7b4c9754ed5c986a8988c0b5f5f74f988b96 /filewidget.cpp | |
parent | ea8d506033f5694ad3053aa691640aff3a675fb9 (diff) | |
download | ShemovCleaner-c3cfc9dd9d94a3c3ce2d58c0ec9320c03489f496.tar.gz ShemovCleaner-c3cfc9dd9d94a3c3ce2d58c0ec9320c03489f496.tar.bz2 ShemovCleaner-c3cfc9dd9d94a3c3ce2d58c0ec9320c03489f496.zip |
Fix Video sorting
Show directories in FileWidget and always put ".." first, then the
directories by creating a new QSortFilterProxyModel.
For this the file attribute is needed for every column, so use
QList<QStandardItem*> instead of individual QStandardItem*s.
Use enums to access columns.
Diffstat (limited to 'filewidget.cpp')
-rw-r--r-- | filewidget.cpp | 62 |
1 files changed, 40 insertions, 22 deletions
diff --git a/filewidget.cpp b/filewidget.cpp index 6d67007..d1d7a6a 100644 --- a/filewidget.cpp +++ b/filewidget.cpp @@ -68,7 +68,7 @@ void FileWidget::setupGui(){ mFileView->setSelectionMode(QAbstractItemView::ExtendedSelection); mModel = new QStandardItemModel; - mProxy = new FileSorter; + mProxy = new VideoSorter; mProxy->setSourceModel(mModel); mFileView->setModel(mProxy); readSettings(); @@ -96,7 +96,7 @@ void FileWidget::selectDir(){ void FileWidget::gatherData(){ QDir d(mDir->text()); - QFileInfoList fl = d.entryInfoList(QStringList() << "*", QDir::Files, QDir::Name); + QFileInfoList fl = d.entryInfoList(QStringList() << "*", QDir::Files | QDir::Dirs | QDir::NoDot, QDir::Name | QDir::DirsFirst); mModel->clear(); QStandardItem *root = mModel->invisibleRootItem(); mModel->setHorizontalHeaderLabels(QStringList() << QChar(0x26A7) << tr("Name") << tr("MIME") << tr("MD5")); @@ -108,34 +108,52 @@ void FileWidget::gatherData(){ foreach(QFileInfo fi, fl){ QMimeType mime = db.mimeTypeForFile(fi); - QStandardItem *i1; - QStandardItem *i2 = new QStandardItem(fi.fileName()); - i2->setEditable(false); - QStandardItem *i4; + QList<QStandardItem*> fData; + FileAttrs attr = NotPresent; + for(int i = 0; i < RowCount; ++i){ + QStandardItem *item = new QStandardItem; + item->setEditable(false); + if(i == Md5Row){ + item->setFont(QFont("courier new")); + } + fData << item; + } + fData[NameRow]->setText(fi.fileName()); if(mime.name().startsWith("video")){ QString md5 = Helper::md5Sum(fi.absoluteFilePath()); - i4 = new QStandardItem(md5); - i4->setFont(QFont("courier new")); + fData[Md5Row]->setText(md5); int haveFile = md5Count(md5); if(haveFile){ - i1 = new QStandardItem(QIcon(":/huge_bra.png"), QString()); - i1->setData(Present); - i2->setForeground(greenBrush); + fData[IconRow]->setIcon(QIcon(":/huge_bra.png")); + fData[NameRow]->setForeground(greenBrush); + attr = Present; + }else{ + fData[IconRow]->setIcon(QIcon(":/chastity_belt.png")); + fData[NameRow]->setForeground(redBrush); + attr = NotPresent; + } + }else if(fi.isDir()){ + if(fi.fileName() == ".."){ + fData[IconRow]->setIcon(QIcon(":/up_dick.png")); + attr = ParentDir; }else{ - i1 = new QStandardItem(QIcon(":/chastity_belt.png"), QString()); - i1->setData(NotPresent); - i2->setForeground(redBrush); + fData[IconRow]->setIcon(QIcon(":/folder.png")); + attr = Directory; } + fData[Md5Row]->setText(tr("n/a")); }else{ - i1 = new QStandardItem(QIcon(":/gaping_ass.png"), QString()); - i1->setData(NoVideo); - i4 = new QStandardItem(tr("n/a")); - i4->setFont(QFont("courier new")); + fData[IconRow]->setIcon(QIcon(":/gaping_ass.png")); + fData[Md5Row]->setText(tr("n/a")); + attr = NoVideo; + } + fData[MimeRow]->setText(mime.name()); + if(mime.name() == "inode/directory"){ + fData[MimeRow]->setText("directory"); + } + for(int i = 0; i < RowCount; ++i){ + fData[i]->setData(attr); } - i1->setEditable(false); - QStandardItem *i3 = new QStandardItem(mime.name()); - i3->setEditable(false); - root->appendRow(QList<QStandardItem*>() << i1 << i2 << i3 << i4); + root->appendRow(fData); } readHeaderData(); qApp->restoreOverrideCursor(); |