Changeset - 1f31600a1b32
[Not reviewed]
recording
0 2 0
Hasan Yavuz Ă–ZDERYA - 9 years ago 2017-02-12 03:23:19
hy@ozderya.net
ask overwrite confirmation before asking new file selection
2 files changed with 42 insertions and 12 deletions:
0 comments (0 inline, 0 general)
src/recordpanel.cpp
Show inline comments
 
@@ -45,13 +45,13 @@ RecordPanel::RecordPanel(QWidget *parent
 
    recordToolBar.addAction(&recordAction);
 
    ui->pbRecord->setDefaultAction(&recordAction);
 

	
 
    connect(ui->pbBrowse, &QPushButton::clicked,
 
            this, &RecordPanel::selectFile);
 
    connect(&recordAction, &QAction::triggered,
 
            this, &RecordPanel::record);
 
            this, &RecordPanel::onRecord);
 
}
 

	
 
RecordPanel::~RecordPanel()
 
{
 
    delete ui;
 
}
 
@@ -76,38 +76,53 @@ bool RecordPanel::selectFile()
 
        ui->lbFileName->setText(selectedFile);
 
        overwriteSelected = QFile::exists(fileName);
 
        return true;
 
    }
 
}
 

	
 
void RecordPanel::record(bool start)
 
void RecordPanel::onRecord(bool start)
 
{
 
    if (!start)
 
    {
 
        stopRecording();
 
        return;
 
    }
 

	
 
    // check file name
 
    bool canceled = false;
 
    if (selectedFile.isEmpty() && !selectFile())
 
    {
 
        return;
 
        canceled = true;
 
    }
 

	
 
    if (!overwriteSelected && QFile::exists(selectedFile))
 
    {
 
        if (ui->cbAutoIncrement->isChecked())
 
        {
 
            // TODO: should we increment even if user selected to replace?
 
            incrementFileName();
 
            canceled = !incrementFileName();
 
        }
 
        else
 
        {
 
            selectFile();
 
            canceled = !confirmOverwrite(selectedFile);
 
        }
 
    }
 

	
 
    overwriteSelected = false;
 

	
 
    // TODO: implement recording
 
    if (canceled)
 
    {
 
        recordAction.setChecked(false);
 
    }
 
    else
 
    {
 
        startRecording();
 
    }
 
}
 

	
 
bool RecordPanel::incrementFileName(void) {
 
bool RecordPanel::incrementFileName(void)
 
{
 
    QFileInfo fileInfo(selectedFile);
 

	
 
    QString base = fileInfo.completeBaseName();
 
    QRegularExpression regex("(.*?)(\\d+)(?!.*\\d)(.*)");
 
    auto match = regex.match(base);
 

	
 
@@ -150,17 +165,17 @@ bool RecordPanel::incrementFileName(void
 
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));
 
    mb.setText(tr("File (%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.addButton(tr("Select Another File"), QMessageBox::YesRole);
 

	
 
    mb.setEscapeButton(bCancel);
 

	
 
    // show message box
 
    mb.exec();
 

	
 
@@ -170,11 +185,23 @@ bool RecordPanel::confirmOverwrite(QStri
 
    }
 
    else if (mb.clickedButton() == bOverwrite)
 
    {
 
        selectedFile = fileName;
 
        return true;
 
    }
 
    else                    // bSelect
 
    else                    // select button
 
    {
 
        return selectFile();
 
    }
 
}
 

	
 
void RecordPanel::startRecording(void)
 
{
 
    // TODO
 
    qDebug() << "start recording";
 
}
 

	
 
void RecordPanel::stopRecording(void)
 
{
 
    // TODO
 
    qDebug() << "stop recording";
 
}
src/recordpanel.h
Show inline comments
 
@@ -66,22 +66,25 @@ private:
 
     *
 
     * @param fileName auto generated file name.
 
     * @return false if user cancels
 
     */
 
    bool confirmOverwrite(QString fileName);
 

	
 
    void startRecording(void);
 
    void stopRecording(void);
 

	
 
private slots:
 
    /**
 
     * @brief Opens up the file select dialog
 
     *
 
     * If you cancel the selection operation, currently selected file is not
 
     * changed.
 
     *
 
     * @return true if file selected, false if user cancels
 
     */
 
    bool selectFile();
 

	
 
    void record(bool start);
 
    void onRecord(bool start);
 

	
 
};
 

	
 
#endif // RECORDPANEL_H
0 comments (0 inline, 0 general)