# # # patch "src/view/dialogs/DatabaseDialogManager.cpp" # from [3eb4490f834d4871a9c146f26925857c35b91be8] # to [6ad823d1e0878612f98b57b5bd8f76ef5735e1b6] # # patch "src/view/dialogs/DialogManager.cpp" # from [d8c5b876be4fba486bc85e0a9450a41f17720c2f] # to [db1d191bdd799b1a8480b3b581b5615ac91f291a] # # patch "src/view/dialogs/DialogManager.h" # from [030bff89fc02fe2676d4e556a6a05d7609a24e7b] # to [296e1da4e73cbe364e5eb7a2bce56e6eadba058a] # # patch "src/view/dialogs/WorkspaceDialogManager.cpp" # from [76ce24eb7b0703f10bd3a11a21aae5cfb8453414] # to [3da572eef7736e070a2e0ff02ca8165f19a1d9ec] # ============================================================ --- src/view/dialogs/DatabaseDialogManager.cpp 3eb4490f834d4871a9c146f26925857c35b91be8 +++ src/view/dialogs/DatabaseDialogManager.cpp 6ad823d1e0878612f98b57b5bd8f76ef5735e1b6 @@ -33,144 +33,176 @@ void DatabaseDialogManager::cleanup() void DatabaseDialogManager::cleanup() { - if (changesetBrowser) delete changesetBrowser; - if (checkoutRevision) delete checkoutRevision; - if (fileDiff) delete fileDiff; - if (fileHistory) delete fileHistory; - if (generateKeypair) delete generateKeypair; - if (keyManagement) delete keyManagement; - if (revisionDiff) delete revisionDiff; - if (revisionManifest) delete revisionManifest; - if (selectRevision) delete selectRevision; + if (changesetBrowser) { delete changesetBrowser; changesetBrowser = 0; } + if (checkoutRevision) { delete checkoutRevision; checkoutRevision = 0; } + if (fileDiff) { delete fileDiff; fileDiff = 0; } + if (fileHistory) { delete fileHistory; fileHistory = 0; } + if (generateKeypair) { delete generateKeypair; generateKeypair = 0; } + if (keyManagement) { delete keyManagement; keyManagement = 0; } + if (revisionDiff) { delete revisionDiff; revisionDiff = 0; } + if (revisionManifest) { delete revisionManifest; revisionManifest = 0; } + if (selectRevision) { delete selectRevision; selectRevision = 0; } } void DatabaseDialogManager::init(const DatabaseFile & db) { databaseFile = db; cleanup(); - - QWidget * parentWidget = reinterpret_cast(parent()); - changesetBrowser = new ChangesetBrowser(parentWidget, databaseFile); - checkoutRevision = new CheckoutRevision(parentWidget, databaseFile); - fileDiff = new FileDiff(parentWidget); - fileHistory = new FileHistory(parentWidget, databaseFile); - generateKeypair = new GenerateKeypair(parentWidget, databaseFile); - keyManagement = new KeyManagement(parentWidget, databaseFile); - revisionDiff = new RevisionDiff(parentWidget); - revisionManifest = new RevisionManifest(parentWidget, databaseFile); - selectRevision = new SelectRevision(parentWidget, databaseFile); - - connect( - changesetBrowser, SIGNAL(revisionManifest(const QString &)), - this, SLOT(showRevisionManifest(const QString &)) - ); - - connect( - fileHistory, SIGNAL(fileDiff(const QString &, const QString &, const QString &)), - this, SLOT(showFileDiff(const QString &, const QString &, const QString &)) - ); - - connect( - selectRevision, SIGNAL(revisionDiff(const QString &, const QString &, const QString &)), - this, SLOT(showRevisionDiff(const QString &, const QString &, const QString &)) - ); - - connect( - selectRevision, SIGNAL(revisionManifest(const QString &)), - this, SLOT(showRevisionManifest(const QString &)) - ); - - connect( - selectRevision, SIGNAL(revisionSelected(const QString &)), - this, SLOT(revisionSelected(const QString &)) - ); - - connect( - revisionManifest, SIGNAL(fileHistory(const QString &, const QString &)), - this, SLOT(showFileHistory(const QString &, const QString &)) - ); - - connect( - checkoutRevision, SIGNAL(selectRevisionFromSelector(const QString &)), - this, SLOT(showSelectRevision(const QString &)) - ); - - connect( - selectRevision, SIGNAL(revisionSelected(const QString &)), - checkoutRevision, SLOT(setSelectedRevision(const QString &)) - ); - - connect( - fileHistory, SIGNAL(fileDiff(const QString &, const QString &, const QString &)), - this, SLOT(showFileDiff(const QString &, const QString &, const QString &)) - ); - - // directly reload the keys dialog if a new key has been created - connect( - generateKeypair, SIGNAL(keypairGenerated()), - keyManagement, SLOT(readKeys()) - ); - - // delegate this further - connect( - checkoutRevision, SIGNAL(revisionCheckedOut(const QString &)), - this, SIGNAL(revisionCheckedOut(const QString &)) - ); - - DialogManager::init(); } void DatabaseDialogManager::showChangesetBrowser() { + if (!changesetBrowser) + { + changesetBrowser = new ChangesetBrowser(parentWidget(), databaseFile); + connect( + changesetBrowser, SIGNAL(revisionManifest(const QString &)), + this, SLOT(showRevisionManifest(const QString &)) + ); + } + changesetBrowser->execDocumentModal(); } void DatabaseDialogManager::showCheckoutRevision() { + if (!checkoutRevision) + { + checkoutRevision = new CheckoutRevision(parentWidget(), databaseFile); + + connect( + checkoutRevision, SIGNAL(selectRevisionFromSelector(const QString &)), + this, SLOT(showSelectRevision(const QString &)) + ); + + // delegate this further + connect( + checkoutRevision, SIGNAL(revisionCheckedOut(const QString &)), + this, SIGNAL(revisionCheckedOut(const QString &)) + ); + } + checkoutRevision->execDocumentModal(); } void DatabaseDialogManager::showFileDiff(const QString & file, const QString & base, const QString & target) { + if (!fileDiff) + { + fileDiff = new FileDiff(parentWidget()); + } + fileDiff->forDatabase(databaseFile, file, base, target); fileDiff->execDocumentModal(); } void DatabaseDialogManager::showFileHistory(const QString & file, const QString & startRevision) { + if (!fileHistory) + { + fileHistory = new FileHistory(parentWidget(), databaseFile); + + connect( + fileHistory, SIGNAL(fileDiff(const QString &, const QString &, const QString &)), + this, SLOT(showFileDiff(const QString &, const QString &, const QString &)) + ); + } + fileHistory->readHistory(file, startRevision); fileHistory->execDocumentModal(); } void DatabaseDialogManager::showGenerateKeypair() { + if (!generateKeypair) + { + generateKeypair = new GenerateKeypair(parentWidget(), databaseFile); + + if (keyManagement) + { + connect( + generateKeypair, SIGNAL(keypairGenerated()), + keyManagement, SLOT(readKeys()) + ); + } + } + generateKeypair->execDocumentModal(); } void DatabaseDialogManager::showKeyManagement() { + if (!keyManagement) + { + keyManagement = new KeyManagement(parentWidget(), databaseFile); + } + keyManagement->readKeys(); keyManagement->execDocumentModal(); } void DatabaseDialogManager::showRevisionDiff(const QString & file, const QString & base, const QString & target) { + if (!revisionDiff) + { + revisionDiff = new RevisionDiff(parentWidget()); + } + revisionDiff->forDatabase(databaseFile, file, base, target); revisionDiff->execDocumentModal(); } void DatabaseDialogManager::showRevisionManifest(const QString & revision) { + if (!revisionManifest) + { + revisionManifest = new RevisionManifest(parentWidget(), databaseFile); + + connect( + revisionManifest, SIGNAL(fileHistory(const QString &, const QString &)), + this, SLOT(showFileHistory(const QString &, const QString &)) + ); + } + revisionManifest->readManifest(revision); revisionManifest->execDocumentModal(); } void DatabaseDialogManager::showSelectRevision(const QString & selector) { + if (selectRevision) + { + selectRevision = new SelectRevision(parentWidget(), databaseFile); + + connect( + selectRevision, SIGNAL(revisionDiff(const QString &, const QString &, const QString &)), + this, SLOT(showRevisionDiff(const QString &, const QString &, const QString &)) + ); + + connect( + selectRevision, SIGNAL(revisionManifest(const QString &)), + this, SLOT(showRevisionManifest(const QString &)) + ); + + connect( + selectRevision, SIGNAL(revisionSelected(const QString &)), + this, SLOT(revisionSelected(const QString &)) + ); + + if (checkoutRevision) + { + connect( + selectRevision, SIGNAL(revisionSelected(const QString &)), + checkoutRevision, SLOT(setSelectedRevision(const QString &)) + ); + } + } + if (selector.size() > 0) { selectRevision->queryRevisions(selector); } + selectRevision->execDocumentModal(); } ============================================================ --- src/view/dialogs/DialogManager.cpp d8c5b876be4fba486bc85e0a9450a41f17720c2f +++ src/view/dialogs/DialogManager.cpp db1d191bdd799b1a8480b3b581b5615ac91f291a @@ -26,31 +26,30 @@ DialogManager::~DialogManager() DialogManager::~DialogManager() { - cleanup(); -} - -void DialogManager::cleanup() -{ if (about) delete about; if (preferences) delete preferences; } -void DialogManager::init() +QWidget * DialogManager::parentWidget() const { - QWidget * parentWidget = reinterpret_cast(parent()); - about = new About(parentWidget); - preferences = new Preferences(parentWidget); + return reinterpret_cast(parent()); } void DialogManager::showAbout() { - I(about); + if (!about) + { + about = new About(parentWidget()); + } about->execDocumentModal(); } void DialogManager::showPreferences() { - I(preferences); + if (!preferences) + { + preferences = new Preferences(parentWidget()); + } preferences->execDocumentModal(); } ============================================================ --- src/view/dialogs/DialogManager.h 030bff89fc02fe2676d4e556a6a05d7609a24e7b +++ src/view/dialogs/DialogManager.h 296e1da4e73cbe364e5eb7a2bce56e6eadba058a @@ -33,13 +33,14 @@ public: public: DialogManager(QWidget *); ~DialogManager(); - void init(); public slots: void showAbout(); void showPreferences(); protected: + QWidget * parentWidget() const; + About * about; Preferences * preferences; ============================================================ --- src/view/dialogs/WorkspaceDialogManager.cpp 76ce24eb7b0703f10bd3a11a21aae5cfb8453414 +++ src/view/dialogs/WorkspaceDialogManager.cpp 3da572eef7736e070a2e0ff02ca8165f19a1d9ec @@ -33,42 +33,30 @@ void WorkspaceDialogManager::cleanup() void WorkspaceDialogManager::cleanup() { - if (commitRevision) delete commitRevision; - if (unaccountedRenames) delete unaccountedRenames; - if (updateWorkspace) delete updateWorkspace; + if (commitRevision) { delete commitRevision; commitRevision = 0; } + if (unaccountedRenames) { delete unaccountedRenames; unaccountedRenames = 0; } + if (updateWorkspace) { delete updateWorkspace; updateWorkspace = 0; } } void WorkspaceDialogManager::init(const WorkspacePath & path) { + DatabaseDialogManager::init(APP->manager()->getDatabaseFilePath(path)); workspacePath = path; cleanup(); - - QWidget * parentWidget = reinterpret_cast(parent()); - commitRevision = new CommitRevision(parentWidget, workspacePath); - updateWorkspace = new UpdateWorkspace(parentWidget, workspacePath); - unaccountedRenames = new UnaccountedRenames(parentWidget); - - connect( - updateWorkspace, SIGNAL(selectRevisionFromSelector(const QString &)), - this, SLOT(showSelectRevision(const QString &)) - ); - - connect( - selectRevision, SIGNAL(revisionSelected(const QString &)), - updateWorkspace, SLOT(setSelectedRevision(const QString &)) - ); - - // delegate this further - connect( - commitRevision, SIGNAL(revisionCommitted(const QString &)), - this, SIGNAL(revisionCommitted(const QString &)) - ); - - DatabaseDialogManager::init(APP->manager()->getDatabaseFilePath(path)); } void WorkspaceDialogManager::showCommitRevision() { + if (!commitRevision) + { + commitRevision = new CommitRevision(parentWidget(), workspacePath); + + connect( + commitRevision, SIGNAL(revisionCommitted(const QString &)), + this, SIGNAL(revisionCommitted(const QString &)) + ); + } + commitRevision->execDocumentModal(); } @@ -79,6 +67,11 @@ void WorkspaceDialogManager::showFileDif void WorkspaceDialogManager::showFileDiff(const QString & file, const QString & base, const QString & target) { + if (!fileDiff) + { + fileDiff = new FileDiff(parentWidget()); + } + fileDiff->forWorkspace(workspacePath, file, base, target); fileDiff->execDocumentModal(); } @@ -91,16 +84,44 @@ void WorkspaceDialogManager::showRevisio void WorkspaceDialogManager::showRevisionDiff(const QString & file, const QString & base, const QString & target) { + if (!revisionDiff) + { + revisionDiff = new RevisionDiff(parentWidget()); + } + revisionDiff->forWorkspace(workspacePath, file, base, target); revisionDiff->execDocumentModal(); } void WorkspaceDialogManager::showUnaccountedRenames(const QMap & renames) { + if (!unaccountedRenames) + { + unaccountedRenames = new UnaccountedRenames(parentWidget()); + } + unaccountedRenames->showUnaccountedRenames(renames); } void WorkspaceDialogManager::showUpdateWorkspace() { - checkoutRevision->execDocumentModal(); + if (!updateWorkspace) + { + updateWorkspace = new UpdateWorkspace(parentWidget(), workspacePath); + + connect( + updateWorkspace, SIGNAL(selectRevisionFromSelector(const QString &)), + this, SLOT(showSelectRevision(const QString &)) + ); + + if (selectRevision) + { + connect( + selectRevision, SIGNAL(revisionSelected(const QString &)), + updateWorkspace, SLOT(setSelectedRevision(const QString &)) + ); + } + } + + updateWorkspace->execDocumentModal(); }