From f8f0c4ce44fe7558ecea67669de72981af03b822 Mon Sep 17 00:00:00 2001
From: Daniel Molkentin <daniel.molkentin@nokia.com>
Date: Mon, 20 Jul 2009 19:08:09 +0200
Subject: [PATCH] Move Welcome Page to separate plugin.

---
 src/plugins/coreplugin/core.qrc               |  19 ----
 src/plugins/coreplugin/coreplugin.cpp         |  11 +-
 src/plugins/coreplugin/coreplugin.h           |   7 +-
 src/plugins/coreplugin/coreplugin.pro         |   8 +-
 src/plugins/help/Help.pluginspec              |   1 +
 src/plugins/help/help.pro                     |   1 +
 src/plugins/help/helpplugin.cpp               |   6 +-
 src/plugins/plugins.pro                       |   6 +-
 .../ProjectExplorer.pluginspec                |   1 +
 .../projectexplorer/projectexplorer.cpp       |  15 ++-
 src/plugins/projectexplorer/projectexplorer.h |  11 +-
 .../projectexplorer_dependencies.pri          |   1 +
 .../Qt4ProjectManager.pluginspec              |   1 +
 .../qt4projectmanager/qtversionmanager.cpp    |   4 +-
 src/plugins/quickopen/quickopen.cp            |   0
 src/plugins/welcome/Welcome.pluginspec        |  24 +++++
 .../images}/arrow-left.png                    | Bin
 .../images}/arrow-right.png                   | Bin
 .../images}/background_center_frame.png       | Bin
 .../welcomemode => welcome/images}/btn_26.png | Bin
 .../images}/btn_26_hover.png                  | Bin
 .../images}/btn_26_pressed.png                | Bin
 .../welcomemode => welcome/images}/btn_27.png | Bin
 .../images}/btn_27_hover.png                  | Bin
 .../images}/center_frame_header.png           | Bin
 .../images}/combobox_arrow.png                | Bin
 .../images}/feedback-bar-background.png       | Bin
 .../images}/feedback_arrow.png                | Bin
 .../images}/feedback_arrow_hover.png          | Bin
 .../images}/list_bullet_arrow.png             | Bin
 .../images}/mode_project.png                  | Bin
 .../images}/nokia_logo.png                    | Bin
 .../images}/product_logo.png                  | Bin
 .../images}/qt_logo.png                       | Bin
 .../images}/rc_combined.png                   | Bin
 .../{coreplugin => welcome}/rssfetcher.cpp    |   2 +-
 .../{coreplugin => welcome}/rssfetcher.h      |   6 +-
 src/plugins/welcome/welcome.pri               |   2 +
 src/plugins/welcome/welcome.pro               |  22 ++++
 src/plugins/welcome/welcome.qrc               |  23 +++++
 src/plugins/welcome/welcome_global.h          |  12 +++
 .../{coreplugin => welcome}/welcomemode.cpp   |  34 +++---
 .../{coreplugin => welcome}/welcomemode.h     |  10 +-
 .../{coreplugin => welcome}/welcomemode.ui    |  36 +++----
 .../{coreplugin => welcome}/welcomemode_p.h   |   4 +-
 src/plugins/welcome/welcomeplugin.cpp         |  97 ++++++++++++++++++
 src/plugins/welcome/welcomeplugin.h           |  58 +++++++++++
 47 files changed, 317 insertions(+), 105 deletions(-)
 create mode 100644 src/plugins/quickopen/quickopen.cp
 create mode 100644 src/plugins/welcome/Welcome.pluginspec
 rename src/plugins/{coreplugin/images/welcomemode => welcome/images}/arrow-left.png (100%)
 rename src/plugins/{coreplugin/images/welcomemode => welcome/images}/arrow-right.png (100%)
 rename src/plugins/{coreplugin/images/welcomemode => welcome/images}/background_center_frame.png (100%)
 rename src/plugins/{coreplugin/images/welcomemode => welcome/images}/btn_26.png (100%)
 rename src/plugins/{coreplugin/images/welcomemode => welcome/images}/btn_26_hover.png (100%)
 rename src/plugins/{coreplugin/images/welcomemode => welcome/images}/btn_26_pressed.png (100%)
 rename src/plugins/{coreplugin/images/welcomemode => welcome/images}/btn_27.png (100%)
 rename src/plugins/{coreplugin/images/welcomemode => welcome/images}/btn_27_hover.png (100%)
 rename src/plugins/{coreplugin/images/welcomemode => welcome/images}/center_frame_header.png (100%)
 rename src/plugins/{coreplugin/images/welcomemode => welcome/images}/combobox_arrow.png (100%)
 rename src/plugins/{coreplugin/images/welcomemode => welcome/images}/feedback-bar-background.png (100%)
 rename src/plugins/{coreplugin/images/welcomemode => welcome/images}/feedback_arrow.png (100%)
 rename src/plugins/{coreplugin/images/welcomemode => welcome/images}/feedback_arrow_hover.png (100%)
 rename src/plugins/{coreplugin/images/welcomemode => welcome/images}/list_bullet_arrow.png (100%)
 rename src/plugins/{coreplugin/images/welcomemode => welcome/images}/mode_project.png (100%)
 rename src/plugins/{coreplugin/images/welcomemode => welcome/images}/nokia_logo.png (100%)
 rename src/plugins/{coreplugin/images/welcomemode => welcome/images}/product_logo.png (100%)
 rename src/plugins/{coreplugin/images/welcomemode => welcome/images}/qt_logo.png (100%)
 rename src/plugins/{coreplugin/images/welcomemode => welcome/images}/rc_combined.png (100%)
 rename src/plugins/{coreplugin => welcome}/rssfetcher.cpp (99%)
 rename src/plugins/{coreplugin => welcome}/rssfetcher.h (96%)
 create mode 100644 src/plugins/welcome/welcome.pri
 create mode 100644 src/plugins/welcome/welcome.pro
 create mode 100644 src/plugins/welcome/welcome.qrc
 create mode 100644 src/plugins/welcome/welcome_global.h
 rename src/plugins/{coreplugin => welcome}/welcomemode.cpp (96%)
 rename src/plugins/{coreplugin => welcome}/welcomemode.h (95%)
 rename src/plugins/{coreplugin => welcome}/welcomemode.ui (96%)
 rename src/plugins/{coreplugin => welcome}/welcomemode_p.h (98%)
 create mode 100644 src/plugins/welcome/welcomeplugin.cpp
 create mode 100644 src/plugins/welcome/welcomeplugin.h

diff --git a/src/plugins/coreplugin/core.qrc b/src/plugins/coreplugin/core.qrc
index 202ee41db42..42f59f6c1e1 100644
--- a/src/plugins/coreplugin/core.qrc
+++ b/src/plugins/coreplugin/core.qrc
@@ -44,24 +44,5 @@
         <file>images/unlocked.png</file>
         <file>images/extension.png</file>
         <file>images/darkclosebutton.png</file>
