core: make mode creation more uniform

This commit is contained in:
hjk
2011-04-14 12:28:21 +02:00
parent 618fde4cc2
commit 3ac9bee144
5 changed files with 20 additions and 23 deletions

View File

@@ -86,12 +86,10 @@ bool CorePlugin::initialize(const QStringList &arguments, QString *errorMessage)
parseArguments(arguments); parseArguments(arguments);
const bool success = m_mainWindow->init(errorMessage); const bool success = m_mainWindow->init(errorMessage);
if (success) { if (success) {
EditorManager *editorManager = m_mainWindow->editorManager(); m_editMode = new EditMode;
m_editMode = new EditMode(editorManager);
addObject(m_editMode); addObject(m_editMode);
m_mainWindow->modeManager()->activateMode(m_editMode->id()); m_mainWindow->modeManager()->activateMode(m_editMode->id());
m_designMode = new DesignMode;
m_designMode = new DesignMode(editorManager);
addObject(m_designMode); addObject(m_designMode);
} }
return success; return success;

View File

@@ -86,36 +86,37 @@ bool DesignModeCoreListener::coreAboutToClose()
} // namespace Internal } // namespace Internal
struct DesignEditorInfo { struct DesignEditorInfo
{
int widgetIndex; int widgetIndex;
QStringList mimeTypes; QStringList mimeTypes;
Context context; Context context;
QWidget *widget; QWidget *widget;
}; };
struct DesignModePrivate { class DesignModePrivate
explicit DesignModePrivate(DesignMode *q, EditorManager *editorManager); {
public:
explicit DesignModePrivate(DesignMode *q);
public:
Internal::DesignModeCoreListener *m_coreListener; Internal::DesignModeCoreListener *m_coreListener;
QWeakPointer<Core::IEditor> m_currentEditor; QWeakPointer<Core::IEditor> m_currentEditor;
bool m_isActive; bool m_isActive;
QList<DesignEditorInfo*> m_editors; QList<DesignEditorInfo*> m_editors;
EditorManager *m_editorManager;
QStackedWidget *m_stackWidget; QStackedWidget *m_stackWidget;
Context m_activeContext; Context m_activeContext;
}; };
DesignModePrivate::DesignModePrivate(DesignMode *q, EditorManager *editorManager) : DesignModePrivate::DesignModePrivate(DesignMode *q)
m_coreListener(new Internal::DesignModeCoreListener(q)), : m_coreListener(new Internal::DesignModeCoreListener(q)),
m_isActive(false), m_isActive(false),
m_editorManager(editorManager),
m_stackWidget(new QStackedWidget) m_stackWidget(new QStackedWidget)
{ {
} }
DesignMode::DesignMode(EditorManager *editorManager) : DesignMode::DesignMode()
IMode(), d(new DesignModePrivate(this, editorManager)) : d(new DesignModePrivate(this))
{ {
setObjectName(QLatin1String("DesignMode")); setObjectName(QLatin1String("DesignMode"));
setEnabled(false); setEnabled(false);
@@ -129,7 +130,7 @@ DesignMode::DesignMode(EditorManager *editorManager) :
ExtensionSystem::PluginManager::instance()->addObject(d->m_coreListener); ExtensionSystem::PluginManager::instance()->addObject(d->m_coreListener);
connect(editorManager, SIGNAL(currentEditorChanged(Core::IEditor*)), connect(EditorManager::instance(), SIGNAL(currentEditorChanged(Core::IEditor*)),
this, SLOT(currentEditorChanged(Core::IEditor*))); this, SLOT(currentEditorChanged(Core::IEditor*)));
connect(ModeManager::instance(), SIGNAL(currentModeChanged(Core::IMode*,Core::IMode*)), connect(ModeManager::instance(), SIGNAL(currentModeChanged(Core::IMode*,Core::IMode*)),

View File

@@ -36,7 +36,6 @@
#include <coreplugin/imode.h> #include <coreplugin/imode.h>
namespace Core { namespace Core {
class EditorManager;
class IEditor; class IEditor;
namespace Internal { namespace Internal {
@@ -50,14 +49,14 @@ class DesignModeCoreListener;
* to the main editor widget itself. * to the main editor widget itself.
*/ */
struct DesignModePrivate; class DesignModePrivate;
class CORE_EXPORT DesignMode : public Core::IMode class CORE_EXPORT DesignMode : public Core::IMode
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit DesignMode(EditorManager *editorManager); explicit DesignMode();
virtual ~DesignMode(); virtual ~DesignMode();
void registerDesignWidget(QWidget *widget, void registerDesignWidget(QWidget *widget,

View File

@@ -51,11 +51,11 @@
using namespace Core; using namespace Core;
using namespace Core::Internal; using namespace Core::Internal;
EditMode::EditMode(EditorManager *editorManager) : EditMode::EditMode() :
m_editorManager(editorManager),
m_splitter(new MiniSplitter), m_splitter(new MiniSplitter),
m_rightSplitWidgetLayout(new QVBoxLayout) m_rightSplitWidgetLayout(new QVBoxLayout)
{ {
m_editorManager = EditorManager::instance();
setObjectName(QLatin1String("EditMode")); setObjectName(QLatin1String("EditMode"));
setDisplayName(tr("Edit")); setDisplayName(tr("Edit"));
setIcon(QIcon(QLatin1String(":/fancyactionbar/images/mode_Edit.png"))); setIcon(QIcon(QLatin1String(":/fancyactionbar/images/mode_Edit.png")));

View File

@@ -37,7 +37,6 @@
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
class QSplitter; class QSplitter;
class QWidget;
class QVBoxLayout; class QVBoxLayout;
QT_END_NAMESPACE QT_END_NAMESPACE
@@ -52,7 +51,7 @@ class EditMode : public Core::IMode
Q_OBJECT Q_OBJECT
public: public:
EditMode(EditorManager *editorManager); EditMode();
~EditMode(); ~EditMode();
private slots: private slots: