Support for force closing a workspace

FossilOrigin-Name: 16b4d25fe14b5d8a9398db1a31e683382b532473
This commit is contained in:
Kostas 2015-10-16 09:41:21 +00:00
parent 214a2f8deb
commit eb150f950b
6 changed files with 40 additions and 17 deletions

View File

@ -1,5 +1,5 @@
C Refactored\sWorkspace\scommon\stypes\sinto\sWorkspaceCommon.h C Support\sfor\sforce\sclosing\sa\sworkspace\n
D 2015-09-16T14:28:38.636 D 2015-10-16T09:41:21.325
F .fossil-settings/manifest a09a968bf05a50058f3ad50132730b719bc39e76 F .fossil-settings/manifest a09a968bf05a50058f3ad50132730b719bc39e76
F .travis.yml 77966888a81c4ceee1fcc79bce842c9667ad8a35 F .travis.yml 77966888a81c4ceee1fcc79bce842c9667ad8a35
F debian/changelog eb4304dfcb6bb66850ec740838090eb50ce1249b F debian/changelog eb4304dfcb6bb66850ec740838090eb50ce1249b
@ -228,13 +228,13 @@ F src/FileActionDialog.cpp fcaebf9986f789b3440d5390b3458ad5f86fe0c8
F src/FileActionDialog.h 15db1650b3a13d70bc338371e4c033c66e3b79ce F src/FileActionDialog.h 15db1650b3a13d70bc338371e4c033c66e3b79ce
F src/FileTableView.cpp 5ddf8c391c9a3ac449ec61fb1db837b577afeec2 F src/FileTableView.cpp 5ddf8c391c9a3ac449ec61fb1db837b577afeec2
F src/FileTableView.h 03e56d87c2d46411b9762b87f4d301619aaf18df F src/FileTableView.h 03e56d87c2d46411b9762b87f4d301619aaf18df
F src/Fossil.cpp 3033cd4744df2db2e334e746b1cae52a7073ef62 F src/Fossil.cpp 8ecdf02fb2f18bbdcf5750e83e04494c2690c377
F src/Fossil.h 429639f3d32853ff72a35a30000c84988e015aa4 F src/Fossil.h 6022bed07f3c6c7b4fca20cb181d3331ab5e4447
F src/FslSettingsDialog.cpp e00907d493fba469e48a008aecda88426350b5ac F src/FslSettingsDialog.cpp e00907d493fba469e48a008aecda88426350b5ac
F src/FslSettingsDialog.h 92a292d43022289f9f626050cd07392dd72f1676 F src/FslSettingsDialog.h 92a292d43022289f9f626050cd07392dd72f1676
F src/LoggedProcess.cpp 2a1e5c94bc1e57c8984563e66c210e43a14dc60c F src/LoggedProcess.cpp 2a1e5c94bc1e57c8984563e66c210e43a14dc60c
F src/LoggedProcess.h 85df7c635c807a5a0e8c4763f17a0752aaff7261 F src/LoggedProcess.h 85df7c635c807a5a0e8c4763f17a0752aaff7261
F src/MainWindow.cpp 3b6206d0661ab27bb0caa8f973600398993be4ae F src/MainWindow.cpp 9368012e5c491c1d27f60ae557041bf08971bdcc
F src/MainWindow.h ae25aef04587cd46aa113397db0de1e776091efe F src/MainWindow.h ae25aef04587cd46aa113397db0de1e776091efe
F src/RemoteDialog.cpp 1a57a15465f689057d5354a29ad3015e54582343 F src/RemoteDialog.cpp 1a57a15465f689057d5354a29ad3015e54582343
F src/RemoteDialog.h 5e0438c2bd7c79b1bb44bfbd58c2181b544a9e5d F src/RemoteDialog.h 5e0438c2bd7c79b1bb44bfbd58c2181b544a9e5d
@ -247,7 +247,7 @@ F src/SettingsDialog.h 81158a26ce9ea9fd95c6c5cdd3c24a9b87b00e8d
F src/Utils.cpp abdc1525d08448f09833a310c26491351256d5a5 F src/Utils.cpp abdc1525d08448f09833a310c26491351256d5a5
F src/Utils.h d8cda8bc809f75895bd340109dd8086f43ed83b0 F src/Utils.h d8cda8bc809f75895bd340109dd8086f43ed83b0
F src/Workspace.cpp 64cdbe639ff11deefc45e70003d41577e3bca2db F src/Workspace.cpp 64cdbe639ff11deefc45e70003d41577e3bca2db
F src/Workspace.h 3853740e1276704df6fc73647e28f604dd73fb7b F src/Workspace.h 253c70b49d6cdbe01756cb1d27130ff0ae4841b7
F src/WorkspaceCommon.h 45f6ca5e1e480bfb7a5f8779ea43f94716251168 F src/WorkspaceCommon.h 45f6ca5e1e480bfb7a5f8779ea43f94716251168
F src/main.cpp d8c65ea5e54102e4989fef9fd8cfd4f13ef8a8f0 F src/main.cpp d8c65ea5e54102e4989fef9fd8cfd4f13ef8a8f0
F tools/git-push.sh 62cc58434cae5b7bcd6bd9d4cce8b08739f31cd7 x F tools/git-push.sh 62cc58434cae5b7bcd6bd9d4cce8b08739f31cd7 x
@ -262,7 +262,7 @@ F ui/MainWindow.ui ad04643d071fe513b46ef413749a493909a90ad1
F ui/RemoteDialog.ui 424b2d4a3d0162f84fdccf6af02c1cfce07a06f5 F ui/RemoteDialog.ui 424b2d4a3d0162f84fdccf6af02c1cfce07a06f5
F ui/RevisionDialog.ui 27c3b98c665fec014a50cbf3352c0627f75e68cd F ui/RevisionDialog.ui 27c3b98c665fec014a50cbf3352c0627f75e68cd
F ui/SettingsDialog.ui 2e1b6ce7a49100088c5649292c1319e62e0302e1 F ui/SettingsDialog.ui 2e1b6ce7a49100088c5649292c1319e62e0302e1
P d3b7048058577931d592aae6c0d9f5949c6f835e P f31360bcda14a4137f5aee56ed916c161bcee18d
R ca2a9dfe83e73f1e22d22d8250fd010d R a766f91e1d96c7c9a7b371d4d0516c52
U Kostas U Kostas
Z 503a295085b91fe20b173dae622aea71 Z 0689b99da2a7c0157c7b039c0f60a43b

View File

@ -1 +1 @@
f31360bcda14a4137f5aee56ed916c161bcee18d 16b4d25fe14b5d8a9398db1a31e683382b532473

View File

@ -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; return false;
stopUI(); stopUI();

View File

@ -22,7 +22,7 @@ public:
// Workspace // Workspace
bool createWorkspace(const QString &repositoryPath, const QString& workspacePath); bool createWorkspace(const QString &repositoryPath, const QString& workspacePath);
bool closeWorkspace(); bool closeWorkspace(bool force=false);
void setWorkspace(const QString &_workspacePath); void setWorkspace(const QString &_workspacePath);
bool pushWorkspace(const QUrl& url); bool pushWorkspace(const QUrl& url);
bool pullWorkspace(const QUrl& url); bool pullWorkspace(const QUrl& url);

View File

@ -540,9 +540,26 @@ void MainWindow::on_actionCloseRepository_triggered()
return; return;
// Close Repo // 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; return;
} }

View File

@ -74,9 +74,9 @@ public:
return fossil().getWorkspaceState(); 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) bool cloneRepository(const QString &repository, const QUrl &url, const QUrl &proxyUrl)