MaemoManager::MaemoManager()
    : QObject(0)
    , m_runControlFactory(new MaemoRunControlFactory(this))
    , m_runConfigurationFactory(new MaemoRunConfigurationFactory(this))
    , m_deployConfigurationFactory(new Qt4MaemoDeployConfigurationFactory(this))
    , m_packageCreationFactory(new MaemoPackageCreationFactory(this))
    , m_deployStepFactory(new MaemoDeployStepFactory(this))
    , m_deviceConfigurationsSettingsPage(new MaemoDeviceConfigurationsSettingsPage(this))
    , m_qemuSettingsPage(new MaemoQemuSettingsPage(this))
    , m_publishingFactoryFremantleFree(new MaemoPublishingWizardFactoryFremantleFree(this))
    , m_maemoTargetFactory(new Qt4MaemoTargetFactory(this))
    , m_toolChainFactory(new MaemoToolChainFactory)
{
    Q_ASSERT(!m_instance);

    m_instance = this;
    MaemoQemuManager::instance(this);
    MaemoDeviceConfigurations::instance(this);

    PluginManager *pluginManager = PluginManager::instance();
    pluginManager->addObject(m_toolChainFactory);
    pluginManager->addObject(m_runControlFactory);
    pluginManager->addObject(m_runConfigurationFactory);
    pluginManager->addObject(m_deployConfigurationFactory);
    pluginManager->addObject(m_packageCreationFactory);
    pluginManager->addObject(m_deployStepFactory);
    pluginManager->addObject(m_deviceConfigurationsSettingsPage);
    pluginManager->addObject(m_qemuSettingsPage);
    pluginManager->addObject(m_publishingFactoryFremantleFree);
    pluginManager->addObject(m_maemoTargetFactory);

    qRegisterMetaType<MaemoDeployable>("MaemoDeployable");
}