--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imstutils/imconversationview/imcvuiapp/src/cimcvappstatuspanehandler.cpp Tue Feb 02 10:12:18 2010 +0200
@@ -0,0 +1,890 @@
+/*
+* Copyright (c) 2007-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: Handles statuspane, context pane, navi pane
+<<<<<<< C:\DOCUME~1\mbn\LOCALS~1\Temp\cimcvappstatuspanehandler-3_GAA.cpp
+*
+*/
+
+
+// INCLUDE FILES
+#include "cimcvappstatuspanehandler.h"
+#include "mimcvtabobserver.h"
+
+
+// for logs
+#include "imcvlogger.h"
+//#include <aknindicatorcontainer.h>
+#include <eikenv.h>
+#include <aknenv.h>
+#include <aknnavi.h>
+#include <aknnavide.h>
+#include <aknEditStateIndicator.h>
+#include <AknIndicatorContainer.h>
+#include <featmgr.h>
+#include <hlplch.h>
+#include <e32property.h>
+
+// system includes
+#include <layoutmetadata.cdl.h>
+#include <aknlayoutscalable_avkon.cdl.h>
+#include <imconnectionproviderconsts.h>
+#include "cimcvenginefactory.h"
+#include "mimcvenginefactory.h"
+const TUint16 KNewMessageIcon( 0xF818 );
+
+// ================= MEMBER FUNCTIONS =======================
+// -----------------------------------------------------------------------------
+// CIMCVAppStatusPaneHandler::ConstructL
+// (other items were commented in a header).
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CIMCVAppStatusPaneHandler::CIMCVAppStatusPaneHandler(MIMCVEngineFactory& aEngineFactory):
+ iEngineFactory( aEngineFactory )
+ {
+ IM_CV_LOGS(TXT("CIMCVAppStatusPaneHandler::CIMCVAppStatusPaneHandler()" ));
+ }
+// -----------------------------------------------------------------------------
+// CIMCVAppStatusPaneHandler::ConstructL
+// (other items were commented in a header).
+// Symbian OS default constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CIMCVAppStatusPaneHandler::ConstructL()
+ {
+ IM_CV_LOGS(TXT("CIMCVAppStatusPaneHandler::ConstructL() start" ));
+ // Get pointer to status-pane
+ CEikStatusPane* statusPane = CEikonEnv::Static()->AppUiFactory()->
+ StatusPane();
+
+ iNaviPane = static_cast<CAknNavigationControlContainer*>(
+ statusPane->ControlL( TUid::Uid( EEikStatusPaneUidNavi ) ) );
+
+ // Get pointer to title-pane
+ iTitlePane = static_cast<CAknTitlePane*>( statusPane->ControlL(
+ TUid::Uid( EEikStatusPaneUidTitle ) ) );
+
+ iContextPane = static_cast<CAknContextPane*>( statusPane->ControlL(
+ TUid::Uid( EEikStatusPaneUidContext ) ) );
+
+ iNewMsgIcon = HBufC::NewL( 1 );
+
+ TPtr iconPtr( iNewMsgIcon->Des() );
+ iconPtr.Append( TChar( KNewMessageIcon ) );
+
+ InitMessageIndicatorL();
+
+ //Get the service id - this property is published by imcvlauncher
+ TInt error = RProperty::Get( KMeCoPropertyUid, KMeCoConvViewServiceIdKey, iServiceId );
+ User::LeaveIfError(error);
+
+ iEngineFactory.RegisterOpenChatObserver(this);
+ IM_CV_LOGS(TXT("CIMCVAppStatusPaneHandler::ConstructL() end" ));
+ }
+
+// -----------------------------------------------------------------------------
+// CIMCVAppStatusPaneHandler::NewL
+// (other items were commented in a header).
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CIMCVAppStatusPaneHandler* CIMCVAppStatusPaneHandler::NewL(MIMCVEngineFactory& aEngineFactory)
+ {
+ IM_CV_LOGS(TXT("CIMCVAppStatusPaneHandler::NewL() start" ));
+ CIMCVAppStatusPaneHandler* self = new ( ELeave ) CIMCVAppStatusPaneHandler( aEngineFactory );
+
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ IM_CV_LOGS(TXT("CIMCVAppStatusPaneHandler::NewL() end" ));
+ return self;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CIMCVAppStatusPaneHandler::~CIMCVAppStatusPaneHandler
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+CIMCVAppStatusPaneHandler::~CIMCVAppStatusPaneHandler()
+ {
+ IM_CV_LOGS(TXT("CIMCVAppStatusPaneHandler::~CIMCVAppStatusPaneHandler() start" ));
+
+ if (iLastTitle)
+ {
+ delete iLastTitle;
+ iLastTitle = NULL;
+ }
+ DestroyMessageIndicator();
+
+ iObserverList.Reset();
+
+ delete iNewMsgIcon;
+ delete iNewDecoratedTabGroup;
+
+ iEngineFactory.UnRegisterOpenChatObserver();
+ IM_CV_LOGS(TXT("CIMCVAppStatusPaneHandler::~CIMCVAppStatusPaneHandler() end" ));
+ }
+
+// -----------------------------------------------------------------------------
+// CIMCVAppStatusPaneHandler::SetPicture
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CIMCVAppStatusPaneHandler::SetPicture( const CFbsBitmap* aPicture ,
+ const CFbsBitmap* aMask )
+ {
+ IM_CV_LOGS(TXT("CIMCVAppStatusPaneHandler::SetPicture() start" ));
+ TBool landscape( Layout_Meta_Data::IsLandscapeOrientation() );
+
+ TBool cpVisible( iContextPane ? iContextPane->IsVisible() : EFalse );
+ TBool useTitle( !cpVisible || landscape );
+ if( useTitle )
+ {
+ iTitlePane->SetSmallPicture(aPicture, aMask ,useTitle );
+ }
+ else
+ {
+ iContextPane->SetPicture( aPicture, aMask );
+ }
+ IM_CV_LOGS(TXT("CIMCVAppStatusPaneHandler::SetPicture() end" ));
+ }
+
+// -----------------------------------------------------------------------------
+// CIMCVAppStatusPaneHandler::SetTitleL
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CIMCVAppStatusPaneHandler::SetTitleL( const TDesC& aTitle )
+ {
+
+ IM_CV_LOGS(TXT("CIMCVAppStatusPaneHandler::SetTitleL() start %S" ), &aTitle);
+ iTitlePane->SetTextL( aTitle );
+ if (iLastTitle)
+ {
+ delete iLastTitle;
+ iLastTitle = NULL;
+ }
+ iLastTitle = aTitle.AllocL();
+ IM_CV_LOGS(TXT("CIMCVAppStatusPaneHandler::SetTitleL() end" ));
+ }
+
+
+
+// ---------------------------------------------------------
+// CIMCVAppStatusPaneHandler::ShowTabGroupL
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+TInt CIMCVAppStatusPaneHandler::ShowTabGroupL( const TDesC& aId,
+ const TBool noCreate /* = EFalse */ )
+ {
+
+ IM_CV_LOGS(TXT("CIMCVAppStatusPaneHandler::ShowTabGroupL() start %S" ), &aId);
+ iPrevTabId = 0;
+ iCurrentTabId =0;
+
+ iCurrentTabId = iEngineFactory.FindIndexL(aId);
+
+ CreateTabsL(noCreate);
+
+
+ return iCurrentTabId;
+ }
+
+
+
+
+// -----------------------------------------------------------------------------
+// CIMCVAppStatusPaneHandler::CreateTabsL
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CIMCVAppStatusPaneHandler::CreateTabsL(const TBool noCreate)
+ {
+ IM_CV_LOGS(TXT("CIMCVAppStatusPaneHandler::CreateTabs() start " ));
+ iOpenChatArrayCount = iEngineFactory.Count();
+
+
+ IM_CV_LOGS(TXT("CIMCVAppStatusPaneHandler::CreateTabs() OPEN CHAT ARRAY COUNT %d" ), iOpenChatArrayCount);
+ if ( (noCreate) && (iNewDecoratedTabGroup) )
+ {
+
+ CAknTabGroup* origtabGroup =
+ static_cast<CAknTabGroup*>( iNewDecoratedTabGroup->DecoratedControl() );
+
+ if ( origtabGroup->TabCount() == (iOpenChatArrayCount-1) )
+ {
+
+ for (TInt index=0; index<iOpenChatArrayCount; index++)
+ {
+ if ( (iEngineFactory.IsMsgPendingL(index))
+ && ( index != iCurrentTabId ) )
+ {
+ origtabGroup->ReplaceTabTextL(index, iNewMsgIcon->Des());
+ }
+ else
+ {
+ origtabGroup->ReplaceTabTextL( index, iEngineFactory.GetDisplayNameL(index) );
+ }
+ }
+
+ return;
+
+ }
+
+ }
+
+
+ CAknNavigationDecorator* tmpDecoration = iNaviPane->CreateTabGroupL();
+
+ CleanupStack::PushL( tmpDecoration );
+
+ CAknTabGroup* tabGroup =
+ static_cast<CAknTabGroup*>( tmpDecoration->DecoratedControl() );
+
+ if( iOpenChatArrayCount > 2 )
+ {
+ tabGroup->SetTabFixedWidthL( EAknTabWidthWithThreeTabs );
+ }
+ else if ( iOpenChatArrayCount == 2 )
+ {
+ tabGroup->SetTabFixedWidthL( EAknTabWidthWithTwoTabs );
+ }
+ else
+ {
+ tabGroup->SetTabFixedWidthL( EAknTabWidthWithOneTab );
+ }
+
+
+ tabGroup->SetObserver( this );
+
+
+ for (TInt index=0; index<iOpenChatArrayCount; index++)
+ {
+
+ if ( (iEngineFactory.IsMsgPendingL(index))
+ && ( index != iCurrentTabId ) )
+ {
+ tabGroup->AddTabL(index, iNewMsgIcon->Des());
+ }
+ else
+ {
+ if ( 1 == iOpenChatArrayCount )
+ {
+ // When a single conversation exists , no need to display name on tab
+ tabGroup->AddTabL( index, KNullDesC );
+ }
+ else
+ {
+ // When more than one conversation exists , display names are displayed on the tabs
+ tabGroup->AddTabL( index, iEngineFactory.GetDisplayNameL(index) );
+ }
+ }
+ }
+
+ CleanupStack::Pop( tmpDecoration );
+
+ delete iNewDecoratedTabGroup;
+ iNewDecoratedTabGroup = tmpDecoration;
+
+ ShowTabL();
+
+
+ IM_CV_LOGS(TXT("CIMCVAppStatusPaneHandler::CreateTabs() end" ));
+
+ }
+
+
+
+
+// -----------------------------------------------------------------------------
+// CIMCVAppStatusPaneHandler::TabChangedL
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CIMCVAppStatusPaneHandler::TabChangedL(TInt aIndex)
+ {
+ TInt activechatitemindex;
+ CAknTabGroup* tabGroup = static_cast<CAknTabGroup*>(
+ iNewDecoratedTabGroup->DecoratedControl());
+ if ( tabGroup )
+ {
+ tabGroup->SetActiveTabByIndex( aIndex );
+ iEngineFactory.SetActiveItemL(tabGroup->ActiveTabId());
+ iPrevTabId = iCurrentTabId;
+ iCurrentTabId = tabGroup->ActiveTabId();
+ // Get the corrent position in open chat array using tab id
+ if( iOpenChatArrayCount > iEngineFactory.Count() )
+ {
+ activechatitemindex = (( iPrevTabId<iCurrentTabId )?iPrevTabId:iCurrentTabId);
+ }
+ else
+ {
+ activechatitemindex = iCurrentTabId ;
+ }
+ tabGroup->ReplaceTabTextL( iCurrentTabId, iEngineFactory.GetDisplayNameL(activechatitemindex) ); // replace of iCurrentTabId using activechatitemindex
+ for (TInt index=0; index<iObserverList.Count(); index++)
+ {
+ iObserverList[index]->SwitchTabL( iEngineFactory.GetActiveServiceId(), iEngineFactory.GetTargetIdL(iCurrentTabId), iCurrentTabId );
+ }
+
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CIMCVAppStatusPaneHandler: AddObserver
+// -----------------------------------------------------------------------------
+//
+void CIMCVAppStatusPaneHandler::AddObserver(
+ MIMCVTabObserver* aObserver)
+ {
+
+ ASSERT( aObserver);
+ TInt status( iObserverList.Find( aObserver ) );
+ if ( status == KErrNotFound )
+ {
+ status = iObserverList.Append( aObserver ) ;
+ if( status != KErrNone)
+ {
+ CActiveScheduler::Current()->Error( status );
+ }
+ }
+
+ }
+
+
+// -----------------------------------------------------------------------------
+// CIMCVAppStatusPaneHandler: RemoveObserver
+// -----------------------------------------------------------------------------
+//
+void CIMCVAppStatusPaneHandler::RemoveObserver(
+ MIMCVTabObserver* aObserver )
+ {
+
+ ASSERT( aObserver);
+ const TInt status( iObserverList.Find( aObserver ) );
+ if ( status != KErrNotFound )
+ {
+ iObserverList.Remove( status );
+ iObserverList.Compress();
+ }
+
+
+ }
+
+
+// ---------------------------------------------------------
+// CIMCVAppStatusPaneHandler::ShowTabL
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CIMCVAppStatusPaneHandler::ShowTabL()
+ {
+ CAknTabGroup* tabGroup = static_cast<CAknTabGroup*>(
+ iNewDecoratedTabGroup->DecoratedControl());
+
+ tabGroup->SetActiveTabById( iCurrentTabId );
+ iEngineFactory.SetActiveItemL(iCurrentTabId);
+
+ /* Pushes new decorator object to top of the stack and draws it*/
+
+ iNaviPane->PushL( *iNewDecoratedTabGroup );
+
+ }
+
+
+// ---------------------------------------------------------
+// CIMCVAppStatusPaneHandler::HideTab
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CIMCVAppStatusPaneHandler::HideTab()
+ {
+
+ /* Pops*/
+ iNaviPane->Pop( iNewDecoratedTabGroup );
+
+ }
+
+
+
+
+// ---------------------------------------------------------
+// CIMCVAppStatusPaneHandler::SetActiveTabByIndexL
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CIMCVAppStatusPaneHandler::SetActiveTabByIndexL( const TInt aIndex )
+ {
+
+ CAknTabGroup* tabGroup = static_cast<CAknTabGroup*>(
+ iNewDecoratedTabGroup->DecoratedControl());
+
+ if (!tabGroup)
+ {
+ return ;
+ }
+
+ iCurrentTabId = aIndex;
+
+ TRAP_IGNORE( tabGroup->ReplaceTabL( iCurrentTabId,
+ iEngineFactory.GetDisplayNameL(iCurrentTabId) ) );
+
+ tabGroup->SetActiveTabById( iCurrentTabId );
+
+ iEngineFactory.SetActiveItemL(iCurrentTabId);
+
+ }
+
+// -----------------------------------------------------------------------------
+// CIMCVAppStatusPaneHandler::RefreshTitlePaneTextL
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CIMCVAppStatusPaneHandler::RefreshTitlePaneTextL()
+ {
+ // seems that this is the only way that the title pane text color updates..
+ if( iTitlePane->Text() )
+ {
+ HBufC* origText = iTitlePane->Text()->AllocLC();
+ HBufC* empty = HBufC::NewLC( 1 );
+ iTitlePane->SetText( empty );
+ iTitlePane->SetText( origText);
+ CleanupStack::Pop( 2, origText ); // empty, origText
+ }
+ }
+
+
+// -----------------------------------------------------------------------------
+// CIMCVAppStatusPaneHandler::TabGroup
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+CAknTabGroup* CIMCVAppStatusPaneHandler::TabGroup() const
+ {
+ // Returns pointer to topmost decorator's tabgroup
+ return static_cast<CAknTabGroup*>(
+ iNewDecoratedTabGroup->DecoratedControl() );
+ }
+
+
+
+// -----------------------------------------------------------------------------
+// CIMCVAppStatusPaneHandler::PopNaviPane
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CIMCVAppStatusPaneHandler::PopNaviPane()
+ {
+ // Pops the topmost decorator out of decorator stack.
+ iNaviPane->Pop();
+
+ }
+
+
+// -----------------------------------------------------------------------------
+// CIMCVAppStatusPaneHandler::ClearNaviPaneL
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CIMCVAppStatusPaneHandler::ClearNaviPaneL( TBool aAllowDuplicates )
+ {
+ // Pushes default decorator object (empty one)
+ // to top of the stack and draws it. if aAllowDuplicates is ETrue
+ // the new empty decorator is created on top of the stack, rather than
+ // raising the existing one.
+ iNaviPane->PushDefaultL( aAllowDuplicates );
+ }
+
+
+// ---------------------------------------------------------
+// CIMCVAppStatusPaneHandler::HandleChangeL
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CIMCVAppStatusPaneHandler::HandleChangeL(TInt /*aServiceId*/, TInt aIndex, TOpenChatsEventType aChangeType)
+ {
+ switch( aChangeType )
+ {
+ case ENewChat:
+ {
+ if( iCurrentTabId >= aIndex )
+ {
+ iCurrentTabId = iCurrentTabId+1;
+ iEngineFactory.SetActiveItemL( iCurrentTabId );
+ }
+ const TDesC& chatId ( iEngineFactory.GetActiveItemL() );
+ TRAP_IGNORE(
+ {
+ if ( (iCurrentTabId == -1) || (!chatId.Length()) )
+ {
+ ShowTabGroupL(iEngineFactory.GetTargetIdL(aIndex));
+ }
+ else
+ {
+ ShowTabGroupL(chatId) ;
+ }
+ }
+ );
+ break;
+ }
+ case EChatClosed:
+ {
+ if( aIndex == 0 )
+ {
+ return;
+ }
+ iEngineFactory.SetActiveItemL( aIndex -1 );
+
+ const TDesC& chatId (iEngineFactory.GetActiveItemL());
+
+ TRAP_IGNORE(
+ {
+ if ( (iCurrentTabId == -1) || (!chatId.Length()) )
+ {
+ ShowTabGroupL(iEngineFactory.GetTargetIdL(aIndex));
+ }
+ else
+ {
+ ShowTabGroupL(chatId) ;
+ }
+ }
+ );
+
+ break;
+ }
+
+
+ case EUnReadCountChanged:
+ {
+
+ const TDesC& chatId (iEngineFactory.GetActiveItemL());
+
+ if (!chatId.Length())
+ {
+ break;
+ }
+
+ TRAP_IGNORE(
+ {
+ ShowTabGroupL(chatId, ETrue);
+ PushFadeTextL();
+ ShowFadeText( *iStatusPaneText );
+ delete iStatusPaneText;
+ iStatusPaneText = NULL;
+ }
+ );
+
+ break;
+ }
+
+ default:
+ {
+ //should never be here.
+ break;
+ }
+ }
+
+
+ }
+
+// ---------------------------------------------------------
+// CIMCVAppStatusPaneHandler::SetStatusMsgL()
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CIMCVAppStatusPaneHandler::SetStatusMsgL(TInt /*aServiceId*/, TInt aIndex,const TDesC & aMsg)
+ {
+ if(aIndex>=0)
+ {
+ _LIT(KColun, ": ");
+ iStatusPaneText = HBufC::NewL(iEngineFactory.GetTargetIdL(aIndex).Length() +
+ aMsg.Length() + KColun().Length());
+ TPtr statusPanePtr(iStatusPaneText->Des());
+
+ statusPanePtr.Copy(iEngineFactory.GetTargetIdL(aIndex));
+ statusPanePtr.Append(KColun);
+ statusPanePtr.Append(aMsg);
+ }
+ }
+
+
+
+// ---------------------------------------------------------
+// CIMCVAppStatusPaneHandler::RunFadeText()
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CIMCVAppStatusPaneHandler::RunFadeText()
+ {
+ static_cast<CIMCVNewMsgFadeControl*>(iDecoratedFadeText->DecoratedControl())->Start();
+ }
+
+// -----------------------------------------------------------------------------
+// CIMCVAppStatusPaneHandler::HideFadeText
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CIMCVAppStatusPaneHandler::HideFadeText()
+ {
+ if ( iDecoratedFadeText )
+ {
+ iNaviPane->Pop( iDecoratedFadeText );
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CIMCVAppStatusPaneHandler::ShowFadeText
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CIMCVAppStatusPaneHandler::ShowFadeText( TDesC& aTextToFade )
+ {
+ IMessageIndicator()->SetMessage( aTextToFade );
+ RunFadeText();
+ }
+
+// -----------------------------------------------------------------------------
+// CIMCVAppStatusPaneHandler::ShowNavipaneIndicators
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CIMCVAppStatusPaneHandler::ShowNavipaneIndicators()
+ {
+ MAknEditingStateIndicator* editStateIndicator =
+ CAknEnv::Static()->EditingStateIndicator();
+
+ if ( editStateIndicator )
+ {
+ CAknIndicatorContainer* indicatorContainer = editStateIndicator->IndicatorContainer();
+
+ if( indicatorContainer )
+ {
+ indicatorContainer->SetIndicatorState(
+ TUid::Uid( EAknNaviPaneEditorIndicatorMessageInfo ),
+ EAknIndicatorStateOn );
+ }
+ }
+ }
+
+// ---------------------------------------------------------
+// CIMCVAppStatusPaneHandler::HideNavipaneIndicators()
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CIMCVAppStatusPaneHandler::HideNavipaneIndicators()
+ {
+ MAknEditingStateIndicator* editStateIndicator =
+ CAknEnv::Static()->EditingStateIndicator();
+
+ if ( editStateIndicator )
+ {
+ CAknIndicatorContainer* indicatorContainer = editStateIndicator->IndicatorContainer();
+
+ if( indicatorContainer )
+ {
+ indicatorContainer->SetIndicatorState(
+ TUid::Uid( EAknNaviPaneEditorIndicatorMessageInfo ),
+ EAknIndicatorStateOff );
+ }
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CIMCVAppStatusPaneHandler::IMessageIndicator
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+CIMCVNewMsgFadeControl* CIMCVAppStatusPaneHandler::IMessageIndicator() const
+ {
+ if( iDecoratedFadeText )
+ {
+ return static_cast<CIMCVNewMsgFadeControl*>(iDecoratedFadeText->DecoratedControl());
+ }
+ else
+ {
+ return NULL;
+ }
+
+ }
+
+// ---------------------------------------------------------
+// CIMCVAppStatusPaneHandler::PushFadeTextL()
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CIMCVAppStatusPaneHandler::PushFadeTextL()
+ {
+ if ( iDecoratedFadeText )
+ {
+ iNaviPane->PushL( *iDecoratedFadeText );
+ }
+ }
+
+// ---------------------------------------------------------
+// CIMCVAppStatusPaneHandler::ResetFadeText()
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CIMCVAppStatusPaneHandler::ResetFadeText()
+ {
+ IMessageIndicator()->Reset();
+ }
+
+
+// ---------------------------------------------------------
+// CIMCVAppStatusPaneHandler::InitMessageIndicatorL()
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CIMCVAppStatusPaneHandler::InitMessageIndicatorL()
+ {
+ CAknNavigationDecorator* fade = CreateIMessageIndicatorL();
+ delete iDecoratedFadeText;
+ iDecoratedFadeText = fade;
+ }
+
+// ---------------------------------------------------------
+// CIMCVAppStatusPaneHandler::DestroyMessageIndicator()
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CIMCVAppStatusPaneHandler::DestroyMessageIndicator()
+ {
+ delete iDecoratedFadeText;
+ iDecoratedFadeText = NULL;
+ }
+// ---------------------------------------------------------
+// CIMCVAppStatusPaneHandler::CreateIMessageIndicatorL()
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+CAknNavigationDecorator* CIMCVAppStatusPaneHandler::CreateIMessageIndicatorL()
+ {
+
+ CEikStatusPane* statusPane = CEikonEnv::Static()->AppUiFactory()->
+ StatusPane();
+
+ CIMCVNewMsgFadeControl* fadetext = CIMCVNewMsgFadeControl::NewLC(
+ statusPane->PaneRectL( TUid::Uid( EEikStatusPaneUidNavi ) ) );
+ fadetext->SetContainerWindowL( *iNaviPane );
+
+ CAknNavigationDecorator* decoratedFadetext =
+ CAknNavigationDecorator::NewL( iNaviPane, fadetext,
+ CAknNavigationDecorator::EHintText );
+
+ CleanupStack::Pop( fadetext );
+ CleanupStack::PushL( decoratedFadetext );
+ decoratedFadetext->SetContainerWindowL( *iNaviPane );
+ decoratedFadetext->SetControlContext( iNaviPane );
+ decoratedFadetext->MakeScrollButtonVisible( EFalse );
+
+ CleanupStack::Pop( decoratedFadetext );
+
+ return decoratedFadetext;
+ }
+
+// ---------------------------------------------------------
+// CIMCVAppStatusPaneHandler::ClearTitlePaneL()
+// (other items were commented in a header).
+// ---------------------------------------------------------
+//
+void CIMCVAppStatusPaneHandler::ClearTitlePaneL( )
+ {
+ iTitlePane->SetTextL( _L(" ") );
+ iTitlePane->SetSmallPicture( NULL, NULL, EFalse );
+ }
+
+// -----------------------------------------------------------------------------
+// CIMCVAppStatusPaneHandler::SetPreviousTitleL
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CIMCVAppStatusPaneHandler::SetPreviousTitleL()
+ {
+ IM_CV_LOGS(TXT("CIMCVAppStatusPaneHandler::SetPreviousTitleL() start" ));
+
+ HBufC* setTitle = NULL;
+ if (iLastTitle)
+ {
+ setTitle = iLastTitle->AllocLC();
+ }
+ else
+ {
+ setTitle = KNullDesC().AllocLC();
+ }
+ SetTitleL(*setTitle);
+ CleanupStack::PopAndDestroy();
+ IM_CV_LOGS(TXT("CIMCVAppStatusPaneHandler::SetPreviousTitleL() end" ));
+ }
+
+
+// -----------------------------------------------------------------------------
+// CIMCVAppStatusPaneHandler::SendBackGroundL
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CIMCVAppStatusPaneHandler::SendBackGroundL()
+ {
+ ClearTitlePaneL();
+ ClearNaviPaneL(ETrue);
+ }
+
+// -----------------------------------------------------------------------------
+// CIMCVAppStatusPaneHandler::BringToForegroundL
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CIMCVAppStatusPaneHandler::BringToForegroundL()
+ {
+ SetPreviousTitleL();
+ ShowTabL();
+ }
+
+// -----------------------------------------------------------------------------
+// CVIMPSTProcessArray::RefreshTabL()
+// -----------------------------------------------------------------------------
+//
+void CIMCVAppStatusPaneHandler::RefreshTabL(const TDesC& aUserId, const TDesC& aDisplayName)
+ {
+ IM_CV_LOGS(TXT("CIMCVAppStatusPaneHandler::RefreshTab() Start" ));
+ IM_CV_LOGS(TXT("CIMCVAppStatusPaneHandler::RefreshTab()aUserId: %S " ), &aUserId);
+ IM_CV_LOGS(TXT("CIMCVAppStatusPaneHandler::RefreshTab() aDisplayName : %S " ), &aDisplayName);
+ // find if itsthe active conversation, only then the
+ // the statuspane title and tab text should be updated.
+ CAknTabGroup* tabGroup = static_cast<CAknTabGroup*>(
+ iNewDecoratedTabGroup->DecoratedControl());
+ if (tabGroup)
+ {
+ TInt index = iEngineFactory.FindIndexL(aUserId);
+ IM_CV_LOGS(TXT("CIMCVAppStatusPaneHandler::RefreshTab() Get the index %d" ), index);
+ if(KErrNotFound != index)
+ {
+ const TDesC& activeContversationName = iEngineFactory.GetTargetIdL(index);
+ IM_CV_LOGS(TXT("CIMCVAppStatusPaneHandler::RefreshTab(): %S " ), &activeContversationName);
+
+ if(activeContversationName.Compare(aUserId) == 0 )
+ {
+ IM_CV_LOGS(TXT("CIMCVAppStatusPaneHandler::RefreshTab(): Inside if" ));
+ SetTitleL(aDisplayName);
+ }
+ // only the tab text needs to be updated.
+ tabGroup->ReplaceTabTextL( index, aDisplayName);
+ }
+ }
+ IM_CV_LOGS(TXT("CIMCVAppStatusPaneHandler::RefreshTab() End" ));
+ }
+//End of file