From 286b7ef1663dc1b068c16d805769a1e11b6d96db Mon Sep 17 00:00:00 2001 From: con <qtc-committer@nokia.com> Date: Thu, 18 Feb 2010 17:23:24 +0100 Subject: [PATCH] Implement reload behavior for image viewer. --- src/plugins/bineditor/imageviewer.cpp | 44 ++++++++++++++++++++++++--- src/plugins/bineditor/imageviewer.h | 5 ++- 2 files changed, 44 insertions(+), 5 deletions(-) diff --git a/src/plugins/bineditor/imageviewer.cpp b/src/plugins/bineditor/imageviewer.cpp index 2274ab01f65..550fe5b7204 100644 --- a/src/plugins/bineditor/imageviewer.cpp +++ b/src/plugins/bineditor/imageviewer.cpp @@ -32,11 +32,14 @@ #include <coreplugin/icore.h> #include <coreplugin/uniqueidmanager.h> +#include <utils/reloadpromptutils.h> + #include <QtCore/QMap> #include <QtCore/QFileInfo> #include <QtGui/QImageReader> #include <QtGui/QWidget> #include <QtGui/QGridLayout> +#include <QtGui/QMainWindow> #include <QtDebug> namespace { @@ -104,9 +107,42 @@ Core::IFile *ImageViewerFactory::open(const QString & /* fileName */) // #pragma mark -- ImageViewerFile -void ImageViewerFile::modified(ReloadBehavior * /* behavior */) +ImageViewerFile::ImageViewerFile(ImageViewer *parent) + : Core::IFile(parent), + m_editor(parent) +{ + +} + +void ImageViewerFile::modified(ReloadBehavior * behavior) { - // TODO + switch (*behavior) { + case Core::IFile::ReloadNone: + return; + case Core::IFile::ReloadUnmodified: + case Core::IFile::ReloadAll: + m_editor->open(m_fileName); + return; + case Core::IFile::ReloadPermissions: + return; + case Core::IFile::AskForReload: + break; + } + + switch (Utils::reloadPrompt(m_fileName, isModified(), Core::ICore::instance()->mainWindow())) { + case Utils::ReloadCurrent: + m_editor->open(m_fileName); + break; + case Utils::ReloadAll: + m_editor->open(m_fileName); + *behavior = Core::IFile::ReloadAll; + break; + case Utils::ReloadSkipCurrent: + break; + case Utils::ReloadNone: + *behavior = Core::IFile::ReloadNone; + break; + } } // #pragma mark -- ImageViewer @@ -114,7 +150,7 @@ void ImageViewerFile::modified(ReloadBehavior * /* behavior */) ImageViewer::ImageViewer(QObject *parent) : IEditor(parent) { - m_file = new ImageViewerFile; + m_file = new ImageViewerFile(this); m_context << Core::ICore::instance()->uniqueIDManager()->uniqueIdentifier(C_IMAGE_VIEWER); m_scrollArea = new QScrollArea; @@ -132,7 +168,7 @@ ImageViewer::ImageViewer(QObject *parent) ImageViewer::~ImageViewer() { delete m_scrollArea; - delete m_file; + // m_file deleted by parent hierarchy } QList<int> ImageViewer::context() const diff --git a/src/plugins/bineditor/imageviewer.h b/src/plugins/bineditor/imageviewer.h index 3dec61297d0..ea170604b6d 100644 --- a/src/plugins/bineditor/imageviewer.h +++ b/src/plugins/bineditor/imageviewer.h @@ -61,11 +61,13 @@ private: QStringList m_mimeTypes; }; +class ImageViewer; + class ImageViewerFile : public Core::IFile { Q_OBJECT public: - explicit ImageViewerFile(QObject *parent = 0) : Core::IFile(parent) {} + explicit ImageViewerFile(ImageViewer *parent = 0); bool save(const QString &fileName = QString()) { Q_UNUSED(fileName); return false; } QString fileName() const { return m_fileName; } @@ -87,6 +89,7 @@ public: private: QString m_fileName; QString m_mimeType; + ImageViewer *m_editor; }; class ImageViewer : public Core::IEditor -- GitLab