From d87c651d4558726cc1d26d313c8c78d023674bcc Mon Sep 17 00:00:00 2001 From: kostas Date: Tue, 2 Jun 2015 14:48:51 +0000 Subject: [PATCH] - Cloning now uses the keychain to store credentials, and sets the default remote - Clone target fossil file now adds the fossil extension if missing - Fixed clipboard URL parsing for clone url - Added more actions to disable when a valid workspace is not available FossilOrigin-Name: e7d9b59c32aa0d0ad5c97b24d7562e448dad16f3 --- manifest | 14 +++++++------- manifest.uuid | 2 +- src/CloneDialog.cpp | 7 ++++++- src/MainWindow.cpp | 27 ++++++++++++++++++++++++--- 4 files changed, 38 insertions(+), 12 deletions(-) diff --git a/manifest b/manifest index ec53f56..acff23d 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fixed\slocalization\sconversion\sscript\sfor\senvironments\swithout\sBash.\sThanks\sRussell\n -D 2015-05-29T20:26:33.541 +C -\sCloning\snow\suses\sthe\skeychain\sto\sstore\scredentials,\sand\ssets\sthe\sdefault\sremote\n-\sClone\starget\sfossil\sfile\snow\sadds\sthe\sfossil\sextension\sif\smissing\n-\sFixed\sclipboard\sURL\sparsing\sfor\sclone\surl\n-\sAdded\smore\sactions\sto\sdisable\swhen\sa\svalid\sworkspace\sis\snot\savailable\n +D 2015-06-02T14:48:51.127 F .travis.yml 77966888a81c4ceee1fcc79bce842c9667ad8a35 F debian/changelog eb4304dfcb6bb66850ec740838090eb50ce1249b F debian/compat b6abd567fa79cbe0196d093a067271361dc6ca8b @@ -208,7 +208,7 @@ F rsrc/icons/fuel.png 40daf53b7f6bdcdd0d6aa5ef433d078ec5ea4342 F rsrc/resources.qrc 388225a5b09c56c12d4cbde8b4d0b4466740fc97 F src/BrowserWidget.cpp 8b8f545cdff4a4188edc698a1b4777f5df46f056 F src/BrowserWidget.h 764d66aa9a93b890298bd0301097739cb4e16597 -F src/CloneDialog.cpp 4fc5aa8146ac63ba6ba7341b1635b3025819d708 +F src/CloneDialog.cpp c341622b01d493387d6e4928018b3392d92471e8 F src/CloneDialog.h 8813d91f893eb3eb86a4ea5e50f9a53a0ea07047 F src/CommitDialog.cpp bbf5fe1c66d28068cc3fd061f4f9f1faa9e89196 F src/CommitDialog.h 921bf27c0c538ab9e9d6bdc750064337d346270b @@ -224,7 +224,7 @@ F src/FslSettingsDialog.cpp 2531d3709f0eab66651671e3edead2ca720d07d5 F src/FslSettingsDialog.h dfe2a61884a55a74cbb9206b6f6b482b979725e7 F src/LoggedProcess.cpp 2a1e5c94bc1e57c8984563e66c210e43a14dc60c F src/LoggedProcess.h 85df7c635c807a5a0e8c4763f17a0752aaff7261 -F src/MainWindow.cpp 3c2ecc74550811b1c5b271aeb3df36e3ee981f3b +F src/MainWindow.cpp dd63f28e8e76be4d1889d846d3fa5e10ef57a928 F src/MainWindow.h 1ecfb255c8e013cf4e2d07bfd485ed41d26c97c7 F src/RemoteDialog.cpp 8540cc5e2e41c4127ed8a028d84691604fa6ecac F src/RemoteDialog.h 5e0438c2bd7c79b1bb44bfbd58c2181b544a9e5d @@ -252,7 +252,7 @@ F ui/MainWindow.ui 5857b45ed96fb027b6159e44742e9afaa3e89cfb F ui/RemoteDialog.ui 95a4750d972ed8c49bb10b95db91ff16cfe2dd0b F ui/RevisionDialog.ui 27c3b98c665fec014a50cbf3352c0627f75e68cd F ui/SettingsDialog.ui 4c480cd595a32664d01c85bf74845c4282fc0068 -P 28087b899e38a3881855cf1e7272da3fb13b3462 -R 71dc66119bd6197ccc43c2f63bcb6903 +P 9a06e230f398a3c93247382ba8f37d29201268f8 +R 9ec0409d6daac9f2e3cfb869bd2ddac0 U kostas -Z a0035a9ebb38ddec4dd5c9d8986c6e6d +Z 8b0caa86a0cd20719647e3c92b4abcb3 diff --git a/manifest.uuid b/manifest.uuid index 0e6d3fc..5532e36 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -9a06e230f398a3c93247382ba8f37d29201268f8 \ No newline at end of file +e7d9b59c32aa0d0ad5c97b24d7562e448dad16f3 \ No newline at end of file diff --git a/src/CloneDialog.cpp b/src/CloneDialog.cpp index ff1024b..26465de 100644 --- a/src/CloneDialog.cpp +++ b/src/CloneDialog.cpp @@ -40,7 +40,7 @@ bool CloneDialog::run(QWidget *parent, QUrl &url, QString &repository, QUrl &url dlg.ui->linePassword->setText(nurl.password()); nurl.setUserName(""); nurl.setPassword(""); - dlg.ui->lineURL->setText(nurl.toString()); + dlg.ui->lineURL->setText(UrlToStringNoCredentials(nurl)); } } @@ -91,6 +91,11 @@ void CloneDialog::GetRepositoryPath(QString &pathResult) filter, &filter, QFileDialog::DontConfirmOverwrite); + + // Ensure that it ends in the required extension (On GTK, Qt doesn't seem to add it automatically) + QFileInfo fi(pathResult); + if(fi.suffix().toLower() != ("." FOSSIL_EXT)) + pathResult += "." FOSSIL_EXT; } //----------------------------------------------------------------------------- diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index b1c9f50..c01fb9d 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -521,7 +521,25 @@ void MainWindow::on_actionCloneRepository_triggered() return; } - openWorkspace(repository); + if(!openWorkspace(repository)) + return; + + // Store credentials + if(!url.isLocalFile()) + { + KeychainDelete(this, url); + + if(!KeychainSet(this, url)) + QMessageBox::critical(this, tr("Error"), tr("Could not store information to keychain."), QMessageBox::Ok ); + } + + // Create Remote + url.setPassword(""); + + QString name = UrlToStringNoCredentials(url); + getWorkspace().addRemote(url, name); + getWorkspace().setRemoteDefault(url); + updateWorkspaceView(); } //------------------------------------------------------------------------------ @@ -559,6 +577,7 @@ void MainWindow::onOpenRecent() void MainWindow::enableActions(bool on) { QAction *actions[] = { + ui->actionCloseRepository, ui->actionCommit, ui->actionDiff, ui->actionAdd, @@ -585,6 +604,7 @@ void MainWindow::enableActions(bool on) ui->actionDeleteTag, ui->actionCreateBranch, ui->actionMergeBranch, + ui->actionFossilSettings }; for(size_t i=0; i