-        <file>images/welcomemode/btn_26.png</file>
-        <file>images/welcomemode/btn_26_hover.png</file>
-        <file>images/welcomemode/btn_27.png</file>
-        <file>images/welcomemode/btn_27_hover.png</file>
-        <file>images/welcomemode/feedback_arrow.png</file>
-        <file>images/welcomemode/feedback_arrow_hover.png</file>
-        <file>images/welcomemode/feedback-bar-background.png</file>
-        <file>images/welcomemode/list_bullet_arrow.png</file>
-        <file>images/welcomemode/mode_project.png</file>
-        <file>images/welcomemode/nokia_logo.png</file>
-        <file>images/welcomemode/product_logo.png</file>
-        <file>images/welcomemode/qt_logo.png</file>
-        <file>images/welcomemode/rc_combined.png</file>
-        <file>images/welcomemode/background_center_frame.png</file>
-        <file>images/welcomemode/center_frame_header.png</file>
-        <file>images/welcomemode/btn_26_pressed.png</file>
-        <file>images/welcomemode/combobox_arrow.png</file>
-        <file>images/welcomemode/arrow-left.png</file>
-        <file>images/welcomemode/arrow-right.png</file>
     </qresource>
 </RCC>
diff --git a/src/plugins/coreplugin/coreplugin.cpp b/src/plugins/coreplugin/coreplugin.cpp
index a7a619b7689..7fb7d71c240 100644
--- a/src/plugins/coreplugin/coreplugin.cpp
+++ b/src/plugins/coreplugin/coreplugin.cpp
@@ -28,7 +28,6 @@
 **************************************************************************/
 
 #include "coreplugin.h"
-#include "welcomemode.h"
 #include "editmode.h"
 #include "editormanager.h"
 #include "mainwindow.h"
@@ -42,16 +41,12 @@
 using namespace Core::Internal;
 
 CorePlugin::CorePlugin() :
