comparison settingsdialog.cpp @ 175:6def8bf3be44

* Start implementing Settings dialog; add Test function to run on startup to make sure hg works
author Chris Cannam
date Thu, 16 Dec 2010 17:32:25 +0000
parents
children a6ec8d0bdd34
comparison
equal deleted inserted replaced
174:4dc802a4d5ae 175:6def8bf3be44
1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
2
3 /*
4 EasyMercurial
5
6 Based on HgExplorer by Jari Korhonen
7 Copyright (c) 2010 Jari Korhonen
8 Copyright (c) 2010 Chris Cannam
9 Copyright (c) 2010 Queen Mary, University of London
10
11 This program is free software; you can redistribute it and/or
12 modify it under the terms of the GNU General Public License as
13 published by the Free Software Foundation; either version 2 of the
14 License, or (at your option) any later version. See the file
15 COPYING included with this distribution for more information.
16 */
17
18 #include "settingsdialog.h"
19 #include "common.h"
20
21 #include <QGridLayout>
22 #include <QGroupBox>
23 #include <QDialogButtonBox>
24 #include <QSettings>
25
26 SettingsDialog::SettingsDialog(QWidget *parent) :
27 QDialog(parent)
28 {
29 setModal(true);
30 setWindowTitle(tr("Settings"));
31
32 QSettings settings;
33
34 QGridLayout *mainLayout = new QGridLayout;
35 setLayout(mainLayout);
36
37 QGroupBox *meBox = new QGroupBox(tr("About me"));
38 mainLayout->addWidget(meBox, 0, 0);
39 QGridLayout *meLayout = new QGridLayout;
40 meBox->setLayout(meLayout);
41
42 settings.beginGroup("User Information");
43
44 int row = 0;
45
46 meLayout->addWidget(new QLabel(tr("Name:")), row, 0);
47
48 m_nameEdit = new QLineEdit();
49 m_nameEdit->setText(settings.value("name", getUserRealName()).toString());
50 connect(m_nameEdit, SIGNAL(textChanged(const QString &)),
51 this, SLOT(realNameChanged(const QString &)));
52 meLayout->addWidget(m_nameEdit, row++, 1);
53
54 meLayout->addWidget(new QLabel(tr("Email address:")), row, 0);
55
56 m_emailEdit = new QLineEdit();
57 m_emailEdit->setText(settings.value("email").toString());
58 connect(m_emailEdit, SIGNAL(textChanged(const QString &)),
59 this, SLOT(emailChanged(const QString &)));
60 meLayout->addWidget(m_emailEdit, row++, 1);
61
62 settings.endGroup();
63
64 QGroupBox *pathsBox = new QGroupBox(tr("System application locations"));
65 mainLayout->addWidget(pathsBox, 1, 0);
66 QGridLayout *pathsLayout = new QGridLayout;
67 pathsBox->setLayout(pathsLayout);
68
69 settings.beginGroup("Locations");
70
71 row = 0;
72
73 pathsLayout->addWidget(new QLabel(tr("Mercurial (hg) program:")), row, 0);
74
75 m_hgPathEdit = new QLineEdit();
76 m_hgPathEdit->setText(settings.value("hgbinary").toString());
77 connect(m_hgPathEdit, SIGNAL(textChanged(const QString &)),
78 this, SLOT(hgPathChanged(const QString &)));
79 pathsLayout->addWidget(m_hgPathEdit, row, 1);
80
81 QPushButton *browse = new QPushButton(tr("Browse..."));
82 pathsLayout->addWidget(browse, row++, 2);
83 connect(browse, SIGNAL(clicked()), this, SLOT(hgPathBrowse()));
84
85 pathsLayout->addWidget(new QLabel(tr("External diff program:")), row, 0);
86
87 m_diffPathEdit = new QLineEdit();
88 m_diffPathEdit->setText(settings.value("extdiffbinary").toString());
89 connect(m_diffPathEdit, SIGNAL(textChanged(const QString &)),
90 this, SLOT(diffPathChanged(const QString &)));
91 pathsLayout->addWidget(m_diffPathEdit, row, 1);
92
93 browse = new QPushButton(tr("Browse..."));
94 pathsLayout->addWidget(browse, row++, 2);
95 connect(browse, SIGNAL(clicked()), this, SLOT(diffPathBrowse()));
96
97 pathsLayout->addWidget(new QLabel(tr("External file-merge program:")), row, 0);
98
99 m_mergePathEdit = new QLineEdit();
100 m_mergePathEdit->setText(settings.value("mergebinary").toString());
101 connect(m_mergePathEdit, SIGNAL(textChanged(const QString &)),
102 this, SLOT(mergePathChanged(const QString &)));
103 pathsLayout->addWidget(m_mergePathEdit, row, 1);
104
105 browse = new QPushButton(tr("Browse..."));
106 pathsLayout->addWidget(browse, row++, 2);
107 connect(browse, SIGNAL(clicked()), this, SLOT(mergePathBrowse()));
108
109 settings.endGroup();
110
111 QDialogButtonBox *bbox = new QDialogButtonBox(QDialogButtonBox::Ok);
112 connect(bbox, SIGNAL(accepted()), this, SLOT(accept()));
113 mainLayout->addWidget(bbox, 2, 0);
114 m_ok = bbox->button(QDialogButtonBox::Ok);
115 // m_ok->setEnabled(false);
116
117 //!!! m_ok->setEnabled(m_name != "");
118 // updateExample();
119 }
120
121 void
122 SettingsDialog::realNameChanged(const QString &s)
123 {
124 }
125
126 void
127 SettingsDialog::emailChanged(const QString &s)
128 {
129 }
130
131 void
132 SettingsDialog::hgPathChanged(const QString &s)
133 {
134 }
135
136 void
137 SettingsDialog::hgPathBrowse()
138 {
139 }
140
141 void
142 SettingsDialog::diffPathChanged(const QString &s)
143 {
144 }
145
146 void
147 SettingsDialog::diffPathBrowse()
148 {
149 }
150
151 void
152 SettingsDialog::mergePathChanged(const QString &s)
153 {
154 }
155
156 void
157 SettingsDialog::mergePathBrowse()
158 {
159 }
160
161 void
162 SettingsDialog::editorPathChanged(const QString &s)
163 {
164 }
165
166 void
167 SettingsDialog::editorPathBrowse()
168 {
169 }
170
171 void
172 SettingsDialog::accept()
173 {
174 QSettings settings;
175 settings.beginGroup("User Information");
176 settings.setValue("name", m_nameEdit->text());
177 settings.setValue("email", m_emailEdit->text());
178 settings.endGroup();
179 settings.beginGroup("Locations");
180 settings.setValue("hgbinary", m_hgPathEdit->text());
181 settings.setValue("extdiffbinary", m_diffPathEdit->text());
182 settings.setValue("mergebinary", m_mergePathEdit->text());
183 settings.endGroup();
184 QDialog::accept();
185 }
186
187