--- a/appfoundation/statemodel/src/hsstatefactory.cpp Fri Jun 11 13:58:37 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,225 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: State factory.
-*
-*/
-
-#include <QStringList>
-#include <QDir>
-#include <QPluginLoader>
-#include <QState>
-
-#include "hsstatefactory.h"
-#include "hsstatefactory_p.h"
-#include "hsstateprovidermanifest.h"
-#include "hstest_global.h"
-
-HsStateFactoryPrivate::HsStateFactoryPrivate(HsStateFactory* aPublic)
- : QObject(aPublic),
- mQ(aPublic)
-{
-
-}
-
-HsStateFactoryPrivate::~HsStateFactoryPrivate()
-{
-
-}
-
-QList<HsStateToken> HsStateFactoryPrivate::states()
-{
- QStringList pluginPaths;
-
- //Check plugin dirs from root of different drives
- QFileInfoList drives = QDir::drives();
- for(int i=0; i < drives.count(); i++)
- {
- QFileInfo drive = drives.at(i);
- QString driveLetter = drive.absolutePath();
- QString path = driveLetter + mPluginManifestDirectory;
- if(QDir(path).exists())
- {
- pluginPaths << path;
- }
- }
-
- //Check plugin dir relative to current dir
- if(QDir(mPluginManifestDirectory).exists() && !pluginPaths.contains(QDir(mPluginManifestDirectory).absolutePath()))
- {
- pluginPaths << mPluginManifestDirectory;
- }
-
- QList<HsStateToken> states;
-
- for(int h=0; h < pluginPaths.count(); h++)
- {
- QString path = pluginPaths.at(h);
- QDir dir(path);
- QStringList filters("*.manifest");
-
- for(int i=0; i < dir.entryList(filters, QDir::Files).count(); ++i)
- {
- QString fileName = dir.entryList(filters, QDir::Files).at(i);
-
- HsStateProviderManifest manifest;
- manifest.loadFromXml(dir.absoluteFilePath(fileName));
-
- if(manifest.loadOnQuery())
- {
- QList<HsStateToken> tokens = manifest.states();
- for(int j=0; j < tokens.count(); ++j)
- {
- HsStateToken token = tokens.at(j);
- IHsStateProvider* provider = loadProviderFromPlugin(token.mLibrary);
- if(provider)
- {
- states << provider->states();
- delete provider;
- }
- }
- }
- else
- {
- states << manifest.states();
- }
- }
- }
- return states;
-}
-
-QState* HsStateFactoryPrivate::createState(const HsStateToken& aToken)
-{
- IHsStateProvider* provider = loadProviderFromPlugin(aToken.mLibrary);
- if(!provider)
- {
- HSDEBUG("Widget creation failed - No provider.")
- return 0;
- }
-
- QState* state = provider->createState(aToken);
- delete provider;
- if(!state)
- {
- HSDEBUG("State creation failed.")
- }
- return state;
-}
-
-IHsStateProvider* HsStateFactoryPrivate::loadProviderFromPlugin(const QString& aPluginName)
-{
- QStringList pluginPaths;
-
- //Check plugin dirs from root of different drives
- QFileInfoList drives = QDir::drives();
- for(int i=0; i < drives.count(); i++)
- {
- QFileInfo drive = drives.at(i);
- QString driveLetter = drive.absolutePath();
- QString path = driveLetter + mPluginDirectory;
- if(QDir(path).exists())
- {
- pluginPaths << path;
- }
- }
-
-
- //Check plugin dir relative to current dir
- if(QDir(mPluginManifestDirectory).exists() && !pluginPaths.contains(QDir(mPluginDirectory).absolutePath()))
- {
- pluginPaths << mPluginDirectory;
- }
-
- IHsStateProvider* provider = 0;
- QPluginLoader loader;
- QObject* plugin = 0;
-
- for(int i=0; i < pluginPaths.count(); i++)
- {
- QString path = pluginPaths.at(i);
- QString fileName = QDir(path).absoluteFilePath(aPluginName);
-
- loader.setFileName(fileName);
- plugin = loader.instance();
- provider = qobject_cast<IHsStateProvider*>(plugin);
- if(provider)
- {
- return provider;
- }
-
- //Don't leak memory if provider not IHsStateProvider
- if(plugin)
- {
- HSDEBUG("State provider load - !provider, deleting plugin.")
- delete plugin;
- }
- }
-
- HSDEBUG("State provider load failed - Not found.")
- return 0;
-}
-
-/*!
- \class HsStateFactory
- \ingroup group_hsstatemodel
- \brief Finds and creates home screen states.
- State factory finds home screen states from state provider
- plugins. The search is done based on given plugin manifest
- and plugin binary directories. Found states are returned as
- a list of state tokens. State factory creates an instance of
- a state base on a state token that is given to it.
-*/
-
-/*!
- Constructor.
- \a aPluginManifestDirectory Directory that contains plugin manifests.
- \a aPluginDirectory Directory that contains plugin binaries.
- \a aParent Parent object.
-*/
-HsStateFactory::HsStateFactory(const QString& aPluginManifestDirectory,
- const QString& aPluginDirectory,
- QObject* aParent)
- : QObject(aParent)
-{
- mD = new HsStateFactoryPrivate(this);
- mD->mPluginManifestDirectory = aPluginManifestDirectory;
- mD->mPluginDirectory = aPluginDirectory;
-}
-
-
-/*!
- Destructor.
-*/
-HsStateFactory::~HsStateFactory()
-{
-
-}
-
-/*!
- Returns found states as a list of state tokens.
-*/
-QList<HsStateToken> HsStateFactory::states()
-{
- return mD->states();
-}
-
-/*!
- Creates and returns a state based on the given token.
- \a aToken Identifies the state to be created.
-
- Returns The created state.
-*/
-QState* HsStateFactory::createState(const HsStateToken& aToken)
-{
- return mD->createState(aToken);
-}