annotate settingsdialog.cpp @ 33:ff8d64625aa3

Added retry_merge. Fixed bug in "after merge" commit.
author Jari Korhonen <jtkorhonen@gmail.com>
date Sat, 19 Jun 2010 00:23:09 +0300
parents 45bfb8dc1faf
children c76782c14371
rev   line source
jtkorhonen@30 1 /****************************************************************************
jtkorhonen@30 2 ** Copyright (C) Jari Korhonen, 2010 (under lgpl)
jtkorhonen@30 3 ****************************************************************************/
jtkorhonen@0 4
jtkorhonen@0 5 #include "settingsdialog.h"
jtkorhonen@0 6
jtkorhonen@0 7 #include <QHBoxLayout>
jtkorhonen@0 8 #include <QVBoxLayout>
jtkorhonen@0 9
jtkorhonen@0 10 SettingsDialog::SettingsDialog(QWidget *parent): QDialog(parent)
jtkorhonen@0 11 {
jtkorhonen@0 12 QPushButton *okButton;
jtkorhonen@0 13 QPushButton *cancelButton;
jtkorhonen@0 14
jtkorhonen@0 15 mainWnd = (MainWindow *) parent;
jtkorhonen@0 16
jtkorhonen@0 17 userInfoLabel = new QLabel(tr("User info for commits, e.g. John Smith <john.smith@mail.com>"));
jtkorhonen@0 18 userInfoLineEdit = new QLineEdit(mainWnd->userInfo);
jtkorhonen@0 19 userInfoLabel -> setBuddy(userInfoLineEdit);
jtkorhonen@0 20
jtkorhonen@0 21 remoteRepoLabel = new QLabel(tr("Remote repository path, e.g. http://192.168.1.10:8000/ or /home/mike/anotherrepo/ or c:\\anotherrepo\\"));
jtkorhonen@30 22 remoteRepoCombo = new QComboBox();
jtkorhonen@30 23 remoteRepoCombo -> insertItem(0, mainWnd->remoteRepoPath);
jtkorhonen@30 24 for(int i = 0; i < NUM_PATHS_IN_MRU_LIST; i++)
jtkorhonen@30 25 {
jtkorhonen@30 26 remoteRepoCombo -> insertItem(i + 1, mainWnd -> remoteRepoMruList[i]);
jtkorhonen@30 27 }
jtkorhonen@30 28 remoteRepoCombo -> setEditable(true);
jtkorhonen@30 29 remoteRepoLabel -> setBuddy(remoteRepoCombo);
jtkorhonen@0 30 remoteRepoBrowseButton = new QPushButton(tr("Browse..."));
jtkorhonen@0 31
jtkorhonen@0 32 workFolderLabel = new QLabel(tr("Local work folder path, e.g. /home/mike/work/ or c:\\mike\\work\\"));
jtkorhonen@30 33 workFolderCombo = new QComboBox();
jtkorhonen@30 34 workFolderCombo -> insertItem(0, mainWnd -> workFolderPath);
jtkorhonen@30 35 for(int i = 0; i < NUM_PATHS_IN_MRU_LIST; i++)
jtkorhonen@30 36 {
jtkorhonen@30 37 workFolderCombo -> insertItem(i + 1, mainWnd -> workFolderMruList[i]);
jtkorhonen@30 38 }
jtkorhonen@30 39 workFolderCombo -> setEditable(true);
jtkorhonen@30 40 workFolderLabel -> setBuddy(workFolderCombo);
jtkorhonen@0 41 workFolderBrowseButton = new QPushButton(tr("Browse..."));
jtkorhonen@0 42
jtkorhonen@0 43 okButton = new QPushButton(tr("Ok"));
jtkorhonen@0 44 cancelButton = new QPushButton(tr("Cancel"));
jtkorhonen@0 45
jtkorhonen@0 46 QHBoxLayout *btnLayout = new QHBoxLayout;
jtkorhonen@0 47 btnLayout -> addWidget(okButton);
jtkorhonen@0 48 btnLayout -> addWidget(cancelButton);
jtkorhonen@0 49 btnLayout -> addStretch();
jtkorhonen@0 50
jtkorhonen@0 51 QHBoxLayout *workFolderLayout = new QHBoxLayout;
jtkorhonen@30 52 workFolderLayout -> addWidget(workFolderCombo, 3);
jtkorhonen@30 53 workFolderLayout -> addWidget(workFolderBrowseButton, 1);
jtkorhonen@0 54
jtkorhonen@0 55 QHBoxLayout *remoteRepoLayout = new QHBoxLayout;
jtkorhonen@30 56 remoteRepoLayout -> addWidget(remoteRepoCombo, 3);
jtkorhonen@30 57 remoteRepoLayout -> addWidget(remoteRepoBrowseButton, 1);
jtkorhonen@0 58
jtkorhonen@0 59 QVBoxLayout *mainLayout = new QVBoxLayout;
jtkorhonen@0 60
jtkorhonen@0 61 mainLayout -> addWidget(userInfoLabel);
jtkorhonen@0 62 mainLayout -> addWidget(userInfoLineEdit);
jtkorhonen@0 63
jtkorhonen@0 64 mainLayout -> addWidget(remoteRepoLabel);
jtkorhonen@0 65 mainLayout -> addLayout(remoteRepoLayout);
jtkorhonen@0 66
jtkorhonen@0 67 mainLayout -> addWidget(workFolderLabel);
jtkorhonen@0 68 mainLayout -> addLayout(workFolderLayout);
jtkorhonen@0 69
jtkorhonen@0 70 mainLayout -> addLayout(btnLayout);
jtkorhonen@0 71
jtkorhonen@0 72 setLayout(mainLayout);
jtkorhonen@0 73
jtkorhonen@0 74 connect(okButton, SIGNAL(clicked()), this, SLOT(okClicked()));
jtkorhonen@0 75 connect(cancelButton, SIGNAL(clicked()), this, SLOT(cancelClicked()));
jtkorhonen@0 76 connect(workFolderBrowseButton, SIGNAL(clicked()), this, SLOT(browseWorkFolder()));
jtkorhonen@0 77 connect(remoteRepoBrowseButton, SIGNAL(clicked()), this, SLOT(browseRemoteRepo()));
jtkorhonen@0 78 }
jtkorhonen@0 79
jtkorhonen@0 80 #define EMPTY_DIR 2
jtkorhonen@0 81
jtkorhonen@0 82 void SettingsDialog::okClicked()
jtkorhonen@0 83 {
jtkorhonen@30 84 QString tmp;
jtkorhonen@30 85
jtkorhonen@0 86 mainWnd -> firstStart = false;
jtkorhonen@0 87 mainWnd -> userInfo = userInfoLineEdit->text();
jtkorhonen@9 88
jtkorhonen@30 89 if (mainWnd -> remoteRepoPath != remoteRepoCombo-> currentText())
jtkorhonen@9 90 {
jtkorhonen@30 91 insertPathToMruList(mainWnd -> remoteRepoPath, mainWnd -> remoteRepoMruList);
jtkorhonen@30 92 mainWnd -> remoteRepoPath = remoteRepoCombo-> currentText();
jtkorhonen@30 93 }
jtkorhonen@30 94
jtkorhonen@30 95 tmp = workFolderCombo -> currentText();
jtkorhonen@30 96 if (!tmp.endsWith(QDir::separator()))
jtkorhonen@30 97 {
jtkorhonen@30 98 tmp += QDir::separator();
jtkorhonen@30 99 }
jtkorhonen@30 100
jtkorhonen@30 101 if (mainWnd -> workFolderPath != tmp)
jtkorhonen@30 102 {
jtkorhonen@30 103 insertPathToMruList(mainWnd -> workFolderPath, mainWnd -> workFolderMruList);
jtkorhonen@30 104 mainWnd -> workFolderPath = tmp;
jtkorhonen@9 105 }
jtkorhonen@9 106
jtkorhonen@0 107 mainWnd -> writeSettings();
jtkorhonen@0 108 mainWnd -> enableDisableActions();
jtkorhonen@0 109 mainWnd -> hgStat();
jtkorhonen@0 110 mainWnd -> hgExp -> setWorkFolderAndRepoNames(mainWnd -> workFolderPath, mainWnd -> remoteRepoPath);
jtkorhonen@0 111
jtkorhonen@0 112 QDir dir(mainWnd -> workFolderPath);
jtkorhonen@0 113 if (dir.exists(mainWnd -> workFolderPath))
jtkorhonen@0 114 {
jtkorhonen@0 115 uint cnt = dir.count();
jtkorhonen@0 116 if (cnt == EMPTY_DIR)
jtkorhonen@0 117 {
jtkorhonen@0 118 QMessageBox::information(this, tr("Todo"), tr("Your chosen workfolder is empty.\nChoose \"File/Clone from remote\"\nto download a remote repository.\nYou can also choose \"File/Init local repository\"\nto initialize repository and add files later."));
jtkorhonen@0 119 }
jtkorhonen@0 120 else
jtkorhonen@0 121 {
jtkorhonen@0 122 QString repoPath = mainWnd -> workFolderPath + getHgDirName();
jtkorhonen@0 123 QDir repoDir(repoPath);
jtkorhonen@0 124 if (!repoDir.exists())
jtkorhonen@0 125 {
jtkorhonen@0 126 QMessageBox::information(this, tr("Todo"), tr("Your chosen workfolder is not empty,\nbut does not yet contain a repository.\nChoose \"File/Init local repository\" \nto initialize repository."));
jtkorhonen@0 127 }
jtkorhonen@0 128 }
jtkorhonen@0 129 }
jtkorhonen@0 130
jtkorhonen@0 131
jtkorhonen@0 132 close();
jtkorhonen@0 133 }
jtkorhonen@0 134
jtkorhonen@0 135
jtkorhonen@0 136 void SettingsDialog::cancelClicked()
jtkorhonen@0 137 {
jtkorhonen@0 138 close();
jtkorhonen@0 139 }
jtkorhonen@0 140
jtkorhonen@0 141
jtkorhonen@30 142 void SettingsDialog::insertPathToMruList(QString path, QString mruList[])
jtkorhonen@30 143 {
jtkorhonen@30 144 bool matchFound = false;
jtkorhonen@30 145
jtkorhonen@30 146 for(int i = 0; i < NUM_PATHS_IN_MRU_LIST; i++)
jtkorhonen@30 147 {
jtkorhonen@30 148 if (path == mruList[i])
jtkorhonen@30 149 {
jtkorhonen@30 150 matchFound = true;
jtkorhonen@30 151 break;
jtkorhonen@30 152 }
jtkorhonen@30 153 }
jtkorhonen@30 154
jtkorhonen@30 155 if (!matchFound)
jtkorhonen@30 156 {
jtkorhonen@30 157 for(int i = NUM_PATHS_IN_MRU_LIST - 2; i >= 0; i--)
jtkorhonen@30 158 {
jtkorhonen@30 159 if (i == 0)
jtkorhonen@30 160 {
jtkorhonen@30 161 mruList[1] = mruList[0];
jtkorhonen@30 162 mruList[0] = path;
jtkorhonen@30 163 }
jtkorhonen@30 164 else
jtkorhonen@30 165 {
jtkorhonen@30 166 mruList[i + 1] = mruList[i];
jtkorhonen@30 167 }
jtkorhonen@30 168 }
jtkorhonen@30 169 }
jtkorhonen@30 170 }
jtkorhonen@30 171
jtkorhonen@30 172
jtkorhonen@30 173 void SettingsDialog::browseDirAndSetCombo(QComboBox *combo)
jtkorhonen@0 174 {
jtkorhonen@0 175 QString dir;
jtkorhonen@0 176 QString startDir;
jtkorhonen@0 177 QString system;
jtkorhonen@0 178
jtkorhonen@0 179 system = getSystem();
jtkorhonen@0 180 if ((system == "Linux") || (system == "Mac"))
jtkorhonen@0 181 {
jtkorhonen@0 182 startDir = QDir::homePath();
jtkorhonen@0 183 }
jtkorhonen@0 184 else
jtkorhonen@0 185 {
jtkorhonen@0 186 startDir = "c:\\";
jtkorhonen@0 187 }
jtkorhonen@0 188
jtkorhonen@0 189 dir = QFileDialog::getExistingDirectory(this, tr("Open Directory"),
jtkorhonen@0 190 startDir,
jtkorhonen@0 191 QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);
jtkorhonen@0 192
jtkorhonen@30 193 combo -> setItemText(0, dir + QDir::separator());
jtkorhonen@0 194 }
jtkorhonen@0 195
jtkorhonen@0 196 void SettingsDialog::browseWorkFolder()
jtkorhonen@0 197 {
jtkorhonen@30 198 browseDirAndSetCombo(workFolderCombo);
jtkorhonen@0 199 }
jtkorhonen@0 200
jtkorhonen@0 201 void SettingsDialog::browseRemoteRepo()
jtkorhonen@0 202 {
jtkorhonen@30 203 browseDirAndSetCombo(remoteRepoCombo);
jtkorhonen@0 204 }
jtkorhonen@0 205
jtkorhonen@0 206