preferences_dialog.cpp
Go to the documentation of this file.
1 /*
2  * This Source Code Form is subject to the terms of the Mozilla Public
3  * License, v. 2.0. If a copy of the MPL was not distributed with this
4  * file, You can obtain one at https://mozilla.org/MPL/2.0/.
5  */
6 
7 #include "preferences_dialog.h"
8 #include "ui_preferences_dialog.h"
9 #include <QSettings>
10 #include <QDir>
11 #include <QFileDialog>
12 #include "PlotJuggler/svg_util.h"
13 
15  : QDialog(parent), ui(new Ui::PreferencesDialog)
16 {
17  ui->setupUi(this);
18  QSettings settings;
19  QString theme = settings.value("Preferences::theme", "light").toString();
20  if (theme == "dark")
21  {
22  ui->comboBoxTheme->setCurrentIndex(1);
23  }
24  else
25  {
26  ui->comboBoxTheme->setCurrentIndex(0);
27  }
28 
29  bool use_plot_color_index =
30  settings.value("Preferences::use_plot_color_index", false).toBool();
31  bool remember_color = settings.value("Preferences::remember_color", true).toBool();
32 
33  ui->checkBoxRememberColor->setChecked(remember_color);
34  ui->radioLocalColorIndex->setChecked(use_plot_color_index);
35  ui->radioGlobalColorIndex->setChecked(!use_plot_color_index);
36 
37  ui->pushButtonAdd->setIcon(LoadSvg(":/resources/svg/add_tab.svg", theme));
38  ui->pushButtonRemove->setIcon(LoadSvg(":/resources/svg/trash.svg", theme));
39 
40  bool use_separator = settings.value("Preferences::use_separator", true).toBool();
41  ui->checkBoxSeparator->setChecked(use_separator);
42 
43  bool use_opengl = settings.value("Preferences::use_opengl", true).toBool();
44  ui->checkBoxOpenGL->setChecked(use_opengl);
45 
46  bool autozoom_visibility = settings.value("Preferences::autozoom_visibility",true).toBool();
47  ui->checkBoxAutoZoomVisibility->setChecked(autozoom_visibility);
48 
49  bool autozoom_curve_added = settings.value("Preferences::autozoom_curve_added",true).toBool();
50  ui->checkBoxAutoZoomAdded->setChecked(autozoom_curve_added);
51 
52  bool autozoom_filter_applied = settings.value("Preferences::autozoom_filter_applied",true).toBool();
53  ui->checkBoxAutoZoomFilter->setChecked(autozoom_filter_applied);
54 
55  //---------------
56  auto custom_plugin_folders =
57  settings.value("Preferences::plugin_folders", true).toStringList();
58  for (const auto& folder : custom_plugin_folders)
59  {
60  QDir dir(folder);
61  auto item = new QListWidgetItem(folder);
62  if (!dir.exists())
63  {
64  item->setForeground(Qt::red);
65  }
66  ui->listWidgetCustom->addItem(item);
67  };
68  ui->pushButtonRemove->setEnabled(!ui->listWidgetCustom->selectedItems().isEmpty());
69  //---------------
70  auto builtin_plugin_folders =
71  settings.value("Preferences::builtin_plugin_folders", true).toStringList();
72  for (const auto& folder : builtin_plugin_folders)
73  {
74  ui->listWidgetBuiltin->addItem(new QListWidgetItem(folder));
75  };
76 }
77 
79 {
80  delete ui;
81 }
82 
84 {
85  QSettings settings;
86  settings.setValue("Preferences::theme",
87  ui->comboBoxTheme->currentIndex() == 1 ? "dark" : "light");
88  settings.setValue("Preferences::remember_color",
89  ui->checkBoxRememberColor->isChecked());
90  settings.setValue("Preferences::use_plot_color_index",
91  ui->radioLocalColorIndex->isChecked());
92  settings.setValue("Preferences::use_separator", ui->checkBoxSeparator->isChecked());
93  settings.setValue("Preferences::use_opengl", ui->checkBoxOpenGL->isChecked());
94  settings.setValue("Preferences::autozoom_visibility", ui->checkBoxAutoZoomVisibility->isChecked());
95  settings.setValue("Preferences::autozoom_curve_added", ui->checkBoxAutoZoomAdded->isChecked());
96  settings.setValue("Preferences::autozoom_filter_applied", ui->checkBoxAutoZoomFilter->isChecked());
97 
98  QStringList plugin_folders;
99  for (int row = 0; row < ui->listWidgetCustom->count(); row++)
100  {
101  plugin_folders.push_back(ui->listWidgetCustom->item(row)->text());
102  }
103  settings.setValue("Preferences::plugin_folders", plugin_folders);
104 
105  settings.sync();
106 }
107 
109 {
110  QString dir = QFileDialog::getExistingDirectory(
111  this, tr("Select a Directory"), QDir::homePath(),
112  QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);
113  auto item = new QListWidgetItem(dir);
114  ui->listWidgetCustom->addItem(item);
115 }
116 
118 {
119  auto selected = ui->listWidgetCustom->selectedItems();
120 
121  for (QListWidgetItem* item : selected)
122  {
123  ui->listWidgetCustom->removeItemWidget(item);
124  delete item;
125  }
126 }
127 
129 {
130  ui->pushButtonRemove->setEnabled(!ui->listWidgetCustom->selectedItems().isEmpty());
131 }
Ui::PreferencesDialog * ui
void on_listWidgetCustom_itemSelectionChanged()
const QPixmap & LoadSvg(QString filename, QString style_name="light")
Definition: svg_util.h:26
PreferencesDialog(QWidget *parent=nullptr)


plotjuggler
Author(s): Davide Faconti
autogenerated on Mon Jun 19 2023 03:01:38