diff --git a/manifest b/manifest index 7885f68..0d22edb 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Refactored\sWorkspace\scommon\stypes\sinto\sWorkspaceCommon.h -D 2015-09-16T14:28:38.636 +C Support\sfor\sforce\sclosing\sa\sworkspace\n +D 2015-10-16T09:41:21.325 F .fossil-settings/manifest a09a968bf05a50058f3ad50132730b719bc39e76 F .travis.yml 77966888a81c4ceee1fcc79bce842c9667ad8a35 F debian/changelog eb4304dfcb6bb66850ec740838090eb50ce1249b @@ -228,13 +228,13 @@ F src/FileActionDialog.cpp fcaebf9986f789b3440d5390b3458ad5f86fe0c8 F src/FileActionDialog.h 15db1650b3a13d70bc338371e4c033c66e3b79ce F src/FileTableView.cpp 5ddf8c391c9a3ac449ec61fb1db837b577afeec2 F src/FileTableView.h 03e56d87c2d46411b9762b87f4d301619aaf18df -F src/Fossil.cpp 3033cd4744df2db2e334e746b1cae52a7073ef62 -F src/Fossil.h 429639f3d32853ff72a35a30000c84988e015aa4 +F src/Fossil.cpp 8ecdf02fb2f18bbdcf5750e83e04494c2690c377 +F src/Fossil.h 6022bed07f3c6c7b4fca20cb181d3331ab5e4447 F src/FslSettingsDialog.cpp e00907d493fba469e48a008aecda88426350b5ac F src/FslSettingsDialog.h 92a292d43022289f9f626050cd07392dd72f1676 F src/LoggedProcess.cpp 2a1e5c94bc1e57c8984563e66c210e43a14dc60c F src/LoggedProcess.h 85df7c635c807a5a0e8c4763f17a0752aaff7261 -F src/MainWindow.cpp 3b6206d0661ab27bb0caa8f973600398993be4ae +F src/MainWindow.cpp 9368012e5c491c1d27f60ae557041bf08971bdcc F src/MainWindow.h ae25aef04587cd46aa113397db0de1e776091efe F src/RemoteDialog.cpp 1a57a15465f689057d5354a29ad3015e54582343 F src/RemoteDialog.h 5e0438c2bd7c79b1bb44bfbd58c2181b544a9e5d @@ -247,7 +247,7 @@ F src/SettingsDialog.h 81158a26ce9ea9fd95c6c5cdd3c24a9b87b00e8d F src/Utils.cpp abdc1525d08448f09833a310c26491351256d5a5 F src/Utils.h d8cda8bc809f75895bd340109dd8086f43ed83b0 F src/Workspace.cpp 64cdbe639ff11deefc45e70003d41577e3bca2db -F src/Workspace.h 3853740e1276704df6fc73647e28f604dd73fb7b +F src/Workspace.h 253c70b49d6cdbe01756cb1d27130ff0ae4841b7 F src/WorkspaceCommon.h 45f6ca5e1e480bfb7a5f8779ea43f94716251168 F src/main.cpp d8c65ea5e54102e4989fef9fd8cfd4f13ef8a8f0 F tools/git-push.sh 62cc58434cae5b7bcd6bd9d4cce8b08739f31cd7 x @@ -262,7 +262,7 @@ F ui/MainWindow.ui ad04643d071fe513b46ef413749a493909a90ad1 F ui/RemoteDialog.ui 424b2d4a3d0162f84fdccf6af02c1cfce07a06f5 F ui/RevisionDialog.ui 27c3b98c665fec014a50cbf3352c0627f75e68cd F ui/SettingsDialog.ui 2e1b6ce7a49100088c5649292c1319e62e0302e1 -P d3b7048058577931d592aae6c0d9f5949c6f835e -R ca2a9dfe83e73f1e22d22d8250fd010d +P f31360bcda14a4137f5aee56ed916c161bcee18d +R a766f91e1d96c7c9a7b371d4d0516c52 U Kostas -Z 503a295085b91fe20b173dae622aea71 +Z 0689b99da2a7c0157c7b039c0f60a43b diff --git a/manifest.uuid b/manifest.uuid index 7e280d8..7d89aa6 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -f31360bcda14a4137f5aee56ed916c161bcee18d \ No newline at end of file +16b4d25fe14b5d8a9398db1a31e683382b532473 \ No newline at end of file diff --git a/src/Fossil.cpp b/src/Fossil.cpp index 16b4279..6c211b6 100644 --- a/src/Fossil.cpp +++ b/src/Fossil.cpp @@ -114,9 +114,15 @@ bool Fossil::createRepository(const QString& repositoryPath) } //------------------------------------------------------------------------------ -bool Fossil::closeWorkspace() +bool Fossil::closeWorkspace(bool force) { - if(!runFossil(QStringList() << "close")) + QStringList params; + params << "close"; + + if(force) + params << "--force"; + + if(!runFossil(params)) return false; stopUI(); diff --git a/src/Fossil.h b/src/Fossil.h index 6491ff7..71a4aa7 100644 --- a/src/Fossil.h +++ b/src/Fossil.h @@ -22,7 +22,7 @@ public: // Workspace bool createWorkspace(const QString &repositoryPath, const QString& workspacePath); - bool closeWorkspace(); + bool closeWorkspace(bool force=false); void setWorkspace(const QString &_workspacePath); bool pushWorkspace(const QUrl& url); bool pullWorkspace(const QUrl& url); diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index 1c8f138..e53d61a 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -540,9 +540,26 @@ void MainWindow::on_actionCloseRepository_triggered() return; // Close Repo - if(!getWorkspace().close()) + bool success = getWorkspace().close(); + + if(!success) { - QMessageBox::critical(this, tr("Error"), tr("Cannot close the workspace.\nAre there still uncommitted changes available?"), QMessageBox::Ok ); + if(QMessageBox::Yes !=DialogQuery(this, tr("Close Workspace"), + tr("Could not close the workspace.\n" + "Perhaps there are uncommitted changes available\n" + "Would you like to force closing this workspace?"))) + { + refresh(); + return; + } + + success = getWorkspace().close(true); + } + + if(!success) + { + QMessageBox::critical(this, tr("Error"), tr("Could not close the workspace."), QMessageBox::Ok); + refresh(); return; } diff --git a/src/Workspace.h b/src/Workspace.h index 4157d39..0c726f9 100644 --- a/src/Workspace.h +++ b/src/Workspace.h @@ -74,9 +74,9 @@ public: return fossil().getWorkspaceState(); } - bool close() + bool close(bool force=false) { - return fossil().closeWorkspace(); + return fossil().closeWorkspace(force); } bool cloneRepository(const QString &repository, const QUrl &url, const QUrl &proxyUrl)