Avoid multiple shows of same form editor info bar.

This commit is contained in:
con
2010-03-31 10:09:34 +02:00
parent e1935a0edf
commit 0757139cb8
4 changed files with 24 additions and 22 deletions

View File

@@ -50,8 +50,6 @@ DesignerXmlEditor::DesignerXmlEditor(QDesignerFormWindowInterface *form,
m_designerEditor(new FormWindowEditor(this, form)) m_designerEditor(new FormWindowEditor(this, form))
{ {
setReadOnly(true); setReadOnly(true);
connect(Core::EditorManager::instance(), SIGNAL(currentEditorChanged(Core::IEditor*)),
SLOT(updateEditorInfoBar(Core::IEditor*)));
} }
TextEditor::BaseTextEditorEditable *DesignerXmlEditor::createEditableInterface() TextEditor::BaseTextEditorEditable *DesignerXmlEditor::createEditableInterface()
@@ -61,22 +59,6 @@ TextEditor::BaseTextEditorEditable *DesignerXmlEditor::createEditableInterface()
return m_designerEditor->textEditable(); return m_designerEditor->textEditable();
} }
void DesignerXmlEditor::updateEditorInfoBar(Core::IEditor *editor)
{
if (editor == m_designerEditor) {
Core::EditorManager::instance()->showEditorInfoBar(Constants::INFO_READ_ONLY,
tr("This file can only be edited in Design Mode."),
tr("Open Designer"), this, SLOT(designerModeClicked()));
}
if (!editor)
Core::EditorManager::instance()->hideEditorInfoBar(Constants::INFO_READ_ONLY);
}
void DesignerXmlEditor::designerModeClicked()
{
Core::ICore::instance()->modeManager()->activateMode(QLatin1String(Core::Constants::MODE_DESIGN));
}
FormWindowEditor *DesignerXmlEditor::designerEditor() const FormWindowEditor *DesignerXmlEditor::designerEditor() const
{ {
return m_designerEditor; return m_designerEditor;

View File

@@ -58,10 +58,6 @@ public:
FormWindowEditor *designerEditor() const; FormWindowEditor *designerEditor() const;
private slots:
void designerModeClicked();
void updateEditorInfoBar(Core::IEditor *editor);
protected: protected:
virtual TextEditor::BaseTextEditorEditable *createEditableInterface(); virtual TextEditor::BaseTextEditorEditable *createEditableInterface();

View File

@@ -34,9 +34,11 @@
#include "designerconstants.h" #include "designerconstants.h"
#include "designerxmleditor.h" #include "designerxmleditor.h"
#include <coreplugin/coreconstants.h>
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
#include <coreplugin/fileiconprovider.h> #include <coreplugin/fileiconprovider.h>
#include <coreplugin/editormanager/editormanager.h> #include <coreplugin/editormanager/editormanager.h>
#include <coreplugin/modemanager.h>
#include <QtCore/QFileInfo> #include <QtCore/QFileInfo>
#include <QtCore/QDebug> #include <QtCore/QDebug>
@@ -53,6 +55,8 @@ FormEditorFactory::FormEditorFactory()
Core::FileIconProvider *iconProvider = Core::FileIconProvider::instance(); Core::FileIconProvider *iconProvider = Core::FileIconProvider::instance();
iconProvider->registerIconOverlayForSuffix(QIcon(QLatin1String(":/formeditor/images/qt_ui.png")), iconProvider->registerIconOverlayForSuffix(QIcon(QLatin1String(":/formeditor/images/qt_ui.png")),
QLatin1String("ui")); QLatin1String("ui"));
connect(Core::EditorManager::instance(), SIGNAL(currentEditorChanged(Core::IEditor*)),
SLOT(updateEditorInfoBar(Core::IEditor*)));
} }
QString FormEditorFactory::id() const QString FormEditorFactory::id() const
@@ -82,6 +86,22 @@ QStringList FormEditorFactory::mimeTypes() const
return m_mimeTypes; return m_mimeTypes;
} }
void FormEditorFactory::updateEditorInfoBar(Core::IEditor *editor)
{
if (qobject_cast<FormWindowEditor *>(editor)) {
Core::EditorManager::instance()->showEditorInfoBar(Constants::INFO_READ_ONLY,
tr("This file can only be edited in Design Mode."),
tr("Open Designer"), this, SLOT(designerModeClicked()));
} else {
Core::EditorManager::instance()->hideEditorInfoBar(Constants::INFO_READ_ONLY);
}
}
void FormEditorFactory::designerModeClicked()
{
Core::ICore::instance()->modeManager()->activateMode(QLatin1String(Core::Constants::MODE_DESIGN));
}
} // namespace Internal } // namespace Internal
} // namespace Designer } // namespace Designer

View File

@@ -56,6 +56,10 @@ public:
Core::IFile *open(const QString &fileName); Core::IFile *open(const QString &fileName);
Core::IEditor *createEditor(QWidget *parent); Core::IEditor *createEditor(QWidget *parent);
private slots:
void designerModeClicked();
void updateEditorInfoBar(Core::IEditor *editor);
private: private:
const QStringList m_mimeTypes; const QStringList m_mimeTypes;
}; };