-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsettingsdialog.cpp
More file actions
73 lines (59 loc) · 1.67 KB
/
settingsdialog.cpp
File metadata and controls
73 lines (59 loc) · 1.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include <QItemEditorFactory>
#include <QFileDialog>
#include <QDebug>
#include "settingsdialog.h"
#include "ui_settingsdialog.h"
#include "directoryeditor.h"
SettingsDialog::SettingsDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::SettingsDialog),
settings(new QSettings(this)),
model(new QStringListModel(this))
{
qDebug() << "Current application theme" << QIcon::themeName();
ui->setupUi(this);
QItemEditorFactory *factory = new QItemEditorFactory;
QItemEditorCreatorBase *directory_editor_creator =
new QStandardItemEditorCreator<DirectoryEditor>();
factory->registerEditor(QVariant::String, directory_editor_creator);
QItemEditorFactory::setDefaultFactory(factory);
ui->listView->setModel(model);
}
SettingsDialog::~SettingsDialog()
{
delete ui;
}
void SettingsDialog::load_config()
{
model->setStringList(settings->value("additional-theme-dirs").toStringList());
}
void SettingsDialog::open()
{
load_config();
QDialog::open();
}
int SettingsDialog::exec()
{
load_config();
return QDialog::exec();
}
void SettingsDialog::accept()
{
settings->setValue("additional-theme-dirs", model->stringList());
QDialog::accept();
}
void SettingsDialog::remove_selected_path()
{
model->removeRow(ui->listView->selectionModel()->currentIndex().row());
}
void SettingsDialog::add_new_path()
{
QString path = QFileDialog::getExistingDirectory(this, "Choose directory");
if (path.isNull())
return;
int num_rows = model->rowCount();
model->insertRow(num_rows);
QModelIndex index = model->index(num_rows);
model->setData(index, path);
ui->listView->setCurrentIndex(index);
}