diff -r 8e5f6eea9c9f -r 5b3385a43d68 photosgallery/viewframework/commandhandlers/commoncommandhandlers/src/glxcommandhandleraiwassign.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/photosgallery/viewframework/commandhandlers/commoncommandhandlers/src/glxcommandhandleraiwassign.cpp Wed Sep 01 12:33:26 2010 +0100 @@ -0,0 +1,256 @@ +/* +* 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: AIW assign command handler +* +*/ + + + + +#include "glxcommandhandleraiwassign.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "glxaiwservicehandler.h" +#include +#include // for CGlxImageViewerManager + +const TInt KGlxAiwAssignCommandSpace = 0x00000100; + +// ----------------------------------------------------------------------------- +// NewL +// ----------------------------------------------------------------------------- +// +EXPORT_C CGlxCommandHandlerAiwAssign* CGlxCommandHandlerAiwAssign::NewL( + MGlxMediaListProvider* aMediaListProvider, TInt aMenuResource, + const TDesC& aFileName) + { + TRACER("CGlxCommandHandlerAiwAssign* CGlxCommandHandlerAiwAssign::NewL"); + CGlxCommandHandlerAiwAssign* self = + new (ELeave) CGlxCommandHandlerAiwAssign(aMediaListProvider, + aMenuResource); + CleanupStack::PushL(self); + self->ConstructL(aFileName); + CleanupStack::Pop(self); + return self; + } + +// ----------------------------------------------------------------------------- +// Constructor +// ----------------------------------------------------------------------------- +// +CGlxCommandHandlerAiwAssign::CGlxCommandHandlerAiwAssign( + MGlxMediaListProvider* aMediaListProvider, TInt aMenuResource) +: CGlxCommandHandlerAiwBase(aMediaListProvider, aMenuResource) + { + TRACER("CGlxCommandHandlerAiwAssign::CGlxCommandHandlerAiwAssign"); + } + +CGlxCommandHandlerAiwAssign::~CGlxCommandHandlerAiwAssign() + { + delete iFeatManager; + } + +void CGlxCommandHandlerAiwAssign::ConstructL(const TDesC& aFileName) + { + //Calling base class implementation + CGlxCommandHandlerAiwBase::ConstructL(aFileName); + + iFeatManager = CFeatureDiscovery::NewL(); + } + +// ----------------------------------------------------------------------------- +// CGlxCommandHandlerAiwAssign::DoGetRequiredAttributesL +// ----------------------------------------------------------------------------- +// +void CGlxCommandHandlerAiwAssign::DoGetRequiredAttributesL + (RArray& aAttributes, TBool aFilterUsingSelection) const + { + TRACER("void CGlxCommandHandlerAiwAssign::DoGetRequiredAttributesL"); + // Add MIME type and filename attributes + if (!aFilterUsingSelection || SelectionLength() <= MaxSelectedItems()) + { + aAttributes.AppendL(KMPXMediaGeneralMimeType); + aAttributes.AppendL(KMPXMediaGeneralUri); + aAttributes.AppendL(KMPXMediaGeneralCategory); + } + } + +// ----------------------------------------------------------------------------- +// CommandId +// ----------------------------------------------------------------------------- +// +TInt CGlxCommandHandlerAiwAssign::CommandId() const + { + TRACER("TInt CGlxCommandHandlerAiwAssign::CommandId() const"); + return EGlxCmdAiwAssign; + } + +// ----------------------------------------------------------------------------- +// AiwCommandId +// ----------------------------------------------------------------------------- +// +TInt CGlxCommandHandlerAiwAssign::AiwCommandId() const + { + TRACER("TInt CGlxCommandHandlerAiwAssign::AiwCommandId() const"); + return KAiwCmdAssign; + } + +// ----------------------------------------------------------------------------- +// AiwInterestResource +// ----------------------------------------------------------------------------- +// +TInt CGlxCommandHandlerAiwAssign::AiwInterestResource() const + { + int resource = R_GLX_AIW_ASSIGN_TO_CONTACT_INTEREST; + if(iFeatManager->IsFeatureSupportedL(KFeatureIdFfImageEditor) || iFeatManager->IsFeatureSupportedL(KFeatureIdFfVideoEditor)) + { + resource = R_GLX_AIW_ASSIGN_TO_CONTACT_INTEREST_MEDIAEDITOR; + } + + return resource; + } + +// ----------------------------------------------------------------------------- +// AppendAiwParameterL +// ----------------------------------------------------------------------------- +// +TBool CGlxCommandHandlerAiwAssign::AppendAiwParameterL(const TGlxMedia& aItem, + CGlxAiwServiceHandler& aAiwServiceHandler) + { + return AppendDefaultAiwParameterL( aItem, + aAiwServiceHandler, + ETrue, // Add the Uri + ETrue); // Add the Mime Type + } + +// ----------------------------------------------------------------------------- +// AiwDoDynInitMenuPaneL +// ----------------------------------------------------------------------------- +// +void CGlxCommandHandlerAiwAssign::AiwDoDynInitMenuPaneL(TInt /*aResourceId*/, + CEikMenuPane* aMenuPane) + { + TRACER("void CGlxCommandHandlerAiwAssign::AiwDoDynInitMenuPaneL"); + TBool fullscreenViewingMode = EFalse; + TBool privateFile = EFalse; + CGlxNavigationalState* aNavigationalState = CGlxNavigationalState::InstanceL(); + CMPXCollectionPath* naviState = aNavigationalState->StateLC(); + + if ( naviState->Levels() >= 1) + { + if (aNavigationalState->ViewingMode() == NGlxNavigationalState::EBrowse) + { + // For image viewer collection, goto view mode + if (naviState->Id() == TMPXItemId(KGlxCollectionPluginImageViewerImplementationUid)) + { + //it means we are in img viewer. + fullscreenViewingMode = ETrue; + } + else + { + //it means we are in grid view. + fullscreenViewingMode = EFalse; + } + } + else + { + //it means we are in Fullscreen. + fullscreenViewingMode = ETrue; + } + } + CleanupStack::PopAndDestroy( naviState ); + aNavigationalState->Close(); + + if (fullscreenViewingMode) + { + CGlxImageViewerManager* viewerInst = + CGlxImageViewerManager::InstanceL(); + if (viewerInst && viewerInst->IsPrivate()) + { + privateFile = ETrue; + } + viewerInst->DeleteInstance(); + } + + HBufC* currentTitle = StringLoader::LoadLC( R_QTN_LGAL_OPTIONS_USE_ITEMS ); + // get commandId for the current menupane item title + TInt cmdId = AiwMenuCmdIdL( *currentTitle,aMenuPane ) ; + + CleanupStack::PopAndDestroy(currentTitle); + + if( KErrNotFound != cmdId ) + { + MGlxMediaList& mediaList = MediaList(); + + if (mediaList.SelectionCount() == 1 || (fullscreenViewingMode + && !privateFile)) + { + TGlxSelectionIterator iterator; + + iterator.SetToFirst(&mediaList); + + TInt index = iterator++; + if ( index != KErrNotFound ) + { + TMPXGeneralCategory cat = mediaList.Item(index).Category(); + TInt resId(0); + + if ( cat == EMPXImage ) + { + resId = R_QTN_LGAL_OPTIONS_USE_IMAGE_AS; + } + else if ( cat == EMPXVideo ) + { + resId = R_QTN_LGAL_OPTIONS_USE_VIDEO_AS; + } + + if ( resId ) + { + HBufC* menuTitle = StringLoader::LoadLC( resId ); + if ( menuTitle ) + { + aMenuPane->SetItemTextL(cmdId, + *menuTitle); + } + CleanupStack::PopAndDestroy(menuTitle); + } + } + } + // In case there are Multiple Media Items Marked + else + { + // Setting the " Use Items " Main Menu Option to Invisible + aMenuPane->SetItemDimmed(cmdId,ETrue); + } + } + } + +// ----------------------------------------------------------------------------- +// CommandSpace +// ----------------------------------------------------------------------------- +// +TInt CGlxCommandHandlerAiwAssign::CommandSpace() const + { + return KGlxAiwAssignCommandSpace; + }