-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpreferences.cpp
88 lines (75 loc) · 2.79 KB
/
preferences.cpp
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#include "preferences.h"
#include "ui_preferences.h"
#include <QtCore/QSettings>
#include <QtWidgets/QFileDialog>
class Preferences::Private : public Ui::Preferences
{
public:
Private(::Preferences *parent);
~Private();
private:
::Preferences *q;
public:
QSettings settings;
};
Preferences::Private::Private(::Preferences *parent)
: q(parent)
{
settings.beginGroup(q->metaObject()->className());
setupUi(q);
gstreamerSourceDirectory->setText(settings.value(QStringLiteral("gstreamerSourceDirectory")).toString());
connect(gstreamerSourceDirectoryButton, &QToolButton::clicked, [this]() {
const auto directory = QFileDialog::getExistingDirectory(q, tr("Select GStreamer source directory"), gstreamerSourceDirectory->text());
if (directory.isEmpty())
return;
gstreamerSourceDirectory->setText(directory);
});
// QOperatingSystemVersion doesn't support Linux yet
externalTextEditor->addItems({
#ifdef Q_OS_WIN
QStringLiteral("notepad %f"),
QStringLiteral("notepad++ %f -n%l"),
QStringLiteral("sublime_text %f:%l"),
QStringLiteral("code -g %f:%l"),
#elif defined(Q_OS_MAC)
QStringLiteral("open -a TextEdit %f"),
QStringLiteral("subl %f:%l"),
QStringLiteral("code -g %f:%l"),
#elif defined(Q_OS_LINUX)
QStringLiteral("gedit %f +%l"),
QStringLiteral("kate %f -l %l"),
QStringLiteral("qtcreator %f:%l"),
QStringLiteral("code -g %f:%l"),
QStringLiteral("gnome-terminal -- nano +%l %f"),
QStringLiteral("gnome-terminal -- vim +%l %f"),
QStringLiteral("konsole -e nano +%l %f"),
QStringLiteral("konsole -e vim +%l %f"),
QStringLiteral("xterm -e nano +%l %f"),
QStringLiteral("xterm -e vim +%l %f"),
#endif
});
externalTextEditor->setCurrentText(settings.value(QStringLiteral("externalTextEditor")).toString());
q->restoreGeometry(settings.value(QStringLiteral("geometry")).toByteArray());
}
Preferences::Private::~Private()
{
settings.setValue(QStringLiteral("geometry"), q->saveGeometry());
}
Preferences::Preferences(QWidget *parent)
: QDialog(parent)
, d(new Private(this))
{}
Preferences::~Preferences() = default;
void Preferences::setCurrentField(const QString ¤tField)
{
QWidget *field = findChild<QWidget *>(currentField);
if (!field)
return;
field->setFocus();
}
void Preferences::accept()
{
d->settings.setValue(QStringLiteral("gstreamerSourceDirectory"), d->gstreamerSourceDirectory->text());
d->settings.setValue(QStringLiteral("externalTextEditor"), d->externalTextEditor->currentText());
QDialog::accept();
}