diff -r 8ee96d21d9bf -r 7e0eff37aedb gssettingsuis/Gs/GSFramework/src/GSPluginInterface.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gssettingsuis/Gs/GSFramework/src/GSPluginInterface.cpp Wed Sep 01 12:20:44 2010 +0100 @@ -0,0 +1,245 @@ +/* +* Copyright (c) 2005-2008 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: CGSPluginInteface implementation. +* +*/ + +#include + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CGSPluginInterface::CGSPluginInterface() +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +EXPORT_C CGSPluginInterface::CGSPluginInterface() + : iOrder( KGSPluginNotIndexed ) + { + } + + +// ----------------------------------------------------------------------------- +// CGSPluginInterface::~CGSPluginInterface() +// Destructor. +// ----------------------------------------------------------------------------- +// +EXPORT_C CGSPluginInterface::~CGSPluginInterface() + { + // We don't unload the plugin object here. The loader + // has to do this for us. Without this kind of destruction idiom, + // the view framework can potentially unload an ECOM plugin dll whilst + // there are still child views (Created by the plugin) that are registered + // with the view framework. If this occurs, the plugin code segment isn't + // loaded anymore and so there is no way to run the subsequent destructor + // code => exception. + } + + +// ----------------------------------------------------------------------------- +// CGSPluginInterface::NewL() +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +EXPORT_C CGSPluginInterface* CGSPluginInterface::NewL( TUid aImplementationUid, + TAny* aInitParams ) + { + TAny* ptr; + TInt32 keyOffset = _FOFF( CGSPluginInterface, iDtor_ID_Key ); + ptr = REComSession::CreateImplementationL( aImplementationUid, + keyOffset, + aInitParams ); + + CGSPluginInterface* plugin = REINTERPRET_CAST( CGSPluginInterface*, ptr ); + + return plugin; + } + + +// ----------------------------------------------------------------------------- +// CGSPluginInterface::PluginProviderCategory() +// +// +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CGSPluginInterface::PluginProviderCategory() const + { + return EGSPluginProvider3rdParty; + } + +// ----------------------------------------------------------------------------- +// CGSPluginInterface::CustomOperationL() +// +// +// ----------------------------------------------------------------------------- +// +EXPORT_C TAny* CGSPluginInterface::CustomOperationL( + TAny* /*aParam1*/, + TAny* /*aParam2*/ ) + { + return NULL; + }; + + +// ----------------------------------------------------------------------------- +// CGSPluginInterface::Visible() +// +// +// ----------------------------------------------------------------------------- +// +EXPORT_C TBool CGSPluginInterface::Visible() const + { + return ETrue; + } + + +// ----------------------------------------------------------------------------- +// CGSPluginInterface::CreateIconL() +// +// +// ----------------------------------------------------------------------------- +// +EXPORT_C CGulIcon* CGSPluginInterface::CreateIconL( + const TUid aIconType ) + { + TParse parse; + parse.Set( KGSDefaultIconFileName, &KDC_BITMAP_DIR, NULL ); + TFileName fileName( parse.FullName() ); + CGulIcon* icon = NULL; + + if( aIconType == KGSIconTypeLbxItem ) + { + icon = AknsUtils::CreateGulIconL( + AknsUtils::SkinInstance(), + KAknsIIDQgnPropSetDeviceSub, + fileName, + EMbmGsfwiconQgn_prop_set_default_sub, + EMbmGsfwiconQgn_prop_set_default_sub_mask ); + } + else if( aIconType == KGSIconTypeTab ) + { + } + else if( aIconType == KGSIconTypeDColumn ) + { + } + else // Unknown type + { + } + return icon; + } + + +// ----------------------------------------------------------------------------- +// CGSPluginInterface::GetValue() +// +// Empty implementation just to minimize plugin implementor work. +// ----------------------------------------------------------------------------- +// +EXPORT_C void CGSPluginInterface::GetValue( const TGSPluginValueKeys aKey, + TDes& aValue ) + { + switch( aKey ) + { + case EGSPluginKeySettingsItemValueString: + + _LIT( KStr, "" ); + aValue.Append( KStr ); + break; + + default: + _LIT( KEmptyStr, "" ); + aValue.Append( KEmptyStr ); + break; + } + } + + +// ----------------------------------------------------------------------------- +// CGSPluginInterface::HandleSelection() +// +// Default implementation just to minimize plugin implementor work. +// On default activate plugin. +// ----------------------------------------------------------------------------- +// +EXPORT_C void CGSPluginInterface::HandleSelection( + const TGSSelectionTypes /*aSelectionType*/ ) + { + // There is nothing pluginInterface can do if activating view fails. + TRAP_IGNORE( AppUi()->ActivateLocalViewL( Id() ) ); + + } + + +// ----------------------------------------------------------------------------- +// CGSPluginInterface::ItemType() +// +// Default implementation just to minimize plugin implementor work. +// Default value EGSItemTypeSingleLarge +// ----------------------------------------------------------------------------- +// +EXPORT_C TGSListboxItemTypes CGSPluginInterface::ItemType() + { + return EGSItemTypeSingleLarge; + } + + +// ----------------------------------------------------------------------------- +// CGSPluginInterface::ResetSelectedItemIndex() +// +// +// ----------------------------------------------------------------------------- +// +EXPORT_C void CGSPluginInterface::ResetSelectedItemIndex() + { + // Default implementation does nothing. + } + + +// ----------------------------------------------------------------------------- +// CGSPluginInterface::TGSMenuActivationItems() +// +// +// ----------------------------------------------------------------------------- +// +EXPORT_C TGSMenuActivationItems CGSPluginInterface::MenuActivationItem() + { + // This default item will be the one read from the resource file. + return EGSMenuActivationItemDefault; + } + +// ----------------------------------------------------------------------------- +// CGSPluginInterface::SetOrder() +// +// +// ----------------------------------------------------------------------------- +// +EXPORT_C void CGSPluginInterface::SetOrder( TInt aOrder ) + { + iOrder = aOrder; + } + + +// ----------------------------------------------------------------------------- +// CGSPluginInterface::GetEcomDestructorKey() +// +// +// ----------------------------------------------------------------------------- +// +EXPORT_C TUid CGSPluginInterface::GetEcomDestructorKey() + { + return iDtor_ID_Key; + } + +// End of File