# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1271419126 -10800 # Node ID 99ad1390cd33c8490596dfd021580c87d59a9004 # Parent 74c9f037fd5d1c709449129dfb6d22f74b4d4f55 Revision: 201011 Kit: 201015 diff -r 74c9f037fd5d -r 99ad1390cd33 commonui/bwins/glxcommonuiu.def --- a/commonui/bwins/glxcommonuiu.def Fri Mar 19 09:28:59 2010 +0200 +++ b/commonui/bwins/glxcommonuiu.def Fri Apr 16 14:58:46 2010 +0300 @@ -24,4 +24,5 @@ ?SetToViewMode@CGlxNavigationalState@@QAEXXZ @ 23 NONAME ABSENT ; void CGlxNavigationalState::SetToViewMode(void) ?StateLC@CGlxNavigationalState@@QBEPAVCMPXCollectionPath@@XZ @ 24 NONAME ABSENT ; class CMPXCollectionPath * CGlxNavigationalState::StateLC(void) const ?ViewingMode@CGlxNavigationalState@@QAE?AW4TViewingMode@NGlxNavigationalState@@XZ @ 25 NONAME ABSENT ; enum NGlxNavigationalState::TViewingMode CGlxNavigationalState::ViewingMode(void) + ?RetrieveL@GlxAttributeRetriever@@SAHABVMGlxFetchContext@@AAVMGlxMediaList@@H@Z @ 26 NONAME ; int GlxAttributeRetriever::RetrieveL(class MGlxFetchContext const &, class MGlxMediaList &, int) diff -r 74c9f037fd5d -r 99ad1390cd33 commonui/eabi/glxcommonuiu.def --- a/commonui/eabi/glxcommonuiu.def Fri Mar 19 09:28:59 2010 +0200 +++ b/commonui/eabi/glxcommonuiu.def Fri Apr 16 14:58:46 2010 +0300 @@ -11,8 +11,11 @@ _ZN21CGlxResolutionUtility14RemoveObserverER28MGlxResolutionChangeObserver @ 10 NONAME _ZN21CGlxResolutionUtility5CloseEv @ 11 NONAME _ZN21CGlxResolutionUtility9InstanceLEv @ 12 NONAME - _ZN22NGlxZoomStatePublisher13PublishStateLEi @ 13 NONAME - _ZNK21CGlxResolutionUtility10ScreenSizeEv @ 14 NONAME - _ZNK21CGlxResolutionUtility12PixelsToPossERKf @ 15 NONAME - _ZNK21CGlxResolutionUtility12PossToPixelsERKf @ 16 NONAME + _ZN21GlxAttributeRetriever9RetrieveLERK16MGlxFetchContextR13MGlxMediaListi @ 13 NONAME + _ZN22NGlxZoomStatePublisher13PublishStateLEi @ 14 NONAME + _ZNK21CGlxResolutionUtility10ScreenSizeEv @ 15 NONAME + _ZNK21CGlxResolutionUtility12PixelsToPossERKf @ 16 NONAME + _ZNK21CGlxResolutionUtility12PossToPixelsERKf @ 17 NONAME + _ZTI33CGlxSynchronousAttributeRetriever @ 18 NONAME + _ZTV33CGlxSynchronousAttributeRetriever @ 19 NONAME diff -r 74c9f037fd5d -r 99ad1390cd33 commonui/group/glxcommonui.mmp --- a/commonui/group/glxcommonui.mmp Fri Mar 19 09:28:59 2010 +0200 +++ b/commonui/group/glxcommonui.mmp Fri Apr 16 14:58:46 2010 +0300 @@ -36,7 +36,7 @@ SYSTEMINCLUDE ../../inc SYSTEMINCLUDE ../../commonutilities/common/inc - +SYSTEMINCLUDE ../../ui/uiengine/medialists/inc USERINCLUDE ../inc @@ -45,6 +45,7 @@ SOURCE glxresolutionmanager.cpp SOURCE glxresolutionutility.cpp SOURCE glxzoomstatepublisher.cpp +SOURCE glxattributeretriever.cpp LIBRARY bafl.lib LIBRARY efsrv.lib diff -r 74c9f037fd5d -r 99ad1390cd33 commonui/inc/glxattributeretriever.h --- a/commonui/inc/glxattributeretriever.h Fri Mar 19 09:28:59 2010 +0200 +++ b/commonui/inc/glxattributeretriever.h Fri Apr 16 14:58:46 2010 +0300 @@ -38,7 +38,7 @@ * @ingroup mlm_media_list_manager_design * @lib glxuiutilities.lib */ -NONSHARABLE_CLASS( GlxAttributeRetriever ) +class GlxAttributeRetriever { public: /** diff -r 74c9f037fd5d -r 99ad1390cd33 commonui/src/glxattributeretriever.cpp --- a/commonui/src/glxattributeretriever.cpp Fri Mar 19 09:28:59 2010 +0200 +++ b/commonui/src/glxattributeretriever.cpp Fri Apr 16 14:58:46 2010 +0300 @@ -19,13 +19,11 @@ #include "glxattributeretriever.h" -#include -#include -#include -#include +#include +#include #include #include -#include + #include #include @@ -33,11 +31,8 @@ #include #include #include -#include -#include #include #include -#include @@ -152,80 +147,6 @@ }; /** - * This class displays a wait dialog and blocks until all requested metadata has been retrieved. - */ -class CGlxWaitDialogAttributeRetriever : public CBase, - public MProgressDialogCallback, - public MGlxBlockingAttributeRetriever, - public MGlxAttributeRetrieverObserver - { -public: - static CGlxWaitDialogAttributeRetriever* NewLC(); - -public: // from MGlxBlockingAttributeRetriever - /** - * See @ref MGlxBlockingAttributeRetriever::RetrieveL - */ - TInt RetrieveL(const MGlxFetchContext* aContext, MGlxMediaList* aList); - -private: // from MGlxAttributeRetrieverObserver - /** - * See @ref MGlxAttributeRetrieverObserver::AttributeRetrievalCompleteL - */ - void AttributeRetrievalCompleteL(TInt aError); - -public: // From MProgressDialogCallback - void DialogDismissedL(TInt aButtonId); - -private: - /** - * Constructor - */ - CGlxWaitDialogAttributeRetriever(); - - /** - * Destructor - */ - ~CGlxWaitDialogAttributeRetriever(); - - /** - * Second stage constructor - */ - void ConstructL(); - -private: - /** - * Loads the resource file for this dll - */ - void AddResourceFileL(); - - /** - * Unloads the resource file for this dll - */ - void RemoveResourceFile(); - -private: - /// App environment used for accessing resource file (not owned) - CCoeEnv* iCoeEnv; - - /// Wait dialog - CAknWaitDialog* iWaitDialog; - - /// Resource file offset - TInt iResourceOffset; - - /** - * Attribute retriever (owned) - */ - CGlxAttributeRetriever* iAttributeRetriever; - - /** - * Attribute retrieval error - */ - TInt iError; - }; - -/** * This class blocks until all requested metadata has been retrieved */ class CGlxSynchronousAttributeRetriever : public CBase, @@ -284,26 +205,12 @@ // ----------------------------------------------------------------------------- // EXPORT_C TInt GlxAttributeRetriever::RetrieveL(const MGlxFetchContext& aContext, - MGlxMediaList& aList, TBool aShowDialog) + MGlxMediaList& aList, TBool /*aShowDialog*/) { - MGlxBlockingAttributeRetriever* retriever = NULL; - if (aShowDialog) - { - retriever = CGlxWaitDialogAttributeRetriever::NewLC(); - } - else - { - retriever = CGlxSynchronousAttributeRetriever::NewLC(); - } + CGlxSynchronousAttributeRetriever* retriever = NULL; + retriever = CGlxSynchronousAttributeRetriever::NewLC(); TInt err = retriever->RetrieveL(&aContext, &aList); - /** - * This will cause a code scanner warning, but it is not possible to do - * CleanupStack::PopAndDestroy(retriever) because the pointer pushed - * onto the cleanup stack was either of class CGlxWaitDialogAttributeRetriever - * or a CGlxSynchronousAttributeRetriever and the object 'retriever' is of - * class MGlxBlockingAttributeRetriever - */ - CleanupStack::PopAndDestroy(); + CleanupStack::PopAndDestroy(retriever); return err; } @@ -507,135 +414,6 @@ } // ----------------------------------------------------------------------------- -// CGlxWaitDialogAttributeRetriever -// ----------------------------------------------------------------------------- -// - -// ----------------------------------------------------------------------------- -// CGlxWaitDialogAttributeRetriever::NewLC -// ----------------------------------------------------------------------------- -// -CGlxWaitDialogAttributeRetriever* CGlxWaitDialogAttributeRetriever::NewLC() - { - CGlxWaitDialogAttributeRetriever* self = new (ELeave) CGlxWaitDialogAttributeRetriever(); - CleanupStack::PushL(self); - self->ConstructL(); - return self; - } - -// ----------------------------------------------------------------------------- -// CGlxWaitDialogAttributeRetriever::RetrieveL -// ----------------------------------------------------------------------------- -// -TInt CGlxWaitDialogAttributeRetriever::RetrieveL(const MGlxFetchContext* aContext, MGlxMediaList* aList) - { - // Load the resource file for this dll containing the wait dialog - AddResourceFileL(); - - // prepare the wait dialog - iWaitDialog = new( ELeave ) CAknWaitDialog(reinterpret_cast(&iWaitDialog)); - iWaitDialog->PrepareLC(R_GLX_WAIT_NOTE_BLOCKING); // Pushes a point to a CEikDialog onto the CleanupStack. RunLD Pops it. - - iWaitDialog->SetCallback(this); - - // Load string for dialog - HBufC* title = StringLoader::LoadLC( R_GLX_PROGRESS_GENERAL ); - iWaitDialog->SetTextL(*title); - CleanupStack::PopAndDestroy(title); - - // The cancel key is specified in the resource - CEikButtonGroupContainer* cba = CEikButtonGroupContainer::Current(); - cba->AddCommandSetToStackL(R_AVKON_SOFTKEYS_CANCEL); - - iAttributeRetriever->RetrieveL(aContext, aList); - iWaitDialog->RunLD(); // starts another active scheduler and blocks - return iError; - } - -// ----------------------------------------------------------------------------- -// CGlxWaitDialogAttributeRetriever::AttributeRetrievalComplete -// ----------------------------------------------------------------------------- -// -void CGlxWaitDialogAttributeRetriever::AttributeRetrievalCompleteL(TInt aError) - { - iError = aError; - iWaitDialog->ProcessFinishedL(); - } - -// ----------------------------------------------------------------------------- -// CGlxWaitDialogAttributeRetriever::DialogDismissedL -// ----------------------------------------------------------------------------- -// -void CGlxWaitDialogAttributeRetriever::DialogDismissedL(TInt aButtonId) - { - if (aButtonId == EEikBidCancel) - { - iAttributeRetriever->CancelRetrieve(); - iError = KErrCancel; - } - } - -// ----------------------------------------------------------------------------- -// Constructor -// ----------------------------------------------------------------------------- -// -CGlxWaitDialogAttributeRetriever::CGlxWaitDialogAttributeRetriever() - { - iCoeEnv = CCoeEnv::Static(); - } - -// ----------------------------------------------------------------------------- -// Destructor -// ----------------------------------------------------------------------------- -// -CGlxWaitDialogAttributeRetriever::~CGlxWaitDialogAttributeRetriever() - { - RemoveResourceFile(); - delete iAttributeRetriever; - } - -// ----------------------------------------------------------------------------- -// CGlxWaitDialogAttributeRetriever::ConstructL -// ----------------------------------------------------------------------------- -// -void CGlxWaitDialogAttributeRetriever::ConstructL() - { - iAttributeRetriever = new (ELeave) CGlxAttributeRetriever(*this); - } - -// ----------------------------------------------------------------------------- -// AddResourceFileL -// ----------------------------------------------------------------------------- -// -void CGlxWaitDialogAttributeRetriever::AddResourceFileL() - { - if (!iResourceOffset) // Lazy construction - ensure that this is only run once - { - GLX_LOG_INFO("Adding attribute retriever resource file"); - TParse parse; - parse.Set(KGlxUiUtilitiesResource, &KDC_APP_RESOURCE_DIR, NULL); - TFileName resourceFile; - resourceFile.Append(parse.FullName()); - CGlxResourceUtilities::GetResourceFilenameL(resourceFile); - iResourceOffset = iCoeEnv->AddResourceFileL(resourceFile); - } - } - -// ----------------------------------------------------------------------------- -// RemoveResourceFile -// ----------------------------------------------------------------------------- -// -void CGlxWaitDialogAttributeRetriever::RemoveResourceFile() - { - if (iResourceOffset) // Check that the resource has been loaded - { - GLX_LOG_INFO("Removing attribute retriever resource file"); - iCoeEnv->DeleteResourceFile( iResourceOffset ); - iResourceOffset = 0; - } - } - -// ----------------------------------------------------------------------------- // CGlxSynchronousAttributeRetriever // ----------------------------------------------------------------------------- // diff -r 74c9f037fd5d -r 99ad1390cd33 commonutilities/imageviewer/inc/glximageviewermanager.h --- a/commonutilities/imageviewer/inc/glximageviewermanager.h Fri Mar 19 09:28:59 2010 +0200 +++ b/commonutilities/imageviewer/inc/glximageviewermanager.h Fri Apr 16 14:58:46 2010 +0300 @@ -43,7 +43,7 @@ /** * Singleton constructor. */ - static CGlxImageViewerManager* InstanceL(); + IMPORT_C static CGlxImageViewerManager* InstanceL(); public: IMPORT_C HBufC* ImageUri(); diff -r 74c9f037fd5d -r 99ad1390cd33 data/Albums_default.png Binary file data/Albums_default.png has changed diff -r 74c9f037fd5d -r 99ad1390cd33 data/Albums_selected.png Binary file data/Albums_selected.png has changed diff -r 74c9f037fd5d -r 99ad1390cd33 data/All_default.png Binary file data/All_default.png has changed diff -r 74c9f037fd5d -r 99ad1390cd33 data/All_selected.png Binary file data/All_selected.png has changed diff -r 74c9f037fd5d -r 99ad1390cd33 data/Thumbs.db Binary file data/Thumbs.db has changed diff -r 74c9f037fd5d -r 99ad1390cd33 data/camera_default.png Binary file data/camera_default.png has changed diff -r 74c9f037fd5d -r 99ad1390cd33 data/camera_selected.png Binary file data/camera_selected.png has changed diff -r 74c9f037fd5d -r 99ad1390cd33 data/corrupt.svg --- a/data/corrupt.svg Fri Mar 19 09:28:59 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,104 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff -r 74c9f037fd5d -r 99ad1390cd33 data/fullscreentogrid.fxml --- a/data/fullscreentogrid.fxml Fri Mar 19 09:28:59 2010 +0200 +++ b/data/fullscreentogrid.fxml Fri Apr 16 14:58:46 2010 +0300 @@ -2,12 +2,12 @@ -0.3 +0.4 0 1 -1 -1 +1 +1 diff -r 74c9f037fd5d -r 99ad1390cd33 data/gridtofullscreenhide.fxml --- a/data/gridtofullscreenhide.fxml Fri Mar 19 09:28:59 2010 +0200 +++ b/data/gridtofullscreenhide.fxml Fri Apr 16 14:58:46 2010 +0300 @@ -2,36 +2,32 @@ - 0.4 + 0.3 0.0 - 1.0 - 0.0 + 1.0 1 1 - - 0.4 + 0.3 0.0 - 1.0 - 0.0 + 1.0 1 1 - 0.5 0.5 -0.4 +0.3 1.0 -0.75 -0 +1.0 +0.5 diff -r 74c9f037fd5d -r 99ad1390cd33 data/imagestrip.css --- a/data/imagestrip.css Fri Mar 19 09:28:59 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,8 +0,0 @@ -HbGridViewItem::icon{ - left:0un; - top:0un; - right:0un; - bottom:0un; - fixed-width:80px; - fixed-height:80px; -} diff -r 74c9f037fd5d -r 99ad1390cd33 data/ovi_default.png Binary file data/ovi_default.png has changed diff -r 74c9f037fd5d -r 99ad1390cd33 data/ovi_selected.png Binary file data/ovi_selected.png has changed diff -r 74c9f037fd5d -r 99ad1390cd33 data/photos.css --- a/data/photos.css Fri Mar 19 09:28:59 2010 +0200 +++ b/data/photos.css Fri Apr 16 14:58:46 2010 +0300 @@ -1,22 +1,65 @@ -HbGridViewItem::icon:portrait{ +HbGridViewItem[layoutName="GridView"]::icon:portrait{ + left:0un; + top:0un; + right:0un; + bottom:0un; + fixed-width:17.761un; + fixed-height:15.373un; +} + +HbGridViewItem[layoutName="GridView"]::icon:landscape{ left:0un; top:0un; right:0un; bottom:0un; - fixed-width:120px; - fixed-height:120px; + fixed-width:18.9552un; + fixed-height:16.4179un; +} + +HbGridViewItem[layoutName="GridView"]::multiselection-toucharea{ + fixed-width: 17un; + fixed-height: 15un; } -HbGridViewItem::icon:landscape{ - left:0un; - top:0un; +HbGridViewItem[layoutName="ImageStrip"]::icon:portrait{ + left:0px; + top:0px; + right:0un; + bottom:0un; + fixed-width:13.28358un; + fixed-height:11.50546un; +} + +HbGridViewItem[layoutName="ImageStrip"]::icon:landscape{ + left:0px; + top:0px; right:0un; bottom:0un; - fixed-width:128px; - fixed-height:128px; + fixed-width:14.179104un; + fixed-height:12.2811un; +} + +HbListViewItem::icon-1[graphicsSize="Image"]:portrait{ + fixed-height: 13.43283un; + fixed-width: 15.522388un; +} + +HbListViewItem::icon-1[graphicsSize="Image"]:landscape{ + fixed-height: 13.43283un; + fixed-width: 15.522388un; } -HbGridViewItem::multiselection-toucharea{ - fixed-width: 120px; - fixed-height: 120px; +HbListViewItem::selection-icon{ + fixed-height: var(hb-param-graphic-size-primary-medium); + fixed-width: var(hb-param-graphic-size-primary-medium); } + +HbListViewItem::multiselection-toucharea{ + fixed-width: 90.0un; +} + +HbListViewItem::icon-1{ + fixed-height: var(hb-param-graphic-size-function); + fixed-width: var(hb-param-margin-view-bottom); +} + diff -r 74c9f037fd5d -r 99ad1390cd33 engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/inc/glxdatasourcemds.h --- a/engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/inc/glxdatasourcemds.h Fri Mar 19 09:28:59 2010 +0200 +++ b/engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/inc/glxdatasourcemds.h Fri Apr 16 14:58:46 2010 +0300 @@ -247,9 +247,10 @@ TBool iTnRequestInProgress; TInt iTnHandle; TGlxMediaId iMediaId; - +#ifdef _DEBUG TTime iStartTime; TTime iStopTime; +#endif #else CGlxtnThumbnailCreator* iThumbnailCreator; CGlxtnThumbnailDatabase* iThumbnailDatabase; diff -r 74c9f037fd5d -r 99ad1390cd33 engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/inc/glxdatasourcetaskmdsattribute.h --- a/engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/inc/glxdatasourcetaskmdsattribute.h Fri Mar 19 09:28:59 2010 +0200 +++ b/engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/inc/glxdatasourcetaskmdsattribute.h Fri Apr 16 14:58:46 2010 +0300 @@ -156,9 +156,10 @@ * Attributes associated with outstanding queries */ RArray< TGlxQueryAttribute > iQueryAttributes; - +#ifdef _DEBUG TTime iStartTime; - TTime iStopTime; + TTime iStopTime; +#endif }; diff -r 74c9f037fd5d -r 99ad1390cd33 engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/inc/glxdatasourcetaskmdsthumbnail.h --- a/engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/inc/glxdatasourcetaskmdsthumbnail.h Fri Mar 19 09:28:59 2010 +0200 +++ b/engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/inc/glxdatasourcetaskmdsthumbnail.h Fri Apr 16 14:58:46 2010 +0300 @@ -131,9 +131,10 @@ TRequestStatus* iTnRequestStatus; TBool iTnRequestInProgress; - +#ifdef _DEBUG TTime iStartTime; - TTime iStopTime; + TTime iStopTime; +#endif }; #endif // GLXDATASOURCETASKMDSTHUMBNAIL_H_ diff -r 74c9f037fd5d -r 99ad1390cd33 engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcemds.cpp --- a/engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcemds.cpp Fri Mar 19 09:28:59 2010 +0200 +++ b/engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcemds.cpp Fri Apr 16 14:58:46 2010 +0300 @@ -226,6 +226,7 @@ void CGlxDataSourceMde::HandleSessionError(CMdESession& /*aSession*/, TInt /*aError*/ ) { TRACER("CGlxDataSourceMde::HandleSessionError(CMdESession& /*aSession*/, TInt /*aError*/)") + delete iSession; iSession = NULL; iDataSourceReady = EFalse; iSessionOpen = EFalse; @@ -252,14 +253,15 @@ } else if (dynamic_cast< CGlxGetRequest *>(aRequest)) { - _LIT( KFormatTimeStamp, "[%H:%T:%S.%*C5]"); - RDebug::Print(_L("==> CGlxDataSourceMde::CreateTaskL - CGlxDataSourceTaskMdeAttributeMde+")); + GLX_LOG_INFO("==> CGlxDataSourceMde::CreateTaskL - CGlxDataSourceTaskMdeAttributeMde+"); +#ifdef _DEBUG + _LIT( KFormatTimeStamp, "[%H:%T:%S.%*C5]"); TTime time; time.HomeTime(); // Get home time TBuf<32> timeStampBuf; time.FormatL(timeStampBuf, KFormatTimeStamp); RDebug::Print(_L("%S"), &timeStampBuf); - +#endif CleanupStack::PushL(aRequest); CGlxDataSourceTaskMdeAttributeMde* task = new (ELeave) CGlxDataSourceTaskMdeAttributeMde(static_cast(aRequest), aObserver, this); CleanupStack::Pop(aRequest); // now owned by task @@ -280,14 +282,15 @@ } else if (dynamic_cast< CGlxThumbnailRequest *>(aRequest)) { - _LIT( KFormatTimeStamp, "[%H:%T:%S.%*C5]"); - RDebug::Print(_L("==> CGlxDataSourceMde::CreateTaskL - CGlxDataSourceTaskMdeThumbnail+")); + GLX_LOG_INFO("==> CGlxDataSourceMde::CreateTaskL - CGlxDataSourceTaskMdeThumbnail+"); +#ifdef _DEBUG + _LIT( KFormatTimeStamp, "[%H:%T:%S.%*C5]"); TTime time; time.HomeTime(); // Get home time TBuf<32> timeStampBuf; time.FormatL(timeStampBuf, KFormatTimeStamp); RDebug::Print(_L("%S"), &timeStampBuf); - +#endif CleanupStack::PushL(aRequest); CGlxDataSourceTaskMdeThumbnail* task = new (ELeave) CGlxDataSourceTaskMdeThumbnail(static_cast(aRequest), aObserver, this); CleanupStack::Pop(aRequest); // now owned by task @@ -887,7 +890,9 @@ GLX_LOG_INFO("CGlxDataSourceMde::FetchThumbnailL() - Fetch TN attrib - EFullScreenThumbnailSize"); } CThumbnailObjectSource* source = CThumbnailObjectSource::NewLC(request->ThumbnailInfo()->FilePath(), 0); - iStartTime.UniversalTime(); +#ifdef _DEBUG + iStartTime.UniversalTime(); +#endif iTnThumbnailCbId = iTnEngine->GetThumbnailL(*source); iTnRequestInProgress = ETrue; CleanupStack::PopAndDestroy(); @@ -915,9 +920,10 @@ if (iTnThumbnailCbId == aId) { iTnRequestInProgress = EFalse; +#ifdef _DEBUG iStopTime.UniversalTime(); - RDebug::Print(_L("==> S60 TNMan fetch took <%d> us"), (TInt)iStopTime.MicroSecondsFrom(iStartTime).Int64()); - + GLX_LOG_INFO1("==> S60 TNMan fetch took <%d> us", (TInt)iStopTime.MicroSecondsFrom(iStartTime).Int64()); +#endif if (aError == KErrNone && iTnHandle) { if (iTnHandle == KGlxMessageIdBackgroundThumbnail) diff -r 74c9f037fd5d -r 99ad1390cd33 engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcetaskmdsattribute.cpp --- a/engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcetaskmdsattribute.cpp Fri Mar 19 09:28:59 2010 +0200 +++ b/engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcetaskmdsattribute.cpp Fri Apr 16 14:58:46 2010 +0300 @@ -114,9 +114,10 @@ __ASSERT_DEBUG(request->MediaIds().Count() > 0, User::Invariant()); - RDebug::Print(_L("==> CGlxDataSourceTaskMdeAttributeMde::ExecuteRequestL")); - iStartTime.HomeTime(); // Get home time - + GLX_LOG_INFO("==> CGlxDataSourceTaskMdeAttributeMde::ExecuteRequestL"); +#ifdef _DEBUG + iStartTime.HomeTime(); // Get home time +#endif if (request->MediaIds().Count() > 1) { iMediaArray = CMPXMediaArray::NewL(); @@ -1164,13 +1165,14 @@ CMdEQuery* query = iQueries[0]; TInt queryResultsCount = query->Count(); - iStopTime.HomeTime(); // Get home time - RDebug::Print(_L("==> CGlxDataSourceTaskMdeAttributeMde::DoHandleImageVideoQueryCompletedL - queryResultsCount=%d"), queryResultsCount); + GLX_LOG_INFO1("==> CGlxDataSourceTaskMdeAttributeMde::DoHandleImageVideoQueryCompletedL - queryResultsCount=%d", queryResultsCount); +#ifdef _DEBUG + iStopTime.HomeTime(); // Get home time if (queryResultsCount) { - RDebug::Print(_L("==> CGlxDataSourceTaskMdeAttributeMde::DoHandleImageVideoQueryCompletedL took <%d> us"), (TInt)iStopTime.MicroSecondsFrom(iStartTime).Int64()); + GLX_LOG_INFO1("==> CGlxDataSourceTaskMdeAttributeMde::DoHandleImageVideoQueryCompletedL took <%d> us", (TInt)iStopTime.MicroSecondsFrom(iStartTime).Int64()); } - +#endif if( ( queryResultsCount == 1 ) && ( !iMediaArray ) ) { CMdEObject& object = static_cast(query->ResultItem(0)); @@ -1186,11 +1188,10 @@ for (TInt i = 0; i < queryResultsCount; i++) { CMdEObject& object = static_cast(query->ResultItem(i)); - CMPXMedia* entry = CMPXMedia::NewL(); CleanupStack::PushL(entry); - iMediaArray->AppendL(entry); - CleanupStack::Pop(entry); + iMediaArray->AppendL(*entry); + CleanupStack::PopAndDestroy(entry); AddAttributesL(object, (*iMediaArray)[iMediaArray->Count() - 1]); } } diff -r 74c9f037fd5d -r 99ad1390cd33 engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcetaskmdsthumbnail.cpp --- a/engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcetaskmdsthumbnail.cpp Fri Mar 19 09:28:59 2010 +0200 +++ b/engine/collectionframework/datasource/plugins/glxdatasourcemde2.5/src/glxdatasourcetaskmdsthumbnail.cpp Fri Apr 16 14:58:46 2010 +0300 @@ -160,10 +160,10 @@ TGlxThumbnailRequest tnReq; request->ThumbnailRequest(tnReq); - +#ifdef _DEBUG RDebug::Print(_L("==> CGlxDataSourceTaskMdeThumbnail::ExecuteRequestL - FetchThumbnailL(Id=%d), W(%d), H(%d)"), request->ItemId().Value(), tnReq.iSizeClass.iWidth, tnReq.iSizeClass.iHeight); iStartTime.HomeTime(); // Get home time - +#endif #ifdef USE_S60_TNM if(request->ThumbnailInfo()) { @@ -241,8 +241,10 @@ { TRACER("CGlxDataSourceTaskMdeThumbnail::HandleThumbnailFetchCompleteL()") __ASSERT_DEBUG(dynamic_cast(iRequest), Panic(EGlxPanicLogicError)); - iStopTime.HomeTime(); // Get home time +#ifdef _DEBUG + iStopTime.HomeTime(); // Get home time RDebug::Print(_L("==> ThumbnailFetchComplete <%d> us"), (TInt)iStopTime.MicroSecondsFrom(iStartTime).Int64()); +#endif CGlxThumbnailRequest* req = static_cast(iRequest); delete iResponse; iResponse = NULL; diff -r 74c9f037fd5d -r 99ad1390cd33 engine/collectionframework/plugins/glxcollectionpluginalbums/src/glxcollectionpluginalbums.cpp --- a/engine/collectionframework/plugins/glxcollectionpluginalbums/src/glxcollectionpluginalbums.cpp Fri Mar 19 09:28:59 2010 +0200 +++ b/engine/collectionframework/plugins/glxcollectionpluginalbums/src/glxcollectionpluginalbums.cpp Fri Apr 16 14:58:46 2010 +0300 @@ -318,6 +318,8 @@ case KGlxCollectionAlbumContentsLevel: { filterProperties.iSortDirection = EGlxFilterSortDirectionDescending; + filterProperties.iSortOrder = EGlxFilterSortOrderCaptureDate; + break; } case KGlxCollectionAlbumContentsFSLevel: { diff -r 74c9f037fd5d -r 99ad1390cd33 engine/collectionframework/plugins/tagcollectionplugin/src/glxcollectionplugintags.cpp --- a/engine/collectionframework/plugins/tagcollectionplugin/src/glxcollectionplugintags.cpp Fri Mar 19 09:28:59 2010 +0200 +++ b/engine/collectionframework/plugins/tagcollectionplugin/src/glxcollectionplugintags.cpp Fri Apr 16 14:58:46 2010 +0300 @@ -344,6 +344,8 @@ case KGlxCollectionTagContentsLevel: { filterProperties.iSortDirection = EGlxFilterSortDirectionDescending; + filterProperties.iSortOrder = EGlxFilterSortOrderCaptureDate; + break; } case KGlxCollectionTagFSContentsLevel: { diff -r 74c9f037fd5d -r 99ad1390cd33 loggers/loggerqt/src/glxperformancelog.cpp --- a/loggers/loggerqt/src/glxperformancelog.cpp Fri Mar 19 09:28:59 2010 +0200 +++ b/loggers/loggerqt/src/glxperformancelog.cpp Fri Apr 16 14:58:46 2010 +0300 @@ -28,8 +28,9 @@ if( GlxPerformanceLog::mLogFile.isOpen() == FALSE) { GlxPerformanceLog::mLogFile.setFileName("glxperlog.txt"); QDir::setCurrent("c:\\data\\"); - GlxPerformanceLog::mLogFile.open(QIODevice::Append); - GlxPerformanceLog::mLogFile.setTextModeEnabled(TRUE); + if(GlxPerformanceLog::mLogFile.open(QIODevice::Append)) { + GlxPerformanceLog::mLogFile.setTextModeEnabled(TRUE); + } } } diff -r 74c9f037fd5d -r 99ad1390cd33 main/al/DLA.h --- a/main/al/DLA.h Fri Mar 19 09:28:59 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1040 +0,0 @@ -/* -* 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 "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ -/*DLA.h*/ -#ifndef __DLA__ -#define __DLA__ - -#define DEFAULT_TRIM_THRESHOLD ((size_t)4U * (size_t)1024U) - -#define __SYMBIAN__ -#define MSPACES 0 -#define HAVE_MORECORE 1 -#define MORECORE_CONTIGUOUS 1 -#define HAVE_MMAP 0 -#define HAVE_MREMAP 0 -#define DEFAULT_GRANULARITY (4096U) -#define FOOTERS 0 -#define USE_LOCKS 0 -#define INSECURE 1 -#define NO_MALLINFO 0 - -#define LACKS_SYS_TYPES_H -#ifndef LACKS_SYS_TYPES_H -#include /* For size_t */ -#else -#ifndef _SIZE_T_DECLARED -typedef unsigned int size_t; -#define _SIZE_T_DECLARED -#endif -#endif /* LACKS_SYS_TYPES_H */ - -/* The maximum possible size_t value has all bits set */ -#define MAX_SIZE_T (~(size_t)0) - -#ifndef ONLY_MSPACES - #define ONLY_MSPACES 0 -#endif /* ONLY_MSPACES */ - -#ifndef MSPACES - #if ONLY_MSPACES - #define MSPACES 1 - #else /* ONLY_MSPACES */ - #define MSPACES 0 - #endif /* ONLY_MSPACES */ -#endif /* MSPACES */ - -#ifndef MALLOC_ALIGNMENT - #define MALLOC_ALIGNMENT ((size_t)8U) -#endif /* MALLOC_ALIGNMENT */ - -#ifndef FOOTERS - #define FOOTERS 0 -#endif /* FOOTERS */ - -#ifndef ABORT -// #define ABORT abort() - #define ABORT User::Invariant()// redefined so euser isn't dependant on oe -#endif /* ABORT */ - -#ifndef ABORT_ON_ASSERT_FAILURE - #define ABORT_ON_ASSERT_FAILURE 1 -#endif /* ABORT_ON_ASSERT_FAILURE */ - -#ifndef PROCEED_ON_ERROR - #define PROCEED_ON_ERROR 0 -#endif /* PROCEED_ON_ERROR */ - -#ifndef USE_LOCKS - #define USE_LOCKS 0 -#endif /* USE_LOCKS */ - -#ifndef INSECURE - #define INSECURE 0 -#endif /* INSECURE */ - -#ifndef HAVE_MMAP - #define HAVE_MMAP 1 -#endif /* HAVE_MMAP */ - -#ifndef MMAP_CLEARS - #define MMAP_CLEARS 1 -#endif /* MMAP_CLEARS */ - -#ifndef HAVE_MREMAP - #ifdef linux - #define HAVE_MREMAP 1 - #else /* linux */ - #define HAVE_MREMAP 0 - #endif /* linux */ -#endif /* HAVE_MREMAP */ - -#ifndef MALLOC_FAILURE_ACTION - //#define MALLOC_FAILURE_ACTION errno = ENOMEM; - #define MALLOC_FAILURE_ACTION ; -#endif /* MALLOC_FAILURE_ACTION */ - -#ifndef HAVE_MORECORE - #if ONLY_MSPACES - #define HAVE_MORECORE 1 /*AMOD: has changed */ - #else /* ONLY_MSPACES */ - #define HAVE_MORECORE 1 - #endif /* ONLY_MSPACES */ -#endif /* HAVE_MORECORE */ - -#if !HAVE_MORECORE - #define MORECORE_CONTIGUOUS 0 -#else /* !HAVE_MORECORE */ - #ifndef MORECORE - #define MORECORE DLAdjust - #endif /* MORECORE */ - #ifndef MORECORE_CONTIGUOUS - #define MORECORE_CONTIGUOUS 0 - #endif /* MORECORE_CONTIGUOUS */ -#endif /* !HAVE_MORECORE */ - -#ifndef DEFAULT_GRANULARITY - #if MORECORE_CONTIGUOUS - #define DEFAULT_GRANULARITY 4096 /* 0 means to compute in init_mparams */ - #else /* MORECORE_CONTIGUOUS */ - #define DEFAULT_GRANULARITY ((size_t)64U * (size_t)1024U) - #endif /* MORECORE_CONTIGUOUS */ -#endif /* DEFAULT_GRANULARITY */ - -#ifndef DEFAULT_TRIM_THRESHOLD - #ifndef MORECORE_CANNOT_TRIM - #define DEFAULT_TRIM_THRESHOLD ((size_t)2U * (size_t)1024U * (size_t)1024U) - #else /* MORECORE_CANNOT_TRIM */ - #define DEFAULT_TRIM_THRESHOLD MAX_SIZE_T - #endif /* MORECORE_CANNOT_TRIM */ -#endif /* DEFAULT_TRIM_THRESHOLD */ - -#ifndef DEFAULT_MMAP_THRESHOLD - #if HAVE_MMAP - #define DEFAULT_MMAP_THRESHOLD ((size_t)256U * (size_t)1024U) - #else /* HAVE_MMAP */ - #define DEFAULT_MMAP_THRESHOLD MAX_SIZE_T - #endif /* HAVE_MMAP */ -#endif /* DEFAULT_MMAP_THRESHOLD */ - -#ifndef USE_BUILTIN_FFS - #define USE_BUILTIN_FFS 0 -#endif /* USE_BUILTIN_FFS */ - -#ifndef USE_DEV_RANDOM - #define USE_DEV_RANDOM 0 -#endif /* USE_DEV_RANDOM */ - -#ifndef NO_MALLINFO - #define NO_MALLINFO 0 -#endif /* NO_MALLINFO */ -#ifndef MALLINFO_FIELD_TYPE - #define MALLINFO_FIELD_TYPE size_t -#endif /* MALLINFO_FIELD_TYPE */ - -/* - mallopt tuning options. SVID/XPG defines four standard parameter - numbers for mallopt, normally defined in malloc.h. None of these - are used in this malloc, so setting them has no effect. But this - malloc does support the following options. -*/ - -#define M_TRIM_THRESHOLD (-1) -#define M_GRANULARITY (-2) -#define M_MMAP_THRESHOLD (-3) - -#if !NO_MALLINFO -/* - This version of malloc supports the standard SVID/XPG mallinfo - routine that returns a struct containing usage properties and - statistics. It should work on any system that has a - /usr/include/malloc.h defining struct mallinfo. The main - declaration needed is the mallinfo struct that is returned (by-copy) - by mallinfo(). The malloinfo struct contains a bunch of fields that - are not even meaningful in this version of malloc. These fields are - are instead filled by mallinfo() with other numbers that might be of - interest. - - HAVE_USR_INCLUDE_MALLOC_H should be set if you have a - /usr/include/malloc.h file that includes a declaration of struct - mallinfo. If so, it is included; else a compliant version is - declared below. These must be precisely the same for mallinfo() to - work. The original SVID version of this struct, defined on most - systems with mallinfo, declares all fields as ints. But some others - define as unsigned long. If your system defines the fields using a - type of different width than listed here, you MUST #include your - system version and #define HAVE_USR_INCLUDE_MALLOC_H. -*/ - -/* #define HAVE_USR_INCLUDE_MALLOC_H */ - -#ifdef HAVE_USR_INCLUDE_MALLOC_H -#include "/usr/include/malloc.h" -#else /* HAVE_USR_INCLUDE_MALLOC_H */ - -struct mallinfo { - MALLINFO_FIELD_TYPE arena; /* non-mmapped space allocated from system */ - MALLINFO_FIELD_TYPE ordblks; /* number of free chunks */ - MALLINFO_FIELD_TYPE smblks; /* always 0 */ - MALLINFO_FIELD_TYPE hblks; /* always 0 */ - MALLINFO_FIELD_TYPE hblkhd; /* space in mmapped regions */ - MALLINFO_FIELD_TYPE usmblks; /* maximum total allocated space */ - MALLINFO_FIELD_TYPE fsmblks; /* always 0 */ - MALLINFO_FIELD_TYPE uordblks; /* total allocated space */ - MALLINFO_FIELD_TYPE fordblks; /* total free space */ - MALLINFO_FIELD_TYPE keepcost; /* releasable (via malloc_trim) space */ - MALLINFO_FIELD_TYPE cellCount;/* Number of chunks allocated*/ -}; - -#endif /* HAVE_USR_INCLUDE_MALLOC_H */ -#endif /* NO_MALLINFO */ - -#if MSPACES - typedef void* mspace; -#endif /* MSPACES */ - -#if 0 - -#include /* for printing in malloc_stats */ - -#ifndef LACKS_ERRNO_H - #include /* for MALLOC_FAILURE_ACTION */ -#endif /* LACKS_ERRNO_H */ - -#if FOOTERS - #include /* for magic initialization */ -#endif /* FOOTERS */ - -#ifndef LACKS_STDLIB_H - #include /* for abort() */ -#endif /* LACKS_STDLIB_H */ - -#ifdef DEBUG - #if ABORT_ON_ASSERT_FAILURE - #define assert(x) if(!(x)) ABORT - #else /* ABORT_ON_ASSERT_FAILURE */ - #include - #endif /* ABORT_ON_ASSERT_FAILURE */ -#else /* DEBUG */ - #define assert(x) -#endif /* DEBUG */ - -#ifndef LACKS_STRING_H - #include /* for memset etc */ -#endif /* LACKS_STRING_H */ - -#if USE_BUILTIN_FFS - #ifndef LACKS_STRINGS_H - #include /* for ffs */ - #endif /* LACKS_STRINGS_H */ -#endif /* USE_BUILTIN_FFS */ - -#if HAVE_MMAP - #ifndef LACKS_SYS_MMAN_H - #include /* for mmap */ - #endif /* LACKS_SYS_MMAN_H */ - #ifndef LACKS_FCNTL_H - #include - #endif /* LACKS_FCNTL_H */ -#endif /* HAVE_MMAP */ - -#if HAVE_MORECORE - #ifndef LACKS_UNISTD_H - #include /* for sbrk */ - extern void* sbrk(size_t); - #else /* LACKS_UNISTD_H */ - #if !defined(__FreeBSD__) && !defined(__OpenBSD__) && !defined(__NetBSD__) - extern void* sbrk(ptrdiff_t); - /*Amod sbrk is not defined in WIN32 need to check in symbian*/ - #endif /* FreeBSD etc */ - #endif /* LACKS_UNISTD_H */ -#endif /* HAVE_MORECORE */ - -#endif - -#define assert(x) ASSERT(x) - -/*AMOD: For malloc_getpagesize*/ -#if 0 // replaced with GET_PAGE_SIZE() defined in heap.cpp -#ifndef WIN32 - #ifndef malloc_getpagesize - #ifdef _SC_PAGESIZE /* some SVR4 systems omit an underscore */ - #ifndef _SC_PAGE_SIZE - #define _SC_PAGE_SIZE _SC_PAGESIZE - #endif - #endif - #ifdef _SC_PAGE_SIZE - #define malloc_getpagesize sysconf(_SC_PAGE_SIZE) - #else - #if defined(BSD) || defined(DGUX) || defined(HAVE_GETPAGESIZE) - extern size_t getpagesize(); - #define malloc_getpagesize getpagesize() - #else - #ifdef WIN32 /* use supplied emulation of getpagesize */ - #define malloc_getpagesize getpagesize() - #else - #ifndef LACKS_SYS_PARAM_H - #include - #endif - #ifdef EXEC_PAGESIZE - #define malloc_getpagesize EXEC_PAGESIZE - #else - #ifdef NBPG - #ifndef CLSIZE - #define malloc_getpagesize NBPG - #else - #define malloc_getpagesize (NBPG * CLSIZE) - #endif - #else - #ifdef NBPC - #define malloc_getpagesize NBPC - #else - #ifdef PAGESIZE - #define malloc_getpagesize PAGESIZE - #else /* just guess */ - #define malloc_getpagesize ((size_t)4096U) - #endif - #endif - #endif - #endif - #endif - #endif - #endif - #endif -#endif -#endif -/*AMOD: For malloc_getpagesize*/ - -/* ------------------- size_t and alignment properties -------------------- */ - -/* The byte and bit size of a size_t */ -#define SIZE_T_SIZE (sizeof(size_t)) -#define SIZE_T_BITSIZE (sizeof(size_t) << 3) - -/* Some constants coerced to size_t */ -/* Annoying but necessary to avoid errors on some plaftorms */ -#define SIZE_T_ZERO ((size_t)0) -#define SIZE_T_ONE ((size_t)1) -#define SIZE_T_TWO ((size_t)2) -#define TWO_SIZE_T_SIZES (SIZE_T_SIZE<<1) -#define FOUR_SIZE_T_SIZES (SIZE_T_SIZE<<2) -#define SIX_SIZE_T_SIZES (FOUR_SIZE_T_SIZES+TWO_SIZE_T_SIZES) -#define HALF_MAX_SIZE_T (MAX_SIZE_T / 2U) - -/* The bit mask value corresponding to MALLOC_ALIGNMENT */ -#define CHUNK_ALIGN_MASK (MALLOC_ALIGNMENT - SIZE_T_ONE) - -/* True if address a has acceptable alignment */ -//#define is_aligned(A) (((size_t)((A)) & (CHUNK_ALIGN_MASK)) == 0) -#define is_aligned(A) (((unsigned int)((A)) & (CHUNK_ALIGN_MASK)) == 0) - -/* the number of bytes to offset an address to align it */ -#define align_offset(A)\ - ((((size_t)(A) & CHUNK_ALIGN_MASK) == 0)? 0 :\ - ((MALLOC_ALIGNMENT - ((size_t)(A) & CHUNK_ALIGN_MASK)) & CHUNK_ALIGN_MASK)) - -/* -------------------------- MMAP preliminaries ------------------------- */ - -/* - If HAVE_MORECORE or HAVE_MMAP are false, we just define calls and - checks to fail so compiler optimizer can delete code rather than - using so many "#if"s. -*/ - - -/* MORECORE and MMAP must return MFAIL on failure */ -#define MFAIL ((void*)(MAX_SIZE_T)) -#define CMFAIL ((TUint8*)(MFAIL)) /* defined for convenience */ - -#if !HAVE_MMAP - #define IS_MMAPPED_BIT (SIZE_T_ZERO) - #define USE_MMAP_BIT (SIZE_T_ZERO) - #define CALL_MMAP(s) MFAIL - #define CALL_MUNMAP(a, s) (-1) - #define DIRECT_MMAP(s) MFAIL -#else /* !HAVE_MMAP */ - #define IS_MMAPPED_BIT (SIZE_T_ONE) - #define USE_MMAP_BIT (SIZE_T_ONE) - #ifndef WIN32 - #define CALL_MUNMAP(a, s) DLUMMAP((a),(s)) /*munmap((a), (s))*/ - #define MMAP_PROT (PROT_READ|PROT_WRITE) - #if !defined(MAP_ANONYMOUS) && defined(MAP_ANON) - #define MAP_ANONYMOUS MAP_ANON - #endif /* MAP_ANON */ - #ifdef MAP_ANONYMOUS - #define MMAP_FLAGS (MAP_PRIVATE|MAP_ANONYMOUS) - #define CALL_MMAP(s) mmap(0, (s), MMAP_PROT, (int)MMAP_FLAGS, -1, 0) - #else /* MAP_ANONYMOUS */ - /* - Nearly all versions of mmap support MAP_ANONYMOUS, so the following - is unlikely to be needed, but is supplied just in case. - */ - #define MMAP_FLAGS (MAP_PRIVATE) - //static int dev_zero_fd = -1; /* Cached file descriptor for /dev/zero. */ - #define CALL_MMAP(s) DLMMAP(s) - /*#define CALL_MMAP(s) ((dev_zero_fd < 0) ? \ - (dev_zero_fd = open("/dev/zero", O_RDWR), \ - mmap(0, (s), MMAP_PROT, MMAP_FLAGS, dev_zero_fd, 0)) : \ - mmap(0, (s), MMAP_PROT, MMAP_FLAGS, dev_zero_fd, 0)) - */ - #define CALL_REMAP(a, s, d) DLREMAP((a),(s),(d)) - #endif /* MAP_ANONYMOUS */ - #define DIRECT_MMAP(s) CALL_MMAP(s) - #else /* WIN32 */ - #define CALL_MMAP(s) win32mmap(s) - #define CALL_MUNMAP(a, s) win32munmap((a), (s)) - #define DIRECT_MMAP(s) win32direct_mmap(s) - #endif /* WIN32 */ -#endif /* HAVE_MMAP */ - -#if HAVE_MMAP && HAVE_MREMAP - #define CALL_MREMAP(addr, osz, nsz, mv) mremap((addr), (osz), (nsz), (mv)) -#else /* HAVE_MMAP && HAVE_MREMAP */ - #define CALL_MREMAP(addr, osz, nsz, mv) MFAIL -#endif /* HAVE_MMAP && HAVE_MREMAP */ - -#if HAVE_MORECORE - #define CALL_MORECORE(S) SetBrk(S) -#else /* HAVE_MORECORE */ - #define CALL_MORECORE(S) MFAIL -#endif /* HAVE_MORECORE */ - -/* mstate bit set if continguous morecore disabled or failed */ -#define USE_NONCONTIGUOUS_BIT (4U) - -/* segment bit set in create_mspace_with_base */ -#define EXTERN_BIT (8U) - - -#if USE_LOCKS -/* - When locks are defined, there are up to two global locks: - * If HAVE_MORECORE, morecore_mutex protects sequences of calls to - MORECORE. In many cases sys_alloc requires two calls, that should - not be interleaved with calls by other threads. This does not - protect against direct calls to MORECORE by other threads not - using this lock, so there is still code to cope the best we can on - interference. - * magic_init_mutex ensures that mparams.magic and other - unique mparams values are initialized only once. -*/ - #ifndef WIN32 - /* By default use posix locks */ - #include - #define MLOCK_T pthread_mutex_t - #define INITIAL_LOCK(l) pthread_mutex_init(l, NULL) - #define ACQUIRE_LOCK(l) pthread_mutex_lock(l) - #define RELEASE_LOCK(l) pthread_mutex_unlock(l) - - #if HAVE_MORECORE - //static MLOCK_T morecore_mutex = PTHREAD_MUTEX_INITIALIZER; - #endif /* HAVE_MORECORE */ - //static MLOCK_T magic_init_mutex = PTHREAD_MUTEX_INITIALIZER; - #else /* WIN32 */ - #define MLOCK_T long - #define INITIAL_LOCK(l) *(l)=0 - #define ACQUIRE_LOCK(l) win32_acquire_lock(l) - #define RELEASE_LOCK(l) win32_release_lock(l) - #if HAVE_MORECORE - static MLOCK_T morecore_mutex; - #endif /* HAVE_MORECORE */ - static MLOCK_T magic_init_mutex; - #endif /* WIN32 */ - #define USE_LOCK_BIT (2U) -#else /* USE_LOCKS */ - #define USE_LOCK_BIT (0U) - #define INITIAL_LOCK(l) -#endif /* USE_LOCKS */ - -#if USE_LOCKS && HAVE_MORECORE - #define ACQUIRE_MORECORE_LOCK(M) ACQUIRE_LOCK((M->morecore_mutex)/*&morecore_mutex*/); - #define RELEASE_MORECORE_LOCK(M) RELEASE_LOCK((M->morecore_mutex)/*&morecore_mutex*/); -#else /* USE_LOCKS && HAVE_MORECORE */ - #define ACQUIRE_MORECORE_LOCK(M) - #define RELEASE_MORECORE_LOCK(M) -#endif /* USE_LOCKS && HAVE_MORECORE */ - -#if USE_LOCKS - /*Currently not suporting this*/ - #define ACQUIRE_MAGIC_INIT_LOCK(M) ACQUIRE_LOCK(((M)->magic_init_mutex)); - //AMOD: changed #define ACQUIRE_MAGIC_INIT_LOCK() - //#define RELEASE_MAGIC_INIT_LOCK() - #define RELEASE_MAGIC_INIT_LOCK(M) RELEASE_LOCK(((M)->magic_init_mutex)); -#else /* USE_LOCKS */ - #define ACQUIRE_MAGIC_INIT_LOCK(M) - #define RELEASE_MAGIC_INIT_LOCK(M) -#endif /* USE_LOCKS */ - -/*CHUNK representation*/ -struct malloc_chunk { - size_t prev_foot; /* Size of previous chunk (if free). */ - size_t head; /* Size and inuse bits. */ - struct malloc_chunk* fd; /* double links -- used only if free. */ - struct malloc_chunk* bk; -}; - -typedef struct malloc_chunk mchunk; -typedef struct malloc_chunk* mchunkptr; -typedef struct malloc_chunk* sbinptr; /* The type of bins of chunks */ -typedef unsigned int bindex_t; /* Described below */ -typedef unsigned int binmap_t; /* Described below */ -typedef unsigned int flag_t; /* The type of various bit flag sets */ - - -/* ------------------- Chunks sizes and alignments ----------------------- */ -#define MCHUNK_SIZE (sizeof(mchunk)) - -#if FOOTERS - #define CHUNK_OVERHEAD (TWO_SIZE_T_SIZES) -#else /* FOOTERS */ - #define CHUNK_OVERHEAD (SIZE_T_SIZE) -#endif /* FOOTERS */ - -/* MMapped chunks need a second word of overhead ... */ -#define MMAP_CHUNK_OVERHEAD (TWO_SIZE_T_SIZES) -/* ... and additional padding for fake next-chunk at foot */ -#define MMAP_FOOT_PAD (FOUR_SIZE_T_SIZES) - -/* The smallest size we can malloc is an aligned minimal chunk */ -#define MIN_CHUNK_SIZE ((MCHUNK_SIZE + CHUNK_ALIGN_MASK) & ~CHUNK_ALIGN_MASK) - -/* conversion from malloc headers to user pointers, and back */ -#define chunk2mem(p) ((void*)((TUint8*)(p) + TWO_SIZE_T_SIZES)) -#define mem2chunk(mem) ((mchunkptr)((TUint8*)(mem) - TWO_SIZE_T_SIZES)) -/* chunk associated with aligned address A */ -#define align_as_chunk(A) (mchunkptr)((A) + align_offset(chunk2mem(A))) - -/* Bounds on request (not chunk) sizes. */ -#define MAX_REQUEST ((-MIN_CHUNK_SIZE) << 2) -#define MIN_REQUEST (MIN_CHUNK_SIZE - CHUNK_OVERHEAD - SIZE_T_ONE) - -/* pad request bytes into a usable size */ -#define pad_request(req) (((req) + CHUNK_OVERHEAD + CHUNK_ALIGN_MASK) & ~CHUNK_ALIGN_MASK) - -/* pad request, checking for minimum (but not maximum) */ -#define request2size(req) (((req) < MIN_REQUEST)? MIN_CHUNK_SIZE : pad_request(req)) - -/* ------------------ Operations on head and foot fields ----------------- */ - -/* - The head field of a chunk is or'ed with PINUSE_BIT when previous - adjacent chunk in use, and or'ed with CINUSE_BIT if this chunk is in - use. If the chunk was obtained with mmap, the prev_foot field has - IS_MMAPPED_BIT set, otherwise holding the offset of the base of the - mmapped region to the base of the chunk. -*/ -#define PINUSE_BIT (SIZE_T_ONE) -#define CINUSE_BIT (SIZE_T_TWO) -#define INUSE_BITS (PINUSE_BIT|CINUSE_BIT) - -/* Head value for fenceposts */ -#define FENCEPOST_HEAD (INUSE_BITS|SIZE_T_SIZE) - -/* extraction of fields from head words */ -#define cinuse(p) ((p)->head & CINUSE_BIT) -#define pinuse(p) ((p)->head & PINUSE_BIT) -#define chunksize(p) ((p)->head & ~(INUSE_BITS)) - -#define clear_pinuse(p) ((p)->head &= ~PINUSE_BIT) -#define clear_cinuse(p) ((p)->head &= ~CINUSE_BIT) - -/* Treat space at ptr +/- offset as a chunk */ -#define chunk_plus_offset(p, s) ((mchunkptr)(((TUint8*)(p)) + (s))) -#define chunk_minus_offset(p, s) ((mchunkptr)(((TUint8*)(p)) - (s))) - -/* Ptr to next or previous physical malloc_chunk. */ -#define next_chunk(p) ((mchunkptr)( ((TUint8*)(p)) + ((p)->head & ~INUSE_BITS))) -#define prev_chunk(p) ((mchunkptr)( ((TUint8*)(p)) - ((p)->prev_foot) )) - -/* extract next chunk's pinuse bit */ -#define next_pinuse(p) ((next_chunk(p)->head) & PINUSE_BIT) - -/* Get/set size at footer */ -#define get_foot(p, s) (((mchunkptr)((TUint8*)(p) + (s)))->prev_foot) -#define set_foot(p, s) (((mchunkptr)((TUint8*)(p) + (s)))->prev_foot = (s)) - -/* Set size, pinuse bit, and foot */ -#define set_size_and_pinuse_of_free_chunk(p, s) ((p)->head = (s|PINUSE_BIT), set_foot(p, s)) - -/* Set size, pinuse bit, foot, and clear next pinuse */ -#define set_free_with_pinuse(p, s, n) (clear_pinuse(n), set_size_and_pinuse_of_free_chunk(p, s)) - -#define is_mmapped(p) (!((p)->head & PINUSE_BIT) && ((p)->prev_foot & IS_MMAPPED_BIT)) - -/* Get the internal overhead associated with chunk p */ -#define overhead_for(p) (is_mmapped(p)? MMAP_CHUNK_OVERHEAD : CHUNK_OVERHEAD) - -/* Return true if malloced space is not necessarily cleared */ -#if MMAP_CLEARS - #define calloc_must_clear(p) (!is_mmapped(p)) -#else /* MMAP_CLEARS */ - #define calloc_must_clear(p) (1) -#endif /* MMAP_CLEARS */ - -/* ---------------------- Overlaid data structures ----------------------- */ -struct malloc_tree_chunk { - /* The first four fields must be compatible with malloc_chunk */ - size_t prev_foot; - size_t head; - struct malloc_tree_chunk* fd; - struct malloc_tree_chunk* bk; - - struct malloc_tree_chunk* child[2]; - struct malloc_tree_chunk* parent; - bindex_t index; -}; - -typedef struct malloc_tree_chunk tchunk; -typedef struct malloc_tree_chunk* tchunkptr; -typedef struct malloc_tree_chunk* tbinptr; /* The type of bins of trees */ - -/* A little helper macro for trees */ -#define leftmost_child(t) ((t)->child[0] != 0? (t)->child[0] : (t)->child[1]) -/*Segment structur*/ -struct malloc_segment { - TUint8* base; /* base address */ - size_t size; /* allocated size */ - struct malloc_segment* next; /* ptr to next segment */ - flag_t sflags; /* mmap and extern flag */ -}; - -#define is_mmapped_segment(S) ((S)->sflags & IS_MMAPPED_BIT) -#define is_extern_segment(S) ((S)->sflags & EXTERN_BIT) - -typedef struct malloc_segment msegment; -typedef struct malloc_segment* msegmentptr; - -/*Malloc State data structur*/ - -#define NSMALLBINS (32U) -#define NTREEBINS (32U) -#define SMALLBIN_SHIFT (3U) -#define SMALLBIN_WIDTH (SIZE_T_ONE << SMALLBIN_SHIFT) -#define TREEBIN_SHIFT (8U) -#define MIN_LARGE_SIZE (SIZE_T_ONE << TREEBIN_SHIFT) -#define MAX_SMALL_SIZE (MIN_LARGE_SIZE - SIZE_T_ONE) -#define MAX_SMALL_REQUEST (MAX_SMALL_SIZE - CHUNK_ALIGN_MASK - CHUNK_OVERHEAD) - -struct malloc_state { - binmap_t smallmap; - binmap_t treemap; - size_t dvsize; - size_t topsize; - TUint8* least_addr; - mchunkptr dv; - mchunkptr top; - size_t trim_check; - size_t magic; - mchunkptr smallbins[(NSMALLBINS+1)*2]; - tbinptr treebins[NTREEBINS]; - size_t footprint; - size_t max_footprint; - flag_t mflags; -#if USE_LOCKS - MLOCK_T mutex; /* locate lock among fields that rarely change */ - MLOCK_T magic_init_mutex; - MLOCK_T morecore_mutex; -#endif /* USE_LOCKS */ - msegment seg; -}; - -typedef struct malloc_state* mstate; - -/* ------------- Global malloc_state and malloc_params ------------------- */ - -/* - malloc_params holds global properties, including those that can be - dynamically set using mallopt. There is a single instance, mparams, - initialized in init_mparams. -*/ - -struct malloc_params { - size_t magic; - size_t page_size; - size_t granularity; - size_t mmap_threshold; - size_t trim_threshold; - flag_t default_mflags; -#if USE_LOCKS - MLOCK_T magic_init_mutex; -#endif /* USE_LOCKS */ -}; - -/* The global malloc_state used for all non-"mspace" calls */ -/*AMOD: Need to check this as this will be the member of the class*/ - -//static struct malloc_state _gm_; -//#define gm (&_gm_) - -//#define is_global(M) ((M) == &_gm_) -/*AMOD: has changed*/ -#define is_global(M) ((M) == gm) -#define is_initialized(M) ((M)->top != 0) - -/* -------------------------- system alloc setup ------------------------- */ - -/* Operations on mflags */ - -#define use_lock(M) ((M)->mflags & USE_LOCK_BIT) -#define enable_lock(M) ((M)->mflags |= USE_LOCK_BIT) -#define disable_lock(M) ((M)->mflags &= ~USE_LOCK_BIT) - -#define use_mmap(M) ((M)->mflags & USE_MMAP_BIT) -#define enable_mmap(M) ((M)->mflags |= USE_MMAP_BIT) -#define disable_mmap(M) ((M)->mflags &= ~USE_MMAP_BIT) - -#define use_noncontiguous(M) ((M)->mflags & USE_NONCONTIGUOUS_BIT) -#define disable_contiguous(M) ((M)->mflags |= USE_NONCONTIGUOUS_BIT) - -#define set_lock(M,L) ((M)->mflags = (L)? ((M)->mflags | USE_LOCK_BIT) : ((M)->mflags & ~USE_LOCK_BIT)) - -/* page-align a size */ -#define page_align(S) (((S) + (mparams.page_size)) & ~(mparams.page_size - SIZE_T_ONE)) - -/* granularity-align a size */ -#define granularity_align(S) (((S) + (mparams.granularity)) & ~(mparams.granularity - SIZE_T_ONE)) - -#define is_page_aligned(S) (((size_t)(S) & (mparams.page_size - SIZE_T_ONE)) == 0) -#define is_granularity_aligned(S) (((size_t)(S) & (mparams.granularity - SIZE_T_ONE)) == 0) - -/* True if segment S holds address A */ -#define segment_holds(S, A) ((TUint8*)(A) >= S->base && (TUint8*)(A) < S->base + S->size) - -#ifndef MORECORE_CANNOT_TRIM - #define should_trim(M,s) ((s) > (M)->trim_check) -#else /* MORECORE_CANNOT_TRIM */ - #define should_trim(M,s) (0) -#endif /* MORECORE_CANNOT_TRIM */ - -/* - TOP_FOOT_SIZE is padding at the end of a segment, including space - that may be needed to place segment records and fenceposts when new - noncontiguous segments are added. -*/ -#define TOP_FOOT_SIZE (align_offset(chunk2mem(0))+pad_request(sizeof(struct malloc_segment))+MIN_CHUNK_SIZE) - -/* ------------------------------- Hooks -------------------------------- */ - -/* - PREACTION should be defined to return 0 on success, and nonzero on - failure. If you are not using locking, you can redefine these to do - anything you like. -*/ - -#if USE_LOCKS - /* Ensure locks are initialized */ - #define GLOBALLY_INITIALIZE() (mparams.page_size == 0 && init_mparams()) - #define PREACTION(M) (use_lock((M))?(ACQUIRE_LOCK((M)->mutex),0):0) /*Action to take like lock before alloc*/ - #define POSTACTION(M) { if (use_lock(M)) RELEASE_LOCK((M)->mutex); } - -#else /* USE_LOCKS */ - #ifndef PREACTION - #define PREACTION(M) (0) - #endif /* PREACTION */ - #ifndef POSTACTION - #define POSTACTION(M) - #endif /* POSTACTION */ -#endif /* USE_LOCKS */ - -/* - CORRUPTION_ERROR_ACTION is triggered upon detected bad addresses. - USAGE_ERROR_ACTION is triggered on detected bad frees and - reallocs. The argument p is an address that might have triggered the - fault. It is ignored by the two predefined actions, but might be - useful in custom actions that try to help diagnose errors. -*/ - -#if PROCEED_ON_ERROR - /* A count of the number of corruption errors causing resets */ - int malloc_corruption_error_count; - /* default corruption action */ - static void reset_on_error(mstate m); - #define CORRUPTION_ERROR_ACTION(m) reset_on_error(m) - #define USAGE_ERROR_ACTION(m, p) -#else /* PROCEED_ON_ERROR */ - #ifndef CORRUPTION_ERROR_ACTION - #define CORRUPTION_ERROR_ACTION(m) ABORT - #endif /* CORRUPTION_ERROR_ACTION */ - #ifndef USAGE_ERROR_ACTION - #define USAGE_ERROR_ACTION(m,p) ABORT - #endif /* USAGE_ERROR_ACTION */ -#endif /* PROCEED_ON_ERROR */ - - /* -------------------------- Debugging setup ---------------------------- */ - -#if ! DEBUG - #define check_free_chunk(M,P) - #define check_inuse_chunk(M,P) - #define check_malloced_chunk(M,P,N) - #define check_mmapped_chunk(M,P) - #define check_malloc_state(M) - #define check_top_chunk(M,P) -#else /* DEBUG */ - #define check_free_chunk(M,P) do_check_free_chunk(M,P) - #define check_inuse_chunk(M,P) do_check_inuse_chunk(M,P) - #define check_top_chunk(M,P) do_check_top_chunk(M,P) - #define check_malloced_chunk(M,P,N) do_check_malloced_chunk(M,P,N) - #define check_mmapped_chunk(M,P) do_check_mmapped_chunk(M,P) - #define check_malloc_state(M) do_check_malloc_state(M) - static void do_check_any_chunk(mstate m, mchunkptr p); - static void do_check_top_chunk(mstate m, mchunkptr p); - static void do_check_mmapped_chunk(mstate m, mchunkptr p); - static void do_check_inuse_chunk(mstate m, mchunkptr p); - static void do_check_free_chunk(mstate m, mchunkptr p); - static void do_check_malloced_chunk(mstate m, void* mem, size_t s); - static void do_check_tree(mstate m, tchunkptr t); - static void do_check_treebin(mstate m, bindex_t i); - static void do_check_smallbin(mstate m, bindex_t i); - static void do_check_malloc_state(mstate m); - static int bin_find(mstate m, mchunkptr x); - static size_t traverse_and_check(mstate m); -#endif /* DEBUG */ - -/* ---------------------------- Indexing Bins ---------------------------- */ - -#define is_small(s) (((s) >> SMALLBIN_SHIFT) < NSMALLBINS) -#define small_index(s) ((s) >> SMALLBIN_SHIFT) -#define small_index2size(i) ((i) << SMALLBIN_SHIFT) -#define MIN_SMALL_INDEX (small_index(MIN_CHUNK_SIZE)) - -/* addressing by index. See above about smallbin repositioning */ -#define smallbin_at(M, i) ((sbinptr)((TUint8*)&((M)->smallbins[(i)<<1]))) -#define treebin_at(M,i) (&((M)->treebins[i])) - - -/* Bit representing maximum resolved size in a treebin at i */ -#define bit_for_tree_index(i) (i == NTREEBINS-1)? (SIZE_T_BITSIZE-1) : (((i) >> 1) + TREEBIN_SHIFT - 2) - -/* Shift placing maximum resolved bit in a treebin at i as sign bit */ -#define leftshift_for_tree_index(i) ((i == NTREEBINS-1)? 0 : ((SIZE_T_BITSIZE-SIZE_T_ONE) - (((i) >> 1) + TREEBIN_SHIFT - 2))) - -/* The size of the smallest chunk held in bin with index i */ -#define minsize_for_tree_index(i) ((SIZE_T_ONE << (((i) >> 1) + TREEBIN_SHIFT)) | (((size_t)((i) & SIZE_T_ONE)) << (((i) >> 1) + TREEBIN_SHIFT - 1))) - - -/* ------------------------ Operations on bin maps ----------------------- */ -/* bit corresponding to given index */ -#define idx2bit(i) ((binmap_t)(1) << (i)) -/* Mark/Clear bits with given index */ -#define mark_smallmap(M,i) ((M)->smallmap |= idx2bit(i)) -#define clear_smallmap(M,i) ((M)->smallmap &= ~idx2bit(i)) -#define smallmap_is_marked(M,i) ((M)->smallmap & idx2bit(i)) -#define mark_treemap(M,i) ((M)->treemap |= idx2bit(i)) -#define clear_treemap(M,i) ((M)->treemap &= ~idx2bit(i)) -#define treemap_is_marked(M,i) ((M)->treemap & idx2bit(i)) - -/* isolate the least set bit of a bitmap */ -#define least_bit(x) ((x) & -(x)) - -/* mask with all bits to left of least bit of x on */ -#define left_bits(x) ((x<<1) | -(x<<1)) - -/* mask with all bits to left of or equal to least bit of x on */ -#define same_or_left_bits(x) ((x) | -(x)) - - /* isolate the least set bit of a bitmap */ -#define least_bit(x) ((x) & -(x)) - -/* mask with all bits to left of least bit of x on */ -#define left_bits(x) ((x<<1) | -(x<<1)) - -/* mask with all bits to left of or equal to least bit of x on */ -#define same_or_left_bits(x) ((x) | -(x)) - -#if !INSECURE - /* Check if address a is at least as high as any from MORECORE or MMAP */ - #define ok_address(M, a) ((TUint8*)(a) >= (M)->least_addr) - /* Check if address of next chunk n is higher than base chunk p */ - #define ok_next(p, n) ((TUint8*)(p) < (TUint8*)(n)) - /* Check if p has its cinuse bit on */ - #define ok_cinuse(p) cinuse(p) - /* Check if p has its pinuse bit on */ - #define ok_pinuse(p) pinuse(p) -#else /* !INSECURE */ - #define ok_address(M, a) (1) - #define ok_next(b, n) (1) - #define ok_cinuse(p) (1) - #define ok_pinuse(p) (1) -#endif /* !INSECURE */ - -#if (FOOTERS && !INSECURE) - /* Check if (alleged) mstate m has expected magic field */ - #define ok_magic(M) ((M)->magic == mparams.magic) -#else /* (FOOTERS && !INSECURE) */ - #define ok_magic(M) (1) -#endif /* (FOOTERS && !INSECURE) */ - -/* In gcc, use __builtin_expect to minimize impact of checks */ -#if !INSECURE - #if defined(__GNUC__) && __GNUC__ >= 3 - #define RTCHECK(e) __builtin_expect(e, 1) - #else /* GNUC */ - #define RTCHECK(e) (e) - #endif /* GNUC */ - -#else /* !INSECURE */ - #define RTCHECK(e) (1) -#endif /* !INSECURE */ -/* macros to set up inuse chunks with or without footers */ -#if !FOOTERS - #define mark_inuse_foot(M,p,s) - /* Set cinuse bit and pinuse bit of next chunk */ - #define set_inuse(M,p,s) ((p)->head = (((p)->head & PINUSE_BIT)|s|CINUSE_BIT),((mchunkptr)(((TUint8*)(p)) + (s)))->head |= PINUSE_BIT) - /* Set cinuse and pinuse of this chunk and pinuse of next chunk */ - #define set_inuse_and_pinuse(M,p,s) ((p)->head = (s|PINUSE_BIT|CINUSE_BIT),((mchunkptr)(((TUint8*)(p)) + (s)))->head |= PINUSE_BIT) - /* Set size, cinuse and pinuse bit of this chunk */ - #define set_size_and_pinuse_of_inuse_chunk(M, p, s) ((p)->head = (s|PINUSE_BIT|CINUSE_BIT)) -#else /* FOOTERS */ - /* Set foot of inuse chunk to be xor of mstate and seed */ - #define mark_inuse_foot(M,p,s) (((mchunkptr)((TUint8*)(p) + (s)))->prev_foot = ((size_t)(M) ^ mparams.magic)) - #define get_mstate_for(p) ((mstate)(((mchunkptr)((TUint8*)(p)+(chunksize(p))))->prev_foot ^ mparams.magic)) - #define set_inuse(M,p,s)\ - ((p)->head = (((p)->head & PINUSE_BIT)|s|CINUSE_BIT),\ - (((mchunkptr)(((TUint8*)(p)) + (s)))->head |= PINUSE_BIT), \ - mark_inuse_foot(M,p,s)) - #define set_inuse_and_pinuse(M,p,s)\ - ((p)->head = (s|PINUSE_BIT|CINUSE_BIT),\ - (((mchunkptr)(((TUint8*)(p)) + (s)))->head |= PINUSE_BIT),\ - mark_inuse_foot(M,p,s)) - #define set_size_and_pinuse_of_inuse_chunk(M, p, s)\ - ((p)->head = (s|PINUSE_BIT|CINUSE_BIT),\ - mark_inuse_foot(M, p, s)) -#endif /* !FOOTERS */ - - -#if ONLY_MSPACES -#define internal_malloc(m, b) mspace_malloc(m, b) -#define internal_free(m, mem) mspace_free(m,mem); -#else /* ONLY_MSPACES */ - #if MSPACES - #define internal_malloc(m, b) (m == gm)? dlmalloc(b) : mspace_malloc(m, b) - #define internal_free(m, mem) if (m == gm) dlfree(mem); else mspace_free(m,mem); - #else /* MSPACES */ - #define internal_malloc(m, b) dlmalloc(b) - #define internal_free(m, mem) dlfree(mem) - #endif /* MSPACES */ -#endif /* ONLY_MSPACES */ -/******CODE TO SUPORT SLAB ALLOCATOR******/ - - #ifndef NDEBUG - #define CHECKING 1 - #endif - - #if CHECKING - //#define ASSERT(x) {if (!(x)) abort();} - #define CHECK(x) x - #else - #define ASSERT(x) (void)0 - #define CHECK(x) (void)0 - #endif - - class slab; - class slabhdr; - #define maxslabsize 56 - #define pageshift 12 - #define pagesize (1<>3) : ((unsigned) bits>>1)) - - #define lowbit(bits) (((unsigned) bits&3) ? 1 - ((unsigned)bits&1) : 3 - (((unsigned)bits>>2)&1)) - #define minpagepower pageshift+2 - #define cellalign 8 - class slabhdr - { - public: - unsigned header; - // made up of - // bits | 31 | 30..28 | 27..18 | 17..12 | 11..8 | 7..0 | - // +----------+--------+--------+--------+---------+----------+ - // field | floating | zero | used-4 | size | pagemap | free pos | - // - slab** parent; // reference to parent's pointer to this slab in tree - slab* child1; // 1st child in tree - slab* child2; // 2nd child in tree - }; - - inline unsigned header_floating(unsigned h) - {return (h&0x80000000);} - const unsigned maxuse = (slabsize - sizeof(slabhdr))>>2; - const unsigned firstpos = sizeof(slabhdr)>>2; - #define checktree(x) (void)0 - template inline T floor(const T addr, unsigned aln) - {return T((unsigned(addr))&~(aln-1));} - template inline T ceiling(T addr, unsigned aln) - {return T((unsigned(addr)+(aln-1))&~(aln-1));} - template inline unsigned lowbits(T addr, unsigned aln) - {return unsigned(addr)&(aln-1);} - template inline int ptrdiff(const T1* a1, const T2* a2) - {return reinterpret_cast(a1) - reinterpret_cast(a2);} - template inline T offset(T addr, unsigned ofs) - {return T(unsigned(addr)+ofs);} - class slabset - { - public: - slab* partial; - }; - - class slab : public slabhdr - { - public: - void init(unsigned clz); - //static slab* slabfor( void* p); - static slab* slabfor(const void* p) ; - private: - unsigned char payload[slabsize-sizeof(slabhdr)]; - }; - class page - { - public: - inline static page* pagefor(slab* s); - //slab slabs; - slab slabs[slabsperpage]; - }; - - - inline page* page::pagefor(slab* s) - {return reinterpret_cast(floor(s, pagesize));} - struct pagecell - { - void* page; - unsigned size; - }; - /******CODE TO SUPORT SLAB ALLOCATOR******/ -#endif/*__DLA__*/ diff -r 74c9f037fd5d -r 99ad1390cd33 main/al/newallocator.cpp --- a/main/al/newallocator.cpp Fri Mar 19 09:28:59 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2843 +0,0 @@ -/* -* Copyright (c) 1994-2001 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -#include -#include -#include -#include -#include -#include -#include - -#ifndef __WINS__ -#pragma push -#pragma arm -#endif - -#include "DLA.h" -#include "newallocator.h" - -#define ALLOCATOR_ADP75 -//#define TRACING_HEAPS -//#define DEBUG_DEVLON70 -//#define ENABLE_BTRACE - -// if non zero this causes the slabs to be configured only when the chunk size exceeds this level -#define DELAYED_SLAB_THRESHOLD (64*1024) // 64KB seems about right based on trace data -#define SLAB_CONFIG (0xabe) - -_LIT(KDLHeapPanicCategory, "DL Heap"); -#define GET_PAGE_SIZE(x) HAL::Get(HALData::EMemoryPageSize, x) -#define __CHECK_CELL(p) -#define __POWER_OF_2(x) ((TUint32)((x)^((x)-1))>=(TUint32)(x)) -#define HEAP_PANIC(r) Panic(r) - -LOCAL_C void Panic(TCdtPanic aPanic) -// Panic the process with USER as the category. - { - User::Panic(_L("USER"),aPanic); - } - - -#define gm (&iGlobalMallocState) - -RNewAllocator::RNewAllocator(TInt aMaxLength, TInt aAlign, TBool aSingleThread) -// constructor for a fixed heap. Just use DL allocator - :iMinLength(aMaxLength), iMaxLength(aMaxLength), iOffset(0), iGrowBy(0), iChunkHandle(0), - iNestingLevel(0), iAllocCount(0), iFailType(ENone), iTestData(NULL), iChunkSize(aMaxLength) - { - - // bodge so GKIServ (hudson generic low level layer) starts up ok - it uses an aAlign of 0 which panics, so if see 0 then force to 4 - if ((TUint32)aAlign>=sizeof(TAny*) && __POWER_OF_2(iAlign)) - { - iAlign = aAlign; - } - else - { - iAlign = 4; - } - iPageSize = 0; - iFlags = aSingleThread ? (ESingleThreaded|EFixedSize) : EFixedSize; - - Init(0, 0, 0); - } -#ifdef TRACING_HEAPS -RNewAllocator::RNewAllocator(TInt aChunkHandle, TInt aOffset, TInt aMinLength, TInt aMaxLength, TInt aGrowBy, - TInt aAlign, TBool aSingleThread) - : iMinLength(aMinLength), iMaxLength(aMaxLength), iOffset(aOffset), iChunkHandle(aChunkHandle), iNestingLevel(0), iAllocCount(0), - iAlign(aAlign),iFailType(ENone), iTestData(NULL), iChunkSize(aMinLength),iHighWaterMark(aMinLength) -#else -RNewAllocator::RNewAllocator(TInt aChunkHandle, TInt aOffset, TInt aMinLength, TInt aMaxLength, TInt aGrowBy, - TInt aAlign, TBool aSingleThread) - : iMinLength(aMinLength), iMaxLength(aMaxLength), iOffset(aOffset), iChunkHandle(aChunkHandle), iNestingLevel(0), iAllocCount(0), - iAlign(aAlign),iFailType(ENone), iTestData(NULL), iChunkSize(aMinLength) -#endif - { - // TODO: Locked the page size to 4 KB - change this to pick up from the OS - GET_PAGE_SIZE(iPageSize); - __ASSERT_ALWAYS(aOffset >=0, User::Panic(KDLHeapPanicCategory, ETHeapNewBadOffset)); - iGrowBy = _ALIGN_UP(aGrowBy, iPageSize); - iFlags = aSingleThread ? ESingleThreaded : 0; - - // Initialise - // if the heap is created with aMinLength==aMaxLength then it cannot allocate slab or page memory - // so these sub-allocators should be disabled. Otherwise initialise with default values - if (aMinLength == aMaxLength) - Init(0, 0, 0); - else - Init(0xabe, 16, iPageSize*4); // slabs {48, 40, 32, 24, 20, 16, 12, 8}, page {64KB}, trim {16KB} -#ifdef TRACING_HEAPS - RChunk chunk; - chunk.SetHandle(iChunkHandle); - TKName chunk_name; - chunk.FullName(chunk_name); - BTraceContextBig(BTrace::ETest1, 2, 22, chunk_name.Ptr(), chunk_name.Size()); - - TUint32 traceData[4]; - traceData[0] = iChunkHandle; - traceData[1] = iMinLength; - traceData[2] = iMaxLength; - traceData[3] = iAlign; - BTraceContextN(BTrace::ETest1, 1, (TUint32)this, 11, traceData, sizeof(traceData)); -#endif - - } - -TAny* RNewAllocator::operator new(TUint aSize, TAny* aBase) __NO_THROW - { - __ASSERT_ALWAYS(aSize>=sizeof(RNewAllocator), HEAP_PANIC(ETHeapNewBadSize)); - RNewAllocator* h = (RNewAllocator*)aBase; - h->iAlign = 0x80000000; // garbage value - h->iBase = ((TUint8*)aBase) + aSize; - return aBase; - } - -void RNewAllocator::Init(TInt aBitmapSlab, TInt aPagePower, size_t aTrimThreshold) - { - __ASSERT_ALWAYS((TUint32)iAlign>=sizeof(TAny*) && __POWER_OF_2(iAlign), HEAP_PANIC(ETHeapNewBadAlignment)); - - /*Moved code which does iunitilization */ - iTop = (TUint8*)this + iMinLength; - iAllocCount = 0; - memset(&mparams,0,sizeof(mparams)); - - Init_Dlmalloc(iTop - iBase, 0, aTrimThreshold); - - slab_init(); - slab_config_bits = aBitmapSlab; -#ifdef DELAYED_SLAB_THRESHOLD - if (iChunkSize < DELAYED_SLAB_THRESHOLD) - { - slab_init_threshold = DELAYED_SLAB_THRESHOLD; - } - else -#endif // DELAYED_SLAB_THRESHOLD - { - slab_init_threshold = KMaxTUint; - slab_config(aBitmapSlab); - } - - /*10-1K,11-2K,12-4k,13-8K,14-16K,15-32K,16-64K*/ - paged_init(aPagePower); - -#ifdef ENABLE_BTRACE - TUint32 traceData[3]; - traceData[0] = aBitmapSlab; - traceData[1] = aPagePower; - traceData[2] = aTrimThreshold; - BTraceContextN(BTrace::ETest1, BTrace::EHeapAlloc, (TUint32)this, 0, traceData, sizeof(traceData)); -#endif - - } - -RNewAllocator::SCell* RNewAllocator::GetAddress(const TAny* aCell) const -// -// As much as possible, check a cell address and backspace it -// to point at the cell header. -// - { - - TLinAddr m = TLinAddr(iAlign - 1); - __ASSERT_ALWAYS(!(TLinAddr(aCell)&m), HEAP_PANIC(ETHeapBadCellAddress)); - - SCell* pC = (SCell*)(((TUint8*)aCell)-EAllocCellSize); - __CHECK_CELL(pC); - - return pC; - } - -TInt RNewAllocator::AllocLen(const TAny* aCell) const -{ - if (ptrdiff(aCell, this) >= 0) - { - mchunkptr m = mem2chunk(aCell); - return chunksize(m) - overhead_for(m); - } - if (lowbits(aCell, pagesize) > cellalign) - return header_size(slab::slabfor(aCell)->header); - if (lowbits(aCell, pagesize) == cellalign) - return *(unsigned*)(offset(aCell,-int(cellalign)))-cellalign; - return paged_descriptor(aCell)->size; -} - -TAny* RNewAllocator::Alloc(TInt aSize) -{ - __ASSERT_ALWAYS((TUint)aSize<(KMaxTInt/2),HEAP_PANIC(ETHeapBadAllocatedCellSize)); - - TAny* addr; - -#ifdef ENABLE_BTRACE - TInt aCnt=0; -#endif - Lock(); - if (aSize < slab_threshold) - { - TInt ix = sizemap[(aSize+3)>>2]; - ASSERT(ix != 0xff); - addr = slab_allocate(slaballoc[ix]); - }else if((aSize >> page_threshold)==0) - { -#ifdef ENABLE_BTRACE - aCnt=1; -#endif - addr = dlmalloc(aSize); - } - else - { -#ifdef ENABLE_BTRACE - aCnt=2; -#endif - addr = paged_allocate(aSize); - } - - iCellCount++; - iTotalAllocSize += aSize; - Unlock(); - -#ifdef ENABLE_BTRACE - if (iFlags & ETraceAllocs) - { - TUint32 traceData[3]; - traceData[0] = AllocLen(addr); - traceData[1] = aSize; - traceData[2] = aCnt; - BTraceContextN(BTrace::EHeap, BTrace::EHeapAlloc, (TUint32)this, (TUint32)addr, traceData, sizeof(traceData)); - } -#endif - -#ifdef DEBUG_DEVLON70 - if(!addr) - { - TUint32 traceD[5]; - traceD[0] = 1; - traceD[1] = aSize; - traceD[2] = iMaxLength; - traceD[3] = iChunkSize; - traceD[4] = (TUint32)addr; - BTraceContextN(BTrace::ETest2, 2, (TUint32)this, 2, traceD, sizeof(traceD)); - } -#endif - - return addr; -} - -TInt RNewAllocator::Compress() - { - if (iFlags & EFixedSize) - return 0; - - Lock(); - dlmalloc_trim(0); - if (spare_page) - { - unmap(spare_page,pagesize); - spare_page = 0; - } - Unlock(); - return 0; - } - -void RNewAllocator::Free(TAny* aPtr) -{ - -#ifdef ENABLE_BTRACE - TInt aCnt=0; -#endif -#ifdef ENABLE_DEBUG_TRACE - RThread me; - TBuf<100> thName; - me.FullName(thName); -#endif - //if (!aPtr) return; //return in case of NULL pointer - - Lock(); - - if (!aPtr) - ; - else if (ptrdiff(aPtr, this) >= 0) - { -#ifdef ENABLE_BTRACE - aCnt = 1; -#endif - dlfree( aPtr); - } - else if (lowbits(aPtr, pagesize) <= cellalign) - { -#ifdef ENABLE_BTRACE - aCnt = 2; -#endif - paged_free(aPtr); - } - else - { -#ifdef ENABLE_BTRACE - aCnt = 0; -#endif - slab_free(aPtr); - } - iCellCount--; - Unlock(); - -#ifdef ENABLE_BTRACE - if (iFlags & ETraceAllocs) - { - TUint32 traceData; - traceData = aCnt; - BTraceContextN(BTrace::EHeap, BTrace::EHeapFree, (TUint32)this, (TUint32)aPtr, &traceData, sizeof(traceData)); - } -#endif -} - - -void RNewAllocator::Reset() - { - // TODO free everything - } - -#ifdef ENABLE_BTRACE -TAny* RNewAllocator::DLReAllocImpl(TAny* aPtr, TInt aSize) - { - if(ptrdiff(aPtr,this)>=0) - { - // original cell is in DL zone - if(aSize >= slab_threshold && (aSize>>page_threshold)==0) - { - // and so is the new one - Lock(); - TAny* addr = dlrealloc(aPtr,aSize); - Unlock(); -#ifdef DEBUG_DEVLON70 - if(!addr) - { - TUint32 traceD[5]; - traceD[0] = 15; - traceD[1] = aSize; - traceD[2] = iMaxLength; - traceD[3] = iChunkSize; - traceD[4] = (TUint32)addr; - BTraceContextN(BTrace::ETest2, 33, (TUint32)this, 10, traceD, sizeof(traceD)); - } -#endif - return addr; - } - } - else if(lowbits(aPtr,pagesize)<=cellalign) - { - // original cell is either NULL or in paged zone - if (!aPtr) - return Alloc(aSize); - if(aSize >> page_threshold) - { - // and so is the new one - Lock(); - TAny* addr = paged_reallocate(aPtr,aSize); - Unlock(); -#ifdef DEBUG_DEVLON70 - if(!addr) - { - TUint32 traceD[5]; - traceD[0] = 15; - traceD[1] = aSize; - traceD[2] = iMaxLength; - traceD[3] = iChunkSize; - traceD[4] = (TUint32)addr; - BTraceContextN(BTrace::ETest2, 33, (TUint32)this, 11, traceD, sizeof(traceD)); - } -#endif - return addr; - } - } - else - { - // original cell is in slab znoe - if(aSize <= header_size(slab::slabfor(aPtr)->header)) - return aPtr; - } - TAny* newp = Alloc(aSize); - if(newp) - { - TInt oldsize = AllocLen(aPtr); - memcpy(newp,aPtr,oldsize=0) - { - // original cell is in DL zone - if(aSize >= slab_threshold && (aSize>>page_threshold)==0) - { - // and so is the new one - Lock(); - TAny* addr = dlrealloc(aPtr,aSize); - Unlock(); - return addr; - } - } - else if(lowbits(aPtr,pagesize)<=cellalign) - { - // original cell is either NULL or in paged zone - if (!aPtr) - return Alloc(aSize); - if(aSize >> page_threshold) - { - // and so is the new one - Lock(); - TAny* addr = paged_reallocate(aPtr,aSize); - Unlock(); - return addr; - } - } - else - { - // original cell is in slab znoe - if(aSize <= header_size(slab::slabfor(aPtr)->header)) - return aPtr; - } - TAny* newp = Alloc(aSize); - if(newp) - { - TInt oldsize = AllocLen(aPtr); - memcpy(newp,aPtr,oldsize -//#define DEBUG_REALLOC -#ifdef DEBUG_REALLOC -#include -#endif -inline int RNewAllocator::init_mparams(size_t aTrimThreshold /*= DEFAULT_TRIM_THRESHOLD*/) -{ - if (mparams.page_size == 0) - { - size_t s; - mparams.mmap_threshold = DEFAULT_MMAP_THRESHOLD; - mparams.trim_threshold = aTrimThreshold; - #if MORECORE_CONTIGUOUS - mparams.default_mflags = USE_LOCK_BIT|USE_MMAP_BIT; - #else /* MORECORE_CONTIGUOUS */ - mparams.default_mflags = USE_LOCK_BIT|USE_MMAP_BIT|USE_NONCONTIGUOUS_BIT; - #endif /* MORECORE_CONTIGUOUS */ - - s = (size_t)0x58585858U; - ACQUIRE_MAGIC_INIT_LOCK(&mparams); - if (mparams.magic == 0) { - mparams.magic = s; - /* Set up lock for main malloc area */ - INITIAL_LOCK(&gm->mutex); - gm->mflags = mparams.default_mflags; - } - RELEASE_MAGIC_INIT_LOCK(&mparams); - - // DAN replaced - // mparams.page_size = malloc_getpagesize; - int temp = 0; - GET_PAGE_SIZE(temp); - mparams.page_size = temp; - - mparams.granularity = ((DEFAULT_GRANULARITY != 0)? - DEFAULT_GRANULARITY : mparams.page_size); - - /* Sanity-check configuration: - size_t must be unsigned and as wide as pointer type. - ints must be at least 4 bytes. - alignment must be at least 8. - Alignment, min chunk size, and page size must all be powers of 2. - */ - - if ((sizeof(size_t) != sizeof(TUint8*)) || - (MAX_SIZE_T < MIN_CHUNK_SIZE) || - (sizeof(int) < 4) || - (MALLOC_ALIGNMENT < (size_t)8U) || - ((MALLOC_ALIGNMENT & (MALLOC_ALIGNMENT-SIZE_T_ONE)) != 0) || - ((MCHUNK_SIZE & (MCHUNK_SIZE-SIZE_T_ONE)) != 0) || - ((mparams.granularity & (mparams.granularity-SIZE_T_ONE)) != 0) || - ((mparams.page_size & (mparams.page_size-SIZE_T_ONE)) != 0)) - ABORT; - } - return 0; -} - -inline void RNewAllocator::init_bins(mstate m) { - /* Establish circular links for smallbins */ - bindex_t i; - for (i = 0; i < NSMALLBINS; ++i) { - sbinptr bin = smallbin_at(m,i); - bin->fd = bin->bk = bin; - } -} -/* ---------------------------- malloc support --------------------------- */ - -/* allocate a large request from the best fitting chunk in a treebin */ -void* RNewAllocator::tmalloc_large(mstate m, size_t nb) { - tchunkptr v = 0; - size_t rsize = -nb; /* Unsigned negation */ - tchunkptr t; - bindex_t idx; - compute_tree_index(nb, idx); - - if ((t = *treebin_at(m, idx)) != 0) { - /* Traverse tree for this bin looking for node with size == nb */ - size_t sizebits = - nb << - leftshift_for_tree_index(idx); - tchunkptr rst = 0; /* The deepest untaken right subtree */ - for (;;) { - tchunkptr rt; - size_t trem = chunksize(t) - nb; - if (trem < rsize) { - v = t; - if ((rsize = trem) == 0) - break; - } - rt = t->child[1]; - t = t->child[(sizebits >> (SIZE_T_BITSIZE-SIZE_T_ONE)) & 1]; - if (rt != 0 && rt != t) - rst = rt; - if (t == 0) { - t = rst; /* set t to least subtree holding sizes > nb */ - break; - } - sizebits <<= 1; - } - } - if (t == 0 && v == 0) { /* set t to root of next non-empty treebin */ - binmap_t leftbits = left_bits(idx2bit(idx)) & m->treemap; - if (leftbits != 0) { - bindex_t i; - binmap_t leastbit = least_bit(leftbits); - compute_bit2idx(leastbit, i); - t = *treebin_at(m, i); - } - } - while (t != 0) { /* find smallest of tree or subtree */ - size_t trem = chunksize(t) - nb; - if (trem < rsize) { - rsize = trem; - v = t; - } - t = leftmost_child(t); - } - /* If dv is a better fit, return 0 so malloc will use it */ - if (v != 0 && rsize < (size_t)(m->dvsize - nb)) { - if (RTCHECK(ok_address(m, v))) { /* split */ - mchunkptr r = chunk_plus_offset(v, nb); - assert(chunksize(v) == rsize + nb); - if (RTCHECK(ok_next(v, r))) { - unlink_large_chunk(m, v); - if (rsize < MIN_CHUNK_SIZE) - set_inuse_and_pinuse(m, v, (rsize + nb)); - else { - set_size_and_pinuse_of_inuse_chunk(m, v, nb); - set_size_and_pinuse_of_free_chunk(r, rsize); - insert_chunk(m, r, rsize); - } - return chunk2mem(v); - } - } - CORRUPTION_ERROR_ACTION(m); - } - return 0; -} - -/* allocate a small request from the best fitting chunk in a treebin */ -void* RNewAllocator::tmalloc_small(mstate m, size_t nb) { - tchunkptr t, v; - size_t rsize; - bindex_t i; - binmap_t leastbit = least_bit(m->treemap); - compute_bit2idx(leastbit, i); - - v = t = *treebin_at(m, i); - rsize = chunksize(t) - nb; - - while ((t = leftmost_child(t)) != 0) { - size_t trem = chunksize(t) - nb; - if (trem < rsize) { - rsize = trem; - v = t; - } - } - - if (RTCHECK(ok_address(m, v))) { - mchunkptr r = chunk_plus_offset(v, nb); - assert(chunksize(v) == rsize + nb); - if (RTCHECK(ok_next(v, r))) { - unlink_large_chunk(m, v); - if (rsize < MIN_CHUNK_SIZE) - set_inuse_and_pinuse(m, v, (rsize + nb)); - else { - set_size_and_pinuse_of_inuse_chunk(m, v, nb); - set_size_and_pinuse_of_free_chunk(r, rsize); - replace_dv(m, r, rsize); - } - return chunk2mem(v); - } - } - CORRUPTION_ERROR_ACTION(m); - return 0; -} - -inline void RNewAllocator::init_top(mstate m, mchunkptr p, size_t psize) -{ - /* Ensure alignment */ - size_t offset = align_offset(chunk2mem(p)); - p = (mchunkptr)((TUint8*)p + offset); - psize -= offset; - m->top = p; - m->topsize = psize; - p->head = psize | PINUSE_BIT; - /* set size of fake trailing chunk holding overhead space only once */ - mchunkptr chunkPlusOff = chunk_plus_offset(p, psize); - chunkPlusOff->head = TOP_FOOT_SIZE; - m->trim_check = mparams.trim_threshold; /* reset on each update */ -} - -void* RNewAllocator::internal_realloc(mstate m, void* oldmem, size_t bytes) -{ - if (bytes >= MAX_REQUEST) { - MALLOC_FAILURE_ACTION; - return 0; - } - if (!PREACTION(m)) { - mchunkptr oldp = mem2chunk(oldmem); - size_t oldsize = chunksize(oldp); - mchunkptr next = chunk_plus_offset(oldp, oldsize); - mchunkptr newp = 0; - void* extra = 0; - - /* Try to either shrink or extend into top. Else malloc-copy-free */ - - if (RTCHECK(ok_address(m, oldp) && ok_cinuse(oldp) && - ok_next(oldp, next) && ok_pinuse(next))) { - size_t nb = request2size(bytes); - if (is_mmapped(oldp)) - newp = mmap_resize(m, oldp, nb); - else - if (oldsize >= nb) { /* already big enough */ - size_t rsize = oldsize - nb; - newp = oldp; - if (rsize >= MIN_CHUNK_SIZE) { - mchunkptr remainder = chunk_plus_offset(newp, nb); - set_inuse(m, newp, nb); - set_inuse(m, remainder, rsize); - extra = chunk2mem(remainder); - } - } - /*AMOD: Modified to optimized*/ - else if (next == m->top && oldsize + m->topsize > nb) - { - /* Expand into top */ - if(oldsize + m->topsize > nb) - { - size_t newsize = oldsize + m->topsize; - size_t newtopsize = newsize - nb; - mchunkptr newtop = chunk_plus_offset(oldp, nb); - set_inuse(m, oldp, nb); - newtop->head = newtopsize |PINUSE_BIT; - m->top = newtop; - m->topsize = newtopsize; - newp = oldp; - } - } - } - else { - USAGE_ERROR_ACTION(m, oldmem); - POSTACTION(m); - return 0; - } - - POSTACTION(m); - - if (newp != 0) { - if (extra != 0) { - internal_free(m, extra); - } - check_inuse_chunk(m, newp); - return chunk2mem(newp); - } - else { - void* newmem = internal_malloc(m, bytes); - if (newmem != 0) { - size_t oc = oldsize - overhead_for(oldp); - memcpy(newmem, oldmem, (oc < bytes)? oc : bytes); - internal_free(m, oldmem); - } - return newmem; - } - } - return 0; -} -/* ----------------------------- statistics ------------------------------ */ -mallinfo RNewAllocator::internal_mallinfo(mstate m) { - struct mallinfo nm = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; - TInt chunkCnt = 0; - if (!PREACTION(m)) { - check_malloc_state(m); - if (is_initialized(m)) { - size_t nfree = SIZE_T_ONE; /* top always free */ - size_t mfree = m->topsize + TOP_FOOT_SIZE; - size_t sum = mfree; - msegmentptr s = &m->seg; - TInt tmp = (TUint8*)m->top - (TUint8*)s->base; - while (s != 0) { - mchunkptr q = align_as_chunk(s->base); - chunkCnt++; - while (segment_holds(s, q) && - q != m->top && q->head != FENCEPOST_HEAD) { - size_t sz = chunksize(q); - sum += sz; - if (!cinuse(q)) { - mfree += sz; - ++nfree; - } - q = next_chunk(q); - } - s = s->next; - } - nm.arena = sum; - nm.ordblks = nfree; - nm.hblkhd = m->footprint - sum; - nm.usmblks = m->max_footprint; - nm.uordblks = m->footprint - mfree; - nm.fordblks = mfree; - nm.keepcost = m->topsize; - nm.cellCount= chunkCnt;/*number of chunks allocated*/ - } - POSTACTION(m); - } - return nm; -} - -void RNewAllocator::internal_malloc_stats(mstate m) { -if (!PREACTION(m)) { - size_t maxfp = 0; - size_t fp = 0; - size_t used = 0; - check_malloc_state(m); - if (is_initialized(m)) { - msegmentptr s = &m->seg; - maxfp = m->max_footprint; - fp = m->footprint; - used = fp - (m->topsize + TOP_FOOT_SIZE); - - while (s != 0) { - mchunkptr q = align_as_chunk(s->base); - while (segment_holds(s, q) && - q != m->top && q->head != FENCEPOST_HEAD) { - if (!cinuse(q)) - used -= chunksize(q); - q = next_chunk(q); - } - s = s->next; - } - } - POSTACTION(m); -} -} -/* support for mallopt */ -int RNewAllocator::change_mparam(int param_number, int value) { - size_t val = (size_t)value; - init_mparams(DEFAULT_TRIM_THRESHOLD); - switch(param_number) { - case M_TRIM_THRESHOLD: - mparams.trim_threshold = val; - return 1; - case M_GRANULARITY: - if (val >= mparams.page_size && ((val & (val-1)) == 0)) { - mparams.granularity = val; - return 1; - } - else - return 0; - case M_MMAP_THRESHOLD: - mparams.mmap_threshold = val; - return 1; - default: - return 0; - } -} -/* Get memory from system using MORECORE or MMAP */ -void* RNewAllocator::sys_alloc(mstate m, size_t nb) -{ - TUint8* tbase = CMFAIL; - size_t tsize = 0; - flag_t mmap_flag = 0; - //init_mparams();/*No need to do init_params here*/ - /* Directly map large chunks */ - if (use_mmap(m) && nb >= mparams.mmap_threshold) - { - void* mem = mmap_alloc(m, nb); - if (mem != 0) - return mem; - } - /* - Try getting memory in any of three ways (in most-preferred to - least-preferred order): - 1. A call to MORECORE that can normally contiguously extend memory. - (disabled if not MORECORE_CONTIGUOUS or not HAVE_MORECORE or - or main space is mmapped or a previous contiguous call failed) - 2. A call to MMAP new space (disabled if not HAVE_MMAP). - Note that under the default settings, if MORECORE is unable to - fulfill a request, and HAVE_MMAP is true, then mmap is - used as a noncontiguous system allocator. This is a useful backup - strategy for systems with holes in address spaces -- in this case - sbrk cannot contiguously expand the heap, but mmap may be able to - find space. - 3. A call to MORECORE that cannot usually contiguously extend memory. - (disabled if not HAVE_MORECORE) - */ - /*Trying to allocate the memory*/ - if(MORECORE_CONTIGUOUS && !use_noncontiguous(m)) - { - TUint8* br = CMFAIL; - msegmentptr ss = (m->top == 0)? 0 : segment_holding(m, (TUint8*)m->top); - size_t asize = 0; - ACQUIRE_MORECORE_LOCK(m); - if (ss == 0) - { /* First time through or recovery */ - TUint8* base = (TUint8*)CALL_MORECORE(0); - if (base != CMFAIL) - { - asize = granularity_align(nb + TOP_FOOT_SIZE + SIZE_T_ONE); - /* Adjust to end on a page boundary */ - if (!is_page_aligned(base)) - asize += (page_align((size_t)base) - (size_t)base); - /* Can't call MORECORE if size is negative when treated as signed */ - if (asize < HALF_MAX_SIZE_T &&(br = (TUint8*)(CALL_MORECORE(asize))) == base) - { - tbase = base; - tsize = asize; - } - } - } - else - { - /* Subtract out existing available top space from MORECORE request. */ - asize = granularity_align(nb - m->topsize + TOP_FOOT_SIZE + SIZE_T_ONE); - /* Use mem here only if it did continuously extend old space */ - if (asize < HALF_MAX_SIZE_T && - (br = (TUint8*)(CALL_MORECORE(asize))) == ss->base+ss->size) { - tbase = br; - tsize = asize; - } - } - if (tbase == CMFAIL) { /* Cope with partial failure */ - if (br != CMFAIL) { /* Try to use/extend the space we did get */ - if (asize < HALF_MAX_SIZE_T && - asize < nb + TOP_FOOT_SIZE + SIZE_T_ONE) { - size_t esize = granularity_align(nb + TOP_FOOT_SIZE + SIZE_T_ONE - asize); - if (esize < HALF_MAX_SIZE_T) { - TUint8* end = (TUint8*)CALL_MORECORE(esize); - if (end != CMFAIL) - asize += esize; - else { /* Can't use; try to release */ - CALL_MORECORE(-asize); - br = CMFAIL; - } - } - } - } - if (br != CMFAIL) { /* Use the space we did get */ - tbase = br; - tsize = asize; - } - else - disable_contiguous(m); /* Don't try contiguous path in the future */ - } - RELEASE_MORECORE_LOCK(m); - } - if (HAVE_MMAP && tbase == CMFAIL) { /* Try MMAP */ - size_t req = nb + TOP_FOOT_SIZE + SIZE_T_ONE; - size_t rsize = granularity_align(req); - if (rsize > nb) { /* Fail if wraps around zero */ - TUint8* mp = (TUint8*)(CALL_MMAP(rsize)); - if (mp != CMFAIL) { - tbase = mp; - tsize = rsize; - mmap_flag = IS_MMAPPED_BIT; - } - } - } - if (HAVE_MORECORE && tbase == CMFAIL) { /* Try noncontiguous MORECORE */ - size_t asize = granularity_align(nb + TOP_FOOT_SIZE + SIZE_T_ONE); - if (asize < HALF_MAX_SIZE_T) { - TUint8* br = CMFAIL; - TUint8* end = CMFAIL; - ACQUIRE_MORECORE_LOCK(m); - br = (TUint8*)(CALL_MORECORE(asize)); - end = (TUint8*)(CALL_MORECORE(0)); - RELEASE_MORECORE_LOCK(m); - if (br != CMFAIL && end != CMFAIL && br < end) { - size_t ssize = end - br; - if (ssize > nb + TOP_FOOT_SIZE) { - tbase = br; - tsize = ssize; - } - } - } - } - if (tbase != CMFAIL) { - if ((m->footprint += tsize) > m->max_footprint) - m->max_footprint = m->footprint; - if (!is_initialized(m)) { /* first-time initialization */ - m->seg.base = m->least_addr = tbase; - m->seg.size = tsize; - m->seg.sflags = mmap_flag; - m->magic = mparams.magic; - init_bins(m); - if (is_global(m)) - init_top(m, (mchunkptr)tbase, tsize - TOP_FOOT_SIZE); - else { - /* Offset top by embedded malloc_state */ - mchunkptr mn = next_chunk(mem2chunk(m)); - init_top(m, mn, (size_t)((tbase + tsize) - (TUint8*)mn) -TOP_FOOT_SIZE); - } - }else { - /* Try to merge with an existing segment */ - msegmentptr sp = &m->seg; - while (sp != 0 && tbase != sp->base + sp->size) - sp = sp->next; - if (sp != 0 && !is_extern_segment(sp) && - (sp->sflags & IS_MMAPPED_BIT) == mmap_flag && - segment_holds(sp, m->top)) - { /* append */ - sp->size += tsize; - init_top(m, m->top, m->topsize + tsize); - } - else { - if (tbase < m->least_addr) - m->least_addr = tbase; - sp = &m->seg; - while (sp != 0 && sp->base != tbase + tsize) - sp = sp->next; - if (sp != 0 && - !is_extern_segment(sp) && - (sp->sflags & IS_MMAPPED_BIT) == mmap_flag) { - TUint8* oldbase = sp->base; - sp->base = tbase; - sp->size += tsize; - return prepend_alloc(m, tbase, oldbase, nb); - } - else - add_segment(m, tbase, tsize, mmap_flag); - } - } - if (nb < m->topsize) { /* Allocate from new or extended top space */ - size_t rsize = m->topsize -= nb; - mchunkptr p = m->top; - mchunkptr r = m->top = chunk_plus_offset(p, nb); - r->head = rsize | PINUSE_BIT; - set_size_and_pinuse_of_inuse_chunk(m, p, nb); - check_top_chunk(m, m->top); - check_malloced_chunk(m, chunk2mem(p), nb); - return chunk2mem(p); - } - } - /*need to check this*/ - //errno = -1; - return 0; -} -msegmentptr RNewAllocator::segment_holding(mstate m, TUint8* addr) { - msegmentptr sp = &m->seg; - for (;;) { - if (addr >= sp->base && addr < sp->base + sp->size) - return sp; - if ((sp = sp->next) == 0) - return 0; - } -} -/* Unlink the first chunk from a smallbin */ -inline void RNewAllocator::unlink_first_small_chunk(mstate M,mchunkptr B,mchunkptr P,bindex_t& I) -{ - mchunkptr F = P->fd; - assert(P != B); - assert(P != F); - assert(chunksize(P) == small_index2size(I)); - if (B == F) - clear_smallmap(M, I); - else if (RTCHECK(ok_address(M, F))) { - B->fd = F; - F->bk = B; - } - else { - CORRUPTION_ERROR_ACTION(M); - } -} -/* Link a free chunk into a smallbin */ -inline void RNewAllocator::insert_small_chunk(mstate M,mchunkptr P, size_t S) -{ - bindex_t I = small_index(S); - mchunkptr B = smallbin_at(M, I); - mchunkptr F = B; - assert(S >= MIN_CHUNK_SIZE); - if (!smallmap_is_marked(M, I)) - mark_smallmap(M, I); - else if (RTCHECK(ok_address(M, B->fd))) - F = B->fd; - else { - CORRUPTION_ERROR_ACTION(M); - } - B->fd = P; - F->bk = P; - P->fd = F; - P->bk = B; -} - - -inline void RNewAllocator::insert_chunk(mstate M,mchunkptr P,size_t S) -{ - if (is_small(S)) - insert_small_chunk(M, P, S); - else{ - tchunkptr TP = (tchunkptr)(P); insert_large_chunk(M, TP, S); - } -} - -inline void RNewAllocator::unlink_large_chunk(mstate M,tchunkptr X) -{ - tchunkptr XP = X->parent; - tchunkptr R; - if (X->bk != X) { - tchunkptr F = X->fd; - R = X->bk; - if (RTCHECK(ok_address(M, F))) { - F->bk = R; - R->fd = F; - } - else { - CORRUPTION_ERROR_ACTION(M); - } - } - else { - tchunkptr* RP; - if (((R = *(RP = &(X->child[1]))) != 0) || - ((R = *(RP = &(X->child[0]))) != 0)) { - tchunkptr* CP; - while ((*(CP = &(R->child[1])) != 0) || - (*(CP = &(R->child[0])) != 0)) { - R = *(RP = CP); - } - if (RTCHECK(ok_address(M, RP))) - *RP = 0; - else { - CORRUPTION_ERROR_ACTION(M); - } - } - } - if (XP != 0) { - tbinptr* H = treebin_at(M, X->index); - if (X == *H) { - if ((*H = R) == 0) - clear_treemap(M, X->index); - } - else if (RTCHECK(ok_address(M, XP))) { - if (XP->child[0] == X) - XP->child[0] = R; - else - XP->child[1] = R; - } - else - CORRUPTION_ERROR_ACTION(M); - if (R != 0) { - if (RTCHECK(ok_address(M, R))) { - tchunkptr C0, C1; - R->parent = XP; - if ((C0 = X->child[0]) != 0) { - if (RTCHECK(ok_address(M, C0))) { - R->child[0] = C0; - C0->parent = R; - } - else - CORRUPTION_ERROR_ACTION(M); - } - if ((C1 = X->child[1]) != 0) { - if (RTCHECK(ok_address(M, C1))) { - R->child[1] = C1; - C1->parent = R; - } - else - CORRUPTION_ERROR_ACTION(M); - } - } - else - CORRUPTION_ERROR_ACTION(M); - } - } -} - -/* Unlink a chunk from a smallbin */ -inline void RNewAllocator::unlink_small_chunk(mstate M, mchunkptr P,size_t S) -{ - mchunkptr F = P->fd; - mchunkptr B = P->bk; - bindex_t I = small_index(S); - assert(P != B); - assert(P != F); - assert(chunksize(P) == small_index2size(I)); - if (F == B) - clear_smallmap(M, I); - else if (RTCHECK((F == smallbin_at(M,I) || ok_address(M, F)) && - (B == smallbin_at(M,I) || ok_address(M, B)))) { - F->bk = B; - B->fd = F; - } - else { - CORRUPTION_ERROR_ACTION(M); - } -} - -inline void RNewAllocator::unlink_chunk(mstate M, mchunkptr P, size_t S) -{ - if (is_small(S)) - unlink_small_chunk(M, P, S); - else - { - tchunkptr TP = (tchunkptr)(P); unlink_large_chunk(M, TP); - } -} - -inline void RNewAllocator::compute_tree_index(size_t S, bindex_t& I) -{ - size_t X = S >> TREEBIN_SHIFT; - if (X == 0) - I = 0; - else if (X > 0xFFFF) - I = NTREEBINS-1; - else { - unsigned int Y = (unsigned int)X; - unsigned int N = ((Y - 0x100) >> 16) & 8; - unsigned int K = (((Y <<= N) - 0x1000) >> 16) & 4; - N += K; - N += K = (((Y <<= K) - 0x4000) >> 16) & 2; - K = 14 - N + ((Y <<= K) >> 15); - I = (K << 1) + ((S >> (K + (TREEBIN_SHIFT-1)) & 1)); - } -} - -/* ------------------------- Operations on trees ------------------------- */ - -/* Insert chunk into tree */ -inline void RNewAllocator::insert_large_chunk(mstate M,tchunkptr X,size_t S) -{ - tbinptr* H; - bindex_t I; - compute_tree_index(S, I); - H = treebin_at(M, I); - X->index = I; - X->child[0] = X->child[1] = 0; - if (!treemap_is_marked(M, I)) { - mark_treemap(M, I); - *H = X; - X->parent = (tchunkptr)H; - X->fd = X->bk = X; - } - else { - tchunkptr T = *H; - size_t K = S << leftshift_for_tree_index(I); - for (;;) { - if (chunksize(T) != S) { - tchunkptr* C = &(T->child[(K >> (SIZE_T_BITSIZE-SIZE_T_ONE)) & 1]); - K <<= 1; - if (*C != 0) - T = *C; - else if (RTCHECK(ok_address(M, C))) { - *C = X; - X->parent = T; - X->fd = X->bk = X; - break; - } - else { - CORRUPTION_ERROR_ACTION(M); - break; - } - } - else { - tchunkptr F = T->fd; - if (RTCHECK(ok_address(M, T) && ok_address(M, F))) { - T->fd = F->bk = X; - X->fd = F; - X->bk = T; - X->parent = 0; - break; - } - else { - CORRUPTION_ERROR_ACTION(M); - break; - } - } - } - } -} - -/* - Unlink steps: - - 1. If x is a chained node, unlink it from its same-sized fd/bk links - and choose its bk node as its replacement. - 2. If x was the last node of its size, but not a leaf node, it must - be replaced with a leaf node (not merely one with an open left or - right), to make sure that lefts and rights of descendents - correspond properly to bit masks. We use the rightmost descendent - of x. We could use any other leaf, but this is easy to locate and - tends to counteract removal of leftmosts elsewhere, and so keeps - paths shorter than minimally guaranteed. This doesn't loop much - because on average a node in a tree is near the bottom. - 3. If x is the base of a chain (i.e., has parent links) relink - x's parent and children to x's replacement (or null if none). -*/ - -/* Replace dv node, binning the old one */ -/* Used only when dvsize known to be small */ -inline void RNewAllocator::replace_dv(mstate M, mchunkptr P, size_t S) -{ - size_t DVS = M->dvsize; - if (DVS != 0) { - mchunkptr DV = M->dv; - assert(is_small(DVS)); - insert_small_chunk(M, DV, DVS); - } - M->dvsize = S; - M->dv = P; -} - -inline void RNewAllocator::compute_bit2idx(binmap_t X,bindex_t& I) -{ - unsigned int Y = X - 1; - unsigned int K = Y >> (16-4) & 16; - unsigned int N = K; Y >>= K; - N += K = Y >> (8-3) & 8; Y >>= K; - N += K = Y >> (4-2) & 4; Y >>= K; - N += K = Y >> (2-1) & 2; Y >>= K; - N += K = Y >> (1-0) & 1; Y >>= K; - I = (bindex_t)(N + Y); -} - -void RNewAllocator::add_segment(mstate m, TUint8* tbase, size_t tsize, flag_t mmapped) { - /* Determine locations and sizes of segment, fenceposts, old top */ - TUint8* old_top = (TUint8*)m->top; - msegmentptr oldsp = segment_holding(m, old_top); - TUint8* old_end = oldsp->base + oldsp->size; - size_t ssize = pad_request(sizeof(struct malloc_segment)); - TUint8* rawsp = old_end - (ssize + FOUR_SIZE_T_SIZES + CHUNK_ALIGN_MASK); - size_t offset = align_offset(chunk2mem(rawsp)); - TUint8* asp = rawsp + offset; - TUint8* csp = (asp < (old_top + MIN_CHUNK_SIZE))? old_top : asp; - mchunkptr sp = (mchunkptr)csp; - msegmentptr ss = (msegmentptr)(chunk2mem(sp)); - mchunkptr tnext = chunk_plus_offset(sp, ssize); - mchunkptr p = tnext; - int nfences = 0; - - /* reset top to new space */ - init_top(m, (mchunkptr)tbase, tsize - TOP_FOOT_SIZE); - - /* Set up segment record */ - assert(is_aligned(ss)); - set_size_and_pinuse_of_inuse_chunk(m, sp, ssize); - *ss = m->seg; /* Push current record */ - m->seg.base = tbase; - m->seg.size = tsize; - m->seg.sflags = mmapped; - m->seg.next = ss; - - /* Insert trailing fenceposts */ - for (;;) { - mchunkptr nextp = chunk_plus_offset(p, SIZE_T_SIZE); - p->head = FENCEPOST_HEAD; - ++nfences; - if ((TUint8*)(&(nextp->head)) < old_end) - p = nextp; - else - break; - } - assert(nfences >= 2); - - /* Insert the rest of old top into a bin as an ordinary free chunk */ - if (csp != old_top) { - mchunkptr q = (mchunkptr)old_top; - size_t psize = csp - old_top; - mchunkptr tn = chunk_plus_offset(q, psize); - set_free_with_pinuse(q, psize, tn); - insert_chunk(m, q, psize); - } - - check_top_chunk(m, m->top); -} - - -void* RNewAllocator::prepend_alloc(mstate m, TUint8* newbase, TUint8* oldbase, - size_t nb) { - mchunkptr p = align_as_chunk(newbase); - mchunkptr oldfirst = align_as_chunk(oldbase); - size_t psize = (TUint8*)oldfirst - (TUint8*)p; - mchunkptr q = chunk_plus_offset(p, nb); - size_t qsize = psize - nb; - set_size_and_pinuse_of_inuse_chunk(m, p, nb); - - assert((TUint8*)oldfirst > (TUint8*)q); - assert(pinuse(oldfirst)); - assert(qsize >= MIN_CHUNK_SIZE); - - /* consolidate remainder with first chunk of old base */ - if (oldfirst == m->top) { - size_t tsize = m->topsize += qsize; - m->top = q; - q->head = tsize | PINUSE_BIT; - check_top_chunk(m, q); - } - else if (oldfirst == m->dv) { - size_t dsize = m->dvsize += qsize; - m->dv = q; - set_size_and_pinuse_of_free_chunk(q, dsize); - } - else { - if (!cinuse(oldfirst)) { - size_t nsize = chunksize(oldfirst); - unlink_chunk(m, oldfirst, nsize); - oldfirst = chunk_plus_offset(oldfirst, nsize); - qsize += nsize; - } - set_free_with_pinuse(q, qsize, oldfirst); - insert_chunk(m, q, qsize); - check_free_chunk(m, q); - } - - check_malloced_chunk(m, chunk2mem(p), nb); - return chunk2mem(p); -} - -void* RNewAllocator::mmap_alloc(mstate m, size_t nb) { - size_t mmsize = granularity_align(nb + SIX_SIZE_T_SIZES + CHUNK_ALIGN_MASK); - if (mmsize > nb) { /* Check for wrap around 0 */ - TUint8* mm = (TUint8*)(DIRECT_MMAP(mmsize)); - if (mm != CMFAIL) { - size_t offset = align_offset(chunk2mem(mm)); - size_t psize = mmsize - offset - MMAP_FOOT_PAD; - mchunkptr p = (mchunkptr)(mm + offset); - p->prev_foot = offset | IS_MMAPPED_BIT; - (p)->head = (psize|CINUSE_BIT); - mark_inuse_foot(m, p, psize); - chunk_plus_offset(p, psize)->head = FENCEPOST_HEAD; - chunk_plus_offset(p, psize+SIZE_T_SIZE)->head = 0; - - if (mm < m->least_addr) - m->least_addr = mm; - if ((m->footprint += mmsize) > m->max_footprint) - m->max_footprint = m->footprint; - assert(is_aligned(chunk2mem(p))); - check_mmapped_chunk(m, p); - return chunk2mem(p); - } - } - return 0; -} - - int RNewAllocator::sys_trim(mstate m, size_t pad) - { - size_t released = 0; - if (pad < MAX_REQUEST && is_initialized(m)) { - pad += TOP_FOOT_SIZE; /* ensure enough room for segment overhead */ - - if (m->topsize > pad) { - /* Shrink top space in granularity-size units, keeping at least one */ - size_t unit = mparams.granularity; - size_t extra = ((m->topsize - pad + (unit - SIZE_T_ONE)) / unit - SIZE_T_ONE) * unit; - msegmentptr sp = segment_holding(m, (TUint8*)m->top); - - if (!is_extern_segment(sp)) { - if (is_mmapped_segment(sp)) { - if (HAVE_MMAP && - sp->size >= extra && - !has_segment_link(m, sp)) { /* can't shrink if pinned */ - size_t newsize = sp->size - extra; - /* Prefer mremap, fall back to munmap */ - if ((CALL_MREMAP(sp->base, sp->size, newsize, 0) != MFAIL) || - (CALL_MUNMAP(sp->base + newsize, extra) == 0)) { - released = extra; - } - } - } - else if (HAVE_MORECORE) { - if (extra >= HALF_MAX_SIZE_T) /* Avoid wrapping negative */ - extra = (HALF_MAX_SIZE_T) + SIZE_T_ONE - unit; - ACQUIRE_MORECORE_LOCK(m); - { - /* Make sure end of memory is where we last set it. */ - TUint8* old_br = (TUint8*)(CALL_MORECORE(0)); - if (old_br == sp->base + sp->size) { - TUint8* rel_br = (TUint8*)(CALL_MORECORE(-extra)); - TUint8* new_br = (TUint8*)(CALL_MORECORE(0)); - if (rel_br != CMFAIL && new_br < old_br) - released = old_br - new_br; - } - } - RELEASE_MORECORE_LOCK(m); - } - } - - if (released != 0) { - sp->size -= released; - m->footprint -= released; - init_top(m, m->top, m->topsize - released); - check_top_chunk(m, m->top); - } - } - - /* Unmap any unused mmapped segments */ - if (HAVE_MMAP) - released += release_unused_segments(m); - - /* On failure, disable autotrim to avoid repeated failed future calls */ - if (released == 0) - m->trim_check = MAX_SIZE_T; - } - - return (released != 0)? 1 : 0; - } - - inline int RNewAllocator::has_segment_link(mstate m, msegmentptr ss) - { - msegmentptr sp = &m->seg; - for (;;) { - if ((TUint8*)sp >= ss->base && (TUint8*)sp < ss->base + ss->size) - return 1; - if ((sp = sp->next) == 0) - return 0; - } - } - - /* Unmap and unlink any mmapped segments that don't contain used chunks */ - size_t RNewAllocator::release_unused_segments(mstate m) - { - size_t released = 0; - msegmentptr pred = &m->seg; - msegmentptr sp = pred->next; - while (sp != 0) { - TUint8* base = sp->base; - size_t size = sp->size; - msegmentptr next = sp->next; - if (is_mmapped_segment(sp) && !is_extern_segment(sp)) { - mchunkptr p = align_as_chunk(base); - size_t psize = chunksize(p); - /* Can unmap if first chunk holds entire segment and not pinned */ - if (!cinuse(p) && (TUint8*)p + psize >= base + size - TOP_FOOT_SIZE) { - tchunkptr tp = (tchunkptr)p; - assert(segment_holds(sp, (TUint8*)sp)); - if (p == m->dv) { - m->dv = 0; - m->dvsize = 0; - } - else { - unlink_large_chunk(m, tp); - } - if (CALL_MUNMAP(base, size) == 0) { - released += size; - m->footprint -= size; - /* unlink obsoleted record */ - sp = pred; - sp->next = next; - } - else { /* back out if cannot unmap */ - insert_large_chunk(m, tp, psize); - } - } - } - pred = sp; - sp = next; - }/*End of while*/ - return released; - } - /* Realloc using mmap */ - inline mchunkptr RNewAllocator::mmap_resize(mstate m, mchunkptr oldp, size_t nb) - { - size_t oldsize = chunksize(oldp); - if (is_small(nb)) /* Can't shrink mmap regions below small size */ - return 0; - /* Keep old chunk if big enough but not too big */ - if (oldsize >= nb + SIZE_T_SIZE && - (oldsize - nb) <= (mparams.granularity << 1)) - return oldp; - else { - size_t offset = oldp->prev_foot & ~IS_MMAPPED_BIT; - size_t oldmmsize = oldsize + offset + MMAP_FOOT_PAD; - size_t newmmsize = granularity_align(nb + SIX_SIZE_T_SIZES + - CHUNK_ALIGN_MASK); - TUint8* cp = (TUint8*)CALL_MREMAP((char*)oldp - offset, - oldmmsize, newmmsize, 1); - if (cp != CMFAIL) { - mchunkptr newp = (mchunkptr)(cp + offset); - size_t psize = newmmsize - offset - MMAP_FOOT_PAD; - newp->head = (psize|CINUSE_BIT); - mark_inuse_foot(m, newp, psize); - chunk_plus_offset(newp, psize)->head = FENCEPOST_HEAD; - chunk_plus_offset(newp, psize+SIZE_T_SIZE)->head = 0; - - if (cp < m->least_addr) - m->least_addr = cp; - if ((m->footprint += newmmsize - oldmmsize) > m->max_footprint) - m->max_footprint = m->footprint; - check_mmapped_chunk(m, newp); - return newp; - } - } - return 0; - } - - -void RNewAllocator::Init_Dlmalloc(size_t capacity, int locked, size_t aTrimThreshold) - { - memset(gm,0,sizeof(malloc_state)); - init_mparams(aTrimThreshold); /* Ensure pagesize etc initialized */ - // The maximum amount that can be allocated can be calculated as:- - // 2^sizeof(size_t) - sizeof(malloc_state) - TOP_FOOT_SIZE - page size (all accordingly padded) - // If the capacity exceeds this, no allocation will be done. - gm->seg.base = gm->least_addr = iBase; - gm->seg.size = capacity; - gm->seg.sflags = !IS_MMAPPED_BIT; - set_lock(gm, locked); - gm->magic = mparams.magic; - init_bins(gm); - init_top(gm, (mchunkptr)iBase, capacity - TOP_FOOT_SIZE); - } - -void* RNewAllocator::dlmalloc(size_t bytes) { - /* - Basic algorithm: - If a small request (< 256 bytes minus per-chunk overhead): - 1. If one exists, use a remainderless chunk in associated smallbin. - (Remainderless means that there are too few excess bytes to - represent as a chunk.) - 2. If it is big enough, use the dv chunk, which is normally the - chunk adjacent to the one used for the most recent small request. - 3. If one exists, split the smallest available chunk in a bin, - saving remainder in dv. - 4. If it is big enough, use the top chunk. - 5. If available, get memory from system and use it - Otherwise, for a large request: - 1. Find the smallest available binned chunk that fits, and use it - if it is better fitting than dv chunk, splitting if necessary. - 2. If better fitting than any binned chunk, use the dv chunk. - 3. If it is big enough, use the top chunk. - 4. If request size >= mmap threshold, try to directly mmap this chunk. - 5. If available, get memory from system and use it - - The ugly goto's here ensure that postaction occurs along all paths. - */ - if (!PREACTION(gm)) { - void* mem; - size_t nb; - if (bytes <= MAX_SMALL_REQUEST) { - bindex_t idx; - binmap_t smallbits; - nb = (bytes < MIN_REQUEST)? MIN_CHUNK_SIZE : pad_request(bytes); - idx = small_index(nb); - smallbits = gm->smallmap >> idx; - - if ((smallbits & 0x3U) != 0) { /* Remainderless fit to a smallbin. */ - mchunkptr b, p; - idx += ~smallbits & 1; /* Uses next bin if idx empty */ - b = smallbin_at(gm, idx); - p = b->fd; - assert(chunksize(p) == small_index2size(idx)); - unlink_first_small_chunk(gm, b, p, idx); - set_inuse_and_pinuse(gm, p, small_index2size(idx)); - mem = chunk2mem(p); - check_malloced_chunk(gm, mem, nb); - goto postaction; - } - - else if (nb > gm->dvsize) { - if (smallbits != 0) { /* Use chunk in next nonempty smallbin */ - mchunkptr b, p, r; - size_t rsize; - bindex_t i; - binmap_t leftbits = (smallbits << idx) & left_bits(idx2bit(idx)); - binmap_t leastbit = least_bit(leftbits); - compute_bit2idx(leastbit, i); - b = smallbin_at(gm, i); - p = b->fd; - assert(chunksize(p) == small_index2size(i)); - unlink_first_small_chunk(gm, b, p, i); - rsize = small_index2size(i) - nb; - /* Fit here cannot be remainderless if 4byte sizes */ - if (SIZE_T_SIZE != 4 && rsize < MIN_CHUNK_SIZE) - set_inuse_and_pinuse(gm, p, small_index2size(i)); - else { - set_size_and_pinuse_of_inuse_chunk(gm, p, nb); - r = chunk_plus_offset(p, nb); - set_size_and_pinuse_of_free_chunk(r, rsize); - replace_dv(gm, r, rsize); - } - mem = chunk2mem(p); - check_malloced_chunk(gm, mem, nb); - goto postaction; - } - - else if (gm->treemap != 0 && (mem = tmalloc_small(gm, nb)) != 0) { - check_malloced_chunk(gm, mem, nb); - goto postaction; - } - } - } - else if (bytes >= MAX_REQUEST) - nb = MAX_SIZE_T; /* Too big to allocate. Force failure (in sys alloc) */ - else { - nb = pad_request(bytes); - if (gm->treemap != 0 && (mem = tmalloc_large(gm, nb)) != 0) { - check_malloced_chunk(gm, mem, nb); - goto postaction; - } - } - - if (nb <= gm->dvsize) { - size_t rsize = gm->dvsize - nb; - mchunkptr p = gm->dv; - if (rsize >= MIN_CHUNK_SIZE) { /* split dv */ - mchunkptr r = gm->dv = chunk_plus_offset(p, nb); - gm->dvsize = rsize; - set_size_and_pinuse_of_free_chunk(r, rsize); - set_size_and_pinuse_of_inuse_chunk(gm, p, nb); - } - else { /* exhaust dv */ - size_t dvs = gm->dvsize; - gm->dvsize = 0; - gm->dv = 0; - set_inuse_and_pinuse(gm, p, dvs); - } - mem = chunk2mem(p); - check_malloced_chunk(gm, mem, nb); - goto postaction; - } - - else if (nb < gm->topsize) { /* Split top */ - size_t rsize = gm->topsize -= nb; - mchunkptr p = gm->top; - mchunkptr r = gm->top = chunk_plus_offset(p, nb); - r->head = rsize | PINUSE_BIT; - set_size_and_pinuse_of_inuse_chunk(gm, p, nb); - mem = chunk2mem(p); - check_top_chunk(gm, gm->top); - check_malloced_chunk(gm, mem, nb); - goto postaction; - } - - mem = sys_alloc(gm, nb); - - postaction: - POSTACTION(gm); - return mem; - } - - return 0; -} - -void RNewAllocator::dlfree(void* mem) { - /* - Consolidate freed chunks with preceeding or succeeding bordering - free chunks, if they exist, and then place in a bin. Intermixed - with special cases for top, dv, mmapped chunks, and usage errors. - */ - - if (mem != 0) - { - mchunkptr p = mem2chunk(mem); -#if FOOTERS - mstate fm = get_mstate_for(p); - if (!ok_magic(fm)) - { - USAGE_ERROR_ACTION(fm, p); - return; - } -#else /* FOOTERS */ -#define fm gm -#endif /* FOOTERS */ - - if (!PREACTION(fm)) - { - check_inuse_chunk(fm, p); - if (RTCHECK(ok_address(fm, p) && ok_cinuse(p))) - { - size_t psize = chunksize(p); - iTotalAllocSize -= psize; // TODO DAN - mchunkptr next = chunk_plus_offset(p, psize); - if (!pinuse(p)) - { - size_t prevsize = p->prev_foot; - if ((prevsize & IS_MMAPPED_BIT) != 0) - { - prevsize &= ~IS_MMAPPED_BIT; - psize += prevsize + MMAP_FOOT_PAD; - /*TInt tmp = TOP_FOOT_SIZE; - TUint8* top = (TUint8*)fm->top + fm->topsize + 40; - if((top == (TUint8*)p)&& fm->topsize > 4096) - { - fm->topsize += psize; - msegmentptr sp = segment_holding(fm, (TUint8*)fm->top); - sp->size+=psize; - if (should_trim(fm, fm->topsize)) - sys_trim(fm, 0); - goto postaction; - } - else*/ - { - if (CALL_MUNMAP((char*)p - prevsize, psize) == 0) - fm->footprint -= psize; - goto postaction; - } - } - else - { - mchunkptr prev = chunk_minus_offset(p, prevsize); - psize += prevsize; - p = prev; - if (RTCHECK(ok_address(fm, prev))) - { /* consolidate backward */ - if (p != fm->dv) - { - unlink_chunk(fm, p, prevsize); - } - else if ((next->head & INUSE_BITS) == INUSE_BITS) - { - fm->dvsize = psize; - set_free_with_pinuse(p, psize, next); - goto postaction; - } - } - else - goto erroraction; - } - } - - if (RTCHECK(ok_next(p, next) && ok_pinuse(next))) - { - if (!cinuse(next)) - { /* consolidate forward */ - if (next == fm->top) - { - size_t tsize = fm->topsize += psize; - fm->top = p; - p->head = tsize | PINUSE_BIT; - if (p == fm->dv) - { - fm->dv = 0; - fm->dvsize = 0; - } - if (should_trim(fm, tsize)) - sys_trim(fm, 0); - goto postaction; - } - else if (next == fm->dv) - { - size_t dsize = fm->dvsize += psize; - fm->dv = p; - set_size_and_pinuse_of_free_chunk(p, dsize); - goto postaction; - } - else - { - size_t nsize = chunksize(next); - psize += nsize; - unlink_chunk(fm, next, nsize); - set_size_and_pinuse_of_free_chunk(p, psize); - if (p == fm->dv) - { - fm->dvsize = psize; - goto postaction; - } - } - } - else - set_free_with_pinuse(p, psize, next); - insert_chunk(fm, p, psize); - check_free_chunk(fm, p); - goto postaction; - } - } -erroraction: - USAGE_ERROR_ACTION(fm, p); -postaction: - POSTACTION(fm); - } - } -#if !FOOTERS -#undef fm -#endif /* FOOTERS */ -} - -void* RNewAllocator::dlrealloc(void* oldmem, size_t bytes) { - if (oldmem == 0) - return dlmalloc(bytes); -#ifdef REALLOC_ZERO_BYTES_FREES - if (bytes == 0) { - dlfree(oldmem); - return 0; - } -#endif /* REALLOC_ZERO_BYTES_FREES */ - else { -#if ! FOOTERS - mstate m = gm; -#else /* FOOTERS */ - mstate m = get_mstate_for(mem2chunk(oldmem)); - if (!ok_magic(m)) { - USAGE_ERROR_ACTION(m, oldmem); - return 0; - } -#endif /* FOOTERS */ - return internal_realloc(m, oldmem, bytes); - } -} - - -int RNewAllocator::dlmalloc_trim(size_t pad) { - int result = 0; - if (!PREACTION(gm)) { - result = sys_trim(gm, pad); - POSTACTION(gm); - } - return result; -} - -size_t RNewAllocator::dlmalloc_footprint(void) { - return gm->footprint; -} - -size_t RNewAllocator::dlmalloc_max_footprint(void) { - return gm->max_footprint; -} - -#if !NO_MALLINFO -struct mallinfo RNewAllocator::dlmallinfo(void) { - return internal_mallinfo(gm); -} -#endif /* NO_MALLINFO */ - -void RNewAllocator::dlmalloc_stats() { - internal_malloc_stats(gm); -} - -int RNewAllocator::dlmallopt(int param_number, int value) { - return change_mparam(param_number, value); -} - -//inline slab* slab::slabfor(void* p) -inline slab* slab::slabfor( const void* p) - {return (slab*)(floor(p, slabsize));} - - -void RNewAllocator::tree_remove(slab* s) -{ - slab** r = s->parent; - slab* c1 = s->child1; - slab* c2 = s->child2; - for (;;) - { - if (!c2) - { - *r = c1; - if (c1) - c1->parent = r; - return; - } - if (!c1) - { - *r = c2; - c2->parent = r; - return; - } - if (c1 > c2) - { - slab* c3 = c1; - c1 = c2; - c2 = c3; - } - slab* newc2 = c1->child2; - *r = c1; - c1->parent = r; - c1->child2 = c2; - c2->parent = &c1->child2; - s = c1; - c1 = s->child1; - c2 = newc2; - r = &s->child1; - } -} -void RNewAllocator::tree_insert(slab* s,slab** r) - { - slab* n = *r; - for (;;) - { - if (!n) - { // tree empty - *r = s; - s->parent = r; - s->child1 = s->child2 = 0; - break; - } - if (s < n) - { // insert between parent and n - *r = s; - s->parent = r; - s->child1 = n; - s->child2 = 0; - n->parent = &s->child1; - break; - } - slab* c1 = n->child1; - slab* c2 = n->child2; - if (c1 < c2) - { - r = &n->child1; - n = c1; - } - else - { - r = &n->child2; - n = c2; - } - } - } -void* RNewAllocator::allocnewslab(slabset& allocator) -// -// Acquire and initialise a new slab, returning a cell from the slab -// The strategy is: -// 1. Use the lowest address free slab, if available. This is done by using the lowest slab -// in the page at the root of the partial_page heap (which is address ordered). If the -// is now fully used, remove it from the partial_page heap. -// 2. Allocate a new page for slabs if no empty slabs are available -// -{ - page* p = page::pagefor(partial_page); - if (!p) - return allocnewpage(allocator); - - unsigned h = p->slabs[0].header; - unsigned pagemap = header_pagemap(h); - ASSERT(&p->slabs[hibit(pagemap)] == partial_page); - - unsigned slabix = lowbit(pagemap); - p->slabs[0].header = h &~ (0x100<slabs[slabix]); -} - -/**Defination of this functionis not there in proto code***/ -#if 0 -void RNewAllocator::partial_insert(slab* s) - { - // slab has had first cell freed and needs to be linked back into partial tree - slabset& ss = slaballoc[sizemap[s->clz]]; - - ASSERT(s->used == slabfull); - s->used = ss.fulluse - s->clz; // full-1 loading - tree_insert(s,&ss.partial); - checktree(ss.partial); - } -/**Defination of this functionis not there in proto code***/ -#endif - -void* RNewAllocator::allocnewpage(slabset& allocator) -// -// Acquire and initialise a new page, returning a cell from a new slab -// The partial_page tree is empty (otherwise we'd have used a slab from there) -// The partial_page link is put in the highest addressed slab in the page, and the -// lowest addressed slab is used to fulfill the allocation request -// -{ - page* p = spare_page; - if (p) - spare_page = 0; - else - { - p = static_cast(map(0,pagesize)); - if (!p) - return 0; - } - ASSERT(p == floor(p,pagesize)); - p->slabs[0].header = ((1<<3) + (1<<2) + (1<<1))<<8; // set pagemap - p->slabs[3].parent = &partial_page; - p->slabs[3].child1 = p->slabs[3].child2 = 0; - partial_page = &p->slabs[3]; - return initnewslab(allocator,&p->slabs[0]); -} - -void RNewAllocator::freepage(page* p) -// -// Release an unused page to the OS -// A single page is cached for reuse to reduce thrashing -// the OS allocator. -// -{ - ASSERT(ceiling(p,pagesize) == p); - if (!spare_page) - { - spare_page = p; - return; - } - unmap(p,pagesize); -} - -void RNewAllocator::freeslab(slab* s) -// -// Release an empty slab to the slab manager -// The strategy is: -// 1. The page containing the slab is checked to see the state of the other slabs in the page by -// inspecting the pagemap field in the header of the first slab in the page. -// 2. The pagemap is updated to indicate the new unused slab -// 3. If this is the only unused slab in the page then the slab header is used to add the page to -// the partial_page tree/heap -// 4. If all the slabs in the page are now unused the page is release back to the OS -// 5. If this slab has a higher address than the one currently used to track this page in -// the partial_page heap, the linkage is moved to the new unused slab -// -{ - tree_remove(s); - checktree(*s->parent); - ASSERT(header_usedm4(s->header) == header_size(s->header)-4); - CHECK(s->header |= 0xFF00000); // illegal value for debug purposes - page* p = page::pagefor(s); - unsigned h = p->slabs[0].header; - int slabix = s - &p->slabs[0]; - unsigned pagemap = header_pagemap(h); - p->slabs[0].header = h | (0x100<slabs[hibit(pagemap)]; - pagemap ^= (1< sl) - { // replace current link with new one. Address-order tree so position stays the same - slab** r = sl->parent; - slab* c1 = sl->child1; - slab* c2 = sl->child2; - s->parent = r; - s->child1 = c1; - s->child2 = c2; - *r = s; - if (c1) - c1->parent = &s->child1; - if (c2) - c2->parent = &s->child2; - } - CHECK(if (s < sl) s=sl); - } - ASSERT(header_pagemap(p->slabs[0].header) != 0); - ASSERT(hibit(header_pagemap(p->slabs[0].header)) == unsigned(s - &p->slabs[0])); -} - -void RNewAllocator::slab_init() -{ - slab_threshold=0; - partial_page = 0; - spare_page = 0; - memset(&sizemap[0],0xff,sizeof(sizemap)); - memset(&slaballoc[0],0,sizeof(slaballoc)); -} - -void RNewAllocator::slab_config(unsigned slabbitmap) -{ - ASSERT((slabbitmap & ~okbits) == 0); - ASSERT(maxslabsize <= 60); - - unsigned char ix = 0xff; - unsigned bit = 1<<((maxslabsize>>2)-1); - for (int sz = maxslabsize; sz >= 0; sz -= 4, bit >>= 1) - { - if (slabbitmap & bit) - { - if (ix == 0xff) - slab_threshold=sz+1; - ix = (sz>>2)-1; - } - sizemap[sz>>2] = ix; - } -} - -void* RNewAllocator::slab_allocate(slabset& ss) -// -// Allocate a cell from the given slabset -// Strategy: -// 1. Take the partially full slab at the top of the heap (lowest address). -// 2. If there is no such slab, allocate from a new slab -// 3. If the slab has a non-empty freelist, pop the cell from the front of the list and update the slab -// 4. Otherwise, if the slab is not full, return the cell at the end of the currently used region of -// the slab, updating the slab -// 5. Otherwise, release the slab from the partial tree/heap, marking it as 'floating' and go back to -// step 1 -// -{ - for (;;) - { - slab *s = ss.partial; - if (!s) - break; - unsigned h = s->header; - unsigned free = h & 0xff; // extract free cell positiong - if (free) - { - ASSERT(((free<<2)-sizeof(slabhdr))%header_size(h) == 0); - void* p = offset(s,free<<2); - free = *(unsigned char*)p; // get next pos in free list - h += (h&0x3C000)<<6; // update usedm4 - h &= ~0xff; - h |= free; // update freelist - s->header = h; - ASSERT(header_free(h) == 0 || ((header_free(h)<<2)-sizeof(slabhdr))%header_size(h) == 0); - ASSERT(header_usedm4(h) <= 0x3F8u); - ASSERT((header_usedm4(h)+4)%header_size(h) == 0); - return p; - } - unsigned h2 = h + ((h&0x3C000)<<6); - if (h2 < 0xfc00000) - { - ASSERT((header_usedm4(h2)+4)%header_size(h2) == 0); - s->header = h2; - return offset(s,(h>>18) + sizeof(unsigned) + sizeof(slabhdr)); - } - h |= 0x80000000; // mark the slab as full-floating - s->header = h; - tree_remove(s); - checktree(ss.partial); - // go back and try the next slab... - } - // no partial slabs found, so allocate from a new slab - return allocnewslab(ss); -} - -void RNewAllocator::slab_free(void* p) -// -// Free a cell from the slab allocator -// Strategy: -// 1. Find the containing slab (round down to nearest 1KB boundary) -// 2. Push the cell into the slab's freelist, and update the slab usage count -// 3. If this is the last allocated cell, free the slab to the main slab manager -// 4. If the slab was full-floating then insert the slab in it's respective partial tree -// -{ - ASSERT(lowbits(p,3)==0); - slab* s = slab::slabfor(p); - - unsigned pos = lowbits(p, slabsize); - unsigned h = s->header; - ASSERT(header_usedm4(h) != 0x3fC); // slab is empty already - ASSERT((pos-sizeof(slabhdr))%header_size(h) == 0); - *(unsigned char*)p = (unsigned char)h; - h &= ~0xFF; - h |= (pos>>2); - unsigned size = h & 0x3C000; - iTotalAllocSize -= size; // TODO DAN - if (int(h) >= 0) - { - h -= size<<6; - if (int(h)>=0) - { - s->header = h; - return; - } - freeslab(s); - return; - } - h -= size<<6; - h &= ~0x80000000; - s->header = h; - slabset& ss = slaballoc[(size>>14)-1]; - tree_insert(s,&ss.partial); - checktree(ss.partial); -} - -void* RNewAllocator::initnewslab(slabset& allocator, slab* s) -// -// initialise an empty slab for this allocator and return the fist cell -// pre-condition: the slabset has no partial slabs for allocation -// -{ - ASSERT(allocator.partial==0); - TInt size = 4 + ((&allocator-&slaballoc[0])<<2); // infer size from slab allocator address - unsigned h = s->header & 0xF00; // preserve pagemap only - h |= (size<<12); // set size - h |= (size-4)<<18; // set usedminus4 to one object minus 4 - s->header = h; - allocator.partial = s; - s->parent = &allocator.partial; - s->child1 = s->child2 = 0; - return offset(s,sizeof(slabhdr)); -} - -TAny* RNewAllocator::SetBrk(TInt32 aDelta) -{ - if (iFlags & EFixedSize) - return MFAIL; - - if (aDelta < 0) - { - unmap(offset(iTop, aDelta), -aDelta); - } - else if (aDelta > 0) - { - if (!map(iTop, aDelta)) - return MFAIL; - } - void * p =iTop; - iTop = offset(iTop, aDelta); - return p; -} - -void* RNewAllocator::map(void* p,unsigned sz) -// -// allocate pages in the chunk -// if p is NULL, find an allocate the required number of pages (which must lie in the lower half) -// otherwise commit the pages specified -// -{ -ASSERT(p == floor(p, pagesize)); -ASSERT(sz == ceiling(sz, pagesize)); -ASSERT(sz > 0); - - if (iChunkSize + sz > iMaxLength) - return 0; - - RChunk chunk; - chunk.SetHandle(iChunkHandle); - if (p) - { - TInt r = chunk.Commit(iOffset + ptrdiff(p, this),sz); - if (r < 0) - return 0; - //ASSERT(p = offset(this, r - iOffset)); - } - else - { - TInt r = chunk.Allocate(sz); - if (r < 0) - return 0; - if (r > iOffset) - { - // can't allow page allocations in DL zone - chunk.Decommit(r, sz); - return 0; - } - p = offset(this, r - iOffset); - } - iChunkSize += sz; -#ifdef TRACING_HEAPS - if(iChunkSize > iHighWaterMark) - { - iHighWaterMark = ceiling(iChunkSize,16*pagesize); - - - RChunk chunk; - chunk.SetHandle(iChunkHandle); - TKName chunk_name; - chunk.FullName(chunk_name); - BTraceContextBig(BTrace::ETest1, 4, 44, chunk_name.Ptr(), chunk_name.Size()); - - TUint32 traceData[6]; - traceData[0] = iChunkHandle; - traceData[1] = iMinLength; - traceData[2] = iMaxLength; - traceData[3] = sz; - traceData[4] = iChunkSize; - traceData[5] = iHighWaterMark; - BTraceContextN(BTrace::ETest1, 3, (TUint32)this, 33, traceData, sizeof(traceData)); - } -#endif - if (iChunkSize >= slab_init_threshold) - { // set up slab system now that heap is large enough - slab_config(slab_config_bits); - slab_init_threshold = KMaxTUint; - } - return p; -} - -void* RNewAllocator::remap(void* p,unsigned oldsz,unsigned sz) -{ - if (oldsz > sz) - { // shrink - unmap(offset(p,sz), oldsz-sz); - } - else if (oldsz < sz) - { // grow, try and do this in place first - if (!map(offset(p, oldsz), sz-oldsz)) - { - // need to allocate-copy-free - void* newp = map(0, sz); - memcpy(newp, p, oldsz); - unmap(p,oldsz); - return newp; - } - } - return p; -} - -void RNewAllocator::unmap(void* p,unsigned sz) -{ - ASSERT(p == floor(p, pagesize)); - ASSERT(sz == ceiling(sz, pagesize)); - ASSERT(sz > 0); - - RChunk chunk; - chunk.SetHandle(iChunkHandle); - TInt r = chunk.Decommit(ptrdiff(p, offset(this,-iOffset)), sz); - //TInt offset = (TUint8*)p-(TUint8*)chunk.Base(); - //TInt r = chunk.Decommit(offset,sz); - - ASSERT(r >= 0); - iChunkSize -= sz; -} - -void RNewAllocator::paged_init(unsigned pagepower) - { - if (pagepower == 0) - pagepower = 31; - else if (pagepower < minpagepower) - pagepower = minpagepower; - page_threshold = pagepower; - for (int i=0;ipage == 0) - { - void* p = map(0, nbytes); - if (!p) - return 0; - c->page = p; - c->size = nbytes; - return p; - } - } - // use a cell header - nbytes = ceiling(size + cellalign, pagesize); - void* p = map(0, nbytes); - if (!p) - return 0; - *static_cast(p) = nbytes; - return offset(p, cellalign); -} - -void* RNewAllocator::paged_reallocate(void* p, unsigned size) -{ - if (lowbits(p, pagesize) == 0) - { // continue using descriptor - pagecell* c = paged_descriptor(p); - unsigned nbytes = ceiling(size, pagesize); - void* newp = remap(p, c->size, nbytes); - if (!newp) - return 0; - c->page = newp; - c->size = nbytes; - return newp; - } - else - { // use a cell header - ASSERT(lowbits(p,pagesize) == cellalign); - p = offset(p,-int(cellalign)); - unsigned nbytes = ceiling(size + cellalign, pagesize); - unsigned obytes = *static_cast(p); - void* newp = remap(p, obytes, nbytes); - if (!newp) - return 0; - *static_cast(newp) = nbytes; - return offset(newp, cellalign); - } -} - -void RNewAllocator::paged_free(void* p) -{ - if (lowbits(p,pagesize) == 0) - { // check pagelist - pagecell* c = paged_descriptor(p); - - iTotalAllocSize -= c->size; // TODO DAN - - unmap(p, c->size); - c->page = 0; - c->size = 0; - } - else - { // check page header - unsigned* page = static_cast(offset(p,-int(cellalign))); - unsigned size = *page; - unmap(page,size); - } -} - -pagecell* RNewAllocator::paged_descriptor(const void* p) const -{ - ASSERT(lowbits(p,pagesize) == 0); - // Double casting to keep the compiler happy. Seems to think we can trying to - // change a non-const member (pagelist) in a const function - pagecell* c = (pagecell*)((void*)pagelist); - pagecell* e = c + npagecells; - for (;;) - { - ASSERT(c!=e); - if (c->page == p) - return c; - ++c; - } -} - -RNewAllocator* RNewAllocator::FixedHeap(TAny* aBase, TInt aMaxLength, TInt aAlign, TBool aSingleThread) -/** -Creates a fixed length heap at a specified location. - -On successful return from this function, aMaxLength bytes are committed by the chunk. -The heap cannot be extended. - -@param aBase A pointer to the location where the heap is to be constructed. -@param aMaxLength The length of the heap. If the supplied value is less - than KMinHeapSize, it is discarded and the value KMinHeapSize - is used instead. -@param aAlign The alignment of heap cells. -@param aSingleThread Indicates whether single threaded or not. - -@return A pointer to the new heap, or NULL if the heap could not be created. - -@panic USER 56 if aMaxLength is negative. -*/ -// -// Force construction of the fixed memory. -// - { - - __ASSERT_ALWAYS(aMaxLength>=0, ::Panic(ETHeapMaxLengthNegative)); - if (aMaxLengthiLock.CreateLocal(); - if (r!=KErrNone) - return NULL; - h->iHandles = (TInt*)&h->iLock; - h->iHandleCount = 1; - } - return h; - } - -RNewAllocator* RNewAllocator::ChunkHeap(const TDesC* aName, TInt aMinLength, TInt aMaxLength, TInt aGrowBy, TInt aAlign, TBool aSingleThread) -/** -Creates a heap in a local or global chunk. - -The chunk hosting the heap can be local or global. - -A local chunk is one which is private to the process creating it and is not -intended for access by other user processes. -A global chunk is one which is visible to all processes. - -The hosting chunk is local, if the pointer aName is NULL, otherwise -the hosting chunk is global and the descriptor *aName is assumed to contain -the name to be assigned to it. - -Ownership of the host chunk is vested in the current process. - -A minimum and a maximum size for the heap can be specified. On successful -return from this function, the size of the heap is at least aMinLength. -If subsequent requests for allocation of memory from the heap cannot be -satisfied by compressing the heap, the size of the heap is extended in -increments of aGrowBy until the request can be satisfied. Attempts to extend -the heap causes the size of the host chunk to be adjusted. - -Note that the size of the heap cannot be adjusted by more than aMaxLength. - -@param aName If NULL, the function constructs a local chunk to host - the heap. - If not NULL, a pointer to a descriptor containing the name - to be assigned to the global chunk hosting the heap. -@param aMinLength The minimum length of the heap. -@param aMaxLength The maximum length to which the heap can grow. - If the supplied value is less than KMinHeapSize, then it - is discarded and the value KMinHeapSize used instead. -@param aGrowBy The increments to the size of the host chunk. If a value is - not explicitly specified, the value KMinHeapGrowBy is taken - by default -@param aAlign The alignment of heap cells. -@param aSingleThread Indicates whether single threaded or not. - -@return A pointer to the new heap or NULL if the heap could not be created. - -@panic USER 41 if aMinLength is greater than the supplied value of aMaxLength. -@panic USER 55 if aMinLength is negative. -@panic USER 56 if aMaxLength is negative. -*/ -// -// Allocate a Chunk of the requested size and force construction. -// - { - - __ASSERT_ALWAYS(aMinLength>=0, ::Panic(ETHeapMinLengthNegative)); - __ASSERT_ALWAYS(aMaxLength>=aMinLength, ::Panic(ETHeapCreateMaxLessThanMin)); - if (aMaxLength=0, ::Panic(ETHeapMinLengthNegative)); - __ASSERT_ALWAYS(maxLength>=aMinLength, ::Panic(ETHeapCreateMaxLessThanMin)); - aMinLength = _ALIGN_UP(Max(aMinLength, (TInt)sizeof(RNewAllocator) + min_cell) + aOffset, round_up); - - // the new allocator uses a disconnected chunk so must commit the initial allocation - // with Commit() instead of Adjust() - // TInt r=aChunk.Adjust(aMinLength); - //TInt r = aChunk.Commit(aOffset, aMinLength); - - aOffset = maxLength; - //TInt MORE_CORE_OFFSET = maxLength/2; - //TInt r = aChunk.Commit(MORE_CORE_OFFSET, aMinLength); - TInt r = aChunk.Commit(aOffset, aMinLength); - - if (r!=KErrNone) - return NULL; - - RNewAllocator* h = new (aChunk.Base() + aOffset) RNewAllocator(aChunk.Handle(), aOffset, aMinLength, maxLength, aGrowBy, aAlign, aSingleThread); - //RNewAllocator* h = new (aChunk.Base() + MORE_CORE_OFFSET) RNewAllocator(aChunk.Handle(), aOffset, aMinLength, maxLength, aGrowBy, aAlign, aSingleThread); - - TBool duplicateLock = EFalse; - if (!aSingleThread) - { - duplicateLock = aMode & UserHeap::EChunkHeapSwitchTo; - if(h->iLock.CreateLocal(duplicateLock ? EOwnerThread : EOwnerProcess)!=KErrNone) - { - h->iChunkHandle = 0; - return NULL; - } - } - - if (aMode & UserHeap::EChunkHeapSwitchTo) - User::SwitchHeap(h); - - h->iHandles = &h->iChunkHandle; - if (!aSingleThread) - { - // now change the thread-relative chunk/semaphore handles into process-relative handles - h->iHandleCount = 2; - if(duplicateLock) - { - RHandleBase s = h->iLock; - r = h->iLock.Duplicate(RThread()); - s.Close(); - } - if (r==KErrNone && (aMode & UserHeap::EChunkHeapDuplicate)) - { - r = ((RChunk*)&h->iChunkHandle)->Duplicate(RThread()); - if (r!=KErrNone) - h->iLock.Close(), h->iChunkHandle=0; - } - } - else - { - h->iHandleCount = 1; - if (aMode & UserHeap::EChunkHeapDuplicate) - r = ((RChunk*)&h->iChunkHandle)->Duplicate(RThread(), EOwnerThread); - } - - // return the heap address - return (r==KErrNone) ? h : NULL; - } - - -#define UserTestDebugMaskBit(bit) (TBool)(UserSvr::DebugMask(bit>>5) & (1<<(bit&31))) - -// Hack to get access to TChunkCreateInfo internals outside of the kernel -class TFakeChunkCreateInfo: public TChunkCreateInfo - { -public: - void SetThreadNewAllocator(TInt aInitialSize, TInt aMaxSize, const TDesC& aName) - { - iType = TChunkCreate::ENormal | TChunkCreate::EDisconnected | TChunkCreate::EData; - iMaxSize = aMaxSize * 2; - - iInitialBottom = 0; - iInitialTop = aInitialSize; - iAttributes = TChunkCreate::ELocalNamed; - iName = &aName; - iOwnerType = EOwnerThread; - } - }; - -_LIT(KLitDollarHeap,"$HEAP"); -TInt RNewAllocator::CreateThreadHeap(SStdEpocThreadCreateInfo& aInfo, RNewAllocator*& aHeap, TInt aAlign, TBool aSingleThread) -/** -@internalComponent -*/ -// -// Create a user-side heap -// - { - TInt page_size; - GET_PAGE_SIZE(page_size); - TInt minLength = _ALIGN_UP(aInfo.iHeapInitialSize, page_size); - TInt maxLength = Max(aInfo.iHeapMaxSize, minLength); - if (UserTestDebugMaskBit(96)) // 96 == KUSERHEAPTRACE in nk_trace.h - aInfo.iFlags |= ETraceHeapAllocs; - // Create the thread's heap chunk. - RChunk c; - TFakeChunkCreateInfo createInfo; - createInfo.SetThreadNewAllocator(0, maxLength, KLitDollarHeap()); // Initialise with no memory committed. - TInt r = c.Create(createInfo); - if (r!=KErrNone) - return r; - aHeap = ChunkHeap(c, minLength, page_size, maxLength, aAlign, aSingleThread, UserHeap::EChunkHeapSwitchTo|UserHeap::EChunkHeapDuplicate); - c.Close(); - if (!aHeap) - return KErrNoMemory; - if (aInfo.iFlags & ETraceHeapAllocs) - { - aHeap->iFlags |= RAllocator::ETraceAllocs; - BTraceContext8(BTrace::EHeap, BTrace::EHeapCreate,(TUint32)aHeap, RNewAllocator::EAllocCellSize); - TInt handle = aHeap->ChunkHandle(); - TInt chunkId = ((RHandleBase&)handle).BTraceId(); - BTraceContext8(BTrace::EHeap, BTrace::EHeapChunkCreate, (TUint32)aHeap, chunkId); - } - return KErrNone; - } - -TInt UserHeap::SetupThreadHeap(TBool, SStdEpocThreadCreateInfo& aInfo) -/** -@internalComponent -*/ - { - TInt r = KErrNone; - if (!aInfo.iAllocator && aInfo.iHeapInitialSize>0) - { - // new heap required - RNewAllocator* pH = NULL; - r = RNewAllocator::CreateThreadHeap(aInfo, pH); - } - else if (aInfo.iAllocator) - { - // sharing a heap - RAllocator* pA = aInfo.iAllocator; - pA->Open(); - User::SwitchAllocator(pA); - } - return r; - } - -#ifndef __WINS__ -#pragma pop -#endif diff -r 74c9f037fd5d -r 99ad1390cd33 main/al/newallocator.h --- a/main/al/newallocator.h Fri Mar 19 09:28:59 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,235 +0,0 @@ -/* -* 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 "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ -#ifndef NEWALLOCATOR_H -#define NEWALLOCATOR_H - -class RNewAllocator : public RAllocator - { -public: - enum{EAllocCellSize = 8}; - - virtual TAny* Alloc(TInt aSize); - virtual void Free(TAny* aPtr); - virtual TAny* ReAlloc(TAny* aPtr, TInt aSize, TInt aMode=0); - virtual TInt AllocLen(const TAny* aCell) const; - virtual TInt Compress(); - virtual void Reset(); - virtual TInt AllocSize(TInt& aTotalAllocSize) const; - virtual TInt Available(TInt& aBiggestBlock) const; - virtual TInt DebugFunction(TInt aFunc, TAny* a1=NULL, TAny* a2=NULL); -protected: - virtual TInt Extension_(TUint aExtensionId, TAny*& a0, TAny* a1); - -public: - TInt Size() const - { return iChunkSize; } - - inline TInt MaxLength() const; - inline TUint8* Base() const; - inline TInt Align(TInt a) const; - inline const TAny* Align(const TAny* a) const; - inline void Lock() const; - inline void Unlock() const; - inline TInt ChunkHandle() const; - - /** - @internalComponent - */ - struct _s_align {char c; double d;}; - - /** - The structure of a heap cell header for a heap cell on the free list. - */ - struct SCell { - /** - The length of the cell, which includes the length of - this header. - */ - TInt len; - - - /** - A pointer to the next cell in the free list. - */ - SCell* next; - }; - - /** - The default cell alignment. - */ - enum {ECellAlignment = sizeof(_s_align)-sizeof(double)}; - - /** - Size of a free cell header. - */ - enum {EFreeCellSize = sizeof(SCell)}; - - /** - @internalComponent - */ - enum TDefaultShrinkRatios {EShrinkRatio1=256, EShrinkRatioDflt=512}; - -public: - RNewAllocator(TInt aMaxLength, TInt aAlign=0, TBool aSingleThread=ETrue); - RNewAllocator(TInt aChunkHandle, TInt aOffset, TInt aMinLength, TInt aMaxLength, TInt aGrowBy, TInt aAlign=0, TBool aSingleThread=EFalse); - inline RNewAllocator(); - - TAny* operator new(TUint aSize, TAny* aBase) __NO_THROW; - inline void operator delete(TAny*, TAny*); - -protected: - SCell* GetAddress(const TAny* aCell) const; - -public: - TInt iMinLength; - TInt iMaxLength; // maximum bytes used by the allocator in total - TInt iOffset; // offset of RNewAllocator object from chunk base - TInt iGrowBy; - - TInt iChunkHandle; // handle of chunk - RFastLock iLock; - TUint8* iBase; // bottom of DL memory, i.e. this+sizeof(RNewAllocator) - TUint8* iTop; // top of DL memory (page aligned) - TInt iAlign; - TInt iMinCell; - TInt iPageSize; - SCell iFree; -protected: - TInt iNestingLevel; - TInt iAllocCount; - TAllocFail iFailType; - TInt iFailRate; - TBool iFailed; - TInt iFailAllocCount; - TInt iRand; - TAny* iTestData; -protected: - TInt iChunkSize; // currently allocated bytes in the chunk (== chunk.Size()) - malloc_state iGlobalMallocState; - malloc_params mparams; -private: - void Init(TInt aBitmapSlab, TInt aPagePower, size_t aTrimThreshold);/*Init internal data structures*/ - inline int init_mparams(size_t aTrimThreshold /*= DEFAULT_TRIM_THRESHOLD*/); - inline void init_bins(mstate m); - inline void init_top(mstate m, mchunkptr p, size_t psize); - void* sys_alloc(mstate m, size_t nb); - msegmentptr segment_holding(mstate m, TUint8* addr); - void add_segment(mstate m, TUint8* tbase, size_t tsize, flag_t mmapped); - int sys_trim(mstate m, size_t pad); - int has_segment_link(mstate m, msegmentptr ss); - size_t release_unused_segments(mstate m); - void* mmap_alloc(mstate m, size_t nb);/*Need to check this function*/ - void* prepend_alloc(mstate m, TUint8* newbase, TUint8* oldbase, size_t nb); - void* tmalloc_large(mstate m, size_t nb); - void* tmalloc_small(mstate m, size_t nb); - /*MACROS converted functions*/ - static inline void unlink_first_small_chunk(mstate M,mchunkptr B,mchunkptr P,bindex_t& I); - static inline void insert_small_chunk(mstate M,mchunkptr P, size_t S); - static inline void insert_chunk(mstate M,mchunkptr P,size_t S); - static inline void unlink_large_chunk(mstate M,tchunkptr X); - static inline void unlink_small_chunk(mstate M, mchunkptr P,size_t S); - static inline void unlink_chunk(mstate M, mchunkptr P, size_t S); - static inline void compute_tree_index(size_t S, bindex_t& I); - static inline void insert_large_chunk(mstate M,tchunkptr X,size_t S); - static inline void replace_dv(mstate M, mchunkptr P, size_t S); - static inline void compute_bit2idx(binmap_t X,bindex_t& I); - /*MACROS converted functions*/ - TAny* SetBrk(TInt32 aDelta); - void* internal_realloc(mstate m, void* oldmem, size_t bytes); - void internal_malloc_stats(mstate m); - int change_mparam(int param_number, int value); -#if !NO_MALLINFO - mallinfo internal_mallinfo(mstate m); -#endif - void Init_Dlmalloc(size_t capacity, int locked, size_t aTrimThreshold); - void* dlmalloc(size_t); - void dlfree(void*); - void* dlrealloc(void*, size_t); - int dlmallopt(int, int); - size_t dlmalloc_footprint(void); - size_t dlmalloc_max_footprint(void); - #if !NO_MALLINFO - struct mallinfo dlmallinfo(void); - #endif - int dlmalloc_trim(size_t); - size_t dlmalloc_usable_size(void*); - void dlmalloc_stats(void); - inline mchunkptr mmap_resize(mstate m, mchunkptr oldp, size_t nb); - - /****************************Code Added For DL heap**********************/ - friend class UserHeap; -private: - unsigned short slab_threshold; - unsigned short page_threshold; // 2^n is smallest cell size allocated in paged allocator - unsigned slab_init_threshold; - unsigned slab_config_bits; - slab* partial_page;// partial-use page tree - page* spare_page; // single empty page cached - unsigned char sizemap[(maxslabsize>>2)+1]; // index of slabset based on size class -private: - static void tree_remove(slab* s); - static void tree_insert(slab* s,slab** r); -public: - enum {okbits = (1<<(maxslabsize>>2))-1}; - void slab_init(); - void slab_config(unsigned slabbitmap); - void* slab_allocate(slabset& allocator); - void slab_free(void* p); - void* allocnewslab(slabset& allocator); - void* allocnewpage(slabset& allocator); - void* initnewslab(slabset& allocator, slab* s); - void freeslab(slab* s); - void freepage(page* p); - void* map(void* p,unsigned sz); - void* remap(void* p,unsigned oldsz,unsigned sz); - void unmap(void* p,unsigned sz); - /**I think we need to move this functions to slab allocator class***/ - static inline unsigned header_free(unsigned h) - {return (h&0x000000ff);} - static inline unsigned header_pagemap(unsigned h) - {return (h&0x00000f00)>>8;} - static inline unsigned header_size(unsigned h) - {return (h&0x0003f000)>>12;} - static inline unsigned header_usedm4(unsigned h) - {return (h&0x0ffc0000)>>18;} - /***paged allocator code***/ - void paged_init(unsigned pagepower); - void* paged_allocate(unsigned size); - void paged_free(void* p); - void* paged_reallocate(void* p, unsigned size); - pagecell* paged_descriptor(const void* p) const ; -private: - // paged allocator structures - enum {npagecells=4}; - pagecell pagelist[npagecells]; // descriptors for page-aligned large allocations - TAny* DLReAllocImpl(TAny* aPtr, TInt aSize); - // to track maximum used - //TInt iHighWaterMark; - - slabset slaballoc[maxslabsize>>2]; - -private: - static RNewAllocator* FixedHeap(TAny* aBase, TInt aMaxLength, TInt aAlign, TBool aSingleThread); - static RNewAllocator* ChunkHeap(const TDesC* aName, TInt aMinLength, TInt aMaxLength, TInt aGrowBy, TInt aAlign, TBool aSingleThread); - static RNewAllocator* ChunkHeap(RChunk aChunk, TInt aMinLength, TInt aGrowBy, TInt aMaxLength, TInt aAlign, TBool aSingleThread, TUint32 aMode); - static RNewAllocator* OffsetChunkHeap(RChunk aChunk, TInt aMinLength, TInt aOffset, TInt aGrowBy, TInt aMaxLength, TInt aAlign, TBool aSingleThread, TUint32 aMode); - static TInt CreateThreadHeap(SStdEpocThreadCreateInfo& aInfo, RNewAllocator*& aHeap, TInt aAlign = 0, TBool aSingleThread = EFalse); -}; - -#include "newallocator.inl" - -#endif // NEWALLOCATOR_H diff -r 74c9f037fd5d -r 99ad1390cd33 main/al/newallocator.inl --- a/main/al/newallocator.inl Fri Mar 19 09:28:59 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,94 +0,0 @@ -/* -* 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 "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ -#ifndef NEWALLOCATOR_INL -#define NEWALLOCATOR_INL - -inline RNewAllocator::RNewAllocator() - {} - -/** -@return The maximum length to which the heap can grow. - -@publishedAll -@released -*/ -inline TInt RNewAllocator::MaxLength() const - {return iMaxLength;} - -inline void RNewAllocator::operator delete(TAny*, TAny*) -/** -Called if constructor issued by operator new(TUint aSize, TAny* aBase) throws exception. -This is dummy as corresponding new operator does not allocate memory. -*/ - {} - - -inline TUint8* RNewAllocator::Base() const -/** -Gets a pointer to the start of the heap. - -Note that because of the small space overhead incurred by all allocated cells, -no cell will have the same address as that returned by this function. - -@return A pointer to the base of the heap. -*/ - {return iBase;} - - -inline TInt RNewAllocator::Align(TInt a) const -/** -@internalComponent -*/ - {return _ALIGN_UP(a, iAlign);} - - - - -inline const TAny* RNewAllocator::Align(const TAny* a) const -/** -@internalComponent -*/ - {return (const TAny*)_ALIGN_UP((TLinAddr)a, iAlign);} - - - -inline void RNewAllocator::Lock() const -/** -@internalComponent -*/ - {((RFastLock&)iLock).Wait();} - - - - -inline void RNewAllocator::Unlock() const -/** -@internalComponent -*/ - {((RFastLock&)iLock).Signal();} - - -inline TInt RNewAllocator::ChunkHandle() const -/** -@internalComponent -*/ - { - return iChunkHandle; - } - - -#endif // NEWALLOCATOR_INL diff -r 74c9f037fd5d -r 99ad1390cd33 main/main.cpp --- a/main/main.cpp Fri Mar 19 09:28:59 2010 +0200 +++ b/main/main.cpp Fri Apr 16 14:58:46 2010 +0300 @@ -23,7 +23,6 @@ #include #include -#include #include #include #include @@ -35,7 +34,7 @@ #endif int main(int argc, char *argv[]) - { +{ OstTrace0( TRACE_IMPORTANT, _MAIN, "::main" ); QApplication::setGraphicsSystem("openvg"); @@ -53,23 +52,22 @@ GlxStateManager* stateMgr = NULL; GlxFetcher* mainWindow = NULL; - HbStyleLoader::load(":/data/photos.css"); OstTraceEventStart0( EVENT_DUP1__MAIN_START, "launch" ); if(!XQServiceUtil::isService()){ - stateMgr = new GlxStateManager(); - app.setApplicationName("Photos"); - stateMgr->launchApplication(); + stateMgr = new GlxStateManager(); + app.setApplicationName("Photos"); + stateMgr->launchApplication(); } else { - mainWindow = new GlxFetcher(); - mainWindow->show(); + mainWindow = new GlxFetcher(); + mainWindow->show(); } OstTraceEventStop( EVENT_DUP1__MAIN_STOP, "launch", EVENT_DUP1__MAIN_START ); - int ret = app.exec(); - delete stateMgr; - delete mainWindow; + int ret = app.exec(); + delete stateMgr; + delete mainWindow; return ret; - } +} diff -r 74c9f037fd5d -r 99ad1390cd33 main/main.pro --- a/main/main.pro Fri Mar 19 09:28:59 2010 +0200 +++ b/main/main.pro Fri Apr 16 14:58:46 2010 +0300 @@ -19,7 +19,6 @@ DEPENDPATH += . INCLUDEPATH += . \ ..\inc \ - al \ ../ui/viewmanagement/statehandler/inc \ ../loggers/loggerqt/inc \ ../ui/inc \ @@ -54,8 +53,7 @@ # Input SOURCES += main.cpp \ - glxfetcher.cpp \ - al/newallocator.cpp + glxfetcher.cpp HEADERS +=glxfetcher.h RESOURCES += ../photos.qrc diff -r 74c9f037fd5d -r 99ad1390cd33 package_definition.xml --- a/package_definition.xml Fri Mar 19 09:28:59 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,76 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -r 74c9f037fd5d -r 99ad1390cd33 photos.qrc --- a/photos.qrc Fri Mar 19 09:28:59 2010 +0200 +++ b/photos.qrc Fri Apr 16 14:58:46 2010 +0300 @@ -1,13 +1,5 @@ - data/Albums_default.png - data/All_default.png - data/camera_default.png - data/ovi_default.png - data/Albums_selected.png - data/All_selected.png - data/camera_selected.png - data/ovi_selected.png data/transition.fxml data/transitionleft.fxml data/transitionright.fxml @@ -29,11 +21,9 @@ data/transitionrotate90.fxml data/transitionrotate180.fxml data/transitionrotate270.fxml - data/corrupt.svg - data/imagestrip.css data/grid.docml data/listview.docml data/fullscreen.docml data/slideshow.docml - + diff -r 74c9f037fd5d -r 99ad1390cd33 traces/OstTraceDefinitions.h --- a/traces/OstTraceDefinitions.h Fri Mar 19 09:28:59 2010 +0200 +++ b/traces/OstTraceDefinitions.h Fri Apr 16 14:58:46 2010 +0300 @@ -1,3 +1,19 @@ +/* +* 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 "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ #ifndef __OSTTRACEDEFINITIONS_H__ #define __OSTTRACEDEFINITIONS_H__ // OST_TRACE_COMPILER_IN_USE flag has been added by Trace Compiler diff -r 74c9f037fd5d -r 99ad1390cd33 traces/fixed_id.definitions --- a/traces/fixed_id.definitions Fri Mar 19 09:28:59 2010 +0200 +++ b/traces/fixed_id.definitions Fri Apr 16 14:58:46 2010 +0300 @@ -1,43 +1,70 @@ #Fixed group and trace id definitions. If this file is removed, the identifiers are rebuilt. [GROUP]TRACE_FLOW=0x8a -[GROUP]TRACE_IMPORTANT=0x85 [GROUP]TRACE_NORMAL=0x86 -[GROUP]TRACE_PERFORMANCE=0x8b -[TRACE]TRACE_FLOW[0x8A]_DUP1_GLXGRIDVIEW_GLXGRIDVIEW_ENTRY=0xf -[TRACE]TRACE_FLOW[0x8A]_DUP1_GLXGRIDVIEW_GLXGRIDVIEW_EXIT=0x10 -[TRACE]TRACE_FLOW[0x8A]_GLXGRIDVIEW_ACTIVATE_ENTRY=0x3 -[TRACE]TRACE_FLOW[0x8A]_GLXGRIDVIEW_ACTIVATE_EXIT=0x4 -[TRACE]TRACE_FLOW[0x8A]_GLXGRIDVIEW_ADDTOOLBAR_ENTRY=0x9 -[TRACE]TRACE_FLOW[0x8A]_GLXGRIDVIEW_ADDTOOLBAR_EXIT=0xa -[TRACE]TRACE_FLOW[0x8A]_GLXGRIDVIEW_DEACTIVATE_ENTRY=0x5 -[TRACE]TRACE_FLOW[0x8A]_GLXGRIDVIEW_DEACTIVATE_EXIT=0x6 -[TRACE]TRACE_FLOW[0x8A]_GLXGRIDVIEW_GETANIMATIONITEM_ENTRY=0xb -[TRACE]TRACE_FLOW[0x8A]_GLXGRIDVIEW_GETANIMATIONITEM_EXIT=0xc -[TRACE]TRACE_FLOW[0x8A]_GLXGRIDVIEW_GLXGRIDVIEW_ENTRY=0x1 -[TRACE]TRACE_FLOW[0x8A]_GLXGRIDVIEW_GLXGRIDVIEW_EXIT=0x2 -[TRACE]TRACE_FLOW[0x8A]_GLXGRIDVIEW_LOADGRIDVIEW_ENTRY=0xd -[TRACE]TRACE_FLOW[0x8A]_GLXGRIDVIEW_LOADGRIDVIEW_EXIT=0xe -[TRACE]TRACE_FLOW[0x8A]_GLXGRIDVIEW_SETMODEL_ENTRY=0x7 -[TRACE]TRACE_FLOW[0x8A]_GLXGRIDVIEW_SETMODEL_EXIT=0x8 -[TRACE]TRACE_IMPORTANT[0x85]_DUP1_GLXGRIDVIEW_SCROLLPOSITIONCHANGE=0x5 -[TRACE]TRACE_IMPORTANT[0x85]_DUP1_GLXGRIDVIEW_SETVISVALWINDOWINDEX=0x2 -[TRACE]TRACE_IMPORTANT[0x85]_DUP2_GLXGRIDVIEW_SCROLLPOSITIONCHANGE=0x7 -[TRACE]TRACE_IMPORTANT[0x85]_DUP2_GLXGRIDVIEW_SETVISVALWINDOWINDEX=0x3 -[TRACE]TRACE_IMPORTANT[0x85]_DUP3_GLXGRIDVIEW_SCROLLPOSITIONCHANGE=0x8 -[TRACE]TRACE_IMPORTANT[0x85]_DUP3_GLXGRIDVIEW_SETVISVALWINDOWINDEX=0x4 -[TRACE]TRACE_IMPORTANT[0x85]_GLXGRIDVIEW_SCROLLPOSITIONCHANGE=0x6 -[TRACE]TRACE_IMPORTANT[0x85]_GLXGRIDVIEW_SETVISVALWINDOWINDEX=0x1 -[TRACE]TRACE_NORMAL[0x86]_DUP1_GLXGRIDVIEW_HANDLEUSERACTION=0x4 -[TRACE]TRACE_NORMAL[0x86]_DUP2_GLXGRIDVIEW_HANDLEUSERACTION=0x5 -[TRACE]TRACE_NORMAL[0x86]_GLXGRIDVIEW_ADDVIEWCONNECTION=0x9 -[TRACE]TRACE_NORMAL[0x86]_GLXGRIDVIEW_DISABLEMARKING=0x2 -[TRACE]TRACE_NORMAL[0x86]_GLXGRIDVIEW_ENABLEMARKING=0x1 -[TRACE]TRACE_NORMAL[0x86]_GLXGRIDVIEW_GETSELECTIONMODEL=0x6 -[TRACE]TRACE_NORMAL[0x86]_GLXGRIDVIEW_HANDLEUSERACTION=0x3 -[TRACE]TRACE_NORMAL[0x86]_GLXGRIDVIEW_INDICATELONGPRESS=0xc -[TRACE]TRACE_NORMAL[0x86]_GLXGRIDVIEW_ITEMCHANGE=0x8 -[TRACE]TRACE_NORMAL[0x86]_GLXGRIDVIEW_ITEMDESTROYED=0x7 -[TRACE]TRACE_NORMAL[0x86]_GLXGRIDVIEW_ITEMSELECTED=0xb -[TRACE]TRACE_NORMAL[0x86]_GLXGRIDVIEW_REMOVEVIEWCONNECTION=0xa -[TRACE]TRACE_PERFORMANCE[0x8B]_EVENT_DUP1_GLXGRIDVIEW_ITEMSELECTED_START=0x1 -[TRACE]TRACE_PERFORMANCE[0x8B]_EVENT_DUP1_GLXGRIDVIEW_ITEMSELECTED_STOP=0x2 +[TRACE]TRACE_FLOW[0x8A]_DUP1_GLXCOMMANDHANDLERADDTOCONTAINER_GLXCOMMANDHANDLERADDTOCONTAINER_ENTRY=0xd +[TRACE]TRACE_FLOW[0x8A]_DUP1_GLXCOMMANDHANDLERADDTOCONTAINER_GLXCOMMANDHANDLERADDTOCONTAINER_EXIT=0xe +[TRACE]TRACE_FLOW[0x8A]_DUP1_GLXCOMMANDHANDLERDELETE_GLXCOMMANDHANDLERDELETE_ENTRY=0x3 +[TRACE]TRACE_FLOW[0x8A]_DUP1_GLXCOMMANDHANDLERDELETE_GLXCOMMANDHANDLERDELETE_EXIT=0x4 +[TRACE]TRACE_FLOW[0x8A]_DUP1_GLXCOMMANDHANDLERNEWMEDIA_GLXCOMMANDHANDLERNEWMEDIA_ENTRY=0x17 +[TRACE]TRACE_FLOW[0x8A]_DUP1_GLXCOMMANDHANDLERNEWMEDIA_GLXCOMMANDHANDLERNEWMEDIA_EXIT=0x18 +[TRACE]TRACE_FLOW[0x8A]_DUP1_GLXCOMMANDHANDLERREMOVEFROM_GLXCOMMANDHANDLERREMOVEFROM_ENTRY=0x3b +[TRACE]TRACE_FLOW[0x8A]_DUP1_GLXCOMMANDHANDLERREMOVEFROM_GLXCOMMANDHANDLERREMOVEFROM_EXIT=0x3c +[TRACE]TRACE_FLOW[0x8A]_DUP1_GLXCOMMANDHANDLERROTATE_GLXCOMMANDHANDLERROTATE_ENTRY=0x27 +[TRACE]TRACE_FLOW[0x8A]_DUP1_GLXCOMMANDHANDLERROTATE_GLXCOMMANDHANDLERROTATE_EXIT=0x28 +[TRACE]TRACE_FLOW[0x8A]_DUP1_GLXQUERYCONTENTWIDGET_GLXQUERYCONTENTWIDGET_ENTRY=0x7 +[TRACE]TRACE_FLOW[0x8A]_DUP1_GLXQUERYCONTENTWIDGET_GLXQUERYCONTENTWIDGET_EXIT=0x8 +[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERADDTOCONTAINER_CREATECOMMANDL_ENTRY=0xf +[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERADDTOCONTAINER_CREATECOMMANDL_EXIT=0x10 +[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERADDTOCONTAINER_CREATENEWMEDIA_ENTRY=0x13 +[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERADDTOCONTAINER_CREATENEWMEDIA_EXIT=0x14 +[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERADDTOCONTAINER_GETSELECTIONLIST_ENTRY=0x11 +[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERADDTOCONTAINER_GETSELECTIONLIST_EXIT=0x12 +[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERADDTOCONTAINER_GLXCOMMANDHANDLERADDTOCONTAINER_ENTRY=0xb +[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERADDTOCONTAINER_GLXCOMMANDHANDLERADDTOCONTAINER_EXIT=0xc +[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERDELETE_CREATECOMMANDL_ENTRY=0x5 +[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERDELETE_CREATECOMMANDL_EXIT=0x6 +[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERDELETE_GLXCOMMANDHANDLERDELETE_ENTRY=0x1 +[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERDELETE_GLXCOMMANDHANDLERDELETE_EXIT=0x2 +[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERNEWMEDIA_CREATECOMMANDL_ENTRY=0x19 +[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERNEWMEDIA_CREATECOMMANDL_EXIT=0x1a +[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERNEWMEDIA_DOHANDLECOMMANDCOMPLETEL_ENTRY=0x1d +[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERNEWMEDIA_DOHANDLECOMMANDCOMPLETEL_EXIT=0x1e +[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERNEWMEDIA_EXECUTELD_ENTRY=0x1b +[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERNEWMEDIA_EXECUTELD_EXIT=0x1c +[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERNEWMEDIA_GLXCOMMANDHANDLERNEWMEDIA_ENTRY=0x15 +[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERNEWMEDIA_GLXCOMMANDHANDLERNEWMEDIA_EXIT=0x16 +[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERNEWMEDIA_HANDLEERRORL_ENTRY=0x23 +[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERNEWMEDIA_HANDLEERRORL_EXIT=0x24 +[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERNEWMEDIA_HANDLEERROR_ENTRY=0x21 +[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERNEWMEDIA_HANDLEERROR_EXIT=0x22 +[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERNEWMEDIA_HANDLEITEMADDEDL_ENTRY=0x1f +[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERNEWMEDIA_HANDLEITEMADDEDL_EXIT=0x20 +[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERREMOVEFROM_CREATECOMMANDL_ENTRY=0x3d +[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERREMOVEFROM_CREATECOMMANDL_EXIT=0x3e +[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERREMOVEFROM_GLXCOMMANDHANDLERREMOVEFROM_ENTRY=0x39 +[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERREMOVEFROM_GLXCOMMANDHANDLERREMOVEFROM_EXIT=0x3a +[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERROTATE_CALCULATEFINALORIENTATIONL_ENTRY=0x33 +[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERROTATE_CALCULATEFINALORIENTATIONL_EXIT=0x34 +[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERROTATE_CREATECOMMANDL_ENTRY=0x29 +[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERROTATE_CREATECOMMANDL_EXIT=0x2a +[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERROTATE_DESTROYEXIFWRITER_ENTRY=0x37 +[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERROTATE_DESTROYEXIFWRITER_EXIT=0x38 +[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERROTATE_DOEXECUTECOMMANDL_ENTRY=0x2b +[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERROTATE_DOEXECUTECOMMANDL_EXIT=0x2c +[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERROTATE_GLXCOMMANDHANDLERROTATE_ENTRY=0x25 +[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERROTATE_GLXCOMMANDHANDLERROTATE_EXIT=0x26 +[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERROTATE_INITIALIZEEXIFWRITERL_ENTRY=0x2f +[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERROTATE_INITIALIZEEXIFWRITERL_EXIT=0x30 +[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERROTATE_READIMAGEORIENTATIONL_ENTRY=0x31 +[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERROTATE_READIMAGEORIENTATIONL_EXIT=0x32 +[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERROTATE_ROTATEIMAGEL_ENTRY=0x2d +[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERROTATE_ROTATEIMAGEL_EXIT=0x2e +[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERROTATE_SETIMAGEORIENTATIONL_ENTRY=0x35 +[TRACE]TRACE_FLOW[0x8A]_GLXCOMMANDHANDLERROTATE_SETIMAGEORIENTATIONL_EXIT=0x36 +[TRACE]TRACE_FLOW[0x8A]_GLXQUERYCONTENTWIDGET_GLXQUERYCONTENTWIDGET_ENTRY=0x9 +[TRACE]TRACE_FLOW[0x8A]_GLXQUERYCONTENTWIDGET_GLXQUERYCONTENTWIDGET_EXIT=0xa +[TRACE]TRACE_NORMAL[0x86]_GLXCOMMANDHANDLERADDTOCONTAINER_CREATECOMMANDL=0x1 +[TRACE]TRACE_NORMAL[0x86]_GLXCOMMANDHANDLERADDTOCONTAINER_GETSELECTIONLIST=0x2 +[TRACE]TRACE_NORMAL[0x86]_GLXCOMMANDHANDLERROTATE_CALCULATEFINALORIENTATIONL=0x5 +[TRACE]TRACE_NORMAL[0x86]_GLXCOMMANDHANDLERROTATE_DOEXECUTECOMMANDL=0x3 +[TRACE]TRACE_NORMAL[0x86]_GLXCOMMANDHANDLERROTATE_READIMAGEORIENTATIONL=0x4 diff -r 74c9f037fd5d -r 99ad1390cd33 traces/glxcommandhandlerTraces.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/traces/glxcommandhandlerTraces.h Fri Apr 16 14:58:46 2010 +0300 @@ -0,0 +1,18 @@ +// Created by TraceCompiler 2.1.2 +// DO NOT EDIT, CHANGES WILL BE LOST + +#ifndef __GLXCOMMANDHANDLERTRACES_H__ +#define __GLXCOMMANDHANDLERTRACES_H__ + +#define KOstTraceComponentID 0x20000a11 + +#define GLXCOMMANDHANDLER_GLXCOMMANDHANDLER_ENTRY 0x8a0001 +#define GLXCOMMANDHANDLER_GLXCOMMANDHANDLER_EXIT 0x8a0002 +#define DUP1_GLXCOMMANDHANDLER_GLXCOMMANDHANDLER_ENTRY 0x8a0003 +#define DUP1_GLXCOMMANDHANDLER_GLXCOMMANDHANDLER_EXIT 0x8a0004 + + +#endif + +// End of file + diff -r 74c9f037fd5d -r 99ad1390cd33 traces/glxcommandhandleraddtocontainerTraces.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/traces/glxcommandhandleraddtocontainerTraces.h Fri Apr 16 14:58:46 2010 +0300 @@ -0,0 +1,65 @@ +// Created by TraceCompiler 2.1.2 +// DO NOT EDIT, CHANGES WILL BE LOST + +#ifndef __GLXCOMMANDHANDLERADDTOCONTAINERTRACES_H__ +#define __GLXCOMMANDHANDLERADDTOCONTAINERTRACES_H__ + +#define KOstTraceComponentID 0x20000a0d + +#define DUP1_GLXQUERYCONTENTWIDGET_GLXQUERYCONTENTWIDGET_ENTRY 0x8a0007 +#define DUP1_GLXQUERYCONTENTWIDGET_GLXQUERYCONTENTWIDGET_EXIT 0x8a0008 +#define GLXQUERYCONTENTWIDGET_GLXQUERYCONTENTWIDGET_ENTRY 0x8a0009 +#define GLXQUERYCONTENTWIDGET_GLXQUERYCONTENTWIDGET_EXIT 0x8a000a +#define GLXCOMMANDHANDLERADDTOCONTAINER_GLXCOMMANDHANDLERADDTOCONTAINER_ENTRY 0x8a000b +#define GLXCOMMANDHANDLERADDTOCONTAINER_GLXCOMMANDHANDLERADDTOCONTAINER_EXIT 0x8a000c +#define DUP1_GLXCOMMANDHANDLERADDTOCONTAINER_GLXCOMMANDHANDLERADDTOCONTAINER_ENTRY 0x8a000d +#define DUP1_GLXCOMMANDHANDLERADDTOCONTAINER_GLXCOMMANDHANDLERADDTOCONTAINER_EXIT 0x8a000e +#define GLXCOMMANDHANDLERADDTOCONTAINER_CREATECOMMANDL_ENTRY 0x8a000f +#define GLXCOMMANDHANDLERADDTOCONTAINER_CREATECOMMANDL_EXIT 0x8a0010 +#define GLXCOMMANDHANDLERADDTOCONTAINER_GETSELECTIONLIST_ENTRY 0x8a0011 +#define GLXCOMMANDHANDLERADDTOCONTAINER_GETSELECTIONLIST_EXIT 0x8a0012 +#define GLXCOMMANDHANDLERADDTOCONTAINER_CREATENEWMEDIA_ENTRY 0x8a0013 +#define GLXCOMMANDHANDLERADDTOCONTAINER_CREATENEWMEDIA_EXIT 0x8a0014 +#define GLXCOMMANDHANDLERADDTOCONTAINER_CREATECOMMANDL 0x860001 +#define GLXCOMMANDHANDLERADDTOCONTAINER_GETSELECTIONLIST 0x860002 + + +inline TBool OstTraceGen2( TUint32 aTraceID, TInt aParam1, TInt aParam2 ) + { + TBool retval = BTraceFiltered8( EXTRACT_GROUP_ID(aTraceID), EOstTraceActivationQuery, KOstTraceComponentID, aTraceID ); + if ( retval ) + { + TUint8 data[ 8 ]; + TUint8* ptr = data; + *( ( TInt* )ptr ) = aParam1; + ptr += sizeof ( TInt ); + *( ( TInt* )ptr ) = aParam2; + ptr += sizeof ( TInt ); + ptr -= 8; + retval = OstSendNBytes( EXTRACT_GROUP_ID(aTraceID), EOstTrace, KOstTraceComponentID, aTraceID, ptr, 8 ); + } + return retval; + } + +inline TBool OstTraceGen2( TUint32 aTraceID, TInt32 aParam1, TInt32 aParam2 ) + { + TBool retval = BTraceFiltered8( EXTRACT_GROUP_ID(aTraceID), EOstTraceActivationQuery, KOstTraceComponentID, aTraceID ); + if ( retval ) + { + TUint8 data[ 8 ]; + TUint8* ptr = data; + *( ( TInt* )ptr ) = aParam1; + ptr += sizeof ( TInt ); + *( ( TInt* )ptr ) = aParam2; + ptr += sizeof ( TInt ); + ptr -= 8; + retval = OstSendNBytes( EXTRACT_GROUP_ID(aTraceID), EOstTrace, KOstTraceComponentID, aTraceID, ptr, 8 ); + } + return retval; + } + + +#endif + +// End of file + diff -r 74c9f037fd5d -r 99ad1390cd33 traces/glxcommandhandlerdeleteTraces.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/traces/glxcommandhandlerdeleteTraces.h Fri Apr 16 14:58:46 2010 +0300 @@ -0,0 +1,20 @@ +// Created by TraceCompiler 2.1.2 +// DO NOT EDIT, CHANGES WILL BE LOST + +#ifndef __GLXCOMMANDHANDLERDELETETRACES_H__ +#define __GLXCOMMANDHANDLERDELETETRACES_H__ + +#define KOstTraceComponentID 0x20000a0d + +#define GLXCOMMANDHANDLERDELETE_GLXCOMMANDHANDLERDELETE_ENTRY 0x8a0001 +#define GLXCOMMANDHANDLERDELETE_GLXCOMMANDHANDLERDELETE_EXIT 0x8a0002 +#define DUP1_GLXCOMMANDHANDLERDELETE_GLXCOMMANDHANDLERDELETE_ENTRY 0x8a0003 +#define DUP1_GLXCOMMANDHANDLERDELETE_GLXCOMMANDHANDLERDELETE_EXIT 0x8a0004 +#define GLXCOMMANDHANDLERDELETE_CREATECOMMANDL_ENTRY 0x8a0005 +#define GLXCOMMANDHANDLERDELETE_CREATECOMMANDL_EXIT 0x8a0006 + + +#endif + +// End of file + diff -r 74c9f037fd5d -r 99ad1390cd33 traces/glxcommandhandlernewmediaTraces.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/traces/glxcommandhandlernewmediaTraces.h Fri Apr 16 14:58:46 2010 +0300 @@ -0,0 +1,30 @@ +// Created by TraceCompiler 2.1.2 +// DO NOT EDIT, CHANGES WILL BE LOST + +#ifndef __GLXCOMMANDHANDLERNEWMEDIATRACES_H__ +#define __GLXCOMMANDHANDLERNEWMEDIATRACES_H__ + +#define KOstTraceComponentID 0x20000a0d + +#define GLXCOMMANDHANDLERNEWMEDIA_GLXCOMMANDHANDLERNEWMEDIA_ENTRY 0x8a0015 +#define GLXCOMMANDHANDLERNEWMEDIA_GLXCOMMANDHANDLERNEWMEDIA_EXIT 0x8a0016 +#define DUP1_GLXCOMMANDHANDLERNEWMEDIA_GLXCOMMANDHANDLERNEWMEDIA_ENTRY 0x8a0017 +#define DUP1_GLXCOMMANDHANDLERNEWMEDIA_GLXCOMMANDHANDLERNEWMEDIA_EXIT 0x8a0018 +#define GLXCOMMANDHANDLERNEWMEDIA_CREATECOMMANDL_ENTRY 0x8a0019 +#define GLXCOMMANDHANDLERNEWMEDIA_CREATECOMMANDL_EXIT 0x8a001a +#define GLXCOMMANDHANDLERNEWMEDIA_EXECUTELD_ENTRY 0x8a001b +#define GLXCOMMANDHANDLERNEWMEDIA_EXECUTELD_EXIT 0x8a001c +#define GLXCOMMANDHANDLERNEWMEDIA_DOHANDLECOMMANDCOMPLETEL_ENTRY 0x8a001d +#define GLXCOMMANDHANDLERNEWMEDIA_DOHANDLECOMMANDCOMPLETEL_EXIT 0x8a001e +#define GLXCOMMANDHANDLERNEWMEDIA_HANDLEITEMADDEDL_ENTRY 0x8a001f +#define GLXCOMMANDHANDLERNEWMEDIA_HANDLEITEMADDEDL_EXIT 0x8a0020 +#define GLXCOMMANDHANDLERNEWMEDIA_HANDLEERROR_ENTRY 0x8a0021 +#define GLXCOMMANDHANDLERNEWMEDIA_HANDLEERROR_EXIT 0x8a0022 +#define GLXCOMMANDHANDLERNEWMEDIA_HANDLEERRORL_ENTRY 0x8a0023 +#define GLXCOMMANDHANDLERNEWMEDIA_HANDLEERRORL_EXIT 0x8a0024 + + +#endif + +// End of file + diff -r 74c9f037fd5d -r 99ad1390cd33 traces/glxcommandhandlerremovefromTraces.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/traces/glxcommandhandlerremovefromTraces.h Fri Apr 16 14:58:46 2010 +0300 @@ -0,0 +1,20 @@ +// Created by TraceCompiler 2.1.2 +// DO NOT EDIT, CHANGES WILL BE LOST + +#ifndef __GLXCOMMANDHANDLERREMOVEFROMTRACES_H__ +#define __GLXCOMMANDHANDLERREMOVEFROMTRACES_H__ + +#define KOstTraceComponentID 0x20000a0d + +#define GLXCOMMANDHANDLERREMOVEFROM_GLXCOMMANDHANDLERREMOVEFROM_ENTRY 0x8a0039 +#define GLXCOMMANDHANDLERREMOVEFROM_GLXCOMMANDHANDLERREMOVEFROM_EXIT 0x8a003a +#define DUP1_GLXCOMMANDHANDLERREMOVEFROM_GLXCOMMANDHANDLERREMOVEFROM_ENTRY 0x8a003b +#define DUP1_GLXCOMMANDHANDLERREMOVEFROM_GLXCOMMANDHANDLERREMOVEFROM_EXIT 0x8a003c +#define GLXCOMMANDHANDLERREMOVEFROM_CREATECOMMANDL_ENTRY 0x8a003d +#define GLXCOMMANDHANDLERREMOVEFROM_CREATECOMMANDL_EXIT 0x8a003e + + +#endif + +// End of file + diff -r 74c9f037fd5d -r 99ad1390cd33 traces/glxcommandhandlerrotateTraces.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/traces/glxcommandhandlerrotateTraces.h Fri Apr 16 14:58:46 2010 +0300 @@ -0,0 +1,37 @@ +// Created by TraceCompiler 2.1.2 +// DO NOT EDIT, CHANGES WILL BE LOST + +#ifndef __GLXCOMMANDHANDLERROTATETRACES_H__ +#define __GLXCOMMANDHANDLERROTATETRACES_H__ + +#define KOstTraceComponentID 0x20000a0d + +#define GLXCOMMANDHANDLERROTATE_GLXCOMMANDHANDLERROTATE_ENTRY 0x8a0025 +#define GLXCOMMANDHANDLERROTATE_GLXCOMMANDHANDLERROTATE_EXIT 0x8a0026 +#define DUP1_GLXCOMMANDHANDLERROTATE_GLXCOMMANDHANDLERROTATE_ENTRY 0x8a0027 +#define DUP1_GLXCOMMANDHANDLERROTATE_GLXCOMMANDHANDLERROTATE_EXIT 0x8a0028 +#define GLXCOMMANDHANDLERROTATE_CREATECOMMANDL_ENTRY 0x8a0029 +#define GLXCOMMANDHANDLERROTATE_CREATECOMMANDL_EXIT 0x8a002a +#define GLXCOMMANDHANDLERROTATE_DOEXECUTECOMMANDL_ENTRY 0x8a002b +#define GLXCOMMANDHANDLERROTATE_DOEXECUTECOMMANDL_EXIT 0x8a002c +#define GLXCOMMANDHANDLERROTATE_ROTATEIMAGEL_ENTRY 0x8a002d +#define GLXCOMMANDHANDLERROTATE_ROTATEIMAGEL_EXIT 0x8a002e +#define GLXCOMMANDHANDLERROTATE_INITIALIZEEXIFWRITERL_ENTRY 0x8a002f +#define GLXCOMMANDHANDLERROTATE_INITIALIZEEXIFWRITERL_EXIT 0x8a0030 +#define GLXCOMMANDHANDLERROTATE_READIMAGEORIENTATIONL_ENTRY 0x8a0031 +#define GLXCOMMANDHANDLERROTATE_READIMAGEORIENTATIONL_EXIT 0x8a0032 +#define GLXCOMMANDHANDLERROTATE_CALCULATEFINALORIENTATIONL_ENTRY 0x8a0033 +#define GLXCOMMANDHANDLERROTATE_CALCULATEFINALORIENTATIONL_EXIT 0x8a0034 +#define GLXCOMMANDHANDLERROTATE_SETIMAGEORIENTATIONL_ENTRY 0x8a0035 +#define GLXCOMMANDHANDLERROTATE_SETIMAGEORIENTATIONL_EXIT 0x8a0036 +#define GLXCOMMANDHANDLERROTATE_DESTROYEXIFWRITER_ENTRY 0x8a0037 +#define GLXCOMMANDHANDLERROTATE_DESTROYEXIFWRITER_EXIT 0x8a0038 +#define GLXCOMMANDHANDLERROTATE_DOEXECUTECOMMANDL 0x860004 +#define GLXCOMMANDHANDLERROTATE_READIMAGEORIENTATIONL 0x860005 +#define GLXCOMMANDHANDLERROTATE_CALCULATEFINALORIENTATIONL 0x860006 + + +#endif + +// End of file + diff -r 74c9f037fd5d -r 99ad1390cd33 traces/glxdetailsviewTraces.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/traces/glxdetailsviewTraces.h Fri Apr 16 14:58:46 2010 +0300 @@ -0,0 +1,50 @@ +// Created by TraceCompiler 2.1.2 +// DO NOT EDIT, CHANGES WILL BE LOST + +#ifndef __GLXDETAILSVIEWTRACES_H__ +#define __GLXDETAILSVIEWTRACES_H__ + +#define KOstTraceComponentID 0x200009ef + +#define GLXDETAILSVIEW_GLXDETAILSVIEW_ENTRY 0x8a0001 +#define GLXDETAILSVIEW_GLXDETAILSVIEW_EXIT 0x8a0002 +#define GLXDETAILSVIEW_ACTIVATE_ENTRY 0x8a0003 +#define GLXDETAILSVIEW_ACTIVATE_EXIT 0x8a0004 +#define GLXDETAILSVIEW_INITIALIZEVIEW_ENTRY 0x8a0005 +#define GLXDETAILSVIEW_INITIALIZEVIEW_EXIT 0x8a0006 +#define GLXDETAILSVIEW_DEACTIVATE_ENTRY 0x8a0007 +#define GLXDETAILSVIEW_DEACTIVATE_EXIT 0x8a0008 +#define GLXDETAILSVIEW_SETIMAGENAME_ENTRY 0x8a0009 +#define GLXDETAILSVIEW_SETIMAGENAME_EXIT 0x8a000a +#define GLXDETAILSVIEW_SETDATE_ENTRY 0x8a000b +#define GLXDETAILSVIEW_SETDATE_EXIT 0x8a000c +#define GLXDETAILSVIEW_GLXDETAILSVIEW 0x850001 +#define GLXDETAILSVIEW_RESETVIEW 0x860001 +#define GLXDETAILSVIEW_ADDWIDGETS 0x860002 +#define DUP1_GLXDETAILSVIEW_ADDWIDGETS 0x860003 +#define DUP2_GLXDETAILSVIEW_ADDWIDGETS 0x860004 +#define DUP3_GLXDETAILSVIEW_ADDWIDGETS 0x860005 +#define DUP5_GLXDETAILSVIEW_ADDWIDGETS 0x860006 +#define GLXDETAILSVIEW_SETMODEL 0x860007 +#define GLXDETAILSVIEW_GETANIMATIONITEM 0x860008 +#define GLXDETAILSVIEW_UPDATELAYOUT 0x860009 +#define DUP1_GLXDETAILSVIEW_UPDATELAYOUT 0x86000a +#define DUP2_GLXDETAILSVIEW_UPDATELAYOUT 0x86000b +#define GLXDETAILSVIEW_ROWSREMOVED 0x86000c +#define GLXDETAILSVIEW_SHOWIMAGE 0x86000d +#define DUP1_GLXDETAILSVIEW_SHOWIMAGE 0x86000e +#define DUP2_GLXDETAILSVIEW_SHOWIMAGE 0x86000f +#define GLXDETAILSVIEW_SETFORMDATA 0x860010 +#define GLXDETAILSVIEW_SETIMAGENAME 0x860011 +#define DUP1_GLXDETAILSVIEW_SETIMAGENAME 0x860012 +#define GLXDETAILSVIEW_SETDATE 0x860013 +#define DUP1_GLXDETAILSVIEW_SETDATE 0x860014 +#define DUP2_GLXDETAILSVIEW_SETDATE 0x860015 +#define GLXDETAILSVIEW_INITIALIZENEWMODEL 0x860016 +#define GLXDETAILSVIEW_CLEARCURRENTMODEL 0x860017 + + +#endif + +// End of file + diff -r 74c9f037fd5d -r 99ad1390cd33 traces/glxfullscreenviewTraces.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/traces/glxfullscreenviewTraces.h Fri Apr 16 14:58:46 2010 +0300 @@ -0,0 +1,125 @@ +// Created by TraceCompiler 2.1.2 +// DO NOT EDIT, CHANGES WILL BE LOST + +#ifndef __GLXFULLSCREENVIEWTRACES_H__ +#define __GLXFULLSCREENVIEWTRACES_H__ + +#define KOstTraceComponentID 0x200009ef + +#define GLXFULLSCREENVIEW_GLXFULLSCREENVIEW_ENTRY 0x8a000d +#define GLXFULLSCREENVIEW_GLXFULLSCREENVIEW_EXIT 0x8a000e +#define GLXFULLSCREENVIEW_INITIALIZEVIEW_ENTRY 0x8a000f +#define GLXFULLSCREENVIEW_INITIALIZEVIEW_EXIT 0x8a0010 +#define GLXFULLSCREENVIEW_LOADWIDGETS_ENTRY 0x8a0011 +#define GLXFULLSCREENVIEW_LOADWIDGETS_EXIT 0x8a0012 +#define GLXFULLSCREENVIEW_LOADFULLSCREENTOOLBAR_ENTRY 0x8a0013 +#define GLXFULLSCREENVIEW_LOADFULLSCREENTOOLBAR_EXIT 0x8a0014 +#define GLXFULLSCREENVIEW_ACTIVATE_ENTRY 0x8a0015 +#define GLXFULLSCREENVIEW_ACTIVATE_EXIT 0x8a0016 +#define GLXFULLSCREENVIEW_LOADVIEWSECTION_ENTRY 0x8a0017 +#define GLXFULLSCREENVIEW_LOADVIEWSECTION_EXIT 0x8a0018 +#define GLXFULLSCREENVIEW_RESETVIEW_ENTRY 0x8a0019 +#define GLXFULLSCREENVIEW_RESETVIEW_EXIT 0x8a001a +#define GLXFULLSCREENVIEW_DEACTIVATE_ENTRY 0x8a001b +#define GLXFULLSCREENVIEW_DEACTIVATE_EXIT 0x8a001c +#define GLXFULLSCREENVIEW_CLEANUP_ENTRY 0x8a001d +#define GLXFULLSCREENVIEW_CLEANUP_EXIT 0x8a001e +#define GLXFULLSCREENVIEW_SETMODEL_ENTRY 0x8a001f +#define GLXFULLSCREENVIEW_SETMODEL_EXIT 0x8a0020 +#define GLXFULLSCREENVIEW_SETMODELCONTEXT_ENTRY 0x8a0021 +#define GLXFULLSCREENVIEW_SETMODELCONTEXT_EXIT 0x8a0022 +#define GLXFULLSCREENVIEW_ORIENTATIONCHANGED_ENTRY 0x8a0023 +#define GLXFULLSCREENVIEW_ORIENTATIONCHANGED_EXIT 0x8a0024 +#define GLXFULLSCREENVIEW_ACTIVATEUI_ENTRY 0x8a0025 +#define GLXFULLSCREENVIEW_ACTIVATEUI_EXIT 0x8a0026 +#define GLXFULLSCREENVIEW_HIDEUI_ENTRY 0x8a0027 +#define GLXFULLSCREENVIEW_HIDEUI_EXIT 0x8a0028 +#define DUP1_GLXFULLSCREENVIEW_HIDEUI_EXIT 0x8a0029 +#define GLXFULLSCREENVIEW_CHANGESELECTEDINDEX_ENTRY 0x8a002a +#define GLXFULLSCREENVIEW_CHANGESELECTEDINDEX_EXIT 0x8a002b +#define DUP1_GLXFULLSCREENVIEW_CHANGESELECTEDINDEX_EXIT 0x8a002c +#define GLXFULLSCREENVIEW_INDEXCHANGED_ENTRY 0x8a002d +#define GLXFULLSCREENVIEW_INDEXCHANGED_EXIT 0x8a002e +#define DUP1_GLXFULLSCREENVIEW_INDEXCHANGED_EXIT 0x8a002f +#define GLXFULLSCREENVIEW_SCROLLINGSTARTED_ENTRY 0x8a0030 +#define GLXFULLSCREENVIEW_SCROLLINGSTARTED_EXIT 0x8a0031 +#define GLXFULLSCREENVIEW_SCROLLINGENDED_ENTRY 0x8a0032 +#define GLXFULLSCREENVIEW_SCROLLINGENDED_EXIT 0x8a0033 +#define GLXFULLSCREENVIEW_PRESSED_ENTRY 0x8a0034 +#define GLXFULLSCREENVIEW_PRESSED_EXIT 0x8a0035 +#define GLXFULLSCREENVIEW_RELEASED_ENTRY 0x8a0036 +#define GLXFULLSCREENVIEW_RELEASED_EXIT 0x8a0037 +#define GLXFULLSCREENVIEW_SETVISVALWINDOWINDEX_ENTRY 0x8a0038 +#define GLXFULLSCREENVIEW_SETVISVALWINDOWINDEX_EXIT 0x8a0039 +#define GLXFULLSCREENVIEW_COVERFLOWEVENTHANDLE_ENTRY 0x8a003a +#define GLXFULLSCREENVIEW_COVERFLOWEVENTHANDLE_EXIT 0x8a003b +#define GLXFULLSCREENVIEW_EFFECTFINISHED_ENTRY 0x8a003c +#define GLXFULLSCREENVIEW_EFFECTFINISHED_EXIT 0x8a003d +#define GLXFULLSCREENVIEW_IMAGESELECTIONEFFECTFINISHED_ENTRY 0x8a003e +#define GLXFULLSCREENVIEW_IMAGESELECTIONEFFECTFINISHED_EXIT 0x8a003f +#define GLXFULLSCREENVIEW_SETLAYOUT_ENTRY 0x8a0040 +#define GLXFULLSCREENVIEW_SETLAYOUT_EXIT 0x8a0041 +#define GLXFULLSCREENVIEW_ADDCONNECTION_ENTRY 0x8a0042 +#define GLXFULLSCREENVIEW_ADDCONNECTION_EXIT 0x8a0043 +#define GLXFULLSCREENVIEW_REMOVECONNECTION_ENTRY 0x8a0044 +#define GLXFULLSCREENVIEW_REMOVECONNECTION_EXIT 0x8a0045 +#define GLXFULLSCREENVIEW_SETIMAGESTRIPMODEL_ENTRY 0x8a0046 +#define GLXFULLSCREENVIEW_SETIMAGESTRIPMODEL_EXIT 0x8a0047 +#define DUP1_GLXFULLSCREENVIEW_GLXFULLSCREENVIEW_ENTRY 0x8a0048 +#define DUP1_GLXFULLSCREENVIEW_GLXFULLSCREENVIEW_EXIT 0x8a0049 +#define GLXFULLSCREENVIEW_HANDLEUSERACTION_ENTRY 0x8a004a +#define GLXFULLSCREENVIEW_HANDLEUSERACTION_EXIT 0x8a004b +#define GLXFULLSCREENVIEW_SETIMAGETOHDMIL_ENTRY 0x8a004c +#define GLXFULLSCREENVIEW_SETIMAGETOHDMIL_EXIT 0x8a004d +#define GLXFULLSCREENVIEW_IMAGESELECTIONANIMATION_ENTRY 0x8a004e +#define GLXFULLSCREENVIEW_IMAGESELECTIONANIMATION_EXIT 0x8a004f +#define GLXFULLSCREENVIEW_HANDLETOOLBARACTION_ENTRY 0x8a0050 +#define GLXFULLSCREENVIEW_HANDLETOOLBARACTION_EXIT 0x8a0051 +#define GLXFULLSCREENVIEW_ACTIVATE 0x860018 +#define GLXFULLSCREENVIEW_CLEANUP 0x860019 +#define DUP1_GLXFULLSCREENVIEW_CLEANUP 0x86001a +#define DUP2_GLXFULLSCREENVIEW_CLEANUP 0x86001b +#define GLXFULLSCREENVIEW_SETMODEL 0x86001c +#define GLXFULLSCREENVIEW_SETIMAGETOHDMIL 0x86001d +#define DUP1_GLXFULLSCREENVIEW_SETIMAGETOHDMIL 0x86001e + + +inline TBool OstTraceGen2( TUint32 aTraceID, TUint aParam1, TUint aParam2 ) + { + TBool retval = BTraceFiltered8( EXTRACT_GROUP_ID(aTraceID), EOstTraceActivationQuery, KOstTraceComponentID, aTraceID ); + if ( retval ) + { + TUint8 data[ 8 ]; + TUint8* ptr = data; + *( ( TUint* )ptr ) = aParam1; + ptr += sizeof ( TUint ); + *( ( TUint* )ptr ) = aParam2; + ptr += sizeof ( TUint ); + ptr -= 8; + retval = OstSendNBytes( EXTRACT_GROUP_ID(aTraceID), EOstTrace, KOstTraceComponentID, aTraceID, ptr, 8 ); + } + return retval; + } + +inline TBool OstTraceGen2( TUint32 aTraceID, TUint32 aParam1, TUint32 aParam2 ) + { + TBool retval = BTraceFiltered8( EXTRACT_GROUP_ID(aTraceID), EOstTraceActivationQuery, KOstTraceComponentID, aTraceID ); + if ( retval ) + { + TUint8 data[ 8 ]; + TUint8* ptr = data; + *( ( TUint* )ptr ) = aParam1; + ptr += sizeof ( TUint ); + *( ( TUint* )ptr ) = aParam2; + ptr += sizeof ( TUint ); + ptr -= 8; + retval = OstSendNBytes( EXTRACT_GROUP_ID(aTraceID), EOstTrace, KOstTraceComponentID, aTraceID, ptr, 8 ); + } + return retval; + } + + +#endif + +// End of file + diff -r 74c9f037fd5d -r 99ad1390cd33 traces/glxgridviewTraces.h --- a/traces/glxgridviewTraces.h Fri Mar 19 09:28:59 2010 +0200 +++ b/traces/glxgridviewTraces.h Fri Apr 16 14:58:46 2010 +0300 @@ -6,44 +6,40 @@ #define KOstTraceComponentID 0x200009ef -#define GLXGRIDVIEW_GLXGRIDVIEW_ENTRY 0x8a0001 -#define GLXGRIDVIEW_GLXGRIDVIEW_EXIT 0x8a0002 -#define GLXGRIDVIEW_ACTIVATE_ENTRY 0x8a0003 -#define GLXGRIDVIEW_ACTIVATE_EXIT 0x8a0004 -#define GLXGRIDVIEW_DEACTIVATE_ENTRY 0x8a0005 -#define GLXGRIDVIEW_DEACTIVATE_EXIT 0x8a0006 -#define GLXGRIDVIEW_SETMODEL_ENTRY 0x8a0007 -#define GLXGRIDVIEW_SETMODEL_EXIT 0x8a0008 -#define GLXGRIDVIEW_ADDTOOLBAR_ENTRY 0x8a0009 -#define GLXGRIDVIEW_ADDTOOLBAR_EXIT 0x8a000a -#define GLXGRIDVIEW_GETANIMATIONITEM_ENTRY 0x8a000b -#define GLXGRIDVIEW_GETANIMATIONITEM_EXIT 0x8a000c -#define GLXGRIDVIEW_LOADGRIDVIEW_ENTRY 0x8a000d -#define GLXGRIDVIEW_LOADGRIDVIEW_EXIT 0x8a000e -#define DUP1_GLXGRIDVIEW_GLXGRIDVIEW_ENTRY 0x8a000f -#define DUP1_GLXGRIDVIEW_GLXGRIDVIEW_EXIT 0x8a0010 -#define GLXGRIDVIEW_ENABLEMARKING 0x860001 -#define GLXGRIDVIEW_DISABLEMARKING 0x860002 -#define GLXGRIDVIEW_HANDLEUSERACTION 0x860003 -#define DUP1_GLXGRIDVIEW_HANDLEUSERACTION 0x860004 -#define DUP2_GLXGRIDVIEW_HANDLEUSERACTION 0x860005 -#define GLXGRIDVIEW_GETSELECTIONMODEL 0x860006 -#define GLXGRIDVIEW_ITEMDESTROYED 0x860007 -#define GLXGRIDVIEW_ITEMCHANGE 0x860008 -#define GLXGRIDVIEW_ADDVIEWCONNECTION 0x860009 -#define GLXGRIDVIEW_REMOVEVIEWCONNECTION 0x86000a -#define GLXGRIDVIEW_ITEMSELECTED 0x86000b -#define GLXGRIDVIEW_INDICATELONGPRESS 0x86000c +#define GLXGRIDVIEW_GLXGRIDVIEW_ENTRY 0x8a0052 +#define GLXGRIDVIEW_GLXGRIDVIEW_EXIT 0x8a0053 +#define GLXGRIDVIEW_ACTIVATE_ENTRY 0x8a0054 +#define GLXGRIDVIEW_ACTIVATE_EXIT 0x8a0055 +#define GLXGRIDVIEW_DEACTIVATE_ENTRY 0x8a0056 +#define GLXGRIDVIEW_DEACTIVATE_EXIT 0x8a0057 +#define GLXGRIDVIEW_SETMODEL_ENTRY 0x8a0058 +#define GLXGRIDVIEW_SETMODEL_EXIT 0x8a0059 +#define GLXGRIDVIEW_ADDTOOLBAR_ENTRY 0x8a005a +#define GLXGRIDVIEW_ADDTOOLBAR_EXIT 0x8a005b +#define GLXGRIDVIEW_GETANIMATIONITEM_ENTRY 0x8a005c +#define GLXGRIDVIEW_GETANIMATIONITEM_EXIT 0x8a005d +#define GLXGRIDVIEW_LOADGRIDVIEW_ENTRY 0x8a005e +#define GLXGRIDVIEW_LOADGRIDVIEW_EXIT 0x8a005f +#define DUP1_GLXGRIDVIEW_GLXGRIDVIEW_ENTRY 0x8a0060 +#define DUP1_GLXGRIDVIEW_GLXGRIDVIEW_EXIT 0x8a0061 +#define GLXGRIDVIEW_SETVISVALWINDOWINDEX 0x850002 +#define DUP1_GLXGRIDVIEW_SETVISVALWINDOWINDEX 0x850003 +#define DUP2_GLXGRIDVIEW_SETVISVALWINDOWINDEX 0x850004 +#define DUP3_GLXGRIDVIEW_SETVISVALWINDOWINDEX 0x850005 +#define GLXGRIDVIEW_ENABLEMARKING 0x86001f +#define GLXGRIDVIEW_DISABLEMARKING 0x860020 +#define GLXGRIDVIEW_HANDLEUSERACTION 0x860021 +#define DUP1_GLXGRIDVIEW_HANDLEUSERACTION 0x860022 +#define DUP2_GLXGRIDVIEW_HANDLEUSERACTION 0x860023 +#define GLXGRIDVIEW_GETSELECTIONMODEL 0x860024 +#define GLXGRIDVIEW_ITEMDESTROYED 0x860025 +#define GLXGRIDVIEW_ITEMCHANGE 0x860026 +#define GLXGRIDVIEW_ADDVIEWCONNECTION 0x860027 +#define GLXGRIDVIEW_REMOVEVIEWCONNECTION 0x860028 +#define GLXGRIDVIEW_ITEMSELECTED 0x860029 +#define GLXGRIDVIEW_INDICATELONGPRESS 0x86002a #define EVENT_DUP1_GLXGRIDVIEW_ITEMSELECTED_START 0x8b0001 #define EVENT_DUP1_GLXGRIDVIEW_ITEMSELECTED_STOP 0x8b0002 -#define GLXGRIDVIEW_SETVISVALWINDOWINDEX 0x850001 -#define DUP1_GLXGRIDVIEW_SETVISVALWINDOWINDEX 0x850002 -#define DUP2_GLXGRIDVIEW_SETVISVALWINDOWINDEX 0x850003 -#define DUP3_GLXGRIDVIEW_SETVISVALWINDOWINDEX 0x850004 -#define DUP1_GLXGRIDVIEW_SCROLLPOSITIONCHANGE 0x850005 -#define GLXGRIDVIEW_SCROLLPOSITIONCHANGE 0x850006 -#define DUP2_GLXGRIDVIEW_SCROLLPOSITIONCHANGE 0x850007 -#define DUP3_GLXGRIDVIEW_SCROLLPOSITIONCHANGE 0x850008 inline TBool OstTraceGen2( TUint32 aTraceID, TInt aParam1, TUint aParam2 ) @@ -81,59 +77,6 @@ } -inline TBool OstTraceGen2( TUint32 aTraceID, TReal aParam1, TReal aParam2 ) - { - TBool retval = BTraceFiltered8( EXTRACT_GROUP_ID(aTraceID), EOstTraceActivationQuery, KOstTraceComponentID, aTraceID ); - if ( retval ) - { - TUint8 data[ 16 ]; - TUint8* ptr = data; - *( ( TReal* )ptr ) = aParam1; - ptr += sizeof ( TReal ); - *( ( TReal* )ptr ) = aParam2; - ptr += sizeof ( TReal ); - ptr -= 16; - retval = OstSendNBytes( EXTRACT_GROUP_ID(aTraceID), EOstTrace, KOstTraceComponentID, aTraceID, ptr, 16 ); - } - return retval; - } - - -inline TBool OstTraceGen2( TUint32 aTraceID, TInt aParam1, TInt aParam2 ) - { - TBool retval = BTraceFiltered8( EXTRACT_GROUP_ID(aTraceID), EOstTraceActivationQuery, KOstTraceComponentID, aTraceID ); - if ( retval ) - { - TUint8 data[ 8 ]; - TUint8* ptr = data; - *( ( TInt* )ptr ) = aParam1; - ptr += sizeof ( TInt ); - *( ( TInt* )ptr ) = aParam2; - ptr += sizeof ( TInt ); - ptr -= 8; - retval = OstSendNBytes( EXTRACT_GROUP_ID(aTraceID), EOstTrace, KOstTraceComponentID, aTraceID, ptr, 8 ); - } - return retval; - } - -inline TBool OstTraceGen2( TUint32 aTraceID, TInt32 aParam1, TInt32 aParam2 ) - { - TBool retval = BTraceFiltered8( EXTRACT_GROUP_ID(aTraceID), EOstTraceActivationQuery, KOstTraceComponentID, aTraceID ); - if ( retval ) - { - TUint8 data[ 8 ]; - TUint8* ptr = data; - *( ( TInt* )ptr ) = aParam1; - ptr += sizeof ( TInt ); - *( ( TInt* )ptr ) = aParam2; - ptr += sizeof ( TInt ); - ptr -= 8; - retval = OstSendNBytes( EXTRACT_GROUP_ID(aTraceID), EOstTrace, KOstTraceComponentID, aTraceID, ptr, 8 ); - } - return retval; - } - - #endif // End of file diff -r 74c9f037fd5d -r 99ad1390cd33 traces/glxmpxcommandhandlerTraces.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/traces/glxmpxcommandhandlerTraces.h Fri Apr 16 14:58:46 2010 +0300 @@ -0,0 +1,54 @@ +// Created by TraceCompiler 2.1.2 +// DO NOT EDIT, CHANGES WILL BE LOST + +#ifndef __GLXMPXCOMMANDHANDLERTRACES_H__ +#define __GLXMPXCOMMANDHANDLERTRACES_H__ + +#define KOstTraceComponentID 0x20000a11 + +#define GLXMPXCOMMANDHANDLER_GLXMPXCOMMANDHANDLER_ENTRY 0x8a0005 +#define GLXMPXCOMMANDHANDLER_GLXMPXCOMMANDHANDLER_EXIT 0x8a0006 +#define DUP1_GLXMPXCOMMANDHANDLER_GLXMPXCOMMANDHANDLER_ENTRY 0x8a0007 +#define DUP1_GLXMPXCOMMANDHANDLER_GLXMPXCOMMANDHANDLER_EXIT 0x8a0008 +#define GLXMPXCOMMANDHANDLER_EXECUTECOMMAND_ENTRY 0x8a0009 +#define GLXMPXCOMMANDHANDLER_EXECUTECOMMAND_EXIT 0x8a000a +#define GLXMPXCOMMANDHANDLER_CREATEMEDIALISTL_ENTRY 0x8a000b +#define GLXMPXCOMMANDHANDLER_CREATEMEDIALISTL_EXIT 0x8a000c +#define GLXMPXCOMMANDHANDLER_CREATEMEDIALISTALBUMITEML_ENTRY 0x8a000d +#define GLXMPXCOMMANDHANDLER_CREATEMEDIALISTALBUMITEML_EXIT 0x8a000e +#define GLXMPXCOMMANDHANDLER_HANDLEITEMADDEDL_ENTRY 0x8a000f +#define GLXMPXCOMMANDHANDLER_HANDLEITEMADDEDL_EXIT 0x8a0010 +#define GLXMPXCOMMANDHANDLER_HANDLEMEDIAL_ENTRY 0x8a0011 +#define GLXMPXCOMMANDHANDLER_HANDLEMEDIAL_EXIT 0x8a0012 +#define GLXMPXCOMMANDHANDLER_HANDLEITEMREMOVEDL_ENTRY 0x8a0013 +#define GLXMPXCOMMANDHANDLER_HANDLEITEMREMOVEDL_EXIT 0x8a0014 +#define GLXMPXCOMMANDHANDLER_HANDLEITEMMODIFIEDL_ENTRY 0x8a0015 +#define GLXMPXCOMMANDHANDLER_HANDLEITEMMODIFIEDL_EXIT 0x8a0016 +#define GLXMPXCOMMANDHANDLER_HANDLEATTRIBUTESAVAILABLEL_ENTRY 0x8a0017 +#define GLXMPXCOMMANDHANDLER_HANDLEATTRIBUTESAVAILABLEL_EXIT 0x8a0018 +#define GLXMPXCOMMANDHANDLER_HANDLEFOCUSCHANGEDL_ENTRY 0x8a0019 +#define GLXMPXCOMMANDHANDLER_HANDLEFOCUSCHANGEDL_EXIT 0x8a001a +#define GLXMPXCOMMANDHANDLER_HANDLEITEMSELECTEDL_ENTRY 0x8a001b +#define GLXMPXCOMMANDHANDLER_HANDLEITEMSELECTEDL_EXIT 0x8a001c +#define GLXMPXCOMMANDHANDLER_HANDLEMESSAGEL_ENTRY 0x8a001d +#define GLXMPXCOMMANDHANDLER_HANDLEMESSAGEL_EXIT 0x8a001e +#define GLXMPXCOMMANDHANDLER_HANDLECOMMANDCOMPLETEL_ENTRY 0x8a001f +#define GLXMPXCOMMANDHANDLER_HANDLECOMMANDCOMPLETEL_EXIT 0x8a0020 +#define GLXMPXCOMMANDHANDLER_HANDLEERROR_ENTRY 0x8a0021 +#define GLXMPXCOMMANDHANDLER_HANDLEERROR_EXIT 0x8a0022 +#define GLXMPXCOMMANDHANDLER_DOHANDLECOMMANDCOMPLETEL_ENTRY 0x8a0023 +#define GLXMPXCOMMANDHANDLER_DOHANDLECOMMANDCOMPLETEL_EXIT 0x8a0024 +#define GLXMPXCOMMANDHANDLER_DOEXECUTECOMMANDL_ENTRY 0x8a0025 +#define GLXMPXCOMMANDHANDLER_DOEXECUTECOMMANDL_EXIT 0x8a0026 +#define GLXMPXCOMMANDHANDLER_TRYEXITL_ENTRY 0x8a0027 +#define GLXMPXCOMMANDHANDLER_TRYEXITL_EXIT 0x8a0028 +#define GLXMPXCOMMANDHANDLER_HANDLEERRORL_ENTRY 0x8a0029 +#define GLXMPXCOMMANDHANDLER_HANDLEERRORL_EXIT 0x8a002a +#define DUP2_GLXMPXCOMMANDHANDLER_EXECUTECOMMAND 0x860001 +#define DUP3_GLXMPXCOMMANDHANDLER_EXECUTECOMMAND 0x860002 + + +#endif + +// End of file + diff -r 74c9f037fd5d -r 99ad1390cd33 tsrc/unittest/unittest_medialistwrapper/unittest_medialistwrapper.cpp --- a/tsrc/unittest/unittest_medialistwrapper/unittest_medialistwrapper.cpp Fri Mar 19 09:28:59 2010 +0200 +++ b/tsrc/unittest/unittest_medialistwrapper/unittest_medialistwrapper.cpp Fri Apr 16 14:58:46 2010 +0300 @@ -122,7 +122,7 @@ QVERIFY(icon == NULL); // After adding grid context should get grid icon - mTestObject->setContextMode(GlxContextGrid); + mTestObject->setContextMode(GlxContextPtGrid); QTest::qWait(2000); icon = mTestObject->retrieveItemIcon(itemIndex,GlxTBContextGrid); QVERIFY(icon != NULL); @@ -133,7 +133,7 @@ qDebug("TestGlxMLWrapper::testRetrieveItemUri enter"); int count = mTestObject->getItemCount(); - mTestObject->setContextMode(GlxContextGrid); + mTestObject->setContextMode(GlxContextPtGrid); QTest::qWait(20000); QString uri = mTestObject->retrieveItemUri(count-1); qDebug("TestGlxMLWrapper::testRetrieveItemUri =%d",uri.isEmpty()); @@ -145,7 +145,7 @@ qDebug("TestGlxMLWrapper::testRetrieveItemUriName enter"); int count = mTestObject->getItemCount(); - mTestObject->setContextMode(GlxContextGrid); + mTestObject->setContextMode(GlxContextPtGrid); QTest::qWait(20000); QString uri = mTestObject->retrieveItemUri(count-1); @@ -173,7 +173,7 @@ QVERIFY(icon != NULL); // Should get grid icon - mTestObject->setContextMode(GlxContextGrid); + mTestObject->setContextMode(GlxContextPtGrid); QTest::qWait(2000); icon = mTestObject->retrieveItemIcon(itemIndex,GlxTBContextGrid); QVERIFY(icon != NULL); @@ -184,7 +184,7 @@ { qDebug("TestGlxMLWrapper::testRetrieveItemDateIsNotNull enter"); int count = mTestObject->getItemCount(); - mTestObject->setContextMode(GlxContextGrid); + mTestObject->setContextMode(GlxContextPtGrid); QTest::qWait(20000); QDate date = mTestObject->retrieveItemDate(count-1); @@ -197,7 +197,7 @@ { qDebug("TestGlxMLWrapper::testRetrieveItemDateIsValid enter"); int count = mTestObject->getItemCount(); - mTestObject->setContextMode(GlxContextGrid); + mTestObject->setContextMode( GlxContextPtGrid ); QTest::qWait(20000); QDate date = mTestObject->retrieveItemDate(count-1); @@ -212,7 +212,7 @@ { qDebug("TestGlxMLWrapper::testRetrieveItemDateValidate enter"); int count = mTestObject->getItemCount(); - mTestObject->setContextMode(GlxContextGrid); + mTestObject->setContextMode( GlxContextPtGrid ); QTest::qWait(20000); QDate date = mTestObject->retrieveItemDate(count-1); diff -r 74c9f037fd5d -r 99ad1390cd33 tvout/bwins/glxtvoutu.def --- a/tvout/bwins/glxtvoutu.def Fri Mar 19 09:28:59 2010 +0200 +++ b/tvout/bwins/glxtvoutu.def Fri Apr 16 14:58:46 2010 +0300 @@ -1,16 +1,17 @@ EXPORTS - ?ScreenSizeL@CGlxTv@@QBE?AVTSize@@XZ @ 1 NONAME ; class TSize CGlxTv::ScreenSizeL(void) const - ??1CGlxTv@@UAE@XZ @ 2 NONAME ; CGlxTv::~CGlxTv(void) - ??1CGlxHdmiController@@UAE@XZ @ 3 NONAME ; CGlxHdmiController::~CGlxHdmiController(void) - ?NewL@CGlxHdmiController@@SAPAV1@XZ @ 4 NONAME ; class CGlxHdmiController * CGlxHdmiController::NewL(void) - ?SetImageL@CGlxHdmiController@@QAEXABVTDesC16@@VTSize@@HH@Z @ 5 NONAME ; void CGlxHdmiController::SetImageL(class TDesC16 const &, class TSize, int, int) + ?ActivateZoom@CGlxHdmiController@@QAEXH@Z @ 1 NONAME ; void CGlxHdmiController::ActivateZoom(int) + ?ScreenSizeL@CGlxTv@@QBE?AVTSize@@XZ @ 2 NONAME ; class TSize CGlxTv::ScreenSizeL(void) const + ??1CGlxTv@@UAE@XZ @ 3 NONAME ; CGlxTv::~CGlxTv(void) + ??1CGlxHdmiController@@UAE@XZ @ 4 NONAME ; CGlxHdmiController::~CGlxHdmiController(void) + ?NewL@CGlxHdmiController@@SAPAV1@XZ @ 5 NONAME ; class CGlxHdmiController * CGlxHdmiController::NewL(void) ?IsWidescreen@CGlxTv@@QBEHXZ @ 6 NONAME ; int CGlxTv::IsWidescreen(void) const - ?ShiftToPostingMode@CGlxHdmiController@@QAEXXZ @ 7 NONAME ; void CGlxHdmiController::ShiftToPostingMode(void) - ?ShiftToCloningMode@CGlxHdmiController@@QAEXXZ @ 8 NONAME ; void CGlxHdmiController::ShiftToCloningMode(void) - ?NewL@CGlxTv@@SAPAV1@AAVMGlxTvObserver@@@Z @ 9 NONAME ; class CGlxTv * CGlxTv::NewL(class MGlxTvObserver &) - ?IsConnected@CGlxTv@@QBEHXZ @ 10 NONAME ; int CGlxTv::IsConnected(void) const - ?IsVideo@CGlxHdmiController@@QAEXXZ @ 11 NONAME ; void CGlxHdmiController::IsVideo(void) - ?IsHDMIConnected@CGlxTv@@QBEHXZ @ 12 NONAME ; int CGlxTv::IsHDMIConnected(void) const - ?ActivateZoom@CGlxHdmiController@@QAEXXZ @ 13 NONAME ; void CGlxHdmiController::ActivateZoom(void) - ?DeactivateZoom@CGlxHdmiController@@QAEXXZ @ 14 NONAME ; void CGlxHdmiController::DeactivateZoom(void) + ?IsHDMIConnected@CGlxHdmiController@@QAEHXZ @ 7 NONAME ; int CGlxHdmiController::IsHDMIConnected(void) + ?ShiftToPostingMode@CGlxHdmiController@@QAEXXZ @ 8 NONAME ; void CGlxHdmiController::ShiftToPostingMode(void) + ?ShiftToCloningMode@CGlxHdmiController@@QAEXXZ @ 9 NONAME ; void CGlxHdmiController::ShiftToCloningMode(void) + ?SetImageL@CGlxHdmiController@@QAEXABVTDesC16@@H@Z @ 10 NONAME ; void CGlxHdmiController::SetImageL(class TDesC16 const &, int) + ?NewL@CGlxTv@@SAPAV1@AAVMGlxTvObserver@@@Z @ 11 NONAME ; class CGlxTv * CGlxTv::NewL(class MGlxTvObserver &) + ?IsConnected@CGlxTv@@QBEHXZ @ 12 NONAME ; int CGlxTv::IsConnected(void) const + ?ItemNotSupported@CGlxHdmiController@@QAEXXZ @ 13 NONAME ; void CGlxHdmiController::ItemNotSupported(void) + ?IsHDMIConnected@CGlxTv@@QBEHXZ @ 14 NONAME ; int CGlxTv::IsHDMIConnected(void) const + ?DeactivateZoom@CGlxHdmiController@@QAEXXZ @ 15 NONAME ; void CGlxHdmiController::DeactivateZoom(void) diff -r 74c9f037fd5d -r 99ad1390cd33 tvout/eabi/glxtvoutu.def --- a/tvout/eabi/glxtvoutu.def Fri Mar 19 09:28:59 2010 +0200 +++ b/tvout/eabi/glxtvoutu.def Fri Apr 16 14:58:46 2010 +0300 @@ -1,28 +1,29 @@ EXPORTS - _ZN18CGlxHdmiController12ActivateZoomEv @ 1 NONAME + _ZN18CGlxHdmiController12ActivateZoomEi @ 1 NONAME _ZN18CGlxHdmiController14DeactivateZoomEv @ 2 NONAME - _ZN18CGlxHdmiController18ShiftToCloningModeEv @ 3 NONAME - _ZN18CGlxHdmiController18ShiftToPostingModeEv @ 4 NONAME - _ZN18CGlxHdmiController4NewLEv @ 5 NONAME - _ZN18CGlxHdmiController7IsVideoEv @ 6 NONAME - _ZN18CGlxHdmiController9SetImageLERK7TDesC165TSizeii @ 7 NONAME - _ZN18CGlxHdmiControllerD0Ev @ 8 NONAME - _ZN18CGlxHdmiControllerD1Ev @ 9 NONAME - _ZN18CGlxHdmiControllerD2Ev @ 10 NONAME - _ZN6CGlxTv4NewLER14MGlxTvObserver @ 11 NONAME - _ZN6CGlxTvD0Ev @ 12 NONAME - _ZN6CGlxTvD1Ev @ 13 NONAME - _ZN6CGlxTvD2Ev @ 14 NONAME - _ZNK6CGlxTv11IsConnectedEv @ 15 NONAME - _ZNK6CGlxTv11ScreenSizeLEv @ 16 NONAME - _ZNK6CGlxTv12IsWidescreenEv @ 17 NONAME - _ZNK6CGlxTv15IsHDMIConnectedEv @ 18 NONAME - _ZTI17CGlxHdmiContainer @ 19 NONAME - _ZTI17CGlxHdmiDecoderAO @ 20 NONAME - _ZTI18CGlxHdmiController @ 21 NONAME - _ZTI22CGlxHdmiSurfaceUpdater @ 22 NONAME - _ZTV17CGlxHdmiContainer @ 23 NONAME - _ZTV17CGlxHdmiDecoderAO @ 24 NONAME - _ZTV18CGlxHdmiController @ 25 NONAME - _ZTV22CGlxHdmiSurfaceUpdater @ 26 NONAME + _ZN18CGlxHdmiController15IsHDMIConnectedEv @ 3 NONAME + _ZN18CGlxHdmiController16ItemNotSupportedEv @ 4 NONAME + _ZN18CGlxHdmiController18ShiftToCloningModeEv @ 5 NONAME + _ZN18CGlxHdmiController18ShiftToPostingModeEv @ 6 NONAME + _ZN18CGlxHdmiController4NewLEv @ 7 NONAME + _ZN18CGlxHdmiController9SetImageLERK7TDesC16i @ 8 NONAME + _ZN18CGlxHdmiControllerD0Ev @ 9 NONAME + _ZN18CGlxHdmiControllerD1Ev @ 10 NONAME + _ZN18CGlxHdmiControllerD2Ev @ 11 NONAME + _ZN6CGlxTv4NewLER14MGlxTvObserver @ 12 NONAME + _ZN6CGlxTvD0Ev @ 13 NONAME + _ZN6CGlxTvD1Ev @ 14 NONAME + _ZN6CGlxTvD2Ev @ 15 NONAME + _ZNK6CGlxTv11IsConnectedEv @ 16 NONAME + _ZNK6CGlxTv11ScreenSizeLEv @ 17 NONAME + _ZNK6CGlxTv12IsWidescreenEv @ 18 NONAME + _ZNK6CGlxTv15IsHDMIConnectedEv @ 19 NONAME + _ZTI17CGlxHdmiContainer @ 20 NONAME + _ZTI17CGlxHdmiDecoderAO @ 21 NONAME + _ZTI18CGlxHdmiController @ 22 NONAME + _ZTI22CGlxHdmiSurfaceUpdater @ 23 NONAME + _ZTV17CGlxHdmiContainer @ 24 NONAME + _ZTV17CGlxHdmiDecoderAO @ 25 NONAME + _ZTV18CGlxHdmiController @ 26 NONAME + _ZTV22CGlxHdmiSurfaceUpdater @ 27 NONAME diff -r 74c9f037fd5d -r 99ad1390cd33 tvout/inc/glxactivedecoder.h --- a/tvout/inc/glxactivedecoder.h Fri Mar 19 09:28:59 2010 +0200 +++ b/tvout/inc/glxactivedecoder.h Fri Apr 16 14:58:46 2010 +0300 @@ -33,10 +33,8 @@ /* * NewL() * @Param1 CGlxHdmiSurfaceUpdater - * @param2 framecount */ - static CGlxHdmiDecoderAO* NewL(CGlxHdmiSurfaceUpdater* aHdmiSurfaceUpdater, - TInt aFrameCount); + static CGlxHdmiDecoderAO* NewL(CGlxHdmiSurfaceUpdater* aHdmiSurfaceUpdater); /* * Destructor @@ -47,25 +45,24 @@ * ConvertImageL() * This calls the asyncronous service request to ICL convert * @param1 - Destination Bitmap - * @param2 - Framecount - * @param3 - Image decoder + * @param2 - Image decoder */ - void ConvertImageL(CFbsBitmap& iBitmap, TInt aFrameNum,CImageDecoder* aDecoder); + void ConvertImageL(CFbsBitmap& iBitmap,CImageDecoder* aDecoder); + protected: // from CActive void RunL(); void DoCancel(); + private: /* * Constructor */ - CGlxHdmiDecoderAO(CGlxHdmiSurfaceUpdater* aHdmiSurfaceUpdater,TInt aFrameCount); + CGlxHdmiDecoderAO(CGlxHdmiSurfaceUpdater* aHdmiSurfaceUpdater); private: CGlxHdmiSurfaceUpdater* iHdmiSurfaceUpdater; // not owned CImageDecoder* iDecoder; - TInt iFrameCount; - TInt iDecodeCount; }; #endif /* GLXACTIVEDECODER_H_ */ diff -r 74c9f037fd5d -r 99ad1390cd33 tvout/inc/glxhdmicontroller.h --- a/tvout/inc/glxhdmicontroller.h Fri Mar 19 09:28:59 2010 +0200 +++ b/tvout/inc/glxhdmicontroller.h Fri Apr 16 14:58:46 2010 +0300 @@ -46,21 +46,18 @@ /* * Update Image * @param1 - Image file path - * @param2 - Image dimensions - * @param3 - frame count */ - IMPORT_C void SetImageL(const TDesC& aImageFile,TSize aImageDimensions, - TInt aFrameCount = 1, TBool aStore = ETrue); + IMPORT_C void SetImageL(const TDesC& aImageFile, TBool aStore = ETrue); /* - * To Determine it is a video and not image + * To intimate that the item is not supported. */ - IMPORT_C void IsVideo(); + IMPORT_C void ItemNotSupported(); /* * Activating zoom in posting mode */ - IMPORT_C void ActivateZoom(); + IMPORT_C void ActivateZoom(TBool aAutoZoomOut); /* * Deactivating zoom in posting mode */ @@ -76,6 +73,11 @@ */ IMPORT_C void ShiftToPostingMode(); + /* + * Tells if HDMi is Connected. + */ + IMPORT_C TBool IsHDMIConnected(); + private:// From MGlxTvObserver virtual void HandleTvStatusChangedL ( TTvChangeType aChangeType ); @@ -97,12 +99,9 @@ /* * Create surface updater and update background surface - * @param1 - Image file - * @param2 - Image dimensions - * @param3 - framecount + * @param1 - Image file */ - void CreateSurfaceUpdaterL(const TDesC& aImageFile, TSize aImageDimensions, - TInt aFrameCount); + void CreateSurfaceUpdaterL(const TDesC& aImageFile); /* * To Destroy the surface updater if present @@ -115,16 +114,14 @@ void DestroyContainer(); /* - * + * Stores the Image File name + * @param1 - Image file */ - void StoreImageInfoL(const TDesC& aImageFile, - TSize aImageDimensions, TInt aFrameCount); + void StoreImageInfoL(const TDesC& aImageFile); private: HBufC* iStoredImagePath; - TSize iImageDimensions; - TInt iFrameCount; - + CGlxHdmiContainer* iHdmiContainer; CGlxHdmiSurfaceUpdater* iSurfaceUpdater; CGlxTv* iGlxTvOut; diff -r 74c9f037fd5d -r 99ad1390cd33 tvout/inc/glxhdmisurfaceupdater.h --- a/tvout/inc/glxhdmisurfaceupdater.h Fri Mar 19 09:28:59 2010 +0200 +++ b/tvout/inc/glxhdmisurfaceupdater.h Fri Apr 16 14:58:46 2010 +0300 @@ -42,12 +42,13 @@ * */ static CGlxHdmiSurfaceUpdater* NewL(RWindow* aWindow, const TDesC& aImageFile, - TSize aImageDimensions, TInt aFrameCount, MGlxGenCallback* aCallBack); + MGlxGenCallback* aCallBack); /* * destructor */ ~CGlxHdmiSurfaceUpdater(); + public: /* * This is to cancel the active object from decoding @@ -57,13 +58,12 @@ /* * This updates the new image. */ - void UpdateNewImageL(const TDesC& aImageFile, - TInt aFrameCount,TSize aImageDimensions); + void UpdateNewImageL(const TDesC& aImageFile); /* * Activate Zoom */ - void ActivateZoom(); + void ActivateZoom(TBool aAutoZoomOut); /* * Deactivate Zoom */ @@ -88,12 +88,12 @@ * Ctor */ CGlxHdmiSurfaceUpdater(RWindow* aWindow, const TDesC& aImageFile, - TSize aOrigImageDimensions, TInt aFrameCount, MGlxGenCallback* aCallBack); + MGlxGenCallback* aCallBack); /* * ConstructL() */ - void ConstructL(TSize aImageDimensions); + void ConstructL(); /* * Create a New surface with given size @@ -123,7 +123,7 @@ /* * Create bitmap */ - void CreateBitmapAndStartDecodingL(); + void CreateBitmapL(); /* * Create an image decoder with given file @@ -144,23 +144,9 @@ * ModifySurface positions of the surface to be displayed on screen */ void ModifySurfacePostion(); - - static TInt TimerCallbackL(TAny* aThis); - - /* - * - */ - void ProcessTimerEventL(); - - /* - * - */ - void ProcessTvImageL(); private: RWindow* iWindow; const TDesC& iImagePath; - TSize iOrigImageDimensions; - TInt iFrameCount; MGlxGenCallback* iCallBack; // GCE Surface @@ -172,7 +158,7 @@ TSurfaceConfiguration iConfig; // surface configuration for zoom TSize iZoomRectSz ; - CFbsBitmap* iDecodedBitmap[15]; //Decoded bitmap of the focussed image + CFbsBitmap* iDecodedBitmap; //Decoded bitmap of the focussed image void* iSurfBuffer; // Surface buffer CGlxActiveCallBack* iSurfBufferAO; // Surface buffer AO @@ -180,14 +166,14 @@ //ICL CGlxHdmiDecoderAO* iGlxDecoderAO; // Internal Image decoder AO CImageDecoder* iImageDecoder; // Image Decoder - TInt iAnimCount; // animation count RFs iFsSession; // RFs TPoint iLeftCornerForZoom; CPeriodic* iTimer; - CPeriodic* iAnimationTimer; TBool iZoom; TBool iBitmapReady; + TBool iAutoZoomOut; + TBool iSurfSessionConnected; #ifdef _DEBUG TTime iStartTime; TTime iStopTime; diff -r 74c9f037fd5d -r 99ad1390cd33 tvout/src/glxactivedecoder.cpp --- a/tvout/src/glxactivedecoder.cpp Fri Mar 19 09:28:59 2010 +0200 +++ b/tvout/src/glxactivedecoder.cpp Fri Apr 16 14:58:46 2010 +0300 @@ -22,24 +22,20 @@ // ----------------------------------------------------------------------------- // NewL // ----------------------------------------------------------------------------- -CGlxHdmiDecoderAO* CGlxHdmiDecoderAO::NewL(CGlxHdmiSurfaceUpdater* aHdmiSurfaceUpdater, - TInt aFrameCount) +CGlxHdmiDecoderAO* CGlxHdmiDecoderAO::NewL(CGlxHdmiSurfaceUpdater* aHdmiSurfaceUpdater) { TRACER("CGlxHdmiDecoderAO::NewL()"); - CGlxHdmiDecoderAO* self = new (ELeave) CGlxHdmiDecoderAO(aHdmiSurfaceUpdater, - aFrameCount); + CGlxHdmiDecoderAO* self = new (ELeave) CGlxHdmiDecoderAO(aHdmiSurfaceUpdater); return self; } // ----------------------------------------------------------------------------- // CGlxHdmiDecoderAO() // ----------------------------------------------------------------------------- -CGlxHdmiDecoderAO::CGlxHdmiDecoderAO(CGlxHdmiSurfaceUpdater* aHdmiSurfaceUpdater, - TInt aFrameCount):CActive(CActive::EPriorityStandard-1), - iHdmiSurfaceUpdater(aHdmiSurfaceUpdater), iFrameCount(aFrameCount) +CGlxHdmiDecoderAO::CGlxHdmiDecoderAO(CGlxHdmiSurfaceUpdater* aHdmiSurfaceUpdater): + CActive(CActive::EPriorityStandard-1),iHdmiSurfaceUpdater(aHdmiSurfaceUpdater) { TRACER("CGlxHdmiDecoderAO::CGlxHdmiDecoderAO()"); - iDecodeCount = 0; CActiveScheduler::Add(this); } @@ -83,18 +79,12 @@ // ----------------------------------------------------------------------------- // ConvertImageL // ----------------------------------------------------------------------------- -void CGlxHdmiDecoderAO::ConvertImageL(CFbsBitmap& aBitmap, TInt aFrameNum, - CImageDecoder* aDecoder) +void CGlxHdmiDecoderAO::ConvertImageL(CFbsBitmap& aBitmap, + CImageDecoder* aDecoder) { TRACER("CGlxHdmiDecoderAO::ConvertImageL()"); - if (iDecoder) - { - GLX_LOG_INFO("CGlxHdmiDecoderAO::ConvertImageL() -1"); - iDecoder = NULL; - } iDecoder = aDecoder; - GLX_LOG_INFO1("CGlxHdmiDecoderAO::ConvertImageL() FrameNo=%d",aFrameNum); - iDecoder->Convert(&iStatus,aBitmap, aFrameNum); + iDecoder->Convert(&iStatus,aBitmap); SetActive(); } diff -r 74c9f037fd5d -r 99ad1390cd33 tvout/src/glxhdmicontroller.cpp --- a/tvout/src/glxhdmicontroller.cpp Fri Mar 19 09:28:59 2010 +0200 +++ b/tvout/src/glxhdmicontroller.cpp Fri Apr 16 14:58:46 2010 +0300 @@ -59,35 +59,34 @@ // Setting an Image Path // ----------------------------------------------------------------------------- EXPORT_C void CGlxHdmiController::SetImageL(const TDesC& aImageFile, - TSize aImageDimensions, TInt aFrameCount, TBool aStore) + TBool aStore) { TRACER("CGlxHdmiController::SetImageL()"); - GLX_LOG_INFO2("CGlxHdmiController::SetImageL() - imagedimension width=%d, height=%d",aImageDimensions.iWidth,aImageDimensions.iHeight); if (aStore) { iIsImageSupported = ETrue; - StoreImageInfoL(aImageFile, aImageDimensions, aFrameCount); + StoreImageInfoL(aImageFile); } if (iGlxTvOut->IsHDMIConnected()) { iIsPostingMode = ETrue; - GLX_LOG_INFO("CGlxHdmiController::SetImageL() - 2"); - // do not close the surface , use the same surface instead. - // Call a function to pass imagefile, imagedimension, framecount - if (!iHdmiContainer) - { - CreateHdmiContainerL(); - } - if (!iSurfaceUpdater) - { - // This case would come when surface updater is not created at the first instance and also - // it satisfies the 720p condition - CreateSurfaceUpdaterL(aImageFile, aImageDimensions, aFrameCount); - } - else - { - GLX_LOG_INFO1("CGlxHdmiController::SetImageL() FrameCount =%d",aFrameCount); - iSurfaceUpdater->UpdateNewImageL(aImageFile, aFrameCount,aImageDimensions); + GLX_LOG_INFO("CGlxHdmiController::SetImageL() - 2"); + // do not close the surface , use the same surface instead. + // Call a function to pass imagefile + if (!iHdmiContainer) + { + CreateHdmiContainerL(); + } + if (!iSurfaceUpdater) + { + // This case would come when surface updater is not created at the first instance and also + // it satisfies the 720p condition + CreateSurfaceUpdaterL(aImageFile); + } + else + { + GLX_LOG_INFO("CGlxHdmiController::SetImageL() - 3"); + iSurfaceUpdater->UpdateNewImageL(aImageFile); } iHdmiContainer->DrawNow(); } @@ -96,7 +95,7 @@ // ----------------------------------------------------------------------------- // IsVideo // ----------------------------------------------------------------------------- -EXPORT_C void CGlxHdmiController::IsVideo() +EXPORT_C void CGlxHdmiController::ItemNotSupported() { TRACER("CGlxHdmiController::IsVideo()"); iIsImageSupported = EFalse; @@ -110,12 +109,12 @@ // ----------------------------------------------------------------------------- // ActivateZoom // ----------------------------------------------------------------------------- -EXPORT_C void CGlxHdmiController::ActivateZoom() +EXPORT_C void CGlxHdmiController::ActivateZoom(TBool aAutoZoomOut) { TRACER("CGlxHdmiController::ActivateZoom()"); if (iGlxTvOut->IsHDMIConnected()) { - iSurfaceUpdater->ActivateZoom(); + iSurfaceUpdater->ActivateZoom(aAutoZoomOut); } } @@ -137,10 +136,10 @@ EXPORT_C void CGlxHdmiController::ShiftToCloningMode() { TRACER("CGlxHdmiController::ShiftToCloningMode()"); + iIsPostingMode = EFalse; if (iGlxTvOut->IsHDMIConnected() && iSurfaceUpdater) { iSurfaceUpdater->ShiftToCloningMode(); - iIsPostingMode = EFalse; } } @@ -150,10 +149,10 @@ EXPORT_C void CGlxHdmiController::ShiftToPostingMode() { TRACER("CGlxHdmiController::ShiftToPostingMode()"); + iIsPostingMode = ETrue; if (iGlxTvOut->IsHDMIConnected() && iSurfaceUpdater) { iSurfaceUpdater->ShiftToPostingMode(); - iIsPostingMode = ETrue; } } @@ -217,21 +216,19 @@ // ----------------------------------------------------------------------------- // CreateSurfaceUpdaterL // ----------------------------------------------------------------------------- -void CGlxHdmiController::CreateSurfaceUpdaterL(const TDesC& aImageFile, - TSize aImageDimensions, TInt aFrameCount) +void CGlxHdmiController::CreateSurfaceUpdaterL(const TDesC& aImageFile) { TRACER("CGlxHdmiController::CreateSurfaceUpdater()"); RWindow* window = iHdmiContainer->GetWindow(); - iSurfaceUpdater = CGlxHdmiSurfaceUpdater::NewL(window, aImageFile, aImageDimensions, - aFrameCount, iHdmiContainer); + iSurfaceUpdater = CGlxHdmiSurfaceUpdater::NewL(window, aImageFile, + iHdmiContainer); iHdmiContainer->DrawNow(); } // ----------------------------------------------------------------------------- // StoreImageInfoL // ----------------------------------------------------------------------------- -void CGlxHdmiController::StoreImageInfoL(const TDesC& aImageFile, - TSize aImageDimensions, TInt aFrameCount) +void CGlxHdmiController::StoreImageInfoL(const TDesC& aImageFile) { TRACER("CGlxHdmiController::StoreImageInfoL()"); if(iStoredImagePath) @@ -240,9 +237,6 @@ iStoredImagePath = NULL; } iStoredImagePath = aImageFile.AllocL(); - iImageDimensions = aImageDimensions; - iFrameCount = aFrameCount; - GLX_LOG_INFO1("CGlxHdmiController::StoreImageInfoL() FrameCount =%d",iFrameCount); } // ----------------------------------------------------------------------------- @@ -257,7 +251,7 @@ { GLX_LOG_INFO("CGlxHdmiController::HandleTvStatusChangedL() - HDMI Connected"); // Calling SetImageL() with appropriate parameters - SetImageL(iStoredImagePath->Des(), iImageDimensions, iFrameCount, EFalse); + SetImageL(iStoredImagePath->Des(), EFalse); } else { @@ -268,3 +262,12 @@ } } +// ----------------------------------------------------------------------------- +// HandleTvStatusChangedL +// ----------------------------------------------------------------------------- +EXPORT_C TBool CGlxHdmiController::IsHDMIConnected() + { + TRACER("CGlxHdmiController::IsHDMIConnected()"); + return iGlxTvOut->IsHDMIConnected(); + } + diff -r 74c9f037fd5d -r 99ad1390cd33 tvout/src/glxhdmisurfaceupdater.cpp --- a/tvout/src/glxhdmisurfaceupdater.cpp Fri Mar 19 09:28:59 2010 +0200 +++ b/tvout/src/glxhdmisurfaceupdater.cpp Fri Apr 16 14:58:46 2010 +0300 @@ -38,19 +38,17 @@ const TInt KMaxZoomLimit = 100; //evey time we zoom , there is a increase in the ht amd width by 10 pixels. const TInt KSingleStepForZoom = 10; - -const TInt KSleepTime = 50*1000; // 100 ms // ----------------------------------------------------------------------------- // NewLC // ----------------------------------------------------------------------------- CGlxHdmiSurfaceUpdater* CGlxHdmiSurfaceUpdater::NewL(RWindow* aWindow, const TDesC& aImageFile, - TSize aImageDimensions, TInt aFrameCount, MGlxGenCallback* aCallBack) + MGlxGenCallback* aCallBack) { TRACER("CGlxHdmiSurfaceUpdater* CGlxHdmiSurfaceUpdater::NewL()"); CGlxHdmiSurfaceUpdater* self = new (ELeave) CGlxHdmiSurfaceUpdater(aWindow, aImageFile, - aImageDimensions, aFrameCount, aCallBack); + aCallBack); CleanupStack::PushL(self); - self->ConstructL(aImageDimensions); + self->ConstructL(); CleanupStack::Pop(self); return self; } @@ -80,7 +78,10 @@ if (iSurfManager) { GLX_LOG_INFO("CGlxHdmiSurfaceUpdater::~CGlxHdmiSurfaceUpdater() - Close"); - iSurfUpdateSession.Close(); + if(iSurfSessionConnected) + { + iSurfUpdateSession.Close(); + } if (iSurfChunk) { iSurfChunk->Close(); @@ -106,37 +107,37 @@ { iGlxDecoderAO->Cancel(); } - // Delete the animation timer - if(iAnimationTimer && iAnimationTimer->IsActive()) - { - iAnimationTimer->Cancel(); - delete iAnimationTimer; - } - for (TInt i=0; i<= iFrameCount-1; i++) + + if ( iDecodedBitmap ) { - GLX_LOG_INFO1("CGlxHdmiSurfaceUpdater::ReleaseContent(). Releasing AnimBitmaps %d", i); - delete(iDecodedBitmap[i]); - iDecodedBitmap[i] = NULL; + delete iDecodedBitmap; + iDecodedBitmap= NULL; } - if ( iSurfBufferAO->IsActive() ) + + if(iSurfBufferAO && iSurfBufferAO->IsActive()) { - iSurfBufferAO->Cancel(); + iSurfBufferAO->Cancel(); } + if ( iImageDecoder ) { delete iImageDecoder; iImageDecoder = NULL; } - iSurfUpdateSession.CancelAllUpdateNotifications(); + + if (iSurfSessionConnected && iSurfManager) + { + iSurfUpdateSession.CancelAllUpdateNotifications(); + } } // ----------------------------------------------------------------------------- // CTor // ----------------------------------------------------------------------------- -CGlxHdmiSurfaceUpdater::CGlxHdmiSurfaceUpdater(RWindow* aWindow, const TDesC& aImageFile, - TSize aOrigImageDimensions, TInt aFrameCount, MGlxGenCallback* aCallBack): - iWindow(aWindow), iImagePath(aImageFile), iOrigImageDimensions(aOrigImageDimensions), - iFrameCount(aFrameCount ),iCallBack(aCallBack) +CGlxHdmiSurfaceUpdater::CGlxHdmiSurfaceUpdater(RWindow* aWindow, + const TDesC& aImageFile, MGlxGenCallback* aCallBack): + iWindow(aWindow), iImagePath(aImageFile), + iCallBack(aCallBack) { TRACER("CGlxHdmiSurfaceUpdater::CGlxHdmiSurfaceUpdater()"); // Implement nothing here @@ -145,30 +146,30 @@ // ----------------------------------------------------------------------------- // ConstructL // ----------------------------------------------------------------------------- -void CGlxHdmiSurfaceUpdater::ConstructL(TSize /*aImageDimensions*/) +void CGlxHdmiSurfaceUpdater::ConstructL() { TRACER("CGlxHdmiSurfaceUpdater::ConstructL()"); TInt error = iFsSession.Connect (); - if ( KErrNone!= iFsSession.Connect () ) - { - User::LeaveIfError(error); - } + GLX_LOG_INFO1("CGlxHdmiSurfaceUpdater::ConstructL() FsSession Connect error = %d", error); + User::LeaveIfError(error); + iBitmapReady = EFalse; - iAnimCount = 0; // Create the active object - iGlxDecoderAO = CGlxHdmiDecoderAO::NewL(this, iFrameCount); + iGlxDecoderAO = CGlxHdmiDecoderAO::NewL(this); CreateImageDecoderL(iImagePath); - CreateBitmapAndStartDecodingL(); + CreateBitmapL(); CreateHdmiL(); error = iSurfUpdateSession.Connect(); + GLX_LOG_INFO1("CGlxHdmiSurfaceUpdater::ConstructL() Surface update Session Connect error = %d", error); + User::LeaveIfError(error); + iSurfSessionConnected = ETrue; + #ifdef _DEBUG iStartTime.HomeTime(); #endif - if (KErrNone !=error) - { - GLX_LOG_INFO1("CGlxHdmiSurfaceUpdater::ConstructL() Surface update Session Connect Failed with error = %d", error); - User::LeaveIfError(error); - } + //start decoding the image + iGlxDecoderAO->ConvertImageL(*iDecodedBitmap,iImageDecoder); + iLeftCornerForZoom.iX = 0; iLeftCornerForZoom.iY = 0; iTimer = CPeriodic::NewL( CActive::EPriorityStandard ); @@ -178,23 +179,28 @@ // ----------------------------------------------------------------------------- // UpdateNewImageL // ----------------------------------------------------------------------------- -void CGlxHdmiSurfaceUpdater::UpdateNewImageL(const TDesC& aImageFile, - TInt aFrameCount,TSize aImageDimensions) +void CGlxHdmiSurfaceUpdater::UpdateNewImageL(const TDesC& aImageFile) { TRACER("CGlxHdmiSurfaceUpdater::UpdateNewImageL()"); - // First release the contents before proceeding further - ReleaseContent(); - iOrigImageDimensions = aImageDimensions; - iFrameCount = aFrameCount; + //Cancel the zoom timers if any + if(iTimer->IsActive()) + { + GLX_LOG_INFO("CGlxHdmiSurfaceUpdater::UpdateNewImageL() - Cancel Timer"); + iTimer->Cancel(); + } + iBitmapReady = EFalse; - iAnimCount = 0; - + iLeftCornerForZoom.iX = 0; + iLeftCornerForZoom.iY = 0; + ReleaseContent(); CreateImageDecoderL(aImageFile); - CreateBitmapAndStartDecodingL(); + CreateBitmapL(); CreateHdmiL(EFalse); #ifdef _DEBUG iStartTime.HomeTime(); #endif + //start decoding the image + iGlxDecoderAO->ConvertImageL(*iDecodedBitmap,iImageDecoder); } // ----------------------------------------------------------------------------- @@ -228,11 +234,9 @@ TSize surfaceSize = iWindow->Size(); // create surface of the screen size, i.e 1280x720 iSurfManager = new(ELeave) RSurfaceManager(); TInt error = iSurfManager->Open(); - if (error != KErrNone) - { - GLX_LOG_INFO1("CGlxHdmiSurfaceUpdater::CreateSurfaceL Open Surface manager failed with error = %d", error); - User::LeaveIfError(error); - } + GLX_LOG_INFO1("CGlxHdmiSurfaceUpdater::CreateSurfaceL Open Surface manager error = %d", error); + User::LeaveIfError(error); + RSurfaceManager::TSurfaceCreationAttributesBuf attributes; attributes().iPixelFormat = EUidPixelFormatARGB_8888;// EUidPixelFormatYUV_420Planar; attributes().iSize = surfaceSize; @@ -244,11 +248,9 @@ attributes().iMappable = ETrue; error = iSurfManager->CreateSurface(attributes, iSurfId); - if(error) - { - GLX_LOG_INFO1("CGlxHdmiSurfaceUpdater::CreateSurfaceL, Creating surface failed with error : %d",error); - User::LeaveIfError(error); - } + GLX_LOG_INFO1("CGlxHdmiSurfaceUpdater::CreateSurfaceL, Creating surface error : %d",error); + User::LeaveIfError(error); + //Map the surface and stride the surface info MapSurfaceL(); // Set the Configuration to the surface ID when creating a surface @@ -266,17 +268,17 @@ iSurfChunk = new(ELeave) RChunk(); User::LeaveIfNull(iSurfChunk); TInt error = iSurfManager->MapSurface(iSurfId, *iSurfChunk); - if(error!=KErrNone) - { - GLX_LOG_INFO1("CGlxHdmiSurfaceUpdater::CreateSurfaceL(), MapSurface Failed wint error : %d",error); - } + GLX_LOG_INFO1("CGlxHdmiSurfaceUpdater::MapSurfaceL(), MapSurface error : %d",error); + User::LeaveIfError(error); // Get the info from the surfaceManager // and store pointers to the pixel data RSurfaceManager::TInfoBuf info; - error = iSurfManager->SurfaceInfo(iSurfId, info); - iSurfaceStride = info().iStride; + error = iSurfManager->SurfaceInfo(iSurfId, info); + GLX_LOG_INFO1("CGlxHdmiSurfaceUpdater::MapSurfaceL(), SurfaceInfo error : %d",error); User::LeaveIfError(error); + + iSurfaceStride = info().iStride; TInt offset = 0; iSurfManager->GetBufferOffset( iSurfId, 0,offset); iSurfBuffer = iSurfChunk->Base()+offset; @@ -297,12 +299,6 @@ void CGlxHdmiSurfaceUpdater::Refresh() { TRACER("CGlxHdmiSurfaceUpdater::Refresh()"); - // Advance animation - // if the animation count is becoming maximum [8], then set it to zero, - // such that it can animate again frm begining - if (++iAnimCount >= iFrameCount) - iAnimCount = 0; - GLX_LOG_INFO1("CGlxHdmiSurfaceUpdater::Refresh() animCOunt = %d",iAnimCount); // copy the decoded bitmap on to the surface SwapBuffers(); // Modify the surface position with respect to the buffer size @@ -319,15 +315,15 @@ void CGlxHdmiSurfaceUpdater::SwapBuffers() { TRACER("CGlxHdmiSurfaceUpdater::SwapBuffers()"); - GLX_LOG_INFO1("CGlxHdmiSurfaceUpdater::SwapBuffers() animCOunt = %d",iAnimCount); + // Lock the heap so that subsequent call to dataaddress doesnt happen - iDecodedBitmap[iAnimCount]->LockHeap(); + iDecodedBitmap->LockHeap(); // Data stride - TUint fs = iDecodedBitmap[iAnimCount]->DataStride(); + TUint fs = iDecodedBitmap->DataStride(); //Bitmap address from where the data has to be copied. - TUint8* from = (TUint8*)iDecodedBitmap[iAnimCount]->DataAddress(); + TUint8* from = (TUint8*)iDecodedBitmap->DataAddress(); //surface chunk address to where the bitmap data has to be copied. TUint8* to = (TUint8*)iSurfBuffer; @@ -335,70 +331,53 @@ // To buffer (32 bit colors) TUint ts = iSurfaceStride; //No of bytes to be copied on to the surface. - TUint bytes = iDecodedBitmap[iAnimCount]->SizeInPixels().iWidth * KMulFactorToCreateBitmap; + TUint bytes = iDecodedBitmap->SizeInPixels().iWidth * KMulFactorToCreateBitmap; GLX_LOG_INFO2("CGlxHdmiSurfaceUpdater::SwapBuffers() - decodeSize width = %d and height %d", - iDecodedBitmap[iAnimCount]->SizeInPixels().iWidth, iDecodedBitmap[iAnimCount]->SizeInPixels().iHeight ); + iDecodedBitmap->SizeInPixels().iWidth, iDecodedBitmap->SizeInPixels().iHeight ); // Copy the bitmap on to the surface. - for (TInt y = iDecodedBitmap[iAnimCount]->SizeInPixels().iHeight; y >0; y--) + for (TInt y = iDecodedBitmap->SizeInPixels().iHeight; y >0; y--) { Mem::Copy(to, from, bytes); to += ts; from += fs; } - iDecodedBitmap[iAnimCount]->UnlockHeap(); + iDecodedBitmap->UnlockHeap(); } // ----------------------------------------------------------------------------- // CreateBitmapL // ----------------------------------------------------------------------------- -void CGlxHdmiSurfaceUpdater::CreateBitmapAndStartDecodingL() +void CGlxHdmiSurfaceUpdater::CreateBitmapL() { - TRACER("CGlxHdmiSurfaceUpdater::CreateBitmapAndStartDecodingL()"); + TRACER("CGlxHdmiSurfaceUpdater::CreateBitmapL()"); TSize scrnSize = iWindow->Size(); TSize targetBitmapSize; - if (iFrameCount>1) - { - iAnimationTimer = CPeriodic::NewL( CActive::EPriorityLow ); - } - -// if (iFrameCount >1) -// { -// // For Gif images , use the same size of its dimensions, as Image decoder wont decode to different size. -// GLX_LOG_INFO("CGlxHdmiSurfaceUpdater::CreateBitmapAndStartDecodingL() -1"); -// targetBitmapSize = iOrigImageDimensions; -// } -// else -// { - // for all other images, re calculate the size of the image based on aspect ratio and fit the screen - GLX_LOG_INFO("CGlxHdmiSurfaceUpdater::CreateBitmapAndStartDecodingL() -2"); - GLX_LOG_INFO2("CGlxHdmiSurfaceUpdater::CreateBitmapAndStartDecodingL() - bitmapsize=%d, %d",iOrigImageDimensions.iWidth,iOrigImageDimensions.iHeight); + TSize imageSize = iImageDecoder->FrameInfo().iOverallSizeInPixels; + GLX_LOG_INFO2("CGlxHdmiSurfaceUpdater::StartImageDecodeL() - bitmapsize=%d, %d",imageSize.iWidth,imageSize.iHeight); TReal32 scaleFactor = 0.0f; - if (scrnSize.iWidth * iOrigImageDimensions.iHeight > scrnSize.iHeight - * iOrigImageDimensions.iWidth) + if (scrnSize.iWidth * imageSize.iHeight > scrnSize.iHeight + * imageSize.iWidth) { scaleFactor = (TReal32) scrnSize.iHeight - / (TReal32) iOrigImageDimensions.iHeight; + / (TReal32) imageSize.iHeight; } else { scaleFactor = (TReal32) scrnSize.iWidth - / (TReal32) iOrigImageDimensions.iWidth; + / (TReal32) imageSize.iWidth; } - GLX_LOG_INFO1("CGlxHdmiSurfaceUpdater::CreateBitmapAndStartDecodingL() - scaleFactor=%f",scaleFactor); - targetBitmapSize.iHeight = iOrigImageDimensions.iHeight * scaleFactor; - targetBitmapSize.iWidth = iOrigImageDimensions.iWidth * scaleFactor; -// } - GLX_LOG_INFO2("CGlxHdmiSurfaceUpdater::CreateBitmapAndStartDecodingL() - targetBitmapSize=%d, %d",targetBitmapSize.iWidth,targetBitmapSize.iHeight); + GLX_LOG_INFO1("CGlxHdmiSurfaceUpdater::StartImageDecodeL() - scaleFactor=%f",scaleFactor); + targetBitmapSize.iHeight = imageSize.iHeight * scaleFactor; + targetBitmapSize.iWidth = imageSize.iWidth * scaleFactor; + + GLX_LOG_INFO2("CGlxHdmiSurfaceUpdater::StartImageDecodeL() - targetBitmapSize=%d, %d",targetBitmapSize.iWidth,targetBitmapSize.iHeight); //create the bitmap for the required size - iDecodedBitmap[iAnimCount] = new (ELeave) CFbsBitmap(); + iDecodedBitmap = new (ELeave) CFbsBitmap(); - TInt err = iDecodedBitmap[iAnimCount]->Create(targetBitmapSize, EColor16MU); - User::LeaveIfNull(iDecodedBitmap[iAnimCount]); - GLX_LOG_INFO2("CGlxHdmiSurfaceUpdater::CreateBitmapAndStartDecodingL() FrameCOunt = %d, AnimCOunt =%d",iFrameCount, iAnimCount); - //start decoding the image - iGlxDecoderAO->ConvertImageL(*iDecodedBitmap[iAnimCount],iAnimCount,iImageDecoder); + TInt err = iDecodedBitmap->Create(targetBitmapSize, EColor16MU); + User::LeaveIfNull(iDecodedBitmap); } // ----------------------------------------------------------------------------- @@ -408,98 +387,71 @@ { TRACER("CGlxHdmiSurfaceUpdater::HandleRunL()"); - if (iFrameCount >1 && iAnimCount !=iFrameCount-1) +#ifdef _DEBUG + iStopTime.HomeTime(); + GLX_LOG_INFO1("CGlxHdmiSurfaceUpdater::HandleRunL() ConvertImageL took" + " <%d> us", (TInt)iStopTime.MicroSecondsFrom(iStartTime).Int64()); +#endif + if(aStatus.Int() !=KErrNone) { - GLX_LOG_INFO2("CGlxHdmiSurfaceUpdater::HandleRunL() - gif image - iAnimCount= %d,FrameCOunt =%d",iAnimCount,iFrameCount); - while(iAnimCount != iFrameCount-1 && !iGlxDecoderAO->IsActive()) - { - iAnimCount++; - GLX_LOG_INFO1("CGlxHdmiSurfaceUpdater::HandleRunL() - gif image - iAnimCount= %d",iAnimCount); - CreateBitmapAndStartDecodingL(); - } + GLX_LOG_INFO("HandleRunL - Convert failed"); + ShiftToCloningMode(); } else - { -#ifdef _DEBUG - iStopTime.HomeTime(); - GLX_LOG_INFO1("CGlxHdmiSurfaceUpdater::HandleRunL() ConvertImageL took" - " <%d> us", (TInt)iStopTime.MicroSecondsFrom(iStartTime).Int64()); -#endif - if(aStatus.Int() !=KErrNone) + { + iZoomRectSz = iDecodedBitmap->SizeInPixels(); + if (iSurfBufferAO->iStatus != KRequestPending + && !iSurfBufferAO->IsActive()) { - GLX_LOG_INFO1("HandleRunL - Convert failed with error=%d",aStatus.Int()); - ShiftToCloningMode(); + Refresh(); + iSurfBufferAO->iStatus = KRequestPending; + iSurfBufferAO->SetActive(); + iSurfUpdateSession.NotifyWhenAvailable(iSurfBufferAO->iStatus); + TInt err = iSurfUpdateSession.SubmitUpdate(1, iSurfId, 0, NULL); } - else - { - iBitmapReady = ETrue; - iZoomRectSz = iDecodedBitmap[iAnimCount]->SizeInPixels(); - ProcessTvImageL(); - } - //release imagedecoder after the conversion is over - if(iImageDecoder) - { - delete iImageDecoder; - iImageDecoder = NULL; - } + iBitmapReady = ETrue; + } + //release imagedecoder after the conversion is over + if(iImageDecoder) + { + delete iImageDecoder; + iImageDecoder = NULL; } } // ----------------------------------------------------------------------------- // CreateImageDecoderL // ----------------------------------------------------------------------------- -void CGlxHdmiSurfaceUpdater::ProcessTvImageL() - { - TRACER("CGlxHdmiSurfaceUpdater::ProcessTvImageL()"); - if (iSurfBufferAO->iStatus != KRequestPending - && !iSurfBufferAO->IsActive()) - { - Refresh(); - iSurfBufferAO->iStatus = KRequestPending; - iSurfBufferAO->SetActive(); - iSurfUpdateSession.NotifyWhenAvailable(iSurfBufferAO->iStatus); - TInt err = iSurfUpdateSession.SubmitUpdate(1, iSurfId, 0, NULL); - // If the Animation framecount is more that 1, it means this is a gif image, - // start the timer to refresh the TV - if (iFrameCount>1) - { - GLX_LOG_INFO1("CGlxHdmiSurfaceUpdater::ProcessTvImageL() :Gif Image, ANimCOUnt =%d",iAnimCount); - iAnimationTimer->Cancel(); - - // Next frame - iAnimationTimer->Start(KSleepTime, KSleepTime, TCallBack(TimerCallbackL, this)); - } - } - } -// ----------------------------------------------------------------------------- -// CreateImageDecoderL -// ----------------------------------------------------------------------------- void CGlxHdmiSurfaceUpdater::CreateImageDecoderL(const TDesC& aImageFile) { TRACER("CGlxHdmiController::CreateImageDecoderL()"); // Create a decoder for the image in the named file TRAPD(error,iImageDecoder = CImageDecoder::FileNewL(iFsSession, aImageFile, CImageDecoder::EOptionNone, KNullUid)); - if (error!=KErrNone) - { - User::Leave(error); - } + GLX_LOG_INFO1("CreateImageDecoderL CImageDecoder:FileNewL error %d",error); + User::LeaveIfError(error); + } // ----------------------------------------------------------------------------- // ActivateZoom // ----------------------------------------------------------------------------- -void CGlxHdmiSurfaceUpdater::ActivateZoom() +void CGlxHdmiSurfaceUpdater::ActivateZoom(TBool aAutoZoomOut) { TRACER("CGlxHdmiSurfaceUpdater::ActivateZoom()"); iZoom = ETrue; - if (!(iFrameCount >1)) + iAutoZoomOut = aAutoZoomOut; + if(iTimer->IsActive()) { - if(!iTimer->IsActive() && iBitmapReady) - { - iTimer->Start(KZoomDelay,KZoomDelay,TCallBack( TimeOut,this )); - } + GLX_LOG_INFO("CGlxHdmiSurfaceUpdater::ActivateZoom() - Cancel Timer"); + iTimer->Cancel(); } + + if(!iTimer->IsActive() && iBitmapReady) + { + GLX_LOG_INFO("CGlxHdmiSurfaceUpdater::ActivateZoom() - Start Timer"); + iTimer->Start(KZoomDelay,KZoomDelay,TCallBack( TimeOut,this )); + } } // ----------------------------------------------------------------------------- @@ -508,13 +460,18 @@ void CGlxHdmiSurfaceUpdater::DeactivateZoom() { TRACER("CGlxHdmiSurfaceUpdater::DeactivateZoom()"); - if(iDecodedBitmap[iAnimCount] && !(iFrameCount >1)) + + if(iTimer->IsActive()) { - TSize bitmapsize = iDecodedBitmap[iAnimCount]->SizeInPixels(); - iConfig.SetViewport(TRect(0,0,bitmapsize.iWidth,bitmapsize.iHeight)); - iConfig.SetExtent(TRect(0,0,bitmapsize.iWidth,bitmapsize.iHeight)); - iWindow->SetBackgroundSurface(iConfig, ETrue); + GLX_LOG_INFO("CGlxHdmiSurfaceUpdater::DeactivateZoom() - Cancel Timer"); + iTimer->Cancel(); } + if(!iTimer->IsActive() && iBitmapReady && iLeftCornerForZoom.iX) + { + GLX_LOG_INFO("CGlxHdmiSurfaceUpdater::DeactivateZoom() - Start Timer"); + iZoom = EFalse; + iTimer->Start(KZoomDelay,KZoomDelay,TCallBack( TimeOut,this )); + } } // --------------------------------------------------------------------------- @@ -536,33 +493,26 @@ } // ----------------------------------------------------------------------------- -// TimerCallbackL -// ----------------------------------------------------------------------------- -TInt CGlxHdmiSurfaceUpdater::TimerCallbackL(TAny* aThis) - { - TRACER("CGlxHdmiSurfaceUpdater::TimerCallbackL()"); - static_cast(aThis)->ProcessTimerEventL(); - return NULL; - } - -// ----------------------------------------------------------------------------- -// ProcessTimerEventL -// ----------------------------------------------------------------------------- -void CGlxHdmiSurfaceUpdater::ProcessTimerEventL() - { - TRACER("CGlxHdmiSurfaceUpdater::ProcessTimerEventL()"); - ProcessTvImageL(); - } - -// ----------------------------------------------------------------------------- // Zoom // ----------------------------------------------------------------------------- void CGlxHdmiSurfaceUpdater::Zoom(TBool aZoom) { TRACER("CGlxHdmiSurfaceUpdater::Zoom()"); + + if(!iBitmapReady) + { + return; + } + if(iLeftCornerForZoom.iX == KMaxZoomLimit) { iZoom = EFalse; + //If autozoomout is not set then cancel the timer and do + //the zoom out on DeactivateZoom. + if(!iAutoZoomOut) + { + iTimer->Cancel(); + } } if(aZoom && iZoom) { @@ -598,7 +548,7 @@ void CGlxHdmiSurfaceUpdater::ModifySurfacePostion() { TRACER("CGlxHdmiSurfaceUpdater::ModifySurfacePostion()"); - TSize bitmapSize = iDecodedBitmap[iAnimCount]->SizeInPixels(); + TSize bitmapSize = iDecodedBitmap->SizeInPixels(); TPoint startPoint(0,0); if (bitmapSize.iWidth const &, class MGlxMediaList *) - ?DoHandleCommandCompleteL@GlxMpxCommandHandler@@MAEXPAXPAVCMPXMedia@@HPAVMGlxMediaList@@@Z @ 17 NONAME ; void GlxMpxCommandHandler::DoHandleCommandCompleteL(void *, class CMPXMedia *, int, class MGlxMediaList *) + ?HandleItemSelectedL@GlxMpxCommandHandler@@MAEXHHPAVMGlxMediaList@@@Z @ 1 NONAME ; void GlxMpxCommandHandler::HandleItemSelectedL(int, int, class MGlxMediaList *) + ?CreateMediaListAlbumItemL@GlxMpxCommandHandler@@AAEXHHW4TGlxFilterItemType@@@Z @ 2 NONAME ; void GlxMpxCommandHandler::CreateMediaListAlbumItemL(int, int, enum TGlxFilterItemType) + ??_EGlxCommandHandler@@UAE@I@Z @ 3 NONAME ; GlxCommandHandler::~GlxCommandHandler(unsigned int) + ??1GlxCommandHandler@@UAE@XZ @ 4 NONAME ; GlxCommandHandler::~GlxCommandHandler(void) + ?ConfirmationNoteL@GlxMpxCommandHandler@@ABE_NAAVMGlxMediaList@@@Z @ 5 NONAME ; bool GlxMpxCommandHandler::ConfirmationNoteL(class MGlxMediaList &) const + ?executeCommand@GlxModelCommandHandler@@UAEXHHV?$QList@VQModelIndex@@@@@Z @ 6 NONAME ; void GlxModelCommandHandler::executeCommand(int, int, class QList) + ?CompletionNoteL@GlxMpxCommandHandler@@ABEXXZ @ 7 NONAME ; void GlxMpxCommandHandler::CompletionNoteL(void) const + ?ProgressTextL@GlxMpxCommandHandler@@MBE?AVQString@@XZ @ 8 NONAME ; class QString GlxMpxCommandHandler::ProgressTextL(void) const + ?HandleCommandCompleteL@GlxMpxCommandHandler@@MAEXPAXPAVCMPXMedia@@HPAVMGlxMediaList@@@Z @ 9 NONAME ; void GlxMpxCommandHandler::HandleCommandCompleteL(void *, class CMPXMedia *, int, class MGlxMediaList *) + ?TryExitL@GlxMpxCommandHandler@@AAEXH@Z @ 10 NONAME ; void GlxMpxCommandHandler::TryExitL(int) + ?HandleMediaL@GlxMpxCommandHandler@@MAEXHPAVMGlxMediaList@@@Z @ 11 NONAME ; void GlxMpxCommandHandler::HandleMediaL(int, class MGlxMediaList *) + ?HandleErrorL@GlxMpxCommandHandler@@MAEXH@Z @ 12 NONAME ; void GlxMpxCommandHandler::HandleErrorL(int) + ??0GlxModelCommandHandler@@QAE@XZ @ 13 NONAME ; GlxModelCommandHandler::GlxModelCommandHandler(void) + ?ConfirmationNoteMultipleL@GlxMpxCommandHandler@@ABE_NAAVMGlxMediaList@@@Z @ 14 NONAME ; bool GlxMpxCommandHandler::ConfirmationNoteMultipleL(class MGlxMediaList &) const + ?CreateMediaListL@GlxMpxCommandHandler@@AAEXHHW4TGlxFilterItemType@@@Z @ 15 NONAME ; void GlxMpxCommandHandler::CreateMediaListL(int, int, enum TGlxFilterItemType) + ?ConfirmationNoteSingleL@GlxMpxCommandHandler@@ABE_NAAVMGlxMediaList@@@Z @ 16 NONAME ; bool GlxMpxCommandHandler::ConfirmationNoteSingleL(class MGlxMediaList &) const + ?CompletionTextL@GlxMpxCommandHandler@@MBE?AVQString@@XZ @ 17 NONAME ; class QString GlxMpxCommandHandler::CompletionTextL(void) const ?HandleFocusChangedL@GlxMpxCommandHandler@@MAEXW4TFocusChangeType@NGlxListDefs@@HHPAVMGlxMediaList@@@Z @ 18 NONAME ; void GlxMpxCommandHandler::HandleFocusChangedL(enum NGlxListDefs::TFocusChangeType, int, int, class MGlxMediaList *) ?HandleAttributesAvailableL@GlxMpxCommandHandler@@MAEXHABV?$RArray@VTMPXAttribute@@@@PAVMGlxMediaList@@@Z @ 19 NONAME ; void GlxMpxCommandHandler::HandleAttributesAvailableL(int, class RArray const &, class MGlxMediaList *) - ?DoExecuteCommandL@GlxMpxCommandHandler@@MAEXHAAVMGlxMediaList@@AAH@Z @ 20 NONAME ; void GlxMpxCommandHandler::DoExecuteCommandL(int, class MGlxMediaList &, int &) + ?HandleItemRemovedL@GlxMpxCommandHandler@@MAEXHHPAVMGlxMediaList@@@Z @ 20 NONAME ; void GlxMpxCommandHandler::HandleItemRemovedL(int, int, class MGlxMediaList *) + ?HandleMessageL@GlxMpxCommandHandler@@MAEXABVCMPXMedia@@PAVMGlxMediaList@@@Z @ 21 NONAME ; void GlxMpxCommandHandler::HandleMessageL(class CMPXMedia const &, class MGlxMediaList *) + ?ProgressNoteL@GlxMpxCommandHandler@@AAEXH@Z @ 22 NONAME ; void GlxMpxCommandHandler::ProgressNoteL(int) + ?HandleError@GlxMpxCommandHandler@@MAEXH@Z @ 23 NONAME ; void GlxMpxCommandHandler::HandleError(int) + ??1GlxMpxCommandHandler@@UAE@XZ @ 24 NONAME ; GlxMpxCommandHandler::~GlxMpxCommandHandler(void) + ??1GlxModelCommandHandler@@UAE@XZ @ 25 NONAME ; GlxModelCommandHandler::~GlxModelCommandHandler(void) + ?DismissProgressNoteL@GlxMpxCommandHandler@@AAEXXZ @ 26 NONAME ; void GlxMpxCommandHandler::DismissProgressNoteL(void) + ?HandleItemAddedL@GlxMpxCommandHandler@@MAEXHHPAVMGlxMediaList@@@Z @ 27 NONAME ; void GlxMpxCommandHandler::HandleItemAddedL(int, int, class MGlxMediaList *) + ?executeCommand@GlxMpxCommandHandler@@UAEXHHV?$QList@VQModelIndex@@@@@Z @ 28 NONAME ; void GlxMpxCommandHandler::executeCommand(int, int, class QList) + ?DoExecuteCommandL@GlxMpxCommandHandler@@MAEXHAAVMGlxMediaList@@AAH@Z @ 29 NONAME ; void GlxMpxCommandHandler::DoExecuteCommandL(int, class MGlxMediaList &, int &) + ??0GlxCommandHandler@@QAE@XZ @ 30 NONAME ; GlxCommandHandler::GlxCommandHandler(void) + ?ConfirmationTextL@GlxMpxCommandHandler@@MBE?AVQString@@_N@Z @ 31 NONAME ; class QString GlxMpxCommandHandler::ConfirmationTextL(bool) const + ??0GlxMpxCommandHandler@@QAE@XZ @ 32 NONAME ; GlxMpxCommandHandler::GlxMpxCommandHandler(void) + ??_EGlxMpxCommandHandler@@UAE@I@Z @ 33 NONAME ; GlxMpxCommandHandler::~GlxMpxCommandHandler(unsigned int) + ?HandleItemModifiedL@GlxMpxCommandHandler@@MAEXABV?$RArray@H@@PAVMGlxMediaList@@@Z @ 34 NONAME ; void GlxMpxCommandHandler::HandleItemModifiedL(class RArray const &, class MGlxMediaList *) + ??_EGlxModelCommandHandler@@UAE@I@Z @ 35 NONAME ; GlxModelCommandHandler::~GlxModelCommandHandler(unsigned int) + ?DoHandleCommandCompleteL@GlxMpxCommandHandler@@MAEXPAXPAVCMPXMedia@@HPAVMGlxMediaList@@@Z @ 36 NONAME ; void GlxMpxCommandHandler::DoHandleCommandCompleteL(void *, class CMPXMedia *, int, class MGlxMediaList *) diff -r 74c9f037fd5d -r 99ad1390cd33 ui/commandhandlers/bwins/glxcommoncommandhandlersu.def --- a/ui/commandhandlers/bwins/glxcommoncommandhandlersu.def Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/commandhandlers/bwins/glxcommoncommandhandlersu.def Fri Apr 16 14:58:46 2010 +0300 @@ -1,49 +1,69 @@ EXPORTS - ?iSelectionCount@GlxCommandHandlerAddToContainer@@0HA @ 1 NONAME ; int GlxCommandHandlerAddToContainer::iSelectionCount - ?qt_metacall@GlxCommandHandlerNewMedia@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 2 NONAME ; int GlxCommandHandlerNewMedia::qt_metacall(enum QMetaObject::Call, int, void * *) - ??0GlxCommandHandlerAddToContainer@@QAE@XZ @ 3 NONAME ; GlxCommandHandlerAddToContainer::GlxCommandHandlerAddToContainer(void) - ??1GlxCommandHandlerAddToContainer@@UAE@XZ @ 4 NONAME ; GlxCommandHandlerAddToContainer::~GlxCommandHandlerAddToContainer(void) - ?getStaticMetaObject@GlxCommandHandlerAddToContainer@@SAABUQMetaObject@@XZ @ 5 NONAME ; struct QMetaObject const & GlxCommandHandlerAddToContainer::getStaticMetaObject(void) - ?getStaticMetaObject@GlxCommandHandlerNewMedia@@SAABUQMetaObject@@XZ @ 6 NONAME ; struct QMetaObject const & GlxCommandHandlerNewMedia::getStaticMetaObject(void) - ?trUtf8@GlxCommandHandlerNewMedia@@SA?AVQString@@PBD0@Z @ 7 NONAME ; class QString GlxCommandHandlerNewMedia::trUtf8(char const *, char const *) - ?tr@GlxCommandHandlerNewMedia@@SA?AVQString@@PBD0H@Z @ 8 NONAME ; class QString GlxCommandHandlerNewMedia::tr(char const *, char const *, int) - ?trUtf8@GlxCommandHandlerAddToContainer@@SA?AVQString@@PBD0@Z @ 9 NONAME ; class QString GlxCommandHandlerAddToContainer::trUtf8(char const *, char const *) - ?tr@GlxCommandHandlerAddToContainer@@SA?AVQString@@PBD0H@Z @ 10 NONAME ; class QString GlxCommandHandlerAddToContainer::tr(char const *, char const *, int) - ?GetSelectionList@GlxCommandHandlerAddToContainer@@QBE?AV?$QList@VQModelIndex@@@@PAVGlxAlbumModel@@PA_N@Z @ 11 NONAME ; class QList GlxCommandHandlerAddToContainer::GetSelectionList(class GlxAlbumModel *, bool *) const - ?metaObject@GlxCommandHandlerNewMedia@@UBEPBUQMetaObject@@XZ @ 12 NONAME ; struct QMetaObject const * GlxCommandHandlerNewMedia::metaObject(void) const - ??0GlxCommandHandlerNewMedia@@QAE@XZ @ 13 NONAME ; GlxCommandHandlerNewMedia::GlxCommandHandlerNewMedia(void) - ?CreateCommandL@GlxCommandHandlerAddToContainer@@UBEPAVCMPXMedia@@HAAVMGlxMediaList@@AAH@Z @ 14 NONAME ; class CMPXMedia * GlxCommandHandlerAddToContainer::CreateCommandL(int, class MGlxMediaList &, int &) const - ?CreateCommandL@GlxCommandHandlerDelete@@UBEPAVCMPXMedia@@HAAVMGlxMediaList@@AAH@Z @ 15 NONAME ; class CMPXMedia * GlxCommandHandlerDelete::CreateCommandL(int, class MGlxMediaList &, int &) const - ?DoHandleCommandCompleteL@GlxCommandHandlerNewMedia@@MAEXPAXPAVCMPXMedia@@HPAVMGlxMediaList@@@Z @ 16 NONAME ; void GlxCommandHandlerNewMedia::DoHandleCommandCompleteL(void *, class CMPXMedia *, int, class MGlxMediaList *) - ?trUtf8@GlxCommandHandlerNewMedia@@SA?AVQString@@PBD0H@Z @ 17 NONAME ; class QString GlxCommandHandlerNewMedia::trUtf8(char const *, char const *, int) - ??_EGlxCommandHandlerAddToContainer@@UAE@I@Z @ 18 NONAME ; GlxCommandHandlerAddToContainer::~GlxCommandHandlerAddToContainer(unsigned int) - ?qt_metacall@GlxCommandHandlerAddToContainer@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 19 NONAME ; int GlxCommandHandlerAddToContainer::qt_metacall(enum QMetaObject::Call, int, void * *) - ?qt_metacast@GlxCommandHandlerNewMedia@@UAEPAXPBD@Z @ 20 NONAME ; void * GlxCommandHandlerNewMedia::qt_metacast(char const *) - ?HandleItemAddedL@GlxCommandHandlerNewMedia@@MAEXHHPAVMGlxMediaList@@@Z @ 21 NONAME ; void GlxCommandHandlerNewMedia::HandleItemAddedL(int, int, class MGlxMediaList *) - ?staticMetaObject@GlxCommandHandlerAddToContainer@@2UQMetaObject@@B @ 22 NONAME ; struct QMetaObject const GlxCommandHandlerAddToContainer::staticMetaObject - ?ExecuteLD@GlxCommandHandlerNewMedia@@QAEHAAVTGlxMediaId@@@Z @ 23 NONAME ; int GlxCommandHandlerNewMedia::ExecuteLD(class TGlxMediaId &) - ?createNewMedia@GlxCommandHandlerAddToContainer@@AAEXXZ @ 24 NONAME ; void GlxCommandHandlerAddToContainer::createNewMedia(void) - ?tr@GlxCommandHandlerAddToContainer@@SA?AVQString@@PBD0@Z @ 25 NONAME ; class QString GlxCommandHandlerAddToContainer::tr(char const *, char const *) - ?trUtf8@GlxCommandHandlerAddToContainer@@SA?AVQString@@PBD0H@Z @ 26 NONAME ; class QString GlxCommandHandlerAddToContainer::trUtf8(char const *, char const *, int) - ?tr@GlxCommandHandlerNewMedia@@SA?AVQString@@PBD0@Z @ 27 NONAME ; class QString GlxCommandHandlerNewMedia::tr(char const *, char const *) - ?metaObject@GlxCommandHandlerAddToContainer@@UBEPBUQMetaObject@@XZ @ 28 NONAME ; struct QMetaObject const * GlxCommandHandlerAddToContainer::metaObject(void) const - ?CreateCommandL@GlxCommandHandlerNewMedia@@MBEPAVCMPXMedia@@HAAVMGlxMediaList@@AAH@Z @ 29 NONAME ; class CMPXMedia * GlxCommandHandlerNewMedia::CreateCommandL(int, class MGlxMediaList &, int &) const - ??1GlxCommandHandlerNewMedia@@UAE@XZ @ 30 NONAME ; GlxCommandHandlerNewMedia::~GlxCommandHandlerNewMedia(void) - ??1GlxCommandHandlerDelete@@UAE@XZ @ 31 NONAME ; GlxCommandHandlerDelete::~GlxCommandHandlerDelete(void) - ??_EGlxCommandHandlerNewMedia@@UAE@I@Z @ 32 NONAME ; GlxCommandHandlerNewMedia::~GlxCommandHandlerNewMedia(unsigned int) - ?qt_metacast@GlxCommandHandlerAddToContainer@@UAEPAXPBD@Z @ 33 NONAME ; void * GlxCommandHandlerAddToContainer::qt_metacast(char const *) - ??_EGlxCommandHandlerDelete@@UAE@I@Z @ 34 NONAME ; GlxCommandHandlerDelete::~GlxCommandHandlerDelete(unsigned int) - ??0GlxCommandHandlerDelete@@QAE@XZ @ 35 NONAME ; GlxCommandHandlerDelete::GlxCommandHandlerDelete(void) - ?staticMetaObject@GlxCommandHandlerNewMedia@@2UQMetaObject@@B @ 36 NONAME ; struct QMetaObject const GlxCommandHandlerNewMedia::staticMetaObject - ?RotateImageL@GlxCommandHandlerRotate@@AAEXV?$TBuf@$0BAA@@@@Z @ 37 NONAME ; void GlxCommandHandlerRotate::RotateImageL(class TBuf<256>) - ?SetImageOrientationL@GlxCommandHandlerRotate@@AAEXG@Z @ 38 NONAME ; void GlxCommandHandlerRotate::SetImageOrientationL(unsigned short) - ??_EGlxCommandHandlerRotate@@UAE@I@Z @ 39 NONAME ; GlxCommandHandlerRotate::~GlxCommandHandlerRotate(unsigned int) - ?DoExecuteCommandL@GlxCommandHandlerRotate@@UAEXHAAVMGlxMediaList@@AAH@Z @ 40 NONAME ; void GlxCommandHandlerRotate::DoExecuteCommandL(int, class MGlxMediaList &, int &) - ?CreateCommandL@GlxCommandHandlerRotate@@UBEPAVCMPXMedia@@HAAVMGlxMediaList@@AAH@Z @ 41 NONAME ; class CMPXMedia * GlxCommandHandlerRotate::CreateCommandL(int, class MGlxMediaList &, int &) const - ?ReadImageOrientationL@GlxCommandHandlerRotate@@AAEGXZ @ 42 NONAME ; unsigned short GlxCommandHandlerRotate::ReadImageOrientationL(void) - ??1GlxCommandHandlerRotate@@UAE@XZ @ 43 NONAME ; GlxCommandHandlerRotate::~GlxCommandHandlerRotate(void) - ?CalculateFinalOrientationL@GlxCommandHandlerRotate@@AAEGG@Z @ 44 NONAME ; unsigned short GlxCommandHandlerRotate::CalculateFinalOrientationL(unsigned short) - ?InitializeExifWriterL@GlxCommandHandlerRotate@@AAEXV?$TBuf@$0BAA@@@@Z @ 45 NONAME ; void GlxCommandHandlerRotate::InitializeExifWriterL(class TBuf<256>) - ??0GlxCommandHandlerRotate@@QAE@XZ @ 46 NONAME ; GlxCommandHandlerRotate::GlxCommandHandlerRotate(void) - ?DestroyExifWriter@GlxCommandHandlerRotate@@AAEXXZ @ 47 NONAME ; void GlxCommandHandlerRotate::DestroyExifWriter(void) + ??_EGlxCommandHandlerRemoveFrom@@UAE@I@Z @ 1 NONAME ; GlxCommandHandlerRemoveFrom::~GlxCommandHandlerRemoveFrom(unsigned int) + ?iSelectionCount@GlxCommandHandlerAddToContainer@@0HA @ 2 NONAME ; int GlxCommandHandlerAddToContainer::iSelectionCount + ?RotateImageL@GlxCommandHandlerRotate@@AAEXV?$TBuf@$0BAA@@@@Z @ 3 NONAME ; void GlxCommandHandlerRotate::RotateImageL(class TBuf<256>) + ?qt_metacall@GlxCommandHandlerNewMedia@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 4 NONAME ; int GlxCommandHandlerNewMedia::qt_metacall(enum QMetaObject::Call, int, void * *) + ?ProgressTextL@GlxCommandHandlerRemoveFrom@@EBE?AVQString@@XZ @ 5 NONAME ; class QString GlxCommandHandlerRemoveFrom::ProgressTextL(void) const + ??1GlxCommandHandlerAddToContainer@@UAE@XZ @ 6 NONAME ; GlxCommandHandlerAddToContainer::~GlxCommandHandlerAddToContainer(void) + ?getStaticMetaObject@GlxCommandHandlerNewMedia@@SAABUQMetaObject@@XZ @ 7 NONAME ; struct QMetaObject const & GlxCommandHandlerNewMedia::getStaticMetaObject(void) + ?SetImageOrientationL@GlxCommandHandlerRotate@@AAEXG@Z @ 8 NONAME ; void GlxCommandHandlerRotate::SetImageOrientationL(unsigned short) + ?ConfirmationTextL@GlxCommandHandlerDelete@@EBE?AVQString@@_N@Z @ 9 NONAME ; class QString GlxCommandHandlerDelete::ConfirmationTextL(bool) const + ??_EGlxCommandHandlerSend@@UAE@I@Z @ 10 NONAME ; GlxCommandHandlerSend::~GlxCommandHandlerSend(unsigned int) + ?trUtf8@GlxCommandHandlerNewMedia@@SA?AVQString@@PBD0@Z @ 11 NONAME ; class QString GlxCommandHandlerNewMedia::trUtf8(char const *, char const *) + ?HandleErrorL@GlxCommandHandlerNewMedia@@MAEXH@Z @ 12 NONAME ; void GlxCommandHandlerNewMedia::HandleErrorL(int) + ?tr@GlxCommandHandlerNewMedia@@SA?AVQString@@PBD0H@Z @ 13 NONAME ; class QString GlxCommandHandlerNewMedia::tr(char const *, char const *, int) + ?trUtf8@GlxCommandHandlerAddToContainer@@SA?AVQString@@PBD0@Z @ 14 NONAME ; class QString GlxCommandHandlerAddToContainer::trUtf8(char const *, char const *) + ?DoExecuteCommandL@GlxCommandHandlerRotate@@UAEXHAAVMGlxMediaList@@AAH@Z @ 15 NONAME ; void GlxCommandHandlerRotate::DoExecuteCommandL(int, class MGlxMediaList &, int &) + ?metaObject@GlxCommandHandlerNewMedia@@UBEPBUQMetaObject@@XZ @ 16 NONAME ; struct QMetaObject const * GlxCommandHandlerNewMedia::metaObject(void) const + ?CreateCommandL@GlxCommandHandlerDelete@@UBEPAVCMPXMedia@@HAAVMGlxMediaList@@AAH@Z @ 17 NONAME ; class CMPXMedia * GlxCommandHandlerDelete::CreateCommandL(int, class MGlxMediaList &, int &) const + ?CreateCommandL@GlxCommandHandlerAddToContainer@@UBEPAVCMPXMedia@@HAAVMGlxMediaList@@AAH@Z @ 18 NONAME ; class CMPXMedia * GlxCommandHandlerAddToContainer::CreateCommandL(int, class MGlxMediaList &, int &) const + ?CompletionTextL@GlxCommandHandlerDelete@@EBE?AVQString@@XZ @ 19 NONAME ; class QString GlxCommandHandlerDelete::CompletionTextL(void) const + ?DoHandleCommandCompleteL@GlxCommandHandlerNewMedia@@MAEXPAXPAVCMPXMedia@@HPAVMGlxMediaList@@@Z @ 20 NONAME ; void GlxCommandHandlerNewMedia::DoHandleCommandCompleteL(void *, class CMPXMedia *, int, class MGlxMediaList *) + ?GenerateNewMediaItemTitleL@GlxCommandHandlerNewMedia@@ABE?AVQString@@V2@AAVMGlxMediaList@@@Z @ 21 NONAME ; class QString GlxCommandHandlerNewMedia::GenerateNewMediaItemTitleL(class QString, class MGlxMediaList &) const + ??1GlxCommandHandlerRemoveFrom@@UAE@XZ @ 22 NONAME ; GlxCommandHandlerRemoveFrom::~GlxCommandHandlerRemoveFrom(void) + ?qt_metacast@GlxCommandHandlerNewMedia@@UAEPAXPBD@Z @ 23 NONAME ; void * GlxCommandHandlerNewMedia::qt_metacast(char const *) + ?qt_metacall@GlxCommandHandlerAddToContainer@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 24 NONAME ; int GlxCommandHandlerAddToContainer::qt_metacall(enum QMetaObject::Call, int, void * *) + ??0GlxCommandHandlerRemoveFrom@@QAE@XZ @ 25 NONAME ; GlxCommandHandlerRemoveFrom::GlxCommandHandlerRemoveFrom(void) + ?HandleItemAddedL@GlxCommandHandlerNewMedia@@MAEXHHPAVMGlxMediaList@@@Z @ 26 NONAME ; void GlxCommandHandlerNewMedia::HandleItemAddedL(int, int, class MGlxMediaList *) + ?tr@GlxCommandHandlerAddToContainer@@SA?AVQString@@PBD0@Z @ 27 NONAME ; class QString GlxCommandHandlerAddToContainer::tr(char const *, char const *) + ?tr@GlxCommandHandlerNewMedia@@SA?AVQString@@PBD0@Z @ 28 NONAME ; class QString GlxCommandHandlerNewMedia::tr(char const *, char const *) + ?metaObject@GlxCommandHandlerAddToContainer@@UBEPBUQMetaObject@@XZ @ 29 NONAME ; struct QMetaObject const * GlxCommandHandlerAddToContainer::metaObject(void) const + ?ReadImageOrientationL@GlxCommandHandlerRotate@@AAEGXZ @ 30 NONAME ; unsigned short GlxCommandHandlerRotate::ReadImageOrientationL(void) + ??1GlxCommandHandlerRotate@@UAE@XZ @ 31 NONAME ; GlxCommandHandlerRotate::~GlxCommandHandlerRotate(void) + ??1GlxCommandHandlerNewMedia@@UAE@XZ @ 32 NONAME ; GlxCommandHandlerNewMedia::~GlxCommandHandlerNewMedia(void) + ??_EGlxCommandHandlerNewMedia@@UAE@I@Z @ 33 NONAME ; GlxCommandHandlerNewMedia::~GlxCommandHandlerNewMedia(unsigned int) + ?CompletionTextL@GlxCommandHandlerRemoveFrom@@EBE?AVQString@@XZ @ 34 NONAME ; class QString GlxCommandHandlerRemoveFrom::CompletionTextL(void) const + ??_EGlxCommandHandlerDelete@@UAE@I@Z @ 35 NONAME ; GlxCommandHandlerDelete::~GlxCommandHandlerDelete(unsigned int) + ?ProgressTextL@GlxCommandHandlerDelete@@EBE?AVQString@@XZ @ 36 NONAME ; class QString GlxCommandHandlerDelete::ProgressTextL(void) const + ?staticMetaObject@GlxCommandHandlerNewMedia@@2UQMetaObject@@B @ 37 NONAME ; struct QMetaObject const GlxCommandHandlerNewMedia::staticMetaObject + ??0GlxCommandHandlerDelete@@QAE@XZ @ 38 NONAME ; GlxCommandHandlerDelete::GlxCommandHandlerDelete(void) + ?DestroyExifWriter@GlxCommandHandlerRotate@@AAEXXZ @ 39 NONAME ; void GlxCommandHandlerRotate::DestroyExifWriter(void) + ??0GlxCommandHandlerSend@@QAE@XZ @ 40 NONAME ; GlxCommandHandlerSend::GlxCommandHandlerSend(void) + ?HandleError@GlxCommandHandlerNewMedia@@MAEXH@Z @ 41 NONAME ; void GlxCommandHandlerNewMedia::HandleError(int) + ??0GlxCommandHandlerAddToContainer@@QAE@XZ @ 42 NONAME ; GlxCommandHandlerAddToContainer::GlxCommandHandlerAddToContainer(void) + ?getStaticMetaObject@GlxCommandHandlerAddToContainer@@SAABUQMetaObject@@XZ @ 43 NONAME ; struct QMetaObject const & GlxCommandHandlerAddToContainer::getStaticMetaObject(void) + ??_EGlxCommandHandlerRotate@@UAE@I@Z @ 44 NONAME ; GlxCommandHandlerRotate::~GlxCommandHandlerRotate(unsigned int) + ?ProgressTextL@GlxCommandHandlerAddToContainer@@EBE?AVQString@@XZ @ 45 NONAME ; class QString GlxCommandHandlerAddToContainer::ProgressTextL(void) const + ??1GlxCommandHandlerSend@@UAE@XZ @ 46 NONAME ; GlxCommandHandlerSend::~GlxCommandHandlerSend(void) + ?tr@GlxCommandHandlerAddToContainer@@SA?AVQString@@PBD0H@Z @ 47 NONAME ; class QString GlxCommandHandlerAddToContainer::tr(char const *, char const *, int) + ?GetSelectionList@GlxCommandHandlerAddToContainer@@QBE?AV?$QList@VQModelIndex@@@@PAVGlxAlbumModel@@PA_N@Z @ 48 NONAME ; class QList GlxCommandHandlerAddToContainer::GetSelectionList(class GlxAlbumModel *, bool *) const + ?CompletionTextL@GlxCommandHandlerAddToContainer@@EBE?AVQString@@XZ @ 49 NONAME ; class QString GlxCommandHandlerAddToContainer::CompletionTextL(void) const + ??0GlxCommandHandlerNewMedia@@QAE@XZ @ 50 NONAME ; GlxCommandHandlerNewMedia::GlxCommandHandlerNewMedia(void) + ?trUtf8@GlxCommandHandlerNewMedia@@SA?AVQString@@PBD0H@Z @ 51 NONAME ; class QString GlxCommandHandlerNewMedia::trUtf8(char const *, char const *, int) + ?doHandleUserAction@GlxCommandHandlerSend@@UBEXPAVGlxMediaModel@@V?$QList@VQModelIndex@@@@@Z @ 52 NONAME ; void GlxCommandHandlerSend::doHandleUserAction(class GlxMediaModel *, class QList) const + ??_EGlxCommandHandlerAddToContainer@@UAE@I@Z @ 53 NONAME ; GlxCommandHandlerAddToContainer::~GlxCommandHandlerAddToContainer(unsigned int) + ?ProgressTextL@GlxCommandHandlerNewMedia@@EBE?AVQString@@XZ @ 54 NONAME ; class QString GlxCommandHandlerNewMedia::ProgressTextL(void) const + ?staticMetaObject@GlxCommandHandlerAddToContainer@@2UQMetaObject@@B @ 55 NONAME ; struct QMetaObject const GlxCommandHandlerAddToContainer::staticMetaObject + ?ExecuteLD@GlxCommandHandlerNewMedia@@QAEHAAVTGlxMediaId@@@Z @ 56 NONAME ; int GlxCommandHandlerNewMedia::ExecuteLD(class TGlxMediaId &) + ?createNewMedia@GlxCommandHandlerAddToContainer@@AAEXXZ @ 57 NONAME ; void GlxCommandHandlerAddToContainer::createNewMedia(void) + ?CreateCommandL@GlxCommandHandlerRotate@@UBEPAVCMPXMedia@@HAAVMGlxMediaList@@AAH@Z @ 58 NONAME ; class CMPXMedia * GlxCommandHandlerRotate::CreateCommandL(int, class MGlxMediaList &, int &) const + ?trUtf8@GlxCommandHandlerAddToContainer@@SA?AVQString@@PBD0H@Z @ 59 NONAME ; class QString GlxCommandHandlerAddToContainer::trUtf8(char const *, char const *, int) + ?CompletionTextL@GlxCommandHandlerNewMedia@@EBE?AVQString@@XZ @ 60 NONAME ; class QString GlxCommandHandlerNewMedia::CompletionTextL(void) const + ?CreateCommandL@GlxCommandHandlerRemoveFrom@@UBEPAVCMPXMedia@@HAAVMGlxMediaList@@AAH@Z @ 61 NONAME ; class CMPXMedia * GlxCommandHandlerRemoveFrom::CreateCommandL(int, class MGlxMediaList &, int &) const + ?CalculateFinalOrientationL@GlxCommandHandlerRotate@@AAEGG@Z @ 62 NONAME ; unsigned short GlxCommandHandlerRotate::CalculateFinalOrientationL(unsigned short) + ?InitializeExifWriterL@GlxCommandHandlerRotate@@AAEXV?$TBuf@$0BAA@@@@Z @ 63 NONAME ; void GlxCommandHandlerRotate::InitializeExifWriterL(class TBuf<256>) + ?CreateCommandL@GlxCommandHandlerNewMedia@@MBEPAVCMPXMedia@@HAAVMGlxMediaList@@AAH@Z @ 64 NONAME ; class CMPXMedia * GlxCommandHandlerNewMedia::CreateCommandL(int, class MGlxMediaList &, int &) const + ??1GlxCommandHandlerDelete@@UAE@XZ @ 65 NONAME ; GlxCommandHandlerDelete::~GlxCommandHandlerDelete(void) + ??0GlxCommandHandlerRotate@@QAE@XZ @ 66 NONAME ; GlxCommandHandlerRotate::GlxCommandHandlerRotate(void) + ?qt_metacast@GlxCommandHandlerAddToContainer@@UAEPAXPBD@Z @ 67 NONAME ; void * GlxCommandHandlerAddToContainer::qt_metacast(char const *) diff -r 74c9f037fd5d -r 99ad1390cd33 ui/commandhandlers/commandhandlerbase/commandhandlerbase.pro --- a/ui/commandhandlers/commandhandlerbase/commandhandlerbase.pro Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/commandhandlers/commandhandlerbase/commandhandlerbase.pro Fri Apr 16 14:58:46 2010 +0300 @@ -18,19 +18,27 @@ TARGET = glxcommandhandlerbase DEPENDPATH += . inc src -CONFIG += qt +CONFIG += hb INCLUDEPATH += . \ ../../../commonutilities/common/inc \ ../../../inc \ - ../../uiengine/medialists/inc + ../../uiengine/medialists/inc \ + ../../inc \ + ../../../commonui/inc \ + ../../uiengine/medialistwrapper/inc \ + ../../uiengine/model/mediamodel/inc \ + ../../../traces DEFINES += BUILD_COMMANDHANDLERBASE LIBS += -lmpxcollectionutility.dll \ -lmpxcommon.dll \ -lglxcommon.dll \ - -lglxmedialists.dll + -lglxmedialists.dll\ + -lglxcommonui.dll \ + -lglxmediamodel.dll \ + -lcommonengine.dll symbian: { INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE @@ -40,7 +48,7 @@ } # Input -HEADERS += inc/glxcommandhandler.h inc/glxmpxcommandhandler.h -SOURCES += src/glxcommandhandler.cpp src/glxmpxcommandhandler.cpp +HEADERS += inc/glxcommandhandler.h inc/glxmpxcommandhandler.h inc/glxmodelcommandhandler.h +SOURCES += src/glxcommandhandler.cpp src/glxmpxcommandhandler.cpp src/glxmodelcommandhandler.cpp DEFINES += QT_NO_DEBUG_OUTPUT QT_NO_WARNING_OUTPUT diff -r 74c9f037fd5d -r 99ad1390cd33 ui/commandhandlers/commandhandlerbase/inc/glxcommandhandler.h --- a/ui/commandhandlers/commandhandlerbase/inc/glxcommandhandler.h Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/commandhandlers/commandhandlerbase/inc/glxcommandhandler.h Fri Apr 16 14:58:46 2010 +0300 @@ -26,12 +26,13 @@ #define GLX_COMMANDHANDLERBASE_EXPORT Q_DECL_IMPORT #endif +class QModelIndex; class GLX_COMMANDHANDLERBASE_EXPORT GlxCommandHandler : public QObject { public: GlxCommandHandler(); virtual ~GlxCommandHandler(); - virtual void executeCommand(int commandId,int collectionId) = 0; + virtual void executeCommand(int commandId,int collectionId ,QList indexList = QList() ) = 0; }; #endif //GLXCOMMANDHANDLER_H \ No newline at end of file diff -r 74c9f037fd5d -r 99ad1390cd33 ui/commandhandlers/commandhandlerbase/inc/glxmodelcommandhandler.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ui/commandhandlers/commandhandlerbase/inc/glxmodelcommandhandler.h Fri Apr 16 14:58:46 2010 +0300 @@ -0,0 +1,42 @@ +/* +* 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 "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#ifndef GLXMODELCOMMANDHANDLER_H +#define GLXMODELCOMMANDHANDLER_H + +#include +#include + +class GlxMediaModel; +#ifdef BUILD_COMMANDHANDLERBASE +#define GLX_COMMANDHANDLERBASE_EXPORT Q_DECL_EXPORT +#else +#define GLX_COMMANDHANDLERBASE_EXPORT Q_DECL_IMPORT +#endif + +class GLX_COMMANDHANDLERBASE_EXPORT GlxModelCommandHandler : public GlxCommandHandler +{ +public: + GlxModelCommandHandler(); + virtual ~GlxModelCommandHandler(); + virtual void executeCommand(int commandId,int collectionId, QList indexList = QList() ); + + protected: // From derived class + virtual void doHandleUserAction(GlxMediaModel* model,QList indexList) const = 0; + +}; +#endif //GLXMODELCOMMANDHANDLER_H diff -r 74c9f037fd5d -r 99ad1390cd33 ui/commandhandlers/commandhandlerbase/inc/glxmpxcommandhandler.h --- a/ui/commandhandlers/commandhandlerbase/inc/glxmpxcommandhandler.h Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/commandhandlers/commandhandlerbase/inc/glxmpxcommandhandler.h Fri Apr 16 14:58:46 2010 +0300 @@ -29,13 +29,14 @@ #define GLX_COMMANDHANDLERBASE_EXPORT Q_DECL_IMPORT #endif class MGlxMediaList; +class HbProgressDialog; class GLX_COMMANDHANDLERBASE_EXPORT GlxMpxCommandHandler : public GlxCommandHandler, public MGlxMediaListObserver { public: GlxMpxCommandHandler(); virtual ~GlxMpxCommandHandler(); - virtual void executeCommand(int commandId,int collectionId); + virtual void executeCommand(int commandId,int collectionId,QList indexList = QList() ); protected: // From MGlxMediaListObserver /// See @ref MGlxMediaListObserver::HandleItemAddedL @@ -66,21 +67,33 @@ /// See @ref MGlxMediaListObserver::HandleCommandCompleteL void HandleCommandCompleteL(TAny* aSessionId, CMPXCommand* aCommandResult, TInt aError, MGlxMediaList* aList); + /// See @ref MGlxMediaListObserver::HandleError + void HandleError(TInt aError); protected: // From derived class virtual void DoHandleCommandCompleteL(TAny* aSessionId, CMPXCommand* aCommandResult, TInt aError, MGlxMediaList* aList); virtual CMPXCommand* CreateCommandL(TInt aCommandId, MGlxMediaList& aMediaList, TBool& aConsume) const = 0; - virtual void DoExecuteCommandL(TInt aCommandId, MGlxMediaList& aMediaList, TBool& aConsume); - -private: - + virtual void DoExecuteCommandL(TInt aCommandId, MGlxMediaList& aMediaList, TBool& aConsume); + virtual void HandleErrorL(TInt aErrorCode); + virtual QString CompletionTextL() const; + virtual QString ProgressTextL() const; + virtual QString ConfirmationTextL(bool multiSelection = false) const; +private: + bool ConfirmationNoteL(MGlxMediaList& aMediaList) const; + bool ConfirmationNoteSingleL(MGlxMediaList& aMediaList) const; + bool ConfirmationNoteMultipleL(MGlxMediaList& aMediaList) const; + void ProgressNoteL(TInt aCommandId); + void DismissProgressNoteL(); + void CompletionNoteL() const; + void TryExitL(TInt aErrorCode); void CreateMediaListL(int aCollectionId, int aHierarchyId, TGlxFilterItemType aFilterType) ; void CreateMediaListAlbumItemL(int aCollectionId, int aHierarchyId, TGlxFilterItemType aFilterType); private: // Instance of Media List MGlxMediaList* iMediaList; - + TBool iProgressComplete; + HbProgressDialog* mProgressDialog; }; #endif //GLXMPXCOMMANDHANDLER_H \ No newline at end of file diff -r 74c9f037fd5d -r 99ad1390cd33 ui/commandhandlers/commandhandlerbase/src/glxcommandhandler.cpp --- a/ui/commandhandlers/commandhandlerbase/src/glxcommandhandler.cpp Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/commandhandlers/commandhandlerbase/src/glxcommandhandler.cpp Fri Apr 16 14:58:46 2010 +0300 @@ -16,12 +16,21 @@ */ #include +#include "OstTraceDefinitions.h" +#ifdef OST_TRACE_COMPILER_IN_USE +#include "glxcommandhandlerTraces.h" +#endif + GlxCommandHandler::GlxCommandHandler() { +OstTraceFunctionEntry0( GLXCOMMANDHANDLER_GLXCOMMANDHANDLER_ENTRY ); +OstTraceFunctionExit0( GLXCOMMANDHANDLER_GLXCOMMANDHANDLER_EXIT ); } GlxCommandHandler::~GlxCommandHandler() { +OstTraceFunctionEntry0( DUP1_GLXCOMMANDHANDLER_GLXCOMMANDHANDLER_ENTRY ); +OstTraceFunctionExit0( DUP1_GLXCOMMANDHANDLER_GLXCOMMANDHANDLER_EXIT ); } diff -r 74c9f037fd5d -r 99ad1390cd33 ui/commandhandlers/commandhandlerbase/src/glxmodelcommandhandler.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ui/commandhandlers/commandhandlerbase/src/glxmodelcommandhandler.cpp Fri Apr 16 14:58:46 2010 +0300 @@ -0,0 +1,36 @@ +/* +* 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 "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#include +#include +#include + +GlxModelCommandHandler::GlxModelCommandHandler() + { + } + +GlxModelCommandHandler::~GlxModelCommandHandler() + { + } + +void GlxModelCommandHandler::executeCommand(int commandId, int collectionId,QList indexList) + { + GlxModelParm modelParm (collectionId, 0); + GlxMediaModel* mediaModel = new GlxMediaModel (modelParm); + doHandleUserAction(mediaModel,indexList); + delete mediaModel; + } diff -r 74c9f037fd5d -r 99ad1390cd33 ui/commandhandlers/commandhandlerbase/src/glxmpxcommandhandler.cpp --- a/ui/commandhandlers/commandhandlerbase/src/glxmpxcommandhandler.cpp Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/commandhandlers/commandhandlerbase/src/glxmpxcommandhandler.cpp Fri Apr 16 14:58:46 2010 +0300 @@ -24,52 +24,84 @@ #include #include #include -#include +#include +#include +#include +#include +#include -GlxMpxCommandHandler::GlxMpxCommandHandler() -{ +#include +#include +#include +#include +#include "OstTraceDefinitions.h" +#ifdef OST_TRACE_COMPILER_IN_USE +#include "glxmpxcommandhandlerTraces.h" +#endif + +GlxMpxCommandHandler::GlxMpxCommandHandler() : + iProgressComplete(EFalse) + { + OstTraceFunctionEntry0( GLXMPXCOMMANDHANDLER_GLXMPXCOMMANDHANDLER_ENTRY ); iMediaList = NULL; -} + OstTraceFunctionExit0( GLXMPXCOMMANDHANDLER_GLXMPXCOMMANDHANDLER_EXIT ); + } GlxMpxCommandHandler::~GlxMpxCommandHandler() -{ + { + OstTraceFunctionEntry0( DUP1_GLXMPXCOMMANDHANDLER_GLXMPXCOMMANDHANDLER_ENTRY ); //close the existing instance of Media List - if ( iMediaList ) { + if (iMediaList) + { iMediaList->Close(); iMediaList = NULL; + } + OstTraceFunctionExit0( DUP1_GLXMPXCOMMANDHANDLER_GLXMPXCOMMANDHANDLER_EXIT ); } -} -void GlxMpxCommandHandler::executeCommand(int commandId,int collectionId) -{ - qDebug("GlxMpxCommandHandler::executeCommand "); - int aHierarchyId = 0; +void GlxMpxCommandHandler::executeCommand(int commandId, int collectionId,QList indexList) + { + OstTraceFunctionEntry0( GLXMPXCOMMANDHANDLER_EXECUTECOMMAND_ENTRY ); + int aHierarchyId = 0; TGlxFilterItemType aFilterType = EGlxFilterImage; - //CreateMediaListL(aCollectionId, aHierarchyId,aFilterType); - if(collectionId != KGlxAlbumsMediaId) - { - qDebug("GlxMpxCommandHandler::executeCommand ::CreateMediaListL"); - CreateMediaListL(collectionId, aHierarchyId,aFilterType); - } - else - { - qDebug("GlxMpxCommandHandler::executeCommand ::CreateMediaListAlbumItemL"); - //for creating Medial List for Albums Media path Items - CreateMediaListAlbumItemL(collectionId, aHierarchyId,aFilterType); - } + //CreateMediaListL(aCollectionId, aHierarchyId,aFilterType); + if (collectionId != KGlxAlbumsMediaId) + { + OstTrace0( TRACE_NORMAL, DUP2_GLXMPXCOMMANDHANDLER_EXECUTECOMMAND, "GlxMpxCommandHandler::executeCommand::CreateMediaListL" ); + CreateMediaListL(collectionId, aHierarchyId, aFilterType); + } + else + { + OstTrace0( TRACE_NORMAL, DUP3_GLXMPXCOMMANDHANDLER_EXECUTECOMMAND, "GlxMpxCommandHandler::executeCommand::CreateMediaListAlbumItemL" ); + //for creating Medial List for Albums Media path Items + CreateMediaListAlbumItemL(collectionId, aHierarchyId, aFilterType); + } TBool consume = ETrue; - //Execute Command - DoExecuteCommandL(commandId,*iMediaList,consume); - //Create MPX command if any - CMPXCommand* command = CreateCommandL(commandId,*iMediaList,consume); - if(command){ - command->SetTObjectValueL(KMPXCommandGeneralSessionId, static_cast(this)); - iMediaList->AddMediaListObserverL(this); - iMediaList->CommandL(*command); + iProgressComplete = EFalse; + //Execute Command + DoExecuteCommandL(commandId, *iMediaList, consume); + //Create MPX command if any + consume = ConfirmationNoteL(*iMediaList); + if(consume) + { + CMPXCommand* command = CreateCommandL(commandId, *iMediaList, consume); + if (command) + { + command->SetTObjectValueL (KMPXCommandGeneralSessionId, + static_cast (this)); + iMediaList->AddMediaListObserverL(this); + iMediaList->CommandL(*command); + ProgressNoteL(commandId); + } + } + else //command cancelled,so unmark all items + { + MGlxMediaList::UnmarkAllL(*iMediaList); + } + OstTraceFunctionExit0( GLXMPXCOMMANDHANDLER_EXECUTECOMMAND_EXIT ); } -} // --------------------------------------------------------------------------- // CreateMediaListL() @@ -77,65 +109,77 @@ // Create a filter as requested filtertype // Creates the medialist // --------------------------------------------------------------------------- -void GlxMpxCommandHandler::CreateMediaListL(int aCollectionId, int aHierarchyId, TGlxFilterItemType aFilterType) -{ - Q_UNUSED(aHierarchyId); - Q_UNUSED(aFilterType); - - //close the existing instance of Media List - if ( iMediaList ) { - iMediaList->Close(); - iMediaList = NULL; - } +void GlxMpxCommandHandler::CreateMediaListL(int aCollectionId, + int aHierarchyId, TGlxFilterItemType aFilterType) + { + OstTraceFunctionEntry0( GLXMPXCOMMANDHANDLER_CREATEMEDIALISTL_ENTRY ); + Q_UNUSED(aHierarchyId); + Q_UNUSED(aFilterType); + + //close the existing instance of Media List + if (iMediaList) + { + iMediaList->Close(); + iMediaList = NULL; + } - // Create path to the list of images and videos - CMPXCollectionPath* path = CMPXCollectionPath::NewL(); - CleanupStack::PushL( path ); - path->AppendL(aCollectionId); - // Create filter to filter out either images or videos - CMPXFilter* filter = TGlxFilterFactory::CreateItemTypeFilterL(EGlxFilterImage); //todo take actual filter type - CleanupStack::PushL(filter); - - // Create the media list - iMediaList = MGlxMediaList::InstanceL( *path, - TGlxHierarchyId(0), filter ); //todo take actual hierarchy - CleanupStack::PopAndDestroy( filter ); - - CleanupStack::PopAndDestroy(path); -} + // Create path to the list of images and videos + CMPXCollectionPath* path = CMPXCollectionPath::NewL(); + CleanupStack::PushL(path); + path->AppendL(aCollectionId); + // Create filter to filter out either images or videos + CMPXFilter* filter = TGlxFilterFactory::CreateItemTypeFilterL( + EGlxFilterImage); //todo take actual filter type + CleanupStack::PushL(filter); + + // Create the media list + iMediaList = MGlxMediaList::InstanceL(*path, TGlxHierarchyId(0), filter); //todo take actual hierarchy + CleanupStack::PopAndDestroy(filter); + + CleanupStack::PopAndDestroy(path); + OstTraceFunctionExit0( GLXMPXCOMMANDHANDLER_CREATEMEDIALISTL_EXIT ); + } + // --------------------------------------------------------------------------- // CreateMediaListAlbumItemL() // Creates the media list for the album Item // --------------------------------------------------------------------------- -void GlxMpxCommandHandler::CreateMediaListAlbumItemL(int aCollectionId, int aHierarchyId, TGlxFilterItemType aFilterType) - { - Q_UNUSED(aCollectionId); - Q_UNUSED(aHierarchyId); - //retrieve the instance of Media list for ALBUMS LIST which will be saved in iMediaList - CreateMediaListL(KGlxCollectionPluginAlbumsImplementationUid,0,EGlxFilterAlbum); - //retrieve the path of the focussed item of the MediaList - CMPXCollectionPath* path = iMediaList->PathLC(NGlxListDefs:: EPathFocusOrSelection); - //close the existing instance of Media List - iMediaList->Close(); - iMediaList = NULL; - //create new media list with the derived path - CMPXFilter* filter = TGlxFilterFactory::CreateItemTypeFilterL(aFilterType); //todo take actual filter type - CleanupStack::PushL(filter); - iMediaList = MGlxMediaList::InstanceL( *path, - TGlxHierarchyId(0), filter ); //todo take actual hierarchy - CleanupStack::PopAndDestroy( filter ); - - CleanupStack::PopAndDestroy(path); - } +void GlxMpxCommandHandler::CreateMediaListAlbumItemL(int aCollectionId, + int aHierarchyId, TGlxFilterItemType aFilterType) + { + OstTraceFunctionEntry0( GLXMPXCOMMANDHANDLER_CREATEMEDIALISTALBUMITEML_ENTRY ); + Q_UNUSED(aCollectionId); + Q_UNUSED(aHierarchyId); + //retrieve the instance of Media list for ALBUMS LIST which will be saved in iMediaList + CreateMediaListL(KGlxCollectionPluginAlbumsImplementationUid, 0, + EGlxFilterAlbum); + //retrieve the path of the focussed item of the MediaList + CMPXCollectionPath* path = iMediaList->PathLC( + NGlxListDefs::EPathFocusOrSelection); + //close the existing instance of Media List + iMediaList->Close(); + iMediaList = NULL; + //create new media list with the derived path + CMPXFilter* filter = + TGlxFilterFactory::CreateItemTypeFilterL(aFilterType); + CleanupStack::PushL(filter); + iMediaList = MGlxMediaList::InstanceL(*path, TGlxHierarchyId(0), filter); //todo take actual hierarchy + CleanupStack::PopAndDestroy(filter); + + CleanupStack::PopAndDestroy(path); + OstTraceFunctionExit0( GLXMPXCOMMANDHANDLER_CREATEMEDIALISTALBUMITEML_EXIT ); + } // ----------------------------------------------------------------------------- // HandleItemAddedL // ----------------------------------------------------------------------------- // -void GlxMpxCommandHandler::HandleItemAddedL(TInt /*aStartIndex*/, TInt /*aEndIndex*/, MGlxMediaList* /*aList*/) +void GlxMpxCommandHandler::HandleItemAddedL(TInt /*aStartIndex*/, + TInt /*aEndIndex*/, MGlxMediaList* /*aList*/) { + OstTraceFunctionEntry0( GLXMPXCOMMANDHANDLER_HANDLEITEMADDEDL_ENTRY ); // Do nothing - qDebug("New item added "); + OstTraceFunctionExit0( GLXMPXCOMMANDHANDLER_HANDLEITEMADDEDL_EXIT ); } // ----------------------------------------------------------------------------- @@ -143,18 +187,23 @@ // ----------------------------------------------------------------------------- // void GlxMpxCommandHandler::HandleMediaL(TInt /*aListIndex*/, MGlxMediaList* /*aList*/) - { - // Do nothing - } - + { + OstTraceFunctionEntry0( GLXMPXCOMMANDHANDLER_HANDLEMEDIAL_ENTRY ); + // Do nothing + OstTraceFunctionExit0( GLXMPXCOMMANDHANDLER_HANDLEMEDIAL_EXIT ); + } + // ----------------------------------------------------------------------------- // HandleItemRemovedL // ----------------------------------------------------------------------------- // -void GlxMpxCommandHandler::HandleItemRemovedL(TInt /*aStartIndex*/, TInt /*aEndIndex*/, MGlxMediaList* /*aList*/) - { - // Do nothing - } +void GlxMpxCommandHandler::HandleItemRemovedL(TInt /*aStartIndex*/, + TInt /*aEndIndex*/, MGlxMediaList* /*aList*/) + { + OstTraceFunctionEntry0( GLXMPXCOMMANDHANDLER_HANDLEITEMREMOVEDL_ENTRY ); + // Do nothing + OstTraceFunctionExit0( GLXMPXCOMMANDHANDLER_HANDLEITEMREMOVEDL_EXIT ); + } // ----------------------------------------------------------------------------- // HandleItemModifiedL @@ -163,7 +212,9 @@ void GlxMpxCommandHandler::HandleItemModifiedL(const RArray& /*aItemIndexes*/, MGlxMediaList* /*aList*/) { + OstTraceFunctionEntry0( GLXMPXCOMMANDHANDLER_HANDLEITEMMODIFIEDL_ENTRY ); // Do nothing + OstTraceFunctionExit0( GLXMPXCOMMANDHANDLER_HANDLEITEMMODIFIEDL_EXIT ); } // ----------------------------------------------------------------------------- @@ -173,7 +224,9 @@ void GlxMpxCommandHandler::HandleAttributesAvailableL(TInt /*aItemIndex*/, const RArray& /*aAttributes*/, MGlxMediaList* /*aList*/) { + OstTraceFunctionEntry0( GLXMPXCOMMANDHANDLER_HANDLEATTRIBUTESAVAILABLEL_ENTRY ); // Do nothing + OstTraceFunctionExit0( GLXMPXCOMMANDHANDLER_HANDLEATTRIBUTESAVAILABLEL_EXIT ); } // ----------------------------------------------------------------------------- @@ -183,7 +236,9 @@ void GlxMpxCommandHandler::HandleFocusChangedL(NGlxListDefs::TFocusChangeType /*aType*/, TInt /*aNewIndex*/, TInt /*aOldIndex*/, MGlxMediaList* /*aList*/) { + OstTraceFunctionEntry0( GLXMPXCOMMANDHANDLER_HANDLEFOCUSCHANGEDL_ENTRY ); // Do nothing + OstTraceFunctionExit0( GLXMPXCOMMANDHANDLER_HANDLEFOCUSCHANGEDL_EXIT ); } // ----------------------------------------------------------------------------- @@ -193,39 +248,58 @@ void GlxMpxCommandHandler::HandleItemSelectedL(TInt /*aIndex*/, TBool /*aSelected*/, MGlxMediaList* /*aList*/) { + OstTraceFunctionEntry0( GLXMPXCOMMANDHANDLER_HANDLEITEMSELECTEDL_ENTRY ); // Do nothing + OstTraceFunctionExit0( GLXMPXCOMMANDHANDLER_HANDLEITEMSELECTEDL_EXIT ); } // ----------------------------------------------------------------------------- // HandleMessageL // ----------------------------------------------------------------------------- // -void GlxMpxCommandHandler::HandleMessageL(const CMPXMessage& aMessage, - MGlxMediaList* aList) -{ - if ((aMessage.IsSupported(KMPXMessageGeneralId) && (aMessage.IsSupported(KMPXCommandGeneralSessionId)))) +void GlxMpxCommandHandler::HandleMessageL(const CMPXMessage& aMessage, + MGlxMediaList*/* aList*/) { - TInt msgId = aMessage.ValueTObjectL(KMPXMessageGeneralId); - TAny* sessionId = aMessage.ValueTObjectL(KMPXCommandGeneralSessionId); - + OstTraceFunctionEntry0( GLXMPXCOMMANDHANDLER_HANDLEMESSAGEL_ENTRY ); + if ((aMessage.IsSupported(KMPXMessageGeneralId) && (aMessage.IsSupported( + KMPXCommandGeneralSessionId)))) + { + TInt msgId = aMessage.ValueTObjectL (KMPXMessageGeneralId); + TAny* sessionId = aMessage.ValueTObjectL ( + KMPXCommandGeneralSessionId); + TInt error = KErrNone; // Check if this is a progress message and intended for this object + TryExitL(error); + } + OstTraceFunctionExit0( GLXMPXCOMMANDHANDLER_HANDLEMESSAGEL_EXIT ); } -} // ----------------------------------------------------------------------------- // HandleCommandCompleteL // ----------------------------------------------------------------------------- // -void GlxMpxCommandHandler::HandleCommandCompleteL(TAny* aSessionId, CMPXCommand* aCommandResult, TInt aError, MGlxMediaList* aList) +void GlxMpxCommandHandler::HandleCommandCompleteL(TAny* aSessionId, + CMPXCommand* aCommandResult, TInt aError, MGlxMediaList* aList) { + OstTraceFunctionEntry0( GLXMPXCOMMANDHANDLER_HANDLECOMMANDCOMPLETEL_ENTRY ); + MGlxMediaList::UnmarkAllL(*iMediaList); - MGlxMediaList::UnmarkAllL(*iMediaList); + DoHandleCommandCompleteL(aSessionId, aCommandResult, aError, aList); + iProgressComplete = ETrue; + TryExitL(aError); + OstTraceFunctionExit0( GLXMPXCOMMANDHANDLER_HANDLECOMMANDCOMPLETEL_EXIT ); + } + +// ----------------------------------------------------------------------------- +// HandleError +// ----------------------------------------------------------------------------- +// +void GlxMpxCommandHandler::HandleError(TInt /*aError*/) + { + OstTraceFunctionEntry0( GLXMPXCOMMANDHANDLER_HANDLEERROR_ENTRY ); - DoHandleCommandCompleteL(aSessionId, aCommandResult, aError, aList); - - iMediaList->RemoveMediaListObserver(this); + OstTraceFunctionExit0( GLXMPXCOMMANDHANDLER_HANDLEERROR_EXIT ); } - // ----------------------------------------------------------------------------- // Default implementation of advanced command handling does nothing // ----------------------------------------------------------------------------- @@ -233,6 +307,9 @@ void GlxMpxCommandHandler::DoHandleCommandCompleteL(TAny* /*aSessionId*/, CMPXCommand* /*aCommandResult*/, TInt /*aError*/, MGlxMediaList* /*aList*/) { + OstTraceFunctionEntry0( GLXMPXCOMMANDHANDLER_DOHANDLECOMMANDCOMPLETEL_ENTRY ); + + OstTraceFunctionExit0( GLXMPXCOMMANDHANDLER_DOHANDLECOMMANDCOMPLETEL_EXIT ); } // ----------------------------------------------------------------------------- @@ -240,7 +317,203 @@ // ----------------------------------------------------------------------------- // -void GlxMpxCommandHandler::DoExecuteCommandL(TInt /*aCommandId*/, MGlxMediaList& /*aMediaList*/, TBool& /*aConsume*/) -{ +void GlxMpxCommandHandler::DoExecuteCommandL(TInt /*aCommandId*/, + MGlxMediaList& /*aMediaList*/, TBool& /*aConsume*/) + { + OstTraceFunctionEntry0( GLXMPXCOMMANDHANDLER_DOEXECUTECOMMANDL_ENTRY ); + + OstTraceFunctionExit0( GLXMPXCOMMANDHANDLER_DOEXECUTECOMMANDL_EXIT ); + } + +// ----------------------------------------------------------------------------- +// TryExitL +// ----------------------------------------------------------------------------- +// +void GlxMpxCommandHandler::TryExitL(TInt aErrorCode) + { + OstTraceFunctionEntry0( GLXMPXCOMMANDHANDLER_TRYEXITL_ENTRY ); + if (KErrNone != aErrorCode) + { + // @todo error received. Close progress note + DismissProgressNoteL(); + iMediaList->RemoveMediaListObserver(this); + + // handle error + HandleErrorL(aErrorCode); + } + else if (iProgressComplete) + { + DismissProgressNoteL(); + iMediaList->RemoveMediaListObserver(this); + CompletionNoteL(); + } + OstTraceFunctionExit0( GLXMPXCOMMANDHANDLER_TRYEXITL_EXIT ); + } + +// ----------------------------------------------------------------------------- +// Default implementation shows an error note +// ----------------------------------------------------------------------------- +// +void GlxMpxCommandHandler::HandleErrorL(TInt aErrorCode) + { + OstTraceFunctionEntry0( GLXMPXCOMMANDHANDLER_HANDLEERRORL_ENTRY ); + // show error note + // TextResolver instance for error resolving. + CTextResolver* textresolver = CTextResolver::NewLC(); + // Resolve the error text + const TDesC& text = textresolver->ResolveErrorString(aErrorCode); + + QString qtText = QString::fromUtf16(text.Ptr(), text.Length()); + + HbMessageBox box(HbMessageBox::MessageTypeInformation); + box.setText(qtText); + box.exec(); + CleanupStack::PopAndDestroy(textresolver); + OstTraceFunctionExit0( GLXMPXCOMMANDHANDLER_HANDLEERRORL_EXIT ); + } + +void GlxMpxCommandHandler::CompletionNoteL() const + { + QString displayText = CompletionTextL(); + if (!displayText.isNull()) + { + HbMessageBox::information(displayText); + } + } + +QString GlxMpxCommandHandler::CompletionTextL() const + { + return QString(); + } + +QString GlxMpxCommandHandler::ProgressTextL() const + { + return QString("Progressing..."); + } + +void GlxMpxCommandHandler::ProgressNoteL(TInt /*aCommandId*/) + { + mProgressDialog = new HbProgressDialog(HbProgressDialog::WaitDialog); + mProgressDialog->setText(ProgressTextL()); + mProgressDialog->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter); + mProgressDialog->show(); + } + +void GlxMpxCommandHandler::DismissProgressNoteL() + { + mProgressDialog->close(); + delete mProgressDialog; + mProgressDialog = NULL; + } + +bool GlxMpxCommandHandler::ConfirmationNoteL(MGlxMediaList& aMediaList) const + { + TInt selectionCount = aMediaList.SelectionCount(); -} + // If media list is not empty, treat focused item as selected + // At this point can assume that the command was disabled + // if static items were not supported + if ( selectionCount == 0 ) + { + selectionCount = 1; + } + + // Show confirmation note + bool confirmed = true; + if ( selectionCount == 1 ) + { + confirmed = ConfirmationNoteSingleL(aMediaList); + } + else + { + confirmed = ConfirmationNoteMultipleL(aMediaList); + } + + return confirmed; + } + +bool GlxMpxCommandHandler::ConfirmationNoteSingleL(MGlxMediaList& aMediaList) const + { + bool confirmAction = true; + + QString qtText = ConfirmationTextL(); + + if(!qtText.isEmpty ()) + { + // create fetch context + TGlxSelectionIterator iterator; + iterator.SetRange(1); + CGlxAttributeContext* attributeContext = new(ELeave) CGlxAttributeContext(&iterator); + CleanupStack::PushL(attributeContext); + attributeContext->AddAttributeL(KMPXMediaGeneralTitle); + + // add context to media list + aMediaList.AddContextL(attributeContext, KGlxFetchContextPriorityLow); + + // 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, aMediaList); + // put to cleanupstack as cleanupstack is emptied before stack objects + // are deleted + CleanupClosePushL( contextRemover); + // retrieve title attribute + TInt err = GlxAttributeRetriever::RetrieveL(*attributeContext, aMediaList, EFalse); + // context off the list + CleanupStack::PopAndDestroy( &contextRemover ); + + if ( err == KErrNone ) + { + // use iterator to get the index of the right item + iterator.SetToFirst(&aMediaList); + const CGlxMedia* media = aMediaList.Item(iterator++).Properties(); + + // noteText has a place for a title string in it + const TDesC& itemName = media->ValueText(KMPXMediaGeneralTitle); + QString qtItemName = QString::fromUtf16(itemName.Ptr(),itemName.Length()); + qtText.append(QString("%1").arg(qtItemName)); + } + // (else) If error, assume confirmed anyway + + CleanupStack::PopAndDestroy(attributeContext); + + HbMessageBox box(HbMessageBox::MessageTypeQuestion); + box.setDismissPolicy(HbDialog::NoDismiss); + + // Set timeout to zero to wait user to either click Ok or Cancel + box.setTimeout(HbDialog::NoTimeout); + + box.setText(qtText); + HbAction *action = box.exec(); + if(action != box.primaryAction()) + { + confirmAction = false; + } + } + return confirmAction; + } + +bool GlxMpxCommandHandler::ConfirmationNoteMultipleL(MGlxMediaList& /*aMediaList*/) const + { + bool confirmAction = true; + + QString qtText = ConfirmationTextL(true); + if(!qtText.isEmpty ()) + { + HbMessageBox box(HbMessageBox::MessageTypeQuestion); + box.setDismissPolicy(HbDialog::NoDismiss); + // Set timeout to zero to wait user to either click Ok or Cancel + box.setTimeout(HbDialog::NoTimeout); + box.setText(qtText); + HbAction *action = box.exec(); + if(action != box.primaryAction()) + { + confirmAction = false; + } + } + return confirmAction; + } + +QString GlxMpxCommandHandler::ConfirmationTextL(bool /*multiSelection */) const + { + return QString(); + } diff -r 74c9f037fd5d -r 99ad1390cd33 ui/commandhandlers/commoncommandhandlers/commoncommandhandlers.pro --- a/ui/commandhandlers/commoncommandhandlers/commoncommandhandlers.pro Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/commandhandlers/commoncommandhandlers/commoncommandhandlers.pro Fri Apr 16 14:58:46 2010 +0300 @@ -27,8 +27,11 @@ ../../uiengine/medialists/inc \ ../../../inc \ ../../inc \ + ../../uiengine/model/mediamodel/inc \ ../../uiengine/model/listmodel/inc \ - ../../uiengine/medialistwrapper/inc + ../../../commonui/inc \ + ../../uiengine/medialistwrapper/inc \ + ../../../traces DEFINES += BUILD_COMMONCOMMANDHANDLERS @@ -45,20 +48,28 @@ -lglxcommon.dll \ -lglxlistmodel.dll \ -lglxmedialists.dll \ - -lexiflib.dll \ - -lfbscli.dll \ - -lbafl.dll + -lglxcommonui.dll \ + -lshareui.dll \ + -lexiflib.dll \ + -lfbscli.dll \ + -lbafl.dll # Input HEADERS += inc/glxcommandhandlerdelete.h HEADERS += inc/glxcommandhandleraddtocontainer.h HEADERS += inc/glxcommandhandlernewmedia.h HEADERS += inc/glxcommandhandlerrotate.h +HEADERS += inc/glxcommandhandlersend.h +HEADERS += inc/glxcommandhandlerremovefrom.h + SOURCES += src/glxcommandhandlerdelete.cpp SOURCES += src/glxcommandhandleraddtocontainer.cpp SOURCES += src/glxcommandhandlernewmedia.cpp SOURCES += src/glxcommandhandlerrotate.cpp +SOURCES += src/glxcommandhandlersend.cpp +SOURCES += src/glxcommandhandlerremovefrom.cpp + DEFINES += QT_NO_DEBUG_OUTPUT QT_NO_WARNING_OUTPUT diff -r 74c9f037fd5d -r 99ad1390cd33 ui/commandhandlers/commoncommandhandlers/inc/glxcommandhandleraddtocontainer.h --- a/ui/commandhandlers/commoncommandhandlers/inc/glxcommandhandleraddtocontainer.h Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/commandhandlers/commoncommandhandlers/inc/glxcommandhandleraddtocontainer.h Fri Apr 16 14:58:46 2010 +0300 @@ -44,6 +44,9 @@ QModelIndexList GetSelectionList(GlxAlbumModel *model,bool *ok = 0) const; private: + QString CompletionTextL() const; + QString ProgressTextL() const; +private: static TInt iSelectionCount; mutable bool mNewMediaAdded ; mutable CMPXCollectionPath* mTargetContainers ; diff -r 74c9f037fd5d -r 99ad1390cd33 ui/commandhandlers/commoncommandhandlers/inc/glxcommandhandlerdelete.h --- a/ui/commandhandlers/commoncommandhandlers/inc/glxcommandhandlerdelete.h Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/commandhandlers/commoncommandhandlers/inc/glxcommandhandlerdelete.h Fri Apr 16 14:58:46 2010 +0300 @@ -33,6 +33,10 @@ GlxCommandHandlerDelete(); ~GlxCommandHandlerDelete(); CMPXCommand* CreateCommandL(TInt aCommandId, MGlxMediaList& aMediaList, TBool& aConsume) const ; +private: + QString CompletionTextL() const; + QString ProgressTextL() const; + QString ConfirmationTextL(bool multiSelection = false) const; }; #endif // GLXCOMMANDHANDLERDELETE_H diff -r 74c9f037fd5d -r 99ad1390cd33 ui/commandhandlers/commoncommandhandlers/inc/glxcommandhandlernewmedia.h --- a/ui/commandhandlers/commoncommandhandlers/inc/glxcommandhandlernewmedia.h Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/commandhandlers/commoncommandhandlers/inc/glxcommandhandlernewmedia.h Fri Apr 16 14:58:46 2010 +0300 @@ -27,6 +27,7 @@ #define GLX_COMMONCOMMANDHANDLERS_EXPORT Q_DECL_IMPORT #endif +class HbInputDialog; class GLX_COMMONCOMMANDHANDLERS_EXPORT GlxCommandHandlerNewMedia : public GlxMpxCommandHandler { @@ -37,10 +38,15 @@ TInt ExecuteLD(TGlxMediaId& aNewMediaId); +private: + QString CompletionTextL() const; + QString ProgressTextL() const; + protected: // From MGlxMediaListObserver /// See @ref MGlxMediaListObserver::HandleItemAddedL void HandleItemAddedL(TInt aStartIndex, TInt aEndIndex, MGlxMediaList* aList); - + void HandleError(TInt aError); + void HandleErrorL(TInt aErrorCode); protected: // from GlxMpxCommandHandler CMPXCommand* CreateCommandL(TInt aCommandId, MGlxMediaList& aMediaList, TBool& aConsume) const ; @@ -48,7 +54,8 @@ void DoHandleCommandCompleteL(TAny* aSessionId, CMPXCommand* aCommandResult, TInt aError, MGlxMediaList* aList); - +private: + QString GenerateNewMediaItemTitleL(QString newMediaTilte,MGlxMediaList& aMediaList) const; public: /** * Id of new media @@ -66,9 +73,25 @@ mutable TInt iNewMediaCreationError; mutable HBufC* iNewMediaItemTitle; +private: + bool mShowConfirmation; }; +class GlxTextInputDialog : public QObject +{ + Q_OBJECT +public: + GlxTextInputDialog(); + ~GlxTextInputDialog(); + QString getText(const QString &label,const QString &text = QString(),bool *ok = 0); + +public slots: + void textChanged(const QString &text); + +private: + HbInputDialog* mDialog; +}; #endif // GLXCOMMANDHANDLERNEWMEDIA_H diff -r 74c9f037fd5d -r 99ad1390cd33 ui/commandhandlers/commoncommandhandlers/inc/glxcommandhandlerremovefrom.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ui/commandhandlers/commoncommandhandlers/inc/glxcommandhandlerremovefrom.h Fri Apr 16 14:58:46 2010 +0300 @@ -0,0 +1,41 @@ +/* +* 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 "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#ifndef GLXCOMMANDHANDLERREMOVEFROM_H +#define GLXCOMMANDHANDLERREMOVEFROM_H + +#include + +#ifdef BUILD_COMMONCOMMANDHANDLERS +#define GLX_COMMONCOMMANDHANDLERS_EXPORT Q_DECL_EXPORT +#else +#define GLX_COMMONCOMMANDHANDLERS_EXPORT Q_DECL_IMPORT +#endif + + +class GLX_COMMONCOMMANDHANDLERS_EXPORT GlxCommandHandlerRemoveFrom : public GlxMpxCommandHandler + { +public: + GlxCommandHandlerRemoveFrom(); + ~GlxCommandHandlerRemoveFrom(); + CMPXCommand* CreateCommandL(TInt aCommandId, MGlxMediaList& aMediaList, TBool& aConsume) const ; +private: + QString CompletionTextL() const; + QString ProgressTextL() const; + }; + +#endif // GLXCOMMANDHANDLERREMOVEFROM_H diff -r 74c9f037fd5d -r 99ad1390cd33 ui/commandhandlers/commoncommandhandlers/inc/glxcommandhandlersend.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ui/commandhandlers/commoncommandhandlers/inc/glxcommandhandlersend.h Fri Apr 16 14:58:46 2010 +0300 @@ -0,0 +1,40 @@ +/* +* 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 "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#ifndef GLXCOMMANDHANDLERSEND_H +#define GLXCOMMANDHANDLERSEND_H + +#include "glxmodelcommandhandler.h" +#include +#include + + +#ifdef BUILD_COMMONCOMMANDHANDLERS +#define GLX_COMMONCOMMANDHANDLERS_EXPORT Q_DECL_EXPORT +#else +#define GLX_COMMONCOMMANDHANDLERS_EXPORT Q_DECL_IMPORT +#endif + + +class GLX_COMMONCOMMANDHANDLERS_EXPORT GlxCommandHandlerSend : public GlxModelCommandHandler + { +public: + GlxCommandHandlerSend(); + ~GlxCommandHandlerSend(); + void doHandleUserAction(GlxMediaModel* model,QList indexList)const ; + }; +#endif // GLXCOMMANDHANDLERSEND_H diff -r 74c9f037fd5d -r 99ad1390cd33 ui/commandhandlers/commoncommandhandlers/src/glxcommandhandleraddtocontainer.cpp --- a/ui/commandhandlers/commoncommandhandlers/src/glxcommandhandleraddtocontainer.cpp Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/commandhandlers/commoncommandhandlers/src/glxcommandhandleraddtocontainer.cpp Fri Apr 16 14:58:46 2010 +0300 @@ -28,125 +28,144 @@ #include #include #include -#include #include - #include #include #include #include #include +#include + +#include "OstTraceDefinitions.h" +#ifdef OST_TRACE_COMPILER_IN_USE +#include "glxcommandhandleraddtocontainerTraces.h" +#endif + TInt GlxCommandHandlerAddToContainer::iSelectionCount = 0; const TInt KSelectionPopupListHierarchy = 5; -GlxQueryContentWidget::GlxQueryContentWidget(QGraphicsItem* parent):QGraphicsWidget(parent), - mButton(0), mListView(0), mGrid(0) -{ +GlxQueryContentWidget::GlxQueryContentWidget(QGraphicsItem* parent) : + QGraphicsWidget(parent), mButton(0), mListView(0), mGrid(0) + { + OstTraceFunctionEntry0( DUP1_GLXQUERYCONTENTWIDGET_GLXQUERYCONTENTWIDGET_ENTRY ); mGrid = new QGraphicsGridLayout; - mGrid->setContentsMargins(0,0,0,0); - - mButton = new HbPushButton("New Item"); + mGrid->setContentsMargins(0, 0, 0, 0); + + mButton = new HbPushButton("New Item"); mListView = new HbListView(this); mListView->setSelectionMode(HbAbstractItemView::MultiSelection); - mListView->setMinimumSize(QSize(360, 180)); - mListView->setMaximumSize(QSize(360, 180)); - mGrid->addItem(mButton, 0,0); - mGrid->addItem(mListView, 1,0); + mGrid->addItem(mButton, 0, 0); + mGrid->addItem(mListView, 1, 0); setLayout(mGrid); //ownership transfered - - setPreferredWidth(360); -} + + OstTraceFunctionExit0( DUP1_GLXQUERYCONTENTWIDGET_GLXQUERYCONTENTWIDGET_EXIT ); + } GlxQueryContentWidget::~GlxQueryContentWidget() -{ - qDebug("GlxQueryContentWidget::~GlxQueryContentWidget() "); + { + OstTraceFunctionEntry0( GLXQUERYCONTENTWIDGET_GLXQUERYCONTENTWIDGET_ENTRY ); delete mListView; delete mButton; - qDebug("GlxQueryContentWidget::~GlxQueryContentWidget() exit"); -} + OstTraceFunctionExit0( GLXQUERYCONTENTWIDGET_GLXQUERYCONTENTWIDGET_EXIT ); + } -GlxCommandHandlerAddToContainer::GlxCommandHandlerAddToContainer():mNewMediaAdded(false) -{ +GlxCommandHandlerAddToContainer::GlxCommandHandlerAddToContainer() : + mNewMediaAdded(false) + { + OstTraceFunctionEntry0( GLXCOMMANDHANDLERADDTOCONTAINER_GLXCOMMANDHANDLERADDTOCONTAINER_ENTRY ); mTargetContainers = NULL; - qDebug("GlxCommandHandlerAddToContainer::GlxCommandHandlerAddToContainer() "); -} + OstTraceFunctionExit0( GLXCOMMANDHANDLERADDTOCONTAINER_GLXCOMMANDHANDLERADDTOCONTAINER_EXIT ); + } GlxCommandHandlerAddToContainer::~GlxCommandHandlerAddToContainer() -{ + { + OstTraceFunctionEntry0( DUP1_GLXCOMMANDHANDLERADDTOCONTAINER_GLXCOMMANDHANDLERADDTOCONTAINER_ENTRY ); delete mTargetContainers; - qDebug("GlxCommandHandlerAddToContainer::~GlxCommandHandlerAddToContainer() "); -} + OstTraceFunctionExit0( DUP1_GLXCOMMANDHANDLERADDTOCONTAINER_GLXCOMMANDHANDLERADDTOCONTAINER_EXIT ); + } -CMPXCommand* GlxCommandHandlerAddToContainer::CreateCommandL(TInt aCommandId, MGlxMediaList& aMediaList, TBool& aConsume) const -{ - qDebug("GlxCommandHandlerAddToContainer::CreateCommandL"); +CMPXCommand* GlxCommandHandlerAddToContainer::CreateCommandL(TInt /*aCommandId*/, + MGlxMediaList& aMediaList, TBool& /*aConsume*/) const + { + OstTraceFunctionEntry0( GLXCOMMANDHANDLERADDTOCONTAINER_CREATECOMMANDL_ENTRY ); iSelectionCount = 0; - CMPXCollectionPath* sourceItems = aMediaList.PathLC( NGlxListDefs::EPathFocusOrSelection ); + CMPXCollectionPath* sourceItems = aMediaList.PathLC( + NGlxListDefs::EPathFocusOrSelection); bool ok = false; - //create target medialist - CMPXCollectionPath* path = CMPXCollectionPath::NewL(); - CleanupStack::PushL( path ); + CMPXCollectionPath* path = CMPXCollectionPath::NewL(); + CleanupStack::PushL(path); path->AppendL(KGlxCollectionPluginAlbumsImplementationUid); - CMPXFilter* filter = TGlxFilterFactory::CreateCameraAlbumExclusionFilterL(); + CMPXFilter* filter = + TGlxFilterFactory::CreateCameraAlbumExclusionFilterL(); CleanupStack::PushL(filter); - + // Create the media list - MGlxMediaList* targetMediaList = MGlxMediaList::InstanceL( *path, - TGlxHierarchyId(KSelectionPopupListHierarchy), filter ); //todo take actual hierarchy - CleanupStack::PopAndDestroy( filter ); + MGlxMediaList* targetMediaList = MGlxMediaList::InstanceL(*path, + TGlxHierarchyId(KSelectionPopupListHierarchy), filter); //todo take actual hierarchy + CleanupStack::PopAndDestroy(filter); CleanupStack::PopAndDestroy(path); - + //create target model - GlxModelParm modelParm (KGlxCollectionPluginAlbumsImplementationUid, KSelectionPopupListHierarchy,EGlxFilterExcludeCamera); - GlxAlbumModel *albumMediaModel = new GlxAlbumModel (modelParm); - albumMediaModel->setData(QModelIndex(), (int)GlxContextSelectionList, GlxContextRole ); - - //QModelIndexList selectedModelIndexes; - QModelIndexList modelList = GetSelectionList(albumMediaModel,&ok); - + GlxModelParm modelParm(KGlxCollectionPluginAlbumsImplementationUid, + KSelectionPopupListHierarchy, EGlxFilterExcludeCamera); + GlxAlbumModel *albumMediaModel = new GlxAlbumModel(modelParm); + albumMediaModel->setData(QModelIndex(), (int) GlxContextSelectionList, + GlxContextRole); + + QModelIndexList modelList = GetSelectionList(albumMediaModel, &ok); + CMPXCommand* command = NULL; - qDebug("GlxCommandHandlerAddToContainer::CreateCommandL OK %d new media added %d", ok, mNewMediaAdded); - - if (ok|| mNewMediaAdded) { + OstTraceExt2( TRACE_NORMAL, GLXCOMMANDHANDLERADDTOCONTAINER_CREATECOMMANDL, "GlxCommandHandlerAddToContainer::CreateCommandL;ok=%d;newMedia=%d", ok, mNewMediaAdded ); + + if (ok || mNewMediaAdded) + { int count = modelList.count(); - - for(int i = 0 ; i < count ; i++) { - albumMediaModel->setData( modelList[i], modelList[i].row(), GlxSelectedIndexRole ); - } - - if(!mNewMediaAdded) { - CMPXCollectionPath* targetContainers = targetMediaList->PathLC( NGlxListDefs::EPathFocusOrSelection ); + + for (int i = 0; i < count; i++) + { + albumMediaModel->setData(modelList[i], modelList[i].row(), + GlxSelectedIndexRole); + } + + if (!mNewMediaAdded) + { + CMPXCollectionPath* targetContainers = targetMediaList->PathLC( + NGlxListDefs::EPathFocusOrSelection); CleanupStack::Pop(targetContainers); delete mTargetContainers; mTargetContainers = NULL; mTargetContainers = targetContainers; + } + + command = TGlxCommandFactory::AddToContainerCommandLC(*sourceItems, + *mTargetContainers); + CleanupStack::Pop(command); + mNewMediaAdded = false; } - - command = TGlxCommandFactory::AddToContainerCommandLC(*sourceItems, *mTargetContainers); - CleanupStack::Pop(command); - mNewMediaAdded = false; - } MGlxMediaList::UnmarkAllL(*targetMediaList); targetMediaList->Close(); CleanupStack::PopAndDestroy(sourceItems); delete albumMediaModel; + OstTraceFunctionExit0( GLXCOMMANDHANDLERADDTOCONTAINER_CREATECOMMANDL_EXIT ); return command; -} + } -QModelIndexList GlxCommandHandlerAddToContainer::GetSelectionList(GlxAlbumModel *model,bool *ok) const -{ +QModelIndexList GlxCommandHandlerAddToContainer::GetSelectionList( + GlxAlbumModel *model, bool *ok) const + { + OstTraceFunctionEntry0( GLXCOMMANDHANDLERADDTOCONTAINER_GETSELECTIONLIST_ENTRY ); // Create a popup HbDialog popup; - + popup.setPreferredHeight(400); // Set dismiss policy that determines what tap events will cause the popup // to be dismissed popup.setDismissPolicy(HbDialog::NoDismiss); @@ -157,58 +176,74 @@ GlxQueryContentWidget* view = new GlxQueryContentWidget(); view->mListView->setModel(model); - - qDebug("GlxCommandHandlerAddToContainer::GetSelectionList model setting done row count %d",model->rowCount() ); + connect(view->mButton, SIGNAL(released ()), &popup, SLOT(close())); connect(view->mButton, SIGNAL(released ()), this, SLOT(createNewMedia())); - HbAction *primary = new HbAction("OK"); + + HbAction *primary = new HbAction("OK"); popup.setPrimaryAction(primary); - HbAction *secondary = new HbAction("Cancel"); + HbAction *secondary = new HbAction("Cancel"); popup.setSecondaryAction(secondary); popup.setContentWidget(view); //ownership transfer - qDebug("GlxCommandHandlerAddToContainer::GetSelectionList after popup.setContentWidget "); view->mListView->show(); - QModelIndexList selectedIndexes; - do { + QModelIndexList selectedIndexes; + + do + { HbAction* action = popup.exec(); - if(action == popup.primaryAction()){ + if (action == popup.primaryAction()) + { *ok = true; - } - else { + } + else + { *ok = false; + } + OstTrace1( TRACE_NORMAL, GLXCOMMANDHANDLERADDTOCONTAINER_GETSELECTIONLIST, "GlxCommandHandlerAddToContainer::GetSelectionList;ok=%d", *ok ); + + + if (*ok) + { + GlxQueryContentWidget* cWidget = qobject_cast< + GlxQueryContentWidget*> (popup.contentWidget()); + QItemSelectionModel* selModel = + cWidget->mListView->selectionModel(); + selectedIndexes = selModel->selectedIndexes(); + } } - - qDebug("GlxCommandHandlerAddToContainer::GetSelectionList after exec user action %d ", *ok); - - if( *ok ) { - GlxQueryContentWidget* cWidget = qobject_cast(popup.contentWidget()); - QItemSelectionModel* selModel = cWidget->mListView->selectionModel(); - qDebug("GlxCommandHandlerAddToContainer::GetSelectionList selection model %d", selModel); - selectedIndexes = selModel->selectedIndexes(); - } - } while ( *ok && selectedIndexes.count() == 0); //continue until user select one album list or new item + while (*ok && selectedIndexes.count() == 0); //continue until user select one album list or new item delete primary; delete secondary; - qDebug("GlxCommandHandlerAddToContainer::GetSelectionList exit "); - + + OstTraceFunctionExit0( GLXCOMMANDHANDLERADDTOCONTAINER_GETSELECTIONLIST_EXIT ); return selectedIndexes; -} + } void GlxCommandHandlerAddToContainer::createNewMedia() -{ - qDebug("GlxCommandHandlerAddToContainer::createNewMedia "); - GlxCommandHandlerNewMedia* commandHandlerNewMedia = new GlxCommandHandlerNewMedia(); + { + OstTraceFunctionEntry0( GLXCOMMANDHANDLERADDTOCONTAINER_CREATENEWMEDIA_ENTRY ); + GlxCommandHandlerNewMedia* commandHandlerNewMedia = + new GlxCommandHandlerNewMedia(); TGlxMediaId newMediaId; - TInt error = commandHandlerNewMedia->ExecuteLD(newMediaId); - - if (error == KErrNone) { + TInt error = commandHandlerNewMedia->ExecuteLD(newMediaId); + + while (error == KErrAlreadyExists) + { + HbMessageBox::warning("Name Already Exist!!!", new HbLabel( + "New Album")); + error = KErrNone; + error = commandHandlerNewMedia->ExecuteLD(newMediaId); + } + + if (error == KErrNone) + { CMPXCollectionPath* path = CMPXCollectionPath::NewL(); - CleanupStack::PushL( path ); + CleanupStack::PushL(path); path->AppendL(KGlxCollectionPluginAlbumsImplementationUid); path->AppendL(newMediaId.Value()); CleanupStack::Pop(path); @@ -216,5 +251,16 @@ mTargetContainers = NULL; mTargetContainers = path; mNewMediaAdded = true; + } + OstTraceFunctionExit0( GLXCOMMANDHANDLERADDTOCONTAINER_CREATENEWMEDIA_EXIT ); } -} + +QString GlxCommandHandlerAddToContainer::CompletionTextL() const + { + return QString("Item added!"); + } + +QString GlxCommandHandlerAddToContainer::ProgressTextL() const + { + return QString("Adding album..."); + } diff -r 74c9f037fd5d -r 99ad1390cd33 ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlerdelete.cpp --- a/ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlerdelete.cpp Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlerdelete.cpp Fri Apr 16 14:58:46 2010 +0300 @@ -19,26 +19,60 @@ #include #include #include -#include +#include "OstTraceDefinitions.h" +#ifdef OST_TRACE_COMPILER_IN_USE +#include "glxcommandhandlerdeleteTraces.h" +#endif + GlxCommandHandlerDelete::GlxCommandHandlerDelete() -{ - qDebug("GlxCommandHandlerDelete::GlxCommandHandlerDelete() "); -} + { + OstTraceFunctionEntry0( GLXCOMMANDHANDLERDELETE_GLXCOMMANDHANDLERDELETE_ENTRY ); + OstTraceFunctionExit0( GLXCOMMANDHANDLERDELETE_GLXCOMMANDHANDLERDELETE_EXIT ); + } GlxCommandHandlerDelete::~GlxCommandHandlerDelete() -{ - qDebug("GlxCommandHandlerDelete::~GlxCommandHandlerDelete() "); -} + { + OstTraceFunctionEntry0( DUP1_GLXCOMMANDHANDLERDELETE_GLXCOMMANDHANDLERDELETE_ENTRY ); + OstTraceFunctionExit0( DUP1_GLXCOMMANDHANDLERDELETE_GLXCOMMANDHANDLERDELETE_EXIT ); + } -CMPXCommand* GlxCommandHandlerDelete::CreateCommandL(TInt aCommandId, MGlxMediaList& aMediaList, TBool& aConsume) const -{ - Q_UNUSED(aCommandId); - Q_UNUSED(aConsume); - qDebug("GlxCommandHandlerDelete::CreateCommandL"); - CMPXCollectionPath* path = aMediaList.PathLC( NGlxListDefs::EPathFocusOrSelection ); +CMPXCommand* GlxCommandHandlerDelete::CreateCommandL(TInt aCommandId, + MGlxMediaList& aMediaList, TBool& aConsume) const + { + OstTraceFunctionEntry0( GLXCOMMANDHANDLERDELETE_CREATECOMMANDL_ENTRY ); + Q_UNUSED(aCommandId); + Q_UNUSED(aConsume); + CMPXCollectionPath* path = aMediaList.PathLC( + NGlxListDefs::EPathFocusOrSelection); CMPXCommand* command = TGlxCommandFactory::DeleteCommandLC(*path); CleanupStack::Pop(command); CleanupStack::PopAndDestroy(path); + OstTraceFunctionExit0( GLXCOMMANDHANDLERDELETE_CREATECOMMANDL_EXIT ); return command; -} + } + +QString GlxCommandHandlerDelete::CompletionTextL() const + { + return QString("Item deleted!"); + } + +QString GlxCommandHandlerDelete::ProgressTextL() const + { + return QString("Deleting..."); + } + +QString GlxCommandHandlerDelete::ConfirmationTextL(bool multiSelection ) const + { + QString retString; + if(multiSelection) + { + retString = QString("Delete selected images"); + } + else + { + retString = QString("Delete "); + } + return retString; + } + diff -r 74c9f037fd5d -r 99ad1390cd33 ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlernewmedia.cpp --- a/ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlernewmedia.cpp Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlernewmedia.cpp Fri Apr 16 14:58:46 2010 +0300 @@ -20,118 +20,333 @@ #include #include #include +#include +#include +#include +#include #include +#include +#include +#include "OstTraceDefinitions.h" +#ifdef OST_TRACE_COMPILER_IN_USE +#include "glxcommandhandlernewmediaTraces.h" +#endif +#include -GlxCommandHandlerNewMedia::GlxCommandHandlerNewMedia():iNewMediaCreationError(KErrNone) , iNewMediaItemTitle(0) -{ - qDebug("GlxCommandHandlerNewMedia::GlxCommandHandlerNewMedia() "); +GlxTextInputDialog::GlxTextInputDialog() + { + } + +GlxTextInputDialog::~GlxTextInputDialog() + { + } + +QString GlxTextInputDialog::getText(const QString &label, + const QString &text, bool *ok) + { + mDialog = new HbInputDialog(); + mDialog->setPromptText(label); + mDialog->setInputMode(HbInputDialog::TextInput); + mDialog->setValue(text); + connect(mDialog->lineEdit(0), SIGNAL( textChanged (const QString &) ), + this, SLOT( textChanged (const QString &))); + HbAction* action = mDialog->exec(); + QString retText = NULL; + if (action == mDialog->secondaryAction()) + { //Cancel was pressed + if (ok) + { + *ok = false; + } + } + else + { //OK was pressed + if (ok) + { + *ok = true; + } + retText = mDialog->value().toString().trimmed(); + } + disconnect(mDialog->lineEdit(0), SIGNAL( textChanged (const QString &) ), + this, SLOT( textChanged (const QString &))); + delete mDialog; + mDialog = NULL; + return retText; + } + +void GlxTextInputDialog::textChanged(const QString &text) + { + if (text.trimmed().isEmpty()) + { + mDialog->primaryAction()->setEnabled(false); + } + else + { + mDialog->primaryAction()->setEnabled(true); + } + } + + +GlxCommandHandlerNewMedia::GlxCommandHandlerNewMedia() : + iNewMediaCreationError(KErrNone), iNewMediaItemTitle(0) , mShowConfirmation(false) + { + OstTraceFunctionEntry0( GLXCOMMANDHANDLERNEWMEDIA_GLXCOMMANDHANDLERNEWMEDIA_ENTRY ); iSchedulerWait = new (ELeave) CActiveSchedulerWait(); -} + OstTraceFunctionExit0( GLXCOMMANDHANDLERNEWMEDIA_GLXCOMMANDHANDLERNEWMEDIA_EXIT ); + } GlxCommandHandlerNewMedia::~GlxCommandHandlerNewMedia() -{ - qDebug("GlxCommandHandlerNewMedia::~GlxCommandHandlerNewMedia() "); + { + OstTraceFunctionEntry0( DUP1_GLXCOMMANDHANDLERNEWMEDIA_GLXCOMMANDHANDLERNEWMEDIA_ENTRY ); + if (iSchedulerWait && iSchedulerWait->IsStarted()) + { + iSchedulerWait->AsyncStop(); + } delete iSchedulerWait; delete iNewMediaItemTitle; -} + OstTraceFunctionExit0( DUP1_GLXCOMMANDHANDLERNEWMEDIA_GLXCOMMANDHANDLERNEWMEDIA_EXIT ); + } -CMPXCommand* GlxCommandHandlerNewMedia::CreateCommandL(TInt aCommandId, MGlxMediaList& aMediaList, TBool& aConsume) const -{ - qDebug("GlxCommandHandlerNewMedia::CreateCommandL"); - CMPXCollectionPath* path = aMediaList.PathLC( NGlxListDefs::EPathParent ); +CMPXCommand* GlxCommandHandlerNewMedia::CreateCommandL(TInt /*aCommandId*/, + MGlxMediaList& aMediaList, TBool& /*aConsume*/) const + { + OstTraceFunctionEntry0( GLXCOMMANDHANDLERNEWMEDIA_CREATECOMMANDL_ENTRY ); + CMPXCollectionPath* path = aMediaList.PathLC(NGlxListDefs::EPathParent); CMPXCommand* command = NULL; - + + _LIT(KName, "TEST"); HBufC* newMediaItemTitle = HBufC::NewL(40); TPtr newMediaItemTitleDes = newMediaItemTitle->Des(); newMediaItemTitleDes.Append(KName); - + + delete iNewMediaItemTitle; - iNewMediaItemTitle= NULL; + iNewMediaItemTitle = NULL; iNewMediaItemTitle = newMediaItemTitle; QString title("NEW MEDIA"); - QString mainPane = QString("Album %1").arg(qrand()); + QString mainPane = GenerateNewMediaItemTitleL("Album",aMediaList); bool ok = false; + QString mediaTitle = NULL; + GlxTextInputDialog* dlg = new GlxTextInputDialog(); + mediaTitle = dlg->getText(title, mainPane, &ok); + delete dlg; + iNewMediaCreationError = KErrNone; + if (ok == true) + { + + TPtrC16 newMediaItemTitleDes + = (reinterpret_cast (mediaTitle.utf16())); + + delete iNewMediaItemTitle; + iNewMediaItemTitle = NULL; + iNewMediaItemTitle = newMediaItemTitleDes.Alloc(); + + command = TGlxCommandFactory::AddContainerCommandLC( + *iNewMediaItemTitle, path->Id(0)); + CleanupStack::Pop(command); + } + else + { + iNewMediaCreationError = KErrCancel; + } - QString mediaTitle = HbInputDialog::getText(title, mainPane, &ok); - qDebug("GlxCommandHandlerNewMedia::CreateCommandL %d", ok); - - if(ok == true) { - TPtr newMediaItemTitleDes = iNewMediaItemTitle->Des(); - newMediaItemTitleDes = (reinterpret_cast(mediaTitle.utf16())); - command = TGlxCommandFactory::AddContainerCommandLC(*iNewMediaItemTitle, path->Id(0)); - CleanupStack::Pop(command); + CleanupStack::PopAndDestroy(path); + OstTraceFunctionExit0( GLXCOMMANDHANDLERNEWMEDIA_CREATECOMMANDL_EXIT ); + return command; } - else { - iNewMediaCreationError = KErrCancel; - } - - CleanupStack::PopAndDestroy(path); - return command; -} TInt GlxCommandHandlerNewMedia::ExecuteLD(TGlxMediaId& aNewMediaId) -{ - qDebug("GlxCommandHandlerNewMedia::ExecuteLD() "); - GlxMpxCommandHandler::executeCommand( EGlxCmdAddMedia,KGlxAlbumsMediaId); - - if (iNewMediaCreationError == KErrNone) { + { + OstTraceFunctionEntry0( GLXCOMMANDHANDLERNEWMEDIA_EXECUTELD_ENTRY ); + GlxMpxCommandHandler::executeCommand(EGlxCmdAddMedia, KGlxCollectionPluginAlbumsImplementationUid); + mShowConfirmation = true; + if (iNewMediaCreationError == KErrNone) + { // The user pressed OK on the dialog. We need to wait for DoHandleCommandComplete() - iSchedulerWait->Start(); - - if (iNewMediaCreationError == KErrNone) { + iSchedulerWait->Start(); + + if (iNewMediaCreationError == KErrNone) + { aNewMediaId = iNewMediaId; + } } - } - + TInt error = iNewMediaCreationError; + OstTraceFunctionExit0( GLXCOMMANDHANDLERNEWMEDIA_EXECUTELD_EXIT ); return error; -} + } // ----------------------------------------------------------------------------- // CGlxCommandHandlerNewMedia::DoHandleCommandCompleteL // ----------------------------------------------------------------------------- // -void GlxCommandHandlerNewMedia::DoHandleCommandCompleteL(TAny* /*aSessionId*/, CMPXCommand* aCommandResult, - TInt aError, MGlxMediaList* /*aList*/) -{ - qDebug("GlxCommandHandlerNewMedia::DoHandleCommandCompleteL() "); - if (aError == KErrNone && aCommandResult && aCommandResult->IsSupported(KMPXMediaGeneralId)) { - iNewMediaId = TGlxMediaId(aCommandResult->ValueTObjectL(KMPXMediaGeneralId)); - } - - if (iSchedulerWait && aError != KErrAlreadyExists ) { +void GlxCommandHandlerNewMedia::DoHandleCommandCompleteL( + TAny* /*aSessionId*/, CMPXCommand* aCommandResult, TInt aError, + MGlxMediaList* /*aList*/) + { + OstTraceFunctionEntry0( GLXCOMMANDHANDLERNEWMEDIA_DOHANDLECOMMANDCOMPLETEL_ENTRY ); + if (aError == KErrNone && aCommandResult && aCommandResult->IsSupported( + KMPXMediaGeneralId)) + { + iNewMediaId = TGlxMediaId(aCommandResult->ValueTObjectL ( + KMPXMediaGeneralId)); + } + if (iSchedulerWait && iSchedulerWait->IsStarted()) + { // if iSchedulerWait exists then we know the command is being executed from // the ExecuteLD() method. iNewMediaCreationError = aError; iSchedulerWait->AsyncStop(); + } + + OstTraceFunctionExit0( GLXCOMMANDHANDLERNEWMEDIA_DOHANDLECOMMANDCOMPLETEL_EXIT ); } -} // ----------------------------------------------------------------------------- // HandleItemAddedL // ----------------------------------------------------------------------------- // -void GlxCommandHandlerNewMedia::HandleItemAddedL(TInt aStartIndex, TInt aEndIndex, MGlxMediaList* aList) -{ - qDebug("GlxCommandHandlerNewMedia::HandleItemAddedL() "); - if(/*aList == &MediaList() && */iNewMediaId != KGlxCollectionRootId) { - for (TInt i = aStartIndex; i <= aEndIndex; i++) { - if (aList->Item(i).Id() == iNewMediaId) { - qDebug("GlxCommandHandlerNewMedia::HandleItemAddedL()::SetFocusL index= %d ",i); +void GlxCommandHandlerNewMedia::HandleItemAddedL(TInt aStartIndex, + TInt aEndIndex, MGlxMediaList* aList) + { + OstTraceFunctionEntry0( GLXCOMMANDHANDLERNEWMEDIA_HANDLEITEMADDEDL_ENTRY ); + if (iNewMediaId != KGlxCollectionRootId) + { + for (TInt i = aStartIndex; i <= aEndIndex; i++) + { + if (aList->Item(i).Id() == iNewMediaId) + { aList->SetFocusL(NGlxListDefs::EAbsolute, i); // calls CGlxCommandHandlerNewMedia::SetFocusL asynchronously - if (iSchedulerWait /*&& aError != KErrAlreadyExists*/ ) { + if (iSchedulerWait && iSchedulerWait->IsStarted() ) + { // if iSchedulerWait exists then we know the command is being executed from // the ExecuteLD() method. iNewMediaCreationError = KErrNone; iSchedulerWait->AsyncStop(); - } + } break; + } } } + OstTraceFunctionExit0( GLXCOMMANDHANDLERNEWMEDIA_HANDLEITEMADDEDL_EXIT ); } + +void GlxCommandHandlerNewMedia::HandleError(TInt /*aError*/) + { + OstTraceFunctionEntry0( GLXCOMMANDHANDLERNEWMEDIA_HANDLEERROR_ENTRY ); + OstTraceFunctionExit0( GLXCOMMANDHANDLERNEWMEDIA_HANDLEERROR_EXIT ); + } + +void GlxCommandHandlerNewMedia::HandleErrorL(TInt aErrorCode) + { + OstTraceFunctionEntry0( GLXCOMMANDHANDLERNEWMEDIA_HANDLEERRORL_ENTRY ); + if (aErrorCode == KErrAlreadyExists && !mShowConfirmation) + { + HbMessageBox::warning("Album Already Exist!!!" ); + } + OstTraceFunctionExit0( GLXCOMMANDHANDLERNEWMEDIA_HANDLEERRORL_EXIT ); + } + +QString GlxCommandHandlerNewMedia::GenerateNewMediaItemTitleL( + QString newMediaTilte, MGlxMediaList& aMediaList) const + { + TGlxSequentialIterator iter; + CGlxAttributeContext* attributeContext = + new (ELeave) CGlxAttributeContext(&iter); + CleanupStack::PushL(attributeContext); + attributeContext->AddAttributeL(KMPXMediaGeneralTitle); + aMediaList.AddContextL(attributeContext, KGlxFetchContextPriorityBlocking); + TGlxFetchContextRemover contextRemover(attributeContext, aMediaList); + // put to cleanupstack as cleanupstack is emptied before stack objects + // are deleted + CleanupClosePushL(contextRemover); + User::LeaveIfError(GlxAttributeRetriever::RetrieveL(*attributeContext, + aMediaList, ETrue)); + // context off the list + CleanupStack::PopAndDestroy(&contextRemover); + CleanupStack::PopAndDestroy(attributeContext); + + RArray numbers; + CleanupClosePushL(numbers); + + TInt count = aMediaList.Count(); + for (TInt i = 0; i < count; i++) + { + TGlxMedia item = aMediaList.Item(i); + const CGlxMedia* media = item.Properties(); + if (media) + { + const TDesC& titleDesc = media->ValueText(KMPXMediaGeneralTitle); + QString title = QString::fromUtf16(titleDesc.Ptr(), + titleDesc.Length()); + + TInt length = newMediaTilte.length(); + if (title.startsWith(newMediaTilte, Qt::CaseSensitive)) + { + if (length == title.length()) + { + numbers.InsertInOrder(0); // special case + } + else if (title.length() > length) + { + QString num = title.mid(length); + bool ok = false; + TInt dec = num.toInt(&ok); + if (ok) + { + numbers.InsertInOrder(dec); + } + } + } + } + } + + TInt nextNumber = 0; + count = numbers.Count(); + for (TInt i = 0; i < count; i++) + { + if (numbers[i] == nextNumber) + { + nextNumber++; + } + else + { + break; + } + } + + CleanupStack::PopAndDestroy(&numbers); + + QString newMediaItemTitle = newMediaTilte; + + if (nextNumber > 0) + { + newMediaItemTitle.append(QString("%1").arg(nextNumber)); + } + return newMediaItemTitle; + } + +QString GlxCommandHandlerNewMedia::CompletionTextL() const + { + if (!mShowConfirmation) + { + return QString("Album added"); + } + return QString(); + } + +QString GlxCommandHandlerNewMedia::ProgressTextL() const + { + if (!mShowConfirmation) + { + return QString("Adding album..."); + } + return QString(); + } + diff -r 74c9f037fd5d -r 99ad1390cd33 ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlerremovefrom.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlerremovefrom.cpp Fri Apr 16 14:58:46 2010 +0300 @@ -0,0 +1,65 @@ +/* +* 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 "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#include +#include +#include +#include +#include "OstTraceDefinitions.h" +#ifdef OST_TRACE_COMPILER_IN_USE +#include "glxcommandhandlerremovefromTraces.h" +#endif + + +GlxCommandHandlerRemoveFrom::GlxCommandHandlerRemoveFrom() + { + OstTraceFunctionEntry0( GLXCOMMANDHANDLERREMOVEFROM_GLXCOMMANDHANDLERREMOVEFROM_ENTRY ); + OstTraceFunctionExit0( GLXCOMMANDHANDLERREMOVEFROM_GLXCOMMANDHANDLERREMOVEFROM_EXIT ); + } + +GlxCommandHandlerRemoveFrom::~GlxCommandHandlerRemoveFrom() + { + OstTraceFunctionEntry0( DUP1_GLXCOMMANDHANDLERREMOVEFROM_GLXCOMMANDHANDLERREMOVEFROM_ENTRY ); + OstTraceFunctionExit0( DUP1_GLXCOMMANDHANDLERREMOVEFROM_GLXCOMMANDHANDLERREMOVEFROM_EXIT ); + } + +CMPXCommand* GlxCommandHandlerRemoveFrom::CreateCommandL(TInt aCommandId, + MGlxMediaList& aMediaList, TBool& aConsume) const + { + OstTraceFunctionEntry0( GLXCOMMANDHANDLERREMOVEFROM_CREATECOMMANDL_ENTRY ); + Q_UNUSED(aCommandId); + Q_UNUSED(aConsume); + CMPXCollectionPath* path = aMediaList.PathLC( + NGlxListDefs::EPathFocusOrSelection); + + CMPXCommand* command = TGlxCommandFactory::RemoveFromContainerCommandLC( + *path); + CleanupStack::Pop(command); + CleanupStack::PopAndDestroy(path); + OstTraceFunctionExit0( GLXCOMMANDHANDLERREMOVEFROM_CREATECOMMANDL_EXIT ); + return command; + } + +QString GlxCommandHandlerRemoveFrom::CompletionTextL() const + { + return QString("Item removed!"); + } + +QString GlxCommandHandlerRemoveFrom::ProgressTextL() const + { + return QString("Removing..."); + } diff -r 74c9f037fd5d -r 99ad1390cd33 ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlerrotate.cpp --- a/ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlerrotate.cpp Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlerrotate.cpp Fri Apr 16 14:58:46 2010 +0300 @@ -18,156 +18,185 @@ #include #include #include -#include -#include +#include #include +#include "OstTraceDefinitions.h" +#ifdef OST_TRACE_COMPILER_IN_USE +#include "glxcommandhandlerrotateTraces.h" +#endif + GlxCommandHandlerRotate::GlxCommandHandlerRotate() -{ - qDebug("GlxCommandHandlerRotate::GlxCommandHandlerRotate() "); -} + { + OstTraceFunctionEntry0( GLXCOMMANDHANDLERROTATE_GLXCOMMANDHANDLERROTATE_ENTRY ); + OstTraceFunctionExit0( GLXCOMMANDHANDLERROTATE_GLXCOMMANDHANDLERROTATE_EXIT ); + } GlxCommandHandlerRotate::~GlxCommandHandlerRotate() -{ - qDebug("GlxCommandHandlerRotate::~GlxCommandHandlerRotate() "); -} + { + OstTraceFunctionEntry0( DUP1_GLXCOMMANDHANDLERROTATE_GLXCOMMANDHANDLERROTATE_ENTRY ); + OstTraceFunctionExit0( DUP1_GLXCOMMANDHANDLERROTATE_GLXCOMMANDHANDLERROTATE_EXIT ); + } -CMPXCommand* GlxCommandHandlerRotate::CreateCommandL(TInt aCommandId, MGlxMediaList& aMediaList, TBool& aConsume) const -{ - Q_UNUSED(aCommandId); - Q_UNUSED(aConsume); - qDebug("GlxCommandHandlerRotate::CreateCommandL"); +CMPXCommand* GlxCommandHandlerRotate::CreateCommandL(TInt aCommandId, + MGlxMediaList& /*aMediaList*/, TBool& aConsume) const + { + OstTraceFunctionEntry0( GLXCOMMANDHANDLERROTATE_CREATECOMMANDL_ENTRY ); + Q_UNUSED(aCommandId); + Q_UNUSED(aConsume); + OstTraceFunctionExit0( GLXCOMMANDHANDLERROTATE_CREATECOMMANDL_EXIT ); return NULL; -} + } -void GlxCommandHandlerRotate::DoExecuteCommandL(TInt aCommandId, MGlxMediaList& aMediaList, TBool& aConsume) -{ - Q_UNUSED(aCommandId); - Q_UNUSED(aConsume); - qDebug("GlxCommandHandlerRotate::DoExecuteCommandL"); - const TGlxMedia& item = aMediaList.Item( aMediaList.FocusIndex() ); - TFileName uri; - uri.Copy(item.Uri()); - TRAPD(err,RotateImageL(uri)); - if(err != KErrNone) { - qDebug("GlxCommandHandlerRotate::DoExecuteCommandL Exif Update failed"); +void GlxCommandHandlerRotate::DoExecuteCommandL(TInt aCommandId, + MGlxMediaList& aMediaList, TBool& aConsume) + { + OstTraceFunctionEntry0( GLXCOMMANDHANDLERROTATE_DOEXECUTECOMMANDL_ENTRY ); + Q_UNUSED(aCommandId); + Q_UNUSED(aConsume); + const TGlxMedia& item = aMediaList.Item(aMediaList.FocusIndex()); + TFileName uri; + uri.Copy(item.Uri()); + TRAPD(err,RotateImageL(uri)); + if (err != KErrNone) + { + OstTrace0( TRACE_NORMAL, GLXCOMMANDHANDLERROTATE_DOEXECUTECOMMANDL, "GlxCommandHandlerRotate::DoExecuteCommandL Exif Update failed" ); + } + OstTraceFunctionExit0( GLXCOMMANDHANDLERROTATE_DOEXECUTECOMMANDL_EXIT ); + } - } -} void GlxCommandHandlerRotate::RotateImageL(TFileName aFileToBeRotated) -{ - //Start an IFS session - //File system + { + OstTraceFunctionEntry0( GLXCOMMANDHANDLERROTATE_ROTATEIMAGEL_ENTRY ); + //Start an IFS session + //File system User::LeaveIfError(iFs.Connect()); - //first initialize the Exif Writer which is responsible for reading and writing the Exif Data - //Will leave here itself in cases where the Exif data is absent - InitializeExifWriterL(aFileToBeRotated); - //read the Orientation tag stored in the Exif Data - TUint16 initialOrientation = ReadImageOrientationL(); - //as the image is rotated to 90 degrees clockwise calculate the new orientation by adding that angle - TUint16 finalOrientation = CalculateFinalOrientationL(initialOrientation); - // Set the Final Orientation on the file - SetImageOrientationL(finalOrientation); - // Clear the sessions acquired - DestroyExifWriter(); - //close the File Session - iFs.Close(); -} + //first initialize the Exif Writer which is responsible for reading and writing the Exif Data + //Will leave here itself in cases where the Exif data is absent + InitializeExifWriterL(aFileToBeRotated); + //read the Orientation tag stored in the Exif Data + TUint16 initialOrientation = ReadImageOrientationL(); + //as the image is rotated to 90 degrees clockwise calculate the new orientation by adding that angle + TUint16 finalOrientation = CalculateFinalOrientationL(initialOrientation); + // Set the Final Orientation on the file + SetImageOrientationL(finalOrientation); + // Clear the sessions acquired + DestroyExifWriter(); + //close the File Session + iFs.Close(); + OstTraceFunctionExit0( GLXCOMMANDHANDLERROTATE_ROTATEIMAGEL_EXIT ); + } -void GlxCommandHandlerRotate::InitializeExifWriterL(TFileName aFileToBeRotated) -{ - User::LeaveIfError(iFileHandle.Open(iFs, - aFileToBeRotated, EFileWrite)); - TInt filesize; +void GlxCommandHandlerRotate::InitializeExifWriterL( + TFileName aFileToBeRotated) + { + OstTraceFunctionEntry0( GLXCOMMANDHANDLERROTATE_INITIALIZEEXIFWRITERL_ENTRY ); + User::LeaveIfError(iFileHandle.Open(iFs, aFileToBeRotated, EFileWrite)); + TInt filesize; User::LeaveIfError(iFileHandle.Size(filesize)); - iExifData = HBufC8::NewL(filesize); - TPtr8 ptr(iExifData->Des()); + iExifData = HBufC8::NewL(filesize); + TPtr8 ptr(iExifData->Des()); User::LeaveIfError(iFileHandle.Read(ptr)); - iExifWriter = CExifModify::NewL(*iExifData,CExifModify::EModify,CExifModify::ENoJpegParsing); -} + iExifWriter = CExifModify::NewL(*iExifData, CExifModify::EModify, + CExifModify::ENoJpegParsing); + OstTraceFunctionExit0( GLXCOMMANDHANDLERROTATE_INITIALIZEEXIFWRITERL_EXIT ); + } TUint16 GlxCommandHandlerRotate::ReadImageOrientationL() { + OstTraceFunctionEntry0( GLXCOMMANDHANDLERROTATE_READIMAGEORIENTATIONL_ENTRY ); TUint16 initialOrientation; const CExifRead* exifReader = iExifWriter->Reader(); //not owned User::LeaveIfError(exifReader->GetOrientation(initialOrientation)); - qDebug("GlxCommandHandlerRotate::ReadImageOrientationL initial orientation = %d", initialOrientation); + OstTrace1( TRACE_NORMAL, GLXCOMMANDHANDLERROTATE_READIMAGEORIENTATIONL, "GlxCommandHandlerRotate::ReadImageOrientationL;initial orientation=%d", initialOrientation ); + OstTraceFunctionExit0( GLXCOMMANDHANDLERROTATE_READIMAGEORIENTATIONL_EXIT ); return (initialOrientation); } -TUint16 GlxCommandHandlerRotate::CalculateFinalOrientationL(TUint16 aInitialOrientation) -{ - /* +TUint16 GlxCommandHandlerRotate::CalculateFinalOrientationL( + TUint16 aInitialOrientation) + { + OstTraceFunctionEntry0( GLXCOMMANDHANDLERROTATE_CALCULATEFINALORIENTATIONL_ENTRY ); + /* * possible orientation state with angles for rotation * Possible Angles 0 - 90 - 180 - 270 * Possible states 1 - 8 - 3 - 6 without a Flip * Possible states 2 - 7 - 4 - 5 when Flip is on */ - TUint16 finalOrientation = aInitialOrientation; - if(aInitialOrientation >8 ) { - //invalid orientation passed Leave + TUint16 finalOrientation = aInitialOrientation; + if (aInitialOrientation > 8) + { + //invalid orientation passed Leave User::Leave(KErrCorrupt); - } - TInt rotOffset = 1; - TInt isOrientationOdd = aInitialOrientation % 2; - TInt initStateIndex = 0; + } + TInt rotOffset = 1; + TInt isOrientationOdd = aInitialOrientation % 2; + TInt initStateIndex = 0; TInt finalStateIndex = 0; //Setting the orientation states for the initial unflipped orientation combinations - TInt orientationStateArray[] = {1,8,3,6}; + TInt orientationStateArray[] = + { + 1, 8, 3, 6 + }; //Seting the index for current orientation - if(aInitialOrientation < 3) + if (aInitialOrientation < 3) { initStateIndex = 0; } - else if(aInitialOrientation >= 3 && aInitialOrientation < 5) + else if (aInitialOrientation >= 3 && aInitialOrientation < 5) { initStateIndex = 2; } - else if(aInitialOrientation >= 5 && aInitialOrientation < 7) + else if (aInitialOrientation >= 5 && aInitialOrientation < 7) { initStateIndex = 3; } - else if(aInitialOrientation >= 7 && aInitialOrientation <= 8) + else if (aInitialOrientation >= 7 && aInitialOrientation <= 8) { initStateIndex = 1; } //Calculating the final orientation using the cyclic orientationStateArray. //folding final index so that it behaves like a cyclic machine - finalStateIndex = (initStateIndex+rotOffset)%4; + finalStateIndex = (initStateIndex + rotOffset) % 4; finalOrientation = orientationStateArray[finalStateIndex]; //Checking if a Flip was present - if(aInitialOrientation>4 && isOrientationOdd ) + if (aInitialOrientation > 4 && isOrientationOdd) { finalOrientation -= 1; } - if(aInitialOrientation<5 && !isOrientationOdd) + if (aInitialOrientation < 5 && !isOrientationOdd) { finalOrientation += 1; } - qDebug("GlxCommandHandlerRotate::CalculateFinalOrientationL final orientation = %d", finalOrientation); + OstTrace1( TRACE_NORMAL, GLXCOMMANDHANDLERROTATE_CALCULATEFINALORIENTATIONL, "GlxCommandHandlerRotate::CalculateFinalOrientationL;finalOrientation=%d", finalOrientation ); + OstTraceFunctionExit0( GLXCOMMANDHANDLERROTATE_CALCULATEFINALORIENTATIONL_EXIT ); return finalOrientation; -} + } void GlxCommandHandlerRotate::SetImageOrientationL(TUint16 aFinalOrientation) -{ - iExifWriter->SetOrientationL(aFinalOrientation); - HBufC8* modifiedexifData=NULL; - modifiedexifData = iExifWriter->WriteDataL(iExifData->Des()); - User::LeaveIfError(iFileHandle.Write(0,modifiedexifData->Des())); - delete modifiedexifData; -} + { + OstTraceFunctionEntry0( GLXCOMMANDHANDLERROTATE_SETIMAGEORIENTATIONL_ENTRY ); + iExifWriter->SetOrientationL(aFinalOrientation); + HBufC8* modifiedexifData = NULL; + modifiedexifData = iExifWriter->WriteDataL(iExifData->Des()); + User::LeaveIfError(iFileHandle.Write(0, modifiedexifData->Des())); + delete modifiedexifData; + OstTraceFunctionExit0( GLXCOMMANDHANDLERROTATE_SETIMAGEORIENTATIONL_EXIT ); + } void GlxCommandHandlerRotate::DestroyExifWriter() -{ - iFileHandle.Close(); - if(iExifData != NULL) + { + OstTraceFunctionEntry0( GLXCOMMANDHANDLERROTATE_DESTROYEXIFWRITER_ENTRY ); + iFileHandle.Close(); + if (iExifData != NULL) { delete iExifData; iExifData = NULL; } - if(iExifWriter != NULL) + if (iExifWriter != NULL) { delete iExifWriter; iExifWriter = NULL; - } -} + } + OstTraceFunctionExit0( GLXCOMMANDHANDLERROTATE_DESTROYEXIFWRITER_EXIT ); + } diff -r 74c9f037fd5d -r 99ad1390cd33 ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlersend.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ui/commandhandlers/commoncommandhandlers/src/glxcommandhandlersend.cpp Fri Apr 16 14:58:46 2010 +0300 @@ -0,0 +1,58 @@ +/* +* 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 "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#include "glxcommandhandlersend.h" +#include +#include +#include +#include +#include + +GlxCommandHandlerSend::GlxCommandHandlerSend() + { + + } + + +GlxCommandHandlerSend::~GlxCommandHandlerSend() + { + + } + +void GlxCommandHandlerSend::doHandleUserAction(GlxMediaModel* model,QList indexList) const +{ + QList fileList; + QString imagePath ; + //The Index list is NULL, when the item is selected to be sent from contect menu + // and fullscreen view,so that inturn is sending the focused item + if(indexList.count() == 0) + { + imagePath = (model->data(model->index(model->data(model->index(0,0),GlxFocusIndexRole).value(),0),GlxUriRole)).value(); + fileList.append(QVariant(imagePath)); + } + else + { + for ( int i = 0; i < indexList.count(); i++) + { + imagePath = (model->data(indexList[i],GlxUriRole)).value(); + fileList.append(QVariant(imagePath)); + } + } + ShareUi dialog; + dialog.init(fileList,true); +} + diff -r 74c9f037fd5d -r 99ad1390cd33 ui/commandhandlers/eabi/glxcommandhandlerbaseu.def --- a/ui/commandhandlers/eabi/glxcommandhandlerbaseu.def Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/commandhandlers/eabi/glxcommandhandlerbaseu.def Fri Apr 16 14:58:46 2010 +0300 @@ -3,35 +3,55 @@ _ZN17GlxCommandHandlerD0Ev @ 2 NONAME _ZN17GlxCommandHandlerD1Ev @ 3 NONAME _ZN17GlxCommandHandlerD2Ev @ 4 NONAME - _ZN20GlxMpxCommandHandler12HandleMediaLEiP13MGlxMediaList @ 5 NONAME - _ZN20GlxMpxCommandHandler14HandleMessageLERK9CMPXMediaP13MGlxMediaList @ 6 NONAME - _ZN20GlxMpxCommandHandler14executeCommandEii @ 7 NONAME - _ZN20GlxMpxCommandHandler16CreateMediaListLEii18TGlxFilterItemType @ 8 NONAME - _ZN20GlxMpxCommandHandler16HandleItemAddedLEiiP13MGlxMediaList @ 9 NONAME - _ZN20GlxMpxCommandHandler18HandleItemRemovedLEiiP13MGlxMediaList @ 10 NONAME - _ZN20GlxMpxCommandHandler19HandleFocusChangedLEN12NGlxListDefs16TFocusChangeTypeEiiP13MGlxMediaList @ 11 NONAME - _ZN20GlxMpxCommandHandler19HandleItemModifiedLERK6RArrayIiEP13MGlxMediaList @ 12 NONAME - _ZN20GlxMpxCommandHandler19HandleItemSelectedLEiiP13MGlxMediaList @ 13 NONAME - _ZN20GlxMpxCommandHandler22HandleCommandCompleteLEPvP9CMPXMediaiP13MGlxMediaList @ 14 NONAME - _ZN20GlxMpxCommandHandler24DoHandleCommandCompleteLEPvP9CMPXMediaiP13MGlxMediaList @ 15 NONAME - _ZN20GlxMpxCommandHandler25CreateMediaListAlbumItemLEii18TGlxFilterItemType @ 16 NONAME - _ZN20GlxMpxCommandHandler26HandleAttributesAvailableLEiRK6RArrayI13TMPXAttributeEP13MGlxMediaList @ 17 NONAME - _ZN20GlxMpxCommandHandlerC2Ev @ 18 NONAME - _ZN20GlxMpxCommandHandlerD0Ev @ 19 NONAME - _ZN20GlxMpxCommandHandlerD1Ev @ 20 NONAME - _ZN20GlxMpxCommandHandlerD2Ev @ 21 NONAME - _ZTI17GlxCommandHandler @ 22 NONAME - _ZTI20GlxMpxCommandHandler @ 23 NONAME - _ZTV17GlxCommandHandler @ 24 NONAME - _ZTV20GlxMpxCommandHandler @ 25 NONAME - _ZThn8_N20GlxMpxCommandHandler12HandleMediaLEiP13MGlxMediaList @ 26 NONAME - _ZThn8_N20GlxMpxCommandHandler14HandleMessageLERK9CMPXMediaP13MGlxMediaList @ 27 NONAME - _ZThn8_N20GlxMpxCommandHandler16HandleItemAddedLEiiP13MGlxMediaList @ 28 NONAME - _ZThn8_N20GlxMpxCommandHandler18HandleItemRemovedLEiiP13MGlxMediaList @ 29 NONAME - _ZThn8_N20GlxMpxCommandHandler19HandleFocusChangedLEN12NGlxListDefs16TFocusChangeTypeEiiP13MGlxMediaList @ 30 NONAME - _ZThn8_N20GlxMpxCommandHandler19HandleItemModifiedLERK6RArrayIiEP13MGlxMediaList @ 31 NONAME - _ZThn8_N20GlxMpxCommandHandler19HandleItemSelectedLEiiP13MGlxMediaList @ 32 NONAME - _ZThn8_N20GlxMpxCommandHandler22HandleCommandCompleteLEPvP9CMPXMediaiP13MGlxMediaList @ 33 NONAME - _ZThn8_N20GlxMpxCommandHandler26HandleAttributesAvailableLEiRK6RArrayI13TMPXAttributeEP13MGlxMediaList @ 34 NONAME - _ZN20GlxMpxCommandHandler17DoExecuteCommandLEiR13MGlxMediaListRi @ 35 NONAME + _ZN20GlxMpxCommandHandler11HandleErrorEi @ 5 NONAME + _ZN20GlxMpxCommandHandler12HandleErrorLEi @ 6 NONAME + _ZN20GlxMpxCommandHandler12HandleMediaLEiP13MGlxMediaList @ 7 NONAME + _ZN20GlxMpxCommandHandler13ProgressNoteLEi @ 8 NONAME + _ZN20GlxMpxCommandHandler14HandleMessageLERK9CMPXMediaP13MGlxMediaList @ 9 NONAME + _ZN20GlxMpxCommandHandler14executeCommandEii5QListI11QModelIndexE @ 10 NONAME + _ZN20GlxMpxCommandHandler16CreateMediaListLEii18TGlxFilterItemType @ 11 NONAME + _ZN20GlxMpxCommandHandler16HandleItemAddedLEiiP13MGlxMediaList @ 12 NONAME + _ZN20GlxMpxCommandHandler17DoExecuteCommandLEiR13MGlxMediaListRi @ 13 NONAME + _ZN20GlxMpxCommandHandler18HandleItemRemovedLEiiP13MGlxMediaList @ 14 NONAME + _ZN20GlxMpxCommandHandler19HandleFocusChangedLEN12NGlxListDefs16TFocusChangeTypeEiiP13MGlxMediaList @ 15 NONAME + _ZN20GlxMpxCommandHandler19HandleItemModifiedLERK6RArrayIiEP13MGlxMediaList @ 16 NONAME + _ZN20GlxMpxCommandHandler19HandleItemSelectedLEiiP13MGlxMediaList @ 17 NONAME + _ZN20GlxMpxCommandHandler20DismissProgressNoteLEv @ 18 NONAME + _ZN20GlxMpxCommandHandler22HandleCommandCompleteLEPvP9CMPXMediaiP13MGlxMediaList @ 19 NONAME + _ZN20GlxMpxCommandHandler24DoHandleCommandCompleteLEPvP9CMPXMediaiP13MGlxMediaList @ 20 NONAME + _ZN20GlxMpxCommandHandler25CreateMediaListAlbumItemLEii18TGlxFilterItemType @ 21 NONAME + _ZN20GlxMpxCommandHandler26HandleAttributesAvailableLEiRK6RArrayI13TMPXAttributeEP13MGlxMediaList @ 22 NONAME + _ZN20GlxMpxCommandHandler8TryExitLEi @ 23 NONAME + _ZN20GlxMpxCommandHandlerC2Ev @ 24 NONAME + _ZN20GlxMpxCommandHandlerD0Ev @ 25 NONAME + _ZN20GlxMpxCommandHandlerD1Ev @ 26 NONAME + _ZN20GlxMpxCommandHandlerD2Ev @ 27 NONAME + _ZN22GlxModelCommandHandler14executeCommandEii5QListI11QModelIndexE @ 28 NONAME + _ZN22GlxModelCommandHandlerC2Ev @ 29 NONAME + _ZN22GlxModelCommandHandlerD0Ev @ 30 NONAME + _ZN22GlxModelCommandHandlerD1Ev @ 31 NONAME + _ZN22GlxModelCommandHandlerD2Ev @ 32 NONAME + _ZNK20GlxMpxCommandHandler13ProgressTextLEv @ 33 NONAME + _ZNK20GlxMpxCommandHandler15CompletionNoteLEv @ 34 NONAME + _ZNK20GlxMpxCommandHandler15CompletionTextLEv @ 35 NONAME + _ZNK20GlxMpxCommandHandler17ConfirmationNoteLER13MGlxMediaList @ 36 NONAME + _ZNK20GlxMpxCommandHandler17ConfirmationTextLEb @ 37 NONAME + _ZNK20GlxMpxCommandHandler23ConfirmationNoteSingleLER13MGlxMediaList @ 38 NONAME + _ZNK20GlxMpxCommandHandler25ConfirmationNoteMultipleLER13MGlxMediaList @ 39 NONAME + _ZTI17GlxCommandHandler @ 40 NONAME + _ZTI20GlxMpxCommandHandler @ 41 NONAME + _ZTI22GlxModelCommandHandler @ 42 NONAME + _ZTV17GlxCommandHandler @ 43 NONAME + _ZTV20GlxMpxCommandHandler @ 44 NONAME + _ZTV22GlxModelCommandHandler @ 45 NONAME + _ZThn8_N20GlxMpxCommandHandler11HandleErrorEi @ 46 NONAME + _ZThn8_N20GlxMpxCommandHandler12HandleMediaLEiP13MGlxMediaList @ 47 NONAME + _ZThn8_N20GlxMpxCommandHandler14HandleMessageLERK9CMPXMediaP13MGlxMediaList @ 48 NONAME + _ZThn8_N20GlxMpxCommandHandler16HandleItemAddedLEiiP13MGlxMediaList @ 49 NONAME + _ZThn8_N20GlxMpxCommandHandler18HandleItemRemovedLEiiP13MGlxMediaList @ 50 NONAME + _ZThn8_N20GlxMpxCommandHandler19HandleFocusChangedLEN12NGlxListDefs16TFocusChangeTypeEiiP13MGlxMediaList @ 51 NONAME + _ZThn8_N20GlxMpxCommandHandler19HandleItemModifiedLERK6RArrayIiEP13MGlxMediaList @ 52 NONAME + _ZThn8_N20GlxMpxCommandHandler19HandleItemSelectedLEiiP13MGlxMediaList @ 53 NONAME + _ZThn8_N20GlxMpxCommandHandler22HandleCommandCompleteLEPvP9CMPXMediaiP13MGlxMediaList @ 54 NONAME + _ZThn8_N20GlxMpxCommandHandler26HandleAttributesAvailableLEiRK6RArrayI13TMPXAttributeEP13MGlxMediaList @ 55 NONAME diff -r 74c9f037fd5d -r 99ad1390cd33 ui/commandhandlers/eabi/glxcommoncommandhandlersu.def --- a/ui/commandhandlers/eabi/glxcommoncommandhandlersu.def Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/commandhandlers/eabi/glxcommoncommandhandlersu.def Fri Apr 16 14:58:46 2010 +0300 @@ -1,58 +1,87 @@ EXPORTS - _ZN23GlxCommandHandlerDeleteC1Ev @ 1 NONAME - _ZN23GlxCommandHandlerDeleteC2Ev @ 2 NONAME - _ZN23GlxCommandHandlerDeleteD0Ev @ 3 NONAME - _ZN23GlxCommandHandlerDeleteD1Ev @ 4 NONAME - _ZN23GlxCommandHandlerDeleteD2Ev @ 5 NONAME - _ZN25GlxCommandHandlerNewMedia11qt_metacallEN11QMetaObject4CallEiPPv @ 6 NONAME - _ZN25GlxCommandHandlerNewMedia11qt_metacastEPKc @ 7 NONAME - _ZN25GlxCommandHandlerNewMedia16HandleItemAddedLEiiP13MGlxMediaList @ 8 NONAME - _ZN25GlxCommandHandlerNewMedia16staticMetaObjectE @ 9 NONAME DATA 16 - _ZN25GlxCommandHandlerNewMedia19getStaticMetaObjectEv @ 10 NONAME - _ZN25GlxCommandHandlerNewMedia24DoHandleCommandCompleteLEPvP9CMPXMediaiP13MGlxMediaList @ 11 NONAME - _ZN25GlxCommandHandlerNewMedia9ExecuteLDER11TGlxMediaId @ 12 NONAME - _ZN25GlxCommandHandlerNewMediaC1Ev @ 13 NONAME - _ZN25GlxCommandHandlerNewMediaC2Ev @ 14 NONAME - _ZN25GlxCommandHandlerNewMediaD0Ev @ 15 NONAME - _ZN25GlxCommandHandlerNewMediaD1Ev @ 16 NONAME - _ZN25GlxCommandHandlerNewMediaD2Ev @ 17 NONAME - _ZN31GlxCommandHandlerAddToContainer11qt_metacallEN11QMetaObject4CallEiPPv @ 18 NONAME - _ZN31GlxCommandHandlerAddToContainer11qt_metacastEPKc @ 19 NONAME - _ZN31GlxCommandHandlerAddToContainer14createNewMediaEv @ 20 NONAME - _ZN31GlxCommandHandlerAddToContainer15iSelectionCountE @ 21 NONAME DATA 4 - _ZN31GlxCommandHandlerAddToContainer16staticMetaObjectE @ 22 NONAME DATA 16 - _ZN31GlxCommandHandlerAddToContainer19getStaticMetaObjectEv @ 23 NONAME - _ZN31GlxCommandHandlerAddToContainerC1Ev @ 24 NONAME - _ZN31GlxCommandHandlerAddToContainerC2Ev @ 25 NONAME - _ZN31GlxCommandHandlerAddToContainerD0Ev @ 26 NONAME - _ZN31GlxCommandHandlerAddToContainerD1Ev @ 27 NONAME - _ZN31GlxCommandHandlerAddToContainerD2Ev @ 28 NONAME - _ZNK23GlxCommandHandlerDelete14CreateCommandLEiR13MGlxMediaListRi @ 29 NONAME - _ZNK25GlxCommandHandlerNewMedia10metaObjectEv @ 30 NONAME - _ZNK25GlxCommandHandlerNewMedia14CreateCommandLEiR13MGlxMediaListRi @ 31 NONAME - _ZNK31GlxCommandHandlerAddToContainer10metaObjectEv @ 32 NONAME - _ZNK31GlxCommandHandlerAddToContainer14CreateCommandLEiR13MGlxMediaListRi @ 33 NONAME - _ZNK31GlxCommandHandlerAddToContainer16GetSelectionListEP13GlxAlbumModelPb @ 34 NONAME - _ZTI23GlxCommandHandlerDelete @ 35 NONAME - _ZTI25GlxCommandHandlerNewMedia @ 36 NONAME - _ZTI31GlxCommandHandlerAddToContainer @ 37 NONAME - _ZTV23GlxCommandHandlerDelete @ 38 NONAME - _ZTV25GlxCommandHandlerNewMedia @ 39 NONAME - _ZTV31GlxCommandHandlerAddToContainer @ 40 NONAME - _ZThn8_N25GlxCommandHandlerNewMedia16HandleItemAddedLEiiP13MGlxMediaList @ 41 NONAME - _ZN23GlxCommandHandlerRotate12RotateImageLE4TBufILi256EE @ 42 NONAME - _ZN23GlxCommandHandlerRotate17DestroyExifWriterEv @ 43 NONAME - _ZN23GlxCommandHandlerRotate17DoExecuteCommandLEiR13MGlxMediaListRi @ 44 NONAME - _ZN23GlxCommandHandlerRotate20SetImageOrientationLEt @ 45 NONAME - _ZN23GlxCommandHandlerRotate21InitializeExifWriterLE4TBufILi256EE @ 46 NONAME - _ZN23GlxCommandHandlerRotate21ReadImageOrientationLEv @ 47 NONAME - _ZN23GlxCommandHandlerRotate26CalculateFinalOrientationLEt @ 48 NONAME - _ZN23GlxCommandHandlerRotateC1Ev @ 49 NONAME - _ZN23GlxCommandHandlerRotateC2Ev @ 50 NONAME - _ZN23GlxCommandHandlerRotateD0Ev @ 51 NONAME - _ZN23GlxCommandHandlerRotateD1Ev @ 52 NONAME - _ZN23GlxCommandHandlerRotateD2Ev @ 53 NONAME - _ZNK23GlxCommandHandlerRotate14CreateCommandLEiR13MGlxMediaListRi @ 54 NONAME - _ZTI23GlxCommandHandlerRotate @ 55 NONAME - _ZTV23GlxCommandHandlerRotate @ 56 NONAME + _ZN21GlxCommandHandlerSendC1Ev @ 1 NONAME + _ZN21GlxCommandHandlerSendC2Ev @ 2 NONAME + _ZN21GlxCommandHandlerSendD0Ev @ 3 NONAME + _ZN21GlxCommandHandlerSendD1Ev @ 4 NONAME + _ZN21GlxCommandHandlerSendD2Ev @ 5 NONAME + _ZN23GlxCommandHandlerDeleteC1Ev @ 6 NONAME + _ZN23GlxCommandHandlerDeleteC2Ev @ 7 NONAME + _ZN23GlxCommandHandlerDeleteD0Ev @ 8 NONAME + _ZN23GlxCommandHandlerDeleteD1Ev @ 9 NONAME + _ZN23GlxCommandHandlerDeleteD2Ev @ 10 NONAME + _ZN23GlxCommandHandlerRotate12RotateImageLE4TBufILi256EE @ 11 NONAME + _ZN23GlxCommandHandlerRotate17DestroyExifWriterEv @ 12 NONAME + _ZN23GlxCommandHandlerRotate17DoExecuteCommandLEiR13MGlxMediaListRi @ 13 NONAME + _ZN23GlxCommandHandlerRotate20SetImageOrientationLEt @ 14 NONAME + _ZN23GlxCommandHandlerRotate21InitializeExifWriterLE4TBufILi256EE @ 15 NONAME + _ZN23GlxCommandHandlerRotate21ReadImageOrientationLEv @ 16 NONAME + _ZN23GlxCommandHandlerRotate26CalculateFinalOrientationLEt @ 17 NONAME + _ZN23GlxCommandHandlerRotateC1Ev @ 18 NONAME + _ZN23GlxCommandHandlerRotateC2Ev @ 19 NONAME + _ZN23GlxCommandHandlerRotateD0Ev @ 20 NONAME + _ZN23GlxCommandHandlerRotateD1Ev @ 21 NONAME + _ZN23GlxCommandHandlerRotateD2Ev @ 22 NONAME + _ZN25GlxCommandHandlerNewMedia11HandleErrorEi @ 23 NONAME + _ZN25GlxCommandHandlerNewMedia11qt_metacallEN11QMetaObject4CallEiPPv @ 24 NONAME + _ZN25GlxCommandHandlerNewMedia11qt_metacastEPKc @ 25 NONAME + _ZN25GlxCommandHandlerNewMedia12HandleErrorLEi @ 26 NONAME + _ZN25GlxCommandHandlerNewMedia16HandleItemAddedLEiiP13MGlxMediaList @ 27 NONAME + _ZN25GlxCommandHandlerNewMedia16staticMetaObjectE @ 28 NONAME DATA 16 + _ZN25GlxCommandHandlerNewMedia19getStaticMetaObjectEv @ 29 NONAME + _ZN25GlxCommandHandlerNewMedia24DoHandleCommandCompleteLEPvP9CMPXMediaiP13MGlxMediaList @ 30 NONAME + _ZN25GlxCommandHandlerNewMedia9ExecuteLDER11TGlxMediaId @ 31 NONAME + _ZN25GlxCommandHandlerNewMediaC1Ev @ 32 NONAME + _ZN25GlxCommandHandlerNewMediaC2Ev @ 33 NONAME + _ZN25GlxCommandHandlerNewMediaD0Ev @ 34 NONAME + _ZN25GlxCommandHandlerNewMediaD1Ev @ 35 NONAME + _ZN25GlxCommandHandlerNewMediaD2Ev @ 36 NONAME + _ZN27GlxCommandHandlerRemoveFromC1Ev @ 37 NONAME + _ZN27GlxCommandHandlerRemoveFromC2Ev @ 38 NONAME + _ZN27GlxCommandHandlerRemoveFromD0Ev @ 39 NONAME + _ZN27GlxCommandHandlerRemoveFromD1Ev @ 40 NONAME + _ZN27GlxCommandHandlerRemoveFromD2Ev @ 41 NONAME + _ZN31GlxCommandHandlerAddToContainer11qt_metacallEN11QMetaObject4CallEiPPv @ 42 NONAME + _ZN31GlxCommandHandlerAddToContainer11qt_metacastEPKc @ 43 NONAME + _ZN31GlxCommandHandlerAddToContainer14createNewMediaEv @ 44 NONAME + _ZN31GlxCommandHandlerAddToContainer15iSelectionCountE @ 45 NONAME DATA 4 + _ZN31GlxCommandHandlerAddToContainer16staticMetaObjectE @ 46 NONAME DATA 16 + _ZN31GlxCommandHandlerAddToContainer19getStaticMetaObjectEv @ 47 NONAME + _ZN31GlxCommandHandlerAddToContainerC1Ev @ 48 NONAME + _ZN31GlxCommandHandlerAddToContainerC2Ev @ 49 NONAME + _ZN31GlxCommandHandlerAddToContainerD0Ev @ 50 NONAME + _ZN31GlxCommandHandlerAddToContainerD1Ev @ 51 NONAME + _ZN31GlxCommandHandlerAddToContainerD2Ev @ 52 NONAME + _ZNK21GlxCommandHandlerSend18doHandleUserActionEP13GlxMediaModel5QListI11QModelIndexE @ 53 NONAME + _ZNK23GlxCommandHandlerDelete13ProgressTextLEv @ 54 NONAME + _ZNK23GlxCommandHandlerDelete14CreateCommandLEiR13MGlxMediaListRi @ 55 NONAME + _ZNK23GlxCommandHandlerDelete15CompletionTextLEv @ 56 NONAME + _ZNK23GlxCommandHandlerDelete17ConfirmationTextLEb @ 57 NONAME + _ZNK23GlxCommandHandlerRotate14CreateCommandLEiR13MGlxMediaListRi @ 58 NONAME + _ZNK25GlxCommandHandlerNewMedia10metaObjectEv @ 59 NONAME + _ZNK25GlxCommandHandlerNewMedia13ProgressTextLEv @ 60 NONAME + _ZNK25GlxCommandHandlerNewMedia14CreateCommandLEiR13MGlxMediaListRi @ 61 NONAME + _ZNK25GlxCommandHandlerNewMedia15CompletionTextLEv @ 62 NONAME + _ZNK25GlxCommandHandlerNewMedia26GenerateNewMediaItemTitleLE7QStringR13MGlxMediaList @ 63 NONAME + _ZNK27GlxCommandHandlerRemoveFrom13ProgressTextLEv @ 64 NONAME + _ZNK27GlxCommandHandlerRemoveFrom14CreateCommandLEiR13MGlxMediaListRi @ 65 NONAME + _ZNK27GlxCommandHandlerRemoveFrom15CompletionTextLEv @ 66 NONAME + _ZNK31GlxCommandHandlerAddToContainer10metaObjectEv @ 67 NONAME + _ZNK31GlxCommandHandlerAddToContainer13ProgressTextLEv @ 68 NONAME + _ZNK31GlxCommandHandlerAddToContainer14CreateCommandLEiR13MGlxMediaListRi @ 69 NONAME + _ZNK31GlxCommandHandlerAddToContainer15CompletionTextLEv @ 70 NONAME + _ZNK31GlxCommandHandlerAddToContainer16GetSelectionListEP13GlxAlbumModelPb @ 71 NONAME + _ZTI21GlxCommandHandlerSend @ 72 NONAME + _ZTI23GlxCommandHandlerDelete @ 73 NONAME + _ZTI23GlxCommandHandlerRotate @ 74 NONAME + _ZTI25GlxCommandHandlerNewMedia @ 75 NONAME + _ZTI27GlxCommandHandlerRemoveFrom @ 76 NONAME + _ZTI31GlxCommandHandlerAddToContainer @ 77 NONAME + _ZTV21GlxCommandHandlerSend @ 78 NONAME + _ZTV23GlxCommandHandlerDelete @ 79 NONAME + _ZTV23GlxCommandHandlerRotate @ 80 NONAME + _ZTV25GlxCommandHandlerNewMedia @ 81 NONAME + _ZTV27GlxCommandHandlerRemoveFrom @ 82 NONAME + _ZTV31GlxCommandHandlerAddToContainer @ 83 NONAME + _ZThn8_N25GlxCommandHandlerNewMedia11HandleErrorEi @ 84 NONAME + _ZThn8_N25GlxCommandHandlerNewMedia16HandleItemAddedLEiiP13MGlxMediaList @ 85 NONAME diff -r 74c9f037fd5d -r 99ad1390cd33 ui/inc/glxcommandhandlers.hrh --- a/ui/inc/glxcommandhandlers.hrh Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/inc/glxcommandhandlers.hrh Fri Apr 16 14:58:46 2010 +0300 @@ -109,6 +109,7 @@ EGlxCmdContextAddToAlbum, EGlxCmdContextDelete, EGlxCmdContextAlbumDelete, + EGlxCmdContextSend, EGlxCmdSetupItem, EGlxCmdAiwBase = 0x6000 }; diff -r 74c9f037fd5d -r 99ad1390cd33 ui/inc/glxdocloaderdefs.h --- a/ui/inc/glxdocloaderdefs.h Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/inc/glxdocloaderdefs.h Fri Apr 16 14:58:46 2010 +0300 @@ -23,8 +23,8 @@ //FULLSCREEN VIEW #define GLXFULLSCREEN_VIEW "mGlxFullscreenView" #define GLXFULLSCREEN_COVERFLOW "mCoverFlow" -#define GLXFULLSCREEN_FLIP "mFlip" #define GLXFULLSCREEN_FILMSTRIP "mImageStrip" +#define GLXFULLSCREEN_TOOLBAR "toolBar" #define GLXFULLSCREENLSSECTION "landscape" #define GLXFULLSCREENPTSECTION "portrait" #define GLXFULLSCREENDOCMLPATH ":/data/fullscreen.docml" diff -r 74c9f037fd5d -r 99ad1390cd33 ui/inc/glxicondefs.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ui/inc/glxicondefs.h Fri Apr 16 14:58:46 2010 +0300 @@ -0,0 +1,44 @@ +/* + * 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 "Eclipse Public License v1.0" + * which accompanies this distribution, and is available + * at the URL "http://www.eclipse.org/legal/epl-v10.html". + * + * Initial Contributors: + * Nokia Corporation - initial contribution. + * + * Contributors: + * + * Description: ?Description + * + */ + + + +#ifndef GLXICONDEFS_H +#define GLXICONDEFS_H + + +//FULLSCREEN TOOLBAR +#define GLXICON_FLIP "qtg_mono_info" +#define GLXICON_SEND "qtg_mono_send" +#define GLXICON_DELETE "qtg_mono_delete" + +//GRID TOOLBAR +#define GLXICON_ALL "qtg_mono_photos_all" +#define GLXICON_ALBUMS "qtg_mono_albums" +#define GLXICON_CAMERA "qtg_mono_camera" +#define GLXICON_OVI "qtg_small_ovi" + +//CORRUPT ICON +#define GLXICON_CORRUPT "qtg_large_corrupted" + +//PLAY ICON +#define GLXICON_PLAY "qtg_mono_play" + +//DEFAULT ICON +#define GLXICON_DEFAULT "qtg_mono_camera" + +#endif /* GLXICONDEFS_H */ diff -r 74c9f037fd5d -r 99ad1390cd33 ui/inc/glxmodelparm.h --- a/ui/inc/glxmodelparm.h Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/inc/glxmodelparm.h Fri Apr 16 14:58:46 2010 +0300 @@ -21,25 +21,31 @@ #define GLXMODELPARM_H #include +#include enum { -GlxFsImageRole = Qt::UserRole + 1, -GlxContextRole, -GlxFocusIndexRole, -GlxVisualWindowIndex, -GlxUriRole, -GlxDimensionsRole, -GlxSelectedIndexRole, -GlxDateRole, -GlxFrameCount + GlxFsImageRole = Qt::UserRole + 1, //to get the fullscreen image + GlxContextRole, //to get and set the context + GlxFocusIndexRole, //to get and set the selected item index + GlxVisualWindowIndex, //to set the visual window index in media list + GlxUriRole, //to get the URI of the image + GlxDimensionsRole, + GlxSelectedIndexRole, //to get and set the seleceted item list + GlxDateRole, //to get the image created or modified date + GlxFrameCount, //to get the number of frame in an image + GlxSubStateRole, //to publish the sub state of a SM states }; class GlxModelParm { public: - GlxModelParm (qint32 collectionId = 0, qint32 depth = 0 , TGlxFilterItemType filterType = EGlxFilterItemAll ) : mCollectionId(collectionId) ,mDepth(depth) , mFilterType(filterType) + GlxModelParm (qint32 collectionId = 0, qint32 depth = 0 , TGlxFilterItemType filterType = EGlxFilterItemAll , GlxContextMode contextMode = GlxContextPtGrid ) + : mCollectionId(collectionId) , + mDepth(depth) , + mFilterType( filterType ), + mContextMode( contextMode ) { } @@ -49,10 +55,14 @@ void setDepth (qint32 depth = 0) { mDepth = depth ; } qint32 depth() { return mDepth; } TGlxFilterItemType filterType() { return mFilterType; } + void setContextMode( GlxContextMode contextMode ) { mContextMode = contextMode ; } + GlxContextMode contextMode() { return mContextMode ; } + private: qint32 mCollectionId; qint32 mDepth; TGlxFilterItemType mFilterType; + GlxContextMode mContextMode; }; diff -r 74c9f037fd5d -r 99ad1390cd33 ui/inc/glxuistd.h --- a/ui/inc/glxuistd.h Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/inc/glxuistd.h Fri Apr 16 14:58:46 2010 +0300 @@ -34,7 +34,8 @@ enum GlxContextMode { GlxContextInvalid = -1, - GlxContextGrid, + GlxContextLsGrid, + GlxContextPtGrid, GlxContextLsFs, GlxContextPtFs, //TB context check would be applied here . Please do not add any context between GlxContextLsFs and GlxContextPtFs GlxContextLsList, diff -r 74c9f037fd5d -r 99ad1390cd33 ui/inc/glxviewids.h --- a/ui/inc/glxviewids.h Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/inc/glxviewids.h Fri Apr 16 14:58:46 2010 +0300 @@ -26,4 +26,26 @@ #define GLX_SLIDESHOWVIEW_ID 0x12121215 #define GLX_DETAILSVIEW_ID 0x12121216 + +typedef enum +{ + NO_GRID_S, + ALL_ITEM_S, + ALBUM_ITEM_S, +} GridState; + +typedef enum +{ + NO_FULLSCREEN_S, + EXTERNAL_S, + IMAGEVIEWER_S +} FullScreenState; + +typedef enum +{ + NO_SLIDESHOW_S, + SLIDESHOW_GRID_ITEM_S, + SLIDESHOW_ALBUM_ITEM_S, +} SlideShowState; + #endif /* GLXVIEWIDS_H */ diff -r 74c9f037fd5d -r 99ad1390cd33 ui/uiengine/medialists/bwins/glxmedialistsu.def --- a/ui/uiengine/medialists/bwins/glxmedialistsu.def Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/uiengine/medialists/bwins/glxmedialistsu.def Fri Apr 16 14:58:46 2010 +0300 @@ -13,109 +13,115 @@ ?GetSize@TGlxMedia@@QBEHAAH@Z @ 12 NONAME ; int TGlxMedia::GetSize(int &) const ??ETGlxWindowIterator@@QAEHH@Z @ 13 NONAME ; int TGlxWindowIterator::operator++(int) ?__DbgTestInvariant@CGlxListWindow@@QBEXXZ @ 14 NONAME ; void CGlxListWindow::__DbgTestInvariant(void) const - ?InstanceL@MGlxCache@@SAPAV1@XZ @ 15 NONAME ; class MGlxCache * MGlxCache::InstanceL(void) - ?Reset@CGlxMedia@@QAEXXZ @ 16 NONAME ; void CGlxMedia::Reset(void) - ?AddObjects@CGlxListWindow@@QAEXHHHH@Z @ 17 NONAME ; void CGlxListWindow::AddObjects(int, int, int, int) - ??0CGlxThumbnailContext@@QAE@PAVMGlxMediaListIterator@@@Z @ 18 NONAME ; CGlxThumbnailContext::CGlxThumbnailContext(class MGlxMediaListIterator *) - ?SetRangeOffsetsL@CGlxListWindow@@QAEXHHHH@Z @ 19 NONAME ; void CGlxListWindow::SetRangeOffsetsL(int, int, int, int) - ??0TGlxFromFocusOutwardBlockyIterator@@QAE@XZ @ 20 NONAME ; TGlxFromFocusOutwardBlockyIterator::TGlxFromFocusOutwardBlockyIterator(void) - ?UnmarkAllL@MGlxMediaList@@SAXAAV1@@Z @ 21 NONAME ; void MGlxMediaList::UnmarkAllL(class MGlxMediaList &) - ?IdSpaceId@TGlxMedia@@QBE?AV?$TGlxId@VTGlxIdSpaceIdBase@@@@XZ @ 22 NONAME ; class TGlxId TGlxMedia::IdSpaceId(void) const - ??1TGlxSelectionIterator@@QAE@XZ @ 23 NONAME ; TGlxSelectionIterator::~TGlxSelectionIterator(void) - ?SetGranularity@CGlxAttributeContext@@QAEXI@Z @ 24 NONAME ; void CGlxAttributeContext::SetGranularity(unsigned int) - ??0TGlxSelectionIterator@@QAE@XZ @ 25 NONAME ; TGlxSelectionIterator::TGlxSelectionIterator(void) - ??0TGlxFromFocusOutwardIterator@@QAE@XZ @ 26 NONAME ; TGlxFromFocusOutwardIterator::TGlxFromFocusOutwardIterator(void) - ?SubTitle@TGlxMedia@@QBEABVTDesC16@@XZ @ 27 NONAME ; class TDesC16 const & TGlxMedia::SubTitle(void) const - ??1TGlxFromManualIndexOutwardBlockyIterator@@QAE@XZ @ 28 NONAME ; TGlxFromManualIndexOutwardBlockyIterator::~TGlxFromManualIndexOutwardBlockyIterator(void) - ?GetFrameCount@TGlxMedia@@QBEHAAH@Z @ 29 NONAME ; int TGlxMedia::GetFrameCount(int &) const - ??0TGlxFromManualIndexBlockyIterator@@QAE@XZ @ 30 NONAME ; TGlxFromManualIndexBlockyIterator::TGlxFromManualIndexBlockyIterator(void) - ?SetRangeOffsets@TGlxFromIndexOutwardBlockyIterator@@QAEXHH@Z @ 31 NONAME ; void TGlxFromIndexOutwardBlockyIterator::SetRangeOffsets(int, int) - ?SetFocusIndex@CGlxListWindow@@QAEXH@Z @ 32 NONAME ; void CGlxListWindow::SetFocusIndex(int) - ??1TGlxFromFocusOutwardBlockyIterator@@QAE@XZ @ 33 NONAME ; TGlxFromFocusOutwardBlockyIterator::~TGlxFromFocusOutwardBlockyIterator(void) - ??1CGlxDefaultThumbnailContext@@UAE@XZ @ 34 NONAME ; CGlxDefaultThumbnailContext::~CGlxDefaultThumbnailContext(void) - ?IsFullThumbnail@GlxThumbnailUtility@@SAHABVTMPXAttribute@@@Z @ 35 NONAME ; int GlxThumbnailUtility::IsFullThumbnail(class TMPXAttribute const &) - ??0TGlxFromIndexOutwardBlockyIterator@@QAE@ABVMGlxIndex@0@@Z @ 36 NONAME ; TGlxFromIndexOutwardBlockyIterator::TGlxFromIndexOutwardBlockyIterator(class TGlxFromIndexOutwardBlockyIterator::MGlxIndex const &) - ?ConstructL@CGlxListWindow@@QAEXXZ @ 37 NONAME ; void CGlxListWindow::ConstructL(void) - ?SetRange@TGlxSequentialIterator@@QAEXH@Z @ 38 NONAME ; void TGlxSequentialIterator::SetRange(int) - ?GetStaticItemCommand@TGlxMedia@@QBEHAAH@Z @ 39 NONAME ; int TGlxMedia::GetStaticItemCommand(int &) const - ?SetRangeOffsets@TGlxFromManualIndexBlockyIterator@@QAEXHH@Z @ 40 NONAME ; void TGlxFromManualIndexBlockyIterator::SetRangeOffsets(int, int) - ?SetIndex@TGlxFromManualIndexOutwardBlockyIterator@@QAEXH@Z @ 41 NONAME ; void TGlxFromManualIndexOutwardBlockyIterator::SetIndex(int) - ?HandleModified@CGlxMedia@@QAEXABV?$RArray@VTMPXAttribute@@@@@Z @ 42 NONAME ; void CGlxMedia::HandleModified(class RArray const &) - ?GetLastModifiedDate@TGlxMedia@@QBEHAAVTTime@@@Z @ 43 NONAME ; int TGlxMedia::GetLastModifiedDate(class TTime &) const - ?GetContainedItemCount@TGlxMedia@@QBEHAAH@Z @ 44 NONAME ; int TGlxMedia::GetContainedItemCount(int &) const - ?SetRange@TGlxSelectionIterator@@QAEXH@Z @ 45 NONAME ; void TGlxSelectionIterator::SetRange(int) - ?GetDimensions@TGlxMedia@@QBEHAAVTSize@@@Z @ 46 NONAME ; int TGlxMedia::GetDimensions(class TSize &) const - ?GetDate@TGlxMedia@@QBEHAAVTTime@@@Z @ 47 NONAME ; int TGlxMedia::GetDate(class TTime &) const - ?GetValueText@CGlxMedia@@QBEHAAVTPtrC16@@ABVTMPXAttribute@@@Z @ 48 NONAME ; int CGlxMedia::GetValueText(class TPtrC16 &, class TMPXAttribute const &) const - ?SetTextValueL@CGlxMedia@@QAEXABVTMPXAttribute@@ABVTDesC16@@@Z @ 49 NONAME ; void CGlxMedia::SetTextValueL(class TMPXAttribute const &, class TDesC16 const &) - ?SetDefaultSpec@CGlxAttributeContext@@QAEXHH@Z @ 50 NONAME ; void CGlxAttributeContext::SetDefaultSpec(int, int) - ?IsStatic@TGlxMedia@@QBEHXZ @ 51 NONAME ; int TGlxMedia::IsStatic(void) const - ??0CGlxListWindow@@QAE@AAVMGlxWindowObjectFactory@@@Z @ 52 NONAME ; CGlxListWindow::CGlxListWindow(class MGlxWindowObjectFactory &) - ?AddSpecForItemL@CGlxThumbnailContext@@QAEXHHH@Z @ 53 NONAME ; void CGlxThumbnailContext::AddSpecForItemL(int, int, int) - ??1CGlxDefaultAttributeContext@@UAE@XZ @ 54 NONAME ; CGlxDefaultAttributeContext::~CGlxDefaultAttributeContext(void) - ?ThumbnailAttribute@TGlxMedia@@QBEPBVCGlxThumbnailAttribute@@AAVTMPXAttribute@@@Z @ 55 NONAME ; class CGlxThumbnailAttribute const * TGlxMedia::ThumbnailAttribute(class TMPXAttribute &) const - ??1TGlxFirstThenLastIterator@@QAE@XZ @ 56 NONAME ; TGlxFirstThenLastIterator::~TGlxFirstThenLastIterator(void) - ?Title@TGlxMedia@@QBEABVTDesC16@@XZ @ 57 NONAME ; class TDesC16 const & TGlxMedia::Title(void) const - ??ETGlxSelectionIterator@@UAEHH@Z @ 58 NONAME ; int TGlxSelectionIterator::operator++(int) - ?AddAttributeL@CGlxAttributeContext@@QAEXABVTMPXAttribute@@@Z @ 59 NONAME ; void CGlxAttributeContext::AddAttributeL(class TMPXAttribute const &) - ?SetRangeOffsets@CGlxDefaultThumbnailContext@@QAEXHH@Z @ 60 NONAME ; void CGlxDefaultThumbnailContext::SetRangeOffsets(int, int) - ?__DbgTestInvariant@CGlxStaticItemList@@QBEXXZ @ 61 NONAME ; void CGlxStaticItemList::__DbgTestInvariant(void) const - ?GetDuration@TGlxMedia@@QBEHAAM@Z @ 62 NONAME ; int TGlxMedia::GetDuration(float &) const - ?DeleteAttribute@CGlxMedia@@QAEXABVTMPXAttribute@@@Z @ 63 NONAME ; void CGlxMedia::DeleteAttribute(class TMPXAttribute const &) - ?InstanceL@MGlxMediaList@@SAPAV1@ABVCMPXCollectionPath@@ABV?$TGlxId@VTGlxIdHierarchyBase@@@@PAVCMPXMedia@@@Z @ 64 NONAME ; class MGlxMediaList * MGlxMediaList::InstanceL(class CMPXCollectionPath const &, class TGlxId const &, class CMPXMedia *) - ?SetCObjectValueL@CGlxMedia@@QAEXABVTMPXAttribute@@PAVCBase@@@Z @ 65 NONAME ; void CGlxMedia::SetCObjectValueL(class TMPXAttribute const &, class CBase *) - ?RemoveObjects@CGlxListWindow@@QAEXHHHH@Z @ 66 NONAME ; void CGlxListWindow::RemoveObjects(int, int, int, int) - ?Iterator@CGlxListWindow@@QBE?AVTGlxWindowIterator@@XZ @ 67 NONAME ; class TGlxWindowIterator CGlxListWindow::Iterator(void) const - ?Category@TGlxMedia@@QBE?AW4TMPXGeneralCategory@@XZ @ 68 NONAME ; enum TMPXGeneralCategory TGlxMedia::Category(void) const - ??0CGlxAttributeContext@@QAE@PAVMGlxMediaListIterator@@@Z @ 69 NONAME ; CGlxAttributeContext::CGlxAttributeContext(class MGlxMediaListIterator *) - ?GetIconInfo@TGlxMedia@@QBEHAAUTIconInfo@@@Z @ 70 NONAME ; int TGlxMedia::GetIconInfo(struct TIconInfo &) const - ?__DbgTestInvariant@CGlxItemList@@QBEXXZ @ 71 NONAME ; void CGlxItemList::__DbgTestInvariant(void) const - ?AddObjects@CGlxListWindow@@QAEXHH@Z @ 72 NONAME ; void CGlxListWindow::AddObjects(int, int) - ?Comment@TGlxMedia@@QBEABVTDesC16@@XZ @ 73 NONAME ; class TDesC16 const & TGlxMedia::Comment(void) const - ?HasAttributeErrorL@GlxErrorManager@@SAHPBVCGlxMedia@@ABVTMPXAttribute@@@Z @ 74 NONAME ; int GlxErrorManager::HasAttributeErrorL(class CGlxMedia const *, class TMPXAttribute const &) - ??0TGlxSequentialIterator@@QAE@XZ @ 75 NONAME ; TGlxSequentialIterator::TGlxSequentialIterator(void) - ?AttributeCount@CGlxAttributeContext@@QAEHXZ @ 76 NONAME ; int CGlxAttributeContext::AttributeCount(void) - ?GetDrmValidity@TGlxMedia@@QBEHAAW4TGlxMediaGeneralRightsValidity@@@Z @ 77 NONAME ; int TGlxMedia::GetDrmValidity(enum TGlxMediaGeneralRightsValidity &) const - ?__DbgTestInvariant@CGlxNavigableList@@QBEXXZ @ 78 NONAME ; void CGlxNavigableList::__DbgTestInvariant(void) const - ?SetFocusIndex@CGlxListWindow@@QAEXHH@Z @ 79 NONAME ; void CGlxListWindow::SetFocusIndex(int, int) - ?SetValueL@CGlxMedia@@QAEXABVTMPXAttribute@@PAXW4TMPXAttributeType@@@Z @ 80 NONAME ; void CGlxMedia::SetValueL(class TMPXAttribute const &, void *, enum TMPXAttributeType) - ?ValueText@CGlxMedia@@QBEABVTDesC16@@ABVTMPXAttribute@@@Z @ 81 NONAME ; class TDesC16 const & CGlxMedia::ValueText(class TMPXAttribute const &) const - ??0CGlxMedia@@QAE@ABVTGlxMediaId@@@Z @ 82 NONAME ; CGlxMedia::CGlxMedia(class TGlxMediaId const &) - ?DeleteLocationAttribute@TGlxMedia@@QAEXXZ @ 83 NONAME ; void TGlxMedia::DeleteLocationAttribute(void) - ?GetClosestThumbnail@TGlxMedia@@QBEHAAVTMPXAttribute@@ABVTSize@@H@Z @ 84 NONAME ; int TGlxMedia::GetClosestThumbnail(class TMPXAttribute &, class TSize const &, int) const - ??1CGlxMedia@@UAE@XZ @ 85 NONAME ; CGlxMedia::~CGlxMedia(void) - ?__DbgTestInvariant@CGlxMedia@@QBEXXZ @ 86 NONAME ; void CGlxMedia::__DbgTestInvariant(void) const - ?IsDrmProtected@TGlxMedia@@QBEHXZ @ 87 NONAME ; int TGlxMedia::IsDrmProtected(void) const - ??1CGlxThumbnailContext@@UAE@XZ @ 88 NONAME ; CGlxThumbnailContext::~CGlxThumbnailContext(void) - ?GetDrmProtected@TGlxMedia@@QBEHAAH@Z @ 89 NONAME ; int TGlxMedia::GetDrmProtected(int &) const - ?GetSystemItem@TGlxMedia@@QBEHAAH@Z @ 90 NONAME ; int TGlxMedia::GetSystemItem(int &) const - ?RemoveObjects@CGlxListWindow@@QAEXHH@Z @ 91 NONAME ; void CGlxListWindow::RemoveObjects(int, int) - ?Close@TGlxFetchContextRemover@@QAEXXZ @ 92 NONAME ; void TGlxFetchContextRemover::Close(void) - ?At@CGlxListWindow@@QBEPBVCBase@@H@Z @ 93 NONAME ; class CBase const * CGlxListWindow::At(int) const - ?HasAttributeErrorL@GlxErrorManager@@SAHPBVCGlxMedia@@H@Z @ 94 NONAME ; int GlxErrorManager::HasAttributeErrorL(class CGlxMedia const *, int) - ?At@CGlxListWindow@@QAEPAVCBase@@H@Z @ 95 NONAME ; class CBase * CGlxListWindow::At(int) - ??1TGlxFromManualIndexBlockyIterator@@QAE@XZ @ 96 NONAME ; TGlxFromManualIndexBlockyIterator::~TGlxFromManualIndexBlockyIterator(void) - ?RemoveAttribute@CGlxAttributeContext@@QAEXABVTMPXAttribute@@@Z @ 97 NONAME ; void CGlxAttributeContext::RemoveAttribute(class TMPXAttribute const &) - ??1TGlxFromIndexOutwardBlockyIterator@@QAE@XZ @ 98 NONAME ; TGlxFromIndexOutwardBlockyIterator::~TGlxFromIndexOutwardBlockyIterator(void) - ?ClosestThumbnail@GlxThumbnailUtility@@SAHABVTSize@@ABVCGlxMedia@@H@Z @ 99 NONAME ; int GlxThumbnailUtility::ClosestThumbnail(class TSize const &, class CGlxMedia const &, int) - ??0TGlxFromManualIndexOutwardBlockyIterator@@QAE@XZ @ 100 NONAME ; TGlxFromManualIndexOutwardBlockyIterator::TGlxFromManualIndexOutwardBlockyIterator(void) - ?Cleanup@CGlxListWindow@@QAEXXZ @ 101 NONAME ; void CGlxListWindow::Cleanup(void) - ??1TGlxExclusionIterator@@QAE@XZ @ 102 NONAME ; TGlxExclusionIterator::~TGlxExclusionIterator(void) - ??1TGlxFetchContextRemover@@QAE@XZ @ 103 NONAME ; TGlxFetchContextRemover::~TGlxFetchContextRemover(void) - ?SetDefaultSpec@CGlxThumbnailContext@@QAEXHH@Z @ 104 NONAME ; void CGlxThumbnailContext::SetDefaultSpec(int, int) - ??0TGlxSpecificIdIterator@@QAE@ABV?$TGlxId@VTGlxIdSpaceIdBase@@@@VTGlxMediaId@@@Z @ 105 NONAME ; TGlxSpecificIdIterator::TGlxSpecificIdIterator(class TGlxId const &, class TGlxMediaId) - ?GetSlideshowPlayableContainedItemCount@TGlxMedia@@QBEHAAH@Z @ 106 NONAME ; int TGlxMedia::GetSlideshowPlayableContainedItemCount(int &) const - ?MatchById@TGlxMedia@@SAHABV1@0@Z @ 107 NONAME ; int TGlxMedia::MatchById(class TGlxMedia const &, class TGlxMedia const &) - ?SetRangeOffsetsL@CGlxListWindow@@QAEXHH@Z @ 108 NONAME ; void CGlxListWindow::SetRangeOffsetsL(int, int) - ?MimeType@TGlxMedia@@QBEABVTDesC16@@XZ @ 109 NONAME ; class TDesC16 const & TGlxMedia::MimeType(void) const - ?Uri@TGlxMedia@@QBEABVTDesC16@@XZ @ 110 NONAME ; class TDesC16 const & TGlxMedia::Uri(void) const - ??0TGlxFirstThenLastIterator@@QAE@XZ @ 111 NONAME ; TGlxFirstThenLastIterator::TGlxFirstThenLastIterator(void) - ??1CGlxAttributeContext@@UAE@XZ @ 112 NONAME ; CGlxAttributeContext::~CGlxAttributeContext(void) - ?SetRangeOffsets@CGlxDefaultAttributeContext@@QAEXHH@Z @ 113 NONAME ; void CGlxDefaultAttributeContext::SetRangeOffsets(int, int) - ?ValueCObject@CGlxMedia@@QBEPBVCBase@@ABVTMPXAttribute@@@Z @ 114 NONAME ; class CBase const * CGlxMedia::ValueCObject(class TMPXAttribute const &) const - ?GetCoordinate@TGlxMedia@@QBEHAAVTCoordinate@@@Z @ 115 NONAME ; int TGlxMedia::GetCoordinate(class TCoordinate &) const - ?NewL@CGlxDefaultThumbnailContext@@SAPAV1@XZ @ 116 NONAME ; class CGlxDefaultThumbnailContext * CGlxDefaultThumbnailContext::NewL(void) - ?IsSlideShowPlayableContent@TGlxMedia@@QBEHXZ @ 117 NONAME ; int TGlxMedia::IsSlideShowPlayableContent(void) const - ??1TGlxFromFocusOutwardIterator@@QAE@XZ @ 118 NONAME ; TGlxFromFocusOutwardIterator::~TGlxFromFocusOutwardIterator(void) - ?InRange@TGlxSelectionIterator@@UBEHH@Z @ 119 NONAME ; int TGlxSelectionIterator::InRange(int) const + ?NewL@CGlxDefaultListAttributeContext@@SAPAV1@XZ @ 15 NONAME ; class CGlxDefaultListAttributeContext * CGlxDefaultListAttributeContext::NewL(void) + ?InstanceL@MGlxCache@@SAPAV1@XZ @ 16 NONAME ; class MGlxCache * MGlxCache::InstanceL(void) + ?Reset@CGlxMedia@@QAEXXZ @ 17 NONAME ; void CGlxMedia::Reset(void) + ?AddObjects@CGlxListWindow@@QAEXHHHH@Z @ 18 NONAME ; void CGlxListWindow::AddObjects(int, int, int, int) + ??0CGlxThumbnailContext@@QAE@PAVMGlxMediaListIterator@@@Z @ 19 NONAME ; CGlxThumbnailContext::CGlxThumbnailContext(class MGlxMediaListIterator *) + ?SetRangeOffsetsL@CGlxListWindow@@QAEXHHHH@Z @ 20 NONAME ; void CGlxListWindow::SetRangeOffsetsL(int, int, int, int) + ??0TGlxFromFocusOutwardBlockyIterator@@QAE@XZ @ 21 NONAME ; TGlxFromFocusOutwardBlockyIterator::TGlxFromFocusOutwardBlockyIterator(void) + ?UnmarkAllL@MGlxMediaList@@SAXAAV1@@Z @ 22 NONAME ; void MGlxMediaList::UnmarkAllL(class MGlxMediaList &) + ?IdSpaceId@TGlxMedia@@QBE?AV?$TGlxId@VTGlxIdSpaceIdBase@@@@XZ @ 23 NONAME ; class TGlxId TGlxMedia::IdSpaceId(void) const + ??1TGlxSelectionIterator@@QAE@XZ @ 24 NONAME ; TGlxSelectionIterator::~TGlxSelectionIterator(void) + ?SetGranularity@CGlxAttributeContext@@QAEXI@Z @ 25 NONAME ; void CGlxAttributeContext::SetGranularity(unsigned int) + ??0TGlxSelectionIterator@@QAE@XZ @ 26 NONAME ; TGlxSelectionIterator::TGlxSelectionIterator(void) + ??0TGlxFromFocusOutwardIterator@@QAE@XZ @ 27 NONAME ; TGlxFromFocusOutwardIterator::TGlxFromFocusOutwardIterator(void) + ?SubTitle@TGlxMedia@@QBEABVTDesC16@@XZ @ 28 NONAME ; class TDesC16 const & TGlxMedia::SubTitle(void) const + ??1TGlxFromManualIndexOutwardBlockyIterator@@QAE@XZ @ 29 NONAME ; TGlxFromManualIndexOutwardBlockyIterator::~TGlxFromManualIndexOutwardBlockyIterator(void) + ?GetFrameCount@TGlxMedia@@QBEHAAH@Z @ 30 NONAME ; int TGlxMedia::GetFrameCount(int &) const + ??0TGlxFromManualIndexBlockyIterator@@QAE@XZ @ 31 NONAME ; TGlxFromManualIndexBlockyIterator::TGlxFromManualIndexBlockyIterator(void) + ?SetRangeOffsets@TGlxFromIndexOutwardBlockyIterator@@QAEXHH@Z @ 32 NONAME ; void TGlxFromIndexOutwardBlockyIterator::SetRangeOffsets(int, int) + ?SetFocusIndex@CGlxListWindow@@QAEXH@Z @ 33 NONAME ; void CGlxListWindow::SetFocusIndex(int) + ??1TGlxFromFocusOutwardBlockyIterator@@QAE@XZ @ 34 NONAME ; TGlxFromFocusOutwardBlockyIterator::~TGlxFromFocusOutwardBlockyIterator(void) + ??1CGlxDefaultThumbnailContext@@UAE@XZ @ 35 NONAME ; CGlxDefaultThumbnailContext::~CGlxDefaultThumbnailContext(void) + ?IsFullThumbnail@GlxThumbnailUtility@@SAHABVTMPXAttribute@@@Z @ 36 NONAME ; int GlxThumbnailUtility::IsFullThumbnail(class TMPXAttribute const &) + ??0TGlxFromIndexOutwardBlockyIterator@@QAE@ABVMGlxIndex@0@@Z @ 37 NONAME ; TGlxFromIndexOutwardBlockyIterator::TGlxFromIndexOutwardBlockyIterator(class TGlxFromIndexOutwardBlockyIterator::MGlxIndex const &) + ?ConstructL@CGlxListWindow@@QAEXXZ @ 38 NONAME ; void CGlxListWindow::ConstructL(void) + ?SetRange@TGlxSequentialIterator@@QAEXH@Z @ 39 NONAME ; void TGlxSequentialIterator::SetRange(int) + ??1TGlxFromVisibleIndexOutwardListIterator@@QAE@XZ @ 40 NONAME ; TGlxFromVisibleIndexOutwardListIterator::~TGlxFromVisibleIndexOutwardListIterator(void) + ?GetStaticItemCommand@TGlxMedia@@QBEHAAH@Z @ 41 NONAME ; int TGlxMedia::GetStaticItemCommand(int &) const + ?SetRangeOffsets@TGlxFromManualIndexBlockyIterator@@QAEXHH@Z @ 42 NONAME ; void TGlxFromManualIndexBlockyIterator::SetRangeOffsets(int, int) + ?SetIndex@TGlxFromManualIndexOutwardBlockyIterator@@QAEXH@Z @ 43 NONAME ; void TGlxFromManualIndexOutwardBlockyIterator::SetIndex(int) + ?HandleModified@CGlxMedia@@QAEXABV?$RArray@VTMPXAttribute@@@@@Z @ 44 NONAME ; void CGlxMedia::HandleModified(class RArray const &) + ?GetLastModifiedDate@TGlxMedia@@QBEHAAVTTime@@@Z @ 45 NONAME ; int TGlxMedia::GetLastModifiedDate(class TTime &) const + ?GetContainedItemCount@TGlxMedia@@QBEHAAH@Z @ 46 NONAME ; int TGlxMedia::GetContainedItemCount(int &) const + ?SetRange@TGlxSelectionIterator@@QAEXH@Z @ 47 NONAME ; void TGlxSelectionIterator::SetRange(int) + ?GetDimensions@TGlxMedia@@QBEHAAVTSize@@@Z @ 48 NONAME ; int TGlxMedia::GetDimensions(class TSize &) const + ?GetDate@TGlxMedia@@QBEHAAVTTime@@@Z @ 49 NONAME ; int TGlxMedia::GetDate(class TTime &) const + ?GetValueText@CGlxMedia@@QBEHAAVTPtrC16@@ABVTMPXAttribute@@@Z @ 50 NONAME ; int CGlxMedia::GetValueText(class TPtrC16 &, class TMPXAttribute const &) const + ?SetTextValueL@CGlxMedia@@QAEXABVTMPXAttribute@@ABVTDesC16@@@Z @ 51 NONAME ; void CGlxMedia::SetTextValueL(class TMPXAttribute const &, class TDesC16 const &) + ?SetDefaultSpec@CGlxAttributeContext@@QAEXHH@Z @ 52 NONAME ; void CGlxAttributeContext::SetDefaultSpec(int, int) + ?IsStatic@TGlxMedia@@QBEHXZ @ 53 NONAME ; int TGlxMedia::IsStatic(void) const + ??0CGlxListWindow@@QAE@AAVMGlxWindowObjectFactory@@@Z @ 54 NONAME ; CGlxListWindow::CGlxListWindow(class MGlxWindowObjectFactory &) + ?AddSpecForItemL@CGlxThumbnailContext@@QAEXHHH@Z @ 55 NONAME ; void CGlxThumbnailContext::AddSpecForItemL(int, int, int) + ??1CGlxDefaultAttributeContext@@UAE@XZ @ 56 NONAME ; CGlxDefaultAttributeContext::~CGlxDefaultAttributeContext(void) + ?ThumbnailAttribute@TGlxMedia@@QBEPBVCGlxThumbnailAttribute@@AAVTMPXAttribute@@@Z @ 57 NONAME ; class CGlxThumbnailAttribute const * TGlxMedia::ThumbnailAttribute(class TMPXAttribute &) const + ??1TGlxFirstThenLastIterator@@QAE@XZ @ 58 NONAME ; TGlxFirstThenLastIterator::~TGlxFirstThenLastIterator(void) + ?Title@TGlxMedia@@QBEABVTDesC16@@XZ @ 59 NONAME ; class TDesC16 const & TGlxMedia::Title(void) const + ??ETGlxSelectionIterator@@UAEHH@Z @ 60 NONAME ; int TGlxSelectionIterator::operator++(int) + ?AddAttributeL@CGlxAttributeContext@@QAEXABVTMPXAttribute@@@Z @ 61 NONAME ; void CGlxAttributeContext::AddAttributeL(class TMPXAttribute const &) + ?SetRangeOffsets@CGlxDefaultThumbnailContext@@QAEXHH@Z @ 62 NONAME ; void CGlxDefaultThumbnailContext::SetRangeOffsets(int, int) + ?__DbgTestInvariant@CGlxStaticItemList@@QBEXXZ @ 63 NONAME ; void CGlxStaticItemList::__DbgTestInvariant(void) const + ?GetDuration@TGlxMedia@@QBEHAAM@Z @ 64 NONAME ; int TGlxMedia::GetDuration(float &) const + ?DeleteAttribute@CGlxMedia@@QAEXABVTMPXAttribute@@@Z @ 65 NONAME ; void CGlxMedia::DeleteAttribute(class TMPXAttribute const &) + ?InstanceL@MGlxMediaList@@SAPAV1@ABVCMPXCollectionPath@@ABV?$TGlxId@VTGlxIdHierarchyBase@@@@PAVCMPXMedia@@@Z @ 66 NONAME ; class MGlxMediaList * MGlxMediaList::InstanceL(class CMPXCollectionPath const &, class TGlxId const &, class CMPXMedia *) + ?SetCObjectValueL@CGlxMedia@@QAEXABVTMPXAttribute@@PAVCBase@@@Z @ 67 NONAME ; void CGlxMedia::SetCObjectValueL(class TMPXAttribute const &, class CBase *) + ?RemoveObjects@CGlxListWindow@@QAEXHHHH@Z @ 68 NONAME ; void CGlxListWindow::RemoveObjects(int, int, int, int) + ?Iterator@CGlxListWindow@@QBE?AVTGlxWindowIterator@@XZ @ 69 NONAME ; class TGlxWindowIterator CGlxListWindow::Iterator(void) const + ?Category@TGlxMedia@@QBE?AW4TMPXGeneralCategory@@XZ @ 70 NONAME ; enum TMPXGeneralCategory TGlxMedia::Category(void) const + ??0CGlxAttributeContext@@QAE@PAVMGlxMediaListIterator@@@Z @ 71 NONAME ; CGlxAttributeContext::CGlxAttributeContext(class MGlxMediaListIterator *) + ?GetIconInfo@TGlxMedia@@QBEHAAUTIconInfo@@@Z @ 72 NONAME ; int TGlxMedia::GetIconInfo(struct TIconInfo &) const + ?__DbgTestInvariant@CGlxItemList@@QBEXXZ @ 73 NONAME ; void CGlxItemList::__DbgTestInvariant(void) const + ?AddObjects@CGlxListWindow@@QAEXHH@Z @ 74 NONAME ; void CGlxListWindow::AddObjects(int, int) + ?Comment@TGlxMedia@@QBEABVTDesC16@@XZ @ 75 NONAME ; class TDesC16 const & TGlxMedia::Comment(void) const + ?HasAttributeErrorL@GlxErrorManager@@SAHPBVCGlxMedia@@ABVTMPXAttribute@@@Z @ 76 NONAME ; int GlxErrorManager::HasAttributeErrorL(class CGlxMedia const *, class TMPXAttribute const &) + ??0TGlxSequentialIterator@@QAE@XZ @ 77 NONAME ; TGlxSequentialIterator::TGlxSequentialIterator(void) + ?AttributeCount@CGlxAttributeContext@@QAEHXZ @ 78 NONAME ; int CGlxAttributeContext::AttributeCount(void) + ?GetDrmValidity@TGlxMedia@@QBEHAAW4TGlxMediaGeneralRightsValidity@@@Z @ 79 NONAME ; int TGlxMedia::GetDrmValidity(enum TGlxMediaGeneralRightsValidity &) const + ?__DbgTestInvariant@CGlxNavigableList@@QBEXXZ @ 80 NONAME ; void CGlxNavigableList::__DbgTestInvariant(void) const + ?SetFocusIndex@CGlxListWindow@@QAEXHH@Z @ 81 NONAME ; void CGlxListWindow::SetFocusIndex(int, int) + ?SetValueL@CGlxMedia@@QAEXABVTMPXAttribute@@PAXW4TMPXAttributeType@@@Z @ 82 NONAME ; void CGlxMedia::SetValueL(class TMPXAttribute const &, void *, enum TMPXAttributeType) + ?ValueText@CGlxMedia@@QBEABVTDesC16@@ABVTMPXAttribute@@@Z @ 83 NONAME ; class TDesC16 const & CGlxMedia::ValueText(class TMPXAttribute const &) const + ??0CGlxMedia@@QAE@ABVTGlxMediaId@@@Z @ 84 NONAME ; CGlxMedia::CGlxMedia(class TGlxMediaId const &) + ?DeleteLocationAttribute@TGlxMedia@@QAEXXZ @ 85 NONAME ; void TGlxMedia::DeleteLocationAttribute(void) + ?GetClosestThumbnail@TGlxMedia@@QBEHAAVTMPXAttribute@@ABVTSize@@H@Z @ 86 NONAME ; int TGlxMedia::GetClosestThumbnail(class TMPXAttribute &, class TSize const &, int) const + ??1CGlxMedia@@UAE@XZ @ 87 NONAME ; CGlxMedia::~CGlxMedia(void) + ?__DbgTestInvariant@CGlxMedia@@QBEXXZ @ 88 NONAME ; void CGlxMedia::__DbgTestInvariant(void) const + ?IsDrmProtected@TGlxMedia@@QBEHXZ @ 89 NONAME ; int TGlxMedia::IsDrmProtected(void) const + ??1CGlxThumbnailContext@@UAE@XZ @ 90 NONAME ; CGlxThumbnailContext::~CGlxThumbnailContext(void) + ?GetDrmProtected@TGlxMedia@@QBEHAAH@Z @ 91 NONAME ; int TGlxMedia::GetDrmProtected(int &) const + ?GetSystemItem@TGlxMedia@@QBEHAAH@Z @ 92 NONAME ; int TGlxMedia::GetSystemItem(int &) const + ?RemoveObjects@CGlxListWindow@@QAEXHH@Z @ 93 NONAME ; void CGlxListWindow::RemoveObjects(int, int) + ?Close@TGlxFetchContextRemover@@QAEXXZ @ 94 NONAME ; void TGlxFetchContextRemover::Close(void) + ?At@CGlxListWindow@@QBEPBVCBase@@H@Z @ 95 NONAME ; class CBase const * CGlxListWindow::At(int) const + ?HasAttributeErrorL@GlxErrorManager@@SAHPBVCGlxMedia@@H@Z @ 96 NONAME ; int GlxErrorManager::HasAttributeErrorL(class CGlxMedia const *, int) + ?At@CGlxListWindow@@QAEPAVCBase@@H@Z @ 97 NONAME ; class CBase * CGlxListWindow::At(int) + ??1TGlxFromManualIndexBlockyIterator@@QAE@XZ @ 98 NONAME ; TGlxFromManualIndexBlockyIterator::~TGlxFromManualIndexBlockyIterator(void) + ?RemoveAttribute@CGlxAttributeContext@@QAEXABVTMPXAttribute@@@Z @ 99 NONAME ; void CGlxAttributeContext::RemoveAttribute(class TMPXAttribute const &) + ??1TGlxFromIndexOutwardBlockyIterator@@QAE@XZ @ 100 NONAME ; TGlxFromIndexOutwardBlockyIterator::~TGlxFromIndexOutwardBlockyIterator(void) + ?ClosestThumbnail@GlxThumbnailUtility@@SAHABVTSize@@ABVCGlxMedia@@H@Z @ 101 NONAME ; int GlxThumbnailUtility::ClosestThumbnail(class TSize const &, class CGlxMedia const &, int) + ??0TGlxFromManualIndexOutwardBlockyIterator@@QAE@XZ @ 102 NONAME ; TGlxFromManualIndexOutwardBlockyIterator::TGlxFromManualIndexOutwardBlockyIterator(void) + ?Cleanup@CGlxListWindow@@QAEXXZ @ 103 NONAME ; void CGlxListWindow::Cleanup(void) + ??1TGlxExclusionIterator@@QAE@XZ @ 104 NONAME ; TGlxExclusionIterator::~TGlxExclusionIterator(void) + ??1CGlxDefaultListAttributeContext@@UAE@XZ @ 105 NONAME ; CGlxDefaultListAttributeContext::~CGlxDefaultListAttributeContext(void) + ??1TGlxFetchContextRemover@@QAE@XZ @ 106 NONAME ; TGlxFetchContextRemover::~TGlxFetchContextRemover(void) + ?SetRangeOffsets@TGlxFromVisibleIndexOutwardListIterator@@QAEXHH@Z @ 107 NONAME ; void TGlxFromVisibleIndexOutwardListIterator::SetRangeOffsets(int, int) + ?SetDefaultSpec@CGlxThumbnailContext@@QAEXHH@Z @ 108 NONAME ; void CGlxThumbnailContext::SetDefaultSpec(int, int) + ??0TGlxFromVisibleIndexOutwardListIterator@@QAE@XZ @ 109 NONAME ; TGlxFromVisibleIndexOutwardListIterator::TGlxFromVisibleIndexOutwardListIterator(void) + ??0TGlxSpecificIdIterator@@QAE@ABV?$TGlxId@VTGlxIdSpaceIdBase@@@@VTGlxMediaId@@@Z @ 110 NONAME ; TGlxSpecificIdIterator::TGlxSpecificIdIterator(class TGlxId const &, class TGlxMediaId) + ?GetSlideshowPlayableContainedItemCount@TGlxMedia@@QBEHAAH@Z @ 111 NONAME ; int TGlxMedia::GetSlideshowPlayableContainedItemCount(int &) const + ?MatchById@TGlxMedia@@SAHABV1@0@Z @ 112 NONAME ; int TGlxMedia::MatchById(class TGlxMedia const &, class TGlxMedia const &) + ?SetRangeOffsetsL@CGlxListWindow@@QAEXHH@Z @ 113 NONAME ; void CGlxListWindow::SetRangeOffsetsL(int, int) + ?SetRangeOffsets@CGlxDefaultListAttributeContext@@QAEXHH@Z @ 114 NONAME ; void CGlxDefaultListAttributeContext::SetRangeOffsets(int, int) + ?MimeType@TGlxMedia@@QBEABVTDesC16@@XZ @ 115 NONAME ; class TDesC16 const & TGlxMedia::MimeType(void) const + ?Uri@TGlxMedia@@QBEABVTDesC16@@XZ @ 116 NONAME ; class TDesC16 const & TGlxMedia::Uri(void) const + ??0TGlxFirstThenLastIterator@@QAE@XZ @ 117 NONAME ; TGlxFirstThenLastIterator::TGlxFirstThenLastIterator(void) + ??1CGlxAttributeContext@@UAE@XZ @ 118 NONAME ; CGlxAttributeContext::~CGlxAttributeContext(void) + ?SetRangeOffsets@CGlxDefaultAttributeContext@@QAEXHH@Z @ 119 NONAME ; void CGlxDefaultAttributeContext::SetRangeOffsets(int, int) + ?ValueCObject@CGlxMedia@@QBEPBVCBase@@ABVTMPXAttribute@@@Z @ 120 NONAME ; class CBase const * CGlxMedia::ValueCObject(class TMPXAttribute const &) const + ?GetCoordinate@TGlxMedia@@QBEHAAVTCoordinate@@@Z @ 121 NONAME ; int TGlxMedia::GetCoordinate(class TCoordinate &) const + ?NewL@CGlxDefaultThumbnailContext@@SAPAV1@XZ @ 122 NONAME ; class CGlxDefaultThumbnailContext * CGlxDefaultThumbnailContext::NewL(void) + ?IsSlideShowPlayableContent@TGlxMedia@@QBEHXZ @ 123 NONAME ; int TGlxMedia::IsSlideShowPlayableContent(void) const + ??1TGlxFromFocusOutwardIterator@@QAE@XZ @ 124 NONAME ; TGlxFromFocusOutwardIterator::~TGlxFromFocusOutwardIterator(void) + ?InRange@TGlxSelectionIterator@@UBEHH@Z @ 125 NONAME ; int TGlxSelectionIterator::InRange(int) const diff -r 74c9f037fd5d -r 99ad1390cd33 ui/uiengine/medialists/eabi/glxmedialistsu.def --- a/ui/uiengine/medialists/eabi/glxmedialistsu.def Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/uiengine/medialists/eabi/glxmedialistsu.def Fri Apr 16 14:58:46 2010 +0300 @@ -85,107 +85,121 @@ _ZN28TGlxFromFocusOutwardIteratorC2Ev @ 84 NONAME _ZN28TGlxFromFocusOutwardIteratorD1Ev @ 85 NONAME _ZN28TGlxFromFocusOutwardIteratorD2Ev @ 86 NONAME - _ZN33TGlxFromManualIndexBlockyIterator15SetRangeOffsetsEii @ 87 NONAME - _ZN33TGlxFromManualIndexBlockyIteratorC1Ev @ 88 NONAME - _ZN33TGlxFromManualIndexBlockyIteratorC2Ev @ 89 NONAME - _ZN33TGlxFromManualIndexBlockyIteratorD1Ev @ 90 NONAME - _ZN33TGlxFromManualIndexBlockyIteratorD2Ev @ 91 NONAME - _ZN34TGlxFromFocusOutwardBlockyIteratorC1Ev @ 92 NONAME - _ZN34TGlxFromFocusOutwardBlockyIteratorC2Ev @ 93 NONAME - _ZN34TGlxFromFocusOutwardBlockyIteratorD1Ev @ 94 NONAME - _ZN34TGlxFromFocusOutwardBlockyIteratorD2Ev @ 95 NONAME - _ZN34TGlxFromIndexOutwardBlockyIterator15SetRangeOffsetsEii @ 96 NONAME - _ZN34TGlxFromIndexOutwardBlockyIteratorC1ERKNS_9MGlxIndexE @ 97 NONAME - _ZN34TGlxFromIndexOutwardBlockyIteratorC2ERKNS_9MGlxIndexE @ 98 NONAME - _ZN34TGlxFromIndexOutwardBlockyIteratorD1Ev @ 99 NONAME - _ZN34TGlxFromIndexOutwardBlockyIteratorD2Ev @ 100 NONAME - _ZN40TGlxFromManualIndexOutwardBlockyIterator8SetIndexEi @ 101 NONAME - _ZN40TGlxFromManualIndexOutwardBlockyIteratorC1Ev @ 102 NONAME - _ZN40TGlxFromManualIndexOutwardBlockyIteratorC2Ev @ 103 NONAME - _ZN40TGlxFromManualIndexOutwardBlockyIteratorD1Ev @ 104 NONAME - _ZN40TGlxFromManualIndexOutwardBlockyIteratorD2Ev @ 105 NONAME - _ZN9CGlxMedia13SetTextValueLERK13TMPXAttributeRK7TDesC16 @ 106 NONAME - _ZN9CGlxMedia14HandleModifiedERK6RArrayI13TMPXAttributeE @ 107 NONAME - _ZN9CGlxMedia15DeleteAttributeERK13TMPXAttribute @ 108 NONAME - _ZN9CGlxMedia16SetCObjectValueLERK13TMPXAttributeP5CBase @ 109 NONAME - _ZN9CGlxMedia5ResetEv @ 110 NONAME - _ZN9CGlxMedia9SetValueLERK13TMPXAttributePv17TMPXAttributeType @ 111 NONAME - _ZN9CGlxMediaC1ERK11TGlxMediaId @ 112 NONAME - _ZN9CGlxMediaC2ERK11TGlxMediaId @ 113 NONAME - _ZN9CGlxMediaD0Ev @ 114 NONAME - _ZN9CGlxMediaD1Ev @ 115 NONAME - _ZN9CGlxMediaD2Ev @ 116 NONAME - _ZN9MGlxCache9InstanceLEv @ 117 NONAME - _ZN9TGlxMedia23DeleteLocationAttributeEv @ 118 NONAME - _ZN9TGlxMedia9MatchByIdERKS_S1_ @ 119 NONAME - _ZNK14CGlxListWindow2AtEi @ 120 NONAME - _ZNK14CGlxListWindow8IteratorEv @ 121 NONAME - _ZNK21TGlxSelectionIterator7InRangeEi @ 122 NONAME - _ZNK9CGlxMedia12GetValueTextER7TPtrC16RK13TMPXAttribute @ 123 NONAME - _ZNK9CGlxMedia12ValueCObjectERK13TMPXAttribute @ 124 NONAME - _ZNK9CGlxMedia9ValueTextERK13TMPXAttribute @ 125 NONAME - _ZNK9TGlxMedia11GetDurationERf @ 126 NONAME - _ZNK9TGlxMedia11GetIconInfoER9TIconInfo @ 127 NONAME - _ZNK9TGlxMedia13GetCoordinateER11TCoordinate @ 128 NONAME - _ZNK9TGlxMedia13GetDimensionsER5TSize @ 129 NONAME - _ZNK9TGlxMedia13GetFrameCountERi @ 130 NONAME - _ZNK9TGlxMedia13GetSystemItemERi @ 131 NONAME - _ZNK9TGlxMedia14GetDrmValidityER30TGlxMediaGeneralRightsValidity @ 132 NONAME - _ZNK9TGlxMedia14IsDrmProtectedEv @ 133 NONAME - _ZNK9TGlxMedia15GetDrmProtectedERi @ 134 NONAME - _ZNK9TGlxMedia18ThumbnailAttributeER13TMPXAttribute @ 135 NONAME - _ZNK9TGlxMedia19GetClosestThumbnailER13TMPXAttributeRK5TSizei @ 136 NONAME - _ZNK9TGlxMedia19GetLastModifiedDateER5TTime @ 137 NONAME - _ZNK9TGlxMedia20GetStaticItemCommandERi @ 138 NONAME - _ZNK9TGlxMedia21GetContainedItemCountERi @ 139 NONAME - _ZNK9TGlxMedia26IsSlideShowPlayableContentEv @ 140 NONAME - _ZNK9TGlxMedia38GetSlideshowPlayableContainedItemCountERi @ 141 NONAME - _ZNK9TGlxMedia3UriEv @ 142 NONAME - _ZNK9TGlxMedia5TitleEv @ 143 NONAME - _ZNK9TGlxMedia7CommentEv @ 144 NONAME - _ZNK9TGlxMedia7GetDateER5TTime @ 145 NONAME - _ZNK9TGlxMedia7GetSizeERi @ 146 NONAME - _ZNK9TGlxMedia8CategoryEv @ 147 NONAME - _ZNK9TGlxMedia8IsStaticEv @ 148 NONAME - _ZNK9TGlxMedia8MimeTypeEv @ 149 NONAME - _ZNK9TGlxMedia8SubTitleEv @ 150 NONAME - _ZNK9TGlxMedia9IdSpaceIdEv @ 151 NONAME - _ZTI13CGlxMediaList @ 152 NONAME - _ZTI14CGlxListWindow @ 153 NONAME - _ZTI15CGlxImageReader @ 154 NONAME - _ZTI16CGlxCacheManager @ 155 NONAME - _ZTI20CGlxAttributeContext @ 156 NONAME - _ZTI20CGlxGarbageCollector @ 157 NONAME - _ZTI20CGlxThumbnailContext @ 158 NONAME - _ZTI21TGlxExclusionIterator @ 159 NONAME - _ZTI21TGlxSelectionIterator @ 160 NONAME - _ZTI22TGlxSequentialIterator @ 161 NONAME - _ZTI22TGlxSpecificIdIterator @ 162 NONAME - _ZTI25TGlxFirstThenLastIterator @ 163 NONAME - _ZTI27CGlxDefaultAttributeContext @ 164 NONAME - _ZTI27CGlxDefaultThumbnailContext @ 165 NONAME - _ZTI28TGlxFromFocusOutwardIterator @ 166 NONAME - _ZTI33TGlxFromManualIndexBlockyIterator @ 167 NONAME - _ZTI34TGlxFromFocusOutwardBlockyIterator @ 168 NONAME - _ZTI34TGlxFromIndexOutwardBlockyIterator @ 169 NONAME - _ZTI40TGlxFromManualIndexOutwardBlockyIterator @ 170 NONAME - _ZTV13CGlxMediaList @ 171 NONAME - _ZTV14CGlxListWindow @ 172 NONAME - _ZTV15CGlxImageReader @ 173 NONAME - _ZTV16CGlxCacheManager @ 174 NONAME - _ZTV20CGlxAttributeContext @ 175 NONAME - _ZTV20CGlxGarbageCollector @ 176 NONAME - _ZTV20CGlxThumbnailContext @ 177 NONAME - _ZTV21TGlxExclusionIterator @ 178 NONAME - _ZTV21TGlxSelectionIterator @ 179 NONAME - _ZTV22TGlxSequentialIterator @ 180 NONAME - _ZTV22TGlxSpecificIdIterator @ 181 NONAME - _ZTV25TGlxFirstThenLastIterator @ 182 NONAME - _ZTV27CGlxDefaultAttributeContext @ 183 NONAME - _ZTV27CGlxDefaultThumbnailContext @ 184 NONAME - _ZTV28TGlxFromFocusOutwardIterator @ 185 NONAME - _ZTV33TGlxFromManualIndexBlockyIterator @ 186 NONAME - _ZTV34TGlxFromFocusOutwardBlockyIterator @ 187 NONAME - _ZTV34TGlxFromIndexOutwardBlockyIterator @ 188 NONAME - _ZTV40TGlxFromManualIndexOutwardBlockyIterator @ 189 NONAME + _ZN31CGlxDefaultListAttributeContext15SetRangeOffsetsEii @ 87 NONAME + _ZN31CGlxDefaultListAttributeContext4NewLEv @ 88 NONAME + _ZN31CGlxDefaultListAttributeContextD0Ev @ 89 NONAME + _ZN31CGlxDefaultListAttributeContextD1Ev @ 90 NONAME + _ZN31CGlxDefaultListAttributeContextD2Ev @ 91 NONAME + _ZN33TGlxFromManualIndexBlockyIterator15SetRangeOffsetsEii @ 92 NONAME + _ZN33TGlxFromManualIndexBlockyIteratorC1Ev @ 93 NONAME + _ZN33TGlxFromManualIndexBlockyIteratorC2Ev @ 94 NONAME + _ZN33TGlxFromManualIndexBlockyIteratorD1Ev @ 95 NONAME + _ZN33TGlxFromManualIndexBlockyIteratorD2Ev @ 96 NONAME + _ZN34TGlxFromFocusOutwardBlockyIteratorC1Ev @ 97 NONAME + _ZN34TGlxFromFocusOutwardBlockyIteratorC2Ev @ 98 NONAME + _ZN34TGlxFromFocusOutwardBlockyIteratorD1Ev @ 99 NONAME + _ZN34TGlxFromFocusOutwardBlockyIteratorD2Ev @ 100 NONAME + _ZN34TGlxFromIndexOutwardBlockyIterator15SetRangeOffsetsEii @ 101 NONAME + _ZN34TGlxFromIndexOutwardBlockyIteratorC1ERKNS_9MGlxIndexE @ 102 NONAME + _ZN34TGlxFromIndexOutwardBlockyIteratorC2ERKNS_9MGlxIndexE @ 103 NONAME + _ZN34TGlxFromIndexOutwardBlockyIteratorD1Ev @ 104 NONAME + _ZN34TGlxFromIndexOutwardBlockyIteratorD2Ev @ 105 NONAME + _ZN39TGlxFromVisibleIndexOutwardListIterator15SetRangeOffsetsEii @ 106 NONAME + _ZN39TGlxFromVisibleIndexOutwardListIteratorC1Ev @ 107 NONAME + _ZN39TGlxFromVisibleIndexOutwardListIteratorC2Ev @ 108 NONAME + _ZN39TGlxFromVisibleIndexOutwardListIteratorD1Ev @ 109 NONAME + _ZN39TGlxFromVisibleIndexOutwardListIteratorD2Ev @ 110 NONAME + _ZN40TGlxFromManualIndexOutwardBlockyIterator8SetIndexEi @ 111 NONAME + _ZN40TGlxFromManualIndexOutwardBlockyIteratorC1Ev @ 112 NONAME + _ZN40TGlxFromManualIndexOutwardBlockyIteratorC2Ev @ 113 NONAME + _ZN40TGlxFromManualIndexOutwardBlockyIteratorD1Ev @ 114 NONAME + _ZN40TGlxFromManualIndexOutwardBlockyIteratorD2Ev @ 115 NONAME + _ZN9CGlxMedia13SetTextValueLERK13TMPXAttributeRK7TDesC16 @ 116 NONAME + _ZN9CGlxMedia14HandleModifiedERK6RArrayI13TMPXAttributeE @ 117 NONAME + _ZN9CGlxMedia15DeleteAttributeERK13TMPXAttribute @ 118 NONAME + _ZN9CGlxMedia16SetCObjectValueLERK13TMPXAttributeP5CBase @ 119 NONAME + _ZN9CGlxMedia5ResetEv @ 120 NONAME + _ZN9CGlxMedia9SetValueLERK13TMPXAttributePv17TMPXAttributeType @ 121 NONAME + _ZN9CGlxMediaC1ERK11TGlxMediaId @ 122 NONAME + _ZN9CGlxMediaC2ERK11TGlxMediaId @ 123 NONAME + _ZN9CGlxMediaD0Ev @ 124 NONAME + _ZN9CGlxMediaD1Ev @ 125 NONAME + _ZN9CGlxMediaD2Ev @ 126 NONAME + _ZN9MGlxCache9InstanceLEv @ 127 NONAME + _ZN9TGlxMedia23DeleteLocationAttributeEv @ 128 NONAME + _ZN9TGlxMedia9MatchByIdERKS_S1_ @ 129 NONAME + _ZNK14CGlxListWindow2AtEi @ 130 NONAME + _ZNK14CGlxListWindow8IteratorEv @ 131 NONAME + _ZNK21TGlxSelectionIterator7InRangeEi @ 132 NONAME + _ZNK9CGlxMedia12GetValueTextER7TPtrC16RK13TMPXAttribute @ 133 NONAME + _ZNK9CGlxMedia12ValueCObjectERK13TMPXAttribute @ 134 NONAME + _ZNK9CGlxMedia9ValueTextERK13TMPXAttribute @ 135 NONAME + _ZNK9TGlxMedia11GetDurationERf @ 136 NONAME + _ZNK9TGlxMedia11GetIconInfoER9TIconInfo @ 137 NONAME + _ZNK9TGlxMedia13GetCoordinateER11TCoordinate @ 138 NONAME + _ZNK9TGlxMedia13GetDimensionsER5TSize @ 139 NONAME + _ZNK9TGlxMedia13GetFrameCountERi @ 140 NONAME + _ZNK9TGlxMedia13GetSystemItemERi @ 141 NONAME + _ZNK9TGlxMedia14GetDrmValidityER30TGlxMediaGeneralRightsValidity @ 142 NONAME + _ZNK9TGlxMedia14IsDrmProtectedEv @ 143 NONAME + _ZNK9TGlxMedia15GetDrmProtectedERi @ 144 NONAME + _ZNK9TGlxMedia18ThumbnailAttributeER13TMPXAttribute @ 145 NONAME + _ZNK9TGlxMedia19GetClosestThumbnailER13TMPXAttributeRK5TSizei @ 146 NONAME + _ZNK9TGlxMedia19GetLastModifiedDateER5TTime @ 147 NONAME + _ZNK9TGlxMedia20GetStaticItemCommandERi @ 148 NONAME + _ZNK9TGlxMedia21GetContainedItemCountERi @ 149 NONAME + _ZNK9TGlxMedia26IsSlideShowPlayableContentEv @ 150 NONAME + _ZNK9TGlxMedia38GetSlideshowPlayableContainedItemCountERi @ 151 NONAME + _ZNK9TGlxMedia3UriEv @ 152 NONAME + _ZNK9TGlxMedia5TitleEv @ 153 NONAME + _ZNK9TGlxMedia7CommentEv @ 154 NONAME + _ZNK9TGlxMedia7GetDateER5TTime @ 155 NONAME + _ZNK9TGlxMedia7GetSizeERi @ 156 NONAME + _ZNK9TGlxMedia8CategoryEv @ 157 NONAME + _ZNK9TGlxMedia8IsStaticEv @ 158 NONAME + _ZNK9TGlxMedia8MimeTypeEv @ 159 NONAME + _ZNK9TGlxMedia8SubTitleEv @ 160 NONAME + _ZNK9TGlxMedia9IdSpaceIdEv @ 161 NONAME + _ZTI13CGlxMediaList @ 162 NONAME + _ZTI14CGlxListWindow @ 163 NONAME + _ZTI15CGlxImageReader @ 164 NONAME + _ZTI16CGlxCacheManager @ 165 NONAME + _ZTI20CGlxAttributeContext @ 166 NONAME + _ZTI20CGlxGarbageCollector @ 167 NONAME + _ZTI20CGlxThumbnailContext @ 168 NONAME + _ZTI21TGlxExclusionIterator @ 169 NONAME + _ZTI21TGlxSelectionIterator @ 170 NONAME + _ZTI22TGlxSequentialIterator @ 171 NONAME + _ZTI22TGlxSpecificIdIterator @ 172 NONAME + _ZTI25TGlxFirstThenLastIterator @ 173 NONAME + _ZTI27CGlxDefaultAttributeContext @ 174 NONAME + _ZTI27CGlxDefaultThumbnailContext @ 175 NONAME + _ZTI28TGlxFromFocusOutwardIterator @ 176 NONAME + _ZTI31CGlxDefaultListAttributeContext @ 177 NONAME + _ZTI33TGlxFromManualIndexBlockyIterator @ 178 NONAME + _ZTI34TGlxFromFocusOutwardBlockyIterator @ 179 NONAME + _ZTI34TGlxFromIndexOutwardBlockyIterator @ 180 NONAME + _ZTI39TGlxFromVisibleIndexOutwardListIterator @ 181 NONAME + _ZTI40TGlxFromManualIndexOutwardBlockyIterator @ 182 NONAME + _ZTV13CGlxMediaList @ 183 NONAME + _ZTV14CGlxListWindow @ 184 NONAME + _ZTV15CGlxImageReader @ 185 NONAME + _ZTV16CGlxCacheManager @ 186 NONAME + _ZTV20CGlxAttributeContext @ 187 NONAME + _ZTV20CGlxGarbageCollector @ 188 NONAME + _ZTV20CGlxThumbnailContext @ 189 NONAME + _ZTV21TGlxExclusionIterator @ 190 NONAME + _ZTV21TGlxSelectionIterator @ 191 NONAME + _ZTV22TGlxSequentialIterator @ 192 NONAME + _ZTV22TGlxSpecificIdIterator @ 193 NONAME + _ZTV25TGlxFirstThenLastIterator @ 194 NONAME + _ZTV27CGlxDefaultAttributeContext @ 195 NONAME + _ZTV27CGlxDefaultThumbnailContext @ 196 NONAME + _ZTV28TGlxFromFocusOutwardIterator @ 197 NONAME + _ZTV31CGlxDefaultListAttributeContext @ 198 NONAME + _ZTV33TGlxFromManualIndexBlockyIterator @ 199 NONAME + _ZTV34TGlxFromFocusOutwardBlockyIterator @ 200 NONAME + _ZTV34TGlxFromIndexOutwardBlockyIterator @ 201 NONAME + _ZTV39TGlxFromVisibleIndexOutwardListIterator @ 202 NONAME + _ZTV40TGlxFromManualIndexOutwardBlockyIterator @ 203 NONAME diff -r 74c9f037fd5d -r 99ad1390cd33 ui/uiengine/medialists/inc/glxattributecontext.h --- a/ui/uiengine/medialists/inc/glxattributecontext.h Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/uiengine/medialists/inc/glxattributecontext.h Fri Apr 16 14:58:46 2010 +0300 @@ -157,5 +157,36 @@ TGlxFromFocusOutwardIterator iFromFocusIterator; }; +/** + * CGlxDefaultListAttributeContext + * + * Fetch context to retrieve MPX attributes by using TGlxFromFocusOutwardListIterator + * iterator specially designed for list in 10.1 + * + * @lib glxmedialists.lib + */ +class CGlxDefaultListAttributeContext : public CGlxAttributeContext + { +public: + IMPORT_C static CGlxDefaultListAttributeContext* NewL(); + IMPORT_C ~CGlxDefaultListAttributeContext(); + + /** + * Set the range offsets. These determine the outer limits + * of attributes to be retrieved, compared to current focus in + * the list. + * + * NOTE : This works on Visible WindowIndex and not FocusIndex + * + */ + IMPORT_C void SetRangeOffsets(TInt aFrontOffset, TInt aRearOffset); + +private: + CGlxDefaultListAttributeContext(); + +private: + TGlxFromVisibleIndexOutwardListIterator iFromVisibleIndexIterator; + }; + #endif // C_GLXATTRIBUTECONTEXT_H diff -r 74c9f037fd5d -r 99ad1390cd33 ui/uiengine/medialists/inc/glxmedialistiterator.h --- a/ui/uiengine/medialists/inc/glxmedialistiterator.h Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/uiengine/medialists/inc/glxmedialistiterator.h Fri Apr 16 14:58:46 2010 +0300 @@ -235,6 +235,66 @@ }; /** + * TGlxFromVisibleIndexOutwardListIterator + * + * Ordered that returns the index of the focused item first and + * then the surrounding items evenly from both sides based on the rangeoffset + * This is mainly designed for 10.1 List View(album) and mapped with + * VisibleWindowIndex and not FocusIndex as for Direct UI. + * + * @lib glxmedialists.lib + */ +class TGlxFromVisibleIndexOutwardListIterator : public MGlxMediaListIterator + { +public: + IMPORT_C TGlxFromVisibleIndexOutwardListIterator(); + IMPORT_C ~TGlxFromVisibleIndexOutwardListIterator(); + + /** + * Set the range offsets + */ + IMPORT_C void SetRangeOffsets(TInt aRearOffset, TInt aFrontOffset); + +// From MGlxMediaListIterator + virtual void SetToFirst(const MGlxMediaList* aList); + virtual TInt operator++(TInt); + virtual TBool InRange(TInt aIndex) const; + +private: + /** + * The count or ordinal of the item that is currently "selected" + * This translates to how many times ++ has been called + */ + TInt iCurrentItem; + + /** + * Number of items within range after focus index + */ + TInt iFrontOffset; + + /** + * Number of items within range before focus index + */ + TInt iRearOffset; + + /** + * List being traversed + */ + const MGlxMediaList* iList; + + // For E-Unit + friend class T_CGlxFromFocusOutwardIterator; + + /** + * Number of items within range as configured by clients + * This shall be used to restore back + * while coming out of low memory conditions + */ + TInt iOriginalFrontOffset; + TInt iOriginalRearOffset; + }; + +/** * TGlxFromIndexOutwardBlockyIterator * * Ordered that returns the index of the focused item first and diff -r 74c9f037fd5d -r 99ad1390cd33 ui/uiengine/medialists/src/glxattributecontext.cpp --- a/ui/uiengine/medialists/src/glxattributecontext.cpp Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/uiengine/medialists/src/glxattributecontext.cpp Fri Apr 16 14:58:46 2010 +0300 @@ -414,3 +414,53 @@ iDefaultSpecSize = TSize(aWidth, aHeight); } + +// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- +// CGlxDefaultListAttributeContext +// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- +// + +// NewL +// ----------------------------------------------------------------------------- +// +EXPORT_C CGlxDefaultListAttributeContext* CGlxDefaultListAttributeContext::NewL() + { + TRACER("CGlxDefaultListAttributeContext::NewL"); + + CGlxDefaultListAttributeContext* obj = new (ELeave) CGlxDefaultListAttributeContext(); + return obj; + } + +// ----------------------------------------------------------------------------- +// Constructor +// Sets the iterator of base class to be TGlxFromFocusOutwardIterator +// ----------------------------------------------------------------------------- +// +CGlxDefaultListAttributeContext::CGlxDefaultListAttributeContext() : + CGlxAttributeContext(&iFromVisibleIndexIterator) + { + } + +// ----------------------------------------------------------------------------- +// Destructor +// ----------------------------------------------------------------------------- +// +EXPORT_C CGlxDefaultListAttributeContext::~CGlxDefaultListAttributeContext() + { + TRACER("CGlxDefaultListAttributeContext::Destructor"); + + } + +// ---------------------------------------------------------------------------- +// Set range offsets +// ---------------------------------------------------------------------------- +// +EXPORT_C void CGlxDefaultListAttributeContext::SetRangeOffsets(TInt aFrontOffset, TInt aRearOffset) + { + TRACER("CGlxDefaultListAttributeContext::SetRangeOffsets"); + + iFromVisibleIndexIterator.SetRangeOffsets(aRearOffset, aFrontOffset); + } + diff -r 74c9f037fd5d -r 99ad1390cd33 ui/uiengine/medialists/src/glxcachemanager.cpp --- a/ui/uiengine/medialists/src/glxcachemanager.cpp Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/uiengine/medialists/src/glxcachemanager.cpp Fri Apr 16 14:58:46 2010 +0300 @@ -593,7 +593,7 @@ #ifdef MEDIA_ID_BASED_TN_FETCH_ENABLED GLX_DEBUG2("CGlxCacheManager::MaintainCacheL() requesting TN attribute (Medialist) itemId %d", itemId.Value()); if (item.Uri().Find(KFileIdentifier) != KErrNotFound || - item.Uri().Length() && itemId.Value()) + item.Uri().Length() == 0 && itemId.Value()) #else GLX_DEBUG1("CGlxCacheManager::MaintainCacheL() requesting TN attribute (Medialist) Uri"); if (item.Uri().Find(KFileIdentifier) != KErrNotFound) diff -r 74c9f037fd5d -r 99ad1390cd33 ui/uiengine/medialists/src/glxgarbagecollector.cpp --- a/ui/uiengine/medialists/src/glxgarbagecollector.cpp Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/uiengine/medialists/src/glxgarbagecollector.cpp Fri Apr 16 14:58:46 2010 +0300 @@ -365,7 +365,7 @@ // Delete all attributes from a media object except those specified // ----------------------------------------------------------------------------- // -void CGlxGarbageCollector::DeleteOtherAttributes( CGlxCache& aCache, CGlxMedia& aMedia, +void CGlxGarbageCollector::DeleteOtherAttributes( CGlxCache& /*aCache*/, CGlxMedia& aMedia, const RArray& aAttributesToKeep ) const { TRACER("CGlxGarbageCollector::DeleteOtherAttributes"); @@ -374,17 +374,10 @@ for ( TInt attrIndex = aMedia.Count() - 1; attrIndex >= 0; attrIndex-- ) { // delete the attribute if it is not in use - const TMPXAttribute& attrib = aMedia.Attribute(attrIndex); - if ( KErrNotFound == aAttributesToKeep.Find( attrib, TMPXAttribute::Match ) ) + if ( KErrNotFound == aAttributesToKeep.Find( aMedia.Attribute( attrIndex ), TMPXAttribute::Match ) ) { - GLX_LOG_INFO( "CGlxGarbageCollector::DeleteOtherAttributes() - Deleted attribute" ); + GLX_LOG_INFO( "CGlxGarbageCollector::CleanupMediaL - Deleted attribute" ); aMedia.DeleteAttribute( attrIndex ); - if (GlxThumbnailUtility::IsFullThumbnail(attrib)) - { - GLX_DEBUG2("CGlxGarbageCollector::DeleteOtherAttributes(*** TN ***) aMediaId(%d)", - aMedia.Id().Value()); - aCache.CleanupMedia(aMedia.Id()); - } } } } diff -r 74c9f037fd5d -r 99ad1390cd33 ui/uiengine/medialists/src/glxmedialistiterator.cpp --- a/ui/uiengine/medialists/src/glxmedialistiterator.cpp Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/uiengine/medialists/src/glxmedialistiterator.cpp Fri Apr 16 14:58:46 2010 +0300 @@ -36,6 +36,10 @@ const TInt KMaxLowMemOffsetValue = 3; const TInt KMinLowMemOffsetValue = 1; +const TInt KMaxLowMemOffsetValueList = 10; +const TInt KMinLowMemOffsetValueList = 6; +const TInt KRearOffsetListValue = 2; + EXPORT_C TGlxSequentialIterator::TGlxSequentialIterator() { TRACER("TGlxSequentialIterator::TGlxSequentialIterator"); @@ -65,7 +69,7 @@ TInt TGlxSequentialIterator::operator++(TInt) { TRACER("TGlxSequentialIterator::operator++"); - + iCurrentItem++; if (iCurrentItem < iList->Count() && iCurrentItem < iRange ) { @@ -411,6 +415,145 @@ // Constructor // ----------------------------------------------------------------------------- // +EXPORT_C TGlxFromVisibleIndexOutwardListIterator::TGlxFromVisibleIndexOutwardListIterator() + { + TRACER("TGlxFromVisibleIndexOutwardListIterator::TGlxFromVisibleIndexOutwardListIterator"); + iCurrentItem = 0; + iFrontOffset = 0; + iRearOffset = 0; + iList = NULL; + } + +// ----------------------------------------------------------------------------- +// Destructor +// ----------------------------------------------------------------------------- +// +EXPORT_C TGlxFromVisibleIndexOutwardListIterator::~TGlxFromVisibleIndexOutwardListIterator() + { + TRACER("TGlxFromVisibleIndexOutwardListIterator::~TGlxFromVisibleIndexOutwardListIterator"); + } + +// ---------------------------------------------------------------------------- +// Set range offsets +// ---------------------------------------------------------------------------- +// +EXPORT_C void TGlxFromVisibleIndexOutwardListIterator::SetRangeOffsets(TInt aRearOffset, + TInt aFrontOffset) + { + TRACER("TGlxFromVisibleIndexOutwardListIterator::SetRangeOffsets"); + __ASSERT_DEBUG(aRearOffset >= 0 && aFrontOffset >= 0, Panic(EGlxPanicIllegalArgument)); + iFrontOffset = aFrontOffset; + iRearOffset = aRearOffset; + iOriginalFrontOffset = iFrontOffset; + iOriginalRearOffset = iRearOffset; + } + +// ----------------------------------------------------------------------------- +// Set to first item +// ----------------------------------------------------------------------------- +// +void TGlxFromVisibleIndexOutwardListIterator::SetToFirst(const MGlxMediaList* aList) + { + TRACER("TGlxFromVisibleIndexOutwardListIterator::SetToFirst"); + __ASSERT_DEBUG(aList != NULL, Panic(EGlxPanicNullPointer)); + + iList = aList; + iCurrentItem = 0; + } + +// ----------------------------------------------------------------------------- +// Return the item index or KErrNotFound, and goes to next +// ----------------------------------------------------------------------------- +// +TInt TGlxFromVisibleIndexOutwardListIterator::operator++(TInt) + { + TRACER("TGlxFromVisibleIndexOutwardListIterator::operator++"); + __ASSERT_DEBUG(iList != NULL, Panic(EGlxPanicNullPointer)); + + TInt count = iList->Count(); + if (count <= 0) + { + return KErrNotFound; + } + + if (iOriginalFrontOffset > KMaxLowMemOffsetValue && + iOriginalRearOffset > KMaxLowMemOffsetValue) + { + TInt freeMemory = 0; + HAL::Get( HALData::EMemoryRAMFree, freeMemory ); + if ( freeMemory < KGlxUpperMemoryLimitForCacheSize && + freeMemory > KGlxLowerMemoryLimitForCacheSize ) + { + iFrontOffset = KMaxLowMemOffsetValueList; + iRearOffset = KRearOffsetListValue; + } + else if ( freeMemory < KGlxLowerMemoryLimitForCacheSize ) + { + iFrontOffset = KMinLowMemOffsetValueList; + iRearOffset = KRearOffsetListValue; + } + else if (iFrontOffset != iOriginalFrontOffset + && iRearOffset!= iOriginalRearOffset) + { + iFrontOffset = Max(iFrontOffset, iOriginalFrontOffset ); + iRearOffset = Max(iRearOffset, iOriginalRearOffset ); + } + } + + // Check if out of bounds + if (iFrontOffset + iRearOffset < iCurrentItem || count <= iCurrentItem) + { + return KErrNotFound; + } + + TInt index = iList->VisibleWindowIndex() + iCurrentItem ; + iCurrentItem++; + + // The index may be below 0 or above count. Normalise back to list indexes. + return GlxListUtils::NormalizedIndex(index, count); + } + +// ----------------------------------------------------------------------------- +// Return ETrue if index is within range, EFalse otherwise +// ----------------------------------------------------------------------------- +// +TBool TGlxFromVisibleIndexOutwardListIterator::InRange(TInt aIndex) const + { + TRACER("TGlxFromVisibleIndexOutwardListIterator::InRange"); + TInt count = iList->Count(); + + // Handle the case where range is longer than count separately, because looping will + // confuse otherwise + if (count <= iRearOffset + iFrontOffset) + { + // Range is longer than count, must be in range + return ETrue; + } + TInt focusIndex; + if (!iList->VisibleWindowIndex()) + focusIndex = 0; + else + focusIndex = iList->VisibleWindowIndex(); + + TInt firstInRange = GlxListUtils::NormalizedIndex(focusIndex - iRearOffset, count); + TInt lastInRange = GlxListUtils::NormalizedIndex(focusIndex + iFrontOffset, count); + + if (firstInRange <= lastInRange) + { + // Normal case: | F-------L | + return aIndex >= firstInRange && aIndex <= lastInRange; + } + else + { + // Looping case: |----L F----| + return aIndex <= lastInRange || aIndex >= firstInRange; + } + } + +// ----------------------------------------------------------------------------- +// Constructor +// ----------------------------------------------------------------------------- +// EXPORT_C TGlxFromIndexOutwardBlockyIterator::TGlxFromIndexOutwardBlockyIterator( const MGlxIndex& aIndexFunctor ) : iIndexFunctor( aIndexFunctor ) diff -r 74c9f037fd5d -r 99ad1390cd33 ui/uiengine/medialistwrapper/inc/glxmlwrapper_p.h --- a/ui/uiengine/medialistwrapper/inc/glxmlwrapper_p.h Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/uiengine/medialistwrapper/inc/glxmlwrapper_p.h Fri Apr 16 14:58:46 2010 +0300 @@ -32,6 +32,8 @@ class CGlxThumbnailContext; class HbIcon; class CGlxDefaultAttributeContext; +class CGlxDefaultThumbnailContext; +class CGlxDefaultListAttributeContext; //to use first call GlxMLWrapperPrivate::Instance then set the mode by calling GlxMLWrapperPrivate::SetContextMode() //CLASS Declaration @@ -92,6 +94,7 @@ //todo remove comment void HandleCommandCompleteL( CMPXCommand* aCommandResult, TInt aError,MGlxMediaList* aList ); void HandleMediaL( TInt aListIndex, MGlxMediaList* aList ); void HandleItemModifiedL( const RArray& aItemIndexes, MGlxMediaList* aList ); + public: /** * RetrieveItemIcon() @@ -139,9 +142,14 @@ void CheckPtFsTBAttribute(TInt aItemIndex, const RArray& aAttributes); void CheckLsFsTBAttribute(TInt aItemIndex, const RArray& aAttributes); void CheckListAttributes(TInt aItemIndex, const RArray& aAttributes); + /* + * convert the CFbsbitmap to HbIcon + */ HbIcon *convertFBSBitmapToHbIcon(CFbsBitmap* aBitmap); - - + /* + * convert the CFbsbitmap to HbIcon and scale down upto itemWidth and itemHeight + */ + HbIcon * convertFBSBitmapToHbIcon(CFbsBitmap* aBitmap, TInt itemWidth, TInt itemHeight); private: // Instance of Media List @@ -156,27 +164,25 @@ CGlxThumbnailContext* iGridThumbnailContext; // FS related thumbnail contexts - CGlxThumbnailContext* iPtFsThumbnailContext; - CGlxThumbnailContext* iLsFsThumbnailContext; - CGlxThumbnailContext* iFocusFsThumbnailContext; + CGlxDefaultThumbnailContext* iPtFsThumbnailContext; + CGlxDefaultThumbnailContext* iLsFsThumbnailContext; + CGlxDefaultThumbnailContext* iFocusFsThumbnailContext; CGlxThumbnailContext* iFocusGridThumbnailContext; //List related contexts // Fetch context for retrieving title attribute - CGlxDefaultAttributeContext* iTitleAttributeContext; + CGlxDefaultListAttributeContext* iTitleAttributeContext; // Fetch context for retrieving subtitle - CGlxDefaultAttributeContext* iSubtitleAttributeContext; + CGlxDefaultListAttributeContext* iSubtitleAttributeContext; CGlxThumbnailContext* iListThumbnailContext; // for thumbnail context - TGlxSequentialIterator iThumbnailIterator; + TGlxFromVisibleIndexOutwardListIterator iThumbnailIterator; // Iterators for Grid and FS TGlxFromManualIndexBlockyIterator iBlockyIterator; TGlxFromManualIndexBlockyIterator iBlockyIteratorForFocus; - TGlxFromFocusOutwardIterator iFsFromFocusOutwardIterator; - TGlxFromFocusOutwardIterator iFsFromFocusOutwardIteratorForFocus; //Variables for checking the active contexts //todo merge all these variables into 1 and have bitwise operation on them diff -r 74c9f037fd5d -r 99ad1390cd33 ui/uiengine/medialistwrapper/src/glxmlwrapper_p.cpp --- a/ui/uiengine/medialistwrapper/src/glxmlwrapper_p.cpp Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/uiengine/medialistwrapper/src/glxmlwrapper_p.cpp Fri Apr 16 14:58:46 2010 +0300 @@ -42,18 +42,20 @@ #include "glxmlwrapper_p.h" #include "glxmlgenericobserver.h" #include "glxattributeretriever.h" +#include "glxicondefs.h" //Contains the icon names/Ids //#define GLXPERFORMANCE_LOG #include //constant declaration -const TInt KItemsPerPage(18); const TInt KTBAttributeAvailable(1); const TInt KTBAttributeUnavailable(0); const TInt KTBAttributeCorrupt(-1); const TInt KListDataWindowSize(10); -const TInt KGridTNWIdth (128); -const TInt KGridTNHeight (128); +const TInt KGridTNWIdth (127); +const TInt KGridTNHeight (110); +const TInt KGridTNPTWIdth (119); +const TInt KGridTNPTHeight (103); const TInt KFullScreenTNLSWidth (640); const TInt KFullScreenTNLSHeight (360); const TInt KFullScreenTNPTWidth (360); @@ -119,8 +121,6 @@ CreateMediaListAlbumItemL(aCollectionId, aHierarchyId,aFilterType); } iMLGenericObserver = CGlxMLGenericObserver::NewL(*iMediaList,this); - iFsFromFocusOutwardIterator.SetRangeOffsets(2,2); - iFsFromFocusOutwardIteratorForFocus.SetRangeOffsets(0,0); iBlockyIteratorForFocus.SetRangeOffsets(0,0); } @@ -174,7 +174,7 @@ { if(NULL == iTitleAttributeContext) { - iTitleAttributeContext = CGlxDefaultAttributeContext::NewL(); + iTitleAttributeContext = CGlxDefaultListAttributeContext::NewL(); iTitleAttributeContext->SetRangeOffsets( KListDataWindowSize, KListDataWindowSize ); iTitleAttributeContext->AddAttributeL( KMPXMediaGeneralTitle ); @@ -182,7 +182,7 @@ } if(NULL == iSubtitleAttributeContext) { - iSubtitleAttributeContext = CGlxDefaultAttributeContext::NewL(); + iSubtitleAttributeContext = CGlxDefaultListAttributeContext::NewL(); iSubtitleAttributeContext->SetRangeOffsets( KListDataWindowSize, KListDataWindowSize ); iSubtitleAttributeContext->AddAttributeL( @@ -192,10 +192,10 @@ } if(NULL == iListThumbnailContext) { - iListThumbnailContext = CGlxThumbnailContext::NewL( &iThumbnailIterator ); // set the thumbnail context - iThumbnailIterator.SetRange( 10 ); - iListThumbnailContext->SetDefaultSpec( KGridTNWIdth,KGridTNHeight ); - iMediaList->AddContextL(iListThumbnailContext ,KGlxFetchContextPriorityNormal ); + iThumbnailIterator.SetRangeOffsets(KListDataWindowSize,2); + iListThumbnailContext = CGlxThumbnailContext::NewL(&iThumbnailIterator); + iListThumbnailContext->SetDefaultSpec(KGridTNWIdth,KGridTNHeight ); + iMediaList->AddContextL(iListThumbnailContext ,KGlxFetchContextPriorityNormal ); } iPtListContextActivated = ETrue; } @@ -204,7 +204,7 @@ { if(NULL == iTitleAttributeContext) { - iTitleAttributeContext = CGlxDefaultAttributeContext::NewL(); + iTitleAttributeContext = CGlxDefaultListAttributeContext::NewL(); iTitleAttributeContext->SetRangeOffsets( KListDataWindowSize, KListDataWindowSize ); iTitleAttributeContext->AddAttributeL( KMPXMediaGeneralTitle ); iMediaList->AddContextL( iTitleAttributeContext, KMaxTInt ); @@ -220,46 +220,40 @@ // void GlxMLWrapperPrivate::SetThumbnailContextL(GlxContextMode aContextMode) { - TRACER("GlxMLWrapperPrivate::SetThumbnailContext()"); - if(aContextMode == GlxContextGrid) { + TRACER("GlxMLWrapperPrivate::SetThumbnailContext()"); + if( aContextMode == GlxContextLsGrid || aContextMode == GlxContextPtGrid) { + if(!iGridContextActivated) { + CreateGridContextL(); + } + + if(iPtFsContextActivated) { + RemovePtFsContext(); + } + + if(iLsFsContextActivated) { + RemoveLsFsContext(); + } + } + + if(aContextMode == GlxContextLsFs && !iLsFsContextActivated) { if(!iGridContextActivated) { CreateGridContextL(); } - - if(iPtFsContextActivated) - { + if(iPtFsContextActivated) { RemovePtFsContext(); - } - - if(iLsFsContextActivated) - { - RemoveLsFsContext(); - } } - if(aContextMode == GlxContextLsFs && !iLsFsContextActivated) - { - if(!iGridContextActivated) - { + CreateLsFsContextL(); + } + + if(aContextMode == GlxContextPtFs && !iPtFsContextActivated) { + if(!iGridContextActivated) { CreateGridContextL(); - } - if(iPtFsContextActivated) - { - RemovePtFsContext(); - } - CreateLsFsContextL(); } - if(aContextMode == GlxContextPtFs && !iPtFsContextActivated) - { - if(!iGridContextActivated) - { - CreateGridContextL(); - } - if(iLsFsContextActivated) - { + if(iLsFsContextActivated) { RemoveLsFsContext(); - } + } CreatePtFsContextL(); - } + } } // --------------------------------------------------------------------------- @@ -292,20 +286,22 @@ // void GlxMLWrapperPrivate::CreateLsFsContextL() { - TRACER("GlxMLWrapperPrivate::CreateGridContextL()"); - if(iLsFsThumbnailContext && !iLsFsContextActivated) - { - delete iLsFsThumbnailContext; - iLsFsThumbnailContext = NULL; - } - if(!iLsFsContextActivated) - { - iLsFsThumbnailContext = CGlxThumbnailContext::NewL( &iFsFromFocusOutwardIterator ); // set the thumbnail context - iLsFsThumbnailContext->SetDefaultSpec( KFullScreenTNLSWidth, KFullScreenTNLSHeight ); //todo get these image sizes from the layout. - + TRACER("GlxMLWrapperPrivate::CreateGridContextL()"); + if(iLsFsThumbnailContext && !iLsFsContextActivated) + { + delete iLsFsThumbnailContext; + iLsFsThumbnailContext = NULL; + } + if(!iLsFsContextActivated) + { + iLsFsThumbnailContext = CGlxDefaultThumbnailContext::NewL(); + iLsFsThumbnailContext->SetRangeOffsets(2,2); + iLsFsThumbnailContext->SetDefaultSpec( KFullScreenTNLSWidth, KFullScreenTNLSHeight ); //todo get these image sizes from the layout. + if(!iFocusFsThumbnailContext) { - iFocusFsThumbnailContext = CGlxThumbnailContext::NewL( &iFsFromFocusOutwardIteratorForFocus ); // set Focus FS thumbthe thumbnail context + iFocusFsThumbnailContext = CGlxDefaultThumbnailContext::NewL(); + iFocusFsThumbnailContext->SetRangeOffsets(0,0); iFocusFsThumbnailContext->SetDefaultSpec( KFullScreenTNLSWidth, KFullScreenTNLSHeight ); //todo get these image sizes from the layout. } if(!iFocusGridThumbnailContext) @@ -313,16 +309,15 @@ iFocusGridThumbnailContext = CGlxThumbnailContext::NewL( &iBlockyIteratorForFocus ); // set the thumbnail context for Focus Grid iFocusGridThumbnailContext->SetDefaultSpec( KGridTNWIdth, KGridTNHeight ); //todo get these image sizes from the layout. } - + // show static items if required iMediaList->SetStaticItemsEnabled(EFalse); iMediaList->AddContextL(iFocusFsThumbnailContext, 7 ); // Temp will change this number iMediaList->AddContextL(iFocusGridThumbnailContext, 8 ); // Temp will change this number - iMediaList->AddContextL(iLsFsThumbnailContext, KGlxFetchContextPriorityGridViewFullscreenVisibleThumbnail ); - iLsFsContextActivated = ETrue; - } - - } + iMediaList->AddContextL(iLsFsThumbnailContext, KGlxFetchContextPriorityGridViewFullscreenVisibleThumbnail ); + iLsFsContextActivated = ETrue; + } + } // --------------------------------------------------------------------------- // CreatePtFsContextL @@ -330,37 +325,38 @@ // void GlxMLWrapperPrivate::CreatePtFsContextL() { - TRACER("GlxMLWrapperPrivate::CreateGridContextL()"); - if(iPtFsThumbnailContext && !iPtFsContextActivated) - { - delete iPtFsThumbnailContext; - iPtFsThumbnailContext = NULL; - } - if(!iPtFsContextActivated) - { - iPtFsThumbnailContext = CGlxThumbnailContext::NewL( &iFsFromFocusOutwardIterator ); // set the thumbnail context - iPtFsThumbnailContext->SetDefaultSpec( KFullScreenTNPTWidth, KFullScreenTNPTHeight ); //todo get these image sizes from the layout. - - if(!iFocusFsThumbnailContext) - { - iFocusFsThumbnailContext = CGlxThumbnailContext::NewL( &iFsFromFocusOutwardIteratorForFocus ); // set Focus FS thumbthe thumbnail context - iFocusFsThumbnailContext->SetDefaultSpec( KFullScreenTNLSWidth, KFullScreenTNLSHeight ); //todo get these image sizes from the layout. - } - if(!iFocusGridThumbnailContext) - { - iFocusGridThumbnailContext = CGlxThumbnailContext::NewL( &iBlockyIteratorForFocus ); // set the thumbnail context for Focus Grid - iFocusGridThumbnailContext->SetDefaultSpec( KGridTNWIdth, KGridTNHeight ); //todo get these image sizes from the layout. - } - - // show static items if required + TRACER("GlxMLWrapperPrivate::CreateGridContextL()"); + if(iPtFsThumbnailContext && !iPtFsContextActivated) + { + delete iPtFsThumbnailContext; + iPtFsThumbnailContext = NULL; + } + if(!iPtFsContextActivated) + { + iPtFsThumbnailContext = CGlxDefaultThumbnailContext::NewL(); // set the thumbnail context + iPtFsThumbnailContext->SetRangeOffsets(2,2); + iPtFsThumbnailContext->SetDefaultSpec( KFullScreenTNPTWidth, KFullScreenTNPTHeight ); //todo get these image sizes from the layout. + + if(!iFocusFsThumbnailContext) + { + iFocusFsThumbnailContext = CGlxDefaultThumbnailContext::NewL(); + iFocusFsThumbnailContext->SetRangeOffsets(0,0); + iFocusFsThumbnailContext->SetDefaultSpec( KFullScreenTNLSWidth, KFullScreenTNLSHeight ); //todo get these image sizes from the layout. + } + if(!iFocusGridThumbnailContext) + { + iFocusGridThumbnailContext = CGlxThumbnailContext::NewL( &iBlockyIteratorForFocus ); // set the thumbnail context for Focus Grid + iFocusGridThumbnailContext->SetDefaultSpec( KGridTNWIdth, KGridTNHeight ); //todo get these image sizes from the layout. + } + + // show static items if required iMediaList->SetStaticItemsEnabled(EFalse); iMediaList->AddContextL(iFocusFsThumbnailContext, 7 ); // Temp will change this number iMediaList->AddContextL(iFocusGridThumbnailContext, 8 ); // Temp will change this number - iMediaList->AddContextL(iPtFsThumbnailContext, KGlxFetchContextPriorityGridViewFullscreenVisibleThumbnail ); - iPtFsContextActivated = ETrue; - } - - } + iMediaList->AddContextL(iPtFsThumbnailContext, KGlxFetchContextPriorityGridViewFullscreenVisibleThumbnail ); + iPtFsContextActivated = ETrue; + } + } // --------------------------------------------------------------------------- // RemoveGridContext @@ -543,67 +539,71 @@ CleanupStack::PopAndDestroy(path); } -// --------------------------------------------------------------------------- -// retrieveItemIcon -// --------------------------------------------------------------------------- -// +/* + * retrieveItemIcon + */ HbIcon* GlxMLWrapperPrivate::RetrieveItemIcon(int aItemIndex, GlxTBContextType aTBContextType) - { - TInt itemHeight = 0; - TInt itemWidth = 0; - switch (aTBContextType) - { - case GlxTBContextGrid: - { - itemHeight = KGridTNHeight; - itemWidth = KGridTNWIdth; - } - break; - case GlxTBContextPtFs: - { - itemHeight = KFullScreenTNPTHeight; - itemWidth = KFullScreenTNPTWidth; - } - break; - case GlxTBContextLsFs: - { - itemHeight = KFullScreenTNLSHeight; - itemWidth = KFullScreenTNLSWidth; - } - break; - } - const TGlxMedia& item = iMediaList->Item( aItemIndex ); - TMPXAttribute thumbnailAttribute(KGlxMediaIdThumbnail, - GlxFullThumbnailAttributeId( ETrue,itemWidth,itemHeight ) ); //todo map icon size with actual mode - const CGlxThumbnailAttribute* value = item.ThumbnailAttribute( - thumbnailAttribute ); - TInt tnError = GlxErrorManager::HasAttributeErrorL( - item.Properties(), KGlxMediaIdThumbnail ); - TSize iconSize(itemWidth, itemHeight); - - if (value) - { - if(value->iBitmap != NULL) - { - GLX_LOG_INFO1("### GlxMLWrapperPrivate::RetrieveItemIcon value-Index is %d",aItemIndex); - return (convertFBSBitmapToHbIcon(value->iBitmap)); - } - } - /*else if (item.GetIconInfo(icon)) //todo will be required if we are planning to have static item else remove - { - GLX_LOG_INFO1("### GlxMLWrapperPrivate::HandleAttributesAvailableL GetIconInfo-Index is %d",aItemIndex); - }*/ - else if( tnError == KErrCANoRights) - { - //handle DRM case - } - else if( tnError ) - { - return (new HbIcon(":/data/corrupt.svg")); - } - GLX_LOG_INFO1("### GlxMLWrapperPrivate::RetrieveItemIcon value-Index is %d and have returned empty icon",aItemIndex); - return NULL; - } +{ + TInt itemHeight = 0; + TInt itemWidth = 0; + switch (aTBContextType) { + case GlxTBContextGrid: { + itemHeight = KGridTNHeight; + itemWidth = KGridTNWIdth; + } + break; + + case GlxTBContextPtFs: { + itemHeight = KFullScreenTNPTHeight; + itemWidth = KFullScreenTNPTWidth; + } + break; + + case GlxTBContextLsFs: { + itemHeight = KFullScreenTNLSHeight; + itemWidth = KFullScreenTNLSWidth; + } + break; + + default : + break; + } + + const TGlxMedia& item = iMediaList->Item( aItemIndex ); + TMPXAttribute thumbnailAttribute( KGlxMediaIdThumbnail, + GlxFullThumbnailAttributeId( ETrue, itemWidth, itemHeight ) ); //todo map icon size with actual mode + const CGlxThumbnailAttribute* value = item.ThumbnailAttribute( thumbnailAttribute ); + TInt tnError = GlxErrorManager::HasAttributeErrorL( item.Properties(), KGlxMediaIdThumbnail ); + + if ( value && value->iBitmap != NULL ) { + if( aTBContextType == GlxTBContextGrid ) { + GLX_LOG_INFO1("### GlxMLWrapperPrivate::RetrieveItemIcon value-Index is %d",aItemIndex); + + if ( iContextMode == GlxContextPtGrid ) { + return convertFBSBitmapToHbIcon( value->iBitmap , KGridTNPTWIdth, KGridTNPTHeight); + } + else { + return convertFBSBitmapToHbIcon( value->iBitmap ); + } + } + else { + return convertFBSBitmapToHbIcon( value->iBitmap, itemWidth, itemHeight ) ; + } + } + /*else if (item.GetIconInfo(icon)) //todo will be required if we are planning to have static item else remove + { + GLX_LOG_INFO1("### GlxMLWrapperPrivate::HandleAttributesAvailableL GetIconInfo-Index is %d",aItemIndex); + }*/ + else if( tnError == KErrCANoRights) { + //handle DRM case + } + else if( tnError ) { + return (new HbIcon(GLXICON_CORRUPT)); + } + + GLX_LOG_INFO1("### GlxMLWrapperPrivate::RetrieveItemIcon value-Index is %d and have returned empty icon",aItemIndex); + return NULL; +} // --------------------------------------------------------------------------- // RetrieveListTitle // --------------------------------------------------------------------------- @@ -940,7 +940,7 @@ // GetItemCount // --------------------------------------------------------------------------- // - HbIcon * GlxMLWrapperPrivate::convertFBSBitmapToHbIcon(CFbsBitmap* aBitmap) +HbIcon * GlxMLWrapperPrivate::convertFBSBitmapToHbIcon(CFbsBitmap* aBitmap) { GLX_LOG_INFO1("### GlxMLWrapperPrivate::convertFBSBitmapToHbIcon %d", 0); aBitmap->LockHeap(); @@ -950,10 +950,31 @@ //QImage share the memory occupied by data QImage image(data, aBitmap->SizeInPixels().iWidth, aBitmap->SizeInPixels().iHeight, bytesPerLine, QImage::Format_RGB16); aBitmap->UnlockHeap(); - HbIcon* targetIcon = new HbIcon(QIcon(QPixmap::fromImage(image))); + HbIcon* targetIcon = new HbIcon( QIcon( QPixmap::fromImage(image) ) ); return targetIcon; } +HbIcon * GlxMLWrapperPrivate::convertFBSBitmapToHbIcon(CFbsBitmap* aBitmap, TInt itemWidth, TInt itemHeight) +{ + GLX_LOG_INFO1("### GlxMLWrapperPrivate::convertFBSBitmapToHbIcon 1 %d", 0); + + aBitmap->LockHeap(); + TUint32 *tempData = aBitmap->DataAddress(); + uchar *data = (uchar *)(tempData); + int bytesPerLine = aBitmap->ScanLineLength(aBitmap->SizeInPixels().iWidth , aBitmap->DisplayMode()); + //QImage share the memory occupied by data + QImage image(data, aBitmap->SizeInPixels().iWidth, aBitmap->SizeInPixels().iHeight, bytesPerLine, QImage::Format_RGB16); + + QPixmap pixmap = QPixmap::fromImage(image); + if ( aBitmap->SizeInPixels().iWidth > itemWidth || aBitmap->SizeInPixels().iHeight ) { + pixmap = pixmap.scaled( itemWidth, itemHeight, Qt::KeepAspectRatio ); + } + + aBitmap->UnlockHeap(); + HbIcon* targetIcon = new HbIcon( QIcon( pixmap ) ); + return targetIcon; +} + // --------------------------------------------------------------------------- // GetFocusIndex // --------------------------------------------------------------------------- diff -r 74c9f037fd5d -r 99ad1390cd33 ui/uiengine/model/listmodel/src/glxalbummodel.cpp --- a/ui/uiengine/model/listmodel/src/glxalbummodel.cpp Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/uiengine/model/listmodel/src/glxalbummodel.cpp Fri Apr 16 14:58:46 2010 +0300 @@ -20,6 +20,13 @@ #include #include #include +#include + +#include "glxicondefs.h" //Contains the icon names/Ids + +const QColor KListOddRowColor(211, 211, 211, 127); +const QColor KListEvenRowColor(255, 250, 250, 127); + GlxAlbumModel::GlxAlbumModel(GlxModelParm & modelParm):mContextMode(GlxContextInvalid) { @@ -32,7 +39,7 @@ mContextMode = GlxContextSelectionList; //todo get this Default icon from some generic path and not directly. - mDefaultIcon = new HbIcon(":/data/All_default.png"); + mDefaultIcon = new HbIcon(GLXICON_DEFAULT); int err = connect(mMLWrapper, SIGNAL(updateItem(int, GlxTBContextType)), this, SLOT(itemUpdated1(int, GlxTBContextType))); qDebug("updateItem() connection status %d", err); @@ -120,7 +127,18 @@ return *itemIcon; } } - + case Qt::BackgroundRole: + { + if (rowIndex % 2 == 0) + { + return QBrush(KListEvenRowColor); + } + else + { + return QBrush(KListOddRowColor); + } + } + case GlxFocusIndexRole : idx = getFocusIndex(); return idx.row(); @@ -147,7 +165,14 @@ return TRUE; } } - + + if ( GlxVisualWindowIndex == role ) { + if ( value.isValid() && value.canConvert () ) { + mMLWrapper->setVisibleWindowIndex( value.value () ); + return TRUE; + } + } + if ( GlxSelectedIndexRole == role ) { if ( value.isValid() && value.canConvert () ) { setSelectedIndex( index( value.value (), 0) ); diff -r 74c9f037fd5d -r 99ad1390cd33 ui/uiengine/model/mediamodel/inc/glxmediamodel.h --- a/ui/uiengine/model/mediamodel/inc/glxmediamodel.h Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/uiengine/model/mediamodel/inc/glxmediamodel.h Fri Apr 16 14:58:46 2010 +0300 @@ -100,6 +100,7 @@ QCache itemExternalIconCache; int externalDataCount; int mFocusIndex; + int mSubState; }; diff -r 74c9f037fd5d -r 99ad1390cd33 ui/uiengine/model/mediamodel/src/glxmediamodel.cpp --- a/ui/uiengine/model/mediamodel/src/glxmediamodel.cpp Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/uiengine/model/mediamodel/src/glxmediamodel.cpp Fri Apr 16 14:58:46 2010 +0300 @@ -30,12 +30,16 @@ //#define GLXPERFORMANCE_LOG #include +#include "glxicondefs.h" //Contains the icon names/Ids + GlxMediaModel::GlxMediaModel(GlxModelParm & modelParm) { qDebug("GlxMediaModel::GlxMediaModel"); + mMLWrapper = new GlxMLWrapper(modelParm.collection(),0,EGlxFilterImage); - mMLWrapper->setContextMode(GlxContextGrid); - mContextMode = GlxContextGrid; + mMLWrapper->setContextMode( modelParm.contextMode() ); + mContextMode = modelParm.contextMode( ) ; + int err = connect(mMLWrapper, SIGNAL(updateItem(int, GlxTBContextType)), this, SLOT(itemUpdated1(int, GlxTBContextType))); qDebug("updateItem() connection status %d", err); err = connect(mMLWrapper, SIGNAL(itemCorrupted(int)), this, SLOT(itemCorrupted(int))); @@ -47,14 +51,17 @@ err = connect(this, SIGNAL(iconAvailable(int, HbIcon*, GlxTBContextType)), this, SLOT(updateItemIcon(int, HbIcon*, GlxTBContextType))); qDebug("iconAvailable() connection status %d", err); //itemadded.resize(mMLWrapper->getItemCount()); + itemIconCache.setMaxCost(50); itemFsIconCache.setMaxCost(5); itemExternalIconCache.setMaxCost(0); + //todo get this Default icon from some generic path and not directly. - m_DefaultIcon = new HbIcon(":/data/All_default.png"); + m_DefaultIcon = new HbIcon(GLXICON_DEFAULT); mExternalItems = NULL; externalDataCount = 0; mFocusIndex = -1; + mSubState = -1; } GlxMediaModel::~GlxMediaModel() @@ -86,6 +93,10 @@ itemFsIconCache.clear(); mMLWrapper->setContextMode(contextMode); mContextMode = contextMode; + if ( mContextMode == GlxContextLsGrid || mContextMode == GlxContextPtGrid ) { + itemIconCache.clear(); + emit dataChanged( index( 0, 0), index( rowCount() - 1, 0) ); + } } } @@ -162,11 +173,6 @@ //retrieve Data from Media List if (role == Qt::DecorationRole) { - // char temp[100]; - // sprintf(temp, "Thumbnail %d requiest time ", index.row()); - // WRITE_TIMESTAMP(temp) - // sprintf(temp, "Response time of Thumbnail Request %d", index.row()); - // PERFORMANCE_ADV( d1, temp) { itemIcon = GetGridIconItem(itemIndex,GlxTBContextGrid); if(itemIcon == NULL || itemIcon->isNull() ){ itemIcon = m_DefaultIcon; @@ -225,6 +231,10 @@ qDebug("GlxMediaModel:: GlxFrameCount "); return (mMLWrapper->retrieveItemFrameCount(itemIndex)); } + + if ( role == GlxSubStateRole ) { + return mSubState; + } return QVariant(); } @@ -413,6 +423,11 @@ return TRUE; } } + + if ( role == GlxSubStateRole && value.isValid() && value.canConvert ()) { + mSubState = value.value () ; + return TRUE; + } return FALSE; } diff -r 74c9f037fd5d -r 99ad1390cd33 ui/viewmanagement/bwins/glxstatehandleru.def --- a/ui/viewmanagement/bwins/glxstatehandleru.def Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/viewmanagement/bwins/glxstatehandleru.def Fri Apr 16 14:58:46 2010 +0300 @@ -31,4 +31,5 @@ ?exitMarkingMode@GlxStateManager@@QAEXXZ @ 30 NONAME ; void GlxStateManager::exitMarkingMode(void) ?removeCurrentModel@GlxStateManager@@QAEXXZ @ 31 NONAME ; void GlxStateManager::removeCurrentModel(void) ?createModel@GlxStateManager@@AAEXHW4NavigationDir@@@Z @ 32 NONAME ; void GlxStateManager::createModel(int, enum NavigationDir) + ?setFullScreenContext@GlxStateManager@@AAEXXZ @ 33 NONAME ; void GlxStateManager::setFullScreenContext(void) diff -r 74c9f037fd5d -r 99ad1390cd33 ui/viewmanagement/eabi/glxstatehandleru.def --- a/ui/viewmanagement/eabi/glxstatehandleru.def Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/viewmanagement/eabi/glxstatehandleru.def Fri Apr 16 14:58:46 2010 +0300 @@ -31,4 +31,5 @@ _ZNK15GlxStateManager10metaObjectEv @ 30 NONAME _ZTI15GlxStateManager @ 31 NONAME _ZTV15GlxStateManager @ 32 NONAME + _ZN15GlxStateManager20setFullScreenContextEv @ 33 NONAME diff -r 74c9f037fd5d -r 99ad1390cd33 ui/viewmanagement/statehandler/inc/glxactionhandler.h --- a/ui/viewmanagement/statehandler/inc/glxactionhandler.h Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/viewmanagement/statehandler/inc/glxactionhandler.h Fri Apr 16 14:58:46 2010 +0300 @@ -16,7 +16,7 @@ */ - + #ifndef GLXACTIONHANDLER_H #define GLXACTIONHANDLER_H @@ -24,6 +24,7 @@ #include class GlxCommandHandler; +class QModelIndex; class GlxActionHandler : public QObject { @@ -36,12 +37,8 @@ signals : -public slots: - void handleAction(qint32 commandId,int collectionId); - -protected: - -private slots: +public : + void handleAction(qint32 commandId,int collectionId,QList indexList = QList()); private://functions diff -r 74c9f037fd5d -r 99ad1390cd33 ui/viewmanagement/statehandler/inc/glxfullscreenstate.h --- a/ui/viewmanagement/statehandler/inc/glxfullscreenstate.h Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/viewmanagement/statehandler/inc/glxfullscreenstate.h Fri Apr 16 14:58:46 2010 +0300 @@ -22,13 +22,6 @@ #include -typedef enum -{ - NO_FULLSCREEN_S, - EXTERNAL_S, - IMAGEVIEWER_S //don't add any state before this -} FullScreenState; - class GlxFullScreenState : public GlxState { public : diff -r 74c9f037fd5d -r 99ad1390cd33 ui/viewmanagement/statehandler/inc/glxgridstate.h --- a/ui/viewmanagement/statehandler/inc/glxgridstate.h Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/viewmanagement/statehandler/inc/glxgridstate.h Fri Apr 16 14:58:46 2010 +0300 @@ -24,13 +24,6 @@ class GlxStateManager; -typedef enum -{ - NO_GRID_S, - ALL_ITEM_S, - ALBUM_ITEM_S, -} GridState; - class GlxGridState : public GlxState { public : diff -r 74c9f037fd5d -r 99ad1390cd33 ui/viewmanagement/statehandler/inc/glxslideshowstate.h --- a/ui/viewmanagement/statehandler/inc/glxslideshowstate.h Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/viewmanagement/statehandler/inc/glxslideshowstate.h Fri Apr 16 14:58:46 2010 +0300 @@ -20,13 +20,6 @@ #include -typedef enum -{ - NO_SLIDESHOW_S, - SLIDESHOW_GRID_ITEM_S, - SLIDESHOW_ALBUM_ITEM_S, -} SlideShowState; - class GlxStateManager; class GlxSlideShowState : public GlxState diff -r 74c9f037fd5d -r 99ad1390cd33 ui/viewmanagement/statehandler/inc/glxstatemanager.h --- a/ui/viewmanagement/statehandler/inc/glxstatemanager.h Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/viewmanagement/statehandler/inc/glxstatemanager.h Fri Apr 16 14:58:46 2010 +0300 @@ -107,6 +107,10 @@ * Factory function to create the grid model. */ void createGridModel(int internalState, NavigationDir dir = NO_DIR); +/* + * To set the fullscreen context based on the currrent orientation + */ + void setFullScreenContext(); void eventHandler(qint32 &id); /* * A function to care the exit for application, in the case when application launch from internal and external diff -r 74c9f037fd5d -r 99ad1390cd33 ui/viewmanagement/statehandler/inc/processhandler.h --- a/ui/viewmanagement/statehandler/inc/processhandler.h Fri Mar 19 09:28:59 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,49 +0,0 @@ -/* -* 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 "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - -#ifndef PROCESSHANDLER_H -#define PROCESSHANDLER_H - -// INCLUDES -#include -#include - -// FORWARD DECLARATIONS - -// CLASS DECLARATION -class ProcessHandler : public QObject - { - Q_OBJECT - - public: - ProcessHandler(QObject *parent = 0); - ~ProcessHandler(); - - public: - void StartCameraApp(); - - public Q_SLOTS: - void stateChanged(QProcess::ProcessState state); - void error(QProcess::ProcessError error); - - private: // Data - QProcess* process; - - }; - -#endif //PROCESSHANDLER_H diff -r 74c9f037fd5d -r 99ad1390cd33 ui/viewmanagement/statehandler/src/glxactionhandler.cpp --- a/ui/viewmanagement/statehandler/src/glxactionhandler.cpp Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/viewmanagement/statehandler/src/glxactionhandler.cpp Fri Apr 16 14:58:46 2010 +0300 @@ -20,6 +20,7 @@ #include #include #include "glxmediaid.h" +#include GlxActionHandler::GlxActionHandler() { @@ -32,20 +33,26 @@ mCommandHandlerList.clear(); } -void GlxActionHandler::handleAction(qint32 commandId,int collectionId) +void GlxActionHandler::handleAction(qint32 commandId,int collectionId,QModelIndexList indexList) { GlxCommandHandler* cmdHandler = NULL; switch ( commandId ) { case EGlxCmdContextAddToAlbum: commandId = EGlxCmdAddToAlbum; break; + case EGlxCmdContextDelete: commandId = EGlxCmdDelete; break; + case EGlxCmdContextAlbumDelete: commandId = EGlxCmdDelete; - collectionId = KGlxAlbumsMediaId; break; + + case EGlxCmdContextSend: + commandId = EGlxCmdSend; + break; + default : break; } @@ -57,7 +64,7 @@ addCommandHandler(commandId,cmdHandler); } if ( cmdHandler ) { - cmdHandler->executeCommand(commandId,collectionId); + cmdHandler->executeCommand(commandId,collectionId,indexList); } } diff -r 74c9f037fd5d -r 99ad1390cd33 ui/viewmanagement/statehandler/src/glxcommandhandlerfactory.cpp --- a/ui/viewmanagement/statehandler/src/glxcommandhandlerfactory.cpp Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/viewmanagement/statehandler/src/glxcommandhandlerfactory.cpp Fri Apr 16 14:58:46 2010 +0300 @@ -21,6 +21,9 @@ #include #include #include +#include +#include +#include GlxCommandHandler* GlxCommandHandlerFactory::CreateCommandHandler(int commandId) { @@ -33,6 +36,13 @@ break; case EGlxCmdRotate: cmdHandler = new GlxCommandHandlerRotate(); break; + case EGlxCmdRemoveFrom: cmdHandler = new GlxCommandHandlerRemoveFrom(); + break; + case EGlxCmdAddMedia: cmdHandler = new GlxCommandHandlerNewMedia(); + break; + + case EGlxCmdSend : cmdHandler = new GlxCommandHandlerSend(); + break; default: break; } diff -r 74c9f037fd5d -r 99ad1390cd33 ui/viewmanagement/statehandler/src/glxgridstate.cpp --- a/ui/viewmanagement/statehandler/src/glxgridstate.cpp Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/viewmanagement/statehandler/src/glxgridstate.cpp Fri Apr 16 14:58:46 2010 +0300 @@ -67,6 +67,8 @@ case EGlxCmdAddToAlbum : case EGlxCmdDelete : + case EGlxCmdRemoveFrom : + case EGlxCmdSend : mStateManager->enterMarkingMode(); mIsMarkingMode = TRUE; mCommandId = id; @@ -142,13 +144,14 @@ void GlxGridState::setTranstionParameter(NavigationDir dir, GlxEffect &effect, GlxViewEffect &viewEffect) { qDebug("GlxListState::setTranstionParameter dir = %d", dir); - if ( dir == NO_DIR) { + if ( dir == NO_DIR || dir == FORWARD_DIR) { effect = ALBUMLIST_TO_GRID ; viewEffect = BOTH_VIEW ; } - else { - effect = NO_EFFECT ; - viewEffect = NO_VIEW ; + + if ( dir == BACKWARD_DIR){ + effect = GRID_TO_ALBUMLIST ; + viewEffect = BOTH_VIEW ; } } diff -r 74c9f037fd5d -r 99ad1390cd33 ui/viewmanagement/statehandler/src/glxstatemanager.cpp --- a/ui/viewmanagement/statehandler/src/glxstatemanager.cpp Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/viewmanagement/statehandler/src/glxstatemanager.cpp Fri Apr 16 14:58:46 2010 +0300 @@ -33,7 +33,6 @@ #include #include #include -#include "processhandler.h" #include #include #include @@ -41,6 +40,7 @@ #include #include #include +#include GlxStateManager::GlxStateManager() : mAllMediaModel(NULL), mAlbumGridMediaModel(NULL), mAlbumMediaModel(NULL),mImageviewerMediaModel(NULL), mCurrentModel (NULL), mCurrentState (NULL), mActionHandler (NULL) @@ -50,7 +50,7 @@ mViewManager = new GlxViewManager(); } connect ( this, SIGNAL( setupItemsSignal() ), this, SLOT( setupItems() ), Qt::QueuedConnection ); - connect ( mViewManager, SIGNAL(actionTriggered(qint32 )), this, SLOT(actionTriggered(qint32 )) ); + connect ( mViewManager, SIGNAL(actionTriggered(qint32 )), this, SLOT(actionTriggered(qint32 )), Qt::QueuedConnection ); //TO:DO TBD through exception when it is null } @@ -80,7 +80,7 @@ qDebug( "GlxGridView::doneAction() : index %d", indexList[i].row()); mCurrentModel->setData( indexList[i], indexList[i].row(), GlxSelectedIndexRole ); } - mActionHandler->handleAction(commandId, mCollectionId); + mActionHandler->handleAction(commandId, mCollectionId,indexList); return TRUE; } @@ -287,7 +287,6 @@ switch( stateId ) { case GLX_GRIDVIEW_ID : createGridModel( mCurrentState->state(), dir ); - mCurrentModel->setData(QModelIndex(), (int)GlxContextGrid, GlxContextRole ); break; case GLX_LISTVIEW_ID : @@ -297,14 +296,15 @@ mAlbumMediaModel = new GlxAlbumModel (modelParm); } mCurrentModel = mAlbumMediaModel; + mCollectionId = KGlxCollectionPluginAlbumsImplementationUid; mCurrentModel->setData(QModelIndex(), (int)GlxContextPtList, GlxContextRole ); mViewManager->updateToolBarIcon(GLX_ALBUM_ACTION_ID); break; case GLX_FULLSCREENVIEW_ID : if ( mCurrentState->state() == IMAGEVIEWER_S) { - GlxModelParm modelParm (KGlxCollectionPluginImageViewerImplementationUid, 0); - mCurrentModel = mImageviewerMediaModel = new GlxMediaModel (modelParm); + GlxModelParm modelParm (KGlxCollectionPluginImageViewerImplementationUid, 0); + mCurrentModel = mImageviewerMediaModel = new GlxMediaModel (modelParm); } else if ( mCurrentState->state() == EXTERNAL_S) { if(!mAllMediaModel) { @@ -314,23 +314,13 @@ else { mCurrentModel = mAllMediaModel; } - mCollectionId = KGlxCollectionPluginAllImplementationUid; + mCollectionId = KGlxCollectionPluginAllImplementationUid; } - if ( mViewManager->orientation() == Qt::Horizontal ) { - mCurrentModel->setData(QModelIndex(), (int)GlxContextLsFs, GlxContextRole ); - } - else { - mCurrentModel->setData(QModelIndex(), (int)GlxContextPtFs, GlxContextRole ); - } + setFullScreenContext(); break; case GLX_DETAILSVIEW_ID : - if ( mViewManager->orientation() == Qt::Horizontal ) { - mCurrentModel->setData(QModelIndex(), (int)GlxContextLsFs, GlxContextRole ); - } - else { - mCurrentModel->setData(QModelIndex(), (int)GlxContextPtFs, GlxContextRole ); - } + setFullScreenContext(); break; case GLX_SLIDESHOWVIEW_ID : @@ -338,28 +328,33 @@ GlxModelParm modelParm ( KGlxAlbumsMediaId , 0); mCurrentModel = mAlbumGridMediaModel = new GlxMediaModel( modelParm ); } - if ( mViewManager->orientation() == Qt::Horizontal ) { - mCurrentModel->setData(QModelIndex(), (int)GlxContextLsFs, GlxContextRole ); - } - else { - mCurrentModel->setData(QModelIndex(), (int)GlxContextPtFs, GlxContextRole ); - } + setFullScreenContext(); break; default : break; } + mCurrentModel->setData( QModelIndex(), mCurrentState->state(), GlxSubStateRole ); } void GlxStateManager::createGridModel(int internalState, NavigationDir dir) { GlxModelParm modelParm; + GlxContextMode mode; + + if ( mViewManager->orientation() == Qt::Horizontal ) { + mode = GlxContextLsGrid ; + } + else { + mode = GlxContextPtGrid ; + } switch( internalState) { case ALL_ITEM_S : if ( mAllMediaModel == NULL ) { modelParm.setCollection( KGlxCollectionPluginAllImplementationUid ); modelParm.setDepth(0); + modelParm.setContextMode( mode ) ; mAllMediaModel = new GlxMediaModel( modelParm ); } mCollectionId = KGlxCollectionPluginAllImplementationUid; @@ -370,7 +365,8 @@ case ALBUM_ITEM_S : if ( dir != BACKWARD_DIR ) { modelParm.setCollection( KGlxAlbumsMediaId ); - modelParm.setDepth(0); + modelParm.setDepth(0); + modelParm.setContextMode( mode ) ; mAlbumGridMediaModel = new GlxMediaModel( modelParm ); } mCollectionId = KGlxAlbumsMediaId; @@ -381,6 +377,18 @@ default : break; } + + mCurrentModel->setData(QModelIndex(), (int)mode, GlxContextRole ); +} + +void GlxStateManager::setFullScreenContext() +{ + if ( mViewManager->orientation() == Qt::Horizontal ) { + mCurrentModel->setData(QModelIndex(), (int)GlxContextLsFs, GlxContextRole ); + } + else { + mCurrentModel->setData(QModelIndex(), (int)GlxContextPtFs, GlxContextRole ); + } } void GlxStateManager::eventHandler(qint32 &id) @@ -437,13 +445,13 @@ id = EGlxCmdHandled; break; - /*case EGlxCmdCameraOpen: + case EGlxCmdCameraOpen: { - ProcessHandler* processHandler = new ProcessHandler(this); - processHandler->StartCameraApp(); - id = EGlxCmdHandled; + QProcess::startDetached(QString("cxui.exe")); + id = EGlxCmdHandled; } - break; */ + break; + case EGlxCmdOviOpen: { HbMessageBox box(HbMessageBox::MessageTypeInformation); @@ -485,12 +493,7 @@ id = EGlxCmdHandled; break; - case EGlxCmdSend: - { - mViewManager->handleUserAction(mCurrentState->id(), id); - id = EGlxCmdHandled; - } - break; + case EGlxCmdSetupItem : emit setupItemsSignal(); @@ -543,5 +546,7 @@ qDebug("GlxStateManager::cleanupExternal"); mViewManager->deactivateCurrentView(); GlxMediaModel *glxModel = dynamic_cast(mCurrentModel); - glxModel->clearExternalItems(); + if(glxModel) { + glxModel->clearExternalItems(); + } } diff -r 74c9f037fd5d -r 99ad1390cd33 ui/viewmanagement/statehandler/src/processhandler.cpp --- a/ui/viewmanagement/statehandler/src/processhandler.cpp Fri Mar 19 09:28:59 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,115 +0,0 @@ -/* -* 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 "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - -#include "processhandler.h" -#include -#include - -ProcessHandler::ProcessHandler(QObject *parent) -: QObject(parent) - { - qDebug() << "ProcessHandler::ProcessHandler"; - process = new QProcess(this); - // Start listening process state changes - QObject::connect(process, SIGNAL(stateChanged(QProcess::ProcessState)), - this, SLOT(stateChanged(QProcess::ProcessState))); - } - -ProcessHandler::~ProcessHandler() - { - qDebug() << "ProcessHandler::~ProcessHandler"; - if (process->state() != QProcess::NotRunning) - { - // Close process if it is running - process->close(); - } - } - -void ProcessHandler::StartCameraApp() - { - qDebug() << "ProcessHandler::StartCameraApp"; - QString program = "cxui.exe"; - process->start(program); - } - -void ProcessHandler::error(QProcess::ProcessError error) - { - switch (error) - { - case QProcess::FailedToStart: - { - qDebug() << "FailedToStart"; - break; - } - case QProcess::Crashed: - { - qDebug() << "Crashed"; - break; - } - case QProcess::Timedout: - { - qDebug() << "Timedout"; - break; - } - case QProcess::ReadError: - { - qDebug() << "ReadError"; - break; - } - case QProcess::WriteError: - { - qDebug() << "WriteError"; - break; - } - case QProcess::UnknownError: - { - qDebug() << "UnknownError"; - break; - } - default: - { - break; - } - }; - } - -void ProcessHandler::stateChanged(QProcess::ProcessState state) - { - switch (state) - { - case QProcess::NotRunning: - { - qDebug() << "NotRunning"; - break; - } - case QProcess::Starting: - { - qDebug() << "Starting"; - break; - } - case QProcess::Running: - { - qDebug() << "Running"; - break; - } - default: - { - break; - } - }; - } diff -r 74c9f037fd5d -r 99ad1390cd33 ui/viewmanagement/statehandler/statehandler.pro --- a/ui/viewmanagement/statehandler/statehandler.pro Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/viewmanagement/statehandler/statehandler.pro Fri Apr 16 14:58:46 2010 +0300 @@ -31,6 +31,7 @@ ../viewmanager/inc \ ../../commandhandlers\commandhandlerbase\inc \ ../../commandhandlers\commoncommandhandlers\inc + DEFINES += BUILD_STATEMANAGER symbian: { @@ -45,7 +46,8 @@ -lglxlistmodel.dll \ -lglxexternalutility.dll \ -lglxloggerqt.dll \ - -lglxcommoncommandhandlers.dll + -lglxcommoncommandhandlers.dll \ + -lglxlogging.dll # Input HEADERS += inc/glxbasestate.h \ @@ -55,7 +57,6 @@ inc/glxliststate.h \ inc/glxstatemanager.h \ inc/glxslideshowstate.h \ - inc/processhandler.h \ inc/glxactionhandler.h \ inc/glxcommandhandlerfactory.h @@ -66,7 +67,6 @@ src/glxliststate.cpp \ src/glxstatemanager.cpp \ src/glxslideshowstate.cpp \ - src/processhandler.cpp \ src/glxactionhandler.cpp \ src/glxcommandhandlerfactory.cpp diff -r 74c9f037fd5d -r 99ad1390cd33 ui/viewmanagement/viewmanager/inc/glxmenumanager.h --- a/ui/viewmanagement/viewmanager/inc/glxmenumanager.h Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/viewmanagement/viewmanager/inc/glxmenumanager.h Fri Apr 16 14:58:46 2010 +0300 @@ -16,31 +16,50 @@ */ #include #include + class HbMenu; +class QAbstractItemModel; +class QAction; +class HbMainWindow; + +//Grid view option menu +enum { + GlxGridViewSend, + GlxGridViewSlideShow, + GlxGridViewAddToAlbum, + GlxGridViewRemoveFromAlbum, + GlxGridViewDelete +}; + class GlxMenuManager : public QObject { Q_OBJECT public : - GlxMenuManager(); + GlxMenuManager(HbMainWindow* mainWindow); ~GlxMenuManager(); - void CreateViewMenu(qint32 viewId,HbMenu* menu,bool empty = false , int subState = -1); void createMarkingModeMenu(HbMenu* menu); void ShowItemSpecificMenu(qint32 viewId,QPointF pos); + void setModel(QAbstractItemModel *model) { mModel = model ; } + void addMenu(qint32 viewId, HbMenu* menu); + void removeMenu(qint32 viewId, HbMenu* menu); + signals : void commandTriggered(qint32 commandId); -public slots: - -protected: - -private slots: - void menuItemSelected(); private: void CreateGridMenu(HbMenu* menu); void CreateListMenu(HbMenu* menu); void CreateFullscreenMenu(HbMenu* menu); - void CreateImageViewerMenu(HbMenu* menu); + void setAllActionVisibility( QList actionList, bool visible ); + int viewSubState(); + +private slots: + void menuItemSelected(); + void updateGridMenu(); + void updateFullscreenMenu(); + private: - + QAbstractItemModel *mModel; //It should point to current view model + HbMainWindow* mMainWindow; }; diff -r 74c9f037fd5d -r 99ad1390cd33 ui/viewmanagement/viewmanager/inc/glxviewmanager.h --- a/ui/viewmanagement/viewmanager/inc/glxviewmanager.h Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/viewmanagement/viewmanager/inc/glxviewmanager.h Fri Apr 16 14:58:46 2010 +0300 @@ -193,8 +193,6 @@ QList mMarkingActionList; //marking mode tool bar action list HbToolBar *mViewToolBar; //view tool bar HbToolBar *mMarkingToolBar; //marking mode tool bar - QList mSelIconPathList; //enable tool bar button icon path list - QList mDefaultIconPathList; //disalbe tool bar button icon path list HbMenu *mMenu; GlxView *mView; QAbstractItemModel *mModel; //no ownership diff -r 74c9f037fd5d -r 99ad1390cd33 ui/viewmanagement/viewmanager/src/glxmenumanager.cpp --- a/ui/viewmanagement/viewmanager/src/glxmenumanager.cpp Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/viewmanagement/viewmanager/src/glxmenumanager.cpp Fri Apr 16 14:58:46 2010 +0300 @@ -14,60 +14,25 @@ * Description: * */ -#include -#include + +//include #include #include -#include "hbmenu.h" -#include -#include +#include +#include -GlxMenuManager::GlxMenuManager() -{ -} -GlxMenuManager::~GlxMenuManager() +//user include +#include "glxviewids.h" +#include "glxmenumanager.h" +#include "glxcommandhandlers.hrh" +#include "glxmodelparm.h" + +GlxMenuManager::GlxMenuManager(HbMainWindow* mainWindow):mMainWindow(mainWindow) { } -void GlxMenuManager::CreateViewMenu(qint32 viewId,HbMenu* menu,bool empty, int subState) + +GlxMenuManager::~GlxMenuManager() { - Q_UNUSED(empty); - switch(viewId) - { - case GLX_GRIDVIEW_ID: { - qDebug()<<"GRIDVIEW MENU CREATED"; - CreateGridMenu(menu); - } - break; - - case GLX_LISTVIEW_ID: { - qDebug()<<"LISTVIEW MENU CREATED"; - CreateListMenu(menu); - } - break; - case GLX_FULLSCREENVIEW_ID:{ - //image viewer state - if(2 == subState){ - CreateImageViewerMenu(menu); - } - else{ - qDebug()<<"FULLSCREENVIEW MENU CREATED"; - CreateFullscreenMenu(menu); - } - } - break; - - case GLX_DETAILSVIEW_ID: { - //will create details specific menu later - qDebug()<<"DETAILS VIEW MENU CREATE"; - } - - case GLX_SLIDESHOWVIEW_ID : - break; - - default: - break; - - } } void GlxMenuManager::createMarkingModeMenu(HbMenu* menu) @@ -87,103 +52,178 @@ action->setData(EGlxCmdUnMarkAll); action->setVisible(FALSE); connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); - menu->setVisible(FALSE); action = menu->addAction("Exit"); action->setData(EGlxCmdUnMarkAll); action->setVisible(FALSE); connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); - menu->setVisible(FALSE); +} + +void GlxMenuManager::addMenu(qint32 viewId, HbMenu* menu) +{ + switch(viewId) { + case GLX_GRIDVIEW_ID: + connect( menu, SIGNAL( aboutToShow() ), this, SLOT( updateGridMenu() ) ); + CreateGridMenu( menu ); + break; + + case GLX_LISTVIEW_ID: + CreateListMenu ( menu ); + break; + + case GLX_FULLSCREENVIEW_ID: + connect( menu, SIGNAL( aboutToShow() ), this, SLOT( updateFullscreenMenu() ) ); + CreateFullscreenMenu( menu ); + break; + + default: + break; + } +} + +void GlxMenuManager::removeMenu(qint32 viewId, HbMenu* menu) +{ + switch(viewId) { + case GLX_GRIDVIEW_ID: + disconnect( menu, SIGNAL( aboutToShow() ), this, SLOT( updateGridMenu() ) ); + break; + + case GLX_FULLSCREENVIEW_ID: + disconnect( menu, SIGNAL( aboutToShow() ), this, SLOT( updateFullscreenMenu() ) ); + break; + + default: + break; + } } void GlxMenuManager::CreateGridMenu(HbMenu* menu) { qDebug()<<"GlxMenuManager::CreateGridMenu"; HbAction *action = NULL; + action = menu->addAction("Send"); action->setData(EGlxCmdSend); - // action->setVisible(EFalse); connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); - /*action = menu->addAction("Upload to web"); - action->setData(EGlxCmdUpload); - connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));*/ action = menu->addAction("Slide Show"); action->setData(EGlxCmdFirstSlideshow); connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); + action = menu->addAction("Add to album"); action->setData(EGlxCmdAddToAlbum); connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); - /*action = menu->addAction("Sort by"); - //action->setData(); + + action = menu->addAction("Remove From Album"); + action->setData(EGlxCmdRemoveFrom); connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); - action = menu->addAction("Setting"); - //action->setData(); - connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));*/ + action = menu->addAction("Delete"); action->setData(EGlxCmdDelete); connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); - /*action = menu->addAction("Help"); - //action->setData(); - connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); - action = menu->addAction("Exit");*/ } void GlxMenuManager::CreateListMenu(HbMenu* menu) { qDebug()<<"GlxMenuManager::CreateListMenu"; - /*HbAction *action = menu->addAction("Setting"); - //action->setData(); + HbAction *action = NULL; + + action = menu->addAction("New album"); + action->setData(EGlxCmdAddMedia); connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); - action = menu->addAction("Help"); - //action->setData(); - connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); - action = menu->addAction("Exit"); - //action->setData(); - connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));*/ } void GlxMenuManager::CreateFullscreenMenu(HbMenu* menu) { qDebug()<<"GlxMenuManager::CreateFullscreenMenu"; HbAction *action = NULL; + action = menu->addAction("Send"); action->setData(EGlxCmdSend); connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); + action = menu->addAction("Slide Show"); action->setData(EGlxCmdSelectSlideshow); connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); + action = menu->addAction("Add to album"); action->setData(EGlxCmdAddToAlbum); connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); - action = menu->addAction("Rotate"); + + action = menu->addAction("Rotate"); action->setData(EGlxCmdRotate); connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); - /*action = menu->addAction("Upload to web"); - action->setData(EGlxCmdUpload); - connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); - action = menu->addAction("Use Image"); - //action->setData(); - connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); - action = menu->addAction("Print"); - //action->setData(); - connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); - action = menu->addAction("Edit"); - //action->setData(); - connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); - action = menu->addAction("Details"); - action->setData(EGlxCmdDetailsOption); - connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); - action = menu->addAction("Help"); - //action->setData(); - connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); - action = menu->addAction("Exit"); - //action->setData(); - connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));*/ +} + +void GlxMenuManager::setAllActionVisibility( QList actionList, bool visible ) +{ + qDebug() << "GlxMenuManager::setAllActionVisibility count " << actionList.count() << " visible" << visible; + for ( int i = 0 ; i < actionList.count(); i++) { + actionList.at(i)->setVisible(visible); + } +} + +int GlxMenuManager::viewSubState() +{ + QVariant variant = mModel->data( mModel->index(0,0), GlxSubStateRole ); + if ( variant.isValid() && variant.canConvert () ) { + return variant.value() ; + } + return -1; } -void GlxMenuManager::CreateImageViewerMenu(HbMenu* menu) +void GlxMenuManager::updateGridMenu() { + qDebug() << "GlxMenuManager::updateGridMenu"; + + HbMenu *menu = qobject_cast( sender() ); + static bool isAllActionDisable = FALSE; + int rowCount = mModel->rowCount(); + QList actionList = menu->actions(); + + if ( rowCount == 0 && isAllActionDisable == FALSE) { + qDebug() << "GlxMenuManager::updateGridMenu set all visible FALSE"; + setAllActionVisibility( actionList, FALSE ); + isAllActionDisable = TRUE; + } + + if ( rowCount && isAllActionDisable == TRUE ) { + setAllActionVisibility( actionList, TRUE ); + isAllActionDisable = FALSE; + qDebug() << "GlxMenuManager::updateGridMenu set all visible TRUE" ; + } + + if ( rowCount ) { + int state = viewSubState(); + + switch ( state ) { + case ALBUM_ITEM_S : + actionList.at(GlxGridViewRemoveFromAlbum)->setVisible( TRUE ); + break ; + + default : + actionList.at(GlxGridViewRemoveFromAlbum)->setVisible( FALSE ); + break ; + } + } +} + +void GlxMenuManager::updateFullscreenMenu() +{ + HbMenu *menu = qobject_cast( sender() ); + QList actionList = menu->actions(); + static bool isAllActionDisable = FALSE; + int state = viewSubState() ; + + if ( state == IMAGEVIEWER_S && isAllActionDisable == FALSE ) { + setAllActionVisibility( actionList, FALSE ); + isAllActionDisable = TRUE; + } + + if ( state != IMAGEVIEWER_S && isAllActionDisable == TRUE ) { + setAllActionVisibility( actionList, TRUE ); + isAllActionDisable = FALSE; + } } void GlxMenuManager::menuItemSelected() @@ -202,7 +242,7 @@ switch ( viewId ) { case GLX_GRIDVIEW_ID : action = mainMenu->addAction("Send"); - action->setData(EGlxCmdSend); + action->setData(EGlxCmdContextSend); connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); action = mainMenu->addAction("Slide Show"); @@ -223,16 +263,17 @@ action->setData(EGlxCmdAlbumSlideShow); connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); - /*action = mainMenu->addAction("Delete"); + action = mainMenu->addAction("Delete"); action->setData(EGlxCmdContextAlbumDelete); - connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected()));*/ + connect(action, SIGNAL(triggered()), this, SLOT(menuItemSelected())); break; default: break; } + connect(mMainWindow, SIGNAL(aboutToChangeOrientation ()), mainMenu, SLOT(close())); mainMenu->exec(pos); - + disconnect(mMainWindow, SIGNAL(aboutToChangeOrientation ()), mainMenu, SLOT(close())); delete mainMenu; } diff -r 74c9f037fd5d -r 99ad1390cd33 ui/viewmanagement/viewmanager/src/glxviewmanager.cpp --- a/ui/viewmanagement/viewmanager/src/glxviewmanager.cpp Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/viewmanagement/viewmanager/src/glxviewmanager.cpp Fri Apr 16 14:58:46 2010 +0300 @@ -19,6 +19,7 @@ #include #include +#include "glxicondefs.h" //Contains the icon names/Ids #include #include #include @@ -32,10 +33,16 @@ #include #include #include +#include -GlxViewManager::GlxViewManager() : mBackAction( NULL ), mMenuManager( NULL ), mEffectEngine( NULL ), - mViewToolBar( NULL ), mMarkingToolBar( NULL ), mMenu( NULL ) +GlxViewManager::GlxViewManager() + : mBackAction( NULL ), + mMenuManager( NULL ), + mEffectEngine( NULL ), + mViewToolBar( NULL ), + mMarkingToolBar( NULL ), + mMenu( NULL ) { qDebug("GlxViewManager::GlxViewManager() "); PERFORMANCE_ADV ( viewMgrD1, "main window creation time" ) { @@ -44,19 +51,21 @@ if(mMainWindow == NULL) { mMainWindow = new HbMainWindow(); } - } //end PERFORMANCE_ADV - - //mMainWindow->setOptimizationFlag(QGraphicsView::DontSavePainterState); + //Without this Zoom Does not work + mMainWindow->viewport()->grabGesture(Qt::PinchGesture); + } + HbStyleLoader::registerFilePath(":/data/photos.css"); } void GlxViewManager::setupItems(int subState) { - mMenuManager = new GlxMenuManager(); + mMenuManager = new GlxMenuManager(mMainWindow); addBackSoftKeyAction(); createToolBar(); addConnection(); mView->addToolBar(mViewToolBar); - mMenuManager->CreateViewMenu( mView->viewId(), mView->menu(), ( 0 == mModel->rowCount() ),subState); + mMenuManager->addMenu( mView->viewId(), mView->menu() ); + mMenuManager->setModel( mModel ); } void GlxViewManager::launchApplication(qint32 id, QAbstractItemModel *model) @@ -66,7 +75,6 @@ mView = resolveView(id); } mView->activate(); - //mView->show(); PERFORMANCE_ADV ( viewMgrD3, "Set Model time") mView->setModel(mModel); @@ -93,13 +101,9 @@ { qDebug("GlxViewManager::addBackSoftKeyAction "); //create the back soft key action and set the data - mBackAction = new HbAction(Hb::BackAction, this); + mBackAction = new HbAction(Hb::BackNaviAction, this); mBackAction->setData(EGlxCmdBack); - - //remove the current secondary soft key for main window and set the new created one - HbAction *action = mMainWindow->softKeyAction(Hb::SecondarySoftKey); - mMainWindow->removeSoftKeyAction(Hb::SecondarySoftKey,action); - mMainWindow->addSoftKeyAction(Hb::SecondarySoftKey, mBackAction); + mView->setNavigationAction(mBackAction); } Qt::Orientation GlxViewManager::orientation() const @@ -107,7 +111,6 @@ return mMainWindow->orientation(); } - void GlxViewManager::launchView(qint32 id, QAbstractItemModel *model) { qDebug("GlxViewManager::launchView Id = %d ", id); @@ -197,20 +200,22 @@ qDebug("GlxViewManager::updateToolBarIcon() action ID list %d count %d", id, count); - for ( int i = 0; i < count ; i++ ) { + for ( int i = 0; i < count ; i++ ) + { qDebug("GlxViewManager::updateToolBarIcon() toolBarActionId %d value %d", toolBarActionId, ( id & toolBarActionId ) ); //check and get the icon path - if ( ( id & toolBarActionId ) == toolBarActionId ) { - path = mSelIconPathList.at(i); - } - else { - path = mDefaultIconPathList.at(i); - } + if ( ( id & toolBarActionId ) == toolBarActionId ) + { + mActionList[i]->setCheckable(TRUE); + mActionList[i]->setChecked(TRUE); + } + else + { + mActionList[i]->setChecked(FALSE); + } //to get it the next action id to verify it is selecter or not toolBarActionId = toolBarActionId << 1; - HbIcon icon(path); - mActionList[i]->setIcon(icon) ; - } + } } void GlxViewManager::enterMarkingMode(qint32 viewId) @@ -244,7 +249,6 @@ GlxView *view = findView ( viewId ); qDebug("GlxViewManager::exitMarkingMode view ID %d", viewId); if ( view ) { - //createToolBar(); //Marking mode tool bar is different from normal mode tool bar view->disableMarking(); HbMenu *menu = view->takeMenu(); //Take the owner ship of current menu view->setMenu(mMenu); //Set the view menu option @@ -283,11 +287,14 @@ view = GlxViewsFactory::createView(id, mMainWindow); if ( view ) { - //view->addToolBar(mViewToolBar); connect ( view, SIGNAL(actionTriggered(qint32 )), this, SLOT(actionProcess(qint32 )), Qt::QueuedConnection ); - connect ( view, SIGNAL(itemSpecificMenuTriggered(qint32,QPointF ) ), this, SLOT( itemSpecificMenuTriggered(qint32,QPointF ) )); + connect ( view, SIGNAL(itemSpecificMenuTriggered(qint32,QPointF ) ), this, SLOT( itemSpecificMenuTriggered(qint32,QPointF ) ), Qt::QueuedConnection ); mViewList.append(view); mMainWindow->addView(view); + if ( mMenuManager ) { + mMenuManager->addMenu( id, view->menu()); + } + view->setNavigationAction(mBackAction); } return view; } @@ -320,7 +327,6 @@ return mViewList.at(i); } } - //qDebug("GlxViewManager::findView view = %u ", view); return NULL; } @@ -331,7 +337,6 @@ GlxView *view = (GlxView *) mMainWindow->currentView(); if ( view ){ view->deActivate() ; - //view->hide(); //To:do is it required } if (mView && view) { mView->setZValue(view->zValue()); @@ -346,10 +351,7 @@ mView->addToolBar(mViewToolBar); mView->activate(); mView->show(); - //check and create the view menu - if ( mView->menu()->isEmpty() ) { - mMenuManager->CreateViewMenu( mView->viewId(), mView->menu(), ( 0 == mModel->rowCount() )); - } + mMenuManager->setModel( mModel ); //set the model to get the item type info and row count info } PERFORMANCE_ADV ( viewMgrD3, "Set Model time") @@ -364,37 +366,33 @@ void GlxViewManager::createActions() { qDebug("GlxViewManager::createActions() " ); - mActionList.clear(); - mSelIconPathList.clear(); - mDefaultIconPathList.clear(); + mActionList.clear(); //create the All tool bar button action HbAction* allAction = new HbAction(this); allAction->setData(EGlxCmdAllGridOpen); - mActionList.append(allAction); - mSelIconPathList.append(QString(":/data/All_selected.png")); - mDefaultIconPathList.append(QString(":/data/All_default.png")); - + mActionList.append(allAction); + allAction->setIcon(HbIcon(GLXICON_ALL)) ; + //create the Album tool bar button action HbAction* albumAction = new HbAction(this); albumAction->setData(EGlxCmdAlbumListOpen); mActionList.append(albumAction); - mSelIconPathList.append(QString(":/data/Albums_selected.png")); - mDefaultIconPathList.append(QString(":/data/Albums_default.png")); - + albumAction->setIcon(HbIcon(GLXICON_ALBUMS)) ; + //create the album tool bar button action HbAction* cameraAction = new HbAction(this); cameraAction->setData(EGlxCmdCameraOpen); - mActionList.append(cameraAction); - mSelIconPathList.append(QString(":/data/camera_selected.png")); - mDefaultIconPathList.append(QString(":/data/camera_default.png")); + mActionList.append(cameraAction); + cameraAction->setIcon(HbIcon(GLXICON_CAMERA)) ; + //create the ovi tool bar button action HbAction* oviAction = new HbAction(this); oviAction->setData(EGlxCmdOviOpen); mActionList.append(oviAction); - mSelIconPathList.append(QString(":/data/ovi_selected.png")); - mDefaultIconPathList.append(QString(":/data/ovi_default.png")); + oviAction->setIcon(HbIcon(GLXICON_OVI)) ; + } void GlxViewManager::createMarkingModeActions() @@ -443,8 +441,7 @@ mMarkingToolBar = new HbToolBar(); mMarkingToolBar->setOrientation( Qt::Horizontal ); mMarkingToolBar->setVisible(true); - mMarkingToolBar->clearActions(); - + mMarkingToolBar->clearActions(); createMarkingModeActions(); } @@ -476,10 +473,12 @@ for ( int i = 0; i < count; i++ ) { disconnect ( mViewList.at(i), SIGNAL(actionTriggered(qint32 )), this, SLOT(actionProcess(qint32 )) ); disconnect ( mViewList.at(i), SIGNAL(itemSpecificMenuTriggered(qint32, QPointF ) ), this, SLOT( itemSpecificMenuTriggered(qint32, QPointF ) )); + mMenuManager->removeMenu( mViewList.at(i)->viewId(), mViewList.at(i)->menu() ) ; } if ( mMenuManager ) disconnect(mMenuManager, SIGNAL( commandTriggered(qint32 ) ), this, SLOT( handleMenuAction(qint32 ) )); + if ( mBackAction ) disconnect(mBackAction, SIGNAL( triggered() ), this, SLOT( handleAction() )); @@ -505,6 +504,7 @@ GlxViewManager::~GlxViewManager() { qDebug("GlxViewManager::~GlxViewManager"); + HbStyleLoader::unregisterFilePath(":/data/photos.css"); removeConnection(); delete mMenuManager; @@ -515,25 +515,12 @@ } qDebug("GlxViewManager::~GlxViewManager view deleted"); - while( mActionList.isEmpty() == FALSE) { - delete mActionList.takeLast(); - } - - while ( mMarkingActionList.isEmpty() == FALSE ) { - delete mMarkingActionList.takeLast(); - } - qDebug("GlxViewManager::~GlxViewManager delete action list"); - + delete mBackAction; delete mViewToolBar; delete mMarkingToolBar; delete mMenu; - qDebug("GlxViewManager::~GlxViewManager delete toolbar"); - - mSelIconPathList.clear(); - mDefaultIconPathList.clear(); - qDebug("GlxViewManager::~GlxViewManager clear path list"); - + if ( mEffectEngine ) { mEffectEngine->deregistertransitionEffect(); delete mEffectEngine; diff -r 74c9f037fd5d -r 99ad1390cd33 ui/views/detailsview/inc/glxdetailscustomwidgets.h --- a/ui/views/detailsview/inc/glxdetailscustomwidgets.h Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/views/detailsview/inc/glxdetailscustomwidgets.h Fri Apr 16 14:58:46 2010 +0300 @@ -44,8 +44,8 @@ public: GlxDetailsCustomWidgets(QGraphicsItem *parent); ~GlxDetailsCustomWidgets(); - virtual HbAbstractViewItem* createItem(); - void SetImageName(const QString &label); + virtual HbAbstractViewItem* createItem(); + bool canSetModelIndex(const QModelIndex &index) const; protected: virtual HbWidget* createCustomWidget(); diff -r 74c9f037fd5d -r 99ad1390cd33 ui/views/detailsview/inc/glxdetailsview.h --- a/ui/views/detailsview/inc/glxdetailsview.h Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/views/detailsview/inc/glxdetailsview.h Fri Apr 16 14:58:46 2010 +0300 @@ -111,10 +111,7 @@ private: - QGraphicsPixmapItem *mDetailsPixmap; - - //The Black Background for the thumbnail to be shown - HbIconItem *mBlackBackgroundItem; + HbIconItem *mDetailsIcon; //The media Model to acess the attributes not owned QAbstractItemModel *mModel; diff -r 74c9f037fd5d -r 99ad1390cd33 ui/views/detailsview/src/glxdetailscustomwidgets.cpp --- a/ui/views/detailsview/src/glxdetailscustomwidgets.cpp Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/views/detailsview/src/glxdetailscustomwidgets.cpp Fri Apr 16 14:58:46 2010 +0300 @@ -98,11 +98,18 @@ } } +bool GlxDetailsCustomWidgets::canSetModelIndex(const QModelIndex &index) const +{ + HbDataFormModelItem::DataItemType itemType = + static_cast( + index.data(HbDataFormModelItem::ItemTypeRole).toInt()); -void GlxDetailsCustomWidgets::SetImageName(const QString &label) - { - qDebug("GlxDetailsCustomWidgets::SetImageName:mLabel "); - mLabel->setPlainText(label); - } + if(itemType >= ImageNameItem && + itemType <= CommentsItem ) + { + return true; + } + return false; +} //EOF diff -r 74c9f037fd5d -r 99ad1390cd33 ui/views/detailsview/src/glxdetailsview.cpp --- a/ui/views/detailsview/src/glxdetailsview.cpp Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/views/detailsview/src/glxdetailsview.cpp Fri Apr 16 14:58:46 2010 +0300 @@ -18,7 +18,6 @@ //-------------------------------------------------------------------------------------------------------------------------------------------- #include -#include #include //-------------------------------------------------------------------------------------------------------------------------------------------- @@ -41,143 +40,127 @@ #include "glxviewids.h" #include +#include "OstTraceDefinitions.h" +#ifdef OST_TRACE_COMPILER_IN_USE +#include "glxdetailsviewTraces.h" +#endif //-------------------------------------------------------------------------------------------------------------------------------------------- //GlxDetailsView //-------------------------------------------------------------------------------------------------------------------------------------------- GlxDetailsView::GlxDetailsView(HbMainWindow *window) : GlxView ( GLX_DETAILSVIEW_ID), - mDetailsPixmap(NULL), - mBlackBackgroundItem(NULL), + mDetailsIcon(NULL), mModel(NULL), mWindow(window), mDataForm(NULL), mDetailModel(NULL), mCustomPrototype(NULL), mSelIndex (0) -{ - qDebug("@@@GlxDetailsView::GlxDetailsView constructor Enter"); + { + OstTraceFunctionEntry0( GLXDETAILSVIEW_GLXDETAILSVIEW_ENTRY ); + setContentFullScreen( true );//for smooth transtion between grid to full screen and vice versa -} + OstTraceFunctionExit0( GLXDETAILSVIEW_GLXDETAILSVIEW_EXIT ); + } //-------------------------------------------------------------------------------------------------------------------------------------------- //~GlxDetailsView //-------------------------------------------------------------------------------------------------------------------------------------------- GlxDetailsView::~GlxDetailsView() -{ - qDebug("@@@GlxDetailsView::~GlxDetailsView Enter"); + { + OstTrace0( TRACE_IMPORTANT, GLXDETAILSVIEW_GLXDETAILSVIEW, "GlxDetailsView::~GlxDetailsView" ); - if(mDetailsPixmap) { - delete mDetailsPixmap; - mDetailsPixmap = NULL; + if(mDetailsIcon) { + delete mDetailsIcon; + mDetailsIcon = NULL; } if(mDataForm && mDataForm->model()) { - delete mDataForm->model(); - mDataForm->setModel(0); + delete mDataForm->model(); + mDataForm->setModel(0); } if(mDataForm) { - delete mDataForm; - mDataForm = NULL; + delete mDataForm; + mDataForm = NULL; } - if(mBlackBackgroundItem) { - delete mBlackBackgroundItem; - mBlackBackgroundItem = NULL; - } - + clearCurrentModel(); disconnect(mWindow, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(updateLayout(Qt::Orientation))); -} + } //-------------------------------------------------------------------------------------------------------------------------------------------- //activate //-------------------------------------------------------------------------------------------------------------------------------------------- void GlxDetailsView::activate() -{ - qDebug("@@@GlxDetailsView::activate Enter"); + { + OstTraceFunctionEntry0( GLXDETAILSVIEW_ACTIVATE_ENTRY ); + setFormData(); connect(mWindow, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(updateLayout(Qt::Orientation))); -} + OstTraceFunctionExit0( GLXDETAILSVIEW_ACTIVATE_EXIT ); + } //-------------------------------------------------------------------------------------------------------------------------------------------- //initializeView //-------------------------------------------------------------------------------------------------------------------------------------------- void GlxDetailsView::initializeView(QAbstractItemModel *model) { - qDebug("@@@GlxDetailsView::initializeView Enter"); - - mBlackBackgroundItem = new HbIconItem(this); - mBlackBackgroundItem->setBrush(QBrush(Qt::black)); - mBlackBackgroundItem->hide(); + OstTraceFunctionEntry0( GLXDETAILSVIEW_INITIALIZEVIEW_ENTRY ); //To show the thumbnail - mDetailsPixmap = new QGraphicsPixmapItem(this); + if ( mDataForm == NULL) { + mDetailsIcon = new HbIconItem(this); + + //Create the form and the model for the data form + mDataForm = new HbDataForm(this); + mDetailModel = new HbDataFormModel(); - //Create the form and the model for the data form - mDataForm = new HbDataForm(this); - mDetailModel = new HbDataFormModel(); - - //custom prototype - mCustomPrototype = new GlxDetailsCustomWidgets(mDataForm); - mDataForm->setItemPrototype(mCustomPrototype); + //custom prototype + mCustomPrototype = new GlxDetailsCustomWidgets(mDataForm); + QList protos = mDataForm->itemPrototypes(); + protos.append(mCustomPrototype); + mDataForm->setItemPrototypes(protos); + + //Add the Widgets according to the mime type + addWidgets(); + } //Set the Model mModel = model; initializeNewModel(); - - //Add the Widgets according to the mime type - addWidgets(); - + //Set the Layout Correspondingly. updateLayout(mWindow->orientation()); - + //Shows the Image showImage(); - + + OstTraceFunctionExit0( GLXDETAILSVIEW_INITIALIZEVIEW_EXIT ); } //-------------------------------------------------------------------------------------------------------------------------------------------- //resetView //-------------------------------------------------------------------------------------------------------------------------------------------- void GlxDetailsView::resetView() -{ - //Do Nothing here -} + { + OstTrace0( TRACE_NORMAL, GLXDETAILSVIEW_RESETVIEW, "GlxDetailsView::resetView" ); + + //Do Nothing here + } //-------------------------------------------------------------------------------------------------------------------------------------------- //deActivate //-------------------------------------------------------------------------------------------------------------------------------------------- void GlxDetailsView::deActivate() { - qDebug("@@@GlxDetailsView::deActivate Enter"); - - //mWindow->setItemVisible(Hb::AllItems, FALSE) ; - - if(mDetailsPixmap) { - delete mDetailsPixmap; - mDetailsPixmap = NULL; - } - - if(mDataForm && mDataForm->model()) { - delete mDataForm->model(); - mDataForm->setModel(0); - } - - if(mDataForm) { - delete mDataForm; - mDataForm = NULL; - } - - if(mBlackBackgroundItem) { - delete mBlackBackgroundItem; - mBlackBackgroundItem = NULL; - } - + OstTraceFunctionEntry0( GLXDETAILSVIEW_DEACTIVATE_ENTRY ); clearCurrentModel(); disconnect(mWindow, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(updateLayout(Qt::Orientation))); + OstTraceFunctionExit0( GLXDETAILSVIEW_DEACTIVATE_EXIT ); } //-------------------------------------------------------------------------------------------------------------------------------------------- @@ -185,36 +168,28 @@ //-------------------------------------------------------------------------------------------------------------------------------------------- void GlxDetailsView::addWidgets() { - qDebug("@@@GlxDetailsView::addWidgets create the form"); - + OstTrace0( TRACE_NORMAL, GLXDETAILSVIEW_ADDWIDGETS, "GlxDetailsView::addWidgets create Form" ); + //----------------------------START OF CREATION OF WIDGETS---------------------------------// // To add new widgets in the details view, add it here. //---------------------------IMAGE NAME LABEL --------------------------------------------// - qDebug("@@@GlxDetailsView::addWidgets create Image name Label"); + OstTrace0( TRACE_NORMAL, DUP1_GLXDETAILSVIEW_ADDWIDGETS, "GlxDetailsView::addWidgets create Image Label" ); HbDataFormModelItem *imageLabelitem = mDetailModel->appendDataFormItem((HbDataFormModelItem::DataItemType)(ImageNameItem), QString("Name"), mDetailModel->invisibleRootItem()); imageLabelitem->setData(HbDataFormModelItem::KeyRole,QString("")); //---------------------------DATE LABEL --------------------------------------------// - qDebug("@@@GlxDetailsView::addWidgets create Image name Label"); + OstTrace0( TRACE_NORMAL, DUP2_GLXDETAILSVIEW_ADDWIDGETS, "GlxDetailsView::addWidgets date label" ); HbDataFormModelItem *dateLabelItem = mDetailModel->appendDataFormItem((HbDataFormModelItem::DataItemType)(DateLabelItem), QString("Date"), mDetailModel->invisibleRootItem()); dateLabelItem->setData(HbDataFormModelItem::KeyRole,QString("")); //---------------------------LOCATION LABEL--------------------------------------------// - qDebug("@@@GlxDetailsView::addWidgets create Location Label"); + OstTrace0( TRACE_NORMAL, DUP3_GLXDETAILSVIEW_ADDWIDGETS, "GlxDetailsView::addWidgets location label" ); HbDataFormModelItem *locationLabelItem = mDetailModel->appendDataFormItem((HbDataFormModelItem::DataItemType)(LocationTagItem), QString("Location Tag"), mDetailModel->invisibleRootItem()); locationLabelItem->setData(HbDataFormModelItem::KeyRole, QString("")); - //---------------------------DURATION LABEL--------------------------------------------// - /* - Need to Add a check here for the type of the item, if it is video or image - qDebug("@@@GlxDetailsView::addWidgets create Duration Label"); - HbDataFormModelItem *DurationLabelItem = mDetailModel->appendDataFormItem((HbDataFormModelItem::DataItemType)(DurationItem), QString("Duration"), mDetailModel->invisibleRootItem()); - DurationLabelItem->setData(HbDataFormModelItem::KeyRole, QString("")); - */ - //----------------------------COMMENTS TEXT ITEM---------------------------------------------// - qDebug("@@@GlxDetailsView::addWidgets create Comment text edit"); + OstTrace0( TRACE_NORMAL, DUP5_GLXDETAILSVIEW_ADDWIDGETS, "GlxDetailsView::addWidgets comment text" ); HbDataFormModelItem *commentsLabelItem = mDetailModel->appendDataFormItem((HbDataFormModelItem::DataItemType)(CommentsItem), QString("Comments"), mDetailModel->invisibleRootItem()); commentsLabelItem->setData(HbDataFormModelItem::KeyRole, QString("")); @@ -229,88 +204,75 @@ //setModel //-------------------------------------------------------------------------------------------------------------------------------------------- void GlxDetailsView::setModel(QAbstractItemModel *model) -{ - qDebug("@@@GlxDetailsView::setModel"); + { + OstTrace0( TRACE_NORMAL, GLXDETAILSVIEW_SETMODEL, "GlxDetailsView::setModel" ); if ( mModel == model ) { - return ; + return ; } clearCurrentModel(); mModel = model; initializeNewModel(); -} + } QGraphicsItem * GlxDetailsView::getAnimationItem(GlxEffect transtionEffect) -{ + { + OstTrace0( TRACE_NORMAL, GLXDETAILSVIEW_GETANIMATIONITEM, "GlxDetailsView::getAnimationItem" ); if ( transtionEffect == FULLSCREEN_TO_DETAIL || transtionEffect == DETAIL_TO_FULLSCREEN ) { - return this; + return this; } - + return NULL; -} + } //-------------------------------------------------------------------------------------------------------------------------------------------- //updateLayout //-------------------------------------------------------------------------------------------------------------------------------------------- void GlxDetailsView::updateLayout(Qt::Orientation orient) { - qDebug("GlxDetailsView::updateLayout() %d", orient ); - + OstTrace1( TRACE_NORMAL, GLXDETAILSVIEW_UPDATELAYOUT, "GlxDetailsView::updateLayout;orient=%d", orient ); + QRect screen_rect = mWindow->geometry(); setGeometry(screen_rect); if(orient == Qt::Horizontal) { - qDebug("GlxDetailsView::updateLayout HORIZONTAL"); - - mBlackBackgroundItem->setSize(QSize(280,280)); - mBlackBackgroundItem->setPos(11,71); - - mDetailsPixmap->setPos(15,75); - mDetailsPixmap->setZValue(mBlackBackgroundItem->zValue() + 1); - - // mDataForm->setPos(301,5); + OstTrace0( TRACE_NORMAL, DUP1_GLXDETAILSVIEW_UPDATELAYOUT, "GlxDetailsView::updateLayout HORIZONTAL" ); + mDetailsIcon->setPos(15,75); mDataForm->setGeometry(301,60,335,300); } else { - qDebug("GlxDetailsView::updateLayout VERTICAL"); - - mBlackBackgroundItem->setSize(QSize(310,260)); - mBlackBackgroundItem->setPos(25,75); - - mDetailsPixmap->setPos(25,75); - mDetailsPixmap->setZValue(mBlackBackgroundItem->zValue() + 1); - -// mDataForm->setPos(5,291); + OstTrace0( TRACE_NORMAL, DUP2_GLXDETAILSVIEW_UPDATELAYOUT, "GlxDetailsView::updateLayout VERTICAL" ); + mDetailsIcon->setPos(25,75); mDataForm->setGeometry(5,351,335,300); mDataForm->setMaximumWidth(340); } } void GlxDetailsView::rowsRemoved(const QModelIndex &parent, int start, int end) -{ + { Q_UNUSED(parent); Q_UNUSED(start); Q_UNUSED(end); - qDebug("GlxDetailsView::rowsRemoved"); - + OstTrace0( TRACE_NORMAL, GLXDETAILSVIEW_ROWSREMOVED, "GlxDetailsView::rowsRemoved" ); + if ( mModel->rowCount() <= 0 ) { - return emit actionTriggered( EGlxCmdEmptyData ); + return emit actionTriggered( EGlxCmdEmptyData ); } - + if ( start <= mSelIndex && end >= mSelIndex ) { - return emit actionTriggered( EGlxCmdBack ); + return emit actionTriggered( EGlxCmdBack ); } -} + } //-------------------------------------------------------------------------------------------------------------------------------------------- //showImage //-------------------------------------------------------------------------------------------------------------------------------------------- void GlxDetailsView::showImage() { - qDebug("GlxDetailsView::showImage() Enter" ); + OstTrace0( TRACE_NORMAL, GLXDETAILSVIEW_SHOWIMAGE, "GlxDetailsView::showImage" ); QVariant variant = mModel->data( mModel->index(0,0), GlxFocusIndexRole ); if ( variant.isValid() && variant.canConvert () ) { @@ -320,40 +282,18 @@ variant = mModel->data( mModel->index( mSelIndex ,0), GlxFsImageRole); if ( variant.isValid() && variant.canConvert () ) { - QIcon itemIcon = variant.value().qicon(); if(mWindow->orientation() == Qt::Horizontal) { - qDebug("GlxDetailsView::showImage HORIZONTAL"); - QPixmap itemPixmap = itemIcon.pixmap(128,128); - QSize sz( 270, 270); - itemPixmap = itemPixmap.scaled(sz, Qt::IgnoreAspectRatio ); - if(itemPixmap.isNull()) - { - qDebug("@@@GlxDetailsView::showImage Null Pixmap"); - } - else - { - qDebug("@@@GlxDetailsView::showImage NOT --Null Pixmap"); - mDetailsPixmap->setPixmap(itemPixmap); - } + OstTrace0( TRACE_NORMAL, DUP1_GLXDETAILSVIEW_SHOWIMAGE, "GlxDetailsView::showImage HORIZONTAL" ); + + mDetailsIcon->resize(QSize(270, 270)); + mDetailsIcon->setIcon(variant.value()); } else { - qDebug("GlxDetailsView::showImage VERTICAL"); - - QPixmap itemPixmap = itemIcon.pixmap(128,128); - QSize sz( 310, 260); - itemPixmap = itemPixmap.scaled(sz, Qt::IgnoreAspectRatio ); - - if(itemPixmap.isNull()) - { - qDebug("@@@GlxDetailsView::showImage Null Pixmap"); - } - else - { - qDebug("@@@GlxDetailsView::showImage NOT --Null Pixmap"); - mDetailsPixmap->setPixmap(itemPixmap); - } + OstTrace0( TRACE_NORMAL, DUP2_GLXDETAILSVIEW_SHOWIMAGE, "GlxDetailsView::showImage VERTICAL" ); + mDetailsIcon->resize(QSize(310, 260)); + mDetailsIcon->setIcon(variant.value()); } } } @@ -363,7 +303,8 @@ //-------------------------------------------------------------------------------------------------------------------------------------------- void GlxDetailsView::setFormData() { - qDebug("GlxDetailsView::FillData Enter"); + OstTrace0( TRACE_NORMAL, GLXDETAILSVIEW_SETFORMDATA, "GlxDetailsView::setFormData" ); + //Call to set the Image Name setImageName(); //Call to set the date in the from @@ -375,7 +316,7 @@ //-------------------------------------------------------------------------------------------------------------------------------------------- void GlxDetailsView::setImageName() { - qDebug("GlxDetailsView::setImageName Enter"); + OstTraceFunctionEntry0( GLXDETAILSVIEW_SETIMAGENAME_ENTRY ); QString imagePath = (mModel->data(mModel->index(mModel->data(mModel->index(0,0),GlxFocusIndexRole).value(),0),GlxUriRole)).value(); QString imageName = imagePath.section('\\',-1); @@ -385,31 +326,32 @@ if(imageLabel) { - qDebug("GlxDetailsView::setImageName imageLabel!=NULL"); + OstTrace0( TRACE_NORMAL, GLXDETAILSVIEW_SETIMAGENAME, "GlxDetailsView::setImageName ImageLabel !=NULL" ); HbLineEdit* label = static_cast(imageLabel->dataItemContentWidget()); if(label) { - qDebug("GlxDetailsView::setImageName,setText"); + OstTrace0( TRACE_NORMAL, DUP1_GLXDETAILSVIEW_SETIMAGENAME, "GlxDetailsView::setImageName SetText" ); label->setText(imageName); } } -} + OstTraceFunctionExit0( GLXDETAILSVIEW_SETIMAGENAME_EXIT ); + } //-------------------------------------------------------------------------------------------------------------------------------------------- //setDate //-------------------------------------------------------------------------------------------------------------------------------------------- void GlxDetailsView::setDate() { - qDebug("GlxDetailsView::setDate Enter"); - + OstTraceFunctionEntry0( GLXDETAILSVIEW_SETDATE_ENTRY ); + QString datestring; QString str("dd.MM.yyyy"); QDate date = (mModel->data(mModel->index(mModel->data(mModel->index(0,0),GlxFocusIndexRole).value(),0),GlxDateRole)).value(); if(date.isNull() == FALSE ) { - qDebug("GlxDetailsView::setDate date is not Null"); + OstTrace0( TRACE_NORMAL, GLXDETAILSVIEW_SETDATE, "GlxDetailsView::setDate is not NULL" ); datestring = date.toString(str); } @@ -418,28 +360,34 @@ if(dateLabel) { - qDebug("GlxDetailsView::setDate dateLabel!=NULL"); + OstTrace0( TRACE_NORMAL, DUP1_GLXDETAILSVIEW_SETDATE, "GlxDetailsView::setDate Datelabel is not NULL" ); + HbLabel* label = static_cast(dateLabel->dataItemContentWidget()); if(label) { - qDebug("GlxDetailsView::setDate,setText"); + OstTrace0( TRACE_NORMAL, DUP2_GLXDETAILSVIEW_SETDATE, "GlxDetailsView::setDate SetText" ); label->setPlainText(datestring); } } + OstTraceFunctionExit0( GLXDETAILSVIEW_SETDATE_EXIT ); } void GlxDetailsView::initializeNewModel() -{ + { + OstTrace0( TRACE_NORMAL, GLXDETAILSVIEW_INITIALIZENEWMODEL, "GlxDetailsView::initializeNewModel" ); + if ( mModel ) { - connect(mModel, SIGNAL(rowsRemoved(QModelIndex,int,int)), this, SLOT(rowsRemoved(QModelIndex,int,int))); + connect(mModel, SIGNAL(rowsRemoved(QModelIndex,int,int)), this, SLOT(rowsRemoved(QModelIndex,int,int))); } -} + } void GlxDetailsView::clearCurrentModel() -{ + { + OstTrace0( TRACE_NORMAL, GLXDETAILSVIEW_CLEARCURRENTMODEL, "GlxDetailsView::clearCurrentModel" ); + if ( mModel ) { - disconnect(mModel, SIGNAL(rowsRemoved(QModelIndex,int,int)), this, SLOT(rowsRemoved(QModelIndex,int,int))); - mModel = NULL ; + disconnect(mModel, SIGNAL(rowsRemoved(QModelIndex,int,int)), this, SLOT(rowsRemoved(QModelIndex,int,int))); + mModel = NULL ; } -} + } diff -r 74c9f037fd5d -r 99ad1390cd33 ui/views/effectengine/src/glxeffectengine.cpp --- a/ui/views/effectengine/src/glxeffectengine.cpp Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/views/effectengine/src/glxeffectengine.cpp Fri Apr 16 14:58:46 2010 +0300 @@ -203,7 +203,7 @@ GlxTransitionEffectSetting *effectSetting = mTransitionEffectList.value( transitionEffect ); - if ( effectSetting == NULL && items.count() != effectSetting->count() ) { + if ( effectSetting == NULL || items.count() != effectSetting->count() ) { return; } @@ -213,6 +213,7 @@ if ( ( i == effectSetting->count() -1) && effectSetting->isTransitionLater() ) { effectSetting->setAnimationItem( items.at(i) ); + items.at(i)->hide(); } else { HbEffect::start(items.at(i), effectSetting->itemType().at(i), effectSetting->eventType().at(i), this, "transitionEffectFinished"); @@ -240,7 +241,7 @@ { GlxTransitionEffectSetting *effectSetting = mTransitionEffectList.value( transitionEffect ); - if ( effectSetting == NULL && items.count() != effectSetting->count() ) { + if ( effectSetting == NULL || items.count() != effectSetting->count() ) { return; } @@ -291,7 +292,8 @@ --mNbrEffectRunning; if ( mNbrEffectRunning == 1 ) { GlxTransitionEffectSetting *effectSetting = mTransitionEffectList.value( mTransitionEffect ); - if ( effectSetting->isTransitionLater() ){ + if ( effectSetting->isTransitionLater() ){ + effectSetting->animationItem()->show(); HbEffect::start( effectSetting->animationItem(), effectSetting->itemType().at(1), effectSetting->eventType().at(1), this, "transitionEffectFinished"); mTransitionEffect = NO_EFFECT; } diff -r 74c9f037fd5d -r 99ad1390cd33 ui/views/fullscreenview/inc/glxfullscreenview.h --- a/ui/views/fullscreenview/inc/glxfullscreenview.h Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/views/fullscreenview/inc/glxfullscreenview.h Fri Apr 16 14:58:46 2010 +0300 @@ -28,11 +28,13 @@ #include //Orbit/Qt forward declartion class QTimer; +class HbAction; class HbGridView; class HbMainWindow; class HbPushButton; class HbDocumentLoader; class QAbstractItemModel; +class HbIconItem; //User Defined forward declartion class GlxZoomSlider; @@ -78,13 +80,12 @@ void scrollingEnded(); void pressed(const QModelIndex &index ); void released(const QModelIndex &index ); - void showdetailsview(); - void setVisvalWindowIndex(); + void setVisvalWindowIndex(); void coverFlowEventHandle( GlxCoverFlowEvent e); + void effectFinished( const HbEffect::EffectStatus ); + void imageSelectionEffectFinished( const HbEffect::EffectStatus ); + void handleToolBarAction(); -signals : - void cancelTimer(); - private: /* @@ -107,7 +108,10 @@ /* * Called when an item is highlighted. */ - void SetImageToHdmiL(); + void SetImageToHdmiL(); + void loadFullScreenToolBar(); + void imageSelectionAnimation(const QModelIndex &index); + private: QAbstractItemModel *mModel; //no ownership HbMainWindow *mWindow; //no ownership @@ -115,16 +119,17 @@ HbGridView *mImageStrip; bool mUiOff; // to check the current status of ui on / off QTimer *mUiOffTimer; //use for ui off after 30 sec + HbIconItem *mIconItem ; //temporary item for play the image strip select animation //for Zoom HbPushButton *mZmPushButton; GlxZoomSlider *mZoomSlider; GlxZoomControl *mZoomControl; - bool mSendUserActivityEvent; - //for the FLIP CASE - HbPushButton *mFlipPushButton; - int nbrCol; //to store the number of column in the image strip HbDocumentLoader *mDocLoader; CGlxHdmiController* iHdmiController; + HbToolBar *mFullScreenToolBar; //Fullscreen Toolbar + HbAction *mFlipAction; //Action : it starts activates the details view + HbAction *mSendAction; + HbAction *mDeleteAction; }; #endif /* GLXFULLSCREENVIEW_H_ */ diff -r 74c9f037fd5d -r 99ad1390cd33 ui/views/fullscreenview/src/glxcoverflow.cpp --- a/ui/views/fullscreenview/src/glxcoverflow.cpp Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/views/fullscreenview/src/glxcoverflow.cpp Fri Apr 16 14:58:46 2010 +0300 @@ -35,25 +35,24 @@ { //TO:DO through exception qDebug("GlxCoverFlow::GlxCoverFlow"); + HbEffect::add( QString("HbIconItem"), QString(":/data/transitionrotate0.fxml"), QString( "RotateImage0" )); + HbEffect::add( QString("HbIconItem"), QString(":/data/transitionrotate90.fxml"), QString( "RotateImage90" )); + HbEffect::add( QString("HbIconItem"), QString(":/data/transitionrotate180.fxml"), QString( "RotateImage180" )); + HbEffect::add( QString("HbIconItem"), QString(":/data/transitionrotate270.fxml"), QString( "RotateImage270" )); + connect( this, SIGNAL( autoLeftMoveSignal() ), this, SLOT( autoLeftMove() ), Qt::QueuedConnection ); + connect( this, SIGNAL( autoRightMoveSignal() ), this, SLOT( autoRightMove() ), Qt::QueuedConnection ); } void GlxCoverFlow::setCoverFlow() { - qDebug("GlxCoverFlow::setCoverFlow"); for ( qint8 i = 0; i < NBR_ICON_ITEM ; i++ ) { - mIconItem[i] = new HbIconItem(this); - mIconItem[i]->setBrush(QBrush(Qt::black)); - mIconItem[i]->setSize(QSize(0,0)); + mIconItem[i] = new HbIconItem(this); + mIconItem[i]->setBrush(QBrush(Qt::black)); + mIconItem[i]->setSize(QSize(0,0)); } mUiOn = FALSE; mBounceBackDeltaX = 10; - connect( this, SIGNAL( autoLeftMoveSignal() ), this, SLOT( autoLeftMove() ), Qt::QueuedConnection ); - connect( this, SIGNAL( autoRightMoveSignal() ), this, SLOT( autoRightMove() ), Qt::QueuedConnection ); - HbEffect::add( QString("HbIconItem"), QString(":/data/transitionrotate0.fxml"), QString( "RotateImage0" )); - HbEffect::add( QString("HbIconItem"), QString(":/data/transitionrotate90.fxml"), QString( "RotateImage90" )); - HbEffect::add( QString("HbIconItem"), QString(":/data/transitionrotate180.fxml"), QString( "RotateImage180" )); - HbEffect::add( QString("HbIconItem"), QString(":/data/transitionrotate270.fxml"), QString( "RotateImage270" )); } void GlxCoverFlow::setItemSize(QSize &size) @@ -69,7 +68,7 @@ { qDebug("GlxCoverFlow::setModel model change = %d", model ); - if ( model == mModel) { + if ( model == mModel) { return ; } @@ -85,11 +84,11 @@ if ( index != mSelIndex && mModel) { loadIconItems(); if(rotAngle) { - rotAngle = 0; - //HbEffect::start(mIconItem[mSelItemIndex], QString("HbIconItem"), QString("RotateImage270"), this, "rotationEffectFinished" ); - mIconItem[mSelItemIndex]->resetTransform(); - mIconItem[mSelItemIndex]->resize(mItemSize); - } + rotAngle = 0; + //HbEffect::start(mIconItem[mSelItemIndex], QString("HbIconItem"), QString("RotateImage270"), this, "rotationEffectFinished" ); + mIconItem[mSelItemIndex]->resetTransform(); + mIconItem[mSelItemIndex]->resize(mItemSize); + } } } @@ -111,11 +110,9 @@ if(rotAngle == 270) { HbEffect::start(mIconItem[mSelItemIndex], QString("HbIconItem"), QString("RotateImage270"), this, "rotationEffectFinished" ); - } - + } rotAngle += 90; - rotAngle %= 360; - + rotAngle %= 360; } void GlxCoverFlow::rotationEffectFinished (const HbEffect::EffectStatus &status) @@ -207,7 +204,6 @@ else { mIconItem[index]->setIcon( HbIcon() ); } - //break; } } } @@ -551,21 +547,23 @@ GlxCoverFlow::~GlxCoverFlow() { qDebug("GlxCoverFlow::~GlxCoverFlow model " ); + disconnect( this, SIGNAL( autoLeftMoveSignal() ), this, SLOT( autoLeftMove() ) ); + disconnect( this, SIGNAL( autoRightMoveSignal() ), this, SLOT( autoRightMove() ) ); + HbEffect::remove( QString("HbIconItem"), QString(":/data/transitionrotate0.fxml"), QString( "RotateImage0" )); + HbEffect::remove( QString("HbIconItem"), QString(":/data/transitionrotate90.fxml"), QString( "RotateImage90" )); + HbEffect::remove( QString("HbIconItem"), QString(":/data/transitionrotate180.fxml"), QString( "RotateImage180" )); + HbEffect::remove( QString("HbIconItem"), QString(":/data/transitionrotate270.fxml"), QString( "RotateImage270" )); } void GlxCoverFlow::ClearCoverFlow() { qDebug("GlxCoverFlow::ClearCoverFlow " ); - disconnect( this, SIGNAL( autoLeftMoveSignal() ), this, SLOT( autoLeftMove() ) ); - disconnect( this, SIGNAL( autoRightMoveSignal() ), this, SLOT( autoRightMove() ) ); clearCurrentModel(); for ( qint8 i = 0; i < NBR_ICON_ITEM ; i++ ) { - if(mIconItem[i] != NULL ) - delete mIconItem[i] ; + if(mIconItem[i] != NULL ) { + delete mIconItem[i] ; + mIconItem[i] = NULL; + } } - HbEffect::remove( QString("HbIconItem"), QString(":/data/transitionrotate0.fxml"), QString( "RotateImage0" )); - HbEffect::remove( QString("HbIconItem"), QString(":/data/transitionrotate90.fxml"), QString( "RotateImage90" )); - HbEffect::remove( QString("HbIconItem"), QString(":/data/transitionrotate180.fxml"), QString( "RotateImage180" )); - HbEffect::remove( QString("HbIconItem"), QString(":/data/transitionrotate270.fxml"), QString( "RotateImage270" )); } diff -r 74c9f037fd5d -r 99ad1390cd33 ui/views/fullscreenview/src/glxfullscreenview.cpp --- a/ui/views/fullscreenview/src/glxfullscreenview.cpp Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/views/fullscreenview/src/glxfullscreenview.cpp Fri Apr 16 14:58:46 2010 +0300 @@ -17,9 +17,10 @@ //Includes -#include #include #include +#include +#include #include #include #include @@ -27,40 +28,58 @@ #include #include #include - +#include //User Includes +#include "glxlog.h" +#include "glxtracer.h" #include "glxviewids.h" //contains the view ids of all the views in photos app. +#include "glxicondefs.h" //Contains the icon names/Ids #include "glxmodelparm.h" #include "glxcoverflow.h" -#include "glxzoomslider.h" -#include "glxzoomcontrol.h" #include "glxdocloaderdefs.h" //contains the definations of path, widget names and view names in docml #include "glxloggerenabler.h" +#include "glxhdmicontroller.h" #include "glxfullscreenview.h" #include "glxcommandhandlers.hrh" -#include -#include -#include +//#include "glxzoomwidget.h" +#include "OstTraceDefinitions.h" +#ifdef OST_TRACE_COMPILER_IN_USE +#include "glxfullscreenviewTraces.h" +#endif + const int KUiOffTime = 3000; -GlxFullScreenView::GlxFullScreenView(HbMainWindow *window,HbDocumentLoader *DocLoader) : GlxView ( GLX_FULLSCREENVIEW_ID), - mModel(NULL), mWindow( window), mCoverFlow(NULL) , mImageStrip (NULL), mUiOffTimer(NULL), - mZmPushButton(NULL), mZoomSlider(NULL), mZoomControl(NULL),mSendUserActivityEvent(false), - mFlipPushButton(NULL), nbrCol(0),iHdmiController(NULL) +GlxFullScreenView::GlxFullScreenView(HbMainWindow *window,HbDocumentLoader *DocLoader) : + GlxView ( GLX_FULLSCREENVIEW_ID), + mModel(NULL), + mWindow( window), + mCoverFlow(NULL) , + mImageStrip (NULL), + mUiOffTimer(NULL), + iHdmiController(NULL), + mFullScreenToolBar(NULL), + mFlipAction(NULL), + mSendAction(NULL), + mDeleteAction(NULL) { - TRACER("GlxFullScreenView::GlxFullScreenView()" ); + OstTraceFunctionEntry0( GLXFULLSCREENVIEW_GLXFULLSCREENVIEW_ENTRY ); + mDocLoader = DocLoader; setContentFullScreen( true ); HbEffect::add( QString("HbGridView"), QString(":/data/transitionup.fxml"), QString( "TapShow" )); HbEffect::add( QString("HbGridView"), QString(":/data/transitiondown.fxml"), QString( "TapHide" )); + HbEffect::add( QString("HbGridViewItem"), QString(":/data/gridtofullscreenhide.fxml"), QString( "Select" )); + + OstTraceFunctionExit0( GLXFULLSCREENVIEW_GLXFULLSCREENVIEW_EXIT ); } void GlxFullScreenView::initializeView(QAbstractItemModel *model) { - TRACER("GlxFullScreenView::initializeView()" ); + OstTraceFunctionEntry0( GLXFULLSCREENVIEW_INITIALIZEVIEW_ENTRY ); + //Load/Retrieve the Widgets loadWidgets(); @@ -68,103 +87,139 @@ //Initialize the coverflow and partially creates the coverflow with one image // to make the widget light weight in order to make // transition smooth - QRect screen_rect = mWindow->geometry(); - QSize sz(screen_rect.width(), screen_rect.height()); - mCoverFlow->partiallyCreate( model, sz); + mCoverFlow->partiallyCreate( model, screenSize()); + setItemVisible(Hb::AllItems, FALSE) ; + + OstTraceFunctionExit0( GLXFULLSCREENVIEW_INITIALIZEVIEW_EXIT ); } void GlxFullScreenView::loadWidgets() - { - TRACER("GlxFullScreenView::loadWidgets()"); - //Load the View and Widget - GlxFullScreenView *view = static_cast (mDocLoader->findWidget(GLXFULLSCREEN_VIEW)); - mCoverFlow = static_cast (mDocLoader->findWidget(GLXFULLSCREEN_COVERFLOW)); +{ + OstTraceFunctionEntry0( GLXFULLSCREENVIEW_LOADWIDGETS_ENTRY ); + + //Load the Coverflow and image strip widget + mCoverFlow = qobject_cast (mDocLoader->findWidget(GLXFULLSCREEN_COVERFLOW)); //initialise the cover flow for basic connections and the rest mCoverFlow->setCoverFlow(); - //Load the IMAGE STRIP & FULLSCREEN TOOLBAR[PUSH BUTTON] - mImageStrip = static_cast (mDocLoader->findWidget(GLXFULLSCREEN_FILMSTRIP)); - mFlipPushButton = static_cast (mDocLoader->findWidget(GLXFULLSCREEN_FLIP)); - + //Load the IMAGE STRIP & FULLSCREEN TOOLBAR[PUSH BUTTON] + mImageStrip = qobject_cast (mDocLoader->findWidget(GLXFULLSCREEN_FILMSTRIP)); + //When the widget is loaded/retreived the widgets are shown by default. //@to do : hide the widgets by default in docml - mImageStrip->hide(); - mFlipPushButton->hide(); - } + mImageStrip->hide(); + mImageStrip->setLayoutName( QString( "ImageStrip" ) ); + + OstTraceFunctionExit0( GLXFULLSCREENVIEW_LOADWIDGETS_EXIT ); +} + +void GlxFullScreenView::loadFullScreenToolBar() +{ + OstTraceFunctionEntry0( GLXFULLSCREENVIEW_LOADFULLSCREENTOOLBAR_ENTRY ); + + //The fullscreen tool bar is delted when ever the view is deactivated + //so load the docml once again and retreive the object + bool loaded =true; + mDocLoader->load(GLXFULLSCREENDOCMLPATH,&loaded); + loadViewSection(); + + mFullScreenToolBar = qobject_cast (mDocLoader->findObject(QString("toolBar"))); + mFullScreenToolBar->clearActions(); + + //create Flip tool bar button action + mFlipAction = new HbAction(this); + mFlipAction->setData(EGlxCmdDetailsOpen); + mFlipAction->setIcon(HbIcon(GLXICON_FLIP)); + mFullScreenToolBar->addAction( mFlipAction); + + //create Send tool bar button action + mSendAction = new HbAction(this); + mSendAction->setData(EGlxCmdSend); + mSendAction->setIcon(HbIcon(GLXICON_SEND)); + mFullScreenToolBar->addAction( mSendAction); + + //create Delete tool bar button action + mDeleteAction = new HbAction(this); + mDeleteAction->setData(EGlxCmdDelete); + mDeleteAction->setIcon(HbIcon(GLXICON_DELETE)); + mFullScreenToolBar->addAction( mDeleteAction); + + connect(mFlipAction, SIGNAL(triggered( )), this, SLOT(handleToolBarAction( )) ); + connect(mSendAction, SIGNAL(triggered( )), this, SLOT(handleToolBarAction( )) ); + connect(mDeleteAction, SIGNAL(triggered( )), this, SLOT(handleToolBarAction( )) ); + + OstTraceFunctionExit0( GLXFULLSCREENVIEW_LOADFULLSCREENTOOLBAR_EXIT ); +} void GlxFullScreenView::activate() - { - TRACER("GlxFullScreenView::activate()" ); +{ + OstTraceFunctionEntry0( GLXFULLSCREENVIEW_ACTIVATE_ENTRY ); - mWindow->setItemVisible(Hb::AllItems, FALSE) ; + setItemVisible(Hb::AllItems, FALSE) ; - if(!mCoverFlow) - { - //retrives the widgets - loadWidgets(); - } - - loadViewSection(); - - if(mZmPushButton == NULL) { - mZmPushButton = new HbPushButton("ZM",this); - } - - if(NULL == mZoomSlider) { - mZoomSlider = new GlxZoomSlider(this); +//for zoom might not be required after wk15 release + mWindow->viewport()->setAttribute(Qt::WA_AcceptTouchEvents,true); + mWindow->viewport()->grabGesture(Qt::PinchGesture); + + if(!mCoverFlow){ + loadWidgets(); //retrives the widgets } - if(NULL == mZoomControl) { - mZoomControl = new GlxZoomControl(this); - } + //Loads the widgets corresponding to the orientation. + loadViewSection(); + + mUiOffTimer = new QTimer(); + mUiOff = true; + mUiOffTimer->stop(); + mCoverFlow->setUiOn(FALSE); addConnection(); - hideUi(); setLayout(); - mSendUserActivityEvent = true; - if (!iHdmiController) - { - GLX_LOG_INFO("GlxFullScreenView::activate() - CGlxHdmi" ); + + if (!iHdmiController) { + OstTrace0( TRACE_NORMAL, GLXFULLSCREENVIEW_ACTIVATE, "GlxFullScreenView::activate - CGlxHdmi" ); iHdmiController = CGlxHdmiController::NewL(); - } } + + OstTraceFunctionExit0( GLXFULLSCREENVIEW_ACTIVATE_EXIT ); +} void GlxFullScreenView::loadViewSection() - { - TRACER("GlxFullScreenView::loadViewSection()" ); +{ + OstTraceFunctionEntry0( GLXFULLSCREENVIEW_LOADVIEWSECTION_ENTRY ); + bool loaded =true; - if( mWindow->orientation() == Qt::Horizontal ) - { + if( mWindow->orientation() == Qt::Horizontal ) { //Load the Landscape section for Horizontal mDocLoader->load(GLXFULLSCREENDOCMLPATH,GLXFULLSCREENLSSECTION,&loaded); - } - else - { + } + else{ //Load the Portrait section for Horizontal mDocLoader->load(GLXFULLSCREENDOCMLPATH,GLXFULLSCREENPTSECTION,&loaded); - } } - + + OstTraceFunctionExit0( GLXFULLSCREENVIEW_LOADVIEWSECTION_EXIT ); +} void GlxFullScreenView::resetView() - { - TRACER("GlxFullScreenView::resetView()" ); +{ + OstTraceFunctionEntry0( GLXFULLSCREENVIEW_RESETVIEW_ENTRY ); //Clear the 4 icons present in the Coverflow,so that the transition between the views are smooth mCoverFlow->partiallyClean(); //Clean up the rest of the resources allocated - cleanUp(); - } + cleanUp(); + + OstTraceFunctionExit0( GLXFULLSCREENVIEW_RESETVIEW_EXIT ); +} void GlxFullScreenView::deActivate() - { - TRACER("GlxFullScreenView::deActivate()" ); - - mWindow->setItemVisible(Hb::AllItems , TRUE); - - //Clean up the rest of the resources allocated +{ + OstTraceFunctionEntry0( GLXFULLSCREENVIEW_DEACTIVATE_ENTRY ); + + //Clean up the rest of the resources allocated cleanUp(); //deletes the iconitems in the coverflow @@ -174,51 +229,41 @@ //the coverflow is initialised to null //to just reset to the initial state mCoverFlow = NULL; - } + + OstTraceFunctionExit0( GLXFULLSCREENVIEW_DEACTIVATE_EXIT ); +} void GlxFullScreenView::cleanUp() - { - TRACER("GlxFullScreenView::cleanUp()" ); +{ + OstTraceFunctionEntry0( GLXFULLSCREENVIEW_CLEANUP_ENTRY ); removeConnection(); if ( mUiOffTimer ) { - GLX_LOG_INFO("GlxFullScreenView::cleanUp() mUiOffTimer" ); - mUiOffTimer->stop(); - delete mUiOffTimer; - mUiOffTimer = NULL; - } - - mSendUserActivityEvent = false; - - if(mZmPushButton) { - GLX_LOG_INFO("GlxFullScreenView::cleanUp() delete mZmPushButton " ); - delete mZmPushButton; - mZmPushButton = NULL; + OstTrace0( TRACE_NORMAL, GLXFULLSCREENVIEW_CLEANUP, "GlxFullScreenView::cleanUp() mUiOffTimer" ); + mUiOffTimer->stop(); + delete mUiOffTimer; + mUiOffTimer = NULL; } - if(mZoomSlider) { - GLX_LOG_INFO("GlxFullScreenView::cleanUp() delete mZoomSlider " ); - delete mZoomSlider; - mZoomSlider = NULL; + if(mFullScreenToolBar) { + mFullScreenToolBar->clearActions(); + delete mFullScreenToolBar; + mFullScreenToolBar = NULL; } - - if(mZoomControl) { - GLX_LOG_INFO("GlxFullScreenView::cleanUp() delete mZoomControl " ); - delete mZoomControl; - mZoomControl = NULL; - } + + if (iHdmiController) { - GLX_LOG_INFO("GlxFullScreenView::cleanUp() delete iHdmiController " ); - delete iHdmiController; - iHdmiController = NULL; + OstTrace0( TRACE_NORMAL, DUP2_GLXFULLSCREENVIEW_CLEANUP, "GlxFullScreenView::cleanUp() delete iHdmiController" ); + delete iHdmiController; + iHdmiController = NULL; } - - } + + OstTraceFunctionExit0( GLXFULLSCREENVIEW_CLEANUP_EXIT ); +} QGraphicsItem * GlxFullScreenView::getAnimationItem(GlxEffect transitionEffect) - { - TRACER("GlxFullScreenView::getAnimationItem(GlxEffect transitionEffect)"); +{ if ( transitionEffect == GRID_TO_FULLSCREEN || transitionEffect == FULLSCREEN_TO_DETAIL || transitionEffect == DETAIL_TO_FULLSCREEN ) { @@ -226,212 +271,214 @@ } return NULL; - } +} void GlxFullScreenView::setModel( QAbstractItemModel *model ) - { - TRACER("GlxFullScreenView::setModel( QAbstractItemModel *model )"); - GLX_LOG_INFO2("GlxFullScreenView::setModel() model %u mModel %u", model, mModel ); - +{ + OstTraceFunctionEntry0( GLXFULLSCREENVIEW_SETMODEL_ENTRY ); + OstTraceExt2( TRACE_NORMAL, GLXFULLSCREENVIEW_SETMODEL, "GlxFullScreenView::setModel; model=%x; mModel=%u", ( TUint )( model ), ( TUint ) mModel ); + mModel = model; - mCoverFlow->setModel(mModel); - mZoomSlider->setModel(mModel); - mZoomControl->setModel(mModel); - setImageStripModel(); + mCoverFlow->setModel(mModel); + setImageStripModel(); SetImageToHdmiL(); // for the first image on screen - } + + OstTraceFunctionExit0( GLXFULLSCREENVIEW_SETMODEL_EXIT ); +} void GlxFullScreenView::setModelContext() - { - TRACER("GlxFullScreenView::setModelContext()"); +{ + OstTraceFunctionEntry0( GLXFULLSCREENVIEW_SETMODELCONTEXT_ENTRY ); + if ( mModel && mWindow ) { - GLX_LOG_INFO1("GlxFullScreenView::setModelContext %d", mWindow->orientation() ); - - if ( mWindow->orientation() == Qt::Horizontal ) { - WRITE_TIMESTAMP("set the fullscreen landscape context") - mModel->setData(QModelIndex(), (int)GlxContextLsFs, GlxContextRole ); + if ( mWindow->orientation() == Qt::Horizontal ) { + WRITE_TIMESTAMP("set the fullscreen landscape context") + mModel->setData(QModelIndex(), (int)GlxContextLsFs, GlxContextRole ); + } + else { + WRITE_TIMESTAMP("set the fullscreen portrait context") + mModel->setData(QModelIndex(), (int)GlxContextPtFs, GlxContextRole ); + } } - else { - WRITE_TIMESTAMP("set the fullscreen portrait context") - mModel->setData(QModelIndex(), (int)GlxContextPtFs, GlxContextRole ); - } - } - } + + OstTraceFunctionExit0( GLXFULLSCREENVIEW_SETMODELCONTEXT_EXIT ); +} void GlxFullScreenView::orientationChanged(Qt::Orientation orient) - { - TRACER("GlxFullScreenView::orientationChanged()"); +{ + OstTraceFunctionEntry0( GLXFULLSCREENVIEW_ORIENTATIONCHANGED_ENTRY ); + Q_UNUSED(orient) + // fullscreen thumnail size is depends on orientation of phone so change the model context before changing the layout - GLX_LOG_INFO1("GlxFullScreenView::orientationChanged() %d", orient ); + if ( mUiOff == FALSE ) { + mUiOffTimer->start(KUiOffTime); + } setModelContext(); loadViewSection(); setLayout(); - } + + OstTraceFunctionExit0( GLXFULLSCREENVIEW_ORIENTATIONCHANGED_EXIT ); +} void GlxFullScreenView::activateUI() - { - TRACER("GlxFullScreenView::activateUI()"); - GLX_LOG_INFO1("GlxFullScreenView::activateUI() %d", mUiOff ); - if(mSendUserActivityEvent){ - mSendUserActivityEvent = false; - emit cancelTimer(); - } - if ( mUiOff ){ - - if ( mUiOffTimer == NULL ) { - mUiOffTimer = new QTimer(); - connect(mUiOffTimer, SIGNAL(timeout()), this, SLOT(hideUi())); - } - - //set and scrool the current index to the center - QVariant variant = mModel->data( mModel->index(0,0), GlxFocusIndexRole ); - if ( variant.isValid() && variant.canConvert () ) { - mImageStrip->setCurrentIndex ( mModel->index( variant.value(), 0) ); - mImageStrip->scrollTo( mModel->index( variant.value(), 0), HbGridView::PositionAtCenter ); - } - mImageStrip->show(); - - //mZmPushButton->show(); - mFlipPushButton->setZValue( 6 + mCoverFlow->zValue() ); - mFlipPushButton->show(); - mZmPushButton->hide(); - mUiOff = FALSE; - mUiOffTimer->start(KUiOffTime); - mCoverFlow->setUiOn(TRUE); - mWindow->setItemVisible(Hb::AllItems, TRUE) ; - HbEffect::start(mImageStrip, QString("HbGridView"), QString("TapShow"), this, "effectFinished" ); +{ + OstTraceFunctionEntry0( GLXFULLSCREENVIEW_ACTIVATEUI_ENTRY ); + + if ( mUiOff ){ + if(!mFullScreenToolBar) { + loadFullScreenToolBar(); + } + mUiOff = FALSE; + + QVariant variant = mModel->data( mModel->index(0,0), GlxFocusIndexRole ); + if ( variant.isValid() && variant.canConvert () ) { + mImageStrip->setCurrentIndex ( mModel->index( variant.value(), 0) ); + mImageStrip->scrollTo( mModel->index( variant.value(), 0), HbGridView::PositionAtTop ); + } + + mImageStrip->show(); + mFullScreenToolBar->show(); + setItemVisible(Hb::AllItems, TRUE) ; + HbEffect::start(mImageStrip, QString("HbGridView"), QString("TapShow"), this, "effectFinished" ); } else { - hideUi(); - } + hideUi(); } + + OstTraceFunctionExit0( GLXFULLSCREENVIEW_ACTIVATEUI_EXIT ); +} void GlxFullScreenView::hideUi() - { - TRACER("GlxFullScreenView::hideUi()"); - GLX_LOG_INFO1("GlxFullScreenView::hideUi() %d", mUiOff ); - if(mSendUserActivityEvent){ - mSendUserActivityEvent = false; - emit cancelTimer(); - } +{ + OstTraceFunctionEntry0( GLXFULLSCREENVIEW_HIDEUI_ENTRY ); + + //if option menu is open then no need to hide the status bar and image strip HbMenu *menuWidget = menu(); - - //if option menu is open then no need to hide the status bar and image strip if ( menuWidget->isVisible() ) { - return ; + OstTraceFunctionExit0( GLXFULLSCREENVIEW_HIDEUI_EXIT ); + return ; } - - mWindow->setItemVisible(Hb::AllItems, FALSE) ; + + mUiOff = TRUE; + setItemVisible(Hb::AllItems, FALSE) ; if ( mImageStrip ) { - HbEffect::start(mImageStrip, QString("HbGridView"), QString("TapHide"), this, "effectFinished" ); - //mImageStrip->hide(); - } - mZmPushButton->hide(); - - if(mFlipPushButton){ - mFlipPushButton->hide(); + HbEffect::start(mImageStrip, QString("HbGridView"), QString("TapHide"), this, "effectFinished" ); } - if ( mUiOffTimer ) { - mUiOffTimer->stop(); + if(mFullScreenToolBar) { + mFullScreenToolBar->hide(); } - mUiOff = TRUE; - mCoverFlow->setUiOn(FALSE); - } + + OstTraceFunctionExit0( DUP1_GLXFULLSCREENVIEW_HIDEUI_EXIT ); +} void GlxFullScreenView::changeSelectedIndex(const QModelIndex &index) - { - TRACER("GlxFullScreenView::changeSelectedIndex()"); - GLX_LOG_INFO1("GlxFullScreenView::changeSelectedIndex() %d", index.row() ); +{ + OstTraceFunctionEntry0( GLXFULLSCREENVIEW_CHANGESELECTEDINDEX_ENTRY ); + QVariant variant = mModel->data( mModel->index(0,0), GlxFocusIndexRole ); if ( variant.isValid() && variant.canConvert () && ( index.row() == variant.value() ) ) { - return; + OstTraceFunctionExit0( GLXFULLSCREENVIEW_CHANGESELECTEDINDEX_EXIT ); + return; } mModel->setData( index, index.row(), GlxFocusIndexRole ); - mZoomSlider->indexChanged(index.row()); - // mZoomControl->indexChanged(index.row()); - SetImageToHdmiL(); // for the image changed on swipe - } + SetImageToHdmiL(); // for the image changed on swipe + + OstTraceFunctionExit0( DUP1_GLXFULLSCREENVIEW_CHANGESELECTEDINDEX_EXIT ); +} void GlxFullScreenView::indexChanged(const QModelIndex &index) - { - TRACER("GlxFullScreenView::indexChanged()"); - GLX_LOG_INFO1("GlxFullScreenView::indexChanged() %d", index.row() ); +{ + OstTraceFunctionEntry0( GLXFULLSCREENVIEW_INDEXCHANGED_ENTRY ); + QVariant variant = mModel->data( mModel->index(0,0), GlxFocusIndexRole ); if ( variant.isValid() && variant.canConvert () && ( index.row() == variant.value() ) ) { - return; + OstTraceFunctionExit0( GLXFULLSCREENVIEW_INDEXCHANGED_EXIT ); + return; } mModel->setData( index, index.row(), GlxFocusIndexRole ); mCoverFlow->indexChanged(index.row()); - mZoomSlider->indexChanged(index.row()); - mImageStrip->scrollTo(index, HbGridView::PositionAtCenter ); - //mZoomControl->indexChanged(index.row()); - SetImageToHdmiL(); // for the indexchnaged through filmstrip - } + mImageStrip->scrollTo(index, HbGridView::EnsureVisible ); + SetImageToHdmiL(); // for the indexchnaged through filmstrip + //disable the animation for the time being + //imageSelectionAnimation( index ); + + OstTraceFunctionExit0( DUP1_GLXFULLSCREENVIEW_INDEXCHANGED_EXIT ); +} void GlxFullScreenView::scrollingStarted() - { - TRACER("GlxFullScreenView::scrollingStarted() "); +{ + OstTraceFunctionEntry0( GLXFULLSCREENVIEW_SCROLLINGSTARTED_ENTRY ); + //no need to hide the ui during image strip scrolling if ( mUiOffTimer ) { - mUiOffTimer->stop(); + mUiOffTimer->stop(); } - } + + OstTraceFunctionExit0( GLXFULLSCREENVIEW_SCROLLINGSTARTED_EXIT ); +} void GlxFullScreenView::scrollingEnded() - { - TRACER("GlxFullScreenView::scrollingEnded() "); +{ + OstTraceFunctionEntry0( GLXFULLSCREENVIEW_SCROLLINGENDED_ENTRY ); + if ( mUiOffTimer ) { - mUiOffTimer->start(KUiOffTime); + mUiOffTimer->start(KUiOffTime); } setVisvalWindowIndex(); - } + + OstTraceFunctionExit0( GLXFULLSCREENVIEW_SCROLLINGENDED_EXIT ); +} void GlxFullScreenView::pressed(const QModelIndex &index) - { +{ + OstTraceFunctionEntry0( GLXFULLSCREENVIEW_PRESSED_ENTRY ); + Q_UNUSED(index) TRACER("GlxFullScreenView::pressed() "); if ( mUiOffTimer ) { - mUiOffTimer->stop(); + mUiOffTimer->stop(); } - } + OstTraceFunctionExit0( GLXFULLSCREENVIEW_PRESSED_EXIT ); +} void GlxFullScreenView::released(const QModelIndex &index) - { +{ + OstTraceFunctionEntry0( GLXFULLSCREENVIEW_RELEASED_ENTRY ); + Q_UNUSED(index) - TRACER("GlxFullScreenView::released() "); - + if ( mUiOffTimer && mImageStrip->isScrolling() == false ) { - mUiOffTimer->start(KUiOffTime); + mUiOffTimer->start(KUiOffTime); } - } + + OstTraceFunctionExit0( GLXFULLSCREENVIEW_RELEASED_EXIT ); +} void GlxFullScreenView::setVisvalWindowIndex() - { - TRACER("GlxFullScreenView::setVisvalWindowIndex()"); +{ + OstTraceFunctionEntry0( GLXFULLSCREENVIEW_SETVISVALWINDOWINDEX_ENTRY ); + QList< HbAbstractViewItem * > visibleItemList = mImageStrip->visibleItems(); - - GLX_LOG_INFO1("GlxFullScreenView::setVisvalWindowIndex() %d", visibleItemList.count()); if ( visibleItemList.count() <= 0 ) return ; HbAbstractViewItem *item = visibleItemList.at(0); - GLX_LOG_INFO1("GlxFullScreenView::setVisvalWindowIndex()1 item %u", item); if ( item == NULL ) return ; - GLX_LOG_INFO1("GlxFullScreenView::setVisvalWindowIndex() item %u", item); - - GLX_LOG_INFO1("GlxFullScreenView::setVisvalWindowIndex() visual index %d", item->modelIndex().row() ); if ( item->modelIndex().row() < 0 || item->modelIndex().row() >= mModel->rowCount() ) return ; mModel->setData( item->modelIndex (), item->modelIndex().row(), GlxVisualWindowIndex); - } + + OstTraceFunctionExit0( GLXFULLSCREENVIEW_SETVISVALWINDOWINDEX_EXIT ); +} void GlxFullScreenView::coverFlowEventHandle( GlxCoverFlowEvent e ) - { - TRACER("GlxFullScreenView::coverFlowEventHandle()"); +{ + OstTraceFunctionEntry0( GLXFULLSCREENVIEW_COVERFLOWEVENTHANDLE_ENTRY ); + switch( e ){ case TAP_EVENT : activateUI(); @@ -447,216 +494,245 @@ default : break ; - } + } + + OstTraceFunctionExit0( GLXFULLSCREENVIEW_COVERFLOWEVENTHANDLE_EXIT ); +} + +void GlxFullScreenView::effectFinished( const HbEffect::EffectStatus ) +{ + OstTraceFunctionEntry0( GLXFULLSCREENVIEW_EFFECTFINISHED_ENTRY ); + + if ( mUiOff ) { + mUiOffTimer->stop(); + mCoverFlow->setUiOn(FALSE); + mImageStrip->hide(); + } + else { + mUiOffTimer->start(KUiOffTime); + mCoverFlow->setUiOn(TRUE); + } + + OstTraceFunctionExit0( GLXFULLSCREENVIEW_EFFECTFINISHED_EXIT ); +} + +void GlxFullScreenView::imageSelectionEffectFinished( const HbEffect::EffectStatus ) +{ + OstTraceFunctionEntry0( GLXFULLSCREENVIEW_IMAGESELECTIONEFFECTFINISHED_ENTRY ); + + mIconItem->resetTransform(); + mIconItem->setVisible( false ); + + QVariant variant = mModel->data( mModel->index(0,0), GlxFocusIndexRole ); + if ( variant.isValid() && variant.canConvert () ) { + mCoverFlow->indexChanged( variant.value() ) ; + } + + OstTraceFunctionExit0( GLXFULLSCREENVIEW_IMAGESELECTIONEFFECTFINISHED_EXIT ); } void GlxFullScreenView::setLayout() - { - TRACER("GlxFullScreenView::setLayout()"); - //TO:DO read form layout doc - GLX_LOG_INFO1("GlxFullScreenView::setLayout() %d", mWindow->orientation() ); - - QRect screen_rect = mWindow->geometry(); - QSize sz(screen_rect.width(), screen_rect.height()); - +{ + OstTraceFunctionEntry0( GLXFULLSCREENVIEW_SETLAYOUT_ENTRY ); + + QSize sz = screenSize(); mCoverFlow->setItemSize(sz); - mZoomControl->setGeometry(screen_rect); - mZoomControl->setWindowSize(sz); - - mZmPushButton->setZValue(6); - mZmPushButton->setGeometry(QRectF(0,50,50,50)); - } + OstTraceFunctionExit0( GLXFULLSCREENVIEW_SETLAYOUT_EXIT ); +} void GlxFullScreenView::addConnection() - { - TRACER("GlxFullScreenView::addConnection() " ); +{ + OstTraceFunctionEntry0( GLXFULLSCREENVIEW_ADDCONNECTION_ENTRY ); + if ( mCoverFlow ) { connect( mCoverFlow, SIGNAL( coverFlowEvent( GlxCoverFlowEvent ) ), this, SLOT( coverFlowEventHandle( GlxCoverFlowEvent ) ) ); - connect( mCoverFlow, SIGNAL(changeSelectedIndex(const QModelIndex &)), this, SLOT( changeSelectedIndex( const QModelIndex & ))); - + connect( mCoverFlow, SIGNAL(changeSelectedIndex(const QModelIndex &)), this, SLOT( changeSelectedIndex( const QModelIndex & ))); } if ( mImageStrip ) { - connect(mImageStrip, SIGNAL( activated(const QModelIndex &) ), this, SLOT( indexChanged(const QModelIndex &) )); - connect(mImageStrip, SIGNAL( scrollingStarted()), this, SLOT( scrollingStarted())); - connect(mImageStrip, SIGNAL( scrollingEnded()), this, SLOT( scrollingEnded())); - connect(mImageStrip, SIGNAL( pressed(const QModelIndex &) ), this, SLOT( pressed(const QModelIndex &) )); - connect(mImageStrip, SIGNAL( released(const QModelIndex &) ), this, SLOT( released(const QModelIndex &) )); + connect(mImageStrip, SIGNAL( activated(const QModelIndex &) ), this, SLOT( indexChanged(const QModelIndex &) )); + connect(mImageStrip, SIGNAL( scrollingStarted()), this, SLOT( scrollingStarted())); + connect(mImageStrip, SIGNAL( scrollingEnded()), this, SLOT( scrollingEnded())); + connect(mImageStrip, SIGNAL( pressed(const QModelIndex &) ), this, SLOT( pressed(const QModelIndex &) )); + connect(mImageStrip, SIGNAL( released(const QModelIndex &) ), this, SLOT( released(const QModelIndex &) )); } if ( mUiOffTimer ) { - connect(mUiOffTimer, SIGNAL(timeout()), this, SLOT(hideUi())); + connect(mUiOffTimer, SIGNAL(timeout()), this, SLOT(hideUi())); } - //for Zoom - if(mZmPushButton &&mZoomSlider) { - connect(mZmPushButton, SIGNAL(clicked()), mZoomSlider, SLOT(toggleSliderVisibility())); - } + + connect(mWindow, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(orientationChanged(Qt::Orientation))); - if(mFlipPushButton) - { - connect(mFlipPushButton, SIGNAL(clicked()), this, SLOT(showdetailsview()), Qt::QueuedConnection); - } - - - if(mZoomControl && mZoomSlider) { - connect(mZoomSlider, SIGNAL(initialZoomFactor(int)), mZoomControl, SLOT(initialZoomFactor(int))); - connect(mZoomSlider, SIGNAL(valueChanged(int)), mZoomControl, SLOT(zoomImage(int))); - connect(mZoomControl, SIGNAL(hideFullScreenUi()), this, SLOT(hideUi())); - } - - connect(mWindow, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(orientationChanged(Qt::Orientation))); - } + OstTraceFunctionExit0( GLXFULLSCREENVIEW_ADDCONNECTION_EXIT ); +} void GlxFullScreenView::removeConnection() - { - TRACER("GlxFullScreenView::removeConnection() " ); +{ + OstTraceFunctionEntry0( GLXFULLSCREENVIEW_REMOVECONNECTION_ENTRY ); if ( mCoverFlow ) { - GLX_LOG_INFO("GlxFullScreenView::removeConnection() mCoverFlow " ); + GLX_LOG_INFO("GlxFullScreenView::removeConnection() mCoverFlow " ); disconnect( mCoverFlow, SIGNAL( coverFlowEvent( GlxCoverFlowEvent ) ), this, SLOT( coverFlowEventHandle( GlxCoverFlowEvent ) ) ); - disconnect( mCoverFlow, SIGNAL(changeSelectedIndex(const QModelIndex &)), this, SLOT( changeSelectedIndex( const QModelIndex & ))); - + disconnect( mCoverFlow, SIGNAL(changeSelectedIndex(const QModelIndex &)), this, SLOT( changeSelectedIndex( const QModelIndex & ))); } //For Image Strip if ( mImageStrip ) { - GLX_LOG_INFO("GlxFullScreenView::removeConnection() mImageStrip " ); - disconnect(mImageStrip, SIGNAL( activated(const QModelIndex &) ), this, SLOT( indexChanged(const QModelIndex &) )); - disconnect(mImageStrip, SIGNAL( scrollingStarted()), this, SLOT( scrollingStarted())); - disconnect(mImageStrip, SIGNAL( scrollingEnded()), this, SLOT( scrollingEnded())); - disconnect(mImageStrip, SIGNAL( pressed(const QModelIndex &) ), this, SLOT( pressed(const QModelIndex &) )); - disconnect(mImageStrip, SIGNAL( released(const QModelIndex &) ), this, SLOT( released(const QModelIndex &) )); + GLX_LOG_INFO("GlxFullScreenView::removeConnection() mImageStrip " ); + disconnect(mImageStrip, SIGNAL( activated(const QModelIndex &) ), this, SLOT( indexChanged(const QModelIndex &) )); + disconnect(mImageStrip, SIGNAL( scrollingStarted()), this, SLOT( scrollingStarted())); + disconnect(mImageStrip, SIGNAL( scrollingEnded()), this, SLOT( scrollingEnded())); + disconnect(mImageStrip, SIGNAL( pressed(const QModelIndex &) ), this, SLOT( pressed(const QModelIndex &) )); + disconnect(mImageStrip, SIGNAL( released(const QModelIndex &) ), this, SLOT( released(const QModelIndex &) )); } if ( mUiOffTimer ) { - GLX_LOG_INFO("GlxFullScreenView::removeConnection() mUiOffTimer " ); - disconnect(mUiOffTimer, SIGNAL(timeout()), this, SLOT(hideUi())); + GLX_LOG_INFO("GlxFullScreenView::removeConnection() mUiOffTimer " ); + disconnect(mUiOffTimer, SIGNAL(timeout()), this, SLOT(hideUi())); } - //for Zoom - if(mZmPushButton &&mZoomSlider) { - GLX_LOG_INFO("GlxFullScreenView::removeConnection() mZoomSlider " ); - disconnect(mZmPushButton, SIGNAL(clicked()), mZoomSlider, SLOT(toggleSliderVisibility())); + + if(mFlipAction) { + disconnect(mFlipAction, SIGNAL(triggered( )), this, SLOT(handleToolBarAction( )) ); + } + + if(mSendAction) { + disconnect(mSendAction, SIGNAL(triggered( )), this, SLOT(handleToolBarAction( )) ); } - if(mZoomControl &&mZoomSlider) { - GLX_LOG_INFO("GlxFullScreenView::removeConnection() mZoomSlider " ); - disconnect(mZoomSlider, SIGNAL(initialZoomFactor(int)), mZoomControl, SLOT(initialZoomFactor(int))); - disconnect(mZoomSlider, SIGNAL(valueChanged(int)), mZoomControl, SLOT(zoomImage(int))); - disconnect(mZoomControl, SIGNAL(hideFullScreenUi()), this, SLOT(hideUi())); + if(mDeleteAction) { + disconnect(mDeleteAction, SIGNAL(triggered( )), this, SLOT(handleToolBarAction( )) ); } - //for Details view launching - if(mFlipPushButton) { - GLX_LOG_INFO("GlxFullScreenView::removeConnection() mFlipPushButton " ); - disconnect(mFlipPushButton, SIGNAL(clicked()), this, SLOT(showdetailsview())); - } + disconnect(mWindow, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(orientationChanged(Qt::Orientation))); - disconnect(mWindow, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(orientationChanged(Qt::Orientation))); - } + OstTraceFunctionExit0( GLXFULLSCREENVIEW_REMOVECONNECTION_EXIT ); +} void GlxFullScreenView::setImageStripModel() - { - TRACER("GlxFullScreenView::setImageStripModel()" ); - if ( mModel && mImageStrip ) { +{ + OstTraceFunctionEntry0( GLXFULLSCREENVIEW_SETIMAGESTRIPMODEL_ENTRY ); + mImageStrip->setModel( mModel ); QVariant variant = mModel->data( mModel->index(0,0), GlxFocusIndexRole ); if ( variant.isValid() && variant.canConvert () ) { - mImageStrip->setCurrentIndex ( mModel->index( variant.value(), 0) ); - } + mImageStrip->setCurrentIndex ( mModel->index( variant.value(), 0) ); } - } + + OstTraceFunctionExit0( GLXFULLSCREENVIEW_SETIMAGESTRIPMODEL_EXIT ); +} GlxFullScreenView::~GlxFullScreenView() - { - TRACER("GlxFullScreenView::~GlxFullScreenView()" ); +{ + OstTraceFunctionEntry0( DUP1_GLXFULLSCREENVIEW_GLXFULLSCREENVIEW_ENTRY ); + cleanUp(); + + delete mIconItem ; + mIconItem = NULL; if(mImageStrip) { - GLX_LOG_INFO("GlxFullScreenView::cleanUp() delete mImageStrip " ); - delete mImageStrip; - mImageStrip = NULL; + delete mImageStrip; + mImageStrip = NULL; } - if(mFlipPushButton) { - GLX_LOG_INFO("GlxFullScreenView::cleanUp() delete mFlipPushButton " ); - delete mFlipPushButton; - mFlipPushButton = NULL; + if(mFullScreenToolBar) { + delete mFullScreenToolBar; + mFullScreenToolBar = NULL; } if(mCoverFlow) { - GLX_LOG_INFO("GlxFullScreenView::~GlxFullScreenView() delete mCoverFlow " ); - delete mCoverFlow; - mCoverFlow = NULL; + delete mCoverFlow; + mCoverFlow = NULL; } - if(mDocLoader != NULL) - { + if(mDocLoader != NULL) { mDocLoader->reset(); delete mDocLoader; - } + } + HbEffect::remove( QString("HbGridView"), QString(":/data/transitionup.fxml"), QString( "TapShow" )); - HbEffect::remove( QString("HbGridView"), QString(":/data/transitiondown.fxml"), QString( "TapHide" )); - } + HbEffect::remove( QString("HbGridView"), QString(":/data/transitiondown.fxml"), QString( "TapHide" )); + HbEffect::remove( QString("HbGridViewItem"), QString(":/data/gridtofullscreenhide.fxml"), QString( "Select" )); -void GlxFullScreenView::showdetailsview() - { - TRACER("GlxFullScreenView::showdetailsview()" ); - //trigger the details view to be shown - emit actionTriggered( EGlxCmdDetailsOpen ); - } + OstTraceFunctionExit0( DUP1_GLXFULLSCREENVIEW_GLXFULLSCREENVIEW_EXIT ); +} void GlxFullScreenView::handleUserAction(qint32 commandId) - { - TRACER("GlxFullScreenView::handleUserAction()" ); - switch( commandId ) - { +{ + OstTraceFunctionEntry0( GLXFULLSCREENVIEW_HANDLEUSERACTION_ENTRY ); + + switch( commandId ) { case EGlxCmdRotate : //trigger the rotate Effect in CoverFlow mCoverFlow->rotateImage(); break; - case EGlxCmdSend: - { - QString imagePath = (mModel->data(mModel->index(mModel->data(mModel->index(0,0),GlxFocusIndexRole).value(),0),GlxUriRole)).value(); - if(imagePath.isNull()) - { - GLX_LOG_INFO("GlxFullScreenView::SendUi() path is null" ); - } - qDebug() << "GlxFullScreenView::SendUi() imagePath= " << imagePath; + - ShareUi dialog; - QList fileList; - fileList.append(QVariant(imagePath)); - dialog.init(fileList,true); - } - break; + default : break; - } } + OstTraceFunctionExit0( GLXFULLSCREENVIEW_HANDLEUSERACTION_EXIT ); +} + void GlxFullScreenView::SetImageToHdmiL() - { - TRACER("GlxFullScreenView::SetImageToHdmiL() - CGlxHdmi 1" ); - if (iHdmiController) - { - GLX_LOG_INFO("GlxFullScreenView::SetImageToHdmiL() - CGlxHdmi 2" ); +{ + OstTraceFunctionEntry0( GLXFULLSCREENVIEW_SETIMAGETOHDMIL_ENTRY ); + + if (iHdmiController) { + OstTrace0( TRACE_NORMAL, GLXFULLSCREENVIEW_SETIMAGETOHDMIL, "GlxFullScreenView::SetImageToHdmiL() - CGlxHdmi 2" ); + // Get the image uri QString imagePath = (mModel->data(mModel->index(mModel->data(mModel->index(0,0),GlxFocusIndexRole).value(),0),GlxUriRole)).value(); - if(imagePath.isNull()) - { - GLX_LOG_INFO("GlxFullScreenView::SetImageToHdmiL() path is null" ); - } - qDebug() << "GlxFullScreenView::SetImageToHdmiL() imagePath= " << imagePath; + if(imagePath.isNull()) { + OstTrace0( TRACE_NORMAL, DUP1_GLXFULLSCREENVIEW_SETIMAGETOHDMIL, "GlxFullScreenView::SetImageToHdmiL() path is null" ); + } + TPtrC aPtr = reinterpret_cast(imagePath.utf16()); - // Get the image Dimensions - QSize imageDimension = (mModel->data(mModel->index(mModel->data(mModel->index(0,0),GlxFocusIndexRole).value(),0),GlxDimensionsRole)).value(); - TSize imageSize(imageDimension.width(),imageDimension.height()); - - // Get the framecount - int frameCount = (mModel->data(mModel->index(mModel->data(mModel->index(0,0),GlxFocusIndexRole).value(),0),GlxFrameCount)).value(); - iHdmiController->SetImageL(aPtr,imageSize, frameCount); - } + iHdmiController->SetImageL(aPtr); + } + + OstTraceFunctionExit0( GLXFULLSCREENVIEW_SETIMAGETOHDMIL_EXIT ); +} + +void GlxFullScreenView::imageSelectionAnimation(const QModelIndex &index) +{ + OstTraceFunctionEntry0( GLXFULLSCREENVIEW_IMAGESELECTIONANIMATION_ENTRY ); + + if ( mIconItem == NULL ) { + mIconItem = new HbIconItem( mCoverFlow ); + mIconItem->setBrush( QBrush( Qt::black ) ); + mIconItem->setZValue( mCoverFlow->zValue() ); } + + HbAbstractViewItem *mItem = mImageStrip->itemByIndex( index ); + mIconItem->setSize( mItem->size() ); + mIconItem->setPos( mItem->sceneTransform().map( QPoint(0,0)).x() , screenSize().height() - 2 * mItem->size().height() ); + mIconItem->setVisible( true ); + + QVariant variant = mModel->data( index, Qt::DecorationRole ); + if ( variant.isValid() && variant.canConvert () ) { + mIconItem->setIcon ( variant.value() ) ; + } + else { + mIconItem->setIcon( HbIcon() ); + } + HbEffect::start( mIconItem, QString("HbGridViewItem"), QString("Select"), this, "imageSelectionEffectFinished" ); + + OstTraceFunctionExit0( GLXFULLSCREENVIEW_IMAGESELECTIONANIMATION_EXIT ); +} + +void GlxFullScreenView::handleToolBarAction() +{ + OstTraceFunctionEntry0( GLXFULLSCREENVIEW_HANDLETOOLBARACTION_ENTRY ); + + HbAction *action = qobject_cast(sender()); + qint32 commandId = action->data().toInt(); + emit actionTriggered( commandId ); + + OstTraceFunctionExit0( GLXFULLSCREENVIEW_HANDLETOOLBARACTION_EXIT ); +} diff -r 74c9f037fd5d -r 99ad1390cd33 ui/views/gridview/inc/glxgridview.h --- a/ui/views/gridview/inc/glxgridview.h Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/views/gridview/inc/glxgridview.h Fri Apr 16 14:58:46 2010 +0300 @@ -43,6 +43,7 @@ ~GlxGridView(); void activate() ; void deActivate(); + void initializeView(QAbstractItemModel *model); void setModel(QAbstractItemModel *model); void addToolBar( HbToolBar *toolBar ); void enableMarking() ; @@ -54,7 +55,6 @@ public slots: void itemSelected(const QModelIndex & index); void setVisvalWindowIndex(); - void scrollPositionChange (QPointF newPosition, Qt::Orientations importantDimensions); /* * This loads the docml and retrives the widgets from the * docml corresponding to the present orentation @@ -71,6 +71,7 @@ private: void addViewConnection(); void removeViewConnection(); + void resetItemTransform(); private: HbGridView *mGridView; @@ -79,7 +80,7 @@ QAbstractItemModel *mModel ; int mVisualIndex; //first item index of the page //To:Do remove later HbAbstractViewItem *mItem; - HbDocumentLoader *mDocLoader; //Docml loader to load the widgets from docml + HbDocumentLoader *mDocLoader; //Docml loader to load the widgets from docml }; #endif /* GLXGRIDVIEW_H_ */ diff -r 74c9f037fd5d -r 99ad1390cd33 ui/views/gridview/src/glxgridview.cpp --- a/ui/views/gridview/src/glxgridview.cpp Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/views/gridview/src/glxgridview.cpp Fri Apr 16 14:58:46 2010 +0300 @@ -43,95 +43,84 @@ #include "glxgridviewTraces.h" #endif -GlxGridView::GlxGridView(HbMainWindow *window) : GlxView ( GLX_GRIDVIEW_ID ), - mGridView(NULL), mView(NULL), mWindow(window), mModel ( NULL), mVisualIndex(0), - mItem(NULL) - { +GlxGridView::GlxGridView(HbMainWindow *window) + : GlxView ( GLX_GRIDVIEW_ID ), + mGridView(NULL), + mView(NULL), + mWindow(window), + mModel ( NULL), + mVisualIndex(0), + mItem(NULL) +{ OstTraceFunctionEntry0( GLXGRIDVIEW_GLXGRIDVIEW_ENTRY ); mDocLoader = new HbDocumentLoader(); OstTraceFunctionExit0( GLXGRIDVIEW_GLXGRIDVIEW_EXIT ); setContentFullScreen( true ); - } +} void GlxGridView::activate() - { +{ OstTraceFunctionEntry0( GLXGRIDVIEW_ACTIVATE_ENTRY ); - loadGridView(mWindow->orientation()); - addViewConnection(); - // mVisualIndex = 0; //To:Do remove later once we get visual index change notification from grid view - - - + addViewConnection(); mGridView->resetTransform(); //to reset the transition effect (reset transform matrix) mGridView->setOpacity( 1); - - if ( mItem ) { - mItem->resetTransform(); //to reset the transition effect (reset transform matrix) - mItem->setOpacity( 1); - mItem->setZValue( mItem->zValue() - 20); - disconnect( mItem, SIGNAL( destroyed() ), this, SLOT( itemDestroyed() ) ); - mItem = NULL; - } + resetItemTransform(); OstTraceFunctionExit0( GLXGRIDVIEW_ACTIVATE_EXIT ); - } +} void GlxGridView::deActivate() - { +{ OstTraceFunctionEntry0( GLXGRIDVIEW_DEACTIVATE_ENTRY ); removeViewConnection(); - + OstTraceFunctionExit0( GLXGRIDVIEW_DEACTIVATE_EXIT ); +} - /*if ( mItem ) { - mItem->resetTransform(); //to reset the transition effect - mItem->setOpacity( 1); - disconnect( mItem, SIGNAL( destroyed() ), this, SLOT( itemDestroyed() ) ); - mItem = NULL; - }*/ - takeToolBar(); //To:Do improved later - emit toolBarChanged(); - OstTraceFunctionExit0( GLXGRIDVIEW_DEACTIVATE_EXIT ); +void GlxGridView::initializeView(QAbstractItemModel *model) +{ + resetItemTransform(); + mGridView->setModel(model); + mModel = model; + loadGridView(mWindow->orientation()); + QVariant variant = model->data( model->index(0,0), GlxFocusIndexRole ); + if ( variant.isValid() && variant.canConvert () ) { + mGridView->scrollTo( model->index( variant.value(),0), HbGridView::EnsureVisible ); } +} void GlxGridView::setModel(QAbstractItemModel *model) - { +{ OstTraceFunctionEntry0( GLXGRIDVIEW_SETMODEL_ENTRY ); - mModel = model ; mGridView->setModel(mModel); QVariant variant = mModel->data( mModel->index(0,0), GlxFocusIndexRole ); if ( variant.isValid() && variant.canConvert () ) { - mGridView->scrollTo( mModel->index( variant.value(),0), HbGridView::PositionAtCenter ); - } - + mGridView->scrollTo( mModel->index( variant.value(),0), HbGridView::EnsureVisible ); + } OstTraceFunctionExit0( GLXGRIDVIEW_SETMODEL_EXIT ); - } +} void GlxGridView::addToolBar( HbToolBar *toolBar ) - { - OstTraceFunctionEntry0( GLXGRIDVIEW_ADDTOOLBAR_ENTRY ); - //toolBar->setParent(this); - if ( mGridView ) { - toolBar->setZValue(mGridView->zValue()); - } +{ + OstTraceFunctionEntry0( GLXGRIDVIEW_ADDTOOLBAR_ENTRY ); setToolBar(toolBar) ; OstTraceFunctionExit0( GLXGRIDVIEW_ADDTOOLBAR_EXIT ); - } +} void GlxGridView::enableMarking() - { +{ OstTrace0( TRACE_NORMAL, GLXGRIDVIEW_ENABLEMARKING, "GlxGridView::enableMarking" ); mGridView->setSelectionMode(HbGridView::MultiSelection); - } +} void GlxGridView::disableMarking() - { +{ OstTrace0( TRACE_NORMAL, GLXGRIDVIEW_DISABLEMARKING, "GlxGridView::disableMarking" ); mGridView->setSelectionMode(HbGridView::NoSelection); - } +} void GlxGridView::handleUserAction(qint32 commandId) - { +{ OstTrace0( TRACE_NORMAL, GLXGRIDVIEW_HANDLEUSERACTION, "GlxGridView::handleUserAction" ); switch( commandId ){ case EGlxCmdMarkAll : @@ -142,102 +131,89 @@ mGridView->clearSelection(); break; - case EGlxCmdSend: - { - OstTrace0( TRACE_NORMAL, DUP1_GLXGRIDVIEW_HANDLEUSERACTION, "GlxGridView::handleUserAction-SendUI" ); - - QString imagePath = (mModel->data(mModel->index(mModel->data(mModel->index(0,0),GlxFocusIndexRole).value() - ,0),GlxUriRole)).value(); - - if(imagePath.isNull()) - { - OstTrace0( TRACE_NORMAL, DUP2_GLXGRIDVIEW_HANDLEUSERACTION, "GlxGridView::SendUi path is NULL" ); - } - qDebug() << "GlxGridView::SendUi() imagePath= " << imagePath; - - ShareUi dialog; - QList fileList; - fileList.append(QVariant(imagePath)); - dialog.init(fileList,true); - } - break; + default : break; } - } +} QItemSelectionModel * GlxGridView::getSelectionModel() - { +{ OstTrace0( TRACE_NORMAL, GLXGRIDVIEW_GETSELECTIONMODEL, "GlxGridView::getSelectionModel" ); return mGridView->selectionModel(); - } +} QGraphicsItem * GlxGridView::getAnimationItem(GlxEffect transitionEffect) - { +{ OstTraceFunctionEntry0( GLXGRIDVIEW_GETANIMATIONITEM_ENTRY ); int selIndex = -1; if ( transitionEffect == FULLSCREEN_TO_GRID ) { - return mGridView; + return mGridView; } if ( transitionEffect == GRID_TO_FULLSCREEN ) { - QVariant variant = mModel->data( mModel->index(0,0), GlxFocusIndexRole ); - if ( variant.isValid() && variant.canConvert () ) { - selIndex = variant.value(); - } - - mItem = mGridView->itemByIndex( mModel->index(selIndex,0) ); - connect(mItem, SIGNAL(destroyed()), this, SLOT( itemDestroyed())); - mItem->setZValue( mItem->zValue() + 20); - return mItem; + QVariant variant = mModel->data( mModel->index(0,0), GlxFocusIndexRole ); + if ( variant.isValid() && variant.canConvert () ) { + selIndex = variant.value(); + } + + mItem = mGridView->itemByIndex( mModel->index(selIndex,0) ); + connect(mItem, SIGNAL(destroyed()), this, SLOT( itemDestroyed())); + mItem->setZValue( mItem->zValue() + 20); + return mItem; } if ( transitionEffect == GRID_TO_ALBUMLIST || transitionEffect == ALBUMLIST_TO_GRID ){ - return mGridView; + return mGridView; } - return NULL; OstTraceFunctionExit0( GLXGRIDVIEW_GETANIMATIONITEM_EXIT ); - } + return NULL; +} void GlxGridView::loadGridView(Qt::Orientation orient) - { +{ OstTraceFunctionEntry0( GLXGRIDVIEW_LOADGRIDVIEW_ENTRY ); bool loaded = true; QString section; + GlxContextMode mode ; + //Load the widgets accroding to the current Orientation - if(orient == Qt::Horizontal) - { + if(orient == Qt::Horizontal) { section = GLX_GRIDVIEW_LSSECTION ; - } - else - { + mode = GlxContextLsGrid ; + } + else { section = GLX_GRIDVIEW_PTSECTION ; - } + mode = GlxContextPtGrid ; + } - if (mGridView == NULL ) - { + if (mGridView == NULL ) { mDocLoader->load(GLX_GRIDVIEW_DOCMLPATH,&loaded); - if(loaded) - { + if(loaded) { //retrieve the widgets mView = static_cast(mDocLoader->findWidget(QString(GLX_GRIDVIEW_VIEW))); mGridView = static_cast(mDocLoader->findWidget(GLX_GRIDVIEW_GRID)); setWidget( mView ); - } + mGridView->setLayoutName( QString( "GridView" ) ); } + } //Load the Sections mDocLoader->load(GLX_GRIDVIEW_DOCMLPATH,section,&loaded); + + if ( mModel ) { + mModel->setData(QModelIndex(), (int)mode, GlxContextRole ); + } OstTraceFunctionExit0( GLXGRIDVIEW_LOADGRIDVIEW_EXIT ); - } +} void GlxGridView::itemDestroyed() - { +{ OstTrace0( TRACE_NORMAL, GLXGRIDVIEW_ITEMDESTROYED, "GlxGridView::itemDestroyed" ); disconnect( mItem, SIGNAL( destroyed() ), this, SLOT( itemDestroyed() ) ); mItem = NULL; - } +} QVariant GlxGridView::itemChange (GraphicsItemChange change, const QVariant &value) { @@ -253,30 +229,40 @@ } void GlxGridView::addViewConnection () - { +{ OstTrace0( TRACE_NORMAL, GLXGRIDVIEW_ADDVIEWCONNECTION, "GlxGridView::addViewConnection" ); connect(mWindow, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(loadGridView(Qt::Orientation))); connect(mGridView, SIGNAL(activated(const QModelIndex &)), this, SLOT( itemSelected(const QModelIndex &))); connect( mGridView, SIGNAL( scrollingEnded() ), this, SLOT( setVisvalWindowIndex() ) ); if(XQServiceUtil::isService()){ - connect(mGridView, SIGNAL(activated(const QModelIndex &)), this, SIGNAL( gridItemSelected(const QModelIndex &))); + connect(mGridView, SIGNAL(activated(const QModelIndex &)), this, SIGNAL( gridItemSelected(const QModelIndex &))); } - // connect(mGridView, SIGNAL(scrollPositionChange(QPointF , Qt::Orientations)), this, SLOT( scrollPositionChange(QPointF, Qt::Orientations))); connect(mGridView, SIGNAL(longPressed( HbAbstractViewItem*, QPointF )),this, SLOT( indicateLongPress( HbAbstractViewItem*, QPointF ) ) ); - } +} void GlxGridView::removeViewConnection () - { +{ OstTrace0( TRACE_NORMAL, GLXGRIDVIEW_REMOVEVIEWCONNECTION, "GlxGridView::removeViewConnection" ); - disconnect(mWindow, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(orientationChanged(Qt::Orientation))); + disconnect(mWindow, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(loadGridView(Qt::Orientation))); disconnect(mGridView, SIGNAL(activated(const QModelIndex &)), this, SLOT( itemSelected(const QModelIndex &))); disconnect(mGridView, SIGNAL(activated(const QModelIndex &)), this, SIGNAL( gridItemSelected(const QModelIndex &))); disconnect( mGridView, SIGNAL( scrollingEnded() ), this, SLOT( setVisvalWindowIndex() ) ); disconnect(mGridView, SIGNAL(longPressed( HbAbstractViewItem*, QPointF )),this, SLOT( indicateLongPress( HbAbstractViewItem*, QPointF ) ) ); +} + +void GlxGridView::resetItemTransform() +{ + if ( mItem ) { + mItem->resetTransform(); //to reset the transition effect (reset transform matrix) + mItem->setOpacity( 1); + mItem->setZValue( mItem->zValue() - 20); + disconnect( mItem, SIGNAL( destroyed() ), this, SLOT( itemDestroyed() ) ); + mItem = NULL; } +} void GlxGridView::itemSelected(const QModelIndex & index) - { +{ OstTrace1( TRACE_NORMAL, GLXGRIDVIEW_ITEMSELECTED, "GlxGridView::itemSelected;index=%d", index.row() ); if ( mGridView->selectionMode() == HbGridView::MultiSelection ){ //in multi selection mode no need to open the full screen @@ -290,10 +276,10 @@ } emit actionTriggered( EGlxCmdFullScreenOpen ); OstTraceEventStop( EVENT_DUP1_GLXGRIDVIEW_ITEMSELECTED_STOP, "Fullscreen Launch Time", EVENT_DUP1_GLXGRIDVIEW_ITEMSELECTED_START ); - } +} void GlxGridView::setVisvalWindowIndex() - { +{ OstTrace0( TRACE_IMPORTANT, GLXGRIDVIEW_SETVISVALWINDOWINDEX, "GlxGridView::setVisvalWindowIndex" ); QList< HbAbstractViewItem * > visibleItemList = mGridView->visibleItems(); qDebug("GlxGridView::setVisvalWindowIndex() %d", visibleItemList.count()); @@ -315,42 +301,10 @@ return ; mModel->setData( item->modelIndex (), item->modelIndex().row(), GlxVisualWindowIndex); - } - -//To:Do remove later once we get visual index change notification from grid view -void GlxGridView::scrollPositionChange (QPointF newPosition, Qt::Orientations importantDimensions) - { - OstTrace0( TRACE_IMPORTANT, DUP1_GLXGRIDVIEW_SCROLLPOSITIONCHANGE, "GlxGridView::scrollPositionChange" ); - Q_UNUSED(importantDimensions); - qreal x = newPosition.x(); - qreal y = newPosition.y(); - int index = 0; - OstTraceExt2( TRACE_IMPORTANT, GLXGRIDVIEW_SCROLLPOSITIONCHANGE, "GlxGridView::scrollPositionChange;x=%f;y=%f", x, y ); - - if( mWindow->orientation() == Qt::Vertical ) { - index = y / 100; - index = index * NBR_COL; - } - else { - index = y / 98; - index = index * NBR_ROW; - } - - OstTraceExt2( TRACE_IMPORTANT, DUP2_GLXGRIDVIEW_SCROLLPOSITIONCHANGE, - "GlxGridView::scrollPositionChange;index=%d;visualindex=%d", index, mVisualIndex ); - - if ( qAbs (index - mVisualIndex) >= NBR_PAGE && index >=0 && index < mModel->rowCount() ) { - mVisualIndex = index; - OstTrace0( TRACE_IMPORTANT, DUP3_GLXGRIDVIEW_SCROLLPOSITIONCHANGE, - "GlxGridView::scrollPositionChange visual index changed" ); - //To:Do call back of model for visual index change - //mModel->setVisibleWindowIndex( mModel->index(mVisualIndex, 0 )); - } - } - +} GlxGridView::~GlxGridView() - { +{ OstTraceFunctionEntry0( DUP1_GLXGRIDVIEW_GLXGRIDVIEW_ENTRY ); removeViewConnection(); delete mGridView; @@ -360,20 +314,20 @@ mDocLoader = NULL; OstTraceFunctionExit0( DUP1_GLXGRIDVIEW_GLXGRIDVIEW_EXIT ); - } +} void GlxGridView::indicateLongPress(HbAbstractViewItem *item, QPointF coords) - { +{ OstTrace0( TRACE_NORMAL, GLXGRIDVIEW_INDICATELONGPRESS, "GlxGridView::indicateLongPress" ); qDebug() << "GlxGridView:indicateLongPress Item " << item->modelIndex() << "long pressed at " << coords; if ( mGridView->selectionMode() == HbGridView::MultiSelection ){ //in multi selection mode no need to open the context menu - return ; + return ; } if ( mModel ) { - mModel->setData( item->modelIndex(), item->modelIndex().row(), GlxFocusIndexRole ); + mModel->setData( item->modelIndex(), item->modelIndex().row(), GlxFocusIndexRole ); } emit itemSpecificMenuTriggered(viewId(),coords); - } +} diff -r 74c9f037fd5d -r 99ad1390cd33 ui/views/listview/inc/glxlistview.h --- a/ui/views/listview/inc/glxlistview.h Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/views/listview/inc/glxlistview.h Fri Apr 16 14:58:46 2010 +0300 @@ -46,7 +46,8 @@ private slots: void indicateLongPress( HbAbstractViewItem *item, QPointF coords ); - + void setVisvalWindowIndex(); + private: void addViewConnection(); void removeViewConnection(); diff -r 74c9f037fd5d -r 99ad1390cd33 ui/views/listview/src/glxlistview.cpp --- a/ui/views/listview/src/glxlistview.cpp Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/views/listview/src/glxlistview.cpp Fri Apr 16 14:58:46 2010 +0300 @@ -24,7 +24,7 @@ #include #include #include - +#include //User Includes #include "glxviewids.h" #include "glxlistview.h" @@ -54,8 +54,6 @@ { qDebug("GlxListView::deActivate()"); disconnect(mWindow, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(orientationChanged(Qt::Orientation))); - takeToolBar(); //To:Do improved later - emit toolBarChanged(); } void GlxListView::setModel(QAbstractItemModel *model) @@ -67,10 +65,6 @@ void GlxListView::addToolBar( HbToolBar *toolBar ) { - //toolBar->setParent(this); - if ( mListView ) { - toolBar->setZValue(mListView->zValue()); - } setToolBar(toolBar) ; } @@ -97,6 +91,7 @@ qDebug("GlxListView::addViewConnection()"); connect(mListView, SIGNAL(activated(const QModelIndex &)), this, SLOT( itemSelected(const QModelIndex &))); connect(mListView, SIGNAL(longPressed( HbAbstractViewItem*, QPointF )),this, SLOT( indicateLongPress( HbAbstractViewItem*, QPointF ) ) ); + connect( mListView, SIGNAL( scrollingEnded() ), this, SLOT( setVisvalWindowIndex() ) ); } void GlxListView::removeViewConnection() @@ -104,8 +99,27 @@ qDebug("GlxListView::removeViewConnection()"); disconnect(mListView, SIGNAL(activated(const QModelIndex &)), this, SLOT( itemSelected(const QModelIndex &))); disconnect(mListView, SIGNAL(longPressed( HbAbstractViewItem*, QPointF )),this, SLOT( indicateLongPress( HbAbstractViewItem*, QPointF ) ) ); + disconnect( mListView, SIGNAL( scrollingEnded() ), this, SLOT( setVisvalWindowIndex() ) ); } +void GlxListView::setVisvalWindowIndex() + { + QList< HbAbstractViewItem * > visibleItemList = mListView->visibleItems(); + qDebug("GlxListView::setVisvalWindowIndex() %d", visibleItemList.count()); + + if ( visibleItemList.count() <= 0 ) + return ; + + HbAbstractViewItem *item = visibleItemList.at(0); + if ( item == NULL ) + return ; + + if ( item->modelIndex().row() < 0 || item->modelIndex().row() >= mModel->rowCount() ) + return ; + + mModel->setData( item->modelIndex (), item->modelIndex().row(), GlxVisualWindowIndex); + } + void GlxListView::loadListView() { qDebug("GlxListView::loadListView()"); @@ -125,7 +139,9 @@ //sets the widget setWidget((QGraphicsWidget*) mView); } - } + } + HbListViewItem *prototype = mListView->listItemPrototype(); + prototype->setStretchingStyle(HbListViewItem::StretchLandscape); } } diff -r 74c9f037fd5d -r 99ad1390cd33 ui/views/slideshowview/src/glxslideshowview.cpp --- a/ui/views/slideshowview/src/glxslideshowview.cpp Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/views/slideshowview/src/glxslideshowview.cpp Fri Apr 16 14:58:46 2010 +0300 @@ -38,49 +38,50 @@ GlxSlideShowView::GlxSlideShowView(HbMainWindow *window,HbDocumentLoader *DocLoader) : GlxView(GLX_SLIDESHOWVIEW_ID), mModel(NULL), mWindow(window), mSlideShowWidget(NULL),iHdmiController(NULL) - { +{ TRACER("GlxSlideShowView::GlxSlideShowView()"); mDocLoader = DocLoader; - } +} GlxSlideShowView::~GlxSlideShowView() - { +{ TRACER("GlxSlideShowView::~GlxSlideShowView()"); if(mSlideShowWidget){ disconnect( mSlideShowWidget, SIGNAL( slideShowEvent( GlxSlideShowEvent ) ), this, SLOT( slideShowEventHandler( GlxSlideShowEvent ) ) ); delete mSlideShowWidget; mSlideShowWidget = NULL; - } + } if(mDocLoader) { mDocLoader->reset(); delete mDocLoader; mDocLoader = NULL; - } } +} void GlxSlideShowView::activate() - { +{ //To:Do error handling TRACER("GlxSlideShowView::activate()"); + mWindow->setOrientation(Qt::Horizontal, false); //finds the widgets from the docml loadObjects(); - mWindow->setItemVisible(Hb::AllItems, false) ; - connect(mWindow, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(orientationChanged(Qt::Orientation))); + setItemVisible(Hb::AllItems, false) ; connect( mSlideShowWidget, SIGNAL( slideShowEvent( GlxSlideShowEvent ) ), this, SLOT( slideShowEventHandler( GlxSlideShowEvent ) ) ); connect( mSlideShowWidget, SIGNAL( indexchanged() ), this, SLOT( indexchanged() ) ); + if (!iHdmiController) { GLX_LOG_INFO("GlxSlideShowView::activate() - CGlxHdmi" ); iHdmiController = CGlxHdmiController::NewL(); - } - } + } +} void GlxSlideShowView::deActivate() - { +{ TRACER("GlxSlideShowView::deActivate()"); - mWindow->setItemVisible(Hb::AllItems , TRUE); - disconnect(mWindow, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(orientationChanged(Qt::Orientation))); + mWindow->unsetOrientation(false); + setItemVisible(Hb::AllItems , TRUE); disconnect( mSlideShowWidget, SIGNAL( slideShowEvent( GlxSlideShowEvent ) ), this, SLOT( slideShowEventHandler( GlxSlideShowEvent ) ) ); disconnect( mSlideShowWidget, SIGNAL( indexchanged() ), this, SLOT( indexchanged() ) ); //Delete the Items in the slide show widget @@ -90,55 +91,54 @@ GLX_LOG_INFO("GlxSlideShowView() deActivate delete iHdmiController " ); delete iHdmiController; iHdmiController = NULL; - } } +} void GlxSlideShowView::setModel(QAbstractItemModel *model) - { +{ TRACER("GlxSlideShowView::setModel()"); GLX_LOG_INFO2("GlxSlideShowView::setModel() model %u mModel %u", model, mModel); if ( mModel == model ) { - return ; + return ; } mModel = model; mSlideShowWidget->setModel(mModel); SetImageToHdmiL(); - } +} void GlxSlideShowView::setModelContext() - { +{ TRACER("GlxSlideShowView::setModelContext()"); if ( mModel && mWindow ) { - GLX_LOG_INFO1("GlxSlideShowView::setModelContext %d", mWindow->orientation() ); - - if ( mWindow->orientation() == Qt::Horizontal ) { - mModel->setData(QModelIndex(), (int)GlxContextLsFs, GlxContextRole ); + GLX_LOG_INFO1("GlxSlideShowView::setModelContext %d", mWindow->orientation() ); + + if ( mWindow->orientation() == Qt::Horizontal ) { + mModel->setData(QModelIndex(), (int)GlxContextLsFs, GlxContextRole ); + } + else { + mModel->setData(QModelIndex(), (int)GlxContextPtFs, GlxContextRole ); + } } - else { - mModel->setData(QModelIndex(), (int)GlxContextPtFs, GlxContextRole ); - } - } - } +} void GlxSlideShowView::orientationChanged(Qt::Orientation) - { +{ TRACER("GlxSlideShowView::orientationChanged()"); - QRect screenRect = mWindow->geometry(); setModelContext(); - mSlideShowWidget->orientationChanged(screenRect); - } + mSlideShowWidget->orientationChanged( screenGeometry() ); +} void GlxSlideShowView::slideShowEventHandler( GlxSlideShowEvent e) - { +{ TRACER("GlxSlideShowView::slideShowEventHandler()"); GLX_LOG_INFO1("GlxSlideShowView::slideShowEventHandler() event %d", e); switch ( e ) { case UI_ON_EVENT : - mWindow->setItemVisible(Hb::AllItems, TRUE) ; + setItemVisible(Hb::AllItems, TRUE) ; break; case UI_OFF_EVENT : - mWindow->setItemVisible(Hb::AllItems, false) ; + setItemVisible(Hb::AllItems, false) ; break; case EMPTY_DATA_EVENT : @@ -148,30 +148,30 @@ default : break; } - } +} void GlxSlideShowView::indexchanged() - { +{ TRACER("GlxSlideShowView::indexchanged()"); SetImageToHdmiL(); - } +} bool GlxSlideShowView::event(QEvent *event) - { +{ TRACER("GlxSlideShowView::event()"); GLX_LOG_INFO1("GlxSlideShowView::event() %d event type", event->type()); if ( event->type() == QEvent::WindowActivate && mSlideShowWidget) { - mSlideShowWidget->startSlideShow(); + mSlideShowWidget->startSlideShow(); } if ( event->type() == QEvent::WindowDeactivate && mSlideShowWidget) { - mSlideShowWidget->stopSlideShow(); + mSlideShowWidget->stopSlideShow(); } return HbView::event(event); - } +} void GlxSlideShowView::loadObjects() - { +{ TRACER("GlxSlideShowView::loadObjects"); //Load/Retrieve the widgets HbView *view = static_cast(mDocLoader->findWidget(GLXSLIDESHOW_VIEW)); @@ -179,28 +179,22 @@ //Initialise the Slideshow widget mSlideShowWidget->setSlideShowWidget(mDocLoader); - mSlideShowWidget->setItemGeometry(mWindow->geometry()); - } + mSlideShowWidget->setItemGeometry( screenGeometry() ); +} void GlxSlideShowView::SetImageToHdmiL() - { +{ TRACER("GlxSlideShowView::SetImageToHdmiL() - CGlxHdmi 1" ); - if (iHdmiController) - { + if (iHdmiController) { GLX_LOG_INFO("GlxSlideShowView::SetImageToHdmiL() - CGlxHdmi 2" ); // Get the image uri QString imagePath = (mModel->data(mModel->index(mModel->data(mModel->index(0,0),GlxFocusIndexRole).value(),0),GlxUriRole)).value(); - if(imagePath.isNull()) - { + if(imagePath.isNull()) { GLX_LOG_INFO("GlxSlideShowView::SetImageToHdmiL() path is null" ); - } + } qDebug() << "GlxSlideShowView::SetImageToHdmiL() imagePath= " << imagePath; TPtrC aPtr = reinterpret_cast(imagePath.utf16()); - // Get the image Dimensions - QSize imageDimension = (mModel->data(mModel->index(mModel->data(mModel->index(0,0),GlxFocusIndexRole).value(),0),GlxDimensionsRole)).value(); - TSize imageSize(imageDimension.width(),imageDimension.height()); - - iHdmiController->SetImageL(aPtr,imageSize ); - } + iHdmiController->SetImageL(aPtr); } +} diff -r 74c9f037fd5d -r 99ad1390cd33 ui/views/slideshowview/src/glxslideshowwidget.cpp --- a/ui/views/slideshowview/src/glxslideshowwidget.cpp Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/views/slideshowview/src/glxslideshowwidget.cpp Fri Apr 16 14:58:46 2010 +0300 @@ -29,6 +29,7 @@ //User Includes +#include "glxicondefs.h" //Contains the icon names/Ids #include "glxmodelparm.h" #include "glxeffectengine.h" #include "glxdocloaderdefs.h" @@ -46,18 +47,19 @@ void GlxSlideShowWidget::setSlideShowWidget(HbDocumentLoader *DocLoader) { - //To:Do error handling - TRACER("GlxSlideShowWidget::setSlideShowWidget()"); + TRACER("GlxSlideShowWidget::setSlideShowWidget()"); + //create the effect engine mEffectEngine = new GlxSlideShowEffectEngine(); // Now load the view and the contents. + // and then set the play icon to the button mContinueButton = static_cast(DocLoader->findWidget(GLXSLIDESHOW_PB)); + mContinueButton->setIcon(HbIcon(GLXICON_PLAY)); mContinueButton->hide(); mIsPause = false; - for ( int i = 0; i < NBR_ITEM ; i++) { mIconItems[i] = new HbIconItem(this); mIconItems[i]->setBrush(QBrush(Qt::black)); @@ -105,7 +107,8 @@ delete mEffectEngine; mEffectEngine = NULL; } - + + for ( int i = 0; i < NBR_ITEM ; i++) { delete mIconItems[i] ; @@ -405,6 +408,9 @@ void GlxSlideShowWidget::resetSlideShow() { TRACER("GlxSlideShowWidget::resetSlideShow()" ); + if(! mModel) { + return; + } QVariant variant = mModel->data( mModel->index( mSelIndex, 0 ), GlxFocusIndexRole ); if ( variant.isValid() && variant.canConvert () ) { mSelIndex = variant.value() ; diff -r 74c9f037fd5d -r 99ad1390cd33 ui/views/viewbase/inc/glxview.h --- a/ui/views/viewbase/inc/glxview.h Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/views/viewbase/inc/glxview.h Fri Apr 16 14:58:46 2010 +0300 @@ -37,18 +37,12 @@ Q_OBJECT public : - GlxView(qint32 id, QGraphicsItem *parent = 0 ) : HbView(parent), mId(id) - { - - } - + GlxView(qint32 id, QGraphicsItem *parent = 0 ); virtual void activate() = 0; virtual void deActivate() = 0; virtual void setModel(QAbstractItemModel *model) = 0; - virtual bool compare (qint32 id) - { - return mId == id; - } + + virtual bool compare (qint32 id); virtual void addToolBar( HbToolBar *toolBar ) { Q_UNUSED(toolBar) } virtual void enableMarking() { } virtual void disableMarking() { } @@ -57,26 +51,18 @@ virtual void resetView() {} virtual void initializeView(QAbstractItemModel *model) {Q_UNUSED(model)} inline qint32 viewId() { return mId;} - virtual QGraphicsItem * getAnimationItem( GlxEffect transtionEffect ) - { - Q_UNUSED(transtionEffect) - return NULL; - } - - virtual ~GlxView() - { - - } + QSize screenSize(); + QRect screenGeometry(); + virtual QGraphicsItem * getAnimationItem( GlxEffect transtionEffect ); + virtual ~GlxView() { } signals: void actionTriggered(qint32 id); - void itemSpecificMenuTriggered(qint32,QPointF ); - + void itemSpecificMenuTriggered(qint32,QPointF ); void gridItemSelected(const QModelIndex &); private : - qint32 mId; - + qint32 mId; }; #endif /* GLXVIEW_H_ */ diff -r 74c9f037fd5d -r 99ad1390cd33 ui/views/viewbase/src/glxview.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ui/views/viewbase/src/glxview.cpp Fri Apr 16 14:58:46 2010 +0300 @@ -0,0 +1,57 @@ +/* +* 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 "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: ?Description +* +*/ + +//include +#include +#include + +//User Includes +#include "glxview.h" + + +GlxView::GlxView(qint32 id, QGraphicsItem *parent ) : HbView(parent), mId(id) +{ + +} + +bool GlxView::compare (qint32 id) +{ + return mId == id; +} + +QSize GlxView::screenSize() +{ + HbMainWindow *window = hbInstance->allMainWindows().first(); + QSize deviceSize = HbDeviceProfile::current().logicalSize(); + QSize screenSize = ( window->orientation() == Qt::Vertical ) ? QSize( deviceSize.width(), deviceSize.height() ) + : QSize( deviceSize.height(), deviceSize.width() ) ; + return screenSize; +} + +QRect GlxView::screenGeometry() +{ + HbMainWindow *window = hbInstance->allMainWindows().first(); + QSize size = screenSize(); + QRect rect ( window->geometry().x(), window->geometry().y(), size.width(), size.height() ); + return rect; +} + +QGraphicsItem * GlxView::getAnimationItem( GlxEffect transtionEffect ) +{ + Q_UNUSED(transtionEffect) + return NULL; +} diff -r 74c9f037fd5d -r 99ad1390cd33 ui/views/views.pro --- a/ui/views/views.pro Fri Mar 19 09:28:59 2010 +0200 +++ b/ui/views/views.pro Fri Apr 16 14:58:46 2010 +0300 @@ -38,7 +38,9 @@ ../uiengine/medialistwrapper/inc \ ../viewbase/inc \ ../../commonutilities/imagedecoderwrapper/inc \ - ../../loggers/loggerqt/inc + ../../loggers/loggerqt/inc \ + ../../traces + symbian: { TARGET.UID3 = 0x200009EF INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE @@ -63,12 +65,12 @@ effectengine/effectplugin/inc/glxbackwardtransitionplugin.h \ effectengine/effectplugin/inc/glxforwardtransitionplugin.h \ effectengine/effectplugin/inc/glxfadeplugin.h \ - docloaders/inc/glxviewdocloader.h \ + docloaders/inc/glxviewdocloader.h \ viewsfactory/inc/glxviewsfactory.h \ ../../tvout/inc/glxhdmicontroller.h \ - ../../traces -SOURCES += fullscreenview/src/glxcoverflow.cpp \ +SOURCES += viewbase/src/glxview.cpp \ + fullscreenview/src/glxcoverflow.cpp \ fullscreenview/src/glxfullscreenview.cpp \ fullscreenview/src/glxzoomslider.cpp \ fullscreenview/src/glxzoomcontrol.cpp \