videocollection/hgmyvideos/src/vcxhgmyvideosaiwmenuhandler.cpp
changeset 0 96612d01cf9f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videocollection/hgmyvideos/src/vcxhgmyvideosaiwmenuhandler.cpp	Mon Jan 18 20:21:12 2010 +0200
@@ -0,0 +1,257 @@
+/*
+* Copyright (c) 2009 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:  A class to manage AIW provided menu items*
+*/
+
+
+#include <AiwServiceHandler.h>
+#include <eikmenup.h>
+#include <mediarecognizer.h>
+#include <vcxhgmyvideos.rsg>
+
+#include "vcxhgmyvideosaiwmenuhandler.h"
+#include "vcxhgmyvideos.hrh"
+#include "IptvDebug.h"
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CHgMyVideosAiwMenuHandler::CHgMyVideosAiwMenuHandler()
+// ---------------------------------------------------------------------------
+//
+CHgMyVideosAiwMenuHandler::CHgMyVideosAiwMenuHandler()
+    {
+    IPTVLOGSTRING_LOW_LEVEL(
+            "CHgMyVideosAiwMenuHandler::CHgMyVideosAiwMenuHandler()");
+    }
+
+// ---------------------------------------------------------------------------
+// CHgMyVideosAiwMenuHandler::~CHgMyVideosAiwMenuHandler()
+// ---------------------------------------------------------------------------
+//
+CHgMyVideosAiwMenuHandler::~CHgMyVideosAiwMenuHandler()
+    {
+    IPTVLOGSTRING_LOW_LEVEL(
+            "CHgMyVideosAiwMenuHandler::~CHgMyVideosAiwMenuHandler()");
+
+    delete iMediaRecognizer;
+    delete iAiwServiceHandler;
+    delete iPath;
+    delete iMimeType;
+    }
+
+// ---------------------------------------------------------------------------
+// CHgMyVideosAiwMenuHandler::AttachMenuL()
+// ---------------------------------------------------------------------------
+//
+void CHgMyVideosAiwMenuHandler::AttachMenuL( TInt aMenuPaneId )
+    {
+    IPTVLOGSTRING2_LOW_LEVEL(
+            "CHgMyVideosAiwMenuHandler::AttachMenuL(%d)", aMenuPaneId );
+
+    if ( ! iAiwServiceHandler )
+        {
+        iAiwServiceHandler = CAiwServiceHandler::NewL();
+        }
+
+    iAiwServiceHandler->AttachMenuL(
+            aMenuPaneId, R_VCXHGMYVIDEOS_AIW_ASSIGN_INTEREST );
+    }
+
+// ---------------------------------------------------------------------------
+// CHgMyVideosAiwMenuHandler::DetachMenu()
+// ---------------------------------------------------------------------------
+//
+void CHgMyVideosAiwMenuHandler::DetachMenu( TInt aMenuPaneId )
+    {
+    IPTVLOGSTRING2_LOW_LEVEL(
+            "CHgMyVideosAiwMenuHandler::DetachMenu(%d)", aMenuPaneId );
+
+    iAiwServiceHandler->DetachMenu(
+            aMenuPaneId, R_VCXHGMYVIDEOS_AIW_ASSIGN_INTEREST );
+    }
+
+// ---------------------------------------------------------------------------
+// CHgMyVideosAiwMenuHandler::TryHandleSubmenuL()
+// ---------------------------------------------------------------------------
+//
+TBool CHgMyVideosAiwMenuHandler::TryHandleSubmenuL( CEikMenuPane* aMenuPane )
+    {
+    IPTVLOGSTRING_LOW_LEVEL("CHgMyVideosAiwMenuHandler::HandleSubmenuL()");
+    return iAiwServiceHandler->HandleSubmenuL( *aMenuPane );
+    }
+
+// ---------------------------------------------------------------------------
+// CHgMyVideosAiwMenuHandler::InitializeMenuPaneL()
+// ---------------------------------------------------------------------------
+//
+void CHgMyVideosAiwMenuHandler::InitializeMenuPaneL(
+        TInt aResourceId,
+        CEikMenuPane* aMenuPane,
+        const TDesC& aPath,
+        const TDesC& aMimeType )
+    {
+    IPTVLOGSTRING_LOW_LEVEL("CHgMyVideosAiwMenuHandler::InitializeMenuPaneL()");
+
+    // Let provider add its menu items to the view menu.
+    // If placeholder has been deleted, no AIW option is displayed.
+    // Note! Filehandles are not used, only file paths.
+    CAiwGenericParamList& paramList = iAiwServiceHandler->InParamListL();
+
+    FillAiwParamsL( paramList, aPath, aMimeType );
+
+    iAiwServiceHandler->InitializeMenuPaneL(
+            *aMenuPane,
+            aResourceId,
+            EVcxHgMyVideosCmdAiwBase,
+            paramList );
+    }
+
+// ---------------------------------------------------------------------------
+// CHgMyVideosAiwMenuHandler::IsAiwCommand()
+// ---------------------------------------------------------------------------
+//
+TBool CHgMyVideosAiwMenuHandler::IsAiwCommand( TInt aCommand )
+    {
+    TBool res = EFalse;
+
+    if ( iAiwServiceHandler )
+        {
+        res = iAiwServiceHandler->ServiceCmdByMenuCmd( aCommand ) != KAiwCmdNone;
+        }
+
+    IPTVLOGSTRING2_LOW_LEVEL("CHgMyVideosAiwMenuHandler::IsAiwCommand(%d)", res);
+
+    return res;
+    }
+
+// ---------------------------------------------------------------------------
+// CHgMyVideosAiwMenuHandler::HandleAiwCommandL()
+// ---------------------------------------------------------------------------
+//
+void CHgMyVideosAiwMenuHandler::HandleAiwCommandL(
+        TInt aCommand,
+        const TDesC& aPath,
+        const TDesC& aMimeType )
+    {
+    IPTVLOGSTRING_LOW_LEVEL("CHgMyVideosAiwMenuHandler::HandleAiwCommandL()");
+
+    //
+    //  Save the command parameters so they can be used to cancel
+    //  menu if needed
+    //
+    iCommand = aCommand;
+
+    HBufC* newPath = aPath.AllocL();
+    if ( iPath )
+        {
+        delete iPath;
+        iPath = NULL;
+        }
+    iPath = newPath;
+
+    HBufC* newMimeType = aMimeType.AllocL();
+    if ( iMimeType )
+        {
+        delete iMimeType;
+        iMimeType = NULL;
+        }
+    iMimeType = newMimeType;
+
+    CAiwGenericParamList& paramList = iAiwServiceHandler->InParamListL();
+    FillAiwParamsL( paramList, aPath, aMimeType );
+
+    iMenuActive = ETrue;
+    // Call AIW service handler
+    iAiwServiceHandler->ExecuteMenuCmdL(
+            aCommand,
+            paramList,
+            iAiwServiceHandler->OutParamListL() );
+    iMenuActive = EFalse;
+    }
+
+// ---------------------------------------------------------------------------
+// CHgMyVideosAiwMenuHandler::IsMenuActive()
+// ---------------------------------------------------------------------------
+//
+TBool CHgMyVideosAiwMenuHandler::IsMenuActive()
+    {
+    return iMenuActive;
+    }
+
+// ---------------------------------------------------------------------------
+// CHgMyVideosAiwMenuHandler::FillAiwParamsL()
+// ---------------------------------------------------------------------------
+//
+void CHgMyVideosAiwMenuHandler::FillAiwParamsL(
+        CAiwGenericParamList& aAiwParamsList,
+        const TDesC& aPath,
+        const TDesC& aMimeType )
+    {
+    IPTVLOGSTRING_LOW_LEVEL("CHgMyVideosAiwMenuHandler::FillAiwParamsL()");
+
+    HBufC* path = aPath.AllocLC();
+    TAiwVariant varMime( aMimeType );
+    if ( ! aMimeType.Length() )
+        {
+        if ( ! iMediaRecognizer )
+            {
+            iMediaRecognizer = CMediaRecognizer::NewL();
+            }
+        varMime.Set( iMediaRecognizer->MimeTypeL( *path ) );
+        }
+
+    TAiwGenericParam paramMime( EGenericParamMIMEType, varMime );
+    aAiwParamsList.AppendL( paramMime );
+
+    TAiwVariant varFile( *path );
+    TAiwGenericParam paramFile( EGenericParamFile, varFile );
+    aAiwParamsList.AppendL( paramFile );
+
+    CleanupStack::PopAndDestroy( path );
+    }
+
+//------------------------------------------------------------------------------
+// CHgMyVideosAiwMenuHandler::CloseOpenAiwMenuL()
+//------------------------------------------------------------------------------
+//
+void CHgMyVideosAiwMenuHandler::CloseOpenAiwMenuL()
+    {
+    IPTVLOGSTRING_LOW_LEVEL("CHgMyVideosAiwMenuHandler::CloseOpenAiwMenuL()");
+
+    if ( iMenuActive )
+        {
+        CAiwGenericParamList& paramList = iAiwServiceHandler->InParamListL();
+
+        FillAiwParamsL( paramList, iPath->Des(), iMimeType->Des() );
+
+        //  Call AIW service handler to cancel the menu
+        iAiwServiceHandler->ExecuteMenuCmdL(
+                iCommand,
+                paramList,
+                iAiwServiceHandler->OutParamListL(),
+                KAiwOptCancel );
+
+        // Reset the member variables so command will not be reset
+        iMenuActive = EFalse;
+        iCommand    = 0;
+        delete iPath;
+        iPath = NULL;
+        delete iMimeType;
+        iMimeType = NULL;
+        }
+    }
+
+//  End of File