# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1268401364 -7200 # Node ID 71da52165949b904a8e9c3d018cd2e085b9f4a8e # Parent 6b87b143d312b730fe10e888d2d3dffa5d6232fa Revision: 201007 Kit: 201008 diff -r 6b87b143d312 -r 71da52165949 photos_plat/controllers_collection_api/tsrc/ui_metaDataDialog/group/ui_metaDataDialog_DoxyFile.txt --- a/photos_plat/controllers_collection_api/tsrc/ui_metaDataDialog/group/ui_metaDataDialog_DoxyFile.txt Fri Feb 19 22:51:01 2010 +0200 +++ b/photos_plat/controllers_collection_api/tsrc/ui_metaDataDialog/group/ui_metaDataDialog_DoxyFile.txt Fri Mar 12 15:42:44 2010 +0200 @@ -2,9 +2,9 @@ # 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 "Symbian Foundation License v1.0" +# under the terms of the License "Eclipse Public License v1.0" # which accompanies this distribution, and is available -# at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html". +# at the URL "http://www.eclipse.org/legal/epl-v10.html". # # Initial Contributors: # Nokia Corporation - initial contribution. diff -r 6b87b143d312 -r 71da52165949 photos_plat/controllers_collection_api/tsrc/ut_collectioninfo/group/ut_collectioninfo_DoxyFile.txt --- a/photos_plat/controllers_collection_api/tsrc/ut_collectioninfo/group/ut_collectioninfo_DoxyFile.txt Fri Feb 19 22:51:01 2010 +0200 +++ b/photos_plat/controllers_collection_api/tsrc/ut_collectioninfo/group/ut_collectioninfo_DoxyFile.txt Fri Mar 12 15:42:44 2010 +0200 @@ -2,9 +2,9 @@ # 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 "Symbian Foundation License v1.0" +# under the terms of the License "Eclipse Public License v1.0" # which accompanies this distribution, and is available -# at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html". +# at the URL "http://www.eclipse.org/legal/epl-v10.html". # # Initial Contributors: # Nokia Corporation - initial contribution. diff -r 6b87b143d312 -r 71da52165949 photos_plat/controllers_collection_api/tsrc/ut_collectionmanager/group/ut_collectionmanager_DoxyFile.txt --- a/photos_plat/controllers_collection_api/tsrc/ut_collectionmanager/group/ut_collectionmanager_DoxyFile.txt Fri Feb 19 22:51:01 2010 +0200 +++ b/photos_plat/controllers_collection_api/tsrc/ut_collectionmanager/group/ut_collectionmanager_DoxyFile.txt Fri Mar 12 15:42:44 2010 +0200 @@ -2,9 +2,9 @@ # 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 "Symbian Foundation License v1.0" +# under the terms of the License "Eclipse Public License v1.0" # which accompanies this distribution, and is available -# at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html". +# at the URL "http://www.eclipse.org/legal/epl-v10.html". # # Initial Contributors: # Nokia Corporation - initial contribution. diff -r 6b87b143d312 -r 71da52165949 photosgallery/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcemds.cpp --- a/photosgallery/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcemds.cpp Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcemds.cpp Fri Mar 12 15:42:44 2010 +0200 @@ -291,8 +291,7 @@ #ifdef USE_S60_TNM iTnEngine = CThumbnailManager::NewL( *this); - iTnEngine->SetDisplayModeL( EColor16MU ); - + iTnEngine->SetDisplayModeL( EColor16M ); iTnRequestInProgress = EFalse; #else iThumbnailCreator = CGlxtnThumbnailCreator::InstanceL(); diff -r 6b87b143d312 -r 71da52165949 photosgallery/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcetaskmdscommand.cpp --- a/photosgallery/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcetaskmdscommand.cpp Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcetaskmdscommand.cpp Fri Mar 12 15:42:44 2010 +0200 @@ -92,8 +92,8 @@ _LIT(KFileNameFormatString, "(%+02u)"); // Items to be deleted from File server at a time before calling scheduler wait -const TInt KDeletedItemCount = 50; -const TInt KDeleteOperationInterval = 200000; +const TInt KDeletedItemCount = 10; +const TInt KDeleteOperationInterval = 1000; // ---------------------------------------------------------------------------- // Destructor diff -r 6b87b143d312 -r 71da52165949 photosgallery/commonui/bwins/glxcommonuiu.def --- a/photosgallery/commonui/bwins/glxcommonuiu.def Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/commonui/bwins/glxcommonuiu.def Fri Mar 12 15:42:44 2010 +0200 @@ -2,34 +2,30 @@ ?PostError@CGlxErrorPoster@@QAEXH@Z @ 1 NONAME ; void CGlxErrorPoster::PostError(int) ?InstanceL@CGlxErrorPoster@@SAPAV1@XZ @ 2 NONAME ; class CGlxErrorPoster * CGlxErrorPoster::InstanceL(void) ?ActivatePreviousViewL@CGlxNavigationalState@@QAEXXZ @ 3 NONAME ; void CGlxNavigationalState::ActivatePreviousViewL(void) - ?PossToPixels@CGlxResolutionUtility@@QBEMABM@Z @ 4 NONAME ; float CGlxResolutionUtility::PossToPixels(float const &) const - ?Close@CGlxResolutionUtility@@QAEXXZ @ 5 NONAME ; void CGlxResolutionUtility::Close(void) - ?SetStartingLevel@CGlxNavigationalState@@QAEXH@Z @ 6 NONAME ; void CGlxNavigationalState::SetStartingLevel(int) - ??1CGlxResolutionManager@@UAE@XZ @ 7 NONAME ; CGlxResolutionManager::~CGlxResolutionManager(void) - ?RemoveObserver@CGlxResolutionUtility@@QAEXAAVMGlxResolutionChangeObserver@@@Z @ 8 NONAME ; void CGlxResolutionUtility::RemoveObserver(class MGlxResolutionChangeObserver &) - ?PixelsToPoss@CGlxResolutionUtility@@QBEMABM@Z @ 9 NONAME ; float CGlxResolutionUtility::PixelsToPoss(float const &) const - ?PublishStateL@NGlxZoomStatePublisher@@YAXH@Z @ 10 NONAME ; void NGlxZoomStatePublisher::PublishStateL(int) - ?BackExitStatus@CGlxNavigationalState@@QAEHXZ @ 11 NONAME ; int CGlxNavigationalState::BackExitStatus(void) - ?SetToViewMode@CGlxNavigationalState@@QAEXXZ @ 12 NONAME ; void CGlxNavigationalState::SetToViewMode(void) - ?ForwardActivationEventL@CGlxBackServiceWrapper@@QAEHABVTDesC8@@H@Z @ 13 NONAME ; int CGlxBackServiceWrapper::ForwardActivationEventL(class TDesC8 const &, int) - ?SetScreenSizeL@CGlxResolutionManager@@QAEXVTSize@@@Z @ 14 NONAME ; void CGlxResolutionManager::SetScreenSizeL(class TSize) - ?RemoveObserver@CGlxNavigationalState@@QAEXAAVMGlxNavigationalStateObserver@@@Z @ 15 NONAME ; void CGlxNavigationalState::RemoveObserver(class MGlxNavigationalStateObserver &) - ?Close@CGlxNavigationalState@@QAEXXZ @ 16 NONAME ; void CGlxNavigationalState::Close(void) - ?AddObserverL@CGlxNavigationalState@@QAEXAAVMGlxNavigationalStateObserver@@@Z @ 17 NONAME ; void CGlxNavigationalState::AddObserverL(class MGlxNavigationalStateObserver &) - ?StartingLevel@CGlxNavigationalState@@QAEHXZ @ 18 NONAME ; int CGlxNavigationalState::StartingLevel(void) - ?NavigateToL@CGlxNavigationalState@@QAEXABVCMPXCollectionPath@@@Z @ 19 NONAME ; void CGlxNavigationalState::NavigateToL(class CMPXCollectionPath const &) - ?NavigateToParentL@CGlxNavigationalState@@QAEXXZ @ 20 NONAME ; void CGlxNavigationalState::NavigateToParentL(void) - ?NavigateToChildL@CGlxNavigationalState@@QAEXABVTGlxMediaId@@@Z @ 21 NONAME ; void CGlxNavigationalState::NavigateToChildL(class TGlxMediaId const &) - ?NewL@CGlxResolutionManager@@SAPAV1@XZ @ 22 NONAME ; class CGlxResolutionManager * CGlxResolutionManager::NewL(void) - ?NewLC@CGlxBackServiceWrapper@@SAPAV1@VTUid@@@Z @ 23 NONAME ; class CGlxBackServiceWrapper * CGlxBackServiceWrapper::NewLC(class TUid) - ?ViewingMode@CGlxNavigationalState@@QAE?AW4TViewingMode@NGlxNavigationalState@@XZ @ 24 NONAME ; enum NGlxNavigationalState::TViewingMode CGlxNavigationalState::ViewingMode(void) - ?Close@CGlxErrorPoster@@QAEXXZ @ 25 NONAME ; void CGlxErrorPoster::Close(void) - ?AddObserverL@CGlxResolutionUtility@@QAEXAAVMGlxResolutionChangeObserver@@@Z @ 26 NONAME ; void CGlxResolutionUtility::AddObserverL(class MGlxResolutionChangeObserver &) - ?SetBackExitStatus@CGlxNavigationalState@@QAEXH@Z @ 27 NONAME ; void CGlxNavigationalState::SetBackExitStatus(int) - ?HandleBackCommandL@CGlxBackServiceWrapper@@QAEHABVTDesC8@@H@Z @ 28 NONAME ; int CGlxBackServiceWrapper::HandleBackCommandL(class TDesC8 const &, int) - ?StateLC@CGlxNavigationalState@@QBEPAVCMPXCollectionPath@@XZ @ 29 NONAME ; class CMPXCollectionPath * CGlxNavigationalState::StateLC(void) const - ?InstanceL@CGlxNavigationalState@@SAPAV1@XZ @ 30 NONAME ; class CGlxNavigationalState * CGlxNavigationalState::InstanceL(void) - ?NewL@CGlxBackServiceWrapper@@SAPAV1@VTUid@@@Z @ 31 NONAME ; class CGlxBackServiceWrapper * CGlxBackServiceWrapper::NewL(class TUid) - ?InstanceL@CGlxResolutionUtility@@SAPAV1@XZ @ 32 NONAME ; class CGlxResolutionUtility * CGlxResolutionUtility::InstanceL(void) - ?ScreenSize@CGlxResolutionUtility@@QBE?AVTSize@@XZ @ 33 NONAME ; class TSize CGlxResolutionUtility::ScreenSize(void) const + ?RemoveObserver@CGlxNavigationalState@@QAEXAAVMGlxNavigationalStateObserver@@@Z @ 4 NONAME ; void CGlxNavigationalState::RemoveObserver(class MGlxNavigationalStateObserver &) + ?PossToPixels@CGlxResolutionUtility@@QBEMABM@Z @ 5 NONAME ; float CGlxResolutionUtility::PossToPixels(float const &) const + ?Close@CGlxNavigationalState@@QAEXXZ @ 6 NONAME ; void CGlxNavigationalState::Close(void) + ?AddObserverL@CGlxNavigationalState@@QAEXAAVMGlxNavigationalStateObserver@@@Z @ 7 NONAME ; void CGlxNavigationalState::AddObserverL(class MGlxNavigationalStateObserver &) + ?Close@CGlxResolutionUtility@@QAEXXZ @ 8 NONAME ; void CGlxResolutionUtility::Close(void) + ?StartingLevel@CGlxNavigationalState@@QAEHXZ @ 9 NONAME ; int CGlxNavigationalState::StartingLevel(void) + ?NavigateToL@CGlxNavigationalState@@QAEXABVCMPXCollectionPath@@@Z @ 10 NONAME ; void CGlxNavigationalState::NavigateToL(class CMPXCollectionPath const &) + ?NavigateToParentL@CGlxNavigationalState@@QAEXXZ @ 11 NONAME ; void CGlxNavigationalState::NavigateToParentL(void) + ?NavigateToChildL@CGlxNavigationalState@@QAEXABVTGlxMediaId@@@Z @ 12 NONAME ; void CGlxNavigationalState::NavigateToChildL(class TGlxMediaId const &) + ?NewL@CGlxResolutionManager@@SAPAV1@XZ @ 13 NONAME ; class CGlxResolutionManager * CGlxResolutionManager::NewL(void) + ?SetStartingLevel@CGlxNavigationalState@@QAEXH@Z @ 14 NONAME ; void CGlxNavigationalState::SetStartingLevel(int) + ??1CGlxResolutionManager@@UAE@XZ @ 15 NONAME ; CGlxResolutionManager::~CGlxResolutionManager(void) + ?ViewingMode@CGlxNavigationalState@@QAE?AW4TViewingMode@NGlxNavigationalState@@XZ @ 16 NONAME ; enum NGlxNavigationalState::TViewingMode CGlxNavigationalState::ViewingMode(void) + ?SetBackExitStatus@CGlxNavigationalState@@QAEXH@Z @ 17 NONAME ; void CGlxNavigationalState::SetBackExitStatus(int) + ?AddObserverL@CGlxResolutionUtility@@QAEXAAVMGlxResolutionChangeObserver@@@Z @ 18 NONAME ; void CGlxResolutionUtility::AddObserverL(class MGlxResolutionChangeObserver &) + ?Close@CGlxErrorPoster@@QAEXXZ @ 19 NONAME ; void CGlxErrorPoster::Close(void) + ?RemoveObserver@CGlxResolutionUtility@@QAEXAAVMGlxResolutionChangeObserver@@@Z @ 20 NONAME ; void CGlxResolutionUtility::RemoveObserver(class MGlxResolutionChangeObserver &) + ?PixelsToPoss@CGlxResolutionUtility@@QBEMABM@Z @ 21 NONAME ; float CGlxResolutionUtility::PixelsToPoss(float const &) const + ?BackExitStatus@CGlxNavigationalState@@QAEHXZ @ 22 NONAME ; int CGlxNavigationalState::BackExitStatus(void) + ?PublishStateL@NGlxZoomStatePublisher@@YAXH@Z @ 23 NONAME ; void NGlxZoomStatePublisher::PublishStateL(int) + ?StateLC@CGlxNavigationalState@@QBEPAVCMPXCollectionPath@@XZ @ 24 NONAME ; class CMPXCollectionPath * CGlxNavigationalState::StateLC(void) const + ?SetToViewMode@CGlxNavigationalState@@QAEXXZ @ 25 NONAME ; void CGlxNavigationalState::SetToViewMode(void) + ?InstanceL@CGlxNavigationalState@@SAPAV1@XZ @ 26 NONAME ; class CGlxNavigationalState * CGlxNavigationalState::InstanceL(void) + ?ScreenSize@CGlxResolutionUtility@@QBE?AVTSize@@XZ @ 27 NONAME ; class TSize CGlxResolutionUtility::ScreenSize(void) const + ?InstanceL@CGlxResolutionUtility@@SAPAV1@XZ @ 28 NONAME ; class CGlxResolutionUtility * CGlxResolutionUtility::InstanceL(void) + ?SetScreenSizeL@CGlxResolutionManager@@QAEXVTSize@@@Z @ 29 NONAME ; void CGlxResolutionManager::SetScreenSizeL(class TSize) diff -r 6b87b143d312 -r 71da52165949 photosgallery/commonui/eabi/glxcommonuiu.def --- a/photosgallery/commonui/eabi/glxcommonuiu.def Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/commonui/eabi/glxcommonuiu.def Fri Mar 12 15:42:44 2010 +0200 @@ -25,17 +25,11 @@ _ZN21CGlxResolutionUtility14RemoveObserverER28MGlxResolutionChangeObserver @ 24 NONAME _ZN21CGlxResolutionUtility5CloseEv @ 25 NONAME _ZN21CGlxResolutionUtility9InstanceLEv @ 26 NONAME - _ZN22CGlxBackServiceWrapper18HandleBackCommandLERK6TDesC8i @ 27 NONAME - _ZN22CGlxBackServiceWrapper23ForwardActivationEventLERK6TDesC8i @ 28 NONAME - _ZN22CGlxBackServiceWrapper4NewLE4TUid @ 29 NONAME - _ZN22CGlxBackServiceWrapper5NewLCE4TUid @ 30 NONAME - _ZN22NGlxZoomStatePublisher13PublishStateLEi @ 31 NONAME - _ZNK21CGlxNavigationalState7StateLCEv @ 32 NONAME - _ZNK21CGlxResolutionUtility10ScreenSizeEv @ 33 NONAME - _ZNK21CGlxResolutionUtility12PixelsToPossERKf @ 34 NONAME - _ZNK21CGlxResolutionUtility12PossToPixelsERKf @ 35 NONAME - _ZTI21CGlxNavigationalState @ 36 NONAME - _ZTI22CGlxBackServiceWrapper @ 37 NONAME - _ZTV21CGlxNavigationalState @ 38 NONAME - _ZTV22CGlxBackServiceWrapper @ 39 NONAME + _ZN22NGlxZoomStatePublisher13PublishStateLEi @ 27 NONAME + _ZNK21CGlxNavigationalState7StateLCEv @ 28 NONAME + _ZNK21CGlxResolutionUtility10ScreenSizeEv @ 29 NONAME + _ZNK21CGlxResolutionUtility12PixelsToPossERKf @ 30 NONAME + _ZNK21CGlxResolutionUtility12PossToPixelsERKf @ 31 NONAME + _ZTI21CGlxNavigationalState @ 32 NONAME + _ZTV21CGlxNavigationalState @ 33 NONAME diff -r 6b87b143d312 -r 71da52165949 photosgallery/commonui/group/glxcommonui.mmp --- a/photosgallery/commonui/group/glxcommonui.mmp Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/commonui/group/glxcommonui.mmp Fri Mar 12 15:42:44 2010 +0200 @@ -49,8 +49,6 @@ SOURCE glxzoomstatepublisher.cpp SOURCE glxnavigationalstate.cpp -SOURCE glxbackservicewrapper.cpp - LIBRARY bafl.lib LIBRARY efsrv.lib @@ -63,9 +61,6 @@ LIBRARY mpxcollectionutility.lib //for MMPXCollectionUtility LIBRARY mpxcommon.lib // CMPXCollectionPath LIBRARY mpxviewutility.lib //for MMPXViewUtility - -LIBRARY liwservicehandler.lib //CLiwVariant - LIBRARY flogger.lib // if photos need to publish zooming state, include the context framework #ifdef GLX_PUBLISH_ZOOMING_STATE @@ -73,6 +68,4 @@ LIBRARY cfservices.lib // for CCFContextObject #endif -//EXPORTUNFROZEN - // End of file diff -r 6b87b143d312 -r 71da52165949 photosgallery/controllers/fetcher/data/glxfetcherdialog.rss --- a/photosgallery/controllers/fetcher/data/glxfetcherdialog.rss Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/controllers/fetcher/data/glxfetcherdialog.rss Fri Mar 12 15:42:44 2010 +0200 @@ -199,8 +199,7 @@ flags=EEikDialogFlagNoDrag | EEikDialogFlagFillAppClientRect | EEikDialogFlagCbaButtons | EEikDialogFlagWait | EEikDialogFlagNoBackgroundFade |EEikDialogFlagNoBorder; - // softkeys: left select, middle select, right cancel - buttons = R_AVKON_SOFTKEYS_SELECT_CANCEL__SELECT; + buttons = R_AVKON_SOFTKEYS_CANCEL; // Do not add any items } @@ -210,8 +209,7 @@ flags=EEikDialogFlagNoDrag | EEikDialogFlagFillAppClientRect | EEikDialogFlagCbaButtons | EEikDialogFlagWait | EEikDialogFlagNoBackgroundFade |EEikDialogFlagNoBorder; - // softkeys: left options, middle select, right cancel - buttons = R_AVKON_SOFTKEYS_OK_CANCEL__MARK; + buttons = R_AVKON_SOFTKEYS_CANCEL; // Do not add any items } diff -r 6b87b143d312 -r 71da52165949 photosgallery/controllers/fetcher/inc/glxfetcherdialog.h --- a/photosgallery/controllers/fetcher/inc/glxfetcherdialog.h Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/controllers/fetcher/inc/glxfetcherdialog.h Fri Mar 12 15:42:44 2010 +0200 @@ -130,6 +130,7 @@ private:// From MGlxEventObserver virtual void HandleDoubleTapEventL(TInt aCommandId); + virtual void HandleMarkEventL(); public:// to exit the fetcher dialog void CallCancelFetcherL(TInt aCommandId); diff -r 6b87b143d312 -r 71da52165949 photosgallery/controllers/fetcher/inc/mglxeventobserver.h --- a/photosgallery/controllers/fetcher/inc/mglxeventobserver.h Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/controllers/fetcher/inc/mglxeventobserver.h Fri Mar 12 15:42:44 2010 +0200 @@ -34,6 +34,11 @@ virtual void HandleDoubleTapEventL(TInt aCommandId) = 0; /** + * Called from container to pass Mark/Unmark events to Dialog. + */ + virtual void HandleMarkEventL() = 0; + + /** * Destructor. Dont allow deleting objects through this interface. */ virtual ~MGlxEventObserver() {}; diff -r 6b87b143d312 -r 71da52165949 photosgallery/controllers/fetcher/src/glxfetchercontainer.cpp --- a/photosgallery/controllers/fetcher/src/glxfetchercontainer.cpp Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/controllers/fetcher/src/glxfetchercontainer.cpp Fri Mar 12 15:42:44 2010 +0200 @@ -298,7 +298,7 @@ THgScrollDirection /*aDirection*/) { TRACER("CGlxFetcherContainer::Request()"); - RequestL(aRequestStart, aRequestEnd); + TRAP_IGNORE(RequestL( aRequestStart, aRequestEnd )); } // --------------------------------------------------------------------------- // RequestL @@ -477,6 +477,7 @@ { TRACER("CGlxGridViewImp::HandleMarkingL()"); HandleMultipleMarkingL(aIndex); + iEventObserver.HandleMarkEventL(); } // --------------------------------------------------------------------------- diff -r 6b87b143d312 -r 71da52165949 photosgallery/controllers/fetcher/src/glxfetcherdialog.cpp --- a/photosgallery/controllers/fetcher/src/glxfetcherdialog.cpp Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/controllers/fetcher/src/glxfetcherdialog.cpp Fri Mar 12 15:42:44 2010 +0200 @@ -342,6 +342,21 @@ { TRACER("CGlxFetcherDialog::PostLayoutDynInitL"); + if (!iUiUtility->IsPenSupported()) + { + CEikButtonGroupContainer& cbaContainer = ButtonGroupContainer(); + if (iMultiSelectionEnabled) + { + cbaContainer.SetCommandSetL(R_AVKON_SOFTKEYS_OK_CANCEL__MARK); + } + else + { + cbaContainer.SetCommandSetL( + R_AVKON_SOFTKEYS_SELECT_CANCEL__SELECT); + } + cbaContainer.DrawNow(); + } + // Create and Display Grid widget iFetcherContainer->CreateAndDisplayGridL(); } @@ -401,6 +416,29 @@ } //----------------------------------------------------------------------------- +// CGlxFetcherDialog::HandleMarkEventL +// Callback from the container to process the mark/unmark events. +//----------------------------------------------------------------------------- +void CGlxFetcherDialog::HandleMarkEventL() + { + TRACER("CGlxFetcherDialog::HandleMarkEventL"); + if ( iUiUtility->IsPenSupported() ) + { + MGlxMediaList& mediaList = iFetcherContainer->MediaList(); + CEikButtonGroupContainer& cbaContainer = ButtonGroupContainer(); + if (mediaList.SelectionCount()) + { + cbaContainer.SetCommandSetL(R_AVKON_SOFTKEYS_OK_CANCEL__MARK); + } + else + { + cbaContainer.SetCommandSetL(R_AVKON_SOFTKEYS_CANCEL); + } + cbaContainer.DrawNow(); + } + } + +//----------------------------------------------------------------------------- // CGlxFetcherDialog::CallCancelFetcherL // This function will be called from CGlxFetcher::CancelFetcherL // This will ensure exit of fetcher dialog & fetcher app diff -r 6b87b143d312 -r 71da52165949 photosgallery/gallery/group/glx.mmp --- a/photosgallery/gallery/group/glx.mmp Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/gallery/group/glx.mmp Fri Mar 12 15:42:44 2010 +0200 @@ -86,9 +86,6 @@ LIBRARY glxmedialists.lib // to get the cache manager handle LIBRARY apgrfx.lib LIBRARY glximageviewermanager.lib - - -LIBRARY liwservicehandler.lib //CLiwVariant LIBRARY glxcommon.lib LIBRARY efsrv.lib // for RFile @@ -99,7 +96,6 @@ START MARM END -// DEFFILE ?filename START RESOURCE glx_loc.rss HEADER @@ -119,4 +115,3 @@ LIBRARY aknnotify.lib LIBRARY hal.lib // HAL, HALData LIBRARY commonengine.lib // for StringLoader -// MACRO ?macro_name diff -r 6b87b143d312 -r 71da52165949 photosgallery/gallery/inc/glxappui.h --- a/photosgallery/gallery/inc/glxappui.h Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/gallery/inc/glxappui.h Fri Mar 12 15:42:44 2010 +0200 @@ -34,8 +34,6 @@ class CGlxNavigationalState; class CAknGlobalNote; -class CGlxBackServiceWrapper; - /** * CGlxAppUi * @@ -165,12 +163,6 @@ *Invoked by the OOM framwork when photos app needs to free memory for other applications. */ void StopCleanupL(); - /** - * To move back to the app which started photossuite when done options->exit from - * within the app. - * @param aMessage exit action from photossuite - */ - void LaunchMmViewL(const TDesC8& aMessage); /** * Check for updates via IAD. @@ -206,7 +198,6 @@ /// Central repository entry for app (owned) CRepository* iRepository; - CGlxBackServiceWrapper* iBSWrapper; /** * IAD updater class */ diff -r 6b87b143d312 -r 71da52165949 photosgallery/gallery/sis/glxgallery.pkg --- a/photosgallery/gallery/sis/glxgallery.pkg Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/gallery/sis/glxgallery.pkg Fri Mar 12 15:42:44 2010 +0200 @@ -143,18 +143,6 @@ ; Glx logging client "\epoc32\release\armv5\urel\glxlogging.dll"-"!:\sys\bin\glxlogging.dll" -; For contentharvester plugin component -"\epoc32\release\armv5\urel\glxcontentharvesterplugin.dll" -"!:\sys\bin\glxcontentharvesterplugin.dll" -"\epoc32\data\Z\resource\plugins\glxcontentharvesterplugin.rsc" -"!:\resource\plugins\glxcontentharvesterplugin.rsc" - -; For photossuite component - - -"\epoc32\data\z\resource\apps\photossuite.rsc" -"!:\resource\apps\photossuite.rsc" -"\epoc32\include\photossuite.rsg" -"!:\resource\apps\photossuite.rsg" -"\epoc32\data\Z\private\101F4CD2\import\suites\photossuite\suite.xml" -"!:\private\101F4CD2\import\suites\photossuite\suite.xml" -"\epoc32\data\Z\private\101F4CD2\import\suites\photossuite\photos_items.xml" -"!:\private\101F4CD2\import\suites\photossuite\photos_items.xml" - "\epoc32\data\Z\resource\xhtml\01\0x200009EE\contents.zip" -"!:\resource\xhtml\01\0x200009EE\contents.zip" "\epoc32\data\Z\resource\xhtml\01\0x200009EE\index.xml" -"!:\resource\xhtml\01\0x200009EE\index.xml" diff -r 6b87b143d312 -r 71da52165949 photosgallery/gallery/sis/glxgallery_stub.pkg --- a/photosgallery/gallery/sis/glxgallery_stub.pkg Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/gallery/sis/glxgallery_stub.pkg Fri Mar 12 15:42:44 2010 +0200 @@ -158,16 +158,7 @@ ""-"z:\sys\bin\glxuitilities.dll" ""-"z:\sys\bin\glxaddtoalbumhandler.dll" -; For contentharvester plugin component -""-"z:\sys\bin\glxcontentharvesterplugin.dll" - - ""-"z:\resource\xhtml\01\0x200009EE\contents.zip" ""-"z:\resource\xhtml\01\0x200009EE\index.xml" ""-"z:\resource\xhtml\01\0x200009EE\keywords.xml" ""-"z:\resource\xhtml\01\0x200009EE\meta.xml" - -; For photossuite component -""-"z:\resource\apps\photossuite.rsc" -""-"z:\private\101F4CD2\import\suites\photossuite\suite.xml" -""-"z:\private\101F4CD2\import\suites\photossuite\photos_items.xml" diff -r 6b87b143d312 -r 71da52165949 photosgallery/gallery/src/glxappui.cpp --- a/photosgallery/gallery/src/glxappui.cpp Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/gallery/src/glxappui.cpp Fri Mar 12 15:42:44 2010 +0200 @@ -19,6 +19,8 @@ #include "glxappui.h" +#include "glxcachemanager.h" +#include "glxiadupdate.h" #include #include @@ -59,21 +61,12 @@ #include #include #include -#include "glxcachemanager.h"//OOM -//OOM - -#include -#include //OOM - - -#include - - +#include +#include #include #include -#include "glxiadupdate.h" //constants const TInt KGlxGridThumbnailPages = 9 ; // 4 page Down + 4 page Up + 1 Visible page = 9 page @@ -87,17 +80,12 @@ const TInt KGlxMemoryForOOMFwk = 1048576 ; // 1 MB const TInt KGlxThumbNailRepresentation = 2; // Thumbnail Representation; Could be 3 also -_LIT8( KPhotosSuiteNavigation, "SuiteNavigation" ); _LIT8( KPhotosCaptured, "Captured" ); _LIT8( KPhotosMonths, "Months" ); _LIT8( KPhotosTags, "Tags" ); _LIT8( KPhotosAlbums, "Albums" ); _LIT8( KPhotosAllValue,"Allcs"); -_LIT8( KPhotosSuiteExitMessage, "mm://photossuite?action=exit" ); - -// Matrix uid, needed for activating the suite view. -const TInt KMatrixUid = 0x101F4CD2; const TInt KCapturedAlbumId = 2 ; /** @@ -127,8 +115,6 @@ iNavigationalState->AddObserverL( *this ); - // Create Back Stepping Service wrapper - iBSWrapper = CGlxBackServiceWrapper::NewL( TUid::Uid( KGlxGalleryApplicationUid ) ); iNavigationalState->SetBackExitStatus(EFalse); iFocusLostLowMemory = EFalse; @@ -171,10 +157,6 @@ iUiUtility->Close(); } - if( iBSWrapper ) - { - delete iBSWrapper; - } if (iPeriodic) { iPeriodic->Cancel(); @@ -199,16 +181,6 @@ { case EEikCmdExit: { - // Send message to Menu and exit. - /** - * In case of exit is pressed from options menu of photos grid, this flag will be - * false. so it will launch matrix menu. If we don't call LaunchMmViewL, in the above - * scenario, photos will exit,but photosuite will come. This is misleading to user. - */ - if(!iEndKeyPressed) - { - LaunchMmViewL( KPhotosSuiteExitMessage ); - } iUiUtility->SetExitingState(ETrue); Exit(); } @@ -609,10 +581,6 @@ User::Leave(KErrNotSupported); } iNavigationalState->SetBackExitStatus(ETrue); - TBuf8<15> buf; - buf.Append( KPhotosSuiteNavigation ); - TRAP_IGNORE(iBSWrapper->ForwardActivationEventL( buf, ETrue )) - break; } CleanupStack::PopAndDestroy(&stream); @@ -855,42 +823,6 @@ #endif } -// --------------------------------------------------------------------------- -// LaunchMmViewL -// -// --------------------------------------------------------------------------- -// -void CGlxAppUi::LaunchMmViewL( const TDesC8& aMessage ) - { - TRACER("CGlxNsAppUi::LaunchMmViewL()"); - TApaTaskList taskList( iCoeEnv->WsSession() ); - TApaTask task = taskList.FindApp( TUid::Uid( KMatrixUid ) ); - - if ( task.Exists() ) - { - task.SendMessage( TUid::Uid( KUidApaMessageSwitchOpenFileValue ),aMessage ); - } - else - { // app not yet running - RApaLsSession appArcSession; - CleanupClosePushL( appArcSession ); - User::LeaveIfError( appArcSession.Connect() ); - TApaAppInfo appInfo; - TInt err = appArcSession.GetAppInfo( appInfo, - TUid::Uid( KMatrixUid ) ); - if( err == KErrNone ) - { - CApaCommandLine* cmdLine = CApaCommandLine::NewLC(); - cmdLine->SetExecutableNameL( appInfo.iFullName ); - cmdLine->SetCommandL( EApaCommandRun ); - cmdLine->SetTailEndL( aMessage ); - appArcSession.StartApp( *cmdLine ); - CleanupStack::PopAndDestroy( cmdLine ); - } - CleanupStack::PopAndDestroy( &appArcSession ); - } - } - // ----------------------------------------------------------------------------- // ClosePhotosL // ----------------------------------------------------------------------------- diff -r 6b87b143d312 -r 71da52165949 photosgallery/group/bld.inf --- a/photosgallery/group/bld.inf Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/group/bld.inf Fri Mar 12 15:42:44 2010 +0200 @@ -70,10 +70,6 @@ // include the slideshow build #include "../slideshow/group/bld.inf" - -#include "../contentharvesterplugin/group/bld.inf" -#include "../photossuite/group/bld.inf" - //include photos memory plug-in #include "../memoryplugin/group/bld.inf" diff -r 6b87b143d312 -r 71da52165949 photosgallery/imgvwr/group/glxivwr.mmp --- a/photosgallery/imgvwr/group/glxivwr.mmp Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/imgvwr/group/glxivwr.mmp Fri Mar 12 15:42:44 2010 +0200 @@ -102,6 +102,7 @@ END // RESOURCE +LIBRARY oommonitor.lib LIBRARY aknnotify.lib LIBRARY hal.lib // HAL, HALData LIBRARY commonengine.lib // for StringLoader diff -r 6b87b143d312 -r 71da52165949 photosgallery/imgvwr/inc/glxivwrappui.h --- a/photosgallery/imgvwr/inc/glxivwrappui.h Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/imgvwr/inc/glxivwrappui.h Fri Mar 12 15:42:44 2010 +0200 @@ -33,8 +33,6 @@ class CGlxNavigationalState; class CAknGlobalNote; -class CGlxBackServiceWrapper; - /** * CGlxIVwrAppUi * @@ -76,6 +74,11 @@ void HandleForegroundEventL( TBool aForeground ); private: + enum TEntryType + { + EEntryTypeStartUp = 0, + EEntryTypeFocusGained + }; /** * Get view scoring ids based on current navigational state * (using Get in the name since the function does not return anything) @@ -98,6 +101,32 @@ TUid ViewScoringIdForNaviStateDepth( const CMPXCollectionPath& aNaviState ) const; /** + * Requesting OOM to Free Some Memory, so that photos image viewer can start + * @return Error if Memory Cannot be freed else Error None + */ + TInt OOMRequestFreeMemoryL( TInt aBytesRequested) ; + + /** + * Finds Current Memory Availability And Decides to Send a Request for freeing the memory + * @param aCriticalMemoryRequired Bare Minimum to start photos image viewer + * @return Error Code from OOM + */ + TInt ReserveMemoryL(TInt aCriticalMemoryRequired); + + /** + * Finds Current Minimum Required memory to start photos image viewer + * @param Type of application invokation + * @return Required Critical Memory + */ + TInt RamRequiredInBytesL(TEntryType aType); + + /** + * Reserve critical memory qequired to start photos image viewer + * @param Type of application invokation + */ + void ReserveMemoryL(TEntryType aType); + + /** * close photos app. */ void CloseImgVwr(); @@ -113,8 +142,6 @@ ///Ui utility CGlxUiUtility* iUiUtility; - - CGlxBackServiceWrapper* iBSWrapper; }; diff -r 6b87b143d312 -r 71da52165949 photosgallery/imgvwr/src/glxivwrappui.cpp --- a/photosgallery/imgvwr/src/glxivwrappui.cpp Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/imgvwr/src/glxivwrappui.cpp Fri Mar 12 15:42:44 2010 +0200 @@ -49,14 +49,24 @@ #include #include #include +#include +#include +#include #include - - -#include - #include #include +//constants +const TInt KGlxFullThumbnailCount = 1 ; // 1 visible thumnail +#ifdef __MARM +const TInt KGlxMaxMegaPixelsSupportedByCamera = 5242880 ; // 5 MB +#else +const TInt KGlxMaxMegaPixelsSupportedByCamera = 2097152 ; // 2 MB +#endif +const TInt KGlxMaxMemoryToDecodeCapturedPicture = 2 * KGlxMaxMegaPixelsSupportedByCamera ; +const TInt KGlxMemoryForOOMFwk = 1048576 ; // 1 MB +const TInt KGlxThumbNailRepresentation = 4; // Thumbnail Representation; Could be 3 also + // ----------------------------------------------------------------------------- // Constructor // ----------------------------------------------------------------------------- @@ -80,8 +90,6 @@ iNavigationalState->AddObserverL( *this ); - // Create Back Stepping Service wrapper - iBSWrapper = CGlxBackServiceWrapper::NewL( TUid::Uid( KGlxGalleryApplicationUid ) ); iNavigationalState->SetBackExitStatus(EFalse); // Get an instance of view utility @@ -90,6 +98,7 @@ iUiUtility = CGlxUiUtility::UtilityL(); // Always start in default orientation iUiUtility->SetAppOrientationL(EGlxOrientationDefault); + ReserveMemoryL(EEntryTypeStartUp); // publish zoom context, no zoom keys for now NGlxZoomStatePublisher::PublishStateL( EFalse ); } @@ -116,11 +125,6 @@ { iUiUtility->Close(); } - - if( iBSWrapper ) - { - delete iBSWrapper; - } } // ----------------------------------------------------------------------------- @@ -359,6 +363,103 @@ } // --------------------------------------------------------------------------- +// OOMRequestFreeMemoryL +// --------------------------------------------------------------------------- +// +TInt CGlxIVwrAppUi::OOMRequestFreeMemoryL( TInt aBytesRequested) + { + TRACER("TInt CGlxIVwrAppUi::OOMRequestFreeMemoryL( TInt aBytesRequested)"); + GLX_LOG_INFO1("CGlxIVwrAppUi::OOMRequestFreeMemoryL() aBytesRequested=%d", + aBytesRequested); + + ROomMonitorSession oomMonitor; + User::LeaveIfError( oomMonitor.Connect() ); + // No leaving code after this point, so no need to use cleanup stack + // for oomMonitor + TInt errorCode = oomMonitor.RequestFreeMemory( aBytesRequested ); + GLX_LOG_INFO1("CGlxIVwrAppUi::OOMRequestFreeMemoryL(1) errorCode=%d",errorCode); + if ( errorCode != KErrNone ) + { + // try one more time + errorCode = oomMonitor.RequestFreeMemory( aBytesRequested ); + GLX_LOG_INFO1("CGlxIVwrAppUi::OOMRequestFreeMemoryL(2) errorCode=%d",errorCode); + } + oomMonitor.Close(); + return errorCode; + } + +// --------------------------------------------------------------------------- +// ReserveMemoryL +// --------------------------------------------------------------------------- +// +TInt CGlxIVwrAppUi::ReserveMemoryL(TInt aCriticalMemoryRequired) + { + TRACER("void CGlxIVwrAppUi::ReserveMemoryL(TInt aCriticalMemoryRequired)"); + + TInt memoryLeft = 0; + TInt error = KErrNone ; + HAL::Get( HALData::EMemoryRAMFree, memoryLeft ); + GLX_LOG_INFO2("CGlxIVwrAppUi::ReserveMemoryL() - aCriticalMemoryRequired=%d, memoryLeft=%d", + aCriticalMemoryRequired, memoryLeft); + if ( aCriticalMemoryRequired > memoryLeft ) + { + // Request for critical memory required + error = OOMRequestFreeMemoryL( aCriticalMemoryRequired); + GLX_LOG_INFO1("CGlxIVwrAppUi::ReserveMemoryL() - OOMRequestFreeMemoryL() error=%d", error); + } + return error; + } + +// --------------------------------------------------------------------------- +// RamRequiredInBytesL +// --------------------------------------------------------------------------- +// +TInt CGlxIVwrAppUi::RamRequiredInBytesL(TEntryType aType) + { + TRACER("TInt CGlxIVwrAppUi::RamRequiredInBytesL(TEntryType aType)"); + TInt criticalRamMemory = 0 ; + TSize displaySize = iUiUtility->DisplaySize(); + if(EEntryTypeStartUp == aType) + { + // This is Bare Minimum Required Memory for Photos to start + // For Framework to work and to do the on-the-fly decoding + // for the just captured picture = KGlxMemoryForOOMFwk + KGlxMaxMemoryToDecodeCapturedPicture + // For FullScreen to Work Number of Thumbnail(s) * Width * Height * Representation + criticalRamMemory = KGlxMemoryForOOMFwk + KGlxMaxMemoryToDecodeCapturedPicture + + (KGlxFullThumbnailCount * + displaySize.iWidth * displaySize.iHeight * + KGlxThumbNailRepresentation ); + + GLX_LOG_INFO1("CGlxIVwrAppUi::RamRequiredInBytesL(EEntryTypeStartUp): criticalRamMemory=%d", + criticalRamMemory); + } + else + { + GLX_LOG_INFO("CGlxIVwrAppUi::RamRequiredInBytesL(): Photos Already Running"); + } + + return criticalRamMemory; + } + +// --------------------------------------------------------------------------- +// ReserveMemoryL +// --------------------------------------------------------------------------- +// +void CGlxIVwrAppUi::ReserveMemoryL(TEntryType aType) + { + TRACER("TInt CGlxIVwrAppUi::ReserveMemoryL(TEntryType aType)"); + + TInt error = ReserveMemoryL(RamRequiredInBytesL(aType)); + GLX_LOG_INFO1("CGlxIVwrAppUi::ReserveMemoryL() error=%d", error); + + if (KErrNoMemory == error) + { + GLX_LOG_INFO("CGlxIVwrAppUi::ReserveMemoryL(): LEAVE with KErrNoMemory "); + User::Leave(KErrNoMemory); + } + } + +// --------------------------------------------------------------------------- // HandleApplicationSpecificEventL // // --------------------------------------------------------------------------- diff -r 6b87b143d312 -r 71da52165949 photosgallery/slideshow/engine/tsrc/t_cshwslideshowengine/t_cshwslideshowengine.cpp --- a/photosgallery/slideshow/engine/tsrc/t_cshwslideshowengine/t_cshwslideshowengine.cpp Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/slideshow/engine/tsrc/t_cshwslideshowengine/t_cshwslideshowengine.cpp Fri Mar 12 15:42:44 2010 +0200 @@ -296,7 +296,10 @@ { // remove our scheduler // replace old with our new - iScheduler->Replace( iOldScheduler ); + if ( iScheduler ) + { + iScheduler->Replace(iOldScheduler); + } delete iScheduler; delete iTimer; diff -r 6b87b143d312 -r 71da52165949 photosgallery/slideshow/view/inc/shwslideshowview.h --- a/photosgallery/slideshow/view/inc/shwslideshowview.h Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/slideshow/view/inc/shwslideshowview.h Fri Mar 12 15:42:44 2010 +0200 @@ -301,7 +301,7 @@ * returns the index of item for which texture can be removed for cleanup * The index will be out the iterator offsets w.r.t focssed index. */ - void SetImage(); + void SetImageL(); TInt GetIndexToBeRemoved(); /** * Remove the fullscreen texture. diff -r 6b87b143d312 -r 71da52165949 photosgallery/slideshow/view/src/shwslideshowbacklighttimer.cpp --- a/photosgallery/slideshow/view/src/shwslideshowbacklighttimer.cpp Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/slideshow/view/src/shwslideshowbacklighttimer.cpp Fri Mar 12 15:42:44 2010 +0200 @@ -83,18 +83,20 @@ TRACER("CShwSlideshowBackLightTimer::ConstructL"); GLX_LOG_ENTRY_EXIT("CShwSlideshowBackLightTimer::ConstructL"); - CRepository* repository = CRepository::NewLC( KCRUidPeripheralSettings ); + CRepository* lightsRepo = CRepository::NewLC( KCRUidPeripheralSettings ); // What's the timeout value (in seconds ) for the display light? - repository->Get( KSettingsDisplayLightsTimeout, iSettingsDelay ); + lightsRepo->Get( KSettingsDisplayLightsTimeout, iSettingsDelay ); GLX_LOG_INFO1("CShwSlideshowBackLightTimer, lights timeout = %d", iSettingsDelay ); + CleanupStack::PopAndDestroy( lightsRepo ); + CRepository* scrSaverRepo = CRepository::NewLC( KCRUidPersonalizationSettings ); // What's the screen saver's timeout value (in seconds)? TInt screenSaverTimeout = 0; - repository->Get( KSettingsScreenSaverPeriod, screenSaverTimeout ); + scrSaverRepo->Get( KSettingsScreenSaverPeriod, screenSaverTimeout ); GLX_LOG_INFO1("CShwSlideshowBackLightTimer, scr saver timeout = %d", screenSaverTimeout ); - CleanupStack::PopAndDestroy( repository ); + CleanupStack::PopAndDestroy( scrSaverRepo ); // Take the smaller of the two timeout values iSettingsDelay = Min( iSettingsDelay, screenSaverTimeout ); diff -r 6b87b143d312 -r 71da52165949 photosgallery/slideshow/view/src/shwslideshowview.cpp --- a/photosgallery/slideshow/view/src/shwslideshowview.cpp Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/slideshow/view/src/shwslideshowview.cpp Fri Mar 12 15:42:44 2010 +0200 @@ -67,6 +67,8 @@ #include "shwviewtimer.h" #include "shwmediakeyshandler.h" #include +#include +#include namespace { _LIT(KShwSlideshowViewResource,"shwslideshowview.rsc"); @@ -647,7 +649,7 @@ { RemoveTexture(); } - SetImage(); + SetImageL(); } } } @@ -725,7 +727,7 @@ iWaitDialog->ProcessFinishedL(); } iShwState = EShwPlay; - SetImage(); + SetImageL(); iHdmiActive = ETrue; ReplaceCommandSetL(R_SHW_SOFTKEYS_END_PAUSE,R_SHW_SOFTKEYS_END_PAUSE); ShowShwFurnitureL(); @@ -1252,20 +1254,32 @@ } CGlxViewBase::ProcessCommandL(aCommandId); } -// ----------------------------------------------------------------------------- -// SetImage. -// To set Image to external display if HDmi connected +// ----------------------------------------------------------------------------- +// Set the image to external display - HDMI // ----------------------------------------------------------------------------- // -void CShwSlideshowView::SetImage() +void CShwSlideshowView::SetImageL() { - TRACER("CShwSlideshowView::SetImage"); - TGlxMedia item = iFilteredList->Item( iFilteredList->FocusIndex() ); + TRACER("CShwSlideshowView::SetImageL() - CGlxHDMI"); + TGlxMedia item = iFilteredList->Item(iFilteredList->FocusIndex()); TInt frameCount(0); TSize orignalSize; - TBool aFramesPresent = item.GetFrameCount(frameCount); - TBool adimension = item.GetDimensions(orignalSize); - iHdmiController->SetImageL(item.Uri(), orignalSize, frameCount); + TBool aFramesPresent = item.GetFrameCount(frameCount); + TBool adimension = item.GetDimensions(orignalSize); + TInt error = GlxErrorManager::HasAttributeErrorL(item.Properties(), + KGlxMediaIdThumbnail); + if (error == KErrNone) + { + GLX_LOG_INFO("CShwSlideshowView::SetImageL() - CGlxHDMI call SetImageL"); + iHdmiController->SetImageL(item.Uri(), orignalSize, frameCount); + } + else + { + GLX_LOG_INFO1("CShwSlideshowView::SetImageL() - CGlxHDMI IsVideo , err=%d",error); + //Set the external display to cloning mode. + //If the current item is a video, corruted thumbnail + iHdmiController->IsVideo(); + } } // --------------------------------------------------------------------------- // diff -r 6b87b143d312 -r 71da52165949 photosgallery/viewframework/commandhandlers/commandhandlerupnp/tsrc/t_cglxthumbnailsaver/src/t_cglxthumbnailsaver.cpp --- a/photosgallery/viewframework/commandhandlers/commandhandlerupnp/tsrc/t_cglxthumbnailsaver/src/t_cglxthumbnailsaver.cpp Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/viewframework/commandhandlers/commandhandlerupnp/tsrc/t_cglxthumbnailsaver/src/t_cglxthumbnailsaver.cpp Fri Mar 12 15:42:44 2010 +0200 @@ -98,12 +98,14 @@ if(iThumbnail) { EUNIT_PRINT(_L("t_cglxthumbnailsaver::iThumbnail")); - delete iThumbnail; + delete iThumbnail; + iThumbnail = NULL; } if(iThumbnailSaver) { EUNIT_PRINT(_L("t_cglxthumbnailsaver::iThumbnailSaver")); delete iThumbnailSaver; + iThumbnailSaver = NULL; } EUNIT_PRINT(_L("Exiting t_cglxthumbnailsaver::Teardown")); } diff -r 6b87b143d312 -r 71da52165949 photosgallery/viewframework/commandhandlers/commandhandlerupnp/tsrc/t_glxcommandhandlercopytohomenetwork/src/t_glxcmdhndlrcopytohomentwk.cpp --- a/photosgallery/viewframework/commandhandlers/commandhandlerupnp/tsrc/t_glxcommandhandlercopytohomenetwork/src/t_glxcmdhndlrcopytohomentwk.cpp Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/viewframework/commandhandlers/commandhandlerupnp/tsrc/t_glxcommandhandlercopytohomenetwork/src/t_glxcmdhndlrcopytohomentwk.cpp Fri Mar 12 15:42:44 2010 +0200 @@ -291,11 +291,13 @@ { EUNIT_PRINT(_L("before teardown")); - delete iCommandHandlerCopyToHomeNetwork; + delete iCommandHandlerCopyToHomeNetwork; + iCommandHandlerCopyToHomeNetwork = NULL; if(iList) { - delete iList; + delete iList; + iList = NULL; } EUNIT_PRINT(_L("After teardown")); } diff -r 6b87b143d312 -r 71da52165949 photosgallery/viewframework/commandhandlers/commoncommandhandlers/inc/glxcommandhandlerback.h --- a/photosgallery/viewframework/commandhandlers/commoncommandhandlers/inc/glxcommandhandlerback.h Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/viewframework/commandhandlers/commoncommandhandlers/inc/glxcommandhandlerback.h Fri Mar 12 15:42:44 2010 +0200 @@ -31,11 +31,8 @@ class MMPXCollectionUtility; class MMPXViewUtility; class CGlxNavigationalState; +class CAknAppUi; - -class CGlxBackServiceWrapper; - -class CAknAppUi; /** * @class CGlxCommandHandlerBack * @@ -181,10 +178,6 @@ // Navigational state is stored here CGlxNavigationalState* iNavigationalState; - CGlxBackServiceWrapper* iBSWrapper; - - //MMPXCollectionUtility* iCollectionUtility; - /** * Check for the view activation and avoid previous view activation * till the view activation is called on back diff -r 6b87b143d312 -r 71da52165949 photosgallery/viewframework/commandhandlers/commoncommandhandlers/inc/glxcommandhandlersend.h --- a/photosgallery/viewframework/commandhandlers/commoncommandhandlers/inc/glxcommandhandlersend.h Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/viewframework/commandhandlers/commoncommandhandlers/inc/glxcommandhandlersend.h Fri Mar 12 15:42:44 2010 +0200 @@ -29,7 +29,6 @@ // INTERNAL INCLUDES #include "glxmedialistcommandhandler.h" - // FORWARD DECLARATIONS class MGlxMediaListProvider; class CGlxUiUtility; @@ -202,27 +201,26 @@ private: // data - // Not owned - Provider of media list + /// Not owned - Provider of media list MGlxMediaListProvider* iMediaListProvider; - // ID of owning view + /// ID of owning view TInt iViewId; - // Not owned - HUI utility + /// Not owned - HUI utility CGlxUiUtility* iUiUtility; - // Not owned - Attribute context + /// Not owned - Attribute context CGlxDefaultAttributeContext* iAttributeContext; - // Owned - the Send pop-up list, message creation and sending services + /// Owned - the Send pop-up list, message creation and sending services CSendUi* iSendUi; - // Array of Send Plugins uids that should not be used + /// Array of Send Plugins uids that should not be used TBool iFilterOutPlugin; - // The resource file offset + /// The resource file offset TInt iResourceOffset; - }; #endif //__GLXCOMMANDHANDLERUPLSEND_H__ diff -r 6b87b143d312 -r 71da52165949 photosgallery/viewframework/commandhandlers/commoncommandhandlers/src/glxcommandhandlerback.cpp --- a/photosgallery/viewframework/commandhandlers/commoncommandhandlers/src/glxcommandhandlerback.cpp Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/viewframework/commandhandlers/commoncommandhandlers/src/glxcommandhandlerback.cpp Fri Mar 12 15:42:44 2010 +0200 @@ -42,7 +42,6 @@ #include #include #include -#include #include #include "glxmediaselectionpopup.h" @@ -125,9 +124,7 @@ iNavigationalState = CGlxNavigationalState::InstanceL(); iIsViewActivated = EFalse; - iBSWrapper = CGlxBackServiceWrapper::NewL( TUid::Uid( KGlxGalleryApplicationUid ) ); iAppUi = static_cast< CAknAppUi* >( CCoeEnv::Static()->AppUi() ); - } // --------------------------------------------------------------------------- @@ -139,12 +136,6 @@ TRACER( "CGlxCommandHandlerBack::~CGlxCommandHandlerBack" ); iNavigationalState->Close(); - - if( iBSWrapper ) - { - delete iBSWrapper; - } - } // ----------------------------------------------------------------------------- @@ -154,7 +145,6 @@ TBool CGlxCommandHandlerBack::ExecuteL( TInt aCommandId ) { TRACER("CGlxCommandHandlerBack::ExecuteL"); - _LIT8( KPhotosSuiteNavigation, "SuiteNavigation" ); TBool consume(EFalse); GLX_LOG_INFO1( "CGlxCommandHandlerBack::ExecuteL::Command Id (%d)", @@ -179,7 +169,6 @@ iNavigationalState->StartingLevel() == navigationalState->Levels()-1) && iNavigationalState->BackExitStatus()) { - iBSWrapper->HandleBackCommandL( KPhotosSuiteNavigation ); if(iAppUi) { iAppUi->ProcessCommandL(EAknSoftkeyExit); diff -r 6b87b143d312 -r 71da52165949 photosgallery/viewframework/commandhandlers/commoncommandhandlers/src/glxcommandhandlersend.cpp --- a/photosgallery/viewframework/commandhandlers/commoncommandhandlers/src/glxcommandhandlersend.cpp Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/viewframework/commandhandlers/commoncommandhandlers/src/glxcommandhandlersend.cpp Fri Mar 12 15:42:44 2010 +0200 @@ -21,7 +21,6 @@ // CLASS HEADER #include "glxcommandhandlersend.h" - // EXTERNAL INCLUDES #include // for CnvUtfConverter #include // for CSendui @@ -47,6 +46,7 @@ #include // for TGlxFetchContextRemover #include // for CGlxResourceUtilities #include +#include // for CGlxImageViewerManager // LOCAL FUNCTIONS AND CONSTANTS namespace @@ -243,17 +243,17 @@ // retrieve the file name and path CGlxDefaultAttributeContext* attributeContext = CGlxDefaultAttributeContext::NewL(); - CleanupStack::PushL(attributeContext); - attributeContext->AddAttributeL(TMPXAttribute(KMPXMediaGeneralUri)); - mediaList.AddContextL(attributeContext, KGlxFetchContextPriorityBlocking); + CleanupStack::PushL( attributeContext ); + attributeContext->AddAttributeL( TMPXAttribute( KMPXMediaGeneralUri ) ); + mediaList.AddContextL( attributeContext, KGlxFetchContextPriorityBlocking ); // TGlxContextRemover will remove the context when it goes out of scope // Used here to avoid a trap and still have safe cleanup - TGlxFetchContextRemover contextRemover (attributeContext, mediaList); + TGlxFetchContextRemover contextRemover( attributeContext, mediaList ); CleanupClosePushL( contextRemover ); - User::LeaveIfError(GlxAttributeRetriever::RetrieveL(*attributeContext, - mediaList, ETrue)); + User::LeaveIfError(GlxAttributeRetriever::RetrieveL(*attributeContext, + mediaList, ETrue)); // context off the list CleanupStack::PopAndDestroy( &contextRemover ); @@ -263,31 +263,42 @@ // extract the filename from selected items in the media list and add it // to the messageData to be returned TGlxSelectionIterator iterator; - iterator.SetToFirst(&mediaList); + iterator.SetToFirst( &mediaList ); TInt index = KErrNotFound; - while ((index = iterator++) != KErrNotFound) + while ( (index = iterator++) != KErrNotFound ) { - // does not return ownership. - const CGlxMedia* media = mediaList.Item(index).Properties(); - if(media) - { - if(media->IsSupported(KMPXMediaGeneralUri) && IsValidTypeL(*media)) - { - messageData->AppendAttachmentL( - media->ValueText(KMPXMediaGeneralUri)); - } - } - else - { - User::Leave(KErrNotReady); - } - } + // does not return ownership. + const CGlxMedia* media = mediaList.Item( index ).Properties(); + if (media) + { + if ( media->IsSupported( KMPXMediaGeneralUri ) && + IsValidTypeL( *media ) ) + { + CGlxImageViewerManager* viewerInst = + CGlxImageViewerManager::InstanceL(); + if ( viewerInst && viewerInst->IsPrivate() ) + { + messageData->AppendAttachmentHandleL( + viewerInst->ImageFileHandle() ); + } + else + { + messageData->AppendAttachmentL( + media->ValueText( KMPXMediaGeneralUri ) ); + } + viewerInst->DeleteInstance(); + } + } + else + { + User::Leave( KErrNotReady ); + } + } - CleanupStack::PopAndDestroy(attributeContext); + CleanupStack::PopAndDestroy( attributeContext ); return messageData; - }// contextRemover goes out of scope and removes the context from media list - + } // ---------------------------------------------------------------------------- // IsValidTypeL diff -r 6b87b143d312 -r 71da52165949 photosgallery/viewframework/commandhandlers/commoncommandhandlers/src/glxcommandhandlerslideshow.cpp --- a/photosgallery/viewframework/commandhandlers/commoncommandhandlers/src/glxcommandhandlerslideshow.cpp Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/viewframework/commandhandlers/commoncommandhandlers/src/glxcommandhandlerslideshow.cpp Fri Mar 12 15:42:44 2010 +0200 @@ -35,6 +35,7 @@ #include // for TGlxMedia #include // for stringloader #include +#include #include "shwslideshowviewplugin.hrh" // for the slideshow view's UID #include "shwslideshowsettingsplugin_UID.hrh"// for slideshow setting dlg UID @@ -57,7 +58,7 @@ EXPORT_C CGlxCommandHandlerSlideshow* CGlxCommandHandlerSlideshow::NewL( MGlxMediaListProvider* aMediaListProvider, TBool aStepBack, TBool aHasToolbarItem ) { - GLX_LOG_INFO( "CGlxCommandHandlerSlideshow::NewL" ); + TRACER( "CGlxCommandHandlerSlideshow::NewL" ); CGlxCommandHandlerSlideshow* self = new ( ELeave ) CGlxCommandHandlerSlideshow(aMediaListProvider, aStepBack, aHasToolbarItem); CleanupStack::PushL( self ); @@ -84,7 +85,7 @@ // void CGlxCommandHandlerSlideshow::ConstructL() { - GLX_LOG_INFO( "CGlxCommandHandlerSlideshow::ConstructL" ); + TRACER( "CGlxCommandHandlerSlideshow::ConstructL" ); // Get a handle iUiUtility = CGlxUiUtility::UtilityL(); @@ -152,7 +153,7 @@ // EXPORT_C CGlxCommandHandlerSlideshow::~CGlxCommandHandlerSlideshow() { - GLX_LOG_INFO( "CGlxCommandHandlerSlideshow::~CGlxCommandHandlerSlideshow" ); + TRACER( "CGlxCommandHandlerSlideshow::~CGlxCommandHandlerSlideshow" ); if ( iResourceOffset ) { CCoeEnv::Static()->DeleteResourceFile(iResourceOffset); @@ -173,7 +174,7 @@ // void CGlxCommandHandlerSlideshow::DoActivateL(TInt aViewId) { - GLX_LOG_INFO( "CGlxCommandHandlerSlideshow::DoActivateL" ); + TRACER( "CGlxCommandHandlerSlideshow::DoActivateL" ); iViewId = aViewId; // for media list item "focus changed" notification @@ -187,7 +188,7 @@ // ---------------------------------------------------------------------------- void CGlxCommandHandlerSlideshow::Deactivate() { - GLX_LOG_INFO( "CGlxCommandHandlerSlideshow::Deactivate" ); + TRACER( "CGlxCommandHandlerSlideshow::Deactivate" ); MGlxMediaList& mediaList( MediaList() ); mediaList.RemoveMediaListObserver( this ); @@ -200,6 +201,7 @@ TBool CGlxCommandHandlerSlideshow::IsSlideshowNotPlayableOnFocusedContainer (TInt aCommandId, MGlxMediaList& aList) { + TRACER("CGlxCommandHandlerSlideshow::IsSlideshowNotPlayableOnFocusedContainer"); TBool slideshowDisabled = EFalse; // get the media item @@ -229,7 +231,7 @@ TBool CGlxCommandHandlerSlideshow::DoExecuteL(TInt aCommandId, MGlxMediaList& aList ) { - GLX_LOG_INFO( "CGlxCommandHandlerSlideshow::DoExecuteL" ); + TRACER( "CGlxCommandHandlerSlideshow::DoExecuteL" ); TBool handledCommand = ETrue; switch (aCommandId) @@ -239,7 +241,7 @@ // This check has to be done again here since Slideshow can be // activated from toolbar even when there are non-slideshow playable // items in a container and when that container is focused. - if( IsSlideshowNotPlayableOnFocusedContainer( aCommandId, aList ) ) + if( aList.Count() <= 0 || IsSlideshowNotPlayableOnFocusedContainer( aCommandId, aList ) ) { HBufC* popupText = NULL; @@ -321,6 +323,7 @@ TBool CGlxCommandHandlerSlideshow::DoIsDisabled( TInt /*aCommandId*/, MGlxMediaList& /*aList*/) const { + TRACER("CGlxCommandHandlerSlideshow::DoIsDisabled"); // Disable if UPnP is active return ( GlxUpnpRenderer::Status() == NGlxUpnpRenderer::EActive ); } @@ -331,6 +334,7 @@ // TBool CGlxCommandHandlerSlideshow::BypassFiltersForExecute() const { + TRACER("CGlxCommandHandlerSlideshow::BypassFiltersForExecute"); // Always bypass filters to minimise the time spent by the base class // when it initialises the slideshow menu item. return ETrue; @@ -343,7 +347,7 @@ NGlxListDefs::TFocusChangeType /*aType*/, TInt /*aNewIndex*/, TInt /*aOldIndex*/, MGlxMediaList* /*aList*/ ) { - GLX_FUNC("CGlxCommandHandlerSlideshow::HandleFocusChangedL"); + TRACER("CGlxCommandHandlerSlideshow::HandleFocusChangedL"); } @@ -391,6 +395,7 @@ TInt aItemIndex, const RArray& aAttributes, MGlxMediaList* /*aList*/ ) { + TRACER("CGlxCommandHandlerSlideshow::HandleAttributesAvailableL"); if ( iShowInToolbar && MediaList().FocusIndex() == aItemIndex ) { TIdentityRelation match( TMPXAttribute::MatchContentId ); @@ -429,7 +434,7 @@ void CGlxCommandHandlerSlideshow::ActivateViewL( NShwSlideshow::TPlayDirection aPlaybackDirection ) { - GLX_LOG_INFO( "CGlxCommandHandlerSlideshow::ActivateViewL" ); + TRACER( "CGlxCommandHandlerSlideshow::ActivateViewL" ); // Determine the path from the media list CMPXCollectionPath* path = MediaList().PathLC(); @@ -482,6 +487,7 @@ // void CGlxCommandHandlerSlideshow::UpdateToolbar() { + TRACER("CGlxCommandHandlerSlideshow::UpdateToolbar"); TBool visible = EFalse; if ( GlxUpnpRenderer::Status() != NGlxUpnpRenderer::EActive ) @@ -516,7 +522,7 @@ // void CGlxCommandHandlerSlideshow::PopulateToolbarL() { - + TRACER("CGlxCommandHandlerSlideshow::PopulateToolbarL"); iUiUtility->ScreenFurniture()->SetTooltipL( EGlxCmdSlideshowPlay, CAknButton::EPositionLeft ); } diff -r 6b87b143d312 -r 71da52165949 photosgallery/viewframework/commandhandlers/commoncommandhandlers/tsrc/ut_propertycommandhandlers/src/ut_propertycommandhandlers.cpp --- a/photosgallery/viewframework/commandhandlers/commoncommandhandlers/tsrc/ut_propertycommandhandlers/src/ut_propertycommandhandlers.cpp Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/viewframework/commandhandlers/commoncommandhandlers/tsrc/ut_propertycommandhandlers/src/ut_propertycommandhandlers.cpp Fri Mar 12 15:42:44 2010 +0200 @@ -324,9 +324,11 @@ { delete iTagManagerCommand; + iTagManagerCommand = NULL; delete iMetadataCommand; - + iMetadataCommand = NULL; delete iMediaList; + iMediaList = NULL; } void UT_propertycommandhandlers::PropertyCommandHandlerNewL( ) diff -r 6b87b143d312 -r 71da52165949 photosgallery/viewframework/commandhandlers/inc/glxcommandhandlers.hrh --- a/photosgallery/viewframework/commandhandlers/inc/glxcommandhandlers.hrh Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/viewframework/commandhandlers/inc/glxcommandhandlers.hrh Fri Mar 12 15:42:44 2010 +0200 @@ -97,6 +97,7 @@ EGlxCmdSingleClickSend, EGlxCmdAiwSingleClickEdit, EGlxCmdSingleClickRemoveFrom, + EGlxCmdRenameCompleted, EGlxCmdAiwBase = 0x6000 }; diff -r 6b87b143d312 -r 71da52165949 photosgallery/viewframework/commandhandlers/tsrc/ut__commandhandlermarking/src/t_glxcommandhandlermarking.cpp --- a/photosgallery/viewframework/commandhandlers/tsrc/ut__commandhandlermarking/src/t_glxcommandhandlermarking.cpp Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/viewframework/commandhandlers/tsrc/ut__commandhandlermarking/src/t_glxcommandhandlermarking.cpp Fri Mar 12 15:42:44 2010 +0200 @@ -248,8 +248,11 @@ CGlxMarkingCommandHandlerTester::~CGlxMarkingCommandHandlerTester() { - iMarker->Deactivate(); - + if (iMarker) + { + iMarker->Deactivate(); + } + iCommandHandlerList.ResetAndDestroy(); iCommandHandlerList.Close(); diff -r 6b87b143d312 -r 71da52165949 photosgallery/viewframework/commandhandlers/tsrc/ut_commandhandlerdrm/src/t_glxcommandhandlerdrm.cpp --- a/photosgallery/viewframework/commandhandlers/tsrc/ut_commandhandlerdrm/src/t_glxcommandhandlerdrm.cpp Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/viewframework/commandhandlers/tsrc/ut_commandhandlerdrm/src/t_glxcommandhandlerdrm.cpp Fri Mar 12 15:42:44 2010 +0200 @@ -24,18 +24,12 @@ // EXTERNAL INCLUDES #include #include - #include "glxcommandhandlerdrm.h" #include "ut_glxdummymedialist.h" - #include - #include #include #include - -#include "glxdummyvlm.h" - #include // INTERNAL INCLUDES @@ -51,7 +45,10 @@ CGlxCommandHandlerDRMTester::~CGlxCommandHandlerDRMTester() { - iDRMHandler->Deactivate(); + if ( iDRMHandler ) + { + iDRMHandler->Deactivate(); + } iCommandHandlerList.ResetAndDestroy(); iCommandHandlerList.Close(); @@ -172,6 +169,7 @@ void T_GlxCommandHandlerDRM::Teardown( ) { delete iDRMHandlerTester; + iDRMHandlerTester = NULL; REComSession::FinalClose(); } diff -r 6b87b143d312 -r 71da52165949 photosgallery/viewframework/commandhandlers/tsrc/ut_commandhandlermoreinfo/src/t_glxcommandhandlermoreinfo.cpp --- a/photosgallery/viewframework/commandhandlers/tsrc/ut_commandhandlermoreinfo/src/t_glxcommandhandlermoreinfo.cpp Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/viewframework/commandhandlers/tsrc/ut_commandhandlermoreinfo/src/t_glxcommandhandlermoreinfo.cpp Fri Mar 12 15:42:44 2010 +0200 @@ -43,7 +43,10 @@ CGlxCommandHandlerMoreInfoTester::~CGlxCommandHandlerMoreInfoTester() { - iMoreInfoHandler->Deactivate(); + if ( iMoreInfoHandler ) + { + iMoreInfoHandler->Deactivate(); + } iCommandHandlerList.ResetAndDestroy(); iCommandHandlerList.Close(); diff -r 6b87b143d312 -r 71da52165949 photosgallery/viewframework/dataprovider/inc/glxdetailsboundcommand.hrh --- a/photosgallery/viewframework/dataprovider/inc/glxdetailsboundcommand.hrh Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/viewframework/dataprovider/inc/glxdetailsboundcommand.hrh Fri Mar 12 15:42:44 2010 +0200 @@ -35,24 +35,29 @@ #define EMetaControlIdSettingList KAknCtLastControlId + 1 #define EMetaDataDialogListBox KAknCtLastControlId + 2 -#define ENameItem 0 -#define EDescriptionItem 1 -#define EAlbumsItem 2 -#define ETagsItem 3 -#define EDateAndTimeItem 4 -#define ELocationItem 5 -#define ESizeItem 6 -#define EResolutionItem 7 -#define EDurationItem 8 -#define ElicenseItem 9 +enum TDetailsFields + { + ENameItem, + EDescriptionItem, + EAlbumsItem, + ETagsItem, + EDateAndTimeItem, + ELocationItem, + ESizeItem, + EResolutionItem, + EDurationItem, + ElicenseItem + }; - -#define EImgVwrNameItem 0 -#define EImgVwrDescriptionItem 1 -#define EImgVwrDateAndTimeItem 2 -#define EImgVwrSizeItem 3 -#define EImgVwrResolutionItem 4 -#define EImgVwrlicenseItem 5 +enum TImageVwrDetailsFields + { + EImgVwrNameItem, + EImgVwrDescriptionItem, + EImgVwrDateAndTimeItem, + EImgVwrSizeItem, + EImgVwrResolutionItem, + EImgVwrlicenseItem + }; #define EShwCmdSettingsChange 0x6000 #define EShwCmdHelp 0x6001 diff -r 6b87b143d312 -r 71da52165949 photosgallery/viewframework/dataprovider/src/glxthumbnailvarianttype.cpp --- a/photosgallery/viewframework/dataprovider/src/glxthumbnailvarianttype.cpp Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/viewframework/dataprovider/src/glxthumbnailvarianttype.cpp Fri Mar 12 15:42:44 2010 +0200 @@ -161,7 +161,8 @@ icon.bitmapId, resFile, defaultSize ).Id() ); } else if ( (KErrNone == thumbnailError) || (KErrArgument == thumbnailError) - || (KErrDiskFull == thumbnailError) || ( drm && isValid == EGlxDrmRightsInvalid ) ) + || (KErrDiskFull == thumbnailError) || (KErrNoMemory == thumbnailError) + || ( drm && isValid == EGlxDrmRightsInvalid ) ) { //Try and see if we can scale and show the grid tnm else show the default TBool isGridTnmShown = EFalse; diff -r 6b87b143d312 -r 71da52165949 photosgallery/viewframework/medialists/src/glxcachemanager.cpp --- a/photosgallery/viewframework/medialists/src/glxcachemanager.cpp Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/viewframework/medialists/src/glxcachemanager.cpp Fri Mar 12 15:42:44 2010 +0200 @@ -121,7 +121,7 @@ #ifdef USE_S60_TNM iTnEngine = CThumbnailManager::NewL( *this); - iTnEngine->SetDisplayModeL( EColor16MU ); + iTnEngine->SetDisplayModeL( EColor16M ); #endif } @@ -764,7 +764,7 @@ iRequestOwner = list; CleanupStack::PopAndDestroy(attrSpecs); TGlxIdSpaceId spaceId = list->IdSpaceId(iRequestedItemIndexes[0]); - HandleCollectionMediaL(spaceId, *iMPXMedia, KErrArgument); + HandleCollectionMediaL(spaceId, *iMPXMedia, errInImage); DeleteImageViewerInstance(); return; } diff -r 6b87b143d312 -r 71da52165949 photosgallery/viewframework/medialists/src/glxgarbagecollector.cpp --- a/photosgallery/viewframework/medialists/src/glxgarbagecollector.cpp Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/viewframework/medialists/src/glxgarbagecollector.cpp Fri Mar 12 15:42:44 2010 +0200 @@ -163,6 +163,7 @@ // void CGlxGarbageCollector::FlushPagesL(TInt aCount) { + TRACER("CGlxGarbageCollector::FlushPagesL"); TBool reachedEnd = CleanupCaches(aCount); if ( reachedEnd ) diff -r 6b87b143d312 -r 71da52165949 photosgallery/viewframework/medialists/src/glximagereader.cpp --- a/photosgallery/viewframework/medialists/src/glximagereader.cpp Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/viewframework/medialists/src/glximagereader.cpp Fri Mar 12 15:42:44 2010 +0200 @@ -128,8 +128,9 @@ if ( iImageDecoder ) { iFrame = new (ELeave) CFbsBitmap(); - iFrame->Create(iImageDecoder->FrameInfo(0).iOverallSizeInPixels, - iImageDecoder->FrameInfo(0).iFrameDisplayMode); + User::LeaveIfError(iFrame->Create( + iImageDecoder->FrameInfo(0).iOverallSizeInPixels, + iImageDecoder->FrameInfo(0).iFrameDisplayMode)); iImageDecoder->Convert(&iStatus, *iFrame, 0); SetActive(); } diff -r 6b87b143d312 -r 71da52165949 photosgallery/viewframework/texturemanager/src/glxtexturemanagerimpl.cpp --- a/photosgallery/viewframework/texturemanager/src/glxtexturemanagerimpl.cpp Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/viewframework/texturemanager/src/glxtexturemanagerimpl.cpp Fri Mar 12 15:42:44 2010 +0200 @@ -372,7 +372,7 @@ CFbsBitmap* picture = new (ELeave) CFbsBitmap; CleanupStack::PushL(picture); User::LeaveIfError(picture->Create(TSize(KGlxFlatTextureSize, - KGlxFlatTextureSize), EColor16MU ) ); + KGlxFlatTextureSize), EColor16M ) ); CFbsBitmapDevice* drawBufDevice = CFbsBitmapDevice::NewL(picture); CleanupStack::PushL(drawBufDevice); diff -r 6b87b143d312 -r 71da52165949 photosgallery/viewframework/tvout/inc/glxhdmicontroller.h --- a/photosgallery/viewframework/tvout/inc/glxhdmicontroller.h Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/viewframework/tvout/inc/glxhdmicontroller.h Fri Mar 12 15:42:44 2010 +0200 @@ -129,6 +129,7 @@ CGlxHdmiContainer* iHdmiContainer; CGlxHdmiSurfaceUpdater* iSurfaceUpdater; CGlxTv* iGlxTvOut; + TBool iImageSupported; }; #endif /* GLXHDMICONTROLLER_H_ */ diff -r 6b87b143d312 -r 71da52165949 photosgallery/viewframework/tvout/inc/glxhdmisurfaceupdater.h --- a/photosgallery/viewframework/tvout/inc/glxhdmisurfaceupdater.h Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/viewframework/tvout/inc/glxhdmisurfaceupdater.h Fri Mar 12 15:42:44 2010 +0200 @@ -52,13 +52,13 @@ /* * This is to cancel the active object from decoding */ - void HandleRunL(); + void HandleRunL(TRequestStatus& aStatus); /* * This updates the new image. */ void UpdateNewImageL(const TDesC& aImageFile, - TInt aFrameCount); + TInt aFrameCount,TSize aImageDimensions); /* * Activate Zoom @@ -97,11 +97,9 @@ /* * Create a New surface with given size - * @param1 size */ - void CreateSurfaceL(TSize aSize); + void CreateSurfaceL(); /* - * Create surface manager with given size * @param1 size */ void MapSurfaceL(); @@ -141,6 +139,11 @@ void CreateHdmiL(TBool aCreateSurface = ETrue); static TInt TimeOut(TAny* aSelf); + + /* + * ModifySurface positions of the surface to be displayed on screen + */ + void ModifySurfacePostion(); private: RWindow* iWindow; const TDesC& iImagePath; @@ -168,7 +171,6 @@ TInt iAnimCount; // animation count RFs iFsSession; // RFs - TBool iFirstTime; TPoint iLeftCornerForZoom; CPeriodic* iTimer; TBool iZoom; diff -r 6b87b143d312 -r 71da52165949 photosgallery/viewframework/tvout/src/glxactivedecoder.cpp --- a/photosgallery/viewframework/tvout/src/glxactivedecoder.cpp Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/viewframework/tvout/src/glxactivedecoder.cpp Fri Mar 12 15:42:44 2010 +0200 @@ -59,7 +59,14 @@ void CGlxHdmiDecoderAO::RunL() { TRACER("CGlxHdmiDecoderAO::RunL()"); - iHdmiSurfaceUpdater->HandleRunL(); + if(iStatus == KErrUnderflow) + { + iDecoder->ContinueConvert(&iStatus); + } + else + { + iHdmiSurfaceUpdater->HandleRunL(iStatus); + } } // ----------------------------------------------------------------------------- diff -r 6b87b143d312 -r 71da52165949 photosgallery/viewframework/tvout/src/glxhdmicontroller.cpp --- a/photosgallery/viewframework/tvout/src/glxhdmicontroller.cpp Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/viewframework/tvout/src/glxhdmicontroller.cpp Fri Mar 12 15:42:44 2010 +0200 @@ -26,10 +26,6 @@ #include "glxhdmicontroller.h" -// 720p image size -const TInt KHdTvWidth = 1280; -const TInt KHdTvHeight = 720; - // ----------------------------------------------------------------------------- // NewLC // ----------------------------------------------------------------------------- @@ -67,23 +63,12 @@ { TRACER("CGlxHdmiController::SetImageL()"); if (aStore) + { + iImageSupported = ETrue; StoreImageInfoL(aImageFile, aImageDimensions, aFrameCount); - + } if (iGlxTvOut->IsHDMIConnected()) { - if(aImageDimensions.iHeight<=KHdTvHeight && - aImageDimensions.iWidth<= KHdTvWidth && aFrameCount > 0) - { - GLX_LOG_INFO("CGlxHdmiController::SetImageL() - 1"); - DestroySurfaceUpdater(); - if (!iHdmiContainer) - { - CreateHdmiContainerL(); - } - CreateSurfaceUpdaterL(aImageFile, aImageDimensions, aFrameCount); - } - else - { GLX_LOG_INFO("CGlxHdmiController::SetImageL() - 2"); // do not close the surface , use the same surface instead. // Call a function to pass imagefile, imagedimension, framecount @@ -99,11 +84,10 @@ } else { - GLX_LOG_INFO("CGlxHdmiController::SetImageL() - 3"); - iSurfaceUpdater->UpdateNewImageL(aImageFile, aFrameCount); - } - iHdmiContainer->DrawNow(); + GLX_LOG_INFO("CGlxHdmiController::SetImageL() - 3"); + iSurfaceUpdater->UpdateNewImageL(aImageFile, aFrameCount,aImageDimensions); } + iHdmiContainer->DrawNow(); } } @@ -113,6 +97,7 @@ EXPORT_C void CGlxHdmiController::IsVideo() { TRACER("CGlxHdmiController::IsVideo()"); + iImageSupported = EFalse; if (iGlxTvOut->IsHDMIConnected()) { DestroySurfaceUpdater(); @@ -263,7 +248,7 @@ TRACER("CGlxHdmiController::HandleTvStatusChangedL()"); if ( aChangeType == ETvConnectionChanged ) { - if ( iGlxTvOut->IsHDMIConnected() ) + if ( iGlxTvOut->IsHDMIConnected() && iImageSupported) { GLX_LOG_INFO("CGlxHdmiController::HandleTvStatusChangedL() - HDMI Connected"); // Calling SetImageL() with appropriate parameters diff -r 6b87b143d312 -r 71da52165949 photosgallery/viewframework/tvout/src/glxhdmisurfaceupdater.cpp --- a/photosgallery/viewframework/tvout/src/glxhdmisurfaceupdater.cpp Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/viewframework/tvout/src/glxhdmisurfaceupdater.cpp Fri Mar 12 15:42:44 2010 +0200 @@ -100,18 +100,20 @@ void CGlxHdmiSurfaceUpdater::ReleaseContent() { TRACER("void CGlxHdmiSurfaceUpdater::ReleaseContent()"); - - iGlxDecoderAO->Cancel(); - if(iDecodedBitmap) + if ( iGlxDecoderAO ) + { + iGlxDecoderAO->Cancel(); + } + if ( iDecodedBitmap ) { delete iDecodedBitmap; iDecodedBitmap= NULL; } - if (iSurfBufferAO->IsActive()) + if ( iSurfBufferAO->IsActive() ) { iSurfBufferAO->Cancel(); } - if(iImageDecoder) + if ( iImageDecoder ) { delete iImageDecoder; iImageDecoder = NULL; @@ -152,8 +154,6 @@ #ifdef _DEBUG iStartTime.HomeTime(); #endif - //to refresh the HD screen for the first time. - iFirstTime = ETrue; //start decoding the image iGlxDecoderAO->ConvertImageL(*iDecodedBitmap,0,iImageDecoder); @@ -172,9 +172,10 @@ // UpdateNewImageL // ----------------------------------------------------------------------------- void CGlxHdmiSurfaceUpdater::UpdateNewImageL(const TDesC& aImageFile, - TInt /*aFrameCount*/) + TInt /*aFrameCount*/,TSize aImageDimensions) { TRACER("CGlxHdmiSurfaceUpdater::UpdateNewImageL()"); + iOrigImageDimensions = aImageDimensions; iBitmapReady = EFalse; ReleaseContent(); CreateImageDecoderL(aImageFile); @@ -196,9 +197,8 @@ if (aCreateSurface) { - TSize rectSz = iDecodedBitmap->SizeInPixels(); // For animation - GLX_LOG_INFO2("CGlxHdmiSurfaceUpdater::CreateHdmiL() Size height = %d and width = %d", rectSz.iHeight, rectSz.iWidth); - CreateSurfaceL(rectSz); + GLX_LOG_INFO("CGlxHdmiSurfaceUpdater::CreateHdmiL() Create Surface"); + CreateSurfaceL(); } // Active objects for double buffered draw signalling @@ -208,16 +208,15 @@ CActive::EPriorityStandard-1); CActiveScheduler::Add(iSurfBufferAO); } - } // ----------------------------------------------------------------------------- // CreateSurfaceL // ----------------------------------------------------------------------------- -void CGlxHdmiSurfaceUpdater::CreateSurfaceL(TSize aSize) +void CGlxHdmiSurfaceUpdater::CreateSurfaceL() { TRACER("CGlxHdmiSurfaceUpdater::CreateSurfaceL()"); - + TSize surfaceSize = iWindow->Size(); // create surface of the screen size, i.e 1280x720 iSurfManager = new(ELeave) RSurfaceManager(); TInt error = iSurfManager->Open(); if (error != KErrNone) @@ -227,10 +226,10 @@ } RSurfaceManager::TSurfaceCreationAttributesBuf attributes; attributes().iPixelFormat = EUidPixelFormatARGB_8888;// EUidPixelFormatYUV_420Planar; - attributes().iSize = aSize; + attributes().iSize = surfaceSize; attributes().iBuffers = 1; - attributes().iStride = aSize.iWidth * KMulFactorToCreateBitmap; + attributes().iStride = surfaceSize.iWidth * KMulFactorToCreateBitmap; attributes().iAlignment = KMulFactorToCreateBitmap; attributes().iContiguous = EFalse; attributes().iMappable = ETrue; @@ -243,9 +242,8 @@ } //Map the surface and stride the surface info MapSurfaceL(); - //Set the background Surface - iWindow->SetBackgroundSurface(iSurfId); - + // Set the Configuration to the surface ID when creating a surface + iConfig.SetSurfaceId(iSurfId); } // ----------------------------------------------------------------------------- @@ -274,6 +272,7 @@ iSurfManager->GetBufferOffset( iSurfId, 0,offset); iSurfBuffer = iSurfChunk->Base()+offset; } + // ----------------------------------------------------------------------------- // SurfBuffer0Ready // ----------------------------------------------------------------------------- @@ -289,14 +288,12 @@ void CGlxHdmiSurfaceUpdater::Refresh() { TRACER("CGlxHdmiSurfaceUpdater::Refresh()"); + // copy the decoded bitmap on to the surface SwapBuffers(); + // Modify the surface position with respect to the buffer size + ModifySurfacePostion(); + // refresh the window iCallBack->DoGenCallback(); - if(iFirstTime) - { - iFirstTime = EFalse; - iWindow->RemoveBackgroundSurface(ETrue); - iWindow->SetBackgroundSurface(iSurfId); - } } // ----------------------------------------------------------------------------- @@ -344,25 +341,37 @@ void CGlxHdmiSurfaceUpdater::CreateBitmapL() { TRACER("CGlxHdmiSurfaceUpdater::StartImageDecodeL()"); - TSize decodeSize; - decodeSize.iHeight = (iOrigImageDimensions.iHeight>KHdTvHeight? KHdTvHeight: - iOrigImageDimensions.iHeight); - decodeSize.iWidth = (iOrigImageDimensions.iWidth>KHdTvWidth? KHdTvWidth: - iOrigImageDimensions.iWidth); - GLX_LOG_INFO2("CGlxHdmiSurfaceUpdater::StartImageDecodeL() - decodeSize width = %d and height %d", - decodeSize.iWidth, decodeSize.iHeight ); - + TSize scrnSize = iWindow->Size(); + TSize targetBitmapSize; + GLX_LOG_INFO2("CGlxHdmiSurfaceUpdater::StartImageDecodeL() - bitmapsize=%d, %d",iOrigImageDimensions.iWidth,iOrigImageDimensions.iHeight); + TReal32 scaleFactor = 0.0f; + if (scrnSize.iWidth * iOrigImageDimensions.iHeight > scrnSize.iHeight + * iOrigImageDimensions.iWidth) + { + scaleFactor = (TReal32) scrnSize.iHeight + / (TReal32) iOrigImageDimensions.iHeight; + } + else + { + scaleFactor = (TReal32) scrnSize.iWidth + / (TReal32) iOrigImageDimensions.iWidth; + } + GLX_LOG_INFO1("CGlxHdmiSurfaceUpdater::StartImageDecodeL() - scaleFactor=%f",scaleFactor); + targetBitmapSize.iHeight = iOrigImageDimensions.iHeight * scaleFactor; + targetBitmapSize.iWidth = iOrigImageDimensions.iWidth * scaleFactor; + + GLX_LOG_INFO2("CGlxHdmiSurfaceUpdater::StartImageDecodeL() - targetBitmapSize=%d, %d",targetBitmapSize.iWidth,targetBitmapSize.iHeight); //create the bitmap for the required size - iDecodedBitmap = new(ELeave) CFbsBitmap(); - - TInt err = iDecodedBitmap->Create(decodeSize,EColor16MU ); + iDecodedBitmap = new (ELeave) CFbsBitmap(); + + TInt err = iDecodedBitmap->Create(targetBitmapSize, EColor16MU); User::LeaveIfNull(iDecodedBitmap); } // ----------------------------------------------------------------------------- // HandleRunL // ----------------------------------------------------------------------------- -void CGlxHdmiSurfaceUpdater::HandleRunL() +void CGlxHdmiSurfaceUpdater::HandleRunL(TRequestStatus& aStatus) { TRACER("CGlxHdmiSurfaceUpdater::HandleRunL()"); @@ -371,15 +380,24 @@ GLX_LOG_INFO1("CGlxHdmiSurfaceUpdater::HandleRunL() ConvertImageL took" " <%d> us", (TInt)iStopTime.MicroSecondsFrom(iStartTime).Int64()); #endif - iBitmapReady = ETrue; - iZoomRectSz = iDecodedBitmap->SizeInPixels(); - if (iSurfBufferAO->iStatus != KRequestPending && !iSurfBufferAO->IsActive()) + if(aStatus.Int() !=KErrNone) + { + GLX_LOG_INFO("HandleRunL - Convert failed"); + ShiftToCloningMode(); + } + else { - Refresh(); - iSurfBufferAO->iStatus = KRequestPending; - iSurfBufferAO->SetActive(); - iSurfUpdateSession.NotifyWhenAvailable(iSurfBufferAO->iStatus); - TInt err = iSurfUpdateSession.SubmitUpdate(1, iSurfId, 0, NULL); + iBitmapReady = ETrue; + iZoomRectSz = iDecodedBitmap->SizeInPixels(); + if (iSurfBufferAO->iStatus != KRequestPending + && !iSurfBufferAO->IsActive()) + { + Refresh(); + iSurfBufferAO->iStatus = KRequestPending; + iSurfBufferAO->SetActive(); + iSurfUpdateSession.NotifyWhenAvailable(iSurfBufferAO->iStatus); + TInt err = iSurfUpdateSession.SubmitUpdate(1, iSurfId, 0, NULL); + } } //release imagedecoder after the conversion is over if(iImageDecoder) @@ -403,19 +421,20 @@ User::Leave(error); } } + // ----------------------------------------------------------------------------- // ActivateZoom // ----------------------------------------------------------------------------- void CGlxHdmiSurfaceUpdater::ActivateZoom() { TRACER("CGlxHdmiSurfaceUpdater::ActivateZoom()"); - iConfig.SetSurfaceId(iSurfId); iZoom = ETrue; if(!iTimer->IsActive() && iBitmapReady) { iTimer->Start(KZoomDelay,KZoomDelay,TCallBack( TimeOut,this )); } } + // ----------------------------------------------------------------------------- // DeactivateZoom // ----------------------------------------------------------------------------- @@ -429,8 +448,8 @@ iConfig.SetExtent(TRect(0,0,bitmapsize.iWidth,bitmapsize.iHeight)); iWindow->SetBackgroundSurface(iConfig, ETrue); } - } + // --------------------------------------------------------------------------- // TimeOut // --------------------------------------------------------------------------- @@ -448,6 +467,7 @@ } return KErrNone; } + // ----------------------------------------------------------------------------- // Zoom // ----------------------------------------------------------------------------- @@ -465,7 +485,8 @@ iLeftCornerForZoom.iX =iLeftCornerForZoom.iX+KSingleStepForZoom/2; iLeftCornerForZoom.iY =iLeftCornerForZoom.iY+KSingleStepForZoom/2; GLX_LOG_INFO2("CGlxHdmiSurfaceUpdater::Zoom()--- 2,iZoomRectSz.iWidth = %d, iZoomRectSz.iHeight = %d", iZoomRectSz.iWidth,iZoomRectSz.iHeight); - iConfig.SetViewport(TRect(iLeftCornerForZoom.iX,iLeftCornerForZoom.iY,iZoomRectSz.iWidth,iZoomRectSz.iHeight)); + iConfig.SetViewport(TRect(iLeftCornerForZoom.iX,iLeftCornerForZoom.iY, + iZoomRectSz.iWidth,iZoomRectSz.iHeight)); } else { @@ -479,9 +500,45 @@ iZoom = ETrue; } GLX_LOG_INFO2("CGlxHdmiSurfaceUpdater::Zoom()--- 4,iZoomRectSz.iWidth = %d, iZoomRectSz.iHeight = %d", iZoomRectSz.iWidth,iZoomRectSz.iHeight); - iConfig.SetViewport(TRect(iLeftCornerForZoom.iX,iLeftCornerForZoom.iY,iZoomRectSz.iWidth,iZoomRectSz.iHeight)); + iConfig.SetViewport(TRect(iLeftCornerForZoom.iX,iLeftCornerForZoom.iY, + iZoomRectSz.iWidth,iZoomRectSz.iHeight)); } - iConfig.SetExtent(TRect(0,0,KHdTvWidth,KHdTvHeight)); + iWindow->SetBackgroundSurface(iConfig, ETrue); + } + +// ----------------------------------------------------------------------------- +// ModifySurfacePostion +// ----------------------------------------------------------------------------- +void CGlxHdmiSurfaceUpdater::ModifySurfacePostion() + { + TRACER("CGlxHdmiSurfaceUpdater::ModifySurfacePostion()"); + TSize bitmapSize = iDecodedBitmap->SizeInPixels(); + TPoint startPoint(0,0); + if (bitmapSize.iWidth SetBackgroundSurface(iConfig, ETrue); } @@ -500,5 +557,14 @@ void CGlxHdmiSurfaceUpdater::ShiftToPostingMode() { TRACER("CGlxHdmiSurfaceUpdater::ShiftToPostingMode()"); - iWindow->SetBackgroundSurface(iSurfId); +#ifdef _DEBUG + TRect ex, vp; + iConfig.GetExtent(ex); + iConfig.GetViewport(vp); + GLX_LOG_INFO2("CGlxHdmiSurfaceUpdater::ShiftToPostingMode() - vp - TL=%d, %d",vp.iTl.iX,vp.iTl.iY); + GLX_LOG_INFO2("CGlxHdmiSurfaceUpdater::ShiftToPostingMode() - vp - BR=%d, %d",vp.iBr.iX,vp.iBr.iY); + GLX_LOG_INFO2("CGlxHdmiSurfaceUpdater::ShiftToPostingMode() - ex - TL=%d, %d",ex.iTl.iX,ex.iTl.iY); + GLX_LOG_INFO2("CGlxHdmiSurfaceUpdater::ShiftToPostingMode() - ex - BR=%d, %d",ex.iBr.iX,ex.iBr.iY); +#endif + iWindow->SetBackgroundSurface(iConfig, ETrue); } diff -r 6b87b143d312 -r 71da52165949 photosgallery/viewframework/uiutilities/data/glxuiutilities.rss --- a/photosgallery/viewframework/uiutilities/data/glxuiutilities.rss Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/viewframework/uiutilities/data/glxuiutilities.rss Fri Mar 12 15:42:44 2010 +0200 @@ -464,7 +464,7 @@ { id = EGlxCmdAiwAssign; serviceCmd = KAiwCmdAssign; - contentType = "ArcsoftEditor/*"; + contentType = "MediaEditor/*"; serviceClass = KAiwClassMenu; } }; diff -r 6b87b143d312 -r 71da52165949 photosgallery/viewframework/views/cloudview/src/glxcloudviewimp.cpp --- a/photosgallery/viewframework/views/cloudview/src/glxcloudviewimp.cpp Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/viewframework/views/cloudview/src/glxcloudviewimp.cpp Fri Mar 12 15:42:44 2010 +0200 @@ -192,19 +192,7 @@ void CGlxCloudViewImp::DoMLViewActivateL(const TVwsViewId & /* aPrevViewId */, TUid /* aCustomMessageId */, const TDesC8 & /* aCustomMessage */) { - TRACER("GLX_CLOUD::CGlxCloudViewImp::DoMLViewActivateL"); - if(StatusPane()) - { - StatusPane()->MakeVisible(ETrue); - CEikStatusPane* statusPane = iEikonEnv->AppUiFactory()->StatusPane(); - CAknTitlePane* titlePane = ( CAknTitlePane* )statusPane->ControlL( - TUid::Uid( EEikStatusPaneUidTitle )); - if( iTitletext ) - { - // Set the required Title - titlePane->SetTextL( *iTitletext ); - } - } + TRACER("GLX_CLOUD::CGlxCloudViewImp::DoMLViewActivateL"); ConstructCloudControlL(); GLX_LOG_INFO("CGlxCloudViewImp::DoMLViewActivateL Cloud View Control Created" ); // set app state to tag-browser view diff -r 6b87b143d312 -r 71da52165949 photosgallery/viewframework/views/cloudview/src/glxtagscontextmenucontrol.cpp --- a/photosgallery/viewframework/views/cloudview/src/glxtagscontextmenucontrol.cpp Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/viewframework/views/cloudview/src/glxtagscontextmenucontrol.cpp Fri Mar 12 15:42:44 2010 +0200 @@ -34,7 +34,7 @@ #include #include -#include +#include #include #include "utf.h" // UtfConverter diff -r 6b87b143d312 -r 71da52165949 photosgallery/viewframework/views/fullscreenview/inc/glxfullscreenviewimp.h --- a/photosgallery/viewframework/views/fullscreenview/inc/glxfullscreenviewimp.h Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/viewframework/views/fullscreenview/inc/glxfullscreenviewimp.h Fri Mar 12 15:42:44 2010 +0200 @@ -262,7 +262,10 @@ * Consume DRM rights */ void ConsumeDRMRightsL( const TDesC& uri ); - + /** + * Set the image to external display - HDMI + */ + void SetImageL(); private: /** Softkey resource id's */ TFullScreenViewResourceIds iResourceIds; diff -r 6b87b143d312 -r 71da52165949 photosgallery/viewframework/views/fullscreenview/src/glxfullscreenviewimp.cpp --- a/photosgallery/viewframework/views/fullscreenview/src/glxfullscreenviewimp.cpp Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/viewframework/views/fullscreenview/src/glxfullscreenviewimp.cpp Fri Mar 12 15:42:44 2010 +0200 @@ -85,6 +85,11 @@ * Start Delay for the periodic timer, in microseconds */ const TInt KPeriodicStartDelay = 250000; +/** + * Interval delay for the periodic timer, in microseconds + */ +const TInt KPeriodicIntervalDelay = 100000; + //This constant is used to calculate the index of the item for which texture has to removed. //6 = 5(iterator value in forward or backward direction for fullscreen) + 1(focus index); const TInt KFullScreenIterator = 3; @@ -307,6 +312,16 @@ //Fix For EPKA-7U5DT7-slideshow launched from FullScreen and connect USB in mass storage mode results in Photos crash navigationalState->ActivatePreviousViewL(); } + else + { + //fix for ESLM-7YYDXC: When in FullScreen View, view mode must be 'EView' + //While coming back from SlideShow to FullScreen view, need to set view mode. + if(navigationalState->ViewingMode() != NGlxNavigationalState::EView) + { + navigationalState->SetToViewMode(); + } + } + if(naviState->Id() == TMPXItemId(KGlxCollectionPluginImageViewerImplementationUid)) { @@ -321,22 +336,9 @@ if(!iImgViewerMode && iMediaList->Count()) { iHdmiController = CGlxHdmiController::NewL(); - iOldFocusIndex = iMediaList->FocusIndex(); - TGlxMedia item = iMediaList->Item( iMediaList->FocusIndex() ); - GLX_LOG_INFO("CGlxHdmi - CGlxFullScreenViewImp Create HdmiController"); - - //check if the content is not video && has proper DRM rights - //then only call setimage in HDMI - if (item.Category() != EMPXVideo && iDrmUtility->CheckOpenRightsL(item.Uri(),ETrue)) - { - TInt frameCount(0); - TSize orignalSize; - TBool aFramesPresent = item.GetFrameCount(frameCount); - TBool adimension = item.GetDimensions(orignalSize); - iHdmiController->SetImageL(item.Uri(), orignalSize, frameCount); - } + iOldFocusIndex = iMediaList->FocusIndex(); + SetImageL(); } - iScreenFurniture->SetActiveView(iViewUid); // create the screen furniture for touch devices @@ -375,8 +377,8 @@ // iContextUtility->PublishPhotoContextL(item.Uri()); if ( !iPeriodic->IsActive() ) { - iPeriodic->Start( KPeriodicStartDelay, KMaxTInt, TCallBack( - &PeriodicCallback, static_cast( this ) ) ); + iPeriodic->Start(KPeriodicStartDelay, KPeriodicIntervalDelay, + TCallBack(&PeriodicCallback, static_cast (this))); } } @@ -992,7 +994,16 @@ MulDoubleTapData* DoubleTapData = (MulDoubleTapData*)(aEvent.CustomEventData()); TPoint doubleTapPoint = DoubleTapData->mDoubleTapPoint; SetSliderLevel(); - TRAP_IGNORE( ActivateZoomControlL(EZoomStartDoubleTap, &doubleTapPoint) ); + TRAP_IGNORE( ActivateZoomControlL(EZoomStartDoubleTap, &doubleTapPoint) ); + return EEventConsumed; + } + case ETypeItemRemoved: + { + if(iHdmiController) + { + SetImageL(); + } + iOldFocusIndex = iMediaList->FocusIndex(); return EEventConsumed; } case ETypeHighlight: @@ -1006,25 +1017,9 @@ { RemoveTexture(); } - TGlxMedia item1 = iMediaList->Item( iMediaList->FocusIndex() ); - TInt frameCount(0); - TSize orignalSize; - TBool aFramesPresent = item1.GetFrameCount(frameCount); - TBool adimension = item1.GetDimensions(orignalSize); - - //check if the content is not video && has proper DRM rights - //then only call next image in HDMI if(iHdmiController) { - if (item1.Category() != EMPXVideo && iDrmUtility->CheckOpenRightsL(item1.Uri(),ETrue)) - { - GLX_LOG_INFO("CGlxHdmi - FullscreenView - SetImageL"); - iHdmiController->SetImageL(item1.Uri(), orignalSize, frameCount); - } - else - { - iHdmiController->IsVideo(); - } + SetImageL(); } iOldFocusIndex = iMediaList->FocusIndex(); if ( NGlxNFullScreenUIState::EUiOn == GetUiSate() ) @@ -1103,6 +1098,15 @@ DeactivateZoomControlL(); consumed = ETrue; break; + case EGlxCmdRenameCompleted: + { + if (iHdmiController) + { + SetImageL(); + } + consumed = ETrue; + break; + } // case EGlxCmdRotateLeft: // iCoverFlowWidget->RotateImage(IMulWidget::ERotateLeft,size,KGlxRotationDelay); // consumed = ETrue; @@ -1139,15 +1143,6 @@ { TRACER("CGlxFullScreenViewImp::HandleResourceChangeL"); HandleResourceChangeL ( aType); - switch (aType) - { - case KEikDynamicLayoutVariantSwitch: - { - //if resolution changed -// iSliderWidget->control()->Display()->SetVisibleArea( ClientRect() ); - break; - } - } } //---------------------------------------------------------------------------------- @@ -1277,13 +1272,6 @@ inline void CGlxFullScreenViewImp::CallPeriodicCallback() { TRACER("CGlxFullScreenViewImp::CallPeriodicCallback"); - if(iPeriodic->IsActive()) - { - iPeriodic->Cancel(); - } - /* - * function can leave - */ TRAP_IGNORE(ShowDrmExpiaryNoteL()); } @@ -1298,11 +1286,55 @@ if(iMediaList->Count()>0) { const TGlxMedia& media = iMediaList->Item(iMediaList->FocusIndex()); - if (media.IsDrmProtected()) + TInt tnError = GlxErrorManager::HasAttributeErrorL( + media.Properties(), KGlxMediaIdThumbnail); + GLX_LOG_INFO1("CGlxFullScreenViewImp::ShowDrmExpiaryNoteL()" + " tnError=%d ", tnError); + + TSize tnSize = iUiUtility->DisplaySize(); + TMPXAttribute qtyTnAttrib = TMPXAttribute(KGlxMediaIdThumbnail, + GlxFullThumbnailAttributeId(ETrue, tnSize.iWidth, + tnSize.iHeight)); + const CGlxThumbnailAttribute* qtyTn = media.ThumbnailAttribute( + qtyTnAttrib); + + if (qtyTn) { + if (iPeriodic->IsActive()) + { + iPeriodic->Cancel(); + } + } + + if (tnError == KErrNone && qtyTn && media.IsDrmProtected()) + { + GLX_LOG_INFO("CGlxFullScreenViewImp::ShowDrmExpiaryNoteL()" + "- ConsumeDRMRightsL()"); const TDesC& uri = media.Uri(); ConsumeDRMRightsL(uri); } + + if (tnError != KErrNone) + { + if (iPeriodic->IsActive()) + { + iPeriodic->Cancel(); + } + + CGlxNavigationalState* navigationalState = + CGlxNavigationalState::InstanceL(); + CleanupClosePushL(*navigationalState); + CMPXCollectionPath* naviState = navigationalState->StateLC(); + if (naviState->Id() == TMPXItemId( + KGlxCollectionPluginImageViewerImplementationUid)) + { + GLX_LOG_INFO("CGlxFullScreenViewImp::ShowDrmExpiaryNoteL()" + "- ShowErrorNoteL()"); + GlxGeneralUiUtilities::ShowErrorNoteL(tnError); + } + CleanupStack::PopAndDestroy(naviState); + CleanupStack::PopAndDestroy(navigationalState); + } } } @@ -1398,3 +1430,32 @@ const TGlxMedia& item = iMediaList->Item(GetIndexToBeRemoved()); iUiUtility->GlxTextureManager().RemoveTexture(item.Id(),EFalse); } +// --------------------------------------------------------------------------- +// +// Set the image to external display - HDMI +// --------------------------------------------------------------------------- +// +void CGlxFullScreenViewImp::SetImageL() + { + TRACER("CGlxFullScreenViewImp::SetImageL - CGlxHdmi"); + TGlxMedia item = iMediaList->Item(iMediaList->FocusIndex()); + TInt error = GlxErrorManager::HasAttributeErrorL(item.Properties(), + KGlxMediaIdThumbnail); + if (item.Category() != EMPXVideo && iDrmUtility->CheckOpenRightsL( + item.Uri(), ETrue) && (error == KErrNone)) + { + TInt frameCount(0); + TSize orignalSize; + TBool aFramesPresent = item.GetFrameCount(frameCount); + TBool adimension = item.GetDimensions(orignalSize); + iHdmiController->SetImageL(item.Uri(), orignalSize, frameCount); + GLX_LOG_INFO("CGlxFullScreenViewImp::SetImageL - CGlxHdmi - calling SetImage"); + } + else + { + GLX_LOG_INFO("CGlxFullScreenViewImp::SetImageL - CGlxHdmi - calling IsVideo"); + //Set the external display to cloning mode. + //If the current item is a video, corruted thumbnail + iHdmiController->IsVideo(); + } + } diff -r 6b87b143d312 -r 71da52165949 photosgallery/viewframework/views/listview/eabi/glxlistviewu.def --- a/photosgallery/viewframework/views/listview/eabi/glxlistviewu.def Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/viewframework/views/listview/eabi/glxlistviewu.def Fri Mar 12 15:42:44 2010 +0200 @@ -2,7 +2,5 @@ _ZN12CGlxListView4NewLEP20MGlxMediaListFactoryiR20TListViewResourceIdsRK7TDesC16 @ 1 NONAME _ZN12CGlxListView5NewLCEP20MGlxMediaListFactoryiR20TListViewResourceIdsRK7TDesC16 @ 2 NONAME _ZTI12CGlxListView @ 3 NONAME - _ZTI17CGlxWaitScheduler @ 4 NONAME - _ZTV12CGlxListView @ 5 NONAME - _ZTV17CGlxWaitScheduler @ 6 NONAME + _ZTV12CGlxListView @ 4 NONAME diff -r 6b87b143d312 -r 71da52165949 photosgallery/viewframework/views/listview/group/glxlistview.mmp --- a/photosgallery/viewframework/views/listview/group/glxlistview.mmp Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/viewframework/views/listview/group/glxlistview.mmp Fri Mar 12 15:42:44 2010 +0200 @@ -76,4 +76,4 @@ LIBRARY aknicon.lib LIBRARY egul.lib LIBRARY aknskins.lib -LIBRARY bitmaptransforms.lib +LIBRARY bitgdi.lib diff -r 6b87b143d312 -r 71da52165949 photosgallery/viewframework/views/listview/inc/glxlistviewimp.h --- a/photosgallery/viewframework/views/listview/inc/glxlistviewimp.h Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/viewframework/views/listview/inc/glxlistviewimp.h Fri Mar 12 15:42:44 2010 +0200 @@ -144,7 +144,7 @@ void DestroyListViewWidget(); protected: - void PreviewTNReadyL(CFbsBitmap* aBitmap, CFbsBitmap* aMask, TInt aIndex); + void PreviewTNReadyL(CFbsBitmap* aBitmap, CFbsBitmap* aMask, TBool aPopulateList); protected: void Request(TInt aRequestStart, TInt aRequestEnd, THgScrollDirection aDirection); @@ -204,6 +204,9 @@ TBool iPopulateListTNs; + // Flag to check if all the items in list view need to be refreshed + TBool iIsRefreshNeeded; + TBool iBackwardNavigation; TInt iStartIndex; diff -r 6b87b143d312 -r 71da52165949 photosgallery/viewframework/views/listview/inc/glxpreviewthumbnailbinding.h --- a/photosgallery/viewframework/views/listview/inc/glxpreviewthumbnailbinding.h Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/viewframework/views/listview/inc/glxpreviewthumbnailbinding.h Fri Mar 12 15:42:44 2010 +0200 @@ -24,7 +24,6 @@ #include "glxmedialistiterator.h" // Interface for going through items in the list in a non-sequential order #include "mglxmedialistobserver.h" // Observes for changes in media list #include -#include class GlxThumbnailVariantType; class CGlxThumbnailContext; // Fetch context to retrieve thumbnails @@ -35,7 +34,7 @@ class MPreviewTNObserver { public: - virtual void PreviewTNReadyL(CFbsBitmap* aBitmap, CFbsBitmap* aMask, TInt aIndex) = 0; + virtual void PreviewTNReadyL(CFbsBitmap* aBitmap, CFbsBitmap* aMask, TBool aPopulateList) = 0; }; // CLASS DECLARATION @@ -87,8 +86,8 @@ void ScaleBitmapToListSizeL(CFbsBitmap* aSrcBitmap, CFbsBitmap* aDestBitmap); public: - void HandleItemChangedL(const CMPXCollectionPath& aPath, - TBool aPopulateListTNs, TBool aBackwardNavigation); + void HandleItemChangedL(const CMPXCollectionPath& aPath,TBool aPopulateListTNs, + TBool aIsRefreshNeeded, TBool aBackwardNavigation); void StartTimer(TBool aPopulateListTNs); void StopTimer(); @@ -143,6 +142,8 @@ //flag will be true, when initially the first thumbnails for all the //items in the list are populated. TBool iPopulateListTNs; + + TBool iIsRefreshNeeded; //it holds the initial number of thumbnail to be displayed RArray iPreviewItemCount; @@ -155,31 +156,7 @@ TInt iTrial; - TBool iBackwardNavigation; - CMPXFilter* iPreviewFilter; - - CBitmapScaler* iBitmapScaler; }; - // ---------------------------------------------------------------------------- - // CWaitScheduler - Active object to scale the bitmap to the desired size. - // ---------------------------------------------------------------------------- - class CGlxWaitScheduler : public CActive - { - public: - static CGlxWaitScheduler* NewL(); - void WaitForRequest(); - - private: - CGlxWaitScheduler(); - void ConstructL(); - virtual ~CGlxWaitScheduler(); - void RunL(); - void DoCancel(); - - private: - CActiveSchedulerWait iScheduler; - }; - #endif //_GLXPREVIEWTHUMBNAILBINDING_H_ diff -r 6b87b143d312 -r 71da52165949 photosgallery/viewframework/views/listview/src/glxlistviewimp.cpp --- a/photosgallery/viewframework/views/listview/src/glxlistviewimp.cpp Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/viewframework/views/listview/src/glxlistviewimp.cpp Fri Mar 12 15:42:44 2010 +0200 @@ -37,7 +37,6 @@ #include #include //Glx Logs #include -#include //CGlxMediaListMulModelProvider #include #include //StringLoader #include @@ -116,8 +115,8 @@ //Register the view to recieve toolbar events. ViewBase handles the events SetToolbarObserver(this); - iBackwardNavigation = EFalse; + iIsRefreshNeeded = EFalse; } // --------------------------------------------------------------------------- @@ -217,7 +216,7 @@ CMPXCollectionPath* path = iMediaList->PathLC( NGlxListDefs::EPathFocusOrSelection ); iPreviewTNBinding->HandleItemChangedL(*path, - iPopulateListTNs, iBackwardNavigation); + iPopulateListTNs, iIsRefreshNeeded, iBackwardNavigation); CleanupStack::PopAndDestroy( path ); } @@ -420,6 +419,11 @@ if( iNextViewActivationEnabled && ( aIndex >= 0 && aIndex < iMediaList->Count())) { + //Delete the PreviewTNMBinding as in forward navigation + //we do not get the medialist callback. + delete iPreviewTNBinding; + iPreviewTNBinding = NULL; + iMediaList->SetFocusL(NGlxListDefs::EAbsolute,aIndex); iLastFocusedIndex = iMediaList->FocusIndex(); iNextViewActivationEnabled = EFalse; @@ -429,11 +433,12 @@ iMediaList->PathLC( NGlxListDefs::EPathFocusOrSelection ); iCollectionUtility->Collection().OpenL(*path); CleanupStack::PopAndDestroy(path); + } } void CGlxListViewImp::PreviewTNReadyL(CFbsBitmap* aBitmap, CFbsBitmap* - /*aMask*/, TInt /*aIndex*/) + /*aMask*/, TBool aPopulateList) { TRACER("CGlxListViewImp::PreviewTNReadyL"); @@ -441,6 +446,7 @@ TInt focusIndex = iMediaList->FocusIndex(); TInt mediaCount = iMediaList->Count(); + iPopulateListTNs = aPopulateList; if (aBitmap) { @@ -493,6 +499,7 @@ else { iPopulateListTNs = EFalse; + iIsRefreshNeeded = EFalse; // iStartIndex holds the focus index of the item. // If the focus is not on 0th index and if USB is Connected/Disconnected @@ -518,7 +525,7 @@ CMPXCollectionPath* path = iMediaList->PathLC( NGlxListDefs::EPathFocusOrSelection ); iPreviewTNBinding->HandleItemChangedL(*path, - iPopulateListTNs, iBackwardNavigation); + iPopulateListTNs, iIsRefreshNeeded, iBackwardNavigation); CleanupStack::PopAndDestroy( path ); } } @@ -592,7 +599,12 @@ iList->ItemL(i).SetTitleL(item.Title()); iList->ItemL(i).SetTextL(item.SubTitle()); } - + GLX_DEBUG3("CGlxListViewImp::CreateListL() Medialist Count = %d, " + "iLastFocusIndex %d",mediaCount,iLastFocusedIndex); + if(iLastFocusedIndex >= mediaCount) + { + iLastFocusedIndex = (mediaCount - 1); + } iMediaList->SetFocusL(NGlxListDefs::EAbsolute, iLastFocusedIndex); iList->SetSelectedIndex(iLastFocusedIndex); iList->RefreshScreen(iLastFocusedIndex); @@ -662,37 +674,47 @@ const RArray& aAttributes, MGlxMediaList* /*aList*/ ) { TRACER("CGlxListViewImp::HandleAttributesAvailableL"); - + TMPXAttribute titleAttrib(KMPXMediaGeneralTitle); TMPXAttribute subTitleAttrib(KGlxMediaCollectionPluginSpecificSubTitle); - TIdentityRelation< TMPXAttribute > match ( &TMPXAttribute::Match ); - - const TGlxMedia& item = iMediaList->Item(aItemIndex); + TIdentityRelation match(&TMPXAttribute::Match); - if (KErrNotFound != aAttributes.Find(titleAttrib, match)) - { + const TGlxMedia& item = iMediaList->Item(aItemIndex); + + if (KErrNotFound != aAttributes.Find(titleAttrib, match)) + { iList->ItemL(aItemIndex).SetTitleL(item.Title()); iList->RefreshScreen(aItemIndex); - } + } + + if (KErrNotFound != aAttributes.Find(subTitleAttrib, match)) + { + iList->ItemL(aItemIndex).SetTextL(item.SubTitle()); + iList->RefreshScreen(aItemIndex); - if (KErrNotFound != aAttributes.Find(subTitleAttrib, match)) - { - iList->ItemL(aItemIndex).SetTextL(item.SubTitle()); - iList->RefreshScreen(aItemIndex); - + // If there is some modified in grid/fullscreen view, + // HandleAttributesAvailableL will get called. Here we are setting + // iIsRefreshNeeded flag to ETrue + if (!iIsRefreshNeeded && iUiUtility->ViewNavigationDirection() + == EGlxNavigationBackwards) + { + iIsRefreshNeeded = ETrue; + iPopulateListTNs = EFalse; + } + // Set iPopulateListTNs to ETrue and refresh all the items in // list view if subtitle is updated if (iPreviewTNBinding && !iPopulateListTNs) { iPopulateListTNs = ETrue; iStartIndex = KErrNotFound; - CMPXCollectionPath* path = iMediaList->PathLC( - NGlxListDefs::EPathFocusOrSelection ); - iPreviewTNBinding->HandleItemChangedL(*path, - iPopulateListTNs, iBackwardNavigation); - CleanupStack::PopAndDestroy( path ); + CMPXCollectionPath* path = iMediaList->PathLC( + NGlxListDefs::EPathFocusOrSelection); + iPreviewTNBinding->HandleItemChangedL(*path, iPopulateListTNs, + iIsRefreshNeeded, iBackwardNavigation); + CleanupStack::PopAndDestroy(path); } - } + } } // ---------------------------------------------------------------------------- @@ -710,7 +732,7 @@ CMPXCollectionPath* path = iMediaList->PathLC( NGlxListDefs::EPathFocusOrSelection ); iPreviewTNBinding->HandleItemChangedL(*path, - iPopulateListTNs, iBackwardNavigation); + iPopulateListTNs, iIsRefreshNeeded, iBackwardNavigation); CleanupStack::PopAndDestroy( path ); } } diff -r 6b87b143d312 -r 71da52165949 photosgallery/viewframework/views/listview/src/glxpreviewthumbnailbinding.cpp --- a/photosgallery/viewframework/views/listview/src/glxpreviewthumbnailbinding.cpp Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/viewframework/views/listview/src/glxpreviewthumbnailbinding.cpp Fri Mar 12 15:42:44 2010 +0200 @@ -28,66 +28,16 @@ #include #include // Fetch context priority def'ns - +#include #include const TInt KInitialThumbnailsTimeDelay(100000); -const TInt KWaitCount(5); +const TInt KWaitCount(10); const TInt KThumbnailStartTimeDelay(250000); -const TInt KThumbnailIntervalTimeDelay(50000); const TInt KPreviewThumbnailFetchCount(1); -// ---------------------------------------------------------------------------- -// CWaitScheduler::NewL() -// ---------------------------------------------------------------------------- -CGlxWaitScheduler* CGlxWaitScheduler::NewL() - { - TRACER("CGlxWaitScheduler::NewL()"); - CGlxWaitScheduler* self = new( ELeave ) CGlxWaitScheduler(); - CleanupStack::PushL( self ); - self->ConstructL( ); - CleanupStack::Pop( self ); - return self; - } -CGlxWaitScheduler::CGlxWaitScheduler() -: CActive( EPriorityStandard ) - { - TRACER("CGlxWaitScheduler::CGlxWaitScheduler()"); - CActiveScheduler::Add( this ); - } - -void CGlxWaitScheduler::ConstructL() - { - TRACER("CGlxWaitScheduler::ConstructL()"); - // Do nothing - } - -CGlxWaitScheduler::~CGlxWaitScheduler() - { - TRACER("CGlxWaitScheduler::~CGlxWaitScheduler()"); - Cancel(); - } - -void CGlxWaitScheduler::WaitForRequest() - { - TRACER("CGlxWaitScheduler::WaitForRequest()"); - SetActive(); - iScheduler.Start(); - } - -void CGlxWaitScheduler::RunL() - { - TRACER("CGlxWaitScheduler::RunL()"); - iScheduler.AsyncStop(); - } - -void CGlxWaitScheduler::DoCancel() - { - TRACER("CGlxWaitScheduler::DoCancel()"); - //Do nothing - } // ---------------------------------------------------------------------------- // NewL @@ -148,7 +98,6 @@ iThumbnailContext->SetDefaultSpec(iGridIconSize.iWidth, iGridIconSize.iHeight); iThumbnailContext->AddAttributeL(tnAttr); - iBitmapScaler = CBitmapScaler::NewL(); } // ---------------------------------------------------------------------------- @@ -175,13 +124,7 @@ } delete iTimer; iTimer = NULL; - iPreviewItemCount.Close(); - - if(iBitmapScaler) - { - delete iBitmapScaler; - iBitmapScaler = NULL; - } + iPreviewItemCount.Close(); } // ---------------------------------------------------------------------------- @@ -208,9 +151,9 @@ if (value) { CFbsBitmap* bitmap = new (ELeave) CFbsBitmap; - bitmap->Duplicate( value->iBitmap->Handle()); - //ScaleBitmapToListSizeL(value->iBitmap, bitmap); - iObserver.PreviewTNReadyL(bitmap, NULL,iProgressIndex); + ScaleBitmapToListSizeL(value->iBitmap, bitmap); + GLX_LOG_INFO1("iObserver.PreviewTNReadyL() iTrial=%d", iTrial); + iObserver.PreviewTNReadyL(bitmap, NULL,iPopulateListTNs); } } } @@ -218,7 +161,7 @@ { if (iTrial == KWaitCount) { - iObserver.PreviewTNReadyL(NULL, NULL, KErrNotFound); + iObserver.PreviewTNReadyL(NULL, NULL, iPopulateListTNs); iTrial=0; return; } @@ -240,15 +183,15 @@ if (value) { CFbsBitmap* bitmap = new (ELeave) CFbsBitmap; - bitmap->Duplicate( value->iBitmap->Handle()); - //ScaleBitmapToListSizeL(value->iBitmap, bitmap); - iObserver.PreviewTNReadyL(bitmap, NULL,iProgressIndex); + ScaleBitmapToListSizeL(value->iBitmap, bitmap); + GLX_LOG_INFO1("iObserver.PreviewTNReadyL() iTrialCount=%d", iTrialCount); + iObserver.PreviewTNReadyL(bitmap, NULL,iPopulateListTNs); } else { if (iTrialCount == KWaitCount) { - iObserver.PreviewTNReadyL(NULL, NULL, KErrNotFound); + iObserver.PreviewTNReadyL(NULL, NULL, iPopulateListTNs); iTrialCount=0; return; } @@ -283,13 +226,13 @@ // ---------------------------------------------------------------------------- // void CGlxPreviewThumbnailBinding::HandleItemChangedL(const CMPXCollectionPath& aPath, - TBool aPopulateListTNs, TBool aBackwardNavigation) + TBool aPopulateListTNs, TBool aIsRefreshNeeded, TBool aBackwardNavigation) { TRACER("CGlxPreviewThumbnailBinding::HandleItemChangedL"); iTimerTicked = EFalse; iPopulateListTNs = aPopulateListTNs; - iBackwardNavigation = aBackwardNavigation; iProgressIndex = KErrNone; + iIsRefreshNeeded = aIsRefreshNeeded; // remove and close old medialist if( iMediaList ) @@ -307,6 +250,13 @@ iMediaList->AddContextL(iThumbnailContext, KGlxFetchContextPriorityNormal); // adding the medialist to observ any changes or updates done iMediaList->AddMediaListObserverL(this); + + if(aBackwardNavigation) + { + //On backward navigation start the timer manually, since we do not + //get the attribute callback. + StartTimer(iPopulateListTNs); + } } // ---------------------------------------------------------------------------- @@ -328,16 +278,8 @@ if (iPopulateListTNs) { - if (iBackwardNavigation) - { - iTimer->Start(KThumbnailIntervalTimeDelay, KThumbnailIntervalTimeDelay/KWaitCount, - TCallBack(IsTimeL,this)); - } - else - { - iTimer->Start(KThumbnailStartTimeDelay, + iTimer->Start(KThumbnailStartTimeDelay, KInitialThumbnailsTimeDelay, TCallBack(IsTimeL,this)); - } } } @@ -401,6 +343,13 @@ if (value) { iPreviewItemCount.AppendL( aItemIndex ); + // sometimes we get HandleAttributesAvailableL callback after some delay + // when we do cache cleanup. + if(!iPopulateListTNs) + { + iPopulateListTNs = ETrue; + StartTimer(iPopulateListTNs); + } } } } @@ -483,29 +432,54 @@ // void CGlxPreviewThumbnailBinding::HandlePopulatedL( MGlxMediaList* /*aList*/ ) { - TRACER("CGlxPreviewThumbnailBinding::HandlePopulatedL()"); - //Start the timer - StartTimer(iPopulateListTNs); - } + TRACER("CGlxPreviewThumbnailBinding::HandlePopulatedL()"); + + // Do cache cleanup. If iIsRefreshNeeded is set, + // then clean up the item at 0th index + if (iPopulateListTNs && iIsRefreshNeeded) + { + if (iMediaList && iMediaList->Count() > 0) + { + GLX_LOG_INFO("**** Cache Cleanup ****"); + MGlxCache* cacheManager = MGlxCache::InstanceL(); + cacheManager->ForceCleanupMedia(iMediaList->IdSpaceId(0), + iMediaList->Item(0).Id()); + cacheManager->Close(); + } + } + //Start the timer + StartTimer(iPopulateListTNs); + } // ---------------------------------------------------------------------------- // ScaleBitmapToListSizeL // ---------------------------------------------------------------------------- // void CGlxPreviewThumbnailBinding::ScaleBitmapToListSizeL( - CFbsBitmap* aSrcBitmap, CFbsBitmap* aDestBitmap) - { - TRACER("CGlxPreviewThumbnailBinding::ScaleBitmapToListSizeL()"); - - // Create the bitmap with the list preferred size - aDestBitmap->Create(CHgDoubleGraphicList::PreferredImageSize(), EColor16MU); - - CGlxWaitScheduler* waitScheduler = CGlxWaitScheduler::NewL(); - CleanupStack::PushL( waitScheduler ); - - iBitmapScaler->Scale(&waitScheduler->iStatus, *aSrcBitmap, - *aDestBitmap, ETrue); - waitScheduler->WaitForRequest(); - - CleanupStack::PopAndDestroy( waitScheduler ); + CFbsBitmap* aSrcBitmap, CFbsBitmap* aDestBitmap) + { + TRACER("CGlxPreviewThumbnailBinding::ScaleBitmapToListSizeL()"); + TSize destSize = CHgDoubleGraphicList::PreferredImageSize(); + TSize srcSize = aSrcBitmap->SizeInPixels(); + if (destSize.iHeight * srcSize.iWidth < destSize.iWidth * srcSize.iHeight) + { + // Source has taller aspect than target so reduce target width + destSize.iWidth = ((destSize.iHeight * srcSize.iWidth) + / (srcSize.iHeight)); + } + else + { + // Source has wider aspect than target so reduce target height + destSize.iHeight = (destSize.iWidth * srcSize.iHeight) + / srcSize.iWidth; + } + aDestBitmap->Create(destSize, aSrcBitmap->DisplayMode()); + CFbsBitmapDevice* bitmapDevice = CFbsBitmapDevice::NewL(aDestBitmap); + CleanupStack::PushL(bitmapDevice); + CFbsBitGc* bitmapGc = CFbsBitGc::NewL(); + CleanupStack::PushL(bitmapGc); + bitmapGc->Activate(bitmapDevice); + bitmapGc->DrawBitmap(TRect(destSize), aSrcBitmap); + CleanupStack::PopAndDestroy(bitmapGc); + CleanupStack::PopAndDestroy(bitmapDevice); } diff -r 6b87b143d312 -r 71da52165949 photosgallery/viewframework/views/metadatadialog/inc/glxmetadatacontainer.h --- a/photosgallery/viewframework/views/metadatadialog/inc/glxmetadatacontainer.h Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/viewframework/views/metadatadialog/inc/glxmetadatacontainer.h Fri Mar 12 15:42:44 2010 +0200 @@ -213,6 +213,7 @@ //since iUri is const type. HBufC* iModifiedUri; CGlxMetadataAsyncUpdate* iAsyncRequest; + TBool iRenameCompleted; }; /** diff -r 6b87b143d312 -r 71da52165949 photosgallery/viewframework/views/metadatadialog/src/glximgvwrmetadatacontainer.cpp --- a/photosgallery/viewframework/views/metadatadialog/src/glximgvwrmetadatacontainer.cpp Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/viewframework/views/metadatadialog/src/glximgvwrmetadatacontainer.cpp Fri Mar 12 15:42:44 2010 +0200 @@ -224,7 +224,7 @@ GLX_LOG_INFO("CGlxImgVwrMetadataContainer::HandleListBoxEventL"); if ((aEventType == EEventEnterKeyPressed) || (aEventType == EEventEditingStarted) || - (aEventType == EEventItemDoubleClicked)) + (aEventType == EEventItemSingleClicked)) { //handle edit functionality if items when useer selects via touch HandleListboxChangesL(); @@ -323,7 +323,7 @@ TGlxMedia item = iItemMediaList->Item(0); CGlxUStringConverter* stringConverter = CGlxUStringConverter::NewL(); CleanupStack::PushL(stringConverter ); - for(TInt index = 0; index <= 4; index++) + for(TInt index = 0; index <= EImgVwrlicenseItem; index++) { HBufC* string = NULL; @@ -353,6 +353,12 @@ stringConverter->AsStringL(item, KGlxMediaGeneralDimensions,0, string ); } + else if(index == EImgVwrlicenseItem) + { + // If an item is DRM protected, License field in details + // should display "View Details" + string = StringLoader::LoadL(R_GLX_METADATA_VIEW_OPTIONS_VIEW); + } else { //no implementation @@ -362,9 +368,9 @@ iTextSetter.Copy(KGlxTextSetter); iTextSetter.Append(*string); } - EditItemL(index,EFalse); - delete string; - string = NULL; + CleanupStack::PushL( string ); + EditItemL(index,EFalse); + CleanupStack::PopAndDestroy(string ); } CleanupStack::PopAndDestroy(stringConverter ); } diff -r 6b87b143d312 -r 71da52165949 photosgallery/viewframework/views/metadatadialog/src/glxmetadatacontainer.cpp --- a/photosgallery/viewframework/views/metadatadialog/src/glxmetadatacontainer.cpp Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/viewframework/views/metadatadialog/src/glxmetadatacontainer.cpp Fri Mar 12 15:42:44 2010 +0200 @@ -136,6 +136,9 @@ //Initializing to NULL iModifiedUri = NULL; + + //Flag to check if rename is completed successfully. + iRenameCompleted = EFalse; } // --------------------------------------------------------- @@ -309,18 +312,19 @@ TBool CGlxMetadataContainer::IsLocationItem() { //if its location item - enable the delete option - if(ListBox()->CurrentItemIndex()== ELocationItem) + if (iItemMediaList->Count() && ListBox()->CurrentItemIndex() + == ELocationItem) { const TGlxMedia& item = iItemMediaList->Item(0); TCoordinate coordinate; - if(item.GetCoordinate(coordinate)) - { - return EFalse; - } - return ETrue; + if (item.GetCoordinate(coordinate)) + { + return EFalse; + } + return ETrue; } //return ETrue to dim the item - return ETrue; + return ETrue; } //----------------------------------------------------------------------------- @@ -943,12 +947,17 @@ //generic medialist for the item for all the attributes required other than tags and albums. if(aList == iItemMediaList) { - // Loop untill it checks for all the avialable attributes - for (TInt i = aAttributes.Count() - 1; i >= 0 ; i--) - { - //set attributes to the items in the container - SetAttributesL(aAttributes[i]); - } + // Loop untill it checks for all the avialable attributes + for (TInt i = aAttributes.Count() - 1; i >= 0; i--) + { + //set attributes to the items in the container + SetAttributesL(aAttributes[i]); + } + if (iRenameCompleted) + { + iRenameCompleted = EFalse; + iAvkonAppUi->ProcessCommandL(EGlxCmdRenameCompleted); + } } //updation of tags and albums list based on the medialist callback. if(aList == iTagMediaList || aList == iAlbumMediaList) @@ -1013,7 +1022,7 @@ TGlxMedia item = iItemMediaList->Item(0); CGlxUStringConverter* stringConverter = CGlxUStringConverter::NewL(); CleanupStack::PushL(stringConverter ); - for(TInt index = 0; index <= 9; index++) + for(TInt index = 0; index <= ElicenseItem ; index++) { HBufC* string = NULL; @@ -1053,6 +1062,12 @@ stringConverter->AsStringL(item, KGlxMediaGeneralDimensions,0, string ); } + else if(index == ElicenseItem) + { + // If an item is DRM protected, License field in details + // should display "View Details" + string = StringLoader::LoadL(R_GLX_METADATA_VIEW_OPTIONS_VIEW); + } else { //no implementation @@ -1061,10 +1076,10 @@ { iTextSetter.Copy(KGlxTextSetter); iTextSetter.Append(*string); - } - EditItemL(index,EFalse); - delete string; - string = NULL; + } + CleanupStack::PushL( string ); + EditItemL(index,EFalse); + CleanupStack::PopAndDestroy(string ); } CleanupStack::PopAndDestroy(stringConverter ); } @@ -1082,18 +1097,6 @@ ListBox()->ItemDrawer()->ColumnData()->SetMarqueeParams (KMarqueeLoopCount, KMarqueeScrollAmount, KMarqueeScrollDelay, KMarqueeScrollInterval); ListBox()->ItemDrawer()->ColumnData()->EnableMarqueeL(ETrue); - - //Fetch the current item index - TInt index = ListBox()->CurrentItemIndex(); - - //Reset the disable marquee flag, so that marquee effect can continue (this is normally reset by - //base class of glxmetaDatadialog::HandlePointerEventL() - ListBox()->ItemDrawer()->ClearFlags(CListItemDrawer::EDisableMarquee); - - //This is the function which actually starts marquee effect. It is anyway being called from base - //implementation of OfferKeyEventL(), but for pointer event, we have to call - //this function - ListBox()->DrawItem(index); } // ---------------------------------------------------------------------------- // HandleCommandCompleteL @@ -1297,21 +1300,22 @@ // --------------------------------------------------------------------------- void CGlxMetadataContainer::RefreshMediaListL() { - TRACER("CGlxMetadataContainer::RefreshMediaList()"); - if(iItemMediaList) - { - iItemMediaList->RemoveContext(iMainListAttributecontext); - iItemMediaList->RemoveMediaListObserver(this); - iItemMediaList->Close(); - iItemMediaList = NULL; - if( iMainListAttributecontext ) - { - delete iMainListAttributecontext; - iMainListAttributecontext = NULL; - } - CreateMediaListForSelectedItemL(ETrue); - } - } + TRACER("CGlxMetadataContainer::RefreshMediaList()"); + if (iItemMediaList) + { + iItemMediaList->RemoveContext(iMainListAttributecontext); + iItemMediaList->RemoveMediaListObserver(this); + iItemMediaList->Close(); + iItemMediaList = NULL; + if (iMainListAttributecontext) + { + delete iMainListAttributecontext; + iMainListAttributecontext = NULL; + } + CreateMediaListForSelectedItemL(ETrue); + } + iRenameCompleted = ETrue; + } // --------------------------------------------------------------------------- // Completes the active object causing a call from the active scheduler to RunL() diff -r 6b87b143d312 -r 71da52165949 photosgallery/viewframework/views/metadatadialog/src/glxmetadatadialog.cpp --- a/photosgallery/viewframework/views/metadatadialog/src/glxmetadatadialog.cpp Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/viewframework/views/metadatadialog/src/glxmetadatadialog.cpp Fri Mar 12 15:42:44 2010 +0200 @@ -470,20 +470,7 @@ const TPointerEvent& aPointerEvent) { TRACER("CGlxMetadataDialog::HandlePointerEventL"); - - //This has to be called first, as base class implementation sets the flag of settings dialog with EDisableMarquee CCoeControl::HandlePointerEventL( aPointerEvent ); - - //After the above call we can call our implementation to reset the marque flag and start marqueeing if needed - if(aPointerEvent.iType == TPointerEvent::EButton1Down - || aPointerEvent.iType == TPointerEvent::EButton2Down - || aPointerEvent.iType == TPointerEvent::EButton3Down - || aPointerEvent.iType == TPointerEvent::EDrag) - { - //This has to done at every above mentioned event, since the disable marquee flag is set by base implementation, - //forcing us the need to reset it everytime. - iContainer->EnableMarqueingL(); - } } // --------------------------------------------------------------------------- diff -r 6b87b143d312 -r 71da52165949 photosgallery/viewframework/views/viewbase/inc/glxviewbase.h --- a/photosgallery/viewframework/views/viewbase/inc/glxviewbase.h Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/viewframework/views/viewbase/inc/glxviewbase.h Fri Mar 12 15:42:44 2010 +0200 @@ -57,7 +57,7 @@ /** * Constructor */ - IMPORT_C CGlxViewBase(TBool aSyncActivation = EFalse); + IMPORT_C CGlxViewBase(TBool aSyncActivation = ETrue); /** * Destructor. diff -r 6b87b143d312 -r 71da52165949 photosgallery/viewframework/views/zoomview/src/glxzoomcontrol.cpp --- a/photosgallery/viewframework/views/zoomview/src/glxzoomcontrol.cpp Fri Feb 19 22:51:01 2010 +0200 +++ b/photosgallery/viewframework/views/zoomview/src/glxzoomcontrol.cpp Fri Mar 12 15:42:44 2010 +0200 @@ -832,26 +832,26 @@ GLX_LOG_INFO1("_PHOTOS_LOG_: void CGlxZoomControl::HandleGestureL Code : %d", code); // Todo: This switch should go into the event handler. - switch (code) - { - case EGestureDrag: - iEventHandler->HandleDragEvent(aEvent); - break; - case EGestureTap: - iEventHandler->HandleSingleTap(aEvent); - break; - case EGesturePinch: - iEventHandler->HandlePinchEventL(aEvent); - break; - case EGestureDoubleTap: - iEventHandler->HandleDoubleTap(aEvent); - break; - case EGestureReleased: - iEventHandler->HandleGestureReleased(aEvent); - break; - default : - break; - } + switch (code) + { + case EGestureDrag: + iEventHandler->HandleDragEvent(aEvent); + break; + case EGestureTap: + iEventHandler->HandleSingleTap(aEvent); + break; + case EGesturePinch: + iEventHandler->HandlePinchEventL(aEvent); + break; + case EGestureDoubleTap: + iEventHandler->HandleDoubleTap(aEvent); + break; + case EGestureReleased: + iEventHandler->HandleGestureReleased(aEvent); + break; + default : + break; + } iEventHandler->SetPreviousEventCode(code); }