Skip to content

Commit

Permalink
Added progress notifcation and abort ability to speechmanager cache
Browse files Browse the repository at this point in the history
update/creation
  • Loading branch information
oblivioncth committed Sep 22, 2019
1 parent 668fb25 commit 109d20b
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 39 deletions.
97 changes: 58 additions & 39 deletions src/mainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -733,8 +733,21 @@ void MainWindow::cacheSubRoutine(bool existing)
QStringList invalidBSCPaths;
QStringList invalidReasons;

bool aborted = false;

QProgressDialog conversionProgress(MSG_CACHE_SCAN_IN_PROGRESS, MSG_CACHE_SCAN_ABORT, 0, bscList.length(), this);
conversionProgress.setWindowModality(Qt::WindowModal);

for(int i = 0; i < bscList.length(); i++)
{
conversionProgress.setValue(i);

if(conversionProgress.wasCanceled())
{
aborted = true;
break;
}

QString currentFileName = QFileInfo(bscList.value(i)).baseName();

if(!currentFileName.contains(' '))
Expand Down Expand Up @@ -765,56 +778,62 @@ void MainWindow::cacheSubRoutine(bool existing)
invalidReasons.append(MSG_CACHE_INV_FILES_CAT_SPACE);
}
}
conversionProgress.setValue(bscList.length()); // Finish progress dialog

cache.deinterpretData();
Qx::IO::IOOpReport writeReport = Qx::IO::writeBytesAsFile(cacheFile, cache.rebuildRawFile(), true);
if(!aborted)
{
cache.deinterpretData();
Qx::IO::IOOpReport writeReport = Qx::IO::writeBytesAsFile(cacheFile, cache.rebuildRawFile(), true);

QMessageBox cacheStatus;
cacheStatus.setStandardButtons(QMessageBox::Ok);
cacheStatus.setDefaultButton(QMessageBox::Ok);
cacheStatus.setIcon(QMessageBox::Information);
QMessageBox cacheStatus;
cacheStatus.setStandardButtons(QMessageBox::Ok);
cacheStatus.setDefaultButton(QMessageBox::Ok);
cacheStatus.setIcon(QMessageBox::Information);

if(!writeReport.wasSuccessful())
{
execIOReport(writeReport);
if(!writeReport.wasSuccessful())
{
execIOReport(writeReport);

cacheStatus.setIcon(QMessageBox::Critical);
cacheStatus.setText(MSG_CACHE_FAIL.arg(QDir::toNativeSeparators(cachePath)));
}
else if(existing)
{
if(cache.getInterpretedCacheListV().length() == originalLength)
cacheStatus.setText(MSG_CACHE_UP_TO_DATE);
else if(cache.getInterpretedCacheListV().length() == originalLength + bscList.length())
cacheStatus.setText(MSG_CACHE_UPDATED_TXT);
else if(cache.getInterpretedCacheListV().length() > originalLength && cache.getInterpretedCacheListV().length() < originalLength + bscList.length())
cacheStatus.setIcon(QMessageBox::Critical);
cacheStatus.setText(MSG_CACHE_FAIL.arg(QDir::toNativeSeparators(cachePath)));
}
else if(existing)
{
cacheStatus.setText(MSG_CACHE_UPDATED_TXT);
cacheStatus.setInformativeText(MSG_CACHE_UPDATED_INFO_TXT);
if(cache.getInterpretedCacheListV().length() == originalLength)
cacheStatus.setText(MSG_CACHE_UP_TO_DATE);
else if(cache.getInterpretedCacheListV().length() == originalLength + bscList.length())
cacheStatus.setText(MSG_CACHE_UPDATED_TXT);
else if(cache.getInterpretedCacheListV().length() > originalLength && cache.getInterpretedCacheListV().length() < originalLength + bscList.length())
{
cacheStatus.setText(MSG_CACHE_UPDATED_TXT);
cacheStatus.setInformativeText(MSG_CACHE_UPDATED_INFO_TXT);
}
else
throw std::out_of_range("Updated Speechmanager Cache entry count is unexpected!");
}
else
throw std::out_of_range("Updated Speechmanager Cache entry count is unexpected!");
}
else
cacheStatus.setText(MSG_CACHE_NEW_SUCCESS_TXT);
cacheStatus.setText(MSG_CACHE_NEW_SUCCESS_TXT);

if(invalidBSCPaths.count() > 0)
{
QString invalidReport = MSG_CACHE_INV_FILES_DETAILS;
QString infoText = cacheStatus.informativeText();
if(invalidBSCPaths.count() > 0)
{
QString invalidReport = MSG_CACHE_INV_FILES_DETAILS;
QString infoText = cacheStatus.informativeText();

for(int i = 0; i < invalidBSCPaths.count(); i++)
invalidReport += "\n- " + invalidBSCPaths.value(i) + " " + invalidReasons.value(i);
for(int i = 0; i < invalidBSCPaths.count(); i++)
invalidReport += "\n- " + invalidBSCPaths.value(i) + " " + invalidReasons.value(i);

cacheStatus.setIcon(QMessageBox::Warning);
if(infoText != "")
infoText += " ";
cacheStatus.setInformativeText(infoText + MSG_CACHE_INV_FILES_INFO);
cacheStatus.setDetailedText(invalidReport);
}
cacheStatus.setIcon(QMessageBox::Warning);
if(infoText != "")
infoText += " ";
cacheStatus.setInformativeText(infoText + MSG_CACHE_INV_FILES_INFO);
cacheStatus.setDetailedText(invalidReport);
}

QApplication::beep();
cacheStatus.exec();
QApplication::beep();
cacheStatus.exec();
}
else
QMessageBox::critical(this, QApplication::applicationName(), MSG_CACHE_SCAN_ABORTED, QMessageBox::Ok, QMessageBox::Ok);
}
else
execIOReport(folderScanReport);
Expand Down
4 changes: 4 additions & 0 deletions src/mainwindow.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,10 @@ class MainWindow : public QMainWindow
static inline const QString MENU_CACHE_NEW_TITLE = "Enter Speechmanager Cache Destina;tion";
static inline const QString MSG_CACHE_NEW_SUCCESS_TXT = "The Speechmanager Cache was created successfully.";

static inline const QString MSG_CACHE_SCAN_IN_PROGRESS = "Scanning BSC files...";
static inline const QString MSG_CACHE_SCAN_ABORT = "Abort";
static inline const QString MSG_CACHE_SCAN_ABORTED = "Speechmanager cache update aborted by user.";

static inline const QString MENU_SMF_FILE_FILTER = "SMF Audio (*." + SMF::FILE_EXT + ")";
static inline const QString MENU_WAV_FILE_FILTER = "WAVE Audio (*." + WAV::FILE_EXT + ")";

Expand Down

0 comments on commit 109d20b

Please sign in to comment.