OSDN Git Service

Replace BaseMode convenience class by individual implementation.
authorhjk <qtc-committer@nokia.com>
Mon, 6 Dec 2010 13:12:38 +0000 (14:12 +0100)
committerhjk <qtc-committer@nokia.com>
Tue, 7 Dec 2010 15:45:58 +0000 (16:45 +0100)
Using the convienience class does not really save code and adds another
needless level in the hierarchy. This affects the three remaining BaseMode
users: Help, ProjectExplorer and HelloWorld.

14 files changed:
src/plugins/coreplugin/basemode.cpp
src/plugins/coreplugin/basemode.h
src/plugins/coreplugin/coreplugin.pro
src/plugins/helloworld/helloworldplugin.cpp
src/plugins/helloworld/helloworldplugin.h
src/plugins/help/helpconstants.h
src/plugins/help/helpmode.cpp
src/plugins/help/helpmode.h
src/plugins/help/helpplugin.cpp
src/plugins/mercurial/mercurialplugin.cpp
src/plugins/projectexplorer/projectexplorer.cpp
src/plugins/qmljsinspector/qmljsinspector.cpp
src/plugins/qmljsinspector/qmljsinspector.h
src/plugins/qmljsinspector/qmljsinspectorplugin.cpp

index 87b40cc..e69de29 100644 (file)
@@ -1,87 +0,0 @@
-/**************************************************************************
-**
-** This file is part of Qt Creator
-**
-** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
-**
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** Commercial Usage
-**
-** Licensees holding valid Qt Commercial licenses may use this file in
-** accordance with the Qt Commercial License Agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Nokia.
-**
-** GNU Lesser General Public License Usage
-**
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-**
-**************************************************************************/
-
-#include "basemode.h"
-
-#include <extensionsystem/pluginmanager.h>
-
-#include <QtGui/QWidget>
-#include <QtGui/QIcon>
-
-using namespace Core;
-
-/*!
-    \class BaseMode
-    \mainclass
-    \inheaderfile basemode.h
-    \brief A base implementation of the mode interface IMode.
-
-    The BaseMode class can be used directly for most IMode implementations. It has setter functions
-    for the mode properties and a convenience constructor.
-
-    The ownership of the widget is given to the BaseMode, so when the BaseMode is destroyed it
-    deletes its widget.
-
-    A typical use case is to do the following in the init method of a plugin:
-    \code
-    bool MyPlugin::init(QString *error_message)
-    {
-        [...]
-        addObject(new Core::BaseMode("mymode",
-            "MyPlugin.ModeId",
-            icon,
-            50, // priority
-            new MyWidget));
-        [...]
-    }
-    \endcode
-*/
-
-/*!
-    \fn BaseMode::BaseMode(QObject *parent)
-
-    Creates a mode with empty display name, no icon, lowest priority and no widget. You should use the
-    setter functions to give the mode a meaning.
-
-    \a parent
-*/
-BaseMode::BaseMode(QObject *parent):
-    IMode(parent),
-    m_priority(0),
-    m_widget(0)
-{
-}
-
-/*!
-    \fn BaseMode::~BaseMode()
-*/
-BaseMode::~BaseMode()
-{
-    delete m_widget;
-}
index d800ceb..e69de29 100644 (file)
@@ -1,87 +0,0 @@
-/**************************************************************************
-**
-** This file is part of Qt Creator
-**
-** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
-**
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** Commercial Usage
-**
-** Licensees holding valid Qt Commercial licenses may use this file in
-** accordance with the Qt Commercial License Agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Nokia.
-**
-** GNU Lesser General Public License Usage
-**
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-**
-**************************************************************************/
-
-#ifndef BASEMODE_H
-#define BASEMODE_H
-
-#include "core_global.h"
-#include "imode.h"
-
-#include <QtCore/QObject>
-
-#include <QtGui/QIcon>
-
-QT_BEGIN_NAMESPACE
-class QWidget;
-QT_END_NAMESPACE
-
-namespace Core {
-
-class CORE_EXPORT BaseMode
-  : public IMode
-{
-    Q_OBJECT
-
-public:
-    BaseMode(QObject *parent = 0);
-    ~BaseMode();
-
-    // IMode
-    QString displayName() const { return m_displayName; }
-    QIcon icon() const { return m_icon; }
-    int priority() const { return m_priority; }
-    QWidget *widget() { return m_widget; }
-    QString id() const { return m_id; }
-    QString type() const { return m_type; }
-    Context context() const { return m_context; }
-    QString contextHelpId() const { return m_helpId; }
-
-    void setDisplayName(const QString &name) { m_displayName = name; }
-    void setIcon(const QIcon &icon) { m_icon = icon; }
-    void setPriority(int priority) { m_priority = priority; }
-    void setWidget(QWidget *widget) { m_widget = widget; }
-    void setId(const QString &id) { m_id = id; }
-    void setType(const QString &type) { m_type = type; }
-    void setContextHelpId(const QString &helpId) { m_helpId = helpId; }
-    void setContext(const Context &context) { m_context = context; }
-
-private:
-    QString m_displayName;
-    QIcon m_icon;
-    int m_priority;
-    QWidget *m_widget;
-    QString m_id;
-    QString m_type;
-    QString m_helpId;
-    Context m_context;
-};
-
-} // namespace Core
-
-#endif // BASEMODE_H
index daf1fae..dd416a7 100644 (file)
@@ -56,7 +56,6 @@ SOURCES += mainwindow.cpp \
     progressmanager/progressbar.cpp \
     progressmanager/futureprogress.cpp \
     scriptmanager/scriptmanager.cpp \
