From c930104f93104649ad4ae5b9e23e65a3fa2c058d Mon Sep 17 00:00:00 2001 From: Arno Date: Sun, 4 Sep 2016 13:16:09 +0200 Subject: Add ProgressBar to status bar Indicate progress of gathering data in status bar Also (yes, I know, should be a separate commit) fix keyboard navigation by getting rid of ShemovCleaner::keyPressEvent and replace it with buddies in QTabWidget. --- filewidget.cpp | 11 +++++++++-- filewidget.h | 3 +++ shemovcleaner.cpp | 38 +++++++++----------------------------- shemovcleaner.h | 3 ++- 4 files changed, 23 insertions(+), 32 deletions(-) diff --git a/filewidget.cpp b/filewidget.cpp index ebafd80..c92f2df 100644 --- a/filewidget.cpp +++ b/filewidget.cpp @@ -25,6 +25,7 @@ #include #include #include +#include #include "filewidget.h" #include "filesorter.h" @@ -33,7 +34,6 @@ FileWidget::FileWidget(QWidget *parent) : QWidget(parent) { setupGui(); - gatherData(); } FileWidget::~FileWidget(){ @@ -136,10 +136,15 @@ void FileWidget::gatherData(){ QMimeDatabase db; qApp->setOverrideCursor(Qt::BusyCursor); - emit statusMessage(QString(tr("Gathering data..."))); + QString gatherMsg(tr("Gathering data: %1")); + mProgressBar->reset(); + mProgressBar->setMinimum(0); + mProgressBar->setMaximum(fl.count() - 1); + int count = 0; qApp->processEvents(); foreach(QFileInfo fi, fl){ + emit statusMessage(gatherMsg.arg(fi.fileName())); QMimeType mime = db.mimeTypeForFile(fi); QList fData; FileAttrs attr = NotPresent; @@ -200,6 +205,8 @@ void FileWidget::gatherData(){ fData[i]->setData(md5, MD5SumRole); } root->appendRow(fData); + ++count; + mProgressBar->setValue(count); } readHeaderData(); qApp->restoreOverrideCursor(); diff --git a/filewidget.h b/filewidget.h index 26e02a8..11be6c0 100644 --- a/filewidget.h +++ b/filewidget.h @@ -12,6 +12,7 @@ class QLineEdit; class QStandardItemModel; class QTreeView; +class QProgressBar; class VideoSorter; class FileDisplay; class QKeyEvent; @@ -27,6 +28,7 @@ class FileWidget : public QWidget { QTreeView *fileView() { return mFileView; } QMenuBar *menuBar() { return mMenuBar; } QToolBar *toolBar() { return mToolBar; } + void setProgressBar(QProgressBar *progressBar) { mProgressBar = progressBar; } ~FileWidget(); signals: @@ -72,6 +74,7 @@ class FileWidget : public QWidget { FileDisplay *mFileDisplay; QMenuBar *mMenuBar; QToolBar *mToolBar; + QProgressBar *mProgressBar; QString mLastDir; }; diff --git a/shemovcleaner.cpp b/shemovcleaner.cpp index f2cdbd2..dc45fc6 100644 --- a/shemovcleaner.cpp +++ b/shemovcleaner.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include "shemovcleaner.h" #include "torrentwidget.h" @@ -25,15 +26,17 @@ ShemovCleaner::ShemovCleaner(QWidget *parent, Qt::WindowFlags f) : QMainWindow(p setMinimumWidth(800); setMinimumHeight(600); openDatabase(); + createStatusBar(); mTorrentTab = new TorrentWidget; mTab = new QTabWidget; mFileTab = new FileWidget; - mTab->addTab(mTorrentTab, tr("Torrents")); - mTab->addTab(mFileTab, tr("Files")); + mFileTab->setProgressBar(mProgressBar); + mFileTab->gatherData(); + mTab->addTab(mTorrentTab, tr("&Torrents")); + mTab->addTab(mFileTab, tr("Fi&les")); setCentralWidget(mTab); - createStatusBar(); createActions(); connect(mTorrentTab, SIGNAL(statusMessage(QString)), this, SLOT(statusBarMessage(QString))); connect(mTorrentTab, SIGNAL(selectionCountChanged(QString)), this, SLOT(setSelectionCount(QString))); @@ -83,32 +86,6 @@ void ShemovCleaner::closeEvent(QCloseEvent *e){ QMainWindow::closeEvent(e); } -void ShemovCleaner::keyPressEvent(QKeyEvent *e){ - //Yes, this could be much more terse, but this is readable! - if(e->key() == Qt::Key_Left && (e->modifiers() & Qt::AltModifier)){ - int curTabIdx = mTab->currentIndex(); - if(curTabIdx - 1 < 0){ - curTabIdx = mTab->count() - 1; - }else{ - --curTabIdx; - } - mTab->setCurrentIndex(curTabIdx); - e->accept(); - return; - } - if(e->key() == Qt::Key_Right && (e->modifiers() & Qt::AltModifier)){ - int curTabIdx = mTab->currentIndex(); - if(curTabIdx + 1 >= mTab->count()){ - curTabIdx = 0; - }else{ - ++curTabIdx; - } - mTab->setCurrentIndex(curTabIdx); - e->accept(); - return; - } -} - void ShemovCleaner::createStatusBar(){ QLabel *l1 = new QLabel(tr("Sel.")); mSelected = new QLabel("000/000"); @@ -116,6 +93,9 @@ void ShemovCleaner::createStatusBar(){ QLabel *l2 = new QLabel(tr("Dur.")); mDuration = new QLabel("00:00:00"); mDuration->setFrameStyle(QFrame::Panel | QFrame::Sunken); + mProgressBar = new QProgressBar; + mProgressBar->setMaximumWidth(150); + statusBar()->addPermanentWidget(mProgressBar); statusBar()->addPermanentWidget(l1); statusBar()->addPermanentWidget(mSelected); statusBar()->addPermanentWidget(l2); diff --git a/shemovcleaner.h b/shemovcleaner.h index 7ffdec5..9828e32 100644 --- a/shemovcleaner.h +++ b/shemovcleaner.h @@ -9,6 +9,7 @@ class FileWidget; class QLabel; class QAction; class QKeyEvent; +class QProgressBar; class ShemovCleaner : public QMainWindow { Q_OBJECT @@ -25,7 +26,6 @@ class ShemovCleaner : public QMainWindow { protected: virtual void closeEvent(QCloseEvent *e); - virtual void keyPressEvent(QKeyEvent *e); private: void createStatusBar(); @@ -34,6 +34,7 @@ class ShemovCleaner : public QMainWindow { QAction *createSeparator(); QLabel *mSelected; QLabel *mDuration; + QProgressBar *mProgressBar; QTabWidget *mTab; TorrentWidget *mTorrentTab; FileWidget *mFileTab; -- cgit v1.2.3-70-g09d2