idlefw/plugins/shortcutplugin/src/caiscutsettingsitem.cpp
branchRCL_3
changeset 9 d0529222e3f0
parent 4 1a2a00e78665
child 10 5ef93ea513cb
child 18 bd874ee5e5e2
--- a/idlefw/plugins/shortcutplugin/src/caiscutsettingsitem.cpp	Tue Feb 02 00:23:10 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,588 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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:  Class for shortcut setting items
-*
-*/
-
-
-
-#include <StringLoader.h>
-#include <centralrepository.h>
-#include <msvuids.h>        // For KMsvRootIndexEntryIdValue
-#include <SenduiMtmUids.h>
-#include <uri16.h>                  // For TUriParser16
-#include <aiscutsettingsres.rsg>
-#include <aiscuttexts.rsg>
-#include "caiscutsettingsitem.h"
-#include "caiscutsettingsmodel.h"
-#include "aiscutpluginprivatecrkeys.h"
-#include "taiscutparser.h"
-#include "aiscutdefs.h"
-#include "aiscutsettings.hrh"
-#include "aidefaultshortcut.h"
-#include "debug.h"
-
-const TInt KMaxBufSize = 250;
-// ======== MEMBER FUNCTIONS ========
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-
-CAiScutSettingsItem::CAiScutSettingsItem(
-    CAiScutSettingsModel&   aModel,
-    TInt                    aIndex,
-    TUint32                 aKey)
-    : iModel(aModel)
-        , iIndex(aIndex)
-        , iKey(aKey)
-{
-}
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsItem::ReadL(CRepository* aRepository)
-{
-    if( !aRepository )
-       {
-          return;
-       }
-
-    HBufC* buffer = HBufC::NewLC(NCentralRepositoryConstants::KMaxUnicodeStringLength);
-    TPtr bufferPtr = buffer->Des();
-
-    // try user key first.
-    TUint32 key = iKey & KScutBitMaskThemeDefault;
-    TInt err = aRepository->Get(key, bufferPtr);
-
-    if (err == KErrNone)
-    {
-        err = ParseValueL(bufferPtr);
-    }
-
-    if (err == KErrNone)
-    {
-        iKey = key;
-    }
-    else
-    {
-        // if no user key try default key then.
-        key = iKey | KScutFlagBitThemeDefault;
-        err = aRepository->Get(key, bufferPtr);
-        if (err == KErrNone)
-        {
-            err = ParseValueL(bufferPtr);
-        }
-
-    }
-
-    if (err != KErrNone ||
-        (iType == EAiScutSettingTypeApplication && iModel.IsHidden(iUid)))
-    {
-        HBufC* buf = HBufC::NewLC(NCentralRepositoryConstants::KMaxUnicodeStringLength);        
-        TPtr bufPtr = buf->Des();
-        HBufC* caption = NULL;
-
-        // Get the default shortcut uid for key 'key' 
-        iType = EAiScutSettingTypeApplication;
-        TAiDefaultShortcut::GetDefaultShortcut(key, iUid, bufPtr);
-
-        err = iModel.GetAppCaption(iUid, bufPtr);
-        if (err == KErrNone)
-        {
-            caption = bufPtr.AllocLC();
-            CreateListBoxLineL(*caption);
-            CleanupStack::PopAndDestroy(caption);
-        }
-
-        CleanupStack::PopAndDestroy(buf);
-
-    }
-
-    delete iValue;
-    iValue = NULL;
-    iValue = bufferPtr.AllocL();
-
-    CleanupStack::PopAndDestroy(buffer);
-
- }
-
- // ---------------------------------------------------------------------------
- //
- // ---------------------------------------------------------------------------
- //
- TInt CAiScutSettingsItem::Save(CRepository* aRepository)
- {
-
-    if( !aRepository )
-    {
-        return KErrGeneral;
-    }
-
-    iKey = iKey & KScutBitMaskThemeDefault;
-
-    TInt err = aRepository->Set(iKey, Value());
-
-    return err;
- }
-
-
- // ---------------------------------------------------------------------------
- // Constructs a new settings item leaving it on the cleanup stack.
- // ---------------------------------------------------------------------------
- //
- CAiScutSettingsItem* CAiScutSettingsItem::NewLC(
-    CAiScutSettingsModel&   aModel,
-    TInt                    aIndex,
-    TUint32                 aKey)
- {
-    CAiScutSettingsItem* self = new (ELeave) CAiScutSettingsItem(
-        aModel, aIndex, aKey);
-
-    CleanupStack::PushL(self);
-    self->ConstructL();
-    return self;
- }
-
- // ---------------------------------------------------------------------------
- //
- // ---------------------------------------------------------------------------
- //
- CAiScutSettingsItem* CAiScutSettingsItem::NewLC(
-    CAiScutSettingsModel&   aModel,
-    TInt                    aIndex,
-    TUint32                 aKey,
-    const TDesC&            aValue)
- {
-    CAiScutSettingsItem* self = new (ELeave) CAiScutSettingsItem(
-        aModel, aIndex, aKey);
-
-    CleanupStack::PushL(self);
-    self->ConstructL(aValue);
-    return self;
- }
-
- // ---------------------------------------------------------------------------
- //
- // ---------------------------------------------------------------------------
- //
- void CAiScutSettingsItem::ConstructL()
- {
-
- }
-
- // ---------------------------------------------------------------------------
- //
- // ---------------------------------------------------------------------------
- //
- void CAiScutSettingsItem::ConstructL(const TDesC& aValue)
- {
-     ParseValueL(aValue);
-     iValue = aValue.AllocL();
- }
-
- // ---------------------------------------------------------------------------
- //
- // ---------------------------------------------------------------------------
- //
- CAiScutSettingsItem::~CAiScutSettingsItem()
- {
-    delete iValue;
-    delete iListBoxLine;
- }
-
- // ---------------------------------------------------------------------------
- //
- // ---------------------------------------------------------------------------
- //
- TInt CAiScutSettingsItem::ParseValueL(const TDesC& aValue)
- {
-    HBufC* caption = NULL;
-    TInt err = KErrNone;
-    HBufC* buf = HBufC::NewLC(KMaxBufSize);
-    TPtr bufPtr = buf->Des();
-
-    TAiScutParser parser;
-    parser.Parse(aValue);
-
-    TShortcutType type = parser.Type();
-
-    iUid = parser.Uid();
-    iType = EAiScutSettingTypeApplication;
-
-    switch (type)
-    {
-        case EScutApplication:
-        case EScutApplicationWithParams:
-        case EScutApplicationView:
-        case EScutLogsMissedCallsView:
-        case EScutLogsDialledCallsView:
-        case EScutLogsReceivedCallsView:
-        case EScutLogsMainView:
-            err = iModel.GetAppCaption(iUid, bufPtr);
-            if (err == KErrNone)
-            {
-                caption = bufPtr.AllocLC();
-            }
-            break;
-
-        case EScutNewMessage:
-            caption = StringLoader::LoadLC(
-                R_SCUT_SETTINGS_NEW_MSG, iModel.Env());
-            break;
-
-        case EScutNewEmail:
-            caption = StringLoader::LoadLC(
-                R_SCUT_SETTINGS_NEW_EMAIL, iModel.Env());
-            break;
-
-        #ifdef __SYNCML_DS_EMAIL
-            case EScutNewSyncMLMail:
-                caption = StringLoader::LoadLC(
-                    R_SCUT_SETTINGS_NEW_SYNCML_MAIL, iModel.Env());
-                break;
-        #endif
-
-        case EScutNewPostcard:
-            caption = StringLoader::LoadLC(
-                R_SCUT_SETTINGS_NEW_POSTCARD, iModel.Env());
-            break;
-
-        case EScutNewAudioMsg:
-            caption = StringLoader::LoadLC(
-                R_SCUT_SETTINGS_NEW_AUDIO_MSG, iModel.Env());
-            break;
-
-        case EScutNewMsgType:
-            caption = StringLoader::LoadLC(
-                R_SCUT_SETTINGS_SELECT_MSG_TYPE, iModel.Env());
-            break;
-
-        case EScutChangeTheme:
-            caption = StringLoader::LoadLC(
-                R_SCUT_SETTINGS_CHANGE_THEME, iModel.Env());
-            break;
-
-        case EScutMailbox:
-            {
-            err = KErrNotFound;
-            // Parse the mailbox id from the definition
-            TLex lex(parser.Get(EScutDefParamValue));
-            TInt mailboxId = KErrNone;
-            lex.Val(mailboxId);
-
-            CMsvSession* msvSession = CMsvSession::OpenAsObserverL(*iModel.AppList());
-            CleanupStack::PushL(msvSession);
-
-            CMsvEntry* rootEntry = msvSession->GetEntryL(KMsvRootIndexEntryIdValue);
-            CleanupStack::PushL(rootEntry);          
-            
-            // Searching the mailbox name
-            for (TInt i = rootEntry->Count() - 1; i >= 0; --i)
-            {
-                const TMsvEntry& tentry = (*rootEntry)[i];
-
-                if ((tentry.iMtm == KSenduiMtmImap4Uid || tentry.iMtm == KSenduiMtmPop3Uid) &&
-                    tentry.Id() == mailboxId)
-                {
-                    caption = tentry.iDetails.AllocL();
-                    err = KErrNone;
-                    break;
-                }
-            }
-            CleanupStack::PopAndDestroy(rootEntry);
-            CleanupStack::PopAndDestroy(msvSession);
-            if ( caption )
-                {
-                CleanupStack::PushL( caption );
-                }
-            }
-            break;
-
-        case EScutNoEffect:
-            caption = StringLoader::LoadLC(
-                R_SCUT_SETTINGS_NO_EFFECT, iModel.Env());
-            break;
-
-        case EScutConnectivityStatusView:
-            caption = StringLoader::LoadLC(
-                R_SCUT_SETTINGS_CONNECTIVITY_STATUS, iModel.Env());
-            break;
-
-        case EScutApplicationManagerView:
-            caption = StringLoader::LoadLC(
-                R_SCUT_SETTINGS_APPMNGR, iModel.Env());
-            break;
-
-        case EScutBookmark:
-            {
-            // aValue = "localapp:0x102750fb?bkm=0x12345678"
-            iUid = KScutSettingsDllUid;
-            iType = EAiScutSettingTypeBookmark;
-            TUid uid = parser.ParseUid(parser.Get(EScutDefParamValue));
-            TRAP(err, iModel.GetBkmCaptionL(uid, bufPtr));
-            if (err == KErrNone)
-            {
-                caption = bufPtr.AllocLC();
-
-                __PRINT( __DBG_FORMAT( "XAI: CAiScutSettingsItem bkm uid = 0x%x caption = '%S' "),
-                uid.iUid, caption);
-            }
-            }
-            break;
-
-        case EScutWebAddress:
-        default:
-            // treat unknown shortcuts as typed urls.
-            iUid.iUid = 0;
-            iType = EAiScutSettingTypeUrl;
-        HBufC* tmp = HBufC::NewLC( aValue.Length() );
-        TPtr tmpPtr = tmp->Des();
-        TInt err = parser.CustomTitle( tmpPtr );
-
-        if ( err != KErrNone || tmp->Length() <= 0 )
-            {
-            CleanupStack::PopAndDestroy( tmp );
-            caption = aValue.AllocLC();
-            }
-        else
-            {
-            caption = tmp;
-            }
-            break;
-        }
-
-    if (caption)
-    {
-        CreateListBoxLineL(*caption);
-        CleanupStack::PopAndDestroy(caption);
-    }
-
-    CleanupStack::PopAndDestroy(buf);
-    return err;
- }
-
- // ---------------------------------------------------------------------------
- // Changes the setting item target application.
- // ---------------------------------------------------------------------------
- //
- void CAiScutSettingsItem::ChangeApplicationL(TUid aUid, const TDesC& aParams,
-        const TDesC& aCaption)
- {
-    iUid = aUid;
-    iType = EAiScutSettingTypeApplication;
-
-    HBufC* newValue = NULL;
-    TAiScutParser parser;
-    parser.ComposeL(newValue, iUid, aParams);
-
-    delete iValue;
-    iValue = NULL;
-    iValue = newValue;
-
-    CreateListBoxLineL(aCaption);
- }
-
- // -----------------------------------------------------------------------------
- // Changes the setting item target bookmark.
- // -----------------------------------------------------------------------------
- //
- void CAiScutSettingsItem::ChangeBookmarkL(const TDesC& aParams, const TDesC& aCaption)
- {
-    iUid = KScutSettingsDllUid;
-    iType = EAiScutSettingTypeBookmark;
-
-    HBufC* newValue = NULL;
-    TAiScutParser parser;
-    parser.ComposeL(newValue, iUid, aParams);
-
-    delete iValue;
-    iValue = NULL;
-    iValue = newValue;
-
-    CreateListBoxLineL(aCaption);
- }
-
- // -----------------------------------------------------------------------------
- // Changes the setting item target url.
- // -----------------------------------------------------------------------------
- //
- void CAiScutSettingsItem::ChangeUrlL(const TDesC& aUrl)
- {
-    iUid.iUid = 0;
-    iType = EAiScutSettingTypeUrl;
-
-    delete iValue;
-    iValue = NULL;
-    iValue = aUrl.AllocL();
-
-    CreateListBoxLineL(*iValue);
- }
-
- // -----------------------------------------------------------------------------
- // Creates a formatted listbox line.
- // -----------------------------------------------------------------------------
- //
- void CAiScutSettingsItem::CreateListBoxLineL(const TDesC& aCaption)
- {
-    HBufC* title = CreateItemTitleLC();
-
-    TPtrC caption;
-    caption.Set(aCaption);
-
-    TUriParser parser;
-    TInt err = parser.Parse(aCaption);
-    if (err == KErrNone)
-    {
-        // Remove scheme from the url.
-        const TDesC& host = parser.Extract(EUriHost);
-        if (host.Length())
-        {
-            caption.Set(host);
-        }
-    }
-
-    // Format (" \t%S\t\t%S") without %S characters.
-    TInt formatLength = KSettingListboxLineFormat().Length();
-
-    HBufC* listBoxLine =
-        HBufC::NewLC(title->Length() + caption.Length() + formatLength);
-
-    TPtr ptr = listBoxLine->Des();
-    ptr.Format(KSettingListboxLineFormat, title, &caption);
-
-    delete iListBoxLine;
-    iListBoxLine = NULL;
-    iListBoxLine = listBoxLine;
-    CleanupStack::Pop(listBoxLine);
-
-    TInt titlePos = ptr.Find(*title);
-    if (titlePos < 0)
-    {
-        titlePos = 0;
-    }
-    iTitle.Set(ptr.Mid(titlePos, title->Length()));
-
-    CleanupStack::PopAndDestroy(title);
- }
-
- // -----------------------------------------------------------------------------
- // Creates a setting item title.
- // -----------------------------------------------------------------------------
- //
- HBufC* CAiScutSettingsItem::CreateItemTitleLC()
- {
-     HBufC* title = NULL;
-     if (iKey & KScutFlagBitOptionallyVisible)
-     {
-        // Optionally visible shortcuts are either navigation keys or soft keys.
-        title = CreateOptionallyVisibleKeyTitleLC();
-     }
-
-     // Make sure something gets loaded and put to cleanup stack.
-     if (!title)
-     {
-        title = StringLoader::LoadLC(
-            R_SCUT_SETTINGS_TXT_LINKN, iIndex+1, iModel.Env());
-     }
-
-     __PRINT( __DBG_FORMAT( "XAI: CreateItemTitleLC %d key = 0x%x (0x%x) title = '%S' "),
-            iIndex+1, iKey, (iKey & 0xFFFF), title);
-
-     return title;
- }
-
- // -----------------------------------------------------------------------------
- // Creates a key title for an optionally visible shortcut.
- // -----------------------------------------------------------------------------
- //
- HBufC* CAiScutSettingsItem::CreateOptionallyVisibleKeyTitleLC()
- {
-    HBufC* title = NULL;
-    TInt resourceId = 0;
-
-    switch (iKey & 0xFFFF)
-    {
-        case EAiScutScrollKeyLeft:
-            resourceId = R_SCUT_SETTINGS_SCROLL_LEFT;
-            break;
-
-        case EAiScutScrollKeyRight:
-            resourceId = R_SCUT_SETTINGS_SCROLL_RIGHT;
-            break;
-
-        case EAiScutScrollKeyUp:
-            resourceId = R_SCUT_SETTINGS_SCROLL_UP;
-            break;
-
-        case EAiScutScrollKeyDown:
-            resourceId = R_SCUT_SETTINGS_SCROLL_DOWN;
-            break;
-
-        case EAiScutSelectionKey:
-            resourceId = R_SCUT_SETTINGS_SELECTION_KEY;
-            break;
-
-        case EAiScutSoftKeyLeft:
-            resourceId = R_SCUT_SETTINGS_SOFTKEY_LEFT;
-            break;
-
-        case EAiScutSoftKeyRight:
-            resourceId = R_SCUT_SETTINGS_SOFTKEY_RIGHT;
-            break;
-
-        default:
-            resourceId = 0;
-            break;
-        }
-
-    if (resourceId)
-    {
-        title = StringLoader::LoadLC(resourceId, iModel.Env());
-    }
-    else
-    {
-        title = NULL;
-    }
-
-    return title;
- }
-
- // ---------------------------------------------------------------------------
- // Returns the setting item value.
- // ---------------------------------------------------------------------------
- //
- TPtrC CAiScutSettingsItem::Value() const
- {
-     if(iValue)
-         {
-         return TPtrC( *iValue );
-         }
-     return TPtrC(KNullDesC);
- }
-
- // ---------------------------------------------------------------------------
- // Returns the formatted listbox line descriptor.
- // ---------------------------------------------------------------------------
- //
- TPtrC CAiScutSettingsItem::ListBoxLine() const
- {
-     if(iListBoxLine)
-         {
-         return TPtrC( *iListBoxLine );
-         }
-     return TPtrC(KNullDesC);
- }
-// End of File.