-    basemode.cpp \
     statusbarwidget.cpp \
     coreplugin.cpp \
     variablemanager.cpp \
@@ -167,7 +166,6 @@ HEADERS += mainwindow.h \
     scriptmanager/scriptmanager.h \
     scriptmanager/scriptmanager_p.h \
     core_global.h \
-    basemode.h \
     statusbarwidget.h \
     coreplugin.h \
     variablemanager.h \
index 5a5447f..cece132 100644 (file)
@@ -31,9 +31,9 @@
 
 #include <coreplugin/actionmanager/actionmanager.h>
 #include <coreplugin/actionmanager/actioncontainer.h>
-#include <coreplugin/basemode.h>
 #include <coreplugin/coreconstants.h>
 #include <coreplugin/icore.h>
+#include <coreplugin/imode.h>
 #include <coreplugin/modemanager.h>
 #include <coreplugin/uniqueidmanager.h>
 
 #include <QtGui/QMessageBox>
 #include <QtGui/QPushButton>
 
-using namespace HelloWorld::Internal;
+namespace HelloWorld {
+namespace Internal {
+
+/*!  A mode with a push button based on BaseMode.  */
+
+class HelloMode : public Core::IMode
+{
+public:
+    HelloMode() : m_widget(new QPushButton(tr("Hello World PushButton!"))) {}
+
+    QString displayName() const { return tr("Hello world!"); }
+    QIcon icon() const { return QIcon(); }
+    int priority() const { return 0; }
+    QWidget *widget() { return m_widget; }
+    QString id() const { return QLatin1String("HelloWorld.HelloWorldMode"); }
+    QString type() const { return QLatin1String("HelloWorld.HelloWorldMode"); }
+    Core::Context context() const { return Core::Context("HelloWorld.MainView"); };
+    QString contextHelpId() const { return QString(); }
+
+private:
+    QWidget *m_widget;
+};
+
 
 /*! Constructs the Hello World plugin. Normally plugins don't do anything in
     their constructor except for initializing their member variables. The
@@ -76,7 +98,7 @@ bool HelloWorldPlugin::initialize(const QStringList &arguments, QString *error_m
     // Get the primary access point to the workbench.
     Core::ICore *core = Core::ICore::instance();
 
-    // Create a unique context id for our own view, that will be used for the
+    // Create a unique context for our own view, that will be used for the
     // menu entry later.
     Core::Context context("HelloWorld.MainView");
 
@@ -107,15 +129,8 @@ bool HelloWorldPlugin::initialize(const QStringList &arguments, QString *error_m
 
     // Add a mode with a push button based on BaseMode. Like the BaseView,
     // it will unregister itself from the plugin manager when it is deleted.
-    Core::BaseMode *baseMode = new Core::BaseMode;
-    baseMode->setId(QLatin1String("HelloWorld.HelloWorldMode"));
-    baseMode->setType(QLatin1String("HelloWorld.HelloWorldMode"));
-    baseMode->setDisplayName(tr("Hello world!"));
-    baseMode->setIcon(QIcon());
-    baseMode->setPriority(0);
-    baseMode->setWidget(new QPushButton(tr("Hello World PushButton!")));
-    baseMode->setContext(context);
-    addAutoReleasedObject(baseMode);
+    Core::IMode *helloMode = new HelloMode;
+    addAutoReleasedObject(helloMode);
 
     // Add the Hello World action command to the mode manager (with 0 priority)
     Core::ModeManager *modeManager = core->modeManager();
@@ -147,4 +162,7 @@ void HelloWorldPlugin::sayHelloWorld()
             0, tr("Hello World!"), tr("Hello World! Beautiful day today, isn't it?"));
 }
 
-Q_EXPORT_PLUGIN(HelloWorldPlugin)
+} // namespace Internal
+} // namespace HelloWorld
+
+Q_EXPORT_PLUGIN(HelloWorld::Internal::HelloWorldPlugin)
index 8b635d3..25fd168 100644 (file)
@@ -50,8 +50,6 @@ public:
 
 private slots:
     void sayHelloWorld();
-
-private:
 };
 
 } // namespace Internal
index 32606ec..b37c1ac 100644 (file)
@@ -31,6 +31,7 @@
 #define HELPCONSTANTS_H
 
 #include <QtCore/QtGlobal>
+#include <QtCore/QLatin1String>
 
 namespace Help {
     namespace Constants {
index e98f0b8..cd94c11 100644 (file)
 #include "helpmode.h"
 #include "helpconstants.h"
 
+#include <QtGui/QIcon>
 #include <QtGui/QWidget>
 
 using namespace Help;
 using namespace Help::Internal;
 
-HelpMode::HelpMode(QWidget *widget, QObject *parent)
-    : BaseMode(parent)
+HelpMode::HelpMode(QObject *parent)
+  : Core::IMode(parent),
+    m_widget(0),
+    m_icon(QLatin1String(":/fancyactionbar/images/mode_Reference.png"))
 {
     setObjectName(QLatin1String("HelpMode"));
-    setDisplayName(tr("Help"));
-    setId(QLatin1String(Constants::ID_MODE_HELP));
-    setIcon(QIcon(QLatin1String(":/fancyactionbar/images/mode_Reference.png")));
-    setPriority(Constants::P_MODE_HELP);
-    setWidget(widget);
 }
-
-
index e74993c..05677a6 100644 (file)
 #ifndef HELPMODE_H
 #define HELPMODE_H
 
-#include <coreplugin/basemode.h>
+#include "helpmode.h"
+#include "helpconstants.h"
 
-QT_FORWARD_DECLARE_CLASS(QWidget)
+#include <coreplugin/imode.h>
+
+#include <QtCore/QString>
+#include <QtGui/QIcon>
 
 namespace Help {
 namespace Internal {
 
-class HelpMode : public Core::BaseMode
+class HelpMode : public Core::IMode
 {
-    Q_OBJECT
-
 public:
-    explicit HelpMode(QWidget *widget, QObject *parent = 0);
+    HelpMode(QObject *parent = 0);
+
+    QString displayName() const { return tr("Help"); }
+    QIcon icon() const { return m_icon; }
+    int priority() const { return Constants::P_MODE_HELP; }
+    QWidget *widget() { return m_widget; }
+    QString id() const { return QLatin1String(Constants::ID_MODE_HELP); }
+    QString type() const { return QString(); }
+    Core::Context context() const { return Core::Context(Constants::C_MODE_HELP); }
+    QString contextHelpId() const { return QString(); }
+    void setWidget(QWidget *widget) { m_widget = widget; }
+
+private:
+    QWidget *m_widget;
+    QIcon m_icon;
 };
 
 } // namespace Internal
index 0730130..8529775 100644 (file)
@@ -342,18 +342,18 @@ bool HelpPlugin::initialize(const QStringList &arguments, QString *error)
         Core::IMode*)), this, SLOT(modeChanged(Core::IMode*, Core::IMode*)));
 
     m_externalWindow = new ExternalHelpWindow;
+    m_mode = new HelpMode;
     if (contextHelpOption() == Help::Constants::ExternalHelpAlways) {
-        m_mode = new HelpMode(new QWidget);
+        m_mode->setWidget(new QWidget);
         m_mode->setEnabled(false);
         m_externalHelpBar->setVisible(true);
         m_externalWindow->setCentralWidget(m_splitter);
         QTimer::singleShot(0, this, SLOT(showExternalWindow()));
     } else {
-        m_mode = new HelpMode(m_splitter);
+        m_mode->setWidget(m_splitter);
         m_internalHelpBar->setVisible(true);
     }
     addAutoReleasedObject(m_mode);
-    m_mode->setContext(modecontext);
 
     return true;
 }
index d2e45d9..780ff6b 100644 (file)
@@ -43,7 +43,6 @@
 #include <coreplugin/actionmanager/actioncontainer.h>
 #include <coreplugin/actionmanager/command.h>
 #include <coreplugin/uniqueidmanager.h>
-#include <coreplugin/basemode.h>
 #include <coreplugin/vcsmanager.h>
 #include <coreplugin/coreconstants.h>
 #include <coreplugin/icore.h>
index 8ac905e..dac07ca 100644 (file)
 #include "publishing/ipublishingwizardfactory.h"
 #include "publishing/publishingwizardselectiondialog.h"
 
-#include <coreplugin/basemode.h>
 #include <coreplugin/coreconstants.h>
 #include <coreplugin/filemanager.h>
 #include <coreplugin/icore.h>
+#include <coreplugin/imode.h>
 #include <coreplugin/mimedatabase.h>
 #include <coreplugin/modemanager.h>
 #include <coreplugin/actionmanager/actionmanager.h>
@@ -201,7 +201,7 @@ struct ProjectExplorerPluginPrivate {
     Internal::ProjectExplorerSettings m_projectExplorerSettings;
     Internal::ProjectWelcomePage *m_welcomePage;
 
-    Core::BaseMode * m_projectsMode;
+    Core::IMode *m_projectsMode;
 };
 
 ProjectExplorerPluginPrivate::ProjectExplorerPluginPrivate() :
@@ -212,6 +212,25 @@ ProjectExplorerPluginPrivate::ProjectExplorerPluginPrivate() :
 {
 }
 
+class ProjectsMode : public Core::IMode
+{
+public:
+    ProjectsMode(QWidget *proWindow) : m_widget(proWindow) {}
+
+    QString displayName() const { return tr("Projects"); }
+    QIcon icon() const { return QIcon(QLatin1String(":/fancyactionbar/images/mode_Project.png")); }
+    int priority() const { return Constants::P_MODE_SESSION; }
+    QWidget *widget() { return m_widget; }
+    QString id() const { return QLatin1String(Constants::MODE_SESSION); }
+    QString type() const { return QString(); }
+    Core::Context context() const { return Core::Context(Constants::C_PROJECTEXPLORER); }
+    QString contextHelpId() const { return QLatin1String("Managing Projects"); }
+
+private:
+    QWidget *m_widget;
+    QIcon m_icon;
+};
+
 }  // namespace ProjectExplorer
 
 using namespace ProjectExplorer;
@@ -280,18 +299,10 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er
     d->m_proWindow = new ProjectWindow;
 
     Core::Context globalcontext(Core::Constants::C_GLOBAL);
-    Core::Context pecontext(Constants::C_PROJECTEXPLORER);
     Core::Context projecTreeContext(Constants::C_PROJECT_TREE);
 
-    d->m_projectsMode = new Core::BaseMode;
-    d->m_projectsMode->setDisplayName(tr("Projects"));
-    d->m_projectsMode->setId(QLatin1String(Constants::MODE_SESSION));
-    d->m_projectsMode->setIcon(QIcon(QLatin1String(":/fancyactionbar/images/mode_Project.png")));
-    d->m_projectsMode->setPriority(Constants::P_MODE_SESSION);
-    d->m_projectsMode->setWidget(d->m_proWindow);
-    d->m_projectsMode->setContext(pecontext);
+    d->m_projectsMode = new ProjectsMode(d->m_proWindow);
     d->m_projectsMode->setEnabled(session()->startupProject());
-    d->m_projectsMode->setContextHelpId(QLatin1String("Managing Projects"));
     addAutoReleasedObject(d->m_projectsMode);
     d->m_proWindow->layout()->addWidget(new Core::FindToolBarPlaceHolder(d->m_proWindow));
 
index 6ce1705..45464dd 100644 (file)
@@ -50,7 +50,6 @@
 #include <utils/styledbar.h>
 
 #include <coreplugin/icontext.h>
-#include <coreplugin/basemode.h>
 #include <coreplugin/findplaceholder.h>
 #include <coreplugin/minisplitter.h>
 #include <coreplugin/outputpane.h>
index f1fffe9..c62ea03 100644 (file)
@@ -32,7 +32,6 @@
 
 #include "qmljsprivateapi.h"
 
-#include <coreplugin/basemode.h>
 #include <debugger/debuggerconstants.h>
 #include <qmlprojectmanager/qmlprojectrunconfiguration.h>
 #include <utils/fileinprojectfinder.h>
index ea551df..b02a9ae 100644 (file)
@@ -43,6 +43,7 @@
 
 #include <coreplugin/icore.h>
 #include <coreplugin/icontext.h>
+#include <coreplugin/imode.h>
 #include <coreplugin/coreconstants.h>
 #include <coreplugin/modemanager.h>