diff options
author | Tobias Hunger <[email protected]> | 2015-03-27 16:08:52 +0100 |
---|---|---|
committer | Tobias Hunger <[email protected]> | 2015-04-13 09:08:35 +0000 |
commit | e7616f8769514b39cde4be8907adb0530a75267f (patch) | |
tree | bc30ddc7d2ac9b538f0860a14076c2037dd0d292 /src/plugins/vcsbase/vcsbaseclient.cpp | |
parent | 11590a8c5f3a64af8997c8b832bfc274d17fb3f1 (diff) |
Vcs: Move createVcsEditor into VcsBaseClientImpl
... and use that in Git as well.
Change-Id: I81c85fcf5a7da7e9f756f117ea6c38c15294a401
Reviewed-by: Orgad Shaneh <[email protected]>
Diffstat (limited to 'src/plugins/vcsbase/vcsbaseclient.cpp')
-rw-r--r-- | src/plugins/vcsbase/vcsbaseclient.cpp | 79 |
1 files changed, 42 insertions, 37 deletions
diff --git a/src/plugins/vcsbase/vcsbaseclient.cpp b/src/plugins/vcsbase/vcsbaseclient.cpp index 6ac445db0cc..2412355b303 100644 --- a/src/plugins/vcsbase/vcsbaseclient.cpp +++ b/src/plugins/vcsbase/vcsbaseclient.cpp @@ -180,6 +180,36 @@ int VcsBaseClientImpl::vcsTimeout() const return settings().intValue(VcsBaseClientSettings::timeoutKey); } +VcsBaseEditorWidget *VcsBaseClientImpl::createVcsEditor(Core::Id kind, QString title, + const QString &source, QTextCodec *codec, + const char *registerDynamicProperty, + const QString &dynamicPropertyValue) const +{ + VcsBaseEditorWidget *baseEditor = 0; + Core::IEditor *outputEditor = locateEditor(registerDynamicProperty, dynamicPropertyValue); + const QString progressMsg = tr("Working..."); + if (outputEditor) { + // Exists already + outputEditor->document()->setContents(progressMsg.toUtf8()); + baseEditor = VcsBaseEditor::getVcsBaseEditor(outputEditor); + QTC_ASSERT(baseEditor, return 0); + Core::EditorManager::activateEditor(outputEditor); + } else { + outputEditor = Core::EditorManager::openEditorWithContents(kind, &title, progressMsg.toUtf8()); + outputEditor->document()->setProperty(registerDynamicProperty, dynamicPropertyValue); + baseEditor = VcsBaseEditor::getVcsBaseEditor(outputEditor); + connect(baseEditor, &VcsBaseEditorWidget::annotateRevisionRequested, + this, &VcsBaseClientImpl::annotateRevisionRequested); + QTC_ASSERT(baseEditor, return 0); + baseEditor->setSource(source); + if (codec) + baseEditor->setCodec(codec); + } + + baseEditor->setForceReadOnly(true); + return baseEditor; +} + void VcsBaseClientImpl::saveSettings() { settings().writeSettings(Core::ICore::settings()); @@ -386,7 +416,8 @@ void VcsBaseClient::annotate(const QString &workingDir, const QString &file, const QString title = vcsEditorTitle(vcsCmdString, id); const QString source = VcsBaseEditor::getSource(workingDir, file); - VcsBaseEditorWidget *editor = createVcsEditor(kind, title, source, true, + VcsBaseEditorWidget *editor = createVcsEditor(kind, title, source, + VcsBaseEditor::getCodec(source), vcsCmdString.toLatin1().constData(), id); VcsCommand *cmd = createCommand(workingDir, editor); @@ -402,7 +433,8 @@ void VcsBaseClient::diff(const QString &workingDir, const QStringList &files, const QString id = VcsBaseEditor::getTitleId(workingDir, files); const QString title = vcsEditorTitle(vcsCmdString, id); const QString source = VcsBaseEditor::getSource(workingDir, files); - VcsBaseEditorWidget *editor = createVcsEditor(kind, title, source, true, + VcsBaseEditorWidget *editor = createVcsEditor(kind, title, source, + VcsBaseEditor::getCodec(source), vcsCmdString.toLatin1().constData(), id); editor->setWorkingDirectory(workingDir); @@ -434,7 +466,8 @@ void VcsBaseClient::log(const QString &workingDir, const QStringList &files, const QString id = VcsBaseEditor::getTitleId(workingDir, files); const QString title = vcsEditorTitle(vcsCmdString, id); const QString source = VcsBaseEditor::getSource(workingDir, files); - VcsBaseEditorWidget *editor = createVcsEditor(kind, title, source, true, + VcsBaseEditorWidget *editor = createVcsEditor(kind, title, source, + VcsBaseEditor::getCodec(source), vcsCmdString.toLatin1().constData(), id); editor->setFileLogAnnotateEnabled(enableAnnotationContextMenu); @@ -555,7 +588,8 @@ void VcsBaseClient::view(const QString &source, const QString &id, const Core::Id kind = vcsEditorKind(DiffCommand); const QString title = vcsEditorTitle(vcsCommandString(LogCommand), id); - VcsBaseEditorWidget *editor = createVcsEditor(kind, title, source, true, "view", id); + VcsBaseEditorWidget *editor = createVcsEditor(kind, title, source, + VcsBaseEditor::getCodec(source), "view", id); const QFileInfo fi(source); const QString workingDirPath = fi.isFile() ? fi.absolutePath() : source; @@ -601,36 +635,6 @@ QString VcsBaseClient::vcsEditorTitle(const QString &vcsCmd, const QString &sour Utils::FileName::fromString(sourceId).fileName(); } -VcsBaseEditorWidget *VcsBaseClient::createVcsEditor(Core::Id kind, QString title, - const QString &source, bool setSourceCodec, - const char *registerDynamicProperty, - const QString &dynamicPropertyValue) const -{ - VcsBaseEditorWidget *baseEditor = 0; - Core::IEditor *outputEditor = locateEditor(registerDynamicProperty, dynamicPropertyValue); - const QString progressMsg = tr("Working..."); - if (outputEditor) { - // Exists already - outputEditor->document()->setContents(progressMsg.toUtf8()); - baseEditor = VcsBaseEditor::getVcsBaseEditor(outputEditor); - QTC_ASSERT(baseEditor, return 0); - Core::EditorManager::activateEditor(outputEditor); - } else { - outputEditor = Core::EditorManager::openEditorWithContents(kind, &title, progressMsg.toUtf8()); - outputEditor->document()->setProperty(registerDynamicProperty, dynamicPropertyValue); - baseEditor = VcsBaseEditor::getVcsBaseEditor(outputEditor); - connect(baseEditor, &VcsBaseEditorWidget::annotateRevisionRequested, - this, &VcsBaseClient::annotateRevision); - QTC_ASSERT(baseEditor, return 0); - baseEditor->setSource(source); - if (setSourceCodec) - baseEditor->setCodec(VcsBaseEditor::getCodec(source)); - } - - baseEditor->setForceReadOnly(true); - return baseEditor; -} - void VcsBaseClient::statusParser(const QString &text) { QList<VcsBaseClient::StatusItem> lineInfoList; @@ -646,8 +650,9 @@ void VcsBaseClient::statusParser(const QString &text) emit parsedStatus(lineInfoList); } -void VcsBaseClient::annotateRevision(const QString &workingDirectory, const QString &file, - const QString& change, int lineNumber) +void VcsBaseClient::annotateRevisionRequested(const QString &workingDirectory, + const QString &file, const QString &change, + int line) { QString changeCopy = change; // This might be invoked with a verbose revision description @@ -655,7 +660,7 @@ void VcsBaseClient::annotateRevision(const QString &workingDirectory, const QSt const int blankPos = changeCopy.indexOf(QLatin1Char(' ')); if (blankPos != -1) changeCopy.truncate(blankPos); - annotate(workingDirectory, file, changeCopy, lineNumber); + annotate(workingDirectory, file, changeCopy, line); } } // namespace VcsBase |