diff -r 000000000000 -r 79c6a41cd166 idlefw/plugins/pslnactiveidleplugin/src/gsactiveidleplugin.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlefw/plugins/pslnactiveidleplugin/src/gsactiveidleplugin.cpp Thu Dec 17 08:54:17 2009 +0200 @@ -0,0 +1,232 @@ +/* +* Copyright (c) 2005-2007 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: Psln Active Idle settings plugin. +* +*/ + + +#include "gsactiveidleplugin.h" +#include "gsactiveidleplugincontainer.h" + +#include +#include +#include +#include "pslnactiveidlepluginuids.h" + +#include +#include +#include +#include +#include +#include + +#include +#include + +// GS Active Idle Plugin impl. UID +const TUid KGSActiveIdlePluginUid = { KGSActiveIdlePluginImplementationUID }; + +// Psln Active Idle Plugin impl. UID +const TUid KPslnAIPluginUid = { KPslnActiveIdlePluginImplementationUID }; + +_LIT(KGSActiveIdlePluginResourceFileName, "z:pslnactiveidlepluginrsc.rsc"); + + +// ---------------------------------------------------------------------------- +// CGSActiveIdlePlugin::CGSActiveIdlePlugin() +// +// Constructor +// ---------------------------------------------------------------------------- +// +CGSActiveIdlePlugin::CGSActiveIdlePlugin() : iResourceLoader(*iCoeEnv), iPrevViewId() +{ +} + +// --------------------------------------------------------------------------- +// CGSActiveIdlePlugin::NewL() +// +// Symbian OS default constructor +// --------------------------------------------------------------------------- +CGSActiveIdlePlugin* CGSActiveIdlePlugin::NewL(TAny* /*aInitParams*/) +{ + CGSActiveIdlePlugin* self = new (ELeave) CGSActiveIdlePlugin(); + + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + + return self; +} + +// --------------------------------------------------------------------------- +// CGSActiveIdlePlugin::ConstructL() +// +// Symbian OS two-phased constructor +// --------------------------------------------------------------------------- +void CGSActiveIdlePlugin::ConstructL() +{ +#ifdef _MY_DEBUG + RDebug::Print(_L("XAI: CGSActiveIdlePlugin::ConstructL")); +#endif + + // Find the resource file. + TParse parse; + parse.Set(KGSActiveIdlePluginResourceFileName, &KDC_RESOURCE_FILES_DIR, NULL); + TFileName fileName(parse.FullName()); + + // Open resource file. + iResourceLoader.OpenL(fileName); + + BaseConstructL(); + + // Psln first finds and loads all plugins that implement Psln plugin interface. + iPluginLoader = CPslnFWPluginHandler::NewL(AppUi()); + CPslnFWPluginInterface* plugin = iPluginLoader->LoadPluginL(KPslnAIPluginUid); + if (plugin) + { + // Add Psln Active Idle plugin to appui views. Plugin is deleted + // when appui is destroyed. + if (plugin->Id() == KPslnAIPluginUid) + { + CAknView* view = static_cast(plugin); + AppUi()->AddViewL(view); + } + } +} + +// ---------------------------------------------------------------------------- +// CGSActiveIdlePlugin::~CGSActiveIdlePlugin +// +// Destructor +// ---------------------------------------------------------------------------- +CGSActiveIdlePlugin::~CGSActiveIdlePlugin() +{ + if (iContainer) + { + AppUi()->RemoveFromStack(iContainer); + delete iContainer; + iContainer = NULL; + } + + iResourceLoader.Close(); + + delete iPluginLoader; +} + +// --------------------------------------------------------------------------- +// TUid CGSActiveIdlePlugin::Id() +// +// Returns view's ID. +// --------------------------------------------------------------------------- +TUid CGSActiveIdlePlugin::Id() const +{ + return KGSActiveIdlePluginUid; +} + +// ---------------------------------------------------------------------------- +// CGSActiveIdlePlugin::GetCaption +// +// Return application/view caption. 256 +// ---------------------------------------------------------------------------- +// +void CGSActiveIdlePlugin::GetCaptionL(TDes& aCaption) const +{ + iCoeEnv->ReadResourceL(aCaption, R_PSLN_GS_LIST_VIEW_CAPTION); +} + +// ---------------------------------------------------------------------------- +// CGSActiveIdlePlugin::PluginProviderCategory +// +// A means to identify the location of this plug-in in the framework. +// ---------------------------------------------------------------------------- +// +TInt CGSActiveIdlePlugin::PluginProviderCategory() const +{ + // To identify internal plug-ins. + return KGSPluginProviderInternal; +} + +// ---------------------------------------------------------------------------- +// CGSActiveIdlePlugin::Visible +// +// Provides the visibility status of self to framework. +// ---------------------------------------------------------------------------- +// +TBool CGSActiveIdlePlugin::Visible() const +{ +#ifdef _MY_DEBUG + RDebug::Print(_L("XAI: CGSActiveIdlePlugin::Visible")); +#endif + + return ETrue; +} + +// --------------------------------------------------------------------------- +// CGSActiveIdlePlugin::HandleCommandL(TInt aCommand) +// +// Handles commands directed to this class. +// --------------------------------------------------------------------------- +void CGSActiveIdlePlugin::HandleCommandL(TInt aCommand) +{ + // shouldn't get any commands to handle, but forward them to appui anyway... + AppUi()->HandleCommandL(aCommand); +} + +// ---------------------------------------------------------------------------- +// CGSActiveIdlePlugin::DoActivateL +// +// First method called by the Avkon framwork to invoke a view. +// ---------------------------------------------------------------------------- +// +void CGSActiveIdlePlugin::DoActivateL( + const TVwsViewId& aPrevViewId, + TUid /*aCustomMessageId*/, + const TDesC8& /*aCustomMessage*/) +{ +#ifdef _MY_DEBUG + RDebug::Print(_L("XAI: CGSActiveIdlePlugin::DoActivateL")); +#endif + + if (!iContainer) + { + iContainer = new (ELeave) CGSActiveIdlePluginContainer(); + iContainer->SetMopParent(this); + iContainer->ConstructL(ClientRect()); + } + + AppUi()->AddToStackL(*this, iContainer); + + if (iPrevViewId.iViewUid.iUid == 0) + { + iPrevViewId = aPrevViewId; + } + + iContainer->MakeVisible(ETrue); + AppUi()->ActivateLocalViewL(KPslnAIPluginUid); +} + +// ---------------------------------------------------------------------------- +// CGSActiveIdlePlugin::DoDeactivate +// +// Called by the Avkon view framework when closing. +// ---------------------------------------------------------------------------- +// +void CGSActiveIdlePlugin::DoDeactivate() +{ + AppUi()->RemoveFromStack(iContainer); + iContainer->MakeVisible(EFalse); + iPrevViewId.iViewUid.iUid = 0; +} + +// End of File.