# HG changeset patch # User Hasan Yavuz Ă–ZDERYA # Date 2017-02-11 02:38:21 # Node ID fc149fc9db94a47158531b2e91608713c89d42df # Parent 24c9f6ea4d9d25a9bab81f44c79a6c65a9e98b02 ask user confirmation if auto generated file name exists diff --git a/src/recordpanel.cpp b/src/recordpanel.cpp --- a/src/recordpanel.cpp +++ b/src/recordpanel.cpp @@ -23,6 +23,7 @@ #include #include #include +#include #include #include @@ -34,6 +35,8 @@ RecordPanel::RecordPanel(QWidget *parent recordToolBar(tr("Record Toolbar")), recordAction(QIcon::fromTheme("media-record"), tr("Record"), this) { + overwriteSelected = false; + ui->setupUi(this); recordToolBar.setObjectName("tbRecord"); @@ -71,11 +74,11 @@ bool RecordPanel::selectFile() { selectedFile = fileName; ui->lbFileName->setText(selectedFile); + overwriteSelected = QFile::exists(fileName); return true; } } - void RecordPanel::record(bool start) { if (selectedFile.isEmpty() && !selectFile()) @@ -83,19 +86,25 @@ void RecordPanel::record(bool start) return; } - if (QFile::exists(selectedFile)) + if (!overwriteSelected && QFile::exists(selectedFile)) { if (ui->cbAutoIncrement->isChecked()) { // TODO: should we increment even if user selected to replace? incrementFileName(); } + else + { + selectFile(); + } } + overwriteSelected = false; + // TODO: implement recording } -void RecordPanel::incrementFileName(void) { +bool RecordPanel::incrementFileName(void) { QFileInfo fileInfo(selectedFile); QString base = fileInfo.completeBaseName(); @@ -114,6 +123,48 @@ void RecordPanel::incrementFileName(void } // TODO: check if new name exists as well! - selectedFile = fileInfo.path() + "/" + base + fileInfo.suffix(); + QString suffix = fileInfo.suffix();; + if (!suffix.isEmpty()) + { + suffix = "." + suffix; + } + + QString autoFileName = fileInfo.path() + "/" + base + suffix; + + // 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) + { + return false; + } + else if (mb.clickedButton() == bOverwrite) + { + selectedFile = autoFileName; + } + else // bSelect + { + selectFile(); // TODO: return false if user cancels + } + } + else + { + selectedFile = autoFileName; + } + ui->lbFileName->setText(selectedFile); + return true; } diff --git a/src/recordpanel.h b/src/recordpanel.h --- a/src/recordpanel.h +++ b/src/recordpanel.h @@ -44,14 +44,17 @@ private: QToolBar recordToolBar; QAction recordAction; QString selectedFile; + bool overwriteSelected; /** * @brief Increments the file name. * * If file name doesn't have a number at the end of it, a number is appended * with underscore starting from 1. + * + * @return false if user cancels */ - void incrementFileName(void); + bool incrementFileName(void); private slots: /**