# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1276064944 -10800 # Node ID 1b758917cafc00c8ac67c5f432e4c172ecaadfc6 # Parent 137ebc85284b17a56611f8914f1727ca85f982e5 Revision: 201021 Kit: 2010123 diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/data/qhd_tch/group/bld.inf --- a/idlehomescreen/data/qhd_tch/group/bld.inf Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/data/qhd_tch/group/bld.inf Wed Jun 09 09:29:04 2010 +0300 @@ -27,6 +27,7 @@ #include "../view_2001f48b/group/bld.inf" #include "../view_200286e4/group/bld.inf" #include "../view_200286e5/group/bld.inf" +#include "../view_200286ed/group/bld.inf" #include "../templateview_20026f50/group/bld.inf" #include "../root_2001f482/group/bld.inf" diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/data/qhd_tch/profile_2001cb7c/xuikon/00/profile.css --- a/idlehomescreen/data/qhd_tch/profile_2001cb7c/xuikon/00/profile.css Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/data/qhd_tch/profile_2001cb7c/xuikon/00/profile.css Wed Jun 09 09:29:04 2010 +0300 @@ -115,9 +115,9 @@ _s60-scroll-behaviour: scroll-alternate; - _s60-display-time: 2000; + _s60-display-time: 5000; + _s60-start-delay: 2000; _s60-scroll-loop: false; - _s60-start-delay: 0; _s60-restart-after-update: true; } diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/data/qhd_tch/profile_2001cb7c/xuikon/00/profile.xml --- a/idlehomescreen/data/qhd_tch/profile_2001cb7c/xuikon/00/profile.xml Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/data/qhd_tch/profile_2001cb7c/xuikon/00/profile.xml Wed Jun 09 09:29:04 2010 +0300 @@ -73,16 +73,7 @@ - - - - - - - - - - + @@ -91,16 +82,7 @@ - - - - - - - - - - + diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/data/qhd_tch/profile_2001cb7c/xuikon/37/profile.css --- a/idlehomescreen/data/qhd_tch/profile_2001cb7c/xuikon/37/profile.css Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/data/qhd_tch/profile_2001cb7c/xuikon/37/profile.css Wed Jun 09 09:29:04 2010 +0300 @@ -115,9 +115,9 @@ _s60-scroll-behaviour: scroll-alternate; - _s60-display-time: 2000; + _s60-display-time: 5000; + _s60-start-delay: 2000; _s60-scroll-loop: false; - _s60-start-delay: 0; _s60-restart-after-update: true; } diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/data/qhd_tch/profile_2001cb7c/xuikon/50/profile.css --- a/idlehomescreen/data/qhd_tch/profile_2001cb7c/xuikon/50/profile.css Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/data/qhd_tch/profile_2001cb7c/xuikon/50/profile.css Wed Jun 09 09:29:04 2010 +0300 @@ -115,9 +115,9 @@ _s60-scroll-behaviour: scroll-alternate; - _s60-display-time: 2000; + _s60-display-time: 5000; + _s60-start-delay: 2000; _s60-scroll-loop: false; - _s60-start-delay: 0; _s60-restart-after-update: true; } diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/data/qhd_tch/profile_2001cb7c/xuikon/57/profile.css --- a/idlehomescreen/data/qhd_tch/profile_2001cb7c/xuikon/57/profile.css Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/data/qhd_tch/profile_2001cb7c/xuikon/57/profile.css Wed Jun 09 09:29:04 2010 +0300 @@ -115,9 +115,9 @@ _s60-scroll-behaviour: scroll-alternate; - _s60-display-time: 2000; + _s60-display-time: 5000; + _s60-start-delay: 2000; _s60-scroll-loop: false; - _s60-start-delay: 0; _s60-restart-after-update: true; } diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/data/qhd_tch/profile_2001cb7c/xuikon/94/profile.css --- a/idlehomescreen/data/qhd_tch/profile_2001cb7c/xuikon/94/profile.css Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/data/qhd_tch/profile_2001cb7c/xuikon/94/profile.css Wed Jun 09 09:29:04 2010 +0300 @@ -115,9 +115,9 @@ _s60-scroll-behaviour: scroll-alternate; - _s60-display-time: 2000; + _s60-display-time: 5000; + _s60-start-delay: 2000; _s60-scroll-loop: false; - _s60-start-delay: 0; _s60-restart-after-update: true; } diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/data/qhd_tch/root_2001f482/conf/root2001f482.gcfml --- a/idlehomescreen/data/qhd_tch/root_2001f482/conf/root2001f482.gcfml Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/data/qhd_tch/root_2001f482/conf/root2001f482.gcfml Wed Jun 09 09:29:04 2010 +0300 @@ -3,8 +3,8 @@ - - + diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48b.confml --- a/idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48b.confml Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48b.confml Wed Jun 09 09:29:04 2010 +0300 @@ -1,434 +1,493 @@ + Maximum widget amount in Homescreen 1 page. Customizable - + Not customizable! - + Not customizable! - + Not customizable! - + Path of the Wallpaper resource. Customizable. - + Not customizable! - + Not customizable! - + Widgets in the Homescreen 1 - + Widget name - - - - - Bundle identifier for the (C)WRT widgets. None for the native widgets - - + + Bundle identifier for the (C)WRT widgets. None for the native widgets + + Templeate identifier for the (C)WRT widgets. None for the native widgets - - + Locking status for the widget 1 in Homescreen 1 page - - + Customize enabler for desktop/shortcut widget - - + Customize 1st item in desktop widget - - + Type of the item: Application, bookmark, or shortcut(param specific item) - - + Uid for the application, Menu content Uid for the bookmarks and shortcuts. - + url for the bookmark based shortcut. for example http://www.google.com - + Params for shortcut. For example: messaging:msg - + Customize 2nd item in desktop widget - - + Type of the item: Application, bookmark, or shortcut(param specific item) - - + Uid for the application, Menu content Uid for the bookmarks and shortcuts - + url for the bookmark based shortcut. for example http://www.google.com - + Params for shortcut. messaging:msg - + Customize 3rd item in desktop widget - - + Type of the item: Application, bookmark, or shortcut(param specific item) - - + Uid for the application,Menu content Uid for the bookmarks and shortcuts. - + url for the bookmark based shortcut. for example http://www.google.com - + Params for shortcut. messaging:msg - + Customize 4th item in desktop widget - - + Type of the item: Application, bookmark, or shortcut(param specific item) - - + Uid for the application, Menu content ids for the bookmarks and shortcuts - + url for the bookmark based shortcut. for example http://www.google.com - + Params for shortcut. messaging:msg - + Not customizable! - + Not customizable! - + Not customizable! - + Not customizable! - + Not customizable! - + Not customizable! - + Not customizable! - + Not customizable! - + Not customizable! - + Not customizable! - + Not customizable! - + Not customizable! - + 6 - true - hs_qhd_tch_view - use_empty_widget - wallpaper - path - - + true + hs_qhd_tch_view + use_empty_widget + wallpaper + path + + 0x2001cb7c - 0 - 0 - locked - 0 - - - - - - - - - - - - - - - - - - - - - first - Shortcut1 - second - Shortcut2 - third - Shortcut3 - fourth - Shortcut4 - type - uid - view - param + 0 + 0 + locked + 0 + + + + + + + + + + + + + + + + + + + + + first + Shortcut1 + second + Shortcut2 + third + Shortcut3 + fourth + Shortcut4 + type + uid + view + param - + 0x20026f4f - 0 - 0 - none - 0 - 0 - - - - - - - - - - - - - - - - - - - - first - Shortcut1 - second - Shortcut2 - third - Shortcut3 - fourth - Shortcut4 - type - uid - view - param + 0 + 0 + none + 0 + 0 + + + + + + + + + + + + + + + + + + + + first + Shortcut1 + second + Shortcut2 + third + Shortcut3 + fourth + Shortcut4 + type + uid + view + param - + 0x10207c18 - 0 - 0 - none - 0 - 0 - - - - - - - - - - - - - - - - - - - - first - Shortcut1 - second - Shortcut2 - third - Shortcut3 - fourth - Shortcut4 - type - uid - view - param + 0 + 0 + none + 0 + 0 + + + + + + + + + + + + + + + + + + + + first + Shortcut1 + second + Shortcut2 + third + Shortcut3 + fourth + Shortcut4 + type + uid + view + param - + 0x2001f481 - 0 - 0 - none - 0 - 0 - - - - - - - - - - - - - - - - - - - - first - Shortcut1 - second - Shortcut2 - third - Shortcut3 - fourth - Shortcut4 - type - uid - view - param + 0 + 0 + none + 0 + 0 + + + + + + + + + + + + + + + + + + + + first + Shortcut1 + second + Shortcut2 + third + Shortcut3 + fourth + Shortcut4 + type + uid + view + param - + 0x2001f47f - 0 - 0 - none - 0 - 0 - - - - - - - - - - - - - - - - - - - - first - Shortcut1 - second - Shortcut2 - third - Shortcut3 - fourth - Shortcut4 - type - uid - view - param + 0 + 0 + none + 0 + 0 + + + + + + + + + + + + + + + + + + + + first + Shortcut1 + second + Shortcut2 + third + Shortcut3 + fourth + Shortcut4 + type + uid + view + param - + 0x2001f47f - 0 - 0 - none - 0 - 0 - - - - - - - - - - - - - - - - - - - - first - Shortcut1 - second - Shortcut2 - third - Shortcut3 - fourth - Shortcut4 - type - uid - view - param + 0 + 0 + none + 0 + 0 + + + + + + + + + + + + + + + + + + + + first + Shortcut1 + second + Shortcut2 + third + Shortcut3 + fourth + Shortcut4 + type + uid + view + param diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48b.gcfml --- a/idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48b.gcfml Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48b.gcfml Wed Jun 09 09:29:04 2010 +0300 @@ -3,10 +3,11 @@ - - + + diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48bmanifest.gcfml --- a/idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48bmanifest.gcfml Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48bmanifest.gcfml Wed Jun 09 09:29:04 2010 +0300 @@ -3,8 +3,8 @@ - - + diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48bxuikon.gcfml --- a/idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48bxuikon.gcfml Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48bxuikon.gcfml Wed Jun 09 09:29:04 2010 +0300 @@ -3,8 +3,8 @@ - - + - - + + + diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4manifest.gcfml --- a/idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4manifest.gcfml Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4manifest.gcfml Wed Jun 09 09:29:04 2010 +0300 @@ -3,8 +3,8 @@ - - + diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4xuikon.gcfml --- a/idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4xuikon.gcfml Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4xuikon.gcfml Wed Jun 09 09:29:04 2010 +0300 @@ -3,8 +3,8 @@ - - + - - + + + diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5manifest.gcfml --- a/idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5manifest.gcfml Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5manifest.gcfml Wed Jun 09 09:29:04 2010 +0300 @@ -3,8 +3,8 @@ - - + diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5xuikon.gcfml --- a/idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5xuikon.gcfml Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5xuikon.gcfml Wed Jun 09 09:29:04 2010 +0300 @@ -3,8 +3,8 @@ - - + + + + + Widgets on Blanko Homescreen + + Widget name + + + Bundle identifier for the (C)WRT widgets. Leave empty if not set. + + + Templeate identifier for the (C)WRT widgets. None for the native widgets + + + Locking status + + + + + + + \ No newline at end of file diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/data/qhd_tch/view_200286ed/conf/view200286ed.gcfml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/data/qhd_tch/view_200286ed/conf/view200286ed.gcfml Wed Jun 09 09:29:04 2010 +0300 @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/data/qhd_tch/view_200286ed/conf/view200286edmanifest.confml Binary file idlehomescreen/data/qhd_tch/view_200286ed/conf/view200286edmanifest.confml has changed diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/data/qhd_tch/view_200286ed/conf/view200286edmanifest.gcfml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/data/qhd_tch/view_200286ed/conf/view200286edmanifest.gcfml Wed Jun 09 09:29:04 2010 +0300 @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + & + + ; + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/data/qhd_tch/view_200286ed/conf/view200286edxuikon.confml Binary file idlehomescreen/data/qhd_tch/view_200286ed/conf/view200286edxuikon.confml has changed diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/data/qhd_tch/view_200286ed/conf/view200286edxuikon.gcfml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/data/qhd_tch/view_200286ed/conf/view200286edxuikon.gcfml Wed Jun 09 09:29:04 2010 +0300 @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/data/qhd_tch/view_200286ed/group/bld.inf --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/data/qhd_tch/view_200286ed/group/bld.inf Wed Jun 09 09:29:04 2010 +0300 @@ -0,0 +1,40 @@ +/* +* Copyright (c) 2002-2008 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: +* The information required for building +* +*/ + +#include + +PRJ_PLATFORMS +DEFAULT + +PRJ_EXPORTS + +//Confml and cfgml files for the customization +// starting use confml it is need to remove root_configuration.xml direct exporting (view_200286e5_variant.iby) +//*********************************** +../conf/view200286ed.confml APP_LAYER_CONFML(view200286ed.confml) +../conf/view200286ed.gcfml APP_LAYER_GCFML(view200286ed.gcfml) +../conf/view200286edmanifest.confml APP_LAYER_CONFML(view200286edmanifest.confml) +../conf/view200286edmanifest.gcfml APP_LAYER_GCFML(view200286edmanifest.gcfml) +../conf/view200286edxuikon.confml APP_LAYER_CONFML(view200286edxuikon.confml) +../conf/view200286edxuikon.gcfml APP_LAYER_GCFML(view200286edxuikon.gcfml) + +PRJ_MMPFILES + +PRJ_TESTMMPFILES + +// End of File diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/inc/xnbitmap.h --- a/idlehomescreen/inc/xnbitmap.h Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/inc/xnbitmap.h Wed Jun 09 09:29:04 2010 +0300 @@ -53,6 +53,13 @@ virtual void SetContentBitmaps(CFbsBitmap* aBitmap, CFbsBitmap* aMask) = 0; /** + * Sets content bitmaps from file path. + * @since S60 5.2 + * @param aFilename Bitmap filename. + */ + virtual void SetContentBitmaps( TFileName& aFilename ) = 0; + + /** * Gets content bitmaps. Ownership is not transferred. * @since Series 60 3.1 * @param aBitmap Bitmap to draw @@ -95,6 +102,13 @@ void SetContentBitmaps(CFbsBitmap* aBitmap, CFbsBitmap* aMask); /** + * Sets content bitmaps from file path. + * @since S60 5.2 + * @param aFilename Bitmap filename. + */ + void SetContentBitmaps( TFileName& aFilename ); + + /** * Gets content bitmaps. Ownership is not transferred. * @since Series 60 3.1 * @param aBitmap Bitmap to draw diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/inc/xneditmode.h --- a/idlehomescreen/inc/xneditmode.h Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/inc/xneditmode.h Wed Jun 09 09:29:04 2010 +0300 @@ -122,6 +122,13 @@ void HandleScreenDeviceChangedL(); /** + * Sets control rect. + * + * @since Series 60 5.0 + */ + void SetClientRect( TRect aRect ); + + /** * Reset the dragging state and update screen * * @since Series 60 5.0 diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/inc/xnnewsticker.h --- a/idlehomescreen/inc/xnnewsticker.h Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/inc/xnnewsticker.h Wed Jun 09 09:29:04 2010 +0300 @@ -36,18 +36,6 @@ { _LIT8(KType, "newsticker"); -class MXnNewstickerCallbackInterface - { - public: // New functions - - /** - * Called when the title has been shown and is now offscreen. - * @param aTitleIndex The title that has been completely shown. - */ - virtual void TitleScrolled(TInt aTitleIndex) = 0; - - }; - class MXnNewstickerInterface : public XnComponentInterface::MXnComponentInterface { public: // New functions @@ -100,12 +88,6 @@ * Delete all titles. */ virtual void ClearTitles() = 0; - - /** - * Set callback interface. - * @param aCallback The callback interface pointer. - */ - virtual void SetCallbackInterfaceL(MXnNewstickerCallbackInterface* aCallback) = 0; }; } @@ -177,25 +159,6 @@ */ void ClearTitles(); - /** - * Append the SVG title to be shown. - * @param aByteData The SVG data. - */ - void AppendSvgTitleL(const TDesC8& aByteData); - - /** - * Insert the SVG title to be shown. - * @param aByteData The SVG data. - */ - void InsertSvgTitleL(const TDesC8& aByteData, TInt aIndex); - - /** - * Set callback interface. - * @param aCallback The callback interface pointer. - */ - void SetCallbackInterfaceL( - XnNewstickerInterface::MXnNewstickerCallbackInterface* aCallback); - /** * Create a component interface according to the given type. * @param aType Type of the interface to create diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/widgetmanager/inc/wmmaincontainer.h --- a/idlehomescreen/widgetmanager/inc/wmmaincontainer.h Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/widgetmanager/inc/wmmaincontainer.h Wed Jun 09 09:29:04 2010 +0300 @@ -27,6 +27,7 @@ #include #include #include // MEikListBoxObserver +#include // MAdaptiveSearchTextObserver // FORWARD DECLARATIONS class CWmPlugin; @@ -47,7 +48,8 @@ * @class CWmMainContainer WmMainContainer.h */ NONSHARABLE_CLASS( CWmMainContainer ) : public CCoeControl, - public MEikListBoxObserver + public MEikListBoxObserver, + public MAdaptiveSearchTextObserver { public: // constructors and destructor @@ -301,6 +303,14 @@ CEikListBox* aListBox, TListBoxEvent aEventType); +private: // from MAdaptiveSearchTextObserver + /** + * Adaptive search observer interface. + * + * @see MAdaptiveSearchTextObserver::AdaptiveSearchTextChanged + */ + void AdaptiveSearchTextChanged( CAknSearchField* aSearchField ); + private: // New functions void AddControlL( CCoeControl* aControl, TInt aControlId ); diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/widgetmanager/inc/wmwidgetloaderao.h --- a/idlehomescreen/widgetmanager/inc/wmwidgetloaderao.h Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/widgetmanager/inc/wmwidgetloaderao.h Wed Jun 09 09:29:04 2010 +0300 @@ -35,7 +35,7 @@ /** * Active object to load widgets into list */ -NONSHARABLE_CLASS( CWmWidgetLoaderAo ) : public CAsyncOneShot +NONSHARABLE_CLASS( CWmWidgetLoaderAo ) : public CActive { public: @@ -78,14 +78,25 @@ protected: // from CActive /** - * AO body - */ + * Handles an active object's request completion event. + * + * @see CActive::RunL + */ void RunL(); /** - * AO error handler + * RunError + * + * @see CActive::RunError */ TInt RunError( TInt aError ); + + /** + * Implements cancellation of an outstanding request. + * + * @see CActive::DoCancel + */ + void DoCancel(); private: @@ -93,6 +104,11 @@ * connects to wrt registry */ void OpenSessionL(); + + /** + * disconnects from wrt registry + */ + void CloseSession(); /** * loads widgets into the listbox diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/widgetmanager/src/wmmaincontainer.cpp --- a/idlehomescreen/widgetmanager/src/wmmaincontainer.cpp Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/widgetmanager/src/wmmaincontainer.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -931,7 +931,8 @@ CAknSearchField::EAdaptiveSearch, 0, KTextLimit ); AddControlL( iFindbox, EFindBox ); - + iFindbox->AddAdaptiveSearchTextObserverL(this); + UpdateFocusMode(); StartLoadingWidgetsL(); } @@ -1643,6 +1644,17 @@ } } +// ---------------------------------------------------- +// CWmMainContainer::AdaptiveSearchTextChanged +// ---------------------------------------------------- +// +void CWmMainContainer::AdaptiveSearchTextChanged( + CAknSearchField* aSearchField ) + { + // fix for ou1cimx1#376818. aknfind will call drawDeferred for lisbox. + // We need to be sure that button area is also drawn. + DrawDeferred(); + } // End of File diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/widgetmanager/src/wmwidgetloaderao.cpp --- a/idlehomescreen/widgetmanager/src/wmwidgetloaderao.cpp Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/widgetmanager/src/wmwidgetloaderao.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -55,7 +55,7 @@ CWmWidgetLoaderAo::CWmWidgetLoaderAo( CWmPlugin& aWmPlugin, CWmListBox& aTargetList ) - : CAsyncOneShot( EPriorityHigh ) + : CActive( EPriorityNormal ) , iWmPlugin( aWmPlugin ) , iWidgetsList( aTargetList ) { @@ -70,6 +70,7 @@ // void CWmWidgetLoaderAo::ConstructL() { + CActiveScheduler::Add( this ); } // --------------------------------------------------------------------------- @@ -81,9 +82,9 @@ // cancel ongoing operation Cancel(); - // cleanup run data + // cleanup and close session Cleanup(); - + CloseSession(); } // --------------------------------------------------------------------------- @@ -94,10 +95,14 @@ { if ( IsActive() ) { - // cancel ongoing process - Cancel(); + return; // already active } - Call(); + + // call itself + iStatus = KRequestPending; + TRequestStatus *pS = (&iStatus); + User::RequestComplete( pS, KErrNone ); + SetActive(); } // --------------------------------------------------------------------------- @@ -108,6 +113,7 @@ { DoLoadWidgetsL(); Cleanup(); + CloseSession(); } // --------------------------------------------------------------------------- @@ -117,10 +123,19 @@ TInt CWmWidgetLoaderAo::RunError( TInt /*aError*/ ) { Cleanup(); + CloseSession(); return KErrNone; } // --------------------------------------------------------- +// CWmWidgetLoaderAo::DoCancel +// --------------------------------------------------------- +// +void CWmWidgetLoaderAo::DoCancel() + { + } + +// --------------------------------------------------------- // CWmWidgetLoaderAo::DoLoadWidgetsL // --------------------------------------------------------- // @@ -280,6 +295,22 @@ } // --------------------------------------------------------- +// CWmWidgetLoaderAo::CloseSession +// --------------------------------------------------------- +// +void CWmWidgetLoaderAo::CloseSession() + { + // disconnect widget registry + if ( iWidgetRegistry ) + { + iWidgetRegistry->Disconnect(); + iWidgetRegistry->Close(); + delete iWidgetRegistry; + iWidgetRegistry = NULL; + } + } + +// --------------------------------------------------------- // CWmWidgetLoaderAo::AddWidgetDataL // --------------------------------------------------------- // @@ -345,15 +376,6 @@ { iLoading = EFalse; - // disconnect widget registry - if ( iWidgetRegistry ) - { - iWidgetRegistry->Disconnect(); - iWidgetRegistry->Close(); - delete iWidgetRegistry; - iWidgetRegistry = NULL; - } - // delete widget order and references to it for( TInt i=0; i // User includes -#include "xnnewsticker.h" #include "aicontentobserver.h" #include "xnproperty.h" @@ -49,7 +48,6 @@ class MTransaction; class CAppUi; class CXmlNodeIdGenerator; - class CNewstickerCallbackHandler; class CCssPropertyMap; class CPolicyEvaluator; class TAiPolicyElement; @@ -66,8 +64,7 @@ * @lib AiXmlUiMain */ class CContentRenderer : public CBase, - public MAiContentObserver, - public XnNewstickerInterface::MXnNewstickerCallbackInterface + public MAiContentObserver { public: // Constructors and destructor @@ -244,8 +241,6 @@ void SendRefreshContentEventL(); TBool IsParentNewsticker( CXnNodeAppIf& aTarget ); - - void RegisterNewstickerCallbackInterfaceL( CXnNodeAppIf& aTarget ); void ProcessContentChangesL( MTransaction& aTr ); void ProcessContentChangeL( TAiPolicyElement& aElement ); @@ -258,13 +253,6 @@ MAiContentObserver::TValueType aValueType ); private: - // From XnNewstickerInterface::MXnNewstickerCallbackInterface - - void TitleScrolled(TInt aTitleIndex); - - void TitleToScroll(TInt aTitleIndex); - -private: // data /** Transaction stack, Owned. */ @@ -285,12 +273,6 @@ CPeriodic* iTimer; /** Fw event handler, Not owned. */ MAiFwEventHandler* iFwEventHandler; - /** Newsticker callback handler, Owned */ - CNewstickerCallbackHandler* iCallbackHandler; - /** Pointer descriptor to newsticker plugin name */ - TPtrC iNTPublisher; - /** Newsticker element property class, Owned */ - HBufC* iNTClass; /** CSS property map, Owned. */ CCssPropertyMap* iPropertyMap; /** Publishing policy evaluator, Owned. */ diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/xmluicontroller/inc/databuffertransactionelement.h --- a/idlehomescreen/xmluicontroller/inc/databuffertransactionelement.h Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/xmluicontroller/inc/databuffertransactionelement.h Wed Jun 09 09:29:04 2010 +0300 @@ -57,6 +57,18 @@ * @param aData - the content. */ void InitializeL(CXnNodeAppIf& aTarget, const TDesC8& aData); + + /** + * Initializes this transaction element to publish content aData + * to node aTarget. + * + * @param aTarget - the target of publishing. + * @param aData - the content. + * @param aCid - the content id. + * @param aIndex - the content index. + */ + void InitializeL(CXnNodeAppIf& aTarget, const TDesC8& aData, + const TDesC& aCid, TInt aIndex); /** * Checks if given content type is supported by target ui element. @@ -86,10 +98,19 @@ private: // Data /** - * New content. + * New content, owned. + */ + HBufC8* iNewData; + + /** + * Content id, owned. */ - TPtrC8 iNewData; - + HBufC* iCid; + + /* + * Content index + */ + TInt iIndex; }; } // namespace AiXmlUiController diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/xmluicontroller/inc/dynamicthememodifier.h --- a/idlehomescreen/xmluicontroller/inc/dynamicthememodifier.h Tue May 25 12:29:32 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,131 +0,0 @@ -/* -* Copyright (c) 2006 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: This file contains the header file of the CDynamicThemeModifier class. -* -*/ - - -#ifndef __DYNAMICTHEMEMODIFIER_H__ -#define __DYNAMICTHEMEMODIFIER_H__ - -// INCLUDES -#include -#include -#include -//#include -//#include -//#include -//#include - - -//class MAiPSPropertyObserver; - -namespace AiXmlUiController -{ - -// CLASS DECLARATION - -/** -* This class updates the theme dynamically as it is being somehow modified. -* -* It connects to XUIKON Content Access API and modifies e.g. NT visibility -* in theme level as user changes appropriate setting in GS. Appropriate CenRep -* keys are being observed and theme modifications are launched based on changes -* in those keys. -* -* @since S60 3.2 -*/ -class CDynamicThemeModifier : public CBase, - public MCenRepNotifyHandlerCallback, - public MXnThemeManagementServiceObserver, - public MXnContentAccessServiceObserver, - public MXnClientRequestServiceObserver - - { - public: // Constructors and destructor - - /** - * Two-phased constructor. - */ - static CDynamicThemeModifier* NewL(); - - /** - * Destructor. - */ - ~CDynamicThemeModifier(); - - - private: - - /** - * C++ default constructor. - */ - CDynamicThemeModifier(); - - /** - * By default Symbian 2nd phase constructor is private. - */ - void ConstructL(); - - - private: // New methods - - /** - * Load AI2 themes. - */ - void LoadThemesL(); - - /** - * Load settings from active theme. - */ - void LoadSettingsFromThemeL(); - - /** - * Handle NT visibility in theme. - * @param ETrue for showing NewsTicker, EFalse for hiding it. - */ - void EnableNewsTickerL( TBool aEnabled ); - - - private: // From base classes - - void HandleXnClientMessage( TXnServiceCompletedMessage aMessage ); - void HandleXnRequestClientMessage( TXnServiceCompletedMessage /*aMessage*/ ) {}; - void XnSettingsUpdated() {}; - void HandleNotifyInt( TUint32 aId, TInt aNewValue ); - - - - private: // Data - - CArrayPtrFlat* iThemeArray; - CXnClient* iXnClient; - CXnContentAccessClient* iXnContentAccessClient; - CXnRequestClient* iXnRequestClient; - CXnResult* iXnResult; - CXnDomDocument* iDomDocument; - CXnODT* iOdt; - CRepository* iNTCenRep; - CRepository* iAiCenRep; - CCenRepNotifyHandler* iNTCenRepObserver; - TInt iNumberOfHeaders; - TInt iEnabledInCenRep; - - }; - -} // namespace - -#endif // __DYNAMICTHEMEMODIFIER_H__ - -// End of File diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/xmluicontroller/inc/imagetransactionelement.h --- a/idlehomescreen/xmluicontroller/inc/imagetransactionelement.h Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/xmluicontroller/inc/imagetransactionelement.h Wed Jun 09 09:29:04 2010 +0300 @@ -23,7 +23,6 @@ class CGulIcon; class CXnNodeAppIf; -class RFile; namespace AiUtility { @@ -31,8 +30,7 @@ } namespace AiXmlUiController -{ -class CKamikazeImageDecoder; +{ /** * @ingroup group_xmluicontroller @@ -88,16 +86,17 @@ * Icon to be published. * Own. */ - CGulIcon* iNewIcon; - + CGulIcon* iIcon; + /** - * Asynchronous image decoder. Executed and - * self destroyed when decoding is ready. Not own. + * Icon filename. */ - CKamikazeImageDecoder* iImageDecoder; - + TFileName iFilename; }; } // namespace AiXmlUiController #endif // C_IMAGETRANSACTIONELEMENT_H + +// End of file + diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/xmluicontroller/inc/mpscallback.h --- a/idlehomescreen/xmluicontroller/inc/mpscallback.h Tue May 25 12:29:32 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,49 +0,0 @@ -/* -* Copyright (c) 2005-2008 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: Callback for Publish & Subscribe observation -* -*/ - - -#ifndef M_PSCALLBACK_H -#define M_PSCALLBACK_H - -#include - -namespace AiXmlUiController -{ - -class MPSCallback - { - public: - - /** - * Callback method for P&S observer. - * Called when appropriate value has been updated. - * @param aKey Key that has been observed. - * @param aValue New Value - */ - virtual void ValueUpdatedL( TInt aKey, TInt aValue ) = 0; - - protected: - - /** - * Protected destructor prevents deletion through this interface. - */ - MPSCallback() {}; - }; - -} // namespace AiXmlUiController - -#endif // M_PSCALLBACK_H diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/xmluicontroller/inc/newstickercallbackhandler.h --- a/idlehomescreen/xmluicontroller/inc/newstickercallbackhandler.h Tue May 25 12:29:32 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,94 +0,0 @@ -/* -* Copyright (c) 2005-2007 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: Callback handler of newsticker component callbacks -* -*/ - - -#ifndef C_NEWSTICKERCALLBACKHANDLER_H -#define C_NEWSTICKERCALLBACKHANDLER_H - - -#include - -class MAiFwEventHandler; - -namespace AiXmlUiController -{ - -/** - * @ingroup group_xmluicontroller - * - * Helper class to handle newsticker component callbacks. - * - * @lib AiXmlUiMain - */ -class CNewstickerCallbackHandler : public CBase - { - -public: - - static CNewstickerCallbackHandler* NewLC( MAiFwEventHandler& aFwEventHandler ); - - virtual ~CNewstickerCallbackHandler(); - - /** - * Sends TitleScrolled event to newsticker plugin - * - * @param aPublisherName Plugin name - * @param aPublishingClass content selector - * @param aIndex Index of the scrolled title - */ - void TitleScrolledL( const TDesC& aPublisherName, - const TDesC& aPublishingClass, - TInt aIndex ); - - /** - * Sends TitleToScroll event to newsticker plugin - * - * @param aPublisherName Plugin name - * @param aPublishingClass content selector - * @param aIndex Index of the scrolled title - */ - void TitleToScrollL( const TDesC& aPublisherName, - const TDesC& aPublishingClass, - TInt aIndex ); - -private: - - CNewstickerCallbackHandler( MAiFwEventHandler& aFwEventHandler ); - - void SendEventToNewstickerPluginL( const TDesC& aEvent, - const TDesC& aPublisherName, - const TDesC& aPublishingClass, - TInt aIndex); - -private: // data - - /** - * Event handler for events - */ - MAiFwEventHandler& iFwEventHandler; - - /** - * Event buffer. - * Own. - */ - HBufC* iEventBuffer; - - }; - -} // namespace AiXmlUiController - -#endif // C_NEWSTICKERCALLBACKHANDLER_H diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/xmluicontroller/inc/pmodtiterator.h --- a/idlehomescreen/xmluicontroller/inc/pmodtiterator.h Tue May 25 12:29:32 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,115 +0,0 @@ -/* -* Copyright (c) 2006-2007 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: ODT iterator. -* -*/ - - - -#ifndef C_PMODTITERATOR_H -#define C_PMODTITERATOR_H - -// INCLUDES -#include - - -// FORWARD DECLARATIONS -class CXnNodeAppIf; - - -// CLASS DECLARATION - -/** -* @ingroup group_xmluicontroller -* -* Depth iterator walks through the dom tree using the depth first -* principle. -* -* @lib presentationmanager.lib -* @since S60 v5.0 -*/ -class CPmODTIterator: public CBase - { - public: - static CPmODTIterator* NewL( CXnNodeAppIf& aRootNode ); - - virtual ~CPmODTIterator(); - - public: - - /** - * Returns the first node of the dom tree. - * - * @since S60 v5.0 - * @return First node. - */ - CXnNodeAppIf* First(); - - /** - * Returns the next node according to depth first principle. - * - * @since S60 v5.0 - * @return Next node. - */ - CXnNodeAppIf* NextL(); - - /** - * Skips the current node branch and returns next sibling - * or parent's sibling. Returns NULL if no nodes left. - * - * @since S60 v5.0 - * @return Sibling node. - */ - CXnNodeAppIf* SkipBranchL(); - - private: - - CPmODTIterator( CXnNodeAppIf& aRootNode ); - - void ConstructL(); - - /** - * Push node to stack. - * @param aNode Node to push - */ - void PushL( CXnNodeAppIf& aNode ); - - /** - * Pop node from the stack. - * @return Pointer to node - */ - CXnNodeAppIf* Pop(); - - private: - /** - * Follow tree hierarchy with stack - * Own. - */ - RPointerArray iDepthLevel; - - /** - * First node - * Own. - */ - CXnNodeAppIf* iFirst; - - /** - * Current node. - * Own. - */ - CXnNodeAppIf* iCurrent; - - }; - -#endif // C_PMODTITERATOR_H diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/xmluicontroller/inc/psobserver.h --- a/idlehomescreen/xmluicontroller/inc/psobserver.h Tue May 25 12:29:32 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,82 +0,0 @@ -/* -* Copyright (c) 2005-2008 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: Observer for changes in Publish & Subscribe keys -* -*/ - - -#ifndef C_PSOBSERVER_H -#define C_PSOBSERVER_H - -#include -#include - - -namespace AiXmlUiController -{ - -class MPSCallback; - -/** -* @ingroup group_xmluicontroller -* -* Observer for changes in Publish & Subcribe keys -* -* @lib AiXmlUiMain -*/ -class CPSObserver : public CActive - { - public: // Constructors and destructor - - static CPSObserver* NewL( MPSCallback& aCallback, TUid aCategory, TInt aKey ); - - virtual ~CPSObserver(); - - /** - * Returns the current value of the monitored - * P&S key. - * - * @param aValue Value is placed here - * - * @return KErrNone if succesfull - */ - TInt GetValue( TInt &aValue ) const; - - private: - - CPSObserver( MPSCallback& aCallback, TUid aCategory, TInt aKey ); - void ConstructL(); - - - private: // from CActive - - void RunL(); - void DoCancel(); - TInt RunError(); - - - private: // Data - - RProperty iProperty; - MPSCallback& iCallback; - TUid iCategory; - TInt iKey; - - }; - -} // namespace AiXmlUiController - -#endif // C_PSOBSERVER_H - -// End of File diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/xmluicontroller/inc/transactionfactory.h --- a/idlehomescreen/xmluicontroller/inc/transactionfactory.h Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/xmluicontroller/inc/transactionfactory.h Wed Jun 09 09:29:04 2010 +0300 @@ -64,56 +64,74 @@ * * @param aTarget the target node of the transaction element * @param aText the text to update + * @param aPriority Priority */ - virtual MTransactionElement* - CreateTextTransactionElementL( CXnNodeAppIf& aTarget, - const TDesC& aText, - TInt aPriority ) = 0; + virtual MTransactionElement* CreateTextTransactionElementL( + CXnNodeAppIf& aTarget, const TDesC& aText, TInt aPriority ) = 0; /** * Creates a new data buffer transaction element. * * @param aTarget the traget node of the transaction element * @param aData the data to update + * @param aPriority Priority + * @param aCid Content selector id + * @param aIndex Content index */ - virtual MTransactionElement* - CreateDataBufferTransactionElementL( CXnNodeAppIf& aTarget, - const TDesC8& aData, - TInt aPriority ) = 0; - + virtual MTransactionElement* CreateDataBufferTransactionElementL( + CXnNodeAppIf& aTarget, const TDesC8& aData, TInt aPriority, const TDesC& aCid, TInt aIndex ) = 0; + + /** + * Creates a new data buffer transaction element. + * + * @param aTarget the traget node of the transaction element + * @param aData the data to update + * @param aPriority Priority + */ + virtual MTransactionElement* CreateDataBufferTransactionElementL( + CXnNodeAppIf& aTarget, const TDesC8& aData, TInt aPriority ) = 0; + /** * Creates a new empty content transaction element. * * @param aTarget the target node of the transaction element * @param aText the text to update */ - virtual MTransactionElement* - CreateEmptyContentTransactionElementL( CXnNodeAppIf& aTarget, - TInt aIndex ) = 0; + virtual MTransactionElement* CreateEmptyContentTransactionElementL( + CXnNodeAppIf& aTarget, TInt aIndex ) = 0; /** * Creates a new image transaction element. * * @param aTarget the target node of the transaction element * @param aIcon the icon to update. Ownership transferred. + * @param aPriority Priority */ - virtual MTransactionElement* - CreateImageTransactionElementL( CXnNodeAppIf& aTarget, - CGulIcon* aIcon, - TInt aPriority ) = 0; + virtual MTransactionElement* CreateImageTransactionElementL( + CXnNodeAppIf& aTarget, CGulIcon* aIcon, TInt aPriority ) = 0; /** * Creates a new image transaction element. * * @param aTarget the target node of the transaction element * @param aFile the file to read image data from. + * @param aPriority Priority */ - virtual MTransactionElement* - CreateImageTransactionElementL( CXnNodeAppIf& aTarget, - RFile& aFile, - TInt aPriority ) = 0; + virtual MTransactionElement* CreateImageTransactionElementL( + CXnNodeAppIf& aTarget, RFile& aFile, TInt aPriority ) = 0; /** + * Creates a new newsticker transaction element. + * + * @param aTarget the target node of the transaction element + * @param aText the text to update + * @param aPriority Priority + * @param aIndex Newsticker title index + */ + virtual MTransactionElement* CreateNewsTickerTransactionElementL( + CXnNodeAppIf& aTarget, const TDesC& aText, TInt aPriority, TInt aIndex ) = 0; + + /** * Releases a transaction element. * * @param aElement the element to release. @@ -128,17 +146,16 @@ * @param aContentType the content type * @return ETrue if content type is supported, otherwise EFalse. */ - virtual TBool IsSupported( CXnNodeAppIf& aTarget, - const TDesC8& aContentType ) = 0; + virtual TBool IsSupported( + CXnNodeAppIf& aTarget, const TDesC8& aContentType ) = 0; protected: - ~MTransactionFactory(){}; - + ~MTransactionFactory(){}; }; } // namespace AiXmlUiController #endif // M_TRANSACTIONFACTORY_H -// End of File \ No newline at end of file +// End of File diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/xmluicontroller/inc/transactionfactoryimpl.h --- a/idlehomescreen/xmluicontroller/inc/transactionfactoryimpl.h Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/xmluicontroller/inc/transactionfactoryimpl.h Wed Jun 09 09:29:04 2010 +0300 @@ -60,36 +60,27 @@ void ReleaseTransaction( MTransaction* aTransaction ); - MTransactionElement* CreateTextTransactionElementL( CXnNodeAppIf& aTarget, - const TDesC& aText, - TInt aPriority ); - + MTransactionElement* CreateTextTransactionElementL( + CXnNodeAppIf& aTarget, const TDesC& aText, TInt aPriority ); + + MTransactionElement* CreateDataBufferTransactionElementL( + CXnNodeAppIf& aTarget, const TDesC8& aData, TInt aPriority ); + MTransactionElement* CreateDataBufferTransactionElementL( - CXnNodeAppIf& aTarget, - const TDesC8& aData, - TInt aPriority ); - - MTransactionElement* CreateEmptyContentTransactionElementL( CXnNodeAppIf& aTarget, - TInt aIndex ); + CXnNodeAppIf& aTarget, const TDesC8& aData, TInt aPriority, + const TDesC& aCid, TInt aIndex ); + + MTransactionElement* CreateEmptyContentTransactionElementL( + CXnNodeAppIf& aTarget, TInt aIndex ); + + MTransactionElement* CreateImageTransactionElementL( + CXnNodeAppIf& aTarget, CGulIcon* aIcon, TInt aPriority ); + + MTransactionElement* CreateImageTransactionElementL( + CXnNodeAppIf& aTarget, RFile& aFile, TInt aPriority ); - MTransactionElement* CreateImageTransactionElementL( CXnNodeAppIf& aTarget, - CGulIcon* aIcon, - TInt aPriority ); - - MTransactionElement* CreateImageTransactionElementL( CXnNodeAppIf& aTarget, - RFile& aFile, - TInt aPriority ); - - /** - * @param aTarget - * @param aText new text - * @param aPriority - * @param aIndex Index of the news ticker element updated - */ - MTransactionElement* CreateNewsTickerTransactionElementL( CXnNodeAppIf& aTarget, - const TDesC& aText, - TInt aPriority, - TInt aIndex ); + MTransactionElement* CreateNewsTickerTransactionElementL( + CXnNodeAppIf& aTarget, const TDesC& aText, TInt aPriority, TInt aIndex ); void ReleaseTransactionElement( MTransactionElement* aElement ); diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/xmluicontroller/inc/xmluicontroller.h --- a/idlehomescreen/xmluicontroller/inc/xmluicontroller.h Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/xmluicontroller/inc/xmluicontroller.h Wed Jun 09 09:29:04 2010 +0300 @@ -246,9 +246,6 @@ static TInt ExitTimerCallBack( TAny *aSelf ); - void GetContentItemL( CXnNodeAppIf& aNode, - RAiSettingsItemArray& aSettings, HBufC*& aItemName ); - void GetConfigurationsL( CXnNodeAppIf& aNode, RAiSettingsItemArray& aSettings, const TDesC& aConfOwner ); diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/xmluicontroller/src/appui.cpp --- a/idlehomescreen/xmluicontroller/src/appui.cpp Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/xmluicontroller/src/appui.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -43,7 +43,6 @@ #include "aixuikoneventhandler.h" #include "aixmluiconstants.h" #include "contentrenderer.h" -#include "psobserver.h" #include "aicontentmodel.h" #include "aiuiidleintegration.h" diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/xmluicontroller/src/contentrenderer.cpp --- a/idlehomescreen/xmluicontroller/src/contentrenderer.cpp Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/xmluicontroller/src/contentrenderer.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -35,14 +35,12 @@ #include "aixmluiconstants.h" #include "aifweventhandler.h" #include "databuffertransactionelement.h" -#include "newstickercallbackhandler.h" #include "newstickertransactionelement.h" #include "csspropertymap.h" #include "policyevaluator.h" #include "debug.h" #include "xnuiengineappif.h" #include "xnnodeappif.h" -#include "xncomponentnodeimpl.h" #include "xnproperty.h" #include "mxncomponentinterface.h" #include "xntext.h" @@ -50,6 +48,7 @@ #include "xntype.h" #include "xnmenuadapter.h" #include "xnlistquerydialogadapter.h" +#include "xnnewsticker.h" #include "mxncomponentinterface.h" #include "aistrcnv.h" #include "contentprioritymap.h" @@ -390,12 +389,9 @@ iRefreshableUiElements.ResetAndDestroy(); - delete iNTClass; - delete iPropertyMap; - delete iContentPriorityMap; - delete iCallbackHandler; + delete iContentPriorityMap; } // ---------------------------------------------------------------------------- @@ -987,8 +983,7 @@ MTransactionElement* element( NULL ); if ( IsParentNewsticker( *target ) ) - { - // Register callback interface for newsticker + { CXnNodeAppIf *parent( target->ParentL() ); if( !parent ) @@ -996,11 +991,6 @@ return KErrNotFound; } - RegisterNewstickerCallbackInterfaceL( *parent ); - - iNTPublisher.Set( info.Name() ); - iNTClass = AiUtility::CopyToBufferL( iNTClass, nodeId ); - element = iFactory->CreateNewsTickerTransactionElementL( *target, aText, priority, aIndex ); } @@ -1077,8 +1067,7 @@ // Publish icon retval = PublishIconL( aPlugin, nodeId, icon, aIndex ); } - else if ( type == KContentTypeImageSvg || - type == KContentTypeData ) + else if ( type == KContentTypeImageSvg || type == KContentTypeData ) { // Publish data retval = PublishDataL( aPlugin, nodeId, aBuf, type, aIndex ); @@ -1135,24 +1124,7 @@ } if ( AllowPublishByPriority( *target, priority ) ) - { - // Check if target is newsticker - if ( IsParentNewsticker( *target ) ) - { - // Register callback interface - CXnNodeAppIf *parent( target->ParentL() ); - - if( !parent ) - { - return KErrNotFound; - } - - RegisterNewstickerCallbackInterfaceL( *parent ); - - iNTPublisher.Set( info.Name() ); - iNTClass = AiUtility::CopyToBufferL( iNTClass, nodeId ); - } - + { // Create transaction element for file MTransactionElement* element = iFactory->CreateImageTransactionElementL( @@ -1225,21 +1197,6 @@ return KErrAccessDenied; } - if ( IsParentNewsticker( *target ) ) - { - CXnNodeAppIf *parent( target->ParentL() ); - - if( !parent ) - { - return KErrNotFound; - } - - RegisterNewstickerCallbackInterfaceL( *parent ); - - iNTPublisher.Set( info.Name() ); - iNTClass = AiUtility::CopyToBufferL( iNTClass, nodeId ); - } - if( target->Type()->Type() == XnListQueryDialogInterface::MXnListQueryDialogInterface::Type()) { @@ -1480,23 +1437,6 @@ return KErrAccessDenied; } - // Special handling of newsticker - if ( IsParentNewsticker( *target ) ) - { - // Register callback interface - CXnNodeAppIf *parent( target->ParentL() ); - - if( !parent ) - { - return KErrNotFound; - } - - RegisterNewstickerCallbackInterfaceL( *parent ); - - iNTPublisher.Set( info.Name() ); - iNTClass = AiUtility::CopyToBufferL( iNTClass, aCid ); - } - MTransactionElement* element = iFactory->CreateImageTransactionElementL( *target, aIcon, priority ); @@ -1561,37 +1501,23 @@ return KErrAccessDenied; } - if( aContentType == KContentTypeData ) - { - CXnComponent& component( target->ParentL()->Component() ); - component.SetDataL( aData, aCid, aIndex ); - return KErrNone; - } - if ( !CDataBufferTransactionElement::IsSupported( *target, aContentType ) ) { return KErrNotSupported; } - // Handle newsticker - if ( IsParentNewsticker( *target ) ) + MTransactionElement* element( NULL ); + + if ( aContentType == KContentTypeData ) { - CXnNodeAppIf *parent( target->ParentL() ); - - if( !parent ) - { - return KErrNotFound; - } - - RegisterNewstickerCallbackInterfaceL( *parent ); - - iNTPublisher.Set( info.Name() ); - iNTClass = AiUtility::CopyToBufferL( iNTClass, aCid ); + element = iFactory->CreateDataBufferTransactionElementL( + *target, aData, priority, aCid, aIndex ); } - - MTransactionElement* element = - iFactory->CreateDataBufferTransactionElementL( - *target, aData, priority ); + else + { + element = iFactory->CreateDataBufferTransactionElementL( + *target, aData, priority ); + } if ( aResource ) { @@ -1919,35 +1845,7 @@ // Continue content refresh for next ui element. StartContentRefresh(); } - -// ---------------------------------------------------------------------------- -// CContentRenderer::TitleScrolled -// -// ---------------------------------------------------------------------------- -// -void CContentRenderer::TitleScrolled( TInt aTitleIndex ) - { - if ( iCallbackHandler ) - { - TRAP_IGNORE( iCallbackHandler->TitleScrolledL( - iNTPublisher, *iNTClass, aTitleIndex ) ); - } - } - -// ---------------------------------------------------------------------------- -// CContentRenderer::TitleToScroll -// -// ---------------------------------------------------------------------------- -// -void CContentRenderer::TitleToScroll( TInt aTitleIndex ) - { - if ( iCallbackHandler ) - { - TRAP_IGNORE( iCallbackHandler->TitleToScrollL( - iNTPublisher, *iNTClass, aTitleIndex ) ); - } - } - + // ---------------------------------------------------------------------------- // CContentRenderer::IsParentNewsticker // @@ -1968,34 +1866,6 @@ return ( type == XnNewstickerInterface::MXnNewstickerInterface::Type() ); } - -// ---------------------------------------------------------------------------- -// CContentRenderer::RegisterNewstickerCallbackInterfaceL -// -// ---------------------------------------------------------------------------- -// -void CContentRenderer::RegisterNewstickerCallbackInterfaceL( - CXnNodeAppIf& aTarget ) - { - if ( !iCallbackHandler ) - { - // Instantiate callback handler - CNewstickerCallbackHandler* handler = - CNewstickerCallbackHandler::NewLC( *iFwEventHandler ); - - // Set callback handler - iCallbackHandler = handler; - CleanupStack::Pop( handler ); - } - - // Obtain newsticker component interface - XnNewstickerInterface::MXnNewstickerInterface* newsticker( NULL ); - XnComponentInterface::MakeInterfaceL( newsticker, aTarget ); - - LeaveIfNull( newsticker, KErrGeneral ); - - // Set callback interface - newsticker->SetCallbackInterfaceL( this ); - } + // End of File diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/xmluicontroller/src/databuffertransactionelement.cpp --- a/idlehomescreen/xmluicontroller/src/databuffertransactionelement.cpp Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/xmluicontroller/src/databuffertransactionelement.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -19,6 +19,7 @@ #include "databuffertransactionelement.h" #include "aixmluiutils.h" +#include "xncomponent.h" #include "xntype.h" #include "xntext.h" #include "xnnewsticker.h" @@ -51,13 +52,32 @@ CDataBufferTransactionElement::~CDataBufferTransactionElement() { + delete iNewData; + delete iCid; } void CDataBufferTransactionElement::InitializeL( CXnNodeAppIf& aTarget, const TDesC8& aData ) { CheckTypeL( aTarget ); SetTarget( aTarget ); - iNewData.Set( aData ); + + delete iNewData; + iNewData = NULL; + + iNewData = aData.AllocL(); + } + +void CDataBufferTransactionElement::InitializeL( CXnNodeAppIf& aTarget, const TDesC8& aData, + const TDesC& aCid, TInt aIndex ) + { + InitializeL( aTarget, aData ); + + iIndex = aIndex; + + delete iCid; + iCid = NULL; + + iCid = aCid.AllocL(); } void CDataBufferTransactionElement::UpdateDataL() @@ -73,7 +93,13 @@ { CTransactionElement::Reset(); - iNewData.Set( KNullDesC8); + delete iNewData; + iNewData = NULL; + + delete iCid; + iCid = NULL; + + iIndex = KErrNotFound; } TBool CDataBufferTransactionElement::IsSupported( CXnNodeAppIf& aTarget, @@ -103,6 +129,10 @@ // Newsticker support return ( type == XnNewstickerInterface::MXnNewstickerInterface::Type() ); } + else if ( aContentType == KContentTypeData ) + { + return ( type == AiUiDef::xml::element::KData() ); + } return EFalse; } @@ -112,13 +142,14 @@ // Get type info const TDesC8& type = LeaveIfNull( aTarget.Type(), KErrNotSupported )->Type(); - // Text element, menu item, and newsticker supported + // Text element, menu item, data and newsticker supported if ( type != XnTextInterface::MXnTextInterface::Type() && type != KXnMenuItem && type != KXnMenu && type != XnPropertyNames::softkey::KNodeName && type != XnPropertyNames::volumecontrol::KSlider && - type != XnNewstickerInterface::MXnNewstickerInterface::Type() ) + type != XnNewstickerInterface::MXnNewstickerInterface::Type() && + type != AiUiDef::xml::element::KData() ) { User::Leave( KErrNotSupported ); } @@ -132,7 +163,7 @@ if ( type == XnTextInterface::MXnTextInterface::Type() ) // Text element { // Set character data directly to target - Target().SetPCDataL( iNewData ); + Target().SetPCDataL( iNewData ? *iNewData : KNullDesC8() ); } else if ( type == XnPropertyNames::softkey::KNodeName || type == KXnMenuItem || @@ -150,7 +181,7 @@ CleanupStack::PushL( propertyValue ); propertyValue->SetStringValueL( CXnDomPropertyValue::EString, - iNewData ); + iNewData ? *iNewData : KNullDesC8() ); CXnProperty* newProperty = CXnProperty::NewL( XnPropertyNames::menu::KLabel, propertyValue, @@ -175,9 +206,14 @@ LeaveIfNull( volumeControl, KErrNotSupported ); TInt32 volume = 0; - User::LeaveIfError( AiUtility::ParseInt( volume, iNewData ) ); + User::LeaveIfError( AiUtility::ParseInt( volume, iNewData ? *iNewData : KNullDesC8() ) ); volumeControl->SetValue( volume ); } + else if ( type == AiUiDef::xml::element::KData() ) + { + CXnComponent& component( Target().ParentL()->Component() ); + component.SetDataL( iNewData ? *iNewData : KNullDesC8(), iCid ? *iCid : KNullDesC(), iIndex ); + } else { User::Leave( KErrNotSupported ); diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/xmluicontroller/src/dynamicthememodifier.cpp --- a/idlehomescreen/xmluicontroller/src/dynamicthememodifier.cpp Tue May 25 12:29:32 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,331 +0,0 @@ -/* -* Copyright (c) 2006 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: This module contains the implementation of -* CDynamicThemeModifier class member functions. -* -*/ - - - -// INCLUDE FILES - -#include "dynamicthememodifier.h" -#include -#include "xnodt.h" -#include "xndomdocument.h" -#include "xndomattribute.h" -#include "xndomnode.h" -#include "xndomlist.h" -#include "xndomdepthiterator.h" -#include - -// CONSTANTS -#define NEWS_TICKER_GENERAL_SETTINGS_UID 0x10207196 -const TUid KCRUidNewsTicker = {NEWS_TICKER_GENERAL_SETTINGS_UID}; - -/** - * KGSNewsTickerStatus - * CenRep key for "NewsTicker activated" - * Off = 0 - * On = 1 - */ -const TUint32 KGSNewsTickerStatus = 0x00000004; - -/** - * KAINTInTheme - * CenRep key for "NewsTicker implemented in AI2 theme" - * No = 0 - * Yes = 1 - */ -const TUint32 KAiNTInTheme = 0x00000800; -const TInt KThemeArrayGranularity = 4; - -_LIT8( KProperty, "property" ); -_LIT8( KControl, "control" ); -_LIT8( KName, "name" ); -_LIT8( KValue, "value" ); -_LIT8( KBlock, "block" ); -_LIT8( KNone, "none" ); - -using namespace AiXmlUiController; - -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// CDynamicThemeModifier::CDynamicThemeModifier -// ----------------------------------------------------------------------------- -// -CDynamicThemeModifier::CDynamicThemeModifier() - { - } - -// ----------------------------------------------------------------------------- -// CDynamicThemeModifier::ConstructL -// ----------------------------------------------------------------------------- -// -void CDynamicThemeModifier::ConstructL() - { - // NT is not shown in theme by default. - // This is overridden later if it really is implemented (some other theme - // Basic activated) - iAiCenRep = CRepository::NewL( TUid::Uid( KCRUidActiveIdleLV ) ); - User::LeaveIfError( iAiCenRep->Set( KAiNTInTheme, 0 ) ); - - // Check if NT settings are visible in GS - iNTCenRep = CRepository::NewL( KCRUidNewsTicker ); - User::LeaveIfError( iNTCenRep->Get( KGSNewsTickerStatus, iEnabledInCenRep ) ); - - iNTCenRepObserver = CCenRepNotifyHandler::NewL( *this, - *iNTCenRep, - CCenRepNotifyHandler::EIntKey, - KGSNewsTickerStatus ); - iNTCenRepObserver->StartListeningL(); - - LoadThemesL(); - } - -// ----------------------------------------------------------------------------- -// CDynamicThemeModifier::NewL -// ----------------------------------------------------------------------------- -// -CDynamicThemeModifier* CDynamicThemeModifier::NewL() - { - CDynamicThemeModifier* self = new( ELeave ) CDynamicThemeModifier; - - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop(); - - return self; - } - - -// Destructor -CDynamicThemeModifier::~CDynamicThemeModifier() - { - if( iThemeArray ) - { - iThemeArray->ResetAndDestroy(); - delete iThemeArray; - } - delete iOdt; - delete iDomDocument; - delete iXnResult; - delete iXnRequestClient; - delete iXnContentAccessClient; - delete iXnClient; - if( iNTCenRepObserver ) - { - iNTCenRepObserver->StopListening(); - delete iNTCenRepObserver; - } - delete iNTCenRep; - delete iAiCenRep; - } - -// --------------------------------------------------------------------------- -// CDynamicThemeModifier::LoadThemesL -// --------------------------------------------------------------------------- -// -void CDynamicThemeModifier::LoadThemesL() - { - const TUid KUidAI2 = TUid::Uid( AI_UID3_AIFW_EXE ); - - iXnClient = CXnClient::NewL( *this ); - // we're only interested in AI2 themes - iXnContentAccessClient = CXnContentAccessClient::NewL( *this, - KUidAI2.iUid ); - iXnRequestClient = CXnRequestClient::NewL( *this, KUidAI2.iUid ); - iXnResult = CXnResult::NewL(); - - CXnODT* odt = CXnODT::NewL(); - CleanupStack::PushL( odt ); - - odt->SetAppUid( KUidAI2.iUid ); - - iThemeArray = new( ELeave ) CArrayPtrFlat( KThemeArrayGranularity ); - - // theme array gets filled up by XnClient after this - // HandleXnClientMessage() is a callback method that we're interested in - TXnServiceCompletedMessage ret = - iXnClient->XnGetListHeaders( *odt, *iThemeArray ); - - if( ret == EXnGetListHeadersSuccess || ret == EXnGetListHeadersEmpty ) - { - iXnClient->GetXnResult( *iXnResult ); - iNumberOfHeaders = iXnResult->iIntValue1; - iXnClient->XnGetNextHeader(); - } - - CleanupStack::PopAndDestroy( odt ); - } - - - -// ----------------------------------------------------------------------------- -// CDynamicThemeModifier::HandleXnClientMessage -// ----------------------------------------------------------------------------- -// -void CDynamicThemeModifier::HandleXnClientMessage( - TXnServiceCompletedMessage aMessage ) - { - // wait until all themes are fetched before loading settings - if( ( aMessage == EXnGetListHeadersUpdate ) && - ( iThemeArray->Count() == iNumberOfHeaders ) ) - { - TRAP_IGNORE( LoadSettingsFromThemeL() ); - } - - else if( aMessage == EXnGetListHeadersFailed ) - { - if (iXnClient) - { - iXnClient->XnCancelGetListHeaders(); - } - - if ( iThemeArray ) - { - iThemeArray->ResetAndDestroy(); - delete iThemeArray; - iThemeArray = NULL; - } - } - - } - - -// ----------------------------------------------------------------------------- -// CDynamicThemeModifier::LoadSettingsFromThemeL -// ----------------------------------------------------------------------------- -// -void CDynamicThemeModifier::LoadSettingsFromThemeL() - { - for( TInt i = 0; i < iThemeArray->Count(); i++ ) - { - CXnODT* odt = iThemeArray->At( i ); - - // activated theme found -> load settings - if( odt->Flags() & EXnThemeStatusActive ) - { - delete iDomDocument; - iDomDocument = NULL; - iDomDocument = CXnDomDocument::NewL(); - - TXnServiceCompletedMessage ret = - iXnContentAccessClient->XnLoadSettings( *odt, *iDomDocument ); - if( ret == EXnSettingsLoaded ) - { - delete iOdt; - iOdt = NULL; - iOdt = odt->CloneL(); - odt = NULL; - // update theme to match CenRep value - EnableNewsTickerL( TBool( iEnabledInCenRep ) ); - break; - } - } - } - } - - -// ----------------------------------------------------------------------------- -// CDynamicThemeModifier::EnableNewsTickerL -// ----------------------------------------------------------------------------- -// -void CDynamicThemeModifier::EnableNewsTickerL( TBool aEnabled ) - { - TInt found = 0; - CXnDomDepthIterator* iterator = - CXnDomDepthIterator::NewL( *iDomDocument->RootNode() ); - CleanupStack::PushL( iterator ); - - CXnDomNode* node = iterator->First(); - - if( !node ) - { - CleanupStack::PopAndDestroy( iterator ); - return; - } - - // find tag - while( node ) - { - if( !node->Name().Compare( KControl ) ) - { - break; - } - node = iterator->NextL(); - } - - if( !node->Name().Compare( KControl ) ) - { - node = iterator->NextL(); - - while( node ) - { - // look for tag... - if( !node->Name().Compare( KProperty ) ) - { - // ...with attribute "value"... - if( !node->AttributeValue( KName ).Compare( KValue ) ) - { - found = 1; - CXnDomAttribute* attr = static_cast - ( node->AttributeList().FindByName( KValue) ); - - // ...update it accordingly... - if( aEnabled ) - { - attr->SetValueL( KBlock ); - } - else - { - attr->SetValueL( KNone ); - } - } - } - node = iterator->NextL(); - } - - // ...and communicate the changes via Content Access API. - for( TInt i = 0; i < iThemeArray->Count(); i++ ) - { - CXnODT* odt = iThemeArray->At( i ); - - // This might return an error if settings were not found from theme. - // However, we don't need to take any actions since appropriate - // theme is left untouched in that case anyway - iXnContentAccessClient->XnUpdateSettings( *odt, *iDomDocument ); - } - - // if found == 1, then NT is implemented in theme - // -> NT settings can be shown in GS - User::LeaveIfError( iAiCenRep->Set( KAiNTInTheme, found ) ); - CleanupStack::PopAndDestroy( iterator ); - } - } - -// ----------------------------------------------------------------------------- -// CDynamicThemeModifier::HandleNotifyInt -// Callback method for observing CenRep changes -// ----------------------------------------------------------------------------- -// -void CDynamicThemeModifier::HandleNotifyInt( TUint32 /*aId*/, TInt aNewValue ) - { - iEnabledInCenRep = TBool( aNewValue ); - TRAP_IGNORE( EnableNewsTickerL( iEnabledInCenRep ) ); - ; - } - -// End of File diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/xmluicontroller/src/emptycontenttransactionelement.cpp --- a/idlehomescreen/xmluicontroller/src/emptycontenttransactionelement.cpp Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/xmluicontroller/src/emptycontenttransactionelement.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -73,58 +73,66 @@ if ( type->Type() == XnImageInterface::MXnImageInterface::Type() ) { - MXnImageInterface* imageIntr = NULL; - if ( !XnComponentInterface::MakeInterfaceL( imageIntr, Target() ) ) - { - User::Leave( KErrNotSupported ); - } + MXnImageInterface* image( NULL ); + XnComponentInterface::MakeInterfaceL( image, Target() ); + + LeaveIfNull( image, KErrNotSupported ); + // Clears the bitmaps from component - imageIntr->SetContentBitmaps( NULL, NULL ); + image->SetContentBitmaps( NULL, NULL ); } else if ( type->Type() == XnTextInterface::MXnTextInterface::Type() ) // text element { // Get control interface - XnTextInterface::MXnTextInterface* textControl = NULL; - XnComponentInterface::MakeInterfaceL( textControl, Target() ); - LeaveIfNull( textControl, KErrNotSupported ); + XnTextInterface::MXnTextInterface* text( NULL ); + XnComponentInterface::MakeInterfaceL( text, Target() ); + + LeaveIfNull( text, KErrNotSupported ); // Clears the text from component - textControl->SetTextL( KNullDesC ); + text->SetTextL( KNullDesC ); } else if ( type->Type() == XnTextEditorInterface::MXnTextEditorInterface::Type() ) // texteditor element { // Get control interface - XnTextEditorInterface::MXnTextEditorInterface* editorControl = NULL; - XnComponentInterface::MakeInterfaceL( editorControl, Target() ); - LeaveIfNull( editorControl, KErrNotSupported ); + XnTextEditorInterface::MXnTextEditorInterface* editor( NULL ); + XnComponentInterface::MakeInterfaceL( editor, Target() ); + + LeaveIfNull( editor, KErrNotSupported ); // Clears the text from component - editorControl->SetTextL( KNullDesC ); + editor->SetTextL( KNullDesC ); } else { - CXnNodeAppIf* parent = Target().ParentL(); + CXnNodeAppIf* parent( Target().ParentL() ); LeaveIfNull( parent, KErrNotSupported ); - const TDesC8& type = LeaveIfNull( parent->Type(), KErrNotSupported )->Type(); + + const TDesC8& parentType( parent->Type()->Type() ); - if ( type == XnNewstickerInterface::MXnNewstickerInterface::Type() ) + if ( parentType == XnNewstickerInterface::MXnNewstickerInterface::Type() ) { - XnNewstickerInterface::MXnNewstickerInterface* newsticker = NULL; + XnNewstickerInterface::MXnNewstickerInterface* newsticker( NULL ); XnComponentInterface::MakeInterfaceL( newsticker, *parent ); - LeaveIfNull( newsticker, KErrGeneral ); - TInt titleIndexVal = -1; - CXnProperty* titleIndex = Target().GetPropertyL( XnPropertyNames::title::KTitleIndex ); - if ( titleIndex ) - { - TLex8 lex( titleIndex->StringValue() ); - TInt err = lex.Val( titleIndexVal ); - if ( err == KErrNone && titleIndexVal > -1 ) - { - newsticker->DeleteTitle( titleIndexVal ); - } - } + + LeaveIfNull( newsticker, KErrNotSupported ); + + CXnProperty* prop( Target().GetPropertyL( + XnPropertyNames::title::KTitleIndex ) ); + + LeaveIfNull( prop, KErrNotSupported ); + + TInt index( KErrNotFound ); + + TLex8 lex( prop->StringValue() ); + lex.Val( index ); + + newsticker->DeleteTitle( index ); } } + // Clear current content priority ClearContentPriorityL(); } + +// End of file diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/xmluicontroller/src/imagetransactionelement.cpp --- a/idlehomescreen/xmluicontroller/src/imagetransactionelement.cpp Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/xmluicontroller/src/imagetransactionelement.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -17,451 +17,119 @@ #include "xnbitmap.h" -#include "xnnewsticker.h" #include "xntype.h" -#include "xnmenu.h" -#include "xnmenuadapter.h" -#include "xnuiengineappif.h" -#include #include #include "imagetransactionelement.h" #include "xmluicontrollerpanic.h" #include "aixmluiutils.h" -#include "xnuiengineappif.h" using namespace AiXmlUiController; using namespace XnImageInterface; -using namespace ContentAccess; namespace AiXmlUiController - { - -TBool IsNodeVisible( CXnNodeAppIf& aNode ) - { - CXnProperty* propVisibility = aNode.GetPropertyL( XnPropertyNames::style::common::KVisibility );; - - if( propVisibility ) - { - const TDesC8& visibility = propVisibility->StringValue(); - - if( visibility == XnPropertyNames::style::common::visibility::KHidden ) - { - return EFalse; - } - } - - CXnProperty* propDisplay = aNode.GetPropertyL( XnPropertyNames::style::common::KDisplay ); - - if( propDisplay ) - { - const TDesC8& display = propDisplay->StringValue(); - - if( display == XnPropertyNames::style::common::display::KNone ) - { - return EFalse; - } - } - - CXnProperty* propDisabled = aNode.GetPropertyL( XnPropertyNames::common::KDisabled ); - - if( propDisabled ) - { - const TDesC8& disabled = propDisabled->StringValue(); - - if( disabled == XnPropertyNames::KTrue ) - { - return EFalse; - } - } - return ETrue; - } -/** - * Uses CImageDecoder to decode images asynchronously. - * When decoding is done, it tries to find target and set - * image into element. Destroys itself at end of RunL method. - */ -class CKamikazeImageDecoder: public CActive - { -public: - static CKamikazeImageDecoder* NewL( - RFile& aFile, const TDesC8& aNodeId, - const TDesC8& aNodeNs, TXnUiEngineAppIf& aUiEngine); - ~CKamikazeImageDecoder(); -public: - /** - * Start decoding and forget instance. - * Destroyes itself. - */ - void DecodeLD(); -private: - // from CActive - void DoCancel(); - void RunL(); -private: - void ConstructL(RFile& aFile, const TDesC8& aNodeId,const TDesC8& aNodeNs); - CKamikazeImageDecoder(TXnUiEngineAppIf& aUiEngine); - void SetImageL(); -private: - /** - * Image decoder. Own. - */ - CImageDecoder* iDecoder; - /** - * Target node id - */ - HBufC8* iNodeId; - /** - * Target node namespace - */ - HBufC8* iNodeNs; - /** - * Provides services to find target - */ - TXnUiEngineAppIf& iUiEngine; - /** - * Icon. Own. - */ - CGulIcon* iIcon; - }; - -CKamikazeImageDecoder* CKamikazeImageDecoder::NewL( - RFile& aFile, - const TDesC8& aNodeId, - const TDesC8& aNodeNs, - TXnUiEngineAppIf& aUiEngine) - { - CKamikazeImageDecoder* p = new (ELeave)CKamikazeImageDecoder(aUiEngine); - CleanupStack::PushL(p); - p->ConstructL(aFile,aNodeId,aNodeNs); - CleanupStack::Pop(p); - return p; - } - -CKamikazeImageDecoder::CKamikazeImageDecoder(TXnUiEngineAppIf& aUiEngine): - CActive(CActive::EPriorityStandard ), iUiEngine(aUiEngine) - { - CActiveScheduler::Add( this ); - } - -CKamikazeImageDecoder::~CKamikazeImageDecoder() - { - Cancel(); - delete iDecoder; - delete iNodeId; - delete iNodeNs; - delete iIcon; - } +{ -void CKamikazeImageDecoder::ConstructL( - RFile& aFile, - const TDesC8& aNodeId, - const TDesC8& aNodeNs) - { - // Create new decoder for file - iDecoder = CImageDecoder::FileNewL( aFile, EView ); - iNodeId = aNodeId.AllocL(); - iNodeNs = aNodeNs.AllocL(); - iIcon = CGulIcon::NewL(); - } - -void CKamikazeImageDecoder::DecodeLD() - { - TFrameInfo frameInfo = iDecoder->FrameInfo(0); - CFbsBitmap* bitmap = new( ELeave ) CFbsBitmap; - iIcon->SetBitmap( bitmap ); - - User::LeaveIfError( bitmap->Create( frameInfo.iOverallSizeInPixels, - frameInfo.iFrameDisplayMode ) ); - - CFbsBitmap* mask(0); - if ( frameInfo.iFlags & TFrameInfo::ETransparencyPossible ) - { - mask = new( ELeave ) CFbsBitmap; - iIcon->SetMask( mask ); - User::LeaveIfError( mask->Create( frameInfo.iOverallSizeInPixels, - ( ( frameInfo.iFlags & TFrameInfo::EAlphaChannel ) - ? EGray256 : EGray2 ) ) ); - } - - if(iIcon->Mask()) - { - iDecoder->Convert( &iStatus, *bitmap, *mask ); - } - else - { - iDecoder->Convert( &iStatus, *bitmap ); - } - SetActive(); - } - -void CKamikazeImageDecoder::DoCancel() - { - iDecoder->Cancel(); - } - -void CKamikazeImageDecoder::SetImageL() - { - - // Find target - CXnNodeAppIf* node = iUiEngine.FindNodeByIdL(*iNodeId,*iNodeNs); - if(!node) - { - return; - } - - const TDesC8& type = node->Type()->Type(); - - if ( type == XnImageInterface::MXnImageInterface::Type() ) - { - MXnImageInterface* imageIntr = NULL; - if ( !XnComponentInterface::MakeInterfaceL( imageIntr, *node ) ) - { - return; - } - // Set new bitmaps. Ownership is transferred to MXnImageInterface - iIcon->SetBitmapsOwnedExternally( ETrue ); - imageIntr->SetContentBitmaps( iIcon->Bitmap(), iIcon->Mask() ); - - } - // Menu softkey icons - else if ( ( ( type == KXnMenuItem || type == KXnMenu ) && - IsNodeVisible( *node ) ) || - type == XnPropertyNames::softkey::KNodeName ) - { - CXnNodeAppIf* menuBar = node->ParentL(); - - XnMenuInterface::MXnMenuInterface::TSoftKeyPosition softkeyPosition = - XnMenuInterface::MXnMenuInterface::ELeft; - - CXnProperty* property = - node->GetPropertyL( XnPropertyNames::softkey::KTypeAttribute ); - if ( property && property->StringValue() == XnPropertyNames::softkey::type::KRight ) - { - softkeyPosition = XnMenuInterface::MXnMenuInterface::ERight; - } - else if ( property && property->StringValue() == XnPropertyNames::softkey::type::KLeft ) - { - softkeyPosition = XnMenuInterface::MXnMenuInterface::ELeft; - } - else // Image can be published only to RSK or LSK - { - return; - } - - XnMenuInterface::MXnMenuInterface* menuIf = NULL; - - XnComponentInterface::MakeInterfaceL( menuIf, *menuBar ); - if ( menuIf ) - { - // Use black mask and preserver aspect ratio - - menuIf->SetSoftKeyImageL( iIcon->Bitmap(), - iIcon->Mask(), - softkeyPosition, - node, - ETrue, - ETrue ); - iIcon->SetBitmapsOwnedExternally( ETrue ); - } - if( menuBar ) - { - iUiEngine.RefreshMenuL(); - } - } - - } - -void CKamikazeImageDecoder::RunL() - { - CleanupStack::PushL(this); - if(iStatus == KErrNone) - { - SetImageL(); - iUiEngine.RenderUIL(); - } - CleanupStack::PopAndDestroy(this); - } - // ======== MEMBER FUNCTIONS ======== CImageTransactionElement::CImageTransactionElement( - AiUtility::CContentPriorityMap& aContentPriorityMap) + AiUtility::CContentPriorityMap& aContentPriorityMap) : CTransactionElement(aContentPriorityMap) { } CImageTransactionElement* CImageTransactionElement::NewL( - AiUtility::CContentPriorityMap& aContentPriorityMap) + AiUtility::CContentPriorityMap& aContentPriorityMap) { - CImageTransactionElement* self = new( ELeave ) CImageTransactionElement( - aContentPriorityMap ); + CImageTransactionElement* self = + new( ELeave ) CImageTransactionElement( aContentPriorityMap ); + return self; } CImageTransactionElement::~CImageTransactionElement() { - delete iNewIcon; - delete iImageDecoder; + delete iIcon; } void CImageTransactionElement::InitializeL( CXnNodeAppIf& aTarget, - CGulIcon* aIcon ) + CGulIcon* aIcon ) { - CheckTypeL( aTarget ); - LeaveIfNull( aIcon, KErrArgument ); + CheckTypeL( aTarget ); SetTarget( aTarget ); - iNewIcon = aIcon; + + iIcon = aIcon; + iFilename = KNullDesC(); } void CImageTransactionElement::InitializeL( CXnNodeAppIf& aTarget, - RFile& aFile ) - { - CheckTypeL( aTarget ); - - const TDesC8* nodeId = &KNullDesC8; + RFile& aFile ) + { + CheckTypeL( aTarget ); + SetTarget( aTarget ); + + iFilename = KNullDesC(); - CXnProperty* property = aTarget.GetPropertyL(XnPropertyNames::common::KId); - if(property) - { - nodeId = &property->StringValue(); - } - if ( iImageDecoder ) - { - delete iImageDecoder; - iImageDecoder = NULL; - } - iImageDecoder = CKamikazeImageDecoder::NewL( - aFile,*nodeId,aTarget.Namespace(),*aTarget.UiEngineL()); + aFile.FullName( iFilename ); - SetTarget( aTarget ); + delete iIcon; + iIcon = NULL; } - void CImageTransactionElement::UpdateDataL() - { - if ( iImageDecoder ) + { + const TDesC8& type( Target().Type()->Type() ); + + if ( type == XnImageInterface::MXnImageInterface::Type() ) { - iImageDecoder->DecodeLD(); - iImageDecoder = NULL; // self destroy - } - else - { - __ASSERT_DEBUG( iNewIcon, Panic( EBitmapNull ) ); - - const TDesC8& type = LeaveIfNull( Target().Type(), KErrNotSupported )->Type(); + MXnImageInterface* image( NULL ); + XnComponentInterface::MakeInterfaceL( image, Target() ); - if ( type == XnImageInterface::MXnImageInterface::Type() ) + LeaveIfNull( image, KErrNotSupported ); + + if ( iIcon ) { - MXnImageInterface* imageIntr = NULL; - if ( !XnComponentInterface::MakeInterfaceL( imageIntr, Target() ) ) - { - User::Leave( KErrNotSupported ); - } // Set new bitmaps. Ownership is transferred to MXnImageInterface - iNewIcon->SetBitmapsOwnedExternally( ETrue ); - imageIntr->SetContentBitmaps( iNewIcon->Bitmap(), iNewIcon->Mask() ); - } - // Menu softkey icons - else if ( ( ( type == KXnMenuItem || type == KXnMenu ) && - IsNodeVisible( Target() ) ) || - type == XnPropertyNames::softkey::KNodeName ) - { - CXnNodeAppIf* menuBar = Target().ParentL(); + iIcon->SetBitmapsOwnedExternally( ETrue ); - XnMenuInterface::MXnMenuInterface::TSoftKeyPosition softkeyPosition = - XnMenuInterface::MXnMenuInterface::ELeft; - - CXnProperty* property = - Target().GetPropertyL( XnPropertyNames::softkey::KTypeAttribute ); - if ( property && property->StringValue() == XnPropertyNames::softkey::type::KRight ) - { - softkeyPosition = XnMenuInterface::MXnMenuInterface::ERight; - } - else if ( property && property->StringValue() == XnPropertyNames::softkey::type::KLeft ) - { - softkeyPosition = XnMenuInterface::MXnMenuInterface::ELeft; - } - else // Image can be published only to RSK or LSK - { - delete iNewIcon; - iNewIcon = NULL; - User::Leave( KErrNotSupported ); - } - - XnMenuInterface::MXnMenuInterface* menuIf = NULL; - - XnComponentInterface::MakeInterfaceL( menuIf, *menuBar ); - if ( menuIf ) - { - // Use black mask and preserver aspect ratio - TRAPD(err, - menuIf->SetSoftKeyImageL( iNewIcon->Bitmap(), - iNewIcon->Mask(), - softkeyPosition, - &Target(), - ETrue, - ETrue ) - ); - // Menuinterface takes ownership - if ( err == KErrNone ) - { - iNewIcon->SetBitmapsOwnedExternally( ETrue ); - } - if( menuBar ) - { - menuBar->UiEngineL()->RefreshMenuL(); - } - } + image->SetContentBitmaps( iIcon->Bitmap(), iIcon->Mask() ); } - else + else if ( iFilename != KNullDesC() ) { - User::Leave( KErrNotSupported ); - } + image->SetContentBitmaps( iFilename ); + } } - delete iNewIcon; - iNewIcon = NULL; - UpdateContentPriorityL(); } void CImageTransactionElement::Reset() { - if ( iImageDecoder ) - { - delete iImageDecoder; - iImageDecoder = NULL; - } - CTransactionElement::Reset(); - delete iNewIcon; - iNewIcon = NULL; + iFilename = KNullDesC(); + + delete iIcon; + iIcon = NULL; } TBool CImageTransactionElement::IsSupported( CXnNodeAppIf& aTarget ) { // Get type info - CXnType* typeInfo = aTarget.Type(); + CXnType* typeInfo( aTarget.Type() ); if ( !typeInfo ) { return EFalse; } - const TDesC8& type = typeInfo->Type(); + const TDesC8& type( typeInfo->Type() ); // image element and newsticker supported - return ( type == XnImageInterface::MXnImageInterface::Type() || - type == XnNewstickerInterface::MXnNewstickerInterface::Type() || - type == XnMenuInterface::MXnMenuInterface::Type() || - type == KXnMenuItem || - type == KXnMenu || - type == XnPropertyNames::softkey::KNodeName ); + return ( type == XnImageInterface::MXnImageInterface::Type() ); } void CImageTransactionElement::CheckTypeL( CXnNodeAppIf& aTarget ) @@ -472,3 +140,5 @@ } } } // ns + +// End of file diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/xmluicontroller/src/newstickercallbackhandler.cpp --- a/idlehomescreen/xmluicontroller/src/newstickercallbackhandler.cpp Tue May 25 12:29:32 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,124 +0,0 @@ -/* -* Copyright (c) 2005-2007 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: Callback handler for newsticker component callbacks -* -*/ - - -#include "newstickercallbackhandler.h" -#include "aifweventhandler.h" -#include "aiconsts.h" -#include "aixmluiconstants.h" -#include "aistrcnv.h" - -using namespace AiXmlUiController; - -const TInt KRadix = 10; -const TText16 KPluginEventParameterSeparator = ','; -const TText16 KEventParameterTerminator = ')'; - -static TInt IndexLength( TInt aIndex ) - { - TInt length = 0; - - if ( aIndex < 0 ) - { - ++length; - } - - do - { - aIndex /= KRadix; - ++length; - } - while ( aIndex != 0 ); - - return length; - } - -// ======== MEMBER FUNCTIONS ======== - -CNewstickerCallbackHandler::CNewstickerCallbackHandler( MAiFwEventHandler& aFwEventHandler ) - : iFwEventHandler( aFwEventHandler ) - { - } - -CNewstickerCallbackHandler* CNewstickerCallbackHandler::NewLC( MAiFwEventHandler& aFwEventHandler ) - { - CNewstickerCallbackHandler* self = new( ELeave ) CNewstickerCallbackHandler( aFwEventHandler ); - CleanupStack::PushL( self ); - return self; - } - - -CNewstickerCallbackHandler::~CNewstickerCallbackHandler() - { - delete iEventBuffer; - } - - -void CNewstickerCallbackHandler::TitleScrolledL( const TDesC& aPublisherName, - const TDesC& aPublishingClass, - TInt aIndex ) - { - SendEventToNewstickerPluginL( AiUiDef::xml::event::KNewstickerTitleScrolled, - aPublisherName, - aPublishingClass, - aIndex); - } - -void CNewstickerCallbackHandler::TitleToScrollL( const TDesC& aPublisherName, - const TDesC& aPublishingClass, - TInt aIndex ) - { - SendEventToNewstickerPluginL( AiUiDef::xml::event::KNewstickerTitleToScroll, - aPublisherName, - aPublishingClass, - aIndex); - } - - -void CNewstickerCallbackHandler::SendEventToNewstickerPluginL( const TDesC& aEvent, - const TDesC& aPublisherName, - const TDesC& aPublishingClass, - TInt aIndex) - { - // Calculate event buffer length - TInt length = aPublisherName.Length() - + KPluginEventSeparatorLength - + aEvent.Length() - + KEventParameterSeparatorLength - + aPublishingClass.Length() - + KEventParameterSeparatorLength - + IndexLength( aIndex ) - + KEventParameterSeparatorLength; - - // Allocate event buffer - TPtr event = AiUtility::EnsureBufMaxLengthL( iEventBuffer, length ); - - // Create event string - event.Zero(); - event.Append( aPublisherName ); - event.Append( KPluginEventSeparator ); - event.Append( aEvent ); - event.Append( KEventParameterSeparator ); - event.Append( aPublishingClass ); - event.Append( KPluginEventParameterSeparator ); - event.AppendNum( aIndex ); - event.Append( KEventParameterTerminator ); - - // Send event to plugin - // TODO: fix namespace - iFwEventHandler.HandlePluginEvent( event ); - } diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/xmluicontroller/src/pmodtiterator.cpp --- a/idlehomescreen/xmluicontroller/src/pmodtiterator.cpp Tue May 25 12:29:32 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,205 +0,0 @@ -/* -* Copyright (c) 2006-2007 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: DT iterator. -* -*/ - - - -// INCLUDE FILES -//#include "xndomlist.h" -#include "xnnodeappif.h" - -#include "pmodtiterator.h" - -// ============================ LOCAL FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// Finds next sibling. -// Returns NULL if there is no siblings left or there is no parent i.e this is a -// root node -// Returns: CXnDomNode* Pointer to the node or NULL -// -// ----------------------------------------------------------------------------- -// - -static CXnNodeAppIf* NextSiblingL( CXnNodeAppIf& aNode ) - { - CXnNodeAppIf* left( NULL ); - CXnNodeAppIf* parent( NULL ); - TRAP_IGNORE( parent = aNode.ParentL() ); - if ( parent ) - { - RPointerArray nodeList; - TRAP_IGNORE( nodeList = parent->ChildrenL() ); - CleanupClosePushL( nodeList ); - TInt currentIndex( nodeList.Find( &aNode ) ); - TInt nextIndex( ++currentIndex ); - TInt length( nodeList.Count() ); - if ( nextIndex < length ) - { - left = nodeList[ nextIndex ]; - } - CleanupStack::PopAndDestroy( &nodeList ); - } - return left; - } - - -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// C++ default constructor can NOT contain any code, that -// might leave. -// ----------------------------------------------------------------------------- -// -CPmODTIterator::CPmODTIterator( CXnNodeAppIf& aRootNode ): - iFirst(&aRootNode), iCurrent(&aRootNode) - { - } - -// ----------------------------------------------------------------------------- -// ConstructL -// ----------------------------------------------------------------------------- -// -void CPmODTIterator::ConstructL() - { - } - -// ----------------------------------------------------------------------------- -// NewL -// ----------------------------------------------------------------------------- -// -CPmODTIterator* CPmODTIterator::NewL( CXnNodeAppIf& aRootNode ) - { - CPmODTIterator* self = new( ELeave ) CPmODTIterator( aRootNode ); - - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - - return self; - } - -// ----------------------------------------------------------------------------- -// Destructor -// ----------------------------------------------------------------------------- -// -CPmODTIterator::~CPmODTIterator() - { - iDepthLevel.Close(); - } - -// ----------------------------------------------------------------------------- -// First node -// ----------------------------------------------------------------------------- -// -CXnNodeAppIf* CPmODTIterator::First() - { - return iFirst; - } - -// ----------------------------------------------------------------------------- -// Next node -// ----------------------------------------------------------------------------- -// -CXnNodeAppIf* CPmODTIterator::NextL() - { - CXnNodeAppIf* firstChild( NULL ); - - //Initialise iCurrent if the whole tree has been walked through - if (!iCurrent) - { - iCurrent = iFirst; - } - RPointerArray children = iCurrent->ChildrenL(); - if( children.Count() > 0 ) - { - firstChild = children[0]; - } - children.Close(); - - // Current node has childs left - if (firstChild) - { - //Keep count of depth level - PushL( *iCurrent ); - iCurrent = firstChild; - } - else //If current node has siblings left - { - SkipBranchL(); - } - return iCurrent; - } - -// ----------------------------------------------------------------------------- -// SkipBranch -// ----------------------------------------------------------------------------- -// -CXnNodeAppIf* CPmODTIterator::SkipBranchL() - { - CXnNodeAppIf* sibling = NextSiblingL(*iCurrent); - if(sibling) - { - iCurrent = sibling; - } - else //Current node don't have any childs or siblings left - { - // Reverse the tree by moving up in hierarchy - // Move up one level in hierarchy and check if siblings exists or we are in a - // root level - TBool stop( EFalse ); - while( !stop && iDepthLevel.Count() ) - { - iCurrent = Pop(); //Reach the previous level - sibling = NextSiblingL( *iCurrent ); //Check if siblings exist - if ( sibling && iDepthLevel.Count() ) - { - iCurrent = sibling; - stop = ETrue; - } - else //We didn't find any siblings - { - iCurrent = NULL; - } - } - } - return iCurrent; - } - -// ----------------------------------------------------------------------------- -// Push node into stack. -// ----------------------------------------------------------------------------- -// -void CPmODTIterator::PushL( CXnNodeAppIf& aNode ) - { - iDepthLevel.AppendL( &aNode ); - } - -// ----------------------------------------------------------------------------- -// Pop node from stack. -// ----------------------------------------------------------------------------- -// -CXnNodeAppIf* CPmODTIterator::Pop() - { - CXnNodeAppIf* pop = NULL; - TInt count( iDepthLevel.Count() ); - if ( count ) - { - pop = iDepthLevel[ count-1 ]; - iDepthLevel.Remove( count-1 ); - } - return pop; - } diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/xmluicontroller/src/psobserver.cpp --- a/idlehomescreen/xmluicontroller/src/psobserver.cpp Tue May 25 12:29:32 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,86 +0,0 @@ -/* -* Copyright (c) 2005-2008 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: Observer for changes in Publish & Subscribe keys -* -*/ - - -#include "psobserver.h" -#include "mpscallback.h" - -// ============================ MEMBER FUNCTIONS =============================== - -using namespace AiXmlUiController; - -CPSObserver::CPSObserver( MPSCallback& aCallback, TUid aCategory, TInt aKey ) : - CActive( CActive::EPriorityStandard ), - iCallback( aCallback ), - iCategory( aCategory ), - iKey( aKey ) - { - CActiveScheduler::Add( this ); - } - -CPSObserver* CPSObserver::NewL( MPSCallback& aCallback, TUid aCategory, TInt aKey ) - { - CPSObserver* self = new( ELeave ) CPSObserver( aCallback, aCategory, aKey ); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - return self; - } - -CPSObserver::~CPSObserver() - { - Cancel(); - } - -void CPSObserver::ConstructL() - { - // subscribe for changes - User::LeaveIfError( iProperty.Attach( iCategory, iKey ) ); - iProperty.Subscribe( iStatus ); - SetActive(); - } - -void CPSObserver::RunL() - { - iProperty.Subscribe( iStatus ); - SetActive(); - - TInt value; - if( iProperty.Get( iCategory, iKey, value ) != KErrNotFound ) - { - iCallback.ValueUpdatedL( iKey, value ); - } - } - -TInt CPSObserver::RunError() - { - Cancel(); - return KErrNone; - } - -void CPSObserver::DoCancel() - { - iProperty.Close(); - } - -TInt CPSObserver::GetValue( TInt &aValue ) const - { - return iProperty.Get( iCategory, iKey, aValue ); - } - - -// End of File diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/xmluicontroller/src/transactionfactoryimpl.cpp --- a/idlehomescreen/xmluicontroller/src/transactionfactoryimpl.cpp Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/xmluicontroller/src/transactionfactoryimpl.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -152,6 +152,31 @@ } MTransactionElement* + CTransactionFactoryImpl::CreateDataBufferTransactionElementL( + CXnNodeAppIf& aTarget, + const TDesC8& aData, + TInt aPriority, + const TDesC& aCid, + TInt aIndex ) + { + // Instantiate element + CDataBufferTransactionElement* element = NewInstanceL< CDataBufferTransactionElement >(); + CleanupStack::PushL( element ); + + // Initialize + element->InitializeL( aTarget, aData, aCid, aIndex ); + CleanupStack::Pop( element ); + + // Reserve + iReservedElements.AddLast( *element ); + + // Set content priority + element->SetContentPriority( aPriority ); + + return element; + } + +MTransactionElement* CTransactionFactoryImpl::CreateEmptyContentTransactionElementL( CXnNodeAppIf& aTarget, TInt aIndex) diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/xmluicontroller/src/xmluicontroller.cpp --- a/idlehomescreen/xmluicontroller/src/xmluicontroller.cpp Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/xmluicontroller/src/xmluicontroller.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -52,19 +52,67 @@ #include "aiconsts.h" #include "contentrenderer.h" #include "xmluicontrollerpanic.h" -#include "pmodtiterator.h" #include "contentpublisher.h" #include "xnplugindefs.h" #include "ainativeuiplugins.h" // Constants const TInt KOneSecondInMicroS = 1000*1000; -_LIT8( KData, "data" ); +// Macros +#define IS_KNOWN_CONTENT_MODEL_ELEMENT( e ) \ + ( e == AiUiDef::xml::element::KImage || \ + e == AiUiDef::xml::element::KText || \ + e == AiUiDef::xml::element::KAnimation || \ + e == AiUiDef::xml::element::KTextEditor || \ + e == AiUiDef::xml::element::KTitle || \ + e == AiUiDef::xml::element::KData ) + using namespace AiXmlUiController; // ======== LOCAL FUNCTIONS ======== // ---------------------------------------------------------------------------- +// BuildModelL() +// ---------------------------------------------------------------------------- +// +static void BuildModelL( CXnNodeAppIf* aParent, const TDesC8& aKey, + const TDesC8& aNs, RPointerArray< CXnNodeAppIf >& aModel ) + { + if ( !aParent || aParent->Namespace() != aNs ) + { + // No parent or traversed out from the namespace + return; + } + + if ( aParent->Type()->Type() == XnPropertyNames::action::KProperty ) + { + CXnProperty* prop( + aParent->GetPropertyL( XnPropertyNames::common::KClass ) ); + + if ( prop ) + { + const TDesC8& value( prop->StringValue() ); + + if ( value.Find( aKey ) != KErrNotFound ) + { + aModel.AppendL( aParent ); + } + } + } + + RPointerArray< CXnNodeAppIf > children( aParent->ChildrenL() ); + CleanupClosePushL( children ); + + for ( TInt i = 0; i < children.Count(); i++ ) + { + // Recurse children + BuildModelL( children[i], aKey, aNs, aModel ); + } + + CleanupStack::PopAndDestroy( &children ); + } + +// ---------------------------------------------------------------------------- // ResolveEventParameters() // ---------------------------------------------------------------------------- // @@ -403,7 +451,6 @@ // CXmlUiController::GetContentModelL() // ---------------------------------------------------------------------------- // -// ContentModelL() void CXmlUiController::GetContentModelL( const THsPublisherInfo& aPublisherInfo, RAiSettingsItemArray& aSettings ) { @@ -413,136 +460,101 @@ return; } - // Find the node for the publisher - // TODO Does not work if widget is in view + // Find the node for the publisher RPointerArray list( UiEngineL()->FindContentSourceNodesL( aPublisherInfo.Namespace() ) ); CleanupClosePushL( list ); - CXnNodeAppIf* publisherNode( NULL ); + CXnNodeAppIf* publisher( NULL ); if ( list.Count() > 0 ) { - publisherNode = list[0]; + publisher = list[0]; } CleanupStack::PopAndDestroy( &list ); - if( !publisherNode ) + if( !publisher ) { return; } - // Find ui plugin node for the data plugin - CXnNodeAppIf* parentNode( publisherNode->ParentL() ); + // Find plugin node for the element + CXnNodeAppIf* parent( publisher->ParentL() ); - // parent must be correct type - if( parentNode->InternalDomNodeType() == _L8("widget") ) + if ( parent && parent->InternalDomNodeType() == XnPropertyNames::KWidget ) { - // Get plugin configurations - GetConfigurationsL( *parentNode, aSettings, AiUiDef::xml::element::K16Plugin()); - CPmODTIterator* iter = CPmODTIterator::NewL( *parentNode ); - CleanupStack::PushL( iter ); - CXnNodeAppIf* node = iter->First(); - while( node ) - { - const TDesC8& nodeType = node->Type()->Type(); - if( nodeType == XnPropertyNames::action::KActions) + // Get element configurations + GetConfigurationsL( + *parent, aSettings, AiUiDef::xml::element::K16Plugin() ); + + RPointerArray< CXnNodeAppIf > model; + CleanupClosePushL( model ); + + HBufC8* key = HBufC8::NewLC( aPublisherInfo.Name().Length() + 1 ); + + _LIT( KSlash, "/" ); + + key->Des().Copy( aPublisherInfo.Name() ); + key->Des().Append( KSlash ); + + BuildModelL( parent, *key, parent->Namespace(), model ); + + for ( TInt i = 0; i < model.Count(); i++ ) + { + CXnNodeAppIf* parent( model[i]->ParentL() ); + + if ( parent ) { - node = iter->SkipBranchL(); - } - // Get the content model and configuration for the supported elements - else if( nodeType == AiUiDef::xml::element::KImage || - nodeType == AiUiDef::xml::element::KText || - nodeType == AiUiDef::xml::element::KNewsTicker || - nodeType == AiUiDef::xml::element::KAnimation || - nodeType == AiUiDef::xml::element::KTextEditor || - nodeType == KData ) - { - // Is created in GetContenItem and used in GetConfigurationsL - HBufC* confOwner( NULL ); - // get content item for the element, confOwner is filled - GetContentItemL( *node, aSettings, confOwner ); - if( confOwner ) - { - CleanupStack::PushL( confOwner ); - // get configurations for the element - GetConfigurationsL( *node, aSettings, *confOwner ); - CleanupStack::PopAndDestroy( confOwner ); + const TDesC8& type( parent->Type()->Type() ); + + if ( IS_KNOWN_CONTENT_MODEL_ELEMENT( type ) ) + { + // Content model found for the element, create content item + MAiPluginSettings* settings( + AiUtility::CreatePluginSettingsL() ); + + CleanupDeletePushL( settings ); + + MAiPluginContentItem& item( + settings->AiPluginContentItem() ); + + // Type of the element is needed in content model + HBufC* type16( NULL ); + + type16 = AiUtility::CopyToBufferL( type16, type ); + + CleanupStack::PushL( type16 ); + + item.SetTypeL( *type16 ); + + HBufC* name( PropertyValueL( + *model[i], AiUiDef::xml::property::KClass ) ); + CleanupStack::PushL( name ); + + item.SetNameL( *name ); + + // Get content model configurations, + // i.e. element's siblings + GetConfigurationsL( *parent, aSettings, *name ); + + CleanupStack::PopAndDestroy( 2, type16 ); // name + + aSettings.AppendL( settings ); + CleanupStack::Pop( settings ); } - node = iter->SkipBranchL(); - } - else - { - node = iter->NextL(); - } + } } - CleanupStack::PopAndDestroy( iter ); - } - } - -// ---------------------------------------------------------------------------- -// CXmlUiController::GetContentItemL() -// ---------------------------------------------------------------------------- -// -// ContentItemL() -void CXmlUiController::GetContentItemL( CXnNodeAppIf& aNode, - RAiSettingsItemArray& aSettings, HBufC*& aItemName ) - { - // Find property node - RPointerArray childNodes( aNode.ChildrenL() ); - CleanupClosePushL( childNodes ); - - TInt count( childNodes.Count() ); - - for ( TInt i = 0; i < count; i++ ) - { - CXnNodeAppIf* node( childNodes[i] ); - if( node->Type()->Type() == XnPropertyNames::action::KProperty ) - { - HBufC* name = PropertyValueL( *node, AiUiDef::xml::property::KClass ); - CleanupStack::PushL( name ); - - if( name ) - { - // Content model found for the element, create content item - MAiPluginSettings* settings = AiUtility::CreatePluginSettingsL(); - CleanupDeletePushL( settings ); - - MAiPluginContentItem& item = settings->AiPluginContentItem(); - - // Type of the element is needed in content model - HBufC* type( NULL ); - type = AiUtility::CopyToBufferL( type, aNode.Type()->Type()); - CleanupStack::PushL( type ); - item.SetTypeL( *type ); - CleanupStack::PopAndDestroy( type ); - - item.SetNameL( *name ); - - aItemName = name; - aSettings.AppendL( settings ); - CleanupStack::Pop( settings ); - } - - // Ownership is given to aItemName - CleanupStack::Pop( name ); - - // First property element, which has class attribute is selected - break; - } - } - - CleanupStack::PopAndDestroy( &childNodes ); + CleanupStack::PopAndDestroy( 2, &model ); // key + } } // ---------------------------------------------------------------------------- // CXmlUiController::GetConfigurationsL() // ---------------------------------------------------------------------------- // -// ConfigurationItemsL() void CXmlUiController::GetConfigurationsL( CXnNodeAppIf& aNode, RAiSettingsItemArray& aSettings, const TDesC& aConfOwner ) { @@ -553,9 +565,9 @@ // Collect settings TInt count( nodes.Count() ); - for( TInt j = 0; j < count; j++ ) + for( TInt i = 0; i < count; i++ ) { - CXnNodeAppIf* node( nodes[j] ); + CXnNodeAppIf* node( nodes[i] ); if( node->Type()->Type() == AiUiDef::xml::element::KConfiguration ) { diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/xmluirendering/renderingplugins/xnbitmapfactory/group/xnbitmapfactory.mmp --- a/idlehomescreen/xmluirendering/renderingplugins/xnbitmapfactory/group/xnbitmapfactory.mmp Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/xmluirendering/renderingplugins/xnbitmapfactory/group/xnbitmapfactory.mmp Wed Jun 09 09:29:04 2010 +0300 @@ -29,7 +29,8 @@ SOURCEPATH ../src SOURCE xnbitmapfactory.cpp SOURCE xnbitmap.cpp -SOURCE xnbitmapadapter.cpp +SOURCE xnbitmapadapter.cpp +SOURCE xnimagedecoder.cpp USERINCLUDE ../inc USERINCLUDE ../../../inc @@ -41,7 +42,8 @@ LIBRARY xn3layoutengine.lib LIBRARY xn3utils.lib LIBRARY avkon.lib - +LIBRARY imageconversion.lib +LIBRARY fbscli.lib LANG SC START RESOURCE xn3bitmapfactory.rss diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/xmluirendering/renderingplugins/xnbitmapfactory/inc/xnbitmapadapter.h --- a/idlehomescreen/xmluirendering/renderingplugins/xnbitmapfactory/inc/xnbitmapadapter.h Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/xmluirendering/renderingplugins/xnbitmapfactory/inc/xnbitmapadapter.h Wed Jun 09 09:29:04 2010 +0300 @@ -26,6 +26,7 @@ // FORWARD DECLARATIONS class CXnNodePluginIf; +class CXnImageDecoder; // CLASS DECLARATION /** @@ -57,6 +58,13 @@ void SetContentBitmaps(CFbsBitmap* aBitmap, CFbsBitmap* aMask); /** + * Sets content bitmaps from file. + * @since S60 5.2 + * @param aFilename Bitmap filename. + */ + void SetContentBitmaps( TFileName& aFilename ); + + /** * Gets content bitmaps. Ownership not is transferred. * @since Series 60 3.1 * @param aBitmap Bitmap to draw @@ -73,18 +81,6 @@ void DoHandlePropertyChangeL(CXnProperty* aProperty = NULL); /** - * From CCoeControl Handles the resource change. - * @since Series 60 3.1 - * @param aType A type of the resource change - * @return void. - */ - void HandleScreenDeviceChangedL(); - - /** - * See CCoeControl documentation - */ - void HandlePointerEventL( const TPointerEvent& aPointerEvent ); - /** * From CCoeControl Handles the skin change * @since Series 60 3.2 * @return void. @@ -96,8 +92,7 @@ * Size change notification */ void SizeChanged(); - void Draw(const TRect& aRect) const; - + private: CXnBitmapAdapter(CXnNodePluginIf& aNode); void ConstructL(CXnNodePluginIf& aNode); @@ -106,15 +101,17 @@ private: // Data // UI node, not owned CXnNodePluginIf& iNode; + // Image decoder, owned + CXnImageDecoder* iDecoder; // Whether the bitmaps has been loaded or not. mutable TBool iAreBitmapsLoaded; // Whether the data API has been used or not. TBool iAreBitmapsSet; - // Path of the bitmap + // Path of the bitmap, owned HBufC* iPath; // The size of the current bitmap TSize iBitmapSize; - // The path of the fallback image + // The path of the fallback image, owned HBufC* iFallbackPath; // Whether fallback path has changed and bitmaps need to be reloaded TBool iFallbackPathChange; diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/xmluirendering/renderingplugins/xnbitmapfactory/inc/xnimagedecoder.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/xmluirendering/renderingplugins/xnbitmapfactory/inc/xnimagedecoder.h Wed Jun 09 09:29:04 2010 +0300 @@ -0,0 +1,123 @@ +/* +* Copyright (c) 2008 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: Image decoder +* +*/ + + +#ifndef _XNIMAGEDECODER_H +#define _XNIMAGEDECODER_H + +// System includes +#include + +// User includes +class CXnBitmapAdapter; +class CFbsBitmap; +class CImageDecoder; +class RFs; + +// Forward declarations + +/** + * Image decoder + * + * @ingroup group_xnbitmapfactory + * @lib xn3bitmapfactory.lib + * @since S60 5.2 + */ +NONSHARABLE_CLASS( CXnImageDecoder ) : public CActive + { +public: + // Constructors and destructor + + /** + * Two-phased constructor. + */ + static CXnImageDecoder* NewL( CXnBitmapAdapter& aAdapter, RFs& aFs ); + + /** + * Two-phased constructor. Leaving on stack + */ + static CXnImageDecoder* NewLC( CXnBitmapAdapter& aAdapter, RFs& aFs ); + + /** + * Destructor + */ + ~CXnImageDecoder(); + +private: + // private constructors + + /** + * Leaving constructor + */ + void ConstructL(); + + /** + * C++ default constructor + */ + CXnImageDecoder( CXnBitmapAdapter& aAdapter, RFs& aFs ); + +private: + // from CActive + + /** + * @see CActive + */ + void RunL(); + + /** + * @see CActive + */ + TInt RunError( TInt aError ); + + /** + * @see CActive + */ + void DoCancel(); + +public: + // new functions + + /** + * Starts decode. + * + * @param aFile Image file + */ + void DecodeL( TFileName& aFilename ); + +private: + // new functions + + void Cleanup(); + +private: + // data + + /** Bitmapadapter, not owned */ + CXnBitmapAdapter& iAdapter; + /** File server session, not owned */ + RFs& iFs; + /** Image decoder, owned */ + CImageDecoder* iDecoder; + /** Bitmap, owned during conversion */ + CFbsBitmap* iBitmap; + /** Mask, owned during conversion */ + CFbsBitmap* iMask; + }; + +#endif // _XNIMAGEDECODER_H + +// End of file diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/xmluirendering/renderingplugins/xnbitmapfactory/src/xnbitmap.cpp --- a/idlehomescreen/xmluirendering/renderingplugins/xnbitmapfactory/src/xnbitmap.cpp Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/xmluirendering/renderingplugins/xnbitmapfactory/src/xnbitmap.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -77,6 +77,15 @@ } // ----------------------------------------------------------------------------- +// CXnBitmap::SetContentBitmaps +// ----------------------------------------------------------------------------- +// +void CXnBitmap::SetContentBitmaps( TFileName& aFilename ) + { + (static_cast(ControlAdapter()))->SetContentBitmaps(aFilename); + } + +// ----------------------------------------------------------------------------- // CXnBitmap::ContentBitmaps // ----------------------------------------------------------------------------- // diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/xmluirendering/renderingplugins/xnbitmapfactory/src/xnbitmapadapter.cpp --- a/idlehomescreen/xmluirendering/renderingplugins/xnbitmapfactory/src/xnbitmapadapter.cpp Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/xmluirendering/renderingplugins/xnbitmapfactory/src/xnbitmapadapter.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -20,7 +20,7 @@ #include "xndomproperty.h" #include "xnproperty.h" #include "xncontroladapter.h" - +#include "xnimagedecoder.h" #include "xnbitmapadapter.h" _LIT(KSkin, "skin("); @@ -55,6 +55,8 @@ iAreBitmapsLoaded = EFalse; iFallbackPathChange = ETrue; + + iDecoder = CXnImageDecoder::NewL( *this, iCoeEnv->FsSession() ); } // ----------------------------------------------------------------------------- @@ -73,6 +75,7 @@ // CXnBitmapAdapter::~CXnBitmapAdapter() { + delete iDecoder; delete iPath; delete iFallbackPath; } @@ -82,7 +85,9 @@ // ----------------------------------------------------------------------------- // void CXnBitmapAdapter::SetContentBitmaps(CFbsBitmap* aBitmap, CFbsBitmap* aMask) - { + { + iDecoder->Cancel(); + CXnControlAdapter::SetContentBitmaps( aBitmap, aMask ); iAreBitmapsSet = ETrue; @@ -91,6 +96,20 @@ } // ----------------------------------------------------------------------------- +// CXnBitmapAdapter::SetContentBitmaps +// ----------------------------------------------------------------------------- +// +void CXnBitmapAdapter::SetContentBitmaps( TFileName& aFilename ) + { + TRAPD( err, iDecoder->DecodeL( aFilename ) ); + + if ( err ) + { + SetContentBitmaps( NULL, NULL ); + } + } + +// ----------------------------------------------------------------------------- // CXnBitmapAdapter::ContentBitmaps // ----------------------------------------------------------------------------- // @@ -100,15 +119,6 @@ } // ----------------------------------------------------------------------------- -// CXnBitmapAdapter::Draw -// ----------------------------------------------------------------------------- -// -void CXnBitmapAdapter::Draw(const TRect& aRect) const - { - CXnControlAdapter::Draw( aRect ); - } - -// ----------------------------------------------------------------------------- // CXnBitmapAdapter::SizeChanged // ----------------------------------------------------------------------------- // @@ -190,25 +200,6 @@ } // ----------------------------------------------------------------------------- -// CXnTextAdapter::HandleResourceChange -// ----------------------------------------------------------------------------- -// -void CXnBitmapAdapter::HandleScreenDeviceChangedL( ) - { - CXnControlAdapter::HandleScreenDeviceChangedL(); - } - -// ----------------------------------------------------------------------------- -// CXnBitmapAdapter::HandlePointerEventL -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CXnBitmapAdapter::HandlePointerEventL( const TPointerEvent& aPointerEvent ) - { - CXnControlAdapter::HandlePointerEventL( aPointerEvent ); - } - -// ----------------------------------------------------------------------------- // CXnBitmapAdapter::SkinChanged // ----------------------------------------------------------------------------- // diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/xmluirendering/renderingplugins/xnbitmapfactory/src/xnimagedecoder.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/xmluirendering/renderingplugins/xnbitmapfactory/src/xnimagedecoder.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -0,0 +1,206 @@ +/* +* Copyright (c) 2008 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: Image decoder +* +*/ + +// System includes +#include + +// User includes +#include "xncomponent.h" +#include "xnnodepluginif.h" +#include "xnuienginepluginif.h" +#include "xnbitmapadapter.h" +#include "xnimagedecoder.h" + +using namespace ContentAccess; + +// Constants + +// ============================ LOCAL FUNCTIONS ================================ +// ============================ MEMBER FUNCTIONS =============================== +// ----------------------------------------------------------------------------- +// CXnImageDecoder::NewL() +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +CXnImageDecoder* CXnImageDecoder::NewL( CXnBitmapAdapter& aAdapter, RFs& aFs ) + { + CXnImageDecoder* self = CXnImageDecoder::NewLC( aAdapter, aFs ); + CleanupStack::Pop( self ); + return self; + } + +// ----------------------------------------------------------------------------- +// CXnImageDecoder::NewLC() +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +CXnImageDecoder* CXnImageDecoder::NewLC( CXnBitmapAdapter& aAdapter, RFs& aFs ) + { + CXnImageDecoder* self = new ( ELeave ) CXnImageDecoder( aAdapter, aFs ); + CleanupStack::PushL( self ); + self->ConstructL(); + return self; + } + +// ----------------------------------------------------------------------------- +// CXnImageDecoder::~CXnImageDecoder() +// C++ default destructor. +// ----------------------------------------------------------------------------- +// +CXnImageDecoder::~CXnImageDecoder() + { + Cancel(); + + Cleanup(); + } + +// ----------------------------------------------------------------------------- +// CXnImageDecoder::CXnImageDecoder() +// C++ default constructor. +// ----------------------------------------------------------------------------- +// +CXnImageDecoder::CXnImageDecoder( CXnBitmapAdapter& aAdapter, RFs& aFs ) + : CActive( CActive::EPriorityHigh ), iAdapter( aAdapter ), iFs( aFs ) + { + CActiveScheduler::Add( this ); + } + +// ----------------------------------------------------------------------------- +// CXnImageDecoder::ConstructL() +// 2nd phase constructor. +// ----------------------------------------------------------------------------- +// +void CXnImageDecoder::ConstructL() + { + } + +// ----------------------------------------------------------------------------- +// CXnImageDecoder::RunL() +// +// ----------------------------------------------------------------------------- +// +void CXnImageDecoder::RunL() + { + // Takes ownership of iBitmap and iMask + iAdapter.SetContentBitmaps( iBitmap, iMask ); + + iBitmap = NULL; + iMask = NULL; + + delete iDecoder; + iDecoder = NULL; + + iAdapter.Component()->Node()->UiEngineL()->RenderUIL(); + } + +// ----------------------------------------------------------------------------- +// CXnImageDecoder::RunError() +// +// ----------------------------------------------------------------------------- +// +TInt CXnImageDecoder::RunError( TInt /*aError*/ ) + { + Cleanup(); + + // Set NULL bitmaps + TRAP_IGNORE( RunL() ); + + // Ignore + return KErrNone; + } + +// ----------------------------------------------------------------------------- +// CXnImageDecoder::DoCancel() +// +// ----------------------------------------------------------------------------- +// +void CXnImageDecoder::DoCancel() + { + Cleanup(); + } + +// ----------------------------------------------------------------------------- +// CXnImageDecoder::DecodeL() +// +// ----------------------------------------------------------------------------- +// +void CXnImageDecoder::DecodeL( TFileName& aFilename ) + { + Cancel(); + + TInt options( + CImageDecoder::EOptionAlwaysThread | + CImageDecoder::EPreferFastDecode ); + + iDecoder = CImageDecoder::FileNewL( iFs, aFilename, EView, + ( CImageDecoder::TOptions ) options ); + + TFrameInfo frameInfo( iDecoder->FrameInfo( 0 ) ); + + CFbsBitmap* bitmap = new ( ELeave ) CFbsBitmap; + CleanupStack::PushL( bitmap ); + + User::LeaveIfError( bitmap->Create( + frameInfo.iOverallSizeInPixels, frameInfo.iFrameDisplayMode ) ); + + if ( frameInfo.iFlags & TFrameInfo::ETransparencyPossible ) + { + CFbsBitmap* mask = new ( ELeave ) CFbsBitmap; + CleanupStack::PushL( mask ); + + User::LeaveIfError( mask->Create( frameInfo.iOverallSizeInPixels, + ( frameInfo.iFlags & TFrameInfo::EAlphaChannel ) ? EGray256 : EGray2 ) ); + + iDecoder->Convert( &iStatus, *bitmap, *mask ); + + CleanupStack::Pop( mask ); + iMask = mask; + } + else + { + iDecoder->Convert( &iStatus, *bitmap ); + } + + CleanupStack::Pop( bitmap ); + iBitmap = bitmap; + + SetActive(); + } + +// ----------------------------------------------------------------------------- +// CXnImageDecoder::Cleanup() +// +// ----------------------------------------------------------------------------- +// +void CXnImageDecoder::Cleanup() + { + if ( iDecoder ) + { + iDecoder->Cancel(); + } + + delete iDecoder; + iDecoder = NULL; + + delete iBitmap; + iBitmap = NULL; + + delete iMask; + iMask = NULL; + } + +// End of file diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/xmluirendering/renderingplugins/xnnewstickerfactory/inc/xnnewstickeradapter.h --- a/idlehomescreen/xmluirendering/renderingplugins/xnnewstickerfactory/inc/xnnewstickeradapter.h Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/xmluirendering/renderingplugins/xnnewstickerfactory/inc/xnnewstickeradapter.h Wed Jun 09 09:29:04 2010 +0300 @@ -29,13 +29,6 @@ class CAknMarqueeControl; // CONSTANTS -// The default values for the newsticker control -const TInt KXnNewstickerDelay = 1000000; // start scrolling after a delay of 1 second -const TInt KXnNewstickerInterval = 100000; // scroll 10 times in a second -const TInt KXnNewstickerScrollAmount = 6; // scroll 6 pixels at time -const TInt KXnNewstickerLoops = 1; // loop amount -const TInt KNoDelay = 0; // No delay to start the animation -const TInt KAnimationTime = 6000000; // The animation lasts 6 seconds // CLASS DECLARATION @@ -47,8 +40,7 @@ * @lib xnnewstickerfactory.dll * @since Series 60 3.2 */ -class CXnNewstickerAdapter : public CXnControlAdapter, - XnNewstickerInterface::MXnNewstickerCallbackInterface +class CXnNewstickerAdapter : public CXnControlAdapter { public: @@ -120,16 +112,14 @@ void ClearTitles(); /** - * Set callback interface. - * @param aCallback The callback interface pointer. + * Restarts current title */ - void SetCallbackInterfaceL( - XnNewstickerInterface::MXnNewstickerCallbackInterface* aCallback ); - + void Restart(); + /** * Start showing the titles. */ - void Start(); + void Start( TBool aSelectTitle = EFalse ); /** * Stop showing the titles. @@ -157,17 +147,13 @@ * @return ETrue if the method should be called again. */ static TInt PeriodicEventL( TAny * aPtr ); - - void MakeVisible( TBool aVisible ); - + public: // from base classes - // From MXnNewstickerCallbackInterface /** - * Called when the title has been shown and is now offscreen. - * @param aTitleIndex The title that has been completely shown. - */ - void TitleScrolled( TInt aTitleIndex ); + * See CCoeControl documentation + */ + void MakeVisible( TBool aVisible ); /** * See CCoeControl documentation @@ -208,20 +194,14 @@ * Reports newsticker event * */ - void ReportNewstickerEvent( const TDesC8& aEventName ); + void ReportNewstickerEvent( const TDesC8& aEventName, TInt aIndex ); /** * Draws text * Text drawing function is selected by scrolling behaviour */ - void DrawText( const TDesC& aText, const TRect& aRect ); + void DrawText( const TDesC& aText ); - /** - * ETrue if marquee control redrawing is needed. EFalse if truncated text is needed - */ - TBool Redraw() { return iRedraw; } - - private: CXnNewstickerAdapter( CXnControlAdapter* aParent, CXnNodePluginIf& aNode ); @@ -256,12 +236,12 @@ /** * FScrolls alternative text. Function is called by periodic timer */ - void DoScroll(); + void DoScroll( TBool aEndOfLoop ); /** * Draws text directly to screen if scrollins is not needed */ - void DrawStaticText( CWindowGc& aGc, const TDesC& aText ) const; + void DrawStaticText( CWindowGc& aGc, const TDesC& aText, TBool aTruncate = ETrue ) const; /** * Draws scrolling text to screen via marquee control @@ -277,26 +257,15 @@ CPeriodic* iPeriodicTimer; /** - * The callback interface which is used when a title has been shown. - * Not own. - */ - XnNewstickerInterface::MXnNewstickerCallbackInterface* iCallback; - - /** * The control handling the text title showing * Own. */ CXnNewstickerControl* iControl; /** - * The delay before first event + * Alternate delay, i.e. display time */ - TInt iAlternateDelay; - - /** - * The alternate interval between ticks. - */ - TInt iAlternateInterval; + TInt iAlternateDelay; /** * UI node @@ -360,19 +329,11 @@ * Current strikethrough behaviour */ TFontStrikethrough iStrikethrough; - - /** - * is scroll looping activated - */ - TBool iScrollLooping; - + /** * is marquee control redraw needed */ TBool iRedraw; - - - }; #endif // XNNEWSTICKERADAPTER_H diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/xmluirendering/renderingplugins/xnnewstickerfactory/inc/xnnewstickercontrol.h --- a/idlehomescreen/xmluirendering/renderingplugins/xnnewstickerfactory/inc/xnnewstickercontrol.h Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/xmluirendering/renderingplugins/xnnewstickerfactory/inc/xnnewstickercontrol.h Wed Jun 09 09:29:04 2010 +0300 @@ -95,7 +95,7 @@ * Returns last index from iTitleTexts * Which is not empty string */ - TInt LastIndexWithContent(); + TInt LastIndexWithContent() const; /** * Delete all titles. @@ -116,14 +116,33 @@ /** * Selects title to be shown */ - const TDesC& SelectTitle(); + const TDesC& CurrentTitle() const; + + /** + * Selects current title to display + */ + TInt SelectTitle(); /** - * Sets the current title to default ( last one ) or move to next one + * Selects next title to display + */ + TBool SelectNextTitle(); + + /** + * Checks is there any visible titles in array */ - TBool SetCurrentTitle( TBool aSetDefault = EFalse ); + TBool IsVisibleTitles() const; + + /** + * Sets scroll looping + */ + void SetScrollLooping( TBool aLooping ); - + /** + * Peeks next title, return loop status in aEndOfLoop. + */ + TPtrC PeekNextTitle( TBool& aEndOfLoop ) const; + private: CXnNewstickerControl(CXnNewstickerAdapter* aAdapter); @@ -139,11 +158,6 @@ * @return The next index that has content or -1 if nothing was found */ TInt GetNextTitleWithContent( TInt aStartSearch, TBool aBackwards = EFalse ) const; - - /** - * Checks is there any visible titles in array - */ - TBool IsVisibleTitles() const; private: // Data @@ -165,9 +179,10 @@ */ CXnNewstickerAdapter* iAdapter; - - - + /** + * is scroll looping activated + */ + TBool iScrollLooping; }; #endif // XNNEWSTICKERCONTROL_H diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/xmluirendering/renderingplugins/xnnewstickerfactory/src/xnnewsticker.cpp --- a/idlehomescreen/xmluirendering/renderingplugins/xnnewstickerfactory/src/xnnewsticker.cpp Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/xmluirendering/renderingplugins/xnnewstickerfactory/src/xnnewsticker.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -142,17 +142,6 @@ } // --------------------------------------------------------- -// CXnNewsticker::SetCallbackInterfaceL -// --------------------------------------------------------- -// -void CXnNewsticker::SetCallbackInterfaceL( - XnNewstickerInterface::MXnNewstickerCallbackInterface* aCallback) - { - (static_cast - (ControlAdapter()))->SetCallbackInterfaceL(aCallback); - } - -// --------------------------------------------------------- // CXnNewsticker::MakeInterfaceL // --------------------------------------------------------- // diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/xmluirendering/renderingplugins/xnnewstickerfactory/src/xnnewstickeradapter.cpp --- a/idlehomescreen/xmluirendering/renderingplugins/xnnewstickerfactory/src/xnnewstickeradapter.cpp Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/xmluirendering/renderingplugins/xnnewstickerfactory/src/xnnewstickeradapter.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -11,7 +11,7 @@ * * Contributors: * -* Description: Implementation for wrapper for a label +* Description: Marquee control * */ @@ -37,9 +37,12 @@ #include "xnnewstickercontrol.h" #include "xncomponentnodeimpl.h" - +// Constants const TInt KThousandCoef = 1000; const TInt KByteLength = 8; +const TInt KXnNewstickerDelay = 1000000; // start scrolling after a delay of 1 second +const TInt KXnNewstickerInterval = 100000; // scroll 10 times in a second +const TInt KXnNewstickerScrollAmount = 6; // scroll 6 pixels at time // ============================= LOCAL FUNCTIONS =============================== @@ -79,160 +82,132 @@ void CXnNewstickerAdapter::SetNewstickerPropertiesL() { // scroll amount - TInt scrollamount = GetIntPropertyL( iNode, - XnPropertyNames::newsticker::KXnScrollAmount ); // px + TInt scrollamount( GetIntPropertyL( iNode, + XnPropertyNames::newsticker::KXnScrollAmount ) ); // px - if( KErrNotFound == scrollamount ) + if ( scrollamount == KErrNotFound ) { scrollamount = KXnNewstickerScrollAmount; } CXnProperty* prop( iNode.GetPropertyL( - XnPropertyNames::newsticker::KScrollBehaviour ) ); + XnPropertyNames::newsticker::KScrollBehaviour ) ); + + // Default + iScrollBehaviour = EScroll; - if( prop ) + if ( prop ) { - if ( prop->StringValue() == - XnPropertyNames::newsticker::scroll_behaviour::KAlternate ) + const TDesC8& value( prop->StringValue() ); + + if ( value == XnPropertyNames::newsticker::scroll_behaviour::KAlternate ) { scrollamount = 0; iScrollBehaviour = EAlternate; } - else if ( prop->StringValue() == - XnPropertyNames::newsticker::scroll_behaviour::KScrollAlternate ) + else if ( value == XnPropertyNames::newsticker::scroll_behaviour::KScrollAlternate ) { iScrollBehaviour = EScrollAlternate; } - else - { - iScrollBehaviour = EScroll; - } } - else - { - iScrollBehaviour = EScroll; - } - + iMarqueeControl->SetSpeedInPixels( scrollamount ); - if( iScrollBehaviour == EScroll ) + if ( iScrollBehaviour == EScroll || iScrollBehaviour == EScrollAlternate ) { - // scroll delay - TInt scrolldelay = GetIntPropertyL( iNode, - XnPropertyNames::newsticker::KXnScrollDelay ); // ms + // scroll delay, i.e. fps + TInt scrolldelay( GetIntPropertyL( iNode, + XnPropertyNames::newsticker::KXnScrollDelay ) ); // ms - if( KErrNotFound == scrolldelay ) + if ( scrolldelay == KErrNotFound ) { scrolldelay = KXnNewstickerInterval; } else { - scrolldelay *= KThousandCoef; // change to microseconds + // change to seconds + scrolldelay *= KThousandCoef; } - iMarqueeControl->SetInterval( scrolldelay ); - iAlternateInterval = scrolldelay; - + iMarqueeControl->SetInterval( scrolldelay ); + // start delay - TInt startdelay = GetIntPropertyL( iNode, - XnPropertyNames::newsticker::KXnStartDelay ); // ms + TInt startdelay( GetIntPropertyL( iNode, + XnPropertyNames::newsticker::KXnStartDelay ) ); // ms - if( KErrNotFound == startdelay ) + if ( startdelay == KErrNotFound ) { startdelay = KXnNewstickerDelay; } else { - startdelay *= KThousandCoef; // change to microseconds + // change to seconds + startdelay *= KThousandCoef; } iMarqueeControl->SetDelay( startdelay ); iAlternateDelay = startdelay; - } - else if( iScrollBehaviour == EScrollAlternate ) - { - // scroll delay - TInt scrolldelay = GetIntPropertyL( iNode, - XnPropertyNames::newsticker::KXnScrollDelay ); // ms - if( KErrNotFound == scrolldelay ) + if ( iScrollBehaviour == EScrollAlternate ) { - scrolldelay = KXnNewstickerInterval; + TInt alternateTime( GetIntPropertyL( iNode, + XnPropertyNames::newsticker::KDisplayTime ) ); + + if( alternateTime == KErrNotFound ) + { + alternateTime = KXnNewstickerDelay; + } + else + { + // change to seconds + alternateTime *= KThousandCoef; + } + + iAlternateDelay = alternateTime; + } + } + else // TScrollBehaviour::EAlternate + { + TInt alternateTime( GetIntPropertyL( + iNode, XnPropertyNames::newsticker::KDisplayTime ) ); + + if ( alternateTime == KErrNotFound ) + { + alternateTime = KXnNewstickerDelay; } - else + else { - scrolldelay *= KThousandCoef; // change to microseconds - } - - iMarqueeControl->SetInterval( scrolldelay ); - iAlternateInterval = scrolldelay; - - TInt alternateTime( GetIntPropertyL( iNode, XnPropertyNames::newsticker::KDisplayTime ) ); - - if( alternateTime == KErrNotFound ) - { - alternateTime = 0; + // change to seconds + alternateTime *= KThousandCoef; } - alternateTime *= KThousandCoef; // change to ms - - iAlternateInterval = alternateTime; - - // start delay - TInt startdelay = GetIntPropertyL( iNode, - XnPropertyNames::newsticker::KXnStartDelay ); // ms - - if( KErrNotFound == startdelay ) - { - startdelay = 0; - } - else - { - startdelay *= KThousandCoef; // change to microseconds - } + iMarqueeControl->SetDelay( 0 ); + iMarqueeControl->SetInterval( 0 ); - iMarqueeControl->SetDelay( startdelay ); - iAlternateDelay = startdelay; - } - else // TScrollBehaviour::EAlternate - { - TInt alternateTime( GetIntPropertyL( iNode, XnPropertyNames::newsticker::KDisplayTime ) ); - - if( alternateTime == KErrNotFound ) - { - alternateTime = 0; - } - - alternateTime *= KThousandCoef; // change to ms - - iMarqueeControl->SetDelay( 0 ); - iMarqueeControl->SetInterval( alternateTime ); - - iAlternateDelay = 0; - iAlternateInterval = alternateTime; + iAlternateDelay = alternateTime; } // _s60-scroll-loop property. True by default. CXnProperty* loopProp( iNode.GetPropertyL( - XnPropertyNames::newsticker::KScrollLoop ) ); + XnPropertyNames::newsticker::KScrollLoop ) ); - if( loopProp && loopProp->StringValue() == XnPropertyNames::KFalse ) + TBool looping( ETrue ); + + if ( loopProp && loopProp->StringValue() == XnPropertyNames::KFalse ) { - iScrollLooping = EFalse; + looping = EFalse; } - else - { - iScrollLooping = ETrue; - } + + iControl->SetScrollLooping( looping ); CXnProperty* restartProperty( iNode.GetPropertyL( - XnPropertyNames::newsticker::KRestartAfterUpdate ) ); + XnPropertyNames::newsticker::KRestartAfterUpdate ) ); if ( restartProperty && restartProperty->StringValue() == XnPropertyNames::KTrue ) { iRestartAfterUpdate = ETrue; } - } + } // ============================ MEMBER FUNCTIONS =============================== @@ -269,7 +244,7 @@ iMarqueeControl->SetContainerWindowL( *aParent ); iMarqueeControl->ActivateL(); - iPeriodicTimer = CPeriodic::NewL( CActive::EPriorityStandard ); + iPeriodicTimer = CPeriodic::NewL( CActive::EPriorityLow ); SetTextPropertiesL(); SetNewstickerPropertiesL(); @@ -281,39 +256,15 @@ { CXnNodePluginIf* child( children[i] ); - CXnType* xnType = child->Type(); - + const TDesC8& type( child->Type()->Type() ); + // We only care for nodes - if ( xnType && xnType->Type() == XnPropertyNames::title::KTitle ) + if ( type == XnPropertyNames::title::KTitle ) { - // Append title, if one is given from the theme use that. - // If no content yet available create empty title so that - // indexing is always current - const TDesC8& pcData( child->GetPCData() ); - - HBufC* pcData16 = CnvUtfConverter::ConvertToUnicodeFromUtf8L( pcData ); - CleanupStack::PushL( pcData16 ); - - TPtr ptr( pcData16->Des() ); - - CXnUtils::CollapseWhiteSpace( iNode, ptr ); - - if( ptr.Length() > 0 ) - { - iControl->AppendTitleL( *pcData16 ); - } - else - { - iControl->AppendTitleL( KNullDesC ); - } - - CleanupStack::PopAndDestroy( pcData16 ); + iControl->AppendTitleL( KNullDesC ); } } - CleanupStack::PopAndDestroy( &children ); - - iControl->SetCurrentTitle( ETrue ); - + CleanupStack::PopAndDestroy( &children ); } // ----------------------------------------------------------------------------- @@ -324,14 +275,13 @@ CXnNewstickerAdapter::CXnNewstickerAdapter( CXnControlAdapter* /*aParent*/, CXnNodePluginIf& aNode ) : iNode( aNode ), - iPowerSaveMode( ETrue ), + iPowerSaveMode( EFalse ), iRestartAfterUpdate( EFalse ), iTextColor( KRgbBlack ), - iTextAlignment( ELayoutAlignLeft ), + iTextAlignment( CGraphicsContext::ELeft ), iTextBaseline( 0 ), iUnderlining( EUnderlineOff ), - iStrikethrough( EStrikethroughOff ), - iScrollLooping( ETrue ), + iStrikethrough( EStrikethroughOff ), iRedraw( ETrue ) { } @@ -343,11 +293,6 @@ // CXnNewstickerAdapter::~CXnNewstickerAdapter() { - if( iPeriodicTimer && iPeriodicTimer->IsActive() ) - { - iPeriodicTimer->Cancel(); - } - delete iPeriodicTimer; if( iFont && ( iReleaseFont == 1 ) ) @@ -358,7 +303,6 @@ delete iMarqueeControl; delete iControl; - } // ----------------------------------------------------------------------------- @@ -477,15 +421,13 @@ switch( alignment ) { case EHCenterVCenter: - iTextAlignment = ELayoutAlignCenter; - break; - + iTextAlignment = CGraphicsContext::ECenter; + break; case EHRightVCenter: - iTextAlignment = ELayoutAlignRight; - break; - + iTextAlignment = CGraphicsContext::ERight; + break; default: - iTextAlignment = ELayoutAlignLeft; + iTextAlignment = CGraphicsContext::ELeft; break; } } @@ -520,9 +462,8 @@ iNode.SetDirtyL(); if ( iRestartAfterUpdate ) - { - Stop(); - Start(); + { + Restart(); } } @@ -565,68 +506,63 @@ } // ----------------------------------------------------------------------------- -// CXnNewstickerAdapter::SetCallbackInterfaceL +// CXnNewstickerAdapter::Restart // ----------------------------------------------------------------------------- // -void CXnNewstickerAdapter::SetCallbackInterfaceL( - XnNewstickerInterface::MXnNewstickerCallbackInterface* aCallback ) +void CXnNewstickerAdapter::Restart() { - iCallback = aCallback; - } - -// ----------------------------------------------------------------------------- -// CXnNewstickerAdapter::TitleScrolled -// ----------------------------------------------------------------------------- -// -void CXnNewstickerAdapter::TitleScrolled( TInt aTitleIndex ) - { - if( iCallback ) - { - iCallback->TitleScrolled( aTitleIndex ); - } + Stop(); + Start( ETrue ); } // ----------------------------------------------------------------------------- -// CXnNewstickerAdapter::StartL +// CXnNewstickerAdapter::Start // ----------------------------------------------------------------------------- // -void CXnNewstickerAdapter::Start() +void CXnNewstickerAdapter::Start( TBool aSelectTitle ) { - if( IsVisible() && !iPowerSaveMode ) + if ( IsVisible() && !iPowerSaveMode && !iNode.Rect().IsEmpty() ) { - if( iControl->TitleCount() < 1 ) + if ( aSelectTitle ) { - // Nothing to show - return; + if ( iControl->SelectTitle() == KErrNotFound ) + { + return; + } } - switch( iScrollBehaviour ) + const TDesC& title( iControl->CurrentTitle() ); + + switch ( iScrollBehaviour ) { case EScroll: + case EScrollAlternate: { iMarqueeControl->EnableMarquee( ETrue ); iRedraw = ETrue; + + TInt textWidth( + iFont->TextWidthInPixels( title ) ); + + TInt rectWidth( iNode.Rect().Width() ); + + if ( textWidth < rectWidth ) + { + StartAlternateCounter(); + } } - break; - + break; case EAlternate: { iMarqueeControl->EnableMarquee( EFalse ); StartAlternateCounter(); } - break; - - case EScrollAlternate: - { - iMarqueeControl->EnableMarquee( ETrue ); - StartAlternateCounter(); - iRedraw = ETrue; - } - break; - + break; default: break; } + + DrawDeferred(); } } @@ -646,10 +582,7 @@ // void CXnNewstickerAdapter::StopAlternateCounter() { - if( iPeriodicTimer && iPeriodicTimer->IsActive() ) - { - iPeriodicTimer->Cancel(); - } + iPeriodicTimer->Cancel(); } // ----------------------------------------------------------------------------- @@ -668,15 +601,12 @@ // void CXnNewstickerAdapter::StartAlternateCounter() { - if( iPeriodicTimer && iPeriodicTimer->IsActive() ) - { - iPeriodicTimer->Cancel(); - } - + iPeriodicTimer->Cancel(); + iPeriodicTimer->Start( TTimeIntervalMicroSeconds32( iAlternateDelay ), - TTimeIntervalMicroSeconds32( iAlternateInterval ), - TCallBack( CXnNewstickerAdapter::PeriodicEventL, this ) ); + TTimeIntervalMicroSeconds32( 0 ), + TCallBack( PeriodicEventL, this ) ); } // ----------------------------------------------------------------------------- @@ -686,9 +616,17 @@ TInt CXnNewstickerAdapter::PeriodicEventL( TAny* aPtr ) { __PRINTS( "CXnNewstickerAdapter::PeriodicEventL, timer runs" ); + CXnNewstickerAdapter* self = static_cast< CXnNewstickerAdapter* >( aPtr ); - self->DoScroll(); + + self->iPeriodicTimer->Cancel(); + + TBool endOfLoop( self->iControl->SelectNextTitle() ); + + self->DoScroll( endOfLoop ); + self->DrawNow(); + return KErrNone; } @@ -700,9 +638,9 @@ { CCoeControl::MakeVisible( aVisible ); - if( aVisible ) + if ( aVisible ) { - Start(); + Restart(); } else { @@ -719,7 +657,7 @@ CXnControlAdapter::SizeChanged(); iMarqueeControl->SetExtent( iNode.Rect().iTl, iNode.Rect().Size() ); - iTextBaseline = iNode.Rect().Height() / 2 + iFont->AscentInPixels() / 2; + iTextBaseline = iNode.Rect().Height() / 2 + iFont->AscentInPixels() / 2; } // ----------------------------------------------------------------------------- @@ -737,14 +675,12 @@ // CCoeControl* CXnNewstickerAdapter::ComponentControl( TInt aIndex ) const { - switch ( aIndex ) + if ( aIndex == 0 ) { - case 0: - return iMarqueeControl; - - default: - return NULL; + return iMarqueeControl; } + + return NULL; } // ----------------------------------------------------------------------------- @@ -771,10 +707,11 @@ // CXnNewstickerAdapter::ReportNewstickerEventL // ----------------------------------------------------------------------------- // -void CXnNewstickerAdapter::ReportNewstickerEvent( const TDesC8& aEventName ) +void CXnNewstickerAdapter::ReportNewstickerEvent( const TDesC8& aEventName, + TInt aIndex ) { - TBuf8<KByteLength>index( KNullDesC8 ); - index.Num( CurrentTitleIndex() ); + TBuf8< KByteLength >index( KNullDesC8 ); + index.Num( aIndex ); TRAP_IGNORE( iNode.ReportTriggerEventL( aEventName, XnPropertyNames::action::trigger::name::KTitleIndex, index ); ) @@ -786,7 +723,14 @@ // ----------------------------------------------------------------------------- void CXnNewstickerAdapter::Draw( const TRect& aRect ) const { - const_cast<CXnNewstickerAdapter*>(this)->DrawText( iControl->SelectTitle(), aRect ); + CXnControlAdapter::Draw( aRect ); + + if ( iControl->CurrentTitleIndex() != KErrNotFound ) + { + const TDesC& title( iControl->CurrentTitle() ); + + const_cast< CXnNewstickerAdapter* >( this )->DrawText( title ); + } } // ----------------------------------------------------------------------------- @@ -796,6 +740,7 @@ void CXnNewstickerAdapter::DoEnterPowerSaveModeL( TModeEvent /*aEvent*/ ) { iPowerSaveMode = ETrue; + Stop(); } @@ -807,9 +752,9 @@ { iPowerSaveMode = EFalse; - if( IsVisible() ) + if ( IsVisible() ) { - Start(); + Restart(); } } @@ -817,61 +762,65 @@ // CXnNewstickerAdapter::DrawText // Text drawing function is selected by scrolling behaviour // ----------------------------------------------------------------------------- -void CXnNewstickerAdapter::DrawText( const TDesC& aText, const TRect& aRect ) +void CXnNewstickerAdapter::DrawText( const TDesC& aText ) { - CWindowGc& gc = SystemGc(); + CWindowGc& gc( SystemGc() ); - TRect rect = iNode.Rect(); - - CXnControlAdapter::Draw( aRect ); - + TRect rect( iNode.Rect() ); + gc.SetPenColor( iTextColor ); gc.UseFont( iFont ); gc.SetUnderlineStyle( iUnderlining ); gc.SetStrikethroughStyle( iStrikethrough ); - TInt textWidth = iFont->TextWidthInPixels( aText ); - TInt rectWidth = rect.Width(); + TInt textWidth( iFont->TextWidthInPixels( aText ) ); + TInt rectWidth( rect.Width() ); - switch( iScrollBehaviour ) + switch ( iScrollBehaviour ) { case EScroll: case EScrollAlternate: { - if( !iRedraw || textWidth < rectWidth ) + if ( !iRedraw || textWidth < rectWidth ) { iMarqueeControl->Stop(); - DrawStaticText( gc, aText ); + DrawStaticText( gc, aText ); } else { iMarqueeControl->Start(); - TBool isLast = DrawMarqueeText( gc, aText ); - - if( isLast ) + + iRedraw = !DrawMarqueeText( gc, aText ); + + if ( !iRedraw ) { - if( !iScrollLooping ) + // Marquee is in end + if ( iPeriodicTimer && !iPeriodicTimer->IsActive() ) { - iRedraw = EFalse; + iPeriodicTimer->Start( + TTimeIntervalMicroSeconds32( 0 ), + TTimeIntervalMicroSeconds32( 0 ), + TCallBack( PeriodicEventL, this ) ); } - iMarqueeControl->Reset(); - StartAlternateCounter(); - } - } + TBool endOfLoop; + + const TDesC& next( iControl->PeekNextTitle( endOfLoop ) ); + + DrawStaticText( gc, next, endOfLoop ); + } + } } - break; - + break; case EAlternate: { DrawStaticText( gc, aText ); } - break; - + break; default: break; } - } + } // ----------------------------------------------------------------------------- // CXnNewstickerAdapter::RedrawCallback @@ -880,31 +829,35 @@ // TInt CXnNewstickerAdapter::RedrawCallback( TAny* aPtr ) { - CXnNewstickerAdapter* self = static_cast<CXnNewstickerAdapter*>( aPtr ); - self->DrawNow(); - - return self->Redraw(); - + CXnNewstickerAdapter* self = static_cast< CXnNewstickerAdapter* >( aPtr ); + + if ( self->iRedraw ) + { + self->DrawNow(); + } + + return self->iRedraw; } // ----------------------------------------------------------------------------- // CXnNewstickerAdapter::DoScroll -// Scrolls alternative text. Function is called by periodic timer +// // ----------------------------------------------------------------------------- // -void CXnNewstickerAdapter::DoScroll() +void CXnNewstickerAdapter::DoScroll( TBool aEndOfLoop ) { - ReportNewstickerEvent( XnPropertyNames::action::trigger::name::KTitleScrolled ); + iMarqueeControl->Reset(); + + iRedraw = EFalse; - if( iControl->SetCurrentTitle() ) + if ( !aEndOfLoop ) + { + Start(); + } + else { - // stop alternate scrolling if current index is last - StopAlternateCounter(); + Stop(); } - - DrawNow(); - - ReportNewstickerEvent( XnPropertyNames::action::trigger::name::KTitleToScroll ); } // ----------------------------------------------------------------------------- @@ -912,17 +865,22 @@ // Draws text directly to screen when scrolling is not needed // ----------------------------------------------------------------------------- // -void CXnNewstickerAdapter::DrawStaticText( CWindowGc& aGc, const TDesC& aText ) const +void CXnNewstickerAdapter::DrawStaticText( CWindowGc& aGc, + const TDesC& aText, TBool aTruncate ) const { HBufC* text = HBufC::New( aText.Length() + KAknBidiExtraSpacePerLine ); - if( text ) + if ( text ) { - TRect rect = iNode.Rect(); + TRect rect = iNode.Rect(); TInt maxLength = rect.Width(); + + TChar clipChar( aTruncate ? KEllipsis : 0xFFFF ); + TPtr ptr = text->Des(); AknBidiTextUtils::ConvertToVisualAndClip( - aText, ptr, *iFont, maxLength, maxLength ); + aText, ptr, *iFont, maxLength, maxLength, + AknBidiTextUtils::EImplicit, clipChar ); aGc.DrawText( *text, rect, iTextBaseline, ( CGraphicsContext::TTextAlign )iTextAlignment ); @@ -936,9 +894,10 @@ // Draws scrolling text to screen via marquee control // ----------------------------------------------------------------------------- // -TBool CXnNewstickerAdapter::DrawMarqueeText( CWindowGc& aGc, const TDesC& aText ) const +TBool CXnNewstickerAdapter::DrawMarqueeText( CWindowGc& aGc, + const TDesC& aText ) const { - TRect rect = iNode.Rect(); + TRect rect( iNode.Rect() ); // returns true when all loops have been executed return iMarqueeControl->DrawText( aGc, rect, aText, iTextBaseline, diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/xmluirendering/renderingplugins/xnnewstickerfactory/src/xnnewstickercontrol.cpp --- a/idlehomescreen/xmluirendering/renderingplugins/xnnewstickerfactory/src/xnnewstickercontrol.cpp Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/xmluirendering/renderingplugins/xnnewstickerfactory/src/xnnewstickercontrol.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -17,13 +17,9 @@ // INCLUDE FILES -#include <AknUtils.h> -#include <AknsDrawUtils.h> -#include <AknBidiTextUtils.h> - #include "xnnewstickercontrol.h" #include "xnnewstickeradapter.h" - +#include "xnproperty.h" // CONSTANTS @@ -36,8 +32,9 @@ // ----------------------------------------------------------------------------- // CXnNewstickerControl::CXnNewstickerControl( CXnNewstickerAdapter* aAdapter ) : - iCurrentTitleIndex( -1 ), - iAdapter( aAdapter ) + iCurrentTitleIndex( KErrNotFound ), + iAdapter( aAdapter ), + iScrollLooping( ETrue ) { } @@ -76,6 +73,16 @@ } // ----------------------------------------------------------------------------- +// CXnNewstickerControl::SetScrollLooping() +// +// ----------------------------------------------------------------------------- +// +void CXnNewstickerControl::SetScrollLooping( TBool aLooping ) + { + iScrollLooping = aLooping; + } + +// ----------------------------------------------------------------------------- // CXnNewstickerControl::AppendTitleL // (other items were commented in a header). // ----------------------------------------------------------------------------- @@ -143,7 +150,7 @@ if(count == 1) { iAdapter->Stop(); - iCurrentTitleIndex = -1; + iCurrentTitleIndex = KErrNotFound; } UpdateTitleL( KNullDesC, aIndex ); @@ -177,15 +184,18 @@ // CXnNewstickerControl::LastIndexWithContent // ----------------------------------------------------------------------------- // -TInt CXnNewstickerControl::LastIndexWithContent() +TInt CXnNewstickerControl::LastIndexWithContent() const { for( TInt i(iTitleTexts.Count()-1); i>=0; --i ) { - if ( iTitleTexts[ i ]->Des().Length() > 0 ) + const TDesC& title( *iTitleTexts[i] ); + + if( title != KNullDesC() ) { return i; - } + } } + return KErrNotFound; } @@ -196,7 +206,7 @@ void CXnNewstickerControl::ClearTitles() { iAdapter->Stop(); - iCurrentTitleIndex = -1; + iCurrentTitleIndex = KErrNotFound; // Don't delete just clear the contents for( TInt i=0; i < iTitleTexts.Count(); i++ ) { @@ -214,26 +224,13 @@ } // ----------------------------------------------------------------------------- -// CXnNewstickerControl::SelectTitle +// CXnNewstickerControl::CurrentTitle // (other items were commented in a header). // ----------------------------------------------------------------------------- // -const TDesC& CXnNewstickerControl::SelectTitle() +const TDesC& CXnNewstickerControl::CurrentTitle() const { - if( IsVisibleTitles() ) - { - if( iCurrentTitleIndex < 0 || iCurrentTitleIndex >= iTitleTexts.Count() ) - { - // Get the last title - TInt index = - GetNextTitleWithContent( iTitleTexts.Count() - 1, ETrue ); - iCurrentTitleIndex = index; - } - - return Title( iCurrentTitleIndex ); - } - - return KNullDesC; + return Title( iCurrentTitleIndex ); } // ----------------------------------------------------------------------------- @@ -241,7 +238,7 @@ // ----------------------------------------------------------------------------- // TInt CXnNewstickerControl::GetNextTitleWithContent( TInt aStartSearch, - TBool aBackwards ) const + TBool aBackwards ) const { TInt dir = 1; if( aBackwards ) @@ -251,59 +248,157 @@ for( TInt i = aStartSearch; i < iTitleTexts.Count() && i >= 0; i += dir ) { - if( iTitleTexts[i]->Compare( KNullDesC ) != KErrNone ) + const TDesC& title( *iTitleTexts[i] ); + + if( title != KNullDesC() ) { return i; } } - return aStartSearch; + return KErrNotFound; + } + +// ----------------------------------------------------------------------------- +// CXnNewstickerControl::SelectTitle +// ----------------------------------------------------------------------------- +// +TInt CXnNewstickerControl::SelectTitle() + { + TInt index( GetNextTitleWithContent( 0 ) ); + + TInt currentIndex( iCurrentTitleIndex ); + + iCurrentTitleIndex = index; + + if ( currentIndex != iCurrentTitleIndex ) + { + if ( currentIndex != KErrNotFound ) + { + iAdapter->ReportNewstickerEvent( + XnPropertyNames::action::trigger::name::KTitleScrolled, + currentIndex ); + } + + if ( iCurrentTitleIndex != KErrNotFound ) + { + iAdapter->ReportNewstickerEvent( + XnPropertyNames::action::trigger::name::KTitleToScroll, + iCurrentTitleIndex ); + } + } + + return iCurrentTitleIndex; } // ----------------------------------------------------------------------------- -// CXnNewstickerControl::SetCurrentTitle +// CXnNewstickerControl::SelectNextTitle // ----------------------------------------------------------------------------- // -TBool CXnNewstickerControl::SetCurrentTitle( TBool aSetDefault ) +TBool CXnNewstickerControl::SelectNextTitle() + { + TBool ret( EFalse ); + TInt lastIndex( iTitleTexts.Count() - 1 ); + TInt lastIndexWithContent( LastIndexWithContent() ); + + TInt currentIndex( iCurrentTitleIndex ); + + if ( lastIndexWithContent == KErrNotFound ) + { + // Loop done + ret = ETrue; + } + else if ( !iScrollLooping && iCurrentTitleIndex == lastIndexWithContent ) + { + // Loop done + ret = ETrue; + } + else + { + if ( iCurrentTitleIndex + 1 > lastIndexWithContent ) + { + // At the end, get first + iCurrentTitleIndex = + GetNextTitleWithContent( 0 ); + } + else + { + // find next index with content + iCurrentTitleIndex = + GetNextTitleWithContent( iCurrentTitleIndex + 1 ); + } + } + + if ( ret ) + { + if ( iCurrentTitleIndex != KErrNotFound ) + { + iAdapter->ReportNewstickerEvent( + XnPropertyNames::action::trigger::name::KTitleScrolled, + iCurrentTitleIndex ); + } + } + else + { + if ( currentIndex != iCurrentTitleIndex && currentIndex != KErrNotFound ) + { + iAdapter->ReportNewstickerEvent( + XnPropertyNames::action::trigger::name::KTitleScrolled, + currentIndex ); + } + + if ( currentIndex != iCurrentTitleIndex && iCurrentTitleIndex != KErrNotFound ) + { + iAdapter->ReportNewstickerEvent( + XnPropertyNames::action::trigger::name::KTitleToScroll, + iCurrentTitleIndex ); + } + } + + return ret; + } + +// ----------------------------------------------------------------------------- +// CXnNewstickerControl::PeekNextTitle +// ----------------------------------------------------------------------------- +// +TPtrC CXnNewstickerControl::PeekNextTitle( TBool& aEndOfLoop ) const { TBool ret( EFalse ); TInt lastIndex( iTitleTexts.Count() - 1 ); TInt lastIndexWithContent = LastIndexWithContent(); + + TPtrC retval( KNullDesC() ); - if( aSetDefault ) - { - // set last index as default - iCurrentTitleIndex = GetNextTitleWithContent( lastIndex, ETrue ); + if ( lastIndexWithContent == KErrNotFound ) + { + // Loop done + ret = ETrue; } - else if( iCurrentTitleIndex >= lastIndex ) + else if ( !iScrollLooping && iCurrentTitleIndex == lastIndexWithContent ) { - // if iCurrentTitleIndex is in last position start from beginning - iCurrentTitleIndex = GetNextTitleWithContent( 0 ); - } + // Loop done + ret = ETrue; + + retval.Set( CurrentTitle() ); + } else { if ( iCurrentTitleIndex + 1 > lastIndexWithContent ) { - // if lastIndexWithContent is creater than next item - // it means all next items are empty strings - iCurrentTitleIndex = lastIndexWithContent; + // At the end, get first + retval.Set( Title( GetNextTitleWithContent( 0 ) ) ); } else { // find next index with content - iCurrentTitleIndex - = GetNextTitleWithContent( iCurrentTitleIndex + 1 ); - } + retval.Set( Title( GetNextTitleWithContent( iCurrentTitleIndex + 1 ) ) ); + } } - if( iCurrentTitleIndex == lastIndexWithContent || - lastIndexWithContent == KErrNotFound ) - { - // loop done stop periodic timer. - ret = ETrue; - } + aEndOfLoop = ret; - return ret; + return retval; } // ----------------------------------------------------------------------------- @@ -312,9 +407,11 @@ // TBool CXnNewstickerControl::IsVisibleTitles() const { - for( TInt i=0; i < iTitleTexts.Count(); i++ ) + for( TInt i = 0; i < iTitleTexts.Count(); i++ ) { - if( iTitleTexts[i]->Compare( KNullDesC ) != KErrNone ) + const TDesC& title( *iTitleTexts[i] ); + + if( title != KNullDesC() ) { return ETrue; } diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/xmluirendering/renderingplugins/xntexteditorfactory/inc/xntexteditoradapter.h --- a/idlehomescreen/xmluirendering/renderingplugins/xntexteditorfactory/inc/xntexteditoradapter.h Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/xmluirendering/renderingplugins/xntexteditorfactory/inc/xntexteditoradapter.h Wed Jun 09 09:29:04 2010 +0300 @@ -32,7 +32,7 @@ class CXnAppUiAdapter; // CLASS DECLARATION -class CXnTextEditorAdapter : public CXnControlAdapter +class CXnTextEditorAdapter : public CXnControlAdapter, public MCoeControlBackground { public: // constructor and destructor @@ -125,13 +125,18 @@ */ void HandleResourceChange( TInt aType ); -private: - // from MCoeControlObserver - /** - * See MCoeControlObserver documentation - */ - void HandleControlEventL( CCoeControl* aControl, TCoeEvent aEventType ); + * See CCoeAppUiBase. + */ + void HandleScreenDeviceChangedL(); + +private: // from base classes + + /** + * See MCoeControlBackground documentation + */ + void Draw( CWindowGc& aGc, const CCoeControl& aControl, + const TRect& aRect ) const; private: // private constrcutors diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/xmluirendering/renderingplugins/xntexteditorfactory/src/xntexteditoradapter.cpp --- a/idlehomescreen/xmluirendering/renderingplugins/xntexteditorfactory/src/xntexteditoradapter.cpp Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/xmluirendering/renderingplugins/xntexteditorfactory/src/xntexteditoradapter.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -57,12 +57,15 @@ ESplitInputEnabled = 1, ESplitInputOpen = 2, ESplitInputEditorInStack = 4, + EScreenDeviceChanged = 8 }; _LIT8( KCpsPublishing, "cpspublishing" ); _LIT8( KMaxLineAmount, "max-line-amount" ); _LIT8( KMaxCharAmount, "max-char-amount" ); _LIT8( KEnablePartialInput, "splitinputenabled" ); +_LIT8( KSplitScreenEnabledTrigger , "splitscreenenabled" ); +_LIT8( KSplitScreenDisabledTrigger, "splitscreendisabled" ); _LIT( KEnterChar, "\x2029" ); @@ -194,6 +197,7 @@ iEditor->SetContainerWindowL( *iParent ); iEditor->ConstructL( 0, maxChars, maxChars, iMaxLines ); + iEditor->SetBackground( this ); // Set allowed input modes iEditor->SetAknEditorAllowedInputModes( EAknEditorAllInputModes ); @@ -213,8 +217,6 @@ // Set numeric keymap iEditor->SetAknEditorNumericKeymap( EAknEditorPlainNumberModeKeymap ); - - iEditor->SetSuppressBackgroundDrawing( ETrue ); // Enable partial Screen CXnProperty* enablepartialinput( iNode.GetPropertyL( KEnablePartialInput ) ); @@ -402,9 +404,10 @@ // Draws the editor component // ----------------------------------------------------------------------------- // -void CXnTextEditorAdapter::Draw( const TRect& aRect ) const - { - CXnControlAdapter::Draw( aRect ); +void CXnTextEditorAdapter::Draw( const TRect& /*aRect*/ ) const + { + // Do nothing. + // Background is drawn through MCoeControlBackground of CEikEdwin. } // ----------------------------------------------------------------------------- @@ -421,6 +424,15 @@ { iUiEngine->EnablePartialTouchInput( iNode, ETrue ); SetFlag( iSplitInputFlags, ESplitInputOpen ); + if ( !IsFlagSet( iSplitInputFlags, EScreenDeviceChanged ) ) + { + TRAP_IGNORE( iNode.ReportTriggerEventL( KSplitScreenEnabledTrigger, + KNullDesC8, KNullDesC8) ); + } + else + { + ClearFlag( iSplitInputFlags, EScreenDeviceChanged ); + } } } @@ -431,41 +443,58 @@ iUiEngine->EnablePartialTouchInput( iNode, EFalse ); ClearFlag( iSplitInputFlags, ESplitInputOpen ); - // If editor is not focused anymore, remove if from stack - CXnNodePluginIf* focusedNode( NULL ); - TRAP_IGNORE( focusedNode = iUiEngine->FocusedNodeL() ); - if( focusedNode != &iNode && - IsFlagSet( iSplitInputFlags, ESplitInputEditorInStack ) ) + // Note that after orientation switch, split screen is first closed and + // then opened again. Therefore these must be discarded + if ( !IsFlagSet( iSplitInputFlags, EScreenDeviceChanged ) ) { - iAppui->RemoveFromStack( iEditor ); - iEditor->SetFocus( EFalse ); - ClearFlag( iSplitInputFlags, ESplitInputEditorInStack ); - - // Forward keys to phone again - RProperty::Set( KPSUidAiInformation, - KActiveIdleForwardNumericKeysToPhone, - EPSAiForwardNumericKeysToPhone ); + TRAP_IGNORE( iNode.ReportTriggerEventL( KSplitScreenDisabledTrigger, + KNullDesC8, KNullDesC8) ); + + // If editor is not focused anymore, remove if from stack + CXnNodePluginIf* focusedNode( NULL ); + TRAP_IGNORE( focusedNode = iUiEngine->FocusedNodeL() ); + if( focusedNode != &iNode && + IsFlagSet( iSplitInputFlags, ESplitInputEditorInStack ) ) + { + iAppui->RemoveFromStack( iEditor ); + iEditor->SetFocus( EFalse ); + ClearFlag( iSplitInputFlags, ESplitInputEditorInStack ); + + // Forward keys to phone again + RProperty::Set( KPSUidAiInformation, + KActiveIdleForwardNumericKeysToPhone, + EPSAiForwardNumericKeysToPhone ); + } } } } CCoeControl::HandleResourceChange( aType ); } - + // ----------------------------------------------------------------------------- -// CXnTextEditorAdapter::HandleControlEventL -// +// CXnTextEditorAdapter::HandleScreenDeviceChangedL +// // ----------------------------------------------------------------------------- -// -void CXnTextEditorAdapter::HandleControlEventL( CCoeControl* aControl, - TCoeEvent aEventType ) +// +void CXnTextEditorAdapter::HandleScreenDeviceChangedL() { - if ( aControl == iEditor ) + if( IsFlagSet( iSplitInputFlags, ESplitInputOpen ) ) { - // If background drawing is suppressed, then we need to call draw here - if ( aEventType == EEventStateChanged ) - { - DrawNow(); - } + SetFlag( iSplitInputFlags, EScreenDeviceChanged ); + } + } + +// ----------------------------------------------------------------------------- +// From MCoeControlBackground +// CXnTextEditorAdapter::Draw +// ----------------------------------------------------------------------------- +// +void CXnTextEditorAdapter::Draw( CWindowGc& aGc, const CCoeControl& aControl, + const TRect& aRect) const + { + if( &aControl == iEditor ) + { + CXnControlAdapter::Draw( aRect, aGc ); } } diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/xmluirendering/uiengine/inc/xnviewcontroladapter.h --- a/idlehomescreen/xmluirendering/uiengine/inc/xnviewcontroladapter.h Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/xmluirendering/uiengine/inc/xnviewcontroladapter.h Wed Jun 09 09:29:04 2010 +0300 @@ -117,6 +117,8 @@ CXnNodePluginIf& iNode; /** AppUi */ CXnAppUiAdapter& iAppUi; + /** HS foreground status*/ + MXnUiStateObserver::TForegroundStatus iForegroundStatus; }; #endif // _XNVIEWCONTROLADAPTER_H diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/xmluirendering/uiengine/src/xnbackgroundmanager.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xnbackgroundmanager.cpp Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/xmluirendering/uiengine/src/xnbackgroundmanager.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -44,6 +44,7 @@ #include <StringLoader.h> #include <aknnotewrappers.h> #include <bautils.h> +#include <UTF.h> #include <AknsUtils.h> #include <AknsDrawUtils.h> @@ -103,34 +104,32 @@ } // ----------------------------------------------------------------------------- -// CreateSkinBitmapL +// CreateBitmapFromColorL +// Creates a bitmap object with the given size and fill color // ----------------------------------------------------------------------------- // -CFbsBitmap* CreateSkinBitmapL( TAknsItemID aId, TRect aRect ) +static CFbsBitmap* CreateBitmapFromColorL( TSize aSize, TRgb aColor ) { CFbsBitmap* newBitmap = new ( ELeave ) CFbsBitmap; - User::LeaveIfError( newBitmap->Create( aRect.Size(), EColor16M ) ); + newBitmap->Create( aSize, EColor16M ); CleanupStack::PushL( newBitmap ); - + CFbsBitmapDevice* bitmapDev = CFbsBitmapDevice::NewL( newBitmap ); CleanupStack::PushL( bitmapDev ); - CBitmapContext* bc( NULL ); - User::LeaveIfError( bitmapDev->CreateBitmapContext( bc ) ); + CFbsBitGc* bc = NULL; + User::LeaveIfError( bitmapDev->CreateContext( bc ) ); CleanupStack::PushL( bc ); - CAknsBasicBackgroundControlContext* context = - CAknsBasicBackgroundControlContext::NewL( aId, aRect, EFalse ); - CleanupStack::PushL( context ); + bc->SetBrushColor( aColor ); + bc->Clear(); // area is filled with the brush color - AknsDrawUtils::Background( AknsUtils::SkinInstance(), - context, static_cast< CWindowGc& >( *bc ), aRect ); - - CleanupStack::PopAndDestroy( 3, bitmapDev ); + CleanupStack::PopAndDestroy( bc ); + CleanupStack::PopAndDestroy( bitmapDev ); CleanupStack::Pop( newBitmap ); return newBitmap; } - + // ============================ MEMBER FUNCTIONS =============================== // ----------------------------------------------------------------------------- @@ -329,7 +328,9 @@ void CXnBackgroundManager::HandleNotifyDisk( TInt /*aError*/, const TDiskEvent& aEvent ) { - if( aEvent.iType == MDiskNotifyHandlerCallback::EDiskStatusChanged ) + if( aEvent.iType == MDiskNotifyHandlerCallback::EDiskStatusChanged || + aEvent.iType == MDiskNotifyHandlerCallback::EDiskAdded || + aEvent.iType == MDiskNotifyHandlerCallback::EDiskRemoved ) { if( !( aEvent.iInfo.iDriveAtt & KDriveAttInternal ) ) { @@ -530,11 +531,18 @@ // Save wallpaper to HSPS if( iType == EPageSpecific ) { - TBuf8<KMaxFileName> wallpaper8; CXnViewData& viewData( iViewManager.ActiveViewData() ); - wallpaper8.Copy( viewData.WallpaperImagePath() ); - SetSettingPropertyL( viewData.PluginId(), KWallpaper, - KPath, wallpaper8 ); + + HBufC8* pUtf8String = CnvUtfConverter::ConvertFromUnicodeToUtf8L( viewData.WallpaperImagePath() ); + CleanupStack::PushL( pUtf8String ); + + SetSettingPropertyL( viewData.PluginId(), + KWallpaper, + KPath, + *pUtf8String ); + + CleanupStack::PopAndDestroy( pUtf8String ); + pUtf8String = NULL; } else { @@ -1156,16 +1164,23 @@ TRect spRect; AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EStatusPane, spRect ); - iSpBitmap = CreateSkinBitmapL( KAknsIIDQsnBgScreenIdle, spRect ); + MAknsSkinInstance* skinInstance( AknsUtils::SkinInstance() ); + + // Get Homescreen status area mask color (EAknsCIQsnOtherColorsCG23) + TRgb color; + User::LeaveIfError( AknsUtils::GetCachedColor( skinInstance, color, + KAknsIIDQsnOtherColors, EAknsCIQsnOtherColorsCG23 ) ); + + iSpBitmap = CreateBitmapFromColorL( spRect.Size(), color ); if ( Layout_Meta_Data::IsLandscapeOrientation() ) { - iSpMask = AknsUtils::CreateBitmapL( AknsUtils::SkinInstance(), + iSpMask = AknsUtils::CreateBitmapL( skinInstance, KAknsIIDQgnGrafBgLscTopMaskIcon ); } else { - iSpMask = AknsUtils::CreateBitmapL( AknsUtils::SkinInstance(), + iSpMask = AknsUtils::CreateBitmapL( skinInstance, KAknsIIDQgnGrafBgPrtTopMaskIcon ); } diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/xmluirendering/uiengine/src/xncomposer.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xncomposer.cpp Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/xmluirendering/uiengine/src/xncomposer.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -17,6 +17,7 @@ // System includes #include <s32file.h> +#include <UTF.h> // User includes #include "xncomposer.h" @@ -60,7 +61,9 @@ // -------------------------------------------------------------------------- // static HBufC* ItemValueL( CHspsConfiguration& aConfiguration, - const TDesC8& aItemId, const TDesC8& aName ) + const TDesC8& aItemId, + const TDesC8& aName, + const TBool aUseUtfConversion = EFalse ) { HBufC* ret = NULL; @@ -86,8 +89,16 @@ if( property->Name() == aName ) { - ret = HBufC::NewL( property->Value().Length() ); - ret->Des().Copy( property->Value() ); + if( aUseUtfConversion ) + { + ret = CnvUtfConverter::ConvertToUnicodeFromUtf8L( property->Value() ); + } + else + { + ret = HBufC::NewL( property->Value().Length() ); + ret->Des().Copy( property->Value() ); + } + break; } } @@ -639,7 +650,10 @@ // if page specific wallpaper feature is enabled if( bgManager.WallpaperType() == CXnBackgroundManager::EPageSpecific ) { - HBufC* bgImage = ItemValueL( *configuration, KWallpaper, KPath ); + HBufC* bgImage = ItemValueL( *configuration, + KWallpaper, + KPath, + ETrue ); if ( bgImage ) { CleanupStack::PushL( bgImage ); diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/xmluirendering/uiengine/src/xncontroladapterimpl.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xncontroladapterimpl.cpp Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/xmluirendering/uiengine/src/xncontroladapterimpl.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -74,6 +74,8 @@ const TInt KDragThreshold = 20; // pixels +const TReal KEps( 3e-16 ); // proximite EPS value for double FP numbers + // LOCAL FUNCTION PROTOTYPES static TRgb ConvertHslToRgb( TInt aHue, TInt aSaturation, TInt aLightness ); static void ConvertRgbToHsl( TRgb aRGB, TUint& aHue, TUint& aSaturation, @@ -3433,6 +3435,42 @@ } // ----------------------------------------------------------------------------- +// Calculates scaled bitmap size (rect) +// ----------------------------------------------------------------------------- +// +void CalculateScaledBitmapRect( TSize& aScaledSize, const TSize& aDrawSize, + const TSize& aImageSize ) + { + //no scaling as default + TReal scaleRatio( 1.0f ); + aScaledSize.SetSize( aDrawSize.iWidth, aDrawSize.iHeight ); + + //If any dimension is 0, then we do not bother to scale + if ( aDrawSize.iWidth == 0 || aDrawSize.iHeight == 0 ) + { + return; + } + + TReal xRatio = + ( ( TReal )aImageSize.iWidth / ( TReal )aDrawSize.iWidth ); + TReal yRatio = + ( ( TReal )aImageSize.iHeight / ( TReal )aDrawSize.iHeight ); + //Find out appropriate scaling factor + xRatio > yRatio ? ( scaleRatio = xRatio ) : ( scaleRatio = yRatio ); + + // ratio is too small (can be considered as division by zero) + if ( scaleRatio < KEps && scaleRatio > -KEps ) + { + return; + } + + // Otherwise scaling can be done + aScaledSize.iWidth = ( TInt )( ( TReal )aImageSize.iWidth / scaleRatio ); + aScaledSize.iHeight = + ( TInt )( ( TReal )aImageSize.iHeight / scaleRatio ); + } + +// ----------------------------------------------------------------------------- // BuildSwipeTriggerNodeLC // Build trigger node for swipe event // ----------------------------------------------------------------------------- @@ -4479,7 +4517,7 @@ return; } - aGc.SetClippingRect( aRect ); +// aGc.SetClippingRect( aRect ); #ifdef _XN_DEBUG_ CXnComponent* comp = Component(); CXnNode& node = comp->Node()->Node(); @@ -4495,7 +4533,7 @@ aGc.DrawRect( contentRect ); #endif TRAP_IGNORE( DoDrawL( aRect, aGc ) ); - aGc.CancelClippingRect(); +// aGc.CancelClippingRect(); } // ----------------------------------------------------------------------------- @@ -4969,14 +5007,28 @@ TRect bitmapRect = rect; bitmapRect.Move( -rect.iTl.iX, -rect.iTl.iY ); + // Finds appropriate method of scaling if ( AknIconUtils::IsMifIcon( iContentBitmap ) ) { if ( preserveAspectRatio ) { AknIconUtils::SetSize( - iContentBitmap, bitmapRect.Size(), EAspectRatioPreserved ); + iContentBitmap, bitmapRect.Size(), + EAspectRatioPreservedAndUnusedSpaceRemoved ); AknIconUtils::SetSize( - iContentMask, bitmapRect.Size(), EAspectRatioPreserved ); + iContentMask, bitmapRect.Size(), + EAspectRatioPreservedAndUnusedSpaceRemoved ); + // In some cases resizing might fail with previous settings + if ( iContentBitmap->SizeInPixels().iHeight == 0 || + iContentBitmap->SizeInPixels().iWidth == 0 ) + { + AknIconUtils::SetSize( + iContentBitmap, bitmapRect.Size(), + EAspectRatioPreserved ); + AknIconUtils::SetSize( + iContentMask, bitmapRect.Size(), + EAspectRatioPreserved ); + } } else { @@ -4985,6 +5037,20 @@ AknIconUtils::SetSize( iContentMask, bitmapRect.Size(), EAspectRatioNotPreserved ); } + // Set a new bitmap size + bitmapRect.SetSize( iContentBitmap->SizeInPixels() ); + } + else + { + if ( preserveAspectRatio ) + { + TSize newBitmapSize; + // scaling is done in bitmap drawing routine, here only the + // sacling rect is calculated + CalculateScaledBitmapRect( newBitmapSize, rect.Size(), + iContentBitmap->SizeInPixels() ); + bitmapRect.SetSize( newBitmapSize ); + } } // Calculate new point to start draw @@ -4993,6 +5059,8 @@ ( rect.Height() - bitmapRect.Height() ) / 2; rect.iTl.iX += ( rect.Width() - bitmapRect.Width() ) / 2; + // sets a new size to draw + rect.SetSize( bitmapRect.Size() ); if ( iContentBitmap && iContentMask ) { diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/xmluirendering/uiengine/src/xneditmode.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xneditmode.cpp Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/xmluirendering/uiengine/src/xneditmode.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -807,10 +807,17 @@ StopDragL(); } + + UpdateScreen(); + } - SetRect( iUiEngine.ClientRect() ); - - UpdateScreen(); +// ----------------------------------------------------------------------------- +// CXnEditMode::HandleScreenDeviceChangedL +// ----------------------------------------------------------------------------- +// +void CXnEditMode::SetClientRect( TRect aRect ) + { + SetRect( aRect ); } // ----------------------------------------------------------------------------- diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/xmluirendering/uiengine/src/xneffectmanager.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xneffectmanager.cpp Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/xmluirendering/uiengine/src/xneffectmanager.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -366,16 +366,30 @@ iBgEffect = ETrue; } - + + // because of changes in nga end has to call here. Effects below are + // grouped and those will be triggered when calling GfxTransEffect::EndGroup if ( iLandscape ) { GfxTransEffect::Begin( thisView, KGfxControlActionDisappearLsc ); GfxTransEffect::Begin( otherView, KGfxControlActionAppearLsc ); + + GfxTransEffect::SetDemarcation( otherView, otherView->Position() ); + GfxTransEffect::End( otherView ); + + GfxTransEffect::SetDemarcation( thisView, thisView->Position() ); + GfxTransEffect::End( thisView ); } else { GfxTransEffect::Begin( thisView, KGfxControlActionDisappearPrt ); GfxTransEffect::Begin( otherView, KGfxControlActionAppearPrt ); + + GfxTransEffect::SetDemarcation( otherView, otherView->Position() ); + GfxTransEffect::End( otherView ); + + GfxTransEffect::SetDemarcation( thisView, thisView->Position() ); + GfxTransEffect::End( thisView ); } return ETrue; @@ -396,7 +410,7 @@ } CXnControlAdapter* thisView( aThis.ViewNode()->Control() ); - CXnControlAdapter* otherView( aOther.ViewNode()->Control() ); + CXnControlAdapter* otherView( aOther.ViewNode()->Control() ); if ( iBgEffect ) { @@ -405,17 +419,11 @@ GfxTransEffect::SetDemarcation( bg, bg->Position() ); GfxTransEffect::End( bg ); } - - GfxTransEffect::SetDemarcation( thisView, thisView->Position() ); - GfxTransEffect::End( thisView ); - - GfxTransEffect::SetDemarcation( otherView, otherView->Position() ); - GfxTransEffect::End( otherView ); GfxTransEffect::EndGroup( iGroupId ); + GfxTransEffect::Deregister( otherView ); GfxTransEffect::Deregister( thisView ); - GfxTransEffect::Deregister( otherView ); } // ----------------------------------------------------------------------------- diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/xmluirendering/uiengine/src/xnlistquerydialogadapter.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xnlistquerydialogadapter.cpp Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/xmluirendering/uiengine/src/xnlistquerydialogadapter.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -344,6 +344,7 @@ if ( dialog->RunLD() ) { + iDialog = NULL; ActivateItemL( selectedIndex ); } diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/xmluirendering/uiengine/src/xnnodeimpl.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xnnodeimpl.cpp Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/xmluirendering/uiengine/src/xnnodeimpl.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -61,6 +61,8 @@ _LIT8( KMenuBar, "menubar" ); _LIT8( KTextEditor, "texteditor" ); _LIT8( KPlugin, "plugin" ); +_LIT8( KTemplate, "template" ); +_LIT8( KIndex, "index" ); _LIT8( KActionsHandler, "actionshandler" ); @@ -424,9 +426,75 @@ TBool aInformChange = EFalse ); static TBool MatchTitleScrollTriggerL( CXnNode& aEventData, CXnDomNode& aTriggerNode ); +static CXnDomNode* GetTemplateEventL( + const TDesC8& aTemplate, + CXnNode& aNode, + CXnDomNode& aEventNode ); // ============================= LOCAL FUNCTIONS =============================== - +// ----------------------------------------------------------------------------- +// GetTemplateEventL +// ----------------------------------------------------------------------------- +// +static CXnDomNode* GetTemplateEventL( const TDesC8& aTemplate, CXnNode& aNode, + CXnDomNode& aEventNode ) + { + CXnDomNode* retval( NULL ); + + if ( aTemplate == KIndex() ) + { + _LIT8( KTemplateIndex, "(#)" ); + + const TDesC8& eventString( aEventNode.AttributeValue( KName ) ); + + TInt index( eventString.Find( KTemplateIndex ) ); + + CXnNode* parent( aNode.Parent() ); + + if ( index != KErrNotFound && parent ) + { + RPointerArray< CXnNode >& siblings( parent->Children() ); + + TInt itemindex( siblings.Find( &aNode ) ); + + if ( itemindex != KErrNotFound ) + { + TBuf8< 4 > buf; + buf.AppendNum( itemindex ); + + CXnDomNode* clone( + aEventNode.CloneL( *aEventNode.StringPool() ) ); + CleanupStack::PushL( clone ); + + HBufC8* templateString = + HBufC8::NewLC( eventString.Length() + 4 ); + + TPtr8 ptr( templateString->Des() ); + + ptr.Copy( eventString ); + ptr.Delete( index + 1, 1 ); + ptr.Insert( index + 1, buf ); + + CXnDomAttribute* attribute = static_cast< CXnDomAttribute* > + ( clone->AttributeList().FindByName( + XnPropertyNames::action::event::KName ) ); + + if ( attribute ) + { + attribute->SetValueL( ptr ); + } + + CleanupStack::PopAndDestroy( templateString ); + + CleanupStack::Pop( clone ); + retval = clone; + } + } + } + + return retval; + } + // ----------------------------------------------------------------------------- // ResolveEffectId // ----------------------------------------------------------------------------- @@ -2719,8 +2787,28 @@ { CXnAppUiAdapter& adapter( aEngine.AppUiAdapter() ); - adapter.HandleXuikonEventL( - aNode.AppIfL(), aEventData.AppIfL(), aTriggerNode, aEventNode ); + // Check if event is template + const TDesC8& templateEvent( aEventNode.AttributeValue( KTemplate ) ); + + if ( templateEvent != KNullDesC8() ) + { + CXnDomNode* event( + GetTemplateEventL( templateEvent, aNode, aEventNode ) ); + CleanupStack::PushL( event ); + + if ( event ) + { + adapter.HandleXuikonEventL( + aNode.AppIfL(), aEventData.AppIfL(), aTriggerNode, *event ); + } + + CleanupStack::PopAndDestroy( event ); + } + else + { + adapter.HandleXuikonEventL( + aNode.AppIfL(), aEventData.AppIfL(), aTriggerNode, aEventNode ); + } } // ----------------------------------------------------------------------------- diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/xmluirendering/uiengine/src/xnuiengineimpl.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xnuiengineimpl.cpp Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/xmluirendering/uiengine/src/xnuiengineimpl.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -8283,19 +8283,19 @@ { rect = node->BorderRect(); } - if ( adapter->Rect() != rect ) + + // popup calculates its position based on _s60-position-hint property + // This needs to be done even if popup's rect has not been changed + if( node->Type()->Type() == KPopUpNodeName ) + { + adapter->DoHandlePropertyChangeL(); + } + else if ( adapter->Rect() != rect ) { AddToRedrawListL( node, rect ); - // popup calculates its position based on _s60-position-hint property - if( node->Type()->Type() == KPopUpNodeName ) - { - adapter->DoHandlePropertyChangeL(); - } - else - { - adapter->SetRect( rect ); - } + adapter->SetRect( rect ); + CXnProperty* prop = node->GetPropertyL( XnPropertyNames::common::KSizeAware ); if ( prop && prop->StringValue() == @@ -9565,6 +9565,8 @@ UpdateInternalUnits( iHorizontalUnitInPixels, iVerticalUnitInPixels, iClientRect ); + iEditMode->SetClientRect( aRect ); + if ( aDrawNow ) { RootNode()->SetDirtyL(); diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/xmluirendering/uiengine/src/xnviewadapter.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xnviewadapter.cpp Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/xmluirendering/uiengine/src/xnviewadapter.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -557,26 +557,27 @@ { return; } - - // Get previous container and then deactivate it - const CXnViewData* previous( iContainer ); - const CXnViewData& active( iAppUiAdapter.ViewManager().ActiveViewData() ); - DeactivateContainerL( EFalse ); - if ( iFlags.IsClear( EIsActivated ) ) { // Some other view than this in this appui is currently active, // postpone container activation return; } + + const CXnViewData& active( iAppUiAdapter.ViewManager().ActiveViewData() ); + + CXnEffectManager* mgr( iAppUiAdapter.EffectManager() ); + + CleanupStack::PushL( TCleanupItem( CleanupEffect, mgr ) ); + + TBool started( + mgr->BeginActivateViewEffect( active, aContainer, aEffect ) ); + + DeactivateContainerL( EFalse ); // Update iContainer = &aContainer; - - CXnEffectManager* mgr( iAppUiAdapter.EffectManager() ); - - CleanupStack::PushL( TCleanupItem( CleanupEffect, mgr ) ); // Disable layout and redraw until container activation is done iAppUiAdapter.UiEngine().DisableRenderUiLC(); @@ -620,18 +621,7 @@ { EnterEditStateL( aContainer, EFalse ); } - - TBool started( - mgr->BeginActivateViewEffect( active, aContainer, aEffect ) ); - - if ( previous ) - { - CXnControlAdapter* previousControl( - previous->Node()->LayoutNode()->Control() ); - - previousControl->MakeVisible( EFalse ); - } - + CXnControlAdapter* adapter( node->Control() ); adapter->MakeVisible( ETrue ); @@ -907,6 +897,11 @@ else { controls[i]->EnterPowerSaveModeL(); + if ( controls[i]->LongTapDetector() && + controls[i]->LongTapDetector()->IsActive() ) + { + controls[i]->LongTapDetector()->Cancel(); + } } } diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/xmluirendering/uiengine/src/xnviewcontroladapter.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xnviewcontroladapter.cpp Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/xmluirendering/uiengine/src/xnviewcontroladapter.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -41,11 +41,17 @@ const TPointerEvent& aEvent ) { if ( aControl ) - { + { CCoeControl* grabber( aControl->GrabbingComponent() ); if ( grabber ) - { + { + // cancel longtap detector before reset grabbing. + CAknLongTapDetector* detector = aControl->LongTapDetector(); + if ( detector && detector->IsActive() ) + { + detector->Cancel(); + } grabber->IgnoreEventsUntilNextPointerUp(); aControl->CCoeControl::HandlePointerEventL( aEvent ); @@ -53,7 +59,7 @@ CXnControlAdapter* adapter = dynamic_cast< CXnControlAdapter* >( grabber ); - ResetGrabbingL( adapter, aEvent ); + ResetGrabbingL( adapter, aEvent ); } } } @@ -182,13 +188,16 @@ void CXnViewControlAdapter::HandlePointerEventL( const TPointerEvent& aPointerEvent ) { - iAppUi.UiEngine().DisableRenderUiLC(); + if ( iForegroundStatus != EBackground ) + { + iAppUi.UiEngine().DisableRenderUiLC(); + + CXnControlAdapter::HandlePointerEventL( aPointerEvent ); - CXnControlAdapter::HandlePointerEventL( aPointerEvent ); - - iAppUi.UiEngine().RenderUIL(); - - CleanupStack::PopAndDestroy(); + iAppUi.UiEngine().RenderUIL(); + + CleanupStack::PopAndDestroy(); + } } // ----------------------------------------------------------------------------- @@ -215,6 +224,7 @@ // void CXnViewControlAdapter::NotifyForegroundChanged( TForegroundStatus aStatus ) { + iForegroundStatus = aStatus; if ( aStatus == EBackground || aStatus == EPartialForeground ) { ResetGrabbing(); diff -r 137ebc85284b -r 1b758917cafc idlehomescreen/xmluirendering/uiengine/src/xnwidgetextensionadapter.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xnwidgetextensionadapter.cpp Tue May 25 12:29:32 2010 +0300 +++ b/idlehomescreen/xmluirendering/uiengine/src/xnwidgetextensionadapter.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -22,6 +22,9 @@ #include <gfxtranseffect/gfxtranseffect.h> #include <akntransitionutils.h> #include <AknPriv.hrh> +#ifdef RD_TACTILE_FEEDBACK +#include <touchfeedback.h> +#endif // RD_TACTILE_FEEDBACK // User includes #include "xnwidgetextensionadapter.h" @@ -147,14 +150,12 @@ iPermanent = ETrue; } } - else + + if ( Window().SetTransparencyAlphaChannel() == KErrNone ) { - if ( Window().SetTransparencyAlphaChannel() == KErrNone ) - { - Window().SetBackgroundColor( ~0 ); - } - } - + Window().SetBackgroundColor( ~0 ); + } + iUiEngine = iNode.Node().UiEngine(); CXnControlAdapter::ConstructL( iNode ); @@ -253,10 +254,11 @@ if ( iPopup ) { // check if the tap was inside of popup - TRect popupRect = this->Rect(); - popupRect.Move(this->Position() ); - TBool isInPopupWindow = popupRect.Contains( - aPointerEvent.iParentPosition ); + TRect popupRect( Rect() ); + popupRect.Move( Position() ); + + TBool isInPopupWindow( popupRect.Contains( + aPointerEvent.iParentPosition ) ); if ( !isInPopupWindow ) { @@ -267,15 +269,17 @@ if ( parentIdProp ) { - const TDesC8& parentIdVal = parentIdProp->StringValue(); - CXnNode* parentN(iUiEngine->FindNodeByIdL( parentIdVal, - iNode.Node().Namespace() ) ); + const TDesC8& id( parentIdProp->StringValue() ); + + CXnNode* parent( + iUiEngine->FindNodeByIdL( id, iNode.Node().Namespace() ) ); + - if ( parentN ) + if ( parent ) { - TRect clientRect = - static_cast<CEikAppUi&> ( *iAppUiAdapter ).ClientRect(); - TRect parentRect = parentN->Rect(); + TRect clientRect( iAppUiAdapter->ClientRect() ); + + TRect parentRect( parent->Rect() ); parentRect.Move( clientRect.iTl ); if ( !parentRect.Contains( aPointerEvent.iParentPosition ) ) @@ -284,6 +288,14 @@ // we can close it if ( aPointerEvent.iType == TPointerEvent::EButton1Down ) { +#ifdef RD_TACTILE_FEEDBACK + MTouchFeedback* fb( MTouchFeedback::Instance() ); + + if ( fb ) + { + fb->InstantFeedback( ETouchFeedbackBasic ); + } +#endif HidePopupL(); return; } @@ -294,17 +306,30 @@ // we pass the event to it after // recalculating the taping point TPointerEvent newPointerEvent; + newPointerEvent.Copy( aPointerEvent ); + newPointerEvent.iPosition = TPoint( - aPointerEvent.iParentPosition - clientRect.iTl ); - parentN->Control()->HandlePointerEventL( newPointerEvent ); - return; + aPointerEvent.iParentPosition - clientRect.iTl ); + + parent->Control()->HandlePointerEventL( newPointerEvent ); } } } else { - HidePopupL(); +#ifdef RD_TACTILE_FEEDBACK + if ( aPointerEvent.iType == TPointerEvent::EButton1Down ) + { + MTouchFeedback* fb( MTouchFeedback::Instance() ); + + if ( fb ) + { + fb->InstantFeedback( ETouchFeedbackBasic ); + } +#endif + HidePopupL(); + } } } } @@ -709,11 +734,6 @@ DrawableWindow()->FadeBehind( ETrue ); } } - - else if( iPopup && aType == KAknSplitInputDisabled ) - { - TRAP_IGNORE( HidePopupL() ); - } } // End of File diff -r 137ebc85284b -r 1b758917cafc menufw/hierarchynavigator/hnengine/group/bld.inf --- a/menufw/hierarchynavigator/hnengine/group/bld.inf Tue May 25 12:29:32 2010 +0300 +++ b/menufw/hierarchynavigator/hnengine/group/bld.inf Wed Jun 09 09:29:04 2010 +0300 @@ -23,7 +23,6 @@ ../inc/hncontrollerinterface.h |../../../inc/hncontrollerinterface.h ../inc/hnengine.h |../../../inc/hnengine.h ../inc/hninterface.h |../../../inc/hninterface.h -../inc/hninstallnotifier.h |../../../inc/hninstallnotifier.h ../inc/hneventgenerator.h |../../../inc/hneventgenerator.h ../inc/menudebug.h |../../../inc/menudebug.h diff -r 137ebc85284b -r 1b758917cafc menufw/hierarchynavigator/hnengine/group/hnengine.mmp --- a/menufw/hierarchynavigator/hnengine/group/hnengine.mmp Tue May 25 12:29:32 2010 +0300 +++ b/menufw/hierarchynavigator/hnengine/group/hnengine.mmp Wed Jun 09 09:29:04 2010 +0300 @@ -32,7 +32,6 @@ SOURCEPATH ../src SOURCE hnengine.cpp -SOURCE hninstallnotifier.cpp USERINCLUDE ../inc diff -r 137ebc85284b -r 1b758917cafc menufw/hierarchynavigator/hnengine/inc/hnengine.h --- a/menufw/hierarchynavigator/hnengine/inc/hnengine.h Tue May 25 12:29:32 2010 +0300 +++ b/menufw/hierarchynavigator/hnengine/inc/hnengine.h Wed Jun 09 09:29:04 2010 +0300 @@ -27,7 +27,6 @@ #include "hnglobals.h" #include "hninterface.h" #include "hnmdmodel.h" -#include "hninstallnotifier.h" class CHnMdModel; class CHnSuiteModelContainer; @@ -49,7 +48,6 @@ */ NONSHARABLE_CLASS( CHnEngine ) : public CHnInterface, public MHnMdModelEventObserver, - public MHnInstallNotifierCallback, public MHWRMLightObserver { public: @@ -147,17 +145,6 @@ TInt HandleBackEventL( const TDesC& aGenre, TInt aIterations = KModelCountForRoot ); - // from MHNMulModelInstallNotifierCallback - - /** - * InstallChangeL is called when the subscribed key has been changed. - * - * @since S60 v5.0 - * @param aStatus Status of the installation event. - */ - virtual void InstallChangeL( TInt aStatus ); - - /** * Loads default root suite * @@ -389,15 +376,15 @@ * @param aUriFragment Descriptor containig parsed part of the uri. */ void HighlightPlacementFromUriL( const TDesC8& aUriFragment ); - - + + /** * Loads folder and sets focus through CR. - * + * * @since S60 v5.0 */ void LoadFromCrL( const TDesC8& aUri ); - + /** * Handles loading suite from uri if suites names' are the same. * @@ -452,13 +439,7 @@ * Not own - Suite observer. */ MHnControllerInterface& iControllerInterface; - - /** - * Installation observer. - * Own. - */ - CHnInstallNotifier* iInstObserver; - + /** * Edit mode */ diff -r 137ebc85284b -r 1b758917cafc menufw/hierarchynavigator/hnengine/inc/hninstallnotifier.h --- a/menufw/hierarchynavigator/hnengine/inc/hninstallnotifier.h Tue May 25 12:29:32 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,177 +0,0 @@ -/* -* Copyright (c) 2007-2008 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: Sis package installation event listener -* -*/ - - - -#ifndef HNINSTALLNOTIFIER_H -#define HNINSTALLNOTIFIER_H - -#include <e32base.h> -#include <e32property.h> - -/** - * @ingroup group_hnengine - * Interface for observing Sis installation events. - * - * @lib hnengine - * @since S60 S60 v3.1 - */ -class MHnInstallNotifierCallback - { - -public: - /** - * @ingroup group_hnengine - * Enum defining the purpouse of the installation event. - */ - enum TInstOp - { - EInstOpNone = 0x00, - EInstOpInstall = 0x01, - EInstOpUninstall = 0x02, - EInstOpRestore = 0x04 - }; - - /** - * @ i ngroup group_hnengine - * Enum defining the exit status of the installation event. - */ -/* enum TInstOpStatus - { - EInstOpStatusNone = 0x0000, - EInstOpStatusSuccess = 0x0100, - EInstOpStatusAborted = 0x0200 - };*/ - - /** - * InstallChangeL is called when the subscribed key has been changed. - * - * @param aStatus Status of the installation event. - */ - virtual void InstallChangeL( TInt aStatus ) = 0; - - }; - - -/** - * @ingroup group_hnengine - * Central Repository notifier. - * - * @lib hnengine - * @since S60 S60 v3.1 - */ -NONSHARABLE_CLASS( CHnInstallNotifier ) : public CActive - { - -public: - - /** - * Creates an instance of CHnMulModelInstallNotifier implementation. - * - * @since S60 v5.0 - * - * @param aCallback Reference to notifier interface. - * @param aCategory Package uid. - * @param aKey Key for central repository. - * @return Fully constructed object. - */ - static CHnInstallNotifier* NewL( - MHnInstallNotifierCallback* aCallback, - TUid aCategory, - TUint aKey ); - - /** - * Default destructor. - * - * @since S60 v5.0 - */ - virtual ~CHnInstallNotifier(); - - -private: - /** - * Constructor. - * - * @since S60 v5.0 - * - * @param aCallback Reference to notifier interface. - * @param aCategory Package uid. - * @param aKey Key for central repository. - */ - CHnInstallNotifier( - MHnInstallNotifierCallback* aCallback, - TUid aCategory, - TUint aKey ); - - /** - * Symbian 2nd phase constructor. - * - * @since S60 v5.0 - */ - void ConstructL(); - - /** - * From CActive. Implements cancellation of an outstanding request. - * - * @since S60 v5.0 - */ - void DoCancel(); - - /** - * From CActive. Handles an active object's request completion event. - * - * @since S60 v5.0 - */ - void RunL(); - - /** - * From CActive. - * - * @since S60 v5.0 - * @param aError The leave code. - * @return Status code. - */ - TInt RunError( TInt aError ); - - -private: - /** - * User side interface to Publish & Subscribe. - */ - RProperty iProperty; - - /** - * Interface for notifying changes in SWI. - * Not own. - */ - MHnInstallNotifierCallback* iCallback; - - /** - * Category uid. - */ - TUid iCategory; - - /** - * Key identifier. - */ - TUint iKey; - - }; - -#endif // HNINSTALLNOTIFIER_H - -// End of File diff -r 137ebc85284b -r 1b758917cafc menufw/hierarchynavigator/hnengine/src/hnengine.cpp --- a/menufw/hierarchynavigator/hnengine/src/hnengine.cpp Tue May 25 12:29:32 2010 +0300 +++ b/menufw/hierarchynavigator/hnengine/src/hnengine.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -56,8 +56,6 @@ iSuiteContainer = CHnSuiteModelContainer::NewL( *this , iControllerInterface ); iMetaDataModel = CHnMdModel::NewL( this, iSuiteContainer ); iLight = CHWRMLight::NewL(this); - iInstObserver = CHnInstallNotifier::NewL( this, - KUidSystemCategory, KSAUidSoftwareInstallKeyValue ); } // --------------------------------------------------------------------------- @@ -98,7 +96,6 @@ // CHnEngine::~CHnEngine() { - delete iInstObserver; delete iLight; if( iSuiteContainer ) { @@ -529,6 +526,11 @@ param->Value().Get( genre ); DEBUG16(("_MM_:\tSuite genre name: %S",&genre)); // load and evaluate the suite + if( genre.Compare( KFolderSuite) ) + { + //only folder suite is supported + User::Leave( KErrNotSupported ); + } err = iMetaDataModel->LoadSuiteL( genre, &aParams ); if ( !err ) { @@ -712,23 +714,22 @@ // // --------------------------------------------------------------------------- // -void CHnEngine::InstallChangeL( TInt aStatus ) - { - switch ( aStatus) - { - case EInstOpNone: - { - iMetaDataModel->HandleSisInstallationEventL( iSuiteContainer ); - break; - } - case EInstOpInstall: - case EInstOpUninstall: - { - iMetaDataModel->ReleaseLocalization(); - break; - } - } - } +//void CHnEngine::InstallChangeL( TInt aStatus ) +// { +// switch ( aStatus) +// { +// case EInstOpNone: +// { +// break; +// } +// case EInstOpInstall: +// case EInstOpUninstall: +// { +// iMetaDataModel->ReleaseLocalization(); +// break; +// } +// } +// } // --------------------------------------------------------------------------- // // --------------------------------------------------------------------------- diff -r 137ebc85284b -r 1b758917cafc menufw/hierarchynavigator/hnengine/src/hninstallnotifier.cpp --- a/menufw/hierarchynavigator/hnengine/src/hninstallnotifier.cpp Tue May 25 12:29:32 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,122 +0,0 @@ -/* -* Copyright (c) 2007-2008 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: Sis package installation event listener -* -*/ - - -#include <sacls.h> -#include "hninstallnotifier.h" - -// ============================ MEMBER FUNCTIONS ============================= - -// ----------------------------------------------------------------------------- -// CHnMulModelInstallNotifier::CHnMulModelInstallNotifier -// C++ default constructor -// ----------------------------------------------------------------------------- -// -CHnInstallNotifier::CHnInstallNotifier( - MHnInstallNotifierCallback* aCallback, - TUid aCategory, - TUint aKey ) : CActive( EPriorityNormal ) - { - CActiveScheduler::Add( this ); - - iCallback = aCallback; - iCategory = aCategory; - iKey = aKey; - // Prepare automatically - TInt err = iProperty.Attach( iCategory, iKey ); - SetActive(); - iStatus = KRequestPending; - iProperty.Subscribe( iStatus ); - } - -// ----------------------------------------------------------------------------- -// CHnMulModelInstallNotifier::ConstructL -// S2nd phase constructor. -// ----------------------------------------------------------------------------- -// -void CHnInstallNotifier::ConstructL() - { - - } - -// --------------------------------------------------------------------------- -// CHnMulModelInstallNotifier::NewL -// --------------------------------------------------------------------------- -// -CHnInstallNotifier* CHnInstallNotifier:: - NewL( MHnInstallNotifierCallback* aCallback, - TUid aCategory, - TUint aKey ) - { - CHnInstallNotifier* self = - new (ELeave) CHnInstallNotifier( aCallback, - aCategory, - aKey ); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - - return self; - } - - -// --------------------------------------------------------------------------- -// CHnMulModelInstallNotifier::~CHnMulModelInstallNotifier -// --------------------------------------------------------------------------- -// -CHnInstallNotifier::~CHnInstallNotifier() - { - Cancel(); - } - -// --------------------------------------------------------------------------- -// CHnMulModelInstallNotifier::DoCancel -// --------------------------------------------------------------------------- -// -void CHnInstallNotifier::DoCancel() - { - iProperty.Cancel(); - } - -// --------------------------------------------------------------------------- -// CHnMulModelInstallNotifier::RunError -// --------------------------------------------------------------------------- -// -TInt CHnInstallNotifier::RunError( TInt /*aError*/ ) - { - // No need to do anything - return KErrNone; - } - -// --------------------------------------------------------------------------- -// CHnMulModelInstallNotifier::RunL -// --------------------------------------------------------------------------- -// -void CHnInstallNotifier::RunL() - { - // Re-issue request before notifying - SetActive(); - iStatus = KRequestPending; - iProperty.Subscribe( iStatus ); - - TInt status; - User::LeaveIfError( iProperty.Get( KUidSystemCategory, - KSAUidSoftwareInstallKeyValue,status )); - - iCallback->InstallChangeL( status ); - } -// End of File diff -r 137ebc85284b -r 1b758917cafc menufw/hierarchynavigator/hnmetadatamodel/bwins/hnmetadatamodelu.def --- a/menufw/hierarchynavigator/hnmetadatamodel/bwins/hnmetadatamodelu.def Tue May 25 12:29:32 2010 +0300 +++ b/menufw/hierarchynavigator/hnmetadatamodel/bwins/hnmetadatamodelu.def Wed Jun 09 09:29:04 2010 +0300 @@ -4,50 +4,44 @@ ?NewLC@CHnItemId@@SAPAV1@ABVTDesC16@@0@Z @ 3 NONAME ; class CHnItemId * CHnItemId::NewLC(class TDesC16 const &, class TDesC16 const &) ?GetAlternativeWidgetNumber@CHnMdSuite@@QAEHXZ @ 4 NONAME ; int CHnMdSuite::GetAlternativeWidgetNumber(void) ?GetSuiteParameters@CHnMdSuite@@QAEAAVCLiwGenericParamList@@XZ @ 5 NONAME ; class CLiwGenericParamList & CHnMdSuite::GetSuiteParameters(void) - ?ReloadLocalizationL@CHnMdModel@@QAEXXZ @ 6 NONAME ; void CHnMdModel::ReloadLocalizationL(void) - ?QueueForeground@CHnMdModel@@QAEXW4TForegroundGainTriggeringEvent@1@@Z @ 7 NONAME ; void CHnMdModel::QueueForeground(enum CHnMdModel::TForegroundGainTriggeringEvent) - ?ReadFileL@HnUtils@@SAPAVHBufC8@@ABVTDesC16@@@Z @ 8 NONAME ; class HBufC8 * HnUtils::ReadFileL(class TDesC16 const &) - ?GetModelL@CHnXmlModelProvider@@QAEHABVTDesC16@@AAVRXmlEngDocument@@@Z @ 9 NONAME ; int CHnXmlModelProvider::GetModelL(class TDesC16 const &, class RXmlEngDocument &) - ?GetLastSuite@CHnMdModel@@QAEPAVCHnMdSuite@@XZ @ 10 NONAME ; class CHnMdSuite * CHnMdModel::GetLastSuite(void) - ?GetColumnTextColumnCount@HnUtils@@SAHABVTDesC8@@VTChar@@@Z @ 11 NONAME ; int HnUtils::GetColumnTextColumnCount(class TDesC8 const &, class TChar) - ?SetSuiteParametersL@CHnMdSuite@@QAEXAAVCLiwGenericParamList@@@Z @ 12 NONAME ; void CHnMdSuite::SetSuiteParametersL(class CLiwGenericParamList &) - ?NewLC@CHnXmlModelProvider@@SAPAV1@XZ @ 13 NONAME ; class CHnXmlModelProvider * CHnXmlModelProvider::NewLC(void) - ?NewLC@CHnMdModel@@SAPAV1@PAVMHnMdModelEventObserver@@PAVCHnSuiteModelContainer@@@Z @ 14 NONAME ; class CHnMdModel * CHnMdModel::NewLC(class MHnMdModelEventObserver *, class CHnSuiteModelContainer *) - ?IsForegroundQueued@CHnMdModel@@QBEHXZ @ 15 NONAME ; int CHnMdModel::IsForegroundQueued(void) const - ?NewL@CHnXmlModelProvider@@SAPAV1@XZ @ 16 NONAME ; class CHnXmlModelProvider * CHnXmlModelProvider::NewL(void) - ?SetModeL@CHnMdModel@@QAEXW4TMdMode@@@Z @ 17 NONAME ; void CHnMdModel::SetModeL(enum TMdMode) - ?AppendItemIdL@CHnFilter@@QAEXPAVCHnItemId@@@Z @ 18 NONAME ; void CHnFilter::AppendItemIdL(class CHnItemId *) - ?HandleSisInstallationEventL@CHnMdModel@@QAEXPAVCHnSuiteModelContainer@@@Z @ 19 NONAME ; void CHnMdModel::HandleSisInstallationEventL(class CHnSuiteModelContainer *) - ?ReadFileLC@HnUtils@@SAPAVHBufC8@@ABVTDesC16@@@Z @ 20 NONAME ; class HBufC8 * HnUtils::ReadFileLC(class TDesC16 const &) - ?LoadSuiteL@CHnMdModel@@QAEHABVTDesC16@@PAVCLiwGenericParamList@@@Z @ 21 NONAME ; int CHnMdModel::LoadSuiteL(class TDesC16 const &, class CLiwGenericParamList *) - ?SuiteModelExistsL@CHnMdModel@@QAEHABVTDesC8@@@Z @ 22 NONAME ; int CHnMdModel::SuiteModelExistsL(class TDesC8 const &) - ?HandleBackEventL@CHnMdModel@@QAEHPAVCHnSuiteModelContainer@@ABVTDesC16@@H@Z @ 23 NONAME ; int CHnMdModel::HandleBackEventL(class CHnSuiteModelContainer *, class TDesC16 const &, int) - ?SuiteName@CHnItemId@@QBEABVTDesC16@@XZ @ 24 NONAME ; class TDesC16 const & CHnItemId::SuiteName(void) const - ?Template@CHnMdItem@@QAEAAVTDesC8@@XZ @ 25 NONAME ; class TDesC8 & CHnMdItem::Template(void) + ?QueueForeground@CHnMdModel@@QAEXW4TForegroundGainTriggeringEvent@1@@Z @ 6 NONAME ; void CHnMdModel::QueueForeground(enum CHnMdModel::TForegroundGainTriggeringEvent) + ?ReadFileL@HnUtils@@SAPAVHBufC8@@ABVTDesC16@@@Z @ 7 NONAME ; class HBufC8 * HnUtils::ReadFileL(class TDesC16 const &) + ?GetModelL@CHnXmlModelProvider@@QAEHABVTDesC16@@AAVRXmlEngDocument@@@Z @ 8 NONAME ; int CHnXmlModelProvider::GetModelL(class TDesC16 const &, class RXmlEngDocument &) + ?GetLastSuite@CHnMdModel@@QAEPAVCHnMdSuite@@XZ @ 9 NONAME ; class CHnMdSuite * CHnMdModel::GetLastSuite(void) + ?GetColumnTextColumnCount@HnUtils@@SAHABVTDesC8@@VTChar@@@Z @ 10 NONAME ; int HnUtils::GetColumnTextColumnCount(class TDesC8 const &, class TChar) + ?SetSuiteParametersL@CHnMdSuite@@QAEXAAVCLiwGenericParamList@@@Z @ 11 NONAME ; void CHnMdSuite::SetSuiteParametersL(class CLiwGenericParamList &) + ?NewLC@CHnXmlModelProvider@@SAPAV1@XZ @ 12 NONAME ; class CHnXmlModelProvider * CHnXmlModelProvider::NewLC(void) + ?NewLC@CHnMdModel@@SAPAV1@PAVMHnMdModelEventObserver@@PAVCHnSuiteModelContainer@@@Z @ 13 NONAME ; class CHnMdModel * CHnMdModel::NewLC(class MHnMdModelEventObserver *, class CHnSuiteModelContainer *) + ?IsForegroundQueued@CHnMdModel@@QBEHXZ @ 14 NONAME ; int CHnMdModel::IsForegroundQueued(void) const + ?NewL@CHnXmlModelProvider@@SAPAV1@XZ @ 15 NONAME ; class CHnXmlModelProvider * CHnXmlModelProvider::NewL(void) + ?SetModeL@CHnMdModel@@QAEXW4TMdMode@@@Z @ 16 NONAME ; void CHnMdModel::SetModeL(enum TMdMode) + ?AppendItemIdL@CHnFilter@@QAEXPAVCHnItemId@@@Z @ 17 NONAME ; void CHnFilter::AppendItemIdL(class CHnItemId *) + ?ReadFileLC@HnUtils@@SAPAVHBufC8@@ABVTDesC16@@@Z @ 18 NONAME ; class HBufC8 * HnUtils::ReadFileLC(class TDesC16 const &) + ?LoadSuiteL@CHnMdModel@@QAEHABVTDesC16@@PAVCLiwGenericParamList@@@Z @ 19 NONAME ; int CHnMdModel::LoadSuiteL(class TDesC16 const &, class CLiwGenericParamList *) + ?SuiteModelExistsL@CHnMdModel@@QAEHABVTDesC8@@@Z @ 20 NONAME ; int CHnMdModel::SuiteModelExistsL(class TDesC8 const &) + ?HandleBackEventL@CHnMdModel@@QAEHPAVCHnSuiteModelContainer@@ABVTDesC16@@H@Z @ 21 NONAME ; int CHnMdModel::HandleBackEventL(class CHnSuiteModelContainer *, class TDesC16 const &, int) + ?SuiteName@CHnItemId@@QBEABVTDesC16@@XZ @ 22 NONAME ; class TDesC16 const & CHnItemId::SuiteName(void) const + ?Template@CHnMdItem@@QAEAAVTDesC8@@XZ @ 23 NONAME ; class TDesC8 & CHnMdItem::Template(void) + ?DeleteLastSuite@CHnMdModel@@QAEXXZ @ 24 NONAME ; void CHnMdModel::DeleteLastSuite(void) + ?NewLC@CHnFilter@@SAPAV1@XZ @ 25 NONAME ; class CHnFilter * CHnFilter::NewLC(void) ?SetAttributeL@HnUtils@@SAXABVTXmlEngElement@@AAVRBuf8@@@Z @ 26 NONAME ; void HnUtils::SetAttributeL(class TXmlEngElement const &, class RBuf8 &) - ?ReleaseLocalization@CHnMdModel@@QAEXXZ @ 27 NONAME ; void CHnMdModel::ReleaseLocalization(void) - ?DeleteLastSuite@CHnMdModel@@QAEXXZ @ 28 NONAME ; void CHnMdModel::DeleteLastSuite(void) - ?NewLC@CHnFilter@@SAPAV1@XZ @ 29 NONAME ; class CHnFilter * CHnFilter::NewLC(void) - ?EvaluateL@CHnMdModel@@QAEXXZ @ 30 NONAME ; void CHnMdModel::EvaluateL(void) - ?SetAttributeL@HnUtils@@SAXABVTXmlEngElement@@ABVTDesC8@@AAVRBuf8@@@Z @ 31 NONAME ; void HnUtils::SetAttributeL(class TXmlEngElement const &, class TDesC8 const &, class RBuf8 &) - ?Compare@CHnItemId@@QBEHABV1@@Z @ 32 NONAME ; int CHnItemId::Compare(class CHnItemId const &) const - ?LocateFileLC@HnUtils@@SAPAVHBufC16@@ABVTDesC16@@@Z @ 33 NONAME ; class HBufC16 * HnUtils::LocateFileLC(class TDesC16 const &) - ?Uid@CHnMdItem@@QAEAAVTDesC8@@XZ @ 34 NONAME ; class TDesC8 & CHnMdItem::Uid(void) - ?SetEvaluateSuiteL@CHnFilter@@QAEXH@Z @ 35 NONAME ; void CHnFilter::SetEvaluateSuiteL(int) - ?GetColumnTextLC@HnUtils@@SAPAVHBufC8@@HABVTDesC8@@VTChar@@@Z @ 36 NONAME ; class HBufC8 * HnUtils::GetColumnTextLC(int, class TDesC8 const &, class TChar) - ?LocateNearestLanguageFileLC@HnUtils@@SAPAVHBufC16@@ABVTDesC16@@@Z @ 37 NONAME ; class HBufC16 * HnUtils::LocateNearestLanguageFileLC(class TDesC16 const &) - ?SetSuiteId@CHnFilter@@QAEXH@Z @ 38 NONAME ; void CHnFilter::SetSuiteId(int) - ?NewL@CHnFilter@@SAPAV1@XZ @ 39 NONAME ; class CHnFilter * CHnFilter::NewL(void) - ?SuiteName@CHnMdSuite@@QAEABVTDesC16@@XZ @ 40 NONAME ; class TDesC16 const & CHnMdSuite::SuiteName(void) - ?UpdateL@CHnItemId@@QAEXABV1@@Z @ 41 NONAME ; void CHnItemId::UpdateL(class CHnItemId const &) - ?Type@CHnMdItem@@QAEAAVTDesC8@@XZ @ 42 NONAME ; class TDesC8 & CHnMdItem::Type(void) - ?ReloadModelL@CHnXmlModelProvider@@QAEXXZ @ 43 NONAME ; void CHnXmlModelProvider::ReloadModelL(void) - ??1CHnXmlModelProvider@@UAE@XZ @ 44 NONAME ; CHnXmlModelProvider::~CHnXmlModelProvider(void) - ?NewL@CHnItemId@@SAPAV1@ABVTDesC16@@0@Z @ 45 NONAME ; class CHnItemId * CHnItemId::NewL(class TDesC16 const &, class TDesC16 const &) - ?Id@CHnItemId@@QBEABVTDesC16@@XZ @ 46 NONAME ; class TDesC16 const & CHnItemId::Id(void) const - ?EvaluateL@CHnMdModel@@QAEXAAVCHnFilter@@@Z @ 47 NONAME ; void CHnMdModel::EvaluateL(class CHnFilter &) - ?NewL@CHnMdModel@@SAPAV1@PAVMHnMdModelEventObserver@@PAVCHnSuiteModelContainer@@@Z @ 48 NONAME ; class CHnMdModel * CHnMdModel::NewL(class MHnMdModelEventObserver *, class CHnSuiteModelContainer *) - ?GetSuiteParameters@CHnMdModel@@QAEAAVCLiwGenericParamList@@H@Z @ 49 NONAME ; class CLiwGenericParamList & CHnMdModel::GetSuiteParameters(int) - ?IgnoreEvaluations@CHnMdModel@@QAEXH@Z @ 50 NONAME ; void CHnMdModel::IgnoreEvaluations(int) - ?GetCurrentUriL@CHnMdModel@@QAEXAAVTDes16@@@Z @ 51 NONAME ; void CHnMdModel::GetCurrentUriL(class TDes16 &) + ?EvaluateL@CHnMdModel@@QAEXXZ @ 27 NONAME ; void CHnMdModel::EvaluateL(void) + ?SetAttributeL@HnUtils@@SAXABVTXmlEngElement@@ABVTDesC8@@AAVRBuf8@@@Z @ 28 NONAME ; void HnUtils::SetAttributeL(class TXmlEngElement const &, class TDesC8 const &, class RBuf8 &) + ?Compare@CHnItemId@@QBEHABV1@@Z @ 29 NONAME ; int CHnItemId::Compare(class CHnItemId const &) const + ?Uid@CHnMdItem@@QAEAAVTDesC8@@XZ @ 30 NONAME ; class TDesC8 & CHnMdItem::Uid(void) + ?SetEvaluateSuiteL@CHnFilter@@QAEXH@Z @ 31 NONAME ; void CHnFilter::SetEvaluateSuiteL(int) + ?GetColumnTextLC@HnUtils@@SAPAVHBufC8@@HABVTDesC8@@VTChar@@@Z @ 32 NONAME ; class HBufC8 * HnUtils::GetColumnTextLC(int, class TDesC8 const &, class TChar) + ?LocateNearestLanguageFileLC@HnUtils@@SAPAVHBufC16@@ABVTDesC16@@@Z @ 33 NONAME ; class HBufC16 * HnUtils::LocateNearestLanguageFileLC(class TDesC16 const &) + ?SetSuiteId@CHnFilter@@QAEXH@Z @ 34 NONAME ; void CHnFilter::SetSuiteId(int) + ?NewL@CHnFilter@@SAPAV1@XZ @ 35 NONAME ; class CHnFilter * CHnFilter::NewL(void) + ?SuiteName@CHnMdSuite@@QAEABVTDesC16@@XZ @ 36 NONAME ; class TDesC16 const & CHnMdSuite::SuiteName(void) + ?UpdateL@CHnItemId@@QAEXABV1@@Z @ 37 NONAME ; void CHnItemId::UpdateL(class CHnItemId const &) + ?Type@CHnMdItem@@QAEAAVTDesC8@@XZ @ 38 NONAME ; class TDesC8 & CHnMdItem::Type(void) + ??1CHnXmlModelProvider@@UAE@XZ @ 39 NONAME ; CHnXmlModelProvider::~CHnXmlModelProvider(void) + ?NewL@CHnItemId@@SAPAV1@ABVTDesC16@@0@Z @ 40 NONAME ; class CHnItemId * CHnItemId::NewL(class TDesC16 const &, class TDesC16 const &) + ?Id@CHnItemId@@QBEABVTDesC16@@XZ @ 41 NONAME ; class TDesC16 const & CHnItemId::Id(void) const + ?EvaluateL@CHnMdModel@@QAEXAAVCHnFilter@@@Z @ 42 NONAME ; void CHnMdModel::EvaluateL(class CHnFilter &) + ?NewL@CHnMdModel@@SAPAV1@PAVMHnMdModelEventObserver@@PAVCHnSuiteModelContainer@@@Z @ 43 NONAME ; class CHnMdModel * CHnMdModel::NewL(class MHnMdModelEventObserver *, class CHnSuiteModelContainer *) + ?GetSuiteParameters@CHnMdModel@@QAEAAVCLiwGenericParamList@@H@Z @ 44 NONAME ; class CLiwGenericParamList & CHnMdModel::GetSuiteParameters(int) + ?IgnoreEvaluations@CHnMdModel@@QAEXH@Z @ 45 NONAME ; void CHnMdModel::IgnoreEvaluations(int) diff -r 137ebc85284b -r 1b758917cafc menufw/hierarchynavigator/hnmetadatamodel/eabi/hnmetadatamodelu.def --- a/menufw/hierarchynavigator/hnmetadatamodel/eabi/hnmetadatamodelu.def Tue May 25 12:29:32 2010 +0300 +++ b/menufw/hierarchynavigator/hnmetadatamodel/eabi/hnmetadatamodelu.def Wed Jun 09 09:29:04 2010 +0300 @@ -1,54 +1,48 @@ EXPORTS _ZN10CHnMdModel10LoadSuiteLERK7TDesC16P20CLiwGenericParamList @ 1 NONAME _ZN10CHnMdModel12GetLastSuiteEv @ 2 NONAME - _ZN10CHnMdModel14GetCurrentUriLER6TDes16 @ 3 NONAME - _ZN10CHnMdModel15DeleteLastSuiteEv @ 4 NONAME - _ZN10CHnMdModel15QueueForegroundENS_30TForegroundGainTriggeringEventE @ 5 NONAME - _ZN10CHnMdModel16HandleBackEventLEP22CHnSuiteModelContainerRK7TDesC16i @ 6 NONAME - _ZN10CHnMdModel17IgnoreEvaluationsEi @ 7 NONAME - _ZN10CHnMdModel17SuiteModelExistsLERK6TDesC8 @ 8 NONAME - _ZN10CHnMdModel18GetSuiteParametersEi @ 9 NONAME - _ZN10CHnMdModel19ReleaseLocalizationEv @ 10 NONAME - _ZN10CHnMdModel19ReloadLocalizationLEv @ 11 NONAME - _ZN10CHnMdModel27HandleSisInstallationEventLEP22CHnSuiteModelContainer @ 12 NONAME - _ZN10CHnMdModel4NewLEP23MHnMdModelEventObserverP22CHnSuiteModelContainer @ 13 NONAME - _ZN10CHnMdModel5NewLCEP23MHnMdModelEventObserverP22CHnSuiteModelContainer @ 14 NONAME - _ZN10CHnMdModel8SetModeLE7TMdMode @ 15 NONAME - _ZN10CHnMdModel9EvaluateLER9CHnFilter @ 16 NONAME - _ZN10CHnMdModel9EvaluateLEv @ 17 NONAME - _ZN10CHnMdSuite18GetSuiteParametersEv @ 18 NONAME - _ZN10CHnMdSuite19SetSuiteParametersLER20CLiwGenericParamList @ 19 NONAME - _ZN10CHnMdSuite26GetAlternativeWidgetNumberEv @ 20 NONAME - _ZN10CHnMdSuite9SuiteNameEv @ 21 NONAME - _ZN19CHnXmlModelProvider12ReloadModelLEv @ 22 NONAME - _ZN19CHnXmlModelProvider4NewLEv @ 23 NONAME - _ZN19CHnXmlModelProvider5NewLCEv @ 24 NONAME - _ZN19CHnXmlModelProvider9GetModelLERK7TDesC16R15RXmlEngDocument @ 25 NONAME - _ZN19CHnXmlModelProviderD0Ev @ 26 NONAME - _ZN19CHnXmlModelProviderD1Ev @ 27 NONAME - _ZN19CHnXmlModelProviderD2Ev @ 28 NONAME - _ZN7HnUtils10ReadFileLCERK7TDesC16 @ 29 NONAME - _ZN7HnUtils12LocateFileLCERK7TDesC16 @ 30 NONAME - _ZN7HnUtils13SetAttributeLERK14TXmlEngElementR5RBuf8 @ 31 NONAME - _ZN7HnUtils13SetAttributeLERK14TXmlEngElementRK6TDesC8R5RBuf8 @ 32 NONAME - _ZN7HnUtils15GetColumnTextLCEiRK6TDesC85TChar @ 33 NONAME - _ZN7HnUtils24GetColumnTextColumnCountERK6TDesC85TChar @ 34 NONAME - _ZN7HnUtils27LocateNearestLanguageFileLCERK7TDesC16 @ 35 NONAME - _ZN7HnUtils9ReadFileLERK7TDesC16 @ 36 NONAME - _ZN9CHnFilter10SetSuiteIdEi @ 37 NONAME - _ZN9CHnFilter13AppendItemIdLEP9CHnItemId @ 38 NONAME - _ZN9CHnFilter13SetSuiteNameLERK7TDesC16 @ 39 NONAME - _ZN9CHnFilter17SetEvaluateSuiteLEi @ 40 NONAME - _ZN9CHnFilter4NewLEv @ 41 NONAME - _ZN9CHnFilter5NewLCEv @ 42 NONAME - _ZN9CHnItemId4NewLERK7TDesC16S2_ @ 43 NONAME - _ZN9CHnItemId5NewLCERK7TDesC16S2_ @ 44 NONAME - _ZN9CHnItemId7UpdateLERKS_ @ 45 NONAME - _ZN9CHnMdItem3UidEv @ 46 NONAME - _ZN9CHnMdItem4TypeEv @ 47 NONAME - _ZN9CHnMdItem8TemplateEv @ 48 NONAME - _ZNK10CHnMdModel18IsForegroundQueuedEv @ 49 NONAME - _ZNK9CHnItemId2IdEv @ 50 NONAME - _ZNK9CHnItemId7CompareERKS_ @ 51 NONAME - _ZNK9CHnItemId9SuiteNameEv @ 52 NONAME + _ZN10CHnMdModel15DeleteLastSuiteEv @ 3 NONAME + _ZN10CHnMdModel15QueueForegroundENS_30TForegroundGainTriggeringEventE @ 4 NONAME + _ZN10CHnMdModel16HandleBackEventLEP22CHnSuiteModelContainerRK7TDesC16i @ 5 NONAME + _ZN10CHnMdModel17IgnoreEvaluationsEi @ 6 NONAME + _ZN10CHnMdModel17SuiteModelExistsLERK6TDesC8 @ 7 NONAME + _ZN10CHnMdModel18GetSuiteParametersEi @ 8 NONAME + _ZN10CHnMdModel4NewLEP23MHnMdModelEventObserverP22CHnSuiteModelContainer @ 9 NONAME + _ZN10CHnMdModel5NewLCEP23MHnMdModelEventObserverP22CHnSuiteModelContainer @ 10 NONAME + _ZN10CHnMdModel8SetModeLE7TMdMode @ 11 NONAME + _ZN10CHnMdModel9EvaluateLER9CHnFilter @ 12 NONAME + _ZN10CHnMdModel9EvaluateLEv @ 13 NONAME + _ZN10CHnMdSuite18GetSuiteParametersEv @ 14 NONAME + _ZN10CHnMdSuite19SetSuiteParametersLER20CLiwGenericParamList @ 15 NONAME + _ZN10CHnMdSuite26GetAlternativeWidgetNumberEv @ 16 NONAME + _ZN10CHnMdSuite9SuiteNameEv @ 17 NONAME + _ZN19CHnXmlModelProvider4NewLEv @ 18 NONAME + _ZN19CHnXmlModelProvider5NewLCEv @ 19 NONAME + _ZN19CHnXmlModelProvider9GetModelLERK7TDesC16R15RXmlEngDocument @ 20 NONAME + _ZN19CHnXmlModelProviderD0Ev @ 21 NONAME + _ZN19CHnXmlModelProviderD1Ev @ 22 NONAME + _ZN19CHnXmlModelProviderD2Ev @ 23 NONAME + _ZN7HnUtils10ReadFileLCERK7TDesC16 @ 24 NONAME + _ZN7HnUtils13SetAttributeLERK14TXmlEngElementR5RBuf8 @ 25 NONAME + _ZN7HnUtils13SetAttributeLERK14TXmlEngElementRK6TDesC8R5RBuf8 @ 26 NONAME + _ZN7HnUtils15GetColumnTextLCEiRK6TDesC85TChar @ 27 NONAME + _ZN7HnUtils24GetColumnTextColumnCountERK6TDesC85TChar @ 28 NONAME + _ZN7HnUtils27LocateNearestLanguageFileLCERK7TDesC16 @ 29 NONAME + _ZN7HnUtils9ReadFileLERK7TDesC16 @ 30 NONAME + _ZN9CHnFilter10SetSuiteIdEi @ 31 NONAME + _ZN9CHnFilter13AppendItemIdLEP9CHnItemId @ 32 NONAME + _ZN9CHnFilter13SetSuiteNameLERK7TDesC16 @ 33 NONAME + _ZN9CHnFilter17SetEvaluateSuiteLEi @ 34 NONAME + _ZN9CHnFilter4NewLEv @ 35 NONAME + _ZN9CHnFilter5NewLCEv @ 36 NONAME + _ZN9CHnItemId4NewLERK7TDesC16S2_ @ 37 NONAME + _ZN9CHnItemId5NewLCERK7TDesC16S2_ @ 38 NONAME + _ZN9CHnItemId7UpdateLERKS_ @ 39 NONAME + _ZN9CHnMdItem3UidEv @ 40 NONAME + _ZN9CHnMdItem4TypeEv @ 41 NONAME + _ZN9CHnMdItem8TemplateEv @ 42 NONAME + _ZNK10CHnMdModel18IsForegroundQueuedEv @ 43 NONAME + _ZNK9CHnItemId2IdEv @ 44 NONAME + _ZNK9CHnItemId7CompareERKS_ @ 45 NONAME + _ZNK9CHnItemId9SuiteNameEv @ 46 NONAME diff -r 137ebc85284b -r 1b758917cafc menufw/hierarchynavigator/hnmetadatamodel/group/hnmetadatamodel.mmp --- a/menufw/hierarchynavigator/hnmetadatamodel/group/hnmetadatamodel.mmp Tue May 25 12:29:32 2010 +0300 +++ b/menufw/hierarchynavigator/hnmetadatamodel/group/hnmetadatamodel.mmp Wed Jun 09 09:29:04 2010 +0300 @@ -71,7 +71,6 @@ SOURCE hnsimpleconditionhas.cpp SOURCE hnsimpleconditionhasnot.cpp SOURCE hnxmlmodelcache.cpp -SOURCE hnxmlsuitefilesreg.cpp SOURCE hnbitmapidcache.cpp USERINCLUDE ../inc diff -r 137ebc85284b -r 1b758917cafc menufw/hierarchynavigator/hnmetadatamodel/inc/hnglobals.h --- a/menufw/hierarchynavigator/hnmetadatamodel/inc/hnglobals.h Tue May 25 12:29:32 2010 +0300 +++ b/menufw/hierarchynavigator/hnmetadatamodel/inc/hnglobals.h Wed Jun 09 09:29:04 2010 +0300 @@ -140,7 +140,11 @@ } +//paths +_LIT( KFolderSuitePath, "Z:\\private\\101F4CD2\\import\\suites\\foldersuite\\suite.xml" ); +_LIT( KFolderItemsPath, "Z:\\private\\101F4CD2\\import\\suites\\foldersuite\\items.xml" ); +//XML tags _LIT8( KMm8, "mm" ); _LIT8( KContentElementName8, "content" ); _LIT8( KSuiteElementName8, "suite" ); @@ -324,6 +328,7 @@ // widget types _LIT8 ( KSuite8, "suite" ); _LIT ( KFolderSuite, "foldersuite" ); +_LIT8 ( KFolderSuite8, "foldersuite" ); _LIT8 ( KWidgetType8, "type" ); _LIT8 ( KAllowedTypes8, "allowed_types" ); _LIT8 ( KWidgetTypeList8, "list" ); diff -r 137ebc85284b -r 1b758917cafc menufw/hierarchynavigator/hnmetadatamodel/inc/hnmdlocalization.h --- a/menufw/hierarchynavigator/hnmetadatamodel/inc/hnmdlocalization.h Tue May 25 12:29:32 2010 +0300 +++ b/menufw/hierarchynavigator/hnmetadatamodel/inc/hnmdlocalization.h Wed Jun 09 09:29:04 2010 +0300 @@ -97,20 +97,6 @@ HBufC* LoadL( const TDesC& aResourceName, const CDesC16Array* aDesParams, const CArrayFix<TInt>* aIntParams ); - - /** - * Realeses loaded resources. - * - * @since S60 5.0 - */ - void ReleaseResourceFiles(); - /** - * Reloads realesed resources. - * - * @since S60 5.0 - */ - void ReloadResourceFilesL(); - private: /** @@ -189,17 +175,7 @@ * Not own. */ CCoeEnv* iCoeEnv; - - /** - * Own - Dynamic offset. - */ - RArray< TInt > iDynamicOffset; - - /** - * Own - Dynamic localization. - */ - RPointerArray<CHnMdLocalizationElement> iDynamicLocalization; - + /** * Own - Internal offset. */ diff -r 137ebc85284b -r 1b758917cafc menufw/hierarchynavigator/hnmetadatamodel/inc/hnmdmodel.h --- a/menufw/hierarchynavigator/hnmetadatamodel/inc/hnmdmodel.h Tue May 25 12:29:32 2010 +0300 +++ b/menufw/hierarchynavigator/hnmetadatamodel/inc/hnmdmodel.h Wed Jun 09 09:29:04 2010 +0300 @@ -394,21 +394,6 @@ */ IMPORT_C void DeleteLastSuite(); - - /** - * Realeses localization files. - * - * @since S60 5.0 - */ - IMPORT_C void ReleaseLocalization(); - - /** - * Reloads localization. - * - * @since S60 5.0 - */ - IMPORT_C void ReloadLocalizationL(); - /** * Informs metadatamodel to ignore evaluations or * to performing evaluations, according to the @@ -453,16 +438,6 @@ void SuiteModelReadyToShowL( CHnSuiteModel* aJustEvaluatedSuite ); /** - * Causes all of the loades suites except for the suite at the bottom - * of the stack to be reloaded from their corresponding xml file - * definitions. - * - * @since S60 5.0 - * @param aIgnore aModelContainer Model container object. - */ - void ReloadStackSuitesL( CHnSuiteModelContainer* aModelContainer ); - - /** * Counts number of loaded suites. * * @since S60 5.0 diff -r 137ebc85284b -r 1b758917cafc menufw/hierarchynavigator/hnmetadatamodel/inc/hnutils.h --- a/menufw/hierarchynavigator/hnmetadatamodel/inc/hnutils.h Tue May 25 12:29:32 2010 +0300 +++ b/menufw/hierarchynavigator/hnmetadatamodel/inc/hnutils.h Wed Jun 09 09:29:04 2010 +0300 @@ -61,15 +61,6 @@ */ IMPORT_C static HBufC8* ReadFileL(const TDesC& aPath); - /** - * Locates file. - * - * @since S60 v3.0 - * @param aFile File name. - * @return File path. - */ - IMPORT_C static HBufC* LocateFileLC( const TDesC& aFile ); - /** * Locates nearest Language file. * diff -r 137ebc85284b -r 1b758917cafc menufw/hierarchynavigator/hnmetadatamodel/inc/hnxmlmodelprovider.h --- a/menufw/hierarchynavigator/hnmetadatamodel/inc/hnxmlmodelprovider.h Tue May 25 12:29:32 2010 +0300 +++ b/menufw/hierarchynavigator/hnmetadatamodel/inc/hnxmlmodelprovider.h Wed Jun 09 09:29:04 2010 +0300 @@ -36,7 +36,7 @@ * @since S60 5.0 * @ingroup group_hnmetadatamodel */ -NONSHARABLE_CLASS(CHnXmlModelProvider) : public CActive +NONSHARABLE_CLASS(CHnXmlModelProvider) : public CBase { public: /** @@ -60,18 +60,6 @@ */ IMPORT_C virtual ~CHnXmlModelProvider(); - /** - * @see CAsctive::DoCancel - */ - void DoCancel(); - - /** - * Services the suite synchronization steps according to class iterator. - * - * @see CAsctive::RunL - */ - void RunL(); - private: /** @@ -97,37 +85,26 @@ * Builds root of xml model from suite definition. * * @since S60 v5.0 - * @param aSuiteName Suite name. * @param aXmlDoc XLM model of the suite. * @return Error code. */ - TInt CollectSuiteL( const TDesC& aSuiteName, RXmlEngDocument& aXmlDoc ); + TInt CollectSuiteL( RXmlEngDocument& aXmlDoc ); /** * appends items to suite in model, * * @since S60 v5.0 - * @param aSuiteName Name of suite to append items to. * @param aXmlDoc XLM model of the suite. */ - void CollectItemsL(const TDesC& aSuiteName, RXmlEngDocument& aXmlDoc ); - - /** - * Copies suites and items definitions to working dir. - * - * @since S60 v5.0 - * @return Error code. - */ - TBool SynchronizeSuitesL(); - + void CollectItemsL( RXmlEngDocument& aXmlDoc ); + /** * Creates model from suite definition. * * @since S60 v5.0 - * @param aStr Name of suite. * @param aXmlDoc XML model of the suite. */ - void CreateModelL( const TDesC& aStr, RXmlEngDocument& aXmlDoc ); + void CreateModelL( RXmlEngDocument& aXmlDoc ); /** * Changes event names to ids. @@ -166,17 +143,7 @@ * @return RXmlEngDocument. */ RXmlEngDocument ParseFileL( const TDesC& aPath ); - - /** - * Resets cached models. - */ - void ResetCache(); - - /** - * Reparses a document. - */ - IMPORT_C void ReloadModelL(); - + /** * Parses a document - searching proper suite. * @@ -193,41 +160,10 @@ * @return Event id. */ TInt GetNewEventId( HBufC* aEventName ); - - /** - * Check if suite exists. - * - * @since S60 5.0 - * @param aSuite Suite name. - * @return ETrue if suite exists, otherwise EFalse. - */ - TBool SuiteExistsL( const TDesC& aSuite ); - + private: /** - * Invoked after asynchronous synchronization is finished. - */ - void SynchronizationFinishedL(); - - /** - * Sets up normal path to suites. - * - * @param aPath Path to be searched for suites. - */ - void SearchPathForSuitesL( const TDesC& aPath ); - - /** - * Sets up normal path to suites. - */ - void SetupSuitePathL(); - - /** - * Sets up fail sage path to suites. - */ - void SetupFailSafeSuitePathL(); - - /** * Standard C++ constructor. */ CHnXmlModelProvider(); @@ -236,15 +172,6 @@ * Standard symbian 2nd phase constructor. */ void ConstructL(); - - /** - * Finds drive letter where suite definition is. - * - * @since S60 v5.0 - * @return Error code - */ - void CheckDrivesL(); - #ifdef _DEBUG private: @@ -265,49 +192,14 @@ RXmlEngDOMParser iDomParser; /** - * File server session - */ - RFs iFs; - - /** - * File manager - */ - CFileMan* iFileMan; - - /** - * List containing names of suites (suite name is same as dir name) - * that should be installed from all drives - */ - RHashSet< HBufC* > iInstSuites; - - /** * Event map. */ RHashMap< HBufC*, TInt > iEventMap; - - /** - * Main path. - */ - RBuf iPath; - + /** * Cached suites. */ CHnXmlModelCache* iCache; - /** - * Own. Iterator used in synchronisation. - * Indicates next suite name to be synchronised. - */ - THashSetIter<HBufC*>* iSuiteSetIterator; - - /** - * ETrue if suite files on the c: drive were updated during the - * last synchronization. New suite files also count as updated. - * EFalse if the last synchronization did not alter any files - * on the c: drive. - */ - TBool iSuiteFilesUpdated; - }; #endif // C_HNMULMODELPROVIDER_H diff -r 137ebc85284b -r 1b758917cafc menufw/hierarchynavigator/hnmetadatamodel/inc/hnxmlsuitefilesreg.h --- a/menufw/hierarchynavigator/hnmetadatamodel/inc/hnxmlsuitefilesreg.h Tue May 25 12:29:32 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,160 +0,0 @@ -/* -* Copyright (c) 2007-2008 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: -* Version : %version: 2 % << Don't touch! Updated by Synergy at check-out. -* -*/ - - - -#ifndef C_HNXMLSUITEFILESREG_H -#define C_HNXMLSUITEFILESREG_H - -#include <bautils.h> -#include <e32hashtab.h> - -/** - * Structure binding file information together. - * All of this information is essential when synchronising suite files. - */ -NONSHARABLE_STRUCT(THnFileInfo) - { - TBuf< KMaxFileName > iFileName; - TBuf< KMaxPath > iFilePath; - TTime iLastModified; - TInt iSize; - }; - -/** - * Registry of suite definition files. - * - * Keeps track of the suite files' sync. - * - * @lib hnmetadatamodel - * @since S60 5.0 - * @ingroup group_hnmetadatamodel - */ -NONSHARABLE_CLASS(CHnXmlSuiteFilesReg) : public CBase - { -public: - /** - * Standard factory method. - * - * @since S60 v5.0 - * @return Fully constructed object. - */ - static TBool SynchronizeL( RFs & aFs, const TDesC &aSuiteName ); - - /** - * Standard virtual destructor. - */ - virtual ~CHnXmlSuiteFilesReg(); - -private: - - /** - * Standard C++ constructor. - */ - CHnXmlSuiteFilesReg( RFs & aFs ); - - /** - * Standard symbian 2nd phase constructor. - */ - void ConstructL( const TDesC &aSuiteName ); - - /** - * Destroys suite file maps. - */ - void DestroySuiteFilesMaps(); - - /** - * Returns the valid suite import dir. - * - * @param aDriveNumber Number of the drive for which to create path. - * @return Path. - */ - HBufC* GetSuiteImportDirL( TInt aDriveNumber ) const; - - /** - * Searches all the drives for import files for this particular suite. - */ - void SearchDrivesForSuiteFilesL(); - - /** - * Processes suite import dir. - * - * @param aSuitePath Path of the suite import. - */ - void SearchDirForSuiteFilesL( const TDesC& aSuitePath ); - - /** - * Adds a file to the suite map. The logics in the methods always prefers - * the newer files over the older. If a file by the same name already exists - * with a newer date file will not be added. - * - * @param aDir Directory of the new file. - * @param aFile New file entry. - */ - void AddSuiteFileToMapL( const TDesC& aDir, const TEntry& aFile ); - - /** - * Calculates the current size of the dir in the installation.\ - * - * @return Size in bytes. - */ - TInt CalculateCurrentSuiteSizeL(); - - /** - * Calculates the size of the data to be synchronised. - * - * @return Size in bytes. - */ - TInt CalculateSynchronizationSuiteSize(); - - /** - * Synchronizes the suite files. - */ - TBool SynchronizeSuiteFilesL(); - - /** - * Constructs the valid installation path. - * - * @return The installation path. - */ - HBufC* GetSuiteInstallPathL(); - -private: - - /** - * Name of the suite (suite folder). - */ - RBuf iSuiteName; - - /** - * File server session reference - */ - RFs &iFs; - - /** - * File manager - */ - CFileMan* iFileMan; - - /** - * Hashmap containing paths to the suite files. - */ - RHashMap< const TDesC*, THnFileInfo* > iSuiteFiles; - - }; -#endif // C_HNXMLSUITEFILESREG_H diff -r 137ebc85284b -r 1b758917cafc menufw/hierarchynavigator/hnmetadatamodel/src/hnmdlocalization.cpp --- a/menufw/hierarchynavigator/hnmetadatamodel/src/hnmdlocalization.cpp Tue May 25 12:29:32 2010 +0300 +++ b/menufw/hierarchynavigator/hnmetadatamodel/src/hnmdlocalization.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -119,7 +119,6 @@ { TInt count = iInternalLocalization.Count(); const CHnMdLocalizationElement* element = NULL; - for ( TInt i = 0; i < count; i++ ) { const CHnMdLocalizationElement* tmp = iInternalLocalization[i]; @@ -129,21 +128,6 @@ break; } } - if( !element ) - { - count = iDynamicLocalization.Count(); - - for ( TInt i = 0; i < count; i++ ) - { - const CHnMdLocalizationElement* tmp = iDynamicLocalization[i]; - if ( !tmp->Namespace().Compare( aNamespace) ) - { - element = tmp; - break; - } - } - } - return element; } @@ -161,13 +145,6 @@ // CHnMdLocalization::~CHnMdLocalization() { - iDynamicLocalization.ResetAndDestroy(); - for( TInt i( 0 ); i < iDynamicOffset.Count(); i++ ) - { - iCoeEnv->DeleteResourceFile( iDynamicOffset[i] ); - } - iDynamicOffset.Close(); - iInternalLocalization.ResetAndDestroy(); for( TInt i( 0 ); i < iInternalOffset.Count(); i++ ) { @@ -179,42 +156,6 @@ // --------------------------------------------------------------------------- // // --------------------------------------------------------------------------- -// -void CHnMdLocalization::ReloadResourceFilesL() - { - for( TInt i( 0 ); i < iDynamicLocalization.Count(); i++ ) - { - iDynamicLocalization[i]->LocateLanguageFileL(); - if( iDynamicLocalization[i]->SourcePath() ) - { - TInt offset( 0 ); - TRAPD( err, offset = iCoeEnv->AddResourceFileL( - *(iDynamicLocalization[i]->SourcePath()) ) ); - if ( !err ) - { - iDynamicOffset.AppendL( offset ); - } - } - } - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -void CHnMdLocalization::ReleaseResourceFiles() - { - iDynamicLocalization.ResetAndDestroy(); - for( TInt i( 0 ); i < iDynamicOffset.Count(); i++ ) - { - iCoeEnv->DeleteResourceFile( iDynamicOffset[i] ); - } - iDynamicOffset.Reset(); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- // void CHnMdLocalization::AppendElementL( CHnMdLocalizationElement* aElement ) { @@ -231,19 +172,6 @@ } } } - else - { - iDynamicLocalization.AppendL( aElement ); - if( IsResourceFile (aElement->Source()) ) - { - TInt offset( 0 ); - TRAPD( err, offset = iCoeEnv->AddResourceFileL( *(aElement->SourcePath()) ) ); - if ( !err ) - { - iDynamicOffset.AppendL( offset ); - } - } - } } // --------------------------------------------------------------------------- diff -r 137ebc85284b -r 1b758917cafc menufw/hierarchynavigator/hnmetadatamodel/src/hnmdmodel.cpp --- a/menufw/hierarchynavigator/hnmetadatamodel/src/hnmdmodel.cpp Tue May 25 12:29:32 2010 +0300 +++ b/menufw/hierarchynavigator/hnmetadatamodel/src/hnmdmodel.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -50,8 +50,6 @@ MMPERF(("CHnMetaDataModel::ConstructL - bitmap and mask ids cache ready")); iBitmapIdCache = CHnBitmapIdCache::NewL(); MMPERF(("CHnMetaDataModel::ConstructL - model privider ready")); - iXmlModelProvider->ReloadModelL(); - MMPERF(("CHnMetaDataModel::ConstructL - model reloaded")); iCmnPtrs.iLocalization = iLocalization; iCmnPtrs.iIdGenerator = &iIdGenerator; @@ -165,102 +163,12 @@ // // --------------------------------------------------------------------------- // -EXPORT_C void CHnMdModel::HandleSisInstallationEventL( - CHnSuiteModelContainer* /*aModelContainer*/ ) - { - iXmlModelProvider->ReloadModelL(); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -void CHnMdModel::ReloadStackSuitesL( CHnSuiteModelContainer* aModelContainer ) - { - RPointerArray< CLiwGenericParamList > paramsArray; - CleanupResetAndDestroyPushL( paramsArray ); - - TBool rootDisplayed( iLoadedSuites.Count() == 1 ); - while( iLoadedSuites.Count() > 0 ) - { - // break loop to leave root suite on the stack - if( ( iLoadedSuites.Count() == 1 && paramsArray.Count() > 0 ) - || rootDisplayed ) - { - break; - } - - CHnMdSuite* suite = GetLastSuite(); - if( iXmlModelProvider->SuiteExistsL( suite->SuiteName() ) ) - { - CLiwGenericParamList* suiteParams = CLiwGenericParamList::NewL(); - CleanupStack::PushL( suiteParams ); - suiteParams->AppendL( suite->GetSuiteParameters() ); - paramsArray.Append( suiteParams ); - CleanupStack::Pop( suiteParams ); - } - aModelContainer->PopSuiteModelL( suite->SuiteName() ); - DeleteLastSuite(); - } - - TInt err( KErrNone ); - CHnFilter* filter = CHnFilter::NewLC(); - filter->SetEvaluateSuiteL( ETrue ); - - SetModeL( iMode ); - - for( TInt i( paramsArray.Count() - 1 ); i >= 0 && !err; i-- ) - { - CLiwGenericParamList* suiteParams = CLiwGenericParamList::NewL(); - CleanupStack::PushL(suiteParams); - suiteParams->AppendL( *(paramsArray[ i ])); - TInt pos( 0 ); - const TLiwGenericParam* param = suiteParams->FindFirst( pos, KSuiteName8 ); - if ( param && pos >= 0) - { - TPtrC suiteName; - param->Value().Get( suiteName ); - err = LoadSuiteL( suiteName, suiteParams ); - } - CleanupStack::PopAndDestroy( suiteParams ); - - GetLastSuite()->SetModeL( iMode ); - GetLastSuite()->MarkEvaluationL( - *filter, *iCmnPtrs.iContainer->GetLastSuiteModel() ); - GetLastSuite()->EvaluateL( *iCmnPtrs.iContainer->GetLastSuiteModel() ); - } - - CleanupStack::PopAndDestroy( filter ); - CleanupStack::PopAndDestroy( ¶msArray ); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// EXPORT_C void CHnMdModel::DeleteLastSuite() { CHnMdSuite* tmpPtr = GetLastSuite(); iLoadedSuites.Remove( iLoadedSuites.Count() - 1 ); delete tmpPtr; } -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -EXPORT_C void CHnMdModel::ReleaseLocalization() - { - iLocalization->ReleaseResourceFiles(); - iXmlModelProvider->ResetCache(); - } -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -EXPORT_C void CHnMdModel::ReloadLocalizationL() - { - iLocalization->ReloadResourceFilesL(); - } // --------------------------------------------------------------------------- // @@ -461,10 +369,11 @@ EXPORT_C TBool CHnMdModel::SuiteModelExistsL( const TDesC8& aSuiteModel ) { TBool res( EFalse ); - HBufC* suiteName = HnConvUtils::Str8ToStrLC( aSuiteModel ); - res = iXmlModelProvider->SuiteExistsL( *suiteName ) || - aSuiteModel.Compare( KRoot8 ) == KErrNone ; - CleanupStack::PopAndDestroy( suiteName ); + if( !aSuiteModel.Compare( KFolderSuite8 ) || + !aSuiteModel.Compare( KRoot8 ) ) + { + res = ETrue; + } return res; } @@ -472,22 +381,6 @@ // // --------------------------------------------------------------------------- // -EXPORT_C void CHnMdModel::GetCurrentUriL( TDes& aUri ) - { - iXmlModelProvider->ReloadModelL(); - - aUri.Append( KPrefMm ); - for( TInt i(0); i < iLoadedSuites.Count(); i++ ) - { - aUri.Append( iLoadedSuites[ i ]->SuiteName() ); - aUri.Append( KSlash ); - } - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// void CHnMdModel::EvaluateTopSuiteL() { if ( !iIgnoreEvaluations ) diff -r 137ebc85284b -r 1b758917cafc menufw/hierarchynavigator/hnmetadatamodel/src/hnmdvalueimage.cpp --- a/menufw/hierarchynavigator/hnmetadatamodel/src/hnmdvalueimage.cpp Tue May 25 12:29:32 2010 +0300 +++ b/menufw/hierarchynavigator/hnmetadatamodel/src/hnmdvalueimage.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -36,6 +36,7 @@ #include "menudebug.h" #include "hnbitmapidcache.h" +_LIT( KGridRootMif, "gridroot.mif" ); // ======== MEMBER FUNCTIONS ======== // --------------------------------------------------------------------------- @@ -277,26 +278,9 @@ HBufC* CHnMdValueImage::FindMatchigMifFileL( const RFs& aFs, TDesC& aFileName ) { DEBUG16(("_MM_: CHnMdValueImage::FindMatchigMifFileL IN")); - - _LIT( KGridRootMif, "gridroot.mif" ); - - // whole path to the mif file was not specified + HBufC* ret = NULL; TDriveList driveList; - HBufC* ret = NULL; - - if ( aFileName == KGridRootMif ) - { - ret = HBufC::NewL( - 1 + KRscPath().Length() + // 1 - drive letter len. - aFileName.Length() ); - TPtr ptr( ret->Des() ); - TChar driveLetter; - aFs.DriveToChar( EDriveZ, driveLetter ); - ptr.Append( driveLetter ); - ptr.Append( KRscPath ); - ptr.Append( aFileName ); - } - else if ( KErrNone == aFs.DriveList( driveList ) ) + if ( KErrNone == aFs.DriveList( driveList ) ) { TInt driveNumber( EDriveY ); // start with drive Y do // iterates through drives: Y, X, W, ..., C, B, A, Z @@ -352,7 +336,21 @@ TInt errCode = HnLiwUtils::GetStringL( *iParamList, iMifFile8, iPos, tmpBuf ); if ( tmpBuf.Length() ) { - if ( BaflUtils::FileExists( iCmnPtrs->iFs, tmpBuf ) ) + TDriveList driveList; + if ( tmpBuf == KGridRootMif ) + { + HBufC* temp = HBufC::NewL( + 1 + KRscPath().Length() + // 1 - drive letter len. + tmpBuf.Length() ); + TPtr ptr( temp->Des() ); + TChar driveLetter; + iCmnPtrs->iFs.DriveToChar( EDriveZ, driveLetter ); + ptr.Append( driveLetter ); + ptr.Append( KRscPath ); + ptr.Append( tmpBuf ); + ret = temp; + } + else if ( BaflUtils::FileExists( iCmnPtrs->iFs, tmpBuf ) ) { // return fileName as it is ret = tmpBuf.AllocL(); @@ -572,64 +570,4 @@ aKeyMask.Append( aMaskIdBuf ); } -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -//CGulIcon* CHnMdValueImage::GetIconL( -// const CLiwGenericParamList* aQueriesResultsList, TInt aPos ) -// { -// CGulIcon* gulIcon = NULL; -// -// iParamList = aQueriesResultsList; -// iPos = aPos; -// -// // only to set iImageSource, to be optimized -// SetImageSourceL(); -// -// TSize defaultSize( KDefaultIconSize, KDefaultIconSize ); -// -// CFbsBitmap* bitmap = NULL; -// CFbsBitmap* mask = NULL; -// -// MAknsSkinInstance* skin = AknsUtils::SkinInstance(); -// -// switch( iImageSource ) -// { -// case EImageSourceResource: -// { -// TInt bitmapId = 0; -// TInt maskId = 0; -// GetBitmapAndMaskIdL(bitmapId, maskId); -// if ( iMifFileName && bitmapId != KErrNotFound ) -// { -// AknsUtils::CreateIconL( -// skin, SkinIdL(), bitmap, mask, -// *iMifFileName, bitmapId, maskId ); -// } -// } -// break; -// default: -// { -// User::Panic( KMatrixPanic , 1 ); -// } -// } -// -// if ( EImageSourceUndefined != iImageSource ) -// { -// if ( EImageSourceFile != iImageSource ) -// { -// gulIcon = CGulIcon::NewL( bitmap, mask ); -// AknIconUtils::SetSize( mask, defaultSize ); -// AknIconUtils::SetSize( bitmap, defaultSize ); -// } -// else -// { -// gulIcon = CGulIcon::NewL( bitmap ); -// AknIconUtils::SetSize( bitmap, defaultSize ); -// } -// } -// -// return gulIcon; -// } diff -r 137ebc85284b -r 1b758917cafc menufw/hierarchynavigator/hnmetadatamodel/src/hnutils.cpp --- a/menufw/hierarchynavigator/hnmetadatamodel/src/hnutils.cpp Tue May 25 12:29:32 2010 +0300 +++ b/menufw/hierarchynavigator/hnmetadatamodel/src/hnutils.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -75,44 +75,6 @@ // // --------------------------------------------------------------------------- // -EXPORT_C HBufC* HnUtils::LocateFileLC( const TDesC& aFile ) - { - HBufC* filePath = HBufC::NewLC(KMaxName); - RFs& fs = CEikonEnv::Static()->FsSession(); - - TDriveList driveList; - TChar driveLetter; - TInt driveNumber=EDriveY; - User::LeaveIfError(fs.DriveList(driveList)); - for(; driveNumber>=EDriveA-1; driveNumber-- ) - { - if (driveNumber==EDriveA-1) - driveNumber = EDriveZ; - if (driveList[driveNumber]) - { - User::LeaveIfError(fs.DriveToChar(driveNumber, driveLetter)); - filePath->Des().Zero(); - filePath->Des().Append(driveLetter); - filePath->Des().Append(KRscPath); - filePath->Des().Append(aFile); - - if (BaflUtils::FileExists(fs,*filePath)) - { - return filePath; - } - } - if (driveNumber == EDriveZ) - break; - } - - User::Leave(KErrNotFound); - return filePath; - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// EXPORT_C HBufC* HnUtils::LocateNearestLanguageFileLC( const TDesC& aFile ) { _LIT( KExtRSC, ".r"); @@ -122,31 +84,22 @@ RFs& fs = CEikonEnv::Static()->FsSession(); TDriveList driveList; TChar driveLetter; - TInt driveNumber=EDriveY; - User::LeaveIfError(fs.DriveList(driveList)); + //locate resources only on Z drive for foldersuite + //no need to scan all drives + TInt driveNumber=EDriveZ; TFileName file; - for(; driveNumber>=EDriveA-1; driveNumber-- ) + User::LeaveIfError(fs.DriveToChar(driveNumber, driveLetter)); + filePath->Des().Zero(); + filePath->Des().Append(driveLetter); + filePath->Des().Append(KRscPath); + filePath->Des().Append(aFile); + + file = *filePath; + BaflUtils::NearestLanguageFile( fs, file); + if( BaflUtils::FileExists( fs, file)) { - if (driveNumber==EDriveA-1) - driveNumber = EDriveZ; - if (driveList[driveNumber]) - { - User::LeaveIfError(fs.DriveToChar(driveNumber, driveLetter)); - filePath->Des().Zero(); - filePath->Des().Append(driveLetter); - filePath->Des().Append(KRscPath); - filePath->Des().Append(aFile); - - file = *filePath; - BaflUtils::NearestLanguageFile( fs, file); - if( BaflUtils::FileExists( fs, file)) - { - CleanupStack::PopAndDestroy(filePath); - return file.AllocLC(); - } - } - if (driveNumber == EDriveZ) - break; + CleanupStack::PopAndDestroy(filePath); + return file.AllocLC(); } CleanupStack::PopAndDestroy(filePath); } diff -r 137ebc85284b -r 1b758917cafc menufw/hierarchynavigator/hnmetadatamodel/src/hnxmlmodelprovider.cpp --- a/menufw/hierarchynavigator/hnmetadatamodel/src/hnxmlmodelprovider.cpp Tue May 25 12:29:32 2010 +0300 +++ b/menufw/hierarchynavigator/hnmetadatamodel/src/hnxmlmodelprovider.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -18,7 +18,6 @@ #include <sysutil.h> #include "hnxmlmodelprovider.h" #include "hnxmlmodelcache.h" -#include "hnxmlsuitefilesreg.h" #include "hnglobals.h" #include "hnconvutils.h" #include "menudebug.h" @@ -36,79 +35,13 @@ { iDomImpl.OpenL(); User::LeaveIfError(iDomParser.Open(iDomImpl)); - User::LeaveIfError(iFs.Connect()); - iFileMan = CFileMan::NewL(iFs); - - iPath.CreateL(KMaxPath); - User::LeaveIfError(iFs.PrivatePath(iPath)); - iPath.Insert(0, KDrive); - iPath.Append(KEntriesSuffix); iCache = CHnXmlModelCache::NewL(); - - CActiveScheduler::Add( this); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -void CHnXmlModelProvider::DoCancel() - { - } // --------------------------------------------------------------------------- // // --------------------------------------------------------------------------- // -void CHnXmlModelProvider::SynchronizationFinishedL() - { - ResetCache(); - THnMdCommonPointers &cmnPtr = *THnMdCommonPointers::Static(); - CHnMdModel* model = cmnPtr.iModel; - if ( iSuiteFilesUpdated ) - { - model->ReloadStackSuitesL( cmnPtr.iContainer ); - } - } -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -void CHnXmlModelProvider::RunL() - { - if ( !iSuiteSetIterator ) - { - CheckDrivesL(); - iSuiteSetIterator = new ( ELeave ) THashSetIter<HBufC*>( iInstSuites ); - iSuiteSetIterator->Reset(); - iStatus = KRequestPending; - SetActive(); - TRequestStatus* status = &iStatus; - User::RequestComplete( status, KErrNone ); - } - else if ( iSuiteSetIterator->Next() ) - { - TBool filesUpdated = CHnXmlSuiteFilesReg::SynchronizeL( - iFs, **(iSuiteSetIterator->Current()) ); - iSuiteFilesUpdated = ( iSuiteFilesUpdated || filesUpdated ); - iStatus = KRequestPending; - SetActive(); - TRequestStatus* status = &iStatus; - User::RequestComplete( status, KErrNone ); - } - else - { - delete iSuiteSetIterator; - iSuiteSetIterator = NULL; - SynchronizationFinishedL(); - } - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// EXPORT_C CHnXmlModelProvider* CHnXmlModelProvider::NewL() { CHnXmlModelProvider* self = CHnXmlModelProvider::NewLC(); @@ -132,11 +65,7 @@ // // --------------------------------------------------------------------------- // -CHnXmlModelProvider::CHnXmlModelProvider() : - CActive( EPriorityLow ), - iInstSuites(&HBuf16Hash, &HBuf16Ident), - iEventMap(&HBuf16Hash, &HBuf16Ident), - iSuiteSetIterator( NULL ) +CHnXmlModelProvider::CHnXmlModelProvider(): iEventMap(&HBuf16Hash, &HBuf16Ident) { } @@ -147,15 +76,9 @@ // EXPORT_C CHnXmlModelProvider::~CHnXmlModelProvider() { - Cancel(); - - delete iSuiteSetIterator; delete iCache; iDomParser.Close(); iDomImpl.Close(); - delete iFileMan; - iFs.Close(); - iPath.Close(); // clean up eventmap THashMapIter<HBufC*, TInt> iter(iEventMap); @@ -164,14 +87,6 @@ delete *ptr; } iEventMap.Close(); - - THashSetIter<HBufC*> iterSuites(iInstSuites); - while ( iterSuites.Next()) - { - delete *iterSuites.Current(); - } - iInstSuites.Close(); - } #ifdef _DEBUG @@ -275,7 +190,8 @@ HBufC8* CHnXmlModelProvider::ReadFileLC(const TDesC& aPath) { RFile file; - User::LeaveIfError( file.Open(iFs, aPath, EFileRead) ); + User::LeaveIfError( file.Open( CEikonEnv::Static()->FsSession(), + aPath, EFileRead) ); CleanupClosePushL( file ); TInt fileSize(0); @@ -326,25 +242,13 @@ // // --------------------------------------------------------------------------- // -TInt CHnXmlModelProvider::CollectSuiteL(const TDesC& aSuiteName, - RXmlEngDocument& aXmlDoc) +TInt CHnXmlModelProvider::CollectSuiteL( RXmlEngDocument& aXmlDoc ) { - TInt err(KErrNotFound); - TBuf<KMaxPath> filePath; - TBuf<KMaxPath> KsuitePath; - KsuitePath.Zero(); - KsuitePath.Copy(iPath); - KsuitePath.Append(aSuiteName); - KsuitePath.Append(Kbackslash); - - filePath.Zero(); - filePath.Copy(KsuitePath); - filePath.Append(KSuiteDefFileName); - - RXmlEngDocument suiteDoc; - CleanupClosePushL(suiteDoc); - - suiteDoc = ParseFileL(filePath); + TInt err(KErrNotFound); + RXmlEngDocument suiteDoc; + CleanupClosePushL( suiteDoc ); + //hardcoded path for suites as there is only foldersuite + suiteDoc = ParseFileL( KFolderSuitePath ); // one suite per file RXmlEngNodeList<TXmlEngElement> elements; @@ -372,133 +276,86 @@ // // --------------------------------------------------------------------------- // -TBool CHnXmlModelProvider::SuiteExistsL( const TDesC& aSuite ) - { - TBuf<KMaxPath> filePath; - TBuf<KMaxPath> KsuitePath; - KsuitePath.Zero(); - KsuitePath.Copy( iPath ); - KsuitePath.Append( aSuite ); - KsuitePath.Append( Kbackslash ); - - filePath.Zero(); - filePath.Copy( KsuitePath ); - filePath.Append( KSuiteDefFileName ); - - return BaflUtils::FileExists( iFs, filePath ); - } - - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -void CHnXmlModelProvider::CollectItemsL( const TDesC& aSuiteName, - RXmlEngDocument& aXmlDoc ) +void CHnXmlModelProvider::CollectItemsL( RXmlEngDocument& aXmlDoc ) { - TBuf<KMaxPath> filePath; - TBuf<KMaxPath> KsuitePath; - KsuitePath.Zero(); - KsuitePath.Copy( iPath ); - KsuitePath.Append( aSuiteName ); - KsuitePath.Append( Kbackslash ); - CDir* fileList; - iFs.GetDir( KsuitePath, KEntryAttMaskSupported, ESortByName, fileList); - CleanupStack::PushL(fileList); - - //for each file with entries definitions - for( TInt i(0); i<fileList->Count(); i++ ) - { - TPtrC fileName = (*fileList)[i].iName; + RXmlEngDocument itemDoc; + CleanupClosePushL( itemDoc ); + //hardcoded path for items as there is only foldersuite + TInt err( KErrNone ); + TRAP( err , itemDoc = ParseFileL(KFolderItemsPath) ); + if( !err ) + { + RXmlEngNodeList< TXmlEngElement > children; + CleanupClosePushL(children); + itemDoc.DocumentElement().GetChildElements(children); - if(!fileName.Compare(KSuiteDefFileName)) - continue; - - filePath.Zero(); - filePath.Copy(KsuitePath); - filePath.Append(fileName); - - RXmlEngDocument itemDoc; - CleanupClosePushL( itemDoc ); - - TInt err( KErrNone ); - TRAP( err , itemDoc = ParseFileL(filePath) ); - if( !err ) - { - RXmlEngNodeList< TXmlEngElement > children; - CleanupClosePushL(children); - itemDoc.DocumentElement().GetChildElements(children); + TPtrC8 itemGenre = + itemDoc.DocumentElement().AttributeNodeL(KGenreName8).Value(); - TPtrC8 itemGenre = - itemDoc.DocumentElement().AttributeNodeL(KGenreName8).Value(); - - TInt amount = children.Count(); - for( TInt i(0); i<amount; i++ ) + TInt amount = children.Count(); + for( TInt i(0); i<amount; i++ ) + { + TXmlEngElement child = children.Next(); + TPtrC8 tempChildName = child.Name(); + // append localizations to root + if (!child.Name().Compare(KLocalizationName8)) { - TXmlEngElement child = children.Next(); - TPtrC8 tempChildName = child.Name(); - // append localizations to root - if (!child.Name().Compare(KLocalizationName8)) - { - aXmlDoc.DocumentElement().AsElement().AppendChildL(child); - child.ReconcileNamespacesL(); - } - // append itmes to proper suite - else if (!child.Name().Compare(KItemName8) ) - { - // go througs item's children to change event names to ids - ChangeEventsToIdsInChildrenL(child); - - // edit_mode item - RXmlEngNodeList< TXmlEngElement > editModeItems; - CleanupClosePushL( editModeItems ); - child.GetChildElements( editModeItems ); - TInt count = editModeItems.Count(); - for ( TInt ic( 0 ); ic < count; ic++ ) + aXmlDoc.DocumentElement().AsElement().AppendChildL(child); + child.ReconcileNamespacesL(); + } + // append itmes to proper suite + else if (!child.Name().Compare(KItemName8) ) + { + // go througs item's children to change event names to ids + ChangeEventsToIdsInChildrenL(child); + + // edit_mode item + RXmlEngNodeList< TXmlEngElement > editModeItems; + CleanupClosePushL( editModeItems ); + child.GetChildElements( editModeItems ); + TInt count = editModeItems.Count(); + for ( TInt ic( 0 ); ic < count; ic++ ) + { + TXmlEngElement editModeItem = editModeItems.Next(); + if ( !editModeItem.Name().Compare( KEditModeItem8 )) { - TXmlEngElement editModeItem = editModeItems.Next(); - if ( !editModeItem.Name().Compare( KEditModeItem8 )) - { - editModeItem.AddNewAttributeL(KSuiteElementName8, - itemGenre); - } - } - CleanupStack::PopAndDestroy(&editModeItems); - // edit_mode items - end + editModeItem.AddNewAttributeL(KSuiteElementName8, + itemGenre); + } + } + CleanupStack::PopAndDestroy(&editModeItems); + // edit_mode items - end - RXmlEngNodeList<TXmlEngElement> suites; - CleanupClosePushL(suites); - aXmlDoc.DocumentElement().GetChildElements(suites); - TInt amountSuites = suites.Count(); - for (TInt i(0); i < amountSuites; i++) - { - TXmlEngElement childSuite = suites.Next(); - TPtrC8 tempName = child.Name(); - //find suite - if (!childSuite.Name().Compare(KTitleName8)) - { - TPtrC8 suiteGenre = childSuite.AttributeNodeL( - KGenreName8).Value(); + RXmlEngNodeList<TXmlEngElement> suites; + CleanupClosePushL(suites); + aXmlDoc.DocumentElement().GetChildElements(suites); + TInt amountSuites = suites.Count(); + for (TInt i(0); i < amountSuites; i++) + { + TXmlEngElement childSuite = suites.Next(); + TPtrC8 tempName = child.Name(); + //find suite + if (!childSuite.Name().Compare(KTitleName8)) + { + TPtrC8 suiteGenre = childSuite.AttributeNodeL( + KGenreName8).Value(); - //find proper suite to append item - if (!suiteGenre.Compare(itemGenre)) - { - child.AddNewAttributeL(KSuiteElementName8, - itemGenre); - childSuite.AppendChildL(child); - } + //find proper suite to append item + if (!suiteGenre.Compare(itemGenre)) + { + child.AddNewAttributeL(KSuiteElementName8, + itemGenre); + childSuite.AppendChildL(child); } } - aXmlDoc.DocumentElement().ReconcileNamespacesL(); - CleanupStack::PopAndDestroy( &suites ); - } - } - CleanupStack::PopAndDestroy( &children ); + } + aXmlDoc.DocumentElement().ReconcileNamespacesL(); + CleanupStack::PopAndDestroy( &suites ); + } } - CleanupStack::PopAndDestroy( &itemDoc ); - } - - CleanupStack::PopAndDestroy(fileList); + CleanupStack::PopAndDestroy( &children ); + } + CleanupStack::PopAndDestroy( &itemDoc ); } @@ -672,111 +529,19 @@ // --------------------------------------------------------------------------- // // --------------------------------------------------------------------------- -// -TBool CHnXmlModelProvider::SynchronizeSuitesL() - { - MMPERF(("CHnXmlModelProvider::SynchronizeSuitesL - START")); - iSuiteFilesUpdated = EFalse; - TBool refresh( EFalse ); - - if (IsActive()) - { - Cancel(); - } - - delete iSuiteSetIterator; - iSuiteSetIterator = NULL; - - iStatus = KRequestPending; - SetActive(); - TRequestStatus* status = &iStatus; - User::RequestComplete( status, KErrNone ); - - MMPERF(("CHnXmlModelProvider::SynchronizeSuitesL - DONE")); - return refresh; - } - -// --------------------------------------------------------------------------- // -// --------------------------------------------------------------------------- -// -void CHnXmlModelProvider::ResetCache() - { - iCache->Reset(); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -void CHnXmlModelProvider::SetupSuitePathL() - { - iPath.Close(); - iPath.CreateL(KMaxPath); - User::LeaveIfError(iFs.PrivatePath(iPath)); - TChar drive; - TBuf<1> driveLetter; - - iFs.DriveToChar( EDriveC, drive ); - iPath.Insert(0, KColon ); - driveLetter.Append( drive ); - iPath.Insert(0, driveLetter ); - iPath.Append(KEntriesSuffix); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -void CHnXmlModelProvider::SetupFailSafeSuitePathL() - { - iPath.Close(); - iPath.CreateL(KMaxPath); - User::LeaveIfError(iFs.PrivatePath(iPath)); - TChar drive; - TBuf<1> driveLetter; - - iFs.DriveToChar( EDriveZ, drive ); - iPath.Insert(0, KColon ); - driveLetter.Append( drive ); - iPath.Insert(0, driveLetter ); - iPath.Append(KSuitesDir); - } - - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -EXPORT_C void CHnXmlModelProvider::ReloadModelL() - { - SynchronizeSuitesL(); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -void CHnXmlModelProvider::CreateModelL(const TDesC& aSuiteName, - RXmlEngDocument& aXmlDoc ) +void CHnXmlModelProvider::CreateModelL( RXmlEngDocument& aXmlDoc ) { MMPERF( ( "CHnXmlModelProvider::CreateModelL IN") ); MMPERF( ( " Suite name: %S", &aSuiteName ) ); TBool suiteCollected = EFalse; - - SetupSuitePathL(); - TRAPD( failSafeErr, suiteCollected = CollectSuiteL( aSuiteName, aXmlDoc )); - if (failSafeErr) - { - SetupFailSafeSuitePathL(); - suiteCollected = CollectSuiteL( aSuiteName, aXmlDoc ); - } + suiteCollected = CollectSuiteL( aXmlDoc ); if ( !suiteCollected ) { MMPERF(("CHnXmlModelProvider::CreateModelL - suite collected")); - CollectItemsL( aSuiteName, aXmlDoc ); + CollectItemsL( aXmlDoc ); MMPERF(("CHnXmlModelProvider::CreateModelL - items collected")); } MMPERF( ( "CHnXmlModelProvider::CreateModelL OUT") ); @@ -795,7 +560,7 @@ RXmlEngDocument newXmlDoc; CleanupClosePushL( newXmlDoc ); - CreateModelL( aSuiteName, newXmlDoc ); + CreateModelL( newXmlDoc ); #ifdef _DEBUG DEBUG(("_MM_:CHnXmlModelProvider::GetModelL _DEBUG IN")); @@ -814,68 +579,3 @@ return KErrNone; } - - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -void CHnXmlModelProvider::SearchPathForSuitesL( const TDesC& aPath ) - { - CDir* fileList = NULL; - iFs.GetDir( aPath, KEntryAttMaskSupported, ESortByName, fileList ); - if ( fileList ) - { - CleanupStack::PushL( fileList ); - for( TInt i( 0 ); i < fileList->Count(); i++ ) - { - if ( (*fileList)[ i ].IsDir() ) - { - HBufC* suiteName = (*fileList)[i].iName.AllocLC(); - if ( !iInstSuites.Find(suiteName) ) - { - iInstSuites.InsertL( suiteName ); - CleanupStack::Pop(suiteName); - } - else - { - CleanupStack::PopAndDestroy(suiteName); - } - } - } - CleanupStack::PopAndDestroy( fileList ); - } - } -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -void CHnXmlModelProvider::CheckDrivesL() - { - TDriveList driveList; - User::LeaveIfError( iFs.DriveList( driveList ) ); - - TFixedArray< TInt, KMaxDrives > driveSearchOrder( KDriveSearchOrder, KMaxDrives ); - for(TInt iterator(0); iterator < driveSearchOrder.Count(); iterator++ ) - { - if ( driveList[ driveSearchOrder[ iterator ] ] ) - { - TBuf<KMaxPath> filePath; - - TChar driveLetter; - User::LeaveIfError( iFs.DriveToChar( driveSearchOrder[ iterator ], driveLetter ) ); - - TBuf< KSingleChar > driveLetterConst; - driveLetterConst.Append( driveLetter ); - User::LeaveIfError( iFs.PrivatePath( filePath ) ); - filePath.Insert( 0, driveLetterConst ); - filePath.Insert( 1, KColon ); - filePath.Append( KSuitesDir ); - - SearchPathForSuitesL( filePath ); - } - } - - SearchPathForSuitesL( iPath ); - } - diff -r 137ebc85284b -r 1b758917cafc menufw/hierarchynavigator/hnmetadatamodel/src/hnxmlsuitefilesreg.cpp --- a/menufw/hierarchynavigator/hnmetadatamodel/src/hnxmlsuitefilesreg.cpp Tue May 25 12:29:32 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,290 +0,0 @@ -/* -* Copyright (c) 2007-2008 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: -* Version : %version: 9 % << Don't touch! Updated by Synergy at check-out. -* -*/ - -#include <sysutil.h> -#include "hnxmlsuitefilesreg.h" -#include "hnglobals.h" -#include "hnconvutils.h" -#include "menudebug.h" -#include "hnhelper.inl" - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TBool CHnXmlSuiteFilesReg::SynchronizeL( RFs & aFs, const TDesC &aSuiteName ) - { - CHnXmlSuiteFilesReg* self = new (ELeave) CHnXmlSuiteFilesReg( aFs ); - CleanupStack::PushL(self); - self->ConstructL( aSuiteName ); - TBool ret = self->SynchronizeSuiteFilesL(); - CleanupStack::PopAndDestroy( self ); - return ret; - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -CHnXmlSuiteFilesReg::~CHnXmlSuiteFilesReg() - { - iSuiteName.Close(); - DestroySuiteFilesMaps(); - delete iFileMan; - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -CHnXmlSuiteFilesReg::CHnXmlSuiteFilesReg( RFs & aFs ) : iFs(aFs), - iSuiteFiles(&TDesC16Hash, &TDesC16Ident) - { - - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -HBufC* CHnXmlSuiteFilesReg::GetSuiteInstallPathL() - { - TBuf<KMaxPath> installPath; - User::LeaveIfError( iFs.PrivatePath(installPath) ); - TChar drive; - TBuf<1> driveLetter; - iFs.DriveToChar( EDriveC, drive ); - installPath.Insert(0, KColon ); - driveLetter.Append( drive ); - installPath.Insert(0, driveLetter ); - installPath.Append(KEntriesSuffix); - installPath.Append( iSuiteName ); - installPath.Append( Kbackslash ); - return installPath.AllocL(); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -void CHnXmlSuiteFilesReg::ConstructL( const TDesC &aSuiteName ) - { - iSuiteName.CreateL( aSuiteName ); - iFileMan = CFileMan::NewL(iFs); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -void CHnXmlSuiteFilesReg::DestroySuiteFilesMaps() - { - DestroyMapValue( iSuiteFiles ); - iSuiteFiles.Close(); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -HBufC* CHnXmlSuiteFilesReg::GetSuiteImportDirL( TInt aDriveNumber ) const - { - TBuf<KMaxPath> outputDir; - - TChar driveLetter; - User::LeaveIfError( iFs.DriveToChar( aDriveNumber, driveLetter ) ); - - TBuf< KSingleChar > driveLetterConst; - driveLetterConst.Append( driveLetter ); - - User::LeaveIfError( iFs.PrivatePath( outputDir ) ); - - outputDir.Insert( 0, driveLetterConst ); - outputDir.Insert( 1, KColon ); - outputDir.Append( KSuitesDir ); - outputDir.Append( iSuiteName ); - outputDir.Append( Kbackslash ); - - return outputDir.AllocL(); - } - - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -void CHnXmlSuiteFilesReg::SearchDrivesForSuiteFilesL() - { - DestroySuiteFilesMaps(); - - TDriveList driveList; - User::LeaveIfError( iFs.DriveList( driveList ) ); - TFixedArray< TInt, KMaxDrives > driveSearchOrder( KDriveSearchOrder, KMaxDrives ); - - for(TInt iterator(0); iterator < driveSearchOrder.Count(); iterator++ ) - { - if ( driveList[ driveSearchOrder[ iterator ] ] ) - { - RBuf filePath( GetSuiteImportDirL( driveSearchOrder[ iterator ] ) ); - CleanupClosePushL( filePath ); - SearchDirForSuiteFilesL(filePath); - CleanupStack::PopAndDestroy( &filePath ); - } - } - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -void CHnXmlSuiteFilesReg::SearchDirForSuiteFilesL( const TDesC& aSuitePath ) - { - CDir* fileList = NULL; - if (!iFs.GetDir( aSuitePath, KEntryAttMaskSupported, ESortByName, fileList )) - { - CleanupStack::PushL( fileList ); - for( TInt i( 0 ); i < fileList->Count(); i++ ) - { - if (! (*fileList)[i].IsDir() ) - { - AddSuiteFileToMapL( aSuitePath, (*fileList)[i] ); - } - } - CleanupStack::PopAndDestroy( fileList ); - } - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -void CHnXmlSuiteFilesReg::AddSuiteFileToMapL( const TDesC& aDir, const TEntry& aFile ) - { - THnFileInfo fileInfo = { aFile.iName, aDir, aFile.iModified, aFile.iSize }; - fileInfo.iFilePath.Append( aFile.iName ); - - THnFileInfo** existingFileInfo = iSuiteFiles.Find( &aFile.iName ); - - TInt newFileDrive( KErrNotFound ); - iFs.CharToDrive( fileInfo.iFilePath[0], newFileDrive ); - - TBool newerThanExisting( EFalse ); - TInt existingFileDrive( KErrNotFound ); - if ( existingFileInfo ) - { - iFs.CharToDrive( (*existingFileInfo)->iFilePath[0], existingFileDrive); - newerThanExisting = - (*existingFileInfo)->iLastModified < fileInfo.iLastModified && - newFileDrive != EDriveZ; - } - - if ( !existingFileInfo || newerThanExisting || existingFileDrive == EDriveZ ) - { - if( existingFileInfo ) - { - iSuiteFiles.Remove( &aFile.iName ); - } - THnFileInfo* fileInfoPointer = new (ELeave) THnFileInfo( fileInfo ); - iSuiteFiles.InsertL( &fileInfo.iFileName, fileInfoPointer ); - } - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CHnXmlSuiteFilesReg::CalculateCurrentSuiteSizeL() - { - RBuf suiteInstallDir( GetSuiteInstallPathL() ); - CleanupClosePushL( suiteInstallDir ); - CDir* suiteFileList; - iFs.GetDir( suiteInstallDir, KEntryAttMaskSupported, ESortByName, suiteFileList); - CleanupStack::PushL(suiteFileList); - - TInt suiteSize(0); - for( TInt i(0); suiteFileList && i< suiteFileList->Count(); i++ ) - { - suiteSize+= (*suiteFileList)[i].iSize; - } - CleanupStack::PopAndDestroy( suiteFileList ); - CleanupStack::PopAndDestroy( &suiteInstallDir ); - return suiteSize; - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CHnXmlSuiteFilesReg::CalculateSynchronizationSuiteSize() - { - TInt retSize( 0 ); - - THashMapIter< const TDesC*, THnFileInfo* > iter( iSuiteFiles ); - - while ( iter.NextKey() ) - { - const THnFileInfo& fileInfo = **(iter.CurrentValue()); - retSize += fileInfo.iSize; - } - - return retSize; - } -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TBool CHnXmlSuiteFilesReg::SynchronizeSuiteFilesL() - { - TBool ret( EFalse ); - SearchDrivesForSuiteFilesL(); - - TInt spaceNeeded = CalculateSynchronizationSuiteSize() - - CalculateCurrentSuiteSizeL(); - - RBuf suiteInstallationDir( GetSuiteInstallPathL() ); - CleanupClosePushL( suiteInstallationDir ); - iFileMan->RmDir( suiteInstallationDir ); - if( iSuiteFiles.Count() && ( spaceNeeded < 0 || !SysUtil::DiskSpaceBelowCriticalLevelL( - &iFs, spaceNeeded , EDriveC ) ) ) - { - THashMapIter< const TDesC*, THnFileInfo* > iter( iSuiteFiles ); - iFs.MkDirAll( suiteInstallationDir ); - while( iter.NextKey() ) - { - const THnFileInfo& fileInfo = **(iter.CurrentValue()); - TBuf<KMaxPath> filePath( suiteInstallationDir ); - filePath.Append( fileInfo.iFileName ); - if( filePath.Compare( fileInfo.iFilePath ) ) - { - if( BaflUtils::FileExists( iFs, filePath ) ) - { - iFs.SetAtt( filePath, NULL, KEntryAttReadOnly ); - iFs.Delete( filePath ); - } - iFileMan->Copy( - fileInfo.iFilePath, - filePath, CFileMan::EOverWrite ); - ret = ETrue; - } - } - } - CleanupStack::PopAndDestroy( &suiteInstallationDir ); - return ret; - } diff -r 137ebc85284b -r 1b758917cafc menufw/hierarchynavigator/hnpresentationmodel/bwins/hnpresentationmodelu.def --- a/menufw/hierarchynavigator/hnpresentationmodel/bwins/hnpresentationmodelu.def Tue May 25 12:29:32 2010 +0300 +++ b/menufw/hierarchynavigator/hnpresentationmodel/bwins/hnpresentationmodelu.def Wed Jun 09 09:29:04 2010 +0300 @@ -8,69 +8,69 @@ ?SetDimmed@CHnButtonModel@@QAEXH@Z @ 7 NONAME ; void CHnButtonModel::SetDimmed(int) ?GetModelItemCount@CHnItemsOrder@@QAEHXZ @ 8 NONAME ; int CHnItemsOrder::GetModelItemCount(void) ?SetEmptyTextL@CHnSuiteModel@@QAEXABVTDesC16@@@Z @ 9 NONAME ; void CHnSuiteModel::SetEmptyTextL(class TDesC16 const &) - ?IsActive@CHnSuiteModel@@QAEHXZ @ 10 NONAME ; int CHnSuiteModel::IsActive(void) - ?Get@CHnSuitesStack@@QAEPAVCHnSuiteModel@@H@Z @ 11 NONAME ; class CHnSuiteModel * CHnSuitesStack::Get(int) - ?SetActiveL@CHnSuiteModel@@QAEXH@Z @ 12 NONAME ; void CHnSuiteModel::SetActiveL(int) - ?IsItemMoveLocked@CHnSuiteModel@@QAEHH@Z @ 13 NONAME ; int CHnSuiteModel::IsItemMoveLocked(int) - ?NewL@CHnAttributeImage@@SAPAV1@XZ @ 14 NONAME ; class CHnAttributeImage * CHnAttributeImage::NewL(void) - ?CommandName@CHnActionModel@@QBEABVTDesC8@@XZ @ 15 NONAME ; class TDesC8 const & CHnActionModel::CommandName(void) const - ?SetServiceL@CHnActionModel@@QAEXABVTDesC8@@@Z @ 16 NONAME ; void CHnActionModel::SetServiceL(class TDesC8 const &) - ?SetBitmap@CHnAttributeImage@@QAEXPAVTLiwVariant@@@Z @ 17 NONAME ; void CHnAttributeImage::SetBitmap(class TLiwVariant *) - ?SetTemplateL@CHnSuiteModel@@QAEXABVTDesC8@@@Z @ 18 NONAME ; void CHnSuiteModel::SetTemplateL(class TDesC8 const &) - ?UpdateItemTemplateL@CHnSuiteModel@@QAEXH@Z @ 19 NONAME ; void CHnSuiteModel::UpdateItemTemplateL(int) - ?SuiteEvaluated@CHnItemsOrder@@QAEXXZ @ 20 NONAME ; void CHnItemsOrder::SuiteEvaluated(void) - ?Name@CHnAttributeBase@@QBEABVTDesC8@@XZ @ 21 NONAME ; class TDesC8 const & CHnAttributeBase::Name(void) const - ?SetCustomId@CHnItemModel@@QAEX_J@Z @ 22 NONAME ; void CHnItemModel::SetCustomId(long long) - ?CustomId@CHnItemModel@@QAE_JXZ @ 23 NONAME ; long long CHnItemModel::CustomId(void) - ??1CHnSuiteModel@@UAE@XZ @ 24 NONAME ; CHnSuiteModel::~CHnSuiteModel(void) - ?GetActions@CHnItemModel@@QAEPAV?$CArrayPtr@VCHnActionModel@@@@H@Z @ 25 NONAME ; class CArrayPtr<class CHnActionModel> * CHnItemModel::GetActions(int) - ?SetGulIcon@CHnIconHolder@@QAEXPAVCGulIcon@@@Z @ 26 NONAME ; void CHnIconHolder::SetGulIcon(class CGulIcon *) - ?SetValueL@CHnAttributeText@@QAEXABVTDesC8@@@Z @ 27 NONAME ; void CHnAttributeText::SetValueL(class TDesC8 const &) - ?GetItemIdAt@CHnItemsOrder@@QAEHHH@Z @ 28 NONAME ; int CHnItemsOrder::GetItemIdAt(int, int) - ?ClearAttributesL@CHnItemModel@@QAEXXZ @ 29 NONAME ; void CHnItemModel::ClearAttributesL(void) - ?NewLC@CHnAttrImgProvFileImage@@SAPAV1@ABVTDesC16@@@Z @ 30 NONAME ; class CHnAttrImgProvFileImage * CHnAttrImgProvFileImage::NewLC(class TDesC16 const &) - ?ExitMode@CHnSuiteModel@@QAE?AW4TExitMode@@XZ @ 31 NONAME ; enum TExitMode CHnSuiteModel::ExitMode(void) - ?ServiceMode@CHnActionModel@@QBE?AW4TServiceMode@@XZ @ 32 NONAME ; enum TServiceMode CHnActionModel::ServiceMode(void) const - ?GetIcon@CHnButtonModel@@QBEPAVCGulIcon@@XZ @ 33 NONAME ; class CGulIcon * CHnButtonModel::GetIcon(void) const - ?GetSuiteHighlight@CHnSuiteModel@@QAEHXZ @ 34 NONAME ; int CHnSuiteModel::GetSuiteHighlight(void) - ?PopSuiteModelL@CHnSuiteModelContainer@@QAEPAVCHnSuiteModel@@ABVTDesC16@@@Z @ 35 NONAME ; class CHnSuiteModel * CHnSuiteModelContainer::PopSuiteModelL(class TDesC16 const &) - ?NewL@CHnSuiteModelContainer@@SAPAV1@AAVMHnMdModelEventObserver@@AAVMHnControllerInterface@@@Z @ 36 NONAME ; class CHnSuiteModelContainer * CHnSuiteModelContainer::NewL(class MHnMdModelEventObserver &, class MHnControllerInterface &) - ?CommandLC@CHnActionModel@@QBEPAVCLiwGenericParamList@@XZ @ 37 NONAME ; class CLiwGenericParamList * CHnActionModel::CommandLC(void) const - ?InsertItemIdToL@CHnItemsOrder@@QAEXHHH@Z @ 38 NONAME ; void CHnItemsOrder::InsertItemIdToL(int, int, int) - ?SetBitmapId@CHnAttributeImage@@QAEXH@Z @ 39 NONAME ; void CHnAttributeImage::SetBitmapId(int) - ?RefreshMulModelL@CHnSuiteModel@@QAEXH@Z @ 40 NONAME ; void CHnSuiteModel::RefreshMulModelL(int) - ?UnregisterSuiteObserver@CHnSuiteModel@@QAEXPAVMHnSuiteObserver@@@Z @ 41 NONAME ; void CHnSuiteModel::UnregisterSuiteObserver(class MHnSuiteObserver *) - ?SetApplicationUid@CHnAttributeImage@@QAEXVTUid@@@Z @ 42 NONAME ; void CHnAttributeImage::SetApplicationUid(class TUid) - ?GetGulIcon@CHnIconHolder@@QBEPAVCGulIcon@@XZ @ 43 NONAME ; class CGulIcon * CHnIconHolder::GetGulIcon(void) const - ?Command@CHnMenuItemModel@@QAEHXZ @ 44 NONAME ; int CHnMenuItemModel::Command(void) - ?GetButton@CHnToolbarModel@@QBEPBVCHnButtonModel@@H@Z @ 45 NONAME ; class CHnButtonModel const * CHnToolbarModel::GetButton(int) const - ?SetNameL@CHnAttributeBase@@QAEXABVTDesC8@@@Z @ 46 NONAME ; void CHnAttributeBase::SetNameL(class TDesC8 const &) - ?GetSuiteModel@CHnSuiteModelContainer@@QAEPAVCHnSuiteModel@@ABVTDesC16@@@Z @ 47 NONAME ; class CHnSuiteModel * CHnSuiteModelContainer::GetSuiteModel(class TDesC16 const &) - ?SetFileNameSrc@CHnAttributeImage@@QAEXPAVHBufC16@@@Z @ 48 NONAME ; void CHnAttributeImage::SetFileNameSrc(class HBufC16 *) - ?PushL@CHnSuitesStack@@QAEHPAVCHnSuiteModel@@@Z @ 49 NONAME ; int CHnSuitesStack::PushL(class CHnSuiteModel *) - ?OfferHnEventL@CHnSuiteModelContainer@@QAEHHHPAVCLiwGenericParamList@@@Z @ 50 NONAME ; int CHnSuiteModelContainer::OfferHnEventL(int, int, class CLiwGenericParamList *) - ?RemoveLiwObjects@CHnSuiteModelContainer@@QAEXXZ @ 51 NONAME ; void CHnSuiteModelContainer::RemoveLiwObjects(void) - ?HasButtons@CHnToolbarModel@@QBEHXZ @ 52 NONAME ; int CHnToolbarModel::HasButtons(void) const - ?GetItemUid@CHnItemModel@@QAE?AVTUid@@XZ @ 53 NONAME ; class TUid CHnItemModel::GetItemUid(void) - ?AddItemL@CHnSuiteModel@@QAEXHPAVCHnItemModel@@HH@Z @ 54 NONAME ; void CHnSuiteModel::AddItemL(int, class CHnItemModel *, int, int) - ?GetDimmed@CHnButtonModel@@QBEHXZ @ 55 NONAME ; int CHnButtonModel::GetDimmed(void) const - ?GetItemsOrder@CHnSuiteModel@@QAEPAVCHnItemsOrder@@XZ @ 56 NONAME ; class CHnItemsOrder * CHnSuiteModel::GetItemsOrder(void) - ?PushNewSuiteModelL@CHnSuiteModelContainer@@QAEXABVTDesC16@@@Z @ 57 NONAME ; void CHnSuiteModelContainer::PushNewSuiteModelL(class TDesC16 const &) - ?Interface@CHnActionModel@@QBEABVTDesC8@@XZ @ 58 NONAME ; class TDesC8 const & CHnActionModel::Interface(void) const - ?GetAttribute@CHnItemModel@@QAEPAVCHnAttributeBase@@ABVTDesC8@@@Z @ 59 NONAME ; class CHnAttributeBase * CHnItemModel::GetAttribute(class TDesC8 const &) - ?SetInterfaceL@CHnActionModel@@QAEXABVTDesC8@@@Z @ 60 NONAME ; void CHnActionModel::SetInterfaceL(class TDesC8 const &) - ?HasNext@CHnMenuItemModel@@UAEHXZ @ 61 NONAME ; int CHnMenuItemModel::HasNext(void) - ?Type@CHnAttributeBase@@QAE?AW4TAttributeType@@XZ @ 62 NONAME ; enum TAttributeType CHnAttributeBase::Type(void) - ?RegisterSuiteObserverL@CHnSuiteModel@@QAEXPAVMHnSuiteObserver@@W4TThreadPriority@@@Z @ 63 NONAME ; void CHnSuiteModel::RegisterSuiteObserverL(class MHnSuiteObserver *, enum TThreadPriority) - ?GetItemModelsCount@CHnSuiteModel@@QAEHXZ @ 64 NONAME ; int CHnSuiteModel::GetItemModelsCount(void) - ?SetToolbarModel@CHnItemModel@@QAEXPAVCHnToolbarModel@@@Z @ 65 NONAME ; void CHnItemModel::SetToolbarModel(class CHnToolbarModel *) - ?SetServiceModeL@CHnActionModel@@QAEXW4TServiceMode@@@Z @ 66 NONAME ; void CHnActionModel::SetServiceModeL(enum TServiceMode) - ?SetMenuItemModel@CHnItemModel@@QAEXPAVCHnMenuItemModel@@@Z @ 67 NONAME ; void CHnItemModel::SetMenuItemModel(class CHnMenuItemModel *) - ?SetHelpTextL@CHnButtonModel@@QAEXABVTDesC16@@@Z @ 68 NONAME ; void CHnButtonModel::SetHelpTextL(class TDesC16 const &) - ?NewLC@CHnButtonModel@@SAPAV1@H@Z @ 69 NONAME ; class CHnButtonModel * CHnButtonModel::NewLC(int) - ??ACHnItemsOrder@@QAEHH@Z @ 70 NONAME ; int CHnItemsOrder::operator[](int) + ?Get@CHnSuitesStack@@QAEPAVCHnSuiteModel@@H@Z @ 10 NONAME ; class CHnSuiteModel * CHnSuitesStack::Get(int) + ?IsItemMoveLocked@CHnSuiteModel@@QAEHH@Z @ 11 NONAME ; int CHnSuiteModel::IsItemMoveLocked(int) + ?NewL@CHnAttributeImage@@SAPAV1@XZ @ 12 NONAME ; class CHnAttributeImage * CHnAttributeImage::NewL(void) + ?CommandName@CHnActionModel@@QBEABVTDesC8@@XZ @ 13 NONAME ; class TDesC8 const & CHnActionModel::CommandName(void) const + ?SetServiceL@CHnActionModel@@QAEXABVTDesC8@@@Z @ 14 NONAME ; void CHnActionModel::SetServiceL(class TDesC8 const &) + ?SetBitmap@CHnAttributeImage@@QAEXPAVTLiwVariant@@@Z @ 15 NONAME ; void CHnAttributeImage::SetBitmap(class TLiwVariant *) + ?SetTemplateL@CHnSuiteModel@@QAEXABVTDesC8@@@Z @ 16 NONAME ; void CHnSuiteModel::SetTemplateL(class TDesC8 const &) + ?UpdateItemTemplateL@CHnSuiteModel@@QAEXH@Z @ 17 NONAME ; void CHnSuiteModel::UpdateItemTemplateL(int) + ?SuiteEvaluated@CHnItemsOrder@@QAEXXZ @ 18 NONAME ; void CHnItemsOrder::SuiteEvaluated(void) + ?Name@CHnAttributeBase@@QBEABVTDesC8@@XZ @ 19 NONAME ; class TDesC8 const & CHnAttributeBase::Name(void) const + ?SetCustomId@CHnItemModel@@QAEX_J@Z @ 20 NONAME ; void CHnItemModel::SetCustomId(long long) + ?CustomId@CHnItemModel@@QAE_JXZ @ 21 NONAME ; long long CHnItemModel::CustomId(void) + ??1CHnSuiteModel@@UAE@XZ @ 22 NONAME ; CHnSuiteModel::~CHnSuiteModel(void) + ?GetActions@CHnItemModel@@QAEPAV?$CArrayPtr@VCHnActionModel@@@@H@Z @ 23 NONAME ; class CArrayPtr<class CHnActionModel> * CHnItemModel::GetActions(int) + ?SetGulIcon@CHnIconHolder@@QAEXPAVCGulIcon@@@Z @ 24 NONAME ; void CHnIconHolder::SetGulIcon(class CGulIcon *) + ?SetValueL@CHnAttributeText@@QAEXABVTDesC8@@@Z @ 25 NONAME ; void CHnAttributeText::SetValueL(class TDesC8 const &) + ?GetItemIdAt@CHnItemsOrder@@QAEHHH@Z @ 26 NONAME ; int CHnItemsOrder::GetItemIdAt(int, int) + ?ClearAttributesL@CHnItemModel@@QAEXXZ @ 27 NONAME ; void CHnItemModel::ClearAttributesL(void) + ?NewLC@CHnAttrImgProvFileImage@@SAPAV1@ABVTDesC16@@@Z @ 28 NONAME ; class CHnAttrImgProvFileImage * CHnAttrImgProvFileImage::NewLC(class TDesC16 const &) + ?ExitMode@CHnSuiteModel@@QAE?AW4TExitMode@@XZ @ 29 NONAME ; enum TExitMode CHnSuiteModel::ExitMode(void) + ?ServiceMode@CHnActionModel@@QBE?AW4TServiceMode@@XZ @ 30 NONAME ; enum TServiceMode CHnActionModel::ServiceMode(void) const + ?GetIcon@CHnButtonModel@@QBEPAVCGulIcon@@XZ @ 31 NONAME ; class CGulIcon * CHnButtonModel::GetIcon(void) const + ?GetSuiteHighlight@CHnSuiteModel@@QAEHXZ @ 32 NONAME ; int CHnSuiteModel::GetSuiteHighlight(void) + ?PopSuiteModelL@CHnSuiteModelContainer@@QAEPAVCHnSuiteModel@@ABVTDesC16@@@Z @ 33 NONAME ; class CHnSuiteModel * CHnSuiteModelContainer::PopSuiteModelL(class TDesC16 const &) + ?NewL@CHnSuiteModelContainer@@SAPAV1@AAVMHnMdModelEventObserver@@AAVMHnControllerInterface@@@Z @ 34 NONAME ; class CHnSuiteModelContainer * CHnSuiteModelContainer::NewL(class MHnMdModelEventObserver &, class MHnControllerInterface &) + ?CommandLC@CHnActionModel@@QBEPAVCLiwGenericParamList@@XZ @ 35 NONAME ; class CLiwGenericParamList * CHnActionModel::CommandLC(void) const + ?InsertItemIdToL@CHnItemsOrder@@QAEXHHH@Z @ 36 NONAME ; void CHnItemsOrder::InsertItemIdToL(int, int, int) + ?SetBitmapId@CHnAttributeImage@@QAEXH@Z @ 37 NONAME ; void CHnAttributeImage::SetBitmapId(int) + ?RefreshMulModelL@CHnSuiteModel@@QAEXH@Z @ 38 NONAME ; void CHnSuiteModel::RefreshMulModelL(int) + ?UnregisterSuiteObserver@CHnSuiteModel@@QAEXPAVMHnSuiteObserver@@@Z @ 39 NONAME ; void CHnSuiteModel::UnregisterSuiteObserver(class MHnSuiteObserver *) + ?SetApplicationUid@CHnAttributeImage@@QAEXVTUid@@@Z @ 40 NONAME ; void CHnAttributeImage::SetApplicationUid(class TUid) + ?GetGulIcon@CHnIconHolder@@QBEPAVCGulIcon@@XZ @ 41 NONAME ; class CGulIcon * CHnIconHolder::GetGulIcon(void) const + ?Command@CHnMenuItemModel@@QAEHXZ @ 42 NONAME ; int CHnMenuItemModel::Command(void) + ?GetButton@CHnToolbarModel@@QBEPBVCHnButtonModel@@H@Z @ 43 NONAME ; class CHnButtonModel const * CHnToolbarModel::GetButton(int) const + ?SetNameL@CHnAttributeBase@@QAEXABVTDesC8@@@Z @ 44 NONAME ; void CHnAttributeBase::SetNameL(class TDesC8 const &) + ?GetSuiteModel@CHnSuiteModelContainer@@QAEPAVCHnSuiteModel@@ABVTDesC16@@@Z @ 45 NONAME ; class CHnSuiteModel * CHnSuiteModelContainer::GetSuiteModel(class TDesC16 const &) + ?SetFileNameSrc@CHnAttributeImage@@QAEXPAVHBufC16@@@Z @ 46 NONAME ; void CHnAttributeImage::SetFileNameSrc(class HBufC16 *) + ?PushL@CHnSuitesStack@@QAEHPAVCHnSuiteModel@@@Z @ 47 NONAME ; int CHnSuitesStack::PushL(class CHnSuiteModel *) + ?OfferHnEventL@CHnSuiteModelContainer@@QAEHHHPAVCLiwGenericParamList@@@Z @ 48 NONAME ; int CHnSuiteModelContainer::OfferHnEventL(int, int, class CLiwGenericParamList *) + ?RemoveLiwObjects@CHnSuiteModelContainer@@QAEXXZ @ 49 NONAME ; void CHnSuiteModelContainer::RemoveLiwObjects(void) + ?HasButtons@CHnToolbarModel@@QBEHXZ @ 50 NONAME ; int CHnToolbarModel::HasButtons(void) const + ?GetItemUid@CHnItemModel@@QAE?AVTUid@@XZ @ 51 NONAME ; class TUid CHnItemModel::GetItemUid(void) + ?AddItemL@CHnSuiteModel@@QAEXHPAVCHnItemModel@@HH@Z @ 52 NONAME ; void CHnSuiteModel::AddItemL(int, class CHnItemModel *, int, int) + ?GetDimmed@CHnButtonModel@@QBEHXZ @ 53 NONAME ; int CHnButtonModel::GetDimmed(void) const + ?GetItemsOrder@CHnSuiteModel@@QAEPAVCHnItemsOrder@@XZ @ 54 NONAME ; class CHnItemsOrder * CHnSuiteModel::GetItemsOrder(void) + ?PushNewSuiteModelL@CHnSuiteModelContainer@@QAEXABVTDesC16@@@Z @ 55 NONAME ; void CHnSuiteModelContainer::PushNewSuiteModelL(class TDesC16 const &) + ?Interface@CHnActionModel@@QBEABVTDesC8@@XZ @ 56 NONAME ; class TDesC8 const & CHnActionModel::Interface(void) const + ?GetAttribute@CHnItemModel@@QAEPAVCHnAttributeBase@@ABVTDesC8@@@Z @ 57 NONAME ; class CHnAttributeBase * CHnItemModel::GetAttribute(class TDesC8 const &) + ?GetNextSpecific@CHnMenuItemModel@@UAEPAV1@XZ @ 58 NONAME ; class CHnMenuItemModel * CHnMenuItemModel::GetNextSpecific(void) + ?SetInterfaceL@CHnActionModel@@QAEXABVTDesC8@@@Z @ 59 NONAME ; void CHnActionModel::SetInterfaceL(class TDesC8 const &) + ?HasNext@CHnMenuItemModel@@UAEHXZ @ 60 NONAME ; int CHnMenuItemModel::HasNext(void) + ?Type@CHnAttributeBase@@QAE?AW4TAttributeType@@XZ @ 61 NONAME ; enum TAttributeType CHnAttributeBase::Type(void) + ?RegisterSuiteObserverL@CHnSuiteModel@@QAEXPAVMHnSuiteObserver@@W4TThreadPriority@@@Z @ 62 NONAME ; void CHnSuiteModel::RegisterSuiteObserverL(class MHnSuiteObserver *, enum TThreadPriority) + ?GetItemModelsCount@CHnSuiteModel@@QAEHXZ @ 63 NONAME ; int CHnSuiteModel::GetItemModelsCount(void) + ?SetToolbarModel@CHnItemModel@@QAEXPAVCHnToolbarModel@@@Z @ 64 NONAME ; void CHnItemModel::SetToolbarModel(class CHnToolbarModel *) + ?SetServiceModeL@CHnActionModel@@QAEXW4TServiceMode@@@Z @ 65 NONAME ; void CHnActionModel::SetServiceModeL(enum TServiceMode) + ?SetMenuItemModel@CHnItemModel@@QAEXPAVCHnMenuItemModel@@@Z @ 66 NONAME ; void CHnItemModel::SetMenuItemModel(class CHnMenuItemModel *) + ?SetHelpTextL@CHnButtonModel@@QAEXABVTDesC16@@@Z @ 67 NONAME ; void CHnButtonModel::SetHelpTextL(class TDesC16 const &) + ?NewLC@CHnButtonModel@@SAPAV1@H@Z @ 68 NONAME ; class CHnButtonModel * CHnButtonModel::NewLC(int) + ??ACHnItemsOrder@@QAEHH@Z @ 69 NONAME ; int CHnItemsOrder::operator[](int) + ?GetToolbarModel@CHnItemModel@@QBEPBVCHnToolbarModel@@XZ @ 70 NONAME ; class CHnToolbarModel const * CHnItemModel::GetToolbarModel(void) const ?ClearFlags@CHnItemModel@@QAEXXZ @ 71 NONAME ; void CHnItemModel::ClearFlags(void) - ?GetToolbarModel@CHnItemModel@@QBEPBVCHnToolbarModel@@XZ @ 72 NONAME ; class CHnToolbarModel const * CHnItemModel::GetToolbarModel(void) const + ?SetMenuItemType@CHnMenuItemModel@@QAEXW4THnMenuItemType@1@@Z @ 72 NONAME ; void CHnMenuItemModel::SetMenuItemType(enum CHnMenuItemModel::THnMenuItemType) ?GetActions@CHnSuiteModel@@QAEPAV?$CArrayPtr@VCHnActionModel@@@@H@Z @ 73 NONAME ; class CArrayPtr<class CHnActionModel> * CHnSuiteModel::GetActions(int) ?WidgetType@CHnSuiteModel@@QBEHXZ @ 74 NONAME ; int CHnSuiteModel::WidgetType(void) const ?Reset@CHnMenuItemModel@@UAEXXZ @ 75 NONAME ; void CHnMenuItemModel::Reset(void) @@ -137,52 +137,49 @@ ?SetMifFile@CHnAttributeImage@@QAEXPAVHBufC16@@@Z @ 136 NONAME ; void CHnAttributeImage::SetMifFile(class HBufC16 *) ?GetSuiteModelCount@CHnSuiteModelContainer@@QBEHXZ @ 137 NONAME ; int CHnSuiteModelContainer::GetSuiteModelCount(void) const ?HasToolbar@CHnSuiteModel@@QBEHXZ @ 138 NONAME ; int CHnSuiteModel::HasToolbar(void) const - ?SetAttributeL@CHnItemModel@@QAEXPAVCHnAttributeBase@@@Z @ 139 NONAME ; void CHnItemModel::SetAttributeL(class CHnAttributeBase *) - ?SetEventId@CHnButtonModel@@QAEXH@Z @ 140 NONAME ; void CHnButtonModel::SetEventId(int) - ?GetLastSuiteModel@CHnSuiteModelContainer@@QAEPAVCHnSuiteModel@@XZ @ 141 NONAME ; class CHnSuiteModel * CHnSuiteModelContainer::GetLastSuiteModel(void) - ?NewL@CHnAttrImgProvSvgImage@@SAPAV1@ABVTDesC16@@@Z @ 142 NONAME ; class CHnAttrImgProvSvgImage * CHnAttrImgProvSvgImage::NewL(class TDesC16 const &) - ?RemoveItemL@CHnSuiteModel@@QAEXH@Z @ 143 NONAME ; void CHnSuiteModel::RemoveItemL(int) - ?GetTemplate@CHnItemModel@@QAEABVTDesC8@@XZ @ 144 NONAME ; class TDesC8 const & CHnItemModel::GetTemplate(void) - ?SetMaskId@CHnAttributeImage@@QAEXH@Z @ 145 NONAME ; void CHnAttributeImage::SetMaskId(int) - ?GetActions@CHnSuiteModel@@QAEAAV?$RHashMap@HPAV?$CArrayPtr@VCHnActionModel@@@@@@XZ @ 146 NONAME ; class RHashMap<int, class CArrayPtr<class CHnActionModel> *> & CHnSuiteModel::GetActions(void) - ?GetItemType@CHnItemModel@@QAE?AW4TMcsItemType@@XZ @ 147 NONAME ; enum TMcsItemType CHnItemModel::GetItemType(void) - ?GetButtonText@CHnButtonModel@@QBEABVTDesC16@@XZ @ 148 NONAME ; class TDesC16 const & CHnButtonModel::GetButtonText(void) const - ?NewL@CHnAttributeText@@SAPAV1@XZ @ 149 NONAME ; class CHnAttributeText * CHnAttributeText::NewL(void) - ?GetNext@CHnMenuItemModel@@UAEPAV1@XZ @ 150 NONAME ; class CHnMenuItemModel * CHnMenuItemModel::GetNext(void) - ?DefineModelItemCountL@CHnItemsOrder@@QAEXH@Z @ 151 NONAME ; void CHnItemsOrder::DefineModelItemCountL(int) - ?SuiteEvaluationFinishedL@CHnSuiteModel@@QAEHXZ @ 152 NONAME ; int CHnSuiteModel::SuiteEvaluationFinishedL(void) - ?ItemEvaluationFinishedL@CHnSuiteModel@@QAEHH@Z @ 153 NONAME ; int CHnSuiteModel::ItemEvaluationFinishedL(int) - ?NewL@CHnMenuItemModel@@SAPAV1@ABVTDesC16@@@Z @ 154 NONAME ; class CHnMenuItemModel * CHnMenuItemModel::NewL(class TDesC16 const &) - ?ReorderItemsL@CHnSuiteModel@@QAEHHH@Z @ 155 NONAME ; int CHnSuiteModel::ReorderItemsL(int, int) - ?GetIdsForL@CHnItemsOrder@@QAEXHAAV?$RArray@H@@@Z @ 156 NONAME ; void CHnItemsOrder::GetIdsForL(int, class RArray<int> &) - ?NewLC@CHnAttrImgProvThemeMif@@SAPAV1@VTAknsItemID@@ABVTDesC16@@HH@Z @ 157 NONAME ; class CHnAttrImgProvThemeMif * CHnAttrImgProvThemeMif::NewLC(class TAknsItemID, class TDesC16 const &, int, int) - ?SetWidgetType@CHnSuiteModel@@QAEXW4THnSuiteWidgetType@@@Z @ 158 NONAME ; void CHnSuiteModel::SetWidgetType(enum THnSuiteWidgetType) - ?NotifyObserversL@CHnSuiteModel@@QAEXW4THnCustomSuiteEvent@@@Z @ 159 NONAME ; void CHnSuiteModel::NotifyObserversL(enum THnCustomSuiteEvent) - ?DeleteAllActionModels@CHnItemModel@@QAEXXZ @ 160 NONAME ; void CHnItemModel::DeleteAllActionModels(void) - ?SetSuiteHighlightL@CHnSuiteModel@@QAEXH@Z @ 161 NONAME ; void CHnSuiteModel::SetSuiteHighlightL(int) - ?SetCustomId@CHnSuiteModel@@QAEX_J@Z @ 162 NONAME ; void CHnSuiteModel::SetCustomId(long long) - ?SetCommandNameL@CHnActionModel@@QAEXABVTDesC8@@@Z @ 163 NONAME ; void CHnActionModel::SetCommandNameL(class TDesC8 const &) - ?NewLC@CHnItemsOrder@@SAPAV1@XZ @ 164 NONAME ; class CHnItemsOrder * CHnItemsOrder::NewLC(void) - ?SetCommand@CHnActionModel@@QAEXPAVCHnMdBaseKey@@@Z @ 165 NONAME ; void CHnActionModel::SetCommand(class CHnMdBaseKey *) - ?NewL@CHnAttrImgProvAppImage@@SAPAV1@VTUid@@@Z @ 166 NONAME ; class CHnAttrImgProvAppImage * CHnAttrImgProvAppImage::NewL(class TUid) - ?NewLC@CHnAttributeText@@SAPAV1@XZ @ 167 NONAME ; class CHnAttributeText * CHnAttributeText::NewLC(void) - ?NewLC@CHnSuiteModelContainer@@SAPAV1@AAVMHnMdModelEventObserver@@AAVMHnControllerInterface@@@Z @ 168 NONAME ; class CHnSuiteModelContainer * CHnSuiteModelContainer::NewLC(class MHnMdModelEventObserver &, class MHnControllerInterface &) - ?IsRunning@CHnItemModel@@QAEHXZ @ 169 NONAME ; int CHnItemModel::IsRunning(void) - ?NewL@CHnActionModel@@SAPAV1@XZ @ 170 NONAME ; class CHnActionModel * CHnActionModel::NewL(void) - ?AddButtonL@CHnToolbarModel@@QAEXPAVCHnButtonModel@@@Z @ 171 NONAME ; void CHnToolbarModel::AddButtonL(class CHnButtonModel *) - ?SetItemUidL@CHnItemModel@@QAEXABVTDesC8@@@Z @ 172 NONAME ; void CHnItemModel::SetItemUidL(class TDesC8 const &) - ?SetType@CHnItemModel@@QAEXABVTDesC8@@@Z @ 173 NONAME ; void CHnItemModel::SetType(class TDesC8 const &) - ?SetSkinId@CHnAttributeImage@@QAEXVTAknsItemID@@@Z @ 174 NONAME ; void CHnAttributeImage::SetSkinId(class TAknsItemID) - ?NameL@CHnMenuItemModel@@QAEABVTDesC16@@XZ @ 175 NONAME ; class TDesC16 const & CHnMenuItemModel::NameL(void) - ?PopL@CHnSuitesStack@@QAEPAVCHnSuiteModel@@XZ @ 176 NONAME ; class CHnSuiteModel * CHnSuitesStack::PopL(void) - ?SetVisibleL@CHnSuiteModel@@QAEXH@Z @ 177 NONAME ; void CHnSuiteModel::SetVisibleL(int) - ?SetIcon@CHnButtonModel@@QAEXPAVCHnAttributeBase@@@Z @ 178 NONAME ; void CHnButtonModel::SetIcon(class CHnAttributeBase *) - ?NewL@CHnAttrImgProvThemeMif@@SAPAV1@VTAknsItemID@@ABVTDesC16@@HH@Z @ 179 NONAME ; class CHnAttrImgProvThemeMif * CHnAttrImgProvThemeMif::NewL(class TAknsItemID, class TDesC16 const &, int, int) - ?NewLC@CHnAttrImgProvLiwImage@@SAPAV1@AAPAVTLiwVariant@@0@Z @ 180 NONAME ; class CHnAttrImgProvLiwImage * CHnAttrImgProvLiwImage::NewLC(class TLiwVariant * &, class TLiwVariant * &) - ?GetTemplate@CHnSuiteModel@@QBEABVTDesC8@@XZ @ 181 NONAME ; class TDesC8 const & CHnSuiteModel::GetTemplate(void) const - ?GetActions@CHnItemModel@@QAEAAV?$RHashMap@HPAV?$CArrayPtr@VCHnActionModel@@@@@@XZ @ 182 NONAME ; class RHashMap<int, class CArrayPtr<class CHnActionModel> *> & CHnItemModel::GetActions(void) - ?SetMenuItemType@CHnMenuItemModel@@QAEXW4THnMenuItemType@1@@Z @ 183 NONAME ; void CHnMenuItemModel::SetMenuItemType(enum CHnMenuItemModel::THnMenuItemType) - ?HasNextSpecific@CHnMenuItemModel@@UAEHXZ @ 184 NONAME ; int CHnMenuItemModel::HasNextSpecific(void) - ?GetNextSpecific@CHnMenuItemModel@@UAEPAV1@XZ @ 185 NONAME ; class CHnMenuItemModel * CHnMenuItemModel::GetNextSpecific(void) - ?MenuItemType@CHnMenuItemModel@@QAE?AW4THnMenuItemType@1@XZ @ 186 NONAME ; enum CHnMenuItemModel::THnMenuItemType CHnMenuItemModel::MenuItemType(void) + ?MenuItemType@CHnMenuItemModel@@QAE?AW4THnMenuItemType@1@XZ @ 139 NONAME ; enum CHnMenuItemModel::THnMenuItemType CHnMenuItemModel::MenuItemType(void) + ?SetAttributeL@CHnItemModel@@QAEXPAVCHnAttributeBase@@@Z @ 140 NONAME ; void CHnItemModel::SetAttributeL(class CHnAttributeBase *) + ?SetEventId@CHnButtonModel@@QAEXH@Z @ 141 NONAME ; void CHnButtonModel::SetEventId(int) + ?GetLastSuiteModel@CHnSuiteModelContainer@@QAEPAVCHnSuiteModel@@XZ @ 142 NONAME ; class CHnSuiteModel * CHnSuiteModelContainer::GetLastSuiteModel(void) + ?NewL@CHnAttrImgProvSvgImage@@SAPAV1@ABVTDesC16@@@Z @ 143 NONAME ; class CHnAttrImgProvSvgImage * CHnAttrImgProvSvgImage::NewL(class TDesC16 const &) + ?RemoveItemL@CHnSuiteModel@@QAEXH@Z @ 144 NONAME ; void CHnSuiteModel::RemoveItemL(int) + ?GetTemplate@CHnItemModel@@QAEABVTDesC8@@XZ @ 145 NONAME ; class TDesC8 const & CHnItemModel::GetTemplate(void) + ?SetMaskId@CHnAttributeImage@@QAEXH@Z @ 146 NONAME ; void CHnAttributeImage::SetMaskId(int) + ?GetActions@CHnSuiteModel@@QAEAAV?$RHashMap@HPAV?$CArrayPtr@VCHnActionModel@@@@@@XZ @ 147 NONAME ; class RHashMap<int, class CArrayPtr<class CHnActionModel> *> & CHnSuiteModel::GetActions(void) + ?GetItemType@CHnItemModel@@QAE?AW4TMcsItemType@@XZ @ 148 NONAME ; enum TMcsItemType CHnItemModel::GetItemType(void) + ?GetButtonText@CHnButtonModel@@QBEABVTDesC16@@XZ @ 149 NONAME ; class TDesC16 const & CHnButtonModel::GetButtonText(void) const + ?NewL@CHnAttributeText@@SAPAV1@XZ @ 150 NONAME ; class CHnAttributeText * CHnAttributeText::NewL(void) + ?GetNext@CHnMenuItemModel@@UAEPAV1@XZ @ 151 NONAME ; class CHnMenuItemModel * CHnMenuItemModel::GetNext(void) + ?DefineModelItemCountL@CHnItemsOrder@@QAEXH@Z @ 152 NONAME ; void CHnItemsOrder::DefineModelItemCountL(int) + ?SuiteEvaluationFinishedL@CHnSuiteModel@@QAEHXZ @ 153 NONAME ; int CHnSuiteModel::SuiteEvaluationFinishedL(void) + ?HasNextSpecific@CHnMenuItemModel@@UAEHXZ @ 154 NONAME ; int CHnMenuItemModel::HasNextSpecific(void) + ?ItemEvaluationFinishedL@CHnSuiteModel@@QAEHH@Z @ 155 NONAME ; int CHnSuiteModel::ItemEvaluationFinishedL(int) + ?NewL@CHnMenuItemModel@@SAPAV1@ABVTDesC16@@@Z @ 156 NONAME ; class CHnMenuItemModel * CHnMenuItemModel::NewL(class TDesC16 const &) + ?ReorderItemsL@CHnSuiteModel@@QAEHHH@Z @ 157 NONAME ; int CHnSuiteModel::ReorderItemsL(int, int) + ?GetIdsForL@CHnItemsOrder@@QAEXHAAV?$RArray@H@@@Z @ 158 NONAME ; void CHnItemsOrder::GetIdsForL(int, class RArray<int> &) + ?NewLC@CHnAttrImgProvThemeMif@@SAPAV1@VTAknsItemID@@ABVTDesC16@@HH@Z @ 159 NONAME ; class CHnAttrImgProvThemeMif * CHnAttrImgProvThemeMif::NewLC(class TAknsItemID, class TDesC16 const &, int, int) + ?SetWidgetType@CHnSuiteModel@@QAEXW4THnSuiteWidgetType@@@Z @ 160 NONAME ; void CHnSuiteModel::SetWidgetType(enum THnSuiteWidgetType) + ?NotifyObserversL@CHnSuiteModel@@QAEXW4THnCustomSuiteEvent@@@Z @ 161 NONAME ; void CHnSuiteModel::NotifyObserversL(enum THnCustomSuiteEvent) + ?DeleteAllActionModels@CHnItemModel@@QAEXXZ @ 162 NONAME ; void CHnItemModel::DeleteAllActionModels(void) + ?SetSuiteHighlightL@CHnSuiteModel@@QAEXH@Z @ 163 NONAME ; void CHnSuiteModel::SetSuiteHighlightL(int) + ?SetCustomId@CHnSuiteModel@@QAEX_J@Z @ 164 NONAME ; void CHnSuiteModel::SetCustomId(long long) + ?SetCommandNameL@CHnActionModel@@QAEXABVTDesC8@@@Z @ 165 NONAME ; void CHnActionModel::SetCommandNameL(class TDesC8 const &) + ?NewLC@CHnItemsOrder@@SAPAV1@XZ @ 166 NONAME ; class CHnItemsOrder * CHnItemsOrder::NewLC(void) + ?SetCommand@CHnActionModel@@QAEXPAVCHnMdBaseKey@@@Z @ 167 NONAME ; void CHnActionModel::SetCommand(class CHnMdBaseKey *) + ?NewL@CHnAttrImgProvAppImage@@SAPAV1@VTUid@@@Z @ 168 NONAME ; class CHnAttrImgProvAppImage * CHnAttrImgProvAppImage::NewL(class TUid) + ?NewLC@CHnAttributeText@@SAPAV1@XZ @ 169 NONAME ; class CHnAttributeText * CHnAttributeText::NewLC(void) + ?NewLC@CHnSuiteModelContainer@@SAPAV1@AAVMHnMdModelEventObserver@@AAVMHnControllerInterface@@@Z @ 170 NONAME ; class CHnSuiteModelContainer * CHnSuiteModelContainer::NewLC(class MHnMdModelEventObserver &, class MHnControllerInterface &) + ?IsRunning@CHnItemModel@@QAEHXZ @ 171 NONAME ; int CHnItemModel::IsRunning(void) + ?NewL@CHnActionModel@@SAPAV1@XZ @ 172 NONAME ; class CHnActionModel * CHnActionModel::NewL(void) + ?AddButtonL@CHnToolbarModel@@QAEXPAVCHnButtonModel@@@Z @ 173 NONAME ; void CHnToolbarModel::AddButtonL(class CHnButtonModel *) + ?SetItemUidL@CHnItemModel@@QAEXABVTDesC8@@@Z @ 174 NONAME ; void CHnItemModel::SetItemUidL(class TDesC8 const &) + ?SetType@CHnItemModel@@QAEXABVTDesC8@@@Z @ 175 NONAME ; void CHnItemModel::SetType(class TDesC8 const &) + ?SetSkinId@CHnAttributeImage@@QAEXVTAknsItemID@@@Z @ 176 NONAME ; void CHnAttributeImage::SetSkinId(class TAknsItemID) + ?NameL@CHnMenuItemModel@@QAEABVTDesC16@@XZ @ 177 NONAME ; class TDesC16 const & CHnMenuItemModel::NameL(void) + ?PopL@CHnSuitesStack@@QAEPAVCHnSuiteModel@@XZ @ 178 NONAME ; class CHnSuiteModel * CHnSuitesStack::PopL(void) + ?SetIcon@CHnButtonModel@@QAEXPAVCHnAttributeBase@@@Z @ 179 NONAME ; void CHnButtonModel::SetIcon(class CHnAttributeBase *) + ?NewL@CHnAttrImgProvThemeMif@@SAPAV1@VTAknsItemID@@ABVTDesC16@@HH@Z @ 180 NONAME ; class CHnAttrImgProvThemeMif * CHnAttrImgProvThemeMif::NewL(class TAknsItemID, class TDesC16 const &, int, int) + ?NewLC@CHnAttrImgProvLiwImage@@SAPAV1@AAPAVTLiwVariant@@0@Z @ 181 NONAME ; class CHnAttrImgProvLiwImage * CHnAttrImgProvLiwImage::NewLC(class TLiwVariant * &, class TLiwVariant * &) + ?GetTemplate@CHnSuiteModel@@QBEABVTDesC8@@XZ @ 182 NONAME ; class TDesC8 const & CHnSuiteModel::GetTemplate(void) const + ?GetActions@CHnItemModel@@QAEAAV?$RHashMap@HPAV?$CArrayPtr@VCHnActionModel@@@@@@XZ @ 183 NONAME ; class RHashMap<int, class CArrayPtr<class CHnActionModel> *> & CHnItemModel::GetActions(void) diff -r 137ebc85284b -r 1b758917cafc menufw/hierarchynavigator/hnpresentationmodel/eabi/hnpresentationmodelu.def --- a/menufw/hierarchynavigator/hnpresentationmodel/eabi/hnpresentationmodelu.def Tue May 25 12:29:32 2010 +0300 +++ b/menufw/hierarchynavigator/hnpresentationmodel/eabi/hnpresentationmodelu.def Wed Jun 09 09:29:04 2010 +0300 @@ -46,156 +46,153 @@ _ZN13CHnSuiteModel10GetActionsEi @ 45 NONAME _ZN13CHnSuiteModel10GetActionsEv @ 46 NONAME _ZN13CHnSuiteModel10QueueFocusEi @ 47 NONAME - _ZN13CHnSuiteModel10SetActiveLEi @ 48 NONAME - _ZN13CHnSuiteModel11GetItemTypeEi @ 49 NONAME - _ZN13CHnSuiteModel11RemoveItemLEi @ 50 NONAME - _ZN13CHnSuiteModel11SetCustomIdEx @ 51 NONAME - _ZN13CHnSuiteModel11SetExitModeE9TExitMode @ 52 NONAME - _ZN13CHnSuiteModel11SetVisibleLEi @ 53 NONAME - _ZN13CHnSuiteModel12GetItemModelEi @ 54 NONAME - _ZN13CHnSuiteModel12SetTemplateLERK6TDesC8 @ 55 NONAME - _ZN13CHnSuiteModel13GetItemsOrderEv @ 56 NONAME - _ZN13CHnSuiteModel13ReorderItemsLEii @ 57 NONAME - _ZN13CHnSuiteModel13SetEmptyTextLERK7TDesC16 @ 58 NONAME - _ZN13CHnSuiteModel13SetWidgetTypeE18THnSuiteWidgetType @ 59 NONAME - _ZN13CHnSuiteModel14RemoveAllItemsEv @ 60 NONAME - _ZN13CHnSuiteModel16IsItemMoveLockedEi @ 61 NONAME - _ZN13CHnSuiteModel16NotifyObserversLE19THnCustomSuiteEvent @ 62 NONAME - _ZN13CHnSuiteModel16RefreshMulModelLEi @ 63 NONAME - _ZN13CHnSuiteModel17GetMenuStructureLEi @ 64 NONAME - _ZN13CHnSuiteModel17GetSuiteHighlightEv @ 65 NONAME - _ZN13CHnSuiteModel18GetItemModelsCountEv @ 66 NONAME - _ZN13CHnSuiteModel18SetSuiteHighlightLEi @ 67 NONAME - _ZN13CHnSuiteModel19UpdateItemTemplateLEi @ 68 NONAME - _ZN13CHnSuiteModel21GetMatchingItemModelLExRi @ 69 NONAME - _ZN13CHnSuiteModel22RegisterSuiteObserverLEP16MHnSuiteObserver15TThreadPriority @ 70 NONAME - _ZN13CHnSuiteModel23IsItemBetweenMoveLockedEii @ 71 NONAME - _ZN13CHnSuiteModel23ItemEvaluationFinishedLEi @ 72 NONAME - _ZN13CHnSuiteModel23UnregisterSuiteObserverEP16MHnSuiteObserver @ 73 NONAME - _ZN13CHnSuiteModel24SuiteEvaluationFinishedLEv @ 74 NONAME - _ZN13CHnSuiteModel4NewLER15CHnEventHandlerRK7TDesC16 @ 75 NONAME - _ZN13CHnSuiteModel8AddItemLEiP12CHnItemModelii @ 76 NONAME - _ZN13CHnSuiteModel8CustomIdEv @ 77 NONAME - _ZN13CHnSuiteModel8ExitModeEv @ 78 NONAME - _ZN13CHnSuiteModel8IsActiveEv @ 79 NONAME - _ZN13CHnSuiteModel9IdByIndexEi @ 80 NONAME - _ZN13CHnSuiteModel9SetTitleLERK7TDesC16 @ 81 NONAME - _ZN13CHnSuiteModelD0Ev @ 82 NONAME - _ZN13CHnSuiteModelD1Ev @ 83 NONAME - _ZN13CHnSuiteModelD2Ev @ 84 NONAME - _ZN14CHnActionModel10SetCommandEP12CHnMdBaseKey @ 85 NONAME - _ZN14CHnActionModel11SetServiceLERK6TDesC8 @ 86 NONAME - _ZN14CHnActionModel13ConstructorLCEv @ 87 NONAME - _ZN14CHnActionModel13SetInterfaceLERK6TDesC8 @ 88 NONAME - _ZN14CHnActionModel15SetCommandNameLERK6TDesC8 @ 89 NONAME - _ZN14CHnActionModel15SetConstructorLEP12CHnMdBaseKey @ 90 NONAME - _ZN14CHnActionModel15SetServiceModeLE12TServiceMode @ 91 NONAME - _ZN14CHnActionModel4NewLEv @ 92 NONAME - _ZN14CHnButtonModel10SetEventIdEi @ 93 NONAME - _ZN14CHnButtonModel12SetHelpTextLERK7TDesC16 @ 94 NONAME - _ZN14CHnButtonModel5NewLCEi @ 95 NONAME - _ZN14CHnButtonModel7SetIconEP16CHnAttributeBase @ 96 NONAME - _ZN14CHnButtonModel9SetDimmedEi @ 97 NONAME - _ZN14CHnButtonModelD0Ev @ 98 NONAME - _ZN14CHnButtonModelD1Ev @ 99 NONAME - _ZN14CHnButtonModelD2Ev @ 100 NONAME - _ZN14CHnSuitesStack12GetRootSuiteEv @ 101 NONAME - _ZN14CHnSuitesStack3GetEi @ 102 NONAME - _ZN14CHnSuitesStack4NewLER22MHnControllerInterface @ 103 NONAME - _ZN14CHnSuitesStack4PopLEv @ 104 NONAME - _ZN14CHnSuitesStack5CountEv @ 105 NONAME - _ZN14CHnSuitesStack5PushLEP13CHnSuiteModel @ 106 NONAME - _ZN14CHnSuitesStack7GetLastEv @ 107 NONAME - _ZN14CHnSuitesStack7IsEmptyEv @ 108 NONAME - _ZN15CHnEventHandler14ExecuteActionLEP14CHnActionModel @ 109 NONAME - _ZN15CHnToolbarModel10AddButtonLEP14CHnButtonModel @ 110 NONAME - _ZN15CHnToolbarModel5NewLCEv @ 111 NONAME - _ZN15CHnToolbarModelD0Ev @ 112 NONAME - _ZN15CHnToolbarModelD1Ev @ 113 NONAME - _ZN15CHnToolbarModelD2Ev @ 114 NONAME - _ZN16CHnAttributeBase4TypeEv @ 115 NONAME - _ZN16CHnAttributeBase5ValueEv @ 116 NONAME - _ZN16CHnAttributeBase7GetIconEP5TSize @ 117 NONAME - _ZN16CHnAttributeBase8SetNameLERK6TDesC8 @ 118 NONAME - _ZN16CHnAttributeText4NewLEv @ 119 NONAME - _ZN16CHnAttributeText5NewLCEv @ 120 NONAME - _ZN16CHnAttributeText9SetValueLERK6TDesC8 @ 121 NONAME - _ZN16CHnMenuItemModel10SetCommandEi @ 122 NONAME - _ZN16CHnMenuItemModel11SetPositionEi @ 123 NONAME - _ZN16CHnMenuItemModel16AppendChildMenuLEPS_ @ 124 NONAME - _ZN16CHnMenuItemModel16GetMenuStructureEv @ 125 NONAME - _ZN16CHnMenuItemModel4NewLERK7TDesC16 @ 126 NONAME - _ZN16CHnMenuItemModel5NameLEv @ 127 NONAME - _ZN16CHnMenuItemModel5ResetEv @ 128 NONAME - _ZN16CHnMenuItemModel7CommandEv @ 129 NONAME - _ZN16CHnMenuItemModel7GetNextEv @ 130 NONAME - _ZN16CHnMenuItemModel7HasNextEv @ 131 NONAME - _ZN16CHnMenuItemModel8PositionEv @ 132 NONAME - _ZN17CHnAttributeImage10SetMifFileEP7HBufC16 @ 133 NONAME - _ZN17CHnAttributeImage11SetBitmapIdEi @ 134 NONAME - _ZN17CHnAttributeImage14SetFileNameSrcEP7HBufC16 @ 135 NONAME - _ZN17CHnAttributeImage17SetApplicationUidE4TUid @ 136 NONAME - _ZN17CHnAttributeImage4NewLEv @ 137 NONAME - _ZN17CHnAttributeImage5NewLCEv @ 138 NONAME - _ZN17CHnAttributeImage7GetIconEP5TSize @ 139 NONAME - _ZN17CHnAttributeImage7SetMaskEP11TLiwVariant @ 140 NONAME - _ZN17CHnAttributeImage9SetBitmapEP11TLiwVariant @ 141 NONAME - _ZN17CHnAttributeImage9SetMaskIdEi @ 142 NONAME - _ZN17CHnAttributeImage9SetSkinIdE11TAknsItemID @ 143 NONAME - _ZN19CHnExtBmpIconHolder10SetGulIconEP8CGulIconP16CLiwBitmapBufferS3_ @ 144 NONAME - _ZN22CHnAttrImgProvAppImage4NewLE4TUid @ 145 NONAME - _ZN22CHnAttrImgProvAppImage5NewLCE4TUid @ 146 NONAME - _ZN22CHnAttrImgProvLiwImage4NewLERP11TLiwVariantS2_ @ 147 NONAME - _ZN22CHnAttrImgProvLiwImage5NewLCERP11TLiwVariantS2_ @ 148 NONAME - _ZN22CHnAttrImgProvSvgImage4NewLERK7TDesC16 @ 149 NONAME - _ZN22CHnAttrImgProvSvgImage5NewLCERK7TDesC16 @ 150 NONAME - _ZN22CHnAttrImgProvThemeMif4NewLE11TAknsItemIDRK7TDesC16ii @ 151 NONAME - _ZN22CHnAttrImgProvThemeMif5NewLCE11TAknsItemIDRK7TDesC16ii @ 152 NONAME - _ZN22CHnSuiteModelContainer13GetSuiteModelERK7TDesC16 @ 153 NONAME - _ZN22CHnSuiteModelContainer13GetSuiteModelEi @ 154 NONAME - _ZN22CHnSuiteModelContainer13OfferHnEventLEiiP20CLiwGenericParamList @ 155 NONAME - _ZN22CHnSuiteModelContainer14PopSuiteModelLERK7TDesC16 @ 156 NONAME - _ZN22CHnSuiteModelContainer16RemoveLiwObjectsEv @ 157 NONAME - _ZN22CHnSuiteModelContainer17GetLastSuiteModelEv @ 158 NONAME - _ZN22CHnSuiteModelContainer18PushNewSuiteModelLERK7TDesC16 @ 159 NONAME - _ZN22CHnSuiteModelContainer19GetParentSuiteModelEv @ 160 NONAME - _ZN22CHnSuiteModelContainer21GetMatchingSuiteModelEx @ 161 NONAME - _ZN22CHnSuiteModelContainer4NewLER23MHnMdModelEventObserverR22MHnControllerInterface @ 162 NONAME - _ZN22CHnSuiteModelContainer5NewLCER23MHnMdModelEventObserverR22MHnControllerInterface @ 163 NONAME - _ZN23CHnAttrImgProvFileImage4NewLERK7TDesC16 @ 164 NONAME - _ZN23CHnAttrImgProvFileImage5NewLCERK7TDesC16 @ 165 NONAME - _ZNK12CHnItemModel15GetToolbarModelEv @ 166 NONAME - _ZNK13CHnIconHolder10GetGulIconEv @ 167 NONAME - _ZNK13CHnItemsOrder10GetSuiteIdEv @ 168 NONAME - _ZNK13CHnSuiteModel10HasToolbarEv @ 169 NONAME - _ZNK13CHnSuiteModel10WidgetTypeEv @ 170 NONAME - _ZNK13CHnSuiteModel11GetTemplateEv @ 171 NONAME - _ZNK13CHnSuiteModel5TitleEv @ 172 NONAME - _ZNK13CHnSuiteModel9EmptyTextEv @ 173 NONAME - _ZNK13CHnSuiteModel9SuiteNameEv @ 174 NONAME - _ZNK14CHnActionModel11CommandNameEv @ 175 NONAME - _ZNK14CHnActionModel11ServiceModeEv @ 176 NONAME - _ZNK14CHnActionModel7ServiceEv @ 177 NONAME - _ZNK14CHnActionModel9CommandLCEv @ 178 NONAME - _ZNK14CHnActionModel9InterfaceEv @ 179 NONAME - _ZNK14CHnButtonModel10GetEventIdEv @ 180 NONAME - _ZNK14CHnButtonModel13GetButtonTextEv @ 181 NONAME - _ZNK14CHnButtonModel7GetIconEv @ 182 NONAME - _ZNK14CHnButtonModel8GetIndexEv @ 183 NONAME - _ZNK14CHnButtonModel9GetDimmedEv @ 184 NONAME - _ZNK15CHnToolbarModel10HasButtonsEv @ 185 NONAME - _ZNK15CHnToolbarModel9GetButtonEi @ 186 NONAME - _ZNK16CHnAttributeBase4NameEv @ 187 NONAME - _ZNK22CHnSuiteModelContainer18GetSuiteModelCountEv @ 188 NONAME - _ZTI19CHnExtBmpIconHolder @ 189 NONAME - _ZTV19CHnExtBmpIconHolder @ 190 NONAME - _ZThn4_N16CHnMenuItemModel5ResetEv @ 191 NONAME - _ZThn4_N16CHnMenuItemModel7GetNextEv @ 192 NONAME - _ZThn4_N16CHnMenuItemModel7HasNextEv @ 193 NONAME - _ZN16CHnMenuItemModel15GetNextSpecificEv @ 194 NONAME - _ZN16CHnMenuItemModel15HasNextSpecificEv @ 195 NONAME - _ZN16CHnMenuItemModel15SetMenuItemTypeENS_15THnMenuItemTypeE @ 196 NONAME - _ZThn4_N16CHnMenuItemModel15GetNextSpecificEv @ 197 NONAME - _ZThn4_N16CHnMenuItemModel15HasNextSpecificEv @ 198 NONAME - _ZN16CHnMenuItemModel12MenuItemTypeEv @ 199 NONAME + _ZN13CHnSuiteModel11GetItemTypeEi @ 48 NONAME + _ZN13CHnSuiteModel11RemoveItemLEi @ 49 NONAME + _ZN13CHnSuiteModel11SetCustomIdEx @ 50 NONAME + _ZN13CHnSuiteModel11SetExitModeE9TExitMode @ 51 NONAME + _ZN13CHnSuiteModel12GetItemModelEi @ 52 NONAME + _ZN13CHnSuiteModel12SetTemplateLERK6TDesC8 @ 53 NONAME + _ZN13CHnSuiteModel13GetItemsOrderEv @ 54 NONAME + _ZN13CHnSuiteModel13ReorderItemsLEii @ 55 NONAME + _ZN13CHnSuiteModel13SetEmptyTextLERK7TDesC16 @ 56 NONAME + _ZN13CHnSuiteModel13SetWidgetTypeE18THnSuiteWidgetType @ 57 NONAME + _ZN13CHnSuiteModel14RemoveAllItemsEv @ 58 NONAME + _ZN13CHnSuiteModel16IsItemMoveLockedEi @ 59 NONAME + _ZN13CHnSuiteModel16NotifyObserversLE19THnCustomSuiteEvent @ 60 NONAME + _ZN13CHnSuiteModel16RefreshMulModelLEi @ 61 NONAME + _ZN13CHnSuiteModel17GetMenuStructureLEi @ 62 NONAME + _ZN13CHnSuiteModel17GetSuiteHighlightEv @ 63 NONAME + _ZN13CHnSuiteModel18GetItemModelsCountEv @ 64 NONAME + _ZN13CHnSuiteModel18SetSuiteHighlightLEi @ 65 NONAME + _ZN13CHnSuiteModel19UpdateItemTemplateLEi @ 66 NONAME + _ZN13CHnSuiteModel21GetMatchingItemModelLExRi @ 67 NONAME + _ZN13CHnSuiteModel22RegisterSuiteObserverLEP16MHnSuiteObserver15TThreadPriority @ 68 NONAME + _ZN13CHnSuiteModel23IsItemBetweenMoveLockedEii @ 69 NONAME + _ZN13CHnSuiteModel23ItemEvaluationFinishedLEi @ 70 NONAME + _ZN13CHnSuiteModel23UnregisterSuiteObserverEP16MHnSuiteObserver @ 71 NONAME + _ZN13CHnSuiteModel24SuiteEvaluationFinishedLEv @ 72 NONAME + _ZN13CHnSuiteModel4NewLER15CHnEventHandlerRK7TDesC16 @ 73 NONAME + _ZN13CHnSuiteModel8AddItemLEiP12CHnItemModelii @ 74 NONAME + _ZN13CHnSuiteModel8CustomIdEv @ 75 NONAME + _ZN13CHnSuiteModel8ExitModeEv @ 76 NONAME + _ZN13CHnSuiteModel9IdByIndexEi @ 77 NONAME + _ZN13CHnSuiteModel9SetTitleLERK7TDesC16 @ 78 NONAME + _ZN13CHnSuiteModelD0Ev @ 79 NONAME + _ZN13CHnSuiteModelD1Ev @ 80 NONAME + _ZN13CHnSuiteModelD2Ev @ 81 NONAME + _ZN14CHnActionModel10SetCommandEP12CHnMdBaseKey @ 82 NONAME + _ZN14CHnActionModel11SetServiceLERK6TDesC8 @ 83 NONAME + _ZN14CHnActionModel13ConstructorLCEv @ 84 NONAME + _ZN14CHnActionModel13SetInterfaceLERK6TDesC8 @ 85 NONAME + _ZN14CHnActionModel15SetCommandNameLERK6TDesC8 @ 86 NONAME + _ZN14CHnActionModel15SetConstructorLEP12CHnMdBaseKey @ 87 NONAME + _ZN14CHnActionModel15SetServiceModeLE12TServiceMode @ 88 NONAME + _ZN14CHnActionModel4NewLEv @ 89 NONAME + _ZN14CHnButtonModel10SetEventIdEi @ 90 NONAME + _ZN14CHnButtonModel12SetHelpTextLERK7TDesC16 @ 91 NONAME + _ZN14CHnButtonModel5NewLCEi @ 92 NONAME + _ZN14CHnButtonModel7SetIconEP16CHnAttributeBase @ 93 NONAME + _ZN14CHnButtonModel9SetDimmedEi @ 94 NONAME + _ZN14CHnButtonModelD0Ev @ 95 NONAME + _ZN14CHnButtonModelD1Ev @ 96 NONAME + _ZN14CHnButtonModelD2Ev @ 97 NONAME + _ZN14CHnSuitesStack12GetRootSuiteEv @ 98 NONAME + _ZN14CHnSuitesStack3GetEi @ 99 NONAME + _ZN14CHnSuitesStack4NewLER22MHnControllerInterface @ 100 NONAME + _ZN14CHnSuitesStack4PopLEv @ 101 NONAME + _ZN14CHnSuitesStack5CountEv @ 102 NONAME + _ZN14CHnSuitesStack5PushLEP13CHnSuiteModel @ 103 NONAME + _ZN14CHnSuitesStack7GetLastEv @ 104 NONAME + _ZN14CHnSuitesStack7IsEmptyEv @ 105 NONAME + _ZN15CHnEventHandler14ExecuteActionLEP14CHnActionModel @ 106 NONAME + _ZN15CHnToolbarModel10AddButtonLEP14CHnButtonModel @ 107 NONAME + _ZN15CHnToolbarModel5NewLCEv @ 108 NONAME + _ZN15CHnToolbarModelD0Ev @ 109 NONAME + _ZN15CHnToolbarModelD1Ev @ 110 NONAME + _ZN15CHnToolbarModelD2Ev @ 111 NONAME + _ZN16CHnAttributeBase4TypeEv @ 112 NONAME + _ZN16CHnAttributeBase5ValueEv @ 113 NONAME + _ZN16CHnAttributeBase7GetIconEP5TSize @ 114 NONAME + _ZN16CHnAttributeBase8SetNameLERK6TDesC8 @ 115 NONAME + _ZN16CHnAttributeText4NewLEv @ 116 NONAME + _ZN16CHnAttributeText5NewLCEv @ 117 NONAME + _ZN16CHnAttributeText9SetValueLERK6TDesC8 @ 118 NONAME + _ZN16CHnMenuItemModel10SetCommandEi @ 119 NONAME + _ZN16CHnMenuItemModel11SetPositionEi @ 120 NONAME + _ZN16CHnMenuItemModel12MenuItemTypeEv @ 121 NONAME + _ZN16CHnMenuItemModel15GetNextSpecificEv @ 122 NONAME + _ZN16CHnMenuItemModel15HasNextSpecificEv @ 123 NONAME + _ZN16CHnMenuItemModel15SetMenuItemTypeENS_15THnMenuItemTypeE @ 124 NONAME + _ZN16CHnMenuItemModel16AppendChildMenuLEPS_ @ 125 NONAME + _ZN16CHnMenuItemModel16GetMenuStructureEv @ 126 NONAME + _ZN16CHnMenuItemModel4NewLERK7TDesC16 @ 127 NONAME + _ZN16CHnMenuItemModel5NameLEv @ 128 NONAME + _ZN16CHnMenuItemModel5ResetEv @ 129 NONAME + _ZN16CHnMenuItemModel7CommandEv @ 130 NONAME + _ZN16CHnMenuItemModel7GetNextEv @ 131 NONAME + _ZN16CHnMenuItemModel7HasNextEv @ 132 NONAME + _ZN16CHnMenuItemModel8PositionEv @ 133 NONAME + _ZN17CHnAttributeImage10SetMifFileEP7HBufC16 @ 134 NONAME + _ZN17CHnAttributeImage11SetBitmapIdEi @ 135 NONAME + _ZN17CHnAttributeImage14SetFileNameSrcEP7HBufC16 @ 136 NONAME + _ZN17CHnAttributeImage17SetApplicationUidE4TUid @ 137 NONAME + _ZN17CHnAttributeImage4NewLEv @ 138 NONAME + _ZN17CHnAttributeImage5NewLCEv @ 139 NONAME + _ZN17CHnAttributeImage7GetIconEP5TSize @ 140 NONAME + _ZN17CHnAttributeImage7SetMaskEP11TLiwVariant @ 141 NONAME + _ZN17CHnAttributeImage9SetBitmapEP11TLiwVariant @ 142 NONAME + _ZN17CHnAttributeImage9SetMaskIdEi @ 143 NONAME + _ZN17CHnAttributeImage9SetSkinIdE11TAknsItemID @ 144 NONAME + _ZN19CHnExtBmpIconHolder10SetGulIconEP8CGulIconP16CLiwBitmapBufferS3_ @ 145 NONAME + _ZN22CHnAttrImgProvAppImage4NewLE4TUid @ 146 NONAME + _ZN22CHnAttrImgProvAppImage5NewLCE4TUid @ 147 NONAME + _ZN22CHnAttrImgProvLiwImage4NewLERP11TLiwVariantS2_ @ 148 NONAME + _ZN22CHnAttrImgProvLiwImage5NewLCERP11TLiwVariantS2_ @ 149 NONAME + _ZN22CHnAttrImgProvSvgImage4NewLERK7TDesC16 @ 150 NONAME + _ZN22CHnAttrImgProvSvgImage5NewLCERK7TDesC16 @ 151 NONAME + _ZN22CHnAttrImgProvThemeMif4NewLE11TAknsItemIDRK7TDesC16ii @ 152 NONAME + _ZN22CHnAttrImgProvThemeMif5NewLCE11TAknsItemIDRK7TDesC16ii @ 153 NONAME + _ZN22CHnSuiteModelContainer13GetSuiteModelERK7TDesC16 @ 154 NONAME + _ZN22CHnSuiteModelContainer13GetSuiteModelEi @ 155 NONAME + _ZN22CHnSuiteModelContainer13OfferHnEventLEiiP20CLiwGenericParamList @ 156 NONAME + _ZN22CHnSuiteModelContainer14PopSuiteModelLERK7TDesC16 @ 157 NONAME + _ZN22CHnSuiteModelContainer16RemoveLiwObjectsEv @ 158 NONAME + _ZN22CHnSuiteModelContainer17GetLastSuiteModelEv @ 159 NONAME + _ZN22CHnSuiteModelContainer18PushNewSuiteModelLERK7TDesC16 @ 160 NONAME + _ZN22CHnSuiteModelContainer19GetParentSuiteModelEv @ 161 NONAME + _ZN22CHnSuiteModelContainer21GetMatchingSuiteModelEx @ 162 NONAME + _ZN22CHnSuiteModelContainer4NewLER23MHnMdModelEventObserverR22MHnControllerInterface @ 163 NONAME + _ZN22CHnSuiteModelContainer5NewLCER23MHnMdModelEventObserverR22MHnControllerInterface @ 164 NONAME + _ZN23CHnAttrImgProvFileImage4NewLERK7TDesC16 @ 165 NONAME + _ZN23CHnAttrImgProvFileImage5NewLCERK7TDesC16 @ 166 NONAME + _ZNK12CHnItemModel15GetToolbarModelEv @ 167 NONAME + _ZNK13CHnIconHolder10GetGulIconEv @ 168 NONAME + _ZNK13CHnItemsOrder10GetSuiteIdEv @ 169 NONAME + _ZNK13CHnSuiteModel10HasToolbarEv @ 170 NONAME + _ZNK13CHnSuiteModel10WidgetTypeEv @ 171 NONAME + _ZNK13CHnSuiteModel11GetTemplateEv @ 172 NONAME + _ZNK13CHnSuiteModel5TitleEv @ 173 NONAME + _ZNK13CHnSuiteModel9EmptyTextEv @ 174 NONAME + _ZNK13CHnSuiteModel9SuiteNameEv @ 175 NONAME + _ZNK14CHnActionModel11CommandNameEv @ 176 NONAME + _ZNK14CHnActionModel11ServiceModeEv @ 177 NONAME + _ZNK14CHnActionModel7ServiceEv @ 178 NONAME + _ZNK14CHnActionModel9CommandLCEv @ 179 NONAME + _ZNK14CHnActionModel9InterfaceEv @ 180 NONAME + _ZNK14CHnButtonModel10GetEventIdEv @ 181 NONAME + _ZNK14CHnButtonModel13GetButtonTextEv @ 182 NONAME + _ZNK14CHnButtonModel7GetIconEv @ 183 NONAME + _ZNK14CHnButtonModel8GetIndexEv @ 184 NONAME + _ZNK14CHnButtonModel9GetDimmedEv @ 185 NONAME + _ZNK15CHnToolbarModel10HasButtonsEv @ 186 NONAME + _ZNK15CHnToolbarModel9GetButtonEi @ 187 NONAME + _ZNK16CHnAttributeBase4NameEv @ 188 NONAME + _ZNK22CHnSuiteModelContainer18GetSuiteModelCountEv @ 189 NONAME + _ZTI19CHnExtBmpIconHolder @ 190 NONAME + _ZTV19CHnExtBmpIconHolder @ 191 NONAME + _ZThn4_N16CHnMenuItemModel15GetNextSpecificEv @ 192 NONAME + _ZThn4_N16CHnMenuItemModel15HasNextSpecificEv @ 193 NONAME + _ZThn4_N16CHnMenuItemModel5ResetEv @ 194 NONAME + _ZThn4_N16CHnMenuItemModel7GetNextEv @ 195 NONAME + _ZThn4_N16CHnMenuItemModel7HasNextEv @ 196 NONAME diff -r 137ebc85284b -r 1b758917cafc menufw/hierarchynavigator/hnpresentationmodel/group/hnpresentationmodel.mmp --- a/menufw/hierarchynavigator/hnpresentationmodel/group/hnpresentationmodel.mmp Tue May 25 12:29:32 2010 +0300 +++ b/menufw/hierarchynavigator/hnpresentationmodel/group/hnpresentationmodel.mmp Wed Jun 09 09:29:04 2010 +0300 @@ -49,7 +49,6 @@ SOURCE hneventhandler.cpp SOURCE hnitemsorder.cpp SOURCE hnattrimgprovsvgimage.cpp -SOURCE hnitemfocushandler.cpp SOURCE hniconholder.cpp SOURCE hnextbmpiconholder.cpp diff -r 137ebc85284b -r 1b758917cafc menufw/hierarchynavigator/hnpresentationmodel/inc/hnitemfocushandler.h --- a/menufw/hierarchynavigator/hnpresentationmodel/inc/hnitemfocushandler.h Tue May 25 12:29:32 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,232 +0,0 @@ -/* -* Copyright (c) 2007 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: Application UI class -* Version : %version: 2 % << Don't touch! Updated by Synergy at check-out. -*/ -#ifndef HNITEMFOCUSHANDLER_H -#define HNITEMFOCUSHANDLER_H - -#include <e32base.h> -#include <e32std.h> - -class CHnSuiteModel; - -/** - * Class representing the focus item to be queued. - * - * @lib hnpresentationmodel - * @since S60 5.0 - * @ingroup group_hnpresentationmodel - */ -class TFocusQueueItem - { -public: - - /** - * Constructor. Sets the trigger time on construction. - * - * @since S60 v5.0 - * @param aItemId Index of the item in the suite model. - */ - TFocusQueueItem( TInt aItemId, TInt aEventId ); - - /** - * Fetches the focus item trigger time. - * - * @since S60 v5.0 - * @return Time when the event was triggered. - */ - TTime TriggerTime(); - - /** - * Fetches the focus/unfocus item id. - * - * @since S60 v5.0 - * @return Suite model item id of the focused/unfocused item. - */ - TInt ItemId(); - - /** - * Fetches the focus/unfocus item id. - * - * @since S60 v5.0 - * @return Suite model item id of the focused/unfocused item. - */ - TInt EventId(); - - /** - * Compares queued items by triggered time. - * - * @since S60 v5.0 - * @param aItem1 First item to compare. - * @param aItem2 Second item to compare. - * @return 1 if aItem1 was triggered earlier than aItem2. - * -1 if aItem1 was triggered later than aItem2. - * 0 if aItem1 was triggered at the same time as aItem2. - */ - static TInt CompareByTriggerTime( const TFocusQueueItem& aItem1, - const TFocusQueueItem& aItem2 ); - /** - * Compares queued items by triggered time. - * - * @since S60 v5.0 - * @param aItem1 First item to compare. - * @param aItem2 Second item to compare. - * @return ETrue if aItem1 is equal to aItem2 regarding the item id. - * EFalse if aItem1 is not equal to aItem2 regarding the item id. - */ - static TBool CompareByItemId( const TFocusQueueItem& aItem1, - const TFocusQueueItem& aItem2 ); - -private: - - /** - * Item id. - * Own. - */ - TInt iItemId; - - /** - * Trigger time. - * Own. - */ - TTime iTriggerTime; - - /** - * Event type. - */ - TInt iEventId; - - }; - -/** - * Item focus handler class. - * - * This is an active object which handles focus/unfocus event triggering. - * This class causes focus/unfocus events to be run without performance impact - * on the UI. The focus/unfocus events are queued. If incoming events logically - * cancel the queued events, the appropriate events are removed from the queue. - * - * @lib hnpresentationmodel - * @since S60 5.0 - * @ingroup group_hnpresentationmodel - */ -NONSHARABLE_CLASS( CHnItemFocusHandler ) : public CActive - { -public: - - /** - * Virtual Destructor. - * - * @since S60 5.0 - */ - ~CHnItemFocusHandler(); - - /** - * Two-phased constructor. - * - * @since S60 5.0 - * @param aSuiteModel The suite model for which focus events are handled. - */ - static CHnItemFocusHandler* NewL( CHnSuiteModel* aSuiteModel ); - - /** - * Two-phased constructor. - * - * @since S60 5.0 - * @param aSuiteModel The suite model for which focus events are handled. - */ - static CHnItemFocusHandler* NewLC( CHnSuiteModel* aSuiteModel ); - -public: - - /** - * Called to initiate item focus action handling. - * - * @since S60 v5.0 - * @param aEventId The type of event. Can be KIdFocusGain or KIdFocusLost. Otherwise focus actions are not triggered. - * @param aItemId Index of the item in the suite model. - */ - void SetFocusL( TInt aEventId, TBool aItemId ); - -private: - - /** - * C++ default constructor. - * - * @since S60 v5.0 - */ - CHnItemFocusHandler(); - - /** - * Second-phase constructor. - * - * @since S60 v5.0 - * @param aSuiteModel The suite model for which focus events are handled. - */ - void ConstructL( CHnSuiteModel* aSuiteModel ); - -private: - - /** - * Handles completion. In fact the request is completed immediately after activating the object. - * This method calls focus/unfocus action events. - * - * @since S60 v5.0 - */ - void RunL(); - - /** - * Run when request is cancelled. - */ - void DoCancel(); - - /** - * Overriden to handle leaves from RunL(). Default implementation causes - * the active scheduler to panic. - * - * @since S60 v5.0 - * @param aError The Error code. - * @return Id The eroor code. - */ - TInt RunError(TInt aError); - - /** - * Removes duplicated items. E.g. if a request to focus an item has been triggered - * when there is still a request to unfocus that item pending in the queue. Then the unfocus - * event will be removed from the queue and the event and only the focus event is triggered. - * - * @since S60 v5.0 - * @param aFocusItem The item to be compared. - * @param aEventId focus or unfocus event. - */ - void RemoveDuplicatedItem( const TFocusQueueItem& aFocusItem ); - -private: - - /** - * The suite model for which focus events are handled. - * Not own. - */ - CHnSuiteModel* iSuiteModel; - - /** - * Focus Queue. - * Own. - */ - RArray<TFocusQueueItem> iFocusQueue; - - }; - -#endif // HNITEMFOCUSHANDLER_H diff -r 137ebc85284b -r 1b758917cafc menufw/hierarchynavigator/hnpresentationmodel/inc/hnsuitemodel.h --- a/menufw/hierarchynavigator/hnpresentationmodel/inc/hnsuitemodel.h Tue May 25 12:29:32 2010 +0300 +++ b/menufw/hierarchynavigator/hnpresentationmodel/inc/hnsuitemodel.h Wed Jun 09 09:29:04 2010 +0300 @@ -378,32 +378,6 @@ * @return Custom identifier of the suite. */ IMPORT_C TInt64 CustomId(); - - /** - * Activates highlight handling. - * Used for highlight events for items. - * - * @since S60 v5.0 - * @param aActive ETrue if active. - */ - IMPORT_C void SetActiveL( TBool aActive ); - - /** - * Returns the state of the suite. - * - * @since S60 v5.0 - * @return ETrue if active. - */ - IMPORT_C TBool IsActive(); - - /** - * Notifies the model that the suite is visible. - * Used for highlight events for items. - * - * @since S60 v5.0 - * @param aVisible ETrue if visible. - */ - IMPORT_C void SetVisibleL( TBool aVisible ); /** * Returns item model matching given criteria. @@ -468,17 +442,7 @@ * @param aGenreName Genre name for model */ void ConstructL( const TDesC& aGenreName ); - - /** - * Launches the appropriate action if allowed. - * Used for highlight events for items. - * - * @since S60 v5.0 - * @param aItemId ID of the item. - * @param aFocused ETrue if focused. - */ - void HandleItemFocusL( TInt aItemId, TBool aFocused ); - + /** * Set highlight on item. * @@ -572,18 +536,6 @@ * Not Own. */ CHnEventHandler& iEventHandler; - - /** - * Indicates if the suite is active. - * Used for handling highlight events for items. - */ - TBool iIsActive; - - /** - * Indicates if the suite is visible. - * Used for handling highlight events for items. - */ - TBool iIsVisible; /** * Exit mode. diff -r 137ebc85284b -r 1b758917cafc menufw/hierarchynavigator/hnpresentationmodel/src/hnattributeimage.cpp --- a/menufw/hierarchynavigator/hnpresentationmodel/src/hnattributeimage.cpp Tue May 25 12:29:32 2010 +0300 +++ b/menufw/hierarchynavigator/hnpresentationmodel/src/hnattributeimage.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -187,6 +187,10 @@ { iAttrImgProvider = CHnAttrImgProvAppImage::NewL( iApplicationUid ); } + else if ( IsLiwImage() ) + { + iAttrImgProvider = CHnAttrImgProvLiwImage::NewL( iBitmap, iMask ); + } else if ( IsFileImageL() ) { if ( iFileNameSrc.Find( KSvgFileExtension() ) != KErrNotFound ) @@ -198,10 +202,6 @@ iAttrImgProvider = CHnAttrImgProvFileImage::NewL( iFileNameSrc ); } } - else if ( IsLiwImage() ) - { - iAttrImgProvider = CHnAttrImgProvLiwImage::NewL( iBitmap, iMask ); - } // if strin couldn't be resolved then provide empty one else { diff -r 137ebc85284b -r 1b758917cafc menufw/hierarchynavigator/hnpresentationmodel/src/hnitemfocushandler.cpp --- a/menufw/hierarchynavigator/hnpresentationmodel/src/hnitemfocushandler.cpp Tue May 25 12:29:32 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,230 +0,0 @@ -/* -* Copyright (c) 2007 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: Application UI class -* Version : %version: 3 % << Don't touch! Updated by Synergy at check-out. -*/ - - -#include "hnitemfocushandler.h" -#include "hnglobals.h" -#include "hnsuitemodel.h" - -// --------------------------------------------------------------------------- -// TFocusQueueItem::TFocusQueueItem( TInt aItemId, TInt aEventId ) -// --------------------------------------------------------------------------- -// -TFocusQueueItem::TFocusQueueItem( TInt aItemId, TInt aEventId ): - iItemId( aItemId ), iEventId( aEventId ) - { - iTriggerTime.HomeTime(); - } - -// --------------------------------------------------------------------------- -// TFocusQueueItem::TriggerTime() -// --------------------------------------------------------------------------- -// -TTime TFocusQueueItem::TriggerTime() - { - return iTriggerTime; - } - -// --------------------------------------------------------------------------- -// TFocusQueueItem::ItemId() -// --------------------------------------------------------------------------- -// -TInt TFocusQueueItem::ItemId() - { - return iItemId; - } - -// --------------------------------------------------------------------------- -// TFocusQueueItem::EventId() -// --------------------------------------------------------------------------- -// -TInt TFocusQueueItem::EventId() - { - return iEventId; - } - -// --------------------------------------------------------------------------- -// TFocusQueueItem::CompareByTriggerTime( const TFocusQueueItem& aItem1, -// const TFocusQueueItem& aItem2 ) -// --------------------------------------------------------------------------- -// -TInt TFocusQueueItem::CompareByTriggerTime( const TFocusQueueItem& aItem1, - const TFocusQueueItem& aItem2 ) - { - if ( aItem1.iTriggerTime < aItem2.iTriggerTime ) - { - return -1; - } - else - { - return 1; - } - } - -// --------------------------------------------------------------------------- -// TFocusQueueItem::CompareByItemId( const TFocusQueueItem& aItem1, -// const TFocusQueueItem& aItem2 ) -// --------------------------------------------------------------------------- -// -TBool TFocusQueueItem::CompareByItemId( const TFocusQueueItem& aItem1, - const TFocusQueueItem& aItem2 ) - { - return aItem1.iItemId == aItem2.iItemId; - } - -// --------------------------------------------------------------------------- -// CHnItemFocusHandler::CHnItemFocusHandler() -// --------------------------------------------------------------------------- -// -CHnItemFocusHandler::CHnItemFocusHandler() : - CActive(EPriorityLow) // Standard priority - { - } - -// --------------------------------------------------------------------------- -// CHnItemFocusHandler* CHnItemFocusHandler::NewLC() -// --------------------------------------------------------------------------- -// -CHnItemFocusHandler* CHnItemFocusHandler::NewLC( CHnSuiteModel* aSuiteModel ) - { - CHnItemFocusHandler* self = new (ELeave) CHnItemFocusHandler(); - CleanupStack::PushL(self); - self->ConstructL( aSuiteModel ); - return self; - } - -// --------------------------------------------------------------------------- -// CHnItemFocusHandler* CHnItemFocusHandler::NewL() -// --------------------------------------------------------------------------- -// -CHnItemFocusHandler* CHnItemFocusHandler::NewL( CHnSuiteModel* aSuiteModel ) - { - CHnItemFocusHandler* self = CHnItemFocusHandler::NewLC( aSuiteModel ); - CleanupStack::Pop(); // self; - return self; - } - -// --------------------------------------------------------------------------- -// CHnItemFocusHandler::ConstructL() -// --------------------------------------------------------------------------- -// -void CHnItemFocusHandler::ConstructL( CHnSuiteModel* aSuiteModel ) - { - CActiveScheduler::Add( this); // Add to scheduler - iSuiteModel = aSuiteModel; - } - -// --------------------------------------------------------------------------- -// CHnItemFocusHandler::~CHnItemFocusHandler( -// --------------------------------------------------------------------------- -// -CHnItemFocusHandler::~CHnItemFocusHandler() - { - Cancel(); // Cancel any request, if outstanding - -// handle all pending unfocus events synchronously. - for(TInt i = 0; i < iFocusQueue.Count(); i++ ) - { - if ( KIdFocusLost == iFocusQueue[i].EventId() ) - { - if( iSuiteModel ) - { - TRAP_IGNORE( iSuiteModel->OfferHnEventL( - KIdFocusLost, iFocusQueue[i].ItemId(), NULL ) ); - } - } - } - iFocusQueue.Reset(); - } - -// --------------------------------------------------------------------------- -// CHnItemFocusHandler::DoCancel() -// --------------------------------------------------------------------------- -// -void CHnItemFocusHandler::DoCancel() - { -// TRequestStatus* status = &iStatus; -// User::RequestComplete( status, KErrCancel); - } - -// --------------------------------------------------------------------------- -// CHnItemFocusHandler::StartL(TTimeIntervalMicroSeconds32 aDelay) -// --------------------------------------------------------------------------- -// -void CHnItemFocusHandler::SetFocusL( TInt aEventId, TBool aItemId ) - { - TLinearOrder<TFocusQueueItem> byTriggerTime( - TFocusQueueItem::CompareByTriggerTime ); - TFocusQueueItem focusItem(aItemId, aEventId); - RemoveDuplicatedItem( focusItem ); - iFocusQueue.InsertInOrderL( focusItem, byTriggerTime ); - if ( !IsActive() ) - { - SetActive(); - TRequestStatus* status = &iStatus; - User::RequestComplete( status, KErrNone ); - } - } - -// --------------------------------------------------------------------------- -// CHnItemFocusHandler::RunL() -// --------------------------------------------------------------------------- -// -void CHnItemFocusHandler::RunL() - { - TRAP_IGNORE( iSuiteModel->OfferHnEventL( - iFocusQueue[0].EventId(), iFocusQueue[0].ItemId() , NULL ) ); - iFocusQueue.Remove(0); - - if ( iFocusQueue.Count() > 0) - { - SetActive(); // Tell scheduler a request is active - TRequestStatus* status = &iStatus; - User::RequestComplete( status, KErrNone ); - } - } - -// --------------------------------------------------------------------------- -// CHnItemFocusHandler::RunError(TInt aError) -// --------------------------------------------------------------------------- -// -TInt CHnItemFocusHandler::RunError(TInt aError) - { - return aError; - } - -// --------------------------------------------------------------------------- -// RemoveDuplicatedItem( const TFocusQueueItem& aFocusItem ) -// --------------------------------------------------------------------------- -// -void CHnItemFocusHandler::RemoveDuplicatedItem( const TFocusQueueItem& aFocusItem ) - { - if ( iFocusQueue.Count() != 0 ) - { - TIdentityRelation< TFocusQueueItem > byItemId( - TFocusQueueItem::CompareByItemId ); - TInt itemPosition; - itemPosition = iFocusQueue.Find( aFocusItem, byItemId ); - if ( KErrNotFound != itemPosition ) - { - iFocusQueue.Remove( itemPosition ); - } - } - } - -// End of file - diff -r 137ebc85284b -r 1b758917cafc menufw/hierarchynavigator/hnpresentationmodel/src/hnsuitemodel.cpp --- a/menufw/hierarchynavigator/hnpresentationmodel/src/hnsuitemodel.cpp Tue May 25 12:29:32 2010 +0300 +++ b/menufw/hierarchynavigator/hnpresentationmodel/src/hnsuitemodel.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -30,7 +30,6 @@ #include "hnattributetext.h" #include "hnitemsorder.h" #include "hneventhandler.h" -#include "hnitemfocushandler.h" // ============================ MEMBER FUNCTIONS ============================= @@ -73,11 +72,6 @@ TRAP_IGNORE( iSuiteObservers[i]->HandleSuiteEventL( ESuiteModelDestroyed, this ) ); } - if ( iIsVisible && iIsActive ) - { - TRAP_IGNORE( HandleItemFocusL( iSuiteHighlight.iItemId, EFalse ) ); - } - delete iItemFocusHandler; TRAP_IGNORE( OfferHnEventL( KIdSuiteUnLoad, GetItemsOrder()->GetSuiteId(), NULL ) ); @@ -697,13 +691,6 @@ newCustomId = itemModel->CustomId(); } - if ( ( newCustomId != iSuiteHighlight.iCustomId || - newItemId != iSuiteHighlight.iItemId ) && ( iIsActive && iIsVisible ) ) - { - HandleItemFocusL( iSuiteHighlight.iItemId, EFalse ); - HandleItemFocusL( newItemId, ETrue ); - } - iSuiteHighlight.iCustomId = newCustomId; iSuiteHighlight.iItemId = newItemId; iSuiteHighlight.iWidgetIndex = aHighLight; @@ -845,83 +832,6 @@ // --------------------------------------------------------------------------- // // --------------------------------------------------------------------------- -// -EXPORT_C void CHnSuiteModel::SetActiveL( TBool aActive ) - { - DEBUG16(("_MM_:CHnSuiteModel::SetActiveL %S - IN",iSuiteName)); - DEBUG(("\t_MM_:aActive: %d",aActive)); - DEBUG(("\t_MM_:iIsActive: %d",iIsActive)); - - if ( aActive != iIsActive ) - { - iIsActive = aActive; - if ( iIsVisible ) - { - HandleItemFocusL( iSuiteHighlight.iItemId, aActive ); - } - } - - DEBUG(("_MM_:CHnSuiteModel::SetActiveL - OUT")); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -EXPORT_C TBool CHnSuiteModel::IsActive() - { - return iIsActive; - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -EXPORT_C void CHnSuiteModel::SetVisibleL( TBool aVisible ) - { - DEBUG16(("_MM_:CHnSuiteModel::SetVisible %S - IN",iSuiteName)); - DEBUG(("\t_MM_:aVisible: %d",aVisible)); - DEBUG(("\t_MM_:iIsVisible: %d",iIsVisible)); - - if ( aVisible != iIsVisible ) - { - iIsVisible = aVisible; - if ( iIsActive ) - { - HandleItemFocusL( iSuiteHighlight.iItemId, aVisible ); - } - } - - DEBUG(("_MM_:CHnSuiteModel::SetVisible - OUT")); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -void CHnSuiteModel::HandleItemFocusL( TInt aItemId, TBool aFocused ) - { - DEBUG16(("_MM_:CHnSuiteModel::HandleItemFocusL %S - IN",iSuiteName)); - DEBUG(("\t_MM_:aItemIndex: %d",aItemId)); - DEBUG(("\t_MM_:aFocused: %d",aFocused)); - - if ( aItemId >= 0 ) - { - if ( !iItemFocusHandler ) - { - iItemFocusHandler = CHnItemFocusHandler::NewL( this ); - } - TInt eventId = aFocused ? KIdFocusGain : KIdFocusLost; - iItemFocusHandler->SetFocusL( eventId, aItemId ); -// TRAP_IGNORE( OfferHnEventL( eventId, aItemId, NULL ) ); - } - - DEBUG(("_MM_:CHnSuiteModel::HandleItemFocusL - OUT")); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- // EXPORT_C CHnItemModel* CHnSuiteModel::GetMatchingItemModelL( TInt64 aCustomId, TInt& aIndex ) diff -r 137ebc85284b -r 1b758917cafc menufw/menufwui/matrixmenu/src/mmappui.cpp --- a/menufw/menufwui/matrixmenu/src/mmappui.cpp Tue May 25 12:29:32 2010 +0300 +++ b/menufw/menufwui/matrixmenu/src/mmappui.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -12,8 +12,8 @@ * Contributors: * * Description: Application UI class -* Version : %version: MM_176.1.28.1.78 % << Don't touch! Updated by Synergy at check-out. -* Version : %version: MM_176.1.28.1.78 % << Don't touch! Updated by Synergy at check-out. +* Version : %version: MM_176.1.28.1.82 % << Don't touch! Updated by Synergy at check-out. +* Version : %version: MM_176.1.28.1.82 % << Don't touch! Updated by Synergy at check-out. * */ @@ -77,6 +77,8 @@ EMenuCloseFolderEffect = 1002 }; +#define AI_UID3_AIFW_COMMON 0x102750F0 + // ============================ MEMBER FUNCTIONS ============================= // --------------------------------------------------------------------------- @@ -112,10 +114,9 @@ iDummyContainer = CMmWidgetContainer::NewGridContainerL( ClientRect(), this, iDummyTemplateLib ); iDummyContainer->SetEmptyTextL( KNullDesC ); + iDummyContainer->MakeVisible( EFalse ); AddToStackL( iDummyContainer, ECoeStackPriorityDefault, ECoeStackFlagRefusesFocus | ECoeStackFlagRefusesAllKeys ); - iDummyContainer->MakeVisible( ETrue ); - iDummyContainer->DrawNow(); iHNInterface = CHnEngine::NewL( *this ); iTemplateLibrary = CMmTemplateLibrary::NewL(); @@ -785,10 +786,6 @@ { DEBUG(("_Mm_:CMmAppUi::NotifyUiRefreshL - ELightOn")); iScreenOn = ETrue; - if ( IsForeground() && iCurrentSuiteModel ) - { - iCurrentSuiteModel->SetVisibleL( ETrue ); - } if ( iCurrentContainer ) { iCurrentContainer->HandleForegroundGainedL(); @@ -807,11 +804,6 @@ iCurrentContainer->CancelDragL(EFalse); } } - if (iCurrentSuiteModel) - { - iCurrentSuiteModel->SetVisibleL(EFalse); - } - } break; case ERemoveLiwObjects: @@ -1225,9 +1217,9 @@ HandleHighlightItemSingleClickedL( iCurrentContainer->Widget()->CurrentItemIndex() ); } else if ( aEventType == MEikListBoxObserver::EEventPanningStarted ) - { - iKeyClickLocked = ETrue; - } + { + iKeyClickLocked = ETrue; + } DEBUG(("_Mm_:CMmAppUi::HandleListBoxEventL OUT")); } @@ -1488,25 +1480,25 @@ { TInt itemId( KErrNotFound ); TBool suiteModelHasItems = iCurrentContainer->GetSuiteModelL()->GetItemModelsCount() > 1; - TBool highlightVisible = iCurrentContainer->IsHighlightVisible(); - if ( !highlightVisible && suiteModelHasItems ) - { + TBool highlightVisible = iCurrentContainer->IsHighlightVisible(); + if ( !highlightVisible && suiteModelHasItems ) + { // if there is no highlight, but there are items, show menuitems for logically // current suite highlight fetched from suite model. - TInt suiteHighlight = iCurrentSuiteModel->GetSuiteHighlight(); - ASSERT( suiteHighlight != KErrNotFound ); - itemId = iCurrentSuiteModel->IdByIndex( suiteHighlight ); - ignoreItemSpecific = ETrue; - } - else - { - TBool idByContainer = highlightVisible && suiteModelHasItems; - itemId = idByContainer ? - iCurrentSuiteModel->IdByIndex( iCurrentContainer->GetHighlight() ) : - iCurrentSuiteModel->IdByIndex( KErrNotFound ); - } + TInt suiteHighlight = iCurrentSuiteModel->GetSuiteHighlight(); + ASSERT( suiteHighlight != KErrNotFound ); + itemId = iCurrentSuiteModel->IdByIndex( suiteHighlight ); + ignoreItemSpecific = ETrue; + } + else + { + TBool idByContainer = highlightVisible && suiteModelHasItems; + itemId = idByContainer + ? iCurrentSuiteModel->IdByIndex( iCurrentContainer->GetHighlight() ) + : iCurrentSuiteModel->IdByIndex( KErrNotFound ); + } menuIterator = iCurrentSuiteModel->GetMenuStructureL( itemId ); - } + } // check if there is a menu structure available // for the specified item @@ -1536,42 +1528,42 @@ { CHnMenuItemModel* menuItem = menuIterator->GetNext(); if ( (menuItem->MenuItemType() == CHnMenuItemModel::EItemApplication) || !ignoreItemSpecific ) - { - CEikMenuPaneItem::SData menuData; - menuData.iCommandId = menuItem->Command(); - menuData.iText = menuItem->NameL(). - Left( CEikMenuPaneItem::SData::ENominalTextLength ); - menuData.iFlags = 0; + { + CEikMenuPaneItem::SData menuData; + menuData.iCommandId = menuItem->Command(); + menuData.iText = menuItem->NameL(). + Left( CEikMenuPaneItem::SData::ENominalTextLength ); + menuData.iFlags = 0; - //check for children - MHnMenuItemModelIterator* childIterator = - menuItem->GetMenuStructure(); - if ( childIterator->HasNext() ) - { - //this is a cascade item - //one menu item can contain only one cascade menu - //check if there are available cascade menu containers - TInt freeResource = GetNextCascadeMenuResourceId(); - if ( freeResource != KErrNotFound ) - { - //error checking - if( !iCascadeMenuMap.Insert( freeResource, - childIterator ) ) - { - //add item only if there is an - //available resource - menuData.iCascadeId = freeResource; - } - } - } - else - { - //normal entry - menuData.iCascadeId = 0; - } - positionArray.AppendL( menuItem->Position() ); - menuItemMap.InsertL( menuItem->Position(), menuData ); - } + //check for children + MHnMenuItemModelIterator* childIterator = + menuItem->GetMenuStructure(); + if ( childIterator->HasNext() ) + { + //this is a cascade item + //one menu item can contain only one cascade menu + //check if there are available cascade menu containers + TInt freeResource = GetNextCascadeMenuResourceId(); + if ( freeResource != KErrNotFound ) + { + //error checking + if( !iCascadeMenuMap.Insert( freeResource, + childIterator ) ) + { + //add item only if there is an + //available resource + menuData.iCascadeId = freeResource; + } + } + } + else + { + //normal entry + menuData.iCascadeId = 0; + } + positionArray.AppendL( menuItem->Position() ); + menuItemMap.InsertL( menuItem->Position(), menuData ); + } } aMenuPane->Reset(); @@ -1742,7 +1734,15 @@ iCurrentContainer = aWidgetContainer; iCurrentContainer->Widget()->View()->SetDisableRedraw(ETrue); - iDummyContainer->MakeVisible( ETrue ); + if( isHiddenFromFS ) + { + iCurrentContainer->MakeVisible( EFalse ); + } + else + { + iDummyContainer->MakeVisible( ETrue ); + } + RefreshCbaL(); iCurrentContainer->SetEditModeL( IsEditMode() ); iCurrentContainer->SetSuiteModelL( iCurrentSuiteModel ); @@ -2378,9 +2378,9 @@ // void CMmAppUi::HandleSuiteModelInitializedL( CHnSuiteModel* aModel ) { + StatusPane()->MakeVisible( ETrue ); Cba()->MakeVisible( ETrue ); - if ( aModel == iHNInterface->GetLastSuiteModelL() ) { TBool showOpenFolderEffect(iCurrentSuiteModel @@ -2392,12 +2392,6 @@ StartLayoutSwitchFullScreen( EMenuOpenFolderEffect ); } - if ( iCurrentSuiteModel ) - { - iCurrentSuiteModel->SetVisibleL( EFalse ); - DEBUG16(("\t\t_Mm_:SetVisible EFalse - %S", - &(iCurrentSuiteModel->SuiteName()))); - } iCurrentSuiteModel = aModel; ShowSuiteL(); iGarbage.ResetAndDestroy(); @@ -2411,13 +2405,6 @@ iEditModeStatus = ENoEditMode; } - if (iScreenOn && IsForeground()) - { - iCurrentSuiteModel->SetVisibleL( ETrue ); - DEBUG16(("\t\t_Mm_:SetVisible ETrue - %S", - &(iCurrentSuiteModel->SuiteName()))); - } - HideMenuPaneIfVisibleL(); EndFullScreen(); } @@ -2755,15 +2742,20 @@ aKastorEffect == AknTransEffect::EApplicationExit ) { DEBUG(("_MM_:CMmAppUi::StartLayoutSwitchFullScreen Foreground")); - TUid uid1( KUidMatrixMenuApp ); - TUid uid2( KUidMatrixMenuApp ); - if ( aKastorEffect == AknTransEffect::EApplicationExit ) + TUid uidNext( KUidMatrixMenuApp ); + TUid uidPrev( KUidMatrixMenuApp ); + + if( aKastorEffect == AknTransEffect::EApplicationExit ) { - uid2 = TUid::Null(); + uidPrev = TUid::Null(); + } + else if( aKastorEffect == AknTransEffect::EApplicationStart ) + { + uidPrev = uidPrev.Uid( AI_UID3_AIFW_COMMON ); } AknTransEffect::TParamBuffer params = AknTransEffect::GfxTransParam( - uid1, uid2, AknTransEffect::TParameter::EFlagNone ); + uidNext, uidPrev, AknTransEffect::TParameter::EFlagNone ); GfxTransEffect::BeginFullScreen( aKastorEffect, TRect(), AknTransEffect::EParameterType, params ); @@ -2990,10 +2982,6 @@ { iCurrentContainer->SetHasFocusL( ETrue ); } - if ( iCurrentSuiteModel ) - { - iCurrentSuiteModel->SetVisibleL( ETrue ); - } } // --------------------------------------------------------------------------- @@ -3031,11 +3019,6 @@ } iCurrentContainer->SetHasFocusL( EFalse ); } - if ( iCurrentSuiteModel ) - { - iCurrentSuiteModel->SetVisibleL( EFalse ); - } - } // --------------------------------------------------------------------------- diff -r 137ebc85284b -r 1b758917cafc menufw/menufwui/mmextensions/mmextensionmanager/group/bld.inf --- a/menufw/menufwui/mmextensions/mmextensionmanager/group/bld.inf Tue May 25 12:29:32 2010 +0300 +++ b/menufw/menufwui/mmextensions/mmextensionmanager/group/bld.inf Wed Jun 09 09:29:04 2010 +0300 @@ -21,7 +21,6 @@ PRJ_EXPORTS ../inc/mmextensionmanager.h |../../../../inc/mmextensionmanager.h -../inc/mmecomobserver.h |../../../../inc/mmecomobserver.h PRJ_MMPFILES mmextensionmanager.mmp diff -r 137ebc85284b -r 1b758917cafc menufw/menufwui/mmextensions/mmextensionmanager/group/mmextensionmanager.mmp --- a/menufw/menufwui/mmextensions/mmextensionmanager/group/mmextensionmanager.mmp Tue May 25 12:29:32 2010 +0300 +++ b/menufw/menufwui/mmextensions/mmextensionmanager/group/mmextensionmanager.mmp Wed Jun 09 09:29:04 2010 +0300 @@ -28,7 +28,6 @@ SOURCEPATH ../src SOURCE mmextensionmanager.cpp -SOURCE mmecomobserver.cpp USERINCLUDE . diff -r 137ebc85284b -r 1b758917cafc menufw/menufwui/mmextensions/mmextensionmanager/inc/mmecomobserver.h --- a/menufw/menufwui/mmextensions/mmextensionmanager/inc/mmecomobserver.h Tue May 25 12:29:32 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,131 +0,0 @@ -/* -* Copyright (c) 2007 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: Menu Framewrok ECom observer -* -*/ - -#ifndef C_ECOM_OBSERVER_H -#define C_ECOM_OBSERVER_H - -#include <e32base.h> // For CActive, link against: euser.lib -#include <e32std.h> // For RTimer, link against: euser.lib - -class REComSession; - -/** - * Class defining callback interface. - */ - -/** - * MHNEcomInstallNotifierCallback is an interface contains function - * executed when ECom plugin have changed. Interface is used by all - * ECom observer implementations. - * - * @since S60 5.0 - * @ingroup group_mmextensions - */ -class MHNEcomInstallNotifierCallback - { -public: - - /** - * Refreshes list of MultimediaMenu plugins implementations. - */ - virtual void EcomChangedL() = 0; - }; - -/** - * Class for observing ECom server - */ - -/** - * CMMEcomObserver is a class represents ECom plugin. Class is - * derived by all ECom plugin implemetations. Implementation - * contains basic functionality related with ECom mechanism and - * notification handling. - * - * @since S60 5.0 - * @ingroup group_mmextensions - */ -NONSHARABLE_CLASS( CMMEcomObserver ) : public CActive - { -public: - /** - * Cancel and destroy. - */ - ~CMMEcomObserver(); - - /** - * Two-phased constructor. - * @param aCallback Pointer to ECom plugin callback. - * @return Instance of the CMMEcomObserver class. - */ - static CMMEcomObserver* NewL( MHNEcomInstallNotifierCallback* aCallback ); - - /** - * Two-phased constructor. - * @param aCallback Pointer to ECom plugin callback. - * @return Instance of the CMMEcomObserver class. - */ - static CMMEcomObserver* NewLC( MHNEcomInstallNotifierCallback* aCallback ); - -private: - /** - * Default C++ constructor. - */ - CMMEcomObserver(); - - /** - * Second-phase constructor. - * @param aCallback Pointer to ECom plugin callback. - */ - void ConstructL( MHNEcomInstallNotifierCallback* aCallback ); - -private: - - /** - * From CActive. Handles completion. - */ - void RunL(); - - /** - * Cancels active object. - */ - void DoCancel(); - - /** - * Override to handle leaves from RunL(). Default implementation causes - * the active scheduler to panic. - * @param aError Currently error status. - * @return Error code. - */ - TInt RunError( TInt aError ); - -private: - - /** - * ECom handler - * Own. - */ - REComSession* iSession; - - /** - * Callback pointer. - * Not own. - */ - MHNEcomInstallNotifierCallback* iCallback; - - }; - -#endif // C_ECOM_OBSERVER_H diff -r 137ebc85284b -r 1b758917cafc menufw/menufwui/mmextensions/mmextensionmanager/inc/mmextensionmanager.h --- a/menufw/menufwui/mmextensions/mmextensionmanager/inc/mmextensionmanager.h Tue May 25 12:29:32 2010 +0300 +++ b/menufw/menufwui/mmextensions/mmextensionmanager/inc/mmextensionmanager.h Wed Jun 09 09:29:04 2010 +0300 @@ -20,7 +20,6 @@ #define C_MM_EXTENSION_MANAGER_H // INCLUDES -#include "mmecomobserver.h" #include <e32std.h> #include <e32base.h> #include <e32hashtab.h> @@ -38,9 +37,7 @@ * @since S60 5.0 * @ingroup group_mmextensions */ -NONSHARABLE_CLASS( CMMExtensionManager ): - public CBase, - public MHNEcomInstallNotifierCallback +NONSHARABLE_CLASS( CMMExtensionManager ): public CBase { public: // Constructors and destructor @@ -79,11 +76,6 @@ const TUid aUid, const TDesC& aCommand, CLiwGenericParamList* aEventParamList ); - - /** - * Refreshes list of MultimediaMenu plugins implementations. - */ - void EcomChangedL(); private: @@ -124,12 +116,7 @@ * Reference to the App UI. */ MMmActionRequest& iActionRequest; - - /** - * Pointer to ECom observer. - * Own. - */ - CMMEcomObserver *iEcomObserver; + }; #endif // C_MM_EXTENSION_MANAGER_H diff -r 137ebc85284b -r 1b758917cafc menufw/menufwui/mmextensions/mmextensionmanager/src/mmecomobserver.cpp --- a/menufw/menufwui/mmextensions/mmextensionmanager/src/mmecomobserver.cpp Tue May 25 12:29:32 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,109 +0,0 @@ -/* -* Copyright (c) 2007 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: Interface of the Ecom observer -* -*/ - -#include <ecom/ecom.h> -#include "mmecomobserver.h" - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -CMMEcomObserver::CMMEcomObserver() : - CActive(EPriorityStandard) // Standard priority - { - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -CMMEcomObserver* CMMEcomObserver::NewLC( - MHNEcomInstallNotifierCallback* aCallback ) - { - CMMEcomObserver* self = new ( ELeave ) CMMEcomObserver(); - CleanupStack::PushL(self); - self->ConstructL( aCallback ); - return self; - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -CMMEcomObserver* CMMEcomObserver::NewL( - MHNEcomInstallNotifierCallback* aCallback ) - { - CMMEcomObserver* self = CMMEcomObserver::NewLC( aCallback ); - CleanupStack::Pop(); // self; - return self; - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -void CMMEcomObserver::ConstructL( MHNEcomInstallNotifierCallback* aCallback ) - { - iCallback = aCallback; - iSession = &REComSession::OpenL(); - iSession->NotifyOnChange( iStatus ); - CActiveScheduler::Add( this ); - SetActive(); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -CMMEcomObserver::~CMMEcomObserver() - { - Cancel(); // Cancel any request, if outstanding - if( iSession ) - { - iSession->Close(); - } - REComSession::FinalClose( ); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -void CMMEcomObserver::DoCancel() - { - iSession->CancelNotifyOnChange( iStatus ); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -void CMMEcomObserver::RunL() - { - iCallback->EcomChangedL(); - iSession->NotifyOnChange( iStatus ); - SetActive(); // Tell scheduler a request is active - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CMMEcomObserver::RunError( TInt /*aError*/ ) - { - return KErrNone; - } diff -r 137ebc85284b -r 1b758917cafc menufw/menufwui/mmextensions/mmextensionmanager/src/mmextensionmanager.cpp --- a/menufw/menufwui/mmextensions/mmextensionmanager/src/mmextensionmanager.cpp Tue May 25 12:29:32 2010 +0300 +++ b/menufw/menufwui/mmextensions/mmextensionmanager/src/mmextensionmanager.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -45,17 +45,6 @@ delete (CMMExtensionPlugin*)(*ptr); } iPluginMap.Close (); - - - //delete iPluginNameMap - /*THashMapIter< HBufC*, TInt32 > iter1( iPluginNameMap ); - while ( HBufC*const* ptrHbuf = iter1.NextKey() ) - { - delete *ptrHbuf; - } - iPluginNameMap.Close();*/ - - delete iEcomObserver; } // --------------------------------------------------------------------------- @@ -88,7 +77,6 @@ // void CMMExtensionManager::ConstructL() { - iEcomObserver = CMMEcomObserver::NewL( this ); LoadPluginsL(); } @@ -179,21 +167,4 @@ return ret; } -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -void CMMExtensionManager::EcomChangedL() - { - THashMapIter< TInt32, CMMExtensionPlugin* > iter( iPluginMap ); - for (CMMExtensionPlugin* const* ptr = - ( CMMExtensionPlugin* const* ) iter.NextValue(); - ptr; ptr = ( CMMExtensionPlugin* const* ) iter.NextValue()) - { - delete (CMMExtensionPlugin*)(*ptr); - } - iPluginMap.Close(); - LoadPluginsL(); - } - // End of file diff -r 137ebc85284b -r 1b758917cafc menufw/menufwui/mmwidgets/inc/mmdraweranimator.h --- a/menufw/menufwui/mmwidgets/inc/mmdraweranimator.h Tue May 25 12:29:32 2010 +0300 +++ b/menufw/menufwui/mmwidgets/inc/mmdraweranimator.h Wed Jun 09 09:29:04 2010 +0300 @@ -12,7 +12,7 @@ * Contributors: * * Description: CMmDrawerAnimator declaration -* Version : %version: MM_17.1.8 % << Don't touch! Updated by Synergy at check-out. +* Version : %version: MM_17.1.10 % << Don't touch! Updated by Synergy at check-out. * */ @@ -154,6 +154,17 @@ */ void TriggerMoveItemL(); + /** + * Animates transition of the dragged item. + * The animation starts in the original place of dragging item, + * and end in the EDrag floating item position, when item had been start drag. + * + * @since S60 v5.0 + * @param aDraggedIndex Draged item index to be animated. + * @param aPoint End position of animated item. + */ + void AnimateDragItemStartL( TInt aDraggedIndex, TPoint aPoint ); + private: /** diff -r 137ebc85284b -r 1b758917cafc menufw/menufwui/mmwidgets/inc/mmgrid.h --- a/menufw/menufwui/mmwidgets/inc/mmgrid.h Tue May 25 12:29:32 2010 +0300 +++ b/menufw/menufwui/mmwidgets/inc/mmgrid.h Wed Jun 09 09:29:04 2010 +0300 @@ -12,7 +12,7 @@ * Contributors: * * Description: CMmGrid declaration -* Version : %version: MM_32.1.24 % << Don't touch! Updated by Synergy at check-out. +* Version : %version: MM_32.1.25 % << Don't touch! Updated by Synergy at check-out. * */ @@ -131,7 +131,7 @@ * @param aBgContext Background context to be set in view and item drawer. */ void SetItemDrawerAndViewBgContext( - CAknsBasicBackgroundControlContext* aBgContext ); + CAknsBasicBackgroundControlContext* aBgContext ); /** * Handles changes in scrollbar visibility. @@ -362,7 +362,7 @@ * @param aPointerEvent Type of pointer event. */ void HandleOverridenHighlightDrawing( const TPointerEvent& aPointerEvent, - TInt aIndexBefore, TInt aIndexAfter ); + TInt aIndexBefore, TInt aIndexAfter ); /** * Ensures that elements are drawn correctly when mirrored layout is diff -r 137ebc85284b -r 1b758917cafc menufw/menufwui/mmwidgets/inc/mmgridview.h --- a/menufw/menufwui/mmwidgets/inc/mmgridview.h Tue May 25 12:29:32 2010 +0300 +++ b/menufw/menufwui/mmwidgets/inc/mmgridview.h Wed Jun 09 09:29:04 2010 +0300 @@ -12,7 +12,7 @@ * Contributors: * * Description: CMmGridView declaration -* Version : %version: MM_24.1.10 % << Don't touch! Updated by Synergy at check-out. +* Version : %version: MM_24.1.11 % << Don't touch! Updated by Synergy at check-out. * */ @@ -63,9 +63,9 @@ * @since S60 v3.0 * @param aClipRect Clipping rectangle. */ - void Draw( const TRect* aClipRect ) const; + void Draw( const TRect* aClipRect ) const; - /** + /** * Gets item position. * * This fuction from @c CAknGridView is overridden so that it @@ -90,12 +90,12 @@ */ TBool XYPosToItemIndex(TPoint aPosition, TInt& aItemIndex) const; - /** - * Returns this view's gc. - * - * @return pointer to gc - */ - CWindowGc* Gc(); + /** + * Returns this view's gc. + * + * @return pointer to gc + */ + CWindowGc* Gc(); /** * @see CAknGridView::UpdateSelectionL @@ -108,15 +108,15 @@ */ void UpdateSelectionL( TSelectionMode aSelectionMode ); - /** - * @see CAknGridView::MoveCursorL - * - * This method of CAknGridView is overriden to so that - * correct effects are displayed when moving highlight with - * rocker key in mirrored layout. + /** + * @see CAknGridView::MoveCursorL + * + * This method of CAknGridView is overriden to so that + * correct effects are displayed when moving highlight with + * rocker key in mirrored layout. * Please note that it is necessary because of the hackish * solution used to draw items in mirrored layout. - */ + */ void MoveCursorL( TCursorMovement aCursorMovement, TSelectionMode aSelectionMode ); @@ -128,10 +128,10 @@ */ TInt VerticalItemOffset() const; - /** - * This function sets item height in pixels. - * @param aItemHeight New height in pixels for this views items. - */ + /** + * This function sets item height in pixels. + * @param aItemHeight New height in pixels for this views items. + */ void SetItemHeight(TInt aItemHeight); /** diff -r 137ebc85284b -r 1b758917cafc menufw/menufwui/mmwidgets/inc/mmlistboxitemdrawer.h --- a/menufw/menufwui/mmwidgets/inc/mmlistboxitemdrawer.h Tue May 25 12:29:32 2010 +0300 +++ b/menufw/menufwui/mmwidgets/inc/mmlistboxitemdrawer.h Wed Jun 09 09:29:04 2010 +0300 @@ -12,7 +12,7 @@ * Contributors: * * Description: CMmListBoxItemDrawer -* Version : %version: MM_38.1.18 % << Don't touch! Updated by Synergy at check-out. +* Version : %version: MM_38.1.19 % << Don't touch! Updated by Synergy at check-out. * */ @@ -485,6 +485,17 @@ */ void DrawBackground( const TRect& aItemTextRect ) const; + /** + * Animates transition of the dragged item. + * The animation starts in the original place of dragging item, + * and end in the EDrag floating item position, when item had been start drag. + * + * @since S60 v5.0 + * @param aDraggedIndex Draged item index to be animated. + * @param aPoint End position of animated item. + */ + void AnimateDragItemStartL( TInt aDraggedIndex, TPoint aPoint ); + protected: /** * From CListItemDrawer. Draws an item. diff -r 137ebc85284b -r 1b758917cafc menufw/menufwui/mmwidgets/inc/mmwidgetcontainer.h --- a/menufw/menufwui/mmwidgets/inc/mmwidgetcontainer.h Tue May 25 12:29:32 2010 +0300 +++ b/menufw/menufwui/mmwidgets/inc/mmwidgetcontainer.h Wed Jun 09 09:29:04 2010 +0300 @@ -12,7 +12,7 @@ * Contributors: * * Description: -* Version : %version: MM_48.1.40 % << Don't touch! Updated by Synergy at check-out. +* Version : %version: MM_48.1.43 % << Don't touch! Updated by Synergy at check-out. * */ @@ -72,34 +72,34 @@ TMmWidgetPosition(); public: // data - /** - * The vertical item offset cache. - */ - TInt iVerticalItemOffset; + /** + * The vertical item offset cache. + */ + TInt iVerticalItemOffset; - /** - * The top item index cache. - */ - TInt iTopItemIndex; + /** + * The top item index cache. + */ + TInt iTopItemIndex; - /** - * Tells if the cached values are valid. - */ - TBool iValid; + /** + * Tells if the cached values are valid. + */ + TBool iValid; - /** - * The mode (portrait/landscape) for which the cache is valid. - */ - TBool iLandscape; + /** + * The mode (portrait/landscape) for which the cache is valid. + */ + TBool iLandscape; - /** - * Id from model (not index) of the currently highlighted item. - * It should only be set if the currently highlighted item is - * visible (fully or partially), otherwise it must remain - * initialized to KErrNotFound. - */ - TInt iHighlightedItemId; - }; + /** + * Id from model (not index) of the currently highlighted item. + * It should only be set if the currently highlighted item is + * visible (fully or partially), otherwise it must remain + * initialized to KErrNotFound. + */ + TInt iHighlightedItemId; + }; /** * Interface for widget containers. @@ -143,13 +143,13 @@ public: // Highlight related methods - /** - * Sets the default highlight. - * + /** + * Sets the default highlight. + * * @since S60 v3.0 * @param aRedraw Is highlight to redraw. - */ - virtual void SetDefaultHighlightL( TBool aRedraw = ETrue ) = 0; + */ + virtual void SetDefaultHighlightL( TBool aRedraw = ETrue ) = 0; /** * Sets the highlight. @@ -158,7 +158,7 @@ * @param aItemIndex Index to set the highlight at. * @param aRedraw Is highlight to redraw. */ - IMPORT_C virtual void SetManualHighlightL(TInt aItemIndex, TBool aRedraw = ETrue ); + IMPORT_C virtual void SetManualHighlightL(TInt aItemIndex, TBool aRedraw = ETrue ); /** * Gets the highlight from the widget. @@ -166,7 +166,7 @@ * @since S60 v3.0 * @return Current Highlight in the widget. */ - IMPORT_C virtual TInt GetHighlight(); + IMPORT_C virtual TInt GetHighlight(); /** * Gets the highlight from the widget. @@ -174,7 +174,7 @@ * @since S60 v3.0 * @return Previous Highlight in the widget. */ - IMPORT_C virtual TInt GetPreviousHighlight(); + IMPORT_C virtual TInt GetPreviousHighlight(); /** * Set highlight visibility. @@ -182,7 +182,7 @@ * @since S60 v3.0 * @param aVisible Visibility status. */ - IMPORT_C virtual void SetHighlightVisibilityL( TBool aVisible ); + IMPORT_C virtual void SetHighlightVisibilityL( TBool aVisible ); /** * Set highlight visibility. @@ -190,14 +190,14 @@ * @since S60 v3.0 * @return Visibility status. */ - IMPORT_C virtual TBool IsHighlightVisible(); + IMPORT_C virtual TBool IsHighlightVisible(); /** * Handle item addition. * * @since S60 v3.0 */ - IMPORT_C virtual void HandleItemAdditionL(); + IMPORT_C virtual void HandleItemAdditionL(); /** @@ -205,14 +205,14 @@ * * @since S60 v3.0 */ - IMPORT_C virtual void HandleItemRemovalL(); + IMPORT_C virtual void HandleItemRemovalL(); /** * Handle item removal. * * @since S60 v3.0 */ - IMPORT_C CHnSuiteModel* GetSuiteModelL(); + IMPORT_C CHnSuiteModel* GetSuiteModelL(); /** * Retrieve type of widget. @@ -220,40 +220,40 @@ * @since S60 v3.0 * @return Type of widget. */ - IMPORT_C virtual THnSuiteWidgetType WidgetType(); + IMPORT_C virtual THnSuiteWidgetType WidgetType(); - /** - * Removes all LIW objects owned by this object. + /** + * Removes all LIW objects owned by this object. * * LIW objects owned by non-LIW objects that are owned by * this object are also removed. - */ - virtual void RemoveLiwObjects(); + */ + virtual void RemoveLiwObjects(); - /** - * Sets the long tap observer. + /** + * Sets the long tap observer. * * @param aObserver Observer to receive long tap events. - */ - IMPORT_C virtual void SetLongTapObserver( MMmLongTapObserver* aObserver ); + */ + IMPORT_C virtual void SetLongTapObserver( MMmLongTapObserver* aObserver ); - /** - * Informs the container that long tap event is finished (e.g. because - * a command from the context menu has been issued). - * - * @param aStopTimer ETrue when the highlight timer should be stopped. - */ - IMPORT_C virtual void EndLongTapL( TBool aStopTimer = ETrue ); + /** + * Informs the container that long tap event is finished (e.g. because + * a command from the context menu has been issued). + * + * @param aStopTimer ETrue when the highlight timer should be stopped. + */ + IMPORT_C virtual void EndLongTapL( TBool aStopTimer = ETrue ); public: - /** - * Sets suite model. - * - * @since S60 v3.0 - * @param aModel Suite model. - */ - virtual void SetSuiteModelL( CHnSuiteModel* aModel ); + /** + * Sets suite model. + * + * @since S60 v3.0 + * @param aModel Suite model. + */ + virtual void SetSuiteModelL( CHnSuiteModel* aModel ); /** * Gets Multimedia Menu model. @@ -261,7 +261,7 @@ * @since S60 v3.0 * @return Model. */ - virtual CMmListBoxModel* GetMmModel() = 0; + virtual CMmListBoxModel* GetMmModel() = 0; /** * Sets widget observer. @@ -269,7 +269,7 @@ * @since S60 v3.0 * @param aObserver Widget observer. */ - IMPORT_C virtual void SetObserver( MMmWidgetObserver* aObserver); + IMPORT_C virtual void SetObserver( MMmWidgetObserver* aObserver); /** * Gets item rectangle according to item index. @@ -278,7 +278,7 @@ * @param aItemIndex Item index. * @return Item rectangle. */ - IMPORT_C TRect GetItemRectL( TInt aItemIndex ); + IMPORT_C TRect GetItemRectL( TInt aItemIndex ); /** * Sets empty text visible when model has no items. @@ -286,7 +286,7 @@ * @since S60 v3.0 * @param aText Text to be shown when view is empty. */ - virtual void SetEmptyTextL(const TDesC& aText) = 0 ; + virtual void SetEmptyTextL(const TDesC& aText) = 0 ; /** * Sets flag. @@ -294,7 +294,7 @@ * @since S60 v3.0 * @param Flag Flag. */ - virtual void SetFlag(TInt Flag); + virtual void SetFlag(TInt Flag); /** * Gets widget. @@ -302,7 +302,7 @@ * @since S60 v3.0 * @return Widget. */ - virtual CEikListBox* Widget(); + virtual CEikListBox* Widget(); /** * Sets background context for item drawer and view. @@ -310,7 +310,7 @@ * @since S60 v3.0 * @param aBgContext Background context. */ - virtual void SetItemDrawerAndViewBgContext( + virtual void SetItemDrawerAndViewBgContext( CAknsBasicBackgroundControlContext * aBgContext ) =0; /** @@ -693,6 +693,11 @@ */ IMPORT_C void SetExDialogOpened( TBool aOpened ); + /** + * Widget position cache. + */ + TMmWidgetPosition WidgetPositionCache() const; + public: // from MMmVisibilityObserver /** @@ -847,11 +852,11 @@ TBool IsFolderL( TInt aItemIndex ); /** - * Checks, whether given item has IsDeleteLockedL flag set. - * @param aItemIndex Item index to check. - * @returns IsDeleteLockedL flag - */ - TBool IsDeleteLockedL( TInt aItemIndex ); + * Checks, whether given item has IsDeleteLockedL flag set. + * @param aItemIndex Item index to check. + * @returns IsDeleteLockedL flag + */ + TBool IsDeleteLocked( TInt aItemIndex ); /** * Gets column count in current view. @@ -885,24 +890,24 @@ protected: - /** - * Own. - */ - CEikListBox* iWidget; + /** + * Own. + */ + CEikListBox* iWidget; /** * Key event observer. */ - MMmKeyEventObserver* iKeyEventObserver; + MMmKeyEventObserver* iKeyEventObserver; /** * Drag and drop observer. */ - MMmDragAndDropObserver* iDragAndDropObserver; + MMmDragAndDropObserver* iDragAndDropObserver; /** * List box observer. */ - MEikListBoxObserver* iListBoxObserver; + MEikListBoxObserver* iListBoxObserver; /** * Marquee adapter. @@ -918,29 +923,28 @@ protected: - /** - * Current Highlight. - */ - TInt iCurrentHighlight; + /** + * Current Highlight. + */ + TInt iCurrentHighlight; + + /** + * Processed display elelments for better performance. + */ + CMmPostEvaluationProcessor* iPostProcessor; + + /** + * Set when long tap is in progress (stylus popup displayed over container) + */ + TBool iLongTapInProgress; + +private: /** * Has drag occurred. */ TBool iDragOccured; - /** - * Processed display elelments for better performance. - */ - CMmPostEvaluationProcessor* iPostProcessor; - - /** - * Set when long tap is in progress (stylus popup displayed over container) - */ - TBool iLongTapInProgress; - -private: - - /** * Background context. * Own. @@ -970,7 +974,7 @@ /** * Dragged item index. */ - TBool iDraggedIndex; + TInt iDraggedIndex; /** * Edit mode status. diff -r 137ebc85284b -r 1b758917cafc menufw/menufwui/mmwidgets/inc/mmwidgetsconstants.h --- a/menufw/menufwui/mmwidgets/inc/mmwidgetsconstants.h Tue May 25 12:29:32 2010 +0300 +++ b/menufw/menufwui/mmwidgets/inc/mmwidgetsconstants.h Wed Jun 09 09:29:04 2010 +0300 @@ -12,7 +12,7 @@ * Contributors: * * Description: Constants for the matrixmenu -* Version : %version: 33.1.13 % << Don't touch! Updated by Synergy at check-out. +* Version : %version: 33.1.14 % << Don't touch! Updated by Synergy at check-out. * */ @@ -424,6 +424,7 @@ EPostDragRefreshItem, EPostHighlightChangeRefreshItem, ESwapTransition, + EDragStart, EDragTransition, EZoomTransition }; diff -r 137ebc85284b -r 1b758917cafc menufw/menufwui/mmwidgets/src/mmdraweranimator.cpp --- a/menufw/menufwui/mmwidgets/src/mmdraweranimator.cpp Tue May 25 12:29:32 2010 +0300 +++ b/menufw/menufwui/mmwidgets/src/mmdraweranimator.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -12,7 +12,7 @@ * Contributors: * * Description: - * Version : %version: MM_41 % << Don't touch! Updated by Synergy at check-out. + * Version : %version: MM_43 % << Don't touch! Updated by Synergy at check-out. * */ @@ -120,7 +120,9 @@ current.MakeStep(); TRect afterRect( current.GetItemPosition(), itemSize ); - if( current.GetFloatingItemType() == EDrag ) + if( ( current.GetFloatingItemType() == EDrag + && iDrawer.GetFloatingItemIndex( EDragStart ) == KErrNotFound ) + || current.GetFloatingItemType() == EDragStart ) { TInt dragTrail = iDrawer.GetFloatingItemIndex( EPostDragRefreshItem ); if( dragTrail != KErrNotFound ) @@ -131,7 +133,9 @@ SetAllowMove( EFalse ); } } - else + else if( ( current.GetFloatingItemType() == EDrag + && iDrawer.GetFloatingItemIndex( EDragStart ) == KErrNotFound ) + || current.GetFloatingItemType() != EDrag ) { refreshRect = (refreshRect == TRect() ) ? beforeRect : refreshRect; refreshRect.BoundingRect( beforeRect ); @@ -149,7 +153,7 @@ } - TInt currentVerticalOffset = static_cast<CMmWidgetContainer*>( + TInt currentVerticalOffset = static_cast<CMmWidgetContainer*>( iDrawer.Widget()->Parent() )->VerticalItemOffset(); if( iLastNotedTopItem != iDrawer.Widget()->TopItemIndex() @@ -249,7 +253,7 @@ if( iTransTfxInternal ) { - iTransTfxInternal->Remove( MAknListBoxTfxInternal::EListEverything ); + iTransTfxInternal->Remove( MAknListBoxTfxInternal::EListEverything ); iTransTfxInternal->Draw( iDrawer.Widget()->Rect() ); } } @@ -277,17 +281,30 @@ // void CMmDrawerAnimator::AnimateDragItemTransitionL() { - if( KErrNotFound != iDrawer.GetFloatingItemIndex( EDrag ) ) + if( KErrNotFound != iDrawer.GetFloatingItemIndex( EDrag ) + || KErrNotFound != iDrawer.GetFloatingItemIndex( EDragStart ) ) { + TMmFloatingItemType floatingType = + iDrawer.GetFloatingItemIndex( EDrag ) != KErrNotFound + ? EDrag : EDragStart; TMmFloatingItem floatingItem( - iDrawer.GetFloatingItemL( EDrag ).GetDrawnItemIndex(), - iDrawer.GetFloatingItemL( EDrag ).GetItemPosition(), - EDragTransition, iUsualAnimationFramesCount, + iDrawer.GetFloatingItemL( floatingType ).GetDrawnItemIndex(), + iDrawer.GetFloatingItemL( floatingType ).GetItemPosition(), + EDragTransition, floatingType == EDrag + ? iUsualAnimationFramesCount : MmEffects::KNoAnimationFramesCount, iDrawer.Widget()->View() ); TPoint pointEnd = iDrawer.Widget()->View()->ItemPos( floatingItem.GetDrawnItemIndex() ); floatingItem.SetPositionStep( pointEnd - floatingItem.GetItemPosition() ); iDrawer.AddFloatingItemL( floatingItem, 0 ); + + TMmFloatingItem postDragRefresh( + iDrawer.GetFloatingItemL( floatingType ).GetDrawnItemIndex(), + pointEnd, EPostDragRefreshItem, + MmEffects::KNoAnimationFramesCount, iDrawer.Widget()->View() ); + iDrawer.AddFloatingItemL( postDragRefresh ); + iDrawer.RemoveFloatingItem( iDrawer.GetFloatingItemIndex( EDrag ) ); + iDrawer.RemoveFloatingItem( iDrawer.GetFloatingItemIndex( EDragStart ) ); } } @@ -429,4 +446,20 @@ static_cast<CMmWidgetContainer*> ( iDrawer.Widget()->Parent() )-> TriggerMoveItemL(); } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void CMmDrawerAnimator::AnimateDragItemStartL( TInt aDraggedIndex, TPoint aPoint ) + { + TMmFloatingItem floatingItem( + aDraggedIndex, + iDrawer.Widget()->View()->ItemPos( aDraggedIndex ), + EDragStart, + MmEffects::KUsualAnimationFramesCountNonTouch, + iDrawer.Widget()->View() ); + floatingItem.SetPositionStep( aPoint - floatingItem.GetItemPosition() ); + iDrawer.AddFloatingItemL( floatingItem, 0 ); + } //End of file diff -r 137ebc85284b -r 1b758917cafc menufw/menufwui/mmwidgets/src/mmfloatingitem.cpp --- a/menufw/menufwui/mmwidgets/src/mmfloatingitem.cpp Tue May 25 12:29:32 2010 +0300 +++ b/menufw/menufwui/mmwidgets/src/mmfloatingitem.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -22,15 +22,15 @@ // ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- -// +// TMmFloatingItem::TMmFloatingItem( TInt aDrawnIndex, TPoint aStartPosition, - TMmFloatingItemType aType, TInt aAnimationFrames, CListBoxView* aView ) + TMmFloatingItemType aType, TInt aAnimationFrames, CListBoxView* aView ) { iView = aView; iSizeStep = 0; iZoomRatio = 1; iManualDelete = EFalse; - + if ( iView ) { // item position is relative @@ -52,7 +52,7 @@ // ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- -// +// void TMmFloatingItem::SetPositionStep( TPoint aDiffetenceVector ) { ASSERT( iFrames ); @@ -62,35 +62,35 @@ // ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- -// -void TMmFloatingItem::CalculateSteps(TPoint aVector) +// +void TMmFloatingItem::CalculateSteps(TPoint aVector) { iPositionStep.Reset(); TReal x = aVector.iX; TReal y = aVector.iY; - + TReal sx = 0.0; TReal sy = 0.0; - + for( TInt i = 0; i < iFrames; i++ ) - { - TReal sin; - Math::Sin( sin, (i+1) * KPi/iFrames + KPi * 3./2. ); - TReal xx = x * (0.5*( sin + 1.0 ) ) - sx; - TReal yy = y * (0.5*( sin + 1.0 ) ) - sy; - - sx += xx; - sy += yy; - - iPositionStep.At(i) = TPoint( xx, yy ); - } + { + TReal sin; + Math::Sin( sin, (i+1) * KPi/iFrames + KPi * 3./2. ); + TReal xx = x * (0.5*( sin + 1.0 ) ) - sx; + TReal yy = y * (0.5*( sin + 1.0 ) ) - sy; + + sx += xx; + sy += yy; + + iPositionStep.At(i) = TPoint( xx, yy ); + } } // ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- -// +// void TMmFloatingItem::SetSizeStep( TReal aStartSize, TReal aFinalSize ) { ASSERT( iFrames ); @@ -103,32 +103,32 @@ // ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- -// -TBool TMmFloatingItem::MakeStep() +// +TBool TMmFloatingItem::MakeStep() { TBool ret(EFalse); - - if(iFrameCounter >= iFrames && iManualDelete == EFalse) + + if( iFrameCounter >= iFrames && iManualDelete == EFalse ) { InvalidateFloatingItem(); } - else if (iFrameCounter < iFrames) + else if( iFrameCounter < iFrames ) { iItemPosition += iPositionStep[iFrameCounter]; iZoomRatio += iSizeStep; - ret = Abs(iPositionStep[iFrameCounter].iX) > 0 - || Abs(iPositionStep[iFrameCounter].iY > 0) - || Abs(iSizeStep) > 0; - iFrameCounter++; + ret = Abs(iPositionStep[iFrameCounter].iX) > 0 + || Abs(iPositionStep[iFrameCounter].iY > 0) + || Abs(iSizeStep) > 0; + iFrameCounter++; } - + return ret; } // ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- -// +// void TMmFloatingItem::SetManualDelete(TBool aManual) { iManualDelete = aManual; @@ -137,7 +137,7 @@ // ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- -// +// TReal TMmFloatingItem::GetCurrentZoomRatio() const { return iZoomRatio; @@ -146,7 +146,7 @@ // ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- -// +// TMmFloatingItemType TMmFloatingItem::GetFloatingItemType() const { return iType; @@ -180,9 +180,9 @@ TBool TMmFloatingItem::IsFloatingItemValid() const { - return GetDrawnItemIndex() != KErrNotFound - && iType != EPostDragRefreshItem - && iType != EPostHighlightChangeRefreshItem; + return GetDrawnItemIndex() != KErrNotFound + && iType != EPostDragRefreshItem + && iType != EPostHighlightChangeRefreshItem; } TBool TMmFloatingItem::IsManualDelete() diff -r 137ebc85284b -r 1b758917cafc menufw/menufwui/mmwidgets/src/mmgrid.cpp --- a/menufw/menufwui/mmwidgets/src/mmgrid.cpp Tue May 25 12:29:32 2010 +0300 +++ b/menufw/menufwui/mmwidgets/src/mmgrid.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -12,7 +12,7 @@ * Contributors: * * Description: -* Version : %version: MM_104 % << Don't touch! Updated by Synergy at check-out. +* Version : %version: MM_106 % << Don't touch! Updated by Synergy at check-out. * */ @@ -293,19 +293,19 @@ if ( CurrentItemIndex() != itemUnderPointerIndex ) { CMmWidgetContainer* parent = static_cast<CMmWidgetContainer*>( Parent() ); - if ( parent->IsNoItemDragged() ) - { - if ( ItemDrawer()->Flags() & CListItemDrawer::EPressedDownState ) - { - ItemDrawer()->ClearFlags( CListItemDrawer::EPressedDownState ); - iView->DrawItem( CurrentItemIndex() ); - } - } - else - { - iView->SetCurrentItemIndex( itemUnderPointerIndex ); - iView->DrawItem(itemUnderPointerIndex); - } + if ( parent->IsNoItemDragged() ) + { + if ( ItemDrawer()->Flags() & CListItemDrawer::EPressedDownState ) + { + ItemDrawer()->ClearFlags( CListItemDrawer::EPressedDownState ); + iView->DrawItem( CurrentItemIndex() ); + } + } + else + { + iView->SetCurrentItemIndex( itemUnderPointerIndex ); + iView->DrawItem(itemUnderPointerIndex); + } } } @@ -697,12 +697,6 @@ topRow = Min( topRow, maxPossibleTopRow ); SetTopItemIndex( topRow * numOfCols ); } - else if( ( (CMmWidgetContainer* ) Parent() )->IsEditMode() - && ( Abs(maxPossibleTopRow - topRow) == 1) // prevention scrolling both scrollbar and view too much rows - && !View()->ItemIsPartiallyVisible(TopItemIndex())) // prevention scrolling view during remove item via menu - { - SetTopItemIndex( maxPossibleTopRow * numOfCols ); - } // prevent problems with view being scrolled up beyond limits if ( topRow == maxPossibleTopRow && VerticalItemOffset() < 0 ) @@ -815,6 +809,12 @@ TBool visibilityChanged = HandleScrollbarVisibilityChangeL(); if (ScrollBarFrame()->VerticalScrollBar()->IsVisible()) { + CMmWidgetContainer* widget = static_cast< CMmWidgetContainer* >(Parent()); + if( widget->IsEditMode() && widget->WidgetPositionCache().iValid ) + { + static_cast<CMmGridView*> ( View() )->SetItemOffsetInPixels( + widget->WidgetPositionCache().iVerticalItemOffset ); + } CAknGrid::UpdateScrollBarsL(); } iCurrentTopItemIndex = TopItemIndex(); @@ -1017,9 +1017,9 @@ // ----------------------------------------------------------------------------- // void CMmGrid::UpdateScrollBarThumbs() - { - CAknGrid::UpdateScrollBarThumbs(); - } + { + CAknGrid::UpdateScrollBarThumbs(); + } // ----------------------------------------------------------------------------- // diff -r 137ebc85284b -r 1b758917cafc menufw/menufwui/mmwidgets/src/mmgridcontainer.cpp --- a/menufw/menufwui/mmwidgets/src/mmgridcontainer.cpp Tue May 25 12:29:32 2010 +0300 +++ b/menufw/menufwui/mmwidgets/src/mmgridcontainer.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -12,8 +12,8 @@ * Contributors: * * Description: -* Version : %version: MM_75 % << Don't touch! Updated by Synergy at check-out. -* Version : %version: MM_75 % << Don't touch! Updated by Synergy at check-out. +* Version : %version: MM_76 % << Don't touch! Updated by Synergy at check-out. +* Version : %version: MM_76 % << Don't touch! Updated by Synergy at check-out. * */ @@ -266,10 +266,6 @@ void CMmGridContainer::SetSuiteModelL( CHnSuiteModel* aModel ) { CMmWidgetContainer::SetSuiteModelL( aModel ); - if ( aModel ) - { - aModel->SetActiveL( !AknLayoutUtils::PenEnabled() ); - } } // ----------------------------------------------------------------------------- diff -r 137ebc85284b -r 1b758917cafc menufw/menufwui/mmwidgets/src/mmgridview.cpp --- a/menufw/menufwui/mmwidgets/src/mmgridview.cpp Tue May 25 12:29:32 2010 +0300 +++ b/menufw/menufwui/mmwidgets/src/mmgridview.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -227,19 +227,19 @@ CMmListBoxItemDrawer* itemDrawer = static_cast< CMmListBoxItemDrawer*> ( ItemDrawer() ); TBool drawingInitiated(EFalse); if ( CAknEnv::Static()->TransparencyEnabled() && - iWin && iWin->GetDrawRect() == TRect::EUninitialized ) - { - TRect a; - if (!aClipRect || *aClipRect == TRect(0,0,0,0) ) - { - a = ViewRect(); - aClipRect = &a; - } + iWin && iWin->GetDrawRect() == TRect::EUninitialized ) + { + TRect a; + if (!aClipRect || *aClipRect == TRect(0,0,0,0) ) + { + a = ViewRect(); + aClipRect = &a; + } - drawingInitiated=ETrue; - iWin->Invalidate( *aClipRect ); - iWin->BeginRedraw( *aClipRect ); - } + drawingInitiated=ETrue; + iWin->Invalidate( *aClipRect ); + iWin->BeginRedraw( *aClipRect ); + } if ( !itemDrawer->IsEditMode() ) { @@ -253,18 +253,18 @@ CAknGridView::Draw( aClipRect ); } - if ( aClipRect ) - { - TRect rect(*aClipRect); - TInt lastItemInView = (iModel->NumberOfItems() <= BottomItemIndex() ) - ? iModel->NumberOfItems()-1 : BottomItemIndex(); - rect.iTl.iY = ItemPos( lastItemInView ).iY + ItemSize( lastItemInView ).iHeight; + if ( aClipRect ) + { + TRect rect(*aClipRect); + TInt lastItemInView = (iModel->NumberOfItems() <= BottomItemIndex() ) + ? iModel->NumberOfItems()-1 : BottomItemIndex(); + rect.iTl.iY = ItemPos( lastItemInView ).iY + ItemSize( lastItemInView ).iHeight; // iGc->SetClippingRect( rect ); // removed to prevent non-redraw drawing. Was present to prevent out of view drawing when effects are on. // could be removed because effects were disabled at some point in edit mode to enhance performance. - itemDrawer->DrawFloatingItems( rect ); + itemDrawer->DrawFloatingItems( rect ); // iGc->CancelClippingRect(); - } + } // if (aClipRect) // { @@ -272,36 +272,36 @@ // } if ( CAknEnv::Static()->TransparencyEnabled() && - iWin && drawingInitiated ) - { - drawingInitiated = EFalse; - iWin->EndRedraw( ); - } + iWin && drawingInitiated ) + { + drawingInitiated = EFalse; + iWin->EndRedraw( ); + } - } + } // ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- // TInt CMmGridView::VerticalItemOffset() const - { - return iVerticalOffset; - } + { + return iVerticalOffset; + } // ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- // void CMmGridView::SetItemHeight(TInt aItemHeight) - { - // we need to update the iItemHeight member in grid also (there are two different item height value holders - in grid and here in grid view) - CMmListBoxItemDrawer* itemDrawer = - STATIC_CAST( CMmListBoxItemDrawer*, ItemDrawer() ); - static_cast<CMmGrid*>(itemDrawer->Widget())->SetItemHeight( aItemHeight ); + { + // we need to update the iItemHeight member in grid also (there are two different item height value holders - in grid and here in grid view) + CMmListBoxItemDrawer* itemDrawer = + STATIC_CAST( CMmListBoxItemDrawer*, ItemDrawer() ); + static_cast<CMmGrid*>(itemDrawer->Widget())->SetItemHeight( aItemHeight ); - CAknGridView::SetItemHeight(aItemHeight); - } + CAknGridView::SetItemHeight(aItemHeight); + } // ----------------------------------------------------------------------------- // diff -r 137ebc85284b -r 1b758917cafc menufw/menufwui/mmwidgets/src/mmlistboxcontainer.cpp --- a/menufw/menufwui/mmwidgets/src/mmlistboxcontainer.cpp Tue May 25 12:29:32 2010 +0300 +++ b/menufw/menufwui/mmwidgets/src/mmlistboxcontainer.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -12,7 +12,7 @@ * Contributors: * * Description: -* Version : %version: MM_65 % << Don't touch! Updated by Synergy at check-out. +* Version : %version: MM_66 % << Don't touch! Updated by Synergy at check-out. * */ @@ -226,8 +226,6 @@ void CMmListBoxContainer::SetSuiteModelL( CHnSuiteModel* aModel ) { CMmWidgetContainer::SetSuiteModelL( aModel ); - // highlight always active - aModel->SetActiveL( ETrue ); iMarqueeAdapter->StopMarqueeDrawing(); } diff -r 137ebc85284b -r 1b758917cafc menufw/menufwui/mmwidgets/src/mmlistboxitemdrawer.cpp --- a/menufw/menufwui/mmwidgets/src/mmlistboxitemdrawer.cpp Tue May 25 12:29:32 2010 +0300 +++ b/menufw/menufwui/mmwidgets/src/mmlistboxitemdrawer.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -317,13 +317,21 @@ iZoomIconIndex = iFloatingItems[i].GetDrawnItemIndex(); iIconAnimationZoomRatio = iFloatingItems[i].GetCurrentZoomRatio(); - if ( ItemHasFloatingType( drawnItemIndex, EDrag) || - ItemHasFloatingType( drawnItemIndex, EDragTransition) ) + if ( ItemHasFloatingType( drawnItemIndex, EDrag) + || ItemHasFloatingType( drawnItemIndex, EDragTransition) + || ItemHasFloatingType( drawnItemIndex, EDragStart ) ) { ClearFlags( CListItemDrawer::EPressedDownState ); } type == ESwapTransition ? iIsSwapFloating = ETrue : iIsSwapFloating = EFalse; - DrawActualItem( drawnItemIndex, rect, ETrue, EFalse, EFalse, EFalse ); + if( ( type == EDrag && !ItemHasFloatingType( drawnItemIndex, EDragStart ) ) + || ( type != EDragTransition && type != EDrag + && !ItemHasFloatingType( drawnItemIndex, EDragTransition ) ) + || ( type == EDragTransition ) + ) + { + DrawActualItem( drawnItemIndex, rect, ETrue, EFalse, EFalse, EFalse ); + } iIconAnimationZoomRatio = tempZoomRatio; iZoomIconIndex = tempZoomIconIndex; } @@ -600,6 +608,17 @@ // // ----------------------------------------------------------------------------- // +void CMmListBoxItemDrawer::AnimateDragItemStartL( TInt aDraggedIndex, + TPoint aPoint ) + { + iAnimator->AnimateDragItemStartL( aDraggedIndex, aPoint ); + iAnimator->Trigger(); + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// void CMmListBoxItemDrawer::SetupSubNoCellL( TInt aIndex, TInt aItemIndex ) const { @@ -739,7 +758,7 @@ // TInt CMmListBoxItemDrawer::GetFloatingItemCount() { - for( TInt i = 0; i < iFloatingItems.Count(); i++ ) + for( TInt i( iFloatingItems.Count() - 1 ); i >= 0; i-- ) { TMmFloatingItem& current = GetFloatingItemAtIndex( i ); if( current.GetDrawnItemIndex() == KErrNotFound ) @@ -935,22 +954,36 @@ // ----------------------------------------------------------------------------- // void CMmListBoxItemDrawer::SetDraggedPointL( TPoint aPoint ) - { - TInt dragFloatingItem = GetFloatingItemIndex(EDrag); - if (dragFloatingItem != KErrNotFound ) { - TMmFloatingItem & item = GetFloatingItemAtIndex( dragFloatingItem ); - TMmFloatingItem floatingItem( item.GetDrawnItemIndex(), - aPoint, EDrag, MmEffects::KNoAnimationFramesCount, NULL ); - floatingItem.SetManualDelete( ETrue ); + TInt dragFloatingItem = GetFloatingItemIndex( EDragStart ); + if( KErrNotFound != dragFloatingItem ) + { + TMmFloatingItem & item = GetFloatingItemAtIndex( dragFloatingItem ); + TMmFloatingItem postDragRefresh( item.GetDrawnItemIndex(), + item.GetItemPosition(), EPostDragRefreshItem, + MmEffects::KNoAnimationFramesCount, iWidget->View() ); + if( postDragRefresh.GetItemPosition() != aPoint ) + { + iFloatingItems.Append( postDragRefresh ); + } + } - TMmFloatingItem postDragRefresh( item.GetDrawnItemIndex(), + if( dragFloatingItem == KErrNotFound + && ( dragFloatingItem = GetFloatingItemIndex( EDrag ) ) + != KErrNotFound ) + { + TMmFloatingItem & item = GetFloatingItemAtIndex( dragFloatingItem ); + TMmFloatingItem floatingItem( item.GetDrawnItemIndex(), + aPoint, EDrag, MmEffects::KNoAnimationFramesCount, NULL ); + floatingItem.SetManualDelete( ETrue ); + + TMmFloatingItem postDragRefresh( item.GetDrawnItemIndex(), item.GetItemPosition(), EPostDragRefreshItem, MmEffects::KNoAnimationFramesCount, iWidget->View() ); iFloatingItems.Remove( dragFloatingItem ); - if (postDragRefresh.GetItemPosition() != floatingItem.GetItemPosition()) + if (postDragRefresh.GetItemPosition() != floatingItem.GetItemPosition()) { iFloatingItems.Append( postDragRefresh ); } @@ -968,10 +1001,12 @@ TInt dragFloatingItem = KErrNotFound; do { - dragFloatingItem = GetFloatingItemIndex( EDrag ); + dragFloatingItem = GetFloatingItemIndex( EDragStart ); + if( dragFloatingItem == KErrNotFound ) + dragFloatingItem = GetFloatingItemIndex( EDrag ); if( dragFloatingItem != KErrNotFound ) { - TMmFloatingItem & item = GetFloatingItemAtIndex( dragFloatingItem ); + TMmFloatingItem & item = GetFloatingItemAtIndex( dragFloatingItem ); TMmFloatingItem postDragRefresh( item.GetDrawnItemIndex(), item.GetItemPosition(), EPostDragRefreshItem, @@ -981,12 +1016,11 @@ { iFloatingItems.Append( postDragRefresh ); } + if( item.GetFloatingItemType() == EDrag ) + RemoveFloatingItem( dragFloatingItem ); } - - RemoveFloatingItem( dragFloatingItem ); - } - while( dragFloatingItem != KErrNotFound ); + while( GetFloatingItemIndex( EDrag ) != KErrNotFound ); if( aDraggedItemIndex != KErrNotFound ) { @@ -995,6 +1029,11 @@ floatingItem.SetManualDelete( ETrue ); AddFloatingItemL( floatingItem, 0 ); + TMmFloatingItem postDragRefresh( aDraggedItemIndex, + iWidget->View()->ItemPos( aDraggedItemIndex ), EPostDragRefreshItem, + MmEffects::KNoAnimationFramesCount, iWidget->View() ); + AddFloatingItemL( postDragRefresh ); + ClearFlags( CListItemDrawer::EPressedDownState ); } @@ -1523,6 +1562,10 @@ { index = GetFloatingItemIndex( EDragTransition ); } + if( index == KErrNotFound ) + { + index = GetFloatingItemIndex( EDragStart ); + } if( KErrNotFound != index ) { @@ -1564,8 +1607,9 @@ if( !iItemHasBackdrop && !iLeftOverAreaUnderAnimatedItem ) //never draw highlight when item has backdrop or when left over area under animated item { TBool currentlyDraggedItem = - ItemHasFloatingType( aItemIndex, EDrag ) || - ItemHasFloatingType( aItemIndex, EDragTransition ); + ItemHasFloatingType( aItemIndex, EDrag ) + || ItemHasFloatingType( aItemIndex, EDragTransition ) + || ItemHasFloatingType( aItemIndex, EDragStart ); if( ( STATIC_CAST(CMmWidgetContainer*,Widget()->Parent())->IsHighlightVisible() && aItemIsCurrent && aAllowHighlightForNonDraggedItem ) @@ -1585,8 +1629,9 @@ TBool aItemIsCurrent ) const { TBool currentlyDraggedItem = - ItemHasFloatingType( aItemIndex, EDrag ) || - ItemHasFloatingType( aItemIndex, EDragTransition ); + ItemHasFloatingType( aItemIndex, EDrag ) + || ItemHasFloatingType( aItemIndex, EDragTransition ) + || ItemHasFloatingType( aItemIndex, EDragStart ); return IsEditMode() /* draw the backdrop only in edit mode */ && !currentlyDraggedItem /* backdrop is disabled for dragged items */ diff -r 137ebc85284b -r 1b758917cafc menufw/menufwui/mmwidgets/src/mmlistboxview.cpp --- a/menufw/menufwui/mmwidgets/src/mmlistboxview.cpp Tue May 25 12:29:32 2010 +0300 +++ b/menufw/menufwui/mmwidgets/src/mmlistboxview.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -12,7 +12,7 @@ * Contributors: * * Description: - * Version : %version: MM_53 % << Don't touch! Updated by Synergy at check-out. + * Version : %version: MM_54 % << Don't touch! Updated by Synergy at check-out. * */ @@ -199,29 +199,29 @@ // ----------------------------------------------------------------------------- // void CMmListBoxView::Draw (const TRect* aClipRect) const - { + { TBool drawingInitiated(EFalse); if ( CAknEnv::Static()->TransparencyEnabled() && - iWin && iWin->GetDrawRect() == TRect::EUninitialized ) + iWin && iWin->GetDrawRect() == TRect::EUninitialized ) { TRect a(ViewRect()); if (!aClipRect || *aClipRect == TRect(0,0,0,0) ) - { - aClipRect = &a; - } + { + aClipRect = &a; + } drawingInitiated=ETrue; - iWin->Invalidate( *aClipRect ); - iWin->BeginRedraw( *aClipRect ); + iWin->Invalidate( *aClipRect ); + iWin->BeginRedraw( *aClipRect ); } - DoDraw(aClipRect); + DoDraw(aClipRect); - CMmListBoxItemDrawer* itemDrawer = - static_cast<CMmListBoxItemDrawer*>(iItemDrawer ); - if (aClipRect) + CMmListBoxItemDrawer* itemDrawer = + static_cast<CMmListBoxItemDrawer*>(iItemDrawer ); + if( aClipRect ) { TRect rect(*aClipRect); - rect.iTl.iY = ItemPos( BottomItemIndex() ).iY + ItemSize( BottomItemIndex() ).iHeight; + rect.iTl.iY = ItemPos( BottomItemIndex() ).iY; // iGc->SetClippingRect( rect ); // removed to prevent non-redraw drawing. Was present to prevent out of view drawing when effects are on. @@ -232,76 +232,76 @@ if ( CAknEnv::Static()->TransparencyEnabled() && iWin && drawingInitiated ) - { - drawingInitiated = EFalse; - iWin->EndRedraw( ); - } - } + { + drawingInitiated = EFalse; + iWin->EndRedraw( ); + } + } // ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- // void CMmListBoxView::DoDraw(const TRect* aClipRect) const - { - CMmListBoxView* view= CONST_CAST( CMmListBoxView*, this ); - view->UpdateAverageItemHeight (); + { + CMmListBoxView* view= CONST_CAST( CMmListBoxView*, this ); + view->UpdateAverageItemHeight (); - CMmListBoxModel* model = static_cast< CMmListBoxModel* > ( iModel ); - if ( model && model->GetSuiteModel() - && !model->GetSuiteModel()->GetItemsOrder()->IsSuiteReadyToShow() ) - { - return; - } + CMmListBoxModel* model = static_cast< CMmListBoxModel* > ( iModel ); + if ( model && model->GetSuiteModel() + && !model->GetSuiteModel()->GetItemsOrder()->IsSuiteReadyToShow() ) + { + return; + } - if ( RedrawDisabled () || !IsVisible () ) - { - return; - } + if ( RedrawDisabled () || !IsVisible () ) + { + return; + } - TInt i = iTopItemIndex; - CMmListBoxItemDrawer* itemDrawer = - static_cast<CMmListBoxItemDrawer*>(iItemDrawer ); - MAknsSkinInstance *skin = AknsUtils::SkinInstance (); - CCoeControl* control = itemDrawer->FormattedCellData()->Control (); - MAknsControlContext *cc = AknsDrawUtils::ControlContext (control); + TInt i = iTopItemIndex; + CMmListBoxItemDrawer* itemDrawer = + static_cast<CMmListBoxItemDrawer*>(iItemDrawer ); + MAknsSkinInstance *skin = AknsUtils::SkinInstance (); + CCoeControl* control = itemDrawer->FormattedCellData()->Control (); + MAknsControlContext *cc = AknsDrawUtils::ControlContext (control); - if ( !cc) - { - cc = itemDrawer->FormattedCellData()->SkinBackgroundContext (); - } + if ( !cc) + { + cc = itemDrawer->FormattedCellData()->SkinBackgroundContext (); + } - itemDrawer->SetTopItemIndex (iTopItemIndex); + itemDrawer->SetTopItemIndex (iTopItemIndex); - if ( iModel->NumberOfItems () > 0) - { - TBool drawingInitiated = ETrue; - if ( CAknEnv::Static()->TransparencyEnabled () ) - { - if ( iWin && iWin->GetDrawRect () == TRect::EUninitialized) + if ( iModel->NumberOfItems () > 0) { + TBool drawingInitiated = ETrue; + if ( CAknEnv::Static()->TransparencyEnabled () ) + { + if ( iWin && iWin->GetDrawRect () == TRect::EUninitialized) + { #ifdef RD_UI_TRANSITION_EFFECTS_LIST MAknListBoxTfxInternal* transApi = - CAknListLoader::TfxApiInternal( iGc ); + CAknListLoader::TfxApiInternal( iGc ); drawingInitiated = transApi && !transApi->EffectsDisabled(); #else - drawingInitiated = EFalse; + drawingInitiated = EFalse; #endif - } + } - if ( !drawingInitiated) - { - iWin->Invalidate ( *aClipRect); - iWin->BeginRedraw ( *aClipRect); - } - } + if ( !drawingInitiated) + { + iWin->Invalidate ( *aClipRect); + iWin->BeginRedraw ( *aClipRect); + } + } - TInt lastPotentialItemIndex = Min( iModel->NumberOfItems(), + TInt lastPotentialItemIndex = Min( iModel->NumberOfItems(), iTopItemIndex + NumberOfItemsThatFitInRect( ViewRect() ) ); - if ( !itemDrawer->IsEditMode() ) - { - itemDrawer->DrawBackground( ViewRect() ); + if ( !itemDrawer->IsEditMode() ) + { + itemDrawer->DrawBackground( ViewRect() ); itemDrawer->SetRedrawItemBackground( EFalse ); itemDrawer->SetDrawSeparatorLines( ETrue ); while (i < lastPotentialItemIndex) @@ -310,26 +310,26 @@ } itemDrawer->SetRedrawItemBackground( ETrue ); itemDrawer->SetDrawSeparatorLines( EFalse ); - } - else - { - while (i < lastPotentialItemIndex) + } + else + { + while (i < lastPotentialItemIndex) { DrawItem(i++); } // this redraws background in the view portion not covered by items - RedrawBackground(); - } + RedrawBackground(); + } - if ( CAknEnv::Static()->TransparencyEnabled () && !drawingInitiated) - { - iWin->EndRedraw (); - } + if ( CAknEnv::Static()->TransparencyEnabled () && !drawingInitiated) + { + iWin->EndRedraw (); + } + } + } - } - // ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- @@ -490,24 +490,24 @@ // ----------------------------------------------------------------------------- // void CMmListBoxView::RedrawBackground (TRect aUsedPortionOfViewRect, - TRect aSmallerViewRect) const - { + TRect aSmallerViewRect) const + { #ifdef RD_UI_TRANSITION_EFFECTS_LIST - MAknListBoxTfxInternal* transApi = CAknListLoader::TfxApiInternal(iGc); + MAknListBoxTfxInternal* transApi = CAknListLoader::TfxApiInternal(iGc); if (transApi) { transApi->StartDrawing(MAknListBoxTfxInternal::EListView); } #endif - CMmListBoxItemDrawer* itemDrawer = STATIC_CAST( CMmListBoxItemDrawer*, iItemDrawer ); + CMmListBoxItemDrawer* itemDrawer = STATIC_CAST( CMmListBoxItemDrawer*, iItemDrawer ); MAknsSkinInstance *skin = AknsUtils::SkinInstance(); CCoeControl* control = itemDrawer->FormattedCellData()->Control(); MAknsControlContext *cc = AknsDrawUtils::ControlContext(control); - if (control) + if (control) { - AknsDrawUtils::BackgroundBetweenRects(skin, cc, control, *iGc, + AknsDrawUtils::BackgroundBetweenRects( skin, cc, control, *iGc, aSmallerViewRect, aUsedPortionOfViewRect); } else @@ -518,7 +518,7 @@ } #ifdef RD_UI_TRANSITION_EFFECTS_LIST - if (transApi) + if( transApi ) { transApi->StopDrawing(); } diff -r 137ebc85284b -r 1b758917cafc menufw/menufwui/mmwidgets/src/mmwidgetcontainer.cpp --- a/menufw/menufwui/mmwidgets/src/mmwidgetcontainer.cpp Tue May 25 12:29:32 2010 +0300 +++ b/menufw/menufwui/mmwidgets/src/mmwidgetcontainer.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -12,7 +12,7 @@ * Contributors: * * Description: -* Version : %version: MM_71.1.17.1.65 % << Don't touch! Updated by Synergy at check-out. +* Version : %version: MM_71.1.17.1.70 % << Don't touch! Updated by Synergy at check-out. * */ @@ -101,6 +101,7 @@ CMmWidgetContainer::CMmWidgetContainer() : iMarqueeAdapter( NULL ) , iLongTapInProgress( EFalse ) + , iDragOccured( EFalse ) , iBgContext( NULL ) , iIsFaded( EFalse ) , iHasFocus( ETrue ) @@ -141,7 +142,7 @@ // cancel longTap timer, avoid showing popupmenu if( !aEnable ) { - iLongTapDetector->PointerEventL( TPointerEvent() ); + TRAP_IGNORE( iLongTapDetector->PointerEventL( TPointerEvent() ) ); } } } @@ -210,7 +211,7 @@ iLastDragPoint = aPointerEvent.iPosition; iLastDragHighlight = GetHighlight(); if( !iWidget->View()->XYPosToItemIndex( - aPointerEvent.iPosition, iDraggedIndex ) ) + aPointerEvent.iPosition, iDraggedIndex ) ) { iDraggedIndex = KErrNotFound; } @@ -252,7 +253,7 @@ iDialogOpened = EFalse; if(highlightVisibleBefore != iHighlightVisibleBeforeLongTap) { - SetHighlightVisibilityL( iHighlightVisibleBeforeLongTap); + TRAP_IGNORE( SetHighlightVisibilityL( iHighlightVisibleBeforeLongTap) ); } highlightVisibleBefore = iHighlightVisibleBeforeLongTap; } @@ -312,39 +313,57 @@ { iDragAndDropObserver->HandleDragOverL( GetHighlight() ); } - + + TPoint centerPoint( aPointerEvent.iPosition ); + if( WidgetType() == EGridWidget ) + { // move item's TL corner by half width/height to center item horizontally. + centerPoint.iX -= ( iWidget->View()->ItemSize( highlight ).iWidth / 2 ); + centerPoint.iY -= ( iWidget->View()->ItemSize( highlight ).iHeight / 2 ); + } + else + { // move item's T of corner by relative tap point to align left horizontally. + centerPoint.iX -= iItemRelativeTapPoint.iX; + // move item's L of corner by half height to center item horizontally. + centerPoint.iY -= ( iWidget->View()->ItemSize( highlight ).iHeight / 2 ); + } + if( !tooFast ) { TSize itemSize = iWidget->View()->ItemSize( highlight ); - TPoint itemPos = iWidget->View()->ItemPos( highlight ); + TPoint itemPos = iWidget->View()->ItemPos( highlight ); - if ( PointInItemReorderAreaL( highlight, aPointerEvent.iPosition ) ) - { - CHnSuiteModel* model = GetMmModel()->GetSuiteModel(); - CHnItemModel* onItemModel = model->GetItemModel( model->IdByIndex( highlight )); - if (iDrawer->GetAnimator()->IsReadyForNewAnimation() && !aAbortAnimation - && onItemModel->GetItemType() != EItemTypeParentFolder - && iDraggedIndex != highlight) + if ( PointInItemReorderAreaL( highlight, aPointerEvent.iPosition ) ) { - GetMmModel()->ReorderModelL( iDraggedIndex, highlight ); - AnimateShiftL( highlight ); - iDrawer->SetDraggedIndexL( highlight, - aPointerEvent.iPosition - iItemRelativeTapPoint ); - iDraggedIndex = highlight; - iDragAndDropObserver->HandleDraggedIndexUpdatedL( highlight ); + CHnSuiteModel* model = GetMmModel()->GetSuiteModel(); + CHnItemModel* onItemModel = model->GetItemModel( model->IdByIndex( highlight )); + if( iDrawer->GetAnimator()->IsReadyForNewAnimation() && !aAbortAnimation + && onItemModel->GetItemType() != EItemTypeParentFolder + && iDraggedIndex != highlight ) + { + GetMmModel()->ReorderModelL( iDraggedIndex, highlight ); + AnimateShiftL( highlight ); + iDrawer->SetDraggedIndexL( highlight, centerPoint ); + iDraggedIndex = highlight; + iDragAndDropObserver->HandleDraggedIndexUpdatedL( highlight ); + } } - } - } + } + + - if ( DeltaSquare( iTapPoint, aPointerEvent.iPosition ) > KDragDelta && - !iDrawer->IsDraggable() ) - { - iDrawer->SetDraggedIndexL( iDraggedIndex, iTapPoint - iItemRelativeTapPoint ); + if ( DeltaSquare( iTapPoint, aPointerEvent.iPosition ) > KDragDelta + && !iDrawer->IsDraggable() ) + { + if( !tooFast ) + { + iDrawer->AnimateDragItemStartL( iDraggedIndex, centerPoint ); + } + iDrawer->SetDraggedIndexL( iDraggedIndex, centerPoint ); iDrawer->SetDraggableL( ETrue ); } else if( iDrawer->IsDraggable() ) { - iDrawer->SetDraggedPointL( aPointerEvent.iPosition - iItemRelativeTapPoint ); + iDrawer->SetDraggedPointL( centerPoint ); } DEBUG(("\t_Mm_:CMmWidgetContainer::HandleDragL: iLastDragHighlight = %d ", iLastDragHighlight )); @@ -393,13 +412,16 @@ iDrawer->SetDraggedIndexL( iDraggedIndex, TPoint( 0, 0 ) ); SetDraggableL( EFalse ); - TInt dragFloatingItem; + TInt dragFloatingItem( KErrNotFound ); + TInt dragStartFloatingItem( KErrNotFound ); do { dragFloatingItem = iDrawer->GetFloatingItemIndex( EDrag ); iDrawer->RemoveFloatingItem( dragFloatingItem ); + dragStartFloatingItem = iDrawer->GetFloatingItemIndex( EDragStart ); + iDrawer->RemoveFloatingItem( dragStartFloatingItem ); } - while( dragFloatingItem != KErrNotFound ); + while( dragFloatingItem != KErrNotFound || dragStartFloatingItem != KErrNotFound); } @@ -435,14 +457,14 @@ TBool CMmWidgetContainer::IsNoItemDragged() { TBool noItemDragged = EFalse; - noItemDragged = ( KErrNotFound == iDraggedIndex ) ? ETrue : noItemDragged; + noItemDragged = ( KErrNotFound == iDraggedIndex ) ? ETrue : noItemDragged; CHnSuiteModel* model = GetMmModel()->GetSuiteModel(); if( !noItemDragged && model ) { - CHnItemModel* onItemModel = model->GetItemModel( model->IdByIndex( iDraggedIndex )); + CHnItemModel* onItemModel = model->GetItemModel( model->IdByIndex( iDraggedIndex )); if( onItemModel ) { - noItemDragged = ( onItemModel->GetItemType() == EItemTypeParentFolder ); + noItemDragged = ( onItemModel->GetItemType() == EItemTypeParentFolder ); } } return noItemDragged; @@ -553,7 +575,16 @@ // // ----------------------------------------------------------------------------- // -TBool CMmWidgetContainer::IsDeleteLockedL( TInt aItemIndex ) +TMmWidgetPosition CMmWidgetContainer::WidgetPositionCache() const + { + return iWidgetPositionCache; + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +TBool CMmWidgetContainer::IsDeleteLocked( TInt aItemIndex ) { TBool result = ETrue; @@ -595,7 +626,7 @@ { if( GetHighlight() != iDraggedIndex && IsFolderL( GetHighlight() ) - && !IsDeleteLockedL( GetHighlight() ) + && !IsDeleteLocked( GetHighlight() ) && iDrawer->IsDraggable() ) { iDrawer->AnimateItemZoomInL( GetHighlight() ); @@ -674,7 +705,7 @@ HandleDragL( pointerEvent, aAbortAnimations ); } - else if (aPointerEvent.iType == TPointerEvent::EButton1Up && iDrawer->IsDraggable()) + else if( aPointerEvent.iType == TPointerEvent::EButton1Up && iDrawer->IsDraggable() ) { if( !draggedItemOverIcons ) { @@ -716,15 +747,13 @@ iLongTapDetector->PointerEventL( longTapPointerEvent ); } - CCoeControl::HandlePointerEventL( aPointerEvent ); - if ( aPointerEvent.iType == TPointerEvent::EButton1Down && itemExists ) { SetHighlightL( index ); } else if( aPointerEvent.iType == TPointerEvent::EDrag - // the line below is needed to enable edit mode in the list widget + // the line below is needed to enable edit mode in the list widget // because behaviour in the grid and list is different || (aPointerEvent.iType == TPointerEvent::EButtonRepeat && WidgetType() == EGridWidget )) { @@ -741,10 +770,13 @@ } else { + iDragOccured = ETrue; SetHighlightVisibilityL( EFalse ); } } + CCoeControl::HandlePointerEventL( aPointerEvent ); + TInt lastTopItemIndex = Widget()->TopItemIndex(); TBool abortAnimation = lastTopItemIndex != Widget()->TopItemIndex(); @@ -820,14 +852,6 @@ // EXPORT_C void CMmWidgetContainer::SetHighlightVisibilityL( TBool aEnable ) { - // activate the model - CHnSuiteModel* suiteModel = GetMmModel()->GetSuiteModel(); - - if( suiteModel ) - { - suiteModel->SetActiveL( aEnable ); - } - if( ( !!aEnable != !!iPreviousHighlightVisibility ) // Ex-OR || ( !!aEnable != !!IsHighlightVisible() ) ) // Ex-OR { @@ -852,7 +876,7 @@ CListItemDrawer::ESingleClickDisabledHighlight ); } - if( IsVisible() ) + if( IsVisible() && !aEnable ) { TInt highlight = GetHighlight(); CListBoxView* view = Widget()->View(); @@ -1398,7 +1422,8 @@ { if( iIsEditMode && iDrawer ) { - if( iDrawer->GetFloatingItemIndex( EDrag ) != KErrNotFound ) + if( iDrawer->GetFloatingItemIndex( EDrag ) != KErrNotFound + || iDrawer->GetFloatingItemIndex( EDragStart ) != KErrNotFound ) { CancelDragL( EFalse ); } @@ -1449,38 +1474,38 @@ return; } - TBool needToScrollUp = - GetHighlight() - iWidget->TopItemIndex() < ColumnsInCurrentView() - && iWidget->TopItemIndex() != 0; + TBool needToScrollUp = + GetHighlight() - iWidget->TopItemIndex() < ColumnsInCurrentView() + && iWidget->TopItemIndex() != 0; - TBool needToScrollDown = - iWidget->BottomItemIndex() - GetHighlight() < ColumnsInCurrentView() - && iWidget->BottomItemIndex() / ColumnsInCurrentView() - != ( NumberOfItems() - 1 ) / ColumnsInCurrentView(); + TBool needToScrollDown = + iWidget->BottomItemIndex() - GetHighlight() < ColumnsInCurrentView() + && iWidget->BottomItemIndex() / ColumnsInCurrentView() + != ( NumberOfItems() - 1 ) / ColumnsInCurrentView(); if( WidgetType() == EGridWidget ) { // TODO: temporary - invisible partial items in MCL grid :/ - needToScrollDown = - iWidget->BottomItemIndex() - ColumnsInCurrentView() - GetHighlight() < ColumnsInCurrentView() - && ( iWidget->BottomItemIndex() / ColumnsInCurrentView() ) - 1 - != ( NumberOfItems() - 1 ) / ColumnsInCurrentView() - && iWidget->BottomItemIndex() - iWidget->TopItemIndex() - > ColumnsInCurrentView() * RowsInCurrentView(); + needToScrollDown = + iWidget->BottomItemIndex() - ColumnsInCurrentView() - GetHighlight() < ColumnsInCurrentView() + && ( iWidget->BottomItemIndex() / ColumnsInCurrentView() ) - 1 + != ( NumberOfItems() - 1 ) / ColumnsInCurrentView() + && iWidget->BottomItemIndex() - iWidget->TopItemIndex() + > ColumnsInCurrentView() * RowsInCurrentView(); } if( needToScrollUp ) { #ifdef RD_UI_TRANSITION_EFFECTS_LIST - MAknListBoxTfxInternal *transApi = CAknListLoader::TfxApiInternal( iDrawer->Gc() ); + MAknListBoxTfxInternal *transApi = CAknListLoader::TfxApiInternal( iDrawer->Gc() ); if( transApi ) { transApi->SetMoveType( MAknListBoxTfxInternal::EListScrollUp ); } #endif iDrawer->RemoveFloatingItems(); - iWidget->View()->VScrollTo( - iWidget->TopItemIndex() - ColumnsInCurrentView() ); + iWidget->View()->VScrollTo( + iWidget->TopItemIndex() - ColumnsInCurrentView() ); #ifdef RD_UI_TRANSITION_EFFECTS_LIST if( transApi ) { @@ -1493,15 +1518,15 @@ { #ifdef RD_UI_TRANSITION_EFFECTS_LIST - MAknListBoxTfxInternal *transApi = CAknListLoader::TfxApiInternal( iDrawer->Gc() ); + MAknListBoxTfxInternal *transApi = CAknListLoader::TfxApiInternal( iDrawer->Gc() ); if( transApi ) { transApi->SetMoveType( MAknListBoxTfxInternal::EListScrollDown ); } #endif iDrawer->RemoveFloatingItems(); - iWidget->View()->VScrollTo( - iWidget->TopItemIndex() + ColumnsInCurrentView() ); + iWidget->View()->VScrollTo( + iWidget->TopItemIndex() + ColumnsInCurrentView() ); #ifdef RD_UI_TRANSITION_EFFECTS_LIST if( transApi ) @@ -1560,7 +1585,7 @@ { TBool isFolder( EFalse ); CHnSuiteModel* model = GetMmModel()->GetSuiteModel(); - CHnItemModel* onItemModel = model->GetItemModel( + CHnItemModel* onItemModel = model->GetItemModel( model->IdByIndex( Widget()->CurrentItemIndex() )); if( onItemModel ) { @@ -1980,11 +2005,12 @@ switch( aEventType ) { case MEikListBoxObserver::EEventPenDownOnItem: - case MEikListBoxObserver::EEventItemSingleClicked: { iDragOccured = EFalse; break; } + case MEikListBoxObserver::EEventItemSingleClicked: + break; case MEikListBoxObserver::EEventItemDraggingActioned: { iDragOccured = ETrue; @@ -2000,25 +2026,25 @@ case MEikListBoxObserver::EEventFlickStarted: case MEikListBoxObserver::EEventPanningStarted: { - static_cast<CMmListBoxItemDrawer*>( - Widget()->View()->ItemDrawer() )-> - EnableCachedDataUse( ETrue ); - break; - } - case MEikListBoxObserver::EEventFlickStopped: - { - static_cast<CMmListBoxItemDrawer*>( - Widget()->View()->ItemDrawer() )-> - EnableCachedDataUse( EFalse ); - DrawView(); - break; - } - case MEikListBoxObserver::EEventPanningStopped: - { - static_cast<CMmListBoxItemDrawer*>( - Widget()->View()->ItemDrawer() )-> - EnableCachedDataUse( EFalse ); - break; + static_cast<CMmListBoxItemDrawer*>( + Widget()->View()->ItemDrawer() )-> + EnableCachedDataUse( ETrue ); + break; + } + case MEikListBoxObserver::EEventFlickStopped: + { + static_cast<CMmListBoxItemDrawer*>( + Widget()->View()->ItemDrawer() )-> + EnableCachedDataUse( EFalse ); + DrawView(); + break; + } + case MEikListBoxObserver::EEventPanningStopped: + { + static_cast<CMmListBoxItemDrawer*>( + Widget()->View()->ItemDrawer() )-> + EnableCachedDataUse( EFalse ); + break; } } } @@ -2036,8 +2062,9 @@ } } - if ( aEventType == MEikListBoxObserver::EEventItemSingleClicked && - iListBoxObserver && !iLongTapInProgress && !iDrawer->IsDraggable() ) + if ( aEventType == MEikListBoxObserver::EEventItemSingleClicked + && iListBoxObserver && !iLongTapInProgress && !iDrawer->IsDraggable() + && !iDragOccured ) { iListBoxObserver->HandleListBoxEventL( aListBox, aEventType ); } diff -r 137ebc85284b -r 1b758917cafc menufw/menusuites/foldersuite/loc/matrixmenudata.loc Binary file menufw/menusuites/foldersuite/loc/matrixmenudata.loc has changed diff -r 137ebc85284b -r 1b758917cafc taskswitcher/taskswitcherui/taskswitcherapp/inc/tsappui.h --- a/taskswitcher/taskswitcherui/taskswitcherapp/inc/tsappui.h Tue May 25 12:29:32 2010 +0300 +++ b/taskswitcher/taskswitcherui/taskswitcherapp/inc/tsappui.h Wed Jun 09 09:29:04 2010 +0300 @@ -173,7 +173,7 @@ * will be ignored when deteriminig window * group id */ - TInt WgIdOfUnderlyingApp( TBool aIgnoreParentChild ); + TInt WgIdOfUnderlyingAppL( TBool aIgnoreParentChild ); static TInt GoToBackgroundTimerCallback( TAny* aParam ); @@ -191,6 +191,14 @@ */ TInt GetParentWg( TInt aChildWg ); + /* + * Returns window group id of camera app if it's lying beneath task + * switcher window group. + * This method considers also case, when camera window group is hidden. + * @return camera's window group id. + */ + TInt CheckForUnderlyingHiddenAppsL(); + private: // Taskswitcher application view, owned diff -r 137ebc85284b -r 1b758917cafc taskswitcher/taskswitcherui/taskswitcherapp/inc/tsfastswaparea.h --- a/taskswitcher/taskswitcherui/taskswitcherapp/inc/tsfastswaparea.h Tue May 25 12:29:32 2010 +0300 +++ b/taskswitcher/taskswitcherui/taskswitcherapp/inc/tsfastswaparea.h Wed Jun 09 09:29:04 2010 +0300 @@ -291,6 +291,13 @@ void LayoutGridL(); /** + * Setup grid layout for view + * + * @param aItemCount number of items in grid + */ + void LayoutGridViewL( TInt aItemCount ); + + /** * Returns rectangles for fast swap area controls */ void GetFastSwapAreaRects( RArray<TAknLayoutRect>& aRects ); diff -r 137ebc85284b -r 1b758917cafc taskswitcher/taskswitcherui/taskswitcherapp/src/tsappui.cpp --- a/taskswitcher/taskswitcherui/taskswitcherapp/src/tsappui.cpp Tue May 25 12:29:32 2010 +0300 +++ b/taskswitcher/taskswitcherui/taskswitcherapp/src/tsappui.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -65,6 +65,9 @@ const TUid KTsAppUid = { KTsAppUidValue }; +const TUid KTsCameraUid = { 0x101F857a }; +const TUid KTsTelephoneUid = { 0x100058b3 }; + // ----------------------------------------------------------------------------- // CTsAppUi::ConstructL() // ConstructL is called by the application framework @@ -161,6 +164,11 @@ iUiStarted = EFalse; iDisableAppKeyHandling = EFalse; + // Set process priority to high to avoid being + // locked by heavy ui apps processing + iEikonEnv->WsSession().ComputeMode(RWsSession::EPriorityControlDisabled); + RProcess().SetPriority(EPriorityHigh); + TSLOG_OUT(); } @@ -691,6 +699,7 @@ { SetOrientationL(EAppUiOrientationPortrait); } + RProcess().SetPriority(EPriorityForeground); SetFullScreenApp(EFalse); iEikonEnv->RootWin().SetOrdinalPosition(0, ECoeWinPriorityAlwaysAtFront); } @@ -712,6 +721,7 @@ iEikonEnv->RootWin().SetOrdinalPosition(-1, ECoeWinPriorityNeverAtFront); SetOrientationL(EAppUiOrientationAutomatic); SetFullScreenApp(EFalse); + RProcess().SetPriority(EPriorityHigh); } TSLOG_OUT(); } @@ -752,7 +762,7 @@ TInt eventType = aEvent.Type(); if ( eventType == EEventWindowGroupListChanged ) { - TInt wgId = WgIdOfUnderlyingApp(EFalse); + TInt wgId = WgIdOfUnderlyingAppL(EFalse); if ( iForeground && wgId != iUnderAppWgId && !iAppView->AppCloseInProgress(iUnderAppWgId) && @@ -760,7 +770,7 @@ { MoveAppToBackground( ENoneTransition ); } - if ( WgIdOfUnderlyingApp(ETrue) != iUnderAppWgId ) + if ( WgIdOfUnderlyingAppL(ETrue) != iUnderAppWgId ) { HandleResourceChangeL(KEikDynamicLayoutVariantSwitch); } @@ -773,11 +783,16 @@ // CTsAppUi::WgIdOfUnderlyingApp // ----------------------------------------------------------------------------- // -TInt CTsAppUi::WgIdOfUnderlyingApp( TBool aIgnoreParentChild ) +TInt CTsAppUi::WgIdOfUnderlyingAppL( TBool aIgnoreParentChild ) { TInt retVal(0); - TApaTaskList taskList( iEikonEnv->WsSession() ); - TInt underlyingWg = taskList.FindByPos(0).WgId(); + TInt underlyingWg = CheckForUnderlyingHiddenAppsL(); + if ( !underlyingWg ) + { + TApaTaskList taskList( iEikonEnv->WsSession() ); + underlyingWg = taskList.FindByPos(0).WgId(); + } + if ( aIgnoreParentChild ) { retVal = underlyingWg; @@ -835,7 +850,6 @@ return retVal; } - // ----------------------------------------------------------------------------- // CTsAppUi::IsForeground // ----------------------------------------------------------------------------- @@ -845,4 +859,29 @@ return iForeground; } +// ----------------------------------------------------------------------------- +// CTsAppUi::CheckForUnderlyingCameraL +// ----------------------------------------------------------------------------- +// +TInt CTsAppUi::CheckForUnderlyingHiddenAppsL() + { + TInt wgId(0); + RArray<RWsSession::TWindowGroupChainInfo> allWgIds; + CleanupClosePushL(allWgIds); + User::LeaveIfError(iEikonEnv->WsSession().WindowGroupList(0, &allWgIds)); + TInt underlyingWg(allWgIds[0].iId); + CleanupStack::PopAndDestroy(&allWgIds); + + CApaWindowGroupName* windowName = + CApaWindowGroupName::NewLC( iEikonEnv->WsSession(), underlyingWg ); + TUid appUid = windowName->AppUid(); + CleanupStack::PopAndDestroy( windowName ); + if( appUid == KTsCameraUid || + appUid == KTsTelephoneUid ) + { + wgId = underlyingWg; + } + return wgId; + } + // End of file diff -r 137ebc85284b -r 1b758917cafc taskswitcher/taskswitcherui/taskswitcherapp/src/tsappview.cpp --- a/taskswitcher/taskswitcherui/taskswitcherapp/src/tsappview.cpp Tue May 25 12:29:32 2010 +0300 +++ b/taskswitcher/taskswitcherui/taskswitcherapp/src/tsappview.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -627,7 +627,7 @@ !iFastSwapArea->Count() ) { LaunchFeedback(ETouchFeedbackBasic, TTouchFeedbackType( - ETouchFeedbackVibra | ETouchFeedbackAudio), aPointerEvent); + ETouchFeedbackVibra ), aPointerEvent); iEikonEnv->EikAppUi()->HandleCommandL(EAknSoftkeyExit); } } diff -r 137ebc85284b -r 1b758917cafc taskswitcher/taskswitcherui/taskswitcherapp/src/tsfastswaparea.cpp --- a/taskswitcher/taskswitcherui/taskswitcherapp/src/tsfastswaparea.cpp Tue May 25 12:29:32 2010 +0300 +++ b/taskswitcher/taskswitcherui/taskswitcherapp/src/tsfastswaparea.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -259,6 +259,8 @@ { TRAP_IGNORE(static_cast<CTsAppUi*>(iEikonEnv->AppUi())->RequestPopUpL()); } + variety = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0; // double check to avoid layout panic + TAknLayoutScalableParameterLimits gridParams = AknLayoutScalable_Apps::cell_tport_appsw_pane_ParamLimits( variety ); TPoint empty( ELayoutEmpty, ELayoutEmpty ); @@ -322,6 +324,39 @@ // -------------------------------------------------------------------------- +// CTsFastSwapArea::LayoutGridView +// -------------------------------------------------------------------------- +// +void CTsFastSwapArea::LayoutGridViewL( TInt aItemCount ) + { + RArray<TAknLayoutRect> rects; + CleanupClosePushL(rects); + rects.ReserveL(KLayoutItemCount); + GetFastSwapAreaRects(rects); + TAknLayoutRect gridItem = rects[1]; + CleanupStack::PopAndDestroy(&rects); + if ( aItemCount ) + { + iGrid->ItemDrawer()->ColumnData()->SetDrawBackground(EFalse); + static_cast<CTsAppView*>(&iParent)->EnableDragEvents(ETrue); + if ( AknLayoutUtils::LayoutMirrored() ) + { + iGrid->SetLayoutL( EFalse, EFalse, ETrue, aItemCount, 1, gridItem.Rect().Size(), iGridItemGap ); + } + else + { + iGrid->SetLayoutL( EFalse, ETrue, ETrue, aItemCount, 1, gridItem.Rect().Size(), iGridItemGap ); + } + } + else + { + iGrid->ItemDrawer()->ColumnData()->SetDrawBackground(ETrue); + static_cast<CTsAppView*>(&iParent)->EnableDragEvents(EFalse); + } + } + + +// -------------------------------------------------------------------------- // CTsFastSwapArea::GetFastSwapAreaRects // -------------------------------------------------------------------------- // @@ -338,6 +373,7 @@ { TRAP_IGNORE(static_cast<CTsAppUi*>(iEikonEnv->AppUi())->RequestPopUpL()); } + variety = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0; // double check to avoid layout panic gridAppPane.LayoutRect( Rect(), AknLayoutScalable_Apps::tport_appsw_pane( variety ) ); @@ -381,17 +417,22 @@ if ( iGrid && !iIgnoreLayoutSwitch ) { + // Cancel ongoing pointer event + iHandlePointerCandidate = EFalse; // Grid needs to be recreated to proper reinitilize // data with new layout values TInt selIdx = SelectedIndex(); - TRAPD(err, - /*ReCreateGridL()*/ - LayoutGridL() ); + TRAPD(err, + LayoutGridL(); + LayoutGridViewL( iArray.Count() ) + ); + if ( err != KErrNone ) { TSLOG1( TSLOG_INFO, "LayoutGridL leaves with %d", err ); } - HandleFswContentChanged(); + + // Update grid view iGrid->SetCurrentDataIndex(selIdx); UpdateGrid(ETrue, EFalse); iGrid->DrawDeferred(); @@ -497,11 +538,6 @@ if ( aIndex >= 0 && aIndex < iArray.Count() && CanClose( aIndex ) ) { - TInt selIdx = SelectedIndex(); - if ( selIdx > aIndex && selIdx > 0 ) - { - selIdx--; - } TInt wgId = iArray[aIndex]->WgId(); iFSClient->CloseApp( wgId ); iIsClosing.Append(wgId); @@ -509,45 +545,11 @@ { iWidgetClosingCount++; } - // The fsw content will change sooner or later - // but the updated content (without the closed app) will not - // come very fast. It looks better to the user if the item - // in the grid is removed right here, right now. - // If the app does not close for some reason then this is - // not fully correct but the app will then reappear on the next - // content-changed notification anyway. - delete iArray[aIndex]; - iArray.Remove( aIndex ); - NotifyChange(); - - // Hide highlight - if ( iGrid->GridBehaviour() == CTsFastSwapGrid::ETouchOnly ) - { - iGrid->HideHighlight(); - } - // Update selection - TInt newItemCount = GridItemCount() - 1; - if ( aIndex == newItemCount ) - { - newItemCount--; - iGrid->SetCurrentDataIndex(newItemCount); - } - else - { - iGrid->SetCurrentDataIndex(selIdx); - } - // Render contect - if ( !aSuppressRendering ) - { - RenderContentL( ETrue ); - } // Orientation update iPrevScreenOrientation = GetCurrentScreenOrientation(); iOrientationSignalTimer->Cancel(); iOrientationSignalTimer->After(KOrientationSwitchTime); - - iPrevAppCount = iArray.Count(); } TSLOG_OUT(); @@ -559,23 +561,13 @@ // void CTsFastSwapArea::TryCloseAllL() { - // note the direction of the loop, this is needed because - // TryCloseAppL may modify the array - TBool changed = EFalse; for ( TInt i = iArray.Count() - 1; i >= 0; --i ) { if ( CanClose( i ) ) { TryCloseAppL( i, ETrue ); - changed = ETrue; } } - if ( changed ) - { - RenderContentL(); - RestoreSelectedIndex(); - UpdateGrid( ETrue, EFalse ); - } } // -------------------------------------------------------------------------- @@ -584,10 +576,14 @@ // TBool CTsFastSwapArea::CanClose( TInt aIndex ) const { - CTsFswEntry* e = iArray[aIndex]; - TBool canClose = !e->AlwaysShown() && !e->SystemApp(); - // Special cases: Menu - canClose |= e->AppUid() == KTsMenuUid; + TBool canClose(EFalse); + if ( aIndex >= 0 && aIndex < iArray.Count() ) + { + CTsFswEntry* e = iArray[aIndex]; + canClose = !e->AlwaysShown() && !e->SystemApp(); + // Special cases: Menu + canClose |= e->AppUid() == KTsMenuUid; + } return canClose; } @@ -695,31 +691,9 @@ RArray<TInt> strokeItemArray; CleanupClosePushL(strokeItemArray); - RArray<TAknLayoutRect> rects; - CleanupClosePushL(rects); - rects.ReserveL(KLayoutItemCount); - GetFastSwapAreaRects(rects); - TAknLayoutRect gridItem = rects[1]; - CleanupStack::PopAndDestroy(&rects); - if ( iArray.Count() ) - { - iGrid->ItemDrawer()->ColumnData()->SetDrawBackground(EFalse); - static_cast<CTsAppView*>(&iParent)->EnableDragEvents(ETrue); - if ( AknLayoutUtils::LayoutMirrored() ) - { - iGrid->SetLayoutL( EFalse, EFalse, ETrue, iArray.Count(), 1, gridItem.Rect().Size(), iGridItemGap ); - } - else - { - iGrid->SetLayoutL( EFalse, ETrue, ETrue, iArray.Count(), 1, gridItem.Rect().Size(), iGridItemGap ); - } - } - else - { - iGrid->ItemDrawer()->ColumnData()->SetDrawBackground(ETrue); - static_cast<CTsAppView*>(&iParent)->EnableDragEvents(EFalse); - } - + // Update view based on number of items + LayoutGridViewL( iArray.Count() ); + for ( TInt i = 0; i < iArray.Count(); ++i ) { const TDesC& appName( iArray[i]->AppName() ); @@ -798,9 +772,13 @@ CleanupStack::Pop(iconArray); // refresh the items in the grid + iGrid->HandleItemAdditionL(); iEvtHandler.ReInitPhysicsL( GridWorldSize(), ViewSize(), ETrue ); + if ( SelectedIndex() >= GridItemCount() && GridItemCount() ) + { + iGrid->SetCurrentDataIndex( GridItemCount() - 1 ); + } UpdateGrid( ETrue, !aSuppressAnimation ); - iGrid->HandleItemAdditionL(); TSLOG_OUT(); } @@ -1503,8 +1481,8 @@ { if( aType == KAppKeyTypeShort ) { - // Switch to homescreen - SwitchToApp( KTsHomescreenUid ); + //SwitchToApp( KTsHomescreenUid ); + TRAP_IGNORE( iEikonEnv->EikAppUi()->HandleCommandL(EAknSoftkeyExit) ); } else if( aType == KAppKeyTypeLong ) { diff -r 137ebc85284b -r 1b758917cafc taskswitcher/taskswitcherui/taskswitcherapp/src/tsphysicsengine.cpp --- a/taskswitcher/taskswitcherui/taskswitcherapp/src/tsphysicsengine.cpp Tue May 25 12:29:32 2010 +0300 +++ b/taskswitcher/taskswitcherui/taskswitcherapp/src/tsphysicsengine.cpp Wed Jun 09 09:29:04 2010 +0300 @@ -117,6 +117,12 @@ { TPoint drag(iStartPosition - aEvent.CurrentPosition()); iPhysics->StartPhysics(drag, iStartTime); + if( Abs(drag.iX) < iPhysics->DragThreshold() && + (TInt)CAknPhysics::EAknPhysicsActionBouncing != + iPhysics->OngoingPhysicsAction() ) + { + iPhysics->StopPhysics(); + } } }