diff -r 000000000000 -r 254040eb3b7d defaultapplicationsettings/gsplugin/src/gs_das.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/defaultapplicationsettings/gsplugin/src/gs_das.cpp Thu Dec 17 08:46:07 2009 +0200 @@ -0,0 +1,255 @@ +/* +* Copyright (c) 2005-2006 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: Implements a (minimal) GS Plugin +* +*/ + + +// Includes +#include +#include +#include + +#include // Plugin's own UI resources +#include + +#include "gs_das.h" + +#include + + +// Constants + +#ifdef __SCALABLE_ICONS + // svg file + _LIT( KGSDasPluginIconFileName, "\\resource\\apps\\GSDasPlugin.mif"); +#else + // bitmap + _LIT( KGSDasPluginIconFileName, "\\resource\\apps\\GSDasPlugin.mbm"); +#endif // __SCALABLE_ICONS + + +// ========================= MEMBER FUNCTIONS ================================ + + +// --------------------------------------------------------------------------- +// CDefaultAppGSPlugin::CDefaultAppGSPlugin() +// Constructor +// +// --------------------------------------------------------------------------- +// +CDefaultAppGSPlugin::CDefaultAppGSPlugin( ) + : iResources( *iCoeEnv ), iClient(NULL) + { + + } + +// --------------------------------------------------------------------------- +// CDefaultAppGSPlugin::~CDefaultAppGSPlugin() +// Destructor +// +// --------------------------------------------------------------------------- +// +CDefaultAppGSPlugin::~CDefaultAppGSPlugin() + { + iResources.Close(); + if(iClient) + delete iClient; + if( iEmptyContainer ) + { + AppUi()->RemoveFromViewStack( *this, iEmptyContainer ); + delete iEmptyContainer; + }; + } + +// --------------------------------------------------------------------------- +// CDefaultAppGSPlugin::ConstructL() +// Symbian OS two-phased constructor +// +// --------------------------------------------------------------------------- +// +void CDefaultAppGSPlugin::ConstructL() + { + // Find the resource file: + TParse parse; + parse.Set( KDefaultAppGSPluginResourceFileName, &KDC_RESOURCE_FILES_DIR, NULL ); + TFileName fileName( parse.FullName() ); + + // Get language of resource file: + BaflUtils::NearestLanguageFile( CEikonEnv::Static()->FsSession(), fileName ); + + // Open resource file: + iResources.OpenL( fileName ); + + //We can call this after opening the resource file ... + BaseConstructL( R_GS_DEFAULTAPP_VIEW ); + } + +// --------------------------------------------------------------------------- +// CDefaultAppGSPlugin::NewL() +// Static constructor +// +// --------------------------------------------------------------------------- +// +CDefaultAppGSPlugin* CDefaultAppGSPlugin::NewL( TAny* /*aInitParams*/ ) + { + CDefaultAppGSPlugin* self = new( ELeave ) CDefaultAppGSPlugin( ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + + +// ========================= From CAknView ================== + + +// --------------------------------------------------------------------------- +// From class CAknView. +// Returns the UID of the plugin (see base class) +// --------------------------------------------------------------------------- +// +TUid CDefaultAppGSPlugin::Id() const + { + return KDefaultAppGSPluginUid; + } + + +// --------------------------------------------------------------------------- +// From class CAknView. +// Activates the plugin (see base class) +// See das_servmimeapps.h for possible values of the flags (useful for R&D) +// -0x00010000 : +// --------------------------------------------------------------------------- +// +void CDefaultAppGSPlugin::DoActivateL( const TVwsViewId& aPrevViewId, + TUid /*aCustomMessageId*/, + const TDesC8& /*aCustomMessage*/ ) + { + iPrevViewId = aPrevViewId; + + TInt flags(0); //See das_servmimeapps.h for possible values of the flags (useful for R&D) + + if( !iClient ) + { + iClient=CDefaultAppClient::NewL(this); + } + + iClient->ChangeDefaultsL( flags ); + + //construct an empty control, so we avoid the screen flickering + if( !iEmptyContainer ) + { + iEmptyContainer = CCEmptyContainer::NewL( ClientRect(),NULL ); + iEmptyContainer->SetMopParent(this); + AppUi()->AddToStackL(*this, iEmptyContainer); + }; + } + + +// --------------------------------------------------------------------------- +// From class CAknView. +// Deactivates the Plugin (see base class) +// --------------------------------------------------------------------------- +// +void CDefaultAppGSPlugin::DoDeactivate() + { + if(iEmptyContainer) + { + AppUi()->RemoveFromViewStack(*this, iEmptyContainer); + delete iEmptyContainer; + iEmptyContainer=NULL; + }; + } + + +// --------------------------------------------------------------------------- +// From class CAknView. +// Handles a menu command (see base class) +// --------------------------------------------------------------------------- +// +void CDefaultAppGSPlugin::HandleCommandL( TInt aCommand ) + { + switch ( aCommand ) + { + case EAknSoftkeyBack: + AppUi()->ActivateLocalViewL( iPrevViewId.iViewUid ); + break; + case EAknCmdExit: + case EEikCmdExit: + AppUi()->RunAppShutter(); + break; + default: + AppUi()->HandleCommandL( aCommand ); //also handles EAknCmdExit + break; + } + } +// ========================= From CGSPluginInterface ================== + + + +// --------------------------------------------------------------------------- +// From class CGSPluginInterface. +// Returns the Plugin Caption (see base class) +// --------------------------------------------------------------------------- +// +void CDefaultAppGSPlugin::GetCaptionL( TDes& aCaption ) const + { + HBufC* result = StringLoader::LoadL( R_GS_DEFAULTAPP_CAPTION ); + aCaption.Copy( *result ); + delete result; + } + +// --------------------------------------------------------------------------- +// From class CGSPluginInterface. +// Return the icon, if has one. +// --------------------------------------------------------------------------- +// +CGulIcon* CDefaultAppGSPlugin::CreateIconL( const TUid aIconType ) + { + //EMbm + CGulIcon* icon; + + if( aIconType == KGSIconTypeLbxItem ) + { + icon = AknsUtils::CreateGulIconL( + AknsUtils::SkinInstance(), + KAknsIIDQgnPropCpDevDef, + KGSDasPluginIconFileName, + EMbmGsdaspluginQgn_prop_cp_dev_def, + EMbmGsdaspluginQgn_prop_cp_dev_def_mask ); + } + else + { + icon = CGSPluginInterface::CreateIconL( aIconType ); + }; + + return icon; + } + +// ========================= From MAknServerAppExitObserver ================== + +// --------------------------------------------------------------------------- +// From class MAknServerAppExitObserver. +// Handles server exits +// --------------------------------------------------------------------------- +// +void CDefaultAppGSPlugin::HandleServerAppExit( TInt aReason) + { + delete iClient; + iClient=NULL; + TRAP_IGNORE(HandleCommandL(aReason));//do not care why it leaved + } + +// End of file