meetingrequest/mrgui/src/cesmrcontactmenuurlhandler.cpp
branchRCL_3
changeset 12 4ce476e64c59
parent 11 0396474f30f5
child 13 8592a65ad3fb
--- a/meetingrequest/mrgui/src/cesmrcontactmenuurlhandler.cpp	Mon Mar 15 12:39:10 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,475 +0,0 @@
-/*
-* Copyright (c) 2008-2009 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 of class CESMRContactMenuUrlHandler.
-*
-*/
-
-
-#include "cesmrcontactmenuurlhandler.h"
-#include "esmrhelper.h"
-#include "cesmriconfield.h"
-#include "nmrbitmapmanager.h"
-//<cmail>
-#include "cfsccontactactionmenu.h"
-#include "cfsccontactactionmenuitem.h"
-#include "mfsccontactaction.h"
-#include "mfsccontactactionmenumodel.h"
-#include "esmrcommands.h"
-#include <esmrgui.rsg>
-//</cmail>
-#include <eikmenup.h>
-#include <coemain.h>
-#include <gulicon.h>
-#include <AknsUtils.h>
-#include <favouritesdb.h>
-#include <apgtask.h>
-#include <apgcli.h>
-#include <AknQueryDialog.h>
-#include <aknnotewrappers.h>
-#include <featmgr.h>
-// for intranet application opening
-#include <AiwServiceHandler.h>
-#include <data_caging_path_literals.hrh>
-#include <publicruntimeids.hrh>
-
-
-// DEBUG
-#include "emailtrace.h"
-
-/// Unnamed namespace for local definitions
-namespace // codescanner::namespace
-    {
-// URL actionmenu uids
-const TUid KUidOpenInBrowser =
-    {
-    1
-    };
-
-const TUid KUidOpenInIntranet =
-    {
-    2
-    };
-
-const TUid KUidBookmark =
-    {
-    3 // codescanner::magicnumbers
-    };
-
-// Browser app uid
-const TUid KUidBrowser =
-    {
-    0x10008D39
-    };
-
-// Maximum length of Browser bookmark
-const TInt KMaxBookmarkNameLength = 50;
-// Browser protocol
-// 4 is number used for opening the browser
-_LIT( KBrowserProtocol, "4 " );
-
-}//namespace
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// CESMRContactMenuUrlHandler::CESMRContactMenuUrlHandler
-// ---------------------------------------------------------------------------
-//
-CESMRContactMenuUrlHandler::CESMRContactMenuUrlHandler( 
-        CFscContactActionMenu& aContactActionMenu ) :
-    iContactActionMenu( aContactActionMenu )
-    {
-    FUNC_LOG;
-    // Do nothing
-    }
-
-// ---------------------------------------------------------------------------
-// CESMRContactMenuUrlHandler::NewL
-// ---------------------------------------------------------------------------
-//
-CESMRContactMenuUrlHandler* CESMRContactMenuUrlHandler::NewL(
-        CFscContactActionMenu& aContactActionMenu )
-    {
-    FUNC_LOG;
-    CESMRContactMenuUrlHandler* self = 
-        new (ELeave) CESMRContactMenuUrlHandler( aContactActionMenu );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// CESMRContactMenuUrlHandler::~CESMRContactMenuUrlHandler( )
-// ---------------------------------------------------------------------------
-//
-CESMRContactMenuUrlHandler::~CESMRContactMenuUrlHandler( )
-    {
-    FUNC_LOG;
-    delete iUrl;
-    delete iServiceHandler;
-    iIconArray.ResetAndDestroy();
-    }
-
-// ---------------------------------------------------------------------------
-// CESMRContactMenuUrlHandler::Reset( )
-// ---------------------------------------------------------------------------
-//
-void CESMRContactMenuUrlHandler::Reset( )
-    {
-    FUNC_LOG;
-    delete iUrl;
-    iUrl = NULL;
-    }
-
-// ---------------------------------------------------------------------------
-// CESMRContactMenuUrlHandler::SetUrlL
-// ---------------------------------------------------------------------------
-//
-void CESMRContactMenuUrlHandler::SetUrlL( const TDesC& aUrl )
-    {
-    FUNC_LOG;
-    HBufC* temp = aUrl.AllocL();
-    delete iUrl;
-    iUrl = temp;
-    }
-
-// ---------------------------------------------------------------------------
-// CESMRContactMenuUrlHandler::CreateMenuItemL
-// ---------------------------------------------------------------------------
-//
-void CESMRContactMenuUrlHandler::CreateMenuItemL( 
-        TInt aResourceId, 
-        TUid aCommandUid )
-    {
-    FUNC_LOG;
-    CGulIcon* itemIcon = CreateIconL(aCommandUid);
-    //ownership transferred
-    CleanupStack::PushL( itemIcon );
-    iIconArray.AppendL( itemIcon );
-    CleanupStack::Pop( itemIcon );
-
-    HBufC* text = CCoeEnv::Static()->AllocReadResourceLC( aResourceId );
-    CFscContactActionMenuItem* newItem = 
-        iContactActionMenu.Model().NewMenuItemL( *text,
-                                                 itemIcon,
-                                                 1,
-                                                 EFalse,
-                                                 aCommandUid );
-
-    CleanupStack::PopAndDestroy( text );
-    CleanupStack::PushL( newItem );
-    iContactActionMenu.Model().AddItemL( newItem );
-    CleanupStack::Pop( newItem );
-    }
-
-// ---------------------------------------------------------------------------
-// CESMRContactMenuUrlHandler::CreateActionMenuIconL
-// ---------------------------------------------------------------------------
-//
-CGulIcon* CESMRContactMenuUrlHandler::CreateIconL(TUid aCommandUid)
-    {
-    FUNC_LOG;
-    // Define default icon object
-    CFbsBitmap* iconBitmap( NULL );
-    CFbsBitmap* iconMaskBitmap( NULL );
-    NMRBitmapManager::TMRBitmapId iconID( NMRBitmapManager::EMRBitmapNotSet );
-
-    //select correct icon for item
-    if( aCommandUid == KUidOpenInBrowser )
-        {
-        //<cmail> icon is not available in Cmail
-        iconID = NMRBitmapManager::EMRBitmapBrowser;
-        //</cmail>
-        }
-    else if( aCommandUid == KUidOpenInIntranet)
-        {
-        //<cmail> icon is not available in Cmail
-        iconID = NMRBitmapManager::EMRBitmapIntranet;
-        //</cmail>
-        }
-    else
-        {
-        //<cmail> icon is not available in Cmail
-        iconID = NMRBitmapManager::EMRBitmapBookmark;
-        //</cmail>
-        }
-
-    User::LeaveIfError( 
-            NMRBitmapManager::GetSkinBasedBitmap( 
-                    iconID, iconBitmap, iconMaskBitmap, KIconSize ) );
-    
-    CGulIcon* icon = CGulIcon::NewL(iconBitmap, iconMaskBitmap);
-    return icon;
-    }
-
-// ---------------------------------------------------------------------------
-// CESMRContactMenuUrlHandler::OptionsMenuAvailable( )
-// ---------------------------------------------------------------------------
-//
-TBool CESMRContactMenuUrlHandler::OptionsMenuAvailable( )
-    {
-    FUNC_LOG;
-    return iUrl != NULL;
-    }
-
-// ---------------------------------------------------------------------------
-// CESMRContactMenuUrlHandler::InitOptionsMenuL
-// ---------------------------------------------------------------------------
-//
-void CESMRContactMenuUrlHandler::InitOptionsMenuL( 
-        CEikMenuPane* aActionMenuPane )
-    {
-    FUNC_LOG;
-    CEikMenuPaneItem::SData data;
-    data.iFlags = 0;
-    data.iCascadeId = 0;
-
-    //action menu is dynamic so commands are assigned dynamically here
-    TInt command = EESMRCmdActionMenuFirst;
-
-    data.iCommandId = command;
-    command++;//dynamic command ids
-    CCoeEnv::Static()->ReadResourceL( 
-            data.iText, R_QTN_MEET_REQ_VIEWER_OPTIONS_OPEN_IN_WEB );
-    aActionMenuPane->AddMenuItemL( data );
-
-    if(IsServiceAvailableL(R_INTRANET_AIW_INTEREST) &&
-       FeatureManager::FeatureSupported( KFeatureIdFfIntranetBrowsing ) )
-        {
-        data.iCommandId = command;
-        command++;//dynamic command ids
-        CCoeEnv::Static()->ReadResourceL( 
-                data.iText, R_QTN_MEET_REQ_FSOPTIONS_OPEN_IN_INTRA );
-        aActionMenuPane->AddMenuItemL( data );
-        }
-
-    data.iCommandId = command;
-    CCoeEnv::Static()->ReadResourceL( 
-            data.iText, R_QTN_MEET_REQ_VIEWER_OPTIONS_BOOKMARK );
-    aActionMenuPane->AddMenuItemL( data );
-    }
-
-// ---------------------------------------------------------------------------
-// CESMRContactMenuUrlHandler::IsServiceAvailableL
-// ---------------------------------------------------------------------------
-//
-TBool CESMRContactMenuUrlHandler::IsServiceAvailableL(TInt aResourceId)
-    {
-    FUNC_LOG;
-    //read resource and check if that service is available
-    TResourceReader reader;
-    CCoeEnv::Static()->CreateResourceReaderLC( reader, aResourceId );
-    // Read first the count of the Criteria Items in resource.
-    // After this the reader is in correct position at the start
-    // of the first criteria.
-    const TInt count = reader.ReadInt16();
-    CAiwCriteriaItem* criteriaItem = CAiwCriteriaItem::NewLC();
-    criteriaItem->ReadFromResoureL( reader );
-    TInt serviceAvailable = ServiceHandlerL().NbrOfProviders(criteriaItem);
-    CleanupStack::PopAndDestroy( criteriaItem );
-    // destroy -> resource reader
-    CleanupStack::PopAndDestroy( ); // codescanner::cleanup  
-    return serviceAvailable;
-    }
-
-// ---------------------------------------------------------------------------
-// CESMRContactMenuUrlHandler::ExecuteOptionsMenuL
-// ---------------------------------------------------------------------------
-//
-void CESMRContactMenuUrlHandler::ExecuteOptionsMenuL( TInt aCommand )
-    {
-    FUNC_LOG;
-    TInt command = EESMRCmdActionMenuFirst;
-
-    if( (aCommand == KUidOpenInBrowser.iUid) || (aCommand == command) )
-        {
-        OpenUrlInBrowserL();
-        return;
-        }
-    command++;//next item in the dynamic list
-
-    if(IsServiceAvailableL(R_INTRANET_AIW_INTEREST) &&
-       FeatureManager::FeatureSupported( KFeatureIdFfIntranetBrowsing ) )
-        {
-        if( (aCommand == KUidOpenInIntranet.iUid) || (aCommand == command))
-            {
-            OpenUrlInIntranetL();
-            }
-        command++;//next item in the dynamic list
-        }
-
-    if( (aCommand == KUidBookmark.iUid) || (aCommand == command) )
-        {
-        BookmarkUrlL();
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CESMRContactMenuUrlHandler::ShowActionMenuL( )
-// ---------------------------------------------------------------------------
-//
-void CESMRContactMenuUrlHandler::ShowActionMenuL( )
-    {
-    FUNC_LOG;
-    //reset
-    iIconArray.ResetAndDestroy();
-    iContactActionMenu.Model().RemoveAll();
-
-    //fill list
-    CreateMenuItemL( R_QTN_MEET_REQ_VIEWER_OPTIONS_OPEN_IN_WEB, 
-                     KUidOpenInBrowser);
-
-    if(IsServiceAvailableL(R_INTRANET_AIW_INTEREST) &&
-       FeatureManager::FeatureSupported( KFeatureIdFfIntranetBrowsing ) )
-        {
-        CreateMenuItemL( R_QTN_MEET_REQ_FSOPTIONS_OPEN_IN_INTRA, 
-                         KUidOpenInIntranet);
-        }
-
-    CreateMenuItemL(R_QTN_MEET_REQ_VIEWER_OPTIONS_BOOKMARK, KUidBookmark);
-
-    //show list
-    if ( iContactActionMenu.ExecuteL() == EFscCustomItemSelected )
-        {
-        TUid uid = iContactActionMenu.FocusedItem().ImplementationUid();
-
-        //handle command
-        ExecuteOptionsMenuL(uid.iUid);
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CESMRContactMenuUrlHandler::OpenUrlInBrowserL( )
-// ---------------------------------------------------------------------------
-//
-void CESMRContactMenuUrlHandler::OpenUrlInBrowserL( )
-    {
-    FUNC_LOG;
-    HBufC* param = HBufC::NewLC( KFavouritesMaxUrl );
-    param->Des().Copy( KBrowserProtocol() );
-    param->Des().Append( *iUrl );
-    TApaTaskList taskList(
-            CEikonEnv::Static()->WsSession() ); // codescanner::eikonenvstatic
-    TApaTask task = taskList.FindApp( KUidBrowser );
-    if ( task.Exists() )
-        {
-        HBufC8* param8 = HBufC8::NewLC( param->Length() );
-        param8->Des().Append( *param );
-        task.SendMessage( TUid::Uid ( 0 ), *param8 ); // Uid is not used
-        CleanupStack::PopAndDestroy( param8 );
-        }
-    else
-        {
-        RApaLsSession appArcSession;
-        CleanupClosePushL( appArcSession );
-        // connect to AppArc server
-        User::LeaveIfError( appArcSession.Connect() ); 
-        TThreadId id;
-        User::LeaveIfError( appArcSession.StartDocument ( 
-                *param, KUidBrowser, id ) );
-        CleanupStack::PopAndDestroy( &appArcSession );
-        }
-    CleanupStack::PopAndDestroy( param );
-    }
-
-// ---------------------------------------------------------------------------
-// CESMRContactMenuUrlHandler::OpenUrlInIntranetL( )
-// ---------------------------------------------------------------------------
-//
-void CESMRContactMenuUrlHandler::OpenUrlInIntranetL( )
-    {
-    FUNC_LOG;
-    HBufC8* eightBitUrl = HBufC8::NewLC( iUrl->Length() );
-    eightBitUrl->Des().Copy( *iUrl );
-
-    TAiwGenericParam inParam(EGenericParamURL, TAiwVariant(*eightBitUrl));
-    CAiwGenericParamList& inParamList = ServiceHandlerL().InParamListL();
-    inParamList.AppendL( inParam );
-
-    ServiceHandlerL().ExecuteServiceCmdL( 
-                            KAiwCmdView, 
-                            inParamList, 
-                            ServiceHandlerL().OutParamListL() );
-    CleanupStack::PopAndDestroy( eightBitUrl );
-    }
-
-// ---------------------------------------------------------------------------
-// CESMRContactMenuUrlHandler::BookmarkUrlL( )
-// ---------------------------------------------------------------------------
-//
-void CESMRContactMenuUrlHandler::BookmarkUrlL( )
-    {
-    FUNC_LOG;
-    // Create an item
-    CFavouritesItem* item = CFavouritesItem::NewLC();
-    item->SetParentFolder( KFavouritesRootUid );
-    item->SetType( CFavouritesItem::EItem );
-
-    // Read default name from resources
-    HBufC* defaultName =CCoeEnv::Static()->AllocReadResourceLC ( 
-                                    R_QTN_CALENDAR_DEFAULT_BOOKMARK );
-
-    TBuf<KMaxBookmarkNameLength> retName;
-    retName.Copy( defaultName->Des() );
-
-    // Query bookmark name from user
-    CAknTextQueryDialog* dlg = CAknTextQueryDialog::NewL( retName );
-    dlg->SetMaxLength( KMaxBookmarkNameLength );
-    if ( !dlg->ExecuteLD( R_ADD_BOOKMARK_QUERY_DIALOG ) )
-        {
-        // User press cancel - do not add bookmark
-        CleanupStack::PopAndDestroy ( 2, item ); // item, defaultName
-        }
-    else
-        {
-        item->SetNameL( retName );
-        item->SetUrlL( *iUrl );
-
-        RFavouritesSession sess; // codescanner::resourcenotoncleanupstack
-        RFavouritesDb db; // codescanner::resourcenotoncleanupstack
-
-        User::LeaveIfError( sess.Connect() );
-        CleanupClosePushL<RFavouritesSession> ( sess );
-        User::LeaveIfError( db.Open( sess, KBrowserBookmarks ) );
-        CleanupClosePushL<RFavouritesDb> ( db );
-
-        // add item
-        db.Add( *item, ETrue );
-        // Close the database.
-        db.Close();
-
-        HBufC * msgBuffer = CCoeEnv::Static()->AllocReadResourceLC( 
-                                        R_QTN_CALENDAR_BOOKMARK_SAVED );
-        CAknConfirmationNote* note = new(ELeave)CAknConfirmationNote( ETrue );
-        note->ExecuteLD ( *msgBuffer );
-
-        // item, db, sess, defaultName, msgBuffer
-        CleanupStack::PopAndDestroy ( 5, item ); // codescanner::magicnumbers
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CESMRContactMenuUrlHandler::ServiceHandlerL
-// ---------------------------------------------------------------------------
-//
-CAiwServiceHandler& CESMRContactMenuUrlHandler::ServiceHandlerL()
-    {
-    FUNC_LOG;
-    if ( !iServiceHandler )
-        {
-        iServiceHandler = CAiwServiceHandler::NewL();
-        iServiceHandler->AttachL( R_INTRANET_AIW_INTEREST );
-        }
-    return *iServiceHandler;
-    }
-// End of file
-