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  int precision = settings.value("Preferences::precision", 3).toInt();
30  ui->comboBoxPrecision->setCurrentIndex(precision);
31 
32  bool use_plot_color_index =
33  settings.value("Preferences::use_plot_color_index", false).toBool();
34  bool remember_color = settings.value("Preferences::remember_color", true).toBool();
35 
36  ui->checkBoxRememberColor->setChecked(remember_color);
37  ui->radioLocalColorIndex->setChecked(use_plot_color_index);
38  ui->radioGlobalColorIndex->setChecked(!use_plot_color_index);
39 
40  ui->pushButtonAdd->setIcon(LoadSvg(":/resources/svg/add_tab.svg", theme));
41  ui->pushButtonRemove->setIcon(LoadSvg(":/resources/svg/trash.svg", theme));
42 
43  bool use_separator = settings.value("Preferences::use_separator", true).toBool();
44  ui->checkBoxSeparator->setChecked(use_separator);
45 
46  bool use_opengl = settings.value("Preferences::use_opengl", true).toBool();
47  ui->checkBoxOpenGL->setChecked(use_opengl);
48 
49  bool autozoom_visibility =
50  settings.value("Preferences::autozoom_visibility", true).toBool();
51  ui->checkBoxAutoZoomVisibility->setChecked(autozoom_visibility);
52 
53  bool autozoom_curve_added =
54  settings.value("Preferences::autozoom_curve_added", true).toBool();
55  ui->checkBoxAutoZoomAdded->setChecked(autozoom_curve_added);
56 
57  bool autozoom_filter_applied =
58  settings.value("Preferences::autozoom_filter_applied", true).toBool();
59  ui->checkBoxAutoZoomFilter->setChecked(autozoom_filter_applied);
60 
61  bool truncation_check = settings.value("Preferences::truncation_check", true).toBool();
62  ui->checkBoxTruncation->setChecked(truncation_check);
63 
64  //---------------
65  auto custom_plugin_folders =
66  settings.value("Preferences::plugin_folders", true).toStringList();
67  for (const auto& folder : custom_plugin_folders)
68  {
69  QDir dir(folder);
70  auto item = new QListWidgetItem(folder);
71  if (!dir.exists())
72  {
73  item->setForeground(Qt::red);
74  }
75  ui->listWidgetCustom->addItem(item);
76  };
77  ui->pushButtonRemove->setEnabled(!ui->listWidgetCustom->selectedItems().isEmpty());
78  //---------------
79  auto builtin_plugin_folders =
80  settings.value("Preferences::builtin_plugin_folders", true).toStringList();
81  for (const auto& folder : builtin_plugin_folders)
82  {
83  ui->listWidgetBuiltin->addItem(new QListWidgetItem(folder));
84  };
85 }
86 
88 {
89  delete ui;
90 }
91 
93 {
94  QSettings settings;
95  settings.setValue("Preferences::theme",
96  ui->comboBoxTheme->currentIndex() == 1 ? "dark" : "light");
97  settings.setValue("Preferences::remember_color",
98  ui->checkBoxRememberColor->isChecked());
99  settings.setValue("Preferences::use_plot_color_index",
100  ui->radioLocalColorIndex->isChecked());
101  settings.setValue("Preferences::precision",
102  ui->comboBoxPrecision->currentIndex());
103  settings.setValue("Preferences::use_separator", ui->checkBoxSeparator->isChecked());
104  settings.setValue("Preferences::use_opengl", ui->checkBoxOpenGL->isChecked());
105  settings.setValue("Preferences::autozoom_visibility",
106  ui->checkBoxAutoZoomVisibility->isChecked());
107  settings.setValue("Preferences::autozoom_curve_added",
108  ui->checkBoxAutoZoomAdded->isChecked());
109  settings.setValue("Preferences::autozoom_filter_applied",
110  ui->checkBoxAutoZoomFilter->isChecked());
111  settings.setValue("Preferences::truncation_check", ui->checkBoxTruncation->isChecked());
112 
113  QStringList plugin_folders;
114  for (int row = 0; row < ui->listWidgetCustom->count(); row++)
115  {
116  plugin_folders.push_back(ui->listWidgetCustom->item(row)->text());
117  }
118  settings.setValue("Preferences::plugin_folders", plugin_folders);
119 
120  settings.sync();
121 }
122 
124 {
125  QString dir = QFileDialog::getExistingDirectory(
126  this, tr("Select a Directory"), QDir::homePath(),
127  QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);
128  auto item = new QListWidgetItem(dir);
129  ui->listWidgetCustom->addItem(item);
130 }
131 
133 {
134  auto selected = ui->listWidgetCustom->selectedItems();
135 
136  for (QListWidgetItem* item : selected)
137  {
138  ui->listWidgetCustom->removeItemWidget(item);
139  delete item;
140  }
141 }
142 
144 {
145  ui->pushButtonRemove->setEnabled(!ui->listWidgetCustom->selectedItems().isEmpty());
146 }
PreferencesDialog::~PreferencesDialog
~PreferencesDialog()
Definition: preferences_dialog.cpp:87
PreferencesDialog::ui
Ui::PreferencesDialog * ui
Definition: preferences_dialog.h:35
LoadSvg
const QPixmap & LoadSvg(QString filename, QString style_name="light")
Definition: svg_util.h:26
PreferencesDialog::on_pushButtonAdd_clicked
void on_pushButtonAdd_clicked()
Definition: preferences_dialog.cpp:123
PreferencesDialog
Definition: preferences_dialog.h:17
PreferencesDialog::on_buttonBox_accepted
void on_buttonBox_accepted()
Definition: preferences_dialog.cpp:92
PreferencesDialog::on_listWidgetCustom_itemSelectionChanged
void on_listWidgetCustom_itemSelectionChanged()
Definition: preferences_dialog.cpp:143
Ui
Definition: cheatsheet_dialog.h:6
PreferencesDialog::on_pushButtonRemove_clicked
void on_pushButtonRemove_clicked()
Definition: preferences_dialog.cpp:132
preferences_dialog.h
svg_util.h
PreferencesDialog::PreferencesDialog
PreferencesDialog(QWidget *parent=nullptr)
Definition: preferences_dialog.cpp:14


plotjuggler
Author(s): Davide Faconti
autogenerated on Sun Jan 26 2025 03:23:24