comparison mainwindow.cpp @ 198:4adbd5c9c15d

* Cut down number of command invocations by gleaning default remote path and current branch from hg files directly
author Chris Cannam
date Mon, 03 Jan 2011 14:31:22 +0000
parents 2afac743acdf
children f16fe0db11f3
comparison
equal deleted inserted replaced
197:2afac743acdf 198:4adbd5c9c15d
198 runner->requestAction(HgAction(ACT_STAT, workFolderPath, params)); 198 runner->requestAction(HgAction(ACT_STAT, workFolderPath, params));
199 } 199 }
200 200
201 void MainWindow::hgQueryPaths() 201 void MainWindow::hgQueryPaths()
202 { 202 {
203 // Quickest is to just read the file -- but fall back on hg
204 // command if we get confused
205
206 QFileInfo hgrc(workFolderPath + "/.hg/hgrc");
207
208 if (hgrc.exists()) {
209
210 QSettings s(hgrc.canonicalFilePath(), QSettings::IniFormat);
211 s.beginGroup("paths");
212 remoteRepoPath = s.value("default").toString();
213
214 // We have to do this here, because commandCompleted won't be called
215 MultiChoiceDialog::addRecentArgument("local", workFolderPath);
216 MultiChoiceDialog::addRecentArgument("remote", remoteRepoPath);
217 hgTabs->setWorkFolderAndRepoNames(workFolderPath, remoteRepoPath);
218
219 hgQueryBranch();
220 return;
221 }
222
203 QStringList params; 223 QStringList params;
204 params << "paths"; 224 params << "paths";
205 runner->requestAction(HgAction(ACT_QUERY_PATHS, workFolderPath, params)); 225 runner->requestAction(HgAction(ACT_QUERY_PATHS, workFolderPath, params));
206 } 226 }
207 227
208 void MainWindow::hgQueryBranch() 228 void MainWindow::hgQueryBranch()
209 { 229 {
230 // Quickest is to just read the file -- but fall back on hg
231 // command if we get confused
232
233 QFile hgbr(workFolderPath + "/.hg/branch");
234
235 if (hgbr.exists() && hgbr.open(QFile::ReadOnly)) {
236
237 QByteArray ba = hgbr.readLine();
238 currentBranch = QString::fromUtf8(ba).trimmed();
239
240 // We have to do this here, because commandCompleted won't be called
241 hgStat();
242 return;
243 }
244
210 QStringList params; 245 QStringList params;
211 params << "branch"; 246 params << "branch";
212 runner->requestAction(HgAction(ACT_QUERY_BRANCH, workFolderPath, params)); 247 runner->requestAction(HgAction(ACT_QUERY_BRANCH, workFolderPath, params));
213 } 248 }
214 249
1397 } 1432 }
1398 1433
1399 void MainWindow::commandFailed(HgAction action, QString output) 1434 void MainWindow::commandFailed(HgAction action, QString output)
1400 { 1435 {
1401 DEBUG << "MainWindow::commandFailed" << endl; 1436 DEBUG << "MainWindow::commandFailed" << endl;
1437 if (fsWatcher) fsWatcher->blockSignals(false);
1402 1438
1403 // Some commands we just have to ignore bad return values from: 1439 // Some commands we just have to ignore bad return values from:
1404 1440
1405 switch(action.action) { 1441 switch(action.action) {
1406 case ACT_NONE: 1442 case ACT_NONE:
1462 } 1498 }
1463 1499
1464 void MainWindow::commandCompleted(HgAction completedAction, QString output) 1500 void MainWindow::commandCompleted(HgAction completedAction, QString output)
1465 { 1501 {
1466 HGACTIONS action = completedAction.action; 1502 HGACTIONS action = completedAction.action;
1503 if (fsWatcher) fsWatcher->blockSignals(false);
1467 1504
1468 if (action == ACT_NONE) return; 1505 if (action == ACT_NONE) return;
1469 1506
1470 bool headsChanged = false; 1507 bool headsChanged = false;
1471 QStringList oldHeadIds; 1508 QStringList oldHeadIds;
1494 case ACT_QUERY_BRANCH: 1531 case ACT_QUERY_BRANCH:
1495 currentBranch = output.trimmed(); 1532 currentBranch = output.trimmed();
1496 break; 1533 break;
1497 1534
1498 case ACT_STAT: 1535 case ACT_STAT:
1499 if (fsWatcher) fsWatcher->blockSignals(false);
1500 lastStatOutput = output; 1536 lastStatOutput = output;
1501 updateFileSystemWatcher(); 1537 updateFileSystemWatcher();
1502 break; 1538 break;
1503 1539
1504 case ACT_RESOLVE_LIST: 1540 case ACT_RESOLVE_LIST:
1702 break; 1738 break;
1703 1739
1704 case ACT_LOG: 1740 case ACT_LOG:
1705 // we're done 1741 // we're done
1706 noMore = true; 1742 noMore = true;
1743 break;
1707 1744
1708 default: 1745 default:
1709 if (shouldHgStat) { 1746 if (shouldHgStat) {
1710 shouldHgStat = false; 1747 shouldHgStat = false;
1711 hgQueryPaths(); 1748 hgQueryPaths();