appinstall_plat/appmngr2runtimeapi/src/appmngr2infobase.cpp
changeset 0 ba25891c3a9e
child 25 98b66e4fb0be
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstall_plat/appmngr2runtimeapi/src/appmngr2infobase.cpp	Thu Dec 17 08:51:10 2009 +0200
@@ -0,0 +1,234 @@
+/*
+* Copyright (c) 2008 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:   Base class implementation for items displayed in AppMngr2
+*
+*/
+
+
+#include "appmngr2infobase.h"           // CAppMngr2InfoBase
+#include "appmngr2runtime.h"            // CAppMngr2Runtime
+#include "appmngr2common.hrh"           // Default icon indexes
+#include <appmngr2.rsg>                 // Resource IDs
+#include <AknUtils.h>                   // DisplayTextLanguageSpecificNumberConversion
+#include <StringLoader.h>               // StringLoader
+#include <barsread.h>                   // TResourceReader
+#include <e32math.h>                    // Math::Round
+
+const TUint KKiloByte = KKilo;
+const TUint KMegaByte = KKilo*KKiloByte;
+const TUint KGigaByte = KKilo*KMegaByte;
+const TInt KDecimalPlaces = 0;
+
+
+// ======== LOCAL FUNCTIONS =========
+
+// ---------------------------------------------------------------------------
+// DivideAndReturnRoundedInt()
+// ---------------------------------------------------------------------------
+//
+TInt DivideAndReturnRoundedInt( TInt64 aDivident, TUint aDivisor )
+    {
+    // Ignored possible math errors returned by Math::Round() and Math::Int().
+    TReal rounded = 0;
+    Math::Round( rounded, I64REAL( aDivident ) / aDivisor, KDecimalPlaces );
+    if( rounded < 1 )
+        {
+        rounded = 1;
+        }
+    TInt32 final = 0;
+    Math::Int( final, rounded );
+    return final;
+    }
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CAppMngr2InfoBase::ConstructL()
+// ---------------------------------------------------------------------------
+//
+void CAppMngr2InfoBase::ConstructL()
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// CAppMngr2InfoBase::~CAppMngr2InfoBase()
+// ---------------------------------------------------------------------------
+//
+CAppMngr2InfoBase::~CAppMngr2InfoBase()
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// CAppMngr2InfoBase::Runtime()
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CAppMngr2Runtime& CAppMngr2InfoBase::Runtime() const
+    {
+    return iRuntime;
+    }
+
+// ---------------------------------------------------------------------------
+// CAppMngr2InfoBase::SpecificIconL()
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CGulIcon* CAppMngr2InfoBase::SpecificIconL() const
+    {
+    User::Leave( KErrNotSupported );    // should not get here
+    return NULL;
+    }
+
+// ---------------------------------------------------------------------------
+// CAppMngr2InfoBase::IndicatorIconIndex()
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TInt CAppMngr2InfoBase::IndicatorIconIndex() const
+    {
+    if( iLocation == EAppMngr2LocationMemoryCard )
+        {
+        return EAppMngr2IconQgnIndiAmInstMmcAdd;
+        }
+    if( iLocation == EAppMngr2LocationMassStorage )
+        {
+        return EAppMngr2IconQgnIndiFmgrMsAdd;
+        }
+    return EAppMngr2NoIndicatorIcon;
+    }
+
+// ---------------------------------------------------------------------------
+// CAppMngr2InfoBase::SpecificIndicatorIconL()
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CGulIcon* CAppMngr2InfoBase::SpecificIndicatorIconL() const
+    {
+    User::Leave( KErrNotSupported );    // should not get here
+    return NULL;
+    }
+
+// ---------------------------------------------------------------------------
+// CAppMngr2InfoBase::IsShowOnTop()
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TBool CAppMngr2InfoBase::IsShowOnTop() const
+    {
+    return iShowOnTop;
+    }
+
+// ---------------------------------------------------------------------------
+// CAppMngr2InfoBase::GetMenuItemsL()
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CAppMngr2InfoBase::GetMenuItemsL(
+        RPointerArray<CEikMenuPaneItem::SData>& /*aMenuCmds*/ )
+    {
+    // no item specific menu items by default
+    }
+
+
+// ---------------------------------------------------------------------------
+// CAppMngr2InfoBase::SupportsGenericCmd()
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TBool CAppMngr2InfoBase::SupportsGenericCommand( TInt /*aCmdId*/ )
+    {
+    return EFalse;
+    }
+
+// ---------------------------------------------------------------------------
+// CAppMngr2InfoBase::GetMiddleSoftkeyCommandL()
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CAppMngr2InfoBase::GetMiddleSoftkeyCommandL(
+        TInt& /*aResourceId*/, TInt& /*aCommandId*/ )
+    {
+    // no item specific middle softkey command by default
+    }
+
+// ---------------------------------------------------------------------------
+// CAppMngr2InfoBase::SizeStringWithUnitsL()
+// ---------------------------------------------------------------------------
+//
+EXPORT_C HBufC* CAppMngr2InfoBase::SizeStringWithUnitsL( TInt64 aSizeInBytes )
+    {
+    HBufC* dispString = NULL;
+    if( aSizeInBytes <= KMegaByte )
+        {
+        TInt kiloBytes = DivideAndReturnRoundedInt( aSizeInBytes, KKiloByte );
+        dispString = StringLoader::LoadLC( R_SWINS_UNIT_KILOBYTE, kiloBytes );
+        }
+    else if( aSizeInBytes <= KGigaByte )
+        {
+        TInt megaBytes = DivideAndReturnRoundedInt( aSizeInBytes, KMegaByte );
+        dispString = StringLoader::LoadLC( R_SWINS_UNIT_MEGABYTE, megaBytes );
+        }
+    else // aSizeInBytes > KGigaByte
+        {
+        TInt gigaBytes = DivideAndReturnRoundedInt( aSizeInBytes, KGigaByte );
+        dispString = StringLoader::LoadLC( R_SWINS_UNIT_GIGABYTE, gigaBytes );
+        }
+    
+    TPtr ptr = dispString->Des();
+    AknTextUtils::DisplayTextLanguageSpecificNumberConversion( ptr ); 
+    
+    CleanupStack::Pop( dispString );
+    return dispString;
+    }
+
+// ---------------------------------------------------------------------------
+// CAppMngr2InfoBase::ReadMenuItemDataFromResourceL()
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CAppMngr2InfoBase::ReadMenuItemDataFromResourceL(
+        TInt aResourceId, CEikMenuPaneItem::SData& aMenuItemData )
+    {
+    TResourceReader reader;
+    iRuntime.EikonEnv().CreateResourceReaderLC( reader, aResourceId );
+
+    aMenuItemData.iCommandId = reader.ReadInt32();
+    aMenuItemData.iCascadeId = reader.ReadInt32();
+    aMenuItemData.iFlags = reader.ReadInt32();
+    aMenuItemData.iText.Copy( reader.ReadTPtrC() );
+    aMenuItemData.iExtraText = reader.ReadTPtrC();
+    // bmpfile, bmpid, bmpmask, and extension ignored 
+
+    CleanupStack::PopAndDestroy();  // resource reader
+    }
+
+// ---------------------------------------------------------------------------
+// CAppMngr2InfoBase::Location()
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TAppMngr2Location CAppMngr2InfoBase::Location() const
+    {
+    return iLocation;
+    }
+
+// ---------------------------------------------------------------------------
+// CAppMngr2InfoBase::LocationDrive()
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TDriveUnit CAppMngr2InfoBase::LocationDrive() const
+    {
+    return iLocationDrive;
+    }
+
+// ---------------------------------------------------------------------------
+// CAppMngr2InfoBase::CAppMngr2InfoBase()
+// ---------------------------------------------------------------------------
+//
+CAppMngr2InfoBase::CAppMngr2InfoBase( CAppMngr2Runtime& aRuntime,
+        RFs& aFsSession ) : iFs( aFsSession ), iRuntime( aRuntime )
+    {
+    }
+