Chris@57: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ Chris@57: Chris@57: /* Chris@57: EasyMercurial Chris@57: Chris@57: Based on HgExplorer by Jari Korhonen Chris@57: Copyright (c) 2010 Jari Korhonen Chris@57: Copyright (c) 2010 Chris Cannam Chris@57: Copyright (c) 2010 Queen Mary, University of London Chris@57: Chris@57: This program is free software; you can redistribute it and/or Chris@57: modify it under the terms of the GNU General Public License as Chris@57: published by the Free Software Foundation; either version 2 of the Chris@57: License, or (at your option) any later version. See the file Chris@57: COPYING included with this distribution for more information. Chris@57: */ jtkorhonen@0: Chris@96: #include "hgtabwidget.h" jtkorhonen@0: #include "common.h" Chris@88: #include "filestatuswidget.h" Chris@116: #include "historywidget.h" Chris@44: Chris@50: #include Chris@50: #include Chris@50: #include Chris@50: Chris@44: #include jtkorhonen@0: Chris@96: HgTabWidget::HgTabWidget(QWidget *parent, Chris@95: QString remoteRepo, Chris@95: QString workFolderPath) : Chris@117: QTabWidget(parent) jtkorhonen@0: { Chris@91: // Work page Chris@116: m_fileStatusWidget = new FileStatusWidget; Chris@116: m_fileStatusWidget->setLocalPath(workFolderPath); Chris@116: m_fileStatusWidget->setRemoteURL(remoteRepo); Chris@116: connect(m_fileStatusWidget, SIGNAL(selectionChanged()), Chris@95: this, SIGNAL(selectionChanged())); Chris@116: addTab(m_fileStatusWidget, tr("My work")); Chris@88: Chris@43: // History graph page Chris@116: m_historyWidget = new HistoryWidget; Chris@116: addTab(m_historyWidget, tr("History")); Chris@141: Chris@141: connect(m_historyWidget, SIGNAL(commit()), Chris@141: this, SIGNAL(commit())); Chris@141: Chris@141: connect(m_historyWidget, SIGNAL(revert()), Chris@141: this, SIGNAL(revert())); Chris@141: Chris@141: connect(m_historyWidget, SIGNAL(diffWorkingFolder()), Chris@141: this, SIGNAL(diffWorkingFolder())); Chris@141: Chris@141: connect(m_historyWidget, SIGNAL(updateTo(QString)), Chris@141: this, SIGNAL(updateTo(QString))); Chris@141: Chris@141: connect(m_historyWidget, SIGNAL(diffToCurrent(QString)), Chris@141: this, SIGNAL(diffToCurrent(QString))); Chris@141: Chris@148: connect(m_historyWidget, SIGNAL(diffToParent(QString, QString)), Chris@148: this, SIGNAL(diffToParent(QString, QString))); Chris@141: Chris@141: connect(m_historyWidget, SIGNAL(mergeFrom(QString)), Chris@141: this, SIGNAL(mergeFrom(QString))); Chris@141: Chris@141: connect(m_historyWidget, SIGNAL(tag(QString)), Chris@141: this, SIGNAL(tag(QString))); jtkorhonen@32: } jtkorhonen@32: Chris@96: void HgTabWidget::clearSelections() Chris@94: { Chris@116: m_fileStatusWidget->clearSelections(); Chris@94: } Chris@94: Chris@145: void HgTabWidget::setCurrent(QStringList ids, bool showUncommittedChanges) Chris@128: { Chris@145: m_historyWidget->setCurrent(ids, showUncommittedChanges); Chris@129: } Chris@129: Chris@96: bool HgTabWidget::canCommit() const Chris@90: { Chris@116: if (!m_fileStatusWidget->getSelectedAddableFiles().empty()) return false; Chris@116: return m_fileStatusWidget->haveChangesToCommit(); Chris@90: } jtkorhonen@0: Chris@109: bool HgTabWidget::canRevert() const Chris@109: { Chris@116: return m_fileStatusWidget->haveChangesToCommit() || Chris@116: !m_fileStatusWidget->getSelectedRevertableFiles().empty(); Chris@109: } Chris@109: Chris@96: bool HgTabWidget::canAdd() const Chris@95: { Chris@116: if (m_fileStatusWidget->getSelectedAddableFiles().empty()) return false; Chris@116: if (!m_fileStatusWidget->getSelectedCommittableFiles().empty()) return false; Chris@116: if (!m_fileStatusWidget->getSelectedRemovableFiles().empty()) return false; Chris@95: return true; Chris@95: } Chris@95: Chris@96: bool HgTabWidget::canRemove() const Chris@95: { Chris@116: if (m_fileStatusWidget->getSelectedRemovableFiles().empty()) return false; Chris@116: if (!m_fileStatusWidget->getSelectedAddableFiles().empty()) return false; Chris@95: return true; Chris@95: } Chris@95: Chris@96: bool HgTabWidget::canDoDiff() const Chris@95: { Chris@95: return canCommit(); Chris@95: } Chris@95: Chris@96: QStringList HgTabWidget::getAllSelectedFiles() const Chris@95: { Chris@116: return m_fileStatusWidget->getAllSelectedFiles(); Chris@95: } Chris@95: Chris@109: QStringList HgTabWidget::getAllCommittableFiles() const Chris@109: { Chris@116: return m_fileStatusWidget->getAllCommittableFiles(); Chris@109: } Chris@109: Chris@96: QStringList HgTabWidget::getSelectedCommittableFiles() const Chris@95: { Chris@116: return m_fileStatusWidget->getSelectedCommittableFiles(); Chris@95: } Chris@95: Chris@109: QStringList HgTabWidget::getAllRevertableFiles() const Chris@109: { Chris@116: return m_fileStatusWidget->getAllRevertableFiles(); Chris@109: } Chris@109: Chris@109: QStringList HgTabWidget::getSelectedRevertableFiles() const Chris@109: { Chris@116: return m_fileStatusWidget->getSelectedRevertableFiles(); Chris@109: } Chris@109: Chris@96: QStringList HgTabWidget::getSelectedAddableFiles() const Chris@95: { Chris@116: return m_fileStatusWidget->getSelectedAddableFiles(); Chris@95: } Chris@95: Chris@109: QStringList HgTabWidget::getAllRemovableFiles() const Chris@109: { Chris@116: return m_fileStatusWidget->getAllRemovableFiles(); Chris@109: } Chris@109: Chris@96: QStringList HgTabWidget::getSelectedRemovableFiles() const Chris@95: { Chris@116: return m_fileStatusWidget->getSelectedRemovableFiles(); Chris@95: } Chris@95: Chris@96: void HgTabWidget::updateWorkFolderFileList(QString fileList) jtkorhonen@0: { Chris@116: m_fileStates.parseStates(fileList); Chris@116: m_fileStatusWidget->setFileStates(m_fileStates); jtkorhonen@0: } jtkorhonen@0: Chris@120: void HgTabWidget::setNewLog(QString hgLogList) jtkorhonen@0: { Chris@120: m_historyWidget->parseNewLog(hgLogList); Chris@134: if (m_historyWidget->haveNewItems()) { Chris@134: setCurrentWidget(m_historyWidget); Chris@134: } Chris@120: } Chris@120: Chris@120: void HgTabWidget::addIncrementalLog(QString hgLogList) Chris@120: { Chris@120: m_historyWidget->parseIncrementalLog(hgLogList); Chris@134: if (m_historyWidget->haveNewItems()) { Chris@134: setCurrentWidget(m_historyWidget); Chris@134: } jtkorhonen@0: } jtkorhonen@0: Chris@96: void HgTabWidget::setWorkFolderAndRepoNames(QString workFolderPath, QString remoteRepoPath) jtkorhonen@0: { Chris@116: m_fileStatusWidget->setLocalPath(workFolderPath); Chris@116: m_fileStatusWidget->setRemoteURL(remoteRepoPath); jtkorhonen@0: } Chris@106: Chris@115: void HgTabWidget::setState(QString state) Chris@106: { Chris@116: m_fileStatusWidget->setState(state); Chris@106: }