buffer is being written to database.
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));
QMessageBox::Yes, QMessageBox::No, QMessageBox::NoButton ) == QMessageBox::No) {
return;
}
- FileUtil fileUtil(this);
FilePathObject *fpo = 0;
try
{
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));
#include "dbobjectdialog.h"
#include "../db/dbmediaimagecontainer.h"
+class FileUtil;
+class QProgressDialog;
+
class MediaImagePathMainDialog : public DbObjectDialog
{
Q_OBJECT
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
/* 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()));
//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());
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();
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();
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);