--- 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 <akntoolbar.h> //CAknToolbar
-#include <eikcolib.h> //CEikAppUiFactory
-
-#include <coecntrl.h>
-#include <eikmenup.h>
-#include <AknGlobalNote.h>
-#include <eikbtgpc.h>
-#include <avkon.rsg>
-#include <aknnotewrappers.h>
-#include <AknQueryDialog.h>
-#include <StringLoader.h>
-#include <eikenv.h>
-#include <e32property.h>
-#include <apgtask.h>
-#include <aknmessagequerydialog.h>
-
-// Pbk2
-#include <MPbk2AppUi.h>
-#include <CPbk2UIExtensionView.h>
-#include <MPbk2ViewActivationTransaction.h>
-#include <MPbk2ViewExplorer.h>
-#include <CPbk2ViewState.h>
-#include <MPbk2StartupMonitor.h>
-#include <Pbk2Commands.hrh>
-#include <MVPbkStoreContact.h>
-
-#include <MPbk2ApplicationServices.h>
-#include <MPbk2CommandHandler.h>
-// xSP extension manager
-#include "MxSPViewMapper.h"
-#include "MxSPContactManager.h"
-#include "cvimpststoragemanagerfactory.h"
-#include "mvimpststorageserviceview.h"
-#include "cvimpstuimenuextension.h"
-
-//resource
-#include <extensionmanagerres.rsg>
-#include <vimpstuires.rsg>
-
-//CCA
-#include <mccaparameter.h>
-#include <ccafactory.h>
-#include <mccaconnection.h>
-
-#include "uiservicetabtracer.h"
-
-//AIW - VOIP
-#include <aiwdialdataext.h>
-#include <aknPopup.h>
-#include <AiwCommon.hrh>
-#include <AiwServiceHandler.h>
-#include <aiwdialdata.h>
-#include <MVPbkStoreContact.h>
-
-//browser launch
-#include <browserlauncher.h>
-#include "cvimpstuitermsofusedialoghandler.h"
-#include <cvimpstsettingsstore.h>
-#include <aknmessagequerydialog.h>
-#include "tvimpstconsts.h"
-// avatar
-#include "mvimpstenginepresencesubservice.h"
-#include "mvimpstenginesubservice.h"
-#include "mvimpstengineimsubservice.h"
-#include "cvimpstuicontactselection.h"
-
-#include <vimpstui.mbg>
-// help launch
-#include <hlplch.h>
-#include <coehelp.h>
-#include "meco.hlp.hrh"
-
-#include <AiwGenericParam.h>
-#include <AiwCommon.hrh> //KAiwCmdCall
-#include <AiwContactAssignDataTypes.h>
-#include <commonphoneparser.h>
-
-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<MPbk2UIExtensionView2*>(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<KBufLen> 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<KBufLen> 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<HBufC> 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<CEikAppUiFactory*>(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<KBufLen> 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<TVIMPSTSearchData> /*aSearchData*/ )
- {
- // no implemetation
- }
-
-
-// ---------------------------------------------------------
-// CVIMPSTUiTabbedView::HandleSearchFinishedL()
-// ---------------------------------------------------------
-//
-void CVIMPSTUiTabbedView::HandleSearchFinishedL(TInt /*aError*/)
- {
- // no implemetation
- }
-
-// ---------------------------------------------------------
-// CVIMPSTUiSearchView::HandleSearchKeysEventL()
-// ---------------------------------------------------------
-//
-void CVIMPSTUiTabbedView::HandleSearchKeysEventL( RArray<TInt>& aEnumKeysArray, RPointerArray<HBufC>& 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<KMaxListItemLength> 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<CAknAppUi*>( 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