Added signaling from FileUtil to MediaImagePathMainDiialog when the scan
authorMikko Keinänen <mikko.keinanen@gmail.com>
Sun, 28 Nov 2010 00:10:47 +0000 (02:10 +0200)
committerMikko Keinänen <mikko.keinanen@gmail.com>
Sun, 28 Nov 2010 00:10:47 +0000 (02:10 +0200)
buffer is being written to database.

src/dialogs/mediaimagepathmaindialog.cpp
src/dialogs/mediaimagepathmaindialog.h
src/utils/fileutil.cpp
src/utils/fileutil.h

index 42494e6..31c73f5 100644 (file)
@@ -42,16 +42,46 @@ MediaImagePathMainDialog::MediaImagePathMainDialog(QWidget *parent)
     hiddenColumns << DbFilePath::FilePath_SetupId;
     hideColumns();
 
+    fileUtil = new FileUtil(this);
+
+    initProgressDialog();
     // do not move to parent class:
     connectSignals();
 }
 
+void MediaImagePathMainDialog::initProgressDialog()
+{
+    progressDialog = new QProgressDialog(this);
+    progressDialog->setWindowTitle(tr("Scanning files"));
+    progressDialog->setCancelButtonText(tr("Abort"));
+    progressDialog->setWindowModality(Qt::WindowModal);
+}
+
 void MediaImagePathMainDialog::connectSignals()
 {
     DbObjectDialog::connectSignals();
     connect(scanButton, SIGNAL(clicked()), this, SLOT(beginScanFilePath()));
+    connect(fileUtil, SIGNAL(dbUpdateFinished()), this, SLOT(hideDbUpdating()));
+    connect(fileUtil, SIGNAL(dbUpdateInProgress()), this, SLOT(showDbUpdating()));
 }
 
+void MediaImagePathMainDialog::showDbUpdating()
+{
+    qDebug() << "DB updating";
+    progressDialog->setWindowTitle(tr("Updating DB... please wait!"));
+    progressDialog->setEnabled(false);
+    // TODO
+}
+
+void MediaImagePathMainDialog::hideDbUpdating()
+{
+    qDebug() << "DB update finished";
+    progressDialog->setEnabled(true);
+    progressDialog->setWindowTitle(tr("Scanning files"));
+    // TODO
+}
+
+
 void MediaImagePathMainDialog::initEditDialog()
 {
     nameDialog = new MediaImagePathDialog(this, dynamic_cast<FilePathObject*>(dbObject));
@@ -70,7 +100,6 @@ void MediaImagePathMainDialog::beginScanFilePath()
         QMessageBox::Yes, QMessageBox::No, QMessageBox::NoButton ) == QMessageBox::No) {
             return;
         }
