--- a/idlehomescreen/widgetmanager/src/wmstore.cpp Wed Sep 15 12:00:00 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,367 +0,0 @@
-/*
-* Copyright (c) 2009 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:
-* Implementation of the store for WidgetManager
-*
-*/
-
-// INCLUDE FILES
-#include <aknlayoutscalable_apps.cdl.h>
-#include <aknlayoutscalable_avkon.cdl.h>
-#include <layoutmetadata.cdl.h>
-#include <AknUtils.h>
-#include <AknsDrawUtils.h>
-#include <AknBidiTextUtils.h>
-#include <AknsFrameBackgroundControlContext.h>
-#include <gulicon.h>
-#include <avkon.mbg>
-#include <widgetmanager.mbg>
-#include <apgcli.h>
-#include <apgtask.h>
-#include <widgetregistryclient.h> // widgetreqistry
-#include <bacline.h>
-#include <escapeutils.h>
-#include <browserlauncher.h>
-#include <centralrepository.h>
-#include <aknlayoutscalable_avkon.cdl.h>
-
-#include "wmimageconverter.h"
-#include "wmstore.h"
-#include "wmcommon.h"
-#include "wmplugin.h"
-#include "wmresourceloader.h"
-#include "wmmaincontainer.h"
-#include "wmconfiguration.h"
-#include "wmprocessmonitor.h"
-
-// CONSTANTS
-
-// MEMBER FUNCTIONS
-
-// ---------------------------------------------------------
-// CWmStore::NewL
-// ---------------------------------------------------------
-//
-CWmStore* CWmStore::NewL( CWmConfItem& aWmConfItem,
- CWmResourceLoader& aResourceLoader )
- {
- CWmStore* self = new (ELeave) CWmStore( aWmConfItem );
- CleanupStack::PushL( self );
- self->ConstructL( aResourceLoader );
- CleanupStack::Pop( self );
- return self;
- }
-
-// ---------------------------------------------------------
-// CWmStore::~CWmStore
-// ---------------------------------------------------------
-//
-CWmStore::~CWmStore()
- {
- delete iIcon;
- delete iMask;
-
- // if MAknIconFileProvider was used to create image from icon string
- // then it'll try accessing imageconverter after bitmap deletion
- // for de-reference open file count, so it should be deleted last.
- delete iImageConverter;
- delete iProcessMonitor;
- delete iBrowserLauncher;
- }
-
-// ---------------------------------------------------------
-// CWmStore::CWmStore
-// ---------------------------------------------------------
-//
-CWmStore::CWmStore( CWmConfItem& aWmConfItem )
- : iWmConfItem( aWmConfItem )
- {
- iIcon = NULL;
- iMask = NULL;
- iProcessMonitor = NULL;
- iBrowserLauncher = NULL;
- }
-
-// ---------------------------------------------------------
-// CWmStore::ConstructL
-// ---------------------------------------------------------
-//
-void CWmStore::ConstructL( CWmResourceLoader& aResourceLoader )
- {
- // start image converter for the icon
- iImageConverter = CWmImageConverter::NewL();
-
- // get size of icon for double large style list
- TRect rect;
- TAknLayoutRect layout;
-
- layout.LayoutRect( rect,
- AknLayoutScalable_Avkon::list_double_large_graphic_pane_g1( 0 ).LayoutLine() );
-
- TSize iconSize( layout.Rect().Width(),
- layout.Rect().Height() );
-
- // create icon
- TInt err = iImageConverter->HandleIconString(
- iconSize,
- iWmConfItem.Icon(),
- iIcon,
- iMask,
- ETrue ); // force scaling for non scaleble icons
-
- if ( err != KErrNone )
- {
- // lets use basket icon
- // skin( 0x101f86e3 0x23f6 ):mif( z:\resource\apps\widgetmanager.mif 16388 16389 )
- _LIT( KSkinMifIconFormat, "skin( 0x%x 0x%x ):mif( %S %d %d )");
- const TInt KMaxIconDescriptorLength = 256;
- TBuf<KMaxIconDescriptorLength> buf;
- buf.Format( KSkinMifIconFormat(),
- EAknsMajorGeneric, EAknsMinorGenericQgnPropLmShopping,
- &aResourceLoader.IconFilePath(),
- EMbmWidgetmanagerQgn_menu_shopping,
- EMbmWidgetmanagerQgn_menu_shopping_mask );
-
- iImageConverter->HandleIconString(
- iconSize,
- buf,
- iIcon,
- iMask,
- EFalse ); // force scaling for non scaleble icons
- }
- }
-
-// ---------------------------------------------------------
-// CWmStore::StoreIcon
-// ---------------------------------------------------------
-//
-CFbsBitmap* CWmStore::StoreIcon()
- {
- return iIcon;
- }
-
-// ---------------------------------------------------------
-// CWmStore::StoreMask
-// ---------------------------------------------------------
-//
-CFbsBitmap* CWmStore::StoreMask()
- {
- return iMask;
- }
-
-// ---------------------------------------------------------
-// CWmStore::Heading
-// ---------------------------------------------------------
-//
-const TDesC& CWmStore::Heading()
- {
- return iWmConfItem.Title();
- }
-
-// ---------------------------------------------------------
-// CWmStore::Order
-// ---------------------------------------------------------
-//
-TInt CWmStore::Order() const
- {
- return iWmConfItem.Order();
- }
-
-// ---------------------------------------------------------
-// CWmStore::ExecuteL
-// ---------------------------------------------------------
-//
-void CWmStore::ExecuteL()
- {
- if ( iWmConfItem.Id() == EOvi )
- {
- if ( !iProcessMonitor )
- {
- iProcessMonitor = CWmProcessMonitor::NewL();
- }
- // if process monitor is active laucher was allready started.
- // this is for ignoring multiple presses
- if ( !iProcessMonitor->IsActive() )
- {
- RunOviL();
- }
- }
- else if ( iWmConfItem.Id() >= EStore1 && iWmConfItem.Id() < ELastItem )
- {
- // if this leaves it means we need to start browser
- // becouse application info was not given
- TRAPD( err, RunApplicationL() )
- if ( err != KErrNone )
- {
- StartBrowserL( iWmConfItem.BrowserUrl() );
- }
- }
- else
- {
- // Not supported
- User::Leave( KErrGeneral );
- }
- }
-
-// ---------------------------------------------------------
-// CWmStore::RunOviL
-// ---------------------------------------------------------
-//
-void CWmStore::RunOviL()
- {
- RApaLsSession session;
- User::LeaveIfError( session.Connect() );
- CleanupClosePushL( session );
-
- //get app info
- TApaAppInfo appInfo;
- if ( session.GetAppInfo( appInfo, iWmConfItem.AppUid() ) == KErrNone )
- {
- // Form parameter
- HBufC* param = HBufC::NewLC( iWmConfItem.AppParam().Length() );
- param->Des().Copy( iWmConfItem.AppParam() );
-
- // do the launch
- RProcess process;
- User::LeaveIfError( process.Create( appInfo.iFullName, *param ) );
-
- iProcessMonitor->Monitor( process );
- process.Resume();
-
- CleanupStack::PopAndDestroy( param );
- }
-
- CleanupStack::PopAndDestroy( &session );
- }
-
-// ---------------------------------------------------------
-// CWmStore::StartBrowserL
-// ---------------------------------------------------------
-//
-void CWmStore::StartBrowserL( const TDesC& aUrl )
- {
- // already running/or request launch or url is empty
- if ( iBrowserLauncher || !aUrl.Length() ) { return; }
-
- _LIT( KUrlPrefix, "4 ");
- HBufC* param = HBufC::NewLC( aUrl.Length() + KUrlPrefix().Length() );
- param->Des().Append( KUrlPrefix );
- param->Des().Append( aUrl );
-
- // Create browser launcher
- CBrowserLauncher* launcher = CBrowserLauncher::NewLC();
-
- // Asynchronous operation to launch the browser with given URL
- launcher->LaunchBrowserEmbeddedL(
- *param, NULL, this, NULL );
-
- CleanupStack::Pop( launcher );
- iBrowserLauncher = launcher;
- launcher = NULL;
-
- CleanupStack::PopAndDestroy( param );
- }
-
-// ---------------------------------------------------------
-// CWmStore::HandleServerAppExit
-// ---------------------------------------------------------
-//
-void CWmStore::HandleServerAppExit( TInt aReason )
- {
- MAknServerAppExitObserver::HandleServerAppExit( aReason );
- delete iBrowserLauncher;
- iBrowserLauncher = NULL;
- }
-
-// ---------------------------------------------------------
-// CWmStore::RunApplicationL
-// ---------------------------------------------------------
-//
-void CWmStore::RunApplicationL()
- {
- CWmConfiguration::TStoreAppType type = iWmConfItem.AppType();
- if ( type == CWmConfiguration::EUnknown ||
- type >= CWmConfiguration::EReserved )
- {
- // Leave if not found
- User::Leave( KErrArgument );
- }
-
- switch( type )
- {
- case CWmConfiguration::ES60:
- case CWmConfiguration::EQt:
- {
- StartProcessL( iWmConfItem.AppUid(),
- iWmConfItem.AppParam() );
- }
- break;
- case CWmConfiguration::ECwrt:
- {
- StartWidgetL( iWmConfItem.AppUid(),
- iWmConfItem.AppParam() );
- }
- break;
- case CWmConfiguration::EWrt:
- {
- StartWidgetL( iWmConfItem.AppUid(), KNullDesC );
- }
- break;
- }
- }
-
-// ---------------------------------------------------------
-// CWmStore::StartProcessL
-// ---------------------------------------------------------
-//
-void CWmStore::StartProcessL( TUid aUid, const TDesC& aParam )
- {
- RApaLsSession session;
- User::LeaveIfError( session.Connect() );
- CleanupClosePushL( session );
-
- //get app info
- TApaAppInfo appInfo;
- User::LeaveIfError( session.GetAppInfo( appInfo, aUid ) );
- // do the launch
- RProcess process;
- User::LeaveIfError( process.Create( appInfo.iFullName, aParam ) );
- process.Resume();
-
- CleanupStack::PopAndDestroy( &session );
- }
-
-// ---------------------------------------------------------
-// CWmStore::StartWidgetL
-// ---------------------------------------------------------
-//
-void CWmStore::StartWidgetL( TUid aAppUid, const TDesC& aParams )
- {
- if ( aAppUid == KNullUid )
- User::Leave( KErrArgument );
-
- HBufC* params = aParams.AllocLC();
-
- RApaLsSession appArc;
- User::LeaveIfError( appArc.Connect() );
- CleanupClosePushL( appArc );
-
- TThreadId threadId;
- User::LeaveIfError( appArc.StartDocument( *params, aAppUid, threadId ) );
-
- CleanupStack::PopAndDestroy( &appArc );
- CleanupStack::PopAndDestroy( params );
- }
-
-// End of file