diff --git a/src/recordpanel.h b/src/recordpanel.h new file mode 100644 --- /dev/null +++ b/src/recordpanel.h @@ -0,0 +1,117 @@ +/* + 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 . +*/ + +#ifndef RECORDPANEL_H +#define RECORDPANEL_H + +#include +#include +#include +#include + +#include "datarecorder.h" +#include "channelmanager.h" + +namespace Ui { +class RecordPanel; +} + +class RecordPanel : public QWidget +{ + Q_OBJECT + +public: + explicit RecordPanel(DataRecorder* recorder, ChannelManager* channelMan, + QWidget* parent = 0); + ~RecordPanel(); + + QToolBar* toolbar(); + + bool isRecording(); + bool recordPaused(); + + /// Stores settings into a `QSettings` + void saveSettings(QSettings* settings); + /// Loads settings from a `QSettings`. + void loadSettings(QSettings* settings); + +signals: + void recordStarted(); + void recordStopped(); + void recordPausedChanged(bool enabled); + +public slots: + /// Must be called when port is closed + void onPortClose(); + +private: + Ui::RecordPanel *ui; + QToolBar recordToolBar; + QAction recordAction; + QString selectedFile; + bool overwriteSelected; + DataRecorder* _recorder; + ChannelManager* _channelMan; + + /** + * @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 + */ + 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); + + void startRecording(void); + void stopRecording(void); + + /// Returns separator text from ui. "\t" is converted to TAB + /// character. + QString getSeparator() const; + +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 onRecord(bool start); + +}; + +#endif // RECORDPANEL_H