diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index d3fd611623394434c6ada569e86552cfb6fca99d..34c2216138b5391c0c97bea5ed1b44704563c8eb 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -184,8 +184,7 @@ struct ProjectExplorerPluginPrivate { QString m_projectFilterString; Internal::MiniProjectTargetSelector * m_targetSelector; Internal::ProjectExplorerSettings m_projectExplorerSettings; - Internal::ProjectWelcomePage *m_welcomePlugin; - Internal::ProjectWelcomePageWidget *m_welcomePage; + Internal::ProjectWelcomePage *m_welcomePage; Core::BaseMode * m_projectsMode; }; @@ -217,8 +216,8 @@ ProjectExplorerPlugin::ProjectExplorerPlugin() ProjectExplorerPlugin::~ProjectExplorerPlugin() { - removeObject(d->m_welcomePlugin); - delete d->m_welcomePlugin; + removeObject(d->m_welcomePage); + delete d->m_welcomePage; removeObject(this); delete d; } @@ -242,11 +241,9 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er Core::ICore *core = Core::ICore::instance(); Core::ActionManager *am = core->actionManager(); - d->m_welcomePlugin = new ProjectWelcomePage; - d->m_welcomePage = qobject_cast<Internal::ProjectWelcomePageWidget*>(d->m_welcomePlugin->page()); - Q_ASSERT(d->m_welcomePage); + d->m_welcomePage = new ProjectWelcomePage; connect(d->m_welcomePage, SIGNAL(manageSessions()), this, SLOT(showSessionManager())); - addObject(d->m_welcomePlugin); + addObject(d->m_welcomePage); addObject(this); connect(core->fileManager(), SIGNAL(currentFileChanged(QString)), @@ -1127,7 +1124,6 @@ Project *ProjectExplorerPlugin::startupProject() const return pro; } -// update welcome page void ProjectExplorerPlugin::updateWelcomePage() { ProjectWelcomePageWidget::WelcomePageData welcomePageData; @@ -1135,16 +1131,15 @@ void ProjectExplorerPlugin::updateWelcomePage() welcomePageData.activeSession = d->m_session->activeSession(); welcomePageData.previousSession = d->m_session->lastSession(); welcomePageData.projectList = d->m_recentProjects; - d->m_welcomePage->updateWelcomePage(welcomePageData); + d->m_welcomePage->setWelcomePageData(welcomePageData); } void ProjectExplorerPlugin::currentModeChanged(Core::IMode *mode, Core::IMode *oldMode) { if (mode && mode->id() == QLatin1String(Core::Constants::MODE_WELCOME)) updateWelcomePage(); - if (oldMode == d->m_projectsMode) { + if (oldMode == d->m_projectsMode) savePersistentSettings(); - } } void ProjectExplorerPlugin::determineSessionToRestoreAtStartup() diff --git a/src/plugins/projectexplorer/projectwelcomepage.cpp b/src/plugins/projectexplorer/projectwelcomepage.cpp index c922592151096eadfd02c256763dc7bd023dc8cc..a31ad5c5364bd1516b3a884b17098509da285457 100644 --- a/src/plugins/projectexplorer/projectwelcomepage.cpp +++ b/src/plugins/projectexplorer/projectwelcomepage.cpp @@ -34,19 +34,31 @@ namespace ProjectExplorer { namespace Internal { ProjectWelcomePage::ProjectWelcomePage() - : m_page(new ProjectWelcomePageWidget) + : m_page(0) { - } -ProjectWelcomePage::~ProjectWelcomePage() +QWidget *ProjectWelcomePage::page() { + if (!m_page) { + m_page = new ProjectWelcomePageWidget; + + // Forward signals + connect(m_page, SIGNAL(requestProject(QString)), this, SIGNAL(requestProject(QString))); + connect(m_page, SIGNAL(requestSession(QString)), this, SIGNAL(requestSession(QString))); + connect(m_page, SIGNAL(manageSessions()), this, SIGNAL(manageSessions())); + m_page->updateWelcomePage(m_welcomePageData); + } + return m_page; } -QWidget* ProjectWelcomePage::page() +void ProjectWelcomePage::setWelcomePageData(const ProjectWelcomePageWidget::WelcomePageData &welcomePageData) { - return m_page; + m_welcomePageData = welcomePageData; + + if (m_page) + m_page->updateWelcomePage(welcomePageData); } } // namespace Internal diff --git a/src/plugins/projectexplorer/projectwelcomepage.h b/src/plugins/projectexplorer/projectwelcomepage.h index 16e1fb3dd14be141443fb317b7a223345724cc0e..f809c0882cafb99c16de76713c56c79942986717 100644 --- a/src/plugins/projectexplorer/projectwelcomepage.h +++ b/src/plugins/projectexplorer/projectwelcomepage.h @@ -32,25 +32,31 @@ #include <utils/iwelcomepage.h> +#include "projectwelcomepagewidget.h" + namespace ProjectExplorer { namespace Internal { -class ProjectWelcomePageWidget; - class ProjectWelcomePage : public Utils::IWelcomePage { Q_OBJECT public: ProjectWelcomePage(); - ~ProjectWelcomePage(); QWidget *page(); QString title() const { return tr("Develop"); } int priority() const { return 20; } -private: - ProjectWelcomePageWidget *m_page; + void setWelcomePageData(const ProjectWelcomePageWidget::WelcomePageData &welcomePageData); +signals: + void requestProject(const QString &project); + void requestSession(const QString &session); + void manageSessions(); + +private: + ProjectWelcomePageWidget *m_page; + ProjectWelcomePageWidget::WelcomePageData m_welcomePageData; }; } // namespace Internal diff --git a/src/plugins/projectexplorer/projectwelcomepagewidget.cpp b/src/plugins/projectexplorer/projectwelcomepagewidget.cpp index 1c3da1d348ca0a078a40cecb403ee71ceea19484..f1332e03cbb2090eb245fb7238d8e46c07b27a71 100644 --- a/src/plugins/projectexplorer/projectwelcomepagewidget.cpp +++ b/src/plugins/projectexplorer/projectwelcomepagewidget.cpp @@ -84,7 +84,6 @@ ProjectWelcomePageWidget::ProjectWelcomePageWidget(QWidget *parent) : connect(ui->projTreeWidget, SIGNAL(activated(QString)), SLOT(slotProjectClicked(QString))); connect(ui->createNewProjectButton, SIGNAL(clicked()), SLOT(slotCreateNewProject())); connect(ui->manageSessionsButton, SIGNAL(clicked()), SIGNAL(manageSessions())); - } ProjectWelcomePageWidget::~ProjectWelcomePageWidget() diff --git a/src/plugins/projectexplorer/projectwelcomepagewidget.h b/src/plugins/projectexplorer/projectwelcomepagewidget.h index b47b72430df0b74fdc35e15a446584d2cd87c66b..67e4d082427a163d83a63c03069cb47f66731e5a 100644 --- a/src/plugins/projectexplorer/projectwelcomepagewidget.h +++ b/src/plugins/projectexplorer/projectwelcomepagewidget.h @@ -34,20 +34,21 @@ namespace ProjectExplorer { - namespace Internal { +namespace Internal { namespace Ui { class ProjectWelcomePageWidget; } -class ProjectWelcomePageWidget : public QWidget { +class ProjectWelcomePageWidget : public QWidget +{ Q_OBJECT public: ProjectWelcomePageWidget(QWidget *parent = 0); ~ProjectWelcomePageWidget(); - struct WelcomePageData{ + struct WelcomePageData { bool operator==(const WelcomePageData &rhs) const; bool operator!=(const WelcomePageData &rhs) const; @@ -75,7 +76,7 @@ private: WelcomePageData lastData; }; -} -} +} // namespace Internal +} // namespace ProjectExplorer #endif // PROJECTWELCOMEPAGEWIDGET_H diff --git a/src/plugins/qt4projectmanager/gettingstartedwelcomepage.cpp b/src/plugins/qt4projectmanager/gettingstartedwelcomepage.cpp index 1083d3373251b6ba1a0b32e9b5977edac1ae072b..d5beb69eb6dfd0f38353275fe92b416c58cecdf3 100644 --- a/src/plugins/qt4projectmanager/gettingstartedwelcomepage.cpp +++ b/src/plugins/qt4projectmanager/gettingstartedwelcomepage.cpp @@ -34,14 +34,24 @@ namespace Qt4ProjectManager { namespace Internal { GettingStartedWelcomePage::GettingStartedWelcomePage() - : m_page(new GettingStartedWelcomePageWidget) + : m_page(0) { } -QWidget* GettingStartedWelcomePage::page() +QWidget *GettingStartedWelcomePage::page() { + if (!m_page) + m_page = new GettingStartedWelcomePageWidget; return m_page; } +void GettingStartedWelcomePage::updateExamples(const QString &examplePath, + const QString &demosPath, + const QString &sourcePath) +{ + if (m_page) + m_page->updateExamples(examplePath, demosPath, sourcePath); +} + } // namespace Internal } // namespace Qt4ProjectManager diff --git a/src/plugins/qt4projectmanager/gettingstartedwelcomepage.h b/src/plugins/qt4projectmanager/gettingstartedwelcomepage.h index ea0efcccf901c3d3e8a9fbdf5428ca4c391d0d9f..cf3c14f364473fc8d5d88d6b6168364dde9a4625 100644 --- a/src/plugins/qt4projectmanager/gettingstartedwelcomepage.h +++ b/src/plugins/qt4projectmanager/gettingstartedwelcomepage.h @@ -47,6 +47,11 @@ public: QString title() const { return tr("Getting Started");} int priority() const { return 10; } +public slots: + void updateExamples(const QString &examplePath, + const QString &demosPath, + const QString &sourcePath); + private: GettingStartedWelcomePageWidget *m_page; }; diff --git a/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.cpp b/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.cpp index 1055262ec9ea4cc1d83f6d88ca50c6aef3569a99..80ffdc4fc830f9e449ea25ec60560a4ea3f8303f 100644 --- a/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.cpp +++ b/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.cpp @@ -99,7 +99,9 @@ GettingStartedWelcomePageWidget::~GettingStartedWelcomePageWidget() delete ui; } -void GettingStartedWelcomePageWidget::updateExamples(const QString& examplePath, const QString& demosPath, const QString &sourcePath) +void GettingStartedWelcomePageWidget::updateExamples(const QString &examplePath, + const QString &demosPath, + const QString &sourcePath) { QString demoxml = demosPath + "/qtdemo/xml/examples.xml"; if (!QFile::exists(demoxml)) { diff --git a/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.h b/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.h index f5145f7f02676d391fd0bbc5bd3fd889595d1e34..21cceb1cc8b3608a40040a58c4c355c0c2d55efb 100644 --- a/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.h +++ b/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.h @@ -39,18 +39,21 @@ namespace Ui { class GettingStartedWelcomePageWidget; } -class GettingStartedWelcomePageWidget : public QWidget { +class GettingStartedWelcomePageWidget : public QWidget +{ Q_OBJECT public: GettingStartedWelcomePageWidget(QWidget *parent = 0); ~GettingStartedWelcomePageWidget(); - public slots: - void updateExamples(const QString& examplePath, const QString& demosPath, const QString &sourcePath); +public slots: + void updateExamples(const QString &examplePath, + const QString &demosPath, + const QString &sourcePath); private slots: - void slotOpenHelpPage(const QString& url); - void slotOpenContextHelpPage(const QString& url); + void slotOpenHelpPage(const QString &url); + void slotOpenContextHelpPage(const QString &url); void slotEnableExampleButton(int); void slotOpenExample(); void slotNextTip(); @@ -63,7 +66,7 @@ private: int m_currentTip; }; - } // namespace Internal } // namespace Qt4ProjectManager + #endif // GETTINGSTARTEDWELCOMEPAGEWIDGET_H diff --git a/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp b/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp index a3b8b4c5a1bf0e1f68aa1ab3588bf94150b9221d..ad9c6e4fff3b15cb5fd2cc67e9af192b90cf9b9e 100644 --- a/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp +++ b/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp @@ -47,7 +47,6 @@ #include "qtoptionspage.h" #include "externaleditors.h" #include "gettingstartedwelcomepage.h" -#include "gettingstartedwelcomepagewidget.h" #include "qt-maemo/maemomanager.h" #include "qt-s60/s60manager.h" @@ -103,16 +102,14 @@ bool Qt4ProjectManagerPlugin::initialize(const QStringList &arguments, QString * m_projectExplorer = ProjectExplorer::ProjectExplorerPlugin::instance(); Core::ActionManager *am = core->actionManager(); - QtVersionManager *mgr = new QtVersionManager(); + QtVersionManager *mgr = new QtVersionManager; addAutoReleasedObject(mgr); - addAutoReleasedObject(new QtOptionsPage()); + addAutoReleasedObject(new QtOptionsPage); m_welcomePage = new GettingStartedWelcomePage; addObject(m_welcomePage); - GettingStartedWelcomePageWidget *gswp = - static_cast<GettingStartedWelcomePageWidget*>(m_welcomePage->page()); connect(mgr, SIGNAL(updateExamples(QString,QString,QString)), - gswp, SLOT(updateExamples(QString,QString,QString))); + m_welcomePage, SLOT(updateExamples(QString,QString,QString))); //create and register objects m_qt4ProjectManager = new Qt4Manager(this); diff --git a/src/plugins/qt4projectmanager/qtversionmanager.cpp b/src/plugins/qt4projectmanager/qtversionmanager.cpp index cbbf08b3709005702ecba8fb03a016a2a198c4cd..ba3183fe417571081603aee34822ac8046348aca 100644 --- a/src/plugins/qt4projectmanager/qtversionmanager.cpp +++ b/src/plugins/qt4projectmanager/qtversionmanager.cpp @@ -227,7 +227,6 @@ void QtVersionManager::updateExamples() versions.append(m_versions); QString examplesPath; - QString docPath; QString demosPath; QtVersion *version = 0; // try to find a version which has both, demos and examples diff --git a/src/plugins/welcome/communitywelcomepage.cpp b/src/plugins/welcome/communitywelcomepage.cpp index 8d86de77e939d8dde3874f4e391e5b82b4b8b288..e53d03b6d877eb3d5b60d779e462d05b206625c5 100644 --- a/src/plugins/welcome/communitywelcomepage.cpp +++ b/src/plugins/welcome/communitywelcomepage.cpp @@ -35,12 +35,14 @@ namespace Welcome { namespace Internal { CommunityWelcomePage::CommunityWelcomePage() - : m_page(new CommunityWelcomePageWidget) + : m_page(0) { } -QWidget* CommunityWelcomePage::page() +QWidget *CommunityWelcomePage::page() { + if (!m_page) + m_page = new CommunityWelcomePageWidget; return m_page; } diff --git a/src/plugins/welcome/communitywelcomepage.h b/src/plugins/welcome/communitywelcomepage.h index 8f4afb1a4797401ac36de2ffcfc97b76078d3173..ab0cb8b8f57c05633c533c03597522917dd01ca3 100644 --- a/src/plugins/welcome/communitywelcomepage.h +++ b/src/plugins/welcome/communitywelcomepage.h @@ -51,7 +51,6 @@ public: private: CommunityWelcomePageWidget *m_page; - }; } // namespace Internal diff --git a/src/plugins/welcome/welcomemode.cpp b/src/plugins/welcome/welcomemode.cpp index 0ad4d14dc966a2d438b7b89ffffe7245783f1b19..3831ea9e2a49bfa606fb30c2a605086dab7f4eca 100644 --- a/src/plugins/welcome/welcomemode.cpp +++ b/src/plugins/welcome/welcomemode.cpp @@ -156,8 +156,8 @@ void WelcomeMode::initPlugins() delete m_d->ui.stackedWidget->currentWidget(); QList<IWelcomePage*> plugins = PluginManager::instance()->getObjects<IWelcomePage>(); qSort(plugins.begin(), plugins.end(), &sortFunction); - foreach (IWelcomePage* plugin, plugins) { - QToolButton * btn = new QToolButton; + foreach (IWelcomePage *plugin, plugins) { + QToolButton *btn = new QToolButton; btn->setCheckable(true); btn->setText(plugin->title()); btn->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);