--- 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)
--- 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
--- 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
--- 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:
/**
--- 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 <aknWaitDialog.h>
-#include <avkon.rsg>
-#include <EIKENV.H>
-#include <aknutils.h>
+#include <eikenv.h>
+#include <AknUtils.h>
#include <bautils.h>
#include <data_caging_path_literals.hrh>
-#include <stringloader.h>
+
#include <mpxattributespecs.h>
#include <mpxcollectionpath.h>
@@ -33,11 +31,8 @@
#include <glxlog.h>
#include <glxmedialist.h>
#include <glxpanic.h>
-#include <glxuistd.h>
-#include <glxuiutilities.rsg>
#include <mglxfetchcontext.h>
#include <mglxmedialistobserver.h>
-#include <glxresourceutilities.h>
@@ -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<CEikDialog**>(&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
// -----------------------------------------------------------------------------
//
--- 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();
Binary file data/Albums_default.png has changed
Binary file data/Albums_selected.png has changed
Binary file data/All_default.png has changed
Binary file data/All_selected.png has changed
Binary file data/Thumbs.db has changed
Binary file data/camera_default.png has changed
Binary file data/camera_selected.png has changed
--- 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 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg width="72" height="60" viewBox="0 0 72 60">
-<linearGradient id="_18" gradientUnits="userSpaceOnUse" x1="-4.96" y1="-11.63" x2="35.54" y2="29.54">
-<stop stop-color="#FFFFFF" offset="0"/>
-<stop stop-color="#A0C4E0" offset="0.35"/>
-<stop stop-color="#7084B8" offset="0.7"/>
-<stop stop-color="#003C70" offset="1"/>
-</linearGradient>
-<path fill="url(#_18)" d="M1.325,1.188v57.625h69.349V1.188H1.325z M69.727,2.188v55.625H2.271V2.188H69.727z"/>
-<rect x="3.16" y="3.144" fill="#FFFFFF" width="65.645" height="53.717"/>
-<linearGradient id="_19" gradientUnits="userSpaceOnUse" x1="81.49" y1="63.31" x2="24.32" y2="21.47">
-<stop stop-color="#FFFFFF" offset="0"/>
-<stop stop-color="#A0C4E0" offset="0.35"/>
-<stop stop-color="#7084B8" offset="0.7"/>
-<stop stop-color="#003C70" offset="1"/>
-</linearGradient>
-<path fill="url(#_19)" d="M2.213,2.144v55.717h67.538V2.144H2.213z M68.805,3.144v53.717H3.16V3.144H68.805z"/>
-<linearGradient id="_20" gradientUnits="userSpaceOnUse" x1="29.3" y1="25.97" x2="34.58" y2="36.38">
-<stop stop-color="#A0C4E0" offset="0.1"/>
-<stop stop-color="#7084B8" offset="0.71"/>
-<stop stop-color="#003C70" offset="0.99"/>
-</linearGradient>
-<path fill="url(#_20)" d="M14.352,33.699l0.736,1.302l14.227,3.978l10.53-7.776l-0.075-1.429c0,0-2.215-5.232-2.346-5.539 c0.292-0.17,7.105-4.16,7.105-4.16l-0.102-1.47l-19.552-3.548L14.352,33.699z"/>
-<linearGradient id="_21" gradientUnits="userSpaceOnUse" x1="46.48" y1="34.72" x2="51.06" y2="43.73">
-<stop stop-color="#A0C4E0" offset="0.1"/>
-<stop stop-color="#7084B8" offset="0.71"/>
-<stop stop-color="#003C70" offset="0.99"/>
-</linearGradient>
-<path fill="url(#_21)" d="M42.087,25.547c0,0,1.627,6.77,1.697,7.063C43.51,32.75,32.24,38.556,32.24,38.556l0.359,1.556 l13.705,5.965l11.662-19.673l-0.078-1.963l-6.825-2.337L42.087,25.547z"/>
-<linearGradient id="_22" gradientUnits="userSpaceOnUse" x1="13.37" y1="32.08" x2="32.87" y2="41.14">
-<stop stop-color="#FFFFFF" offset="0"/>
-<stop stop-color="#A0C4E0" offset="0.35"/>
-<stop stop-color="#7084B8" offset="0.7"/>
-<stop stop-color="#003C70" offset="1"/>
-</linearGradient>
-<polygon fill="url(#_22)" points="14.582,33.698 15.223,34.83 29.273,38.759 29.092,37.495 "/>
-<linearGradient id="_23" gradientUnits="userSpaceOnUse" x1="72.25" y1="16.33" x2="18.63" y2="28.67">
-<stop stop-color="#FFFFFF" offset="0.15"/>
-<stop stop-color="#A0C4E0" offset="1"/>
-</linearGradient>
-<polygon fill="url(#_23)" points="36.717,23.079 42.595,19.674 25.518,16.518 16.697,32.896 30.502,36.512 39.57,29.818 "/>
-<linearGradient id="_24" gradientUnits="userSpaceOnUse" x1="69.89" y1="42.73" x2="20.55" y2="32.45">
-<stop stop-color="#FFFFFF" offset="0"/>
-<stop stop-color="#A0C4E0" offset="0.35"/>
-<stop stop-color="#7084B8" offset="0.7"/>
-<stop stop-color="#003C70" offset="1"/>
-</linearGradient>
-<path fill="url(#_24)" d="M18.393,30.045L16.784,32.8l13.673,3.67c0.347-0.234,0.594-0.415,0.719-0.51 C30.863,35.917,20.57,31.294,18.393,30.045z"/>
-<path fill="#105C80" d="M23.918,30.787l2.039,2.121c1.498,0.498,4.688,1.425,7.105,1.56 c0.061,0.002,0.118,0.002,0.178,0.004c0.982-0.719,1.967-1.443,2.854-2.098C31.803,31.598,25.73,30.65,23.918,30.787z"/>
-<polygon fill="#C0DCE0" points="28.959,31.822 30.592,32.006 32.594,34.179 30.842,33.991 "/>
-<polygon fill="#309098" points="28.959,31.822 28.889,32.071 30.481,33.932 30.805,33.933 "/>
-<path fill="#288498" d="M33.1,34.391c-1.842-0.126-4.975-0.771-7.03-1.552c-0.205,0.288-1.85,0.67-2.222,0.554 c0.506,0.672,3.641,1.833,6.363,2.448c0.338,0.068,0.659,0.123,0.975,0.166c0.69-0.509,1.43-1.052,2.175-1.601 C33.271,34.401,33.184,34.396,33.1,34.391z"/>
-<linearGradient id="_25" gradientUnits="userSpaceOnUse" x1="23.28" y1="31.6" x2="25.15" y2="33.29">
-<stop stop-color="#D8E8F0" offset="0"/>
-<stop stop-color="#288498" offset="1"/>
-</linearGradient>
-<path fill="url(#_25)" d="M23.773,30.758c0,0,2.316,2.056,2.296,2.08c-0.292,0.321-1.138,0.954-1.937,0.817 c-0.846-0.584-0.908-1.527-0.908-1.527S23.343,31.36,23.773,30.758z"/>
-<path fill="#C0DCE0" d="M32.969,34.058c-2.336-0.209-5.211-1.041-6.455-1.461l-1.723-1.564 c1.474-0.03,7.344,0.771,11.227,1.442c0.078-0.058,0.158-0.115,0.234-0.173c-4.289-0.773-10.469-1.717-12.447-1.54 l2.273,2.114c1.664,0.663,4.678,1.422,7.082,1.617c0.036,0.004,0.069,0.004,0.105,0.007c0.177-0.13,0.353-0.259,0.529-0.39 C33.521,34.099,33.244,34.081,32.969,34.058z"/>
-<path fill="#FFFFFF" d="M36.945,23.704c-0.605,0.613-3.156,0.448-3.156,0.448s-8.658-1.026-10.996-2.672l1.2-2.251 c1.04-0.012,2.136,0.259,2.653,0.59c0.013-0.749,2.879-2.054,4.197-0.252c1.289-1.094,5.271-1.362,4.982,1.563 C38.984,21.519,36.945,23.704,36.945,23.704z"/>
-<linearGradient id="_26" gradientUnits="userSpaceOnUse" x1="35.68" y1="25.68" x2="21.07" y2="28.27">
-<stop stop-color="#2898A0" offset="0"/>
-<stop stop-color="#084C60" offset="1"/>
-</linearGradient>
-<polygon fill="url(#_26)" points="30.584,32.431 37.542,19.503 24.52,28.993 "/>
-<polygon fill="#309098" points="34.89,33.22 31.27,33.26 36.427,22.056 36.254,32.302 "/>
-<linearGradient id="_27" gradientUnits="userSpaceOnUse" x1="2.66" y1="30.81" x2="50.99" y2="22.06">
-<stop stop-color="#FFFFFF" offset="0.15"/>
-<stop stop-color="#A0C4E0" offset="1"/>
-</linearGradient>
-<path fill="url(#_27)" d="M16.932,32.812l8.81-15.998l16.661,2.953l1.83-1.104l-19.25-3.385l-10.42,18.458l14.39,3.804 c0.492-0.362,1.073-0.79,1.706-1.255L16.932,32.812z"/>
-<linearGradient id="_28" gradientUnits="userSpaceOnUse" x1="42.08" y1="17.84" x2="38.15" y2="27.09">
-<stop stop-color="#FFFFFF" offset="0"/>
-<stop stop-color="#486CA0" offset="0.71"/>
-<stop stop-color="#205488" offset="0.99"/>
-</linearGradient>
-<polygon fill="url(#_28)" points="44.232,18.663 44.322,19.964 37.154,24.159 36.709,23.07 "/>
-<linearGradient id="_29" gradientUnits="userSpaceOnUse" x1="34.08" y1="29.59" x2="34.62" y2="42.53">
-<stop stop-color="#FFFFFF" offset="0"/>
-<stop stop-color="#486CA0" offset="0.71"/>
-<stop stop-color="#205488" offset="0.99"/>
-</linearGradient>
-<polygon fill="url(#_29)" points="39.551,29.804 39.639,31.104 29.273,38.759 28.922,37.539 "/>
-<polygon fill="url(#_23)" points="55.553,25.249 49.131,23.082 42.324,25.671 44.017,32.716 34.158,37.792 45.006,42.313 "/>
-<path fill="#288498" d="M41.658,34.837l-1.035-0.368l-4.932,2.533C38.661,37.163,41.658,34.837,41.658,34.837z"/>
-<path fill="#C0DCE0" d="M38.316,35.652c0.908,0.021,1.686-0.132,2.461-0.403c0.273-0.102,0.564-0.235,0.881-0.412 c-0.262-0.115-1.039-0.371-1.039-0.371L38.316,35.652z"/>
-<path fill="#105C80" d="M40.388,34.587l-1.325,0.691c0.67-0.065,1.313-0.205,1.915-0.451 C40.818,34.756,40.615,34.675,40.388,34.587z"/>
-<path fill="url(#_24)" d="M37.207,36.707c-0.266-0.021-0.588-0.022-0.844-0.056l-2.061,1.055l10.752,4.578l1.49-2.377 C46.545,39.907,44.143,37.172,37.207,36.707z"/>
-<path fill="url(#_27)" d="M57.674,24.589l-6.606-2.271c-0.556,0.217-1.286,0.503-2.093,0.816l6.374,2.217L44.953,42.152 l-10.574-4.483l-1.908,0.993l13.182,5.759L57.674,24.589z"/>
-<linearGradient id="_33" gradientUnits="userSpaceOnUse" x1="54.14" y1="18.67" x2="49.2" y2="52.99">
-<stop stop-color="#FFFFFF" offset="0"/>
-<stop stop-color="#A0C4E0" offset="0.35"/>
-<stop stop-color="#7084B8" offset="0.7"/>
-<stop stop-color="#003C70" offset="1"/>
-</linearGradient>
-<polygon fill="url(#_33)" points="57.694,24.586 45.74,44.174 46.223,45.821 57.764,26.351 "/>
-<linearGradient id="_34" gradientUnits="userSpaceOnUse" x1="19.04" y1="20.03" x2="47.66" y2="51.22">
-<stop stop-color="#FFFFFF" offset="0"/>
-<stop stop-color="#A0C4E0" offset="0.35"/>
-<stop stop-color="#7084B8" offset="0.7"/>
-<stop stop-color="#003C70" offset="1"/>
-</linearGradient>
-<polygon fill="url(#_34)" points="45.773,44.187 32.471,38.663 32.771,39.968 46.223,45.821 "/>
-</svg>
\ No newline at end of file
--- 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 @@
<visual>
<param name="translation_x" type="anim">
-<duration>0.3</duration>
+<duration>0.4</duration>
<style>linear</style>
<keyframe at="0">0</keyframe>
<keyframe at="1">1</keyframe>
-<start ref="screen.right">1</start>
-<end ref="screen.left">1</end>
+<start ref="visual.right">1</start>
+<end ref="visual.left">1</end>
</param>
</visual>
--- 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 @@
<visual>
<param name="scale_x" type="anim">
- <duration>0.4</duration>
+ <duration>0.3</duration>
<style>linear</style>
<keyframe at="0.0">0.0</keyframe>
- <keyframe at="0.99">1.0</keyframe>
- <keyframe at="1.0">0.0</keyframe>
+ <keyframe at="1.0">1.0</keyframe>
<start ref="visual.width">1</start>
<end ref="screen.width">1</end>
-
</param>
<param name="scale_y" type="anim">
- <duration>0.4</duration>
+ <duration>0.3</duration>
<style>linear</style>
<keyframe at="0.0">0.0</keyframe>
- <keyframe at="0.99">1.0</keyframe>
- <keyframe at="1.0">0.0</keyframe>
+ <keyframe at="1.0">1.0</keyframe>
<start ref="visual.height">1</start>
<end ref="screen.height">1</end>
-
</param>
<param name="scale_origin_x" ref="screen.width">0.5</param>
<param name="scale_origin_y" ref="screen.height">0.5</param>
<param name="opacity" type="anim">
-<duration>0.4</duration>
+<duration>0.3</duration>
<style>linear</style>
<keyframe at="0.0">1.0</keyframe>
-<keyframe at="0.5">0.75</keyframe>
-<keyframe at="1.0">0</keyframe>
+<keyframe at="0.5">1.0</keyframe>
+<keyframe at="1.0">0.5</keyframe>
</param>
</visual>
--- 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;
-}
Binary file data/ovi_default.png has changed
Binary file data/ovi_selected.png has changed
--- 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);
+}
+
--- 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;
--- 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
};
--- 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_
--- 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<CGlxGetRequest*>(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<CGlxThumbnailRequest*>(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)
--- 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<CMdEObject&>(query->ResultItem(0));
@@ -1186,11 +1188,10 @@
for (TInt i = 0; i < queryResultsCount; i++)
{
CMdEObject& object = static_cast<CMdEObject&>(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]);
}
}
--- 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<CGlxThumbnailRequest*>(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<CGlxThumbnailRequest*>(iRequest);
delete iResponse;
iResponse = NULL;
--- 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:
{
--- 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:
{
--- 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);
+ }
}
}
--- 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 <sys/types.h> /* 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 <stdio.h>/* for printing in malloc_stats */
-
-#ifndef LACKS_ERRNO_H
- #include <errno.h> /* for MALLOC_FAILURE_ACTION */
-#endif /* LACKS_ERRNO_H */
-
-#if FOOTERS
- #include <time.h> /* for magic initialization */
-#endif /* FOOTERS */
-
-#ifndef LACKS_STDLIB_H
- #include <stdlib.h> /* 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 <assert.h>
- #endif /* ABORT_ON_ASSERT_FAILURE */
-#else /* DEBUG */
- #define assert(x)
-#endif /* DEBUG */
-
-#ifndef LACKS_STRING_H
- #include <string.h> /* for memset etc */
-#endif /* LACKS_STRING_H */
-
-#if USE_BUILTIN_FFS
- #ifndef LACKS_STRINGS_H
- #include <strings.h> /* for ffs */
- #endif /* LACKS_STRINGS_H */
-#endif /* USE_BUILTIN_FFS */
-
-#if HAVE_MMAP
- #ifndef LACKS_SYS_MMAN_H
- #include <sys/mman.h> /* for mmap */
- #endif /* LACKS_SYS_MMAN_H */
- #ifndef LACKS_FCNTL_H
- #include <fcntl.h>
- #endif /* LACKS_FCNTL_H */
-#endif /* HAVE_MMAP */
-
-#if HAVE_MORECORE
- #ifndef LACKS_UNISTD_H
- #include <unistd.h> /* 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 <sys/param.h>
- #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 <pthread.h>
- #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<<pageshift)
- #define slabshift 10
- #define slabsize (1 << slabshift)
- #define cellalign 8
- const unsigned slabfull = 0;
- const TInt slabsperpage = (int)(pagesize/slabsize);
- #define hibit(bits) (((unsigned)bits & 0xc) ? 2 + ((unsigned)bits>>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 <class T> inline T floor(const T addr, unsigned aln)
- {return T((unsigned(addr))&~(aln-1));}
- template <class T> inline T ceiling(T addr, unsigned aln)
- {return T((unsigned(addr)+(aln-1))&~(aln-1));}
- template <class T> inline unsigned lowbits(T addr, unsigned aln)
- {return unsigned(addr)&(aln-1);}
- template <class T1, class T2> inline int ptrdiff(const T1* a1, const T2* a2)
- {return reinterpret_cast<const unsigned char*>(a1) - reinterpret_cast<const unsigned char*>(a2);}
- template <class T> 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<page*>(floor(s, pagesize));}
- struct pagecell
- {
- void* page;
- unsigned size;
- };
- /******CODE TO SUPORT SLAB ALLOCATOR******/
-#endif/*__DLA__*/
--- 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 <e32std.h>
-#include <e32cmn.h>
-#include <hal.h>
-#include <e32panic.h>
-#include <u32std.h>
-#include <e32btrace.h>
-#include <e32svr.h>
-
-#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<aSize?oldsize:aSize);
- Free(aPtr);
- }
- return newp;
-
- }
-#endif
-TAny* RNewAllocator::ReAlloc(TAny* aPtr, TInt aSize, TInt /*aMode = 0*/)
- {
-#ifdef ENABLE_BTRACE
- TAny* retval = DLReAllocImpl(aPtr,aSize);
-
-#ifdef ENABLE_BTRACE
- if (retval && (iFlags & ETraceAllocs))
- {
- TUint32 traceData[3];
- traceData[0] = AllocLen(retval);
- traceData[1] = aSize;
- traceData[2] = (TUint32)aPtr;
- BTraceContextN(BTrace::EHeap, BTrace::EHeapReAlloc,(TUint32)this, (TUint32)retval,traceData, sizeof(traceData));
- }
-#endif
- return retval;
-#else
- 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();
- 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<aSize?oldsize:aSize);
- Free(aPtr);
- }
- return newp;
-#endif
- }
-
-TInt RNewAllocator::Available(TInt& aBiggestBlock) const
-{
- aBiggestBlock = 0;
- return 1000;
- /*Need to see how to implement this*/
- // TODO: return iHeap.Available(aBiggestBlock);
-}
-TInt RNewAllocator::AllocSize(TInt& aTotalAllocSize) const
-{
- aTotalAllocSize = iTotalAllocSize;
-// aTotalAllocSize = iChunkSize;
- return iCellCount;
-}
-
-TInt RNewAllocator::DebugFunction(TInt /*aFunc*/, TAny* /*a1*/, TAny* /*a2*/)
- {
- return 0;
- }
-TInt RNewAllocator::Extension_(TUint /* aExtensionId */, TAny*& /* a0 */, TAny* /* a1 */)
- {
- return KErrNotSupported;
- }
-
-long sysconf (int size )
- {
- if (GET_PAGE_SIZE(size)!=KErrNone)
- size = 0x1000;
- return size;
- }
-
-
-//
-// imported from dla.cpp
-//
-
-//#include <unistd.h>
-//#define DEBUG_REALLOC
-#ifdef DEBUG_REALLOC
-#include <e32debug.h>
-#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<<slabix);
- if (!(pagemap &~ (1<<slabix)))
- {
- tree_remove(partial_page); // last free slab in page
- }
- return initnewslab(allocator,&p->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<page*>(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<<slabix);
- if (pagemap == 0)
- { // page was full before, use this slab as link in empty heap
- tree_insert(s, &partial_page);
- }
- else
- { // find the current empty-link slab
- slab* sl = &p->slabs[hibit(pagemap)];
- pagemap ^= (1<<slabix);
- if (pagemap == 0xf)
- { // page is now empty so recycle page to os
- tree_remove(sl);
- freepage(p);
- return;
- }
- // ensure the free list link is in highest address slab in page
- if (s > 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;i<npagecells;++i)
- {
- pagelist[i].page = 0;
- pagelist[i].size = 0;
- }
- }
-
-void* RNewAllocator::paged_allocate(unsigned size)
-{
- unsigned nbytes = ceiling(size, pagesize);
- if (nbytes < size + cellalign)
- { // not enough extra space for header and alignment, try and use cell list
- for (pagecell *c = pagelist,*e = c + npagecells;c < e;++c)
- if (c->page == 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<unsigned*>(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<unsigned*>(p);
- void* newp = remap(p, obytes, nbytes);
- if (!newp)
- return 0;
- *static_cast<unsigned*>(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<unsigned*>(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 (aMaxLength<KMinHeapSize)
- aMaxLength=KMinHeapSize;
-
- RNewAllocator* h = new(aBase) RNewAllocator(aMaxLength, aAlign, aSingleThread);
-
- if (!aSingleThread)
- {
- TInt r = h->iLock.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<KMinHeapSize)
- aMaxLength=KMinHeapSize;
- RChunk c;
- TInt r;
- if (aName)
- r = c.CreateDisconnectedGlobal(*aName, 0, 0, aMaxLength*2, aSingleThread ? EOwnerThread : EOwnerProcess);
- else
- r = c.CreateDisconnectedLocal(0, 0, aMaxLength*2, aSingleThread ? EOwnerThread : EOwnerProcess);
- if (r!=KErrNone)
- return NULL;
-
- RNewAllocator* h = ChunkHeap(c, aMinLength, aGrowBy, aMaxLength, aAlign, aSingleThread, UserHeap::EChunkHeapDuplicate);
- c.Close();
- return h;
- }
-
-RNewAllocator* RNewAllocator::ChunkHeap(RChunk aChunk, TInt aMinLength, TInt aGrowBy, TInt aMaxLength, TInt aAlign, TBool aSingleThread, TUint32 aMode)
-/**
-Creates a heap in an existing chunk.
-
-This function is intended to be used to create a heap in a user writable code
-chunk as created by a call to RChunk::CreateLocalCode().
-This type of heap can be used to hold code fragments from a JIT compiler.
-
-The maximum length to which the heap can grow is the same as
-the maximum size of the chunk.
-
-@param aChunk The chunk that will host the heap.
-@param aMinLength The minimum length of the heap.
-@param aGrowBy The increments to the size of the host chunk.
-@param aMaxLength The maximum length to which the heap can grow.
-@param aAlign The alignment of heap cells.
-@param aSingleThread Indicates whether single threaded or not.
-@param aMode Flags controlling the reallocation. The only bit which has any
- effect on reallocation is that defined by the enumeration
- ENeverMove of the enum RAllocator::TReAllocMode.
- If this is set, then any successful reallocation guarantees not
- to have changed the start address of the cell.
- By default, this parameter is zero.
-
-@return A pointer to the new heap or NULL if the heap could not be created.
-*/
-//
-// Construct a heap in an already existing chunk
-//
- {
-
- return OffsetChunkHeap(aChunk, aMinLength, 0, aGrowBy, aMaxLength, aAlign, aSingleThread, aMode);
- }
-
-RNewAllocator* RNewAllocator::OffsetChunkHeap(RChunk aChunk, TInt aMinLength, TInt aOffset, TInt aGrowBy, TInt aMaxLength, TInt aAlign, TBool aSingleThread, TUint32 aMode)
-/**
-Creates a heap in an existing chunk, offset from the beginning of the chunk.
-
-This function is intended to be used to create a heap where a fixed amount of
-additional data must be stored at a known location. The additional data can be
-placed at the base address of the chunk, allowing it to be located without
-depending on the internals of the heap structure.
-
-The maximum length to which the heap can grow is the maximum size of the chunk,
-minus the offset.
-
-@param aChunk The chunk that will host the heap.
-@param aMinLength The minimum length of the heap.
-@param aOffset The offset from the start of the chunk, to the start of the heap.
-@param aGrowBy The increments to the size of the host chunk.
-@param aMaxLength The maximum length to which the heap can grow.
-@param aAlign The alignment of heap cells.
-@param aSingleThread Indicates whether single threaded or not.
-@param aMode Flags controlling the reallocation. The only bit which has any
- effect on reallocation is that defined by the enumeration
- ENeverMove of the enum RAllocator::TReAllocMode.
- If this is set, then any successful reallocation guarantees not
- to have changed the start address of the cell.
- By default, this parameter is zero.
-
-@return A pointer to the new heap or NULL if the heap could not be created.
-*/
-//
-// Construct a heap in an already existing chunk
-//
- {
-
- TInt page_size;
- GET_PAGE_SIZE(page_size);
- if (!aAlign)
- aAlign = RNewAllocator::ECellAlignment;
- TInt maxLength = aChunk.MaxSize();
- TInt round_up = Max(aAlign, page_size);
- TInt min_cell = _ALIGN_UP(Max((TInt)RNewAllocator::EAllocCellSize, (TInt)RNewAllocator::EFreeCellSize), aAlign);
- aOffset = _ALIGN_UP(aOffset, 8);
-
-#ifdef ALLOCATOR_ADP75
-#ifdef TRACING_HEAPS
- TKName chunk_name;
- aChunk.FullName(chunk_name);
- BTraceContextBig(BTrace::ETest1, 0xF, 0xFF, chunk_name.Ptr(), chunk_name.Size());
-
- TUint32 traceData[4];
- traceData[0] = aChunk.Handle();
- traceData[1] = aMinLength;
- traceData[2] = aMaxLength;
- traceData[3] = aAlign;
- BTraceContextN(BTrace::ETest1, 0xE, 0xEE, 0xEE, traceData, sizeof(traceData));
-#endif
- //modifying the aMinLength because not all memory is the same in the new allocator. So it cannot reserve it properly
- if( aMinLength<aMaxLength)
- aMinLength = 0;
-#endif
-
- if (aMaxLength && aMaxLength+aOffset<maxLength)
- maxLength = _ALIGN_UP(aMaxLength+aOffset, round_up);
- __ASSERT_ALWAYS(aMinLength>=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
--- 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
--- 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
--- 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 <glxloggerenabler.h>
#include <hbstyle.h>
-#include <hbstyleloader.h>
#include <QDebug>
#include <QTranslator>
#include <xqserviceutil.h>
@@ -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;
- }
+}
--- 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
--- 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 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<SystemDefinition schema="3.0.0">
- <package id="photos" name="Photos" levels="support fw ui app">
- <collection id="photosgallery" name="Photos Gallery" level="app">
- <!-- consider splitting collection into the application itself, and the frameworks behind it -->
- <component id="photosgallery_help" filter="s60" name="Photos Help" introduced="^2">
- <unit bldFile="photosgallery/help/group"/>
- </component>
- <component id="logging" filter="s60" name="Photos Logging" introduced="^2">
- <!-- <unit bldFile="photosgallery/logging/app/group"/> -->
- <unit bldFile="photosgallery/logging/group"/>
- </component>
- <component id="photosgallery_common" filter="s60" name="Photos Common" introduced="^2">
- <unit bldFile="photosgallery/common/group"/>
- </component>
- <component id="photosgallery_commonui" filter="s60" name="Photos Common UI" introduced="^2">
- <unit bldFile="photosgallery/commonui/group"/>
- </component>
- <component id="photosgalleryollectionfw" filter="s60" name="Photos Collection Framework" introduced="^2">
- <unit bldFile="photosgallery/collectionframework/group"/>
- <!-- <unit bldFile="photosgallery/collectionframework/plugins/glxcollectionpluginalbums/group"/> -->
- </component>
- <component id="photosgalleryviewfw" filter="s60" name="View Framework" introduced="^2">
- <unit bldFile="photosgallery/viewframework/group"/>
- <!-- do the following need to be #included? -->
- <!-- <unit bldFile="photosgallery/viewframework/commandhandlers/commandhandlerbase/tsrc/group"/> -->
- <!-- <unit bldFile="photosgallery/viewframework/commandhandlers/commandhandlerupnp/tsrc/group"/> -->
- <!-- <unit bldFile="photosgallery/viewframework/commandhandlers/commandhandlerupnp/tsrc/t_glxupnprenderer/group"/> -->
- <!-- <unit bldFile="photosgallery/viewframework/commandhandlers/commoncommandhandlers/tsrc/group"/> -->
- <!-- <unit bldFile="photosgallery/viewframework/commandhandlers/commoncommandhandlers/tsrc/t_cglxaiwservicehandler/group"/> -->
- <!-- <unit bldFile="photosgallery/viewframework/commandhandlers/commoncommandhandlers/tsrc/t_glxcommandhandlerback/group"/> -->
- <!-- <unit bldFile="photosgallery/viewframework/commandhandlers/tsrc/group"/> -->
- <!-- <unit bldFile="photosgallery/viewframework/commandhandlers/tsrc/ut_commandhandlerdrm/group"/> -->
- <!-- <unit bldFile="photosgallery/viewframework/commandhandlers/tsrc/ut_commandhandlermoreinfo/group"/> -->
- <!-- <unit bldFile="photosgallery/viewframework/commandhandlers/tsrc/ut__commandhandlermarking/group"/> -->
- <!-- <unit bldFile="photosgallery/viewframework/plugins/metadataviewplugin/group"/> -->
- <!-- <unit bldFile="photosgallery/viewframework/views/listview/group"/> -->
- <!-- <unit bldFile="photosgallery/viewframework/views/metadataview/group"/> -->
- <!-- <unit bldFile="photosgallery/viewframework/views/viewbase/group"/> -->
- </component>
- <component id="controllers" filter="s60" name="Photos Controllers" introduced="^2">
- <unit bldFile="photosgallery/controllers/group"/>
- </component>
- <component id="photogallery" filter="s60" name="Media Gallery" introduced="^2">
- <unit bldFile="photosgallery/gallery/group"/>
- </component>
- <component id="slideshow" filter="s60" name="Slideshow" introduced="^2">
- <unit bldFile="photosgallery/slideshow/group"/>
- <!-- does the test need to be #included? -->
- <!-- <unit bldFile="photosgallery/slideshow/engine/tsrc/group"/> -->
- </component>
- <component id="contentharvesterplugin" filter="s60" name="Gallery Content Harvester Plugin" class="plugin" introduced="^2">
- <unit bldFile="photosgallery/contentharvesterplugin/group"/>
- </component>
- <component id="photossuite" filter="s60" name="Photos Suite" class="config" introduced="^2">
- <unit bldFile="photosgallery/photossuite/group"/>
- </component>
- <component id="galleryicons" filter="s60" name="Photos Icons" class="config" introduced="^2">
- <unit bldFile="photosgallery/icons"/>
- </component>
- <component id="photosgallery_build" filter="s60" name="Photos Gallery Build" introduced="^2">
- <!-- remove the #included above bld.infs from this -->
- <unit bldFile="photosgallery/group"/>
- </component>
- </collection>
- <collection id="photos_info" name="Photos Info" level="app">
- <component id="photos_plat" filter="s60" name="Photos Platform Interfaces" class="api" introduced="^2">
- <unit bldFile="photos_plat/group"/>
- <!-- should these be #included in the above? -->
- <!-- <unit bldFile="photos_plat/controllers_collection_api/tsrc/ui_metadatadialog/group"/> -->
- <!-- <unit bldFile="photos_plat/controllers_collection_api/tsrc/ut_collectioninfo/group"/> -->
- <!-- <unit bldFile="photos_plat/controllers_collection_api/tsrc/ut_collectionmanager/group"/> -->
- </component>
- </collection>
- </package>
-</SystemDefinition>
--- 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 @@
<RCC>
<qresource prefix="/" >
- <file>data/Albums_default.png</file>
- <file>data/All_default.png</file>
- <file>data/camera_default.png</file>
- <file>data/ovi_default.png</file>
- <file>data/Albums_selected.png</file>
- <file>data/All_selected.png</file>
- <file>data/camera_selected.png</file>
- <file>data/ovi_selected.png</file>
<file>data/transition.fxml</file>
<file>data/transitionleft.fxml</file>
<file>data/transitionright.fxml</file>
@@ -29,11 +21,9 @@
<file>data/transitionrotate90.fxml</file>
<file>data/transitionrotate180.fxml</file>
<file>data/transitionrotate270.fxml</file>
- <file>data/corrupt.svg</file>
- <file>data/imagestrip.css</file>
<file>data/grid.docml</file>
<file>data/listview.docml</file>
<file>data/fullscreen.docml</file>
<file>data/slideshow.docml</file>
- </qresource>
+ </qresource>
</RCC>
--- 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
--- 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
--- /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
+
--- /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
+
--- /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
+
--- /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
+
--- /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
+
--- /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
+
--- /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
+
--- /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
+
--- 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
--- /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
+
--- 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);
--- 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)
--- 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
--- 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_ */
--- 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;
--- 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;
--- 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();
}
--- 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();
+ }
+
--- 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<CGlxHdmiSurfaceUpdater*>(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 <KHdTvWidth)
{
--- a/tvout/src/glxtv.cpp Fri Mar 19 09:28:59 2010 +0200
+++ b/tvout/src/glxtv.cpp Fri Apr 16 14:58:46 2010 +0300
@@ -165,17 +165,6 @@
#else
iSettingsTVAspectRatio = 0;
#endif
- // Commenting out code for request notification as these doesnt work fine,
- // would be soon updated with latest api's to support aspectration chnages.
- // Request notification when the user changes cenrep values
-// TInt err = iRepository.NotifyRequest( iSettingsTVAspectRatio, iStatus );
-// if (!(KErrNone ==err ||KErrAlreadyExists ==err))
-// {
-// RDebug::Printf("## Error code in CGlxTv::CGlxTvOutCenRepMonitor::ConstructL() is %d",err);
-// User::Leave(err);
-// }
-
-// SetActive();
}
--- a/ui/commandhandlers/bwins/glxcommandhandlerbaseu.def Fri Mar 19 09:28:59 2010 +0200
+++ b/ui/commandhandlers/bwins/glxcommandhandlerbaseu.def Fri Apr 16 14:58:46 2010 +0300
@@ -1,22 +1,38 @@
EXPORTS
- ?HandleItemRemovedL@GlxMpxCommandHandler@@MAEXHHPAVMGlxMediaList@@@Z @ 1 NONAME ; void GlxMpxCommandHandler::HandleItemRemovedL(int, int, class MGlxMediaList *)
- ?HandleMessageL@GlxMpxCommandHandler@@MAEXABVCMPXMedia@@PAVMGlxMediaList@@@Z @ 2 NONAME ; void GlxMpxCommandHandler::HandleMessageL(class CMPXMedia const &, class MGlxMediaList *)
- ?HandleItemSelectedL@GlxMpxCommandHandler@@MAEXHHPAVMGlxMediaList@@@Z @ 3 NONAME ; void GlxMpxCommandHandler::HandleItemSelectedL(int, int, class MGlxMediaList *)
- ?CreateMediaListAlbumItemL@GlxMpxCommandHandler@@AAEXHHW4TGlxFilterItemType@@@Z @ 4 NONAME ; void GlxMpxCommandHandler::CreateMediaListAlbumItemL(int, int, enum TGlxFilterItemType)
- ??_EGlxCommandHandler@@UAE@I@Z @ 5 NONAME ; GlxCommandHandler::~GlxCommandHandler(unsigned int)
- ??1GlxCommandHandler@@UAE@XZ @ 6 NONAME ; GlxCommandHandler::~GlxCommandHandler(void)
- ??1GlxMpxCommandHandler@@UAE@XZ @ 7 NONAME ; GlxMpxCommandHandler::~GlxMpxCommandHandler(void)
- ?executeCommand@GlxMpxCommandHandler@@UAEXHH@Z @ 8 NONAME ; void GlxMpxCommandHandler::executeCommand(int, int)
- ?HandleItemAddedL@GlxMpxCommandHandler@@MAEXHHPAVMGlxMediaList@@@Z @ 9 NONAME ; void GlxMpxCommandHandler::HandleItemAddedL(int, int, class MGlxMediaList *)
- ?HandleCommandCompleteL@GlxMpxCommandHandler@@MAEXPAXPAVCMPXMedia@@HPAVMGlxMediaList@@@Z @ 10 NONAME ; void GlxMpxCommandHandler::HandleCommandCompleteL(void *, class CMPXMedia *, int, class MGlxMediaList *)
- ??0GlxCommandHandler@@QAE@XZ @ 11 NONAME ; GlxCommandHandler::GlxCommandHandler(void)
- ?HandleMediaL@GlxMpxCommandHandler@@MAEXHPAVMGlxMediaList@@@Z @ 12 NONAME ; void GlxMpxCommandHandler::HandleMediaL(int, class MGlxMediaList *)
- ??0GlxMpxCommandHandler@@QAE@XZ @ 13 NONAME ; GlxMpxCommandHandler::GlxMpxCommandHandler(void)
- ?CreateMediaListL@GlxMpxCommandHandler@@AAEXHHW4TGlxFilterItemType@@@Z @ 14 NONAME ; void GlxMpxCommandHandler::CreateMediaListL(int, int, enum TGlxFilterItemType)
- ??_EGlxMpxCommandHandler@@UAE@I@Z @ 15 NONAME ; GlxMpxCommandHandler::~GlxMpxCommandHandler(unsigned int)
- ?HandleItemModifiedL@GlxMpxCommandHandler@@MAEXABV?$RArray@H@@PAVMGlxMediaList@@@Z @ 16 NONAME ; void GlxMpxCommandHandler::HandleItemModifiedL(class RArray<int> 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<class QModelIndex>)
+ ?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<class TMPXAttribute> 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<class QModelIndex>)
+ ?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<int> 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 *)
--- 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<class QModelIndex> 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<class QModelIndex> 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<class QModelIndex>) 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 *)
--- 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
--- 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<QModelIndex> indexList = QList<QModelIndex>() ) = 0;
};
#endif //GLXCOMMANDHANDLER_H
\ No newline at end of file
--- /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 <QObject>
+#include<glxcommandhandler.h>
+
+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<QModelIndex> indexList = QList<QModelIndex>() );
+
+ protected: // From derived class
+ virtual void doHandleUserAction(GlxMediaModel* model,QList<QModelIndex> indexList) const = 0;
+
+};
+#endif //GLXMODELCOMMANDHANDLER_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<QModelIndex> indexList = QList<QModelIndex>() );
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
--- 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 <glxcommandhandler.h>
+#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 );
}
--- /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 <glxmediamodel.h>
+#include <glxmodelcommandhandler.h>
+#include <glxmodelparm.h>
+
+GlxModelCommandHandler::GlxModelCommandHandler()
+ {
+ }
+
+GlxModelCommandHandler::~GlxModelCommandHandler()
+ {
+ }
+
+void GlxModelCommandHandler::executeCommand(int commandId, int collectionId,QList<QModelIndex> indexList)
+ {
+ GlxModelParm modelParm (collectionId, 0);
+ GlxMediaModel* mediaModel = new GlxMediaModel (modelParm);
+ doHandleUserAction(mediaModel,indexList);
+ delete mediaModel;
+ }
--- 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 <mglxmedialist.h>
#include <glxcommandfactory.h>
#include <glxmpxcommandhandler.h>
-#include <QDebug>
+#include <glxfetchcontextremover.h>
+#include <glxmedialistiterator.h>
+#include <glxattributecontext.h>
+#include <glxattributeretriever.h>
+#include <glxuistd.h>
-GlxMpxCommandHandler::GlxMpxCommandHandler()
-{
+#include <textresolver.h>
+#include <hbmessagebox.h>
+#include <e32debug.h>
+#include <hbprogressdialog.h>
+#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<QModelIndex> 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<TAny*>(KMPXCommandGeneralSessionId, static_cast<TAny*>(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<TAny*> (KMPXCommandGeneralSessionId,
+ static_cast<TAny*> (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<TInt>& /*aItemIndexes*/,
MGlxMediaList* /*aList*/)
{
+ OstTraceFunctionEntry0( GLXMPXCOMMANDHANDLER_HANDLEITEMMODIFIEDL_ENTRY );
// Do nothing
+ OstTraceFunctionExit0( GLXMPXCOMMANDHANDLER_HANDLEITEMMODIFIEDL_EXIT );
}
// -----------------------------------------------------------------------------
@@ -173,7 +224,9 @@
void GlxMpxCommandHandler::HandleAttributesAvailableL(TInt /*aItemIndex*/,
const RArray<TMPXAttribute>& /*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<TInt>(KMPXMessageGeneralId);
- TAny* sessionId = aMessage.ValueTObjectL<TAny*>(KMPXCommandGeneralSessionId);
-
+ OstTraceFunctionEntry0( GLXMPXCOMMANDHANDLER_HANDLEMESSAGEL_ENTRY );
+ if ((aMessage.IsSupported(KMPXMessageGeneralId) && (aMessage.IsSupported(
+ KMPXCommandGeneralSessionId))))
+ {
+ TInt msgId = aMessage.ValueTObjectL<TInt> (KMPXMessageGeneralId);
+ TAny* sessionId = aMessage.ValueTObjectL<TAny*> (
+ 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();
+ }
--- 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
--- 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 ;
--- 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
--- 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
--- /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 <glxmpxcommandhandler.h>
+
+#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
--- /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 <QList>
+#include <QString>
+
+
+#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<QModelIndex> indexList)const ;
+ };
+#endif // GLXCOMMANDHANDLERSEND_H
--- 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 <glxalbummodel.h>
#include <glxcollectionpluginalbums.hrh>
#include <glxmodelparm.h>
-#include <QDebug>
#include <glxfilterfactory.h>
-
#include <hblistwidget.h>
#include <hbview.h>
#include <hbpushbutton.h>
#include <QGraphicsGridLayout>
#include <hbdialog.h>
+#include <hbmessagebox.h>
+
+#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<GlxQueryContentWidget*>(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...");
+ }
--- 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 <mglxmedialist.h>
#include <glxcommandfactory.h>
#include <glxcommandhandlerdelete.h>
-#include <QDebug>
+#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;
+ }
+
--- 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 <glxcommandfactory.h>
#include <glxcommandhandlernewmedia.h>
#include <glxcommandhandlers.hrh>
+#include <glxattributecontext.h>
+#include <glxattributeretriever.h>
+#include <glxfetchcontextremover.h>
+#include <glxcollectionpluginalbums.hrh>
#include <hbinputdialog.h>
+#include <hblabel.h>
+#include <hbmessagebox.h>
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "glxcommandhandlernewmediaTraces.h"
+#endif
+#include <hbaction.h>
-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<const TUint16*> (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<const TUint16*>(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<TMPXItemId>(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<TMPXItemId> (
+ 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<TInt> 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();
+ }
+
--- /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 <mpxcollectionpath.h>
+#include <mglxmedialist.h>
+#include <glxcommandfactory.h>
+#include <glxcommandhandlerremovefrom.h>
+#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...");
+ }
--- 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 <mpxcollectionpath.h>
#include <mglxmedialist.h>
#include <glxcommandfactory.h>
-#include <GlxCommandHandlerRotate.h>
-#include <QDebug>
+#include <glxcommandHandlerrotate.h>
#include <ExifRead.h>
+#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 );
+ }
--- /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 <QModelIndex>
+#include <shareuidialog.h>
+#include <glxmodelparm.h>
+#include <glxmediamodel.h>
+#include <QAbstractItemModel>
+
+GlxCommandHandlerSend::GlxCommandHandlerSend()
+ {
+
+ }
+
+
+GlxCommandHandlerSend::~GlxCommandHandlerSend()
+ {
+
+ }
+
+void GlxCommandHandlerSend::doHandleUserAction(GlxMediaModel* model,QList<QModelIndex> indexList) const
+{
+ QList <QVariant> 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<int>(),0),GlxUriRole)).value<QString>();
+ fileList.append(QVariant(imagePath));
+ }
+ else
+ {
+ for ( int i = 0; i < indexList.count(); i++)
+ {
+ imagePath = (model->data(indexList[i],GlxUriRole)).value<QString>();
+ fileList.append(QVariant(imagePath));
+ }
+ }
+ ShareUi dialog;
+ dialog.init(fileList,true);
+}
+
--- 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
--- 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
--- 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
};
--- 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"
--- /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 */
--- 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<glxfiltergeneraldefs.h>
+#include<glxuistd.h>
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;
};
--- 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,
--- 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 */
--- 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<class TGlxIdSpaceIdBase> 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<class TMPXAttribute> 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<class TGlxIdHierarchyBase> 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<class TGlxIdSpaceIdBase> 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<class TGlxIdSpaceIdBase> 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<class TMPXAttribute> 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<class TGlxIdHierarchyBase> 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<class TGlxIdSpaceIdBase> 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
--- 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
--- 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
--- 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
--- 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);
+ }
+
--- 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)
--- 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<TMPXAttribute>& 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());
- }
}
}
}
--- 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 )
--- 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<TInt>& aItemIndexes, MGlxMediaList* aList );
+
public:
/**
* RetrieveItemIcon()
@@ -139,9 +142,14 @@
void CheckPtFsTBAttribute(TInt aItemIndex, const RArray<TMPXAttribute>& aAttributes);
void CheckLsFsTBAttribute(TInt aItemIndex, const RArray<TMPXAttribute>& aAttributes);
void CheckListAttributes(TInt aItemIndex, const RArray<TMPXAttribute>& 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
--- 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 <glxperformancemacro.h>
//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
// ---------------------------------------------------------------------------
--- 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 <QDebug>
#include <hbicon.h>
#include <QStringList>
+#include <QBrush>
+
+#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 <int> () ) {
+ mMLWrapper->setVisibleWindowIndex( value.value <int> () );
+ return TRUE;
+ }
+ }
+
if ( GlxSelectedIndexRole == role ) {
if ( value.isValid() && value.canConvert <int> () ) {
setSelectedIndex( index( value.value <int> (), 0) );
--- 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<int, HbIcon> itemExternalIconCache;
int externalDataCount;
int mFocusIndex;
+ int mSubState;
};
--- 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 <glxperformancemacro.h>
+#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 <int> ()) {
+ mSubState = value.value <int> () ;
+ return TRUE;
+ }
return FALSE;
}
--- 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)
--- 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
--- 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 <QHash>
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<QModelIndex> indexList = QList<QModelIndex>());
private://functions
--- 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 <glxbasestate.h>
-typedef enum
-{
- NO_FULLSCREEN_S,
- EXTERNAL_S,
- IMAGEVIEWER_S //don't add any state before this
-} FullScreenState;
-
class GlxFullScreenState : public GlxState
{
public :
--- 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 :
--- 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 <glxbasestate.h>
-typedef enum
-{
- NO_SLIDESHOW_S,
- SLIDESHOW_GRID_ITEM_S,
- SLIDESHOW_ALBUM_ITEM_S,
-} SlideShowState;
-
class GlxStateManager;
class GlxSlideShowState : public GlxState
--- 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
--- 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 <QObject>
-#include <QProcess>
-
-// 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
--- 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 <glxcommandhandler.h>
#include<glxcommandhandlerfactory.h>
#include "glxmediaid.h"
+#include <QModelIndexList>
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);
}
}
--- 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<glxcommandhandlerdelete.h>
#include <glxcommandhandleraddtocontainer.h>
#include <glxcommandhandlerrotate.h>
+#include <glxcommandhandlerremovefrom.h>
+#include <glxcommandhandlernewmedia.h>
+#include <glxcommandhandlersend.h>
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;
}
--- 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 ;
}
}
--- 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 <glxalbummodel.h>
#include <glxloggerenabler.h>
#include <glxmediaid.h>
-#include "processhandler.h"
#include <glxactionhandler.h>
#include <glxcommandhandlers.hrh>
#include <QApplication>
@@ -41,6 +40,7 @@
#include <QDebug>
#include <QItemSelectionModel>
#include <hbmessagebox.h>
+#include <QProcess>
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<GlxMediaModel *>(mCurrentModel);
- glxModel->clearExternalItems();
+ if(glxModel) {
+ glxModel->clearExternalItems();
+ }
}
--- 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 <QDebug>
-#include <QtDebug>
-
-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;
- }
- };
- }
--- 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
--- 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 <QObject>
#include <QPointF>
+
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<QAction*> 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;
};
--- 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<HbAction *> mMarkingActionList; //marking mode tool bar action list
HbToolBar *mViewToolBar; //view tool bar
HbToolBar *mMarkingToolBar; //marking mode tool bar
- QList<QString > mSelIconPathList; //enable tool bar button icon path list
- QList<QString > mDefaultIconPathList; //disalbe tool bar button icon path list
HbMenu *mMenu;
GlxView *mView;
QAbstractItemModel *mModel; //no ownership
--- 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 <glxviewids.h>
-#include <glxmenumanager.h>
+
+//include
#include <QDebug>
#include <hbaction.h>
-#include "hbmenu.h"
-#include <glxcommandhandlers.hrh>
-#include <QDebug>
+#include <hbmenu.h>
+#include <hbmainwindow.h>
-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<QAction*> 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<int> () ) {
+ return variant.value<int>() ;
+ }
+ return -1;
}
-void GlxMenuManager::CreateImageViewerMenu(HbMenu* menu)
+void GlxMenuManager::updateGridMenu()
{
+ qDebug() << "GlxMenuManager::updateGridMenu";
+
+ HbMenu *menu = qobject_cast<HbMenu*>( sender() );
+ static bool isAllActionDisable = FALSE;
+ int rowCount = mModel->rowCount();
+ QList<QAction*> 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<HbMenu*>( sender() );
+ QList<QAction*> 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;
}
--- 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 <glxviewmanager.h>
#include <glxview.h>
+#include "glxicondefs.h" //Contains the icon names/Ids
#include <glxviewsfactory.h>
#include <glxeffectengine.h>
#include <hbmainwindow.h>
@@ -32,10 +33,16 @@
#include <hbtoolbar.h>
#include <hbmenu.h>
#include <QDebug>
+#include <hbstyleloader.h>
-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;
--- 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();
--- 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;
--- 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<HbDataFormModelItem::DataItemType>(
+ 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
--- 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 <QModelIndex>
-#include <QtDebug>
#include <qdatetime.h>
//--------------------------------------------------------------------------------------------------------------------------------------------
@@ -41,143 +40,127 @@
#include "glxviewids.h"
#include <glxcommandhandlers.hrh>
+#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 <HbAbstractViewItem*> 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<int> () ) {
@@ -320,40 +282,18 @@
variant = mModel->data( mModel->index( mSelIndex ,0), GlxFsImageRole);
if ( variant.isValid() && variant.canConvert<HbIcon> () )
{
- QIcon itemIcon = variant.value<HbIcon>().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<HbIcon>());
}
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<HbIcon>());
}
}
}
@@ -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<int>(),0),GlxUriRole)).value<QString>();
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<HbLineEdit*>(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<int>(),0),GlxDateRole)).value<QDate>();
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<HbLabel*>(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 ;
}
-}
+ }
--- 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;
}
--- 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 <glxcoverflow.h>
//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_ */
--- 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" ));
}
--- 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 <QDebug>
#include <QTimer>
#include <hbmenu.h>
+#include <HbAction>
+#include <HbToolBar>
#include <hbgridview.h>
#include <hbpushbutton.h>
#include <hbmainwindow.h>
@@ -27,40 +28,58 @@
#include <hbdocumentloader.h>
#include <QAbstractItemModel>
#include <hbabstractviewitem.h>
-
+#include <hbiconitem.h>
//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 <glxhdmicontroller.h>
-#include <glxlog.h>
-#include <glxtracer.h>
+//#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<GlxFullScreenView*> (mDocLoader->findWidget(GLXFULLSCREEN_VIEW));
- mCoverFlow = static_cast<GlxCoverFlow*> (mDocLoader->findWidget(GLXFULLSCREEN_COVERFLOW));
+{
+ OstTraceFunctionEntry0( GLXFULLSCREENVIEW_LOADWIDGETS_ENTRY );
+
+ //Load the Coverflow and image strip widget
+ mCoverFlow = qobject_cast<GlxCoverFlow*> (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<HbGridView*> (mDocLoader->findWidget(GLXFULLSCREEN_FILMSTRIP));
- mFlipPushButton = static_cast<HbPushButton*> (mDocLoader->findWidget(GLXFULLSCREEN_FLIP));
-
+ //Load the IMAGE STRIP & FULLSCREEN TOOLBAR[PUSH BUTTON]
+ mImageStrip = qobject_cast<HbGridView*> (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<HbToolBar *> (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<int> () ) {
- mImageStrip->setCurrentIndex ( mModel->index( variant.value<int>(), 0) );
- mImageStrip->scrollTo( mModel->index( variant.value<int>(), 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<int> () ) {
+ mImageStrip->setCurrentIndex ( mModel->index( variant.value<int>(), 0) );
+ mImageStrip->scrollTo( mModel->index( variant.value<int>(), 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<int> () && ( index.row() == variant.value<int>() ) ) {
- 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<int> () && ( index.row() == variant.value<int>() ) ) {
- 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<int> () ) {
+ mCoverFlow->indexChanged( variant.value<int>() ) ;
+ }
+
+ 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<int> () ) {
- mImageStrip->setCurrentIndex ( mModel->index( variant.value<int>(), 0) );
- }
+ mImageStrip->setCurrentIndex ( mModel->index( variant.value<int>(), 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<int>(),0),GlxUriRole)).value<QString>();
- if(imagePath.isNull())
- {
- GLX_LOG_INFO("GlxFullScreenView::SendUi() path is null" );
- }
- qDebug() << "GlxFullScreenView::SendUi() imagePath= " << imagePath;
+
- ShareUi dialog;
- QList <QVariant> 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<int>(),0),GlxUriRole)).value<QString>();
- 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<const TUint16*>(imagePath.utf16());
- // Get the image Dimensions
- QSize imageDimension = (mModel->data(mModel->index(mModel->data(mModel->index(0,0),GlxFocusIndexRole).value<int>(),0),GlxDimensionsRole)).value<QSize>();
- TSize imageSize(imageDimension.width(),imageDimension.height());
-
- // Get the framecount
- int frameCount = (mModel->data(mModel->index(mModel->data(mModel->index(0,0),GlxFocusIndexRole).value<int>(),0),GlxFrameCount)).value<int>();
- 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<HbIcon> () ) {
+ mIconItem->setIcon ( variant.value<HbIcon>() ) ;
+ }
+ 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<HbAction*>(sender());
+ qint32 commandId = action->data().toInt();
+ emit actionTriggered( commandId );
+
+ OstTraceFunctionExit0( GLXFULLSCREENVIEW_HANDLETOOLBARACTION_EXIT );
+}
--- 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_ */
--- 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<int> () ) {
+ mGridView->scrollTo( model->index( variant.value<int>(),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<int> () ) {
- mGridView->scrollTo( mModel->index( variant.value<int>(),0), HbGridView::PositionAtCenter );
- }
-
+ mGridView->scrollTo( mModel->index( variant.value<int>(),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<int>()
- ,0),GlxUriRole)).value<QString>();
-
- if(imagePath.isNull())
- {
- OstTrace0( TRACE_NORMAL, DUP2_GLXGRIDVIEW_HANDLEUSERACTION, "GlxGridView::SendUi path is NULL" );
- }
- qDebug() << "GlxGridView::SendUi() imagePath= " << imagePath;
-
- ShareUi dialog;
- QList <QVariant> 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<int> () ) {
- selIndex = variant.value<int>();
- }
-
- 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<int> () ) {
+ selIndex = variant.value<int>();
+ }
+
+ 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<HbView*>(mDocLoader->findWidget(QString(GLX_GRIDVIEW_VIEW)));
mGridView = static_cast<HbGridView*>(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);
- }
+}
--- 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();
--- 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 <hbmainwindow.h>
#include <hbdocumentloader.h>
#include <hbabstractviewitem.h>
-
+#include <HbListViewItem.h>
//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);
}
}
--- 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<GlxSlideShowView*>(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<int>(),0),GlxUriRole)).value<QString>();
- if(imagePath.isNull())
- {
+ if(imagePath.isNull()) {
GLX_LOG_INFO("GlxSlideShowView::SetImageToHdmiL() path is null" );
- }
+ }
qDebug() << "GlxSlideShowView::SetImageToHdmiL() imagePath= " << imagePath;
TPtrC aPtr = reinterpret_cast<const TUint16*>(imagePath.utf16());
- // Get the image Dimensions
- QSize imageDimension = (mModel->data(mModel->index(mModel->data(mModel->index(0,0),GlxFocusIndexRole).value<int>(),0),GlxDimensionsRole)).value<QSize>();
- TSize imageSize(imageDimension.width(),imageDimension.height());
-
- iHdmiController->SetImageL(aPtr,imageSize );
- }
+ iHdmiController->SetImageL(aPtr);
}
+}
--- 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<HbPushButton*>(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<int> () ) {
mSelIndex = variant.value<int>() ;
--- 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_ */
--- /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 <hbmainwindow.h>
+#include <hbinstance.h>
+
+//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;
+}
--- 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 \