From d289dee92b03f4d7535f7a50e4fe1adda47fe9af Mon Sep 17 00:00:00 2001 From: kostas Date: Thu, 30 Apr 2015 10:30:47 +0000 Subject: [PATCH] Moved scanWorkspace to Repository FossilOrigin-Name: 61734cf430e041d514222c71f751feead5b7faf6 --- manifest | 14 +++++----- manifest.uuid | 2 +- src/MainWindow.cpp | 70 +++++++++++++++++++++++++++------------------- src/MainWindow.h | 13 +++++---- 4 files changed, 58 insertions(+), 41 deletions(-) diff --git a/manifest b/manifest index 6d337b3..17f931d 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Added\sUICallback::updateProcess\nMoved\sscanDirectory\sto\sRepository -D 2015-04-30T09:50:22.918 +C Moved\sscanWorkspace\sto\sRepository +D 2015-04-30T10:30:47.754 F .travis.yml 77966888a81c4ceee1fcc79bce842c9667ad8a35 F debian/changelog eb4304dfcb6bb66850ec740838090eb50ce1249b F debian/compat b6abd567fa79cbe0196d093a067271361dc6ca8b @@ -200,8 +200,8 @@ F src/FileTableView.cpp 5ddf8c391c9a3ac449ec61fb1db837b577afeec2 F src/FileTableView.h 03e56d87c2d46411b9762b87f4d301619aaf18df F src/LoggedProcess.cpp 2a1e5c94bc1e57c8984563e66c210e43a14dc60c F src/LoggedProcess.h 85df7c635c807a5a0e8c4763f17a0752aaff7261 -F src/MainWindow.cpp d0592f736ae782633c9d2dd510ab5f0d5c80fabf -F src/MainWindow.h f9470bc231db5fc95661254c0bab2854adfd3ffb +F src/MainWindow.cpp 939c919b6ede21771df77ff9973da7b3e39808dc +F src/MainWindow.h 49f8f8241f54e99101828de6501bd77780510c4c F src/SettingsDialog.cpp a46cff5e5dd425e3dbdd15632abfd5829f5562b4 F src/SettingsDialog.h 4e2790f581e991c744ae9f86580f1972b8c7ff43 F src/Utils.cpp f78728e0817b1db23007ba0d2c5c26980ee7ebca @@ -215,7 +215,7 @@ F ui/CommitDialog.ui 6200f6cabdcf40a20812e811be28e0793f82516f F ui/FileActionDialog.ui 89bb4dc2d0b8adcd41adcb11ec65f2028a09a12d F ui/MainWindow.ui 8677f5c8bca5bf7561d5f64bfdd0cef5157c6ac7 F ui/SettingsDialog.ui 2b7c2870e0054b0f4106f495d85d02c0b814df8b -P c48861c93293aafa6b1193a4b6892342e0ca0159 -R 49f72f8f9eafff06a5ea35eb0497e88d +P 4d94a638499c31672bf47de43407b1fa2531e716 +R 9c35dcfb53087265b1dc9de40e3abf6c U kostas -Z 025a79c928231b5b6d280e6959bd1db5 +Z ba97d0832e88bf4227c1c8c175541671 diff --git a/manifest.uuid b/manifest.uuid index 24a59c6..73d51f3 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -4d94a638499c31672bf47de43407b1fa2531e716 \ No newline at end of file +61734cf430e041d514222c71f751feead5b7faf6 \ No newline at end of file diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index f1af776..0545283 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -584,11 +584,11 @@ bool MainWindow::refresh() } //------------------------------------------------------------------------------ -void MainWindow::scanWorkspace() +void Repository::scanWorkspace(bool scanLocal, bool scanIgnored, bool scanModified, bool scanUnchanged, const QString &ignoreGlob, Bridge::UICallback &uiCallback, bool &operationAborted) { // Scan all workspace files QFileInfoList all_files; - QString wkdir = getCurrentWorkspace(); + QString wkdir = fossil().getCurrentWorkspace(); if(wkdir.isEmpty()) return; @@ -598,33 +598,32 @@ void MainWindow::scanWorkspace() if(!fossil().listFiles(res)) return; - bool scan_files = ui->actionViewUnknown->isChecked(); - - setStatus(tr("Scanning Workspace...")); - setBusy(true); + bool scan_files = scanLocal; // Dispose RepoFiles - for(Repository::filemap_t::iterator it = getRepo().workspaceFiles.begin(); it!=getRepo().workspaceFiles.end(); ++it) + for(Repository::filemap_t::iterator it = workspaceFiles.begin(); it!=workspaceFiles.end(); ++it) delete *it; - getRepo().workspaceFiles.clear(); - getRepo().pathSet.clear(); + workspaceFiles.clear(); + pathSet.clear(); operationAborted = false; + uiCallback.beginProcess(""); if(scan_files) { QCoreApplication::processEvents(); QString ignore; // If we should not be showing ignored files, fill in the ignored spec - if(!ui->actionViewIgnored->isChecked()) + if(!scanIgnored) { // QDir expects multiple specs being separated by a semicolon - ignore = settings.GetFossilValue(FOSSIL_SETTING_IGNORE_GLOB).toString().replace(',',';'); + ignore = ignoreGlob; + ignore.replace(',',';'); } - if(!getRepo().scanDirectory(all_files, wkdir, wkdir, ignore, operationAborted, uiCallback)) + if(!scanDirectory(all_files, wkdir, wkdir, ignore, operationAborted, uiCallback)) goto _done; for(QFileInfoList::iterator it=all_files.begin(); it!=all_files.end(); ++it) @@ -637,13 +636,13 @@ void MainWindow::scanWorkspace() continue; RepoFile *rf = new RepoFile(*it, RepoFile::TYPE_UNKNOWN, wkdir); - getRepo().workspaceFiles.insert(rf->getFilePath(), rf); - getRepo().pathSet.insert(rf->getPath()); + workspaceFiles.insert(rf->getFilePath(), rf); + pathSet.insert(rf->getPath()); } } + uiCallback.endProcess(); - setStatus(tr("Updating...")); - QCoreApplication::processEvents(); + uiCallback.beginProcess(QObject::tr("Updating...")); // Update Files and Directories @@ -683,43 +682,56 @@ void MainWindow::scanWorkspace() type = RepoFile::TYPE_CONFLICTED; // Filter unwanted file types - if( ((type & RepoFile::TYPE_MODIFIED) && !ui->actionViewModified->isChecked()) || - ((type & RepoFile::TYPE_UNCHANGED) && !ui->actionViewUnchanged->isChecked() )) + if( ((type & RepoFile::TYPE_MODIFIED) && !scanModified) || + ((type & RepoFile::TYPE_UNCHANGED) && !scanUnchanged)) { - getRepo().workspaceFiles.remove(fname); + workspaceFiles.remove(fname); continue; } else add_missing = true; - Repository::filemap_t::iterator it = getRepo().workspaceFiles.find(fname); + Repository::filemap_t::iterator it = workspaceFiles.find(fname); RepoFile *rf = 0; - if(add_missing && it==getRepo().workspaceFiles.end()) + if(add_missing && it==workspaceFiles.end()) { QFileInfo info(wkdir+QDir::separator()+fname); rf = new RepoFile(info, type, wkdir); - getRepo().workspaceFiles.insert(rf->getFilePath(), rf); + workspaceFiles.insert(rf->getFilePath(), rf); } if(!rf) { - it = getRepo().workspaceFiles.find(fname); - Q_ASSERT(it!=getRepo().workspaceFiles.end()); + it = workspaceFiles.find(fname); + Q_ASSERT(it!=workspaceFiles.end()); rf = *it; } rf->setType(type); QString path = rf->getPath(); - getRepo().pathSet.insert(path); + pathSet.insert(path); } // Load the stash - fossil().stashList(getRepo().stashMap); - - // Update the file item model + fossil().stashList(stashMap); _done: + uiCallback.endProcess(); +} + +//------------------------------------------------------------------------------ +void MainWindow::scanWorkspace() +{ + setBusy(true); + getRepo().scanWorkspace(ui->actionViewUnknown->isChecked(), + ui->actionViewIgnored->isChecked(), + ui->actionViewModified->isChecked(), + ui->actionViewUnchanged->isChecked(), + settings.GetFossilValue(FOSSIL_SETTING_IGNORE_GLOB).toString(), + uiCallback, + operationAborted + ); updateDirView(); updateFileView(); updateStashView(); @@ -2183,6 +2195,7 @@ void MainWindow::MainWinUICallback::beginProcess(const QString& text) Q_ASSERT(mainWindow); mainWindow->ui->statusBar->showMessage(text); mainWindow->progressBar->setHidden(false); + QCoreApplication::processEvents(); } //------------------------------------------------------------------------------ @@ -2199,6 +2212,7 @@ void MainWindow::MainWinUICallback::endProcess() Q_ASSERT(mainWindow); mainWindow->ui->statusBar->clearMessage(); mainWindow->progressBar->setHidden(true); + QCoreApplication::processEvents(); } //------------------------------------------------------------------------------ diff --git a/src/MainWindow.h b/src/MainWindow.h index 8840ebd..7e0ba65 100644 --- a/src/MainWindow.h +++ b/src/MainWindow.h @@ -124,7 +124,12 @@ public: stashmap_t stashMap; stringset_t selectedDirs; // The directory selected in the tree + Bridge bridge; + Bridge & fossil() { return bridge; } + const Bridge & fossil() const { return bridge; } + static bool scanDirectory(QFileInfoList &entries, const QString& dirPath, const QString &baseDir, const QString ignoreSpec, const bool& abort, Bridge::UICallback &uiCallback); + void scanWorkspace(bool scanLocal, bool scanIgnored, bool scanModified, bool scanUnchanged, const QString &ignoreGlob, Bridge::UICallback &uiCallback, bool &operationAborted); }; ////////////////////////////////////////////////////////////////////////// @@ -165,7 +170,6 @@ private: void loadFossilSettings(); QString getFossilPath(); QString getFossilHttpAddress(); - //static bool scanDirectory(QFileInfoList &entries, const QString& dirPath, const QString &baseDir, const QString ignoreSpec, const bool& abort); void updateDirView(); void updateFileView(); void updateStashView(); @@ -268,13 +272,12 @@ private: class QShortcut *abortShortcut; bool operationAborted; - Bridge bridge; - Bridge & fossil() { return bridge; } - const Bridge & fossil() const { return bridge; } - Repository repo; Repository & getRepo() { return repo; } + Bridge & fossil() { return repo.bridge; } + const Bridge & fossil() const { return repo.bridge; } + Settings &settings; QStringList workspaceHistory;