diff options
Diffstat (limited to 'gui/options-dialog.cpp')
-rw-r--r-- | gui/options-dialog.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/gui/options-dialog.cpp b/gui/options-dialog.cpp index 3b54ae9a..9dcb7879 100644 --- a/gui/options-dialog.cpp +++ b/gui/options-dialog.cpp @@ -11,6 +11,7 @@ #include <QPushButton> #include <QLayout> #include <QDialog> +#include <QFileDialog> static QString kopts_to_string(const key_opts& kopts) { @@ -72,6 +73,9 @@ OptionsDialog::OptionsDialog(std::function<void(bool)> pause_keybindings) : tie_setting(main.center_method, ui.center_method); + tie_setting(main.tracklogging_enabled, ui.tracklogging_enabled); + tie_setting(main.tracklogging_filename, ui.tracklogging_filenameedit); + struct tmp { key_opts& opt; @@ -102,6 +106,8 @@ OptionsDialog::OptionsDialog(std::function<void(bool)> pause_keybindings) : connect(val.button, &QPushButton::pressed, this, [=]() -> void { bind_key(val.opt, val.label); }); } } + + connect(ui.tracklogging_fileselectbtn, SIGNAL(clicked()), this, SLOT(browse_datalogging_file())); } void OptionsDialog::bind_key(key_opts& kopts, QLabel* label) @@ -163,3 +169,23 @@ void OptionsDialog::doCancel() close(); } +void OptionsDialog::browse_datalogging_file() +{ + QString filename = ui.tracklogging_filenameedit->text(); + if (filename.isEmpty()) + filename = QDir::currentPath(); + /* Sometimes this function freezes the app before opening the dialog. + Might be related to https://forum.qt.io/topic/49209/qfiledialog-getopenfilename-hangs-in-windows-when-using-the-native-dialog/8 + and be a known problem. Possible solution is to use the QFileDialog::DontUseNativeDialog flag. + Since the freeze is apparently random, I'm not sure it helped. + */ + QString newfilename = QFileDialog::getSaveFileName(this, tr("Select Filename"), filename, tr("CSV File (*.csv)"), nullptr, QFileDialog::DontUseNativeDialog); + if (!newfilename.isEmpty()) + ui.tracklogging_filenameedit->setText(newfilename); +} + +void OptionsDialog::update_widgets_states(bool tracker_is_running) +{ + ui.tracklogging_enabled->setEnabled(!tracker_is_running); + ui.tracklogging_fileselectbtn->setEnabled(!tracker_is_running); +}
\ No newline at end of file |