Mercurial > hg > easyhg
diff settingsdialog.cpp @ 0:a9098eba2ee5
Initial commit.
author | Jari Korhonen <jtkorhonen@gmail.com> |
---|---|
date | Thu, 22 Apr 2010 03:15:35 +0300 |
parents | |
children | e275d0b5d6ca |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/settingsdialog.cpp Thu Apr 22 03:15:35 2010 +0300 @@ -0,0 +1,143 @@ +//** Copyright (C) Jari Korhonen, 2010 (under lgpl) + +#include "settingsdialog.h" + +#include <QHBoxLayout> +#include <QVBoxLayout> + + +SettingsDialog::SettingsDialog(QWidget *parent): QDialog(parent) +{ + QPushButton *okButton; + QPushButton *cancelButton; + + mainWnd = (MainWindow *) parent; + + userInfoLabel = new QLabel(tr("User info for commits, e.g. John Smith <john.smith@mail.com>")); + userInfoLineEdit = new QLineEdit(mainWnd->userInfo); + userInfoLabel -> setBuddy(userInfoLineEdit); + + remoteRepoLabel = new QLabel(tr("Remote repository path, e.g. http://192.168.1.10:8000/ or /home/mike/anotherrepo/ or c:\\anotherrepo\\")); + remoteRepoLineEdit = new QLineEdit(mainWnd->remoteRepoPath); + remoteRepoLabel -> setBuddy(remoteRepoLineEdit); + remoteRepoBrowseButton = new QPushButton(tr("Browse...")); + + workFolderLabel = new QLabel(tr("Local work folder path, e.g. /home/mike/work/ or c:\\mike\\work\\")); + workFolderLineEdit = new QLineEdit(mainWnd -> workFolderPath); + workFolderLabel -> setBuddy(workFolderLineEdit); + workFolderBrowseButton = new QPushButton(tr("Browse...")); + + okButton = new QPushButton(tr("Ok")); + cancelButton = new QPushButton(tr("Cancel")); + + QHBoxLayout *btnLayout = new QHBoxLayout; + btnLayout -> addWidget(okButton); + btnLayout -> addWidget(cancelButton); + btnLayout -> addStretch(); + + QHBoxLayout *workFolderLayout = new QHBoxLayout; + workFolderLayout -> addWidget(workFolderLineEdit); + workFolderLayout -> addWidget(workFolderBrowseButton); + + QHBoxLayout *remoteRepoLayout = new QHBoxLayout; + remoteRepoLayout -> addWidget(remoteRepoLineEdit); + remoteRepoLayout -> addWidget(remoteRepoBrowseButton); + + QVBoxLayout *mainLayout = new QVBoxLayout; + + mainLayout -> addWidget(userInfoLabel); + mainLayout -> addWidget(userInfoLineEdit); + + mainLayout -> addWidget(remoteRepoLabel); + mainLayout -> addLayout(remoteRepoLayout); + + mainLayout -> addWidget(workFolderLabel); + mainLayout -> addLayout(workFolderLayout); + + mainLayout -> addLayout(btnLayout); + + setLayout(mainLayout); + + connect(okButton, SIGNAL(clicked()), this, SLOT(okClicked())); + connect(cancelButton, SIGNAL(clicked()), this, SLOT(cancelClicked())); + connect(workFolderBrowseButton, SIGNAL(clicked()), this, SLOT(browseWorkFolder())); + connect(remoteRepoBrowseButton, SIGNAL(clicked()), this, SLOT(browseRemoteRepo())); +} + +#define EMPTY_DIR 2 + +void SettingsDialog::okClicked() +{ + mainWnd -> firstStart = false; + mainWnd -> userInfo = userInfoLineEdit->text(); + mainWnd -> remoteRepoPath = remoteRepoLineEdit->text(); + mainWnd -> workFolderPath = workFolderLineEdit -> text(); + mainWnd -> writeSettings(); + mainWnd -> enableDisableActions(); + mainWnd -> hgStat(); + mainWnd -> hgExp -> setWorkFolderAndRepoNames(mainWnd -> workFolderPath, mainWnd -> remoteRepoPath); + + QDir dir(mainWnd -> workFolderPath); + if (dir.exists(mainWnd -> workFolderPath)) + { + uint cnt = dir.count(); + if (cnt == EMPTY_DIR) + { + 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.")); + } + else + { + QString repoPath = mainWnd -> workFolderPath + getHgDirName(); + QDir repoDir(repoPath); + if (!repoDir.exists()) + { + 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.")); + } + } + } + + + close(); +} + + +void SettingsDialog::cancelClicked() +{ + close(); +} + + +void SettingsDialog::browseDirAndSetLineEdit(QLineEdit *lineEdit) +{ + QString dir; + QString startDir; + QString system; + + system = getSystem(); + if ((system == "Linux") || (system == "Mac")) + { + startDir = QDir::homePath(); + } + else + { + startDir = "c:\\"; + } + + dir = QFileDialog::getExistingDirectory(this, tr("Open Directory"), + startDir, + QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks); + + lineEdit->setText(dir + QDir::separator()); +} + +void SettingsDialog::browseWorkFolder() +{ + browseDirAndSetLineEdit(workFolderLineEdit); +} + +void SettingsDialog::browseRemoteRepo() +{ + browseDirAndSetLineEdit(remoteRepoLineEdit); +} + +