Files
        @ 24c9f6ea4d9d
    
        
              Branch filter: 
        
    Location: tempo-plotter/src/recordpanel.cpp
        
            
            24c9f6ea4d9d
            2.9 KiB
            text/x-c++hdr
        
        
    
    implemented file selection and auto incrementing
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119  | /*
  Copyright © 2017 Hasan Yavuz Özderya
  This file is part of serialplot.
  serialplot is free software: you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation, either version 3 of the License, or
  (at your option) any later version.
  serialplot is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.
  You should have received a copy of the GNU General Public License
  along with serialplot.  If not, see <http://www.gnu.org/licenses/>.
*/
#include "recordpanel.h"
#include "ui_recordpanel.h"
#include <QIcon>
#include <QFile>
#include <QFileInfo>
#include <QFileDialog>
#include <QRegularExpression>
#include <QtDebug>
RecordPanel::RecordPanel(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::RecordPanel),
    recordToolBar(tr("Record Toolbar")),
    recordAction(QIcon::fromTheme("media-record"), tr("Record"), this)
{
    ui->setupUi(this);
    recordToolBar.setObjectName("tbRecord");
    recordAction.setCheckable(true);
    recordToolBar.addAction(&recordAction);
    ui->pbRecord->setDefaultAction(&recordAction);
    connect(ui->pbBrowse, &QPushButton::clicked,
            this, &RecordPanel::selectFile);
    connect(&recordAction, &QAction::triggered,
            this, &RecordPanel::record);
}
RecordPanel::~RecordPanel()
{
    delete ui;
}
QToolBar* RecordPanel::toolbar()
{
    return &recordToolBar;
}
bool RecordPanel::selectFile()
{
    QString fileName = QFileDialog::getSaveFileName(
        parentWidget(), tr("Select recording file"));
    if (fileName.isEmpty())
    {
        return false;
    }
    else
    {
        selectedFile = fileName;
        ui->lbFileName->setText(selectedFile);
        return true;
    }
}
void RecordPanel::record(bool start)
{
    if (selectedFile.isEmpty() && !selectFile())
    {
        return;
    }
    if (QFile::exists(selectedFile))
    {
        if (ui->cbAutoIncrement->isChecked())
        {
            // TODO: should we increment even if user selected to replace?
            incrementFileName();
        }
    }
    // TODO: implement recording
}
void RecordPanel::incrementFileName(void) {
    QFileInfo fileInfo(selectedFile);
    QString base = fileInfo.completeBaseName();
    QRegularExpression regex("(.*?)(\\d+)(?!.*\\d)(.*)");
    auto match = regex.match(base);
    if (match.hasMatch())
    {
        bool ok;
        int fileNum = match.captured(2).toInt(&ok);
        base = match.captured(1) + QString::number(fileNum + 1) + match.captured(3);
    }
    else
    {
        base += "_1";
    }
    // TODO: check if new name exists as well!
    selectedFile = fileInfo.path() + "/" + base + fileInfo.suffix();
    ui->lbFileName->setText(selectedFile);
}
 |