idlehomescreen/widgetmanager/src/wmconfiguration.cpp
changeset 2 08c6ee43b396
child 4 4d54b72983ae
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/widgetmanager/src/wmconfiguration.cpp	Mon Jan 18 20:10:36 2010 +0200
@@ -0,0 +1,279 @@
+/*
+* 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:
+* WidgetManager configuration class
+*
+*/
+
+// INCLUDE FILES
+#include <centralrepository.h>
+#include <StringLoader.h>
+#include <aknsconstants.h>
+
+#include <widgetmanagerview.rsg>
+#include <widgetmanager.mbg>
+#include "wmconfiguration.h"
+#include "wmresourceloader.h"
+#include "wmcrkeys.h"
+
+// CONSTANTS
+const TInt KMaxIconDescriptorLength = 256;
+
+// ---------------------------------------------------------
+// CWmConfiguration::NewL
+// ---------------------------------------------------------
+//
+CWmConfiguration* CWmConfiguration::NewL(
+        CWmResourceLoader& aResourceLoader )
+    {
+    CWmConfiguration* self = new (ELeave) CWmConfiguration( aResourceLoader );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// ---------------------------------------------------------
+// CWmConfiguration::CWmConfiguration()
+// ---------------------------------------------------------
+//
+CWmConfiguration::CWmConfiguration(
+        CWmResourceLoader& aResourceLoader )
+    : iResourceLoader( aResourceLoader )
+	{
+    iOviStoreText = NULL;
+    iOviStoreIcon = NULL;
+	iRepository = NULL;
+	iOviStoreBundleId = NULL;
+	iOviStoreClientParam = NULL;
+    iOviStoreUrl = NULL;
+	}
+
+// ---------------------------------------------------------
+// CWmConfiguration::~CWmConfiguration()
+// ---------------------------------------------------------
+//
+CWmConfiguration::~CWmConfiguration()
+	{
+    delete iOviStoreText;
+    delete iOviStoreIcon;
+	delete iRepository;
+    delete iOviStoreBundleId;
+    delete iOviStoreClientParam;
+    delete iOviStoreUrl;
+	}
+
+// ---------------------------------------------------------
+// CWmConfiguration::ConstructL
+// ---------------------------------------------------------
+//
+void CWmConfiguration::ConstructL()
+	{
+	// localised ovistore button text
+    iOviStoreText = StringLoader::LoadL( R_QTN_WM_GO_TO_OVI_STORE );
+
+    // ovistore icon descriptor. It will look something like this:
+    // skin( 0x101f86e3 0x23f6 ):mif( z:\resource\apps\widgetmanager.mif 16388 16389 )
+    TBuf<KMaxIconDescriptorLength> buf;
+    _LIT( KSkinMifIconFormat, "skin( 0x%x 0x%x ):mif( %S %d %d )");
+    buf.Format( KSkinMifIconFormat(),
+             EAknsMajorGeneric, EAknsMinorGenericQgnMenuOviStore,
+             &iResourceLoader.IconFilePath(),
+             EMbmWidgetmanagerQgn_menu_ovistore,
+             EMbmWidgetmanagerQgn_menu_ovistore_mask );
+    iOviStoreIcon = buf.AllocL();
+
+    // read data from repository
+    TRAP_IGNORE(
+        iRepository = CRepository::NewL( 
+                TUid::Uid( KCrWidgetManagerm ) );
+    
+        iLanguageIndex = FindCorrectLanguageId();
+        iOviStoreBundleId = ReadParameterL( KOviStoreBunbleId );
+        iOviStoreClientParam = ReadParameterL( KOviStoreClientParam );
+        iOviStoreUrl = ReadLocalisedParameterL( KOviStoreBrowserUrlOffset );
+        );
+	}
+
+// ---------------------------------------------------------
+// CWmConfiguration::FindCorrectLanguageId
+// ---------------------------------------------------------
+//
+TInt CWmConfiguration::FindCorrectLanguageId()
+    {
+    TInt languageIndex = KErrNotFound; // the correct language
+    TInt englishIndex = KErrNotFound; // english
+    TInt anyIndex = KErrNotFound; // backup - any existing
+    TLanguage sysLang = User::Language();
+    
+    //read language id's from cenrep, find a match
+    for( TUint32 i=KLangId0; i<=KLangId9 && languageIndex<0; i+=KLangGroupSize )
+        {
+        TInt crLang = 0;
+        if ( iRepository->Get( i, crLang ) == KErrNone )
+            {
+            if ( crLang == sysLang && languageIndex < 0 )
+                { languageIndex = i; }
+            if ( crLang == ELangEnglish && englishIndex < 0 )
+                { englishIndex = i; }
+            if ( crLang > 0 && anyIndex < 0 )
+                { anyIndex = i; }
+            }
+        }
+    
+    // if correct language was not found, use english
+    if ( languageIndex < 0 ) languageIndex = englishIndex;
+    // if english was not found, use any configured language
+    if ( languageIndex < 0 ) languageIndex = anyIndex;
+    // if there are no languages configured, we're in trouble...
+    if ( languageIndex < 0 ) languageIndex = 0;
+    
+    return languageIndex;
+    }
+
+// ---------------------------------------------------------
+// CWmConfiguration::ReadParameterL
+// ---------------------------------------------------------
+//
+HBufC* CWmConfiguration::ReadParameterL( TInt aKey )
+    {
+    TBuf<NCentralRepositoryConstants::KMaxUnicodeStringLength> buf;
+    TInt err = iRepository->Get( aKey, buf );
+
+    HBufC* heapBuffer = NULL;
+    if ( err == KErrNone )
+        {
+        heapBuffer = HBufC::NewL( buf.Length() );
+        heapBuffer->Des().Copy( buf );
+        }
+    return heapBuffer;
+    }
+
+// ---------------------------------------------------------
+// CWmConfiguration::ReadLocalisedParameterL
+// ---------------------------------------------------------
+//
+HBufC* CWmConfiguration::ReadLocalisedParameterL(
+        TInt aOffset )
+    {
+    TBuf<NCentralRepositoryConstants::KMaxUnicodeStringLength> buf;
+    TInt err = KErrNone;
+    
+    err = iRepository->Get( iLanguageIndex + aOffset, buf );
+    if ( err != KErrNone || buf.Length() == 0 )
+        {
+        // This language is empty. Try default language (index 0)
+        err = iRepository->Get( KLangId0 + aOffset, buf );
+        }
+
+    // construct string in heap
+    HBufC* heapBuffer = NULL;
+    if ( err == KErrNone )
+        {
+        heapBuffer = buf.AllocL();
+        }
+    return heapBuffer;
+    }
+
+// ---------------------------------------------------------
+// CWmConfiguration::PortalButtonCount
+// ---------------------------------------------------------
+//
+TInt CWmConfiguration::PortalButtonCount()
+	{
+	return 1;
+	}
+
+// ---------------------------------------------------------
+// CWmConfiguration::PortalButtonText
+// ---------------------------------------------------------
+//
+const TDesC& CWmConfiguration::PortalButtonText( TInt aIndex )
+    {
+    if ( aIndex == 0 && iOviStoreText ) return *iOviStoreText;
+    return KNullDesC;
+    }
+
+// ---------------------------------------------------------
+// CWmConfiguration::PortalButtonIcon
+// ---------------------------------------------------------
+//
+const TDesC& CWmConfiguration::PortalButtonIcon( TInt aIndex )
+    {
+    if ( aIndex == 0 && iOviStoreIcon ) return *iOviStoreIcon;
+    return KNullDesC;
+    }
+
+// ---------------------------------------------------------
+// CWmConfiguration::PortalButtonBundleId
+// ---------------------------------------------------------
+//
+const TDesC&
+    CWmConfiguration::PortalButtonBundleId( TInt aIndex )
+    {
+    if ( aIndex == 0 && iOviStoreBundleId ) return *iOviStoreBundleId;
+    return KNullDesC;
+    }
+
+
+// ---------------------------------------------------------
+// CWmConfiguration::PortalButtonPrimaryMethod
+// ---------------------------------------------------------
+//
+CWmConfiguration::TMethod
+    CWmConfiguration::PortalButtonPrimaryMethod( TInt aIndex )
+    {
+    if ( aIndex == 0 && iOviStoreClientParam ) return EWidget;
+    return ENone;
+    }
+
+// ---------------------------------------------------------
+// CWmConfiguration::PortalButtonPrimaryParams
+// ---------------------------------------------------------
+//
+const TDesC&
+    CWmConfiguration::PortalButtonPrimaryParams( TInt aIndex )
+    {
+    if ( aIndex == 0 && iOviStoreClientParam ) return *iOviStoreClientParam;
+    return KNullDesC;
+    }
+
+
+// ---------------------------------------------------------
+// CWmConfiguration::PortalButtonSecondaryMethod
+// ---------------------------------------------------------
+//
+CWmConfiguration::TMethod
+    CWmConfiguration::PortalButtonSecondaryMethod( TInt aIndex )
+    {
+    if ( aIndex == 0 && iOviStoreUrl ) return EHttp;
+    return ENone;
+    }
+
+// ---------------------------------------------------------
+// CWmConfiguration::PortalButtonSecondaryParams
+// ---------------------------------------------------------
+//
+const TDesC&
+    CWmConfiguration::PortalButtonSecondaryParams( TInt aIndex )
+    {
+    if ( aIndex == 0 && iOviStoreUrl ) return *iOviStoreUrl;
+    return KNullDesC;
+    }
+
+
+
+
+// End of File
+