diff options
author | Arno <arno@disconnect.de> | 2016-09-04 03:32:56 +0200 |
---|---|---|
committer | Arno <arno@disconnect.de> | 2016-09-04 03:32:56 +0200 |
commit | 8945f641f468e373b4d8d907bcc2f5be2922962e (patch) | |
tree | 93b388c81a31abbc9573603e43017098a78853ba /filewidget.cpp | |
parent | e11e257f88726fd04774bf0ca4584d1678bc7f9b (diff) | |
download | ShemovCleaner-8945f641f468e373b4d8d907bcc2f5be2922962e.tar.gz ShemovCleaner-8945f641f468e373b4d8d907bcc2f5be2922962e.tar.bz2 ShemovCleaner-8945f641f468e373b4d8d907bcc2f5be2922962e.zip |
Display duration and num. of selected Files
When selecting files in FileWidget, calculate the total duration and
display it in the status bar.
Also count the selected Files and show them. Update status bar on
changing tabs.
Diffstat (limited to 'filewidget.cpp')
-rw-r--r-- | filewidget.cpp | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/filewidget.cpp b/filewidget.cpp index aab6fe1..0a2bbbb 100644 --- a/filewidget.cpp +++ b/filewidget.cpp @@ -19,6 +19,9 @@ #include <QHeaderView> #include <QApplication> #include <QCursor> +#include <QJsonObject> +#include <QJsonDocument> +#include <QItemSelectionModel> #include "filewidget.h" #include "filesorter.h" @@ -90,6 +93,8 @@ void FileWidget::setupGui(){ mainLayout->addLayout(topL); mainLayout->addWidget(mFileView); setLayout(mainLayout); + + connect(mFileView->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), this, SLOT(fileSelectionChanged(QItemSelection,QItemSelection))); } void FileWidget::selectDir(){ @@ -103,7 +108,7 @@ void FileWidget::gatherData(){ 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")); + mModel->setHorizontalHeaderLabels(QStringList() << QChar(0x26A7) << tr("Name") << tr("MIME") << tr("Duration") << tr("MD5")); QBrush redBrush(Qt::red); QBrush greenBrush(Qt::darkGreen); @@ -114,6 +119,7 @@ void FileWidget::gatherData(){ QMimeType mime = db.mimeTypeForFile(fi); QList<QStandardItem*> fData; FileAttrs attr = NotPresent; + Helper::Duration dur; for(int i = 0; i < ColumnCount; ++i){ QStandardItem *item = new QStandardItem; item->setEditable(false); @@ -124,6 +130,8 @@ void FileWidget::gatherData(){ } fData[NameColumn]->setText(fi.fileName()); QString md5(tr("n/a")); + QString duration(tr("n/a")); + qint64 seconds = 0; if(mime.name().startsWith("video")){ md5 = Helper::md5Sum(fi.absoluteFilePath()); fData[Md5Column]->setText(md5); @@ -137,6 +145,12 @@ void FileWidget::gatherData(){ fData[NameColumn]->setForeground(redBrush); attr = NotPresent; } + QJsonDocument jDoc = Helper::ffpmegData(fi.absoluteFilePath()); + QJsonObject jObj = jDoc.object(); + QJsonValue durationV = jObj["format"].toObject()["duration"]; + seconds = durationV.toVariant().toDouble(); + dur = Helper::Duration(seconds); + duration = dur.toString(); }else if(fi.isDir()){ if(fi.fileName() == ".."){ fData[IconColumn]->setIcon(QIcon(":/up_dick.png")); @@ -149,6 +163,8 @@ void FileWidget::gatherData(){ fData[IconColumn]->setIcon(QIcon(":/gaping_ass.png")); attr = NoVideo; } + fData[DurationColumn]->setText(duration); + fData[DurationColumn]->setData(seconds, SecondsRole); fData[Md5Column]->setText(md5); fData[MimeColumn]->setText(mime.name()); if(mime.name() == "inode/directory"){ @@ -227,6 +243,22 @@ void FileWidget::searchFile(){ } } +void FileWidget::fileSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected){ + Q_UNUSED(selected); + Q_UNUSED(deselected); + int count = mFileView->selectionModel()->selectedRows().count(); + int total = mModel->rowCount(); + QString msg = QString("%1/%2").arg(QString::number(count)).arg(QString::number(total)); + emit selectionCountChanged(msg); + QModelIndexList idxl = mFileView->selectionModel()->selectedRows(DurationColumn); + qint64 seconds = 0; + foreach(QModelIndex idx, idxl){ + seconds += idx.data(SecondsRole).toLongLong(); + } + Helper::Duration dur(seconds); + emit durationChanged(dur.toString()); +} + void FileWidget::itemDoubleClicked(const QModelIndex &idx){ if(idx.column() == NameColumn){ int attr = idx.data(AttrsRole).toInt(); |