phonebookui/Speeddial/speeddialgsplugin/src/speeddialgsplugin.cpp
changeset 0 e686773b3f54
child 3 04ab22b956c2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookui/Speeddial/speeddialgsplugin/src/speeddialgsplugin.cpp	Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,290 @@
+/*
+* Copyright (c) 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:     Source file for CSpeeddialGsPlugin class
+*
+*/
+
+
+
+
+
+#include <aknViewAppUi.h>
+#include <ConeResLoader.h>
+#include <barsread.h>       // For TResourceReader
+#include <StringLoader.h>
+#include <apgcli.h>
+#include <AknLaunchAppService.h>
+#include <bautils.h>
+
+// Includes from GS framework:
+#include <gsfwviewuids.h>
+#include <GSPrivatePluginProviderIds.h>
+
+#include <AknNullService.h>
+// Plugin includes:
+#include <speeddialgspluginrsc.rsg>
+#include <speeddialgsplugin.mbg>
+
+// Includes
+#include "speeddialgsplugin.h"
+
+#define SPEEDDIALAPPUID 0x1000590A
+
+// CONSTANTS
+const TUid KSpeeddialGSPluginUid = { 0x1028339F };
+
+// svg file
+_LIT( KGSSecPluginIconFileName, "\\resource\\apps\\speeddialgsplugin.mif");
+
+// ---------------------------------------------------------------------------
+// CSpeeddialGsPlugin::CSpeeddialGsPlugin()
+//
+// ---------------------------------------------------------------------------
+//
+CSpeeddialGsPlugin::CSpeeddialGsPlugin(): iNullService( NULL )
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// CSpeeddialGsPlugin::~CSpeeddialGsPlugin()
+//
+// ---------------------------------------------------------------------------
+//
+CSpeeddialGsPlugin::~CSpeeddialGsPlugin()
+    {
+    if (iResId)
+	{
+        env->DeleteResourceFile(iResId);
+	}
+    if ( iNullService )
+        {
+            delete iNullService;
+            iNullService=NULL;
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CSpeeddialGsPlugin::ConstructL()
+//
+// ---------------------------------------------------------------------------
+//
+void CSpeeddialGsPlugin::ConstructL()
+    {
+    BaseConstructL( );   
+    TFileName resourceFileName;
+    TPtrC driveLetter = TParsePtrC( RProcess().FileName() ).Drive();
+    _LIT( KResoureFileName, "speeddialgspluginrsc.rsc" );
+          
+    resourceFileName.Copy( driveLetter );  
+    resourceFileName.Append( KDC_ECOM_RESOURCE_DIR );
+    resourceFileName.Append( KResoureFileName );
+            
+    env = CEikonEnv::Static();
+
+    TFileName fileName(resourceFileName);
+	
+    BaflUtils::NearestLanguageFile(env->FsSession(), fileName);
+
+    iResId = env->AddResourceFileL(fileName); 
+     }
+
+// ---------------------------------------------------------------------------
+// CSpeeddialGsPlugin::NewL()
+//
+// ---------------------------------------------------------------------------
+//
+CGSPluginInterface* CSpeeddialGsPlugin::NewL( TAny* /*aInitParams*/ )
+  {
+  	CSpeeddialGsPlugin* self = new( ELeave ) CSpeeddialGsPlugin();
+  	CleanupStack::PushL( self );
+  	self->ConstructL();
+  	CleanupStack::Pop( self );
+  	return (CGSPluginInterface*)self;
+  }
+
+// ---------------------------------------------------------------------------
+// CGSParentPlugin::Id()
+//
+// ---------------------------------------------------------------------------
+//
+TUid CSpeeddialGsPlugin::Id() const
+    {
+ 	   return KSpeeddialGSPluginUid;
+    }
+
+// ---------------------------------------------------------------------------
+// CGSParentPlugin::DoActivateL()
+//
+// ---------------------------------------------------------------------------
+//
+void CSpeeddialGsPlugin::DoActivateL( const TVwsViewId& aPrevViewId,
+                                     TUid aCustomMessageId,
+                                     const TDesC8& aCustomMessage )
+    {
+    // nothing
+    }
+
+// ---------------------------------------------------------------------------
+// CGSParentPlugin::DoDeactivate()
+//
+// ---------------------------------------------------------------------------
+//
+void CSpeeddialGsPlugin::DoDeactivate()
+    {
+    // nothing
+    }
+
+// ---------------------------------------------------------------------------
+// CSpeeddialGsPlugin::UpperLevelViewUid()
+//
+// ---------------------------------------------------------------------------
+//
+TUid CSpeeddialGsPlugin::UpperLevelViewUid()
+    {
+    return KGSTelPluginUid;
+    }
+
+// -----------------------------------------------------------------------------
+// CSpeeddialGsPlugin::GetHelpContext()
+//
+// -----------------------------------------------------------------------------
+//
+void CSpeeddialGsPlugin::GetHelpContext( TCoeHelpContext& aContext )
+    {
+    aContext.iMajor = KUidGS;
+    aContext.iContext = NULL;
+    }
+
+// ---------------------------------------------------------------------------
+// CSpeeddialGsPlugin::GetCaptionL()
+//
+// ---------------------------------------------------------------------------
+//
+void CSpeeddialGsPlugin::GetCaptionL( TDes& aCaption ) const
+    {
+    StringLoader::Load( aCaption, R_GS_SPEEDDIAL_VIEW_CAPTION);
+    }
+
+// ---------------------------------------------------------------------------
+// CSpeeddialGsPlugin::PluginProviderCategory()
+//
+// ---------------------------------------------------------------------------
+//
+TInt CSpeeddialGsPlugin::PluginProviderCategory() const
+    {
+   	 return KGSPluginProviderInternal;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CSpeeddialGsPlugin::CreateIconL
+// Return the icon, if has one.
+// ---------------------------------------------------------------------------
+//
+CGulIcon* CSpeeddialGsPlugin::CreateIconL( const TUid aIconType )
+    {
+    CGulIcon* icon;
+
+    if( aIconType == KGSIconTypeLbxItem )
+        {
+        icon = AknsUtils::CreateGulIconL(
+        AknsUtils::SkinInstance(),
+        KAknsIIDQgnPropCpTeleSpeed,
+        KGSSecPluginIconFileName,
+        EMbmSpeeddialgspluginQgn_prop_cp_tele_speed,
+        EMbmSpeeddialgspluginQgn_prop_cp_tele_speed_mask );
+        }
+     else
+        {
+        icon = CGSPluginInterface::CreateIconL( aIconType );
+        }
+
+    return icon;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CSpeeddialGsPlugin::ListBoxType()
+//
+// -----------------------------------------------------------------------------
+//
+TGSListboxTypes CSpeeddialGsPlugin::ListBoxType()
+    {
+    return EGSListBoxTypeSettings;
+    }
+    
+
+// -----------------------------------------------------------------------------
+// CSpeeddialGsPlugin::HandleSelection()
+// -----------------------------------------------------------------------------
+//
+void CSpeeddialGsPlugin::HandleSelection(
+    const TGSSelectionTypes /*aSelectionType*/ )
+{
+    TRAP_IGNORE(LaunchEasAppL());
+}
+
+// -----------------------------------------------------------------------------
+// CSpeeddialGsPlugin::ItemType()
+// -----------------------------------------------------------------------------
+//
+TGSListboxItemTypes CSpeeddialGsPlugin::ItemType()
+{
+    return EGSItemTypeSettingDialog;
+}
+
+// -----------------------------------------------------------------------------
+// CEasGSPlugin::LaunchEasAppL()
+// -----------------------------------------------------------------------------
+//
+void CSpeeddialGsPlugin::LaunchEasAppL()
+{
+    // UID belongs easapp.exe
+    const TUid KAppUid = { SPEEDDIALAPPUID };
+    
+    RWsSession ws;
+    User::LeaveIfError( ws.Connect() );
+    CleanupClosePushL( ws );
+
+    // Find the task with uid
+    TApaTaskList taskList(ws);
+    TApaTask task = taskList.FindApp( KAppUid );
+
+    if ( task.Exists() )
+    {
+        task.BringToForeground();
+    }
+    else
+    {
+        // Launch application as embedded.
+        if ( iNullService )
+        {
+            delete iNullService;
+            iNullService = NULL;
+        }
+        iNullService = CAknNullService::NewL( KAppUid, NULL );
+    } 
+    ws.Close();
+    CleanupStack::PopAndDestroy();
+}
+
+void CSpeeddialGsPlugin::HandleServerAppExit( TInt aReason )
+    {
+    if ( aReason != EEikCmdExit )
+        {
+        MAknServerAppExitObserver::HandleServerAppExit( aReason );
+        }
+    }
+//End of File
+