summaryrefslogtreecommitdiff
path: root/src/plugins/diffeditor
diff options
context:
space:
mode:
authorJarek Kobus <jaroslaw.kobus@qt.io>2017-07-03 11:26:52 +0200
committerJarek Kobus <jaroslaw.kobus@qt.io>2017-07-05 14:20:46 +0000
commit13fc3c83138bf7fc898228dd30fd4ae90fd3421d (patch)
tree55bc452756abcde719385d5ef40c53f027728be8 /src/plugins/diffeditor
parent6509753e8684c17f8e05e5e157cbd1f310086292 (diff)
downloadqt-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.cpp8
-rw-r--r--src/plugins/diffeditor/diffeditordocument.h10
-rw-r--r--src/plugins/diffeditor/diffeditorwidgetcontroller.cpp4
-rw-r--r--src/plugins/diffeditor/diffview.cpp34
-rw-r--r--src/plugins/diffeditor/sidebysidediffeditorwidget.cpp2
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 {