videofeeds/vcxnotifier/src/vcxnotifier.cpp
changeset 0 96612d01cf9f
--- /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 <coemain.h>
+
+#include "IptvDebug.h"
+
+#include <aknViewAppUi.h> 
+#include <AknWaitDialog.h>
+#include <StringLoader.h> 
+#include <apgwgnam.h>
+#include <aknnotewrappers.h> 
+#include <e32property.h>
+#include "CIptvResourceLoader.h"
+#include <vcxnotifier.rsg>
+#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<TVcxNotifierParams> 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