controlpanelui/src/cpcategorymodel/src/cpcategorysettingformitemdata.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 31 Aug 2010 15:15:28 +0300
branchRCL_3
changeset 13 90fe62538f66
permissions -rw-r--r--
Revision: 201029 Kit: 201035

/*
* 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:  An extension to CpSettingFormItemData, can be filled with model items comes from controlpanel plugins.
*
*/
#include "cpcategorysettingformitemdata.h"
#include <QString>
#include "cpcategorymodelutility.h"

/*
 * Private implementation
 */
class CpCategorySettingFormItemDataPrivate
{
public:
	CpCategorySettingFormItemDataPrivate(const QString &configFile) : 
	  mInitialized(false),
	  mConfigFile(configFile)
	{
	}

	~CpCategorySettingFormItemDataPrivate()
	{
	}

public:
	bool mInitialized;
	QString mConfigFile;
};

/*
 * Constructor
 */
CpCategorySettingFormItemData::CpCategorySettingFormItemData(
               HbDataFormModelItem::DataItemType type,
	           const QString &label,
			   const QString &configFile,
			   const HbDataFormModelItem *parent /*= 0*/) : 
			   CpSettingFormItemData(type,label,parent),
			   d(new CpCategorySettingFormItemDataPrivate(configFile))
{
}

/*
 * Overloaded constructor
 */
CpCategorySettingFormItemData::CpCategorySettingFormItemData(
			   const QString &configFile /*= QString()*/,
			   const HbDataFormModelItem *parent /*= 0*/) : 
	           CpSettingFormItemData(parent),
			   d(new CpCategorySettingFormItemDataPrivate(configFile))
{
}

/*
 * Desctructor
 */
CpCategorySettingFormItemData::~CpCategorySettingFormItemData()
{
	delete d;
}

/*
 * Initialize
 */
void CpCategorySettingFormItemData::initialize(CpItemDataHelper &itemDataHelper)
{
    //avoid to be called twice
    if (!d->mInitialized) {
        //give derived class a chance do their special things before loading config plugins
        beforeLoadingConfigPlugins(itemDataHelper);
        
        int pluginItemStartPosition = childCount();
        //give derived class a chance do their special things after loading config plugins
        afterLoadingConfigPlugins(itemDataHelper);
        
        //load plugins which are configured
        CpCategoryModelUtility::buildConfigPluginItems(
		    this,
		    d->mConfigFile,
		    itemDataHelper,
		    pluginItemStartPosition);
		    
        d->mInitialized = true;
    }
}

/*
 * Derived class can override this function to do some specific work before loading config plugins
 */
void CpCategorySettingFormItemData::beforeLoadingConfigPlugins(CpItemDataHelper &/*itemDataHelper*/)
{
}
/*
 * Derived class can override this function to do some specific work before loading config plugins
 */
void CpCategorySettingFormItemData::afterLoadingConfigPlugins(CpItemDataHelper &/*itemDataHelper*/)
{
}

//End of File