annotate src/settingsdialog.cpp @ 633:db62a0cb3037

* Added setting to specify that diff command should be run once for each selected file, rather than passing all file names to diff command (p4merge doesn't like being given many files)
author Sam Izzo <sam@humbug.net>
date Mon, 27 Aug 2012 01:26:57 +1000
parents 5dc24f89b791
children 58ac1b197666
rev   line source
Chris@175 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@175 2
Chris@175 3 /*
Chris@175 4 EasyMercurial
Chris@175 5
Chris@175 6 Based on HgExplorer by Jari Korhonen
Chris@175 7 Copyright (c) 2010 Jari Korhonen
Chris@560 8 Copyright (c) 2012 Chris Cannam
Chris@560 9 Copyright (c) 2012 Queen Mary, University of London
Chris@175 10
Chris@175 11 This program is free software; you can redistribute it and/or
Chris@175 12 modify it under the terms of the GNU General Public License as
Chris@175 13 published by the Free Software Foundation; either version 2 of the
Chris@175 14 License, or (at your option) any later version. See the file
Chris@175 15 COPYING included with this distribution for more information.
Chris@175 16 */
Chris@175 17
Chris@175 18 #include "settingsdialog.h"
Chris@175 19 #include "common.h"
Chris@177 20 #include "debug.h"
Chris@175 21
Chris@175 22 #include <QGridLayout>
Chris@175 23 #include <QGroupBox>
Chris@175 24 #include <QDialogButtonBox>
Chris@175 25 #include <QSettings>
Chris@181 26 #include <QDir>
Chris@181 27 #include <QFileDialog>
Chris@273 28 #include <QMessageBox>
Chris@466 29 #include <QTabWidget>
mikel@617 30 #include <QCalendarWidget>
Chris@175 31
Chris@239 32 QString
Chris@239 33 SettingsDialog::m_installPath;
Chris@239 34
Chris@175 35 SettingsDialog::SettingsDialog(QWidget *parent) :
Chris@230 36 QDialog(parent),
Chris@230 37 m_presentationChanged(false)
Chris@175 38 {
Chris@175 39 setModal(true);
Chris@175 40 setWindowTitle(tr("Settings"));
Chris@175 41
Chris@175 42 QGridLayout *mainLayout = new QGridLayout;
Chris@175 43 setLayout(mainLayout);
Chris@175 44
Chris@472 45 m_tabs = new QTabWidget;
Chris@472 46 mainLayout->addWidget(m_tabs, 0, 0);
Chris@230 47
Chris@230 48
Chris@466 49 // QGroupBox *meBox = new QGroupBox(tr("User details"));
Chris@466 50 // mainLayout->addWidget(meBox, 0, 0);
Chris@466 51
Chris@466 52 QWidget *meBox = new QWidget;
Chris@472 53 m_tabs->addTab(meBox, tr("User details"));
Chris@466 54
Chris@175 55 QGridLayout *meLayout = new QGridLayout;
Chris@175 56 meBox->setLayout(meLayout);
Chris@175 57
Chris@175 58 int row = 0;
Chris@175 59
Chris@175 60 meLayout->addWidget(new QLabel(tr("Name:")), row, 0);
Chris@175 61
Chris@175 62 m_nameEdit = new QLineEdit();
Chris@175 63 meLayout->addWidget(m_nameEdit, row++, 1);
Chris@175 64
Chris@175 65 meLayout->addWidget(new QLabel(tr("Email address:")), row, 0);
Chris@175 66
Chris@175 67 m_emailEdit = new QLineEdit();
Chris@175 68 meLayout->addWidget(m_emailEdit, row++, 1);
Chris@175 69
Chris@466 70 meLayout->setRowStretch(row, 20);
Chris@230 71
Chris@230 72
Chris@466 73 // QGroupBox *lookBox = new QGroupBox(tr("Presentation"));
Chris@466 74 // mainLayout->addWidget(lookBox, 1, 0);
Chris@466 75
Chris@466 76 QWidget *lookBox = new QWidget;
Chris@472 77 m_tabs->addTab(lookBox, tr("Presentation"));
Chris@466 78
Chris@230 79 QGridLayout *lookLayout = new QGridLayout;
Chris@230 80 lookBox->setLayout(lookLayout);
Chris@230 81
Chris@230 82 row = 0;
Chris@230 83
Chris@230 84 m_showIconLabels = new QCheckBox(tr("Show labels on toolbar icons"));
Chris@273 85 lookLayout->addWidget(m_showIconLabels, row++, 0, 1, 2);
Chris@230 86
Chris@230 87 m_showExtraText = new QCheckBox(tr("Show long descriptions for file status headings"));
Chris@273 88 lookLayout->addWidget(m_showExtraText, row++, 0, 1, 2);
Chris@273 89
Chris@273 90 #ifdef NOT_IMPLEMENTED_YET
Chris@273 91 lookLayout->addWidget(new QLabel(tr("Place the work and history views")), row, 0);
Chris@273 92 m_workHistoryArrangement = new QComboBox();
Chris@273 93 m_workHistoryArrangement->addItem(tr("In separate tabs"));
Chris@273 94 m_workHistoryArrangement->addItem(tr("Side-by-side in a single pane"));
Chris@273 95 lookLayout->addWidget(m_workHistoryArrangement, row++, 1, Qt::AlignLeft);
Chris@273 96 lookLayout->setColumnStretch(1, 20);
Chris@273 97 #endif
Chris@230 98
mikel@617 99 lookLayout->addWidget(new QLabel(tr("History timeline from")), row, 0);
mikel@617 100 m_dateFrom = new QDateEdit();
mikel@617 101 m_dateFrom->setCalendarPopup(true);
mikel@617 102 lookLayout->addWidget(m_dateFrom, row++, 1, Qt::AlignLeft);
mikel@617 103
Chris@273 104 lookLayout->addWidget(new QLabel(tr("Label the history timeline with")), row, 0);
Chris@273 105 m_dateFormat = new QComboBox();
Chris@273 106 m_dateFormat->addItem(tr("Ages, for example \"5 weeks ago\""));
Chris@273 107 m_dateFormat->addItem(tr("Dates, for example \"2010-06-23\""));
Chris@273 108 lookLayout->addWidget(m_dateFormat, row++, 1, Qt::AlignLeft);
Chris@466 109
mikel@617 110 lookLayout->setColumnStretch(1, 10);
Chris@466 111 lookLayout->setRowStretch(row, 20);
Chris@273 112
Chris@230 113
Chris@466 114 QWidget *pathsBox = new QWidget;
Chris@472 115 m_tabs->addTab(pathsBox, tr("System application locations"));
Chris@466 116
Chris@466 117 // QGroupBox *pathsBox = new QGroupBox(tr("System application locations"));
Chris@466 118 // mainLayout->addWidget(pathsBox, 2, 0);
Chris@175 119 QGridLayout *pathsLayout = new QGridLayout;
Chris@175 120 pathsBox->setLayout(pathsLayout);
Chris@175 121
Chris@175 122 row = 0;
Chris@175 123
Chris@175 124 pathsLayout->addWidget(new QLabel(tr("Mercurial (hg) program:")), row, 0);
Chris@175 125
Chris@195 126 m_hgPathLabel = new QLineEdit();
Chris@181 127 pathsLayout->addWidget(m_hgPathLabel, row, 2);
Chris@175 128
Chris@175 129 QPushButton *browse = new QPushButton(tr("Browse..."));
Chris@181 130 pathsLayout->addWidget(browse, row++, 1);
Chris@175 131 connect(browse, SIGNAL(clicked()), this, SLOT(hgPathBrowse()));
Chris@175 132
Chris@175 133 pathsLayout->addWidget(new QLabel(tr("External diff program:")), row, 0);
Chris@175 134
Chris@195 135 m_diffPathLabel = new QLineEdit();
Chris@181 136 pathsLayout->addWidget(m_diffPathLabel, row, 2);
Chris@175 137
Chris@175 138 browse = new QPushButton(tr("Browse..."));
Chris@181 139 pathsLayout->addWidget(browse, row++, 1);
Chris@175 140 connect(browse, SIGNAL(clicked()), this, SLOT(diffPathBrowse()));
sam@633 141
sam@633 142 m_multipleDiffInstances = new QCheckBox(tr("Multiple instances when multiple files are selected"));
sam@633 143 pathsLayout->addWidget(m_multipleDiffInstances, row++, 2);
sam@633 144
Chris@175 145 pathsLayout->addWidget(new QLabel(tr("External file-merge program:")), row, 0);
Chris@175 146
Chris@195 147 m_mergePathLabel = new QLineEdit();
Chris@181 148 pathsLayout->addWidget(m_mergePathLabel, row, 2);
Chris@175 149
Chris@175 150 browse = new QPushButton(tr("Browse..."));
Chris@181 151 pathsLayout->addWidget(browse, row++, 1);
Chris@175 152 connect(browse, SIGNAL(clicked()), this, SLOT(mergePathBrowse()));
Chris@175 153
chris@406 154 pathsLayout->addWidget(new QLabel(tr("SSH program (for ssh URLs):")), row, 0);
chris@406 155
chris@406 156 m_sshPathLabel = new QLineEdit();
chris@406 157 pathsLayout->addWidget(m_sshPathLabel, row, 2);
chris@406 158
chris@406 159 browse = new QPushButton(tr("Browse..."));
chris@406 160 pathsLayout->addWidget(browse, row++, 1);
chris@406 161 connect(browse, SIGNAL(clicked()), this, SLOT(sshPathBrowse()));
chris@406 162
sam@628 163 //!!! more info plz
sam@628 164 m_useExtension = new QCheckBox(tr("Use EasyHg Mercurial extension"));
sam@628 165 pathsLayout->addWidget(m_useExtension, row, 0);
sam@628 166 connect(m_useExtension, SIGNAL(stateChanged(int)), this, SLOT(useExtension(int)));
Chris@176 167
Chris@195 168 m_extensionPathLabel = new QLineEdit();
Chris@181 169 pathsLayout->addWidget(m_extensionPathLabel, row, 2);
Chris@176 170
sam@628 171 m_extensionBrowse = new QPushButton(tr("Browse..."));
sam@628 172 pathsLayout->addWidget(m_extensionBrowse, row++, 1);
sam@628 173 connect(m_extensionBrowse, SIGNAL(clicked()), this, SLOT(extensionPathBrowse()));
Chris@176 174
Chris@466 175 pathsLayout->setRowStretch(row, 20);
sam@633 176 pathsLayout->setColumnStretch(2, 20);
Chris@466 177
Chris@176 178
Chris@239 179 reset(); // loads current defaults from settings
Chris@175 180
Chris@230 181
Chris@175 182 QDialogButtonBox *bbox = new QDialogButtonBox(QDialogButtonBox::Ok);
Chris@239 183 connect(bbox->addButton(tr("Restore defaults"), QDialogButtonBox::ResetRole),
Chris@239 184 SIGNAL(clicked()), this, SLOT(restoreDefaults()));
Chris@175 185 connect(bbox, SIGNAL(accepted()), this, SLOT(accept()));
Chris@230 186 mainLayout->addWidget(bbox, 3, 0);
Chris@175 187 m_ok = bbox->button(QDialogButtonBox::Ok);
Chris@175 188 }
Chris@175 189
Chris@175 190 void
Chris@472 191 SettingsDialog::setCurrentTab(Tab t)
Chris@472 192 {
Chris@472 193 switch (t) {
Chris@472 194 case PersonalDetailsTab: m_tabs->setCurrentIndex(0); break;
Chris@472 195 case PresentationTab: m_tabs->setCurrentIndex(1); break;
Chris@472 196 case PathsTab: m_tabs->setCurrentIndex(2); break;
Chris@472 197 }
Chris@472 198 }
Chris@472 199
Chris@472 200 void
Chris@175 201 SettingsDialog::hgPathBrowse()
Chris@175 202 {
Chris@181 203 browseFor(tr("Mercurial program"), m_hgPathLabel);
Chris@175 204 }
Chris@175 205
Chris@175 206 void
Chris@175 207 SettingsDialog::diffPathBrowse()
Chris@175 208 {
Chris@181 209 browseFor(tr("External diff program"), m_diffPathLabel);
Chris@175 210 }
Chris@175 211
Chris@175 212 void
Chris@175 213 SettingsDialog::mergePathBrowse()
Chris@175 214 {
Chris@181 215 browseFor(tr("External file-merge program"), m_mergePathLabel);
Chris@175 216 }
Chris@175 217
Chris@175 218 void
chris@406 219 SettingsDialog::sshPathBrowse()
chris@406 220 {
chris@406 221 browseFor(tr("SSH program"), m_sshPathLabel);
chris@406 222 }
chris@406 223
chris@406 224 void
Chris@176 225 SettingsDialog::extensionPathBrowse()
Chris@176 226 {
Chris@181 227 browseFor(tr("EasyHg Mercurial extension"), m_extensionPathLabel);
Chris@181 228 }
Chris@181 229
Chris@181 230 void
sam@628 231 SettingsDialog::useExtension(int)
sam@628 232 {
sam@628 233 m_extensionPathLabel->setEnabled(m_useExtension->isChecked());
sam@628 234 m_extensionBrowse->setEnabled(m_useExtension->isChecked());
sam@628 235 }
sam@628 236
sam@628 237 void
Chris@195 238 SettingsDialog::browseFor(QString title, QLineEdit *edit)
Chris@181 239 {
Chris@181 240 QString origin = edit->text();
Chris@181 241
Chris@181 242 if (origin == "") {
Chris@181 243 #ifdef Q_OS_WIN32
Chris@181 244 origin = "c:";
Chris@181 245 #else
Chris@181 246 origin = QDir::homePath();
Chris@181 247 #endif
Chris@181 248 }
Chris@181 249
Chris@181 250 QString path = QFileDialog::getOpenFileName(this, title, origin);
Chris@181 251 if (path != QString()) {
Chris@181 252 edit->setText(path);
Chris@181 253 }
Chris@176 254 }
Chris@176 255
Chris@176 256 void
Chris@239 257 SettingsDialog::restoreDefaults()
Chris@239 258 {
Chris@273 259 if (QMessageBox::question
Chris@273 260 (this, tr("Restore default settings?"),
Chris@273 261 tr("<qt><b>Restore default settings?</b><br><br>Are you sure you want to reset all settings to their default values?"),
Chris@273 262 QMessageBox::Ok | QMessageBox::Cancel,
Chris@273 263 QMessageBox::Cancel) == QMessageBox::Ok) {
Chris@273 264 clear();
Chris@273 265 findDefaultLocations();
Chris@273 266 reset();
Chris@273 267 }
Chris@239 268 }
Chris@239 269
Chris@239 270 void
Chris@239 271 SettingsDialog::findDefaultLocations(QString installPath)
Chris@239 272 {
Chris@239 273 m_installPath = installPath;
Chris@239 274 findHgBinaryName();
Chris@239 275 findExtension();
Chris@239 276 findDiffBinaryName();
Chris@239 277 findMergeBinaryName();
chris@406 278 findSshBinaryName();
Chris@239 279 }
Chris@239 280
Chris@239 281 void
Chris@239 282 SettingsDialog::findHgBinaryName()
Chris@239 283 {
Chris@239 284 QSettings settings;
Chris@239 285 settings.beginGroup("Locations");
Chris@239 286 QString hg = settings.value("hgbinary", "").toString();
Chris@611 287 if (hg == "" || !QFile(hg).exists()) {
Chris@239 288 hg = findInPath("hg", m_installPath, true);
Chris@239 289 }
Chris@239 290 if (hg != "") {
Chris@239 291 settings.setValue("hgbinary", hg);
Chris@239 292 }
Chris@239 293 }
Chris@239 294
Chris@240 295 QString
Chris@240 296 SettingsDialog::getUnbundledExtensionFileName()
Chris@240 297 {
Chris@240 298 QString home = QDir::homePath();
Chris@240 299 QString target = QString("%1/.easyhg").arg(home);
Chris@240 300 QString extpath = QString("%1/easyhg.py").arg(target);
Chris@240 301 return extpath;
Chris@240 302 }
Chris@240 303
Chris@239 304 void
Chris@239 305 SettingsDialog::findExtension()
Chris@239 306 {
Chris@239 307 QSettings settings;
Chris@239 308 settings.beginGroup("Locations");
Chris@239 309
Chris@239 310 QString extpath = settings.value("extensionpath", "").toString();
Chris@239 311 if (extpath != "" || !QFile(extpath).exists()) {
Chris@239 312
Chris@240 313 extpath = getUnbundledExtensionFileName();
Chris@239 314
Chris@239 315 if (!QFile(extpath).exists()) {
Chris@239 316 extpath = findInPath("easyhg.py", m_installPath, false);
Chris@239 317 }
Chris@239 318 }
Chris@239 319
Chris@239 320 settings.setValue("extensionpath", extpath);
Chris@239 321 }
Chris@239 322
Chris@239 323 void
Chris@239 324 SettingsDialog::findDiffBinaryName()
Chris@239 325 {
Chris@239 326 QSettings settings;
Chris@239 327 settings.beginGroup("Locations");
Chris@239 328 QString diff = settings.value("extdiffbinary", "").toString();
Chris@465 329 if (diff != "" && QFile(diff).exists()) {
Chris@465 330 return;
Chris@465 331 }
Chris@465 332 QStringList bases;
Chris@272 333 #ifdef Q_OS_WIN32
Chris@465 334 bases << "easyhg-extdiff.bat";
Chris@272 335 #else
Chris@465 336 bases << "easyhg-extdiff.sh";
Chris@272 337 #endif
Chris@465 338 bases << "kompare" << "kdiff3" << "meld";
Chris@465 339 bool found = false;
Chris@465 340 foreach (QString base, bases) {
Chris@465 341 diff = findInPath(base, m_installPath, true);
Chris@465 342 if (diff != "") {
Chris@465 343 found = true;
Chris@465 344 break;
Chris@239 345 }
Chris@465 346 }
Chris@465 347 if (found) {
Chris@465 348 settings.setValue("extdiffbinary", diff);
Chris@239 349 }
Chris@239 350 }
Chris@239 351
Chris@239 352 void
Chris@239 353 SettingsDialog::findMergeBinaryName()
Chris@239 354 {
Chris@239 355 QSettings settings;
Chris@239 356 settings.beginGroup("Locations");
Chris@465 357 QString merge = settings.value("mergebinary", "").toString();
Chris@465 358 if (merge != "" && QFile(merge).exists()) {
Chris@239 359 return;
Chris@239 360 }
Chris@239 361 QStringList bases;
Chris@272 362 #ifdef Q_OS_WIN32
Chris@272 363 bases << "easyhg-merge.bat";
Chris@272 364 #else
Chris@269 365 bases << "easyhg-merge.sh";
Chris@272 366 #endif
Chris@269 367 // NB it's not a good idea to add other tools here, as command
Chris@269 368 // line argument ordering varies. Configure them through hgrc
Chris@269 369 // instead
Chris@239 370 bool found = false;
Chris@239 371 foreach (QString base, bases) {
Chris@239 372 merge = findInPath(base, m_installPath, true);
Chris@239 373 if (merge != "") {
Chris@239 374 found = true;
Chris@239 375 break;
Chris@239 376 }
Chris@239 377 }
Chris@239 378 if (found) {
Chris@239 379 settings.setValue("mergebinary", merge);
Chris@239 380 }
Chris@239 381 }
Chris@239 382
Chris@239 383 void
chris@406 384 SettingsDialog::findSshBinaryName()
chris@406 385 {
chris@406 386 QSettings settings;
chris@406 387 settings.beginGroup("Locations");
Chris@465 388 QString ssh = settings.value("sshbinary", "").toString();
Chris@465 389 if (ssh != "" && QFile(ssh).exists()) {
chris@406 390 return;
chris@406 391 }
chris@406 392 QStringList bases;
chris@406 393 #ifdef Q_OS_WIN32
chris@406 394 bases << "TortoisePlink.exe";
chris@406 395 #else
chris@406 396 bases << "ssh";
chris@406 397 #endif
chris@406 398 bool found = false;
chris@406 399 foreach (QString base, bases) {
chris@406 400 ssh = findInPath(base, m_installPath, true);
chris@406 401 if (ssh != "") {
chris@406 402 found = true;
chris@406 403 break;
chris@406 404 }
chris@406 405 }
chris@406 406 if (found) {
chris@406 407 settings.setValue("sshbinary", ssh);
chris@406 408 }
chris@406 409 }
chris@406 410
chris@406 411 void
Chris@239 412 SettingsDialog::clear()
Chris@239 413 {
Chris@239 414 // Clear everything that has a default setting
Chris@239 415 DEBUG << "SettingsDialog::clear" << endl;
Chris@239 416 QSettings settings;
Chris@239 417 settings.beginGroup("Presentation");
Chris@239 418 settings.remove("showiconlabels");
Chris@239 419 settings.remove("showhelpfultext");
Chris@466 420 settings.remove("dateformat");
Chris@239 421 settings.endGroup();
Chris@239 422 settings.beginGroup("Locations");
Chris@239 423 settings.remove("hgbinary");
Chris@239 424 settings.remove("extdiffbinary");
Chris@239 425 settings.remove("mergebinary");
chris@406 426 settings.remove("sshbinary");
Chris@239 427 settings.remove("extensionpath");
Chris@239 428 settings.endGroup();
Chris@484 429 settings.beginGroup("");
Chris@239 430 settings.remove("useextension");
sam@633 431 settings.remove("multipleDiffInstances");
Chris@239 432 settings.endGroup();
Chris@239 433 }
Chris@239 434
Chris@239 435 void
Chris@239 436 SettingsDialog::reset()
Chris@239 437 {
Chris@239 438 DEBUG << "SettingsDialog::reset" << endl;
Chris@239 439 QSettings settings;
Chris@239 440 settings.beginGroup("User Information");
Chris@239 441 m_nameEdit->setText(settings.value("name", getUserRealName()).toString());
Chris@239 442 m_emailEdit->setText(settings.value("email").toString());
Chris@239 443 settings.endGroup();
Chris@239 444 settings.beginGroup("Presentation");
Chris@239 445 m_showIconLabels->setChecked(settings.value("showiconlabels", true).toBool());
Chris@239 446 m_showExtraText->setChecked(settings.value("showhelpfultext", true).toBool());
Chris@273 447 #ifdef NOT_IMPLEMENTED_YET
Chris@273 448 m_workHistoryArrangement->setCurrentIndex(settings.value("workhistoryarrangement", 0).toInt());
Chris@273 449 #endif
Chris@273 450 m_dateFormat->setCurrentIndex(settings.value("dateformat", 0).toInt());
mikel@617 451 m_dateFrom->setDate(settings.value("datefrom", QDate(2000, 1, 1)).toDate());
Chris@239 452 settings.endGroup();
Chris@239 453 settings.beginGroup("Locations");
Chris@239 454 m_hgPathLabel->setText(settings.value("hgbinary").toString());
Chris@239 455 m_diffPathLabel->setText(settings.value("extdiffbinary").toString());
Chris@239 456 m_mergePathLabel->setText(settings.value("mergebinary").toString());
chris@406 457 m_sshPathLabel->setText(settings.value("sshbinary").toString());
Chris@239 458 m_extensionPathLabel->setText(settings.value("extensionpath").toString());
Chris@239 459 settings.endGroup();
Chris@484 460 settings.beginGroup("");
Chris@239 461 m_useExtension->setChecked(settings.value("useextension", true).toBool());
sam@628 462 useExtension(m_useExtension->isChecked());
sam@633 463 m_multipleDiffInstances->setChecked(settings.value("multipleDiffInstances", false).toBool());
Chris@239 464 settings.endGroup();
Chris@239 465 }
Chris@239 466
Chris@239 467 void
Chris@175 468 SettingsDialog::accept()
Chris@175 469 {
Chris@177 470 DEBUG << "SettingsDialog::accept" << endl;
Chris@175 471 QSettings settings;
Chris@175 472 settings.beginGroup("User Information");
Chris@175 473 settings.setValue("name", m_nameEdit->text());
Chris@175 474 settings.setValue("email", m_emailEdit->text());
Chris@175 475 settings.endGroup();
Chris@230 476 settings.beginGroup("Presentation");
Chris@230 477 bool b;
Chris@230 478 b = m_showIconLabels->isChecked();
Chris@230 479 if (b != settings.value("showiconlabels", true)) {
Chris@230 480 settings.setValue("showiconlabels", b);
Chris@230 481 m_presentationChanged = true;
Chris@230 482 }
Chris@230 483 b = m_showExtraText->isChecked();
Chris@230 484 if (b != settings.value("showhelpfultext", true)) {
Chris@230 485 settings.setValue("showhelpfultext", b);
Chris@230 486 m_presentationChanged = true;
Chris@230 487 }
Chris@273 488 int i;
Chris@273 489 #ifdef NOT_IMPLEMENTED_YET
Chris@273 490 i = m_workHistoryArrangement->currentIndex();
Chris@273 491 if (i != settings.value("workhistoryarrangement", 0)) {
Chris@273 492 settings.setValue("workhistoryarrangement", i);
Chris@273 493 m_presentationChanged = true;
Chris@273 494 }
Chris@273 495 #endif
Chris@273 496 i = m_dateFormat->currentIndex();
Chris@273 497 if (i != settings.value("dateformat", 0)) {
Chris@273 498 settings.setValue("dateformat", i);
Chris@273 499 m_presentationChanged = true;
Chris@273 500 }
mikel@617 501 if(settings.value("datefrom") != m_dateFrom->date()){
mikel@617 502 settings.setValue("datefrom", m_dateFrom->date());
mikel@617 503 m_presentationChanged = true;
mikel@617 504 }
mikel@617 505
Chris@230 506 settings.endGroup();
Chris@175 507 settings.beginGroup("Locations");
Chris@181 508 settings.setValue("hgbinary", m_hgPathLabel->text());
Chris@181 509 settings.setValue("extdiffbinary", m_diffPathLabel->text());
Chris@181 510 settings.setValue("mergebinary", m_mergePathLabel->text());
chris@406 511 settings.setValue("sshbinary", m_sshPathLabel->text());
Chris@181 512 settings.setValue("extensionpath", m_extensionPathLabel->text());
Chris@176 513 settings.endGroup();
Chris@484 514 settings.beginGroup("");
Chris@176 515 settings.setValue("useextension", m_useExtension->isChecked());
sam@633 516 settings.setValue("multipleDiffInstances", m_multipleDiffInstances->isChecked());
Chris@175 517 settings.endGroup();
Chris@175 518 QDialog::accept();
Chris@175 519 }
Chris@175 520
Chris@175 521