--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phonesettings/pslncallimageplugin/src/PslnCallImagePlugin.cpp Mon Jan 18 20:18:27 2010 +0200
@@ -0,0 +1,692 @@
+/*
+* Copyright (c) 2005 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: View for Phone Application skinning.
+*
+*/
+
+
+// INCLUDE FILES
+
+// This plugin specific.
+#include <PslnCallImagePluginRsc.rsg>
+#include <pslncallimageplugin.mbg>
+#include "PslnCallImagePlugin.h"
+#include "PslnCallImagePluginContainer.h"
+#include "PslnCallImagePluginDRM.h"
+
+// General services.
+#include <gulicon.h>
+#include <bautils.h>
+#include <eikfrlbd.h>
+#include <StringLoader.h>
+#include <aknViewAppUi.h>
+#include <featmgr.h>
+#include <ConeResLoader.h>
+#include <pslninternalcrkeys.h>
+#include <AknsSrvClient.h>
+#include <aknnotewrappers.h>
+#include <AknsWallpaperUtils.h>
+
+// Psln Framework specific.
+#include <pslnfwviewuids.h>
+#include <psln.hrh>
+#include <pslncommon.rsg>
+
+// General services
+#include <MGFetch.h>
+
+// Resources
+#include <psln.rsg>
+
+// Logging
+#include "PslnCallImagePluginLogger.h"
+
+// CONSTANTS
+
+// Path to mbm file.
+_LIT( KPslnPhoneApplicationIconFileName, "z:PslnCallImagePlugin.mbm");
+
+// Path to compiled resource file.
+_LIT( KPslnCallImagePluginResourceFileName, "z:PslnCallImagePluginRsc.rsc" );
+
+// Path to common personalization resources. This resource file is meant for
+// shared resources between application and plugins.
+_LIT( KPslnCommonResourceFileName, "z:pslncommon.rsc" );
+
+// Path to Psln application resource file. Plugin uses some localized texts from Psln's
+// resources,
+_LIT( KPslnApplicationResourceFileName, "z:Psln.rsc" );
+
+// Extension for scalable vector graphics file.
+_LIT( KAknsSkinSrvSvgFileExt, ".svg" );
+
+// Selected file.
+const TInt KPslnSelectedFile = 0;
+
+// Location of this plugin view within Psln's tab group.
+const TInt KPslnApplicationPhonePluginLocation = 5;
+
+const TInt KPslnFileArrayGranularity = 3;
+
+// Middle Softkey control ID.
+const TInt KPslnMSKControlId = 3;
+
+// ========================= MEMBER FUNCTIONS ================================
+
+// ----------------------------------------------------------------------------
+// CPslnCallImagePlugin::CPslnCallImagePlugin()
+//
+// Constructor
+// ----------------------------------------------------------------------------
+//
+CPslnCallImagePlugin::CPslnCallImagePlugin( CAknViewAppUi* aAppUi )
+ : iResourceLoader( *iCoeEnv ), iResourceLoaderCommon( *iCoeEnv ),
+ iResourceLoaderPsln( *iCoeEnv ), iAppUi ( aAppUi )
+ {
+ }
+
+// ---------------------------------------------------------------------------
+// CPslnCallImagePlugin::NewL()
+//
+// Symbian OS default constructor
+// ---------------------------------------------------------------------------
+CPslnCallImagePlugin* CPslnCallImagePlugin::NewL( TAny* aAppUi )
+ {
+ __CALLLOGSTRING("CPslnCallImagePlugin::NewL");
+ CAknViewAppUi* appUi = reinterpret_cast<CAknViewAppUi*>( aAppUi );
+ CPslnCallImagePlugin* self = new( ELeave ) CPslnCallImagePlugin ( appUi );
+
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop();
+
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// CPslnCallImagePlugin::ConstructL()
+//
+// Symbian OS two-phased constructor
+// ---------------------------------------------------------------------------
+void CPslnCallImagePlugin::ConstructL()
+ {
+ // Find the resource file:
+ TParse parse;
+ parse.Set( KPslnCommonResourceFileName, &KDC_APP_RESOURCE_DIR, NULL );
+ TFileName* fileName = new (ELeave) TFileName( parse.FullName() );
+ CleanupStack::PushL( fileName );
+
+ // Open resource file:
+ iResourceLoaderCommon.OpenL( *fileName );
+
+ // Find the resource file:
+ parse.Set( KPslnApplicationResourceFileName, &KDC_APP_RESOURCE_DIR, NULL );
+
+ OpenLocalizedResourceFileL(
+ KPslnCallImagePluginResourceFileName,
+ iResourceLoader );
+
+ CleanupStack::PopAndDestroy( fileName );
+
+ BaseConstructL( R_PSLN_CALL_IMAGE_VIEW );
+
+ __CALLLOGSTRING("CPslnCallImagePlugin::ConstructL -> METHOD COMPLETED");
+ }
+
+// ----------------------------------------------------------------------------
+// CPslnCallImagePlugin::~CPslnCallImagePlugin
+//
+// Destructor
+// ----------------------------------------------------------------------------
+CPslnCallImagePlugin::~CPslnCallImagePlugin()
+ {
+ __CALLLOGSTRING("CPslnCallImagePlugin::~CPslnCallImagePlugin -> START");
+ iResourceLoaderCommon.Close();
+ iResourceLoaderPsln.Close();
+ iResourceLoader.Close();
+ __CALLLOGSTRING("CPslnCallImagePlugin::~CPslnCallImagePlugin -> METHOD COMPLETED");
+ }
+
+// ---------------------------------------------------------------------------
+// TUid CPslnCallImagePlugin::Id()
+//
+// Returns view's ID.
+// ---------------------------------------------------------------------------
+TUid CPslnCallImagePlugin::Id() const
+ {
+ __CALLLOGSTRING("CPslnCallImagePlugin::Id");
+ return KPslnCallImagePluginUid;
+ }
+
+// ----------------------------------------------------------------------------
+// CPslnCallImagePlugin::GetCaption
+//
+// Return application/view caption.
+// ----------------------------------------------------------------------------
+//
+void CPslnCallImagePlugin::GetCaptionL( TDes& aCaption ) const
+ {
+ __CALLLOGSTRING("CPslnCallImagePlugin::GetCaptionL");
+
+ // the resource file is already opened.
+ HBufC* result = StringLoader::LoadL( R_PSLN_CI_LIST_VIEW_CAPTION );
+ if ( aCaption.MaxLength() >= result->Length() )
+ {
+ aCaption.Copy( *result );
+ }
+ delete result;
+ }
+
+// ----------------------------------------------------------------------------
+// CPslnCallImagePlugin::GetTabTextL
+//
+// Return application/view caption.
+// ----------------------------------------------------------------------------
+//
+void CPslnCallImagePlugin::GetTabTextL( TDes& aCaption ) const
+ {
+ __CALLLOGSTRING("CPslnCallImagePlugin::GetTabTextL");
+
+ // the resource file is already opened.
+ HBufC* result = StringLoader::LoadL( R_PSLN_CI_TAB_NAME );
+ if ( aCaption.MaxLength() >= result->Length() )
+ {
+ aCaption.Copy( *result );
+ }
+ delete result;
+ }
+
+// ----------------------------------------------------------------------------
+// CPslnCallImagePlugin::CreateIconL
+//
+// Creates Main view icon.
+// ----------------------------------------------------------------------------
+//
+CGulIcon* CPslnCallImagePlugin::CreateIconL()
+ {
+ __CALLLOGSTRING("CPslnCallImagePlugin::CreateIconL");
+
+ // Find the resource file:
+ TParse parse;
+ parse.Set( KPslnPhoneApplicationIconFileName, &KDC_APP_BITMAP_DIR, NULL );
+ TFileName fileName( parse.FullName() );
+
+ CGulIcon* icon = AknsUtils::CreateGulIconL(
+ AknsUtils::SkinInstance(),
+ KAknsIIDQgnPropPslnCimageSub,
+ fileName,
+ EMbmPslncallimagepluginQgn_prop_psln_cimage_sub,
+ EMbmPslncallimagepluginQgn_prop_psln_cimage_sub_mask
+ );
+
+ return icon;
+ }
+
+// -----------------------------------------------------------------------------
+// CPslnCallImagePlugin::GetLocationTypeAndIndex()
+//
+//
+// -----------------------------------------------------------------------------
+//
+void CPslnCallImagePlugin::GetLocationTypeAndIndex(
+ TPslnFWLocationType& aType,
+ TInt& aIndex ) const
+ {
+ __CALLLOGSTRING("CPslnCallImagePlugin::GetLocationTypeAndIndex");
+ aType = CPslnFWPluginInterface::EPslnFWSpecified;
+ aIndex = KPslnApplicationPhonePluginLocation;
+ }
+
+// ---------------------------------------------------------------------------
+// CPslnCallImagePlugin::HandleCommandL(TInt aCommand)
+//
+// Handles commands directed to this class.
+// ---------------------------------------------------------------------------
+//
+void CPslnCallImagePlugin::HandleCommandL( TInt aCommand )
+ {
+ __CALLLOGSTRING("CPslnCallImagePlugin::HandleCommandL -> START");
+ switch ( aCommand )
+ {
+ case EPslnCmdAppDownload:
+ case EPslnCmdAppActivate:
+ case EAknSoftkeyOk:
+ if ( iContainer->iListBox->CurrentItemIndex() ==
+ EPlsnCallImageThemeImage )
+ {
+ SetCallImageSettingL( EPlsnCRThemeImage );
+ }
+ else if ( iContainer->iListBox->CurrentItemIndex() ==
+ EPlsnCallImageUserDefinedImage )
+ {
+ // Don't launch more than one image selection at time
+ if ( !iVerifier )
+ {
+ __CALLLOGSTRING("CPslnCallImagePlugin::HandleCommandL -> SetCallImage");
+ SetCallImageL();
+ }
+ }
+ else // EPlsnCallImageNone
+ {
+ TInt imageError = SetCallImagePath( KNullDesC );
+ if ( imageError != KErrNone )
+ {
+ __CALLLOGSTRING1("CPslnCallImagePlugin::HandleCommandL -> SetCallImagePath error: %d", imageError);
+ HandleImageErrorsL( imageError );
+ }
+ SetCallImageSettingL( EPlsnCRCallImageNone );
+ }
+ // Update container.
+ static_cast<CPslnCallImagePluginContainer*>
+ (iContainer)->UpdateListBoxL();
+ CheckMiddleSoftkeyLabelL();
+ break;
+ case EAknSoftkeyBack:
+ if ( iAppUi->View( KPslnMainViewUid ) )
+ {
+ __CALLLOGSTRING("CPslnCallImagePlugin::HandleCommandL -> Activate PSLN");
+ iAppUi->ActivateLocalViewL( KPslnMainViewUid );
+ }
+ else
+ {
+ iAppUi->HandleCommandL( aCommand );
+ }
+ break;
+ case EPslnCmdAppHelp:
+ case EAknCmdHelp:
+ CPslnFWBaseView::HandleCommandL( aCommand );
+ break;
+ default:
+ // Help and Exit are handled by AppUi.
+ iAppUi->HandleCommandL( aCommand );
+ break;
+ }
+ __CALLLOGSTRING("CPslnCallImagePlugin::HandleCommandL -> METHOD COMPLETED");
+ }
+
+// ----------------------------------------------------------------------------
+// CPslnCallImagePlugin::DynInitMenuPaneL
+//
+//
+// -----------------------------------------------------------------------------
+//
+void CPslnCallImagePlugin::DynInitMenuPaneL(
+ TInt aResourceId, CEikMenuPane* aMenuPane )
+ {
+ __CALLLOGSTRING("CPslnCallImagePlugin::DynInitMenuPaneL -> START");
+ if ( aResourceId == R_PSLN_GEN_VIEW_MENUPANE )
+ {
+ // Since this is common resource it contains download - set it off.
+ aMenuPane->SetItemDimmed( EPslnCmdAppDownload, ETrue );
+ // Since this is common resource it contains activate - set it off.
+ aMenuPane->SetItemDimmed( EPslnCmdAppActivate, ETrue );
+ }
+ else if ( aResourceId == R_PSLN_CI_BASIC_MENUPANE )
+ {
+ TInt active = static_cast<CPslnCallImagePluginContainer*>
+ (iContainer)->CurrentSelectionIndexL();
+ // Set menu item as Apply, if:
+ // a) 'None' is selected
+ // b) highlight is on inactive selection
+ if ( active != iContainer->iListBox->CurrentItemIndex() &&
+ ( active == EPlsnCallImageNone ||
+ active == EPlsnCallImageThemeImage ) )
+ {
+ aMenuPane->SetItemDimmed( EPslnCmdAppActivate, EFalse );
+ aMenuPane->SetItemDimmed( EPslnCmdAppDownload, ETrue );
+ }
+ else if ( ( active == iContainer->iListBox->CurrentItemIndex() ) &&
+ ( active == EPlsnCallImageNone ||
+ active == EPlsnCallImageThemeImage ) )
+ {
+ aMenuPane->SetItemDimmed( EPslnCmdAppActivate, ETrue );
+ aMenuPane->SetItemDimmed( EPslnCmdAppDownload, ETrue );
+ }
+ else
+ {
+ aMenuPane->SetItemDimmed( EPslnCmdAppActivate, ETrue );
+ aMenuPane->SetItemDimmed( EPslnCmdAppDownload, EFalse );
+ }
+
+ if( !FeatureManager::FeatureSupported( KFeatureIdHelp ) )
+ {
+ // Disable help if not supported
+ aMenuPane->SetItemDimmed( EPslnCmdAppHelp, ETrue );
+ }
+ }
+ __CALLLOGSTRING("CPslnCallImagePlugin::DynInitMenuPaneL <- END");
+ }
+
+// ---------------------------------------------------------------------------
+// CPslnCallImagePlugin::SetBoolL
+//
+// Sets boolean to KCRUidThemes key.
+// ---------------------------------------------------------------------------
+//
+void CPslnCallImagePlugin::SetCallImageSettingL( const TInt aValue )
+ {
+ CRepository* setting = CRepository::NewL ( KCRUidThemes );
+ CleanupStack::PushL( setting );
+ setting->Set( KThemesCallImageSetting, aValue );
+ CleanupStack::PopAndDestroy( setting );
+ }
+
+// ---------------------------------------------------------------------------
+// CPslnCallImagePlugin::SetPathL
+//
+// Sets path to KCRUidThemes key.
+// ---------------------------------------------------------------------------
+//
+TInt CPslnCallImagePlugin::SetPathL( const TDesC& aPath )
+ {
+ CRepository* pathCen = CRepository::NewL ( KCRUidThemes );
+ CleanupStack::PushL( pathCen );
+ TInt error = pathCen->Set( KThemesCallImagePath, aPath );
+ CleanupStack::PopAndDestroy( pathCen );
+ return error;
+ }
+
+// ---------------------------------------------------------------------------
+// CPslnCallImagePlugin::SetCallImageL
+//
+// Sets call image.
+// ---------------------------------------------------------------------------
+//
+void CPslnCallImagePlugin::SetCallImageL()
+ {
+ __CALLLOGSTRING("CPslnCallImagePlugin::SetCallImage -> START");
+
+ TInt retVal( KErrNone );
+ CDesCArrayFlat* files =
+ new (ELeave) CDesCArrayFlat( KPslnFileArrayGranularity );
+ CleanupStack::PushL( files );
+ // Create DRM verifier
+ iVerifier = CPslnCallImagePluginDRM::NewL();
+ // Show images to user to select one
+
+ TBool selectedItem = MGFetch::RunL( *files, EImageFile, EFalse, iVerifier );
+
+ if ( !iVerifier )
+ {
+ __CALLLOGSTRING("CPslnCallImagePlugin::SetCallImage DRM Error");
+ retVal = KErrCancel;
+ }
+ else if( selectedItem && ( files->MdcaCount() > 0 ) )
+ {
+ __CALLLOGSTRING("CPslnCallImagePlugin::SetCallImage Fetch successful");
+ retVal = SetCallImagePath( files->MdcaPoint( KPslnSelectedFile ) );
+ if ( retVal != KErrNone )
+ {
+ __CALLLOGSTRING1("CPslnCallImagePlugin::SetCallImage -> SetCallImagePath error: %d", retVal );
+ HandleImageErrorsL( retVal );
+ }
+ }
+ else
+ {
+ __CALLLOGSTRING("CPslnCallImagePlugin::SetCallImage Fetch cancelled");
+ retVal = KErrCancel;
+ }
+
+ if ( retVal == KErrNone )
+ {
+ // no way currently of checking corrupted svg:s
+ if ( ( files->MdcaPoint( KPslnSelectedFile ).Right( 4 ) ).CompareF( KAknsSkinSrvSvgFileExt ) )
+ {
+ //Before setting image, check is the image corrputed
+ RAknsSrvSession skinsrv;
+ User::LeaveIfError( skinsrv.Connect() );
+ CleanupClosePushL( skinsrv );
+ CFbsBitmap* bmp = NULL;
+ CFbsBitmap* mask = NULL;
+ // (-1, -1) means that image is just decoded, not used
+ TRAP( retVal, skinsrv.DecodeWallpaperImageL( files->MdcaPoint( KPslnSelectedFile ), TSize(-1,-1), bmp, mask ) );
+ CleanupStack::PopAndDestroy(); // skinsrv
+ }
+
+ if( retVal == KErrNone )
+ {
+ // If image set without problems update setting.
+ SetCallImageSettingL( EPlsnCRUserDefinedImage );
+ }
+ else
+ {
+ //File is corrupted
+ HandleImageErrorsL( retVal );
+ }
+ }
+
+ CleanupStack::PopAndDestroy( files );
+
+ if ( iVerifier )
+ {
+ delete iVerifier;
+ iVerifier = NULL;
+ }
+ __CALLLOGSTRING("CPslnCallImagePlugin::SetCallImage -> METHOD COMPLETED");
+ }
+// ---------------------------------------------------------------------------
+// CPslnCallImagePlugin::HandleImageErrorsL
+//
+// Handles image setting errors.
+// ---------------------------------------------------------------------------
+//
+void CPslnCallImagePlugin::HandleImageErrorsL( TInt aError )
+ {
+ __CALLLOGSTRING1("CPslnCallImagePlugin::HandleImageError aError: %d -> START", aError );
+ TInt resourceId = KErrNone;
+ if ( aError == KErrNoMemory )
+ {
+ // Out of memory when handling the image,
+ User::Leave( aError );
+ }
+ else
+ {
+ // Image is corrupted or in wrong format
+ resourceId = R_PSLN_IMAGE_CORRUPTED;
+ }
+
+ // Show information note
+ HBufC* prompt = iCoeEnv->AllocReadResourceLC( resourceId );
+ CAknInformationNote* note = new (ELeave) CAknInformationNote( ETrue );
+ note->ExecuteLD( *prompt );
+ CleanupStack::PopAndDestroy( prompt );
+ __CALLLOGSTRING("CPslnCallImagePlugin::HandleImageError -> METHOD COMPLETED");
+ }
+
+// -----------------------------------------------------------------------------
+// CPslnCallImagePlugin::SetCallImagePath
+// Set call image path.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CPslnCallImagePlugin::SetCallImagePath( const TDesC& aImagePath )
+ {
+ __CALLLOGSTRING("CPslnCallImagePlugin::SetCallImagePath -> START");
+ TInt retVal(KErrNone);
+ // If CentralRepository set fails caller will handle the error code.
+ if( aImagePath.Length() >= 0 )
+ {
+ retVal = SetPathL( aImagePath );
+ }
+ else
+ {
+ retVal = KErrPathNotFound;
+ }
+
+ __CALLLOGSTRING("CPslnCallImagePlugin::SetCallImage -> METHOD COMPLETED");
+ return retVal;
+ }
+
+// ----------------------------------------------------------------------------
+// CPslnCallImagePlugin::Container
+//
+// Return handle to container class.
+// ----------------------------------------------------------------------------
+//
+CPslnCallImagePluginContainer* CPslnCallImagePlugin::Container()
+ {
+ return static_cast<CPslnCallImagePluginContainer*>( iContainer );
+ }
+
+// ----------------------------------------------------------------------------
+// CPslnCallImagePlugin::DoActivateL
+//
+// First method called by the Avkon framwork to invoke a view.
+// ----------------------------------------------------------------------------
+//
+void CPslnCallImagePlugin::DoActivateL( const TVwsViewId& aPrevViewId,
+ TUid aCustomMessageId,
+ const TDesC8& aCustomMessage )
+ {
+ __CALLLOGSTRING("CPslnCallImagePlugin::DoActivateL");
+ CPslnFWBaseView::DoActivateL( aPrevViewId, aCustomMessageId, aCustomMessage );
+
+ // If called from Psln - set tab group location.
+ if ( iAppUi->View( KPslnMainViewUid ) )
+ {
+ // This tries to set the plugin to the given location in Tab.
+ CPslnFWBaseView::SetTabIndex( KPslnApplicationPhonePluginLocation );
+ // This is the location that PslnFW actually put the plugin into.
+ TInt ciRealLocation = CPslnFWBaseView::GetTabIndex();
+ CPslnFWBaseView::SetNaviPaneL( ciRealLocation );
+ }
+ else
+ {
+ CPslnFWBaseView::SetNaviPaneL();
+ }
+
+ if ( iContainer )
+ {
+ TInt currentItem = static_cast<CPslnCallImagePluginContainer*>
+ (iContainer)->CurrentSelectionIndexL();
+ // Set highlight to selected item.
+ iContainer->iListBox->SetCurrentItemIndexAndDraw( currentItem );
+ }
+ // Check middle softkey.
+ CheckMiddleSoftkeyLabelL();
+ }
+
+// ----------------------------------------------------------------------------
+// CPslnCallImagePlugin::DoDeactivate
+//
+// Called by the Avkon view framework when closing.
+// ----------------------------------------------------------------------------
+//
+void CPslnCallImagePlugin::DoDeactivate()
+ {
+ __CALLLOGSTRING("CPslnCallImagePlugin::DoDeactivate");
+ CPslnFWBaseView::DoDeactivate();
+ }
+
+// ---------------------------------------------------------------------------
+// CPslnCallImagePlugin::NewContainerL()
+//
+// Creates new iContainer.
+// ---------------------------------------------------------------------------
+//
+void CPslnCallImagePlugin::NewContainerL()
+ {
+ __CALLLOGSTRING("CPslnCallImagePlugin::NewContainerL");
+ iContainer = new( ELeave ) CPslnCallImagePluginContainer;
+ iContainer->SetMiddleSoftkeyObserver( this );
+ }
+
+// ---------------------------------------------------------------------------
+// CPslnCallImagePlugin::HandleListBoxSelectionL()
+//
+// Handles events raised through a rocker key.
+// ---------------------------------------------------------------------------
+//
+void CPslnCallImagePlugin::HandleListBoxSelectionL()
+ {
+ __CALLLOGSTRING("CPslnCallImagePlugin::HandleListBoxSelectionL");
+ HandleCommandL( EAknSoftkeyOk );
+ }
+
+// ---------------------------------------------------------------------------
+// CPslnCallImagePlugin::CheckMiddleSoftkeyLabelL()
+//
+//
+// ---------------------------------------------------------------------------
+//
+void CPslnCallImagePlugin::CheckMiddleSoftkeyLabelL()
+ {
+ // First remove any prevous commands.
+ RemoveCommandFromMSK();
+
+ if ( iContainer )
+ {
+ TInt currentlyActive = static_cast<CPslnCallImagePluginContainer*>
+ (iContainer)->CurrentSelectionIndexL();
+ TInt currentItem = iContainer->iListBox->CurrentItemIndex();
+ // Set MSK label.
+ if ( currentlyActive != currentItem &&
+ ( currentItem == EPlsnCallImageNone ||
+ currentItem == EPlsnCallImageThemeImage ) )
+ {
+ // Set middle softkey as Apply, if:
+ // a) 'None' is selected
+ // b) highlight is on inactive selection
+ CPslnFWBaseView::SetMiddleSoftKeyLabelL(
+ R_PSLN_MSK_ACTIVATE,
+ EPslnCmdAppActivate );
+ }
+ else if( ( currentlyActive == currentItem ) &&
+ ( currentlyActive == EPlsnCallImageNone ||
+ currentlyActive == EPlsnCallImageThemeImage ) )
+ {
+ CPslnFWBaseView::SetMiddleSoftKeyLabelL(
+ R_TEXT_SOFTKEY_EMPTY,
+ EPslnCmdEmptyCommand );
+ }
+ else
+ {
+ // Otherwise set middle softkey as Change.
+ CPslnFWBaseView::SetMiddleSoftKeyLabelL(
+ R_PSLN_MSK_CHANGE,
+ EPslnCmdAppDownload );
+ }
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CPslnCallImagePlugin::RemoveCommandFromMSK()
+//
+//
+// ---------------------------------------------------------------------------
+//
+void CPslnCallImagePlugin::RemoveCommandFromMSK()
+ {
+ CEikButtonGroupContainer* cbaGroup = Cba();
+ if ( cbaGroup )
+ {
+ cbaGroup->RemoveCommandFromStack( KPslnMSKControlId, EPslnCmdAppActivate );
+ cbaGroup->RemoveCommandFromStack( KPslnMSKControlId, EPslnCmdAppDownload );
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CPslnCallImagePlugin::SetTitlePaneL()
+//
+// Gives resource ID to be used as plugin view title.
+// ---------------------------------------------------------------------------
+//
+void CPslnCallImagePlugin::SetTitlePaneL( TInt& aResourceId )
+ {
+#ifdef RD_CONTROL_PANEL
+ aResourceId = R_PSLN_TITLE_PANE_CALLIMAGE;
+#endif // RD_CONTROL_PANEL
+ }
+
+// End of File