diff -r 2b7283837edb -r 3104fc151679 uiservicetab/vimpstui/src/cvimpstuitabbedview.cpp --- a/uiservicetab/vimpstui/src/cvimpstuitabbedview.cpp Thu Aug 19 09:41:53 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3936 +0,0 @@ -/* -* 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: Implementation for CVIMPSTUiTabbedView - * -*/ - - -// INCLUDE FILES -#include "cvimpstuitabbedview.h" - -#include "cvimpstcmdhandler.h" -#include "mvimpstuitabbedviewcontrol.h" -#include "mvimpstuitabcontrolfactory.h" -#include "vimpstcmd.hrh" -#include "mvimpstcmd.h" -#include "mvimpstengine.h" -#include "mvimpstenginesearchmgrextention.h" - -#include "vimpstui.hrh" -#include "vimpstextentionuiuid.h" -#include "tvimpstconsts.h" -#include "cvimpstuiextensionservice.h" -#include "cvimpstuibranddata.h" -#include "mvimpstprocessarray.h" -#include "vimpstutilsdialog.h" -#include "vimpstutilswaitnote.h" -#include "vimpstcmd.hrh" -#include "cvimpstuisearchfieldaray.h" -#include "mvimpstuisearchfield.h" -#include "cvimpstuisearchquerydialog.h" -#include "cvimpstuiavatarselectionhandler.h" // avatar selection -#include "cvimpstuistatuspanehandler.h" - - -#include "mvimpstengineextentionfeatures.h" -#include "mvimpststoragevpbkstorehandler.h" - -// System includes -#include //CAknToolbar -#include //CEikAppUiFactory - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// Pbk2 -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -// xSP extension manager -#include "MxSPViewMapper.h" -#include "MxSPContactManager.h" -#include "cvimpststoragemanagerfactory.h" -#include "mvimpststorageserviceview.h" -#include "cvimpstuimenuextension.h" - -//resource -#include -#include - -//CCA -#include -#include -#include - -#include "uiservicetabtracer.h" - -//AIW - VOIP -#include -#include -#include -#include -#include -#include - -//browser launch -#include -#include "cvimpstuitermsofusedialoghandler.h" -#include -#include -#include "tvimpstconsts.h" -// avatar -#include "mvimpstenginepresencesubservice.h" -#include "mvimpstenginesubservice.h" -#include "mvimpstengineimsubservice.h" -#include "cvimpstuicontactselection.h" - -#include -// help launch -#include -#include -#include "meco.hlp.hrh" - -#include -#include //KAiwCmdCall -#include -#include - -using namespace AiwContactAssign; -using namespace Phonebook2; - -const TInt KBufLen(512); - - -// ================= MEMBER FUNCTIONS ======================= - - -// -------------------------------------------------------------------------- -// CVIMPSTUiTabbedView::CVIMPSTUiTabbedView -// -------------------------------------------------------------------------- -// -CVIMPSTUiTabbedView::CVIMPSTUiTabbedView( -MxSPViewMapper& aMapper, -MxSPContactManager& aContactManager, -TUint aTabbedViewId, -TUint aServiceId, -CPbk2UIExtensionView& aView, -TUid /*aId*/, -CVIMPSTUIExtensionService& aServiceData, -MVIMPSTEngine& aEngine, -MVIMPSTCmdHandler& aCommandHandler, -CVIMPSTUIMenuExtension& aMenuExtension) : -CxSPBaseView( aMapper, aContactManager, aView ), -iViewId( aTabbedViewId ), -iServiceId(aServiceId), -iEngine(aEngine), -iExtensionService( aServiceData ), -iCommandHandler( aCommandHandler), -iMenuExtension(aMenuExtension), -iSelectedAction( KErrNotFound ) - - { - iFixedToolbar = NULL; - iIsToolBarHidden = ETrue; - } - - -// -------------------------------------------------------------------------- -// CVIMPSTUiTabbedView::ConstructL -// -------------------------------------------------------------------------- -// -inline void CVIMPSTUiTabbedView::ConstructL() - { - ViewBaseConstructL( KIMCONTACTSEXTNIMPLEMENTATIONUID, iViewId ); - - iCommandHandler.RegisterEventObserverL(this); - - iPreviousState = TVIMPSTEnums::ESVCENotRegistered; - - iServiceHandler = CAiwServiceHandler::NewL(); - - iServiceHandler->AttachL( R_IM_APP_INTEREST ); - iServiceHandler->AttachMenuL( R_SERVTAB_TABBED_VIEW_MENU, - R_IM_APP_INTEREST ); - - iServiceHandler->AttachL( R_AIWASSIGNMENT_INTEREST ); - - iServiceHandler->AttachL( R_AIWSELECT_INTEREST ); - - iStatusMessage = HBufC::NewL( KStatusTextLength ); - - iStatusPaneHandler = CCVIMPSTUiStatusPaneHandler::NewL(); - - //Get SearchMgr - MVIMPSTEngineExtentionFeatures* feature = iEngine.ExtentionFeatures(TVIMPSTEnums::ESearch); - if (feature) - { - MVIMPSTEngineSearchMgrExtention& searchMgr = - MVIMPSTEngineSearchMgrExtention::Cast - (*feature); - - searchMgr.RegisterObserver(this); - } - iSettingsStore = CVIMPSTSettingsStore::NewL(); - - iBrandHandler = CVIMPSTUiBrandData::NewL( iEngine ); - - iAppUi = CCoeEnv::Static()->AppUi(); - - CFbsBitmap *bitmap, *mask; - iBrandHandler->GetBrandBitmapsL( &bitmap, &mask); - iStatusPaneHandler->SetPictureL( bitmap, mask ); - - iIsServiceHandleReSet = EFalse; - - iContainerCreationStarted = EFalse; - } - - -// -------------------------------------------------------------------------- -// CVIMPSTUiTabbedView::NewL -// -------------------------------------------------------------------------- -// -CVIMPSTUiTabbedView* CVIMPSTUiTabbedView::NewL( MxSPViewMapper& aMapper, - MxSPContactManager& aContactManager, - TUint aTabbedViewId, - TUint aServiceId, - CPbk2UIExtensionView& aView, - TUid aId, - CVIMPSTUIExtensionService& aServiceData, - MVIMPSTEngine& aEngine, - MVIMPSTCmdHandler& aCommandHandler, - CVIMPSTUIMenuExtension& aMenuExtension) - { - CVIMPSTUiTabbedView* self = new(ELeave) CVIMPSTUiTabbedView( aMapper, - aContactManager, - aTabbedViewId, - aServiceId, - aView, - aId, - aServiceData, - aEngine, - aCommandHandler, - aMenuExtension); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } - - -// -------------------------------------------------------------------------- -// CVIMPSTUiTabbedView::~CVIMPSTUiTabbedView -// -------------------------------------------------------------------------- -// -CVIMPSTUiTabbedView::~CVIMPSTUiTabbedView() - { - delete iContactSelection; - delete iFriendRequestId; - - delete iSelectedData.iPackedLinks; - iSelectedData.iXSPList.ResetAndDestroy(); - - delete iQueryResult; - //Get SearchMgr - MVIMPSTEngineExtentionFeatures* feature = iEngine.ExtentionFeatures(TVIMPSTEnums::ESearch); - if (feature) - { - MVIMPSTEngineSearchMgrExtention& searchMgr = - MVIMPSTEngineSearchMgrExtention::Cast - (*feature); - - searchMgr.UnRegisterObserver(this); - } - - if(iParameter!=NULL) - iParameter->Close(); - if(iConnection!=NULL) - { - iConnection->Close(); - iConnection = NULL; - } - - if (iContainer && iAppUi ) - { - iAppUi->RemoveFromStack( iContainer->CoeControl() ); - delete iContainer; - iContainerCreationStarted = EFalse; - } - delete iBrandHandler; - iCommandHandler.UnRegisterEventObserver(this); - - if ( iFixedToolbar ) - { - iFixedToolbar->SetToolbarObserver( NULL ); - delete iFixedToolbar; - iFixedToolbar = NULL; - } - - if (iServiceHandler) - { - iServiceHandler->Reset(); - delete iServiceHandler; - iServiceHandler = NULL; - } - - delete iContact; - - if(iFocussedIDHistory) - { - delete iFocussedIDHistory; - iFocussedIDHistory = NULL; - } - delete iBrLauncher; - delete iUserId; - - if(iSettingsStore) - { - delete iSettingsStore; - iSettingsStore = NULL; - } - delete iStatusPaneHandler; - - delete iAiwParamList; - - if(iStatusMessage) - { - delete iStatusMessage; - } - - } - - - -// -------------------------------------------------------------------------- -// CVIMPSTUiTabbedView::DynInitMenuPaneL -// -------------------------------------------------------------------------- -// -void CVIMPSTUiTabbedView::DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane ) - { - - if (iEngine.IsUnInstalled()) - { - // if engine is uninstalled, do not initiate the menu pane. - return; - } - // AIW knows its own submenu hooks, so we can return from - // here if AIW handled this. - ReInitializeServiceHandlerL(); - - iMenuExtension.ResetAIWCommandMap(); - - if ( iServiceHandler->HandleSubmenuL( *aMenuPane ) ) - { - return; - } - - TBool imService = iEngine.IsSubServiceSupportedL(TVIMPSTEnums::EIM); - TBool voipService = iEngine.IsSubServiceSupportedL(TVIMPSTEnums::EVoip); - TBool presenceService = iEngine.IsSubServiceSupportedL(TVIMPSTEnums::EPresence); - TVIMPSTEnums::TVIMPSTRegistrationState serviceTabState = - iEngine.ServiceState(); - - TInt itemIndex = CurrentItemIndex(); - // fetch the item and process correct type - TVIMPSTEnums::TItem itemType = iCommandHandler.GetProcessInterface().GetType(itemIndex); - TVIMPSTEnums::TOnlineStatus onlinestatus = iCommandHandler.GetProcessInterface().GetOnlineStatusL(itemIndex); - - switch( aResourceId) - { - case R_EXTENSION_MANAGER_MENU: - { - aMenuPane->AddMenuItemsL(R_SERVTAB_TABBED_VIEW_MENU); - aMenuPane->AddMenuItemsL(R_TABBED_VIEW_GENERAL_MENU); - - aMenuPane->SetItemDimmed(ECmdGetBlockedList, ETrue); - //based on sevice states decide what all submenu should be shown - //and main menu's to be shown - switch (serviceTabState) - { - case TVIMPSTEnums::ESVCENotRegistered: - { - aMenuPane->SetItemDimmed(ECmdCreateNewOption, ETrue); - aMenuPane->SetItemDimmed(ECmdMyAvatar, ETrue); - aMenuPane->SetItemDimmed(ECmdChangeStatus, ETrue); - aMenuPane->SetItemDimmed(ECmdLogout, ETrue); - aMenuPane->SetItemDimmed(ECmdCancelLogin, ETrue); - aMenuPane->SetItemDimmed(ECmdChangeConnectioninOnlineState, ETrue); - aMenuPane->SetItemDimmed(ECmdChangeConnectioninWaitingState, ETrue); - break; - } - case TVIMPSTEnums::ESVCERegistered: - { - if (!presenceService) - { - aMenuPane->SetItemDimmed(ECmdMyAvatar, ETrue); - aMenuPane->SetItemDimmed(ECmdChangeStatus, ETrue); - } - else - { - //find whether avatar is supported - //Get Presence SubService - MVIMPSTEngineSubService* subService = - (iEngine.SubService(TVIMPSTEnums::EPresence)); - if(subService) - { - MVIMPSTEnginePresenceSubService& presence = - MVIMPSTEnginePresenceSubService::Cast (*subService); - - aMenuPane->SetItemDimmed(ECmdMyAvatar, !presence.IsAvatarSupported() ); - } - - } - aMenuPane->SetItemDimmed(ECmdLogin, ETrue); - aMenuPane->SetItemDimmed(ECmdCancelLogin, ETrue); - - if (!ChangeConnectionSupportedL()) - { - aMenuPane->SetItemDimmed(ECmdChangeConnectioninOnlineState, ETrue); - } - - aMenuPane->SetItemDimmed(ECmdChangeConnectioninWaitingState, ETrue); - if(iEngine.IsBlockSupportedL()) - { - aMenuPane->SetItemDimmed(ECmdGetBlockedList, EFalse); - } - break; - } - case TVIMPSTEnums::ESVCENetworkConnecting: - { - aMenuPane->SetItemDimmed(ECmdChangeStatus, ETrue); - aMenuPane->SetItemDimmed(ECmdCreateNewOption, ETrue); - aMenuPane->SetItemDimmed(ECmdMyAvatar, ETrue); - aMenuPane->SetItemDimmed(ECmdLogin, ETrue); - aMenuPane->SetItemDimmed(ECmdLogout, ETrue); - aMenuPane->SetItemDimmed(ECmdSettings, ETrue); - aMenuPane->SetItemDimmed(ECmdChangeConnectioninOnlineState, ETrue); - aMenuPane->SetItemDimmed(ECmdChangeConnectioninWaitingState, ETrue); - if( !CancelLoginSupportedL()) - { - aMenuPane->SetItemDimmed(ECmdCancelLogin, ETrue); - } - break; - } - case TVIMPSTEnums::ESVCEWaitingForNetwork: - case TVIMPSTEnums::ESVCEUpdatingContacts: - { - aMenuPane->SetItemDimmed(ECmdChangeStatus, ETrue); - aMenuPane->SetItemDimmed(ECmdCreateNewOption, ETrue); - aMenuPane->SetItemDimmed(ECmdMyAvatar, ETrue); - aMenuPane->SetItemDimmed(ECmdLogin, ETrue); - aMenuPane->SetItemDimmed(ECmdCancelLogin, ETrue); - aMenuPane->SetItemDimmed(ECmdChangeConnectioninOnlineState, ETrue); - if (!ChangeConnectionSupportedL()) - { - aMenuPane->SetItemDimmed(ECmdChangeConnectioninWaitingState, ETrue); - } - break; - } - case TVIMPSTEnums::ESVCENetworkDisConnecting: - { - aMenuPane->SetItemDimmed(ECmdChangeStatus, ETrue); - aMenuPane->SetItemDimmed(ECmdCreateNewOption, ETrue); - aMenuPane->SetItemDimmed(ECmdMyAvatar, ETrue); - aMenuPane->SetItemDimmed(ECmdLogin, ETrue); - aMenuPane->SetItemDimmed(ECmdCancelLogin, ETrue); - aMenuPane->SetItemDimmed(ECmdSettings, ETrue); - aMenuPane->SetItemDimmed(ECmdLogout, ETrue); - aMenuPane->SetItemDimmed(ECmdChangeConnectioninWaitingState, ETrue); - aMenuPane->SetItemDimmed(ECmdChangeConnectioninOnlineState, ETrue); - break; - } - default: - { - break; - } - } - // common to all - aMenuPane->SetItemDimmed(ECmdOpenConversation, ETrue); - aMenuPane->SetItemDimmed(ECmdContactAddAsFriend, ETrue); - aMenuPane->SetItemDimmed(KAiwCmdCall, ETrue); - aMenuPane->SetItemDimmed(ECmdCloseConversation, ETrue); - aMenuPane->SetItemDimmed(ECmdContactDetails, ETrue); - aMenuPane->SetItemDimmed(ECmdOpenFriendRequest, ETrue); - aMenuPane->SetItemDimmed(ECmdContactEdit, ETrue); - aMenuPane->SetItemDimmed(ECmdAIWAddToContact, ETrue); - aMenuPane->SetItemDimmed(ECmdAIWLinkToContact, ETrue); - aMenuPane->SetItemDimmed(ECmdBlock, ETrue); - aMenuPane->SetItemDimmed(ECmdUnBlock, ETrue); - aMenuPane->SetItemDimmed(ECmdContactDelete, ETrue); - //based on items in focus decide what main menu items needs to be shown - switch(itemType) - { - case TVIMPSTEnums::EOwnStatusItem: - case TVIMPSTEnums::EInvalid: // this case comes when no matched found for findpane characters - { - break; - } - case TVIMPSTEnums::EContactItem: - { - //conversation related menu - MVIMPSTStorageServiceView* storage = - CVIMPSTStorageManagerFactory::ContactListInterfaceL(iServiceId); - TBool localstore = EFalse; - if (storage) - { - localstore = storage->IsLocalStore(); - } - if (TVIMPSTEnums::ESVCERegistered == serviceTabState) - { - TPtrC selectedItem = iCommandHandler.GetProcessInterface(). - GetItemUserId(itemIndex); - if( selectedItem != KNullDesC ) - { - if (imService) - { - if ( iCommandHandler.GetProcessInterface().IsConversationExist( itemIndex ) ) - { - aMenuPane->SetItemDimmed(ECmdCloseConversation, EFalse); - aMenuPane->SetItemDimmed(ECmdOpenConversation, ETrue); - } - else - { - aMenuPane->SetItemDimmed(ECmdOpenConversation, EFalse); - } - } - } - if(voipService) - { - TInt index; - aMenuPane->MenuItemExists(KAiwCmdCall, index); - aMenuPane->SetItemDimmed(KAiwCmdCall, EFalse); - - CAiwDialDataExt* dialDataExt = CAiwDialDataExt::NewL(); - CleanupStack::PushL( dialDataExt ); - dialDataExt->SetServiceId( iServiceId ); - ReInitializeServiceHandlerL(); - CAiwGenericParamList& paramList = iServiceHandler->InParamListL(); - dialDataExt->FillInParamListL( paramList ); - TAiwVariant variant; - TAiwGenericParam param ( EGenericParamSIPAddress, variant ); - paramList.AppendL( param ); - iServiceHandler->InitializeMenuPaneL( *aMenuPane, - R_SERVTAB_TABBED_VIEW_MENU, - // Must not overlap with the other menu ids! - ECmdAIWRangeStart, - paramList ); - - CleanupStack::PopAndDestroy( dialDataExt ); - - CEikMenuPaneItem::SData& data = aMenuPane->ItemDataByIndexL(index); - //add to AIW command map of the menuextension manager - iMenuExtension.AddToAIWCommandMap(KAiwCmdCall,data.iCommandId); - } - - aMenuPane->SetItemDimmed(ECmdContactDetails, EFalse); - - if (localstore) - { - //ContactEdit is enabled only for localstore - aMenuPane->SetItemDimmed(ECmdContactEdit, EFalse); - } - if(iEngine.IsBlockSupportedL()) - { - TVIMPSTEnums::TOnlineStatus status = iCommandHandler.GetProcessInterface().GetOnlineStatusL(itemIndex); - if(TVIMPSTEnums::EBlocked == status ) - { - aMenuPane->SetItemDimmed(ECmdUnBlock, EFalse); - } - else if( selectedItem .Length() ) - { - aMenuPane->SetItemDimmed(ECmdBlock, EFalse); - } - } - aMenuPane->SetItemDimmed(ECmdContactDelete, EFalse); - - - if (!localstore) - { - aMenuPane->SetItemDimmed(ECmdAIWAddToContact, EFalse); - aMenuPane->SetItemDimmed(ECmdAIWLinkToContact, EFalse); - } - } - else if (TVIMPSTEnums::ESVCENotRegistered == serviceTabState) - { - if(!presenceService) - { - if (localstore) - { - //ContactEdit is enabled only for localstore - aMenuPane->SetItemDimmed(ECmdContactEdit, EFalse); - } - } - } - - break; - } - case TVIMPSTEnums::EUnknonContactItem : - { - aMenuPane->SetItemDimmed(ECmdContactAddAsFriend, EFalse); - aMenuPane->SetItemDimmed(ECmdContactDetails, ETrue); - aMenuPane->SetItemDimmed(ECmdOpenFriendRequest, ETrue); - aMenuPane->SetItemDimmed(ECmdContactEdit, ETrue); - aMenuPane->SetItemDimmed(ECmdAIWAddToContact, ETrue); - aMenuPane->SetItemDimmed(ECmdAIWLinkToContact, ETrue); - aMenuPane->SetItemDimmed(ECmdBlock, ETrue); - aMenuPane->SetItemDimmed(ECmdUnBlock, ETrue); - aMenuPane->SetItemDimmed(ECmdContactDelete, ETrue); - if( iEngine.IsBlockSupportedL() ) - { - aMenuPane->SetItemDimmed(ECmdBlock, EFalse); - } - if (imService) - { - if (iCommandHandler.GetProcessInterface().IsConversationExist( itemIndex )) - { - aMenuPane->SetItemDimmed(ECmdCloseConversation, EFalse); - aMenuPane->SetItemDimmed(ECmdOpenConversation, ETrue); - } - else - { - aMenuPane->SetItemDimmed(ECmdOpenConversation, EFalse); - } - } - if(voipService) - { - TInt index; - aMenuPane->MenuItemExists(KAiwCmdCall, index); - - aMenuPane->SetItemDimmed(KAiwCmdCall, EFalse); - - CAiwDialDataExt* dialDataExt = CAiwDialDataExt::NewL(); - CleanupStack::PushL( dialDataExt ); - dialDataExt->SetServiceId( iServiceId ); - ReInitializeServiceHandlerL(); - CAiwGenericParamList& paramList = iServiceHandler->InParamListL(); - dialDataExt->FillInParamListL( paramList ); - TAiwVariant variant; - TAiwGenericParam param ( EGenericParamSIPAddress, variant ); - paramList.AppendL( param ); - iServiceHandler->InitializeMenuPaneL( *aMenuPane, - R_SERVTAB_TABBED_VIEW_MENU, - // Must not overlap with the other menu ids! - ECmdAIWRangeStart, - paramList ); - CleanupStack::PopAndDestroy( dialDataExt ); - - CEikMenuPaneItem::SData& data = aMenuPane->ItemDataByIndexL(index); - //add to AIW command map of the menuextension manager - iMenuExtension.AddToAIWCommandMap(KAiwCmdCall,data.iCommandId); - - } - break; - } - case TVIMPSTEnums::EFriendRequestItem: - { - aMenuPane->SetItemDimmed(ECmdContactDetails, ETrue); - aMenuPane->SetItemDimmed(ECmdContactEdit, ETrue); - aMenuPane->SetItemDimmed(ECmdAIWAddToContact, ETrue); - aMenuPane->SetItemDimmed(ECmdAIWLinkToContact, ETrue); - aMenuPane->SetItemDimmed(ECmdBlock, ETrue); - aMenuPane->SetItemDimmed(ECmdUnBlock, ETrue); - aMenuPane->SetItemDimmed(ECmdContactDelete, ETrue); - aMenuPane->SetItemDimmed(ECmdOpenFriendRequest, EFalse); - if(iEngine.IsBlockSupportedL()) - { - aMenuPane->SetItemDimmed(ECmdBlock, EFalse); - } - break; - } - default: - { - break; - } - } - // append the servicetab options(R_TABBED_VIEW_OPTIONS_MENU) and tabbed - // viem(R_SERVTAB_TABBED_VIEW_MENU) menu items and the the service - // specific options and then settings,help and exit.(R_TABBED_VIEW_GENERAL_MENU) - iMenuExtension.OfferMenuPaneToPlugins(ECmdCancelLogin,*aMenuPane,iServiceId); - - break; - } - - case R_SERVTAB_CREATENEW_OPTION_SUBMENU: - { - - aMenuPane->SetItemDimmed(ECmdAddContact, ETrue); - aMenuPane->SetItemDimmed(ECmdAddFromPhoneBook, ETrue); - aMenuPane->SetItemDimmed(ECmdSearch, ETrue); - - if (TVIMPSTEnums::ESVCERegistered == serviceTabState) - { - aMenuPane->SetItemDimmed(ECmdAddContact, EFalse); - aMenuPane->SetItemDimmed(ECmdAddFromPhoneBook, EFalse); - - //make search request using search manager in engine - MVIMPSTEngineExtentionFeatures* feature = - iEngine.ExtentionFeatures(TVIMPSTEnums::ESearch); - - if (feature) - { - if ( TVIMPSTEnums::ESupported == feature->IsSupported() ) - { - aMenuPane->SetItemDimmed(ECmdSearch, EFalse);//show if search is supported. - } - } - } - break; - } - - case R_SERVTAB_CHANGEAVATAR_SUBMENU: - { - if ((TVIMPSTEnums::ESVCERegistered != serviceTabState) || - (!presenceService)) - { - aMenuPane->SetItemDimmed(ECmdAvatarGallery, ETrue); - aMenuPane->SetItemDimmed(ECmdAvatarNewPhoto, ETrue); - aMenuPane->SetItemDimmed(ECmdDefaultAvatar, ETrue); - } - break; - } - - case R_TABBED_VIEW_GENERAL_MENU: - { - switch (serviceTabState) - { - case TVIMPSTEnums::ESVCENotRegistered: - { - aMenuPane->SetItemDimmed(ECmdLogout, ETrue); - aMenuPane->SetItemDimmed(ECmdCancelLogin, ETrue); - aMenuPane->SetItemDimmed(ECmdGetBlockedList, ETrue); - break; - } - case TVIMPSTEnums::ESVCERegistered: - { - aMenuPane->SetItemDimmed(ECmdLogin, ETrue); - aMenuPane->SetItemDimmed(ECmdCancelLogin, ETrue); - break; - } - case TVIMPSTEnums::ESVCENetworkConnecting: - { - aMenuPane->SetItemDimmed(ECmdLogin, ETrue); - aMenuPane->SetItemDimmed(ECmdGetBlockedList, ETrue); - aMenuPane->SetItemDimmed(ECmdLogout, ETrue); - aMenuPane->SetItemDimmed(ECmdSettings, ETrue); - if( !CancelLoginSupportedL()) - { - aMenuPane->SetItemDimmed(ECmdCancelLogin, ETrue); - } - break; - } - case TVIMPSTEnums::ESVCEWaitingForNetwork: - case TVIMPSTEnums::ESVCEUpdatingContacts: - { - aMenuPane->SetItemDimmed(ECmdLogin, ETrue); - aMenuPane->SetItemDimmed(ECmdCancelLogin, ETrue); - aMenuPane->SetItemDimmed(ECmdGetBlockedList, ETrue); - break; - } - case TVIMPSTEnums::ESVCENetworkDisConnecting: - { - aMenuPane->SetItemDimmed(ECmdLogin, ETrue); - aMenuPane->SetItemDimmed(ECmdCancelLogin, ETrue); - aMenuPane->SetItemDimmed(ECmdSettings, ETrue); - aMenuPane->SetItemDimmed(ECmdGetBlockedList, ETrue); - aMenuPane->SetItemDimmed(ECmdLogout, ETrue); - break; - } - default: - { - break; - } - - - } - break; - } - } - - } - -// -------------------------------------------------------------------------- -// CVIMPSTUiTabbedView::HandleCommandL -// -------------------------------------------------------------------------- -// -void CVIMPSTUiTabbedView::HandleCommandL(TInt aCommand) - { - //offer to extensions first, then to aiw. - if(iMenuExtension.OfferHandleCommandToPlugins(aCommand)) - { - //command is executed, hence return. - return; - } - ReInitializeServiceHandlerL(); - if ( iServiceHandler ) - { - TInt serviceCommandId =iServiceHandler->ServiceCmdByMenuCmd(aCommand); - - if ( iContainer && serviceCommandId == KAiwCmdCall ) - { - MakeVoipCallL(); - return; - } - } - if( iContainer ) - { - iContainer->SetClrFindPaneFlag(ETrue); - } - - switch (aCommand) - { - case ECmdLogin: - { - LoginL(); - break; - } - case ECmdSearch: - { - SearchContactsL(); - break; - } - case ECmdAddFromPhoneBook: - { - - LaunchFetchDialogL(); - break; - } - case EAknCmdHelp: - { - TBool imSupported = iEngine.IsSubServiceSupportedL(TVIMPSTEnums::EIM); - TBool voipSupported = iEngine.IsSubServiceSupportedL(TVIMPSTEnums::EVoip); - if ( imSupported ) - { - if ( voipSupported ) - { // both Im and VOIP are enabled - LaunchHelpL( KSERVTAB_HLP_MAIN_VIEW_VOIPIM ); - } - else - {// only IM is enabled - LaunchHelpL( KSERVTAB_HLP_MAIN_VIEW_IM ); - } - } - else if ( voipSupported ) - { // only VOIP is enabled - LaunchHelpL( KSERVTAB_HLP_MAIN_VIEW_VOIP ); - } - - break; - } - case EAknCmdExit: - case EAknSoftkeyExit: - { - //exit from phone book. - Pbk2AppUi()->HandleCommandL( EAknSoftkeyExit ); - - break; - } - case ECmdSettings: - { - LaunchSettingsViewL(); - break; - } - - case ECmdLogout: - { - // this is for actual network logout - iCommandHandler.HandleCommandL(ELogoutService, this, &iServiceId); - break; - } - - case ECmdContactDetails: - { - TInt index = KErrNotFound; - if (iContainer) - { - index = iContainer->CurrentItemIndex(); - } - if(KErrNotFound != index) - { - TLaunchCCAData data; - data.iIndex = index; - iConnection = TCCAFactory::NewConnectionL(); - data.iConnection = iConnection; - iCommandHandler.HandleCommandL(ELaunchCCA, this, &data ); - } - break; - } - case ECmdOpenConversation: - { - if( iContainer ) - { - iContainer->SendMessageL(); - } - - break; - } - - case ECmdAddContact: - { - AddContactL( R_IM_ADD_CONTACT_MANUAL_QUERY ); - break; - } - - case ECmdContactEdit: - { - EditContactL(); - break; - } - case ECmdContactDelete: - { - if( iContainer ) - { - iContainer->SetClrFindPaneFlag(EFalse); - } - DeleteContactL(); - break; - } - case ECmdChangeStatus: - { - ChangeStatusProcessL(); - break; - } - case ECmdCancelLogin: - { - iCommandHandler.HandleCommandL( ECancelLogin , this , NULL ); - break; - } - - case ECmdOpenFriendRequest: - { - ProcessFriendRequestL(); - break; - } - - case ECmdAvatarGallery: - case ECmdAvatarNewPhoto: - { - CAvatarSelectionHandler* avatarHandler = CAvatarSelectionHandler::NewLC(); - HBufC* avatarFile = avatarHandler->HandleAvatarSelectionL( aCommand ); - if( avatarFile ) // if user selected the image - { - CleanupStack::PushL( avatarFile ); - if(iWaitNote) - { - delete iWaitNote; - iWaitNote = NULL; - } - iWaitNote = CVIMPSTUtilsWaitNote::ShowWaitNoteL( R_QTN_SERVTAB_CHANGE_AVATAR_CHANGING, EFalse , ETrue ); - ChangeOwnAvatarL( *avatarFile , avatarHandler->MimeTypeL() ); - CleanupStack::PopAndDestroy(); //avatarFile - } - CleanupStack::PopAndDestroy(); // avatarHandler - break; - } - case ECmdDefaultAvatar: - { - ChangeOwnAvatarL( KNullDesC , KNullDesC8 ); - break; - } - - case ECmdCloseConversation: - { - CloseConversationL(); - break; - } - case ECmdChangeConnectioninWaitingState: - case ECmdChangeConnectioninOnlineState: - { - iEngine.ChangeConnectionL(); - break; - } - case ECmdBlock: - { - if( iContainer ) - { - iContainer->SetClrFindPaneFlag(EFalse); - } - BlockContactL(ETrue); - break; - } - case ECmdUnBlock: - { - if( iContainer ) - { - iContainer->SetClrFindPaneFlag(EFalse); - } - BlockContactL(); - break; - } - case ECmdGetBlockedList: - { - ShowBlockedContactListL(); - break; - } - case ECmdAIWAddToContact: - case ECmdAIWLinkToContact: - { - CreateOrLinkToPhoneBookL(aCommand); - break; - } - case ECmdContactAddAsFriend: - { - TInt index = KErrNotFound; - if (iContainer) - { - index = iContainer->CurrentItemIndex(); - } - MVIMPSTProcessArray& arrayprocess = iCommandHandler.GetProcessInterface(); - TVIMPSTEnums::TItem itemType = arrayprocess.GetType( index ); - if( itemType == TVIMPSTEnums::EUnknonContactItem ) - { - TPtrC userId = arrayprocess.GetItemUserId( index ); - AddContactL( R_IM_ADD_CONTACT_MANUAL_QUERY , userId ); - } - break; - } - case EAknCmdHideInBackground: - { - //in case of EAknCmdHideInBackground phonebook be in - //background and all the child application should close - - if(iConnection)// close connection to close cca - { - iConnection->Close(); - iConnection = NULL; - } - if (iServiceHandler)//reset selectionhandler so that it closes all the phonebook forms if open - { - iServiceHandler->Reset(); - iIsServiceHandleReSet = ETrue; - } - - Pbk2AppUi()->HandleCommandL( aCommand ); - - break; - } - default: - { - Pbk2AppUi()->HandleCommandL( aCommand ); - break; - } - } - } - - - -// -------------------------------------------------------------------------- -// CVIMPSTUiTabbedView::DoActivateViewL -// -------------------------------------------------------------------------- -// -void CVIMPSTUiTabbedView::DoActivateViewL( const TVwsViewId& aPrevViewId, - TUid /*aCustomMessageId*/, - const TDesC8& aCustomMessage) - { - // When ST is launched from widget or universal indicator plugin - // user clicks twice continuously, then DoActivateL is called - // twice, as iContainer is NULL since construction is not complete - // then it creates two controls (containers), hence to avoid this - // situation, we are checking if construction of iContainer has - // started, then we ignore DoActivateL second time. - MPbk2ViewActivationTransaction* viewActivationTransaction = - Pbk2AppUi()->Pbk2ViewExplorer()->HandleViewActivationLC( - iView.Id(), - aPrevViewId, - &iEngine.ServiceName(), - NULL, - EUpdateAll ); - - // Notifies startup monitor of view activation - if( Pbk2AppUi()->Pbk2StartupMonitor() ) - { - Pbk2AppUi()->Pbk2StartupMonitor()-> - NotifyViewActivationL( iView.Id() ); - } - - if (iEngine.IsUnInstalled()) - { - // engine is uninstalled, disable left softkey i.e options and provide only exit. - iView.Cba()->SetCommandSetL(R_AVKON_SOFTKEYS_EXIT); - } - else - { - // engine is constructed completely, provide tabbed view softkeys. - iView.Cba()->SetCommandSetL(R_IM_CONTACTS_TABBED_VIEW_SOFTKEYS); - } - - - ReadAndSetOwnUserIdL(); - - if (!iContainer&& !iContainerCreationStarted) - { - iContainerCreationStarted = ETrue; - iContainer = MVIMPSTUiTabbedViewControlFactory::NewTabControlL(*this, - &iView,iCommandHandler, iServiceId, - *iBrandHandler, iEngine, iView.Cba()); - // take the control pointer - CCoeControl* cCoeControl = iContainer->CoeControl(); - iAppUi->AddToStackL( iView, cCoeControl ); - cCoeControl->SetMopParent( &iView ); - cCoeControl->SetRect( iView.ClientRect() ); - cCoeControl->ActivateL(); - } - iStatusPaneHandler->SetTextL( iEngine.ServiceName() ); - // Commit application-wide state changes - viewActivationTransaction->Commit(); - CleanupStack::PopAndDestroy(); //viewActivationTransaction - - //CreateToolBarL(); - - if(TVIMPSTEnums::ESVCERegistered == iEngine.ServiceState()) - { - if(iIsToolBarHidden) - { - ShowHideFixedToolbarL(ETrue); - } - } - else - { - if(!iIsToolBarHidden) - { - ShowHideFixedToolbarL(EFalse); - } - } - - if(iContainer && iFocussedIDHistory ) - { - iContainer->SetFocussedId( iFocussedIDHistory->Des() ); - } - - /* - * aCustomMessage has following format if it is coming from Service Widget - * when you click on widget - * we need to unpack data in similar format - * version number --> stream.WriteInt8L(1); - * EEnd --> stream.WriteInt8L( 0 ); - * Service Id --> stream.WriteInt32L( iServiceId ); - * - * If function call is coming from other than service widget then - * aCustomMessage will not have data in above format - */ - - if(aCustomMessage.Length()) - { - RDesReadStream stream( aCustomMessage); - stream.PushL(); - TInt serviceId = KErrNotFound; - TRAP_IGNORE( const TUint versionNumber = stream.ReadUint8L(); //equal to 1 - TInt type = stream.ReadInt8L(); // equal to eend - serviceId = stream.ReadInt32L(); ); - CleanupStack::PopAndDestroy();//stream - if( serviceId == iServiceId ) - { - // this case will get excuted only when there is - // fresh login from service widget for first time only - // uid has been taken for autologin - // if the service id is matches to aCustomMessage - // it is auto login ,called from service widget - // start the login procedure - LoginL(); - } - } - UpdateToolbarL(); - } - -// -------------------------------------------------------------------------- -// CVIMPSTUiTabbedView::DoDeactivate -// -------------------------------------------------------------------------- -// -void CVIMPSTUiTabbedView::DoDeactivate() - { - - if(iFixedToolbar) - { - iIsToolBarHidden = ETrue; - delete iFixedToolbar; - iFixedToolbar = NULL; - } - - if (iContainer) - { - delete iFocussedIDHistory; - iFocussedIDHistory = NULL; - TRAP_IGNORE( iFocussedIDHistory = iContainer->GetFocussedId().AllocL() ); - iAppUi->RemoveFromStack( iContainer->CoeControl() ); - delete iContainer; - iContainer = NULL; - iContainerCreationStarted = EFalse; - } - } - -// -------------------------------------------------------------------------- -// CVIMPSTUiTabbedView::HandleForegroundEventL -// -------------------------------------------------------------------------- -// -TAny* CVIMPSTUiTabbedView::UIExtensionViewExtension( - TUid aExtensionUid ) - { - if (aExtensionUid == KMPbk2UIExtensionView2Uid) - { - return static_cast(this); - } - return NULL; - } -// -------------------------------------------------------------------------- -// CVIMPSTUiTabbedView::HandleForegroundEventL -// -------------------------------------------------------------------------- -// - - void CVIMPSTUiTabbedView::HandleForegroundEventL(TBool aForeground) - { - if( aForeground && TVIMPSTEnums::ESVCENotRegistered == iEngine.ServiceState() ) - { - // user might has changed the setting read the new and refresh the view - // user can change setting in offline only - ReadAndSetOwnUserIdL(); - } - } - -// -------------------------------------------------------------------------- -// CVIMPSTUiTabbedView::HandleCommandKeyL -// -------------------------------------------------------------------------- -// -TBool CVIMPSTUiTabbedView::HandleCommandKeyL(const TKeyEvent& aKeyEvent, TEventCode /*aType*/) - { - TBool result = EFalse; - switch (aKeyEvent.iCode) - { - default: - { - break; - } - } - return result; - } - -// -------------------------------------------------------------------------- -// CVIMPSTUiTabbedView::HandleStatusPaneSizeChange -// -------------------------------------------------------------------------- -// -void CVIMPSTUiTabbedView::HandleStatusPaneSizeChange() - { - // Resize the container to fill the client rectangle - if (iContainer) - { - iContainer->CoeControl()->SetRect( iView.ClientRect() ); - } - } - -// -------------------------------------------------------------------------- -// CVIMPSTUiTabbedView::CommandHandlerL -// -------------------------------------------------------------------------- -// -MVIMPSTCmdHandler& CVIMPSTUiTabbedView::CommandHandlerL() - { - return iCommandHandler; - } - - -// -------------------------------------------------------------------------- -// CVIMPSTUiTabbedView::CommandFinishedL -// -------------------------------------------------------------------------- -// - -void CVIMPSTUiTabbedView::CommandFinishedL( - const MVIMPSTCmd& aCommand ) - { - TRACER_AUTO; - //handle the observer for commands issues thro HandleCommandL() - - switch (aCommand.CommandId()) - { - case ELoginService: - { - //login command is complete - //use aCommand.Result() to get the data - //Ownership is not given to the caller - break; - } - case ELogoutService: - { - //logout command is complete - //use aCommand.Result() to get the data - //Ownership is not given to the caller - break; - } - case ECmdProcessAcceptedContactNew: // accept create new - case ECmdProcessAcceptedContactExist: // update existing - case ECmdProcessSelectedContactNew: - case ECmdProcessSelectedContactExist:// add from phonebook - case EAddContact: - { - //addcontact command is complete - //use aCommand.Result() to get the data - //Ownership is not given to the caller - //some error occured. - if (iWaitNote) - { - delete iWaitNote; - iWaitNote = NULL; - } - if(aCommand.Result() != KErrNone) - { - ShowErrorNoteL( aCommand.Result() ); - } - break; - } - case EDeleteContact: - { - //addcontact command is complete - //use aCommand.Result() to get the data - //Ownership is not given to the caller - //some error occured. - if (iWaitNote) - { - delete iWaitNote; - iWaitNote = NULL; - } - if(aCommand.Result() != KErrNone) - { - HBufC* prompt = NULL; - prompt = StringLoader::LoadLC( R_IM_ERROR_SERVICE_ERR ); - TInt ret( VIMPSTUtilsDialog::DisplayErrorNoteL( *prompt ) ); - CleanupStack::PopAndDestroy(prompt); - } - break; - } - case EChangeOwnStatus: - { - TInt error = aCommand.Result(); - if( KErrNone == error ) - { - // show confirmation note - HBufC* text = CEikonEnv::Static()->AllocReadResourceLC( R_QTN_CHAT_CHANGE_STATUS_CHANGED ); - CAknConfirmationNote* dlg = new( ELeave )CAknConfirmationNote(); - dlg->ExecuteLD( *text ); - CleanupStack::PopAndDestroy( text ); - //get the status from the engine and update in the ui. - if(iContainer) - { - iContainer->HandleItemAdditionL(); - } - - } - else if( KErrCancel == error ) - { - // user cancelled, status was not updated - HBufC* text = NULL; - text = StringLoader::LoadLC( R_QTN_IM_CHANGE_STATUS_NOT_CHANGED ); - VIMPSTUtilsDialog::DisplayNoteDialogL( *text ); - CleanupStack::PopAndDestroy(); //onlineText - } - else - { - // change status failed - HBufC* failed = StringLoader::LoadLC( R_QTN_CHAT_CHANGE_STATUS_FAILED ); - VIMPSTUtilsDialog::DisplayErrorNoteL( *failed ); - CleanupStack::PopAndDestroy( failed ); - } - break; - } - case EChangeOwnMessage: - { - TInt error = aCommand.Result(); - if( KErrNone == error ) - { - // show note qtn_chat_change_message_changing - HBufC* prompt = NULL; - prompt = StringLoader::LoadLC( R_QTN_CHAT_CHANGE_MESSAGE_CHANGED ); - VIMPSTUtilsDialog::DisplayNoteDialogL( *prompt); - CleanupStack::PopAndDestroy(prompt); - } - else if( KErrCancel == error) - { - HBufC* prompt = NULL; - prompt = StringLoader::LoadLC( R_QTN_IM_CHANGE_STATUS_NOT_CHANGED ); - VIMPSTUtilsDialog::DisplayNoteDialogL( *prompt); - CleanupStack::PopAndDestroy(prompt); - } - else - { - HBufC* prompt = NULL; - prompt = StringLoader::LoadLC( R_QTN_CHAT_CHANGE_MESSAGE_FAILED ); - VIMPSTUtilsDialog::DisplayNoteDialogL(*prompt ); - CleanupStack::PopAndDestroy(prompt); - } - - break; - } - case ESearch: - { - // Search command is complete - //use aCommand.Result() to get the data - if(iWaitNote) - { - delete iWaitNote; - iWaitNote = NULL; - } - if(aCommand.Result() != KErrNone) - { - HBufC* prompt = NULL; - prompt = StringLoader::LoadLC(R_QTN_CHAT_ERROR_NOT_SUP_FUNCTIONS ); - VIMPSTUtilsDialog::DisplayErrorNoteL( *prompt ) ; - CleanupStack::PopAndDestroy(prompt); - LaunchViewL(iExtensionService.TabbedViewId()); - } - } - case EFriendRejected: - case EFriendAccpeted: - { - if(iWaitNote) - { - delete iWaitNote; - iWaitNote = NULL; - } - if( ( aCommand.Result() != KErrNone ) && ( aCommand.CommandId() == EFriendAccpeted ) ) - { - HBufC* prompt = StringLoader::LoadLC( R_QTN_SERVTAB_SAVING_CONTACT_FAILED ); - VIMPSTUtilsDialog::DisplayErrorNoteL( *prompt ) ; - CleanupStack::PopAndDestroy(prompt); - } - break; - } - case EChangeOwnAvtar: - { - if(aCommand.Result() == KErrNone) // successfull show confirmation note - { - if(iWaitNote) - { - delete iWaitNote; - iWaitNote = NULL; - } - } - else // show error note - { - HBufC* prompt = StringLoader::LoadLC( R_QTN_SERVTAB_ERROR_UPDATE_AVATAR ); - VIMPSTUtilsDialog::DisplayErrorNoteL( *prompt ) ; - CleanupStack::PopAndDestroy(prompt); - } - break; - } - case ECmdBlockContact: - { - TRACE("block finished enter"); - //blockcontact command is complete - //use aCommand.Result() to get the data - //Ownership is not given to the caller - //some error occured. - if(iWaitNote) - { - delete iWaitNote; - iWaitNote = NULL; - } - if(aCommand.Result() != KErrNone) - { - TRACE( "aCommand result = %d ", aCommand.Result() ); - HBufC* prompt = NULL; - prompt = StringLoader::LoadLC( R_QTN_CHAT_BLOCKING_FAILED ); - TRACE("blocking error prompt displaying"); - TInt ret( VIMPSTUtilsDialog::DisplayErrorNoteL( *prompt ) ); - CleanupStack::PopAndDestroy(prompt); - } - break; - } - case ECmdUnBlockContact: - { - TRACE("unblock finished enter"); - - if(iWaitNote) - { - delete iWaitNote; - iWaitNote = NULL; - } - //unblockcontact command is complete - //use aCommand.Result() to get the data - //Ownership is not given to the caller - //some error occured. - if(aCommand.Result() != KErrNone) - { - TRACE( "aCommand result = %d ", aCommand.Result() ); - HBufC* prompt = NULL; - prompt = StringLoader::LoadLC( R_QTN_CHAT_UNBLOCKING_FAILED ); - TRACE("unblocking error prompt displaying"); - TInt ret( VIMPSTUtilsDialog::DisplayErrorNoteL( *prompt ) ); - CleanupStack::PopAndDestroy(prompt); - } - else - { - TRACE("unblocking successful"); - - if(iContainer) - { - TInt index = CurrentItemIndex(); - if( index > 0 ) - { - MVIMPSTProcessArray& arrayprocess = iCommandHandler.GetProcessInterface(); - HBufC* contactId = arrayprocess.GetItemUserId(index).AllocLC(); - if( contactId->Length() ) - { - TRACE("HandleAvatarRefreshl calling for unblock"); - iContainer->HandleAvatarRefreshL(*contactId,EFalse); - - } - } - CleanupStack::PopAndDestroy(); - } - } - break; - } - default: - { - //should never be here. - break; - } - } - } - -// -------------------------------------------------------------------------- -// CVIMPSTUiTabbedView::ShowErrorNoteL -// -------------------------------------------------------------------------- -void CVIMPSTUiTabbedView::ShowErrorNoteL(TInt aError ) - { - TRACER_AUTO; - HBufC* textResource = NULL; - switch( aError) - { - case EErrExistInBlockList: - { - textResource = StringLoader::LoadLC( R_QTN_SERVTAB_ADD_FRIEND_BLOCKED); - break; - } - case KErrAlreadyExists : - case EErrExistInContactList: - { - textResource = StringLoader::LoadLC( R_QTN_SERTAB_CONTACT_ALREADY_EXISTS_ERROR_NOTE); - break; - } - default : - { - textResource = StringLoader::LoadLC( R_QTN_SERVTAB_SAVING_CONTACT_FAILED ); - break; - } - } - if( textResource ) - { - CAknInformationNote* note = new ( ELeave ) CAknInformationNote; - note->ExecuteLD( *textResource ); - CleanupStack::PopAndDestroy( textResource ); - } - } - -// -------------------------------------------------------------------------- -// CVIMPSTUiTabbedView::HandleCommandEventL -// -------------------------------------------------------------------------- -// -void CVIMPSTUiTabbedView::HandleCommandEventL(TVIMPSTEnums::TVIMPSTRegistrationState aState, TInt /*aServiceError*/) - { - switch (aState) - { - case TVIMPSTEnums::ESVCERegistered: - { - // this is to make sure that it always has the user id - // some services they do not have the user id in offline case - // like skype ,get the user if service is logged in - if( !iUserId || iUserId->Length() == 0 ) - { - // read if user id is empty only - ReadAndSetOwnUserIdL(); - } - TInt isSuccessfulLogin = 0; - iSettingsStore->GetL(iServiceId, EServiceSuccessfullLogin, isSuccessfulLogin); - if(!isSuccessfulLogin) - { - isSuccessfulLogin = 1; - iSettingsStore->SetL(iServiceId, EServiceSuccessfullLogin, isSuccessfulLogin); - } - if(iIsToolBarHidden) - { - ShowHideFixedToolbarL(ETrue); - } - break; - } - case TVIMPSTEnums::ESVCENotRegistered: - { - // might user has choosen some diff user id while login - // set to store and engine etc - ReadAndSetOwnUserIdL(); - - // no need to hide the tool bar here as its already called while in the - // disconnecting state. - // assume in some cornere scenario, where network is lost, and the ui does not - // get a callback for disconnecting state then we need to call hidetoolbar in this case. - // hence the flag iIsToolBarHidden will set it when ever the tool bar is hidden - if(!iIsToolBarHidden) - { - ShowHideFixedToolbarL(EFalse); - } - break; - } - case TVIMPSTEnums::ESVCENetworkConnecting: - { - // might user has choosen some diff user id while login - // set to store and engine etc - ReadAndSetOwnUserIdL(); - break; - } - case TVIMPSTEnums::ESVCEWaitingForNetwork: - { - break; - } - case TVIMPSTEnums::ESVCENetworkDisConnecting: - { - if(!iIsToolBarHidden) - { - ShowHideFixedToolbarL(EFalse); - } - break; - } - case TVIMPSTEnums::ESVCEUpdatingContacts: - { - // might user has choosen some diff user id while login - // set to store and engine etc - // this is to make sure that it always has the user id - // some services they do not have the user id in offline case - // like skype ,get the user if service is logged in - if( !iUserId || iUserId->Length() == 0 ) - { - // read if user id is empty only - ReadAndSetOwnUserIdL(); - } - break; - } - default: - { - //should never be here. - break; - } - - } - if(iContainer) - { - iContainer->HandleItemAdditionL(); - } - - } - -// -------------------------------------------------------------------------- -// CVIMPSTUiTabbedView::CurrentItemIndex -// -------------------------------------------------------------------------- -// -TInt CVIMPSTUiTabbedView:: CurrentItemIndex() - { - TInt index = KErrNone; - iContainer?(index = iContainer->CurrentItemIndex()):(index = KErrNotFound); - return index; - } - - -// -------------------------------------------------------------------------- -// CVIMPSTUiTabbedView::ReadAndSetOwnUserIdL() -// -------------------------------------------------------------------------- -// -void CVIMPSTUiTabbedView::ReadAndSetOwnUserIdL() - { - if( iUserId ) - { - delete iUserId; - iUserId = NULL; - } - iUserId = iEngine.GetOwnUserIdFromCChOrStorageL(); - iEngine.SetOwnUserIdIfChangedL( *iUserId ); - } -// -------------------------------------------------------------------------- -// CVIMPSTUiTabbedView::AddContactL -// -------------------------------------------------------------------------- -// -void CVIMPSTUiTabbedView::AddContactL( const TInt aResouceId, const TDesC& aUserId ) - { - TRACER_AUTO; - MVIMPSTStorageServiceView* storage = CVIMPSTStorageManagerFactory::ContactListInterfaceL(iServiceId); - if (storage) - { - if (!storage->IsLocalStore()) - { - HBufC* userid = HBufC::NewL(KUsernameMaxLength); - CleanupStack::PushL( userid ); - TPtr useridPtr( userid->Des() ); - - useridPtr.Copy( aUserId.Left( KUsernameMaxLength ) ); - TInt result = 0; - if( useridPtr == KNullDesC ) - { - CAknTextQueryDialog* dlg = CAknTextQueryDialog::NewL( useridPtr, CAknQueryDialog::ENoTone ); - dlg->SetPredictiveTextInputPermitted( ETrue ); // T9 - result = dlg->ExecuteLD( aResouceId ); - } - if( ( result == EAknSoftkeyOk ) || ( result == EAknSoftkeyYes ) || ( useridPtr != KNullDesC ) ) - { - TPtrC ownUserId = storage->OwnContactL().UserId(); - if(useridPtr.Compare( ownUserId ) == 0) //Do not add own data item to contact list - { - //show note "Own Data Item cannot be added" - HBufC* failed = StringLoader::LoadLC( R_QTN_SERVTAB_ERROR_ADDOWN ); - VIMPSTUtilsDialog::DisplayErrorNoteL( *failed ); - CleanupStack::PopAndDestroy( failed ); - } - else - { - CVIMPSTUtilsWaitNote* note = CVIMPSTUtilsWaitNote::ShowWaitNoteLC( R_QTN_SERVTAB_SAVING_CONTACT ,ETrue); - iCommandHandler.HandleCommandL(EAddContact, this, userid ); - CleanupStack::PopAndDestroy( note ); - } - } - CleanupStack::PopAndDestroy(userid); - } - else // server store - - { - //////////////////////////////////////////// - ReInitializeServiceHandlerL(); - TUint assignFlags = 0; - //for unknown item createnew/update existing querry is shown - // check whether the selected contact is unknown - if( iCommandHandler.GetProcessInterface().GetType(iContainer->CurrentItemIndex()) == TVIMPSTEnums::EUnknonContactItem ) - { - iSelectedAction = ShowNewUpdateQueryL(); - if(CVIMPSTUiTabbedView::EInvitAcceptCreateNew == iSelectedAction )//create new - { - assignFlags |= ECreateNewContact; - iSelectedAction = EContactCreateNew; - } - else if(CVIMPSTUiTabbedView::EInvitAcceptUpdateExisting == iSelectedAction ) // update existing - { - iSelectedAction = EContactAddFromContacts; - } - else // selected cancle option - { - return; - } - } - else // not unknown contact - { - iSelectedAction = EContactCreateNew; - assignFlags |= ECreateNewContact; - } - //show the phonebook dialog for create new/update existing option - if(iAiwParamList) - { - delete iAiwParamList; - iAiwParamList = NULL; - } - iAiwParamList = CAiwGenericParamList::NewL(); - iAiwParamList->AppendL( - TAiwGenericParam( - EGenericParamContactAssignData, - TAiwVariant(TAiwSingleContactAssignDataV1Pckg( - TAiwSingleContactAssignDataV1().SetFlags( assignFlags ))))); - - if( aUserId.Length() > 0 ) - { - // add user id in impp field - TBuf xspId; //xsp max length - xspId.Append(iEngine.ServiceName()); - xspId.Append(KColon); - xspId.Append(aUserId); - - iAiwParamList->AppendL( - TAiwGenericParam( - EGenericParamXSpId, - TAiwVariant(xspId) ) ); - } - iServiceHandler->ExecuteServiceCmdL( - KAiwCmdAssign, - *iAiwParamList, - iServiceHandler->OutParamListL(), - 0, - this); - } - } - } - -// -------------------------------------------------------------------------- -// CVIMPSTUiTabbedView::CreateOrLinkToPhoneBookL -// -------------------------------------------------------------------------- -// -void CVIMPSTUiTabbedView::CreateOrLinkToPhoneBookL(TInt aCommand ) - { - TRACER_AUTO; - TInt index = CurrentItemIndex(); - if( index <= 0 ) - { - return; - } - TUint assignFlags = 0; - if(ECmdAIWAddToContact == aCommand )//create new option - { - assignFlags |= ECreateNewContact; - } - TPtrC itemUserId = iCommandHandler.GetProcessInterface().GetItemUserId(index) ; - if(iAiwParamList) - { - delete iAiwParamList; - iAiwParamList = NULL; - } - iAiwParamList = CAiwGenericParamList::NewL(); - iAiwParamList->AppendL( - TAiwGenericParam( - EGenericParamContactAssignData, - TAiwVariant(TAiwSingleContactAssignDataV1Pckg( - TAiwSingleContactAssignDataV1().SetFlags( assignFlags ))))); - - TBuf xspid; - xspid.Append(iEngine.ServiceName()); - xspid.Append(KColon); - xspid.Append(itemUserId); - ReInitializeServiceHandlerL(); - iAiwParamList->AppendL( - TAiwGenericParam( - EGenericParamXSpId, - TAiwVariant(xspid)) ); - - iServiceHandler->ExecuteServiceCmdL( KAiwCmdAssign, - *iAiwParamList, - iServiceHandler->OutParamListL(), - 0, - this); - } - -// -------------------------------------------------------------------------- -// CVIMPSTUiTabbedView::EditContactL -// -------------------------------------------------------------------------- -// -void CVIMPSTUiTabbedView::EditContactL() - { - TRACER_AUTO; - MVIMPSTStorageServiceView* storage = CVIMPSTStorageManagerFactory::ContactListInterfaceL(iServiceId); - if (storage) - { - if( storage->IsLocalStore()) - { - iSelectedAction = KErrNotFound; - TInt index = CurrentItemIndex(); - MVPbkContactLink* contactLink = iCommandHandler.GetProcessInterface().ContactLink(index); - //show the phonebook dialog for edit existing data - if(iAiwParamList) - { - delete iAiwParamList; - iAiwParamList = NULL; - } - iAiwParamList = CAiwGenericParamList::NewL(); - iAiwParamList->AppendL( - TAiwGenericParam( - EGenericParamContactAssignData, - TAiwVariant(TAiwSingleContactAssignDataV1Pckg( - TAiwSingleContactAssignDataV1().SetFlags( EskipInfoNotes ))))); - - HBufC8* packedLinks = contactLink->PackLC(); - iAiwParamList->AppendL( - TAiwGenericParam( - EGenericParamContactLinkArray, - TAiwVariant(*packedLinks) ) ); - ReInitializeServiceHandlerL(); - - iServiceHandler->ExecuteServiceCmdL( - KAiwCmdAssign, - *iAiwParamList, - iServiceHandler->OutParamListL(), - 0, - this); - CleanupStack::PopAndDestroy(); // packedLinks - } - } - } - - - - -// -------------------------------------------------------------------------- -// CVIMPSTUiTabbedView::AddContactL -// -------------------------------------------------------------------------- -void CVIMPSTUiTabbedView::AddContactL(RPointerArray aContacts) - { - TRACER_AUTO; - TInt count = aContacts.Count(); - - switch( count ) - { - case 0://no xsp found. - { - //launch add manually dialog. - AddContactL( R_IM_ADD_CONTACT_MANUAL_QUERY );//to do replace with some thing else. - break; - } - case 1://1 xsp foud. - { - //add new contact. - HBufC* xspId = aContacts[0]; - AddContactL( R_IM_ADD_CONTACT_MANUAL_QUERY, *xspId ); - break; - } - default :// > 1 xsp found. - { - //show single selection dialog - TInt selectionIndex = 0; - CDesCArray* xspIds = new( ELeave )CDesCArrayFlat( count ); - CleanupStack::PushL( xspIds ); - - //add all xsp(s) from aContacts to xspIds. - for( TInt i = 0 ; i < count ; i++ ) - { - xspIds->AppendL( *aContacts[i] ); - } - - HBufC* titleText = StringLoader::LoadLC( R_QTN_SERVTAB_SELECT_USER ); - - TInt ret = VIMPSTUtilsDialog::DisplayListQueryDialogL( &selectionIndex, - xspIds, - R_IM_LIST_SELECT_STATUS_MESSAGE_DLG, - *titleText, - KNullDesC, - ETrue ); - CleanupStack::PopAndDestroy( titleText ); - - - if ( ret == EAknSoftkeyOk || ret == EAknSoftkeyDone || ret == EAknSoftkeySelect ) - { - TPtrC selectedXspid = (*xspIds)[selectionIndex]; - AddContactL( R_IM_ADD_CONTACT_MANUAL_QUERY, selectedXspid ); - } - CleanupStack::PopAndDestroy(xspIds); - break; - } - } - } - -// -------------------------------------------------------------------------- -// CVIMPSTUiTabbedView::CopyToPhoneBookL -// -------------------------------------------------------------------------- -// -void CVIMPSTUiTabbedView::CopyToPhoneBookL() - { - TRACER_AUTO; - TInt index = CurrentItemIndex(); - - TPtrC name( KNullDesC ); - if( index <= 0 ) - { - // return if item not found - return; - } - - TPtrC seletctedItem = iCommandHandler.GetProcessInterface().GetItemUserId(index) ; - - MVIMPSTStorageServiceView* storage = CVIMPSTStorageManagerFactory::ContactListInterfaceL(iServiceId) ; - if(storage) - { - MVIMPSTStorageContact* contact = storage->FindContactByUserId(seletctedItem); - if(contact) - { - CVIMPSTUtilsWaitNote* note = CVIMPSTUtilsWaitNote::ShowWaitNoteLC( R_QTN_SERVTAB_SAVING_CONTACT ,ETrue); - iCommandHandler.HandleCommandL(EAddToPbk, this, contact ); - CleanupStack::PopAndDestroy(note); - } - } - } - -// -------------------------------------------------------------------------- -// CVIMPSTUiTabbedView::DeleteContactL -// -------------------------------------------------------------------------- -// -void CVIMPSTUiTabbedView:: DeleteContactL() - { - TRACER_AUTO; - TInt index = CurrentItemIndex(); - HBufC* deletePrompt = NULL; - TPtrC name( KNullDesC ); - - if(iContainer) - { - iContainer->CheckAndSetLastItemFlag(); - } - if( index <= 0 ) - { - // return if item not found - return; - } - - TPtrC seletctedItem = iCommandHandler.GetProcessInterface().GetItemUserId(index) ; - name.Set( seletctedItem ); - - deletePrompt = StringLoader::LoadLC( R_QTN_SERVTAB_DELETE_CONTACT, name, CCoeEnv::Static() ); - TInt ret( VIMPSTUtilsDialog::DisplayQueryDialogL(R_GENERIC_YES_NO_CONFIRMATION_QUERY, *deletePrompt ) ); - CleanupStack::PopAndDestroy( deletePrompt ); - - MVPbkContactLink* contactLink = iCommandHandler.GetProcessInterface().ContactLink(index); - - if( ( ret == EAknSoftkeyOk ) || ( ret == EAknSoftkeyYes ) ) - { - if(iWaitNote) - { - delete iWaitNote; - iWaitNote = NULL; - } - iWaitNote = CVIMPSTUtilsWaitNote::ShowWaitNoteL( R_QTN_CHAT_DELETING_CONTACT ,ETrue); - iCommandHandler.HandleCommandL(EDeleteContact, this, &contactLink ); - } - } - - - -// ----------------------------------------------------------------------------- -// CVIMPSTUiTabbedView::ChangeStatusProcessL -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CVIMPSTUiTabbedView::ChangeStatusProcessL() - { - TRACER_AUTO; - if( iEngine.ServiceState() ) - { - // Check variation - TInt showAppearOffline = 1; - TInt showAway = 1 ; - TInt showBusy = 1; - - TInt awayIndex( 0 ); - TInt busyIndex( 0 ); - TInt appOfflineIndex( 0 ); - - // first icon is online - // calculate indexes for other icons - if ( showAway) - { - awayIndex++; - busyIndex++; - appOfflineIndex++; - } - else - { - awayIndex = -1; - } - - if ( showBusy ) - { - busyIndex++; - appOfflineIndex++; - } - else - { - busyIndex = -1; - } - - if ( showAppearOffline ) - { - appOfflineIndex++; - } - else - { - appOfflineIndex = -1; - } - - TInt status( 0 ); - CAknListQueryDialog* dlg = new ( ELeave ) - CAknListQueryDialog( &status ); - dlg->PrepareLC( R_IM_STATUS_CHANGE_DLG ); - - // Format the texts - // Create a array for texts - CDesCArray* listItemsArray = - new ( ELeave ) CDesCArrayFlat( KAmountOfOwnStatusStates ); - CleanupStack::PushL( listItemsArray ); - - // Online - HBufC* onlineText = NULL; - onlineText = StringLoader::LoadLC( R_QTN_CHAT_CHANGE_OWN_ONLINE ); - - HBufC* itemTxtOnline = - HBufC::NewLC( KTabFormatLenght + onlineText->Length() ); - TPtr itemTxtPtrOnline( itemTxtOnline->Des() ); - - itemTxtPtrOnline.Format( KTabFormat, KOnlineIconIndex ); - itemTxtPtrOnline.Append( *onlineText ); - listItemsArray->AppendL( itemTxtPtrOnline ); - CleanupStack::PopAndDestroy( itemTxtOnline ); - CleanupStack::PopAndDestroy( onlineText ); - - // Away - if ( showAway ) - { - HBufC* awayText = NULL; - awayText = StringLoader::LoadLC( R_QTN_CHAT_CHANGE_OWN_AWAY ); - - HBufC* itemTxtAway = HBufC::NewLC( - KTabFormatLenght + awayText->Length() ); - TPtr itemTxtPtrAway( itemTxtAway->Des() ); - - itemTxtPtrAway.Format( KTabFormat, awayIndex ); - itemTxtPtrAway.Append( *awayText ); - listItemsArray->AppendL( itemTxtPtrAway ); - CleanupStack::PopAndDestroy( itemTxtAway ); - CleanupStack::PopAndDestroy( awayText ); - } - - // Busy - if ( showBusy ) - { - HBufC* busyText = NULL; - busyText = StringLoader::LoadLC( R_QTN_SERVTAB_CHANGE_OWN_DND ); - - HBufC* itemTextBusy = HBufC::NewLC( - KTabFormatLenght + busyText->Length() ); - TPtr itemTxtPtrBusy( itemTextBusy->Des() ); - - itemTxtPtrBusy.Format( KTabFormat, busyIndex ); - itemTxtPtrBusy.Append( *busyText ); - listItemsArray->AppendL( itemTxtPtrBusy ); - CleanupStack::PopAndDestroy( itemTextBusy ); - CleanupStack::PopAndDestroy( busyText ); - } - // Appear offline - if ( showAppearOffline ) - { - HBufC* offlineText = NULL; - offlineText = StringLoader::LoadLC( R_QTN_CHAT_CHANGE_OWN_APPEAR_OFFLINE ); - - HBufC* itemTextOffline = HBufC::NewLC( - KTabFormatLenght + offlineText->Length() ); - TPtr itemTxtPtrOffline( itemTextOffline->Des() ); - - itemTxtPtrOffline.Format( KTabFormat, appOfflineIndex ); - itemTxtPtrOffline.Append( *offlineText ); - listItemsArray->AppendL( itemTxtPtrOffline ); - CleanupStack::PopAndDestroy( itemTextOffline ); - CleanupStack::PopAndDestroy( offlineText ); - } - - // Set the array - dlg->SetOwnershipType( ELbmOwnsItemArray ); - CleanupStack::Pop( listItemsArray ); - dlg->SetItemTextArray( listItemsArray ); - - // Add icons - CArrayPtr< CGulIcon >* icons = LoadOwnStatusIconsL(); - - - dlg->SetIconArrayL( icons ); // transfers ownership - // TODO::get own status - - // get dialog's listbox - CEikListBox* listBox = dlg->ListBox(); - - //listBox->SetCurrentItemIndex( 0 ); - - TInt result = dlg->RunLD(); - - //structure to pack status and status text. - TStatusAndStatusText statusAndSatatustext; - - TInt error( KErrNone ); - if ( ( result == EAknSoftkeyOk ) || - ( result == EAknSoftkeySelect ) ) - { - if ( status == 0 ) - { - TInt autoStatusMsgEnabledForOnline = 1; /*IMUtils::IntResourceValueL( RSC_CHAT_VARIATION_ONLINE_AUTO );*/ - if( autoStatusMsgEnabledForOnline ) - { - error = AskStatusMessageL( TVIMPSTEnums::EOnline, EFalse ); - } - if( error == KErrNone ) - { - statusAndSatatustext.iStatus = TVIMPSTEnums::EOnline; - statusAndSatatustext.iStatusText.Copy(iStatusMessage->Des()); - CVIMPSTUtilsWaitNote* note = CVIMPSTUtilsWaitNote::ShowWaitNoteLC( R_QTN_CHAT_CHANGE_STATUS_CHANGING ); - error = iCommandHandler.HandleCommandL(EChangeOwnStatus, this, &statusAndSatatustext); - CleanupStack::PopAndDestroy( note ); - } - } - else if ( status == awayIndex ) // Away - { - // can't get here unless Away is enabled - TInt autoStatusMsgEnabledForAway = 1; - //IMUtils::IntResourceValueL( RSC_CHAT_VARIATION_AWAY_AUTO ); - if( autoStatusMsgEnabledForAway ) - { - error = AskStatusMessageL( TVIMPSTEnums::EAway, EFalse ); - } - if( error == KErrNone ) - { - statusAndSatatustext.iStatus = TVIMPSTEnums::EAway; - statusAndSatatustext.iStatusText.Copy(iStatusMessage->Des()); - CVIMPSTUtilsWaitNote* note = CVIMPSTUtilsWaitNote::ShowWaitNoteLC( R_QTN_CHAT_CHANGE_STATUS_CHANGING ); - error = iCommandHandler.HandleCommandL(EChangeOwnStatus, this, &statusAndSatatustext); - CleanupStack::PopAndDestroy( note ); - } - } - - else if ( status == busyIndex ) // Busy - { - // can't get here unless Busy is enabled - TInt autoStatusMsgEnabledForBusy = 1; - //IMUtils::IntResourceValueL( RSC_CHAT_VARIATION_BUSY_AUTO ); - if( autoStatusMsgEnabledForBusy ) - { - error = AskStatusMessageL( TVIMPSTEnums::EBusy, EFalse ); - } - if( error == KErrNone ) - { - statusAndSatatustext.iStatus = TVIMPSTEnums::EBusy; - statusAndSatatustext.iStatusText.Copy(iStatusMessage->Des()); - CVIMPSTUtilsWaitNote* note = CVIMPSTUtilsWaitNote::ShowWaitNoteLC( R_QTN_CHAT_CHANGE_STATUS_CHANGING ); - error = iCommandHandler.HandleCommandL(EChangeOwnStatus, this, &statusAndSatatustext); - CleanupStack::PopAndDestroy( note ); - - } - } - else if ( status == appOfflineIndex ) //appearOffline - { - - statusAndSatatustext.iStatus = TVIMPSTEnums::EInvisible; - statusAndSatatustext.iStatusText.Copy(iStatusMessage->Des()); - CVIMPSTUtilsWaitNote* note = CVIMPSTUtilsWaitNote::ShowWaitNoteLC( R_QTN_CHAT_CHANGE_STATUS_CHANGING ); - error = iCommandHandler.HandleCommandL(EChangeOwnStatus, this, &statusAndSatatustext); - CleanupStack::PopAndDestroy( note ); - } - else - { - HBufC* text = NULL; - text = StringLoader::LoadLC( R_QTN_IM_CHANGE_STATUS_NOT_CHANGED ); - VIMPSTUtilsDialog::DisplayNoteDialogL( *text ); - CleanupStack::PopAndDestroy( text ); - } - //iUISessionManager->SetStatusPaneIconsL(); - } - } - } - -// --------------------------------------------------------- -// CVIMPSTUiTabbedView::LoadOwnStatusIconsL -// --------------------------------------------------------- -// -CAknIconArray* CVIMPSTUiTabbedView::LoadOwnStatusIconsL() - { - TRACER_AUTO; - CAknIconArray* icons = iBrandHandler->LoadOwnStatusIconsLC(); - CleanupStack::Pop( icons ); - return icons; - } - -// --------------------------------------------------------- -// CVIMPSTUiTabbedView::AskStatusMessageL() -// (other items were commented in a header). -// --------------------------------------------------------- -// -TInt CVIMPSTUiTabbedView::AskStatusMessageL( TVIMPSTEnums::TOnlineStatus aStatus, - TBool aUpdateToNetwork ) - { - TRACER_AUTO; - CDesCArray* statusMessages = new( ELeave )CDesCArrayFlat(4); - CleanupStack::PushL( statusMessages ); - - HBufC* firstLine = StringLoader::LoadLC( R_QTN_CHAT_CHANGE_NEW_MESSAGE ); - statusMessages->AppendL( *firstLine ); - CleanupStack::PopAndDestroy( firstLine ); - - // Read status messages - ReadStatusMessagesL( *statusMessages, aStatus ); - - // show the query - TInt selectionIndex( statusMessages->Count() > 1 ? 1 : 0 ); - - // Force to continue if selection query is not shown - TInt ret = EAknSoftkeyOk; - - if( selectionIndex == 1 ) - { - // There were previous status messages, show selection query - HBufC* titleText = StringLoader::LoadLC( R_QTN_CHAT_CHANGE_SELECT_MESSAGE ); - ret = VIMPSTUtilsDialog::DisplayListQueryDialogL( &selectionIndex, statusMessages, - R_IM_LIST_SELECT_STATUS_MESSAGE_DLG, - *titleText, KNullDesC, ETrue ); - CleanupStack::PopAndDestroy( titleText ); - } - - if ( !( ret == EAknSoftkeyOk || ret == EAknSoftkeyDone || ret == EAknSoftkeySelect ) ) - { - CleanupStack::PopAndDestroy( statusMessages ); - return KErrCancel; - } - - TPtr statusTxt( iStatusMessage->Des() ); - statusTxt.Zero(); - - if( selectionIndex != 0 ) - { - statusTxt.Copy( ( *statusMessages) [ selectionIndex ] ); - } - - TInt result = VIMPSTUtilsDialog::DisplayTextQueryDialogL( - statusTxt , - R_QTN_CHAT_CHANGE_STATUS_MESSAGE, - R_IM_ENTER_STATUS_MESSAGE_QUERY, - ETrue, // T9 - ETrue // LSK always visible - ); - - if ( (result == EAknSoftkeyOk || result == EAknSoftkeyDone )&&(iEngine.ServiceState())) - { - - // Delete first line. - statusMessages->Delete( 0 ); - statusMessages->InsertL( 0, statusTxt ); - WriteStatusMessagesL( *statusMessages, aStatus ); - if( aUpdateToNetwork ) - { - CVIMPSTUtilsWaitNote* note = CVIMPSTUtilsWaitNote::ShowWaitNoteLC( R_QTN_CHAT_CHANGE_MESSAGE_CHANGING ); - //structure to pack status and status text. - TStatusAndStatusText statusAndSatatustext; - statusAndSatatustext.iStatus = aStatus; - statusAndSatatustext.iStatusText.Copy( statusTxt ); - iCommandHandler.HandleCommandL(EChangeOwnMessage, this, &statusAndSatatustext); - CleanupStack::PopAndDestroy( note ); - } - } - else - { - CleanupStack::PopAndDestroy();//statusMessages - return KErrCancel; - } - CleanupStack::PopAndDestroy(); //statusMessages - return KErrNone; - } - -// ----------------------------------------------------------------------------- -// CVIMPSTUiTabbedView::ReadStatusMessagesL -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CVIMPSTUiTabbedView::ReadStatusMessagesL( CDesCArray& aArray, TVIMPSTEnums::TOnlineStatus aStatus) - { - TRACER_AUTO; - RBuf buffer; - buffer.CreateL( RProperty::KMaxPropertySize ); - CleanupClosePushL( buffer ); - TInt err(KErrNone); - switch ( aStatus ) - { - case TVIMPSTEnums::EOnline: - { - err = iSettingsStore->GetL( iServiceId, EServiceOwnStatusMessagesOnline, buffer ); - break; - } - case TVIMPSTEnums::EBusy: - { - err = iSettingsStore->GetL( iServiceId, EServiceOwnStatusMessagesBusy, buffer ); - break; - } - case TVIMPSTEnums::EAway: - { - err = iSettingsStore->GetL( iServiceId, EServiceOwnStatusMessagesAway, buffer ); - break; - } - } - TBuf< KStatusMessageHeaderLength > header; - - TInt countOfMessages( 0 ); - TInt offset( 1 ); // First character is for header length - TInt headerLength( 0 ); - if( err == KErrNone && buffer.Length() ) - { - TLex lexer( buffer.Left( 1 ) ); - err = lexer.Val( headerLength ); - } - else - { - err = KErrEof; - } - while( err == KErrNone && countOfMessages < KMaxStatusMessageCount ) - { - TPtrC ptr( buffer.Mid( offset ) ); - if( ptr.Length() > headerLength ) - { - header.Copy( ptr.Left( headerLength ) ); - header.Trim(); - TLex lexer( header ); - offset += headerLength; - TInt messageLength( 0 ); - err = lexer.Val( messageLength ); - if( err == KErrNone ) - { - ptr.Set( buffer.Mid( offset ) ); - if( ptr.Length() >= messageLength ) - { - if (messageLength) - { - aArray.AppendL( ptr.Left( messageLength ) ); - ++countOfMessages; // this should be increased only for not null messages. - } - offset += messageLength; - } - else - { - err = KErrEof; - } - } - } - else - { - err = KErrEof; - } - } - CleanupStack::PopAndDestroy(); //buffer - } - -// ----------------------------------------------------------------------------- -// CVIMPSTUiTabbedView::WriteStatusMessagesL -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// - -void CVIMPSTUiTabbedView::WriteStatusMessagesL( MDesCArray& aArray, TVIMPSTEnums::TOnlineStatus aStatus ) - { - TRACER_AUTO; - TPtrC firstLine = aArray.MdcaPoint( 0 ); - TInt countOfMessages( 0 ); - TInt arrayCount( aArray.MdcaCount() ); - TInt index( 0 ); - - RBuf buffer; - buffer.CreateL( RProperty::KMaxPropertySize ); - CleanupClosePushL( buffer ); - - TBuf< KStatusMessageHeaderLength > header; - // Read the array and append the buffer - while( index < arrayCount && countOfMessages < KMaxStatusMessageCount ) - { - if( index == 0 ) - { - header.Format( KStatusMessageHeaderLengthFormat, - KStatusMessageHeaderLength ); - buffer.Append( header ); - } - TPtrC message = aArray.MdcaPoint( index ); - if( index == 0 || message.CompareF( firstLine ) != 0 ) - { - header.Format( KStatusMessageHeaderFormat, message.Length() ); - buffer.Append( header ); - buffer.Append( message ); - //skipping increase of countOfMessages is to get one more status message if it is null. - if( message.Length() ) // null status message - { - ++countOfMessages; - } - } - ++index; - } - switch ( aStatus ) - { - case TVIMPSTEnums::EOnline: - { - iSettingsStore->SetL( iServiceId, EServiceOwnStatusMessagesOnline, buffer ); - break; - } - case TVIMPSTEnums::EBusy: - { - iSettingsStore->SetL( iServiceId, EServiceOwnStatusMessagesBusy, buffer ); - break; - } - case TVIMPSTEnums::EAway: - { - iSettingsStore->SetL( iServiceId, EServiceOwnStatusMessagesAway, buffer ); - break; - } - } - CleanupStack::PopAndDestroy(); // buffer - } - - -// ----------------------------------------------------------------------------- -// CVIMPSTUiTabbedView::ChangeOwnStatusMessageL -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CVIMPSTUiTabbedView::ChangeOwnStatusMessageL() - { - TVIMPSTEnums::TOnlineStatus status = iCommandHandler.GetProcessInterface().GetOnlineStatusL( 0 ); //0 for own status item - // ETrue meaning network change required - AskStatusMessageL(status, ETrue); - } -// ----------------------------------------------------------------------------- -// CVIMPSTUiTabbedView::ChangeOwnAvatarL -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CVIMPSTUiTabbedView::ChangeOwnAvatarL(const TDesC& aFileName, const TDesC8& aMimeType ) - { - TRACER_AUTO; - MVIMPSTProcessArray& arrayprocess = iCommandHandler.GetProcessInterface(); - TAvatarData avatarData; - avatarData.iStatus = arrayprocess.GetOnlineStatusL(0); - avatarData.iStatusText.Copy( arrayprocess.StatusTextL(0) ); - avatarData.iFileName.Set(aFileName); - avatarData.iMimeType.Set(aMimeType); - iCommandHandler.HandleCommandL(EChangeOwnAvtar, this, &avatarData); - } -// ----------------------------------------------------------------------------- -// CVIMPSTUiTabbedView::GetServiceState -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TVIMPSTEnums::TVIMPSTRegistrationState CVIMPSTUiTabbedView::GetServiceState() - { - return iEngine.ServiceState(); - } - - -// -------------------------------------------------------------------------- -// CVIMPSTUiTabbedView::SearchContactsL -// -------------------------------------------------------------------------- -// -void CVIMPSTUiTabbedView:: SearchContactsL() - { - TRACER_AUTO; - CVIMPSTUiSearchFieldArray& fieldArray = iExtensionService.GetSearchFieldArray(); - - if( !fieldArray.Count() ) - { - return; - } - - if(!iIsToolBarHidden) - { - ShowHideFixedToolbarL(EFalse); - } - - if (iContainer) - { - iContainer->DeactivateFindPaneL(); - } - - fieldArray.ResetFieldData(); - fieldArray.SetSearchType( EIMBasicSearch ); - //Launch the search view with search dialog - LaunchViewL( iExtensionService.SearchViewId() ); - - } - -// --------------------------------------------------------------------------- -// CVIMPSTUiTabbedView::LaunchViewL() -// --------------------------------------------------------------------------- -// -void CVIMPSTUiTabbedView::LaunchViewL( TInt aViewId ) - { - TRACER_AUTO; - - CPbk2ViewState* state = CPbk2ViewState::NewLC( ); - - TInt searchViewId; - TInt err = iMapper.GetNewView( - KIMCONTACTSEXTNIMPLEMENTATIONUID, - aViewId, - searchViewId ); - User::LeaveIfError( err ); - Phonebook2::Pbk2AppUi()->Pbk2ViewExplorer()->ActivatePhonebook2ViewL - (TUid::Uid(searchViewId), state); - - CleanupStack::PopAndDestroy( state ); - } - -// --------------------------------------------------------- -// CVIMPSTUiTabbedView::CreateToolBarL -// --------------------------------------------------------- -// -void CVIMPSTUiTabbedView::CreateToolBarL() - { - TRACER_AUTO; - if ( AknLayoutUtils::PenEnabled() ) - { - TInt resourceId = 0; - if(iEngine.IsSubServiceSupportedL(TVIMPSTEnums::EIM) && - !iEngine.IsSubServiceSupportedL(TVIMPSTEnums::EVoip)) - { - resourceId = R_IM_APP_TOOLBAR; - } - else if(iEngine.IsSubServiceSupportedL(TVIMPSTEnums::EVoip) && - !iEngine.IsSubServiceSupportedL(TVIMPSTEnums::EIM)) - { - resourceId = R_VOIP_APP_TOOLBAR; - } - else - { - resourceId = R_IM_VOIP_APP_TOOLBAR; - } - if ( resourceId != 0 && !iFixedToolbar ) - { - CAknToolbar* temp = iFixedToolbar; - - iFixedToolbar = CAknToolbar::NewL( resourceId ); - iFixedToolbar->SetToolbarObserver( this ); - iFixedToolbar->SetCloseOnAllCommands( EFalse ); - CEikAppUiFactory* appUiFactory = - static_cast(CEikonEnv::Static()->AppUiFactory() ); - appUiFactory->SetViewFixedToolbar( iFixedToolbar ); - - iFixedToolbar->SetToolbarVisibility( EFalse, EFalse ); - delete temp; - temp = NULL; - } - } - else - { - delete iFixedToolbar; - iFixedToolbar = NULL; - } - } - -// --------------------------------------------------------- -// CVIMPSTUiTabbedView::UpdateToolbarL -// --------------------------------------------------------- -// -void CVIMPSTUiTabbedView::UpdateToolbarL() - { - TRACER_AUTO; - if ( AknLayoutUtils::PenEnabled() && iFixedToolbar && iContainer ) - { - TInt currentItemIndex = iContainer->CurrentItemIndex(); - TVIMPSTEnums::TItem itemType = iCommandHandler.GetProcessInterface().GetType(currentItemIndex); - TVIMPSTEnums::TOnlineStatus onlinestatus = iCommandHandler.GetProcessInterface().GetOnlineStatusL(currentItemIndex); - TBool imEnabled = iEngine.IsSubServiceEnabled(TVIMPSTEnums::EIM); - TBool voipEnabled = iEngine.IsSubServiceEnabled(TVIMPSTEnums::EVoip); - TPtrC selectedItem = iCommandHandler.GetProcessInterface().GetItemUserId(currentItemIndex); - - if(voipEnabled && imEnabled) - { - if( TVIMPSTEnums::EOwnStatusItem == itemType || - TVIMPSTEnums::EFriendRequestItem == itemType || - KErrNotFound == currentItemIndex ) - { - iFixedToolbar->SetItemDimmed( ECmdToolbarVoipCall, ETrue, EFalse ); - iFixedToolbar->SetItemDimmed( ECmdToolbarChat, ETrue, EFalse ); - iFixedToolbar->SetItemDimmed( ECmdToolbarDetails, ETrue, EFalse ); - } - else if( TVIMPSTEnums::EUnknonContactItem == itemType ) - { - iFixedToolbar->SetItemDimmed(ECmdToolbarVoipCall, EFalse, EFalse); - iFixedToolbar->SetItemDimmed(ECmdToolbarChat, EFalse, EFalse); - iFixedToolbar->SetItemDimmed(ECmdToolbarDetails, ETrue, EFalse); - } - else if( TVIMPSTEnums::EContactItem == itemType ) - { - if( selectedItem != KNullDesC && TVIMPSTEnums::EServiceOut != onlinestatus ) - { - - iFixedToolbar->SetItemDimmed(ECmdToolbarChat, EFalse, EFalse); - } - else - { - iFixedToolbar->SetItemDimmed(ECmdToolbarChat, ETrue, EFalse); - } - iFixedToolbar->SetItemDimmed(ECmdToolbarDetails, EFalse, EFalse); - iFixedToolbar->SetItemDimmed(ECmdToolbarVoipCall, EFalse, EFalse); - } - else - { - iFixedToolbar->SetItemDimmed(ECmdToolbarVoipCall, ETrue, EFalse); - iFixedToolbar->SetItemDimmed(ECmdToolbarChat, ETrue, EFalse); - iFixedToolbar->SetItemDimmed(ECmdToolbarDetails, EFalse, EFalse); - } - } - else if(imEnabled && !voipEnabled) - { - if( TVIMPSTEnums::EOwnStatusItem == itemType || - TVIMPSTEnums::EFriendRequestItem == itemType || - KErrNotFound == currentItemIndex) - { - iFixedToolbar->SetItemDimmed( ECmdToolbarChat, ETrue, EFalse ); - iFixedToolbar->SetItemDimmed( ECmdToolbarDetails, ETrue, EFalse ); - } - else if( TVIMPSTEnums::EUnknonContactItem == itemType ) - { - iFixedToolbar->SetItemDimmed(ECmdToolbarChat, EFalse, EFalse); - iFixedToolbar->SetItemDimmed(ECmdToolbarDetails, ETrue, EFalse); - } - else if( TVIMPSTEnums::EContactItem == itemType ) - { - iFixedToolbar->SetItemDimmed( ECmdToolbarDetails, EFalse, EFalse ); - if( selectedItem != KNullDesC && TVIMPSTEnums::EServiceOut != onlinestatus ) - { - iFixedToolbar->SetItemDimmed(ECmdToolbarChat, EFalse, EFalse); - } - else - { - iFixedToolbar->SetItemDimmed(ECmdToolbarChat, ETrue, EFalse); - } - } - } - else if( voipEnabled && !imEnabled ) - { - if( (TVIMPSTEnums::EOwnStatusItem == itemType || - TVIMPSTEnums::EFriendRequestItem == itemType || - KErrNotFound == currentItemIndex) && !iAddContact ) - { - iFixedToolbar->SetItemDimmed( ECmdToolbarNewContact, EFalse, EFalse ); - iFixedToolbar->SetItemDimmed( ECmdToolbarVoipCall, ETrue, EFalse ); - iFixedToolbar->SetItemDimmed( ECmdToolbarDetails, ETrue, EFalse ); - } - else if( TVIMPSTEnums::EUnknonContactItem == itemType ) - { - iFixedToolbar->SetItemDimmed( ECmdToolbarNewContact, EFalse, EFalse ); - iFixedToolbar->SetItemDimmed(ECmdToolbarVoipCall, EFalse, EFalse ); - iFixedToolbar->SetItemDimmed(ECmdToolbarDetails, ETrue, EFalse); - } - else if( TVIMPSTEnums::EContactItem == itemType ) - { - iFixedToolbar->SetItemDimmed( ECmdToolbarNewContact, EFalse, EFalse ); - iFixedToolbar->SetItemDimmed( ECmdToolbarDetails, EFalse, EFalse ); - iFixedToolbar->SetItemDimmed(ECmdToolbarVoipCall, EFalse, EFalse); - } - } - else - { - if( (TVIMPSTEnums::EOwnStatusItem == itemType || - TVIMPSTEnums::EFriendRequestItem == itemType || - KErrNotFound == currentItemIndex) && !iAddContact ) - { - iFixedToolbar->SetItemDimmed( ECmdToolbarNewContact, EFalse, EFalse ); - } - else if( TVIMPSTEnums::EUnknonContactItem == itemType ) - { - iFixedToolbar->SetItemDimmed( ECmdToolbarNewContact, EFalse, EFalse); - } - else - { - iFixedToolbar->SetItemDimmed( ECmdToolbarNewContact, EFalse, EFalse ); - iFixedToolbar->SetItemDimmed( ECmdToolbarDetails, EFalse, EFalse ); - } - } - iFixedToolbar->DrawNow(); - } - } -// --------------------------------------------------------- -// CVIMPSTUiTabbedView::DynInitToolbarL -// --------------------------------------------------------- -// -void CVIMPSTUiTabbedView::DynInitToolbarL( TInt /*aResourceId*/, CAknToolbar* /*aToolbar*/ ) - { - if ( AknLayoutUtils::PenEnabled() ) - { - UpdateToolbarL(); - } - } - -// --------------------------------------------------------- -// CVIMPSTUiTabbedView::OfferToolbarEventL -// --------------------------------------------------------- -// -void CVIMPSTUiTabbedView::OfferToolbarEventL( TInt aCommand ) - { - TRACER_AUTO; - if ( AknLayoutUtils::PenEnabled() ) - { - switch( aCommand ) - { - case ECmdToolbarVoipCall: - { - MakeVoipCallL(); - break; - } - case ECmdToolbarChat: - { - HandleCommandL( ECmdOpenConversation ); - break; - } - case ECmdToolbarDetails: - { - HandleCommandL( ECmdContactDetails );//EChatLaunchCCA - - break; - } - case ECmdToolbarNewContact: - { - HandleCommandL ( ECmdAddContact ); - break; - } - } - } - } - -// --------------------------------------------------------- -// CVIMPSTUiTabbedView::ShowHideFixedToolbarL -// --------------------------------------------------------- -// -void CVIMPSTUiTabbedView::ShowHideFixedToolbarL(TBool aShow) - { - if ( iFixedToolbar && iContainer ) - { - iFixedToolbar->HideItemsAndDrawOnlyBackground( !aShow ); - if(aShow) - { - iFixedToolbar->SetToolbarVisibility( aShow, !aShow); - } - iContainer->CoeControl()->SetRect( iView.ClientRect() ); - iContainer->CoeControl()->DrawDeferred(); - iIsToolBarHidden = !aShow; - } - - } - -// --------------------------------------------------------- -// CVIMPSTUiTabbedView::ProcessFriendRequestL -// --------------------------------------------------------- -// -void CVIMPSTUiTabbedView::ProcessFriendRequestL() - { - TRACER_AUTO; - TInt index = CurrentItemIndex(); - if( index <= 0 ) - { - // return if item not found - return; - } - MVIMPSTProcessArray& arrayprocess = iCommandHandler.GetProcessInterface(); - if( iFriendRequestId ) - { - delete iFriendRequestId; - iFriendRequestId = NULL; - } - iFriendRequestId = arrayprocess.GetItemUserId(index).AllocL() ; - - if( !iFriendRequestId ) - { - return; - } - - HBufC* queryTxt = StringLoader::LoadLC( R_SERVTAB_FRIEND_REQUEST_CONF, *iFriendRequestId ); - - //ask the query and send the response back to the server. - TInt response = VIMPSTUtilsDialog::DisplayQueryDialogL(R_SERVTAB_GENERIC_ACCEPT_DECLINE_CONFIRMATION_QUERY,*queryTxt); - CleanupStack::PopAndDestroy(queryTxt); - - if((EAknSoftkeyYes == response)||(EAknSoftkeyOk == response ) ) - { - - MVIMPSTStorageServiceView* storage = CVIMPSTStorageManagerFactory::ContactListInterfaceL( iEngine.ServiceId() ) ; - if( storage && storage->IsLocalStore() )//if local store popup create new/update existing dialog - { - iSelectedAction = ShowNewUpdateQueryL(); - TUint assignFlags = 0; - if(CVIMPSTUiTabbedView::EInvitAcceptCreateNew == iSelectedAction )//create new option - { - assignFlags |= ECreateNewContact; - } - else if(CVIMPSTUiTabbedView::EInvitAcceptUpdateExisting == iSelectedAction ) //if update existing is selected - { - assignFlags = 0; - } - else //if the selection dialog is cancelled then just do nothing - { - return; - } - //show the phonebook dialog for create new/update existing option - if(iAiwParamList) - { - delete iAiwParamList; - iAiwParamList = NULL; - } - iAiwParamList = CAiwGenericParamList::NewL(); - - iAiwParamList->AppendL( - TAiwGenericParam( - EGenericParamContactAssignData, - TAiwVariant(TAiwSingleContactAssignDataV1Pckg( - TAiwSingleContactAssignDataV1().SetFlags( assignFlags ))))); - - TBuf xspId; //xsp max length - xspId.Append(iEngine.ServiceName()); - xspId.Append(KColon); - xspId.Append(*iFriendRequestId); - - iAiwParamList->AppendL( - TAiwGenericParam( - EGenericParamXSpId, - TAiwVariant(xspId)) - ); - ReInitializeServiceHandlerL(); - iServiceHandler->ExecuteServiceCmdL( - KAiwCmdAssign, - *iAiwParamList, - iServiceHandler->OutParamListL(), - 0, - this); - // remove of friend request is done in HnadleNotify aiw call back - // to handle the cancel of selection dialog - } - else // in case of server store - { - if( iWaitNote ) - { - delete iWaitNote; - iWaitNote = NULL; - } - iWaitNote = CVIMPSTUtilsWaitNote::ShowWaitNoteL( R_QTN_SERVTAB_SAVING_CONTACT, ETrue, EFalse ); - iCommandHandler.HandleCommandL(EFriendAccpeted, this, iFriendRequestId); - } - - } - //response value comes as zero if user rejects the request - else if( EAknSoftkeyCancel == response || 0 == response) // rejected the request - { - if(iWaitNote) - { - delete iWaitNote; - iWaitNote = NULL; - } - iWaitNote = CVIMPSTUtilsWaitNote::ShowWaitNoteL( R_QTN_SERVTAB_DECLINING_INVITE, ETrue , EFalse );; - iCommandHandler.HandleCommandL(EFriendRejected, this, iFriendRequestId ); - } - - - } - -// --------------------------------------------------------- -// CVIMPSTUiTabbedView::HandleSearchResultL() -// --------------------------------------------------------- -// -void CVIMPSTUiTabbedView::HandleSearchResultL(RArray /*aSearchData*/ ) - { - // no implemetation - } - - -// --------------------------------------------------------- -// CVIMPSTUiTabbedView::HandleSearchFinishedL() -// --------------------------------------------------------- -// -void CVIMPSTUiTabbedView::HandleSearchFinishedL(TInt /*aError*/) - { - // no implemetation - } - -// --------------------------------------------------------- -// CVIMPSTUiSearchView::HandleSearchKeysEventL() -// --------------------------------------------------------- -// -void CVIMPSTUiTabbedView::HandleSearchKeysEventL( RArray& aEnumKeysArray, RPointerArray& aLebelKeysArray ) - { - iExtensionService.SetSearchFieldsDataL(aEnumKeysArray, aLebelKeysArray ); - } - -// --------------------------------------------------------- -// CVIMPSTUiSearchView::ShowURLQueryL() -// --------------------------------------------------------- -// -void CVIMPSTUiTabbedView::ShowURLQueryL( ) - { - TRACER_AUTO; - // Open browser with the specified URL - RBuf buffer; - buffer.CreateL( RProperty::KMaxPropertySize ); - CleanupClosePushL( buffer ); - iSettingsStore->GetL(iServiceId, EServiceURLLink, buffer); - HBufC16* url = HBufC::NewL(buffer.Length()); - url = buffer.Alloc(); - OpenWebBrowserL( *url ); - CleanupStack::PopAndDestroy( ); //buffer - } - -// ----------------------------------------------------------------------------- -// CVIMPSTUiTabbedView::OpenWebBrowserL -// ----------------------------------------------------------------------------- -// -void CVIMPSTUiTabbedView::OpenWebBrowserL( const TDesC& aUrl ) - { - if( !iBrLauncher ) - { - iBrLauncher = CBrowserLauncher::NewL(); - } - //Asynchronous operation to launch the browser with aUrl - iBrLauncher->LaunchBrowserEmbeddedL( aUrl,this,this ); - } - - -// ----------------------------------------------------------------------------- -// CVIMPSTUiTabbedView::LoginL -// ----------------------------------------------------------------------------- -// -void CVIMPSTUiTabbedView::LoginL() - { - TRACER_AUTO; - TBool IsPasswordSet = iEngine.IsPasswordAvailableL(); - - if(iUserId) - { - delete iUserId; - iUserId = NULL; - } - - iUserId = iEngine.GetOwnUserIdFromCChOrStorageL(); - - - TBool urlNeedtoShow = IsURLQueryToBeShownL(); - //first login : userid is not initialized and password is not set. - TBool doLogin = ETrue; - if( urlNeedtoShow && (!IsPasswordSet) && (iUserId->Length() == 0)) - { - TInt menuChoise( KErrCancel ); - ShowUseExistingOrCreateNewMenuL( menuChoise ); - switch(menuChoise ) - { - case CVIMPSTUiTabbedView::EXmppMenuValuesCreateNew: - { - doLogin = EFalse; - ShowURLQueryL(); - break; - } - case CVIMPSTUiTabbedView::EXmppMenuValuesUseExisting: - { - // login must be called - doLogin = ETrue; - break; - } - default: // user has cancelled the createnew and i have acccount query - doLogin = EFalse; - break; - } - } - if( doLogin ) - { - TInt error = ShowTermsofuseL(); - if(KErrNone == error) - { - if( urlNeedtoShow ) - { - // Url query has been shown and accep by user - iSettingsStore->SetL(iServiceId, EURLRegistrationOff, ETrue); - } - iCommandHandler.HandleCommandL(ELoginService, this, &iServiceId); - } - } - } - - -// ----------------------------------------------------------------------------- -// CVIMPSTUiTabbedView::IsURLQueryToBeShownL -// ----------------------------------------------------------------------------- -// -TBool CVIMPSTUiTabbedView::IsURLQueryToBeShownL() - { - TRACER_AUTO; - TBool urlQueryShown = EFalse; - - RBuf buffer; - buffer.CreateL( RProperty::KMaxPropertySize ); - CleanupClosePushL( buffer ); - iSettingsStore->GetL(iServiceId, EServiceURLLink, buffer); - - //get the url from the cenrep. - TInt isURLQueryDisabled = EFalse; - iSettingsStore->GetL(iServiceId, EURLRegistrationOff, isURLQueryDisabled); - - if(buffer.Length() && !isURLQueryDisabled) - { - urlQueryShown = ETrue; - } - CleanupStack::PopAndDestroy(); //buffer - return urlQueryShown; - } - -// --------------------------------------------------------------------------- -// CVIMPSTUiTabbedView::ShowUseExistingOrCreateNewMenuL -// return values <0 -> error -// 0 -> use existing -// 1 -> create new -// --------------------------------------------------------------------------- -// -void CVIMPSTUiTabbedView::ShowUseExistingOrCreateNewMenuL( TInt& aMenuChoise ) - { - TRACER_AUTO; - TInt rvalue( KErrGeneral ); - - CAknSinglePopupMenuStyleListBox* accountList = - new ( ELeave ) CAknSinglePopupMenuStyleListBox; - CleanupStack::PushL( accountList ); - - CAknPopupList* popupList = - CAknPopupList::NewL( accountList, R_AVKON_SOFTKEYS_OK_BACK ); - CleanupStack::PushL( popupList ); - - accountList->ConstructL( popupList, EAknListBoxMenuList); - - // construct listbox item array - CDesCArray *itemList = new (ELeave) CDesCArrayFlat( 2 ); - CleanupStack::PushL( itemList ); - TBuf item; - - // First listbox item - HBufC* text1 = StringLoader::LoadLC( R_QTN_USE_EXISTING ); - itemList->AppendL( *text1 ); - CleanupStack::PopAndDestroy( text1 ); - - // Second listbox item - HBufC* text2 = StringLoader::LoadLC( R_QTN_CREATE_NEW ); - itemList->AppendL( *text2 ); - CleanupStack::PopAndDestroy( text2 ); - - // Set items and ownership - accountList->Model()->SetItemTextArray( itemList ); - accountList->Model()->SetOwnershipType( ELbmOwnsItemArray ); - CleanupStack::Pop( itemList ); - - HBufC* title = StringLoader::LoadLC( R_QTN_SELECT_ACTION ); - popupList->SetTitleL( *title ); - CleanupStack::PopAndDestroy( title ); - - TInt popupOk = popupList->ExecuteLD(); - - if ( popupOk ) - { - rvalue = accountList->CurrentItemIndex(); - } - else - { - rvalue = KErrCancel; - } - - CleanupStack::Pop( popupList ); - CleanupStack::PopAndDestroy( accountList ); - - aMenuChoise = rvalue; - } -// --------------------------------------------------------------------------- -// CVIMPSTUiTabbedView::ShowNewUpdateQueryL -// return values <0 -> error -// 0 ->create new -// 1 -> update existing -// --------------------------------------------------------------------------- -// -TInt CVIMPSTUiTabbedView::ShowNewUpdateQueryL() - { - TRACER_AUTO; - TInt retValue( KErrCancel ); - - CAknSinglePopupMenuStyleListBox* selectionList = - new ( ELeave ) CAknSinglePopupMenuStyleListBox; - CleanupStack::PushL( selectionList ); - - CAknPopupList* popupList = CAknPopupList::NewL( - selectionList, - R_AVKON_SOFTKEYS_SELECT_CANCEL ); - CleanupStack::PushL( popupList ); - - selectionList->ConstructL( popupList, EAknListBoxMenuList ); - - // construct listbox item array - CDesCArray *itemList = new (ELeave) CDesCArrayFlat( 2 ); - CleanupStack::PushL( itemList ); - - // First listbox item - HBufC* newItem = StringLoader::LoadLC( R_QTN_CREATE_NEW_CONTACT ); - itemList->AppendL( *newItem ); - CleanupStack::PopAndDestroy( newItem ); - - // Second listbox item - HBufC* updateItem = StringLoader::LoadLC( R_QTN_UPDATE_EXISTING ); - itemList->AppendL( *updateItem ); - CleanupStack::PopAndDestroy( updateItem ); - - // Set items and ownership - selectionList->Model()->SetItemTextArray( itemList ); - selectionList->Model()->SetOwnershipType( ELbmOwnsItemArray ); - CleanupStack::Pop( itemList ); // ownership is transfered to selectionList - - HBufC* title = StringLoader::LoadLC( R_QTN_SELECT_ACTION ); - popupList->SetTitleL( *title ); - CleanupStack::PopAndDestroy( title ); - - TInt response = popupList->ExecuteLD(); - - if ( response ) - { - retValue = selectionList->CurrentItemIndex(); - } - CleanupStack::Pop( popupList ); // onership given to selectionList - CleanupStack::PopAndDestroy( selectionList ); // selectionList - - return retValue; - } -// CVIMPSTUiTabbedView::ShowLoginDialogL -// --------------------------------------------------------------------------- -// -void CVIMPSTUiTabbedView::ShowLoginDialogL( TDes& aUserName, TDes& aPassword ) - { - TRACER_AUTO; - HBufC* userName = HBufC::NewLC( KUsernameMaxLength ); - HBufC* passWord = HBufC::NewLC( KPasswordMaxLength ); - - TPtr ptrUserName = userName->Des(); - TPtr ptrPassWord = passWord->Des(); - - if( aUserName.Length()== 0 ) - { - CAknMultiLineDataQueryDialog* dlg = CAknMultiLineDataQueryDialog::NewL( ptrUserName, - ptrPassWord ); - if ( dlg->ExecuteLD( R_LOGIN_DIALOG ) ) - { - aUserName.Copy( ptrUserName.LeftTPtr( aUserName.MaxLength() ) ); - aPassword.Copy( ptrPassWord.LeftTPtr( aPassword.MaxLength() ) ); - } - else - { - User::Leave( KErrCancel ); - } - } - else - { - CAknMultiLineDataQueryDialog* dlg = CAknMultiLineDataQueryDialog::NewL( aUserName, - aPassword ); - if ( dlg->ExecuteLD( R_LOGIN_DIALOG ) ) - { - aUserName.Copy( aUserName.LeftTPtr( aUserName.MaxLength() ) ); - aPassword.Copy( aPassword.LeftTPtr( aPassword.MaxLength() ) ); - } - else - { - User::Leave( KErrCancel ); - } - } - CleanupStack::PopAndDestroy( passWord ); - CleanupStack::PopAndDestroy( userName ); - } -// ---------------------------------------------------- -// CVIMPSTUiTabbedView::HandleContentL -// Handles the content coming from the embedded browser. -// Returns EFalse: content will be passed on to framework -// ---------------------------------------------------- -// -TBool CVIMPSTUiTabbedView::HandleContentL( - const TDesC& /*aFileName*/, - const CAiwGenericParamList& /*aParamList*/, - TBool& aContinue ) - { - // Close browser after downloading content - aContinue = EFalse; - return EFalse; - } - -// ---------------------------------------------------- -// CVIMPSTUiTabbedView::DownloadedContentHandlerReserved1 -// ( Reserved for future use ) -// ---------------------------------------------------- -// -TAny* CVIMPSTUiTabbedView::DownloadedContentHandlerReserved1( TAny* /*aAnyParam*/ ) - { - // Empty implementation. - return NULL; - } - -// --------------------------------------------------------------------------- -// CVIMPSTUiTabbedView::CloseConversation -// --------------------------------------------------------------------------- -// -void CVIMPSTUiTabbedView::CloseConversationL() - { - TRACER_AUTO; - TInt index = CurrentItemIndex(); - if( index <= 0 ) - { - // return if item not found - return; - } - MVIMPSTProcessArray& arrayprocess = iCommandHandler.GetProcessInterface(); - TPtrC itemId = arrayprocess.GetItemUserId(index); - - if(itemId.Length() == 0) - { - return; - } - - HBufC* queryTxt = StringLoader::LoadLC( R_QTN_SERVTAB_CLOSE_CONV, itemId ); - - //ask the query and send the response back to the server. - TInt response = VIMPSTUtilsDialog::DisplayQueryDialogL(R_GENERIC_YES_NO_CONFIRMATION_QUERY,*queryTxt); - CleanupStack::PopAndDestroy(queryTxt); - - if( (EAknSoftkeyYes == response)||(EAknSoftkeyOk == response ) ) - { - iCommandHandler.HandleCommandL(ECloseConversation, this, &itemId ); - } - - } - -// ---------------------------------------------------- -// CVIMPSTUiTabbedView::HandleServerAppExit -// ( Reserved for future use ) -// ---------------------------------------------------- -// -void CVIMPSTUiTabbedView::HandleServerAppExit( TInt /*aReason*/ ) - { - TRACER_AUTO; - TInt error = KErrNone; - TRAPD(leaveErr,error = ShowTermsofuseL()); - if(KErrNone == error && KErrNone == leaveErr) - { - TRAP_IGNORE(iCommandHandler.HandleCommandL(ELoginService, this, &iServiceId)); - } - } - -// ---------------------------------------------------- -// CVIMPSTUiTabbedView::ShowTermsofuseL -// ( Reserved for future use ) -// ---------------------------------------------------- -// -TInt CVIMPSTUiTabbedView::ShowTermsofuseL() - { - TRACER_AUTO; - TInt retVal = KErrNone; - // get the ETOUDlgOff if its set don't show TOU dialog else show TOU - TInt termsOfUseDisabled = KErrNone; - iSettingsStore->GetL(iServiceId, ETOUDlgOff, termsOfUseDisabled); - if( !termsOfUseDisabled) - { - HBufC* termsOfUsetext = iBrandHandler->GetToUStringL(); - if( termsOfUsetext ) - { - CleanupStack::PushL(termsOfUsetext); - retVal = CVIMPSTUiTermsOfUseDialogHandler::HandleTermsOfUseDialogLD( - *iSettingsStore, - *iUserId, - iServiceId, - termsOfUsetext ); // termsOfUsetext ownership is transfered - CleanupStack::Pop(); // termsOfUsetext ownership is transfered - } - } - return retVal; - } -// ---------------------------------------------------- -// CVIMPSTUiTabbedView::MakeVoipCallL -// ( Reserved for future use ) -// ---------------------------------------------------- -// -void CVIMPSTUiTabbedView::MakeVoipCallL() - { - TRACER_AUTO; - // making voip call will take in three steps - // pop up the selection dialog - // select adress - // create a call - TInt index = CurrentItemIndex(); - //Index should always be greater than zero - //Negative index means item not found. - if(index <= 0 ) - { - return; - } - MVIMPSTProcessArray& processArray = iCommandHandler.GetProcessInterface(); - TVIMPSTEnums::TItem itemType = processArray.GetType( index ) ; - - if( itemType == TVIMPSTEnums::EContactItem ) - { - iSelectedAction = CVIMPSTUiTabbedView::ECreateXSPCall; - TUint fetchFlags = 0; - TAiwSingleItemSelectionDataV3 data; - data.SetFlags(fetchFlags); - data.SetCommAddressSelectType(EAiwCommVOIPCall); - ReInitializeServiceHandlerL(); - CAiwGenericParamList& inParamList = iServiceHandler->InParamListL(); - // Set service data - inParamList.AppendL(TAiwGenericParam(EGenericParamContactSelectionData, - TAiwVariant(TAiwSingleItemSelectionDataV3Pckg(data)))); - - HBufC8* pack = processArray.ContactLink(index )->PackLC(); - // Set contactlink - inParamList.AppendL(TAiwGenericParam(EGenericParamContactLinkArray, - TAiwVariant(*pack))); - - iServiceHandler->ExecuteServiceCmdL(KAiwCmdSelect, inParamList, - iServiceHandler->OutParamListL(), 0, this); - CleanupStack::PopAndDestroy( pack ); - } - else if( itemType == TVIMPSTEnums::EUnknonContactItem ) - { - TPtrC unknownId = processArray.GetItemUserId( index ); - ExecuteAiwCallL( unknownId ); - } - } -// --------------------------------------------------------- -// CVIMPSTUiTabbedView::ExecuteAiwCallL -// --------------------------------------------------------- -void CVIMPSTUiTabbedView::ExecuteAiwCallL( const TDesC& aSelectedAddress ) - { - TRACER_AUTO; - //aSelectedAdress will be an xsp id of format "ServiceName:UserId" - //here we need to truncate the servicename and pass only the UserId - //Find if aSelectedAdress of type "ServiceName:UserId" - //if true, then remove the service part - TInt phoneNumberStart = aSelectedAddress.Locate(':'); - HBufC* numBuf = NULL; - - if ( KErrNotFound != phoneNumberStart ) - { - phoneNumberStart++; //To get rid of ':' - numBuf = aSelectedAddress.Right( - aSelectedAddress.Length() - phoneNumberStart - ).AllocLC(); - } - else - { - numBuf = aSelectedAddress.AllocLC(); - } - - TPtr numDesc( numBuf->Des ()); - CommonPhoneParser::ParsePhoneNumber ( numDesc, - CommonPhoneParser::EPhoneClientNumber); - - CAiwDialDataExt* dialDataExt = CAiwDialDataExt::NewLC(); - dialDataExt->SetPhoneNumberL ( numBuf->Des ()); - dialDataExt->SetServiceId(iServiceId); - dialDataExt->SetCallType( CAiwDialData::EAIWVoiP); - - dialDataExt->SetWindowGroup ( CCoeEnv::Static()->RootWin().Identifier() ); - ReInitializeServiceHandlerL(); - CAiwGenericParamList& paramList = iServiceHandler->InParamListL(); - dialDataExt->FillInParamListL ( paramList); - iServiceHandler->ExecuteServiceCmdL ( KAiwCmdCall, - paramList, - iServiceHandler->OutParamListL(), - 0, - NULL); - CleanupStack::PopAndDestroy(dialDataExt); - CleanupStack::PopAndDestroy(numBuf); - } - -// --------------------------------------------------------- -// CVIMPSTUiTabbedView::LaunchHelpL() -// Function launches help application using the HlpLauncher. -// @params: Reference to a descriptor, serves as context. -// --------------------------------------------------------- -// - -void CVIMPSTUiTabbedView::LaunchHelpL( const TDesC& aContext ) - { - TRACER_AUTO; - CArrayFix< TCoeHelpContext >* cntx = new( ELeave ) CArrayFixFlat< TCoeHelpContext >( KHelpContextSize ); - CleanupStack::PushL( cntx ); - - TUid KHelpUid = { KHELPUID }; - cntx->AppendL( TCoeHelpContext( KHelpUid, aContext ) ); - CleanupStack::Pop( cntx ); - - //and launch help - takes ownership of context array - HlpLauncher::LaunchHelpApplicationL( CEikonEnv::Static()->WsSession(), cntx ); - } - -// ---------------------------------------------------- -// CVIMPSTUiTabbedView::SettingsStore() -// ---------------------------------------------------- -// -MVIMPSTSettingsStore* CVIMPSTUiTabbedView::SettingsStore() - { - return iSettingsStore; - } - -// ---------------------------------------------------- -// CVIMPSTUiTabbedView::CancelLoginSupportedL() -// ---------------------------------------------------- -// -TBool CVIMPSTUiTabbedView::CancelLoginSupportedL() - { - TRACER_AUTO; - TInt cancelNotSupported(KErrNone); - TBool returnValue = ETrue; - // read from the cenrep settings - TInt err = iSettingsStore->GetL(iServiceId, EServiceCancelLoginNotSupported,cancelNotSupported); - // if any error OR cancelNotSupported = 1 then - if ( err || cancelNotSupported ) - { - returnValue = EFalse; // SOME Error or cancel is not supported : return EFalse - } - return returnValue; // cancel is supported : return ETrue - } - - -// ---------------------------------------------------- -// CVIMPSTUiTabbedView::ChangeConnectionSupportedL() -// ---------------------------------------------------- -// -TBool CVIMPSTUiTabbedView::ChangeConnectionSupportedL() - { - TRACER_AUTO; - TInt changeConnectionSupported(KErrNone); - TBool returnValue = ETrue; - // read from the cenrep settings - TInt err = iSettingsStore->GetL(iServiceId, EServiceChangeConnectionNotSupported,changeConnectionSupported); - // if any error OR cancelNotSupported = 1 then - if ( err || changeConnectionSupported ) - { - returnValue = EFalse; // SOME Error or cancel is not supported : return EFalse - } - return returnValue; // cancel is supported : return ETrue - } - -// ---------------------------------------------------- -// CVIMPSTUiTabbedView::HandleNotifyL() -// ---------------------------------------------------- -// -TInt CVIMPSTUiTabbedView::HandleNotifyL( - TInt aCmdId, - TInt aEventId, - CAiwGenericParamList& aEventParamList, - const CAiwGenericParamList& /* aInParamList */) - { - TRACER_AUTO; - TInt result = 0; - if( (aCmdId == KAiwCmdSelect) && (aEventId == KAiwEventCompleted && iSelectedAction == ECreateXSPCall )) - { - if( iQueryResult ) - { - delete iQueryResult; - iQueryResult = NULL; - } - TInt index = 1; // Get field data from index 1 - const TAiwGenericParam* param = - aEventParamList.FindFirst(index, EGenericParamContactFieldData); - if (KErrNotFound != index) - { - TInt length = param->Value().AsDes().Length(); - iQueryResult = HBufC::NewL(length); - iQueryResult->Des().Append( param->Value().AsDes() ); - // Data must be found! - if (0 >= iQueryResult->Length()) - { - User::Leave(KErrGeneral); - } - if( !iContactSelection ) - { - iContactSelection = CVIMPSTUiContactSelection::NewL(*this); //register for the contactselection - } - iContactSelection->IssueRequest(); - } - else - { - User::Leave(KErrNotFound); - } - result = ETrue; - } - - else if (aCmdId == KAiwCmdAssign || aCmdId == KAiwCmdSelect ) - { - if (aEventId == KAiwEventCompleted ) - { - if( iSelectedAction == CVIMPSTUiTabbedView::EInvitAcceptUpdateExisting || - iSelectedAction == CVIMPSTUiTabbedView::EInvitAcceptCreateNew || - iSelectedAction == CVIMPSTUiTabbedView::EContactCreateNew || - iSelectedAction == CVIMPSTUiTabbedView::EContactAddFromContacts ) - { - // action has been completed , - // this will be excuted only if invitation accepted using update existing contact - TInt paramIndex = 0; - const TAiwGenericParam* contactParam = aEventParamList.FindFirst( - paramIndex, EGenericParamContactLinkArray );//get the contact link - TPtrC8 packLink = contactParam->Value().AsData(); - delete iSelectedData.iPackedLinks; - iSelectedData.iPackedLinks = NULL; - if( packLink.Length() ) - { - iSelectedData.iPackedLinks = packLink.AllocL(); - if( !iContactSelection ) - { - iContactSelection = CVIMPSTUiContactSelection::NewL(*this); //register for the contactselection - } - iContactSelection->IssueRequest(); - } - } - result = ETrue; - } - else if (aEventId == KAiwEventQueryExit) - { - // Send an exit command in order to close CCA and Phonebook2 - CAknAppUi* appUi = static_cast( CCoeEnv::Static()->AppUi() ); - - if ( appUi ) - { - appUi->ProcessCommandL( EAknCmdExit ); - } - result = ETrue; - } - else if(aEventId == KAiwEventOutParamCheck) - { - result = ETrue; - } - } - if(aEventId == KAiwEventCanceled) - { - result = ETrue; - } - return result; - } -// -------------------------------------------------------------------------- -// CVIMPSTUiTabbedView::BlockContactL -// -------------------------------------------------------------------------- -// -void CVIMPSTUiTabbedView::BlockContactL(TBool aBlock /* = EFalse */) - { - TRACER_AUTO; - TInt index = CurrentItemIndex(); - if(iContainer) - { - iContainer->CheckAndSetLastItemFlag(); - } - if( index <= 0 ) - { - // return if item not found - // 0 for own item which can not be blocked - return; - } - if(iWaitNote) - { - delete iWaitNote; - iWaitNote = NULL; - } - - MVIMPSTProcessArray& arrayprocess = iCommandHandler.GetProcessInterface(); - HBufC* contactId = arrayprocess.GetItemUserId(index).AllocLC(); - - if( contactId->Length() ) - { - if(aBlock ) - { - // load, format and show confirmation note - HBufC* prompt = StringLoader::LoadLC( R_QTN_SERVTAB_BLOCKING, *contactId ); - iWaitNote = CVIMPSTUtilsWaitNote::ShowWaitNoteL( *prompt, ETrue, EFalse ); - // iCommandHandler.HandleCommandL(ECmdBlockContact, this, &(contactId) ); - iCommandHandler.HandleCommandL(ECmdBlockContact, this, contactId ); - CleanupStack::PopAndDestroy();// prompt - - if(iContainer) - { - TRACE("HandleAvatarRefreshl calling for blocking"); - - iContainer->HandleAvatarRefreshL(*contactId, ETrue); - } - } - else - { - HBufC* unBprompt = StringLoader::LoadLC( R_QTN_CHAT_UNBLOCKING, *contactId ); - // load, format and show confirmation note - iWaitNote = CVIMPSTUtilsWaitNote::ShowWaitNoteL( *unBprompt, ETrue, EFalse ); - iCommandHandler.HandleCommandL(ECmdUnBlockContact, this, contactId ); - CleanupStack::PopAndDestroy();// unBprompt - } - } - CleanupStack::PopAndDestroy(); //contactId - } - -// -------------------------------------------------------------------------- -// CVIMPSTUiTabbedView::ShowBlockedContactListL -// -------------------------------------------------------------------------- -void CVIMPSTUiTabbedView::ShowBlockedContactListL() - { - TRACER_AUTO; - if(!iIsToolBarHidden) - { - ShowHideFixedToolbarL(EFalse); - } - - if (iContainer) - { - iContainer->DeactivateFindPaneL(); - } - - //Launch the search view with search dialog - LaunchViewL( iExtensionService.BlockViewId() ); - } - -// -------------------------------------------------------------------------- -// CVIMPSTUiTabbedView::HandleContactSelectionCompleteL -// -------------------------------------------------------------------------- -void CVIMPSTUiTabbedView::HandleContactSelectionCompleteL() - { - TRACER_AUTO; - - if( iWaitNote ) - { - delete iWaitNote; - iWaitNote = NULL; - } - if( iSelectedAction == CVIMPSTUiTabbedView::EInvitAcceptUpdateExisting || iSelectedAction == CVIMPSTUiTabbedView::EInvitAcceptCreateNew) - { - iWaitNote = CVIMPSTUtilsWaitNote::ShowWaitNoteL( R_QTN_SERVTAB_SAVING_CONTACT, ETrue, EFalse ); - - if ( iSelectedData.iPackedLinks ) //add the selected contact to the service tab - { - TRACE("process contact"); - if( iSelectedAction == CVIMPSTUiTabbedView::EInvitAcceptCreateNew ) - { - iCommandHandler.HandleCommandL( ECmdProcessAcceptedContactNew, this, (TAny*)&iSelectedData ); - } - else - { - iCommandHandler.HandleCommandL( ECmdProcessAcceptedContactExist, this, (TAny*)&iSelectedData ); - } - delete iSelectedData.iPackedLinks; - iSelectedData.iPackedLinks = NULL; - } - iSelectedData.iXSPList.ResetAndDestroy(); - - //invitation has been accepted using update existing contact - // updation is successful - // send accepted request to command/engine/server - TRACE("frnrequest accepted"); - iCommandHandler.HandleCommandL(EFriendAccpeted, this, iFriendRequestId ); - } - else if( iSelectedAction == CVIMPSTUiTabbedView::EContactCreateNew || iSelectedAction == CVIMPSTUiTabbedView::EContactAddFromContacts) - { - MVIMPSTStorageServiceView* storage = CVIMPSTStorageManagerFactory::ContactListInterfaceL( iEngine.ServiceId() ) ; - TBool localStore = EFalse; - if( storage ) - { - localStore = storage->IsLocalStore(); - } - if( localStore )//for server store wait note is shown by AddContactL function - { - if(iWaitNote) - { - delete iWaitNote; - iWaitNote = NULL; - } - iWaitNote = CVIMPSTUtilsWaitNote::ShowWaitNoteL( R_QTN_SERVTAB_SAVING_CONTACT, ETrue, EFalse ); - } - - if ( iSelectedData.iPackedLinks ) //add the selected contact to the service tab - { - TRACE("process contact"); - if( iSelectedAction == CVIMPSTUiTabbedView::EContactCreateNew ) - { - iCommandHandler.HandleCommandL( ECmdProcessSelectedContactNew, this, (TAny*)&iSelectedData ); - } - else - { - iCommandHandler.HandleCommandL( ECmdProcessSelectedContactExist, this, (TAny*)&iSelectedData ); - } - delete iSelectedData.iPackedLinks; - iSelectedData.iPackedLinks = NULL; - //server store xspid will be stored in iSelectedData.iXSPList and adding it to UI - if( !localStore && iSelectedAction == CVIMPSTUiTabbedView::EContactAddFromContacts) - { - AddContactL( iSelectedData.iXSPList ); - } - iSelectedData.iXSPList.ResetAndDestroy(); - - } - // this is for adding a fresh contact for local store - // read the data from link and send it to server for updation - } - else if( iSelectedAction == CVIMPSTUiTabbedView::ECreateXSPCall && iQueryResult ) - { - // make a call here - ExecuteAiwCallL(*iQueryResult ); - delete iQueryResult; - iQueryResult = NULL; - } - iSelectedAction = KErrNotFound; // This is to clear the previous selected action. - - } - -// -------------------------------------------------------------------------- -// CVIMPSTUiTabbedView::LaunchSettingsViewL -// -------------------------------------------------------------------------- -void CVIMPSTUiTabbedView::LaunchSettingsViewL() - { - /* - If settingsui is already opened, instead of starting with StartDocument just bring csc to foreground and send message - (csc opens correct settings ui even when itīs already open)What comes to coming back to meco tab by pressing Back in - settingsui i made change that tab view is opened by using RxSPViewServices in csc side and csc is closed after that. - I found only one problem while testing this solution, that is if phonebook is closed when settingsui is still open. - In that case settingsui stays in background, but even then when Back is pressed on settingsui correct tab is opened - (phonebook is reopened using RxSPViewServices) - - ************************************************************************************** - CSC team agreed to provide new generic CSC view launcher API, once CSC provide new API - below code need to remove and new API will be called. - *************************************************************************************** - */ - TRACER_AUTO; - _LIT(KStartupParams, "ACTION=4 SERID="); - _LIT8(KStartupParams8, "ACTION=4 SERID="); - //Take CSC UID (In future if this UID change , we also need to change it otherwise we will not be able - //to launch CSC settings. - const TUid KCSCAppUid = { 0x10275458 }; - RWsSession ws; - User::LeaveIfError( ws.Connect() ); - CleanupClosePushL( ws ); - TApaTaskList list( ws ); - - TApaTask task( list.FindApp( KCSCAppUid ) ); - - if ( task.Exists() ) - { - TBuf8<255> params8; - params8.Copy( KStartupParams8 ); - params8.AppendNum( iServiceId ); - //Bring CSC to foreground if already open - task.BringToForeground(); - task.SendMessage( - TUid::Uid( KUidApaMessageSwitchOpenFileValue ), params8 ); - } - else - { - RApaLsSession session; - CleanupClosePushL( session ); - User::LeaveIfError(session.Connect()); - - TUid appUid = KCSCAppUid; - TThreadId threadId; - TFileName fileName; - - fileName.Copy( KStartupParams ); - fileName.AppendNum( iServiceId ); - - User::LeaveIfError( - session.StartDocument( fileName, appUid, threadId ) ); - - session.Close(); - CleanupStack::PopAndDestroy( &session ); - } - - CleanupStack::PopAndDestroy( &ws ); - - }//End LaunchSettingsUiL() - // -------------------------------------------------------------------------- -// CVIMPSTUiTabbedView::ReInitializeServiceHandlerL() -// -------------------------------------------------------------------------- - -void CVIMPSTUiTabbedView::ReInitializeServiceHandlerL() - { - TRACER_AUTO; - if(iIsServiceHandleReSet ) - { - if(iServiceHandler) - { - iServiceHandler->AttachL( R_IM_APP_INTEREST ); - iServiceHandler->AttachMenuL( R_SERVTAB_TABBED_VIEW_MENU, - R_IM_APP_INTEREST ); - - iServiceHandler->AttachL( R_AIWASSIGNMENT_INTEREST ); - - iServiceHandler->AttachL( R_AIWSELECT_INTEREST ); - iIsServiceHandleReSet = EFalse; - } - } - } - // -------------------------------------------------------------------------- - // CVIMPSTUiTabbedView::LaunchFetchDialogL() - // -------------------------------------------------------------------------- - -void CVIMPSTUiTabbedView::LaunchFetchDialogL() - { - TRACER_AUTO; - iSelectedAction = EContactAddFromContacts; - MVIMPSTStorageServiceView* storage = CVIMPSTStorageManagerFactory::ContactListInterfaceL( iEngine.ServiceId() ) ; - TBool localStore = EFalse; - if( storage ) - { - localStore = storage->IsLocalStore(); - } - - if( localStore ) - { - //multiple item fetch. - TUint fetchFlags = 0; - fetchFlags |= ::EExcludeGroupsView; - - ExecuteMultipleItemFetchL( TAiwMultipleEntrySelectionDataV2().SetFlags( fetchFlags ) ); - } - else - { - //single item fetch. - TUint fetchFlags = 0; - - ExecuteSingleItemFetchL( TAiwSingleEntrySelectionDataV2().SetFlags( fetchFlags ) ); - } - - } - // -------------------------------------------------------------------------- - // CVIMPSTUiTabbedView::ExecuteSingleItemFetchL - // -------------------------------------------------------------------------- - -void CVIMPSTUiTabbedView::ExecuteSingleItemFetchL( TAiwSingleEntrySelectionDataV2 aData ) - { - TRACER_AUTO; - if(iAiwParamList) - { - delete iAiwParamList; - iAiwParamList = NULL; - } - iAiwParamList = CAiwGenericParamList::NewL(); - iAiwParamList->AppendL( - TAiwGenericParam( - EGenericParamContactSelectionData, - TAiwVariant(TAiwSingleEntrySelectionDataV2Pckg(aData)))); - - ReInitializeServiceHandlerL(); - iServiceHandler->ExecuteServiceCmdL( - KAiwCmdSelect, - *iAiwParamList, - iServiceHandler->OutParamListL(), - 0, - this - ); - - } -// -------------------------------------------------------------------------- -// CVIMPSTUiTabbedView::ExecuteMultipleItemFetchL -// -------------------------------------------------------------------------- -void CVIMPSTUiTabbedView::ExecuteMultipleItemFetchL( TAiwMultipleEntrySelectionDataV2 aData ) - { - TRACER_AUTO; - if(iAiwParamList) - { - delete iAiwParamList; - iAiwParamList = NULL; - } - iAiwParamList = CAiwGenericParamList::NewL(); - ReInitializeServiceHandlerL(); - iAiwParamList->AppendL( - TAiwGenericParam( - EGenericParamContactSelectionData, - TAiwVariant(TAiwMultipleEntrySelectionDataV2Pckg(aData)))); - - - iServiceHandler->ExecuteServiceCmdL( - KAiwCmdSelect, - *iAiwParamList, - iServiceHandler->OutParamListL(), - 0, - this - ); - } -// End of File