idlefw/plugins/pslnactiveidleplugin/src/gsactiveidleplugin.cpp
changeset 0 79c6a41cd166
--- /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 <pslnfwplugininterface.h>
+#include <pslnfwpluginhandler.h>
+#include <pslnactiveidlepluginrsc.rsg>
+#include "pslnactiveidlepluginuids.h"
+
+#include <coeaui.h>
+#include <gulicon.h>
+#include <bautils.h>
+#include <eikfrlbd.h>
+#include <stringloader.h>
+#include <aknviewappui.h>
+
+#include <gsfwviewuids.h>
+#include <gsprivatepluginproviderids.h>
+
+// 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<CAknView*>(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.