diff options
author | Arno <arno@disconnect.de> | 2016-09-03 07:31:28 +0200 |
---|---|---|
committer | Arno <arno@disconnect.de> | 2016-09-03 07:31:28 +0200 |
commit | 9ccd31690b5d982588bcb9be1988c682233aabb8 (patch) | |
tree | e6d09554a81ec8ac43b6323ba3d883a4dfe5a493 | |
parent | c3cfc9dd9d94a3c3ce2d58c0ec9320c03489f496 (diff) | |
download | ShemovCleaner-9ccd31690b5d982588bcb9be1988c682233aabb8.tar.gz ShemovCleaner-9ccd31690b5d982588bcb9be1988c682233aabb8.tar.bz2 ShemovCleaner-9ccd31690b5d982588bcb9be1988c682233aabb8.zip |
Implement doubleClicked in FileWidget
Navigate through the filesystem by doubleclicking directories.
Rename enums from Row to Column, since it *are* columns. I'm not very
good at naming things...
-rw-r--r-- | filesorter.cpp | 2 | ||||
-rw-r--r-- | filewidget.cpp | 46 | ||||
-rw-r--r-- | filewidget.h | 5 |
3 files changed, 34 insertions, 19 deletions
diff --git a/filesorter.cpp b/filesorter.cpp index b155a7c..a3bbf5a 100644 --- a/filesorter.cpp +++ b/filesorter.cpp @@ -33,7 +33,7 @@ bool VideoSorter::lessThan(const QModelIndex &source_left, const QModelIndex &so } //now check if we're sorting IconRow - if(source_left.column() == FileWidget::IconRow){ + if(source_left.column() == FileWidget::IconColumn){ return leftData < rightData; } diff --git a/filewidget.cpp b/filewidget.cpp index d1d7a6a..0e3c9f1 100644 --- a/filewidget.cpp +++ b/filewidget.cpp @@ -66,6 +66,7 @@ void FileWidget::setupGui(){ mFileView->setSortingEnabled(true); mFileView->setSelectionBehavior(QAbstractItemView::SelectRows); mFileView->setSelectionMode(QAbstractItemView::ExtendedSelection); + connect(mFileView, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(itemDoubleClicked(QModelIndex))); mModel = new QStandardItemModel; mProxy = new VideoSorter; @@ -110,47 +111,47 @@ void FileWidget::gatherData(){ QMimeType mime = db.mimeTypeForFile(fi); QList<QStandardItem*> fData; FileAttrs attr = NotPresent; - for(int i = 0; i < RowCount; ++i){ + for(int i = 0; i < ColumnCount; ++i){ QStandardItem *item = new QStandardItem; item->setEditable(false); - if(i == Md5Row){ + if(i == Md5Column){ item->setFont(QFont("courier new")); } fData << item; } - fData[NameRow]->setText(fi.fileName()); + fData[NameColumn]->setText(fi.fileName()); if(mime.name().startsWith("video")){ QString md5 = Helper::md5Sum(fi.absoluteFilePath()); - fData[Md5Row]->setText(md5); + fData[Md5Column]->setText(md5); int haveFile = md5Count(md5); if(haveFile){ - fData[IconRow]->setIcon(QIcon(":/huge_bra.png")); - fData[NameRow]->setForeground(greenBrush); + fData[IconColumn]->setIcon(QIcon(":/huge_bra.png")); + fData[NameColumn]->setForeground(greenBrush); attr = Present; }else{ - fData[IconRow]->setIcon(QIcon(":/chastity_belt.png")); - fData[NameRow]->setForeground(redBrush); + fData[IconColumn]->setIcon(QIcon(":/chastity_belt.png")); + fData[NameColumn]->setForeground(redBrush); attr = NotPresent; } }else if(fi.isDir()){ if(fi.fileName() == ".."){ - fData[IconRow]->setIcon(QIcon(":/up_dick.png")); + fData[IconColumn]->setIcon(QIcon(":/up_dick.png")); attr = ParentDir; }else{ - fData[IconRow]->setIcon(QIcon(":/folder.png")); + fData[IconColumn]->setIcon(QIcon(":/folder.png")); attr = Directory; } - fData[Md5Row]->setText(tr("n/a")); + fData[Md5Column]->setText(tr("n/a")); }else{ - fData[IconRow]->setIcon(QIcon(":/gaping_ass.png")); - fData[Md5Row]->setText(tr("n/a")); + fData[IconColumn]->setIcon(QIcon(":/gaping_ass.png")); + fData[Md5Column]->setText(tr("n/a")); attr = NoVideo; } - fData[MimeRow]->setText(mime.name()); + fData[MimeColumn]->setText(mime.name()); if(mime.name() == "inode/directory"){ - fData[MimeRow]->setText("directory"); + fData[MimeColumn]->setText("directory"); } - for(int i = 0; i < RowCount; ++i){ + for(int i = 0; i < ColumnCount; ++i){ fData[i]->setData(attr); } root->appendRow(fData); @@ -220,3 +221,16 @@ void FileWidget::searchFile(){ } } } + +void FileWidget::itemDoubleClicked(const QModelIndex &idx){ + if(idx.column() == NameColumn){ + int attr = idx.data(Qt::UserRole + 1).toInt(); + if(attr == ParentDir || attr == Directory){ + QDir d(mDir->text()); + d.cd(idx.data().toString()); + QString newDir = d.absolutePath(); + mDir->setText(QDir::toNativeSeparators(newDir)); + gatherData(); + } + } +} diff --git a/filewidget.h b/filewidget.h index 504a6c7..05bae9d 100644 --- a/filewidget.h +++ b/filewidget.h @@ -15,8 +15,8 @@ class FileWidget : public QWidget { Q_OBJECT public: enum FileAttrs { NotPresent = 0, Present = 1, NoVideo = 2, ParentDir = 3, Directory = 4 }; - enum { RowCount = 4 }; - enum Colums { IconRow = 0, NameRow = 1, MimeRow = 2, Md5Row = 3 }; + enum { ColumnCount = 4 }; + enum Colums { IconColumn = 0, NameColumn = 1, MimeColumn = 2, Md5Column = 3 }; explicit FileWidget(QWidget *parent = 0); ~FileWidget(); @@ -24,6 +24,7 @@ class FileWidget : public QWidget { void gatherData(); void selectDir(); void searchFile(); + void itemDoubleClicked(const QModelIndex &idx); private: void setupGui(); |