use native OS dialogs by default for load/save

This commit is contained in:
Jan Käberich 2024-11-03 12:54:16 +01:00
parent fc717a8f88
commit 64a7ddc455
25 changed files with 83 additions and 41 deletions

View file

@ -68,7 +68,7 @@ PreferencesDialog::PreferencesDialog(Preferences *pref, QWidget *parent) :
ui->StartupStack->setCurrentWidget(ui->StartupPageSetupFile);
});
connect(ui->StartupBrowse, &QPushButton::clicked, [=](){
ui->StartupSetupFile->setText(QFileDialog::getOpenFileName(nullptr, "Select startup setup file", "", "Setup files (*.setup)", nullptr, QFileDialog::DontUseNativeDialog));
ui->StartupSetupFile->setText(QFileDialog::getOpenFileName(nullptr, "Select startup setup file", "", "Setup files (*.setup)", nullptr, Preferences::QFileDialogOptions()));
});
ui->StartupSweepStart->setUnit("Hz");
ui->StartupSweepStart->setPrefixes(" kMG");
@ -186,7 +186,7 @@ PreferencesDialog::PreferencesDialog(Preferences *pref, QWidget *parent) :
updateFromGUI();
});
connect(ui->buttonBox->button(QDialogButtonBox::Save), &QPushButton::clicked, [=](){
auto filename = QFileDialog::getSaveFileName(this, "Save preferences", "", "LibreVNA preferences files (*.vnapref)", nullptr, QFileDialog::DontUseNativeDialog);
auto filename = QFileDialog::getSaveFileName(this, "Save preferences", "", "LibreVNA preferences files (*.vnapref)", nullptr, Preferences::QFileDialogOptions());
if(filename.length() > 0) {
if(!filename.toLower().endsWith(".vnapref")) {
filename.append(".vnapref");
@ -199,7 +199,7 @@ PreferencesDialog::PreferencesDialog(Preferences *pref, QWidget *parent) :
}
});
connect(ui->buttonBox->button(QDialogButtonBox::Open), &QPushButton::clicked, [=](){
auto filename = QFileDialog::getOpenFileName(this, "Load preferences", "", "LibreVNA preferences files (*.vnapref)", nullptr, QFileDialog::DontUseNativeDialog);
auto filename = QFileDialog::getOpenFileName(this, "Load preferences", "", "LibreVNA preferences files (*.vnapref)", nullptr, Preferences::QFileDialogOptions());
if(filename.length() > 0) {
ifstream file;
file.open(filename.toStdString());
@ -334,6 +334,7 @@ void PreferencesDialog::setInitialGUIState()
ui->DebugMaxUSBlogSize->setValue(p->Debug.USBlogSizeLimit);
ui->DebugSaveTraceData->setChecked(p->Debug.saveTraceData);
ui->DebugUseNativeDialogs->setChecked(p->Debug.useNativeDialogs);
QTreeWidgetItem *item = ui->treeWidget->topLevelItem(0);
if (item != nullptr) {
@ -446,6 +447,7 @@ void PreferencesDialog::updateFromGUI()
p->Debug.USBlogSizeLimit = ui->DebugMaxUSBlogSize->value();
p->Debug.saveTraceData = ui->DebugSaveTraceData->isChecked();
p->Debug.useNativeDialogs = ui->DebugUseNativeDialogs->isChecked();
p->nonTrivialWriting();
}
@ -522,6 +524,14 @@ void Preferences::setDefault(std::vector<Savable::SettingDescription> descr)
}
}
QFileDialog::Options Preferences::QFileDialogOptions(QFileDialog::Options option)
{
if(!instance.Debug.useNativeDialogs) {
option = (QFileDialog::Option) ((int) option | QFileDialog::DontUseNativeDialog);
}
return option;
}
void Preferences::fromJSON(nlohmann::json j)
{
parseJSON(j, descr);