idlehomescreen/widgetmanager/src/wmstore.cpp
branchRCL_3
changeset 102 ba63c83f4716
parent 93 b01126ce0bec
child 103 966d119a7e67
--- 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