annotate src/settingsdialog.cpp @ 672:88fa1544b407

Merge from branch qt5. There's much more to be done before we can make another release, but clearly it's going to be done using qt5
author Chris Cannam
date Wed, 05 Dec 2018 09:44:10 +0000
parents ae67ea0af696
children
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@644 8 Copyright (c) 2013 Chris Cannam
Chris@644 9 Copyright (c) 2013 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
sam@636 90 m_showHistoryAutomatically = new QCheckBox(tr("Switch to history tab automatically when history changes"));
sam@634 91 lookLayout->addWidget(m_showHistoryAutomatically, row++, 0, 1, 2);
sam@634 92
Chris@273 93 #ifdef NOT_IMPLEMENTED_YET
Chris@273 94 lookLayout->addWidget(new QLabel(tr("Place the work and history views")), row, 0);
Chris@273 95 m_workHistoryArrangement = new QComboBox();
Chris@273 96 m_workHistoryArrangement->addItem(tr("In separate tabs"));
Chris@273 97 m_workHistoryArrangement->addItem(tr("Side-by-side in a single pane"));
Chris@273 98 lookLayout->addWidget(m_workHistoryArrangement, row++, 1, Qt::AlignLeft);
Chris@273 99 lookLayout->setColumnStretch(1, 20);
Chris@273 100 #endif
Chris@230 101
mikel@617 102 lookLayout->addWidget(new QLabel(tr("History timeline from")), row, 0);
mikel@617 103 m_dateFrom = new QDateEdit();
mikel@617 104 m_dateFrom->setCalendarPopup(true);
mikel@617 105 lookLayout->addWidget(m_dateFrom, row++, 1, Qt::AlignLeft);
mikel@617 106
Chris@273 107 lookLayout->addWidget(new QLabel(tr("Label the history timeline with")), row, 0);
Chris@273 108 m_dateFormat = new QComboBox();
Chris@273 109 m_dateFormat->addItem(tr("Ages, for example \"5 weeks ago\""));
Chris@273 110 m_dateFormat->addItem(tr("Dates, for example \"2010-06-23\""));
Chris@273 111 lookLayout->addWidget(m_dateFormat, row++, 1, Qt::AlignLeft);
Chris@466 112
mikel@617 113 lookLayout->setColumnStretch(1, 10);
Chris@466 114 lookLayout->setRowStretch(row, 20);
Chris@273 115
Chris@230 116
Chris@466 117 QWidget *pathsBox = new QWidget;
Chris@642 118 m_tabs->addTab(pathsBox, tr("System applications"));
Chris@466 119
Chris@175 120 QGridLayout *pathsLayout = new QGridLayout;
Chris@175 121 pathsBox->setLayout(pathsLayout);
Chris@175 122
Chris@175 123 row = 0;
Chris@175 124
Chris@175 125 pathsLayout->addWidget(new QLabel(tr("Mercurial (hg) program:")), row, 0);
Chris@175 126
Chris@195 127 m_hgPathLabel = new QLineEdit();
Chris@181 128 pathsLayout->addWidget(m_hgPathLabel, row, 2);
Chris@175 129
Chris@175 130 QPushButton *browse = new QPushButton(tr("Browse..."));
Chris@181 131 pathsLayout->addWidget(browse, row++, 1);
Chris@175 132 connect(browse, SIGNAL(clicked()), this, SLOT(hgPathBrowse()));
Chris@175 133
Chris@175 134 pathsLayout->addWidget(new QLabel(tr("External diff program:")), row, 0);
Chris@175 135
Chris@195 136 m_diffPathLabel = new QLineEdit();
Chris@181 137 pathsLayout->addWidget(m_diffPathLabel, row, 2);
Chris@175 138
Chris@175 139 browse = new QPushButton(tr("Browse..."));
Chris@181 140 pathsLayout->addWidget(browse, row++, 1);
Chris@175 141 connect(browse, SIGNAL(clicked()), this, SLOT(diffPathBrowse()));
sam@633 142
Chris@641 143 m_multipleDiffInstances = new QCheckBox(tr("Run multiple instances for multiple files"));
sam@633 144 pathsLayout->addWidget(m_multipleDiffInstances, row++, 2);
sam@633 145
Chris@642 146 pathsLayout->addWidget(new QLabel(tr("External merge program:")), row, 0);
Chris@175 147
Chris@195 148 m_mergePathLabel = new QLineEdit();
Chris@181 149 pathsLayout->addWidget(m_mergePathLabel, row, 2);
Chris@175 150
Chris@175 151 browse = new QPushButton(tr("Browse..."));
Chris@181 152 pathsLayout->addWidget(browse, row++, 1);
Chris@175 153 connect(browse, SIGNAL(clicked()), this, SLOT(mergePathBrowse()));
Chris@175 154
chris@406 155 pathsLayout->addWidget(new QLabel(tr("SSH program (for ssh URLs):")), row, 0);
chris@406 156
chris@406 157 m_sshPathLabel = new QLineEdit();
chris@406 158 pathsLayout->addWidget(m_sshPathLabel, row, 2);
chris@406 159
chris@406 160 browse = new QPushButton(tr("Browse..."));
chris@406 161 pathsLayout->addWidget(browse, row++, 1);
chris@406 162 connect(browse, SIGNAL(clicked()), this, SLOT(sshPathBrowse()));
chris@406 163
Chris@642 164
Chris@642 165 QWidget *extBox = new QWidget;
Chris@642 166 m_tabs->addTab(extBox, tr("Extensions"));
Chris@642 167
Chris@642 168 QGridLayout *extLayout = new QGridLayout;
Chris@642 169 extBox->setLayout(extLayout);
Chris@642 170
Chris@642 171 row = 0;
Chris@642 172
sam@628 173 m_useExtension = new QCheckBox(tr("Use EasyHg Mercurial extension"));
Chris@642 174 extLayout->addWidget(m_useExtension, row++, 0, 1, 2);
Chris@642 175 extLayout->addWidget(new QLabel(tr("This extension may be required for password entry when using https\nprotocols. It also provides the \"remember password\" feature.")), row++, 0, 1, 3);
Chris@642 176
Chris@642 177 extLayout->addWidget(new QLabel(tr("Extension file path:")), row, 0);
Chris@176 178
Chris@195 179 m_extensionPathLabel = new QLineEdit();
Chris@642 180 extLayout->addWidget(m_extensionPathLabel, row, 2);
Chris@176 181
Chris@642 182 browse = new QPushButton(tr("Browse..."));
Chris@642 183 extLayout->addWidget(browse, row++, 1);
Chris@642 184 connect(browse, SIGNAL(clicked()), this, SLOT(extensionPathBrowse()));
Chris@176 185
Chris@642 186 extLayout->setRowStretch(row, 20);
Chris@642 187 extLayout->setColumnStretch(2, 20);
Chris@466 188
Chris@176 189
Chris@239 190 reset(); // loads current defaults from settings
Chris@175 191
Chris@230 192
Chris@175 193 QDialogButtonBox *bbox = new QDialogButtonBox(QDialogButtonBox::Ok);
Chris@239 194 connect(bbox->addButton(tr("Restore defaults"), QDialogButtonBox::ResetRole),
Chris@239 195 SIGNAL(clicked()), this, SLOT(restoreDefaults()));
Chris@175 196 connect(bbox, SIGNAL(accepted()), this, SLOT(accept()));
Chris@230 197 mainLayout->addWidget(bbox, 3, 0);
Chris@175 198 m_ok = bbox->button(QDialogButtonBox::Ok);
Chris@175 199 }
Chris@175 200
Chris@175 201 void
Chris@472 202 SettingsDialog::setCurrentTab(Tab t)
Chris@472 203 {
Chris@472 204 switch (t) {
Chris@472 205 case PersonalDetailsTab: m_tabs->setCurrentIndex(0); break;
Chris@472 206 case PresentationTab: m_tabs->setCurrentIndex(1); break;
Chris@472 207 case PathsTab: m_tabs->setCurrentIndex(2); break;
Chris@642 208 case ExtensionsTab: m_tabs->setCurrentIndex(3); break;
Chris@472 209 }
Chris@472 210 }
Chris@472 211
Chris@472 212 void
Chris@175 213 SettingsDialog::hgPathBrowse()
Chris@175 214 {
Chris@181 215 browseFor(tr("Mercurial program"), m_hgPathLabel);
Chris@175 216 }
Chris@175 217
Chris@175 218 void
Chris@175 219 SettingsDialog::diffPathBrowse()
Chris@175 220 {
Chris@181 221 browseFor(tr("External diff program"), m_diffPathLabel);
Chris@175 222 }
Chris@175 223
Chris@175 224 void
Chris@175 225 SettingsDialog::mergePathBrowse()
Chris@175 226 {
Chris@181 227 browseFor(tr("External file-merge program"), m_mergePathLabel);
Chris@175 228 }
Chris@175 229
Chris@175 230 void
chris@406 231 SettingsDialog::sshPathBrowse()
chris@406 232 {
chris@406 233 browseFor(tr("SSH program"), m_sshPathLabel);
chris@406 234 }
chris@406 235
chris@406 236 void
Chris@176 237 SettingsDialog::extensionPathBrowse()
Chris@176 238 {
Chris@642 239 browseFor(tr("EasyMercurial extension"), m_extensionPathLabel);
sam@628 240 }
sam@628 241
sam@628 242 void
Chris@195 243 SettingsDialog::browseFor(QString title, QLineEdit *edit)
Chris@181 244 {
Chris@181 245 QString origin = edit->text();
Chris@181 246
Chris@181 247 if (origin == "") {
Chris@181 248 #ifdef Q_OS_WIN32
Chris@181 249 origin = "c:";
Chris@181 250 #else
Chris@181 251 origin = QDir::homePath();
Chris@181 252 #endif
Chris@181 253 }
Chris@181 254
Chris@181 255 QString path = QFileDialog::getOpenFileName(this, title, origin);
Chris@181 256 if (path != QString()) {
Chris@181 257 edit->setText(path);
Chris@181 258 }
Chris@176 259 }
Chris@176 260
Chris@176 261 void
Chris@239 262 SettingsDialog::restoreDefaults()
Chris@239 263 {
Chris@273 264 if (QMessageBox::question
Chris@273 265 (this, tr("Restore default settings?"),
Chris@273 266 tr("<qt><b>Restore default settings?</b><br><br>Are you sure you want to reset all settings to their default values?"),
Chris@273 267 QMessageBox::Ok | QMessageBox::Cancel,
Chris@273 268 QMessageBox::Cancel) == QMessageBox::Ok) {
Chris@273 269 clear();
Chris@273 270 findDefaultLocations();
Chris@273 271 reset();
Chris@273 272 }
Chris@239 273 }
Chris@239 274
Chris@239 275 void
Chris@239 276 SettingsDialog::findDefaultLocations(QString installPath)
Chris@239 277 {
Chris@239 278 m_installPath = installPath;
Chris@239 279 findHgBinaryName();
Chris@239 280 findExtension();
Chris@239 281 findDiffBinaryName();
Chris@239 282 findMergeBinaryName();
chris@406 283 findSshBinaryName();
Chris@239 284 }
Chris@239 285
Chris@239 286 void
Chris@239 287 SettingsDialog::findHgBinaryName()
Chris@239 288 {
Chris@239 289 QSettings settings;
Chris@239 290 settings.beginGroup("Locations");
Chris@239 291 QString hg = settings.value("hgbinary", "").toString();
Chris@611 292 if (hg == "" || !QFile(hg).exists()) {
Chris@239 293 hg = findInPath("hg", m_installPath, true);
Chris@239 294 }
Chris@239 295 if (hg != "") {
Chris@239 296 settings.setValue("hgbinary", hg);
Chris@239 297 }
Chris@239 298 }
Chris@239 299
Chris@240 300 QString
Chris@240 301 SettingsDialog::getUnbundledExtensionFileName()
Chris@240 302 {
Chris@240 303 QString home = QDir::homePath();
Chris@240 304 QString target = QString("%1/.easyhg").arg(home);
Chris@240 305 QString extpath = QString("%1/easyhg.py").arg(target);
Chris@240 306 return extpath;
Chris@240 307 }
Chris@240 308
Chris@239 309 void
Chris@239 310 SettingsDialog::findExtension()
Chris@239 311 {
Chris@239 312 QSettings settings;
Chris@239 313 settings.beginGroup("Locations");
Chris@239 314
Chris@239 315 QString extpath = settings.value("extensionpath", "").toString();
Chris@239 316 if (extpath != "" || !QFile(extpath).exists()) {
Chris@239 317
Chris@240 318 extpath = getUnbundledExtensionFileName();
Chris@239 319
Chris@239 320 if (!QFile(extpath).exists()) {
Chris@239 321 extpath = findInPath("easyhg.py", m_installPath, false);
Chris@239 322 }
Chris@239 323 }
Chris@239 324
Chris@239 325 settings.setValue("extensionpath", extpath);
Chris@239 326 }
Chris@239 327
Chris@239 328 void
Chris@239 329 SettingsDialog::findDiffBinaryName()
Chris@239 330 {
Chris@239 331 QSettings settings;
Chris@239 332 settings.beginGroup("Locations");
Chris@239 333 QString diff = settings.value("extdiffbinary", "").toString();
Chris@465 334 if (diff != "" && QFile(diff).exists()) {
Chris@465 335 return;
Chris@465 336 }
Chris@465 337 QStringList bases;
Chris@272 338 #ifdef Q_OS_WIN32
Chris@465 339 bases << "easyhg-extdiff.bat";
Chris@272 340 #else
Chris@465 341 bases << "easyhg-extdiff.sh";
Chris@272 342 #endif
Chris@465 343 bases << "kompare" << "kdiff3" << "meld";
Chris@465 344 bool found = false;
Chris@465 345 foreach (QString base, bases) {
Chris@465 346 diff = findInPath(base, m_installPath, true);
Chris@465 347 if (diff != "") {
Chris@465 348 found = true;
Chris@465 349 break;
Chris@239 350 }
Chris@465 351 }
Chris@465 352 if (found) {
Chris@465 353 settings.setValue("extdiffbinary", diff);
Chris@239 354 }
Chris@239 355 }
Chris@239 356
Chris@239 357 void
Chris@239 358 SettingsDialog::findMergeBinaryName()
Chris@239 359 {
Chris@239 360 QSettings settings;
Chris@239 361 settings.beginGroup("Locations");
Chris@465 362 QString merge = settings.value("mergebinary", "").toString();
Chris@465 363 if (merge != "" && QFile(merge).exists()) {
Chris@239 364 return;
Chris@239 365 }
Chris@239 366 QStringList bases;
Chris@272 367 #ifdef Q_OS_WIN32
Chris@272 368 bases << "easyhg-merge.bat";
Chris@272 369 #else
Chris@269 370 bases << "easyhg-merge.sh";
Chris@272 371 #endif
Chris@269 372 // NB it's not a good idea to add other tools here, as command
Chris@269 373 // line argument ordering varies. Configure them through hgrc
Chris@269 374 // instead
Chris@239 375 bool found = false;
Chris@239 376 foreach (QString base, bases) {
Chris@239 377 merge = findInPath(base, m_installPath, true);
Chris@239 378 if (merge != "") {
Chris@239 379 found = true;
Chris@239 380 break;
Chris@239 381 }
Chris@239 382 }
Chris@239 383 if (found) {
Chris@239 384 settings.setValue("mergebinary", merge);
Chris@239 385 }
Chris@239 386 }
Chris@239 387
Chris@239 388 void
chris@406 389 SettingsDialog::findSshBinaryName()
chris@406 390 {
chris@406 391 QSettings settings;
chris@406 392 settings.beginGroup("Locations");
Chris@465 393 QString ssh = settings.value("sshbinary", "").toString();
Chris@465 394 if (ssh != "" && QFile(ssh).exists()) {
chris@406 395 return;
chris@406 396 }
chris@406 397 QStringList bases;
chris@406 398 #ifdef Q_OS_WIN32
chris@406 399 bases << "TortoisePlink.exe";
chris@406 400 #else
chris@406 401 bases << "ssh";
chris@406 402 #endif
chris@406 403 bool found = false;
chris@406 404 foreach (QString base, bases) {
chris@406 405 ssh = findInPath(base, m_installPath, true);
chris@406 406 if (ssh != "") {
chris@406 407 found = true;
chris@406 408 break;
chris@406 409 }
chris@406 410 }
chris@406 411 if (found) {
chris@406 412 settings.setValue("sshbinary", ssh);
chris@406 413 }
chris@406 414 }
chris@406 415
chris@406 416 void
Chris@239 417 SettingsDialog::clear()
Chris@239 418 {
Chris@239 419 // Clear everything that has a default setting
Chris@239 420 DEBUG << "SettingsDialog::clear" << endl;
Chris@239 421 QSettings settings;
Chris@239 422 settings.beginGroup("Presentation");
Chris@239 423 settings.remove("showiconlabels");
Chris@239 424 settings.remove("showhelpfultext");
sam@634 425 settings.remove("showHistoryAutomatically");
Chris@466 426 settings.remove("dateformat");
Chris@239 427 settings.endGroup();
Chris@239 428 settings.beginGroup("Locations");
Chris@239 429 settings.remove("hgbinary");
Chris@239 430 settings.remove("extdiffbinary");
Chris@239 431 settings.remove("mergebinary");
chris@406 432 settings.remove("sshbinary");
Chris@239 433 settings.remove("extensionpath");
Chris@239 434 settings.endGroup();
Chris@484 435 settings.beginGroup("");
Chris@239 436 settings.remove("useextension");
sam@633 437 settings.remove("multipleDiffInstances");
Chris@239 438 settings.endGroup();
Chris@239 439 }
Chris@239 440
Chris@239 441 void
Chris@239 442 SettingsDialog::reset()
Chris@239 443 {
Chris@239 444 DEBUG << "SettingsDialog::reset" << endl;
Chris@239 445 QSettings settings;
Chris@239 446 settings.beginGroup("User Information");
Chris@239 447 m_nameEdit->setText(settings.value("name", getUserRealName()).toString());
Chris@239 448 m_emailEdit->setText(settings.value("email").toString());
Chris@239 449 settings.endGroup();
Chris@239 450 settings.beginGroup("Presentation");
Chris@239 451 m_showIconLabels->setChecked(settings.value("showiconlabels", true).toBool());
Chris@239 452 m_showExtraText->setChecked(settings.value("showhelpfultext", true).toBool());
sam@634 453 m_showHistoryAutomatically->setChecked(settings.value("showHistoryAutomatically", true).toBool());
Chris@273 454 #ifdef NOT_IMPLEMENTED_YET
Chris@273 455 m_workHistoryArrangement->setCurrentIndex(settings.value("workhistoryarrangement", 0).toInt());
Chris@273 456 #endif
Chris@273 457 m_dateFormat->setCurrentIndex(settings.value("dateformat", 0).toInt());
mikel@617 458 m_dateFrom->setDate(settings.value("datefrom", QDate(2000, 1, 1)).toDate());
Chris@239 459 settings.endGroup();
Chris@239 460 settings.beginGroup("Locations");
Chris@239 461 m_hgPathLabel->setText(settings.value("hgbinary").toString());
Chris@239 462 m_diffPathLabel->setText(settings.value("extdiffbinary").toString());
Chris@239 463 m_mergePathLabel->setText(settings.value("mergebinary").toString());
chris@406 464 m_sshPathLabel->setText(settings.value("sshbinary").toString());
Chris@239 465 m_extensionPathLabel->setText(settings.value("extensionpath").toString());
Chris@239 466 settings.endGroup();
Chris@484 467 settings.beginGroup("");
Chris@239 468 m_useExtension->setChecked(settings.value("useextension", true).toBool());
sam@633 469 m_multipleDiffInstances->setChecked(settings.value("multipleDiffInstances", false).toBool());
Chris@239 470 settings.endGroup();
Chris@239 471 }
Chris@239 472
Chris@239 473 void
Chris@175 474 SettingsDialog::accept()
Chris@175 475 {
Chris@177 476 DEBUG << "SettingsDialog::accept" << endl;
Chris@175 477 QSettings settings;
Chris@175 478 settings.beginGroup("User Information");
Chris@175 479 settings.setValue("name", m_nameEdit->text());
Chris@175 480 settings.setValue("email", m_emailEdit->text());
Chris@175 481 settings.endGroup();
Chris@230 482 settings.beginGroup("Presentation");
Chris@230 483 bool b;
Chris@230 484 b = m_showIconLabels->isChecked();
Chris@230 485 if (b != settings.value("showiconlabels", true)) {
Chris@230 486 settings.setValue("showiconlabels", b);
Chris@230 487 m_presentationChanged = true;
Chris@230 488 }
Chris@230 489 b = m_showExtraText->isChecked();
Chris@230 490 if (b != settings.value("showhelpfultext", true)) {
Chris@230 491 settings.setValue("showhelpfultext", b);
Chris@230 492 m_presentationChanged = true;
Chris@230 493 }
sam@634 494 settings.setValue("showHistoryAutomatically", m_showHistoryAutomatically->isChecked());
Chris@273 495 int i;
Chris@273 496 #ifdef NOT_IMPLEMENTED_YET
Chris@273 497 i = m_workHistoryArrangement->currentIndex();
Chris@273 498 if (i != settings.value("workhistoryarrangement", 0)) {
Chris@273 499 settings.setValue("workhistoryarrangement", i);
Chris@273 500 m_presentationChanged = true;
Chris@273 501 }
Chris@273 502 #endif
Chris@273 503 i = m_dateFormat->currentIndex();
Chris@273 504 if (i != settings.value("dateformat", 0)) {
Chris@273 505 settings.setValue("dateformat", i);
Chris@273 506 m_presentationChanged = true;
Chris@273 507 }
mikel@617 508 if(settings.value("datefrom") != m_dateFrom->date()){
mikel@617 509 settings.setValue("datefrom", m_dateFrom->date());
mikel@617 510 m_presentationChanged = true;
mikel@617 511 }
mikel@617 512
Chris@230 513 settings.endGroup();
Chris@175 514 settings.beginGroup("Locations");
Chris@181 515 settings.setValue("hgbinary", m_hgPathLabel->text());
Chris@181 516 settings.setValue("extdiffbinary", m_diffPathLabel->text());
Chris@181 517 settings.setValue("mergebinary", m_mergePathLabel->text());
chris@406 518 settings.setValue("sshbinary", m_sshPathLabel->text());
Chris@181 519 settings.setValue("extensionpath", m_extensionPathLabel->text());
Chris@176 520 settings.endGroup();
Chris@484 521 settings.beginGroup("");
Chris@176 522 settings.setValue("useextension", m_useExtension->isChecked());
sam@633 523 settings.setValue("multipleDiffInstances", m_multipleDiffInstances->isChecked());
Chris@175 524 settings.endGroup();
Chris@175 525 QDialog::accept();
Chris@175 526 }
Chris@175 527
Chris@175 528