-    m_mainWindow(new MainWindow), m_welcomeMode(0), m_editMode(0)
+    m_mainWindow(new MainWindow), m_editMode(0)
 {
 }
 
 CorePlugin::~CorePlugin()
 {
-    if (m_welcomeMode) {
-        removeObject(m_welcomeMode);
-        delete m_welcomeMode;
-    }
     if (m_editMode) {
         removeObject(m_editMode);
         delete m_editMode;
@@ -68,9 +63,6 @@ bool CorePlugin::initialize(const QStringList &arguments, QString *errorMessage)
     Q_UNUSED(arguments)
     const bool success = m_mainWindow->init(errorMessage);
     if (success) {
-        m_welcomeMode = new WelcomeMode;
-        addObject(m_welcomeMode);
-
         EditorManager *editorManager = m_mainWindow->editorManager();
         m_editMode = new EditMode(editorManager);
         addObject(m_editMode);
@@ -80,7 +72,6 @@ bool CorePlugin::initialize(const QStringList &arguments, QString *errorMessage)
 
 void CorePlugin::extensionsInitialized()
 {
-    m_mainWindow->modeManager()->activateMode(m_welcomeMode->uniqueModeName());
     m_mainWindow->extensionsInitialized();
 }
 
diff --git a/src/plugins/coreplugin/coreplugin.h b/src/plugins/coreplugin/coreplugin.h
index 4580dd6fd0e..04e5be49b47 100644
--- a/src/plugins/coreplugin/coreplugin.h
+++ b/src/plugins/coreplugin/coreplugin.h
@@ -32,10 +32,13 @@
 
 #include <extensionsystem/iplugin.h>
 
+namespace Core {
+    class IMode;
+}
+
 namespace Core {
 namespace Internal {
 
-class WelcomeMode;
 class EditMode;
 class MainWindow;
 
@@ -56,7 +59,7 @@ public slots:
 
 private:
     MainWindow *m_mainWindow;
-    WelcomeMode *m_welcomeMode;
+    Core::IMode *m_welcomeMode;
     EditMode *m_editMode;
 };
 
diff --git a/src/plugins/coreplugin/coreplugin.pro b/src/plugins/coreplugin/coreplugin.pro
index fbe1d6cc642..8bdc845c48f 100644
--- a/src/plugins/coreplugin/coreplugin.pro
+++ b/src/plugins/coreplugin/coreplugin.pro
@@ -20,8 +20,6 @@ DEPENDPATH += dialogs \
     editormanager \
     scriptmanager
 SOURCES += mainwindow.cpp \
-    welcomemode.cpp \
-    rssfetcher.cpp \
     editmode.cpp \
     tabpositionindicator.cpp \
     fancyactionbar.cpp \
@@ -81,9 +79,6 @@ SOURCES += mainwindow.cpp \
     dialogs/iwizard.cpp \
     settingsdatabase.cpp
 HEADERS += mainwindow.h \
-    welcomemode.h \
-    welcomemode_p.h \
-    rssfetcher.h \
     editmode.h \
     tabpositionindicator.h \
     fancyactionbar.h \
@@ -166,8 +161,7 @@ FORMS += dialogs/newdialog.ui \
     dialogs/saveitemsdialog.ui \
     dialogs/openwithdialog.ui \
     editormanager/openeditorsview.ui \
-    generalsettings.ui \
-    welcomemode.ui
+    generalsettings.ui 
 RESOURCES += core.qrc \
     fancyactionbar.qrc
 
diff --git a/src/plugins/help/Help.pluginspec b/src/plugins/help/Help.pluginspec
index 29f1b469610..d7ccc070fdc 100644
--- a/src/plugins/help/Help.pluginspec
+++ b/src/plugins/help/Help.pluginspec
@@ -22,5 +22,6 @@ will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.</license>
         <dependency name="Core" version="1.2.80"/>
         <dependency name="Find" version="1.2.80"/>
         <dependency name="QuickOpen" version="1.2.80"/>
+        <dependency name="Welcome" version="1.2.80"/>
     </dependencyList>
 </plugin>
diff --git a/src/plugins/help/help.pro b/src/plugins/help/help.pro
index b733a1fa70d..1f5ec5585ea 100644
--- a/src/plugins/help/help.pro
+++ b/src/plugins/help/help.pro
@@ -4,6 +4,7 @@ include(../../qtcreatorplugin.pri)
 include(../../plugins/coreplugin/coreplugin.pri)
 include(../../plugins/find/find.pri)
 include(../../plugins/quickopen/quickopen.pri)
+include(../../plugins/welcome/welcome.pri)
 QT += network
 CONFIG += help
 DEFINES += QT_CLUCENE_SUPPORT \
diff --git a/src/plugins/help/helpplugin.cpp b/src/plugins/help/helpplugin.cpp
index ee516a3df06..ec5b7887fa5 100644
--- a/src/plugins/help/helpplugin.cpp
+++ b/src/plugins/help/helpplugin.cpp
@@ -56,6 +56,8 @@
 #include <coreplugin/uniqueidmanager.h>
 #include <coreplugin/welcomemode.h>
 
+#include <welcome/welcomemode.h>
+
 #include <texteditor/texteditorconstants.h>
 
 #include <utils/styledbar.h>
@@ -611,8 +613,8 @@ void HelpPlugin::extensionsInitialized()
 
     using namespace Core::Internal;
     using namespace Core::Constants;
-    WelcomeMode *welcomeMode =
-        qobject_cast<WelcomeMode*>(m_core->modeManager()->mode(MODE_WELCOME));
+    Welcome::WelcomeMode *welcomeMode =
+        qobject_cast<Welcome::WelcomeMode*>(m_core->modeManager()->mode(MODE_WELCOME));
     if (welcomeMode) {
         connect(welcomeMode, SIGNAL(openHelpPage(QString)), this,
             SLOT(openHelpPage(QString)));
diff --git a/src/plugins/plugins.pro b/src/plugins/plugins.pro
index 4ee15490856..b8ae5ecafac 100644
--- a/src/plugins/plugins.pro
+++ b/src/plugins/plugins.pro
@@ -4,6 +4,7 @@
 TEMPLATE  = subdirs
 
 SUBDIRS   = plugin_coreplugin \
+            plugin_welcome \
             plugin_find \
             plugin_texteditor \
             plugin_cppeditor \
@@ -30,13 +31,16 @@ SUBDIRS   = plugin_coreplugin \
             plugin_fakevim \
             plugin_designer \
             plugin_resourceeditor \
-	    plugin_genericprojectmanager \
+            plugin_genericprojectmanager \
             plugin_duieditor \
             plugin_qmlprojectmanager \
             debugger/dumper.pro
 
 plugin_coreplugin.subdir = coreplugin
 
+plugin_welcome.subdir = welcome
+plugin_welcome.depends = plugin_coreplugin
+
 plugin_find.subdir = find
 plugin_find.depends += plugin_coreplugin
 
diff --git a/src/plugins/projectexplorer/ProjectExplorer.pluginspec b/src/plugins/projectexplorer/ProjectExplorer.pluginspec
index 8b5a7c317a7..6a66cfe1b88 100644
--- a/src/plugins/projectexplorer/ProjectExplorer.pluginspec
+++ b/src/plugins/projectexplorer/ProjectExplorer.pluginspec
@@ -23,5 +23,6 @@ will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.</license>
         <dependency name="Find" version="1.2.80"/>
         <dependency name="QuickOpen" version="1.2.80"/>
         <dependency name="TextEditor" version="1.2.80"/>
+        <dependency name="Welcome" version="1.2.80"/>
     </dependencyList>
 </plugin>
diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp
index b71afb3835a..f10b628aadd 100644
--- a/src/plugins/projectexplorer/projectexplorer.cpp
+++ b/src/plugins/projectexplorer/projectexplorer.cpp
@@ -74,11 +74,10 @@
 #include <coreplugin/findplaceholder.h>
 #include <coreplugin/basefilewizard.h>
 #include <coreplugin/mainwindow.h>
-#include <coreplugin/welcomemode.h>
 #include <coreplugin/vcsmanager.h>
 #include <coreplugin/iversioncontrol.h>
 #include <coreplugin/vcsmanager.h>
-#include <coreplugin/welcomemode.h>
+#include <welcome/welcomemode.h>
 #include <extensionsystem/pluginmanager.h>
 #include <utils/qtcassert.h>
 #include <utils/parameteraction.h>
@@ -647,7 +646,7 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er
         m_projectExplorerSettings.showCompilerOutput = s->value("ProjectExplorer/Settings/ShowCompilerOutput", false).toBool();
     }
 
-    if (Core::Internal::WelcomeMode *welcomeMode = qobject_cast<Core::Internal::WelcomeMode*>
+    if (Welcome::WelcomeMode *welcomeMode = qobject_cast<Welcome::WelcomeMode*>
         (Core::ICore::instance()->modeManager()->mode(Core::Constants::MODE_WELCOME))) {
         connect(welcomeMode, SIGNAL(manageSessions()), this, SLOT(showSessionManager()));
     }
@@ -837,7 +836,7 @@ void ProjectExplorerPlugin::showSessionManager()
     Core::IMode *welcomeMode = modeManager->mode(Core::Constants::MODE_WELCOME);
     if (modeManager->currentMode() == welcomeMode)
     {
-        updateWelcomePage(qobject_cast<Core::Internal::WelcomeMode*>(welcomeMode));
+        updateWelcomePage(qobject_cast<Welcome::WelcomeMode*>(welcomeMode));
     }
 }
 
@@ -1020,9 +1019,9 @@ Project *ProjectExplorerPlugin::startupProject() const
 }
 
 // update welcome page
-void ProjectExplorerPlugin::updateWelcomePage(Core::Internal::WelcomeMode *welcomeMode)
+void ProjectExplorerPlugin::updateWelcomePage(Welcome::WelcomeMode *welcomeMode)
 {
-    Core::Internal::WelcomeMode::WelcomePageData welcomePageData;
+    Welcome::WelcomeMode::WelcomePageData welcomePageData;
     welcomePageData.sessionList =  m_session->sessions();
     welcomePageData.activeSession = m_session->activeSession();
     welcomePageData.previousSession = m_session->lastSession();
@@ -1032,7 +1031,7 @@ void ProjectExplorerPlugin::updateWelcomePage(Core::Internal::WelcomeMode *welco
 
 void ProjectExplorerPlugin::currentModeChanged(Core::IMode *mode)
 {
-    if (Core::Internal::WelcomeMode *welcomeMode = qobject_cast<Core::Internal::WelcomeMode*>(mode))
+    if (Welcome::WelcomeMode *welcomeMode = qobject_cast<Welcome::WelcomeMode*>(mode))
         updateWelcomePage(welcomeMode);
 }
 
@@ -1081,7 +1080,7 @@ void ProjectExplorerPlugin::restoreSession()
     // update welcome page
     Core::ModeManager *modeManager = Core::ModeManager::instance();
     connect(modeManager, SIGNAL(currentModeChanged(Core::IMode*)), this, SLOT(currentModeChanged(Core::IMode*)));
-    if (Core::Internal::WelcomeMode *welcomeMode = qobject_cast<Core::Internal::WelcomeMode*>(modeManager->mode(Core::Constants::MODE_WELCOME))) {
+    if (Welcome::WelcomeMode *welcomeMode = qobject_cast<Welcome::WelcomeMode*>(modeManager->mode(Core::Constants::MODE_WELCOME))) {
         updateWelcomePage(welcomeMode);
         connect(welcomeMode, SIGNAL(requestSession(QString)), this, SLOT(loadSession(QString)));
         connect(welcomeMode, SIGNAL(requestProject(QString)), this, SLOT(loadProject(QString)));
diff --git a/src/plugins/projectexplorer/projectexplorer.h b/src/plugins/projectexplorer/projectexplorer.h
index 78c1d3c3ba8..0f781eac882 100644
--- a/src/plugins/projectexplorer/projectexplorer.h
+++ b/src/plugins/projectexplorer/projectexplorer.h
@@ -46,21 +46,20 @@
 #include <QtGui/QTreeWidget>
 #include <QtGui/QTreeWidgetItem>
 
-
 namespace Core {
 class IContext;
 class IMode;
 class IFileFactory;
-namespace Internal {
-    class WelcomeMode;
-}
     namespace Utils {
         class ParameterAction;
     }
 }
 
-namespace ProjectExplorer {
+namespace Welcome {
+    class WelcomeMode;
+}
 
+namespace ProjectExplorer {
 class BuildManager;
 class PersistentSettings;
 class RunConfiguration;
@@ -210,7 +209,7 @@ private:
 
     void updateActions();
     void addToRecentProjects(const QString &fileName, const QString &displayName);
-    void updateWelcomePage(Core::Internal::WelcomeMode *welcomeMode);
+    void updateWelcomePage(Welcome::WelcomeMode *welcomeMode);
     Internal::ProjectFileFactory *findProjectFileFactory(const QString &filename) const;
 
     static ProjectExplorerPlugin *m_instance;
diff --git a/src/plugins/projectexplorer/projectexplorer_dependencies.pri b/src/plugins/projectexplorer/projectexplorer_dependencies.pri
index 674c8bbb362..ecbb7a4b976 100644
--- a/src/plugins/projectexplorer/projectexplorer_dependencies.pri
+++ b/src/plugins/projectexplorer/projectexplorer_dependencies.pri
@@ -3,3 +3,4 @@ include(../../plugins/quickopen/quickopen.pri)
 include(../../plugins/find/find.pri)
 include(../../plugins/coreplugin/coreplugin.pri)
 include(../../plugins/texteditor/texteditor.pri)
+include(../../plugins/welcome/welcome.pri)
diff --git a/src/plugins/qt4projectmanager/Qt4ProjectManager.pluginspec b/src/plugins/qt4projectmanager/Qt4ProjectManager.pluginspec
index c4b8d4455f4..3b515bd60e5 100644
--- a/src/plugins/qt4projectmanager/Qt4ProjectManager.pluginspec
+++ b/src/plugins/qt4projectmanager/Qt4ProjectManager.pluginspec
@@ -25,5 +25,6 @@ will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.</license>
         <dependency name="CppEditor" version="1.2.80"/>
         <dependency name="Help" version="1.2.80"/>
         <dependency name="Designer" version="1.2.80"/>
+        <dependency name="Welcome" version="1.2.80"/>
     </dependencyList>
 </plugin>
diff --git a/src/plugins/qt4projectmanager/qtversionmanager.cpp b/src/plugins/qt4projectmanager/qtversionmanager.cpp
index e1f4451dbb6..e844f768e3c 100644
--- a/src/plugins/qt4projectmanager/qtversionmanager.cpp
+++ b/src/plugins/qt4projectmanager/qtversionmanager.cpp
@@ -42,7 +42,7 @@
 #include <coreplugin/coreconstants.h>
 #include <coreplugin/icore.h>
 #include <coreplugin/modemanager.h>
-#include <coreplugin/welcomemode.h>
+#include <welcome/welcomemode.h>
 #include <extensionsystem/pluginmanager.h>
 #include <help/helpplugin.h>
 #include <utils/qtcassert.h>
@@ -121,7 +121,7 @@ QtVersionManager::QtVersionManager()
 
     writeVersionsIntoSettings();
 
-    if (Core::Internal::WelcomeMode *welcomeMode = qobject_cast<Core::Internal::WelcomeMode*>
+    if (Welcome::WelcomeMode *welcomeMode = qobject_cast<Welcome::WelcomeMode*>
         (Core::ICore::instance()->modeManager()->mode(Core::Constants::MODE_WELCOME))) {
         connect(this, SIGNAL(updatedExamples(QString, QString)),
                 welcomeMode, SIGNAL(updatedExamples(QString, QString)));
diff --git a/src/plugins/quickopen/quickopen.cp b/src/plugins/quickopen/quickopen.cp
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/src/plugins/welcome/Welcome.pluginspec b/src/plugins/welcome/Welcome.pluginspec
new file mode 100644
index 00000000000..ab310c396e9
--- /dev/null
+++ b/src/plugins/welcome/Welcome.pluginspec
@@ -0,0 +1,24 @@
+<plugin name="Welcome" version="1.2.80" compatVersion="1.2.80">
+    <vendor>Nokia Corporation</vendor>
+    <copyright>(C) 2008-2009 Nokia Corporation</copyright>
+    <license>
+Commercial Usage
+
+Licensees holding valid Qt Commercial licenses may use this plugin 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 plugin may be used under the terms of the GNU Lesser
+General Public License version 2.1 as published by the Free Software
+Foundation.  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.</license>
+    <description>Default Welcome Screen Plugin</description>
+    <url>http://www.qtsoftware.com</url>
+    <dependencyList>
+        <dependency name="Core" version="1.2.80"/>
+    </dependencyList>
+</plugin>
diff --git a/src/plugins/coreplugin/images/welcomemode/arrow-left.png b/src/plugins/welcome/images/arrow-left.png
similarity index 100%
rename from src/plugins/coreplugin/images/welcomemode/arrow-left.png
rename to src/plugins/welcome/images/arrow-left.png
diff --git a/src/plugins/coreplugin/images/welcomemode/arrow-right.png b/src/plugins/welcome/images/arrow-right.png
similarity index 100%
rename from src/plugins/coreplugin/images/welcomemode/arrow-right.png
rename to src/plugins/welcome/images/arrow-right.png
diff --git a/src/plugins/coreplugin/images/welcomemode/background_center_frame.png b/src/plugins/welcome/images/background_center_frame.png
similarity index 100%
rename from src/plugins/coreplugin/images/welcomemode/background_center_frame.png
rename to src/plugins/welcome/images/background_center_frame.png
diff --git a/src/plugins/coreplugin/images/welcomemode/btn_26.png b/src/plugins/welcome/images/btn_26.png
similarity index 100%
rename from src/plugins/coreplugin/images/welcomemode/btn_26.png
rename to src/plugins/welcome/images/btn_26.png
diff --git a/src/plugins/coreplugin/images/welcomemode/btn_26_hover.png b/src/plugins/welcome/images/btn_26_hover.png
similarity index 100%
rename from src/plugins/coreplugin/images/welcomemode/btn_26_hover.png
rename to src/plugins/welcome/images/btn_26_hover.png
diff --git a/src/plugins/coreplugin/images/welcomemode/btn_26_pressed.png b/src/plugins/welcome/images/btn_26_pressed.png
similarity index 100%
rename from src/plugins/coreplugin/images/welcomemode/btn_26_pressed.png
rename to src/plugins/welcome/images/btn_26_pressed.png
diff --git a/src/plugins/coreplugin/images/welcomemode/btn_27.png b/src/plugins/welcome/images/btn_27.png
similarity index 100%
rename from src/plugins/coreplugin/images/welcomemode/btn_27.png
rename to src/plugins/welcome/images/btn_27.png
diff --git a/src/plugins/coreplugin/images/welcomemode/btn_27_hover.png b/src/plugins/welcome/images/btn_27_hover.png
similarity index 100%
rename from src/plugins/coreplugin/images/welcomemode/btn_27_hover.png
rename to src/plugins/welcome/images/btn_27_hover.png
diff --git a/src/plugins/coreplugin/images/welcomemode/center_frame_header.png b/src/plugins/welcome/images/center_frame_header.png
similarity index 100%
rename from src/plugins/coreplugin/images/welcomemode/center_frame_header.png
rename to src/plugins/welcome/images/center_frame_header.png
diff --git a/src/plugins/coreplugin/images/welcomemode/combobox_arrow.png b/src/plugins/welcome/images/combobox_arrow.png
similarity index 100%
rename from src/plugins/coreplugin/images/welcomemode/combobox_arrow.png
rename to src/plugins/welcome/images/combobox_arrow.png
diff --git a/src/plugins/coreplugin/images/welcomemode/feedback-bar-background.png b/src/plugins/welcome/images/feedback-bar-background.png
similarity index 100%
rename from src/plugins/coreplugin/images/welcomemode/feedback-bar-background.png
rename to src/plugins/welcome/images/feedback-bar-background.png
diff --git a/src/plugins/coreplugin/images/welcomemode/feedback_arrow.png b/src/plugins/welcome/images/feedback_arrow.png
similarity index 100%
rename from src/plugins/coreplugin/images/welcomemode/feedback_arrow.png
rename to src/plugins/welcome/images/feedback_arrow.png
diff --git a/src/plugins/coreplugin/images/welcomemode/feedback_arrow_hover.png b/src/plugins/welcome/images/feedback_arrow_hover.png
similarity index 100%
rename from src/plugins/coreplugin/images/welcomemode/feedback_arrow_hover.png
rename to src/plugins/welcome/images/feedback_arrow_hover.png
diff --git a/src/plugins/coreplugin/images/welcomemode/list_bullet_arrow.png b/src/plugins/welcome/images/list_bullet_arrow.png
similarity index 100%
rename from src/plugins/coreplugin/images/welcomemode/list_bullet_arrow.png
rename to src/plugins/welcome/images/list_bullet_arrow.png
diff --git a/src/plugins/coreplugin/images/welcomemode/mode_project.png b/src/plugins/welcome/images/mode_project.png
similarity index 100%
rename from src/plugins/coreplugin/images/welcomemode/mode_project.png
rename to src/plugins/welcome/images/mode_project.png
diff --git a/src/plugins/coreplugin/images/welcomemode/nokia_logo.png b/src/plugins/welcome/images/nokia_logo.png
similarity index 100%
rename from src/plugins/coreplugin/images/welcomemode/nokia_logo.png
rename to src/plugins/welcome/images/nokia_logo.png
diff --git a/src/plugins/coreplugin/images/welcomemode/product_logo.png b/src/plugins/welcome/images/product_logo.png
similarity index 100%
rename from src/plugins/coreplugin/images/welcomemode/product_logo.png
rename to src/plugins/welcome/images/product_logo.png
diff --git a/src/plugins/coreplugin/images/welcomemode/qt_logo.png b/src/plugins/welcome/images/qt_logo.png
similarity index 100%
rename from src/plugins/coreplugin/images/welcomemode/qt_logo.png
rename to src/plugins/welcome/images/qt_logo.png
diff --git a/src/plugins/coreplugin/images/welcomemode/rc_combined.png b/src/plugins/welcome/images/rc_combined.png
similarity index 100%
rename from src/plugins/coreplugin/images/welcomemode/rc_combined.png
rename to src/plugins/welcome/images/rc_combined.png
diff --git a/src/plugins/coreplugin/rssfetcher.cpp b/src/plugins/welcome/rssfetcher.cpp
similarity index 99%
rename from src/plugins/coreplugin/rssfetcher.cpp
rename to src/plugins/welcome/rssfetcher.cpp
index cceb5ceb7a4..f5fc756c9bb 100644
--- a/src/plugins/coreplugin/rssfetcher.cpp
+++ b/src/plugins/welcome/rssfetcher.cpp
@@ -43,7 +43,7 @@
 #include <sys/utsname.h>
 #endif
 
-using namespace Core::Internal;
+using namespace Welcome;
 
 static const QString getOsString()
 {
diff --git a/src/plugins/coreplugin/rssfetcher.h b/src/plugins/welcome/rssfetcher.h
similarity index 96%
rename from src/plugins/coreplugin/rssfetcher.h
rename to src/plugins/welcome/rssfetcher.h
index 4f161e1517a..9267fdb47ae 100644
--- a/src/plugins/coreplugin/rssfetcher.h
+++ b/src/plugins/welcome/rssfetcher.h
@@ -34,8 +34,7 @@
 #include <QtCore/QXmlStreamReader>
 #include <QtNetwork/QHttp>
 
-namespace Core {
-namespace Internal {
+namespace Welcome {
 
 class RSSFetcher : public QObject
 {
@@ -69,8 +68,7 @@ private:
     int m_maxItems;
 };
 
-} // namespace Internal
-} // namespace Core
+} // namespace Welcome
 
 #endif // RSSFETCHER_H
 
diff --git a/src/plugins/welcome/welcome.pri b/src/plugins/welcome/welcome.pri
new file mode 100644
index 00000000000..5e0a99bca87
--- /dev/null
+++ b/src/plugins/welcome/welcome.pri
@@ -0,0 +1,2 @@
+include(coreplugin_dependencies.pri)
+LIBS *= -l$$qtLibraryTarget(Welcome)
diff --git a/src/plugins/welcome/welcome.pro b/src/plugins/welcome/welcome.pro
new file mode 100644
index 00000000000..51e66a573f0
--- /dev/null
+++ b/src/plugins/welcome/welcome.pro
@@ -0,0 +1,22 @@
+TEMPLATE = lib
+TARGET = Welcome
+QT += network
+include(../../qtcreatorplugin.pri)
+include(../../plugins/coreplugin/coreplugin.pri)
+
+HEADERS += welcomeplugin.h \
+           welcomemode.h \
+           welcomemode_p.h \
+           rssfetcher.h
+
+SOURCES += welcomeplugin.cpp \
+           welcomemode.cpp \
+           rssfetcher.cpp
+
+FORMS += welcomemode.ui
+    
+RESOURCES += welcome.qrc
+
+DEFINES += WELCOME_LIBRARY
+
+OTHER_FILES += Welcome.pluginspec
diff --git a/src/plugins/welcome/welcome.qrc b/src/plugins/welcome/welcome.qrc
new file mode 100644
index 00000000000..f4786743275
--- /dev/null
+++ b/src/plugins/welcome/welcome.qrc
@@ -0,0 +1,23 @@
+<RCC>
+    <qresource prefix="/welcome" >
+       <file>images/btn_26.png</file>
+        <file>images/btn_26_hover.png</file>
+        <file>images/btn_27.png</file>
+        <file>images/btn_27_hover.png</file>
+        <file>images/feedback_arrow.png</file>
+        <file>images/feedback_arrow_hover.png</file>
+        <file>images/feedback-bar-background.png</file>
+        <file>images/list_bullet_arrow.png</file>
+        <file>images/mode_project.png</file>
+        <file>images/nokia_logo.png</file>
+        <file>images/product_logo.png</file>
+        <file>images/qt_logo.png</file>
+        <file>images/rc_combined.png</file>
+        <file>images/background_center_frame.png</file>
+        <file>images/center_frame_header.png</file>
+        <file>images/btn_26_pressed.png</file>
+        <file>images/combobox_arrow.png</file>
+        <file>images/arrow-left.png</file>
+        <file>images/arrow-right.png</file>
+    </qresource>
+</RCC>
diff --git a/src/plugins/welcome/welcome_global.h b/src/plugins/welcome/welcome_global.h
new file mode 100644
index 00000000000..8629323fda3
--- /dev/null
+++ b/src/plugins/welcome/welcome_global.h
@@ -0,0 +1,12 @@
+#ifndef WELCOME_GLOBAL_H
+#define WELCOME_GLOBAL_H
+
+#include <QtCore/qglobal.h>
+
+#if defined(WELCOME_LIBRARY)
+#  define WELCOME_EXPORT Q_DECL_EXPORT
+#else
+#  define WELCOME_EXPORT Q_DECL_IMPORT
+#endif
+
+#endif // CPPEDITOR_GLOBAL_H
diff --git a/src/plugins/coreplugin/welcomemode.cpp b/src/plugins/welcome/welcomemode.cpp
similarity index 96%
rename from src/plugins/coreplugin/welcomemode.cpp
rename to src/plugins/welcome/welcomemode.cpp
index 27cbd4e9c3b..f712399dcc8 100644
--- a/src/plugins/coreplugin/welcomemode.cpp
+++ b/src/plugins/welcome/welcomemode.cpp
@@ -28,14 +28,16 @@
 **************************************************************************/
 
 #include "welcomemode.h"
-#include "icore.h"
-#include "iwizard.h"
-#include "coreconstants.h"
-#include "uniqueidmanager.h"
-#include "modemanager.h"
-#include "newdialog.h"
 #include "rssfetcher.h"
 
+#include <coreplugin/icore.h>
+#include <coreplugin/dialogs/iwizard.h>
+
+#include <coreplugin/coreconstants.h>
+#include <coreplugin/uniqueidmanager.h>
+#include <coreplugin/modemanager.h>
+#include <coreplugin/dialogs/newdialog.h>
+
 #include <utils/styledbar.h>
 
 #include <QtGui/QDesktopServices>
@@ -53,8 +55,7 @@
 
 #include "ui_welcomemode.h"
 
-namespace Core {
-namespace Internal {
+namespace Welcome {
 
 struct WelcomeModePrivate
 {
@@ -206,7 +207,7 @@ WelcomeMode::WelcomeMode() :
     connect(m_d->ui.nextTipBtn, SIGNAL(clicked()), this, SLOT(slotNextTip()));
     connect(m_d->ui.prevTipBtn, SIGNAL(clicked()), this, SLOT(slotPrevTip()));
 
-    QSettings *settings = ICore::instance()->settings();
+    QSettings *settings = Core::ICore::instance()->settings();
     int id = settings->value("General/WelcomeTab", 0).toInt();
     m_d->btnGrp->button(id)->setChecked(true);
     m_d->ui.stackedWidget->setCurrentIndex(id);
@@ -214,7 +215,7 @@ WelcomeMode::WelcomeMode() :
 
 WelcomeMode::~WelcomeMode()
 {
-    QSettings *settings = ICore::instance()->settings();
+    QSettings *settings = Core::ICore::instance()->settings();
     settings->setValue("General/WelcomeTab", m_d->btnGrp->checkedId());
     delete m_d->m_widget;
     delete m_d;
@@ -232,7 +233,7 @@ QIcon WelcomeMode::icon() const
 
 int WelcomeMode::priority() const
 {
-    return Constants::P_MODE_WELCOME;
+    return Core::Constants::P_MODE_WELCOME;
 }
 
 QWidget* WelcomeMode::widget()
@@ -242,13 +243,13 @@ QWidget* WelcomeMode::widget()
 
 const char* WelcomeMode::uniqueModeName() const
 {
-    return Constants::MODE_WELCOME;
+    return Core::Constants::MODE_WELCOME;
 }
 
 QList<int> WelcomeMode::context() const
 {
     static QList<int> contexts = QList<int>()
-                                 << UniqueIDManager::instance()->uniqueIdentifier(Constants::C_WELCOME_MODE);
+                                 << Core::UniqueIDManager::instance()->uniqueIdentifier(Core::Constants::C_WELCOME_MODE);
     return contexts;
 }
 
@@ -292,7 +293,7 @@ void WelcomeMode::updateWelcomePage(const WelcomePageData &welcomePageData)
 
 void WelcomeMode::activateEditMode()
 {
-    Core::ModeManager *modeManager = ModeManager::instance();
+    Core::ModeManager *modeManager = Core::ModeManager::instance();
     if (modeManager->currentMode() == this)
         modeManager->activateMode(Core::Constants::MODE_EDIT);
 }
@@ -516,7 +517,7 @@ void WelcomeModeButton::leaveEvent(QEvent *)
 
 WelcomeModeTreeWidget::WelcomeModeTreeWidget(QWidget *parent) :
         QTreeWidget(parent),
-        m_bullet(QLatin1String(":/core/images/welcomemode/list_bullet_arrow.png"))
+        m_bullet(QLatin1String(":/welcome/images/list_bullet_arrow.png"))
 {
     connect(this, SIGNAL(itemClicked(QTreeWidgetItem *, int)),
             SLOT(slotItemClicked(QTreeWidgetItem *)));
@@ -567,5 +568,4 @@ void WelcomeModeTreeWidget::slotItemClicked(QTreeWidgetItem *item)
     emit activated(item->data(0, Qt::UserRole).toString());
 }
 
-} // namespace Internal
-} // namespace Core
+} // namespace Welcome
diff --git a/src/plugins/coreplugin/welcomemode.h b/src/plugins/welcome/welcomemode.h
similarity index 95%
rename from src/plugins/coreplugin/welcomemode.h
rename to src/plugins/welcome/welcomemode.h
index 46215998ee4..3825b9dbef3 100644
--- a/src/plugins/coreplugin/welcomemode.h
+++ b/src/plugins/welcome/welcomemode.h
@@ -30,6 +30,8 @@
 #ifndef WELCOMEMODE_H
 #define WELCOMEMODE_H
 
+#include "welcome_global.h"
+
 #include <coreplugin/imode.h>
 
 #include <QtCore/QObject>
@@ -40,12 +42,11 @@ class QWidget;
 class QUrl;
 QT_END_NAMESPACE
 
-namespace Core {
-namespace Internal {
+namespace Welcome {
 
 struct WelcomeModePrivate;
 
-class CORE_EXPORT WelcomeMode : public Core::IMode
+class WELCOME_EXPORT WelcomeMode : public Core::IMode
 {
     Q_OBJECT
 
@@ -102,7 +103,6 @@ private:
     WelcomeModePrivate *m_d;
 };
 
-} // namespace Internal
-} // namespace Core
+} // namespace Welcome
 
 #endif // WELCOMEMODE_H
diff --git a/src/plugins/coreplugin/welcomemode.ui b/src/plugins/welcome/welcomemode.ui
similarity index 96%
rename from src/plugins/coreplugin/welcomemode.ui
rename to src/plugins/welcome/welcomemode.ui
index c1471f65d7a..9ad6ad3ab52 100644
--- a/src/plugins/coreplugin/welcomemode.ui
+++ b/src/plugins/welcome/welcomemode.ui
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <ui version="4.0">
- <class>Core::Internal::WelcomePage</class>
- <widget class="QWidget" name="Core::Internal::WelcomePage">
+ <class>Welcome::WelcomePage</class>
+ <widget class="QWidget" name="Welcome::WelcomePage">
   <property name="geometry">
    <rect>
     <x>0</x>
@@ -11,12 +11,12 @@
    </rect>
   </property>
   <property name="styleSheet">
-   <string notr="true">#Core--Internal--WelcomePage {
+   <string notr="true">#Welcome--WelcomePage {
 background-color: qlineargradient(spread:pad, x1:0.5, y1:0, x2:0.5, y2:1, stop:0 rgba(247, 247, 247, 255), stop:1 rgba(215, 215, 215, 255));
 }
 
 QToolButton, QPushButton, QComboBox {
-    border-image: url(:/core/images/welcomemode/btn_26.png) 4;
+    border-image: url(:/welcome/images/btn_26.png) 4;
     border-width: 4;
     padding: 0px 6px;
     font-size: 12px;
@@ -31,7 +31,7 @@ QToolButton, QPushButton, QComboBox {
 }
 
  QComboBox::down-arrow {
-     image: url(:/core/images/welcomemode/combobox_arrow.png);
+     image: url(:/welcome/images/combobox_arrow.png);
  }
 
 QComboBox:drop-down
@@ -44,7 +44,7 @@ QComboBox:drop-down
 }
 
 QToolButton:hover, QPushButton:hover, QComboBox:hover {
-    border-image: url(:/core/images/welcomemode/btn_26_hover.png) 4;
+    border-image: url(:/welcome/images/btn_26_hover.png) 4;
 }
 
 QToolButton:disabled, QPushButton:disabled, QComboBox::disabled {
@@ -52,7 +52,7 @@ QToolButton:disabled, QPushButton:disabled, QComboBox::disabled {
 }
 
 QToolButton:pressed, QPushButton:pressed{
-    border-image: url(:/core/images/welcomemode/btn_26_pressed.png) 4;
+    border-image: url(:/welcome/images/btn_26_pressed.png) 4;
 }
 </string>
   </property>
@@ -102,7 +102,7 @@ QToolButton:pressed, QPushButton:pressed{
         </property>
         <property name="styleSheet">
          <string notr="true">#mainFrame {
-    border-image: url(:/core/images/welcomemode/background_center_frame.png) 4;
+    border-image: url(:/welcome/images/background_center_frame.png) 4;
     border-width: 4;
 }
 </string>
@@ -151,7 +151,7 @@ QToolButton:pressed, QPushButton:pressed{
            </property>
            <property name="styleSheet">
             <string>#headerFrame {
-    border-image: url(:/core/images/welcomemode/center_frame_header.png) 0;
+    border-image: url(:/welcome/images/center_frame_header.png) 0;
     border-width: 0;
 }
 </string>
@@ -417,7 +417,7 @@ QToolButton:pressed {
                  </widget>
                 </item>
                 <item row="1" column="0">
-                 <widget class="Core::Internal::WelcomeModeTreeWidget" name="tutorialTreeWidget">
+                 <widget class="Welcome::WelcomeModeTreeWidget" name="tutorialTreeWidget">
                   <property name="sizePolicy">
                    <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
                     <horstretch>0</horstretch>
@@ -651,7 +651,7 @@ QToolButton:pressed {
                     </property>
                     <property name="icon">
                      <iconset resource="core.qrc">
-                      <normaloff>:/core/images/welcomemode/arrow-left.png</normaloff>:/core/images/welcomemode/arrow-left.png</iconset>
+                      <normaloff>:/welcome/images/arrow-left.png</normaloff>:/welcome/images/arrow-left.png</iconset>
                     </property>
                     <property name="arrowType">
                      <enum>Qt::NoArrow</enum>
@@ -673,7 +673,7 @@ QToolButton:pressed {
                     </property>
                     <property name="icon">
                      <iconset resource="core.qrc">
-                      <normaloff>:/core/images/welcomemode/arrow-right.png</normaloff>:/core/images/welcomemode/arrow-right.png</iconset>
+                      <normaloff>:/welcome/images/arrow-right.png</normaloff>:/welcome/images/arrow-right.png</iconset>
                     </property>
                     <property name="arrowType">
                      <enum>Qt::NoArrow</enum>
@@ -746,7 +746,7 @@ QToolButton:pressed {
                  </widget>
                 </item>
                 <item row="1" column="0" colspan="3">
-                 <widget class="Core::Internal::WelcomeModeTreeWidget" name="sessTreeWidget">
+                 <widget class="Welcome::WelcomeModeTreeWidget" name="sessTreeWidget">
                   <property name="sizePolicy">
                    <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
                     <horstretch>0</horstretch>
@@ -853,7 +853,7 @@ QToolButton:pressed {
                  </widget>
                 </item>
                 <item row="1" column="0" colspan="3">
-                 <widget class="Core::Internal::WelcomeModeTreeWidget" name="projTreeWidget">
+                 <widget class="Welcome::WelcomeModeTreeWidget" name="projTreeWidget">
                   <property name="sizePolicy">
                    <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
                     <horstretch>0</horstretch>
@@ -967,7 +967,7 @@ QToolButton:pressed {
                  </widget>
                 </item>
                 <item>
-                 <widget class="Core::Internal::WelcomeModeTreeWidget" name="newsTreeWidget">
+                 <widget class="Welcome::WelcomeModeTreeWidget" name="newsTreeWidget">
                   <property name="sizePolicy">
                    <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
                     <horstretch>0</horstretch>
@@ -1051,7 +1051,7 @@ QToolButton:pressed {
                  </widget>
                 </item>
                 <item>
-                 <widget class="Core::Internal::WelcomeModeTreeWidget" name="sitesTreeWidget">
+                 <widget class="Welcome::WelcomeModeTreeWidget" name="sitesTreeWidget">
                   <property name="sizePolicy">
                    <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
                     <horstretch>0</horstretch>
@@ -1167,7 +1167,7 @@ QToolButton:pressed {
              </property>
              <property name="icon">
               <iconset resource="core.qrc">
-               <normaloff>:/core/images/welcomemode/feedback_arrow.png</normaloff>:/core/images/welcomemode/feedback_arrow.png</iconset>
+               <normaloff>:/welcome/images/feedback_arrow.png</normaloff>:/welcome/images/feedback_arrow.png</iconset>
              </property>
             </widget>
            </item>
@@ -1221,7 +1221,7 @@ QToolButton:pressed {
  </widget>
  <customwidgets>
   <customwidget>
-   <class>Core::Internal::WelcomeModeTreeWidget</class>
+   <class>Welcome::WelcomeModeTreeWidget</class>
    <extends>QTreeWidget</extends>
    <header>welcomemode_p.h</header>
   </customwidget>
diff --git a/src/plugins/coreplugin/welcomemode_p.h b/src/plugins/welcome/welcomemode_p.h
similarity index 98%
rename from src/plugins/coreplugin/welcomemode_p.h
rename to src/plugins/welcome/welcomemode_p.h
index 75c75361d6d..efe80b36852 100644
--- a/src/plugins/coreplugin/welcomemode_p.h
+++ b/src/plugins/welcome/welcomemode_p.h
@@ -34,8 +34,7 @@
 #include <QtGui/QLabel>
 #include <QtGui/QTreeWidget>
 
-namespace Core {
-namespace Internal {
+namespace Welcome {
 
 class WelcomeModeButton : public QLabel
 {
@@ -85,7 +84,6 @@ private:
     QIcon m_bullet;
 };
 
-}
 }
 
 #endif // WELCOMEMODE_P_H
diff --git a/src/plugins/welcome/welcomeplugin.cpp b/src/plugins/welcome/welcomeplugin.cpp
new file mode 100644
index 00000000000..e9743a9428c
--- /dev/null
+++ b/src/plugins/welcome/welcomeplugin.cpp
@@ -0,0 +1,97 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2009 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://www.qtsoftware.com/contact.
+**
+**************************************************************************/
+
+#include "welcomeplugin.h"
+
+#include "welcomemode.h"
+
+#include <coreplugin/actionmanager/actionmanager.h>
+#include <coreplugin/basemode.h>
+#include <coreplugin/coreconstants.h>
+#include <coreplugin/icore.h>
+#include <coreplugin/modemanager.h>
+#include <coreplugin/uniqueidmanager.h>
+
+#include <QtCore/QDebug>
+#include <QtCore/QtPlugin>
+#include <QtGui/QAction>
+#include <QtGui/QMenu>
+#include <QtGui/QMessageBox>
+#include <QtGui/QPushButton>
+
+using namespace Welcome;
+
+
+WelcomePlugin::WelcomePlugin()
+  : m_welcomeMode(0)
+{
+}
+
+WelcomePlugin::~WelcomePlugin()
+{
+    if (m_welcomeMode) {
+        removeObject(m_welcomeMode);
+        delete m_welcomeMode;
+    }
+}
+
+/*! Initializes the plugin. Returns true on success.
+    Plugins want to register objects with the plugin manager here.
+
+    \a error_message can be used to pass an error message to the plugin system,
+       if there was any.
+*/
+bool WelcomePlugin::initialize(const QStringList &arguments, QString *error_message)
+{
+    Q_UNUSED(arguments)
+    Q_UNUSED(error_message)
+
+    m_welcomeMode = new WelcomeMode;
+    addObject(m_welcomeMode);
+
+    return true;
+}
+
+/*! Notification that all extensions that this plugin depends on have been
+    initialized. The dependencies are defined in the plugins .qwp file.
+
+    Normally this method is used for things that rely on other plugins to have
+    added objects to the plugin manager, that implement interfaces that we're
+    interested in. These objects can now be requested through the
+    PluginManagerInterface.
+
+    The WelcomePlugin doesn't need things from other plugins, so it does
+    nothing here.
+*/
+void WelcomePlugin::extensionsInitialized()
+{
+    Core::ModeManager::instance()->activateMode(m_welcomeMode->uniqueModeName());
+}
+
+Q_EXPORT_PLUGIN(WelcomePlugin)
diff --git a/src/plugins/welcome/welcomeplugin.h b/src/plugins/welcome/welcomeplugin.h
new file mode 100644
index 00000000000..970ec399500
--- /dev/null
+++ b/src/plugins/welcome/welcomeplugin.h
@@ -0,0 +1,58 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2009 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://www.qtsoftware.com/contact.
+**
+**************************************************************************/
+
+#ifndef WELCOMEPLUGIN_H
+#define WELCOMEPLUGIN_H
+
+#include <extensionsystem/iplugin.h>
+
+namespace Welcome {
+
+class WelcomeMode;
+
+class WelcomePlugin
+  : public ExtensionSystem::IPlugin
+{
+    Q_OBJECT
+
+public:
+    WelcomePlugin();
+    ~WelcomePlugin();
+
+    bool initialize(const QStringList &arguments, QString *error_message);
+
+    void extensionsInitialized();
+
+private:
+    WelcomeMode *m_welcomeMode;
+};
+
+} // namespace Welcome
+
+#endif // WELCOMEPLUGIN_H
-- 
GitLab