-    FileUtil fileUtil(this);
     FilePathObject *fpo = 0;
     try
     {
@@ -83,15 +112,12 @@ void MediaImagePathMainDialog::beginScanFilePath()
 
         dbMediaImageContainer->removeFromFilePath(fpo->getId());
 
-        QProgressDialog progressDialog(this);
-        progressDialog.setWindowTitle("Scanning files...");
-        progressDialog.setCancelButtonText("Abort");
-        progressDialog.setWindowModality(Qt::WindowModal);
-        progressDialog.show();
+        progressDialog->show();
+        progressDialog->setEnabled(true);
 
         setUIEnabled(false);
-        int count = fileUtil.scanFilePath(fpo, l, dbMediaImageContainer, progressDialog);
-        progressDialog.hide();
+        int count = fileUtil->scanFilePath(fpo, l, dbMediaImageContainer, progressDialog);
+        progressDialog->hide();
 
         QMessageBox msgBox;
         msgBox.setText(tr("Scanned %1 files to database.").arg(count));
index 1f11d61..25cad5d 100644 (file)
@@ -23,6 +23,9 @@
 #include "dbobjectdialog.h"
 #include "../db/dbmediaimagecontainer.h"
 
+class FileUtil;
+class QProgressDialog;
+
 class MediaImagePathMainDialog : public DbObjectDialog
 {
     Q_OBJECT
@@ -40,13 +43,18 @@ protected:
 
 private slots:
     void beginScanFilePath();
+    void showDbUpdating();
+    void hideDbUpdating();
 
 private:
     QPushButton *scanButton;
     DbMediaImageContainer *dbMediaImageContainer;
+    FileUtil *fileUtil;
+    QProgressDialog *progressDialog;
 
     //  QString and QStringList are implicitly shared
     void scanFilePath(const QString path, const QStringList filters);
+    void initProgressDialog();
 };
 
 #endif // MEDIAIMAGEPATHMAINDIALOG_H
index f18244d..80874bc 100644 (file)
@@ -46,7 +46,7 @@ FileUtil::~FileUtil()
 /* Throws EmuFrontException */
 int FileUtil::scanFilePath(FilePathObject *fp,
     QStringList filters, DbMediaImageContainer *dbMic,
-    QProgressDialog &progressDialog)
+    QProgressDialog *progressDialog)
 {
     if (!fp->getSetup()){
         throw EmuFrontException(tr("Setup not available with %1.").arg(fp->getName()));
@@ -78,12 +78,12 @@ int FileUtil::scanFilePath(FilePathObject *fp,
     //qDebug() << "We have " << list.count() << " files to go through.";
     QList<MediaImageContainer*> containers;
     try {
-        progressDialog.setMinimum(0);
-        progressDialog.setMaximum(list.size());
+        progressDialog->setMinimum(0);
+        progressDialog->setMaximum(list.size());
         for (int i = 0; i < list.size(); ++i)
         {
-            progressDialog.setValue(i);
-            if (progressDialog.wasCanceled())
+            progressDialog->setValue(i);
+            if (progressDialog->wasCanceled())
                 break;
             QFileInfo fileInfo = list.at(i);
             //qDebug() << QString("%1 %2").arg(fileInfo.size(), 10).arg(fileInfo.absoluteFilePath());
@@ -109,7 +109,9 @@ int FileUtil::scanFilePath(FilePathObject *fp,
 
                 if (containers.count() >= MIC_BUFFER_SIZE)  {
                     //qDebug() << "We have " << containers.count() << " containers .. storing to db.";
+                    emit dbUpdateInProgress();
                     dbMic->storeContainers(containers, fp);
+                    emit dbUpdateFinished();
                     qDeleteAll(containers);
                     containers.clear();
                     //qDebug() << "containers now: " << containers.count();
@@ -120,10 +122,12 @@ int FileUtil::scanFilePath(FilePathObject *fp,
                 qDebug() << "No files from container " << fileInfo.absoluteFilePath();
             }
         }
-        progressDialog.setValue(list.size());
+        progressDialog->setValue(list.size());
         if (containers.count() > 0) {
             //qDebug() << "Storing the rest " << containers.count() << " containers.";
+            emit dbUpdateInProgress();
             dbMic->storeContainers(containers, fp);
+            emit dbUpdateFinished();
             qDeleteAll(containers);
             containers.clear();
 
index 72124e9..c4693fe 100644 (file)
@@ -33,12 +33,17 @@ class DbMediaImageContainer;
 class UnzipHelper;
 class QProgressDialog;
 
-class FileUtil : QObject
+class FileUtil : public QObject
 {
+    Q_OBJECT
 public:
     FileUtil(QObject *parent);
     ~FileUtil();
-    int scanFilePath(FilePathObject *fpo, const QStringList filters, DbMediaImageContainer *mic, QProgressDialog &);
+    int scanFilePath(FilePathObject *fpo, const QStringList filters, DbMediaImageContainer *mic, QProgressDialog *);
+signals:
+    void dbUpdateInProgress();
+    void dbUpdateFinished();
+
 private:
     char *buf;
     quint32 readCrc32(QString filePath);