# HG changeset patch # User Hasan Yavuz Ă–ZDERYA # Date 2017-02-12 03:08:59 # Node ID e969f6ecc77913e95e80e0019d6b638607aa907b # Parent fc149fc9db94a47158531b2e91608713c89d42df separated overwrite confirmation to another function diff --git a/src/recordpanel.cpp b/src/recordpanel.cpp --- a/src/recordpanel.cpp +++ b/src/recordpanel.cpp @@ -122,7 +122,6 @@ bool RecordPanel::incrementFileName(void base += "_1"; } - // TODO: check if new name exists as well! QString suffix = fileInfo.suffix();; if (!suffix.isEmpty()) { @@ -134,31 +133,10 @@ bool RecordPanel::incrementFileName(void // check if auto generated file name exists, ask user another name if (QFile::exists(autoFileName)) { - QMessageBox mb(parentWidget()); - mb.setWindowTitle(tr("File Already Exists")); - mb.setIcon(QMessageBox::Warning); - mb.setText(tr("Auto generated file name (%1) already exists. How to continue?").arg(autoFileName)); - - auto bCancel = mb.addButton(QMessageBox::Cancel); - auto bOverwrite = mb.addButton(tr("Overwrite"), QMessageBox::DestructiveRole); - auto bSelect = mb.addButton(tr("Select Another File"), QMessageBox::YesRole); - - mb.setEscapeButton(bCancel); - - mb.exec(); - - if (mb.clickedButton() == bCancel) + if (!confirmOverwrite(autoFileName)) { return false; } - else if (mb.clickedButton() == bOverwrite) - { - selectedFile = autoFileName; - } - else // bSelect - { - selectFile(); // TODO: return false if user cancels - } } else { @@ -168,3 +146,35 @@ bool RecordPanel::incrementFileName(void ui->lbFileName->setText(selectedFile); return true; } + +bool RecordPanel::confirmOverwrite(QString fileName) +{ + // prepare message box + QMessageBox mb(parentWidget()); + mb.setWindowTitle(tr("File Already Exists")); + mb.setIcon(QMessageBox::Warning); + mb.setText(tr("Auto generated file name (%1) already exists. How to continue?").arg(fileName)); + + auto bCancel = mb.addButton(QMessageBox::Cancel); + auto bOverwrite = mb.addButton(tr("Overwrite"), QMessageBox::DestructiveRole); + auto bSelect = mb.addButton(tr("Select Another File"), QMessageBox::YesRole); + + mb.setEscapeButton(bCancel); + + // show message box + mb.exec(); + + if (mb.clickedButton() == bCancel) + { + return false; + } + else if (mb.clickedButton() == bOverwrite) + { + selectedFile = fileName; + return true; + } + else // bSelect + { + return selectFile(); + } +} diff --git a/src/recordpanel.h b/src/recordpanel.h --- a/src/recordpanel.h +++ b/src/recordpanel.h @@ -56,6 +56,19 @@ private: */ bool incrementFileName(void); + /** + * @brief Used to ask user confirmation if auto generated file + * name exists. + * + * If user confirms overwrite, `selectedFile` is set to + * `fileName`. User is also given option to select file and is + * shown a file select dialog in this case. + * + * @param fileName auto generated file name. + * @return false if user cancels + */ + bool confirmOverwrite(QString fileName); + private slots: /** * @brief Opens up the file select dialog