diff -r 1a2a00e78665 -r 7feec50967db idlefw/plugins/shortcutplugin/src/caiscutsettingsitem.cpp --- 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 -#include -#include // For KMsvRootIndexEntryIdValue -#include -#include // For TUriParser16 -#include -#include -#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.