diff options
author | Jarek Kobus <jaroslaw.kobus@qt.io> | 2017-07-03 11:26:52 +0200 |
---|---|---|
committer | Jarek Kobus <jaroslaw.kobus@qt.io> | 2017-07-05 14:20:46 +0000 |
commit | 13fc3c83138bf7fc898228dd30fd4ae90fd3421d (patch) | |
tree | 55bc452756abcde719385d5ef40c53f027728be8 /src/plugins/diffeditor | |
parent | 6509753e8684c17f8e05e5e157cbd1f310086292 (diff) | |
download | qt-creator-13fc3c83138bf7fc898228dd30fd4ae90fd3421d.tar.gz |
DiffEditor: Share "failed" state among multiple views
Change-Id: Id049ce8eafcb21d5e60fae17c47df8657c0e5779
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Diffstat (limited to 'src/plugins/diffeditor')
-rw-r--r-- | src/plugins/diffeditor/diffeditordocument.cpp | 8 | ||||
-rw-r--r-- | src/plugins/diffeditor/diffeditordocument.h | 10 | ||||
-rw-r--r-- | src/plugins/diffeditor/diffeditorwidgetcontroller.cpp | 4 | ||||
-rw-r--r-- | src/plugins/diffeditor/diffview.cpp | 34 | ||||
-rw-r--r-- | src/plugins/diffeditor/sidebysidediffeditorwidget.cpp | 2 |
5 files changed, 43 insertions, 15 deletions
diff --git a/src/plugins/diffeditor/diffeditordocument.cpp b/src/plugins/diffeditor/diffeditordocument.cpp index aac0ba2f06..12c3362770 100644 --- a/src/plugins/diffeditor/diffeditordocument.cpp +++ b/src/plugins/diffeditor/diffeditordocument.cpp @@ -205,7 +205,7 @@ QString DiffEditorDocument::fallbackSaveAsPath() const bool DiffEditorDocument::isSaveAsAllowed() const { - return !isReloading(); + return state() == LoadOK; } bool DiffEditorDocument::save(QString *errorString, const QString &fileName, bool autoSave) @@ -213,7 +213,7 @@ bool DiffEditorDocument::save(QString *errorString, const QString &fileName, boo Q_UNUSED(errorString) Q_UNUSED(autoSave) - if (isReloading()) + if (state() != LoadOK) return false; const bool ok = write(fileName, format(), plainText(), errorString); @@ -337,7 +337,7 @@ QString DiffEditorDocument::plainText() const void DiffEditorDocument::beginReload() { emit aboutToReload(); - m_isReloading = true; + m_state = Reloading; emit changed(); const bool blocked = blockSignals(true); setDiffFiles(QList<FileData>(), QString()); @@ -347,7 +347,7 @@ void DiffEditorDocument::beginReload() void DiffEditorDocument::endReload(bool success) { - m_isReloading = false; + m_state = success ? LoadOK : LoadFailed; emit changed(); emit reloadFinished(success); } diff --git a/src/plugins/diffeditor/diffeditordocument.h b/src/plugins/diffeditor/diffeditordocument.h index 18c73b61ce..14c04e4602 100644 --- a/src/plugins/diffeditor/diffeditordocument.h +++ b/src/plugins/diffeditor/diffeditordocument.h @@ -46,6 +46,12 @@ public: DiffEditorController *controller() const; + enum State { + LoadOK, + Reloading, + LoadFailed + }; + QString makePatch(int fileIndex, int chunkIndex, bool revert, bool addPrefix = false, const QString &overriddenFileName = QString()) const; @@ -76,7 +82,7 @@ public: bool reload(QString *errorString, ReloadFlag flag, ChangeType type) override; OpenResult open(QString *errorString, const QString &fileName, const QString &realFileName) override; - bool isReloading() const { return m_isReloading; } + State state() const { return m_state; } void beginReload(); void endReload(bool success); @@ -100,7 +106,7 @@ private: int m_contextLineCount; bool m_isContextLineCountForced; bool m_ignoreWhitespace; - bool m_isReloading = false; + State m_state = LoadOK; friend class ::DiffEditor::DiffEditorController; }; diff --git a/src/plugins/diffeditor/diffeditorwidgetcontroller.cpp b/src/plugins/diffeditor/diffeditorwidgetcontroller.cpp index 53c3d05d4a..6197da5296 100644 --- a/src/plugins/diffeditor/diffeditorwidgetcontroller.cpp +++ b/src/plugins/diffeditor/diffeditorwidgetcontroller.cpp @@ -78,7 +78,7 @@ void DiffEditorWidgetController::setDocument(DiffEditorDocument *document) disconnect(m_document, &IDocument::reloadFinished, this, &DiffEditorWidgetController::hideProgress); } - const bool wasRunning = m_document && m_document->isReloading(); + const bool wasRunning = m_document && m_document->state() == DiffEditorDocument::Reloading; m_document = document; @@ -87,7 +87,7 @@ void DiffEditorWidgetController::setDocument(DiffEditorDocument *document) connect(m_document, &IDocument::reloadFinished, this, &DiffEditorWidgetController::hideProgress); } - const bool isRunning = m_document && m_document->isReloading(); + const bool isRunning = m_document && m_document->state() == DiffEditorDocument::Reloading; if (wasRunning == isRunning) return; diff --git a/src/plugins/diffeditor/diffview.cpp b/src/plugins/diffeditor/diffview.cpp index 5a8938ba0c..23e165f58e 100644 --- a/src/plugins/diffeditor/diffview.cpp +++ b/src/plugins/diffeditor/diffview.cpp @@ -117,15 +117,26 @@ void UnifiedView::setDocument(DiffEditorDocument *document) { QTC_ASSERT(m_widget, return); m_widget->setDocument(document); - if (document && document->isReloading()) + if (!document) + return; + + switch (document->state()) { + case DiffEditorDocument::Reloading: m_widget->clear(tr("Waiting for data...")); + break; + case DiffEditorDocument::LoadFailed: + m_widget->clear(tr("Retrieving data failed.")); + break; + default: + break; + } } void UnifiedView::beginOperation() { QTC_ASSERT(m_widget, return); DiffEditorDocument *document = m_widget->diffDocument(); - if (document && !document->isReloading()) + if (document && document->state() == DiffEditorDocument::LoadOK) m_widget->saveState(); m_widget->clear(tr("Waiting for data...")); } @@ -142,7 +153,7 @@ void UnifiedView::endOperation(bool success) if (success) m_widget->restoreState(); else - m_widget->clear(tr("Failed")); + m_widget->clear(tr("Retrieving data failed.")); } void UnifiedView::setCurrentDiffFileIndex(int index) @@ -192,15 +203,26 @@ void SideBySideView::setDocument(DiffEditorDocument *document) { QTC_ASSERT(m_widget, return); m_widget->setDocument(document); - if (document && document->isReloading()) + if (!document) + return; + + switch (document->state()) { + case DiffEditorDocument::Reloading: m_widget->clear(tr("Waiting for data...")); + break; + case DiffEditorDocument::LoadFailed: + m_widget->clear(tr("Retrieving data failed.")); + break; + default: + break; + } } void SideBySideView::beginOperation() { QTC_ASSERT(m_widget, return); DiffEditorDocument *document = m_widget->diffDocument(); - if (document && !document->isReloading()) + if (document && document->state() == DiffEditorDocument::LoadOK) m_widget->saveState(); m_widget->clear(tr("Waiting for data...")); } @@ -223,7 +245,7 @@ void SideBySideView::endOperation(bool success) if (success) m_widget->restoreState(); else - m_widget->clear(tr("Failed")); + m_widget->clear(tr("Retrieving data failed.")); } void SideBySideView::setSync(bool sync) diff --git a/src/plugins/diffeditor/sidebysidediffeditorwidget.cpp b/src/plugins/diffeditor/sidebysidediffeditorwidget.cpp index 7852dc7df2..80b2564d11 100644 --- a/src/plugins/diffeditor/sidebysidediffeditorwidget.cpp +++ b/src/plugins/diffeditor/sidebysidediffeditorwidget.cpp @@ -615,7 +615,7 @@ void SideBySideDiffEditorWidget::setDiff(const QList<FileData> &diffFileList, m_controller.m_contextFileData = diffFileList; if (m_controller.m_contextFileData.isEmpty()) { - const QString msg = tr("No difference"); + const QString msg = tr("No difference."); m_leftEditor->setPlainText(msg); m_rightEditor->setPlainText(msg); } else { |