summaryrefslogtreecommitdiffstats
path: root/filewidget.cpp
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2016-09-04 03:32:56 +0200
committerArno <arno@disconnect.de>2016-09-04 03:32:56 +0200
commit8945f641f468e373b4d8d907bcc2f5be2922962e (patch)
tree93b388c81a31abbc9573603e43017098a78853ba /filewidget.cpp
parente11e257f88726fd04774bf0ca4584d1678bc7f9b (diff)
downloadShemovCleaner-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.cpp34
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();