--- a/psln/Src/PslnUi.cpp Fri Jun 25 18:53:58 2010 +0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1482 +0,0 @@
-/*
-* Copyright (c) 2002-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: UI class of Psln.
-*
-*/
-
-
-// INCLUDE FILES
-
-#include "PslnUi.h"
-
-#include <barsread.h>
-#include <StringLoader.h>
-
-// Navi pane, Title Pane & Tab groups
-#include <aknnavi.h>
-#include <aknnavide.h>
-#include <akntitle.h>
-
-// Notes & Dialogs
-#include <AknGlobalNote.h>
-#include <aknnotewrappers.h>
-
-// DRM.
-#include <DRMHelper.h>
-#include <DRMRights.h>
-
-// Psln specific.
-#include <psln.rsg>
-#include "PslnModel.h"
-#include "PslnSkinEntry.h"
-#include "PslnFeatures.h"
-#include "PslnSoundActivator.h"
-#include "pslntaskactivatesounds.h"
-#include "pslntaskgenericupdate.h"
-#include "pslnidletaskcreateviews.h"
-#include "PslnConst.h"
-#include "PslnDebug.h"
-#include "PslnModel.h"
-#include "PslnPropertySubscriber.h"
-
-// Views
-#include "PslnMainView.h"
-#include "PslnGeneralThemeView.h"
-#include "PslnScreenSaverView.h"
-#include "PslnWallpaperView.h"
-
-// Framework
-#include "PslnPluginHandler.h"
-#include <pslnfwplugininterface.h>
-#include <pslnfwbaseview.h>
-
-// Help texts
-#include <hlplch.h>
-#include <csxhelp/skins.hlp.hrh>
-#include <UsbWatcherInternalPSKeys.h> // KPSUidUsbWatcher
-#include <usbpersonalityids.h> // Usb Personality Ids
-
-// Sets internal state correctly when leave occurs in skin changing.
-
-// Handles application exit correctly when leave occurs in exiting.
-void HandleExitLeave( TAny* aPtr )
- {
- CPslnUi* psln = static_cast<CPslnUi*>(aPtr);
- psln->HandleCmdExitLeave();
- }
-
-// ========================= MEMBER FUNCTIONS ================================
-// ---------------------------------------------------------------------------
-// C++ constructor can NOT contain any code, that might leave.
-// ---------------------------------------------------------------------------
-//
-CPslnUi::CPslnUi() : iPslnUiStatus ( EPslnCreated )
- {
- }
-
-// ---------------------------------------------------------------------------
-// Symbian two-phased constructor.
-// ---------------------------------------------------------------------------
-//
-void CPslnUi::ConstructL()
- {
- PSLN_TRACE_DEBUG1("CPslnUi::ConstructL, Start:%d", User::NTickCount() );
-
- BaseConstructL( EAknEnableSkin | EAknEnableMSK | EAknSingleClickCompatible );
- EnableExternalViewSwitches(ETrue);
-
- // Create ECOM plugin loader.
- PSLN_TRACE_DEBUG("CPslnUi::ConstructL PluginHandler");
- iPluginHandler = CPslnPluginHandler::NewL( this );
-
- PSLN_TRACE_DEBUG("CPslnUi::ConstructL Model");
- // Force creation of model, since it is anyway created when ANY view is
- // activated.
- CreateModelL();
-
- PSLN_TRACE_DEBUG("CPslnUi::ConstructL StatusPane");
- // Show tabs for main views from resources
- CEikStatusPane* sp = StatusPane();
- if ( sp )
- {
- // Fetch pointer to the default navi pane control
- iNaviPane = (CAknNavigationControlContainer*)sp->ControlL(
- TUid::Uid(EEikStatusPaneUidNavi));
- }
-
- // New main view
- PSLN_TRACE_DEBUG("CPslnUi::ConstructL View-Main");
- CPslnMainView* view = CPslnMainView::NewLC();
- AddViewL( view ); // transfer ownership to CAknViewAppUi
- CleanupStack::Pop( view ); // the view has to be popped from cleanupstack here
- iMainView = view;
- SetDefaultViewL( *view );
-
- iIdleActivateSkin = CIdle::NewL( CActive::EPriorityIdle );
- iIdleUpdateSkin = CIdle::NewL( CActive::EPriorityIdle );
-
- PSLN_TRACE_DEBUG("CPslnUi::ConstructL OK");
- User::LeaveIfError( iEnableUSBWatchProperty.Attach(
- KPSUidUsbWatcher, KUsbWatcherSelectedPersonality) );
- iUSBWatchSubscriber = new (ELeave) CPslnPropertySubscriber(
- TCallBack(USBCallBackL, this), iEnableUSBWatchProperty );
- iUSBWatchSubscriber->Subscribe();
-
-
- TInt value = KErrNone;
- iEnableUSBWatchProperty.Get(value);
- if (value == KUsbPersonalityIdMS)
- {
- iUSBAttached = ETrue;
- }
- else
- {
- iUSBAttached = EFalse;
- }
- }
-
-// ---------------------------------------------------------------------------
-// Destructor
-// ---------------------------------------------------------------------------
-//
-CPslnUi::~CPslnUi()
- {
- PSLN_TRACE_DEBUG("CPslnUi::Destructor");
-
- // Reset skin info when exiting normally. This prevents model class
- // from trying to revert back to previous skin.
- if ( iView && iView->Id().iUid == KPslnMainView2.iUid )
- {
- // It is possible that Model is not created, if exiting immediately after
- // application launch. So first check that Model is created.
- if ( iModel )
- {
- TInt currentlySelected = iModel->ActiveSkinIndex();
- iModel->SetCurrentSelectedSkinIndex( currentlySelected );
- }
- }
- delete iModel;
- // This nullification is needed, since external DLL's may try to access
- // model through view framework and it might succeed even if model and UI
- // classes are already deleted, but external DLLs aren't.
- // This is due to that model reference is passed as a pointer due to delayed
- // construction - it is not available at the time when view is constructed.
- iModel = NULL;
- delete iDecoratedTabGroup;
-
- if ( iPluginHandler )
- {
- delete iPluginHandler;
- }
-
- delete iIdleTask;
- delete iIdleActivateSkin;
- delete iIdleUpdateSkin;
-
-
- if( iUSBWatchSubscriber )
- {
- iUSBWatchSubscriber->Cancel();
- }
- iEnableUSBWatchProperty.Close();
- delete iUSBWatchSubscriber;
- }
-
-// ---------------------------------------------------------------------------
-// Handles event when focus loss or gain.
-// ---------------------------------------------------------------------------
-//
-void CPslnUi::HandleWsEventL( const TWsEvent& aEvent, CCoeControl* aDestination )
- {
- PSLN_TRACE_DEBUG("CPslnUi::HandlwWSEvent");
- if ( iView )
- {
- TInt eventType = aEvent.Type();
- TUid currentView = iView->Id();
-
- // do this everytime when foreground gained.
- if ( ( currentView.iUid == KPslnGeneralView.iUid ) &&
- ( eventType == EEventFocusGained ) &&
- ( GetStatus( EPslnListUpdateNeeded ) ||
- GetStatus( EPslnProtectedSkinInList ) ) && IsForeground() )
- {
- PSLN_TRACE_DEBUG("CPslnUi::HandlwWSEvent Update list");
- SetStateOff( EPslnListUpdateNeeded );
- DoCreateWaitNoteL();
- }
- }
- CAknViewAppUi::HandleWsEventL( aEvent, aDestination );
- }
-
-// ---------------------------------------------------------------------------
-// Handles commands directed to this class.
-// ---------------------------------------------------------------------------
-//
-void CPslnUi::HandleCommandL( TInt aCommand )
- {
- PSLN_TRACE_DEBUG1("CPslnUi::HandleCommand %d", aCommand );
- switch ( aCommand )
- {
- //both exit commands should do the same thing
- case EEikCmdExit:
- case EAknCmdExit:
- case EAknSoftkeyExit:
- HandleCmdExitL();
- break;
-
- case EPslnCmdAppActivate:
- {
- if (!iIdleActivateSkin->IsActive())
- {
- iIdleActivateSkin->Start(TCallBack( DoActivateSkinL, this ));
- }
- }
- break;
- case EPslnCmdAppDownload:
- DownloadSkinL();
- break;
- case EAknCmdHelp:
- case EPslnCmdAppHelp:
- {
- HlpLauncher::LaunchHelpApplicationL(
- iEikonEnv->WsSession(), AppHelpContextL());
- }
- break;
- case EAknSoftkeyBack:
- // If General view is active and Back key is
- // pressed and there is skin activation ongoing
- // set internal state off.
- if ( iView && GetStatus( EPslnSkinChangeRequested ) &&
- ( iView->Id().iUid == KPslnGeneralView.iUid ) )
- {
- SetStateOff( EPslnSkinChangeRequested );
- }
- ActivateLocalViewL( KPslnMainView2 );
- break;
- default:
- CAknViewAppUi::HandleCommandL( aCommand );
- break;
- }
- }
-
-// ---------------------------------------------------------------------------
-// CPslnUi::HandleResourceChangeL
-// ---------------------------------------------------------------------------
-//
-void CPslnUi::HandleResourceChangeL( TInt aType )
- {
- PSLN_TRACE_DEBUG("CPslnUi::HandleResourceChangeL");
- if ( iView && !GetStatus( EPslnSkinChangeRequested ) &&
- iView->Id().iUid == KPslnGeneralView.iUid &&
- aType == KAknsMessageSkinChange )
- {
- iGeneralThemeView->UpdateSkinListItemsDColumnOnlyL();
- }
- CAknViewAppUi::HandleResourceChangeL( aType );
- }
-
-// ---------------------------------------------------------------------------
-// CPslnUi::ActivateLocalViewL
-// ---------------------------------------------------------------------------
-//
-void CPslnUi::ActivateLocalViewL( TUid aViewId )
- {
- if ( GetStatus( EPslnListUpdateNeeded ) &&
- ( aViewId.iUid == KPslnGeneralView.iUid ) )
- {
- PSLN_TRACE_DEBUG("CPslnUi::ActivateLocalViewL update list");
- SetStateOff( EPslnListUpdateNeeded );
- DoCreateWaitNoteL();
- }
- CAknViewAppUi::ActivateLocalViewL( aViewId );
- }
-
-// ---------------------------------------------------------------------------
-// CPslnUi::SkinContentChanged
-// ---------------------------------------------------------------------------
-//
-void CPslnUi::SkinContentChanged()
- {
- PSLN_TRACE_DEBUG("CPslnUi::SkinContentChanged");
- if ( !iView || iView->Id().iUid != KPslnGeneralView.iUid )
- {
- SetStateOn( EPslnListUpdateNeeded );
- }
- }
-
-// ---------------------------------------------------------------------------
-// CPslnUi::SkinConfigurationChanged
-// ---------------------------------------------------------------------------
-//
-void CPslnUi::SkinConfigurationChanged(
- const TAknsSkinStatusConfigurationChangeReason aReason )
- {
- PSLN_TRACE_DEBUG("CPslnUi::SkinConfigurationChanged");
- TRAPD( err, SkinConfigurationChangedL( aReason ) );
- if ( err != KErrNone )
- {
- TRAP_IGNORE( iGeneralThemeView->UpdateSkinListItemsL() );
- TRAP_IGNORE( ToggleScreenBlankerL( EFalse, EFalse ) );
- }
- }
-
-// ---------------------------------------------------------------------------
-// CPslnUi::SkinPackageChanged
-// ---------------------------------------------------------------------------
-//
-void CPslnUi::SkinPackageChanged(
- const TAknsSkinStatusPackageChangeReason aReason )
- {
- PSLN_TRACE_DEBUG("CPslnUi::SkinPackageChanged");
- if ( aReason == EAknsSkinStatusPackageListUpdate )
- {
- if ( !iView || iView->Id().iUid != KPslnGeneralView.iUid )
- {
- SetStateOn( EPslnListUpdateNeeded );
- }
- else
- {
- PSLN_TRACE_DEBUG("CPslnUi::SkinPackageChanged update list");
- //To Fix Defect:ESNN-7CXCT2:Themes: Layout is incorrect
- //when removing memory card which the active theme is installed in.
- //DoCreateWaitNoteL take too much time and stop the skin refresh.
- //Need to wait for the Skin Server finish its work,so we use CIdle.
- //Also we need User::After to delay some time to make sure
- //iIdleUpdateSkin start late enough.
- User::After(KPslnUpdateSkinDelay);
- if (!iIdleUpdateSkin->IsActive())
- {
- iIdleUpdateSkin->Start(TCallBack( DoCreateWaitNoteL, this ));
- }
- SetStateOff( EPslnListUpdateNeeded );
- }
- }
- }
-
-// ---------------------------------------------------------------------------
-// Return model pointer.
-// ---------------------------------------------------------------------------
-//
-CPslnModel* CPslnUi::Model() const
- {
- return iModel;
- }
-
-// ---------------------------------------------------------------------------
-// Updates tab group to current tab index
-// The parameters are optional.
-// ---------------------------------------------------------------------------
-//
-#ifdef RD_CONTROL_PANEL
-void CPslnUi::UpdateTabIndex( const TInt aMyId, const TInt /*aMyTabIndex*/ )
-#else
-void CPslnUi::UpdateTabIndex( const TInt /*aMyId*/, const TInt aMyTabIndex )
-#endif // RD_CONTROL_PANEL
- {
-#ifdef RD_CONTROL_PANEL
- if ( aMyId != KErrNotFound )
- {
- if ( iMainView )
- {
- iMainView->SetActiveFolder( TUid::Uid( aMyId ) );
- }
- }
-#else
- if ( aMyTabIndex != KErrNotFound )
- {
- if ( iTabGroup )
- {
- iTabGroup->SetActiveTabById( aMyTabIndex );
- }
- }
- if ( ( iView == iMainView ) && iTabGroup && iMainView )
- {
- iTabGroup->SetActiveTabByIndex( iMainView->ActiveView() );
- }
-#endif //RD_CONTROL_PANEL
- }
-
-// ---------------------------------------------------------------------------
-// Creates given view.
-// ---------------------------------------------------------------------------
-//
-void CPslnUi::CreateViewL( TUid aViewUid )
- {
- PSLN_TRACE_DEBUG1("CPslnUi::CreateViewL, Start:%d", User::NTickCount() );
- TBitFlags views = ViewSupport();
-
-if ( aViewUid == KPslnWallpaperView &&
- !GetStatus( EPslnWallpaperViewCreated ) )
- {
-
- if ( views.IsSet( EPslnWallpaperView ) )
- {
- CAknView* view = CPslnWallpaperView::NewLC();
- AddViewL( view ); // transfer ownership to CAknViewAppUi
- CleanupStack::Pop( view );
-
- SetStateOn( EPslnWallpaperViewCreated );
-
- PSLN_TRACE_DEBUG("CPslnUi::CreateViewL - Wallpaper");
- PSLN_TRACE_DEBUG1("CPslnUi::CreateViewL, End:%d", User::NTickCount() );
- }
- }
- // Screensaver view.
- else if ( aViewUid == KPslnScreenSaverView &&
- !GetStatus( EPslnScreenSaverViewCreated ) )
- {
- if ( views.IsSet( EPslnScreensaverView ) )
- {
- CAknView* view = CPslnScreenSaverView::NewLC();
- AddViewL( view ); // transfer ownership to CAknViewAppUi
- CleanupStack::Pop( view );
-
- SetStateOn( EPslnScreenSaverViewCreated );
-
- PSLN_TRACE_DEBUG("CPslnUi::CreateViewL - ScreenSaver");
- PSLN_TRACE_DEBUG1("CPslnUi::CreateViewL, End:%d", User::NTickCount() );
- }
- }
- // General view.
- else if ( aViewUid.iUid == KPslnGeneralView.iUid &&
- !GetStatus( EPslnGeneralViewCreated ) )
- {
- CAknView* view = CPslnGeneralThemeView::NewLC();
- AddViewL( view ); // transfer ownership to CAknViewAppUi
- iGeneralThemeView = static_cast< CPslnGeneralThemeView* >( view );
- CleanupStack::Pop( view );
-
- SetStateOn( EPslnGeneralViewCreated );
-
- PSLN_TRACE_DEBUG("CPslnUi::CreateViewL - General");
- PSLN_TRACE_DEBUG1("CPslnUi::CreateViewL, End:%d", User::NTickCount() );
- }
- }
-
-// ---------------------------------------------------------------------------
-// Return navi control container pointer.
-// ---------------------------------------------------------------------------
-//
-CAknNavigationControlContainer* CPslnUi::NaviContainer() const
- {
- return iNaviPane;
- }
-
-// ---------------------------------------------------------------------------
-// Return tab group pointer.
-// ---------------------------------------------------------------------------
-//
-CAknNavigationDecorator* CPslnUi::PslnTabGroup()
- {
- if ( !GetStatus( EPslnTabGroupCreated ) )
- {
- TRAP_IGNORE( ConstructTabGroupL() );
- }
- return iDecoratedTabGroup;
- }
-
-// ---------------------------------------------------------------------------
-// Return plugin handler pointer.
-// ---------------------------------------------------------------------------
-//
-CPslnPluginHandler* CPslnUi::PluginHandler() const
- {
- return iPluginHandler;
- }
-
-// ---------------------------------------------------------------------------
-// Adds new view to UI class, if the UI class is not already completed.
-// ---------------------------------------------------------------------------
-//
-void CPslnUi::AddNewViewL( CAknView* aNewView )
- {
- if ( GetStatus( EPslnCreated ) )
- {
- if ( aNewView && !View( aNewView->Id() ) )
- {
- AddViewL( aNewView );
- }
- }
- }
-
-// ---------------------------------------------------------------------------
-// When this method is called, UI class considers itself to be complete.
-// ---------------------------------------------------------------------------
-//
-void CPslnUi::AllViewsDone()
- {
- SetStateOff( EPslnCreated );
- }
-
-// ---------------------------------------------------------------------------
-// Handles errors that occur when handling images.
-// ---------------------------------------------------------------------------
-//
-void CPslnUi::HandleImageErrorsL( TInt aError )
- {
- PSLN_TRACE_DEBUG1("CPslnUi::HandleImageError %d", aError );
- if ( aError == KErrNoMemory || aError == KErrTooBig )
- {
- // Show information note
- HBufC* prompt = iCoeEnv->AllocReadResourceLC( R_PSLN_IMAGE_TOO_LARGE );
- CAknInformationNote* note = new (ELeave) CAknInformationNote( ETrue );
- note->ExecuteLD( *prompt );
- CleanupStack::PopAndDestroy( prompt );
- }
- else if ( aError == KErrCancel || aError == KErrCouldNotConnect )
- {
- // Other error codes are ignored; as not real errors (i.e. KErrCancel),
- // or such errors that Psln cannot react to them (KErrCouldNotConnect)
- }
- else
- {
- // Show information note
- HBufC* prompt = iCoeEnv->AllocReadResourceLC( R_PSLN_IMAGE_CORRUPTED );
- CAknInformationNote* note = new (ELeave) CAknInformationNote( ETrue );
- note->ExecuteLD( *prompt );
- CleanupStack::PopAndDestroy( prompt );
- }
- }
-
-// ---------------------------------------------------------------------------
-// Indicate that tab group has been changed.
-// ---------------------------------------------------------------------------
-//
-#ifndef RD_CONTROL_PANEL
-void CPslnUi::TabChangedL( TInt aIndex )
- {
- PSLN_TRACE_DEBUG("CPslnUi::TabChangedL 1" );
- // If it is one of the dynamically created views, check if the view is
- // already created. If view is not created, create it.
- if ( aIndex == KPslnGeneralView.iUid )
- {
- if ( !GetStatus( EPslnGeneralViewCreated ) )
- {
- CreateViewL( KPslnGeneralView );
- }
- }
- else if ( aIndex == KPslnWallpaperView.iUid )
- {
- if ( !GetStatus( EPslnWallpaperViewCreated ) )
- {
- CreateViewL( KPslnWallpaperView );
- }
- }
- else if ( aIndex == KPslnScreenSaverView.iUid )
- {
- if ( !GetStatus( EPslnScreenSaverViewCreated ) )
- {
- CreateViewL( KPslnScreenSaverView );
- }
- }
- if ( iMainView )
- {
- iMainView->SetActiveFolder( aIndex );
- ActivateLocalViewL( TUid::Uid( iMainView->ActiveFolderUid() ) );
- }
- }
-#endif //RD_CONTROL_PANEL
-
-// ---------------------------------------------------------------------------
-// Loads views when application is idle.
-// ---------------------------------------------------------------------------
-//
-void CPslnUi::LoadViewsWhenIdleL()
- {
- if ( !iIdleTask )
- {
- iIdleTask = CPslnIdleTaskCreateViews::NewL( this );
- }
- }
-
-// ---------------------------------------------------------------------------
-// Constructs the Tab group.
-// ---------------------------------------------------------------------------
-void CPslnUi::ConstructTabGroupL()
- {
-#ifdef RD_CONTROL_PANEL
- return;
-#else
- if ( GetStatus( EPslnTabGroupCreated ) )
- {
- // Tabgroup has already been created.
- return;
- }
- // Tabgroup has been read from resource and it were pushed to the navi pane.
- // Get pointer to the navigation decorator
- // and set this to be a MAknTabObserver.
- if ( iNaviPane )
- {
- iDecoratedTabGroup = iNaviPane->ResourceDecorator();
- }
- if ( iDecoratedTabGroup )
- {
- PSLN_TRACE_DEBUG("CPslnUi::ConstructTabGroupL DecoTabGrp");
- iTabGroup = static_cast <CAknTabGroup*>
- ( iDecoratedTabGroup->DecoratedControl() );
- iTabGroup->SetObserver( this );
- }
- TInt tabCount = 1; // index 0 = general view
- TBitFlags views = ViewSupport();
-
- // Update Tab group to contain default plugins.
- if ( iPluginHandler )
- {
- CPslnFWPluginInterface* plugin =
- iPluginHandler->GetPlugin( KPslnASPluginUid );
- if ( plugin )
- {
- AddPluginToTab( *plugin );
- static_cast <CPslnFWBaseView*>
- (plugin)->SetNaviPaneDecorator( iDecoratedTabGroup );
- tabCount++; // index 1 = AS plugin
- }
- plugin = iPluginHandler->GetPlugin( KPslnAIPluginUid );
- if ( plugin )
- {
- AddPluginToTab( *plugin );
- static_cast <CPslnFWBaseView*>
- (plugin)->SetNaviPaneDecorator( iDecoratedTabGroup );
- tabCount++; // index 2 = AI plugin
- }
- }
-
- // Add tabs for screen saver and wallpaper.
- if ( iTabGroup )
- {
- if ( views.IsSet( EPslnWallpaperView ) )
- {
- TResourceReader reader;
- iCoeEnv->CreateResourceReaderLC( reader, R_PSLN_WALLPAPER_TAB );
- iTabGroup->AddTabL( reader );
- CleanupStack::PopAndDestroy(); // reader - AppUi now owns this tab,
- tabCount++; // index 3 = Wallpaper view
- }
-
- if ( views.IsSet( EPslnScreensaverView ) )
- {
- TResourceReader reader2;
- iCoeEnv->CreateResourceReaderLC( reader2, R_PSLN_SCREENSAVER_TAB );
- iTabGroup->AddTabL( reader2 );
- CleanupStack::PopAndDestroy(); // reader2 - AppUi now owns this tab,
- tabCount++; // index 4 = Screensaver view
- }
- PSLN_TRACE_DEBUG("CPslnUi::ConstructTabGroupL Default Tabs added to TabGrp");
- }
-
- // Add rest of the plugins to tabs.
- if ( iPluginHandler )
- {
- // Fetch the plugin array.
- CArrayPtrFlat<CPslnFWPluginInterface>* pluginArray =
- iPluginHandler->GetPluginArray();
- CleanupStack::PushL( pluginArray );
- TInt pluginCount = pluginArray->Count();
- PSLN_TRACE_DEBUG1("CPslnUi::ConstructTabGroupL Plugin count=%d", pluginCount );
-
- // Go through all the plugins and add plugins to tab group.
- for ( TInt i = 0; i < pluginCount; i++ )
- {
- CPslnFWPluginInterface* plugin = pluginArray->operator[]( i );
-
- if ( !plugin )
- {
- PSLN_TRACE_DEBUG("CPslnUi::ConstructTabGroupL Plugin fails");
- }
- // Default plugins can be skipped.
- else if ( plugin->Id().iUid == KPslnASPluginUid.iUid ||
- plugin->Id().iUid == KPslnAIPluginUid.iUid )
- {
- PSLN_TRACE_DEBUG("CPslnUi::ConstructTabGroupL Plugin skipped");
- }
- else
- {
- PSLN_TRACE_DEBUG1("CPslnUi::ConstructTabGroupL Plugin Id=%d", plugin->Id().iUid );
- AddPluginToTab( *plugin );
- static_cast <CPslnFWBaseView*>
- (plugin)->SetNaviPaneDecorator( iDecoratedTabGroup );
- // Inform to the plugin which tab index it is using.
- static_cast <CPslnFWBaseView*>
- (plugin)->SetTabIndex( tabCount++ );
- PSLN_TRACE_DEBUG("CPslnUi::ConstructTabGroupL Plugin added to tab");
- }
- }
- CleanupStack::Pop( pluginArray ); // plugin handler owns plugin array
- }
- // Push empty navi pane, so that tab group is not shown with default item (first),
- // if other than main view is activated externally.
- iNaviPane->PushDefaultL();
- SetStateOn( EPslnTabGroupCreated );
-#endif //RD_CONTROL_PANEL
- }
-
-// ---------------------------------------------------------------------------
-// Activates screen blanker. Note that second parameter is only used when
-// enabling blanker (i.e. first parameter is ETrue ).
-// ---------------------------------------------------------------------------
-void CPslnUi::ToggleScreenBlankerL(
- const TBool& aToggleValue, const TBool& /*aStatusPaneVisible*/, const TBool& aRealAct )
- {
- TInt transitionEffectsValue = iModel->GetTransitionEffectStateL();
- if ( aToggleValue )
- {
- // Effects are enabled if value is NOT KMaxTInt.
- if( transitionEffectsValue != KMaxTInt )
- {
- if ( aRealAct )
- {
- iModel->TransEffect(EPslnTransitionEffectStartThemeActivation);
- }
- else
- {
- iModel->TransEffect(EPslnTransitionEffectStartPreview);
- }
- }
-// else if ( iView && iView->MenuBar()->IsDisplayed() )
-// {
-// iView->MenuBar()->StopDisplayingMenuBar();
-// }
- }
- else
- {
- // Effects are enabled if value is NOT KMaxTInt.
- if( transitionEffectsValue != KMaxTInt )
- {
- iModel->TransEffect(EPslnTransitionEffectStop);
- }
-// else if ( iView && iView->MenuBar()->IsDisplayed() )
-// {
-// iView->MenuBar()->MenuPane()->DrawNow();
-// }
- }
- }
-
-
-// ---------------------------------------------------------------------------
-// Is this class able to handle a new skin activation related command.
-// ---------------------------------------------------------------------------
-TBool CPslnUi::IsReadyToHandleCommands()
- {
- return !GetStatus( EPslnSkinChangeRequested );
- }
-
-// ---------------------------------------------------------------------------
-// Ensure that Exit() is called when trying to exit and leave occurs.
-// ---------------------------------------------------------------------------
-void CPslnUi::HandleCmdExitLeave()
- {
- Exit();
- }
-
-// ---------------------------------------------------------------------------
-// Sets title pane back to default text.
-// ---------------------------------------------------------------------------
-void CPslnUi::SetTitleToDefaultL()
- {
- // Set default title back. But do not change title when application is about
- // to die.
- if ( iCoeEnv && Model() )
- {
- TResourceReader rReader;
- iCoeEnv->CreateResourceReaderLC( rReader, R_PSLN_SKIN_LIST_VIEW_TITLE );
- if ( iAvkonAppUi )
- {
- CEikStatusPane* sp = iAvkonAppUi->StatusPane();
- if ( sp )
- {
- CAknTitlePane* title = static_cast<CAknTitlePane*>(
- sp->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );
-
- if ( title )
- {
- title->SetFromResourceL( rReader );
- }
- }
- }
- CleanupStack::PopAndDestroy(); // rReader
- }
- }
-
-// ---------------------------------------------------------------------------
-// Checks if a view has been created.
-// ---------------------------------------------------------------------------
-TBitFlags CPslnUi::ViewSupport()
- {
- // Initially all views are 'on'.
- TBitFlags viewFlags;
- viewFlags.SetAll();
- if ( GetStatus( EPslnViewSupportChecked ) )
- {
- if ( GetStatus( EPslnNoScreenSaverView ) )
- {
- viewFlags.Clear( EPslnScreensaverView );
- }
- if ( GetStatus( EPslnNoWallpaperView ) )
- {
- viewFlags.Clear( EPslnWallpaperView );
- }
- }
- else
- {
- TBool noWallpaperView = PslnFeatures::IsSupported( KPslnRemoveWallpaper );
- TBool noScreenSaverView = PslnFeatures::IsSupported( KPslnRemoveScreensaver );
- if ( noWallpaperView )
- {
- SetStateOn( EPslnNoWallpaperView );
- viewFlags.Clear( EPslnWallpaperView );
- }
- if ( noScreenSaverView )
- {
- SetStateOn( EPslnNoScreenSaverView );
- viewFlags.Clear( EPslnScreensaverView );
- }
- SetStateOn( EPslnViewSupportChecked );
- }
- return viewFlags;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-void CPslnUi::SetDRMProtectedSkinInSkinList(
- const TBool& aProtectedSkinInList )
- {
- if ( aProtectedSkinInList )
- {
- SetStateOn( EPslnProtectedSkinInList );
- }
- else
- {
- SetStateOff( EPslnProtectedSkinInList );
- }
- }
-
-
-// -----------------------------------------------------------------------------
-// Callback - USB status change.
-// -----------------------------------------------------------------------------
-//
-TInt CPslnUi::USBCallBackL(TAny* aPtr)
- {
- CPslnUi* self = static_cast<CPslnUi*>(aPtr);
- if ( self )
- {
- self->HandleUSBCallBackL();
- }
- return KErrNone;
- }
-
-
- /**
- * USB Attach State.
- * @return ETrue when USB already attached, otherwise EFalse,
- */
-// ---------------------------------------------------------------------------
-// USB Attach State.
-// ---------------------------------------------------------------------------
-TBool CPslnUi::USBAttachState()
- {
- return iUSBAttached;
- }
-
-// ---------------------------------------------------------------------------
-// Called when a key is pressed and no other class has catched the event.
-// Handles only key events that are meant to control the tab group.
-// ---------------------------------------------------------------------------
-#ifdef RD_CONTROL_PANEL
-TKeyResponse CPslnUi::HandleKeyEventL(
- const TKeyEvent& /*aKeyEvent*/, TEventCode /*aType*/ )
-#else
-TKeyResponse CPslnUi::HandleKeyEventL(
- const TKeyEvent& aKeyEvent, TEventCode aType )
-#endif // RD_CONTROL_PANEL
- {
- PSLN_TRACE_DEBUG("CPslnUi::HandleKeyEventL");
-
-#ifndef RD_CONTROL_PANEL
- // If tab group is not yet created, create it.
- if ( !GetStatus( EPslnTabGroupCreated ) )
- {
- ConstructTabGroupL();
- }
- iTabGroup = static_cast<CAknTabGroup*>
- ( iDecoratedTabGroup->DecoratedControl() );
-
- // Only forward key events to tabgroup when:
- // 1) TabGroup has been created (and is not NULL)
- // 2) Active view is not MainView (there is no tab group in Main)
- // 3) key event is either left key or right key
- if ( iTabGroup && iView && iView->Id().iUid != KPslnMainView2.iUid &&
- ( aKeyEvent.iScanCode == EStdKeyLeftArrow ||
- aKeyEvent.iScanCode == EStdKeyRightArrow ) )
- {
- PSLN_TRACE_DEBUG("CPslnUi::HandleKeyEventL forward event to Tab");
- // If preview is about to activate, cancel it.
- if ( GetStatus( EPslnSkinChangeRequested ) &&
- iView->Id().iUid == KPslnGeneralView.iUid )
- {
- SetStateOff( EPslnSkinChangeRequested );
- }
-
- return iTabGroup->OfferKeyEventL( aKeyEvent, aType );
- }
-#endif // !RD_CONTROL_PANEL
- return EKeyWasNotConsumed;
- }
-
-// ---------------------------------------------------------------------------
-// CPslnUi::SkinConfigurationChangedL
-// ---------------------------------------------------------------------------
-//
-void CPslnUi::SkinConfigurationChangedL(
- const TAknsSkinStatusConfigurationChangeReason aReason )
- {
- PSLN_TRACE_DEBUG1("CPslnUi::SkinConfigurationChangedL internal state before: %d", iPslnUiStatus );
- HBufC* errorBuf = NULL;
-
- switch( aReason )
- {
- // Skin activation failed due to OOM.
- // Set skin activation user activity off, so that subsequent attempts can be made.
- // Also, set error note text.
- // Finally, set skin activation attempt off and update skin list.
- case EAknsSkinStatusConfigurationFailedOOM:
- SetStateOff( EPslnSkinChangeRequested );
- errorBuf = StringLoader::LoadLC( R_PSLN_QTN_MEMLO_RAM_OUT_OF_MEM );
- if ( GetStatus( EPslnSkinActivated ) )
- {
- SetStateOff( EPslnSkinActivated );
- DoCreateWaitNoteL();
- }
- break;
- // Skin activation failed due to skin being corrupted.
- // Set skin activation user activity off, so that subsequent attempts can be made.
- // Also, set error note text.
- // Then set skin activation attempt off and update skin list.
- // Finally, activate default skin.
- case EAknsSkinStatusConfigurationFailedCorrupt:
- SetStateOff( EPslnSkinChangeRequested );
- iGeneralThemeView->HightlightDefaultSkin();
- errorBuf = StringLoader::LoadLC( R_PSLN_QTN_SKINS_ERROR_CORRUPTED );
- if ( GetStatus( EPslnSkinActivated ) )
- {
- SetStateOff( EPslnSkinActivated );
- DoCreateWaitNoteL();
- }
- SetStateOn( EPslnListUpdateNeeded );
- break;
- // Skin activation was success.
- // Set skin activation user activity off.
- // Show confirmation note about the skin change and set activation
- // request state off. Finally, check if there are sounds in the skin.
- case EAknsSkinStatusConfigurationDeployed:
- SetStateOff( EPslnSkinChangeRequested );
- if ( GetStatus( EPslnSkinActivated ) )
- {
- SetStateOff( EPslnSkinActivated );
- SkinDeployedL();
- }
- else // Theme changed by other app, update view.
- {
- iModel->PerformCompleteUpdateL();
- iGeneralThemeView->UpdateSkinListItemsL( iModel->ActiveSkinIndex() +
- PslnFeatures::IsEnhancedEmbeddedLinksSupported() );
- iGeneralThemeView->RemoveLocalSkinItems();
- }
-
- if ( GetStatus( EPslnSoundActivationPending ) )
- {
- SetStateOff( EPslnSoundActivationPending );
- ActivateSoundsL();
- }
- ToggleScreenBlankerL( EFalse, EFalse );
- break;
- default:
- break;
- }
-
- if( errorBuf )
- {
- ShowErrorNoteL( *errorBuf );
- CleanupStack::PopAndDestroy( errorBuf );
- }
- PSLN_TRACE_DEBUG1("CPslnUi::SkinConfigurationChangedL internal state after: %d", iPslnUiStatus );
- }
-
-// ---------------------------------------------------------------------------
-// Activate a Skin.
-// ---------------------------------------------------------------------------
-//
-void CPslnUi::ActivateSkinL()
- {
- PSLN_TRACE_DEBUG("CPslnUi::ActivateSkinL");
- TInt skinIndex = iModel->CurrentSelectedSkinIndex();
-
- CPslnSkinEntry* entry = iModel->VisibleSkin( skinIndex );
- if( !entry )
- {
- SetStateOff( EPslnSkinChangeRequested );
- return;
- }
-
- TBool showWaitNote = EFalse;
- TInt drmError = KErrNone;
- HBufC* errorBuf = NULL;
-
- PSLN_TRACE_DEBUG1("CPslnUi::ActivateSkinL entry->Protection: %d", entry->Protection() );
- switch ( entry->Protection() )
- {
- case EAknsSrvNoRights:
- drmError = CDRMRights::ENoRights;
- showWaitNote = ETrue;
- break;
- case EAknsSrvFutureRights:
- drmError = CDRMRights::ERightsExpired;
- break;
- case EAknsSrvExpiredRights:
- drmError = CDRMRights::ERightsExpired;
- showWaitNote = ETrue;
- break;
- default :
- break;
- }
-
- // DRMHelper handles the error.
- if ( drmError )
- {
- RAknsSrvSession skinsrv;
- User::LeaveIfError( skinsrv.Connect() );
- CleanupClosePushL( skinsrv );
-
- TInt fileserverhandle;
- TInt filehandle;
- fileserverhandle = skinsrv.OpenBitmapFile( entry->FullName(), filehandle );
- RFile file;
- User::LeaveIfError( file.AdoptFromServer( fileserverhandle, filehandle ) );
- CleanupClosePushL( file );
-
- TInt returnCode = KErrNone;
- PSLN_TRACE_DEBUG("CPslnUi::ActivateSkinL use DRMHelper to show the error note");
- CDRMHelper* drmhelper = CDRMHelper::NewLC( *CCoeEnv::Static() );
- returnCode = drmhelper->HandleErrorL(
- drmError,
- file );
-
- PSLN_TRACE_DEBUG1("CPslnUi::ActivateSkinL DRMHelper returns: %d", returnCode );
- if ( returnCode && showWaitNote )
- {
- if ( GetStatus( EPslnListUpdateNeeded ) )
- {
- SetStateOff( EPslnListUpdateNeeded );
- DoCreateWaitNoteL();
- }
- }
- SetStateOff( EPslnSkinChangeRequested );
- CleanupStack::PopAndDestroy( 3 ); // drmHelper, skinsrv, file
- }
- else
- {
- if ( entry->Protection() == EAknsSrvCountBased )
- {
- errorBuf = StringLoader::LoadLC( R_PSLN_QTN_DRM_PREV_RIGHTS_SET );
- }
- // Check for corruption.
- if ( entry->IsCorrupted() )
- {
- PSLN_TRACE_DEBUG("CPslnUi::ActivateSkinL corrupt skin!");
- errorBuf = StringLoader::LoadLC( R_PSLN_QTN_SKINS_ERROR_CORRUPTED );
- }
-
- // Non-DRMHelper error handling.
- if ( errorBuf )
- {
- SetStateOff( EPslnSkinChangeRequested );
- ShowErrorNoteL( *errorBuf );
- CleanupStack::PopAndDestroy( errorBuf );
- }
- // No errors, activate the skin.
- else
- {
- PSLN_TRACE_DEBUG("CPslnUi::ActivateSkinL 2");
- // Start changing active skin.
- iModel->GuardActivationLC();
- TBool shownote = EFalse;
-
- // Show screen clearer when skin is changing.
- ToggleScreenBlankerL( ETrue, ETrue );
-
- PSLN_TRACE_DEBUG("CPslnUi::ActivateSkinL directly");
- shownote = iModel->ActivateSkinL( skinIndex );
-
- if ( shownote )
- {
- PSLN_TRACE_DEBUG("CPslnUi::ActivateSkinL skin activated");
- SetStateOn( EPslnSkinActivated );
- }
- else
- {
- // If user declined to activate protected skin, re-initialize status
- // flag.
- if ( GetStatus( EPslnSkinChangeRequested ) )
- {
- PSLN_TRACE_DEBUG("CPslnUi::ActivateSkinL decline DRM activation");
- SetStateOff( EPslnSkinChangeRequested );
- // Remove screen clearer.
- ToggleScreenBlankerL( EFalse, EFalse );
- }
- }
- CleanupStack::PopAndDestroy(); // activation guard
- }
- }
- }
-
-// ---------------------------------------------------------------------------
-// CPslnUi::ActivateSoundsL
-// ---------------------------------------------------------------------------
-//
-void CPslnUi::ActivateSoundsL()
- {
- PSLN_TRACE_DEBUG("CPslnUi::ActivateSoundsL");
-
- // Is sounds are not supperted, ignore.
- if ( !PslnFeatures::IsSoundsInSkinsSupported()
-
- // If sounds are supported, but general view is not active, ignore.
- || iView && iView->Id().iUid != KPslnGeneralView.iUid )
- {
- return;
- }
-
- TPath skinPath;
- CPslnSkinEntry* entry = iModel->VisibleSkin( iModel->ActiveSkinIndex() );
- if( entry )
- {
- entry->GetSkinPath( skinPath );
- skinPath.Append( KPslnPathSeparator );
- }
- else
- {
- User::Leave( KErrUnknown );
- }
-
- // Find sound files.
- CPslnSoundActivator* activator = CPslnSoundActivator::NewLC();
- TInt numberOfSounds = 0;
- activator->CollectSoundsL( skinPath, numberOfSounds );
-
- PSLN_TRACE_DEBUG1("CPslnUi::ActivateSoundsL num of tunes %d", numberOfSounds );
-
- if ( numberOfSounds <= 0 )
- {
- CleanupStack::PopAndDestroy( activator );
- return;
- }
-
- // Launch profile settings loader.
- CPslnTaskActivateSounds* activateTask = new (ELeave)
- CPslnTaskActivateSounds( *activator );
- CleanupStack::PushL( activateTask );
-
- CreateAndShowWaitWrapperL(
- *activateTask,
- R_PSLN_QTN_GEN_NOTE_OPENING,
- KNullDesC() );
-
- HBufC* noteText = NULL;
-
- PSLN_TRACE_DEBUG1("CPslnUi::ActivateSoundsL error %d", activateTask->iActivationErr );
-
- if( activateTask->iActivationErr == KErrNone )
- {
- if ( numberOfSounds == 1 )
- {
- noteText = StringLoader::LoadLC(
- R_PSLN_QTN_SKINS_NOTE_TONE_ACTIVATED );
- }
- else
- {
- noteText = StringLoader::LoadLC(
- R_PSLN_QTN_SKINS_NOTE_TONES_ACTIVATED );
- }
-
- CAknConfirmationNote* note =
- new (ELeave) CAknConfirmationNote( ETrue );
- note->ExecuteLD( *noteText );
- }
- else
- {
- if( activateTask->iActivationErr == KErrPermissionDenied )
- {
- noteText = StringLoader::LoadLC(
- R_PSLN_QTN_PROFILES_INFO_TONE_NO_DRM );
- }
- else
- {
- noteText = StringLoader::LoadLC(
- R_PSLN_QTN_FILE_FORMAT_ERROR );
- }
- CAknErrorNote* note =
- new (ELeave) CAknErrorNote( ETrue );
- note->ExecuteLD( *noteText );
- }
-
- CleanupStack::PopAndDestroy( 3, activator );
- }
-
-// ---------------------------------------------------------------------------
-// CPslnUi::DownloadSkinL
-// ---------------------------------------------------------------------------
-//
-void CPslnUi::DownloadSkinL()
- {
- PSLN_TRACE_DEBUG("CPslnUi::DownloadSkinL");
- iModel->DownloadSkinL();
- }
-
-// ---------------------------------------------------------------------------
-// CPslnUi::CreateAndShowWaitWrapperL
-// ---------------------------------------------------------------------------
-//
-void CPslnUi::CreateAndShowWaitWrapperL( MAknBackgroundProcess& aTask,
- const TInt aResourceID, const TDesC& aString,
- const TBool aShowImmediately )
- {
- HBufC* noteText = NULL;
- if ( aString.Length() == 0 )
- {
- noteText = StringLoader::LoadLC( aResourceID, iEikonEnv );
- }
- else
- {
- noteText = StringLoader::LoadLC( aResourceID, aString, iEikonEnv );
- }
-
- CAknWaitNoteWrapper* wrapper = CAknWaitNoteWrapper::NewL();
- CleanupDeletePushL( wrapper );
- if ( wrapper )
- {
- wrapper->ExecuteL(
- R_PSLN_GENERAL_WAIT_NOTE, aTask, *noteText, aShowImmediately );
- }
-
- CleanupStack::PopAndDestroy( 2, noteText ); // noteText, wrapper
- }
-
-// ---------------------------------------------------------------------------
-// CPslnUi::AddPluginToTabL
-// ---------------------------------------------------------------------------
-//
-#ifndef RD_CONTROL_PANEL
-void CPslnUi::AddPluginToTabL( CPslnFWPluginInterface& aPlugin )
- {
- PSLN_TRACE_DEBUG("CPslnUi::AddPluginToTabL Start");
- HBufC* buf = HBufC::NewLC( KPslnItemLength );
- TPtr ptrBuf = buf->Des();
- aPlugin.GetTabTextL( ptrBuf );
- TInt pluginUid = aPlugin.Id().iUid;
- if ( iTabGroup )
- {
- iTabGroup->AddTabL( pluginUid, ptrBuf );
- }
- PSLN_TRACE_DEBUG("CPslnUi::AddPluginToTabL Default Plugin added to tab");
- CleanupStack::PopAndDestroy( buf );
- }
-#endif //!RD_CONTROL_PANEL
-
-// ---------------------------------------------------------------------------
-// Handles Exit command.
-// ---------------------------------------------------------------------------
-//
-void CPslnUi::HandleCmdExitL()
- {
- Exit();
- }
-
-// ---------------------------------------------------------------------------
-// Shows error note.
-// ---------------------------------------------------------------------------
-//
-void CPslnUi::ShowErrorNoteL( HBufC& aErrorBuf ) const
- {
- // Display global note.
- CAknGlobalNote* errorNote = CAknGlobalNote::NewLC();
- errorNote->ShowNoteL( EAknGlobalErrorNote, aErrorBuf );
- CleanupStack::PopAndDestroy( errorNote );
- }
-// ---------------------------------------------------------------------------
-// Callback when idle time occurs for skin update.
-// ---------------------------------------------------------------------------
-//
-TInt CPslnUi::DoCreateWaitNoteL( TAny* aAny )
- {
- static_cast< CPslnUi* >( aAny )->DoCreateWaitNoteL();
- return EFalse;
- }
-// ---------------------------------------------------------------------------
-// CPslnUi::DoCreateWaitNoteL
-// ---------------------------------------------------------------------------
-//
-void CPslnUi::DoCreateWaitNoteL()
- {
- CPslnTaskGenericUpdate* updateTask =
- new (ELeave) CPslnTaskGenericUpdate(
- *this, &CPslnModel::PerformCompleteUpdateL, ETrue );
- CleanupStack::PushL( updateTask );
-
- CreateAndShowWaitWrapperL( *updateTask,
- R_PSLN_QTN_GEN_NOTE_OPENING, KNullDesC(), EFalse );
-
- User::LeaveIfError( updateTask->iCallErr );
-
- CleanupStack::PopAndDestroy( updateTask );
- }
-
-// ---------------------------------------------------------------------------
-// This operation needs to be atomic. If it leaves, set state back to previous.
-// ---------------------------------------------------------------------------
-//
-TInt CPslnUi::ActivateSkin( const TInt aPslnStatus )
- {
- TInt error = KErrNone;
- if ( !GetStatus( aPslnStatus ) )
- {
- SetStateOn( aPslnStatus );
- TRAPD( err, ActivateSkinL() );
- if ( err != KErrNone )
- {
- SetStateOff( aPslnStatus );
- error = err;
- }
- }
- iGeneralThemeView->RemoveLocalSkinItems();
- return error;
- }
-
-// ---------------------------------------------------------------------------
-// Non-leaving version of AddPluginToTabL.
-// ---------------------------------------------------------------------------
-//
-#ifndef RD_CONTROL_PANEL
-TInt CPslnUi::AddPluginToTab( CPslnFWPluginInterface& aPlugin )
- {
- TRAPD( err, AddPluginToTabL( aPlugin ) );
- if ( err )
- {
- PSLN_TRACE_DEBUG1("CPslnUi::AddPluginToTab plugin fails: ", aPlugin.Id().iUid );
- }
- return err;
- }
-#endif //!RD_CONTROL_PANEL
-
-// ---------------------------------------------------------------------------
-// Show skin activated note.
-// ---------------------------------------------------------------------------
-//
-void CPslnUi::SkinDeployedL()
- {
-#ifdef RD_UI_TRANSITION_EFFECTS_PHASE2
- // Only set sound state - no conf note anymore.
- SetStateOn( EPslnSoundActivationPending );
-#else
- HBufC* skinName = HBufC::NewLC( KMaxName );
- TPtr skinNamePtr = skinName->Des();
- TInt skinIndex = iModel->ActiveSkinIndex();
-
- iModel->GetSkinNameByIndex(
- skinIndex,
- skinNamePtr,
- EPslnSkinNameTypeTitle );
-
- // Show confirmation note about skin change.
- HBufC* noteTxt = StringLoader::LoadL(
- R_PSLN_CONFIRM_ACTIVE_SKIN_STRING,
- skinNamePtr,
- iEikonEnv );
- CleanupStack::PushL( noteTxt );
-
- SetStateOn( EPslnSoundActivationPending );
- CAknConfirmationNote* note =
- new (ELeave) CAknConfirmationNote( ETrue );
- note->ExecuteLD( *noteTxt );
- CleanupStack::PopAndDestroy( 2, skinName ); // skinName, noteTxt
-
-#endif
- iGeneralThemeView->UpdateSkinListItemsL();
- }
-
-// ---------------------------------------------------------------------------
-// Creates model class.
-// ---------------------------------------------------------------------------
-//
-void CPslnUi::CreateModelL()
- {
- if ( !GetStatus( EPslnModelCreated ) )
- {
- iModel = CPslnModel::NewL( this );
- SetStateOn( EPslnModelCreated );
- }
- }
-
-// ---------------------------------------------------------------------------
-// Callback when idle time occurs for skin activation.
-// ---------------------------------------------------------------------------
-//
-TInt CPslnUi::DoActivateSkinL( TAny* aAny )
- {
- static_cast< CPslnUi* >( aAny )->DoActivateSkinL();
- return EFalse;
- }
-
-// ---------------------------------------------------------------------------
-// Callback when idle time occurs for skin activation.
-// ---------------------------------------------------------------------------
-//
-void CPslnUi::DoActivateSkinL()
- {
- TInt error = ActivateSkin( EPslnSkinChangeRequested );
- if ( error == KErrNoMemory )
- {
- HBufC* errorBuf = StringLoader::LoadLC(
- R_PSLN_QTN_MEMLO_RAM_OUT_OF_MEM );
- // Display global note.
- CAknGlobalNote* errorNote = CAknGlobalNote::NewLC();
- errorNote->ShowNoteL( EAknGlobalErrorNote, *errorBuf );
- CleanupStack::PopAndDestroy( 2 ); // errorNote & errorBuf
- }
- }
-
-
-/**
-* Handle USB Callback.
-*/
-void CPslnUi::HandleUSBCallBackL()
- {
- if ( iView && iView->Id().iUid == KPslnGeneralView.iUid )
- {
- TInt value = KErrNone;
- iEnableUSBWatchProperty.Get(value);
-
- if (value == KUsbPersonalityIdMS )
- {
- iUSBAttached = ETrue;
- }
- else
- {
- iUSBAttached = EFalse;
- }
- static_cast< CPslnGeneralThemeView* >( iView )->RestartQuickPreviewL();
- }
- }
-// End of File
-