diff -r 000000000000 -r 96612d01cf9f videofeeds/vcxnotifier/src/vcxnotifier.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videofeeds/vcxnotifier/src/vcxnotifier.cpp Mon Jan 18 20:21:12 2010 +0200 @@ -0,0 +1,308 @@ +/* +* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "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: +* +*/ + + + + +#include + +#include "IptvDebug.h" + +#include +#include +#include +#include +#include +#include +#include "CIptvResourceLoader.h" +#include +#include "vcxnotifier.h" + +// CONSTANTS +_LIT( KvcNotifierResFile, "\\Resource\\Plugins\\vcxnotifier."); + +// +// ---------------------------------------------------------- +// CVcXNotifier::NewL() +// ---------------------------------------------------------- +// +MEikSrvNotifierBase2* CVcXNotifier::NewL() + { + IPTVLOGSTRING_LOW_LEVEL("CIptvVodNotifier::NewL"); + + CVcXNotifier* self = new(ELeave) CVcXNotifier(); + return self; + } + + + +// +// ---------------------------------------------------------- +// CVcXNotifier::CVcXNotifier() +// ---------------------------------------------------------- +// +CVcXNotifier::CVcXNotifier() + { + IPTVLOGSTRING_LOW_LEVEL("CVcXNotifier::CVcXNotifier"); + } + +// +// ---------------------------------------------------------- +// CVcXNotifier::~CVcXNotifier() +// ---------------------------------------------------------- +// +CVcXNotifier::~CVcXNotifier() + { + IPTVLOGSTRING_LOW_LEVEL("CVcXNotifier::~CVcXNotifier"); + + if ( iWaitDialog ) + { + iWaitDialog->SetCallback( NULL ); + TRAPD( err, iWaitDialog->ProcessFinishedL() ); + if( err != KErrNone ) + { + delete iWaitDialog; + } + iWaitDialog = NULL; + } + + delete iResourceLoader; + + } + +// +// ---------------------------------------------------------- +// CVcXNotifier::Release() +// ---------------------------------------------------------- +// +void CVcXNotifier::Release() + { + IPTVLOGSTRING_LOW_LEVEL("CVcXNotifier::Release"); + delete this; + } + +// +// ---------------------------------------------------------- +// CVcXNotifier::RegisterL() +// ---------------------------------------------------------- +// +MEikSrvNotifierBase2::TNotifierInfo CVcXNotifier::RegisterL() + { + IPTVLOGSTRING_LOW_LEVEL("CIptvVodNotifier::RegisterL"); + + iInfo.iUid = KVcxNotifierImplUid; + iInfo.iChannel = KVcxNotifierImplUid; + iInfo.iPriority = MEikSrvNotifierBase2::ENotifierPriorityHigh; + return iInfo; + } + +// +// ---------------------------------------------------------- +// CVcXNotifier::Info() +// ---------------------------------------------------------- +// +MEikSrvNotifierBase2::TNotifierInfo CVcXNotifier::Info() const + { + return iInfo; + } + +// +// ---------------------------------------------------------- +// CVcXNotifier::StartL() +// ---------------------------------------------------------- +// +TPtrC8 CVcXNotifier::StartL(const TDesC8& /*aBuffer*/ ) + { + IPTVLOGSTRING_LOW_LEVEL("CVcXNotifier::StartL"); + // Synch usage not allowde + TPtrC8 ret(KNullDesC8); + return (ret); + } + +// +// ---------------------------------------------------------- +// CVcXNotifier::StartL() +// ---------------------------------------------------------- +// +void CVcXNotifier::StartL(const TDesC8& aBuffer, + TInt /*aReturnVal*/, + const RMessagePtr2& aMessage ) + { + IPTVLOGSTRING_LOW_LEVEL("CVcXNotifier::StartL"); + TPckg params( iParams ); + params.Copy( aBuffer ); + if( !iAsyncResp.IsNull() ) + { + // "gracefully" close waiting active objects + iAsyncResp.Complete( KErrNone ); + } + + if( !iResourceLoader ) + { + LoadResourcesL(); + } + + switch (iParams.iEvent) + { + case TVcxNotifierParams::EConnecting: + // New completed download, get new counter value + iAsyncResp = aMessage; + DisplayWaitNoteL(); + // message will be completed after + // dialog have been dismissed or + // when close request is received from client + break; + + case TVcxNotifierParams::EConnected: + CloseWaitNote( ); + aMessage.Complete( KErrNone ); + break; + default: + break; + } + } + +// +// ---------------------------------------------------------- +// CVcXNotifier::Cancel() +// ---------------------------------------------------------- +// +void CVcXNotifier::Cancel() + { + if( !iAsyncResp.IsNull() ) + { + iAsyncResp.Complete( KErrCancel ); + } + CloseWaitNote(); + + delete iResourceLoader; + iResourceLoader = NULL; + } + +// +// ---------------------------------------------------------- +// CVcXNotifier::UpdateL() +// ---------------------------------------------------------- +// +TPtrC8 CVcXNotifier::UpdateL(const TDesC8& /*aBuffer*/) + { + IPTVLOGSTRING_LOW_LEVEL("CVcXNotifier::UpdateL"); + + return TPtrC8(); + } + +// +// ---------------------------------------------------------- +// CVcXNotifier::NotifierCapabilites() +// ---------------------------------------------------------- +// +TInt CVcXNotifier::NotifierCapabilites() + { + IPTVLOGSTRING_LOW_LEVEL("CVcXNotifier::NotifierCapabilites"); + + return EScreenDeviceChangeSupported; + } + +// +// ---------------------------------------------------------- +// CVcXNotifier::DialogDismissedL( +// ---------------------------------------------------------- +// +void CVcXNotifier::DialogDismissedL( TInt /* aButtonId */ ) + { + IPTVLOGSTRING_LOW_LEVEL("CVcXNotifier::DialogDismissedL"); + if( !iAsyncResp.IsNull() ) + { + iAsyncResp.Complete( KErrCancel ); + } + } + +// +// ---------------------------------------------------------- +// CVcXNotifier::DisplayWaitNoteL +// ---------------------------------------------------------- +// +void CVcXNotifier::DisplayWaitNoteL() + { + IPTVLOGSTRING_LOW_LEVEL("CVcXNotifier::DisplayWaitNoteL"); + + CloseWaitNote(); + + if( iResourceLoader ) + { + iWaitDialog = new (ELeave) CAknWaitDialog( + (REINTERPRET_CAST( CEikDialog**, &iWaitDialog )), + ETrue ); + HBufC* text(NULL); + if( iParams.iMsg.Length() ) + { + text = StringLoader::LoadLC( R_IPTV_CON_UTIL_CONNECTING_VIA_NOTE, iParams.iMsg ); + } + else + { + text = StringLoader::LoadLC( R_IPTV_CON_UTIL_CONNECTING_NOTE ); + } + iWaitDialog->SetCallback( this ); + iWaitDialog->SetTextL( *text ); + CleanupStack::PopAndDestroy( text ); + iWaitDialog->ExecuteLD( R_IPTV_CON_UTIL_COMMON_WAIT_NOTE ); + } + } + +// +// ---------------------------------------------------------- +// CVcXNotifier::CloseWaitNote +// ---------------------------------------------------------- +// +void CVcXNotifier::CloseWaitNote() + { + IPTVLOGSTRING_LOW_LEVEL("CVcXNotifier::CloseWaitNote"); + if ( iWaitDialog ) + { + TRAPD(error, iWaitDialog->ProcessFinishedL()); + if ( error != KErrNone ) + { + delete iWaitDialog; + } + iWaitDialog = NULL; + } + } + +// +// ---------------------------------------------------------- +// CVcXNotifier::LoadResourcesL +// ---------------------------------------------------------- +// +void CVcXNotifier::LoadResourcesL() + { + IPTVLOGSTRING_LOW_LEVEL("CVcXNotifier::LoadResourcesL"); + + CCoeEnv* env = CCoeEnv::Static(); + if( env ) + { + iResourceLoader = CIptvResourceLoader::NewL( *env ); + if (iResourceLoader) + { + iResourceLoader->AddResourceL( KvcNotifierResFile ); + } + else + { + User::Leave( KErrGeneral ); + } + } + } +// end of file