# HG changeset patch # User Pat Downey # Date 1272025340 -3600 # Node ID c2e9d284d7796fc07861680c2df1318532910014 # Parent d05a55b217df4d10ce457023cc8f38e61a3d715e# Parent d6c9979772b6f3d153605193d9aeeabf3ab102a0 Merge fixes for bugs 1705 and 1751. diff -r d6c9979772b6 -r c2e9d284d779 homescreen_plat/hs_renderingplugin_api/hs_renderingplugin_api.metaxml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/homescreen_plat/hs_renderingplugin_api/hs_renderingplugin_api.metaxml Fri Apr 23 13:22:20 2010 +0100 @@ -0,0 +1,15 @@ + + + HS Rendering Plug-in API + API allows the widget developer to create his own rendering plugin, which can be taken into use in widget declaration. + c++ + idlehomescreen + + + + + + no + no + + diff -r d6c9979772b6 -r c2e9d284d779 homescreen_plat/hs_renderingplugin_api/inc/xnextrenderingpluginadapter.h --- a/homescreen_plat/hs_renderingplugin_api/inc/xnextrenderingpluginadapter.h Mon Apr 12 20:35:11 2010 +0100 +++ b/homescreen_plat/hs_renderingplugin_api/inc/xnextrenderingpluginadapter.h Fri Apr 23 13:22:20 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2009-2010 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" @@ -11,7 +11,7 @@ * * Contributors: * -* Description: External rendering plugin adapter header +* Description: External rendering plugin adapter * */ @@ -28,7 +28,12 @@ class MXnExtEventHandler; /** - * CXnExtRenderingPluginAdapter class + * Base class for the external rendering plug-ins. Widget developer + * can implement own rendering plug-in if stock plug-ins do not + * provide sufficient functionality. Baddly written plug-in can + * ruin the Homescreen performance as it runs in the Homescreen + * process. Power save mode must be obeyed in order to maximize + * the standby times of the device. * * * @code @@ -36,61 +41,72 @@ * @endcode * * @lib extrenderingplugin.lib - * @since S60 v5.0 + * @since S60 v5.2 */ class CXnExtRenderingPluginAdapter : public CCoeControl { public: // Constructor and destructor /** * Two-phased constructor. + * + * @since Series 60 5.2 */ IMPORT_C static CXnExtRenderingPluginAdapter* NewL( TUid aImplUid ); /** * Destructor. + * + * @since Series 60 5.2 */ IMPORT_C virtual ~CXnExtRenderingPluginAdapter(); -private: // Constructors - /** - * Constructor - */ - // CXnExtRenderingPluginAdapter(); - - /** - * Second phase constructor - */ - // void ConstructL(); - public: // New functions, /** - * Returns the implementation uid. + * Returns the ECOM implementation uid. + * + * @since Series 60 5.2 */ IMPORT_C TUid ImplUid() const; /** - * Enters power save mode. + * Is called when Homescreen enters power save mode. + * In power save mode all the timers, outstanding requests and animations + * must be cancelled in order to save battery. + * + * @since Series 60 5.2 */ IMPORT_C virtual void EnterPowerSaveModeL(); /** - * Exits power save mode. + * Is called when Homescreen exists power save mode. + * + * @since Series 60 5.2 */ IMPORT_C virtual void ExitPowerSaveModeL(); /** - * Informs skin change. + * Informs skin change. If plug-in is responsible of loading skin + * graphics, all the graphics must be reloaded. + * + * @since Series 60 5.2 */ IMPORT_C virtual void SkinChanged(); /** - * Informs focuschange. + * Informs that plug-in element has gained a focus and highlight must be + * drawn if appropriate. + * + * @since Series 60 5.2 + * @param aDrawNow whether plug-in should draw itself. */ IMPORT_C virtual void FocusChanged( TDrawNow aDrawNow ); /** - * Informs size change. + * Informs that plug-in element size has changed. Size can change if the + * plug-in element is declared relatively to parent element. + * + * @since Series 60 5.2 */ IMPORT_C virtual void SizeChanged(); diff -r d6c9979772b6 -r c2e9d284d779 homescreen_plat/menu_settings_api/menu_settings_api.metaxml --- a/homescreen_plat/menu_settings_api/menu_settings_api.metaxml Mon Apr 12 20:35:11 2010 +0100 +++ b/homescreen_plat/menu_settings_api/menu_settings_api.metaxml Fri Apr 23 13:22:20 2010 +0100 @@ -1,7 +1,7 @@ Menu Settings API - Provides infromation about Menu current state. + Provides infromation about the current state of Menu application. c++ menufw diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/data/qhd_tch/root_2001f482/conf/root2001f482.confml Binary file idlehomescreen/data/qhd_tch/root_2001f482/conf/root2001f482.confml has changed diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/data/qhd_tch/root_2001f482/group/bld.inf --- a/idlehomescreen/data/qhd_tch/root_2001f482/group/bld.inf Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/data/qhd_tch/root_2001f482/group/bld.inf Fri Apr 23 13:22:20 2010 +0100 @@ -25,7 +25,6 @@ // Support for productization and Carbide.Ui customization //******************************************************** ../hsps/00/manifest.dat /epoc32/data/Z/resource/homescreen/root_2001f482/hsps/manifest.dat -//../hsps/00/rootconfiguration.xml /epoc32/data/Z/resource/homescreen/root_2001f482/hsps/rootconfiguration.xml ../xuikon/00/Root.dat /epoc32/data/Z/resource/homescreen/root_2001f482/xuikon/root_2001f482.dat ../xuikon/00/Root.css /epoc32/data/Z/resource/homescreen/root_2001f482/xuikon/root.css ../xuikon/00/Root.xml /epoc32/data/Z/resource/homescreen/root_2001f482/xuikon/root.xml @@ -44,9 +43,6 @@ // Support for S60 builds //*********************** -../rom/root_resources.iby LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(root_2001f482_resources.iby) -../rom/root_customer.iby CUSTOMER_APP_LAYER_IBY_EXPORT_PATH(root_2001f482_customer.iby) -//../rom/root_variant.iby CUSTOMER_APP_LAYER_IBY_EXPORT_PATH(root_2001f482_variant.iby) ../rom/root.iby CORE_APP_LAYER_IBY_EXPORT_PATH(root_2001f482.iby) diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/data/qhd_tch/root_2001f482/rom/root_customer.iby --- a/idlehomescreen/data/qhd_tch/root_2001f482/rom/root_customer.iby Mon Apr 12 20:35:11 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,29 +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: -* Root widget HSPS-plugin language specific IBY file. -* -*/ - -#ifndef __ROOT_2001F482_CUSTOMER_IBY__ -#define __ROOT_2001F482_CUSTOMER_IBY__ - -#if defined(__LAYOUT_360_640_TOUCH) || defined(__LAYOUT_640_360_TOUCH) - -// Enabled by DTD-localization tools, language specific -data=ZPRIVATE\200159c0\install\root_2001f482\hsps\00\rootconfiguration.dtd \private\200159c0\install\root_2001f482\hsps\00\rootconfiguration.dtd - -#endif // __LAYOUT_360_640_TOUCH || __LAYOUT_640_360_TOUCH - -#endif // __ROOT_2001F482_CUSTOMER_IBY__ diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/data/qhd_tch/root_2001f482/rom/root_resources.iby --- a/idlehomescreen/data/qhd_tch/root_2001f482/rom/root_resources.iby Mon Apr 12 20:35:11 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +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: -* Root widget HSPS-plugin language specific IBY file. -* -*/ - -#ifndef __ROOT_2001F482_RESOURCES_IBY__ -#define __ROOT_2001F482_RESOURCES_IBY__ - -#if defined(__LAYOUT_360_640_TOUCH) || defined(__LAYOUT_640_360_TOUCH) - -// Enabled by DTD-localization tools, language specific - -#endif // __LAYOUT_360_640_TOUCH || __LAYOUT_640_360_TOUCH - -#endif // __ROOT_2001F482_RESOURCES_IBY__ diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/data/qhd_tch/root_2001f482/rom/root_variant.iby --- a/idlehomescreen/data/qhd_tch/root_2001f482/rom/root_variant.iby Mon Apr 12 20:35:11 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,29 +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: -* Root widget HSPS-plugin variant specific IBY file. -* -*/ - -#ifndef __ROOT_2001F482_VARIANT_IBY__ -#define __ROOT_2001F482_VARIANT_IBY__ - -#if defined(__LAYOUT_360_640_TOUCH) || defined(__LAYOUT_640_360_TOUCH) - -// Enabled by variation tools, variant specific -//data=ZPRIVATE\200159c0\install\root_2001f482\hsps\00\rootconfiguration.xml \private\200159c0\install\root_2001f482\hsps\00\rootconfiguration.xml - -#endif // __LAYOUT_360_640_TOUCH || __LAYOUT_640_360_TOUCH - -#endif // __ROOT_2001F482_VARIANT_IBY__ diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/data/qhd_tch/templateview_20026f50/xuikon/00/templateview.xml --- a/idlehomescreen/data/qhd_tch/templateview_20026f50/xuikon/00/templateview.xml Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/data/qhd_tch/templateview_20026f50/xuikon/00/templateview.xml Fri Apr 23 13:22:20 2010 +0100 @@ -135,6 +135,12 @@ + + + + + + diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48b.confml Binary file idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48b.confml has changed diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48b.gcfml --- a/idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48b.gcfml Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48b.gcfml Fri Apr 23 13:22:20 2010 +0100 @@ -68,7 +68,7 @@ - + @@ -127,7 +127,7 @@ - + diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48bmanifest.confml Binary file idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48bmanifest.confml has changed diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48bxuikon.confml Binary file idlehomescreen/data/qhd_tch/view_2001f48b/conf/view2001f48bxuikon.confml has changed diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/data/qhd_tch/view_2001f48b/rom/view_variant.iby --- a/idlehomescreen/data/qhd_tch/view_2001f48b/rom/view_variant.iby Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/data/qhd_tch/view_2001f48b/rom/view_variant.iby Fri Apr 23 13:22:20 2010 +0100 @@ -22,7 +22,7 @@ #if defined(__LAYOUT_360_640_TOUCH) || defined(__LAYOUT_640_360_TOUCH) // Enabled by variation tools, variant specific -//data=ZPRIVATE\200159c0\install\view_2001f48b\hsps\00\viewconfiguration.xml \private\200159c0\install\view_2001f48b\hsps\00\viewconfiguration.xml +data=ZPRIVATE\200159c0\install\view_2001f48b\hsps\00\viewconfiguration.xml \private\200159c0\install\view_2001f48b\hsps\00\viewconfiguration.xml #endif // __LAYOUT_360_640_TOUCH || __LAYOUT_640_360_TOUCH diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/data/qhd_tch/view_2001f48b/xuikon/00/View.xml --- a/idlehomescreen/data/qhd_tch/view_2001f48b/xuikon/00/View.xml Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/data/qhd_tch/view_2001f48b/xuikon/00/View.xml Fri Apr 23 13:22:20 2010 +0100 @@ -135,6 +135,12 @@ + + + + + + diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4.confml Binary file idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4.confml has changed diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4.gcfml --- a/idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4.gcfml Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4.gcfml Fri Apr 23 13:22:20 2010 +0100 @@ -68,7 +68,7 @@ - + @@ -127,7 +127,7 @@ - + diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4manifest.confml Binary file idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4manifest.confml has changed diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4xuikon.confml Binary file idlehomescreen/data/qhd_tch/view_200286e4/conf/view200286e4xuikon.confml has changed diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/data/qhd_tch/view_200286e4/xuikon/00/View.xml --- a/idlehomescreen/data/qhd_tch/view_200286e4/xuikon/00/View.xml Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/data/qhd_tch/view_200286e4/xuikon/00/View.xml Fri Apr 23 13:22:20 2010 +0100 @@ -135,6 +135,12 @@ + + + + + + diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5.confml Binary file idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5.confml has changed diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5.gcfml --- a/idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5.gcfml Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5.gcfml Fri Apr 23 13:22:20 2010 +0100 @@ -68,7 +68,7 @@ - + @@ -127,7 +127,7 @@ - + diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5manifest.confml Binary file idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5manifest.confml has changed diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5xuikon.confml Binary file idlehomescreen/data/qhd_tch/view_200286e5/conf/view200286e5xuikon.confml has changed diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/data/qhd_tch/view_200286e5/xuikon/00/View.xml --- a/idlehomescreen/data/qhd_tch/view_200286e5/xuikon/00/View.xml Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/data/qhd_tch/view_200286e5/xuikon/00/View.xml Fri Apr 23 13:22:20 2010 +0100 @@ -135,6 +135,12 @@ + + + + + + diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/data/qhd_tch/wideimage_2001f489/hsps/00/widgetconfiguration.xml --- a/idlehomescreen/data/qhd_tch/wideimage_2001f489/hsps/00/widgetconfiguration.xml Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/data/qhd_tch/wideimage_2001f489/hsps/00/widgetconfiguration.xml Fri Apr 23 13:22:20 2010 +0100 @@ -1,28 +1,9 @@ - - + + - - - - - - - - - - - - - - - - - - - diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/data/qhd_tch/wideimage_2001f489/rom/wideimage_resources.iby --- a/idlehomescreen/data/qhd_tch/wideimage_2001f489/rom/wideimage_resources.iby Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/data/qhd_tch/wideimage_2001f489/rom/wideimage_resources.iby Fri Apr 23 13:22:20 2010 +0100 @@ -21,7 +21,18 @@ #if defined(__LAYOUT_360_640_TOUCH) || defined(__LAYOUT_640_360_TOUCH) // Enabled by DTD-localization tools, language specific -data=ZPRIVATE\200159c0\install\wideimage_2001f489\xuikon\00\wideimage.o0000 \private\200159c0\install\wideimage_2001f489\xuikon\00\wideimage.o0000 +#if defined (__LOCALES_37_IBY__) +data=ZPRIVATE\200159c0\install\wideimage_2001f489\xuikon\37\wideimage.o0037 \private\200159c0\install\wideimage_2001f489\xuikon\37\wideimage.o0037 +#endif +#if defined (__LOCALES_50_IBY__) +data=ZPRIVATE\200159c0\install\wideimage_2001f489\xuikon\50\wideimage.o0050 \private\200159c0\install\wideimage_2001f489\xuikon\50\wideimage.o0050 +#endif +#if defined (__LOCALES_57_IBY__) +data=ZPRIVATE\200159c0\install\wideimage_2001f489\xuikon\57\wideimage.o0057 \private\200159c0\install\wideimage_2001f489\xuikon\57\wideimage.o0057 +#endif +#if defined (__LOCALES_94_IBY__) +data=ZPRIVATE\200159c0\install\wideimage_2001f489\xuikon\94\wideimage.o0094 \private\200159c0\install\wideimage_2001f489\xuikon\94\wideimage.o0094 +#endif #endif // __LAYOUT_360_640_TOUCH || __LAYOUT_640_360_TOUCH diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/data/qhd_tch/wideimage_2001f489/xuikon/00/wideimage.css --- a/idlehomescreen/data/qhd_tch/wideimage_2001f489/xuikon/00/wideimage.css Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/data/qhd_tch/wideimage_2001f489/xuikon/00/wideimage.css Fri Apr 23 13:22:20 2010 +0100 @@ -16,7 +16,7 @@ display: block; } -image#default_image +image#w_default_image { padding-top:9px; padding-bottom:9px; @@ -26,7 +26,7 @@ width: 64px; } -text#default_text +text#w_default_text { padding-left:9px; padding-right:9px; diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/data/qhd_tch/wideimage_2001f489/xuikon/00/wideimage.xml --- a/idlehomescreen/data/qhd_tch/wideimage_2001f489/xuikon/00/wideimage.xml Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/data/qhd_tch/wideimage_2001f489/xuikon/00/wideimage.xml Fri Apr 23 13:22:20 2010 +0100 @@ -3,7 +3,7 @@ - + @@ -12,15 +12,15 @@ - + - - + + - - + + @@ -31,7 +31,7 @@ - + diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/data/qhd_tch/wideimage_2001f489/xuikon/37/wideimage.css --- a/idlehomescreen/data/qhd_tch/wideimage_2001f489/xuikon/37/wideimage.css Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/data/qhd_tch/wideimage_2001f489/xuikon/37/wideimage.css Fri Apr 23 13:22:20 2010 +0100 @@ -16,7 +16,7 @@ display: block; } -image#default_image +image#w_default_image { padding-top:9px; padding-bottom:9px; @@ -26,7 +26,7 @@ width: 64px; } -text#default_text +text#w_default_text { padding-left:9px; padding-right:9px; diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/data/qhd_tch/wideimage_2001f489/xuikon/50/wideimage.css --- a/idlehomescreen/data/qhd_tch/wideimage_2001f489/xuikon/50/wideimage.css Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/data/qhd_tch/wideimage_2001f489/xuikon/50/wideimage.css Fri Apr 23 13:22:20 2010 +0100 @@ -16,7 +16,7 @@ display: block; } -image#default_image +image#w_default_image { padding-top:9px; padding-bottom:9px; @@ -26,7 +26,7 @@ width: 64px; } -text#default_text +text#w_default_text { padding-left:9px; padding-right:9px; diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/data/qhd_tch/wideimage_2001f489/xuikon/57/wideimage.css --- a/idlehomescreen/data/qhd_tch/wideimage_2001f489/xuikon/57/wideimage.css Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/data/qhd_tch/wideimage_2001f489/xuikon/57/wideimage.css Fri Apr 23 13:22:20 2010 +0100 @@ -16,7 +16,7 @@ display: block; } -image#default_image +image#w_default_image { padding-top:9px; padding-bottom:9px; @@ -26,7 +26,7 @@ width: 64px; } -text#default_text +text#w_default_text { padding-left:9px; padding-right:9px; diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/data/qhd_tch/wideimage_2001f489/xuikon/94/wideimage.css --- a/idlehomescreen/data/qhd_tch/wideimage_2001f489/xuikon/94/wideimage.css Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/data/qhd_tch/wideimage_2001f489/xuikon/94/wideimage.css Fri Apr 23 13:22:20 2010 +0100 @@ -16,7 +16,7 @@ display: block; } -image#default_image +image#w_default_image { padding-top:9px; padding-bottom:9px; @@ -26,7 +26,7 @@ width: 64px; } -text#default_text +text#w_default_text { padding-left:9px; padding-right:9px; diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/inc/xnmenu.h --- a/idlehomescreen/inc/xnmenu.h Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/inc/xnmenu.h Fri Apr 23 13:22:20 2010 +0100 @@ -137,6 +137,12 @@ */ virtual CXnNodePluginIf* SoftKeyL( XnMenuInterface::MXnMenuInterface::TSoftKeyPosition aPos ) = 0; + /** + * Returns softkey node, which should handle key event. + * @return softkey node which should handle key event, NULL if not available. + */ + virtual CXnNodePluginIf* KeyEventNode() = 0; + /** * Sets MXnMenuObserver observer * @since S60 5.1 @@ -152,10 +158,11 @@ /** * Tries to display menubar - * @since S60 5.1 - * @param aMenuNodeId the menu node id + * @since S60 5.2 + * @param aMenuNodeId the menu node id + * @param aContextMenu ETrue if context menu should be displayed, EFalse otherwise */ - virtual void TryDisplayingMenuBarL( const TDesC& aMenuNodeId ) = 0; + virtual void TryDisplayingMenuBarL( const TDesC& aMenuNodeId, TBool aContextMenu ) = 0; }; } @@ -220,6 +227,11 @@ */ CXnNodePluginIf* SoftKeyL( XnMenuInterface::MXnMenuInterface::TSoftKeyPosition aPos ); + /** + * @see MXnMenuInterface::KeyEventNode + */ + CXnNodePluginIf* KeyEventNode(); + /** * @see MXnMenuInterface::SetObserver */ @@ -233,13 +245,13 @@ /** * @see MXnMenuInterface::TryDisplayingMenuBarL */ - void TryDisplayingMenuBarL( const TDesC& aMenuNodeId ); - - + void TryDisplayingMenuBarL( const TDesC& aMenuNodeId, TBool aContextMenu ); + /** * @see MXnComponentInterface::MakeInterfaceL */ - XnComponentInterface::MXnComponentInterface* MakeInterfaceL( const TDesC8& aType ); + XnComponentInterface::MXnComponentInterface* MakeInterfaceL( const TDesC8& aType ); + private: /** diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/inc/xnmenuadapter.h --- a/idlehomescreen/inc/xnmenuadapter.h Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/inc/xnmenuadapter.h Fri Apr 23 13:22:20 2010 +0100 @@ -148,6 +148,12 @@ CXnNodePluginIf* SoftKeyL( XnMenuInterface::MXnMenuInterface::TSoftKeyPosition aPos ); /** + * Returns softkey node, which should handle key event. + * @return softkey node which should handle key event, NULL if not available. + */ + CXnNodePluginIf* KeyEventNode(); + + /** * Finds softkey node by given position * @since Series 60 5.0 */ @@ -155,10 +161,11 @@ /** * Tries to display menubar - * @since Series 60 5.1 + * @since Series 60 5.2 * @param aMenuNodeId the menu node id + * @param aContextMenu ETrue if context menu should be displayed, EFalse otherwise */ - void TryDisplayingMenuL( const TDesC& aMenuNodeId ); + void TryDisplayingMenuL( const TDesC& aMenuNodeId, TBool aContextMenu ); public: // from CCoeControl @@ -384,6 +391,7 @@ TBool iUpdateLskAppearance; TBool iUpdateMskAppearance; TBool iUpdateRskAppearance; + TBool iContextMenu; CXnSoftkeyItem* iVisibleLSK; CXnSoftkeyItem* iVisibleRSK; CXnSoftkeyItem* iVisibleMSK; diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/inc/xnoomsyshandler.h --- a/idlehomescreen/inc/xnoomsyshandler.h Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/inc/xnoomsyshandler.h Fri Apr 23 13:22:20 2010 +0100 @@ -71,7 +71,8 @@ EMem1MB = 1024000, EMem2MB = 2048000, EMem3MB = 3072000, - EMem4MB = 4096000 + EMem4MB = 4096000, + EMem6MB = 6144000 }; public: // Construction / destruction. diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/inc/xnpropertysubscriber.h --- a/idlehomescreen/inc/xnpropertysubscriber.h Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/inc/xnpropertysubscriber.h Fri Apr 23 13:22:20 2010 +0100 @@ -94,17 +94,26 @@ private: /** - * From CActive. - * Handle completion + * Handles an active object's request completion event. + * + * @see CActive::RunL */ void RunL(); /** - * From CActive. - * How to cancel me + * Implements cancellation of an outstanding request. + * + * @see CActive::DoCancel */ void DoCancel(); + /** + * RunError + * + * @see CActive::RunError + */ + TInt RunError(TInt aError); + private: // Data diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/inc/xnuiengine.h --- a/idlehomescreen/inc/xnuiengine.h Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/inc/xnuiengine.h Fri Apr 23 13:22:20 2010 +0100 @@ -37,7 +37,6 @@ class CXnPointerArray; class CXnEditor; class CXnEditMode; -class CXnHitTest; class CXnKeyEventDispatcher; // Class declaration @@ -243,14 +242,6 @@ void RefreshMenuL(); /** - * Activate a view - * - * @since Series 60 3.1 - * @param aViewNode View node - */ - void ActivateViewL( CXnNode& aViewNode ); - - /** * Returns view manager * * @since S60 5.0 @@ -414,14 +405,6 @@ RPointerArray< CXnNode >* Plugins(); /** - * Gets hit test - * - * @since S60 5.1 - * @return the hittest - */ - CXnHitTest& HitTest() const; - - /** * Gets theme resource file * * @since S60 5.1 diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/inc/xnuiengineappif.h --- a/idlehomescreen/inc/xnuiengineappif.h Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/inc/xnuiengineappif.h Fri Apr 23 13:22:20 2010 +0100 @@ -139,14 +139,6 @@ IMPORT_C void RefreshMenuL(); /** - * Activate a view - * - * @since Series 60 3.1 - * @param aViewNode View node - */ - IMPORT_C void ActivateViewL( CXnNodeAppIf& aViewNode ); - - /** * Returns the active view * * @since Series 60 3.1 diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/inc/xnuienginepluginif.h --- a/idlehomescreen/inc/xnuienginepluginif.h Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/inc/xnuienginepluginif.h Fri Apr 23 13:22:20 2010 +0100 @@ -127,12 +127,6 @@ */ IMPORT_C void SetFocusedNode( CXnNodePluginIf* aFocusedNode ); - /** - * Restore focus to previously focused node - * - * @since Series 60 3.1 - */ - IMPORT_C void RestorePreviousFocusedNode(); /** * Get the string pool @@ -191,14 +185,6 @@ TInt aReferenceValue ); /** - * Activate a view - * - * @since Series 60 3.1 - * @param aViewNode View node - */ - IMPORT_C void ActivateViewL( CXnNodePluginIf& aViewNode ); - - /** * Get the size of the current screen device * * @since Series 60 3.1 @@ -253,29 +239,6 @@ * @return ETrue if widgets visible, EFalse otherwise */ IMPORT_C TBool WidgetsVisible() const; - - /** - * Gets control defining hit region - * - * @since Series 60 5.0 - * @return Control defining the hit region - */ - IMPORT_C CXnControlAdapter* HitRegion() const; - - /** - * Deactivates focused node - * - * @since Series 60 5.0 - */ - IMPORT_C void DeactivateFocusedNodeL(); - - /** - * Queries wheter focus is visible - * - * @since Series 60 5.0 - * @return ETrue if focus is shown, EFalse otherwise - */ - IMPORT_C TBool ShowFocus(); /** * Gets a plugin node which the given node is. @@ -285,35 +248,7 @@ * @return A Plugin node. */ IMPORT_C CXnNodePluginIf& PluginNodeL( CXnNodePluginIf* aNode ); - - /** - * Sets focus visibility for active view - * @since Series 60 5.0 - * @param aVisible Visibility state - */ - IMPORT_C void SetFocusVisibleL( TBool aVisible ); - - /** - * Return focus visibility of active view - * @since Series 60 5.0 - * @return ETrue if active view focus is visible, EFalse otherwise - */ - IMPORT_C TBool FocusVisible(); - - /** - * Enables or disables swipe for active view - * @since Series 60 5.0 - * @param aEnable True will enable swipe, false will disable - */ - IMPORT_C void EnableSwipeL( TBool aEnable ); - - /** - * Return whether swipe is enabled or not - * @since Series 60 5.0 - * @return ETrue if swipe is enable, EFalse otherwise - */ - IMPORT_C TBool SwipeEnabledL(); - + /** * Disables layoyt and redraw, places cleanup item to cleanup stack * for enabling layot and redraw diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/inc/xnviewmanager.h --- a/idlehomescreen/inc/xnviewmanager.h Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/inc/xnviewmanager.h Fri Apr 23 13:22:20 2010 +0100 @@ -22,7 +22,6 @@ #include // User includes -#include "xnpropertysubscriber.h" // Forward declarations class CXnUiEngine; @@ -86,8 +85,7 @@ * @lib xn3layoutengine.lib * @since S60 5.0 */ -NONSHARABLE_CLASS( CXnViewManager ) : public CBase, - public MXnPropertyChangeObserver +NONSHARABLE_CLASS( CXnViewManager ) : public CBase { public: /** @@ -119,14 +117,6 @@ * 2nd phase constructor */ void ConstructL(); - -private: - // from MXnPropertyChangeObserver - - /** - * @see MXnPropertyChangeObserver - */ - void PropertyChangedL( const TUint32 aKey, const TInt aValue ); public: // New functions @@ -212,9 +202,7 @@ CXnOomSysHandler& OomSysHandler() const; void UpdatePageManagementInformationL(); - - TBool UiStartupPhaseAllDone() const; - + private: // new functions @@ -295,12 +283,6 @@ * Not own. */ CXnUiEngine* iUiEngine; - - /** - * UI startup phase observer - * Own. - */ - CXnPropertySubscriber* iUiStartupPhase; /** * Comopser. @@ -362,11 +344,6 @@ * Own. */ CPeriodic* iStabilityTimer; - - /** - * Flag to indicate that UI startup phase is ready - */ - TBool iUiStartupPhaseAllDone; private: // Friend classes diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/loc/activeidle3.loc --- a/idlehomescreen/loc/activeidle3.loc Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/loc/activeidle3.loc Fri Apr 23 13:22:20 2010 +0100 @@ -303,3 +303,9 @@ // w: // r: TB9.2 #define qtn_hs_error_content_removed "Critical error occurred. Content removed." + +// d: Wait/progress note text that is shown when backup or restore process is ongoing. +// l: popup_note_wait_window +// w: +// r: TB9.2 +#define qtn_hs_backup_use_prevented "Home screen is not in use during backup or restore operation. Wait to finish." diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/widgetmanager/conf/widgetmanager.confml Binary file idlehomescreen/widgetmanager/conf/widgetmanager.confml has changed diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/widgetmanager/conf/widgetmanager_20026F53.crml Binary file idlehomescreen/widgetmanager/conf/widgetmanager_20026F53.crml has changed diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/widgetmanager/group/widgetmanager.mmp --- a/idlehomescreen/widgetmanager/group/widgetmanager.mmp Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/widgetmanager/group/widgetmanager.mmp Fri Apr 23 13:22:20 2010 +0100 @@ -54,6 +54,7 @@ SOURCE wminstaller.cpp SOURCE wmprocessmonitor.cpp SOURCE wmwidgetorderdata.cpp +SOURCE wmspbgcleaner.cpp SOURCEPATH ../data START RESOURCE 20026F53.rss @@ -118,4 +119,6 @@ LIBRARY centralrepository.lib LIBRARY bmpanim.lib // AknBitmap animation LIBRARY inetprotutil.lib +LIBRARY browserlauncher.lib + // End of file diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/widgetmanager/inc/wmconfiguration.h --- a/idlehomescreen/widgetmanager/inc/wmconfiguration.h Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/widgetmanager/inc/wmconfiguration.h Fri Apr 23 13:22:20 2010 +0100 @@ -35,7 +35,19 @@ { public: // constructors and destructor - + + /** Operator Application type */ + enum TOpAppType + { + EUnknown, + ES60, + ECwrt, + EWrt, + EJava, + EQt, + EReserved + }; + /** Two-phased constructor. */ static CWmConfiguration* NewL( CWmResourceLoader& aResourceLoader ); @@ -88,16 +100,52 @@ * @param aIndex index of the button, starting at 0 */ const TDesC& PortalButtonClientParam( TInt aIndex ); - + + /** + * Returns bool if buttons are mirrored. + * @return true when operator button on left on portraid and + * on top on landscape. + */ + TBool PortalButtonsMirrored(); + + /** + * Returns application type by button index + * @param aIndex button index + * @return application type + */ + TOpAppType PortalButtonApplicationType( TInt aIndex ); + + /** + * Returns application id as string + * @param aIndex button index + * @param aOperatorAppId string to get app id + */ + void PortalButtonApplicationId( TInt aIndex, TDes& aOperatorAppId ); + + /** + * Returns application id as uid + * @param aIndex button index + * @param aOperatorAppId uid to get app id + */ + void PortalButtonApplicationId( TInt aIndex, TUid& aOperatorAppId ); + private: // New functions void LoadConfigurationL(); TInt FindCorrectLanguageId(); HBufC* ReadDescParameterL( TInt aKey ); - void ReadIntParameter( TInt aKey, TInt32& aValue ); + void ReadInt32Parameter( TInt aKey, TInt32& aValue ); + void ReadIntParameter( TInt aKey, TInt& aValue ); HBufC* ReadLocalisedParameterL( TInt aOffset ); - void IndexConversion( TInt& aIndex ); - + void ReadOperatorApplicationInfoL(); + TUid StringToUid( const TDesC& aStr ); + + /** Returns uid of the widget with a particular bundle identifier. */ + TUid FetchWidgetUidFromRegistryL( const TDesC& aBundleId ); + + /** sets operator icon to button if not already defined */ + void SetOperatorIcon( TUid aUid ); + private: /** @@ -132,9 +180,9 @@ HBufC* iOviStoreClientParam; /** - * OVI store laucher ui + * OVI store laucher uid */ - TUid iOviStoreUid; + TUid iOviStoreUid; /** * OPERATOR button text @@ -151,7 +199,36 @@ */ HBufC* iOperatorButtonUrl; - }; + /** + * OPERATOR store button application parameter + */ + HBufC* iOperatorParam; + + /** + * OPERATOR store application id as string. Used for java + */ + HBufC* iOperatorAppIdStr; + + /** + * OPERATOR store application id as uid. + */ + TUid iOperatorAppIdUid; + + /** + * OPERATOR store application type + */ + TOpAppType iOperatorAppType; + + /** + * Tells if operator button is enabled. + */ + TBool iOperatorButtonEnabled; + + /** + * Tells if buttons need to be mirrored for operator. + */ + TBool iButtonsMirrored; + }; #endif // WMCONFIGURATION_H diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/widgetmanager/inc/wmcrkeys.h --- a/idlehomescreen/widgetmanager/inc/wmcrkeys.h Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/widgetmanager/inc/wmcrkeys.h Fri Apr 23 13:22:20 2010 +0100 @@ -53,18 +53,46 @@ // ************************************************************ -// NON-LOCALISED parameters +// NON-LOCALISED OVI parameters // ************************************************************ /** Key to Ovi Store Client param */ const TUint32 KOviStoreClientParam = 0x1F; +/** Key to Ovi Store client Uid */ +const TUint32 KOviStoreUid = 0x20; + +// ************************************************************ +// NON-LOCALISED Operator parameters +// ************************************************************ + /** Key to Operator button icon */ -const TUint32 KOperatorButtonIcon = 0x20; +const TUint32 KOperatorButtonEnabled = 0x21; + +/** Key to Operator button icon */ +const TUint32 KOperatorButtonIcon = 0x22; -/** Key to Ovi Store client Uid */ -const TUint32 KOviStoreUid = 0x21; +/** + * Key to Operator application type and id. + * Give ':' as separator between type and id. + * Type can be s60, cwrt, wrt, java, qt + * Examples: + * s60:0x10005902 Application Uid as id + * cwrt:ovi.serviceui.SSOUI BundleId as id + * wrt:com.accuweather.widget.touchNG BundleId as id + * java:c:/sys/bin/javastore.jar full path for java app + * qt:0x2001A9CA Application Uid as id + */ +const TUint32 KOperatorAppTypeAndId = 0x23; +/** Key to Operator application param */ +const TUint32 KOperatorParam = 0x24; + +/** + * Key to define if operator button needs to be placed to left in landscape and + * top on portraid. By default it's right and bottom. + */ +const TUint32 KOperatorButtonHigherPriority = 0x25; #endif // __WMCRKEYS_H__ diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/widgetmanager/inc/wmlistbox.h --- a/idlehomescreen/widgetmanager/inc/wmlistbox.h Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/widgetmanager/inc/wmlistbox.h Fri Apr 23 13:22:20 2010 +0100 @@ -75,6 +75,11 @@ void ResizeDefaultBitmaps(); /** + * sets item height according to layout + */ + void UpdateItemHeight(); + + /** * Responds to skin changed event. */ void HandleSkinChanged(); diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/widgetmanager/inc/wmmaincontainer.h --- a/idlehomescreen/widgetmanager/inc/wmmaincontainer.h Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/widgetmanager/inc/wmmaincontainer.h Fri Apr 23 13:22:20 2010 +0100 @@ -158,7 +158,7 @@ /** * executes findbox deactivation */ - void DeactivateFindPaneL(); + void DeactivateFindPaneL(TBool aLayout = ETrue); /** * sorts the widget list in alphabetical order @@ -194,6 +194,13 @@ public: + /** + * Handles focus changed events. + * + * @see CCoeControl::FocusChanged + */ + void FocusChanged( TDrawNow aDrawNow ); + /** * Handles key events. * @@ -317,6 +324,8 @@ TKeyResponse HandleSearchKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType ); + TInt OperatorButtonHigherPriority( TInt aIndex ); + private: /** diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/widgetmanager/inc/wmmaincontainerview.h --- a/idlehomescreen/widgetmanager/inc/wmmaincontainerview.h Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/widgetmanager/inc/wmmaincontainerview.h Fri Apr 23 13:22:20 2010 +0100 @@ -21,8 +21,8 @@ #include - class CWmMainContainer; +class CWmSpBgCleaner; class CWmPlugin; /** @@ -103,13 +103,6 @@ TUid aCustomMessageId, const TDesC8& aCustomMessage ); - /** - * Event handler for status pane size changes. - * - * @see CAknView::HandleStatusPaneSizeChange - */ - void HandleStatusPaneSizeChange(); - protected: // From MEikMenuObserver /* * Menu observer interface. @@ -139,6 +132,11 @@ */ CWmMainContainer* iWmMainContainer; + /** + * Statuspane background cleaner + */ + CWmSpBgCleaner* iWmSpBgCleaner; + /** * the plugin root (not owned) */ diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/widgetmanager/inc/wmportalbutton.h --- a/idlehomescreen/widgetmanager/inc/wmportalbutton.h Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/widgetmanager/inc/wmportalbutton.h Fri Apr 23 13:22:20 2010 +0100 @@ -20,6 +20,8 @@ #define ___WMPORTALBUTTON_H__ #include // CAknButton +#include //MAknServerAppExitObserver + #include "wmimageconverter.h" #include "wmcommon.h" @@ -28,6 +30,7 @@ class CFbsBitmap; class CWmConfiguration; class CWmProcessMonitor; +class CBrowserLauncher; /** * Portal button ( ovi, operator ) class for Wm @@ -36,7 +39,8 @@ */ NONSHARABLE_CLASS( CWmPortalButton ) : public CAknButton, public MConverterObserver, - public MCoeControlObserver + public MCoeControlObserver, + public MAknServerAppExitObserver { public: /* @@ -83,6 +87,11 @@ /** Observes the button's own activity */ void HandleControlEventL( CCoeControl* aControl, TCoeEvent aEventType ); +protected: // from MAknServerAppExitObserver + + /** Observes when browser is exited */ + void HandleServerAppExit( TInt aReason ); + protected: // from CCoeControl /** Handles pointer events. */ @@ -110,14 +119,25 @@ const TDesC& aText, TAknTextComponentLayout& aLayout, TInt aMargin ) const; - /** Runs operator button action */ - void RunOperatorL( CWmConfiguration& aConf ); /** Runs ovi store launcher */ void RunOviL( CWmConfiguration& aConf ); /** Starts browser */ - void StartBrowserL( CWmConfiguration& aConf ); + void StartBrowserL( const TDesC& aUrl ); + + /** Starts operator application */ + void RunOperatorApplicationL( CWmConfiguration& aConf ); + + /** Starts rprocess by given values */ + void StartProcessL( TUid aUid, const TDesC& aParam ); + + /** + * Opens cwrt/wrt widget to fullscreen. + * @param aAppUid Uid of the widget + * @param aParams Optional parameters + * */ + void StartWidgetL( TUid aAppUid, const TDesC& aParams ); private: //data members @@ -142,8 +162,16 @@ /** icon mask */ CFbsBitmap* iButtonIconMask; - /** Monitors process */ - CWmProcessMonitor* iProcessMonitor; + /** + * Monitors process + */ + CWmProcessMonitor* iProcessMonitor; + + /** + * Broswer launcher. + */ + CBrowserLauncher* iBrowserLauncher; + }; #endif //___WMPORTALBUTTON_H__ diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/widgetmanager/inc/wmspbgcleaner.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/inc/wmspbgcleaner.h Fri Apr 23 13:22:20 2010 +0100 @@ -0,0 +1,76 @@ +/* +* Copyright (c) 2010 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: +* Declares statuspane's background cleaner. +* +*/ + +#ifndef __WMSPBGCLEANER_ +#define __WMSPBGCLEANER_ + +// Forward declarations + +/** + * Statuspane background cleaner. + * + * @class CWmSpBgCleaner wmspbgcleaner.h + */ +NONSHARABLE_CLASS( CWmSpBgCleaner ) : public CCoeControl + { +public: + /** + * Two-phased constructors. + */ + static CWmSpBgCleaner* NewL(); + static CWmSpBgCleaner* NewLC(); + + /** Destructor */ + ~CWmSpBgCleaner(); + +private: + /** constructor */ + CWmSpBgCleaner(); + + /** 2nd phase constructor */ + void ConstructL(); + + +protected: // from base class CCoeControl + + /** + * Handles a change to the control's resources + * + * @see CCoeControl::HandleResourceChange + */ + void HandleResourceChange( TInt aType ); + + /** + * Sets the control's extent, specifying a rectangle. + * + * @see CCoeControl::SizeChanged + */ + void SizeChanged(); + + /* + * Draws the control. + * + * @see CCoeControl::Draw + */ + void Draw( const TRect& aRect ) const; + +private: + + }; + +#endif // __WMSPBGCLEANERCTRL_ diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/widgetmanager/inc/wmwidgetdata.h --- a/idlehomescreen/widgetmanager/inc/wmwidgetdata.h Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/widgetmanager/inc/wmwidgetdata.h Fri Apr 23 13:22:20 2010 +0100 @@ -193,7 +193,7 @@ inline const CHsContentInfo& HsContentInfo() const; /** widget name */ - inline const TDesC& Name() const; + const TDesC& Name() const; /** widget uid */ inline TUid Uid() const; @@ -229,7 +229,7 @@ void VisualizeUninstallL(); /** stop uninstallation animation */ - void StopUninstallAnimationL(); + void StopUninstallAnimation(); protected: // from MConverterObserver diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/widgetmanager/inc/wmwidgetdata.inl --- a/idlehomescreen/widgetmanager/inc/wmwidgetdata.inl Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/widgetmanager/inc/wmwidgetdata.inl Fri Apr 23 13:22:20 2010 +0100 @@ -27,10 +27,6 @@ inline const CHsContentInfo& CWmWidgetData::HsContentInfo() const { return *iHsContentInfo; } - /** widget name */ - inline const TDesC& CWmWidgetData::Name() const - { return iHsContentInfo->Name(); } - /** widget uid */ inline TUid CWmWidgetData::Uid() const { return UidFromString( iHsContentInfo->Uid() ); }; diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/widgetmanager/src/wmconfiguration.cpp --- a/idlehomescreen/widgetmanager/src/wmconfiguration.cpp Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/widgetmanager/src/wmconfiguration.cpp Fri Apr 23 13:22:20 2010 +0100 @@ -20,6 +20,7 @@ #include #include #include +#include // widget reqistry #include #include @@ -35,6 +36,14 @@ const TInt KLangGroupSize = KLangId1 - KLangId0; const TUint32 KLastLangId = KLangId9; +_LIT( KOpAppTypeS60, "s60" ); +_LIT( KOpAppTypeCwrt, "cwrt" ); +_LIT( KOpAppTypeWrt, "wrt" ); +_LIT( KOpAppTypeJava, "java" ); +_LIT( KOpAppTypeQt, "qt" ); +_LIT( KSeparator, ":" ); +_LIT( KOperatorIcon, "uid(%d)"); +_LIT( KHexPrefix, "0x" ); // --------------------------------------------------------- // CWmConfiguration::NewL @@ -58,14 +67,15 @@ CWmResourceLoader& aResourceLoader ) : iResourceLoader( aResourceLoader ) { - iRepository = NULL; + + // ovi iOviStoreUid = KNullUid; - iOviStoreClientParam = NULL; - iOviButtonTitle = NULL; - iOviButtonIcon = NULL; - iOperatorButtonTitle = NULL; - iOperatorButtonIcon = NULL; - iOperatorButtonUrl = NULL; + + // operator + iOperatorAppIdUid = KNullUid; + iOperatorAppType = EUnknown; + iOperatorButtonEnabled = EFalse; + iButtonsMirrored = EFalse; } // --------------------------------------------------------- @@ -75,12 +85,16 @@ CWmConfiguration::~CWmConfiguration() { delete iRepository; + // ovi delete iOviStoreClientParam; delete iOviButtonTitle; delete iOviButtonIcon; + // operator delete iOperatorButtonTitle; delete iOperatorButtonIcon; delete iOperatorButtonUrl; + delete iOperatorParam; + delete iOperatorAppIdStr; } // --------------------------------------------------------- @@ -118,18 +132,23 @@ iRepository = CRepository::NewL( TUid::Uid( KCrWidgetManagerm ) ); - // read fixed parameters - ReadIntParameter( KOviStoreUid, iOviStoreUid.iUid ); + // read Ovi parameters + ReadInt32Parameter( KOviStoreUid, iOviStoreUid.iUid ); iOviStoreClientParam = ReadDescParameterL( KOviStoreClientParam ); - // determine language and read localised parameters - iLanguageIndex = FindCorrectLanguageId(); - iOperatorButtonTitle = ReadLocalisedParameterL( KLangOffsetOperatorText ); - iOperatorButtonUrl = ReadLocalisedParameterL( KLangOffsetOperatorUrl ); - - if ( iOperatorButtonUrl && iOperatorButtonUrl->Length() > 0 ) + + // read operator parameters if operator button enabled + ReadIntParameter( KOperatorButtonEnabled, iOperatorButtonEnabled ); + if ( iOperatorButtonEnabled ) { - // construct the operator button icon. + // determine language and read localised parameters + iLanguageIndex = FindCorrectLanguageId(); + iOperatorButtonTitle = ReadLocalisedParameterL( KLangOffsetOperatorText ); + iOperatorButtonUrl = ReadLocalisedParameterL( KLangOffsetOperatorUrl ); + // read non-localised parameters iOperatorButtonIcon = ReadDescParameterL( KOperatorButtonIcon ); + ReadOperatorApplicationInfoL(); + iOperatorParam = ReadDescParameterL( KOperatorParam ); + ReadIntParameter( KOperatorButtonHigherPriority, iButtonsMirrored ); } delete iRepository; @@ -191,17 +210,26 @@ } // --------------------------------------------------------- +// CWmConfiguration::ReadInt32ParameterIntL +// --------------------------------------------------------- +// +void CWmConfiguration::ReadInt32Parameter( TInt aKey, TInt32& aValue ) + { + TInt value = 0; + if ( iRepository->Get( aKey, value ) == KErrNone ) + { + aValue = value; + } + } + +// --------------------------------------------------------- // CWmConfiguration::ReadIntParameterIntL // --------------------------------------------------------- // -void CWmConfiguration::ReadIntParameter( TInt aKey, TInt32& aValue ) +void CWmConfiguration::ReadIntParameter( TInt aKey, TInt& aValue ) { - TInt read = KErrNone; - TInt err = iRepository->Get( aKey, read ); - if( err == KErrNone ) - { - aValue = read; - } + aValue = 0; + iRepository->Get( aKey, aValue ); } // --------------------------------------------------------- @@ -231,14 +259,102 @@ } // --------------------------------------------------------- +// CWmConfiguration::ReadOperatorApplicationInfoL +// --------------------------------------------------------- +// +void CWmConfiguration::ReadOperatorApplicationInfoL() + { + HBufC* applicationInfo = ReadDescParameterL( KOperatorAppTypeAndId ); + if ( applicationInfo && applicationInfo->Des().Length() > 0 ) + { + CleanupStack::PushL( applicationInfo ); + applicationInfo->Des().TrimAll(); + + // parse + TInt separator = applicationInfo->Des().Find( KSeparator ); + if ( separator != KErrNotFound ) + { + TPtrC type = applicationInfo->Des().Left( separator ); + TPtrC appId = applicationInfo->Des().Mid( + separator + KSeparator().Length() ); + + if ( !type.Compare( KOpAppTypeS60 ) ) + { + iOperatorAppType = ES60; + iOperatorAppIdUid = StringToUid( appId ); + SetOperatorIcon( iOperatorAppIdUid ); + } + else if ( !type.Compare( KOpAppTypeCwrt ) ) + { + iOperatorAppType = ECwrt; + iOperatorAppIdUid = FetchWidgetUidFromRegistryL( appId ); + SetOperatorIcon( iOperatorAppIdUid ); + } + else if ( !type.Compare( KOpAppTypeWrt ) ) + { + iOperatorAppType = EWrt; + iOperatorAppIdUid = FetchWidgetUidFromRegistryL( appId ); + SetOperatorIcon( iOperatorAppIdUid ); + } + else if ( !type.Compare( KOpAppTypeJava ) ) + { + //TODO: java support is not fully implemented + User::Leave( KErrGeneral ); + iOperatorAppType = EJava; + iOperatorAppIdStr = appId.AllocL(); + } + else if ( !type.Compare( KOpAppTypeQt ) ) + { + iOperatorAppType = EQt; + iOperatorAppIdUid = StringToUid( appId ); + SetOperatorIcon( iOperatorAppIdUid ); + } + } + CleanupStack::PopAndDestroy( applicationInfo ); + } + } + +// --------------------------------------------------------- +// CWmConfiguration::SetOperatorIcon +// --------------------------------------------------------- +// +void CWmConfiguration::SetOperatorIcon( TUid aUid ) + { + if ( iOperatorButtonIcon && + !iOperatorButtonIcon->Des().Length() ) + { + delete iOperatorButtonIcon; + iOperatorButtonIcon = NULL; + TRAP_IGNORE( iOperatorButtonIcon = HBufC::NewL( + KMaxUidName + KOperatorIcon().Length() ) ); + iOperatorButtonIcon->Des().Format( + KOperatorIcon(), aUid ); + } + } + +// --------------------------------------------------------- +// CWmConfiguration::FetchWidgetUidFromRegistryL +// --------------------------------------------------------- +// +TUid CWmConfiguration::FetchWidgetUidFromRegistryL( + const TDesC& aBundleId ) + { + RWidgetRegistryClientSession clientSession; + User::LeaveIfError( clientSession.Connect() ); + CleanupClosePushL( clientSession ); + TInt ret = clientSession.GetWidgetUidL( aBundleId ); + clientSession.Disconnect(); + CleanupStack::PopAndDestroy( &clientSession ); + return TUid::Uid( ret ); + } + +// --------------------------------------------------------- // CWmConfiguration::PortalButtonCount // --------------------------------------------------------- // TInt CWmConfiguration::PortalButtonCount() { - if ( iOperatorButtonUrl && iOperatorButtonUrl->Length() > 0 ) - return 2; - return 1; + return ( iOperatorButtonEnabled ? 2 : 1 ); } // --------------------------------------------------------- @@ -247,10 +363,9 @@ // const TDesC& CWmConfiguration::PortalButtonText( TInt aIndex ) { - IndexConversion( aIndex ); if ( aIndex == 0 && iOviButtonTitle ) return *iOviButtonTitle; - if ( aIndex == 1 && iOperatorButtonTitle ) + if ( aIndex == 1 && iOperatorButtonTitle && iOperatorButtonEnabled ) return *iOperatorButtonTitle; return KNullDesC; } @@ -261,10 +376,9 @@ // const TDesC& CWmConfiguration::PortalButtonIcon( TInt aIndex ) { - IndexConversion( aIndex ); if ( aIndex == 0 && iOviButtonIcon ) return *iOviButtonIcon; - if ( aIndex == 1 && iOperatorButtonIcon ) + if ( aIndex == 1 && iOperatorButtonIcon && iOperatorButtonEnabled ) return *iOperatorButtonIcon; return KNullDesC; } @@ -275,7 +389,8 @@ // const TDesC& CWmConfiguration::PortalButtonBrowserUrl( TInt aIndex ) { - if ( aIndex == 1 && iOperatorButtonUrl ) + // No support for ovi here + if ( aIndex == 1 && iOperatorButtonUrl && iOperatorButtonEnabled ) return *iOperatorButtonUrl; return KNullDesC; } @@ -290,10 +405,8 @@ { return iOviStoreUid; } - // Operator client uid not supported. - // If operator client is a widget we can use widget registry - // to fetch uid of operator widget save it to member and return that here - + // operator not supported. Get operator data using + // PortalButtonApplicationInfoL return KNullUid; } @@ -307,25 +420,93 @@ { return *iOviStoreClientParam; } - // Operator client param not supported. Can be added if needed. + if ( aIndex == 1 && iOperatorParam && iOperatorButtonEnabled ) + { + return *iOperatorParam; + } return KNullDesC; } +// --------------------------------------------------------- +// CWmConfiguration::PortalButtonsMirrored +// --------------------------------------------------------- +// +TBool CWmConfiguration::PortalButtonsMirrored() + { + return iButtonsMirrored; + } + +// --------------------------------------------------------- +// CWmConfiguration::PortalButtonApplicationType +// --------------------------------------------------------- +// +CWmConfiguration::TOpAppType CWmConfiguration::PortalButtonApplicationType( + TInt aIndex ) + { + if ( aIndex == 1 ) + { + return iOperatorAppType; + } + // no support for ovi + return EUnknown; + } + +// --------------------------------------------------------- +// CWmConfiguration::PortalButtonApplicationId +// --------------------------------------------------------- +// +void CWmConfiguration::PortalButtonApplicationId( + TInt aIndex, TDes& aOperatorAppId ) + { + if ( aIndex == 1 ) + { + aOperatorAppId.Copy( *iOperatorAppIdStr ); + } + // no support for ovi + } + +// --------------------------------------------------------- +// CWmConfiguration::PortalButtonApplicationId +// --------------------------------------------------------- +// +void CWmConfiguration::PortalButtonApplicationId( + TInt aIndex, TUid& aOperatorAppId ) + { + if ( aIndex == 1 ) + { + aOperatorAppId = iOperatorAppIdUid; + } + // no support for ovi + } + +// --------------------------------------------------------- +// CWmConfiguration::StringToUid +// --------------------------------------------------------- +// +TUid CWmConfiguration::StringToUid( const TDesC& aStr ) + { + if ( aStr.Length() > 0 && aStr.Find( KHexPrefix ) == 0 ) + { + // hex value 0x12345678 + TLex lex( aStr.Mid( KHexPrefix().Length() ) ); + TUint id = 0; + if ( lex.Val( id, EHex ) == KErrNone ) + { + return TUid::Uid( (TInt)id ); + } + } + else if ( aStr.Length() > 0 ) + { + TLex lex( aStr ); + TUint id( 0 ); + if ( KErrNone == lex.Val( id ) ) + { + return TUid::Uid( (TInt)id ); + } + } + return KNullUid; + } + -// --------------------------------------------------------- -// CWmConfiguration::IndexConversion -// --------------------------------------------------------- -// -void CWmConfiguration::IndexConversion( TInt& /*aIndex*/ ) - { - // if there is a need to configure switching button places - // (operator button left, then OVI button) then this method - // would have something like this: - - // if ( iSwitchButtons ) aIndex = 1 - aIndex; - - // but for now, this method is empty. - } - // End of File diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/widgetmanager/src/wmdetailsdlg.cpp --- a/idlehomescreen/widgetmanager/src/wmdetailsdlg.cpp Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/widgetmanager/src/wmdetailsdlg.cpp Fri Apr 23 13:22:20 2010 +0100 @@ -180,12 +180,11 @@ EEikEdwinAvkonDisableCursor | EEikEdwinDisplayOnly | EEikEdwinReadOnly ); + iRtEditor->EnableKineticScrollingL( ETrue ); CEikScrollBarFrame* scrollBarFrame = iRtEditor->CreateScrollBarFrameL(); scrollBarFrame->SetScrollBarVisibilityL( CEikScrollBarFrame::EOff, - CEikScrollBarFrame::EOff ); // set to EAuto - // when layout fixed. ~wk04_2010 - // currently scrollbar overlaps cba. + CEikScrollBarFrame::EAuto ); iMarquee = CAknMarqueeControl::NewL(); TCallBack callback( RedrawCallback, this ); @@ -225,18 +224,12 @@ TCharFormatMask charFormatMask; CParaFormat paraFormat; TParaFormatMask paraFormatMask; - if ( Layout_Meta_Data::IsMirrored() ) - { - paraFormat.iHorizontalAlignment = CParaFormat::ERightAlign; - } - else - { - paraFormat.iHorizontalAlignment = CParaFormat::ELeftAlign; - } + paraFormat.iHorizontalAlignment = CParaFormat::ELeftAlign; charFormat.iFontPresentation.iTextColor = color; paraFormatMask.SetAttrib(EAttAlignment); charFormatMask.SetAttrib(EAttFontTypeface); charFormatMask.SetAttrib(EAttFontHeight); + paraFormatMask.SetAttrib(EAttLineSpacing); charFormatMask.SetAttrib(EAttColor); iRtEditor->ApplyParaFormatL(¶Format, paraFormatMask); iRtEditor->ApplyCharFormatL(charFormat, charFormatMask); @@ -401,7 +394,6 @@ TRect rect = Rect(); TRect innerRect( rect ); TRgb color = KRgbBlack; - const TInt offSet = 5; MAknsSkinInstance* skin = AknsUtils::SkinInstance(); MAknsControlContext* cc = AknsDrawUtils::ControlContext( this ); @@ -478,22 +470,6 @@ const TInt KBorderWidth = 2; gc.SetPenSize( TSize( KBorderWidth, KBorderWidth ) ); gc.DrawRoundRect( innerRect, TSize( KFrameRoundRadius, KFrameRoundRadius ) ); - - // draw shadow - gc.SetBrushStyle(CGraphicsContext::ESolidBrush); - gc.SetPenStyle( CGraphicsContext::ESolidPen ); - gc.SetBrushColor( color ); - gc.SetPenColor( color ); - TRect rightShadowArea = Rect(); - rightShadowArea.iTl.iX = rightShadowArea.iBr.iX - offSet; - rightShadowArea.iTl.iY += offSet/2; - gc.DrawRect(rightShadowArea); - TRect bottomShadowArea = Rect(); - bottomShadowArea.iTl.iX += offSet/2; - bottomShadowArea.iTl.iY += bottomShadowArea.iBr.iY - offSet; - gc.DrawRect( bottomShadowArea ); - gc.SetBrushStyle( CGraphicsContext::ENullBrush ); - gc.SetPenStyle( CGraphicsContext::ENullPen ); } // --------------------------------------------------------- diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/widgetmanager/src/wmeffectmanager.cpp --- a/idlehomescreen/widgetmanager/src/wmeffectmanager.cpp Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/widgetmanager/src/wmeffectmanager.cpp Fri Apr 23 13:22:20 2010 +0100 @@ -131,7 +131,7 @@ // fullscreen effect may contain unwanted parts (dialog, note, etc.) // which was shown when fullscreen effect is about to be started iCoeEnv.WsSession().Finish(); - User::After( 1000 ); + User::After( 1 ); const TInt flags( AknTransEffect::TParameter::EActivateExplicitCancel ); const TUid targetAppUid( iAvkonAppUi->Application()->AppDllUid() ); diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/widgetmanager/src/wminstaller.cpp --- a/idlehomescreen/widgetmanager/src/wminstaller.cpp Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/widgetmanager/src/wminstaller.cpp Fri Apr 23 13:22:20 2010 +0100 @@ -119,19 +119,19 @@ void CWmInstaller::RunL() { // if error has occurred, stop uninstallation animation. - if ( iStatus.Int() != KErrNone ) + CWmWidgetData* widget = + iWmPlugin.GetUninstalledWidgetByUid( iUid ); + if ( widget ) { - CWmWidgetData* widget = - iWmPlugin.GetUninstalledWidgetByUid( iUid ); - if ( widget ) - { - widget->StopUninstallAnimationL(); - } - - // display error note + widget->StopUninstallAnimation(); + } + + if ( KErrNone != iStatus.Int() ) + { + // display error note incase of error CEikonEnv::Static()->HandleError( iStatus.Int() ); } - + // close SWI session if ( iIdle && iIdle->IsActive() ) { @@ -163,7 +163,14 @@ // --------------------------------------------------------- // TInt CWmInstaller::RunError(TInt /*aError*/) - { + { + // if error has occurred, stop uninstallation animation. + CWmWidgetData* widget = + iWmPlugin.GetUninstalledWidgetByUid( iUid ); + if ( widget ) + { + widget->StopUninstallAnimation(); + } // close SWI session if ( iIdle && iIdle->IsActive() ) { @@ -193,6 +200,9 @@ { delete iMime; iMime = NULL; + CloseSwiSession( this ); + + // re-open session to swi server User::LeaveIfError( iInstaller.Connect() ); iMime = ( ( aData->WrtType() == CWmWidgetData::EWgt ) ? KCWrtMime().AllocL() : KWrtMime().AllocL() ); diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/widgetmanager/src/wmlistbox.cpp --- a/idlehomescreen/widgetmanager/src/wmlistbox.cpp Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/widgetmanager/src/wmlistbox.cpp Fri Apr 23 13:22:20 2010 +0100 @@ -166,6 +166,26 @@ iDefaultLogoImageMask, size, EAspectRatioPreserved ); } + +// --------------------------------------------------------- +// CWmListItemDrawer::UpdateItemHeight +// --------------------------------------------------------- +// +void CWmListItemDrawer::UpdateItemHeight() + { + // sets item height according to layout + TAknWindowLineLayout listPane = AknLayoutScalable_Apps + ::list_wgtman_pane().LayoutLine(); + TAknLayoutRect listPaneRect; + listPaneRect.LayoutRect( iListBox->Rect(), listPane ); + TAknWindowLineLayout listRowPane = AknLayoutScalable_Apps + ::listrow_wgtman_pane().LayoutLine(); + TAknLayoutRect listRowPaneRect; + listRowPaneRect.LayoutRect( listPaneRect.Rect(), listRowPane ); + iListBox->View()->SetItemHeight( listRowPaneRect.Rect().Height() ); + iListBox->View()->ItemDrawer()->SetItemCellSize( listRowPaneRect.Rect().Size() ); + } + // --------------------------------------------------------- // CWmListItemDrawer::DrawItem // --------------------------------------------------------- @@ -571,7 +591,8 @@ static_cast ( iItemDrawer ); if ( itemDrawer ) { - return itemDrawer->ResizeDefaultBitmaps(); + itemDrawer->UpdateItemHeight(); + itemDrawer->ResizeDefaultBitmaps(); } } diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/widgetmanager/src/wmmaincontainer.cpp --- a/idlehomescreen/widgetmanager/src/wmmaincontainer.cpp Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/widgetmanager/src/wmmaincontainer.cpp Fri Apr 23 13:22:20 2010 +0100 @@ -68,6 +68,9 @@ #include "wmconfiguration.h" #include "wminstaller.h" +#include // content control api +#include // content control api + // CONSTANTS const TInt KTextLimit = 40; // Text-limit for find-field const TInt KMinWidgets = 1; // minimum number of widgets to show findpane @@ -93,6 +96,8 @@ // CWmMainContainer::~CWmMainContainer() { + TRAP_IGNORE(DeactivateFindPaneL(EFalse)); + delete iWidgetLoader; RemoveCtrlsFromStack(); @@ -222,8 +227,18 @@ ::wgtman_btn_pane( variety ).LayoutLine(); TAknWindowLineLayout operatorBtnLayout = AknLayoutScalable_Apps ::wgtman_btn_pane_cp_01( variety ).LayoutLine(); - AknLayoutUtils::LayoutControl( iPortalButtonOne, rect, oviBtnLayout ); - AknLayoutUtils::LayoutControl( iPortalButtonTwo, rect, operatorBtnLayout ); + + // button placement + if ( iConfiguration->PortalButtonsMirrored() ) + { + AknLayoutUtils::LayoutControl( iPortalButtonOne, rect, operatorBtnLayout ); + AknLayoutUtils::LayoutControl( iPortalButtonTwo, rect, oviBtnLayout ); + } + else + { + AknLayoutUtils::LayoutControl( iPortalButtonOne, rect, oviBtnLayout ); + AknLayoutUtils::LayoutControl( iPortalButtonTwo, rect, operatorBtnLayout ); + } } // layout iWidgetsList @@ -256,12 +271,15 @@ // This is a bug fix for ou1cimx1#217716 & ou1cimx1#217667. // For some weird reason homescreen is genarating one extra EEventKey - // when using Nokia SU-8W bluetooth keyboard & backspace key. This if is to + // when using bluetooth keyboard & backspace key. This if is to // ignore that event. Extra event allways has iModifiers set to - // EModifierAutorepeatable. + // EModifierAutorepeatable, EModifierKeyboardExtend and + // EModifierNumLock. if ( aType == EEventKey && - aKeyEvent.iScanCode == EStdKeyBackspace && - aKeyEvent.iModifiers == EModifierAutorepeatable ) + aKeyEvent.iScanCode == EStdKeyBackspace && + aKeyEvent.iModifiers&EModifierKeyboardExtend && + aKeyEvent.iModifiers&EModifierNumLock && + aKeyEvent.iModifiers&EModifierAutorepeatable ) { return EKeyWasConsumed; } @@ -441,7 +459,7 @@ { // widget list top -> up -> ovi button (portrait) if ( aType == EEventKey ) - SetFocusToPortalButton( 0 ); + SetFocusToPortalButton( OperatorButtonHigherPriority ( 0 ) ); keyResponse = EKeyWasConsumed; } else if ( !iLandscape && @@ -451,7 +469,7 @@ { // widget list bottom -> down -> ovi button (portrait) if ( aType == EEventKey ) - SetFocusToPortalButton( 0 ); + SetFocusToPortalButton( OperatorButtonHigherPriority ( 0 ) ); keyResponse = EKeyWasConsumed; } else if ( iLandscape && !iMirrored && @@ -459,7 +477,7 @@ { // widget list -> right -> ovi button (landscape normal) if ( aType == EEventKey ) - SetFocusToPortalButton( 0 ); + SetFocusToPortalButton( OperatorButtonHigherPriority ( 0 ) ); keyResponse = EKeyWasConsumed; } else if ( iLandscape && iMirrored && @@ -493,8 +511,20 @@ keyResponse = EKeyWasConsumed; } else if ( !iLandscape && !iMirrored && + aKeyEvent.iScanCode == EStdKeyLeftArrow && + iConfiguration->PortalButtonCount() > 1 && + iConfiguration->PortalButtonsMirrored() ) + { + // right portal -> left -> left portal + // (portrait, operator button higher priority ) + if ( aType == EEventKey ) + SetFocusToPortalButton( 1 ); + keyResponse = EKeyWasConsumed; + } + else if ( !iLandscape && !iMirrored && aKeyEvent.iScanCode == EStdKeyRightArrow && - iConfiguration->PortalButtonCount() > 1 ) + iConfiguration->PortalButtonCount() > 1 && + !iConfiguration->PortalButtonsMirrored() ) { // left portal -> right -> right portal (portrait normal) if ( aType == EEventKey ) @@ -527,8 +557,20 @@ keyResponse = EKeyWasConsumed; } else if ( iLandscape && + aKeyEvent.iScanCode == EStdKeyUpArrow && + iConfiguration->PortalButtonCount() > 1 && + iConfiguration->PortalButtonsMirrored() ) + { + // lower portal -> up -> upper portal + // (landscape, operator button higher priority ) + if ( aType == EEventKey ) + SetFocusToPortalButton( 1 ); + keyResponse = EKeyWasConsumed; + } + else if ( iLandscape && aKeyEvent.iScanCode == EStdKeyDownArrow && - iConfiguration->PortalButtonCount() > 1 ) + iConfiguration->PortalButtonCount() > 1 && + !iConfiguration->PortalButtonsMirrored() ) { // upper portal -> down -> lower portal (landscape) if ( aType == EEventKey ) @@ -558,8 +600,20 @@ keyResponse = EKeyWasConsumed; } else if ( !iLandscape && !iMirrored && + aKeyEvent.iScanCode == EStdKeyRightArrow && + iConfiguration->PortalButtonCount() > 1 && + iConfiguration->PortalButtonsMirrored() ) + { + // left portal -> right -> right portal + // (portrait, operator button higher priority ) + if ( aType == EEventKey ) + SetFocusToPortalButton( 0 ); + keyResponse = EKeyWasConsumed; + } + else if ( !iLandscape && !iMirrored && aKeyEvent.iScanCode == EStdKeyLeftArrow && - iConfiguration->PortalButtonCount() > 1 ) + iConfiguration->PortalButtonCount() > 1 && + !iConfiguration->PortalButtonsMirrored() ) { // right portal -> left -> left portal (portrait normal) if ( aType == EEventKey ) @@ -592,7 +646,18 @@ keyResponse = EKeyWasConsumed; } else if ( iLandscape && - aKeyEvent.iScanCode == EStdKeyUpArrow ) + aKeyEvent.iScanCode == EStdKeyDownArrow && + iConfiguration->PortalButtonsMirrored() ) + { + // upper portal -> down -> lower portal + // ( landscape operator button higher priority ) + if ( aType == EEventKey ) + SetFocusToPortalButton( 0 ); + keyResponse = EKeyWasConsumed; + } + else if ( iLandscape && + aKeyEvent.iScanCode == EStdKeyUpArrow && + !iConfiguration->PortalButtonsMirrored() ) { // lower portal -> up -> upper portal (landscape) if ( aType == EEventKey ) @@ -620,6 +685,28 @@ return keyResponse; } + +// --------------------------------------------------------- +// CWmMainContainer::OperatorButtonHigherPriority +// --------------------------------------------------------- +// +TInt CWmMainContainer::OperatorButtonHigherPriority( TInt aIndex ) + { + TInt ret = aIndex; + if ( iConfiguration->PortalButtonsMirrored() ) + { + if ( aIndex == 0 ) + { + ret = 1; + } + else if ( aIndex == 1 ) + { + ret = 0; + } + } + return ret; + } + // --------------------------------------------------------- // CWmMainContainer::SetFocusToPortalButton // --------------------------------------------------------- @@ -1060,7 +1147,7 @@ { if ( iFindbox && iFindPaneIsVisible ) { - DeactivateFindPaneL(); + DeactivateFindPaneL(EFalse); } if ( data && !data->IsUninstalling() ) @@ -1160,10 +1247,10 @@ // CWmMainContainer::DeactivateFindPaneL // --------------------------------------------------------------------------- // -void CWmMainContainer::DeactivateFindPaneL() +void CWmMainContainer::DeactivateFindPaneL(TBool aLayout) { if( iFindbox && iFindPaneIsVisible ) - { + { // notify search field we're shutting down TKeyEvent keyEvent = { EKeyNo, EStdKeyNo, 0, 0 }; iFindbox->OfferKeyEventL( keyEvent, EEventKey ); @@ -1186,20 +1273,23 @@ iFindPaneIsVisible = EFalse; iWidgetsList->SetFindPaneIsVisible( EFalse ); - LayoutControls(); - - // set soft key set - CEikButtonGroupContainer* cbaGroup = - CEikButtonGroupContainer::Current(); - TInt cbaResourceId = ( AknLayoutUtils::MSKEnabled() ? - R_AVKON_SOFTKEYS_OPTIONS_BACK__SELECT : - R_AVKON_SOFTKEYS_OPTIONS_BACK ); - - cbaGroup->SetCommandSetL( cbaResourceId ); - cbaGroup->DrawNow(); - - UpdateFocusMode(); - DrawNow(); + if (aLayout) //no need to draw UI if exiting list + { + LayoutControls(); + + // set soft key set + CEikButtonGroupContainer* cbaGroup = + CEikButtonGroupContainer::Current(); + TInt cbaResourceId = ( AknLayoutUtils::MSKEnabled() ? + R_AVKON_SOFTKEYS_OPTIONS_BACK__SELECT : + R_AVKON_SOFTKEYS_OPTIONS_BACK ); + + cbaGroup->SetCommandSetL( cbaResourceId ); + cbaGroup->DrawNow(); + + UpdateFocusMode(); + DrawNow(); + } } } @@ -1351,9 +1441,20 @@ const CFbsBitmap* mask = ( data->LogoImageMask() ) ? data->LogoImageMask() : iWidgetsList->DefaultMask(); + // Find out if HS is full + TBool hsFull = ETrue; + MHsContentController& controller = iWmPlugin.ContentController(); + CHsContentInfo* activeView = CHsContentInfo::NewLC(); + if ( controller.ActiveViewL( *activeView ) == KErrNone ) + { + hsFull = activeView->IsFull(); + } + CleanupStack::PopAndDestroy( activeView ); + CWmDetailsDlg* dlg = CWmDetailsDlg::NewL( - data->Name(), data->Description(), - data->HsContentInfo().CanBeAdded(), + data->Name(), + data->Description(), + !hsFull, logo, mask ); if ( dlg && dlg->ExecuteLD() == ECbaAddToHs ) @@ -1466,5 +1567,24 @@ return *iWidgetsList; } +// ---------------------------------------------------- +// CWmMainContainer::FocusChanged +// ---------------------------------------------------- +// +void CWmMainContainer::FocusChanged( TDrawNow aDrawNow ) + { + CCoeControl::FocusChanged( aDrawNow ); + + if ( iFindbox && iFindPaneIsVisible && + !iFindbox->IsFocused() && IsFocused() ) + { + // reset focus to find pane if its lost ( ou1cimx1#308019 ) + ResetFocus(); + iFindbox->SetFocus( ETrue ); + UpdateFocusMode(); + } + } + + // End of File diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/widgetmanager/src/wmmaincontainerview.cpp --- a/idlehomescreen/widgetmanager/src/wmmaincontainerview.cpp Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/widgetmanager/src/wmmaincontainerview.cpp Fri Apr 23 13:22:20 2010 +0100 @@ -28,14 +28,14 @@ #include #include #include +#include #include "wmplugin.h" #include "widgetmanager.hrh" #include "wmmaincontainerview.h" #include "wmresourceloader.h" #include "wmmaincontainer.h" -#include - +#include "wmspbgcleaner.h" // --------------------------------------------------------- // CWmMainContainerView::CWmMainContainerView() @@ -46,6 +46,7 @@ iWmPlugin( aWmPlugin ) { iWmMainContainer = NULL; + iWmSpBgCleaner = NULL; } // --------------------------------------------------------- @@ -61,6 +62,13 @@ delete iWmMainContainer; iWmMainContainer = NULL; } + + if ( iWmSpBgCleaner != NULL ) + { + AppUi()->RemoveFromStack( iWmSpBgCleaner ); + delete iWmSpBgCleaner; + iWmSpBgCleaner = NULL; + } } // --------------------------------------------------------- @@ -180,20 +188,25 @@ { // setup status pane layout StatusPane()->SwitchLayoutL( - R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT ); - StatusPane()->ApplyCurrentSettingsL(); - + R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT ); // disable transparancy - if ( StatusPane()->IsTransparent() ) + StatusPane()->EnableTransparent( EFalse ); + // apply changes + StatusPane()->ApplyCurrentSettingsL(); + + // create container + if ( iWmSpBgCleaner == NULL ) { - StatusPane()->EnableTransparent( EFalse ); + iWmSpBgCleaner = CWmSpBgCleaner::NewL(); + iWmSpBgCleaner->SetMopParent( this ); + AppUi()->AddToStackL( *this, iWmSpBgCleaner ); } // title in status pane SetTitleL(); - + StatusPane()->DrawNow(); - + // update cba CEikButtonGroupContainer* bgc( Cba() ); CEikCba* cba = static_cast< CEikCba* >( bgc->ButtonGroup() ); @@ -232,27 +245,13 @@ iWmMainContainer = NULL; iWmPlugin.MainViewDeactivated(); } - } -// --------------------------------------------------------- -// CWmMainContainerView::HandleStatusPaneSizeChange -// --------------------------------------------------------- -// -void CWmMainContainerView::HandleStatusPaneSizeChange() - { - CAknView::HandleStatusPaneSizeChange(); - - // this may fail, but we're not able to propagate exceptions here - TVwsViewId view; - AppUi()->GetActiveViewId( view ); - if ( view.iViewUid == Id() ) - { - if ( iWmMainContainer ) - { - iWmMainContainer->SetRect( AppUi()->ClientRect() ); - } - } - + if ( iWmSpBgCleaner != NULL ) + { + AppUi()->RemoveFromStack( iWmSpBgCleaner ); + delete iWmSpBgCleaner; + iWmSpBgCleaner = NULL; + } } // --------------------------------------------------------- @@ -429,7 +428,7 @@ TBool CWmMainContainerView::HandleDeactivateFindPaneL() { if ( iWmMainContainer ) - { + { iWmMainContainer->DeactivateFindPaneL(); } return ETrue; diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/widgetmanager/src/wmplugin.cpp --- a/idlehomescreen/widgetmanager/src/wmplugin.cpp Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/widgetmanager/src/wmplugin.cpp Fri Apr 23 13:22:20 2010 +0100 @@ -118,10 +118,17 @@ iViewAppUi->View( TUid::Uid(EWmMainContainerViewId) ) ); if ( !IsActive() && view && iHsContentController ) { + // stop displaying menubar before starting fullscreen effects + CEikMenuBar* menuBar = CEikonEnv::Static()->AppUiFactory()->MenuBar(); + if ( menuBar && menuBar->IsDisplayed() ) + { + menuBar->StopDisplayingMenuBar(); + } + TRAP_IGNORE( iEffectManager->BeginFullscreenEffectL( KAppStartEffectStyle ); - iViewAppUi->ActivateLocalViewL( + iViewAppUi->ActivateLocalViewL( TUid::Uid( EWmMainContainerViewId ) ); ); } diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/widgetmanager/src/wmportalbutton.cpp --- a/idlehomescreen/widgetmanager/src/wmportalbutton.cpp Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/widgetmanager/src/wmportalbutton.cpp Fri Apr 23 13:22:20 2010 +0100 @@ -32,6 +32,8 @@ #include // widgetreqistry #include #include +#include +#include #include "wmportalbutton.h" #include "wmcommon.h" @@ -42,10 +44,7 @@ #include "wmprocessmonitor.h" // CONSTANTS -_LIT( KUrlPrefix, "4 "); - -const TUid KOSSBrowserUidValue = { 0x10008D39 }; // MEMBER FUNCTIONS // --------------------------------------------------------- @@ -78,7 +77,7 @@ // --------------------------------------------------------- // CWmPortalButton::~CWmPortalButton() - { + { delete iButtonIcon; delete iButtonIconMask; @@ -87,6 +86,7 @@ // for de-reference open file count, so it should be deleted last. delete iImageConverter; delete iProcessMonitor; + delete iBrowserLauncher; } // --------------------------------------------------------- @@ -102,6 +102,7 @@ iButtonIcon = NULL; iButtonIconMask = NULL; iProcessMonitor = NULL; + iBrowserLauncher = NULL; } // --------------------------------------------------------- @@ -160,18 +161,31 @@ { if ( iPortalButtonIndex == 0 ) { + // OVI button if ( !iProcessMonitor ) { iProcessMonitor = CWmProcessMonitor::NewL(); } - if ( !iProcessMonitor->IsActive() ) + // if process monitor is active laucher was allready started. + // this is for ignoring multiple button presses + if ( !iProcessMonitor->IsActive() ) { RunOviL( iWmMainContainer->Configuration() ); } } else if ( iPortalButtonIndex == 1 ) { - RunOperatorL( iWmMainContainer->Configuration() ); + // OPERATOR button + // if this leaves it means we need to start browser + // becouse application info was not given + TRAPD( err, RunOperatorApplicationL( + iWmMainContainer->Configuration() ) ) + if ( err != KErrNone ) + { + StartBrowserL( + iWmMainContainer->Configuration().PortalButtonBrowserUrl( + iPortalButtonIndex ) ); + } } else { @@ -186,8 +200,6 @@ // void CWmPortalButton::RunOviL( CWmConfiguration& aConf ) { - // param is: channel=homescreenwidgets - // laucher uid: 0x2002D07F RApaLsSession session; User::LeaveIfError( session.Connect() ); CleanupClosePushL( session ); @@ -197,13 +209,7 @@ TUid launchUid; launchUid = aConf.PortalButtonClientUid( iPortalButtonIndex ); - TInt err = session.GetAppInfo( appInfo, launchUid ); - if ( err != KErrNone ) - { - //This is temp until we have laucher in SDK - StartBrowserL( aConf ); - } - else + if ( session.GetAppInfo( appInfo, launchUid ) == KErrNone ) { // Form parameter HBufC* param = HBufC::NewLC( aConf.PortalButtonClientParam( iPortalButtonIndex ).Length() ); @@ -226,67 +232,39 @@ // CWmPortalButton::StartBrowserL // --------------------------------------------------------- // -void CWmPortalButton::StartBrowserL( CWmConfiguration& aConf ) +void CWmPortalButton::StartBrowserL( const TDesC& aUrl ) { - RApaLsSession session; - User::LeaveIfError( session.Connect() ); - CleanupClosePushL( session ); + // already running/or request launch or url is empty + if ( iBrowserLauncher || !aUrl.Length() ) { return; } - HBufC* param = NULL; - if ( iPortalButtonIndex == 1 ) - { - // browser start parameter - param = HBufC::NewLC( - aConf.PortalButtonBrowserUrl( iPortalButtonIndex ).Length() + - KUrlPrefix().Length() ); + _LIT( KUrlPrefix, "4 "); + HBufC* param = HBufC::NewLC( aUrl.Length() + KUrlPrefix().Length() ); + param->Des().Append( KUrlPrefix ); + param->Des().Append( aUrl ); - param->Des().Copy( KUrlPrefix ); - param->Des().Append( aConf.PortalButtonBrowserUrl( iPortalButtonIndex ) ); - } - else - { - // becouse launcher knows url we need to have it temp here - // until laucher is available - _LIT( KTempUrl, "4 https://store.ovi.com/applications/"); - param = HBufC::NewLC( KTempUrl().Length() ); - param->Des().Copy( KTempUrl ); - } + // Create browser launcher + CBrowserLauncher* launcher = CBrowserLauncher::NewLC(); + + // Asynchronous operation to launch the browser with given URL + launcher->LaunchBrowserEmbeddedL( + *param, NULL, this, NULL ); - TUid id( KOSSBrowserUidValue ); - TApaTaskList taskList( CEikonEnv::Static()->WsSession() ); - TApaTask task = taskList.FindApp( id ); - if( task.Exists() ) - { - task.BringToForeground(); - HBufC8* param8 = HBufC8::NewLC(param->Length()); - param8->Des().Append(*param); - task.SendMessage(TUid::Uid(0), *param8); // UID not used - CleanupStack::PopAndDestroy(param8); - } - else - { - if( !session.Handle() ) - { - User::LeaveIfError( session.Connect() ); - } - TThreadId thread; - User::LeaveIfError( - session.StartDocument(*param, KOSSBrowserUidValue, thread)); - } - + CleanupStack::Pop( launcher ); + iBrowserLauncher = launcher; + launcher = NULL; + CleanupStack::PopAndDestroy( param ); - CleanupStack::PopAndDestroy( &session ); } // --------------------------------------------------------- -// CWmPortalButton::RunOperatorL +// CWmPortalButton::HandleServerAppExit // --------------------------------------------------------- // -void CWmPortalButton::RunOperatorL( CWmConfiguration& aConf ) +void CWmPortalButton::HandleServerAppExit( TInt aReason ) { - // Current info is that this will be a widget - // meanwhile we just start browser - StartBrowserL( aConf ); + MAknServerAppExitObserver::HandleServerAppExit( aReason ); + delete iBrowserLauncher; + iBrowserLauncher = NULL; } // --------------------------------------------------------- @@ -573,4 +551,95 @@ baselineOffset, layoutText.Align() ); } +// --------------------------------------------------------- +// CWmPortalButton::RunOperatorApplicationL +// --------------------------------------------------------- +// +void CWmPortalButton::RunOperatorApplicationL( CWmConfiguration& aConf ) + { + CWmConfiguration::TOpAppType type = aConf.PortalButtonApplicationType( 1 ); + if ( type == CWmConfiguration::EUnknown || + type >= CWmConfiguration::EReserved ) + { + // Leave if not found + User::Leave( KErrArgument ); + } + + switch( type ) + { + case CWmConfiguration::ES60: + case CWmConfiguration::EQt: + { + TUid uid = KNullUid; + aConf.PortalButtonApplicationId( 1, uid ); + StartProcessL( uid, aConf.PortalButtonClientParam( 1 ) ); + } + break; + case CWmConfiguration::ECwrt: + { + TUid uid = KNullUid; + aConf.PortalButtonApplicationId( 1, uid ); + StartWidgetL( uid, aConf.PortalButtonClientParam( 1 ) ); + } + break; + case CWmConfiguration::EWrt: + { + TUid uid = KNullUid; + aConf.PortalButtonApplicationId( 1, uid ); + StartWidgetL( uid, KNullDesC ); + } + break; + case CWmConfiguration::EJava: + { + TBuf appId; + aConf.PortalButtonApplicationId( 1, appId ); + //TODO: + } + break; + } + } + +// --------------------------------------------------------- +// CWmPortalButton::StartProcessL +// --------------------------------------------------------- +// +void CWmPortalButton::StartProcessL( TUid aUid, const TDesC& aParam ) + { + RApaLsSession session; + User::LeaveIfError( session.Connect() ); + CleanupClosePushL( session ); + + //get app info + TApaAppInfo appInfo; + User::LeaveIfError( session.GetAppInfo( appInfo, aUid ) ); + // do the launch + RProcess process; + User::LeaveIfError( process.Create( appInfo.iFullName, aParam ) ); + process.Resume(); + + CleanupStack::PopAndDestroy( &session ); + } + +// --------------------------------------------------------- +// CWmPortalButton::StartWidgetL +// --------------------------------------------------------- +// +void CWmPortalButton::StartWidgetL( TUid aAppUid, const TDesC& aParams ) + { + if ( aAppUid == KNullUid ) + User::Leave( KErrArgument ); + + HBufC* params = aParams.AllocLC(); + + RApaLsSession appArc; + User::LeaveIfError( appArc.Connect() ); + CleanupClosePushL( appArc ); + + TThreadId threadId; + User::LeaveIfError( appArc.StartDocument( *params, aAppUid, threadId ) ); + + CleanupStack::PopAndDestroy( &appArc ); + CleanupStack::PopAndDestroy( params ); + } + // End of file diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/widgetmanager/src/wmspbgcleaner.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/src/wmspbgcleaner.cpp Fri Apr 23 13:22:20 2010 +0100 @@ -0,0 +1,131 @@ +/* +* Copyright (c) 2010 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: +* statuspane transparency handling implementation +* +*/ + +#include +#include +#include + +#include "wmspbgcleaner.h" + +// CONSTANTS + +// --------------------------------------------------------- +// CWmSpBgCleaner::NewL +// --------------------------------------------------------- +// +CWmSpBgCleaner* CWmSpBgCleaner::NewL() + { + CWmSpBgCleaner* self = CWmSpBgCleaner::NewLC(); + CleanupStack::Pop(); // self; + return self; + } + +// --------------------------------------------------------- +// CWmSpBgCleaner::NewLC +// --------------------------------------------------------- +// +CWmSpBgCleaner* CWmSpBgCleaner::NewLC() + { + CWmSpBgCleaner* self = new ( ELeave ) CWmSpBgCleaner(); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +// --------------------------------------------------------- +// CWmSpBgCleaner::CWmSpBgCleaner +// --------------------------------------------------------- +// +CWmSpBgCleaner::CWmSpBgCleaner() + { + } + +// --------------------------------------------------------- +// CWmSpBgCleaner::ConstructL +// --------------------------------------------------------- +// +void CWmSpBgCleaner::ConstructL() + { + CreateWindowL(); + + TRect statusPaneRect; + AknLayoutUtils::LayoutMetricsRect( + AknLayoutUtils::EStatusPane, statusPaneRect ); + + SetRect( statusPaneRect ); + SetNonFocusing(); + + Window().SetOrdinalPosition( -1 ); + Window().SetBackgroundColor( TRgb::Color16MA(0) ); + Window().SetVisible( ETrue ); + + ActivateL(); + } + +// --------------------------------------------------------- +// CWmSpBgCleaner::~CWmSpBgCleaner +// --------------------------------------------------------- +// +CWmSpBgCleaner::~CWmSpBgCleaner() + { + } + +// --------------------------------------------------------- +// CWmSpBgCleaner::SizeChanged +// --------------------------------------------------------- +// +void CWmSpBgCleaner::SizeChanged() + { + CCoeControl::SizeChanged(); + DrawDeferred(); + } + +// --------------------------------------------------------- +// CWmSpBgCleaner::Draw +// --------------------------------------------------------- +// +void CWmSpBgCleaner::Draw( const TRect& /*aRect*/ ) const + { + CWindowGc& gc = SystemGc(); + TRgb color( TRgb::Color16MA(0) ); + gc.SetPenColor( color ); + gc.SetBrushColor( color ); + gc.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha ); + gc.SetPenStyle(CGraphicsContext::ESolidPen ); + gc.SetBrushStyle(CGraphicsContext::ESolidBrush ); + gc.Clear(); + } + +// --------------------------------------------------------- +// CWmSpBgCleaner::HandleResourceChange +// --------------------------------------------------------- +// +void CWmSpBgCleaner::HandleResourceChange( TInt aType ) + { + CCoeControl::HandleResourceChange( aType ); + + if ( KEikDynamicLayoutVariantSwitch == aType ) + { + TRect statusPaneRect; + AknLayoutUtils::LayoutMetricsRect( + AknLayoutUtils::EStatusPane, statusPaneRect ); + SetRect( statusPaneRect ); + } + } + +// End of file diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/widgetmanager/src/wmwidgetdata.cpp --- a/idlehomescreen/widgetmanager/src/wmwidgetdata.cpp Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/widgetmanager/src/wmwidgetdata.cpp Fri Apr 23 13:22:20 2010 +0100 @@ -420,6 +420,17 @@ // CWmWidgetData::Description // --------------------------------------------------------- // +const TDesC& CWmWidgetData::Name() const + { + return ( iAsyncUninstalling ? + iWmResourceLoader.Uninstalling() : + iHsContentInfo->Name() ); + } + +// --------------------------------------------------------- +// CWmWidgetData::Description +// --------------------------------------------------------- +// const TDesC& CWmWidgetData::Description() const { if ( iHsContentInfo->Description().Length() <= 0 && @@ -447,7 +458,7 @@ { iWait->AsyncStop(); } - + iFireLogoChanged = ETrue; iLogoSize = aSize; HandleIconString( HsContentInfo().IconPath() ); @@ -517,14 +528,6 @@ { DestroyAnimData(); PrepairAnimL(); - - // set copy of widget name for uninstallation error case. - if ( iHsContentInfo->Name().Compare( iWmResourceLoader.Uninstalling() ) != - KErrNone ) - { - iWidgetName = iHsContentInfo->Name().AllocL(); - iHsContentInfo->SetNameL( iWmResourceLoader.Uninstalling() ); - } iAsyncUninstalling = ETrue; iAnimationIndex = 0; @@ -690,18 +693,10 @@ // CWmWidgetData::StopUninstallAnimation // --------------------------------------------------------- // -void CWmWidgetData::StopUninstallAnimationL() +void CWmWidgetData::StopUninstallAnimation() { iAsyncUninstalling = EFalse; DestroyAnimData(); - // restore widget name - if ( iWidgetName ) - { - iHsContentInfo->SetNameL( iWidgetName->Des() ); - delete iWidgetName; - iWidgetName = NULL; - } - FireDataChanged(); //redraw } diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/widgetmanager/tsrc/wmunittest/group/wmunittest.mmp --- a/idlehomescreen/widgetmanager/tsrc/wmunittest/group/wmunittest.mmp Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/widgetmanager/tsrc/wmunittest/group/wmunittest.mmp Fri Apr 23 13:22:20 2010 +0100 @@ -56,6 +56,7 @@ SOURCE wminstaller.cpp SOURCE wmprocessmonitor.cpp SOURCE wmwidgetorderdata.cpp +SOURCE wmspbgcleaner.cpp SOURCEPATH ../src SOURCE wmunittest.cpp @@ -108,6 +109,7 @@ LIBRARY inetprotutil.lib LIBRARY bitgdi.lib // CFbsBitmapDevice LIBRARY charconv.lib +LIBRARY browserlauncher.lib // libraries needed by the test framework LIBRARY stiftestinterface.lib diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluicontroller/inc/appui.h --- a/idlehomescreen/xmluicontroller/inc/appui.h Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/xmluicontroller/inc/appui.h Fri Apr 23 13:22:20 2010 +0100 @@ -129,7 +129,16 @@ */ void HandleViewActivation( const TVwsViewId& aNewlyActivatedViewId, const TVwsViewId& aViewIdToBeDeactivated ); - + +private: + // from CCoeAppUi + + /** + * Gets a list of help contexts for a particular + * application user interface. + */ + CArrayFix* HelpContextL() const; + public: // new functions diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluicontroller/src/aieventhandler.cpp --- a/idlehomescreen/xmluicontroller/src/aieventhandler.cpp Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/xmluicontroller/src/aieventhandler.cpp Fri Apr 23 13:22:20 2010 +0100 @@ -30,7 +30,6 @@ #include "xnnodeappif.h" #include "aistrcnv.h" -#include #include using namespace AiXmlUiController; @@ -59,27 +58,6 @@ const TUid KVideoCallUid = { 0x101F8681 }; // ======== LOCAL FUNCTIONS ======== -// ---------------------------------------------------------------------------- -// Shows the Homescreen specific help item -// ---------------------------------------------------------------------------- -// -static void ShowHelpL( const TDesC& aHelpString ) - { - TUid fwUid = TUid::Uid( AI_UID3_AIFW_COMMON ); - TCoeContextName helpString; - helpString.Copy( aHelpString ); - - CArrayFixFlat* array = - new (ELeave) CArrayFixFlat(1); - CleanupStack::PushL( array ); - - array->AppendL( TCoeHelpContext( fwUid, helpString ) ); - - HlpLauncher::LaunchHelpApplicationL( - CCoeEnv::Static()->WsSession(), array ); - - CleanupStack::Pop( array ); - } // --------------------------------------------------------------------------- // Activates Phone application either in video call or normal view @@ -175,14 +153,9 @@ } else if ( event == AiUiDef::xml::event::KEventShowHelp ) { - if( iUiController.UiEngineL()->IsEditMode() ) - { - ShowHelpL( KSET_HLP_HOME_SCREEN_EDIT ); - } - else - { - ShowHelpL( KSET_HLP_HOME_SCREEN ); - } + HlpLauncher::LaunchHelpApplicationL( + CCoeEnv::Static()->WsSession(), + CCoeEnv::Static()->AppUi()->AppHelpContextL() ); } else if ( event == AiUiDef::xml::event::KEventActivatePhoneView ) { diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluicontroller/src/appui.cpp --- a/idlehomescreen/xmluicontroller/src/appui.cpp Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/xmluicontroller/src/appui.cpp Fri Apr 23 13:22:20 2010 +0100 @@ -27,6 +27,7 @@ #include #include #include +#include // User includes #include @@ -642,4 +643,30 @@ sp->DrawNow(); } +// ----------------------------------------------------------------------------- +// CAppUi::HelpContextL +// Returns the help context +// ----------------------------------------------------------------------------- +// +CArrayFix* CAppUi::HelpContextL() const + { + TUid fwUid = TUid::Uid( AI_UID3_AIFW_COMMON ); + TCoeContextName helpString; + if( iUiCtl.UiEngineL()->IsEditMode()) + { + helpString.Copy( KSET_HLP_HOME_SCREEN_EDIT ); + } + else + { + helpString.Copy( KSET_HLP_HOME_SCREEN ); + } + + CArrayFixFlat* array = + new( ELeave ) CArrayFixFlat( 1 ); + CleanupStack::PushL( array ); + array->AppendL( TCoeHelpContext( fwUid, helpString ) ); + CleanupStack::Pop( array ); + return array; + } + // End of File. diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluicontroller/src/emptycontenttransactionelement.cpp --- a/idlehomescreen/xmluicontroller/src/emptycontenttransactionelement.cpp Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/xmluicontroller/src/emptycontenttransactionelement.cpp Fri Apr 23 13:22:20 2010 +0100 @@ -20,6 +20,7 @@ #include "xnnewsticker.h" #include "xnbitmap.h" #include "xntext.h" +#include "xntexteditor.h" #include "emptycontenttransactionelement.h" #include "aixmluiconstants.h" #include "aixmluiutils.h" @@ -81,15 +82,25 @@ imageIntr->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 ); - - // Clears the text from component - textControl->SetTextL( KNullDesC ); - } + { + // Get control interface + XnTextInterface::MXnTextInterface* textControl = NULL; + XnComponentInterface::MakeInterfaceL( textControl, Target() ); + LeaveIfNull( textControl, KErrNotSupported ); + + // Clears the text from component + textControl->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 ); + + // Clears the text from component + editorControl->SetTextL( KNullDesC ); + } else { CXnNodeAppIf* parent = Target().ParentL(); diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluicontroller/src/globalqueryhandler.cpp --- a/idlehomescreen/xmluicontroller/src/globalqueryhandler.cpp Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/xmluicontroller/src/globalqueryhandler.cpp Fri Apr 23 13:22:20 2010 +0100 @@ -81,6 +81,11 @@ { iUiController.AppUi()->SetOnlineStateL( iSetOnline ); } + else + { + iUiController.AppUi()->SetOnlineStateL(!iSetOnline ); + } + } // ----------------------------------------------------------------------------- diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/renderingplugins/xnmenufactory/src/xnmenu.cpp --- a/idlehomescreen/xmluirendering/renderingplugins/xnmenufactory/src/xnmenu.cpp Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/xmluirendering/renderingplugins/xnmenufactory/src/xnmenu.cpp Fri Apr 23 13:22:20 2010 +0100 @@ -145,6 +145,17 @@ } // ----------------------------------------------------------------------------- +// CXnMenu::KeyEventNode +// +// ----------------------------------------------------------------------------- +// +CXnNodePluginIf* CXnMenu::KeyEventNode() + { + CXnMenuAdapter* adapter = static_cast< CXnMenuAdapter* >( ControlAdapter() ); + return adapter->KeyEventNode(); + } + +// ----------------------------------------------------------------------------- // CXnMenu::SetObserver // // ----------------------------------------------------------------------------- @@ -171,11 +182,12 @@ // // ----------------------------------------------------------------------------- // -void CXnMenu::TryDisplayingMenuBarL( const TDesC& aMenuNodeId ) +void CXnMenu::TryDisplayingMenuBarL( const TDesC& aMenuNodeId, + TBool aContextMenu ) { CXnMenuAdapter* adapter = static_cast< CXnMenuAdapter* >( ControlAdapter() ); - adapter->TryDisplayingMenuL( aMenuNodeId ); + adapter->TryDisplayingMenuL( aMenuNodeId, aContextMenu ); } // ----------------------------------------------------------------------------- diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/renderingplugins/xnmenufactory/src/xnmenuadapter.cpp --- a/idlehomescreen/xmluirendering/renderingplugins/xnmenufactory/src/xnmenuadapter.cpp Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/xmluirendering/renderingplugins/xnmenufactory/src/xnmenuadapter.cpp Fri Apr 23 13:22:20 2010 +0100 @@ -57,7 +57,10 @@ _LIT8( KEditMode, "Menu/EditMode" ); _LIT8( KNormalMode, "Menu/NormalMode" ); +_LIT8( KContextEditMode, "ContextMenu/EditMode" ); +_LIT8( KContextNormalMode, "ContextMenu/NormalMode" ); _LIT8( KAlwaysShown, "Menu/AlwaysShown" ); + _LIT8( KHsShowHelp, "hs_show_help" ); const TInt KMenuCommandFirst = 6000; @@ -1479,19 +1482,24 @@ CleanupClosePushL( groups ); if ( !iUiEngine->IsTextEditorActive() ) - { - if( iUiEngine->EditMode() ) + { + if( iUiEngine->EditMode() ) { - groups.AppendL( &KEditMode ); + groups.AppendL( + iContextMenu ? &KContextEditMode : &KEditMode ); } else { - groups.Append( &KNormalMode ); + groups.AppendL( + iContextMenu ? &KContextNormalMode : &KNormalMode ); } } - - groups.AppendL( &KAlwaysShown ); - + + if ( !iContextMenu ) + { + groups.AppendL( &KAlwaysShown ); + } + // Recursively add menuitems AddMenuItemL( -1, iMenuBarNode, groups ); @@ -1514,40 +1522,45 @@ return resp; } - - const TDesC8* pos( &KNullDesC8 ); + TInt pos( KErrNotFound ); + if( aKeyEvent.iScanCode == EStdKeyDevice0 ) { - pos = &XnPropertyNames::softkey::type::KLeft; + pos = CEikButtonGroupContainer::ELeftSoftkeyPosition; } else if( aKeyEvent.iScanCode == EStdKeyDevice1 ) { - pos = &XnPropertyNames::softkey::type::KRight; + pos = CEikButtonGroupContainer::ERightSoftkeyPosition; } else if( aKeyEvent.iScanCode == EStdKeyDevice3 ) { - pos = &XnPropertyNames::softkey::type::KMiddle; + pos = CEikButtonGroupContainer::EMiddleSoftkeyPosition; } - if( aType == EEventKeyDown ) - { - iKeyEventNode = FindSoftkeyNodeL( *pos ); + CXnSoftkeyItem* softkey( NULL ); + + if ( pos != KErrNotFound ) + { + softkey = SoftkeyItemL( pos ); } - - if( aKeyEvent.iScanCode == EStdKeyDevice0 || - aKeyEvent.iScanCode == EStdKeyDevice1 || - aKeyEvent.iScanCode == EStdKeyDevice3 ) + + if ( softkey ) { - CXnNodePluginIf* node( FindSoftkeyNodeL( *pos ) ); + CXnNodePluginIf* node( softkey->iNode ); + if( aType == EEventKeyDown ) + { + iKeyEventNode = node; + } + if( node && node == iKeyEventNode ) { // Let base class handle the event resp = CXnControlAdapter::OfferKeyEventL( aKeyEvent, aType ); } } - + if( aType == EEventKeyUp ) { iKeyEventNode = NULL; @@ -1725,8 +1738,7 @@ // ----------------------------------------------------------------------------- // void CXnMenuAdapter::SetContainerL( CEikButtonGroupContainer& aContainer ) - { - + { User::LeaveIfNull( &aContainer ); TBool updateNeeded( EFalse ); @@ -1769,16 +1781,19 @@ // ----------------------------------------------------------------------------- // CXnMenuAdapter::TryDisplayingMenuL -// Displays options menu if it is defined for the softkey item +// Displays options menu // ----------------------------------------------------------------------------- // -void CXnMenuAdapter::TryDisplayingMenuL( const TDesC& aMenuNodeId ) +void CXnMenuAdapter::TryDisplayingMenuL( const TDesC& aMenuNodeId, + TBool aContextMenu ) { HBufC8* id = CnvUtfConverter::ConvertFromUnicodeToUtf8L( aMenuNodeId ); CleanupStack::PushL( id ); CXnNodePluginIf* node( iUiEngine->FindNodeByIdL( *id, iRootNode->Namespace() ) ); CleanupStack::PopAndDestroy( id ); + iContextMenu = aContextMenu; + if( node && node->Type()->Type() == KXnMenu ) { TryDisplayingMenuL(); @@ -1817,8 +1832,8 @@ // ----------------------------------------------------------------------------- // void CXnMenuAdapter::StopDisplayingMenu() - { - if( iMenuShown && iMenuBar ) + { + if( iMenuBar ) { iMenuBar->StopDisplayingMenuBar(); } @@ -2097,6 +2112,16 @@ } // ----------------------------------------------------------------------------- +// CXnMenuAdapter::KeyEventNode +// +// ----------------------------------------------------------------------------- +// +CXnNodePluginIf* CXnMenuAdapter::KeyEventNode() + { + return iKeyEventNode; + } + +// ----------------------------------------------------------------------------- // CXnMenuAdapter::HandleScreenDeviceChangedL // // ----------------------------------------------------------------------------- diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/uiengine/bwins/xn3layoutengineu.def --- a/idlehomescreen/xmluirendering/uiengine/bwins/xn3layoutengineu.def Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/xmluirendering/uiengine/bwins/xn3layoutengineu.def Fri Apr 23 13:22:20 2010 +0100 @@ -61,177 +61,167 @@ ?ResetStylusCounter@CXnControlAdapter@@QAEXXZ @ 60 NONAME ; void CXnControlAdapter::ResetStylusCounter(void) ?SetComponent@CXnComponentNodeImpl@@QAEXPAVCXnComponent@@@Z @ 61 NONAME ; void CXnComponentNodeImpl::SetComponent(class CXnComponent *) ?LayoutUIL@TXnUiEnginePluginIf@@QAEXPAVCXnNodePluginIf@@@Z @ 62 NONAME ; void TXnUiEnginePluginIf::LayoutUIL(class CXnNodePluginIf *) - ?FocusVisible@TXnUiEnginePluginIf@@QAEHXZ @ 63 NONAME ; int TXnUiEnginePluginIf::FocusVisible(void) - ?ExitPowerSaveModeL@CXnControlAdapter@@QAEXW4TModeEvent@1@@Z @ 64 NONAME ; void CXnControlAdapter::ExitPowerSaveModeL(enum CXnControlAdapter::TModeEvent) - ?GetThemeResource@TXnUiEngineAppIf@@QAEHABVTDesC16@@AAVRFile@@@Z @ 65 NONAME ; int TXnUiEngineAppIf::GetThemeResource(class TDesC16 const &, class RFile &) - ?ConstructL@CXnComponent@@IAEXXZ @ 66 NONAME ; void CXnComponent::ConstructL(void) - ?FindResource@CXnUtils@@SAPAVCXnResource@@AAV?$CArrayPtrSeg@VCXnResource@@@@ABVTDesC16@@AAH@Z @ 67 NONAME ; class CXnResource * CXnUtils::FindResource(class CArrayPtrSeg &, class TDesC16 const &, int &) - ?UnsetStateL@CXnNodeAppIf@@QAEXABVTDesC8@@@Z @ 68 NONAME ; void CXnNodeAppIf::UnsetStateL(class TDesC8 const &) - ?Uid@CXnDocument@@QAE?AVTUid@@XZ @ 69 NONAME ; class TUid CXnDocument::Uid(void) - ?FocusChanged@CXnControlAdapter@@UAEXW4TDrawNow@@@Z @ 70 NONAME ; void CXnControlAdapter::FocusChanged(enum TDrawNow) - ?SetBlank@CXnControlAdapter@@QAEXH@Z @ 71 NONAME ; void CXnControlAdapter::SetBlank(int) - ?ProcessMessageL@CXnAppUiAdapter@@UAEXVTUid@@ABVTDesC8@@@Z @ 72 NONAME ; void CXnAppUiAdapter::ProcessMessageL(class TUid, class TDesC8 const &) - ?Component@CXnNodeAppIf@@QAEAAVCXnComponent@@XZ @ 73 NONAME ; class CXnComponent & CXnNodeAppIf::Component(void) - ?SetLayoutCapable@CXnNodePluginIf@@QAEXH@Z @ 74 NONAME ; void CXnNodePluginIf::SetLayoutCapable(int) - ?MarginRect@CXnNodePluginIf@@QAE?AVTRect@@XZ @ 75 NONAME ; class TRect CXnNodePluginIf::MarginRect(void) - ?UiEngineL@CXnAppUiAdapter@@QAEPAVTXnUiEngineAppIf@@XZ @ 76 NONAME ; class TXnUiEngineAppIf * CXnAppUiAdapter::UiEngineL(void) - ?SwipeEnabledL@TXnUiEnginePluginIf@@QAEHXZ @ 77 NONAME ; int TXnUiEnginePluginIf::SwipeEnabledL(void) - ?SetFocusVisibleL@TXnUiEnginePluginIf@@QAEXH@Z @ 78 NONAME ; void TXnUiEnginePluginIf::SetFocusVisibleL(int) - ?ActiveView@TXnUiEngineAppIf@@QAEPAVCXnNodeAppIf@@XZ @ 79 NONAME ; class CXnNodeAppIf * TXnUiEngineAppIf::ActiveView(void) - ?HandleXuikonEventL@CXnAppUiAdapter@@UAEXAAVCXnNodeAppIf@@0AAVCXnDomNode@@1@Z @ 80 NONAME ; void CXnAppUiAdapter::HandleXuikonEventL(class CXnNodeAppIf &, class CXnNodeAppIf &, class CXnDomNode &, class CXnDomNode &) - ?RenderUIL@TXnUiEngineAppIf@@QAEXPAVCXnNodeAppIf@@@Z @ 81 NONAME ; void TXnUiEngineAppIf::RenderUIL(class CXnNodeAppIf *) - ?PrepareToExit@CXnAppUiAdapter@@MAEXXZ @ 82 NONAME ; void CXnAppUiAdapter::PrepareToExit(void) - ?DoHandlePropertyChangeL@CXnControlAdapter@@UAEXPAVCXnProperty@@@Z @ 83 NONAME ; void CXnControlAdapter::DoHandlePropertyChangeL(class CXnProperty *) - ?ConstructL@CXnControlAdapter@@IAEXAAVCXnNodePluginIf@@@Z @ 84 NONAME ; void CXnControlAdapter::ConstructL(class CXnNodePluginIf &) - ?FocusedNode@TXnUiEngineAppIf@@QAEPAVCXnNodeAppIf@@XZ @ 85 NONAME ; class CXnNodeAppIf * TXnUiEngineAppIf::FocusedNode(void) - ?SetDataL@CXnComponent@@QAEXABVTDesC8@@ABVTDesC16@@H@Z @ 86 NONAME ; void CXnComponent::SetDataL(class TDesC8 const &, class TDesC16 const &, int) - ?OfferKeyEventL@CXnControlAdapter@@UAE?AW4TKeyResponse@@ABUTKeyEvent@@W4TEventCode@@@Z @ 87 NONAME ; enum TKeyResponse CXnControlAdapter::OfferKeyEventL(struct TKeyEvent const &, enum TEventCode) - ?IsDrawingAllowed@CXnControlAdapter@@QBEHXZ @ 88 NONAME ; int CXnControlAdapter::IsDrawingAllowed(void) const - ?DisplayL@CXnNodePluginIf@@QAEPAVCXnProperty@@XZ @ 89 NONAME ; class CXnProperty * CXnNodePluginIf::DisplayL(void) - ?NewL@CXnProperty@@SAPAV1@ABVTDesC8@@PAVCXnDomPropertyValue@@AAVCXnDomStringPool@@@Z @ 90 NONAME ; class CXnProperty * CXnProperty::NewL(class TDesC8 const &, class CXnDomPropertyValue *, class CXnDomStringPool &) - ?Rect@CXnNodeAppIf@@QAE?AVTRect@@XZ @ 91 NONAME ; class TRect CXnNodeAppIf::Rect(void) - ?NewL@CXnComponentNodeImpl@@SAPAV1@PAVCXnType@@@Z @ 92 NONAME ; class CXnComponentNodeImpl * CXnComponentNodeImpl::NewL(class CXnType *) - ?WidgetsVisible@TXnUiEngineAppIf@@QBEHXZ @ 93 NONAME ; int TXnUiEngineAppIf::WidgetsVisible(void) const - ?Type@CXnNodePluginIf@@QAEPAVCXnType@@XZ @ 94 NONAME ; class CXnType * CXnNodePluginIf::Type(void) - ?MakeXnComponentL@MXnComponentFactory@@EAE?AW4TXnComponentFactoryResponse@1@AAVCXnNodePluginIf@@AAPAVCXnComponent@@@Z @ 95 NONAME ; enum MXnComponentFactory::TXnComponentFactoryResponse MXnComponentFactory::MakeXnComponentL(class CXnNodePluginIf &, class CXnComponent * &) - ?ActivateViewL@TXnUiEngineAppIf@@QAEXAAVCXnNodeAppIf@@@Z @ 96 NONAME ; void TXnUiEngineAppIf::ActivateViewL(class CXnNodeAppIf &) - ?UnsetStateL@CXnNodePluginIf@@QAEXABVTDesC8@@@Z @ 97 NONAME ; void CXnNodePluginIf::UnsetStateL(class TDesC8 const &) - ?StringValueL@CXnProperty@@QAEPAVHBufC16@@XZ @ 98 NONAME ; class HBufC16 * CXnProperty::StringValueL(void) - ?DisableRenderUiLC@TXnUiEnginePluginIf@@QAEXXZ @ 99 NONAME ; void TXnUiEnginePluginIf::DisableRenderUiLC(void) - ?SetPropertyL@CXnNodeAppIf@@QAEXPAVCXnProperty@@@Z @ 100 NONAME ; void CXnNodeAppIf::SetPropertyL(class CXnProperty *) - ?View@CXnAppUiAdapter@@QBEAAVCAknView@@XZ @ 101 NONAME ; class CAknView & CXnAppUiAdapter::View(void) const - ?ViewNodeImpl@CXnNodePluginIf@@QAEPAVCXnViewNodeImpl@@XZ @ 102 NONAME ; class CXnViewNodeImpl * CXnNodePluginIf::ViewNodeImpl(void) - ?StripQuotes@CXnUtils@@SAXAAPAVHBufC16@@@Z @ 103 NONAME ; void CXnUtils::StripQuotes(class HBufC16 * &) - ?SetPCDataL@CXnNodePluginIf@@QAEXABVTDesC8@@@Z @ 104 NONAME ; void CXnNodePluginIf::SetPCDataL(class TDesC8 const &) - ?VisibilityL@CXnNodePluginIf@@QAEPAVCXnProperty@@XZ @ 105 NONAME ; class CXnProperty * CXnNodePluginIf::VisibilityL(void) - ?Draw@CXnControlAdapter@@MBEXABVTRect@@@Z @ 106 NONAME ; void CXnControlAdapter::Draw(class TRect const &) const - ??1CXnApplication@@UAE@XZ @ 107 NONAME ; CXnApplication::~CXnApplication(void) - ?DoesNodeNeedComponentImplL@MXnComponentFactory@@QAEHABVTDesC8@@@Z @ 108 NONAME ; int MXnComponentFactory::DoesNodeNeedComponentImplL(class TDesC8 const &) - ?ConstructL@CXnViewsNodeImpl@@IAEXPAVCXnType@@@Z @ 109 NONAME ; void CXnViewsNodeImpl::ConstructL(class CXnType *) - ?StringPool@TXnUiEngineAppIf@@QAEAAVCXnDomStringPool@@XZ @ 110 NONAME ; class CXnDomStringPool & TXnUiEngineAppIf::StringPool(void) - ?UiEngineL@CXnNodePluginIf@@QAEPAVTXnUiEnginePluginIf@@XZ @ 111 NONAME ; class TXnUiEnginePluginIf * CXnNodePluginIf::UiEngineL(void) - ?ShowFocus@TXnUiEnginePluginIf@@QAEHXZ @ 112 NONAME ; int TXnUiEnginePluginIf::ShowFocus(void) - ?ResolveSkinItemIDL@CXnUtils@@SAHABVTDesC16@@AAVTAknsItemID@@@Z @ 113 NONAME ; int CXnUtils::ResolveSkinItemIDL(class TDesC16 const &, class TAknsItemID &) - ?PluginNodeL@TXnUiEnginePluginIf@@QAEAAVCXnNodePluginIf@@PAV2@@Z @ 114 NONAME ; class CXnNodePluginIf & TXnUiEnginePluginIf::PluginNodeL(class CXnNodePluginIf *) - ?VerticalPixelValueL@TXnUiEnginePluginIf@@QAEHPAVCXnProperty@@H@Z @ 115 NONAME ; int TXnUiEnginePluginIf::VerticalPixelValueL(class CXnProperty *, int) - ?SetComponent@CXnControlAdapter@@QAEXPAVCXnComponent@@@Z @ 116 NONAME ; void CXnControlAdapter::SetComponent(class CXnComponent *) - ??0MXnNodePredicate@@QAE@XZ @ 117 NONAME ; MXnNodePredicate::MXnNodePredicate(void) - ??1CXnViewsNodeImpl@@UAE@XZ @ 118 NONAME ; CXnViewsNodeImpl::~CXnViewsNodeImpl(void) - ?HandleControlEventL@CXnControlAdapter@@UAEXPAVCCoeControl@@W4TCoeEvent@MCoeControlObserver@@@Z @ 119 NONAME ; void CXnControlAdapter::HandleControlEventL(class CCoeControl *, enum MCoeControlObserver::TCoeEvent) - ?ActivateViewL@TXnUiEnginePluginIf@@QAEXAAVCXnNodePluginIf@@@Z @ 120 NONAME ; void TXnUiEnginePluginIf::ActivateViewL(class CXnNodePluginIf &) - ?HandleScreenDeviceChangedL@CXnControlAdapter@@UAEXXZ @ 121 NONAME ; void CXnControlAdapter::HandleScreenDeviceChangedL(void) - ?SizeChanged@CXnControlAdapter@@MAEXXZ @ 122 NONAME ; void CXnControlAdapter::SizeChanged(void) - ?CountComponentControls@CXnControlAdapter@@MBEHXZ @ 123 NONAME ; int CXnControlAdapter::CountComponentControls(void) const - ?HideTooltipsL@CXnNodeAppIf@@QAEXXZ @ 124 NONAME ; void CXnNodeAppIf::HideTooltipsL(void) - ?GetPropertyL@CXnNodeAppIf@@QBEPAVCXnProperty@@ABVTDesC8@@@Z @ 125 NONAME ; class CXnProperty * CXnNodeAppIf::GetPropertyL(class TDesC8 const &) const - ?DeactivateFocusedNodeL@TXnUiEnginePluginIf@@QAEXXZ @ 126 NONAME ; void TXnUiEnginePluginIf::DeactivateFocusedNodeL(void) - ?FindNodeByClassL@TXnUiEngineAppIf@@QAE?AV?$RPointerArray@VCXnNodeAppIf@@@@ABVTDesC8@@0@Z @ 127 NONAME ; class RPointerArray TXnUiEngineAppIf::FindNodeByClassL(class TDesC8 const &, class TDesC8 const &) - ?Match@MXnNodePredicate@@UAEHAAVCXnNode@@@Z @ 128 NONAME ; int MXnNodePredicate::Match(class CXnNode &) - ?GetBitmapAndMask@CXnControlAdapter@@QAEXABVTDesC16@@0AAPAVCFbsBitmap@@1@Z @ 129 NONAME ; void CXnControlAdapter::GetBitmapAndMask(class TDesC16 const &, class TDesC16 const &, class CFbsBitmap * &, class CFbsBitmap * &) - ?NewL@CXnViewsNodeImpl@@SAPAV1@PAVCXnType@@@Z @ 130 NONAME ; class CXnViewsNodeImpl * CXnViewsNodeImpl::NewL(class CXnType *) - ?PaddingRect@CXnNodeAppIf@@QAE?AVTRect@@XZ @ 131 NONAME ; class TRect CXnNodeAppIf::PaddingRect(void) - ?SetMarginRect@CXnNodePluginIf@@QAEXABVTRect@@@Z @ 132 NONAME ; void CXnNodePluginIf::SetMarginRect(class TRect const &) - ?IsDialogDisplaying@TXnUiEnginePluginIf@@QAEHXZ @ 133 NONAME ; int TXnUiEnginePluginIf::IsDialogDisplaying(void) - ?HandleEventL@CXnAppUiAdapter@@UAEXABVTDesC16@@AAVCXnNodeAppIf@@@Z @ 134 NONAME ; void CXnAppUiAdapter::HandleEventL(class TDesC16 const &, class CXnNodeAppIf &) - ?GetPropertyL@CXnNodePluginIf@@QBEPAVCXnProperty@@ABVTDesC8@@@Z @ 135 NONAME ; class CXnProperty * CXnNodePluginIf::GetPropertyL(class TDesC8 const &) const - ?SetPropertyArrayL@CXnNodeAppIf@@QAEXPAV?$RPointerArray@VCXnProperty@@@@@Z @ 136 NONAME ; void CXnNodeAppIf::SetPropertyArrayL(class RPointerArray *) - ?RestorePreviousFocusedNode@TXnUiEnginePluginIf@@QAEXXZ @ 137 NONAME ; void TXnUiEnginePluginIf::RestorePreviousFocusedNode(void) - ?RemoveViewL@CXnAppUiAdapter@@QAEXAAVCAknView@@@Z @ 138 NONAME ; void CXnAppUiAdapter::RemoveViewL(class CAknView &) - ?EnterPowerSaveModeL@CXnComponent@@UAEXXZ @ 139 NONAME ; void CXnComponent::EnterPowerSaveModeL(void) - ?SetRect@CXnNodePluginIf@@QAEXABVTRect@@@Z @ 140 NONAME ; void CXnNodePluginIf::SetRect(class TRect const &) - ??0CXnComponent@@IAE@XZ @ 141 NONAME ; CXnComponent::CXnComponent(void) - ?CollapseWhiteSpace@CXnUtils@@SAXAAVCXnNodePluginIf@@AAVTDes16@@@Z @ 142 NONAME ; void CXnUtils::CollapseWhiteSpace(class CXnNodePluginIf &, class TDes16 &) - ?SetHandleTooltip@CXnNodePluginIf@@QAEXH@Z @ 143 NONAME ; void CXnNodePluginIf::SetHandleTooltip(int) - ??1CXnAppUiAdapter@@UAE@XZ @ 144 NONAME ; CXnAppUiAdapter::~CXnAppUiAdapter(void) - ?NewL@CXnControlAdapter@@SAPAV1@AAVCXnNodePluginIf@@@Z @ 145 NONAME ; class CXnControlAdapter * CXnControlAdapter::NewL(class CXnNodePluginIf &) - ?EnableLongTapAnimation@CXnControlAdapter@@QAEXH@Z @ 146 NONAME ; void CXnControlAdapter::EnableLongTapAnimation(int) - ?SetPaddingRect@CXnNodePluginIf@@QAEXABVTRect@@@Z @ 147 NONAME ; void CXnNodePluginIf::SetPaddingRect(class TRect const &) - ?SetFocusedNode@TXnUiEnginePluginIf@@QAEXPAVCXnNodePluginIf@@@Z @ 148 NONAME ; void TXnUiEnginePluginIf::SetFocusedNode(class CXnNodePluginIf *) - ?ExitPowerSaveModeL@CXnComponent@@UAEXXZ @ 149 NONAME ; void CXnComponent::ExitPowerSaveModeL(void) - ?EnableSwipeL@TXnUiEnginePluginIf@@QAEXH@Z @ 150 NONAME ; void TXnUiEnginePluginIf::EnableSwipeL(int) - ?GetPCData@CXnNodeAppIf@@QBEABVTDesC8@@XZ @ 151 NONAME ; class TDesC8 const & CXnNodeAppIf::GetPCData(void) const - ?Namespace@CXnNodeAppIf@@QAEABVTDesC8@@XZ @ 152 NONAME ; class TDesC8 const & CXnNodeAppIf::Namespace(void) - ??1CXnComponentNodeImpl@@UAE@XZ @ 153 NONAME ; CXnComponentNodeImpl::~CXnComponentNodeImpl(void) - ?SetPropertyWithoutNotificationL@CXnNodePluginIf@@QAEXPAVCXnProperty@@@Z @ 154 NONAME ; void CXnNodePluginIf::SetPropertyWithoutNotificationL(class CXnProperty *) - ?GetPCData@CXnNodePluginIf@@QBEABVTDesC8@@XZ @ 155 NONAME ; class TDesC8 const & CXnNodePluginIf::GetPCData(void) const - ?SetPCDataL@CXnNodeAppIf@@QAEXABVTDesC8@@@Z @ 156 NONAME ; void CXnNodeAppIf::SetPCDataL(class TDesC8 const &) - ?Resources@TXnUiEnginePluginIf@@QAEAAV?$CArrayPtrSeg@VCXnResource@@@@XZ @ 157 NONAME ; class CArrayPtrSeg & TXnUiEnginePluginIf::Resources(void) - ?SetContentBitmaps@CXnControlAdapter@@QAEXABVTDesC16@@0@Z @ 158 NONAME ; void CXnControlAdapter::SetContentBitmaps(class TDesC16 const &, class TDesC16 const &) - ??1CXnControlAdapter@@UAE@XZ @ 159 NONAME ; CXnControlAdapter::~CXnControlAdapter(void) - ??1MXnNodePredicate@@UAE@XZ @ 160 NONAME ; MXnNodePredicate::~MXnNodePredicate(void) - ?HorizontalTwipValueL@TXnUiEnginePluginIf@@QAEHPAVCXnProperty@@H@Z @ 161 NONAME ; int TXnUiEnginePluginIf::HorizontalTwipValueL(class CXnProperty *, int) - ?ConstructL@CXnAppUiAdapter@@UAEXXZ @ 162 NONAME ; void CXnAppUiAdapter::ConstructL(void) - ?CreateFontL@CXnUtils@@SAXAAVCXnNodePluginIf@@AAPAVCFont@@AAH@Z @ 163 NONAME ; void CXnUtils::CreateFontL(class CXnNodePluginIf &, class CFont * &, int &) - ??0CXnApplication@@QAE@VTUid@@@Z @ 164 NONAME ; CXnApplication::CXnApplication(class TUid) - ?ComponentControl@CXnControlAdapter@@MBEPAVCCoeControl@@H@Z @ 165 NONAME ; class CCoeControl * CXnControlAdapter::ComponentControl(int) const - ?HandleLongTapEventL@CXnControlAdapter@@UAEXABVTPoint@@0@Z @ 166 NONAME ; void CXnControlAdapter::HandleLongTapEventL(class TPoint const &, class TPoint const &) - ?ParentL@CXnNodeAppIf@@QBEPAV1@XZ @ 167 NONAME ; class CXnNodeAppIf * CXnNodeAppIf::ParentL(void) const - ??1CXnComponent@@UAE@XZ @ 168 NONAME ; CXnComponent::~CXnComponent(void) - ?ControlAdapter@CXnComponent@@QAEPAVCXnControlAdapter@@XZ @ 169 NONAME ; class CXnControlAdapter * CXnComponent::ControlAdapter(void) - ?DrawContentImage@CXnControlAdapter@@IBEXXZ @ 170 NONAME ; void CXnControlAdapter::DrawContentImage(void) const - ?Component@CXnComponentNodeImpl@@QAEPAVCXnComponent@@XZ @ 171 NONAME ; class CXnComponent * CXnComponentNodeImpl::Component(void) - ?WidgetsVisible@TXnUiEnginePluginIf@@QBEHXZ @ 172 NONAME ; int TXnUiEnginePluginIf::WidgetsVisible(void) const - ?SetControlAdapter@CXnComponent@@QAEXPAVCXnControlAdapter@@@Z @ 173 NONAME ; void CXnComponent::SetControlAdapter(class CXnControlAdapter *) - ?SetStateL@CXnNodePluginIf@@QAEXABVTDesC8@@@Z @ 174 NONAME ; void CXnNodePluginIf::SetStateL(class TDesC8 const &) - ?DoesComponentNeedCreation@CXnComponentNodeImpl@@QBEHXZ @ 175 NONAME ; int CXnComponentNodeImpl::DoesComponentNeedCreation(void) const - ??0CXnDocument@@QAE@AAVCEikApplication@@VTUid@@@Z @ 176 NONAME ; CXnDocument::CXnDocument(class CEikApplication &, class TUid) - ?FindNodeByClassL@TXnUiEnginePluginIf@@QAE?AV?$RPointerArray@VCXnNodePluginIf@@@@ABVTDesC16@@@Z @ 177 NONAME ; class RPointerArray TXnUiEnginePluginIf::FindNodeByClassL(class TDesC16 const &) - ?InternalDomNodeType@CXnNodeAppIf@@QBEABVTDesC8@@XZ @ 178 NONAME ; class TDesC8 const & CXnNodeAppIf::InternalDomNodeType(void) const - ?StringPool@TXnUiEnginePluginIf@@QAEAAVCXnDomStringPool@@XZ @ 179 NONAME ; class CXnDomStringPool & TXnUiEnginePluginIf::StringPool(void) - ?SetStateL@CXnNodeAppIf@@QAEXABVTDesC8@@@Z @ 180 NONAME ; void CXnNodeAppIf::SetStateL(class TDesC8 const &) - ?Type@CXnNodeAppIf@@QAEPAVCXnType@@XZ @ 181 NONAME ; class CXnType * CXnNodeAppIf::Type(void) - ?BorderRect@CXnNodeAppIf@@QAE?AVTRect@@XZ @ 182 NONAME ; class TRect CXnNodeAppIf::BorderRect(void) - ?IdL@CXnNodePluginIf@@QAEPAVCXnProperty@@XZ @ 183 NONAME ; class CXnProperty * CXnNodePluginIf::IdL(void) - ?RootNodeL@TXnUiEngineAppIf@@QAEAAVCXnNodeAppIf@@XZ @ 184 NONAME ; class CXnNodeAppIf & TXnUiEngineAppIf::RootNodeL(void) - ?CreateXnComponentL@MXnComponentFactory@@QAE?AW4TXnComponentFactoryResponse@1@AAVCXnNodePluginIf@@AAPAVCXnComponent@@@Z @ 185 NONAME ; enum MXnComponentFactory::TXnComponentFactoryResponse MXnComponentFactory::CreateXnComponentL(class CXnNodePluginIf &, class CXnComponent * &) - ?RefreshMenuL@TXnUiEngineAppIf@@QAEXXZ @ 186 NONAME ; void TXnUiEngineAppIf::RefreshMenuL(void) - ?PaddingRect@CXnNodePluginIf@@QAE?AVTRect@@XZ @ 187 NONAME ; class TRect CXnNodePluginIf::PaddingRect(void) - ?MeasureAdaptiveContentL@CXnControlAdapter@@UAE?AVTSize@@ABV2@@Z @ 188 NONAME ; class TSize CXnControlAdapter::MeasureAdaptiveContentL(class TSize const &) - ?NewL@CXnProperty@@SAPAV1@ABVTDesC8@@0W4TPrimitiveValueType@CXnDomPropertyValue@@AAVCXnDomStringPool@@@Z @ 189 NONAME ; class CXnProperty * CXnProperty::NewL(class TDesC8 const &, class TDesC8 const &, enum CXnDomPropertyValue::TPrimitiveValueType, class CXnDomStringPool &) - ?GetPropertyL@CXnNodePluginIf@@QBEPAVCXnProperty@@AAV2@@Z @ 190 NONAME ; class CXnProperty * CXnNodePluginIf::GetPropertyL(class CXnProperty &) const - ?HitRegion@TXnUiEnginePluginIf@@QBEPAVCXnControlAdapter@@XZ @ 191 NONAME ; class CXnControlAdapter * TXnUiEnginePluginIf::HitRegion(void) const - ?MarginRect@CXnNodeAppIf@@QAE?AVTRect@@XZ @ 192 NONAME ; class TRect CXnNodeAppIf::MarginRect(void) - ?MakeInterfaceL@CXnComponent@@UAEPAVMXnComponentInterface@XnComponentInterface@@ABVTDesC8@@@Z @ 193 NONAME ; class XnComponentInterface::MXnComponentInterface * CXnComponent::MakeInterfaceL(class TDesC8 const &) - ?EditMode@TXnUiEnginePluginIf@@QAEHXZ @ 194 NONAME ; int TXnUiEnginePluginIf::EditMode(void) - ?FindNodeByIdL@TXnUiEnginePluginIf@@QAEPAVCXnNodePluginIf@@ABVTDesC8@@0@Z @ 195 NONAME ; class CXnNodePluginIf * TXnUiEnginePluginIf::FindNodeByIdL(class TDesC8 const &, class TDesC8 const &) - ?EnableRenderUi@CXnUiEngineImpl@@CAXPAX@Z @ 196 NONAME ; void CXnUiEngineImpl::EnableRenderUi(void *) - ?IsMenuDisplaying@TXnUiEnginePluginIf@@QAEHXZ @ 197 NONAME ; int TXnUiEnginePluginIf::IsMenuDisplaying(void) - ?IsMenuDisplaying@TXnUiEngineAppIf@@QAEHXZ @ 198 NONAME ; int TXnUiEngineAppIf::IsMenuDisplaying(void) - ?NewL@CXnProperty@@SAPAV1@PAVCXnDomProperty@@@Z @ 199 NONAME ; class CXnProperty * CXnProperty::NewL(class CXnDomProperty *) - ?ConstructL@CXnComponentNodeImpl@@IAEXPAVCXnType@@@Z @ 200 NONAME ; void CXnComponentNodeImpl::ConstructL(class CXnType *) - ?ChildrenL@CXnNodeAppIf@@QAE?AV?$RPointerArray@VCXnNodeAppIf@@@@XZ @ 201 NONAME ; class RPointerArray CXnNodeAppIf::ChildrenL(void) - ?LoadPublisher@CXnAppUiAdapter@@UAEHAAVCXnNodeAppIf@@H@Z @ 202 NONAME ; int CXnAppUiAdapter::LoadPublisher(class CXnNodeAppIf &, int) - ?ConvertHslToRgb@CXnUtils@@SA?AVTRgb@@HHH@Z @ 203 NONAME ; class TRgb CXnUtils::ConvertHslToRgb(int, int, int) - ?LoadBitmap@CXnControlAdapter@@QAEPAVCFbsBitmap@@ABVTDesC16@@@Z @ 204 NONAME ; class CFbsBitmap * CXnControlAdapter::LoadBitmap(class TDesC16 const &) - ??0MXnComponentFactory@@IAE@XZ @ 205 NONAME ; MXnComponentFactory::MXnComponentFactory(void) - ?SetComponent@CXnViewsNodeImpl@@QAEXPAVCXnComponent@@@Z @ 206 NONAME ; void CXnViewsNodeImpl::SetComponent(class CXnComponent *) - ?BorderRect@CXnNodePluginIf@@QAE?AVTRect@@XZ @ 207 NONAME ; class TRect CXnNodePluginIf::BorderRect(void) - ?CreateDocumentL@CXnApplication@@MAEPAVCApaDocument@@XZ @ 208 NONAME ; class CApaDocument * CXnApplication::CreateDocumentL(void) - ?HandleUiReadyEventL@CXnAppUiAdapter@@UAEXXZ @ 209 NONAME ; void CXnAppUiAdapter::HandleUiReadyEventL(void) - ?CreateFontL@CXnUtils@@SAXABVTDesC16@@HVTFontStyle@@AAPAVCFont@@AAH@Z @ 210 NONAME ; void CXnUtils::CreateFontL(class TDesC16 const &, int, class TFontStyle, class CFont * &, int &) - ?GetPluginNodeArrayL@TXnUiEngineAppIf@@QAEHAAV?$RPointerArray@VCXnNodeAppIf@@@@@Z @ 211 NONAME ; int TXnUiEngineAppIf::GetPluginNodeArrayL(class RPointerArray &) - ?MakeXnControlAdapterL@MXnComponentFactory@@EAEPAVCXnControlAdapter@@AAVCXnNodePluginIf@@PAV2@@Z @ 212 NONAME ; class CXnControlAdapter * MXnComponentFactory::MakeXnControlAdapterL(class CXnNodePluginIf &, class CXnControlAdapter *) - ?IsDrawingAllowed@CXnNodePluginIf@@QBEHXZ @ 213 NONAME ; int CXnNodePluginIf::IsDrawingAllowed(void) const - ?MakeInterfaceL@CXnNodeAppIf@@QAEPAVMXnComponentInterface@XnComponentInterface@@ABVTDesC8@@@Z @ 214 NONAME ; class XnComponentInterface::MXnComponentInterface * CXnNodeAppIf::MakeInterfaceL(class TDesC8 const &) - ?VerticalTwipValueL@TXnUiEnginePluginIf@@QAEHPAVCXnProperty@@H@Z @ 215 NONAME ; int TXnUiEnginePluginIf::VerticalTwipValueL(class CXnProperty *, int) - ?Component@CXnControlAdapter@@QAEPAVCXnComponent@@XZ @ 216 NONAME ; class CXnComponent * CXnControlAdapter::Component(void) - ?FloatValueL@CXnProperty@@QAENXZ @ 217 NONAME ; double CXnProperty::FloatValueL(void) - ?SetUiEngine@TXnUiEngineAppIf@@QAEXPAVCXnUiEngine@@@Z @ 218 NONAME ; void TXnUiEngineAppIf::SetUiEngine(class CXnUiEngine *) - ?FindNodeByIdL@TXnUiEngineAppIf@@QAEPAVCXnNodeAppIf@@ABVTDesC16@@0@Z @ 219 NONAME ; class CXnNodeAppIf * TXnUiEngineAppIf::FindNodeByIdL(class TDesC16 const &, class TDesC16 const &) - ?IsEditMode@TXnUiEngineAppIf@@QAEHXZ @ 220 NONAME ; int TXnUiEngineAppIf::IsEditMode(void) - ?ResolveSkinItemIDL@CXnUtils@@SAHABVTDesC16@@AAVTAknsItemID@@AAH@Z @ 221 NONAME ; int CXnUtils::ResolveSkinItemIDL(class TDesC16 const &, class TAknsItemID &, int &) - ?EnablePartialTouchInput@TXnUiEnginePluginIf@@QAEXAAVCXnNodePluginIf@@H@Z @ 222 NONAME ; void TXnUiEnginePluginIf::EnablePartialTouchInput(class CXnNodePluginIf &, int) - ?RootNodeL@TXnUiEnginePluginIf@@QAEAAVCXnNodePluginIf@@XZ @ 223 NONAME ; class CXnNodePluginIf & TXnUiEnginePluginIf::RootNodeL(void) - ?CreateAppUiL@CXnDocument@@UAEPAVCEikAppUi@@XZ @ 224 NONAME ; class CEikAppUi * CXnDocument::CreateAppUiL(void) - ?PathL@CXnNodePluginIf@@QAEPAVCXnProperty@@XZ @ 225 NONAME ; class CXnProperty * CXnNodePluginIf::PathL(void) - ?NewL@CXnProperty@@SAPAV1@ABVTDesC8@@NW4TPrimitiveValueType@CXnDomPropertyValue@@AAVCXnDomStringPool@@@Z @ 226 NONAME ; class CXnProperty * CXnProperty::NewL(class TDesC8 const &, double, enum CXnDomPropertyValue::TPrimitiveValueType, class CXnDomStringPool &) - ?MaskPathL@CXnNodePluginIf@@QAEPAVCXnProperty@@XZ @ 227 NONAME ; class CXnProperty * CXnNodePluginIf::MaskPathL(void) - ?AppDllUid@CXnApplication@@MBE?AVTUid@@XZ @ 228 NONAME ; class TUid CXnApplication::AppDllUid(void) const - ?DoExitPowerSaveModeL@CXnControlAdapter@@UAEXW4TModeEvent@1@@Z @ 229 NONAME ; void CXnControlAdapter::DoExitPowerSaveModeL(enum CXnControlAdapter::TModeEvent) - ?LabelL@CXnNodePluginIf@@QAEPAVCXnProperty@@XZ @ 230 NONAME ; class CXnProperty * CXnNodePluginIf::LabelL(void) - ?Component@CXnViewsNodeImpl@@QAEPAVCXnComponent@@XZ @ 231 NONAME ; class CXnComponent * CXnViewsNodeImpl::Component(void) - ?GetRgbValue@CXnUtils@@SAHAAVTRgb@@ABVTDesC8@@@Z @ 232 NONAME ; int CXnUtils::GetRgbValue(class TRgb &, class TDesC8 const &) - ?StringValue@CXnProperty@@QAEABVTDesC8@@XZ @ 233 NONAME ; class TDesC8 const & CXnProperty::StringValue(void) - ?SetVisible@CXnControlAdapter@@QAEXH@Z @ 234 NONAME ; void CXnControlAdapter::SetVisible(int) - ?Node@CXnComponent@@QAEPAVCXnNodePluginIf@@XZ @ 235 NONAME ; class CXnNodePluginIf * CXnComponent::Node(void) + ?ExitPowerSaveModeL@CXnControlAdapter@@QAEXW4TModeEvent@1@@Z @ 63 NONAME ; void CXnControlAdapter::ExitPowerSaveModeL(enum CXnControlAdapter::TModeEvent) + ?GetThemeResource@TXnUiEngineAppIf@@QAEHABVTDesC16@@AAVRFile@@@Z @ 64 NONAME ; int TXnUiEngineAppIf::GetThemeResource(class TDesC16 const &, class RFile &) + ?ConstructL@CXnComponent@@IAEXXZ @ 65 NONAME ; void CXnComponent::ConstructL(void) + ?FindResource@CXnUtils@@SAPAVCXnResource@@AAV?$CArrayPtrSeg@VCXnResource@@@@ABVTDesC16@@AAH@Z @ 66 NONAME ; class CXnResource * CXnUtils::FindResource(class CArrayPtrSeg &, class TDesC16 const &, int &) + ?UnsetStateL@CXnNodeAppIf@@QAEXABVTDesC8@@@Z @ 67 NONAME ; void CXnNodeAppIf::UnsetStateL(class TDesC8 const &) + ?Uid@CXnDocument@@QAE?AVTUid@@XZ @ 68 NONAME ; class TUid CXnDocument::Uid(void) + ?FocusChanged@CXnControlAdapter@@UAEXW4TDrawNow@@@Z @ 69 NONAME ; void CXnControlAdapter::FocusChanged(enum TDrawNow) + ?SetBlank@CXnControlAdapter@@QAEXH@Z @ 70 NONAME ; void CXnControlAdapter::SetBlank(int) + ?ProcessMessageL@CXnAppUiAdapter@@UAEXVTUid@@ABVTDesC8@@@Z @ 71 NONAME ; void CXnAppUiAdapter::ProcessMessageL(class TUid, class TDesC8 const &) + ?Component@CXnNodeAppIf@@QAEAAVCXnComponent@@XZ @ 72 NONAME ; class CXnComponent & CXnNodeAppIf::Component(void) + ?SetLayoutCapable@CXnNodePluginIf@@QAEXH@Z @ 73 NONAME ; void CXnNodePluginIf::SetLayoutCapable(int) + ?MarginRect@CXnNodePluginIf@@QAE?AVTRect@@XZ @ 74 NONAME ; class TRect CXnNodePluginIf::MarginRect(void) + ?UiEngineL@CXnAppUiAdapter@@QAEPAVTXnUiEngineAppIf@@XZ @ 75 NONAME ; class TXnUiEngineAppIf * CXnAppUiAdapter::UiEngineL(void) + ?ActiveView@TXnUiEngineAppIf@@QAEPAVCXnNodeAppIf@@XZ @ 76 NONAME ; class CXnNodeAppIf * TXnUiEngineAppIf::ActiveView(void) + ?HandleXuikonEventL@CXnAppUiAdapter@@UAEXAAVCXnNodeAppIf@@0AAVCXnDomNode@@1@Z @ 77 NONAME ; void CXnAppUiAdapter::HandleXuikonEventL(class CXnNodeAppIf &, class CXnNodeAppIf &, class CXnDomNode &, class CXnDomNode &) + ?RenderUIL@TXnUiEngineAppIf@@QAEXPAVCXnNodeAppIf@@@Z @ 78 NONAME ; void TXnUiEngineAppIf::RenderUIL(class CXnNodeAppIf *) + ?PrepareToExit@CXnAppUiAdapter@@MAEXXZ @ 79 NONAME ; void CXnAppUiAdapter::PrepareToExit(void) + ?DoHandlePropertyChangeL@CXnControlAdapter@@UAEXPAVCXnProperty@@@Z @ 80 NONAME ; void CXnControlAdapter::DoHandlePropertyChangeL(class CXnProperty *) + ?ConstructL@CXnControlAdapter@@IAEXAAVCXnNodePluginIf@@@Z @ 81 NONAME ; void CXnControlAdapter::ConstructL(class CXnNodePluginIf &) + ?FocusedNode@TXnUiEngineAppIf@@QAEPAVCXnNodeAppIf@@XZ @ 82 NONAME ; class CXnNodeAppIf * TXnUiEngineAppIf::FocusedNode(void) + ?SetDataL@CXnComponent@@QAEXABVTDesC8@@ABVTDesC16@@H@Z @ 83 NONAME ; void CXnComponent::SetDataL(class TDesC8 const &, class TDesC16 const &, int) + ?OfferKeyEventL@CXnControlAdapter@@UAE?AW4TKeyResponse@@ABUTKeyEvent@@W4TEventCode@@@Z @ 84 NONAME ; enum TKeyResponse CXnControlAdapter::OfferKeyEventL(struct TKeyEvent const &, enum TEventCode) + ?IsDrawingAllowed@CXnControlAdapter@@QBEHXZ @ 85 NONAME ; int CXnControlAdapter::IsDrawingAllowed(void) const + ?DisplayL@CXnNodePluginIf@@QAEPAVCXnProperty@@XZ @ 86 NONAME ; class CXnProperty * CXnNodePluginIf::DisplayL(void) + ?NewL@CXnProperty@@SAPAV1@ABVTDesC8@@PAVCXnDomPropertyValue@@AAVCXnDomStringPool@@@Z @ 87 NONAME ; class CXnProperty * CXnProperty::NewL(class TDesC8 const &, class CXnDomPropertyValue *, class CXnDomStringPool &) + ?Rect@CXnNodeAppIf@@QAE?AVTRect@@XZ @ 88 NONAME ; class TRect CXnNodeAppIf::Rect(void) + ?NewL@CXnComponentNodeImpl@@SAPAV1@PAVCXnType@@@Z @ 89 NONAME ; class CXnComponentNodeImpl * CXnComponentNodeImpl::NewL(class CXnType *) + ?WidgetsVisible@TXnUiEngineAppIf@@QBEHXZ @ 90 NONAME ; int TXnUiEngineAppIf::WidgetsVisible(void) const + ?Type@CXnNodePluginIf@@QAEPAVCXnType@@XZ @ 91 NONAME ; class CXnType * CXnNodePluginIf::Type(void) + ?MakeXnComponentL@MXnComponentFactory@@EAE?AW4TXnComponentFactoryResponse@1@AAVCXnNodePluginIf@@AAPAVCXnComponent@@@Z @ 92 NONAME ; enum MXnComponentFactory::TXnComponentFactoryResponse MXnComponentFactory::MakeXnComponentL(class CXnNodePluginIf &, class CXnComponent * &) + ?UnsetStateL@CXnNodePluginIf@@QAEXABVTDesC8@@@Z @ 93 NONAME ; void CXnNodePluginIf::UnsetStateL(class TDesC8 const &) + ?StringValueL@CXnProperty@@QAEPAVHBufC16@@XZ @ 94 NONAME ; class HBufC16 * CXnProperty::StringValueL(void) + ?DisableRenderUiLC@TXnUiEnginePluginIf@@QAEXXZ @ 95 NONAME ; void TXnUiEnginePluginIf::DisableRenderUiLC(void) + ?SetPropertyL@CXnNodeAppIf@@QAEXPAVCXnProperty@@@Z @ 96 NONAME ; void CXnNodeAppIf::SetPropertyL(class CXnProperty *) + ?View@CXnAppUiAdapter@@QBEAAVCAknView@@XZ @ 97 NONAME ; class CAknView & CXnAppUiAdapter::View(void) const + ?ViewNodeImpl@CXnNodePluginIf@@QAEPAVCXnViewNodeImpl@@XZ @ 98 NONAME ; class CXnViewNodeImpl * CXnNodePluginIf::ViewNodeImpl(void) + ?StripQuotes@CXnUtils@@SAXAAPAVHBufC16@@@Z @ 99 NONAME ; void CXnUtils::StripQuotes(class HBufC16 * &) + ?SetPCDataL@CXnNodePluginIf@@QAEXABVTDesC8@@@Z @ 100 NONAME ; void CXnNodePluginIf::SetPCDataL(class TDesC8 const &) + ?VisibilityL@CXnNodePluginIf@@QAEPAVCXnProperty@@XZ @ 101 NONAME ; class CXnProperty * CXnNodePluginIf::VisibilityL(void) + ?Draw@CXnControlAdapter@@MBEXABVTRect@@@Z @ 102 NONAME ; void CXnControlAdapter::Draw(class TRect const &) const + ??1CXnApplication@@UAE@XZ @ 103 NONAME ; CXnApplication::~CXnApplication(void) + ?DoesNodeNeedComponentImplL@MXnComponentFactory@@QAEHABVTDesC8@@@Z @ 104 NONAME ; int MXnComponentFactory::DoesNodeNeedComponentImplL(class TDesC8 const &) + ?ConstructL@CXnViewsNodeImpl@@IAEXPAVCXnType@@@Z @ 105 NONAME ; void CXnViewsNodeImpl::ConstructL(class CXnType *) + ?StringPool@TXnUiEngineAppIf@@QAEAAVCXnDomStringPool@@XZ @ 106 NONAME ; class CXnDomStringPool & TXnUiEngineAppIf::StringPool(void) + ?UiEngineL@CXnNodePluginIf@@QAEPAVTXnUiEnginePluginIf@@XZ @ 107 NONAME ; class TXnUiEnginePluginIf * CXnNodePluginIf::UiEngineL(void) + ?ResolveSkinItemIDL@CXnUtils@@SAHABVTDesC16@@AAVTAknsItemID@@@Z @ 108 NONAME ; int CXnUtils::ResolveSkinItemIDL(class TDesC16 const &, class TAknsItemID &) + ?PluginNodeL@TXnUiEnginePluginIf@@QAEAAVCXnNodePluginIf@@PAV2@@Z @ 109 NONAME ; class CXnNodePluginIf & TXnUiEnginePluginIf::PluginNodeL(class CXnNodePluginIf *) + ?VerticalPixelValueL@TXnUiEnginePluginIf@@QAEHPAVCXnProperty@@H@Z @ 110 NONAME ; int TXnUiEnginePluginIf::VerticalPixelValueL(class CXnProperty *, int) + ?SetComponent@CXnControlAdapter@@QAEXPAVCXnComponent@@@Z @ 111 NONAME ; void CXnControlAdapter::SetComponent(class CXnComponent *) + ??0MXnNodePredicate@@QAE@XZ @ 112 NONAME ; MXnNodePredicate::MXnNodePredicate(void) + ??1CXnViewsNodeImpl@@UAE@XZ @ 113 NONAME ; CXnViewsNodeImpl::~CXnViewsNodeImpl(void) + ?HandleControlEventL@CXnControlAdapter@@UAEXPAVCCoeControl@@W4TCoeEvent@MCoeControlObserver@@@Z @ 114 NONAME ; void CXnControlAdapter::HandleControlEventL(class CCoeControl *, enum MCoeControlObserver::TCoeEvent) + ?HandleScreenDeviceChangedL@CXnControlAdapter@@UAEXXZ @ 115 NONAME ; void CXnControlAdapter::HandleScreenDeviceChangedL(void) + ?SizeChanged@CXnControlAdapter@@MAEXXZ @ 116 NONAME ; void CXnControlAdapter::SizeChanged(void) + ?CountComponentControls@CXnControlAdapter@@MBEHXZ @ 117 NONAME ; int CXnControlAdapter::CountComponentControls(void) const + ?HideTooltipsL@CXnNodeAppIf@@QAEXXZ @ 118 NONAME ; void CXnNodeAppIf::HideTooltipsL(void) + ?GetPropertyL@CXnNodeAppIf@@QBEPAVCXnProperty@@ABVTDesC8@@@Z @ 119 NONAME ; class CXnProperty * CXnNodeAppIf::GetPropertyL(class TDesC8 const &) const + ?FindNodeByClassL@TXnUiEngineAppIf@@QAE?AV?$RPointerArray@VCXnNodeAppIf@@@@ABVTDesC8@@0@Z @ 120 NONAME ; class RPointerArray TXnUiEngineAppIf::FindNodeByClassL(class TDesC8 const &, class TDesC8 const &) + ?Match@MXnNodePredicate@@UAEHAAVCXnNode@@@Z @ 121 NONAME ; int MXnNodePredicate::Match(class CXnNode &) + ?GetBitmapAndMask@CXnControlAdapter@@QAEXABVTDesC16@@0AAPAVCFbsBitmap@@1@Z @ 122 NONAME ; void CXnControlAdapter::GetBitmapAndMask(class TDesC16 const &, class TDesC16 const &, class CFbsBitmap * &, class CFbsBitmap * &) + ?NewL@CXnViewsNodeImpl@@SAPAV1@PAVCXnType@@@Z @ 123 NONAME ; class CXnViewsNodeImpl * CXnViewsNodeImpl::NewL(class CXnType *) + ?PaddingRect@CXnNodeAppIf@@QAE?AVTRect@@XZ @ 124 NONAME ; class TRect CXnNodeAppIf::PaddingRect(void) + ?SetMarginRect@CXnNodePluginIf@@QAEXABVTRect@@@Z @ 125 NONAME ; void CXnNodePluginIf::SetMarginRect(class TRect const &) + ?IsDialogDisplaying@TXnUiEnginePluginIf@@QAEHXZ @ 126 NONAME ; int TXnUiEnginePluginIf::IsDialogDisplaying(void) + ?HandleEventL@CXnAppUiAdapter@@UAEXABVTDesC16@@AAVCXnNodeAppIf@@@Z @ 127 NONAME ; void CXnAppUiAdapter::HandleEventL(class TDesC16 const &, class CXnNodeAppIf &) + ?GetPropertyL@CXnNodePluginIf@@QBEPAVCXnProperty@@ABVTDesC8@@@Z @ 128 NONAME ; class CXnProperty * CXnNodePluginIf::GetPropertyL(class TDesC8 const &) const + ?SetPropertyArrayL@CXnNodeAppIf@@QAEXPAV?$RPointerArray@VCXnProperty@@@@@Z @ 129 NONAME ; void CXnNodeAppIf::SetPropertyArrayL(class RPointerArray *) + ?RemoveViewL@CXnAppUiAdapter@@QAEXAAVCAknView@@@Z @ 130 NONAME ; void CXnAppUiAdapter::RemoveViewL(class CAknView &) + ?EnterPowerSaveModeL@CXnComponent@@UAEXXZ @ 131 NONAME ; void CXnComponent::EnterPowerSaveModeL(void) + ?SetRect@CXnNodePluginIf@@QAEXABVTRect@@@Z @ 132 NONAME ; void CXnNodePluginIf::SetRect(class TRect const &) + ??0CXnComponent@@IAE@XZ @ 133 NONAME ; CXnComponent::CXnComponent(void) + ?CollapseWhiteSpace@CXnUtils@@SAXAAVCXnNodePluginIf@@AAVTDes16@@@Z @ 134 NONAME ; void CXnUtils::CollapseWhiteSpace(class CXnNodePluginIf &, class TDes16 &) + ?SetHandleTooltip@CXnNodePluginIf@@QAEXH@Z @ 135 NONAME ; void CXnNodePluginIf::SetHandleTooltip(int) + ??1CXnAppUiAdapter@@UAE@XZ @ 136 NONAME ; CXnAppUiAdapter::~CXnAppUiAdapter(void) + ?NewL@CXnControlAdapter@@SAPAV1@AAVCXnNodePluginIf@@@Z @ 137 NONAME ; class CXnControlAdapter * CXnControlAdapter::NewL(class CXnNodePluginIf &) + ?EnableLongTapAnimation@CXnControlAdapter@@QAEXH@Z @ 138 NONAME ; void CXnControlAdapter::EnableLongTapAnimation(int) + ?SetPaddingRect@CXnNodePluginIf@@QAEXABVTRect@@@Z @ 139 NONAME ; void CXnNodePluginIf::SetPaddingRect(class TRect const &) + ?SetFocusedNode@TXnUiEnginePluginIf@@QAEXPAVCXnNodePluginIf@@@Z @ 140 NONAME ; void TXnUiEnginePluginIf::SetFocusedNode(class CXnNodePluginIf *) + ?ExitPowerSaveModeL@CXnComponent@@UAEXXZ @ 141 NONAME ; void CXnComponent::ExitPowerSaveModeL(void) + ?GetPCData@CXnNodeAppIf@@QBEABVTDesC8@@XZ @ 142 NONAME ; class TDesC8 const & CXnNodeAppIf::GetPCData(void) const + ?Namespace@CXnNodeAppIf@@QAEABVTDesC8@@XZ @ 143 NONAME ; class TDesC8 const & CXnNodeAppIf::Namespace(void) + ??1CXnComponentNodeImpl@@UAE@XZ @ 144 NONAME ; CXnComponentNodeImpl::~CXnComponentNodeImpl(void) + ?SetPropertyWithoutNotificationL@CXnNodePluginIf@@QAEXPAVCXnProperty@@@Z @ 145 NONAME ; void CXnNodePluginIf::SetPropertyWithoutNotificationL(class CXnProperty *) + ?GetPCData@CXnNodePluginIf@@QBEABVTDesC8@@XZ @ 146 NONAME ; class TDesC8 const & CXnNodePluginIf::GetPCData(void) const + ?SetPCDataL@CXnNodeAppIf@@QAEXABVTDesC8@@@Z @ 147 NONAME ; void CXnNodeAppIf::SetPCDataL(class TDesC8 const &) + ?Resources@TXnUiEnginePluginIf@@QAEAAV?$CArrayPtrSeg@VCXnResource@@@@XZ @ 148 NONAME ; class CArrayPtrSeg & TXnUiEnginePluginIf::Resources(void) + ?SetContentBitmaps@CXnControlAdapter@@QAEXABVTDesC16@@0@Z @ 149 NONAME ; void CXnControlAdapter::SetContentBitmaps(class TDesC16 const &, class TDesC16 const &) + ??1CXnControlAdapter@@UAE@XZ @ 150 NONAME ; CXnControlAdapter::~CXnControlAdapter(void) + ??1MXnNodePredicate@@UAE@XZ @ 151 NONAME ; MXnNodePredicate::~MXnNodePredicate(void) + ?HorizontalTwipValueL@TXnUiEnginePluginIf@@QAEHPAVCXnProperty@@H@Z @ 152 NONAME ; int TXnUiEnginePluginIf::HorizontalTwipValueL(class CXnProperty *, int) + ?ConstructL@CXnAppUiAdapter@@UAEXXZ @ 153 NONAME ; void CXnAppUiAdapter::ConstructL(void) + ?CreateFontL@CXnUtils@@SAXAAVCXnNodePluginIf@@AAPAVCFont@@AAH@Z @ 154 NONAME ; void CXnUtils::CreateFontL(class CXnNodePluginIf &, class CFont * &, int &) + ??0CXnApplication@@QAE@VTUid@@@Z @ 155 NONAME ; CXnApplication::CXnApplication(class TUid) + ?ComponentControl@CXnControlAdapter@@MBEPAVCCoeControl@@H@Z @ 156 NONAME ; class CCoeControl * CXnControlAdapter::ComponentControl(int) const + ?HandleLongTapEventL@CXnControlAdapter@@UAEXABVTPoint@@0@Z @ 157 NONAME ; void CXnControlAdapter::HandleLongTapEventL(class TPoint const &, class TPoint const &) + ?ParentL@CXnNodeAppIf@@QBEPAV1@XZ @ 158 NONAME ; class CXnNodeAppIf * CXnNodeAppIf::ParentL(void) const + ??1CXnComponent@@UAE@XZ @ 159 NONAME ; CXnComponent::~CXnComponent(void) + ?ControlAdapter@CXnComponent@@QAEPAVCXnControlAdapter@@XZ @ 160 NONAME ; class CXnControlAdapter * CXnComponent::ControlAdapter(void) + ?DrawContentImage@CXnControlAdapter@@IBEXXZ @ 161 NONAME ; void CXnControlAdapter::DrawContentImage(void) const + ?Component@CXnComponentNodeImpl@@QAEPAVCXnComponent@@XZ @ 162 NONAME ; class CXnComponent * CXnComponentNodeImpl::Component(void) + ?WidgetsVisible@TXnUiEnginePluginIf@@QBEHXZ @ 163 NONAME ; int TXnUiEnginePluginIf::WidgetsVisible(void) const + ?SetControlAdapter@CXnComponent@@QAEXPAVCXnControlAdapter@@@Z @ 164 NONAME ; void CXnComponent::SetControlAdapter(class CXnControlAdapter *) + ?SetStateL@CXnNodePluginIf@@QAEXABVTDesC8@@@Z @ 165 NONAME ; void CXnNodePluginIf::SetStateL(class TDesC8 const &) + ?DoesComponentNeedCreation@CXnComponentNodeImpl@@QBEHXZ @ 166 NONAME ; int CXnComponentNodeImpl::DoesComponentNeedCreation(void) const + ??0CXnDocument@@QAE@AAVCEikApplication@@VTUid@@@Z @ 167 NONAME ; CXnDocument::CXnDocument(class CEikApplication &, class TUid) + ?FindNodeByClassL@TXnUiEnginePluginIf@@QAE?AV?$RPointerArray@VCXnNodePluginIf@@@@ABVTDesC16@@@Z @ 168 NONAME ; class RPointerArray TXnUiEnginePluginIf::FindNodeByClassL(class TDesC16 const &) + ?InternalDomNodeType@CXnNodeAppIf@@QBEABVTDesC8@@XZ @ 169 NONAME ; class TDesC8 const & CXnNodeAppIf::InternalDomNodeType(void) const + ?StringPool@TXnUiEnginePluginIf@@QAEAAVCXnDomStringPool@@XZ @ 170 NONAME ; class CXnDomStringPool & TXnUiEnginePluginIf::StringPool(void) + ?SetStateL@CXnNodeAppIf@@QAEXABVTDesC8@@@Z @ 171 NONAME ; void CXnNodeAppIf::SetStateL(class TDesC8 const &) + ?Type@CXnNodeAppIf@@QAEPAVCXnType@@XZ @ 172 NONAME ; class CXnType * CXnNodeAppIf::Type(void) + ?BorderRect@CXnNodeAppIf@@QAE?AVTRect@@XZ @ 173 NONAME ; class TRect CXnNodeAppIf::BorderRect(void) + ?IdL@CXnNodePluginIf@@QAEPAVCXnProperty@@XZ @ 174 NONAME ; class CXnProperty * CXnNodePluginIf::IdL(void) + ?RootNodeL@TXnUiEngineAppIf@@QAEAAVCXnNodeAppIf@@XZ @ 175 NONAME ; class CXnNodeAppIf & TXnUiEngineAppIf::RootNodeL(void) + ?CreateXnComponentL@MXnComponentFactory@@QAE?AW4TXnComponentFactoryResponse@1@AAVCXnNodePluginIf@@AAPAVCXnComponent@@@Z @ 176 NONAME ; enum MXnComponentFactory::TXnComponentFactoryResponse MXnComponentFactory::CreateXnComponentL(class CXnNodePluginIf &, class CXnComponent * &) + ?RefreshMenuL@TXnUiEngineAppIf@@QAEXXZ @ 177 NONAME ; void TXnUiEngineAppIf::RefreshMenuL(void) + ?PaddingRect@CXnNodePluginIf@@QAE?AVTRect@@XZ @ 178 NONAME ; class TRect CXnNodePluginIf::PaddingRect(void) + ?MeasureAdaptiveContentL@CXnControlAdapter@@UAE?AVTSize@@ABV2@@Z @ 179 NONAME ; class TSize CXnControlAdapter::MeasureAdaptiveContentL(class TSize const &) + ?NewL@CXnProperty@@SAPAV1@ABVTDesC8@@0W4TPrimitiveValueType@CXnDomPropertyValue@@AAVCXnDomStringPool@@@Z @ 180 NONAME ; class CXnProperty * CXnProperty::NewL(class TDesC8 const &, class TDesC8 const &, enum CXnDomPropertyValue::TPrimitiveValueType, class CXnDomStringPool &) + ?GetPropertyL@CXnNodePluginIf@@QBEPAVCXnProperty@@AAV2@@Z @ 181 NONAME ; class CXnProperty * CXnNodePluginIf::GetPropertyL(class CXnProperty &) const + ?MarginRect@CXnNodeAppIf@@QAE?AVTRect@@XZ @ 182 NONAME ; class TRect CXnNodeAppIf::MarginRect(void) + ?EditMode@TXnUiEnginePluginIf@@QAEHXZ @ 183 NONAME ; int TXnUiEnginePluginIf::EditMode(void) + ?FindNodeByIdL@TXnUiEnginePluginIf@@QAEPAVCXnNodePluginIf@@ABVTDesC8@@0@Z @ 184 NONAME ; class CXnNodePluginIf * TXnUiEnginePluginIf::FindNodeByIdL(class TDesC8 const &, class TDesC8 const &) + ?MakeInterfaceL@CXnComponent@@UAEPAVMXnComponentInterface@XnComponentInterface@@ABVTDesC8@@@Z @ 185 NONAME ; class XnComponentInterface::MXnComponentInterface * CXnComponent::MakeInterfaceL(class TDesC8 const &) + ?EnableRenderUi@CXnUiEngineImpl@@CAXPAX@Z @ 186 NONAME ; void CXnUiEngineImpl::EnableRenderUi(void *) + ?IsMenuDisplaying@TXnUiEnginePluginIf@@QAEHXZ @ 187 NONAME ; int TXnUiEnginePluginIf::IsMenuDisplaying(void) + ?IsMenuDisplaying@TXnUiEngineAppIf@@QAEHXZ @ 188 NONAME ; int TXnUiEngineAppIf::IsMenuDisplaying(void) + ?NewL@CXnProperty@@SAPAV1@PAVCXnDomProperty@@@Z @ 189 NONAME ; class CXnProperty * CXnProperty::NewL(class CXnDomProperty *) + ?ConstructL@CXnComponentNodeImpl@@IAEXPAVCXnType@@@Z @ 190 NONAME ; void CXnComponentNodeImpl::ConstructL(class CXnType *) + ?ChildrenL@CXnNodeAppIf@@QAE?AV?$RPointerArray@VCXnNodeAppIf@@@@XZ @ 191 NONAME ; class RPointerArray CXnNodeAppIf::ChildrenL(void) + ?ConvertHslToRgb@CXnUtils@@SA?AVTRgb@@HHH@Z @ 192 NONAME ; class TRgb CXnUtils::ConvertHslToRgb(int, int, int) + ?LoadPublisher@CXnAppUiAdapter@@UAEHAAVCXnNodeAppIf@@H@Z @ 193 NONAME ; int CXnAppUiAdapter::LoadPublisher(class CXnNodeAppIf &, int) + ?LoadBitmap@CXnControlAdapter@@QAEPAVCFbsBitmap@@ABVTDesC16@@@Z @ 194 NONAME ; class CFbsBitmap * CXnControlAdapter::LoadBitmap(class TDesC16 const &) + ??0MXnComponentFactory@@IAE@XZ @ 195 NONAME ; MXnComponentFactory::MXnComponentFactory(void) + ?SetComponent@CXnViewsNodeImpl@@QAEXPAVCXnComponent@@@Z @ 196 NONAME ; void CXnViewsNodeImpl::SetComponent(class CXnComponent *) + ?BorderRect@CXnNodePluginIf@@QAE?AVTRect@@XZ @ 197 NONAME ; class TRect CXnNodePluginIf::BorderRect(void) + ?CreateDocumentL@CXnApplication@@MAEPAVCApaDocument@@XZ @ 198 NONAME ; class CApaDocument * CXnApplication::CreateDocumentL(void) + ?HandleUiReadyEventL@CXnAppUiAdapter@@UAEXXZ @ 199 NONAME ; void CXnAppUiAdapter::HandleUiReadyEventL(void) + ?CreateFontL@CXnUtils@@SAXABVTDesC16@@HVTFontStyle@@AAPAVCFont@@AAH@Z @ 200 NONAME ; void CXnUtils::CreateFontL(class TDesC16 const &, int, class TFontStyle, class CFont * &, int &) + ?GetPluginNodeArrayL@TXnUiEngineAppIf@@QAEHAAV?$RPointerArray@VCXnNodeAppIf@@@@@Z @ 201 NONAME ; int TXnUiEngineAppIf::GetPluginNodeArrayL(class RPointerArray &) + ?MakeXnControlAdapterL@MXnComponentFactory@@EAEPAVCXnControlAdapter@@AAVCXnNodePluginIf@@PAV2@@Z @ 202 NONAME ; class CXnControlAdapter * MXnComponentFactory::MakeXnControlAdapterL(class CXnNodePluginIf &, class CXnControlAdapter *) + ?IsDrawingAllowed@CXnNodePluginIf@@QBEHXZ @ 203 NONAME ; int CXnNodePluginIf::IsDrawingAllowed(void) const + ?MakeInterfaceL@CXnNodeAppIf@@QAEPAVMXnComponentInterface@XnComponentInterface@@ABVTDesC8@@@Z @ 204 NONAME ; class XnComponentInterface::MXnComponentInterface * CXnNodeAppIf::MakeInterfaceL(class TDesC8 const &) + ?VerticalTwipValueL@TXnUiEnginePluginIf@@QAEHPAVCXnProperty@@H@Z @ 205 NONAME ; int TXnUiEnginePluginIf::VerticalTwipValueL(class CXnProperty *, int) + ?Component@CXnControlAdapter@@QAEPAVCXnComponent@@XZ @ 206 NONAME ; class CXnComponent * CXnControlAdapter::Component(void) + ?FloatValueL@CXnProperty@@QAENXZ @ 207 NONAME ; double CXnProperty::FloatValueL(void) + ?SetUiEngine@TXnUiEngineAppIf@@QAEXPAVCXnUiEngine@@@Z @ 208 NONAME ; void TXnUiEngineAppIf::SetUiEngine(class CXnUiEngine *) + ?FindNodeByIdL@TXnUiEngineAppIf@@QAEPAVCXnNodeAppIf@@ABVTDesC16@@0@Z @ 209 NONAME ; class CXnNodeAppIf * TXnUiEngineAppIf::FindNodeByIdL(class TDesC16 const &, class TDesC16 const &) + ?IsEditMode@TXnUiEngineAppIf@@QAEHXZ @ 210 NONAME ; int TXnUiEngineAppIf::IsEditMode(void) + ?ResolveSkinItemIDL@CXnUtils@@SAHABVTDesC16@@AAVTAknsItemID@@AAH@Z @ 211 NONAME ; int CXnUtils::ResolveSkinItemIDL(class TDesC16 const &, class TAknsItemID &, int &) + ?EnablePartialTouchInput@TXnUiEnginePluginIf@@QAEXAAVCXnNodePluginIf@@H@Z @ 212 NONAME ; void TXnUiEnginePluginIf::EnablePartialTouchInput(class CXnNodePluginIf &, int) + ?RootNodeL@TXnUiEnginePluginIf@@QAEAAVCXnNodePluginIf@@XZ @ 213 NONAME ; class CXnNodePluginIf & TXnUiEnginePluginIf::RootNodeL(void) + ?CreateAppUiL@CXnDocument@@UAEPAVCEikAppUi@@XZ @ 214 NONAME ; class CEikAppUi * CXnDocument::CreateAppUiL(void) + ?PathL@CXnNodePluginIf@@QAEPAVCXnProperty@@XZ @ 215 NONAME ; class CXnProperty * CXnNodePluginIf::PathL(void) + ?NewL@CXnProperty@@SAPAV1@ABVTDesC8@@NW4TPrimitiveValueType@CXnDomPropertyValue@@AAVCXnDomStringPool@@@Z @ 216 NONAME ; class CXnProperty * CXnProperty::NewL(class TDesC8 const &, double, enum CXnDomPropertyValue::TPrimitiveValueType, class CXnDomStringPool &) + ?MaskPathL@CXnNodePluginIf@@QAEPAVCXnProperty@@XZ @ 217 NONAME ; class CXnProperty * CXnNodePluginIf::MaskPathL(void) + ?AppDllUid@CXnApplication@@MBE?AVTUid@@XZ @ 218 NONAME ; class TUid CXnApplication::AppDllUid(void) const + ?DoExitPowerSaveModeL@CXnControlAdapter@@UAEXW4TModeEvent@1@@Z @ 219 NONAME ; void CXnControlAdapter::DoExitPowerSaveModeL(enum CXnControlAdapter::TModeEvent) + ?LabelL@CXnNodePluginIf@@QAEPAVCXnProperty@@XZ @ 220 NONAME ; class CXnProperty * CXnNodePluginIf::LabelL(void) + ?Component@CXnViewsNodeImpl@@QAEPAVCXnComponent@@XZ @ 221 NONAME ; class CXnComponent * CXnViewsNodeImpl::Component(void) + ?GetRgbValue@CXnUtils@@SAHAAVTRgb@@ABVTDesC8@@@Z @ 222 NONAME ; int CXnUtils::GetRgbValue(class TRgb &, class TDesC8 const &) + ?StringValue@CXnProperty@@QAEABVTDesC8@@XZ @ 223 NONAME ; class TDesC8 const & CXnProperty::StringValue(void) + ?SetVisible@CXnControlAdapter@@QAEXH@Z @ 224 NONAME ; void CXnControlAdapter::SetVisible(int) + ?Node@CXnComponent@@QAEPAVCXnNodePluginIf@@XZ @ 225 NONAME ; class CXnNodePluginIf * CXnComponent::Node(void) diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/uiengine/eabi/xn3layoutengineu.def --- a/idlehomescreen/xmluirendering/uiengine/eabi/xn3layoutengineu.def Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/xmluirendering/uiengine/eabi/xn3layoutengineu.def Fri Apr 23 13:22:20 2010 +0100 @@ -127,163 +127,153 @@ _ZN16TXnUiEngineAppIf11FocusedNodeEv @ 126 NONAME _ZN16TXnUiEngineAppIf11SetUiEngineEP11CXnUiEngine @ 127 NONAME _ZN16TXnUiEngineAppIf12RefreshMenuLEv @ 128 NONAME - _ZN16TXnUiEngineAppIf13ActivateViewLER12CXnNodeAppIf @ 129 NONAME - _ZN16TXnUiEngineAppIf13FindNodeByIdLERK6TDesC8S2_ @ 130 NONAME - _ZN16TXnUiEngineAppIf13FindNodeByIdLERK7TDesC16S2_ @ 131 NONAME - _ZN16TXnUiEngineAppIf16FindNodeByClassLERK6TDesC8S2_ @ 132 NONAME - _ZN16TXnUiEngineAppIf16FindNodeByClassLERK7TDesC16S2_ @ 133 NONAME - _ZN16TXnUiEngineAppIf16GetThemeResourceERK7TDesC16R5RFile @ 134 NONAME - _ZN16TXnUiEngineAppIf16IsMenuDisplayingEv @ 135 NONAME - _ZN16TXnUiEngineAppIf19GetPluginNodeArrayLER13RPointerArrayI12CXnNodeAppIfE @ 136 NONAME - _ZN16TXnUiEngineAppIf23FindContentSourceNodesLERK6TDesC8 @ 137 NONAME - _ZN16TXnUiEngineAppIf9RenderUILEP12CXnNodeAppIf @ 138 NONAME - _ZN16TXnUiEngineAppIf9RootNodeLEv @ 139 NONAME - _ZN17CXnControlAdapter10ConstructLER15CXnNodePluginIf @ 140 NONAME - _ZN17CXnControlAdapter10LoadBitmapERK7TDesC16 @ 141 NONAME - _ZN17CXnControlAdapter10SetVisibleEi @ 142 NONAME - _ZN17CXnControlAdapter11SizeChangedEv @ 143 NONAME - _ZN17CXnControlAdapter11SkinChangedEv @ 144 NONAME - _ZN17CXnControlAdapter12FocusChangedE8TDrawNow @ 145 NONAME - _ZN17CXnControlAdapter12SetComponentEP12CXnComponent @ 146 NONAME - _ZN17CXnControlAdapter14ContentBitmapsERP10CFbsBitmapS2_ @ 147 NONAME - _ZN17CXnControlAdapter14OfferKeyEventLERK9TKeyEvent10TEventCode @ 148 NONAME - _ZN17CXnControlAdapter15SetLocalUiZoomLE10TAknUiZoom @ 149 NONAME - _ZN17CXnControlAdapter16GetBitmapAndMaskERK7TDesC16S2_RP10CFbsBitmapS5_ @ 150 NONAME - _ZN17CXnControlAdapter17SetContentBitmapsEP10CFbsBitmapS1_ @ 151 NONAME - _ZN17CXnControlAdapter17SetContentBitmapsERK7TDesC16S2_ @ 152 NONAME - _ZN17CXnControlAdapter18ExitPowerSaveModeLENS_10TModeEventE @ 153 NONAME - _ZN17CXnControlAdapter18ResetStylusCounterEv @ 154 NONAME - _ZN17CXnControlAdapter19EnterPowerSaveModeLENS_10TModeEventE @ 155 NONAME - _ZN17CXnControlAdapter19HandleControlEventLEP11CCoeControlN19MCoeControlObserver9TCoeEventE @ 156 NONAME - _ZN17CXnControlAdapter19HandleLongTapEventLERK6TPointS2_ @ 157 NONAME - _ZN17CXnControlAdapter19HandlePointerEventLERK13TPointerEvent @ 158 NONAME - _ZN17CXnControlAdapter20DoExitPowerSaveModeLENS_10TModeEventE @ 159 NONAME - _ZN17CXnControlAdapter21DoEnterPowerSaveModeLENS_10TModeEventE @ 160 NONAME - _ZN17CXnControlAdapter21HandlePropertyChangeLEP11CXnProperty @ 161 NONAME - _ZN17CXnControlAdapter22EnableLongTapAnimationEi @ 162 NONAME - _ZN17CXnControlAdapter23DoHandlePropertyChangeLEP11CXnProperty @ 163 NONAME - _ZN17CXnControlAdapter23MeasureAdaptiveContentLERK5TSize @ 164 NONAME - _ZN17CXnControlAdapter26HandleScreenDeviceChangedLEv @ 165 NONAME - _ZN17CXnControlAdapter4NewLER15CXnNodePluginIf @ 166 NONAME - _ZN17CXnControlAdapter8SetBlankEi @ 167 NONAME - _ZN17CXnControlAdapter8SetDataLERK6TDesC8RK7TDesC16i @ 168 NONAME - _ZN17CXnControlAdapter9ComponentEv @ 169 NONAME - _ZN17CXnControlAdapterC1Ev @ 170 NONAME - _ZN17CXnControlAdapterC2Ev @ 171 NONAME - _ZN17CXnControlAdapterD0Ev @ 172 NONAME - _ZN17CXnControlAdapterD1Ev @ 173 NONAME - _ZN17CXnControlAdapterD2Ev @ 174 NONAME - _ZN19MXnComponentFactory16MakeXnComponentLER15CXnNodePluginIfRP12CXnComponent @ 175 NONAME - _ZN19MXnComponentFactory18CreateXnComponentLER15CXnNodePluginIfRP12CXnComponent @ 176 NONAME - _ZN19MXnComponentFactory21MakeXnControlAdapterLER15CXnNodePluginIfP17CXnControlAdapter @ 177 NONAME - _ZN19MXnComponentFactory26DoesNodeNeedComponentImplLERK6TDesC8 @ 178 NONAME - _ZN19MXnComponentFactoryC2Ev @ 179 NONAME - _ZN19MXnComponentFactoryD0Ev @ 180 NONAME - _ZN19MXnComponentFactoryD1Ev @ 181 NONAME - _ZN19MXnComponentFactoryD2Ev @ 182 NONAME - _ZN19TXnUiEnginePluginIf10StringPoolEv @ 183 NONAME - _ZN19TXnUiEnginePluginIf11PluginNodeLEP15CXnNodePluginIf @ 184 NONAME - _ZN19TXnUiEnginePluginIf12EnableSwipeLEi @ 185 NONAME - _ZN19TXnUiEnginePluginIf12FocusVisibleEv @ 186 NONAME - _ZN19TXnUiEnginePluginIf12FocusedNodeLEv @ 187 NONAME - _ZN19TXnUiEnginePluginIf13ActivateViewLER15CXnNodePluginIf @ 188 NONAME - _ZN19TXnUiEnginePluginIf13AddDirtyNodeLER15CXnNodePluginIf @ 189 NONAME - _ZN19TXnUiEnginePluginIf13FindNodeByIdLERK6TDesC8S2_ @ 190 NONAME - _ZN19TXnUiEnginePluginIf13FindNodeByIdLERK7TDesC16S2_ @ 191 NONAME - _ZN19TXnUiEnginePluginIf13SwipeEnabledLEv @ 192 NONAME - _ZN19TXnUiEnginePluginIf14SetFocusedNodeEP15CXnNodePluginIf @ 193 NONAME - _ZN19TXnUiEnginePluginIf16FindNodeByClassLERK7TDesC16 @ 194 NONAME - _ZN19TXnUiEnginePluginIf16IsMenuDisplayingEv @ 195 NONAME - _ZN19TXnUiEnginePluginIf16ScreenDeviceSizeEv @ 196 NONAME - _ZN19TXnUiEnginePluginIf16SetFocusVisibleLEi @ 197 NONAME - _ZN19TXnUiEnginePluginIf17DisableRenderUiLCEv @ 198 NONAME - _ZN19TXnUiEnginePluginIf18IsDialogDisplayingEv @ 199 NONAME - _ZN19TXnUiEnginePluginIf18IsTextEditorActiveEv @ 200 NONAME - _ZN19TXnUiEnginePluginIf18VerticalTwipValueLEP11CXnPropertyi @ 201 NONAME - _ZN19TXnUiEnginePluginIf19VerticalPixelValueLEP11CXnPropertyi @ 202 NONAME - _ZN19TXnUiEnginePluginIf20HorizontalTwipValueLEP11CXnPropertyi @ 203 NONAME - _ZN19TXnUiEnginePluginIf21HorizontalPixelValueLEP11CXnPropertyi @ 204 NONAME - _ZN19TXnUiEnginePluginIf22DeactivateFocusedNodeLEv @ 205 NONAME - _ZN19TXnUiEnginePluginIf23EnablePartialTouchInputER15CXnNodePluginIfi @ 206 NONAME - _ZN19TXnUiEnginePluginIf26RestorePreviousFocusedNodeEv @ 207 NONAME - _ZN19TXnUiEnginePluginIf8EditModeEv @ 208 NONAME - _ZN19TXnUiEnginePluginIf9LayoutUILEP15CXnNodePluginIf @ 209 NONAME - _ZN19TXnUiEnginePluginIf9RenderUILEP15CXnNodePluginIf @ 210 NONAME - _ZN19TXnUiEnginePluginIf9ResourcesEv @ 211 NONAME - _ZN19TXnUiEnginePluginIf9RootNodeLEv @ 212 NONAME - _ZN19TXnUiEnginePluginIf9ShowFocusEv @ 213 NONAME - _ZN20CXnComponentNodeImpl10ConstructLEP7CXnType @ 214 NONAME - _ZN20CXnComponentNodeImpl12SetComponentEP12CXnComponent @ 215 NONAME - _ZN20CXnComponentNodeImpl14MakeInterfaceLERK6TDesC8 @ 216 NONAME - _ZN20CXnComponentNodeImpl25SetComponentNeedsCreationEi @ 217 NONAME - _ZN20CXnComponentNodeImpl4NewLEP7CXnType @ 218 NONAME - _ZN20CXnComponentNodeImpl9ComponentEv @ 219 NONAME - _ZN20CXnComponentNodeImplC1Ev @ 220 NONAME - _ZN20CXnComponentNodeImplC2Ev @ 221 NONAME - _ZN20CXnComponentNodeImplD0Ev @ 222 NONAME - _ZN20CXnComponentNodeImplD1Ev @ 223 NONAME - _ZN20CXnComponentNodeImplD2Ev @ 224 NONAME - _ZN8CXnUtils11CreateFontLER15CXnNodePluginIfRP5CFontRi @ 225 NONAME - _ZN8CXnUtils11CreateFontLERK7TDesC16i10TFontStyleRP5CFontRi @ 226 NONAME - _ZN8CXnUtils11GetRgbValueER4TRgbRK6TDesC8 @ 227 NONAME - _ZN8CXnUtils11StripQuotesERP7HBufC16 @ 228 NONAME - _ZN8CXnUtils12FindResourceER12CArrayPtrSegI11CXnResourceERK7TDesC16Ri @ 229 NONAME - _ZN8CXnUtils12ScaleBitmapLERK5TRectP10CFbsBitmapS4_ @ 230 NONAME - _ZN8CXnUtils13TextAlignmentER15CXnNodePluginIf @ 231 NONAME - _ZN8CXnUtils15ConvertHslToRgbEiii @ 232 NONAME - _ZN8CXnUtils18CollapseWhiteSpaceER15CXnNodePluginIfR6TDes16 @ 233 NONAME - _ZN8CXnUtils18ResolveSkinItemIDLERK7TDesC16R11TAknsItemIDRi @ 234 NONAME - _ZN8CXnUtils20HandlePowerSaveModeLEP7CXnNodeii @ 235 NONAME - _ZNK11CXnProperty7EqualsLERS_ @ 236 NONAME - _ZNK12CXnNodeAppIf12GetPropertyLER11CXnProperty @ 237 NONAME - _ZNK12CXnNodeAppIf12GetPropertyLERK6TDesC8 @ 238 NONAME - _ZNK12CXnNodeAppIf19InternalDomNodeTypeEv @ 239 NONAME - _ZNK12CXnNodeAppIf7ParentLEv @ 240 NONAME - _ZNK12CXnNodeAppIf9GetPCDataEv @ 241 NONAME - _ZNK14CXnApplication9AppDllUidEv @ 242 NONAME - _ZNK15CXnAppUiAdapter4ViewEv @ 243 NONAME - _ZNK15CXnNodePluginIf12GetPropertyLER11CXnProperty @ 244 NONAME - _ZNK15CXnNodePluginIf12GetPropertyLERK6TDesC8 @ 245 NONAME - _ZNK15CXnNodePluginIf7ControlEv @ 246 NONAME - _ZNK15CXnNodePluginIf7ParentLEv @ 247 NONAME - _ZNK15CXnNodePluginIf9GetPCDataEv @ 248 NONAME - _ZNK16TXnUiEngineAppIf14WidgetsVisibleEv @ 249 NONAME - _ZNK17CXnControlAdapter15LongTapDetectorEv @ 250 NONAME - _ZNK17CXnControlAdapter16ComponentControlEi @ 251 NONAME - _ZNK17CXnControlAdapter16DrawContentImageEv @ 252 NONAME - _ZNK17CXnControlAdapter16IsDrawingAllowedEv @ 253 NONAME - _ZNK17CXnControlAdapter22CountComponentControlsEv @ 254 NONAME - _ZNK17CXnControlAdapter4DrawERK5TRect @ 255 NONAME - _ZNK17CXnControlAdapter4DrawERK5TRectR9CWindowGc @ 256 NONAME - _ZNK19TXnUiEnginePluginIf14WidgetsVisibleEv @ 257 NONAME - _ZNK19TXnUiEnginePluginIf9HitRegionEv @ 258 NONAME - _ZNK20CXnComponentNodeImpl25DoesComponentNeedCreationEv @ 259 NONAME - _ZTI11CXnDocument @ 260 NONAME - _ZTI11CXnProperty @ 261 NONAME - _ZTI12CXnComponent @ 262 NONAME - _ZTI14CXnApplication @ 263 NONAME - _ZTI15CXnAppUiAdapter @ 264 NONAME - _ZTI16CXnViewsNodeImpl @ 265 NONAME - _ZTI16MXnNodePredicate @ 266 NONAME - _ZTI17CXnControlAdapter @ 267 NONAME - _ZTI18CXnListQueryDialog @ 268 NONAME - _ZTI19MXnComponentFactory @ 269 NONAME - _ZTI20CXnComponentNodeImpl @ 270 NONAME - _ZTI27CXnNodeBreadthFirstIteratorI7CXnNodeE @ 271 NONAME - _ZTIN21CXnControlAdapterImpl13TIconProviderE @ 272 NONAME - _ZTV11CXnDocument @ 273 NONAME - _ZTV11CXnProperty @ 274 NONAME - _ZTV12CXnComponent @ 275 NONAME - _ZTV14CXnApplication @ 276 NONAME - _ZTV15CXnAppUiAdapter @ 277 NONAME - _ZTV16CXnViewsNodeImpl @ 278 NONAME - _ZTV16MXnNodePredicate @ 279 NONAME - _ZTV17CXnControlAdapter @ 280 NONAME - _ZTV18CXnListQueryDialog @ 281 NONAME - _ZTV19MXnComponentFactory @ 282 NONAME - _ZTV20CXnComponentNodeImpl @ 283 NONAME - _ZTV27CXnNodeBreadthFirstIteratorI7CXnNodeE @ 284 NONAME - _ZTVN21CXnControlAdapterImpl13TIconProviderE @ 285 NONAME - _ZThn52_N17CXnControlAdapter19HandleControlEventLEP11CCoeControlN19MCoeControlObserver9TCoeEventE @ 286 NONAME - _ZThn60_N17CXnControlAdapter19HandleLongTapEventLERK6TPointS2_ @ 287 NONAME + _ZN16TXnUiEngineAppIf13FindNodeByIdLERK6TDesC8S2_ @ 129 NONAME + _ZN16TXnUiEngineAppIf13FindNodeByIdLERK7TDesC16S2_ @ 130 NONAME + _ZN16TXnUiEngineAppIf16FindNodeByClassLERK6TDesC8S2_ @ 131 NONAME + _ZN16TXnUiEngineAppIf16FindNodeByClassLERK7TDesC16S2_ @ 132 NONAME + _ZN16TXnUiEngineAppIf16GetThemeResourceERK7TDesC16R5RFile @ 133 NONAME + _ZN16TXnUiEngineAppIf16IsMenuDisplayingEv @ 134 NONAME + _ZN16TXnUiEngineAppIf19GetPluginNodeArrayLER13RPointerArrayI12CXnNodeAppIfE @ 135 NONAME + _ZN16TXnUiEngineAppIf23FindContentSourceNodesLERK6TDesC8 @ 136 NONAME + _ZN16TXnUiEngineAppIf9RenderUILEP12CXnNodeAppIf @ 137 NONAME + _ZN16TXnUiEngineAppIf9RootNodeLEv @ 138 NONAME + _ZN17CXnControlAdapter10ConstructLER15CXnNodePluginIf @ 139 NONAME + _ZN17CXnControlAdapter10LoadBitmapERK7TDesC16 @ 140 NONAME + _ZN17CXnControlAdapter10SetVisibleEi @ 141 NONAME + _ZN17CXnControlAdapter11SizeChangedEv @ 142 NONAME + _ZN17CXnControlAdapter11SkinChangedEv @ 143 NONAME + _ZN17CXnControlAdapter12FocusChangedE8TDrawNow @ 144 NONAME + _ZN17CXnControlAdapter12SetComponentEP12CXnComponent @ 145 NONAME + _ZN17CXnControlAdapter14ContentBitmapsERP10CFbsBitmapS2_ @ 146 NONAME + _ZN17CXnControlAdapter14OfferKeyEventLERK9TKeyEvent10TEventCode @ 147 NONAME + _ZN17CXnControlAdapter15SetLocalUiZoomLE10TAknUiZoom @ 148 NONAME + _ZN17CXnControlAdapter16GetBitmapAndMaskERK7TDesC16S2_RP10CFbsBitmapS5_ @ 149 NONAME + _ZN17CXnControlAdapter17SetContentBitmapsEP10CFbsBitmapS1_ @ 150 NONAME + _ZN17CXnControlAdapter17SetContentBitmapsERK7TDesC16S2_ @ 151 NONAME + _ZN17CXnControlAdapter18ExitPowerSaveModeLENS_10TModeEventE @ 152 NONAME + _ZN17CXnControlAdapter18ResetStylusCounterEv @ 153 NONAME + _ZN17CXnControlAdapter19EnterPowerSaveModeLENS_10TModeEventE @ 154 NONAME + _ZN17CXnControlAdapter19HandleControlEventLEP11CCoeControlN19MCoeControlObserver9TCoeEventE @ 155 NONAME + _ZN17CXnControlAdapter19HandleLongTapEventLERK6TPointS2_ @ 156 NONAME + _ZN17CXnControlAdapter19HandlePointerEventLERK13TPointerEvent @ 157 NONAME + _ZN17CXnControlAdapter20DoExitPowerSaveModeLENS_10TModeEventE @ 158 NONAME + _ZN17CXnControlAdapter21DoEnterPowerSaveModeLENS_10TModeEventE @ 159 NONAME + _ZN17CXnControlAdapter21HandlePropertyChangeLEP11CXnProperty @ 160 NONAME + _ZN17CXnControlAdapter22EnableLongTapAnimationEi @ 161 NONAME + _ZN17CXnControlAdapter23DoHandlePropertyChangeLEP11CXnProperty @ 162 NONAME + _ZN17CXnControlAdapter23MeasureAdaptiveContentLERK5TSize @ 163 NONAME + _ZN17CXnControlAdapter26HandleScreenDeviceChangedLEv @ 164 NONAME + _ZN17CXnControlAdapter4NewLER15CXnNodePluginIf @ 165 NONAME + _ZN17CXnControlAdapter8SetBlankEi @ 166 NONAME + _ZN17CXnControlAdapter8SetDataLERK6TDesC8RK7TDesC16i @ 167 NONAME + _ZN17CXnControlAdapter9ComponentEv @ 168 NONAME + _ZN17CXnControlAdapterC1Ev @ 169 NONAME + _ZN17CXnControlAdapterC2Ev @ 170 NONAME + _ZN17CXnControlAdapterD0Ev @ 171 NONAME + _ZN17CXnControlAdapterD1Ev @ 172 NONAME + _ZN17CXnControlAdapterD2Ev @ 173 NONAME + _ZN19MXnComponentFactory16MakeXnComponentLER15CXnNodePluginIfRP12CXnComponent @ 174 NONAME + _ZN19MXnComponentFactory18CreateXnComponentLER15CXnNodePluginIfRP12CXnComponent @ 175 NONAME + _ZN19MXnComponentFactory21MakeXnControlAdapterLER15CXnNodePluginIfP17CXnControlAdapter @ 176 NONAME + _ZN19MXnComponentFactory26DoesNodeNeedComponentImplLERK6TDesC8 @ 177 NONAME + _ZN19MXnComponentFactoryC2Ev @ 178 NONAME + _ZN19MXnComponentFactoryD0Ev @ 179 NONAME + _ZN19MXnComponentFactoryD1Ev @ 180 NONAME + _ZN19MXnComponentFactoryD2Ev @ 181 NONAME + _ZN19TXnUiEnginePluginIf10StringPoolEv @ 182 NONAME + _ZN19TXnUiEnginePluginIf11PluginNodeLEP15CXnNodePluginIf @ 183 NONAME + _ZN19TXnUiEnginePluginIf12FocusedNodeLEv @ 184 NONAME + _ZN19TXnUiEnginePluginIf13AddDirtyNodeLER15CXnNodePluginIf @ 185 NONAME + _ZN19TXnUiEnginePluginIf13FindNodeByIdLERK6TDesC8S2_ @ 186 NONAME + _ZN19TXnUiEnginePluginIf13FindNodeByIdLERK7TDesC16S2_ @ 187 NONAME + _ZN19TXnUiEnginePluginIf14SetFocusedNodeEP15CXnNodePluginIf @ 188 NONAME + _ZN19TXnUiEnginePluginIf16FindNodeByClassLERK7TDesC16 @ 189 NONAME + _ZN19TXnUiEnginePluginIf16IsMenuDisplayingEv @ 190 NONAME + _ZN19TXnUiEnginePluginIf16ScreenDeviceSizeEv @ 191 NONAME + _ZN19TXnUiEnginePluginIf17DisableRenderUiLCEv @ 192 NONAME + _ZN19TXnUiEnginePluginIf18IsDialogDisplayingEv @ 193 NONAME + _ZN19TXnUiEnginePluginIf18IsTextEditorActiveEv @ 194 NONAME + _ZN19TXnUiEnginePluginIf18VerticalTwipValueLEP11CXnPropertyi @ 195 NONAME + _ZN19TXnUiEnginePluginIf19VerticalPixelValueLEP11CXnPropertyi @ 196 NONAME + _ZN19TXnUiEnginePluginIf20HorizontalTwipValueLEP11CXnPropertyi @ 197 NONAME + _ZN19TXnUiEnginePluginIf21HorizontalPixelValueLEP11CXnPropertyi @ 198 NONAME + _ZN19TXnUiEnginePluginIf23EnablePartialTouchInputER15CXnNodePluginIfi @ 199 NONAME + _ZN19TXnUiEnginePluginIf8EditModeEv @ 200 NONAME + _ZN19TXnUiEnginePluginIf9LayoutUILEP15CXnNodePluginIf @ 201 NONAME + _ZN19TXnUiEnginePluginIf9RenderUILEP15CXnNodePluginIf @ 202 NONAME + _ZN19TXnUiEnginePluginIf9ResourcesEv @ 203 NONAME + _ZN19TXnUiEnginePluginIf9RootNodeLEv @ 204 NONAME + _ZN20CXnComponentNodeImpl10ConstructLEP7CXnType @ 205 NONAME + _ZN20CXnComponentNodeImpl12SetComponentEP12CXnComponent @ 206 NONAME + _ZN20CXnComponentNodeImpl14MakeInterfaceLERK6TDesC8 @ 207 NONAME + _ZN20CXnComponentNodeImpl25SetComponentNeedsCreationEi @ 208 NONAME + _ZN20CXnComponentNodeImpl4NewLEP7CXnType @ 209 NONAME + _ZN20CXnComponentNodeImpl9ComponentEv @ 210 NONAME + _ZN20CXnComponentNodeImplC1Ev @ 211 NONAME + _ZN20CXnComponentNodeImplC2Ev @ 212 NONAME + _ZN20CXnComponentNodeImplD0Ev @ 213 NONAME + _ZN20CXnComponentNodeImplD1Ev @ 214 NONAME + _ZN20CXnComponentNodeImplD2Ev @ 215 NONAME + _ZN8CXnUtils11CreateFontLER15CXnNodePluginIfRP5CFontRi @ 216 NONAME + _ZN8CXnUtils11CreateFontLERK7TDesC16i10TFontStyleRP5CFontRi @ 217 NONAME + _ZN8CXnUtils11GetRgbValueER4TRgbRK6TDesC8 @ 218 NONAME + _ZN8CXnUtils11StripQuotesERP7HBufC16 @ 219 NONAME + _ZN8CXnUtils12FindResourceER12CArrayPtrSegI11CXnResourceERK7TDesC16Ri @ 220 NONAME + _ZN8CXnUtils12ScaleBitmapLERK5TRectP10CFbsBitmapS4_ @ 221 NONAME + _ZN8CXnUtils13TextAlignmentER15CXnNodePluginIf @ 222 NONAME + _ZN8CXnUtils15ConvertHslToRgbEiii @ 223 NONAME + _ZN8CXnUtils18CollapseWhiteSpaceER15CXnNodePluginIfR6TDes16 @ 224 NONAME + _ZN8CXnUtils18ResolveSkinItemIDLERK7TDesC16R11TAknsItemIDRi @ 225 NONAME + _ZN8CXnUtils20HandlePowerSaveModeLEP7CXnNodeii @ 226 NONAME + _ZNK11CXnProperty7EqualsLERS_ @ 227 NONAME + _ZNK12CXnNodeAppIf12GetPropertyLER11CXnProperty @ 228 NONAME + _ZNK12CXnNodeAppIf12GetPropertyLERK6TDesC8 @ 229 NONAME + _ZNK12CXnNodeAppIf19InternalDomNodeTypeEv @ 230 NONAME + _ZNK12CXnNodeAppIf7ParentLEv @ 231 NONAME + _ZNK12CXnNodeAppIf9GetPCDataEv @ 232 NONAME + _ZNK14CXnApplication9AppDllUidEv @ 233 NONAME + _ZNK15CXnAppUiAdapter4ViewEv @ 234 NONAME + _ZNK15CXnNodePluginIf12GetPropertyLER11CXnProperty @ 235 NONAME + _ZNK15CXnNodePluginIf12GetPropertyLERK6TDesC8 @ 236 NONAME + _ZNK15CXnNodePluginIf7ControlEv @ 237 NONAME + _ZNK15CXnNodePluginIf7ParentLEv @ 238 NONAME + _ZNK15CXnNodePluginIf9GetPCDataEv @ 239 NONAME + _ZNK16TXnUiEngineAppIf14WidgetsVisibleEv @ 240 NONAME + _ZNK17CXnControlAdapter15LongTapDetectorEv @ 241 NONAME + _ZNK17CXnControlAdapter16ComponentControlEi @ 242 NONAME + _ZNK17CXnControlAdapter16DrawContentImageEv @ 243 NONAME + _ZNK17CXnControlAdapter16IsDrawingAllowedEv @ 244 NONAME + _ZNK17CXnControlAdapter22CountComponentControlsEv @ 245 NONAME + _ZNK17CXnControlAdapter4DrawERK5TRect @ 246 NONAME + _ZNK17CXnControlAdapter4DrawERK5TRectR9CWindowGc @ 247 NONAME + _ZNK19TXnUiEnginePluginIf14WidgetsVisibleEv @ 248 NONAME + _ZNK20CXnComponentNodeImpl25DoesComponentNeedCreationEv @ 249 NONAME + _ZTI11CXnDocument @ 250 NONAME + _ZTI11CXnProperty @ 251 NONAME + _ZTI12CXnComponent @ 252 NONAME + _ZTI14CXnApplication @ 253 NONAME + _ZTI15CXnAppUiAdapter @ 254 NONAME + _ZTI16CXnViewsNodeImpl @ 255 NONAME + _ZTI16MXnNodePredicate @ 256 NONAME + _ZTI17CXnControlAdapter @ 257 NONAME + _ZTI18CXnListQueryDialog @ 258 NONAME + _ZTI19MXnComponentFactory @ 259 NONAME + _ZTI20CXnComponentNodeImpl @ 260 NONAME + _ZTI27CXnNodeBreadthFirstIteratorI7CXnNodeE @ 261 NONAME + _ZTIN21CXnControlAdapterImpl13TIconProviderE @ 262 NONAME + _ZTV11CXnDocument @ 263 NONAME + _ZTV11CXnProperty @ 264 NONAME + _ZTV12CXnComponent @ 265 NONAME + _ZTV14CXnApplication @ 266 NONAME + _ZTV15CXnAppUiAdapter @ 267 NONAME + _ZTV16CXnViewsNodeImpl @ 268 NONAME + _ZTV16MXnNodePredicate @ 269 NONAME + _ZTV17CXnControlAdapter @ 270 NONAME + _ZTV18CXnListQueryDialog @ 271 NONAME + _ZTV19MXnComponentFactory @ 272 NONAME + _ZTV20CXnComponentNodeImpl @ 273 NONAME + _ZTV27CXnNodeBreadthFirstIteratorI7CXnNodeE @ 274 NONAME + _ZTVN21CXnControlAdapterImpl13TIconProviderE @ 275 NONAME + _ZThn52_N17CXnControlAdapter19HandleControlEventLEP11CCoeControlN19MCoeControlObserver9TCoeEventE @ 276 NONAME + _ZThn60_N17CXnControlAdapter19HandleLongTapEventLERK6TPointS2_ @ 277 NONAME diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/uiengine/group/xnlayoutengine.mmp --- a/idlehomescreen/xmluirendering/uiengine/group/xnlayoutengine.mmp Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/xmluirendering/uiengine/group/xnlayoutengine.mmp Fri Apr 23 13:22:20 2010 +0100 @@ -65,11 +65,6 @@ SOURCE xneditmode.cpp SOURCE xneditor.cpp SOURCE xnpropertysubscriber.cpp -SOURCE xngesturehelper.cpp -SOURCE xngesture.cpp -SOURCE xngesturerecogniser.cpp -SOURCE xnpointarray.cpp -SOURCE xnhittest.cpp SOURCE xnplugindata.cpp SOURCE xnviewdata.cpp SOURCE xnrootdata.cpp @@ -86,6 +81,8 @@ SOURCE xnextrenderingpluginwrapper.cpp SOURCE xnbackgroundmanager.cpp SOURCE xnviewcontroladapter.cpp +SOURCE xnspbgcleaner.cpp +SOURCE xnwaitdialog.cpp START RESOURCE xnuiengine.rss HEADER @@ -113,6 +110,7 @@ LIBRARY bafl.lib LIBRARY eikcoctl.lib LIBRARY eikcore.lib +LIBRARY eikdlg.lib LIBRARY egul.lib LIBRARY fbscli.lib LIBRARY ws32.lib @@ -156,6 +154,7 @@ LIBRARY disknotifyhandler.lib LIBRARY platformenv.lib LIBRARY hspluginsettings.lib +LIBRARY akntouchgesturefw.lib #if defined(_XN3_DEBUG_) || defined(AI3_DEBUG_PERFORMANCE) LIBRARY flogger.lib diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/uiengine/inc/xnappuiadapterimpl.h --- a/idlehomescreen/xmluirendering/uiengine/inc/xnappuiadapterimpl.h Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/xmluirendering/uiengine/inc/xnappuiadapterimpl.h Fri Apr 23 13:22:20 2010 +0100 @@ -21,7 +21,8 @@ // System includes #include - +#include // for MProgressDialogCallback +#include "xnpropertysubscriber.h" // for CXnPropertySubscriber // Forward declarations class CXnUiEngine; @@ -34,6 +35,7 @@ class CHsCcProviderClient; class CXnEffectManager; class MHsContentControl; +class CXnWaitDialog; // Constants @@ -46,7 +48,9 @@ * @lib xn3layoutengine.lib * @since Series 60 3.1 */ -NONSHARABLE_CLASS( CXnAppUiAdapterImpl ) : public CBase +NONSHARABLE_CLASS( CXnAppUiAdapterImpl ) : public CBase, + public MXnPropertyChangeObserver, + public MProgressDialogCallback { public: // Constructors and destructor @@ -156,6 +160,15 @@ */ void HandleResourceChangeL( TInt aType ); +public: // From MProgressDialogCallback + + /** + * Callback method from MProgressDialogCallback interface. + * Gets called when a dialog is dismissed. + * @param aButtonId Id of the pushed button. + */ + void DialogDismissedL( TInt aButtonId ); + private: /** @@ -164,6 +177,18 @@ CXnAppUiAdapterImpl( TUid aApplicationUid, CXnAppUiAdapter& aAdapter ); +private: + // from MXnPropertyChangeObserver + void PropertyChangedL( const TUint32 aKey, const TInt aValue ); + +private: + // new functions + + /** + * Launches wait dialog during backup/restore. + */ + void DisplayWaitDialogL(); + private: // Data /** AppUi, Not owned. */ @@ -185,7 +210,11 @@ /** Effect manager, Owned */ CXnEffectManager* iEffectManager; /** Resource offset */ - TInt iResourceOffset; + TInt iResourceOffset; + /** Wait dialog, Owned */ + CXnWaitDialog* iXnWaitDialog; + /** Publish&Subscribe observer for Backup & Restore, Owned */ + CXnPropertySubscriber* iBackupRestoreObserver; }; #endif // XNAPPUIADAPTERIMPL_H diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/uiengine/inc/xnbackgroundmanager.h --- a/idlehomescreen/xmluirendering/uiengine/inc/xnbackgroundmanager.h Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/xmluirendering/uiengine/inc/xnbackgroundmanager.h Fri Apr 23 13:22:20 2010 +0100 @@ -261,6 +261,13 @@ */ CFbsBitmap* iBgImage; + /** + * Pointer to status pane mask. Drawn on top of a wallpaper in + * the status pane area. + * Own. + */ + CFbsBitmap* iSpMask; + /** * Path of the wallpaper image, including filename. * This is used only if same wallpaper diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/uiengine/inc/xncontroladapterimpl.h --- a/idlehomescreen/xmluirendering/uiengine/inc/xncontroladapterimpl.h Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/xmluirendering/uiengine/inc/xncontroladapterimpl.h Fri Apr 23 13:22:20 2010 +0100 @@ -25,9 +25,7 @@ #include #include #include - -// User includes -#include "xngesturehelper.h" +#include // Forward declarations class CXnNodePluginIf; @@ -45,19 +43,7 @@ const TInt KSpaceChar = 32; const TInt KRightParenthesis = ')'; -/** - * XnGestureHelper namespace - * Used for the whole gesture family - Gesture recognizer, gesture helper, - * Point array - */ -namespace XnGestureHelper - { - class CXnGestureHelper; - } - -using XnGestureHelper::CXnGestureHelper; - - +using namespace AknTouchGestureFw; // Class declaration /** @@ -68,7 +54,8 @@ * @since Series 60 3.1 */ NONSHARABLE_CLASS( CXnControlAdapterImpl ) : public CBase, - public MAknsEffectAnimObserver + public MAknsEffectAnimObserver, + public MAknTouchGestureFwObserver { public: @@ -444,12 +431,11 @@ CXnProperty* aProperty ); /** - * Forwards event to gesture helper + * Sets up gesture on buttondown event * * @param aPointerEvent Event to be forwarded - * @return ETrue when swipe took place, EFalse otherwise */ - TBool PassEventToGestureHelperL( + void InitializeGestureL( const TPointerEvent& aPointerEvent ); /* @@ -464,6 +450,14 @@ */ RPointerArray< CXnControlAdapter >& ChildAdapters(); +private: // from MAknTouchGestureFwObserver + /** + * Implements gesture handling + * + * @see MAknTouchGestureFwObserver + */ + void HandleTouchGestureL( MAknTouchGestureFwEvent& aEvent ); + protected: // New functions @@ -493,6 +487,7 @@ void DrawBackgroundImageL( const TRect& aRect, CXnNode& aNode, CWindowGc& aGc, CFbsBitmap* aBitmap, CFbsBitmap* aMask ); RFs& FsSession(); + TBool IsDragThresholdExceeded( const TPoint& aPoint ); private: // Data @@ -551,14 +546,16 @@ TAknsItemID iAnimIID; /** flag: skin animation id is resolved from the CSS property */ TBool iAnimIDResolved; - /** pointer to gesturehelper */ - CXnGestureHelper* iGestureHelper; /** flag: for storing blank state */ TBool iBlank; /** flag: to detect whether longtap occured */ TBool iLongtap; - /** record right softkey node of menubar when keydown event happened */ - mutable CXnNode* iKeyDownNode; + /** Gesture framework, owned. */ + CAknTouchGestureFw* iGestureFw; + /** Gesture destination, Not owned. */ + CXnNode* iGestureDestination; + /** Starting point of button down event. */ + TPoint iButtonDownStartPoint; }; #endif //__XNCONTROLADAPTERIMPL_H__ diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/uiengine/inc/xngesture.h --- a/idlehomescreen/xmluirendering/uiengine/inc/xngesture.h Mon Apr 12 20:35:11 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,369 +0,0 @@ -/* -* Copyright (c) 2008-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: Gesture class -* -*/ - - -#ifndef _XNGESTURE_H_ -#define _XNGESTURE_H_ - -// System includes -#include - -// User includes -#include "xnpointarray.h" -#include "xngesturerecogniser.h" - -// Namespace declaration - -/** - * XnGestureHelper namespace - * Used for the whole gesture family - Gesture recognizer, gesture helper, - * Point array - */ -namespace XnGestureHelper - { - - /** - * Struct for a point in floating-point represanation - */ - NONSHARABLE_STRUCT( TRealPoint ) - { - inline TRealPoint(); - inline TRealPoint( const TRealPoint& aPoint ); - inline TRealPoint( TReal aX, TReal aY ); - inline TBool operator==( const TRealPoint& aPoint ) const; - - TReal32 iX; - TReal32 iY; - }; - - // Class declaration - - /** - * TGesture represents the gesture that the user has made. - * Implements MGestureEvent interface to allow clients to - * inspect the gesture - * - * @ingroup group_xnlayoutengine - */ - NONSHARABLE_CLASS( CXnGesture ) : public CBase - { - public: - - /** - * X and Y axes, or both - */ - enum TAxis - { - EAxisBoth, - EAxisHorizontal, - EAxisVertical - }; - - public: - - /** destructor */ - ~CXnGesture(); - - /** - * Sets the gesture as empty. resets timers to receive points - * immediately - */ - void Reset(); - - /** - * Check the gesture if it is empty - * - * @return ETrue if the gesture has no points - */ - TBool IsEmpty() const; - - /** - * Add a point to the sequence of points that forms the gesture - * Call Reset() just before adding the first point - * - * @param aPoint the point to add - * @return error code - */ - TInt AddPoint( const TPoint& aPoint ); - - /** - * Checks if the point it is close to holding point - * - * @param aPoint Point to be examined - * @return ETrue if the point is very near the holding point - */ - TBool IsNearHoldingPoint( const TPoint& aPoint ) const; - - /** - * Set the latest point as the holding point - */ - void SetHoldingPoint(); - - /** - * Checks if the examined point is at the last point's position - * - * @param aPoint Point to be examined - * @return ETrue if aPoint is the same as point added last - */ - TBool IsLatestPoint( const TPoint& aPoint ) const; - - /** - * After call, Code(...) will return appropriate holding gesture code. - */ - void StartHolding(); - - /** - * After call, Code(...) will return a "hold released" gesture code - * when the gesture is completed. Meanwhile, code will be drag. - */ - void ContinueHolding(); - - /** - * Set as stylus released - */ - void SetReleased(); - - /** - * Set the gesture as complete. Gesture is completed at pointer up - */ - void SetComplete(); - - /** - * After call, Code(...) will return a "cancelled" gesture code - */ - void SetCancelled(); - - /** - * Checks if the gesture is a tap - * - * @return Whether the current gesture is a tap - * (and hence not a swipe). Does not consider holding or - * other state information (such as whether the gesture was - * just started or is dragging). Results are based purely on - * the current stream of points. - */ - TBool IsTap() const; - - /** - * From MGestureEvent - * Checks and return current gesture status at desired axis - * - * @param aRelevantAxis Axis to be examined - * @return Gesture status - */ - TXnGestureCode Code( TAxis aRelevantAxis ) const; - - /** - * From MGestureEvent - * Checks and returns holding status - * - * @return Return holding - */ - TBool IsHolding() const; - - /** - * From MGestureEvent - * Returns first position form iPoints - * - * @return Returns first point - */ - TPoint StartPos() const; - - /** - * From MGestureEvent - * Returns current (last) position from iPoints - * - * @return Returns last point - */ - TPoint CurrentPos() const; - - /** - * From MGestureEvent - * Returns speed of X, Y movement - * - * @return Speed in X, Y axis - */ - TRealPoint Speed() const; - - /** - * From MGestureEvent - * Scales the speed - * - * @return Scaled speed - */ - TRealPoint SpeedPercent( const TRect& aEdges ) const; - - /** - * From MGestureEvent - * Cheks and returns distance between start and current position - * - * @return Distance between two points - */ - TPoint Distance() const; - - /** - * Checks and returns gesture - * - * @param aRelevantAxis See @ref MGestureEvent::Code - * @return gesture code by analysing the sequence of points - */ - TXnGestureCode CodeFromPoints( TAxis aRelevantAxis ) const; - - TXnGestureCode LastDirection( TAxis aRelevantAxis ) const; - - private: - - /** Information of an earlier gesture */ - struct TGestureRecord - { - enum TType - { - ETypeOther, - ETypeTap, - ETypeDoubleTap - }; - - TGestureRecord(); - TGestureRecord( TType aType, TTime aCompletionTime, TPoint aPos ); - - /** type of the gesture */ - TType iType; - /** completion time fo the gesture */ - TTime iCompletionTime; - /** point of completion */ - TPoint iPos; - }; - - /** - * Returns elapsed time - * - * @return elapsed time between the latest and previous points - */ - inline TTimeIntervalMicroSeconds32 TimeFromPreviousPoint() const; - - /** - * Checks whether the movement has stopped - * - * @return ETrue if user has stopped moving the stylus before lifting - * it - */ - inline TBool IsMovementStopped() const; - - /** - * Offset of the last entry - * - * @return aOffset'th last entry in the list of points - */ - inline const TXnPointEntry& NthLastEntry( TInt aOffset ) const; - - /** - * Calles NthLastEntry for previous point - * - * @return previous point (may not be exactly the point before last) - */ - inline const TXnPointEntry& PreviousEntry() const; - - /** - * Returns the point before the last one - * - * @return position of point received just before the latest point - */ - inline TPoint PreviousPos() const; - - /** - * Return if the tap was a double tap - * - * @return ETrue if tap should be a double tap - */ - TBool IsTapDoubleTap() const; - - /** - * Returns current gesture type - * - * @return the type of the current gesture - */ - TGestureRecord::TType Type() const; - - private: - // Enumerators for holding and completion state - - /** - * the different states that indicate whether user has made a holding - * gesture - */ - enum THoldingState - { - /** before holding activated (i.e., holding not activated) */ - ENotHolding = 0, - /** holding activated just now (lasts just one callback round) */ - EHoldStarting, - /** holding activated earlier */ - EHolding - }; - - /** - * Completion states - */ - enum TCompletionState - { - // Note: implementation assumes this order of enums - ENotComplete = 0, - ECancelled, - EComplete, - EReleased - }; - - private: - // Members - - /** - * sequence of points that make up the gesture, owned. - */ - RArray< TXnPointEntry > iPoints; - - /** - * index in iPoints of the point in which user started holding - */ - TInt iHoldingPointIndex; - - /** - * state that indicates is user has held the pointer down in one - * position for long time to indicate a holding gesture - */ - THoldingState iHoldingState; - - /** - * gesture only becomes complete when user lifts the pointer - */ - TCompletionState iState; - - /** - * time when the stylus was lifted. - */ - TTime iCompletionTime; - - /** - * previous gesture information for double tap - */ - TGestureRecord iPreviousGesture; - }; - } // namespace XnGestureHelper - -// Inline functions -#include "xngesture.inl" - -#endif // _XNGESTURE_H_ diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/uiengine/inc/xngesture.inl --- a/idlehomescreen/xmluirendering/uiengine/inc/xngesture.inl Mon Apr 12 20:35:11 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,68 +0,0 @@ -/* -* Copyright (c) 2008-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: Gesture class - inline section -* -*/ - - -// Protection for nested includes -#ifndef _XNGESTURE_INL_ -#define _XNGESTURE_INL_ - -// ----------------------------------------------------------------------------- -// TRealPoint inline implementation -// ----------------------------------------------------------------------------- -// -namespace XnGestureHelper - { - - // ------------------------------------------------------------------------- - // Default Constructor for the real point - // ------------------------------------------------------------------------- - // - inline TRealPoint::TRealPoint() : - iX( 0 ), iY( 0 ) - { - } - - - // ------------------------------------------------------------------------- - // Copy constructor for real point - // ------------------------------------------------------------------------- - // - inline TRealPoint::TRealPoint( const TRealPoint& aPoint ) : - iX( aPoint.iX ), iY( aPoint.iY ) - { - } - - // ------------------------------------------------------------------------- - // Copy constructor for real point - // ------------------------------------------------------------------------- - // - inline TRealPoint::TRealPoint( TReal aX, TReal aY ) : - iX( aX ), iY( aY ) - { - } - - // ------------------------------------------------------------------------- - // Default constructor for real point - // ------------------------------------------------------------------------- - // - inline TBool TRealPoint::operator==( const TRealPoint& aPoint ) const - { - return iX == aPoint.iX && iY == aPoint.iY; - } - } - -#endif //_XNGESTURE_INL_ diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/uiengine/inc/xngesturedefs.h --- a/idlehomescreen/xmluirendering/uiengine/inc/xngesturedefs.h Mon Apr 12 20:35:11 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,97 +0,0 @@ -/* -* 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: Gesture helper constant definitions -* -*/ - - -#ifndef _XNGESTUREDEFS_H_ -#define _XNGESTUREDEFS_H_ - -// System includes -#include - -/** - * This flag controls whether helpers emits a double tap or a tap gesture - * for a second tap - */ -#define _GESTURE_DOUBLE_TAP_SUPPORT - -/** - * XnGestureHelper namespace - * Used for the whole gesture family - Gesture recognizer, gesture helper, - * Point array - */ -namespace XnGestureHelper - { - /** time to hold the stylus in the same position to activate - * holding, in microseconds - */ - const TInt KHoldDuration = 500000; - - /** - * time to tap again for the second tap to be a double tap, in - * microseconds - */ - const TInt KMaxDoubleTapDuration = 400000; - - /** - * time in which speed becomes zero if user stops stylus movement before - * lifting the pointer, in microseconds - */ - const TInt KSpeedStopTime = 100000; - - /** - * tolerance in degrees to either side of an angle, for direction to be - * the same as reference angle - */ - const TReal KAngleTolerance = 80; - - /** - * maximum pointer movement from pointer down position for a gesture be - * a tap or hold gesture - */ - const TInt KSamePointTolerance = 3; - - /** - * minimum length of a valid swipe in pixels. should be larger than - * KTapTolerance - */ - const TReal KMinSwipeLength = 10; - - /** Nth pointer event before the latest point */ - const TInt KPreviousPointOffset = 3; - - - /** - * Panic codes - */ - enum TGesturePanic - { - EGesturePanicIllegalLogic - }; - - /** - * Panics the thread - * - * @param aReason Panic reason - */ - inline void Panic( TGesturePanic aReason ) - { - _LIT( KComponentName, "XnGestureHelper" ); - User::Panic( KComponentName, aReason ); - } - } // namespace XnGestureHelper - -#endif // _XNGESTUREDEFS_H_ diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/uiengine/inc/xngesturehelper.h --- a/idlehomescreen/xmluirendering/uiengine/inc/xngesturehelper.h Mon Apr 12 20:35:11 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,178 +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: Gesture helper implementation -* -*/ - - -#ifndef _XNGESTUREHELPER_H_ -#define _XNGESTUREHELPER_H_ - -// System includes -#include - -// User includes -#include "xngesturerecogniser.h" - -// Forward declarations -class CXnNode; -struct TPointerEvent; - -/** - * XnGestureHelper namespace - * Used for the whole gesture family - Gesture recognizer, gesture helper, - * Point array - */ -namespace XnGestureHelper - { - - // Forward declarations - class CHoldingTimer; - class CXnGesture; - - // Constants - const TInt KGestureMinSpeed = 25; - const TInt KGestureMinLength = 100; - - /** - * Implementation of CGestureHelper interface - * - * @ingroup group_xnlayoutengine - */ - NONSHARABLE_CLASS( CXnGestureHelper ) : public CBase - { - - /** private implementation class */ - friend class CHoldingTimer; - - public: - - /** 2-phase constructor */ - static CXnGestureHelper* NewL( CXnNode& aNode ); - - /** Destructor */ - ~CXnGestureHelper(); - - /** - * See GestureHelper, SetHoldingEnabled function - * - * @see CGestureHelper::SetHoldingEnabled - */ - void SetHoldingEnabled( TBool aEnabled ); - - /** - * See Gesturehelper, IsHoldingEnabled function - * - * @see CGestureHelper::IsHoldingEnabled - */ - TBool IsHoldingEnabled() const; - - /** - * Gets the owner - * - * @return Owner - */ - CXnNode* Owner() const; - - /** - * Sets destination - * - * @aParam Destination - */ - void SetDestination( CXnNode* aDestination ); - - /** - * Gets destination - * - * @return Destination - */ - CXnNode* Destination() const; - - /** - * See GestureHelper Handlepointervent - * - * @see CGestureHelper::HandlePointerEventL - */ - TXnGestureCode HandlePointerEventL( const TPointerEvent& aEvent ); - - /** Reset helper state */ - void Reset(); - - private: - - /** Constructor */ - CXnGestureHelper( CXnNode& aNode ); - - /** - * Returns if the helper is processing - * - * @return ETrue if the helper has not started processing a gesture - */ - inline TBool IsIdle() const; - - /** - * Add a point to the sequence of points that make up the gesture - */ - inline void AddPointL( const TPointerEvent& aEvent ); - - /** - * Add a point to the sequence of points that make up the gesture - * - * @return - */ - inline TInt AddPoint( const TPointerEvent& aEvent ); - - /** - * Activates holding and notifies observer that holding has been - * started - */ - void StartHoldingL(); - - /** - * Check if swipe if between defined values - * - * @return Swiping left/right/none - */ - TXnGestureCode ValidSwipe() const; - - private: - - /** - * Gesture owner, Not owned. - */ - CXnNode& iOwner; - - /** - * Gesture is the logical representation of a sequence of points - * arriving at certain times - */ - CXnGesture* iGesture; - - /** - * holding is activated when user keeps pointer down in the same place - * for a longer period. the holding timer activates off when enough - * time has passed. - */ - CHoldingTimer* iHoldingTimer; - - /** - * Gesture destination, Not owned. - */ - CXnNode* iDestination; - - TXnGestureCode iDirection; - }; - } // GestureHelper - -#endif // _XNGESTUREHELPER_H_ diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/uiengine/inc/xngesturerecogniser.h --- a/idlehomescreen/xmluirendering/uiengine/inc/xngesturerecogniser.h Mon Apr 12 20:35:11 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,113 +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: Algorithm to recognise gesture from a stream of points -* -*/ - - -#ifndef _XNGESTURERECOGNISER_H_ -#define _XNGESTURERECOGNISER_H_ - -// System includes -#include - - -/** - * XnGestureHelper namespace - * Used for the whole gesture family - Gesture recognizer, gesture helper, - * Point array - */ -namespace XnGestureHelper - { - - // Forward declarations - class TXnPointArray; - - /** - * flag that indicates gesture code is a holding code - * clients should use MGestureEvent::IsHolding - */ - const TInt EFlagHold = 0x10000000; - - /** - * Gesture codes and states - */ - enum TXnGestureCode - { - // states - /** gesture just started (user pressed stylus down)*/ - EGestureStart = 0x00000001, - /** user moved stylus (may be holding or not holding) */ - EGestureDrag = 0x00000002, - /** user lifted stylus while user was holding */ - EGestureReleased = 0x00000003, - - // gestures - /** gesture was not recognised */ - EGestureUnknown = 0x00000005, - /** these codes are sent when user lifts stylus - * (if holding not started) - */ - EGestureTap = 0x00000006, - /** first tap emits EGestureTap */ - EGestureDoubleTap = 0x00000007, - /** swipe left */ - EGestureSwipeLeft = 0x00000008, - /** swipe right */ - EGestureSwipeRight = 0x00000009, - /** swipe up */ - EGestureSwipeUp = 0x0000000A, - /** swipe down */ - EGestureSwipeDown = 0x0000000B, - EGestureCanceled = 0x0000000C, - /** - * these codes are sent when user initiates holding by keeping stylus - * in same place for a longer duration - */ - EGestureHoldLeft = EGestureSwipeLeft | EFlagHold, - EGestureHoldRight = EGestureSwipeRight | EFlagHold, - EGestureHoldUp = EGestureSwipeUp | EFlagHold, - EGestureHoldDown = EGestureSwipeDown | EFlagHold - }; - - //Class declaration - - /** - * Set of algorithms to recognise gesture from a stream of points - * Note: Not a static class or a function pointer, just to make it - * sligthly easier to replace it with a heavier implementation - * - * @ingroup group_xnlayoutengine - */ - NONSHARABLE_CLASS( TXnGestureRecogniser ) - { - public: - - /** - * Translates points into a gesture code - * @param aPoints Points that form the gestures. Client is not - * required to pass in repeated points (sequential - * points that are almost in the same place) - * @param aIsHolding ETrue if gesture was ended at pointer being held - * down at same position - * EFalse if gesture ended at pointer being released - * @return recognised gesture id or EUnknownGesture - */ - TXnGestureCode GestureCode( const TXnPointArray& aPoints ) const; - - TXnGestureCode LastDirection( const TXnPointArray& aPoints ) const; - }; - } // namespace XnGestureHelper - -#endif // _XNGESTURERECOGNISER_H_ diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/uiengine/inc/xnhittest.h --- a/idlehomescreen/xmluirendering/uiengine/inc/xnhittest.h Mon Apr 12 20:35:11 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,176 +0,0 @@ -/* -* 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: Class to hold hit region information -* -*/ - - -#ifndef _XNHITTEST_H -#define _XNHITTEST_H - -// System includes -#include -#include - -// Forward declarations -class CXnControlAdapter; - -namespace XnHitTest - { - const TInt EIgnoreEventsUntilNextPointerUp = 0x01; - const TInt EIgnoreStylusUpTriggers = 0x02; - } - -// Class declaration - -/** - * Holds hit region information - * - * @ingroup group_xnlayoutengine - * @lib xn3layoutengine.lib - * @since S60 5.0 - */ -NONSHARABLE_CLASS( CXnHitTest ) : public CBase, - public MCoeMessageMonitorObserver - { -public: - // Constructors and destructor - - /** - * Two-phased constructor. - */ - static CXnHitTest* NewL(); - - /** - * Two-phased constructor. Leaving on stack - */ - static CXnHitTest* NewLC(); - - ~CXnHitTest(); - -private: - CXnHitTest(); - -private: - // from MCoeMessageMonitorObserver - - /** - * @see MCoeMessageMonitorObserver documentation - */ - void MonitorWsMessage( const TWsEvent& aEvent ); - -public: - // New functions - - /** - * Adds a control to hit region. - * - * @since S60 5.0 - * @param aControl The control to be added. - */ - void AddControl( CXnControlAdapter* aControl ); - - /** - * Removes a control from hit region. - * - * @since S60 5.0 - * @param aControl The control to be removed. - */ - void RemoveControl( CXnControlAdapter* aControl ); - - /** - * Set flags - * - * @since S60 5.0 - * @param aFlags flags to be added - */ - void SetFlags( const TInt aFlags ); - - /** - * Clear flags - * - * @since S60 5.0 - * @param aFlags flags to be cleared, 0x0F default - */ - void ClearFlags( const TInt aFlags = 0x0F ); - - /** - * Get flags - * - * @since S60 5.0 - * @return Flags - */ - TInt Flags() const; - - /** - * Flushes hit test state - * - * @since S60 5.0 - */ - void Flush(); - - /** - * Gets hit region count - * - * @since S60 5.0 - * @return Count - */ - TInt HitRegionCount() const; - - /** - * Gets hit region - * - * @since S60 5.0 - * @return Region - */ - CXnControlAdapter* HitRegion() const; - - /** - * Tests whether a pointer event occurred inside the control's hit region. - * - * @since S60 5.0 - * @param aPointEvent The pointer event. - * @param aControl - * @return ETrue if the specified point lies inside the hit region, - * EFalse if not. - */ - TBool HitRegionContainsL( const TPointerEvent& aPointerEvent, - const CXnControlAdapter& aControl ); - - /** - * Gets the last pointer event - * - * @since S60 5.0 - * @return Last pointer event - */ - const TPointerEvent& PointerEvent() const; - -protected: - /** - * Two-phased constructor. - */ - void ConstructL(); - -private: - // data - - /** Hit region */ - RPointerArray< CXnControlAdapter > iHitRegion; - /** Pointer event */ - TPointerEvent iPointerEvent; - /** Flags */ - TInt iFlags; - }; - -#endif // _XNHITTEST_H diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/uiengine/inc/xnkeyeventdispatcher.h --- a/idlehomescreen/xmluirendering/uiengine/inc/xnkeyeventdispatcher.h Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/xmluirendering/uiengine/inc/xnkeyeventdispatcher.h Fri Apr 23 13:22:20 2010 +0100 @@ -160,15 +160,28 @@ */ void ClearPassiveFocusedNodesL(); + /** + * Clears dispatcher's internal state. + * + * @since S60 5.2 + */ + void ClearStateL(); + + /** + * Returns the last pointer event + * + * @since S60 5.2 + * @return Last pointer event + */ + const TPointerEvent& PointerEvent() const; + private: // new functions void SetNodeL( CXnNode* aToLose, CXnNode* aToGain, TBool aNotify, TInt aSource = 0 ); - void ResolveAndSetFocusL(); - - void ClearStateL(); + void ResolveAndSetFocusL(); protected: // New functions @@ -223,6 +236,8 @@ CEikButtonGroupContainer* iCbaContainer; /** For storing the nodes that have passive focus. */ RPointerArray< CXnNode > iPassiveFocusedNodes; + /** Last pointer event */ + TPointerEvent iPointerEvent; }; #endif //__XNKEYEVENTDISPATCHER_H__ diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/uiengine/inc/xnpointarray.h --- a/idlehomescreen/xmluirendering/uiengine/inc/xnpointarray.h Mon Apr 12 20:35:11 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,101 +0,0 @@ -/* -* 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: Array of points -* -*/ - - -#ifndef _XNPOINTARRAY_H_ -#define _XNPOINTARRAY_H_ - -// System includes -#include - -/** - * XnGestureHelper namespace - * Used for the whole gesture family - Gesture recognizer, gesture helper, - * Point array - */ -namespace XnGestureHelper - { - - /** - * Represents a single point given at certain time - */ - struct TXnPointEntry - { - - /** constructor */ - inline TXnPointEntry( const TPoint& aPos, const TTime& aTime ); - - TPoint iPos; - TTime iTime; - }; - - /** - * Array of points that wraps another point array - * The purpose of this class is to allow deriving classes to override [] - * and in that member function adjust the point, e.g., by setting one - * axis to always a constant value. This allows providing a sequence of - * points to the recogniser in which the other axis is ignored. - * - * @ingroup group_xnlayoutengine - */ - NONSHARABLE_CLASS( TXnPointArray ) - { - public: - - /** - * Constructor - * - * @param aPoints points array to wrap (and filter) - */ - TXnPointArray( const RArray< TXnPointEntry >& aPoints ); - - /** - * Length of the array - * - * @return Length of the array - */ - TInt Count() const; - - /** - * Returns point at position, may be filtered - * virtual so deriving classes can modify the point - * (e.g., filter one axis) - * - * @return A filtered point at aIndex. Default implementation same - * as Raw(...) - */ - virtual TPoint operator[]( TInt aIndex ) const; - - /** - * Nonfiltered index - * - * @return An raw, non-filtered point at aIndex - */ - const TPoint& Raw( TInt aIndex ) const; - - private: - - /** Array of points, Not owned */ - const RArray< TXnPointEntry >& iPoints; - }; - } // namespace XnGestureHelper - - -// Inline functions -#include "xnpointarray.inl" - -#endif // _XNPOINTARRAY_H_ diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/uiengine/inc/xnpointarray.inl --- a/idlehomescreen/xmluirendering/uiengine/inc/xnpointarray.inl Mon Apr 12 20:35:11 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,35 +0,0 @@ -/* -* 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: Array of points - inline functions -* -*/ - - -#ifndef _XNPOINTARRAY_INL_ -#define _XNPOINTARRAY_INL_ - -namespace XnGestureHelper - { - - // ----------------------------------------------------------------------- - // TXnPointEntry's Constructor - // ----------------------------------------------------------------------- - // - inline TXnPointEntry::TXnPointEntry( const TPoint& aPos, - const TTime& aTime ) : iPos( aPos ), iTime( aTime ) - { - }; - } - -#endif // _XNPOINTARRAY_INL_ diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/uiengine/inc/xnspbgcleaner.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/xmluirendering/uiengine/inc/xnspbgcleaner.h Fri Apr 23 13:22:20 2010 +0100 @@ -0,0 +1,73 @@ +/* +* Copyright (c) 2010 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: +* Declares statuspane's background cleaner. +* +*/ + +#ifndef __XNSPBGCLEANER_ +#define __XNSPBGCLEANER_ + +// Forward declarations + +/** + * Statuspane background cleaner. + * + * @class CXnSpBgCleaner xnspbgcleaner.h + */ +NONSHARABLE_CLASS( CXnSpBgCleaner ) : public CCoeControl + { +public: + /** + * Two-phased constructors. + */ + static CXnSpBgCleaner* NewL(); + static CXnSpBgCleaner* NewLC(); + + /** Destructor */ + ~CXnSpBgCleaner(); + +private: + /** constructor */ + CXnSpBgCleaner(); + + /** 2nd phase constructor */ + void ConstructL(); + +protected: // from base class CCoeControl + + /** + * Handles a change to the control's resources + * + * @see CCoeControl::HandleResourceChange + */ + void HandleResourceChange( TInt aType ); + + /** + * Sets the control's extent, specifying a rectangle. + * + * @see CCoeControl::SizeChanged + */ + void SizeChanged(); + + /* + * Draws the control. + * + * @see CCoeControl::Draw + */ + void Draw( const TRect& aRect ) const; + + }; + +#endif // __XNSPBGCLEANER_ diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/uiengine/inc/xnuiengineimpl.h --- a/idlehomescreen/xmluirendering/uiengine/inc/xnuiengineimpl.h Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/xmluirendering/uiengine/inc/xnuiengineimpl.h Fri Apr 23 13:22:20 2010 +0100 @@ -38,7 +38,6 @@ class CXnEditor; class CXnResource; class CXnEditMode; -class CXnHitTest; class CXnViewManager; class CXnViewData; class CXnPluginData; @@ -80,14 +79,13 @@ /** Is partial screen input open */ TBool iPartialScreenOpen; /** Partial screen block progression. Own. */ - HBufC8* iPartialScreenBlock; - - TXnSplitScreenState(): iPartialScreenBlock( NULL ){} - - ~TXnSplitScreenState() - { - delete iPartialScreenBlock; - } + const TDesC8* iPartialScreenBlock; + + // ctor + TXnSplitScreenState() : + iPartialScreenEditorNode( NULL ), + iPartialScreenOpen( EFalse ), + iPartialScreenBlock( NULL ) {} }; @@ -470,14 +468,6 @@ RPointerArray< CXnNode >* Plugins(); /** - * Gets hit test - * - * @since S60 5.1 - * @return the hittest - */ - CXnHitTest& HitTest() const; - - /** * Gets theme resource file * * @since S60 5.1 @@ -615,19 +605,13 @@ /** * Set partial screen block * - * @since Series 60 5.2 + * @since Series 60 5.2 + * @param CXnNode aParent parent node * @param TDesC8 aBlockProgression set layout direction */ - void SetPartialScreenBlockProgressionL( const TDesC8& aBlockProgression ); - - /** - * Store partial screen block - * - * @since Series 60 5.2 - * @param TDesC8 aBlockProgression set layout direction - */ - void StorePartialScreenBlockProgressionL(); - + void SetPartialScreenBlockProgressionL( + CXnNode* aParent, const TDesC8& aBlockProgression ); + /** * Handles skin change resource change * @@ -752,8 +736,6 @@ TRect iClientRect; /** Owned. Edit mode storage; */ CXnEditMode* iEditMode; - /** Owned. hittest */ - CXnHitTest* iHitTest; /** Disable count */ TInt iDisableCount; /**Split screen states*/ diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/uiengine/inc/xnviewadapter.h --- a/idlehomescreen/xmluirendering/uiengine/inc/xnviewadapter.h Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/xmluirendering/uiengine/inc/xnviewadapter.h Fri Apr 23 13:22:20 2010 +0100 @@ -182,9 +182,11 @@ * @since S60 5.0 * @param aContainer Container to activate * @param aEnterEditState ETrue if activated container should be set to edit state. + * @param aForceActivation if ETrue forces deactivation and then activation even if + * the conntainer remains the same */ void ActivateContainerL( CXnViewData& aContainer, - TBool aEnterEditState = EFalse ); + TBool aEnterEditState = EFalse, TBool aForceActivation = EFalse ); /** * Deactivates the current container from view. diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/uiengine/inc/xnwaitdialog.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/xmluirendering/uiengine/inc/xnwaitdialog.h Fri Apr 23 13:22:20 2010 +0100 @@ -0,0 +1,82 @@ +/* +* Copyright (c) 2010 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: +* Declares wait dialog that doesn't consume key events. +* +*/ + + +#ifndef _XNWAITDIALOG_H +#define _XNWAITDIALOG_H + +// INCLUDES +#include + +// CONSTANTS + +// MACROS + +// DATA TYPES + +// FUNCTION PROTOTYPES + +// FORWARD DECLARATIONS + +// CLASS DECLARATION + + +/** + * Wait Dialog without key event handling + * + * @ingroup group_xnlayoutengine + * @lib xn3layoutengine.lib + * @since S60 5.0 + */ +NONSHARABLE_CLASS( CXnWaitDialog ) : public CAknWaitDialog + { + +public: + // Constructors and destructor + + /** + * Class constructor + * + * @param aSelfPtr Pointer to itself. The pointer needs to be + * valid when the dialog is dismissed and must not + * be on the stack. + * @param aVisibilityDelayOff If set ETrue the dialog will be visible + * immediality. Use only when the length of + * the process is ALWAYS over 1.5 seconds. + */ + CXnWaitDialog( CEikDialog** aSelfPtr, TBool aVisibilityDelayOff ); + + /** + * Destructor + */ + ~CXnWaitDialog(); + +public: // From CAknWaitDialog + + /** + * From CAknWaitDialog + * @since S60 5.2 + * @param aKeyEvent the key event + * @param aType the type of the event + * @return TKeyResponse key event was used by this control or not + */ + TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, + TEventCode aType ); + }; +#endif // _XNWAITDIALOG_H + diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/uiengine/inc/xnwallpaperview.h --- a/idlehomescreen/xmluirendering/uiengine/inc/xnwallpaperview.h Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/xmluirendering/uiengine/inc/xnwallpaperview.h Fri Apr 23 13:22:20 2010 +0100 @@ -32,6 +32,7 @@ class CXnUiEngine; class TVwsViewId; class CPeriodic; +class CXnSpBgCleaner; // Constants const TUid KWallpaperViewUid = { 0x200286DB }; @@ -139,6 +140,13 @@ * Resource file offset */ TInt iResourceOffset; + + /** + * Statuspane background cleaner. + * Own. + */ + CXnSpBgCleaner* iXnSpBgCleaner; + }; #endif // CXNWALLPAPERVIEW_H diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/uiengine/inc/xnwidgetextensionadapter.h --- a/idlehomescreen/xmluirendering/uiengine/inc/xnwidgetextensionadapter.h Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/xmluirendering/uiengine/inc/xnwidgetextensionadapter.h Fri Apr 23 13:22:20 2010 +0100 @@ -81,12 +81,17 @@ /** * see CCoeControl */ - void HandlePointerEventL(const TPointerEvent& aPointerEvent); + void HandlePointerEventL( const TPointerEvent& aPointerEvent ); /** * see CCoeControl */ - void Draw(const TRect& aRect) const; + void Draw( const TRect& aRect ) const; + + /** + * @see CXnControlAdapter + */ + void DoHandlePropertyChangeL( CXnProperty* aProperty = NULL ); private: // from MXnUiStateObserver @@ -135,7 +140,9 @@ // New functions void HidePopupL(); - + + void ChangePopupPosition(); + void CalculatePosition(); private: diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/uiengine/src/xnappuiadapterimpl.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xnappuiadapterimpl.cpp Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/xmluirendering/uiengine/src/xnappuiadapterimpl.cpp Fri Apr 23 13:22:20 2010 +0100 @@ -22,6 +22,9 @@ #include #include #include +#include +#include +#include // User includes #include "xnappuiadapter.h" @@ -34,6 +37,7 @@ #include "xneditor.h" #include "xnwallpaperview.h" #include "xneffectmanager.h" +#include "xnwaitdialog.h" #include "xnappuiadapterimpl.h" @@ -121,6 +125,9 @@ iEffectManager = CXnEffectManager::NewL(); + iBackupRestoreObserver = CXnPropertySubscriber::NewL( + KUidSystemCategory, conn::KUidBackupRestoreKey, *this ); + __TIME_ENDMARK( "CXnAppUiAdapterImpl::ConstructL, done", time ); } @@ -147,7 +154,14 @@ // ----------------------------------------------------------------------------- // CXnAppUiAdapterImpl::~CXnAppUiAdapterImpl() - { + { + if ( iXnWaitDialog ) + { + TRAP_IGNORE( iXnWaitDialog->ProcessFinishedL(); ); + } + + delete iBackupRestoreObserver; + delete iUiEngine; delete iUiStateListener; @@ -256,4 +270,54 @@ iUiStateListener->HandleResourceChangeL( aType ); } +// ----------------------------------------------------------------------------- +// CXnAppUiAdapterImpl::DisplayWaitDialogL +// Displays wait dialog during backup/restore. +// ----------------------------------------------------------------------------- +// +void CXnAppUiAdapterImpl::DisplayWaitDialogL() + { + if ( !iXnWaitDialog ) + { + iXnWaitDialog = new( ELeave ) CXnWaitDialog( + reinterpret_cast( &iXnWaitDialog ), ETrue ); + iXnWaitDialog->SetCallback( this ); + iXnWaitDialog->ExecuteLD( R_BACKUP_RESTORE_WAIT_DIALOG ); + } + } + +// ----------------------------------------------------------------------------- +// CXnAppUiAdapterImpl::BackupRestoreEvent +// Property changed notification callback +// ----------------------------------------------------------------------------- +// +void CXnAppUiAdapterImpl::PropertyChangedL( const TUint32 aKey, const TInt aValue ) + { + const TUint mask( conn::KBURPartTypeMask ^ conn::EBURNormal ); + if ( aKey == conn::KUidBackupRestoreKey ) + { + if ( aValue & mask ) + { + // Any type of backup or restore operation started + DisplayWaitDialogL(); + } + else if ( iXnWaitDialog ) + { + // Any type of backup or restore operation ended + iXnWaitDialog->ProcessFinishedL(); + // ProcessFinishedL() will NULL iXnWaitDialog + } + } + } + +// ---------------------------------------------------------------------------- +// CXnAppUiAdapterImpl::DialogDismissedL() +// Callback method from MProgressDialogCallback interface. +// ---------------------------------------------------------------------------- +// +void CXnAppUiAdapterImpl::DialogDismissedL(TInt /*aButtonId*/) + { + // No implementation required. + } + // End of file diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/uiengine/src/xnbackgroundmanager.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xnbackgroundmanager.cpp Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/xmluirendering/uiengine/src/xnbackgroundmanager.cpp Fri Apr 23 13:22:20 2010 +0100 @@ -141,6 +141,7 @@ delete iBgImage; delete iBgImagePath; delete iOomSysHandler; + delete iSpMask; } // ----------------------------------------------------------------------------- @@ -182,7 +183,7 @@ { SystemGc().DrawBitmap( iRect, wallpaper ); } - DrawStatusPaneMask(); + DrawStatusPaneMask(); } // Skin bg is used by default @@ -220,6 +221,34 @@ } } iBgContext->SetRect( iRect ); + + // create status pane mask image and set size + if( iSpMask ) + { + delete iSpMask; + iSpMask = NULL; + } + + TRect spRect; + AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EStatusPane, spRect ); + + TInt err( KErrNone ); + + if( Layout_Meta_Data::IsLandscapeOrientation() ) + { + TRAP( err, iSpMask = AknsUtils::CreateBitmapL( AknsUtils::SkinInstance(), + KAknsIIDQgnGrafBgLscTopMaskIcon ) ); + } + else + { + TRAP( err, iSpMask = AknsUtils::CreateBitmapL( AknsUtils::SkinInstance(), + KAknsIIDQgnGrafBgPrtTopMaskIcon ) ); + } + + if( iSpMask ) + { + AknIconUtils::SetSize( iSpMask, spRect.Size(), EAspectRatioNotPreserved ); + } } // ----------------------------------------------------------------------------- @@ -511,7 +540,7 @@ } else if ( selectedIndex == 1 ) { - if ( CXnOomSysHandler::HeapAvailable( CXnOomSysHandler::EMem2MB ) ) + if ( CXnOomSysHandler::HeapAvailable( CXnOomSysHandler::EMem6MB ) ) { CXnAppUiAdapter& appui( iViewManager.AppUiAdapter() ); @@ -674,7 +703,7 @@ if( path != KNullDesC && !bitmap ) { TInt err = CacheWallpaperL( path, *viewData ); - if( err == KErrNone ) + if( err == KErrNone && viewData == &iViewManager.ActiveViewData() ) { drawingNeeded = ETrue; } @@ -683,6 +712,13 @@ if( drawingNeeded ) { UpdateScreen(); + + TInt err = AknsWallpaperUtils::SetIdleWallpaper( + iViewManager.ActiveViewData().WallpaperImagePath(), NULL ); + if( err == KErrNone ) + { + iIntUpdate++; + } } } else @@ -948,34 +984,11 @@ // void CXnBackgroundManager::DrawStatusPaneMask() const { - TRect spRect; - AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EStatusPane, spRect ); - - CFbsBitmap* maskBmp( NULL ); - TInt err( KErrNone ); - - if( Layout_Meta_Data::IsLandscapeOrientation() ) - { - TRAP( err, maskBmp = AknsUtils::CreateBitmapL( AknsUtils::SkinInstance(), - KAknsIIDQgnGrafBgLscTopMaskIcon ) ); - } - else + if( iSpMask ) { - TRAP( err, maskBmp = AknsUtils::CreateBitmapL( AknsUtils::SkinInstance(), - KAknsIIDQgnGrafBgPrtTopMaskIcon ) ); - } - - if( err ) - { - return; - } - - // draw mask - if( maskBmp ) - { - AknIconUtils::SetSize( maskBmp, spRect.Size(), EAspectRatioNotPreserved ); - SystemGc().DrawBitmap( spRect, maskBmp ); - delete maskBmp; + TSize bmpSize = iSpMask->SizeInPixels(); + TRect spRect( 0, 0, bmpSize.iWidth, bmpSize.iHeight ); + SystemGc().DrawBitmap( spRect, iSpMask ); } } diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/uiengine/src/xncomposer.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xncomposer.cpp Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/xmluirendering/uiengine/src/xncomposer.cpp Fri Apr 23 13:22:20 2010 +0100 @@ -102,7 +102,7 @@ // @return returns pointer to desired node, NULL if nothing found // --------------------------------------------------------------------------- // -CXnDomNode* FindNodeByName( CXnDomNode* aNode, const TDesC8& aName ) +static CXnDomNode* FindNodeByName( CXnDomNode* aNode, const TDesC8& aName ) { if ( !aNode ) { @@ -131,12 +131,57 @@ } // --------------------------------------------------------------------------- +// Finds template publisher name +// +// --------------------------------------------------------------------------- +// +static const TDesC8& FindTemplatePublisherName( CXnDomNode* aNode ) + { + if ( !aNode ) + { + return KNullDesC8(); + } + + CXnDomList& list( aNode->ChildNodes() ); + + for ( TInt i = 0; i < list.Length(); i++ ) + { + CXnDomNode* node = static_cast< CXnDomNode* >( list.Item( i ) ); + + // Find element + if ( node->Name() == KConfigurationModel ) + { + CXnDomList& attributes( node->AttributeList() ); + + CXnDomAttribute* name( + static_cast< CXnDomAttribute* >( + attributes.FindByName( XnPropertyNames::action::KName ) ) ); + + // Find attribute name="publisher" + if ( name && name->Value() == KPublisher ) + { + CXnDomAttribute* value( + static_cast< CXnDomAttribute* >( + attributes.FindByName( XnPropertyNames::action::KValue ) ) ); + + if ( value ) + { + return value->Value(); + } + } + } + } + + return KNullDesC8(); + } + +// --------------------------------------------------------------------------- // FindNodeById // Finds recursively node by id // @return returns pointer to desired node, NULL if nothing found // --------------------------------------------------------------------------- // -CXnDomNode* FindNodeById( CXnDomNode* aNode, const TDesC8& aId ) +static CXnDomNode* FindNodeById( CXnDomNode* aNode, const TDesC8& aId ) { if ( !aNode ) { @@ -595,12 +640,16 @@ if( bgManager.WallpaperType() == CXnBackgroundManager::EPageSpecific ) { HBufC* bgImage = ItemValueL( *configuration, KWallpaper, KPath ); - CleanupStack::PushL( bgImage ); - if( bgImage && bgImage->Length() > 0 ) + if ( bgImage ) { - bgManager.CacheWallpaperL( bgImage->Des(), aViewData ); + CleanupStack::PushL( bgImage ); + bgImage->Des().Trim(); + if( bgImage && bgImage->Length() > 0 ) + { + bgManager.CacheWallpaperL( bgImage->Des(), aViewData ); + } + CleanupStack::PopAndDestroy( bgImage ); } - CleanupStack::PopAndDestroy( bgImage ); } if ( pluginNode ) { @@ -736,20 +785,9 @@ if ( info.Type() == KKeyTemplate ) { - CXnDomNode* node( FindNodeByName( widgetRoot, KContentSourceNode ) ); + const TDesC8& name( FindTemplatePublisherName( widgetRoot ) ); - if ( node ) - { - CXnDomList& attributes( node->AttributeList() ); - - CXnDomAttribute* attribute( static_cast< CXnDomAttribute* >( - attributes.FindByName( KName ) ) ); - - if ( attribute ) - { - aPluginData.SetPublisherNameL( attribute->Value() ); - } - } + aPluginData.SetPublisherNameL( name ); } retval = KErrNone; diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/uiengine/src/xncontroladapterimpl.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xncontroladapterimpl.cpp Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/xmluirendering/uiengine/src/xncontroladapterimpl.cpp Fri Apr 23 13:22:20 2010 +0100 @@ -53,7 +53,6 @@ #include "xndomlist.h" #include "xnodt.h" #include "xnresource.h" -#include "xnhittest.h" #include "xnplugindata.h" #include "xnnode.h" #include "xnpanic.h" @@ -63,9 +62,6 @@ #include "xneditmode.h" _LIT8(KScrollableBoxNodeName, "scrollablebox"); - -using namespace XnGestureHelper; -#include "xngesture.h" // Constants const TInt KSkinGfxInnerRectShrink = 5; @@ -74,7 +70,9 @@ const TInt KLongTapStartShortDelay( 150000 ); // 0.15s for Sk const TInt KLongTapStartLongDelay( 500000 ); // 0.5s const TInt KLongTapTimeShortDelay( 600000 ); // 0.6s for SK -const TInt KLongTapTimeLongDelay( 1500000 ); // 1.5s +const TInt KLongTapTimeLongDelay( 1500000 ); // 1.5s + +const TInt KDragThreshold = 20; // pixels // LOCAL FUNCTION PROTOTYPES static TRgb ConvertHslToRgb( TInt aHue, TInt aSaturation, TInt aLightness ); @@ -3356,44 +3354,6 @@ // ----------------------------------------------------------------------------- // SoftkeyNode -// Gets the node of softkey according to index -// ----------------------------------------------------------------------------- -// -static CXnNode* SoftkeyNodeL( CXnNode* aMenuBarNode, const TDesC8& aSoftkey ) - { - if ( aMenuBarNode ) - { - XnMenuInterface::MXnMenuInterface* menuIf( NULL ); - XnComponentInterface::MakeInterfaceL( menuIf, aMenuBarNode->AppIfL() ); - CXnNodePluginIf* skNode( NULL ); - if ( menuIf ) - { - if ( aSoftkey == XnPropertyNames::softkey::type::KLeft ) - { - skNode = menuIf->SoftKeyL( - XnMenuInterface::MXnMenuInterface::ELeft ); - } - else if ( aSoftkey == XnPropertyNames::softkey::type::KMiddle ) - { - skNode = menuIf->SoftKeyL( - XnMenuInterface::MXnMenuInterface::ECenter ); - } - else if ( aSoftkey == XnPropertyNames::softkey::type::KRight ) - { - skNode = menuIf->SoftKeyL( - XnMenuInterface::MXnMenuInterface::ERight ); - } - } - if ( skNode ) - { - return &skNode->Node(); - } - } - return NULL; - } - -// ----------------------------------------------------------------------------- -// SoftkeyNode // Gets the node of softkey according to pointer location // ----------------------------------------------------------------------------- // @@ -3654,11 +3614,8 @@ iAnimation->Stop(); delete iAnimation; } - - if ( iGestureHelper ) - { - delete iGestureHelper; - } + + delete iGestureFw; } // ----------------------------------------------------------------------------- @@ -3722,29 +3679,21 @@ for ( ; temp; temp = temp->Parent() ) { if ( temp == menuBar ) - { - // This is softkey node - const TDesC8* pos( NULL ); - node = NULL; - - if ( aKeyEvent.iScanCode == EStdKeyDevice0 ) - { - pos = &XnPropertyNames::softkey::type::KLeft; - } - else if ( aKeyEvent.iScanCode == EStdKeyDevice1 ) + { + // This is softkey node + XnMenuInterface::MXnMenuInterface* menuIf( NULL ); + XnComponentInterface::MakeInterfaceL( menuIf, menuBar->AppIfL() ); + + if ( menuIf ) { - pos = &XnPropertyNames::softkey::type::KRight; - } - else if ( aKeyEvent.iScanCode == EStdKeyDevice3 ) - { - pos = &XnPropertyNames::softkey::type::KMiddle; + CXnNodePluginIf* eventNode( menuIf->KeyEventNode() ); + + if ( eventNode ) + { + node = &eventNode->Node(); + } } - - if ( pos ) - { - node = SoftkeyNodeL( menuBar, *pos ); - } - + break; } } @@ -3759,8 +3708,7 @@ aKeyEvent.iScanCode == EStdKeyDevice3 ) // MSK { if ( aType == EEventKeyDown ) - { - iKeyDownNode = node; + { iLongtap = EFalse; if ( aKeyEvent.iScanCode == EStdKeyDevice3 || @@ -3789,10 +3737,6 @@ } else if( aType == EEventKey ) { - if( iKeyDownNode != node) - { - node = iKeyDownNode; - } if ( aKeyEvent.iRepeats == 0 ) { if ( !HasHoldTrigger( node->DomNode() ) ) @@ -3821,10 +3765,6 @@ { if ( !iLongtap ) { - if( iKeyDownNode != node) - { - node = iKeyDownNode; - } if ( HasHoldTrigger( node->DomNode() ) ) { // Hold trigger defined, report activate event here @@ -3934,6 +3874,23 @@ } // ----------------------------------------------------------------------------- +// CXnControlAdapterImpl::IsDragThresholdExceeded +// Checks if drag threshold is exceeded +// ----------------------------------------------------------------------------- +// +TBool CXnControlAdapterImpl::IsDragThresholdExceeded( const TPoint& aPoint ) + { + TBool ret = EFalse; + TPoint distance = aPoint - iButtonDownStartPoint; + if ( Abs( distance.iX ) >= KDragThreshold || + Abs( distance.iY ) >= KDragThreshold ) + { + ret = ETrue; + } + return ret; + } + +// ----------------------------------------------------------------------------- // CXnControlAdapterImpl::HandlePointerEventL // Handle pointer events // ----------------------------------------------------------------------------- @@ -3945,24 +3902,15 @@ CXnNode* node( &iNode.Node() ); CXnUiEngine* engine( node->UiEngine() ); - - if(!engine->IsPartialInputActive()) - { - // Forward event to gesture helper - if( PassEventToGestureHelperL( aPointerEvent ) ) - { - CXnAppUiAdapter& appui( engine->AppUiAdapter() ); - CXnViewData& data( appui.ViewManager().ActiveViewData() ); - - CXnViewControlAdapter* control = - static_cast< CXnViewControlAdapter* >( data.ViewNode()->Control() ); - - control->ResetGrabbing(); - - // Swipe took place, consume this event - return ETrue; - } - + + if ( !engine->IsPartialInputActive() ) + { + InitializeGestureL( aPointerEvent ); + } + else + { + // reset destination + iGestureDestination = NULL; } TBool menuBar( node == engine->MenuBarNode() ); @@ -4031,6 +3979,8 @@ if ( !menuBar && !engine->FocusedNode() ) { + // save starting point + iButtonDownStartPoint = event.iPosition; // Require focus to be shown engine->AppUiAdapter().ShowFocus(); @@ -4045,25 +3995,18 @@ node->SetStateL( XnPropertyNames::style::common::KFocus, XnEventSource::EStylus ); - node->SetStateL( - XnPropertyNames::style::common::KPressedDown ); } } else if ( event.iType == TPointerEvent::EDrag ) { if ( node->IsStateSet( XnPropertyNames::style::common::KFocus ) ) { - if ( !node->MarginRect().Contains( event.iPosition ) ) + if ( IsDragThresholdExceeded( event.iPosition ) || + !node->MarginRect().Contains( event.iPosition ) ) { - // Remove pressed down + // Remove focus node->UnsetStateL( - XnPropertyNames::style::common::KPressedDown ); - } - if ( node->MarginRect().Contains( event.iPosition ) ) - { - // Add pressed down - node->SetStateL( - XnPropertyNames::style::common::KPressedDown ); + XnPropertyNames::style::common::KFocus ); } } } @@ -4076,8 +4019,7 @@ node->SetStateL( XnPropertyNames::style::common::KActive ); } else if ( ( node->MarginRect().Contains( event.iPosition ) && - node->IsStateSet( XnPropertyNames::style::common::KFocus ) && - node->IsStateSet( XnPropertyNames::style::common::KPressedDown ) ) ) + node->IsStateSet( XnPropertyNames::style::common::KFocus ) ) ) { #ifdef RD_TACTILE_FEEDBACK MTouchFeedback* feedback( MTouchFeedback::Instance() ); @@ -5525,7 +5467,8 @@ if ( CreateGestureHelperL( aNode.Node() ) ) { - iGestureHelper = CXnGestureHelper::NewL( aNode.Node() ); + iGestureFw = CAknTouchGestureFw::NewL( *this, aAdapter ); + iGestureFw->SetGestureInterestL( EAknTouchGestureFwGroupFlick ); } } @@ -5865,104 +5808,58 @@ } // ----------------------------------------------------------------------------- -// PassEventToGestureHelperL -// Forwards event to gesturehelper +// InitializeGestureL +// Sets up gesture // ----------------------------------------------------------------------------- // -TBool CXnControlAdapterImpl::PassEventToGestureHelperL( +void CXnControlAdapterImpl::InitializeGestureL( const TPointerEvent& aPointerEvent ) { - TBool ret( EFalse ); + if ( !iGestureFw || aPointerEvent.iType != TPointerEvent::EButton1Down ) + { + return; + } + + CXnUiEngine* engine( iNode.Node().UiEngine() ); + // Set default destination + iGestureDestination = &iNode.Node(); + + RPointerArray< CXnPluginData >& plugins( + engine->ViewManager()->ActiveViewData().PluginData() ); - CXnNode* node( &iNode.Node() ); - CXnUiEngine* engine( node->UiEngine() ); - - if ( iGestureHelper && iGestureHelper->Owner() == node ) - { - if ( aPointerEvent.iType == TPointerEvent::EButton1Down ) - { - // Set default destination - iGestureHelper->SetDestination( iGestureHelper->Owner() ); + for ( TInt i = 0; i < plugins.Count(); i++ ) + { + CXnPluginData* plugin( plugins[i] ); + + if ( plugin->Occupied() ) + { + CXnNode* widget( plugin->Node()->LayoutNode() ); - RPointerArray< CXnPluginData >& plugins( - engine->ViewManager()->ActiveViewData().PluginData() ); - - for ( TInt i = 0; i < plugins.Count(); i++ ) + if ( widget->MarginRect().Contains( aPointerEvent.iPosition ) ) { - CXnPluginData* plugin( plugins[i] ); - - if ( plugin->Occupied() ) + // Resolve swipe destination + CXnProperty* prop( widget->GetPropertyL( + XnPropertyNames::common::KSwipeDestination ) ); + + if ( prop ) { - CXnNode* widget( plugin->Node()->LayoutNode() ); - - if ( widget->MarginRect().Contains( aPointerEvent.iPosition ) ) - { - // Resolve swipe destination - CXnProperty* prop( widget->GetPropertyL( - XnPropertyNames::common::KSwipeDestination ) ); + const TDesC8& value( prop->StringValue() ); - if ( prop ) - { - const TDesC8& value( prop->StringValue() ); - - if( value == XnPropertyNames::KWidget ) - { - // Set widget as destination - iGestureHelper->SetDestination( widget ); - } - else if( value == XnPropertyNames::KNone ) - { - // Set no destination - iGestureHelper->SetDestination( NULL ); - } - } - - break; + if( value == XnPropertyNames::KWidget ) + { + // Set widget as destination + iGestureDestination = widget; + } + else if( value == XnPropertyNames::KNone ) + { + // Set no destination + iGestureDestination = NULL; } } + break; } } - - TXnGestureCode result( iGestureHelper->HandlePointerEventL( aPointerEvent ) ); - - const TDesC8* swipe( NULL ); - - if ( result == EGestureSwipeLeft ) - { - swipe = &XnPropertyNames::action::trigger::name::swipe::direction::KLeft; - } - else if ( result == EGestureSwipeRight ) - { - swipe = &XnPropertyNames::action::trigger::name::swipe::direction::KRight; - } - - if ( swipe ) - { - CXnNode* destination( iGestureHelper->Destination() ); - - if ( destination ) - { - if ( destination == iGestureHelper->Owner() ) - { - CancelFocusRefusalL( *engine ); - } - - // Remove focus - engine->AppUiAdapter().HideFocus(); - - CXnNode* trigger( BuildSwipeTriggerNodeLC( *engine, *swipe ) ); - destination->ReportXuikonEventL( *trigger ); - CleanupStack::PopAndDestroy( trigger ); - - // If needed we can call here for example HandleSwipeL() - - // Consume this event - ret = ETrue; - } - } - } - - return ret; + } } // ----------------------------------------------------------------------------- @@ -5989,6 +5886,52 @@ return iAdapter->ControlEnv()->FsSession(); } +// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- +// +void CXnControlAdapterImpl::HandleTouchGestureL( MAknTouchGestureFwEvent& aEvent ) + { + if ( aEvent.Group() == EAknTouchGestureFwGroupFlick ) + { + TAknTouchGestureFwType type = aEvent.Type(); + + const TDesC8* swipe( NULL ); + + if ( type == EAknTouchGestureFwFlickLeft ) + { + swipe = &XnPropertyNames::action::trigger::name::swipe::direction::KLeft; + } + else if ( type == EAknTouchGestureFwFlickRight ) + { + swipe = &XnPropertyNames::action::trigger::name::swipe::direction::KRight; + } + + if ( swipe && iGestureDestination ) + { + CXnUiEngine* engine = iNode.Node().UiEngine(); + if ( iGestureDestination == &iNode.Node() ) + { + CancelFocusRefusalL( *engine ); + } + + // Remove focus + engine->AppUiAdapter().HideFocus(); + + CXnNode* trigger( BuildSwipeTriggerNodeLC( *engine, *swipe ) ); + iGestureDestination->ReportXuikonEventL( *trigger ); + CleanupStack::PopAndDestroy( trigger ); + + CXnAppUiAdapter& appui( engine->AppUiAdapter() ); + CXnViewData& data( appui.ViewManager().ActiveViewData() ); + + CXnViewControlAdapter* control = + static_cast< CXnViewControlAdapter* >( data.ViewNode()->Control() ); + + control->ResetGrabbing(); + } + } + } + // ============================= TIconProvider =============================== diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/uiengine/src/xneditmode.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xneditmode.cpp Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/xmluirendering/uiengine/src/xneditmode.cpp Fri Apr 23 13:22:20 2010 +0100 @@ -335,41 +335,51 @@ // ----------------------------------------------------------------------------- // void CXnEditMode::MakeVisible( TBool aVisible ) - { + { + CXnAppUiAdapter& appui( iUiEngine.AppUiAdapter() ); + CXnViewControlAdapter* control = + static_cast< CXnViewControlAdapter* >( + appui.ViewManager().ActiveViewData().ViewNode()->Control() ); + RWindow& window( Window() ); + TBool visible( IsVisible() ? ETrue : EFalse ); - if ( aVisible == visible ) { - return; + if( aVisible ) + { + // If a new Homescreen page has been added in Edit mode, bring the control back to the front + control->DrawableWindow()->SetPointerGrab( EFalse ); + + window.SetOrdinalPosition( 0 ); + window.SetPointerGrab( ETrue ); + window.ClaimPointerGrab(); + } + + return; } CCoeControl::MakeVisible( aVisible ); - - CXnAppUiAdapter& appui( iUiEngine.AppUiAdapter() ); // Remove focus appui.HideFocus(); - - CXnViewControlAdapter* control = static_cast< CXnViewControlAdapter* >( - appui.ViewManager().ActiveViewData().ViewNode()->Control() ); - + if ( aVisible ) { control->DrawableWindow()->SetPointerGrab( EFalse ); - Window().SetOrdinalPosition( 0 ); - Window().SetPointerGrab( ETrue ); - Window().ClaimPointerGrab(); + window.SetOrdinalPosition( 0 ); + window.SetPointerGrab( ETrue ); + window.ClaimPointerGrab(); TRAP_IGNORE( appui.HandleEnterEditModeL( ETrue ) ); } else { - Window().SetPointerGrab( EFalse ); + window.SetPointerGrab( EFalse ); control->DrawableWindow()->SetPointerGrab( ETrue ); - TRAP_IGNORE( appui.HandleEnterEditModeL( EFalse ) ); + TRAP_IGNORE( appui.HandleEnterEditModeL( EFalse ) ); } // Update background @@ -646,7 +656,7 @@ CXnNode* focused( iUiEngine.FocusedNode() ); if ( focused && ( aKeyEvent.iScanCode == EStdKeyDevice3 || - aKeyEvent.iScanCode == EStdKeyEnter ) ) + aKeyEvent.iCode == EKeyEnter ) ) { CXnPluginData* plugin( iUiEngine.ViewManager()-> ActiveViewData().Plugin( focused ) ); @@ -670,7 +680,7 @@ if ( menuIf ) { - menuIf->TryDisplayingMenuBarL( *id ); + menuIf->TryDisplayingMenuBarL( *id, ETrue ); iUiEngine.Editor()->SetTargetPlugin( focused ); } } @@ -831,6 +841,8 @@ { iDraggingNode = NULL; iTargetNode = NULL; + + iUiEngine.Editor()->SetTargetPlugin( NULL ); iState = aState; diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/uiengine/src/xneditor.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xneditor.cpp Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/xmluirendering/uiengine/src/xneditor.cpp Fri Apr 23 13:22:20 2010 +0100 @@ -95,7 +95,6 @@ // ====================== LOCAL FUNTION PROTOTYPES ============================ static void DeletePluginInfos( TAny* aObject ); static void DeleteItemMaps( TAny* aObject ); -static void DeleteWidgetInfo( TAny* aObject ); static TPtrC ParseWidgetName( const CHsContentInfo& aContentInfo ); static void SetPropertyL( CXnNode& aNode, const TDesC8& aAttribute, @@ -132,16 +131,6 @@ } // --------------------------------------------------------------------------- -// DeleteWidgetInfo -// --------------------------------------------------------------------------- -// -static void DeleteWidgetInfo( TAny* aObject ) - { - reinterpret_cast< - RPointerArray< CHsContentInfo >* >( aObject )->ResetAndDestroy(); - } - -// --------------------------------------------------------------------------- // ParseWidgetName // --------------------------------------------------------------------------- // @@ -641,6 +630,7 @@ return iRepository->Get( KAICCPluginUIDKey, aUid ); } +// --------------------------------------------------------------------------- // CXnEditor::AddWidgetL // --------------------------------------------------------------------------- // @@ -1050,10 +1040,14 @@ // void CXnEditor::SetTargetPlugin( CXnNode* aNode ) { - iTargetPlugin = aNode; + TBool editState( iViewManager.UiEngine().EditMode()->EditState() ); + + if ( editState ) + { + iTargetPlugin = aNode; + } } -// --------------------------------------------------------------------------- // ----------------------------------------------------------------------------- // CXnEditor::NotifyViewActivatedL // ----------------------------------------------------------------------------- @@ -1138,9 +1132,7 @@ HBufC8* publisherId = CnvUtfConverter::ConvertFromUnicodeToUtf8L( info->PublisherId() ); CleanupStack::PushL( publisherId ); - - aPluginData.SetPublisherNameL( info->PublisherId() ); - + CItemMap* itemMap( 0 ); CPropertyMap* property( 0 ); CPropertyMap* propertyIn( 0 ); @@ -1945,44 +1937,44 @@ { TInt err( KErrNone ); + + CXnViewData& viewData( iViewManager.ActiveViewData() ); - // Get active application configuration - CHspsConfiguration* app( iHspsWrapper->GetAppConfigurationL() ); - CleanupStack::PushL( app ); - - // Get list of views included in active application configuration - RPointerArray< CPluginMap >& plugins( app->PluginMaps() ); - CPluginMap* plugin( NULL ); - - // Find active view - for ( TInt i = 0; i < plugins.Count() && !plugin; i++ ) + CHspsConfiguration* view( iHspsWrapper->GetPluginConfigurationL( viewData.PluginId() ) ); + CleanupStack::PushL( view ); + if ( view ) { - if ( plugins[ i ]->ActivationState() ) - { - plugin = plugins[ i ]; - } - } - - if ( plugin ) - { - CHspsConfiguration* view( iHspsWrapper->GetPluginConfigurationL( plugin->PluginId() ) ); - CleanupStack::PushL( view ); - aInfo.SetNameL( view->PluginInfo().Name() ); - aInfo.SetPluginIdL( plugin->PluginId() ); + aInfo.SetPluginIdL( viewData.PluginId() ); aInfo.SetUidL( view->PluginInfo().Uid() ); aInfo.SetTypeL( view->PluginInfo().Type() ); aInfo.SetDescriptionL( view->PluginInfo().Description() ); aInfo.SetIconPathL( view->PluginInfo().LogoIcon() ); - - CleanupStack::PopAndDestroy( view ); + + // Check if there is empty space + RPointerArray< CXnNode > nodes; + viewData.PluginNodesL( nodes ); + TBool isFull( ETrue ); + for ( TInt i = 0; i < nodes.Count(); i++ ) + { + CXnNode* node( nodes[i] ); + CXnPluginData* plugin = viewData.Plugin( node ); + + if ( plugin && !plugin->Occupied() ) + { + isFull = EFalse; + break; + } + } + aInfo.SetIsFull( isFull ); } else { err = KErrNotFound; } + + CleanupStack::PopAndDestroy( view ); - CleanupStack::PopAndDestroy( app ); return err; } @@ -1992,7 +1984,7 @@ // TInt CXnEditor::ActiveAppL( CHsContentInfo& aInfo ) { - + TInt err( KErrNone ); CHspsConfiguration* app = iHspsWrapper->GetAppConfigurationL(); CleanupStack::PushL( app ); @@ -2004,6 +1996,16 @@ aInfo.SetTypeL( app->PluginInfo().Type() ); aInfo.SetDescriptionL( app->PluginInfo().Description() ); aInfo.SetIconPathL( app->PluginInfo().LogoIcon() ); + + CXnRootData& appData( iViewManager.ActiveAppData() ); + if ( appData.PluginData().Count() < appData.MaxPages() ) + { + aInfo.SetIsFull( EFalse ); + } + else + { + aInfo.SetIsFull( ETrue ); + } } else { diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/uiengine/src/xngesture.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xngesture.cpp Mon Apr 12 20:35:11 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,776 +0,0 @@ -/* -* Copyright (c) 2008-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: Gesture class -* -*/ - -#include - -#include "xngesture.h" -#include "xngesturedefs.h" - -using namespace XnGestureHelper; - -// ======== LOCAL FUNCTIONS =================================================== - -/** - * Point array for which only x axis is relevant - */ -class TXAxisPointArray : public TXnPointArray - { -public: - TXAxisPointArray( const RArray< TXnPointEntry >& aPoints ) - : TXnPointArray( aPoints ) - { - } - - // from TXnPointArray - TPoint operator[]( TInt aIndex ) const - { - return TPoint( Raw( aIndex ).iX, 0 ); - } - }; - -/** - * Point array for which only y axis is relevant - */ -class TYAxisPointArray : public TXnPointArray - { -public: - TYAxisPointArray( const RArray< TXnPointEntry >& aPoints ) - : TXnPointArray( aPoints ) - { - } - - // from TXnPointArray - TPoint operator[]( TInt aIndex ) const - { - return TPoint( 0, Raw( aIndex ).iY ); - } - }; - -/** @return the current time */ -TTime CurrentTime() - { - TTime time; - time.UniversalTime(); - return time; - } - -// ---------------------------------------------------------------------------- -// destructor -// ---------------------------------------------------------------------------- -// -CXnGesture::~CXnGesture() - { - iPoints.Close(); - } - -// ---------------------------------------------------------------------------- -// Reset -// ---------------------------------------------------------------------------- -// -void CXnGesture::Reset() - { - // store previous gesture data before resetting the state - if ( iPoints.Count() > 0 ) - { - iPreviousGesture = TGestureRecord( Type(), iCompletionTime, - iPoints[iPoints.Count() - 1].iPos ); - } - else - { - iPreviousGesture = TGestureRecord(); - } - - iPoints.Reset(); - iHoldingState = ENotHolding; - iState = ENotComplete; - iHoldingPointIndex = 0; - } - -// ---------------------------------------------------------------------------- -// Reset -// ---------------------------------------------------------------------------- -// -TBool CXnGesture::IsEmpty() const - { - return iPoints.Count() == 0; - } - -// ---------------------------------------------------------------------------- -// Add a point to the sequence of points that together make up the gesture -// ---------------------------------------------------------------------------- -// -TInt CXnGesture::AddPoint( const TPoint& aPoint ) - { - if ( !IsLatestPoint( aPoint ) ) - { - return iPoints.Append( TXnPointEntry( aPoint, CurrentTime() ) ); - } - return KErrNone; - } - -/** - * @return ETrue if the point is within a specified distance of the other point - */ -inline TBool IsNear( const TPoint& aPointUnderTest, const TPoint& aPoint, - TInt aMargin ) - { - TRect rect( - aPoint.iX - aMargin, aPoint.iY - aMargin, - aPoint.iX + aMargin, aPoint.iY + aMargin ); - return rect.Contains( aPointUnderTest ); - } - -// ---------------------------------------------------------------------------- -// IsNearHoldingPoint -// ---------------------------------------------------------------------------- -// -TBool CXnGesture::IsNearHoldingPoint( const TPoint& aPoint ) const - { - return IsNear( aPoint, iPoints[iHoldingPointIndex].iPos, - KSamePointTolerance ); - } - -// ---------------------------------------------------------------------------- -// IsLatestPoint -// ---------------------------------------------------------------------------- -// -TBool CXnGesture::IsLatestPoint( const TPoint& aPoint ) const - { - if ( iPoints.Count() > 0 ) - { - return aPoint == CurrentPos(); - } - return EFalse; - } - -// ---------------------------------------------------------------------------- -// StartHolding -// ---------------------------------------------------------------------------- -// -void CXnGesture::StartHolding() - { - iHoldingState = EHoldStarting; - - // remove all points that were introduced after holding started - for ( TInt i = iPoints.Count() - 1; i > iHoldingPointIndex; i-- ) - { - iPoints.Remove( i ); - } - } - -// ---------------------------------------------------------------------------- -// SetHoldingPoint -// ---------------------------------------------------------------------------- -// -void CXnGesture::SetHoldingPoint() - { - iHoldingPointIndex = iPoints.Count() - 1; - } - -// ---------------------------------------------------------------------------- -// ContinueHolding -// ---------------------------------------------------------------------------- -// -void CXnGesture::ContinueHolding() - { - iHoldingState = EHolding; - } - -// ---------------------------------------------------------------------------- -// SetReleased -// ---------------------------------------------------------------------------- -// -void CXnGesture::SetReleased() - { - // IsMovementStopped expects SetComplete to be called before SetRelea - __ASSERT_DEBUG( EComplete == iState, Panic( EGesturePanicIllegalLogic ) ); - iState = EReleased; - } - -/** - * @return elapsed time between aStartTime and aEndTime - */ -inline TTimeIntervalMicroSeconds32 Elapsed( - const TTime& aStartTime, - const TTime& aEndTime ) - { - return aEndTime.MicroSecondsFrom( aStartTime ).Int64(); - } - -// ---------------------------------------------------------------------------- -// SetComplete -// ---------------------------------------------------------------------------- -// -void CXnGesture::SetComplete() - { - __ASSERT_DEBUG( iPoints.Count() > 0, Panic( EGesturePanicIllegalLogic ) ); - iState = EComplete; - iCompletionTime = CurrentTime(); - } - -// ---------------------------------------------------------------------------- -// SetComplete -// ---------------------------------------------------------------------------- -// -void CXnGesture::SetCancelled() - { - iState = ECancelled; - } - -// ---------------------------------------------------------------------------- -// IsTap -// ---------------------------------------------------------------------------- -// -TBool CXnGesture::IsTap() const - { - return CodeFromPoints( EAxisBoth ) == EGestureTap; - } - -/** - * Translates a non-holding code into a holding code - * @param aCode original gesture code - * @return a gesture code with hold flag applied - */ -inline TXnGestureCode Hold( TXnGestureCode aCode ) - { - if ( aCode != EGestureStart && - aCode != EGestureDrag && - aCode != EGestureReleased && - aCode != EGestureUnknown ) - { - return static_cast< TXnGestureCode >( aCode | EFlagHold ); - } - return aCode; - } - -// ---------------------------------------------------------------------------- -// Code -// ---------------------------------------------------------------------------- -// -TXnGestureCode CXnGesture::Code( TAxis aRelevantAxis ) const - { - switch ( iState ) - { - case ENotComplete: - // "start" event if only first point received - // need to check that not holding, in case user pressed stylus - // down, and activated holding without moving the stylus - if ( iPoints.Count() == 1 && !IsHolding() ) - { - return EGestureStart; - } - // "drag" event if holding not started or holding started earlier - else if ( iHoldingState != EHoldStarting ) - { - return EGestureDrag; - } - // holding was just started - else - { - return Hold( CodeFromPoints( aRelevantAxis ) ); - } - - case EComplete: - { - TXnGestureCode code = CodeFromPoints( aRelevantAxis ); - -#ifdef _GESTURE_DOUBLE_TAP_SUPPORT - if ( EGestureTap == code && IsTapDoubleTap() ) - { - code = EGestureDoubleTap; - } -#endif // _GESTURE_DOUBLE_TAP_SUPPORT - - return code; - } - - case EReleased: - return EGestureReleased; - - case ECancelled: // fallthrough - default: - return EGestureUnknown; - } - } - -// ---------------------------------------------------------------------------- -// IsHolding -// ---------------------------------------------------------------------------- -// -TBool CXnGesture::IsHolding() const - { - return iHoldingState >= EHoldStarting; - } - -// ---------------------------------------------------------------------------- -// StartPos -// ---------------------------------------------------------------------------- -// -TPoint CXnGesture::StartPos() const - { - // at least one point will be in the array during callback (pointer down pos) - return iPoints[0].iPos; - } - -// ---------------------------------------------------------------------------- -// CurrentPos -// ---------------------------------------------------------------------------- -// -TPoint CXnGesture::CurrentPos() const - { - // at least on point will be in the array during callback (pointer down pos) - return iPoints[iPoints.Count() - 1].iPos; - } - -// ---------------------------------------------------------------------------- -// IsMovementStopped -// ---------------------------------------------------------------------------- -// -inline TBool CXnGesture::IsMovementStopped() const - { - // iCompletionTime is only only valid if client has called SetComplete - if ( iState >= EComplete ) - { - return Elapsed( NthLastEntry( 1 ).iTime, iCompletionTime ) - .Int() > KSpeedStopTime; - } - return EFalse; - } - -namespace - { - const TInt KFloatingPointAccuracy = 0.000001; - - /** @return percentage (0.0-1.0) how far aPos is from aEdge1 towards aEdge2 */ - inline TReal32 Proportion( TReal32 aPos, TReal32 aEdge1, TReal32 aEdge2 ) - { - if ( Abs( aEdge2 - aEdge1 ) > KFloatingPointAccuracy ) - { - return ( aPos - aEdge1 ) / ( aEdge2 - aEdge1 ); - } - return 0; // avoid division by zero - } - - /** Edges (pixels) at which speed should be -100% or 100% */ - NONSHARABLE_STRUCT( TEdges ) - { - TReal32 iMin; - TReal32 iMax; - }; - - /** - * scale which allows different (coordinate -> percentage) mapping - * between -100% to 0% and 0 and 100% - */ - NONSHARABLE_STRUCT( TScale ) - { - TScale( TInt aZero, const TEdges& aEdges ) - : iMin( aEdges.iMin ), iZero( aZero ), iMax( aEdges.iMax ) - { - } - - /** @return aPos as a percentage between -100% and 100% in aScale */ - TReal32 Percent( TReal32 aPos ) const; - - /// coordinate where speed is -100% - TReal32 iMin; - /// coordinate where speed is 0% - TReal32 iZero; - /// coordinate where speed is 100% - TReal32 iMax; - }; - - /** @convert aPos into a percentage between -100% and 100% in aScale */ - TReal32 TScale::Percent( TReal32 aPos ) const - { - TReal32 percent; - if ( aPos < iZero ) - { - // return negative percentages on the lower side of zero point - percent = -1 * Proportion( aPos, iZero, iMin ); - } - else - { - percent = Proportion( aPos, iZero, iMax ); - } - // constrain between -100% and 100% - return Min( Max( percent, -1.0F ), 1.0F ); - } - - /** Scale in x and y dimensions */ - NONSHARABLE_STRUCT( TScale2D ) - { - TRealPoint Percent( const TPoint& aPos ) const - { - return TRealPoint( - iX.Percent( aPos.iX ), - iY.Percent( aPos.iY ) ); - } - - TScale iX; - TScale iY; - }; - - enum TDirection { ESmaller, ELarger }; - - /** @return the direction of pos compared to the previous pos */ - inline TDirection Direction( TInt aPos, TInt aPreviousPos ) - { - return aPos < aPreviousPos ? ESmaller : ELarger; - } - - /** Direction in x and y dimensions */ - NONSHARABLE_STRUCT( TDirection2D ) - { - TDirection iX; - TDirection iY; - }; - - /** Return the direction (up/down) of signal at aIndex */ - inline TDirection2D Direction( - TInt aIndex, - const RArray< TXnPointEntry >& aPoints ) - { - const TPoint& pos = aPoints[aIndex].iPos; - const TPoint& prevPos = aPoints[aIndex - 1].iPos; - TDirection2D dir = { - Direction( pos.iX, prevPos.iX ), - Direction( pos.iY, prevPos.iY ) }; - return dir; - } - - /** - * @return a position in the aLow and aHigh, so that it aProportion of - * of length is above the pos - */ - TReal32 ProportionalLength( TReal32 aLow, TReal32 aHigh, TReal32 aProportion ) - { - return ( aHigh - aLow ) * aProportion / ( 1 + aProportion ); - } - - /** - * @return aVariableEdge scaled to new position, when the other edge changes - * from aOldEdge to aNewEdge, so that aOrigin maintains the *same - * relative position* between aVariableEdge and the other edge - */ - inline TReal32 ScaledEdge( - TReal32 aOrigin, - TReal32 aVariableEdge, - TReal32 aOldEdge, - TReal aNewEdge ) - { - TReal32 proportion = Proportion( aOrigin, aVariableEdge, aOldEdge ); - return ( proportion * aNewEdge - aOrigin ) / ( proportion - 1 ); - } - - TScale Rescale( - TReal32 aPos, - TDirection aDir, - TDirection aPrevDir, - const TScale& aPrevScale, - const TEdges& aEdges ) - { - TScale scale( aPrevScale ); - if ( aPrevDir != aDir ) - { - // the code duplication is accepted here, since it is difficult - // to factor out while maintaining the understandability of this - // anyway complex algorithm - if ( aDir == ESmaller ) - { - scale.iMin = aEdges.iMin; - if ( aPrevScale.iZero < aPos ) - { - TReal32 proportionAboveZero = Proportion( - aPos, aPrevScale.iZero, aPrevScale.iMax ); - scale.iZero = aPos - ProportionalLength( - aEdges.iMin, aPos, proportionAboveZero ); - } - else - { - // adjust zero pos so that proportion between aPos, Min, - // and Zero pos stay the same (Min will move to 0, - // aPos stays the same) - scale.iZero = ScaledEdge( aPos, aPrevScale.iZero, - aPrevScale.iMin, aEdges.iMin ); - } - - // adjust the upper edge to take into account the movement of - // zero pos - scale.iMax = ScaledEdge( aPos, aPrevScale.iMax, - aPrevScale.iZero, scale.iZero ); - } - else // ELarger - { - scale.iMax = aEdges.iMax; - if ( aPos < aPrevScale.iZero ) - { - TReal32 proportionBelowZero = Proportion( - aPos, aPrevScale.iZero, aPrevScale.iMin ); - scale.iZero = aPos + ProportionalLength( - aPos, aEdges.iMax, proportionBelowZero ); - } - else - { - // adjust zero pos so that proportion between aPos, Max, and - // Zero pos stay the same (Max will move edge, aPos stays - // the same) - scale.iZero = ScaledEdge( aPos, aPrevScale.iZero, - aPrevScale.iMax, aEdges.iMax ); - } - - // adjust the lower edge to take into account the movement of - // zero pos - scale.iMin = ScaledEdge( aPos, aPrevScale.iMin, - aPrevScale.iZero, scale.iZero ); - } - } - return scale; - } - - /** Edges in x and y dimensions */ - NONSHARABLE_STRUCT( TEdges2D ) - { - TEdges iX; - TEdges iY; - }; - - /** - * @param aEdges edges of the area in which gesture points are accepted - * @return the scale of latest point in the list of points - */ - TScale2D Scale( const RArray< TXnPointEntry >& aPoints, const TEdges2D& aEdges ) - { - TScale2D scale = { TScale( aPoints[0].iPos.iX, aEdges.iX ), - TScale( aPoints[0].iPos.iY, aEdges.iY ) }; - TInt count = aPoints.Count(); - if ( count > 1 ) - { - // iterate the whole point list to arrive to the current scale - TDirection2D dir( Direction( 1, aPoints ) ); - for ( TInt i = 1; i < count; i++ ) - { - // get direction at i - TDirection2D newDir( Direction( i, aPoints ) ); - // get new scale at i - scale.iX = Rescale( - aPoints[i - 1].iPos.iX, - newDir.iX, - dir.iX, - scale.iX, - aEdges.iX ); - scale.iY = Rescale( - aPoints[i - 1].iPos.iY, - newDir.iY, - dir.iY, - scale.iY, - aEdges.iY ); - dir = newDir; - } - } - return scale; - } - } // unnamed namespace - -TRealPoint CXnGesture::SpeedPercent( const TRect& aEdges ) const - { - // x and y coordinates are easier to handle separately, extract from TRect: - // ((iMinX, iMinY), (iMaxX, iMaxY)) -> ((iMinX, iMaxX), (iMinY, iMaxY)) - TEdges2D edges = { - { aEdges.iTl.iX, aEdges.iBr.iX }, - { aEdges.iTl.iY, aEdges.iBr.iY } }; - // work out the current scale (coordinate -> percentage mapping) from - // the history of points (i.e., points of current gesture). Then - // calculate the percentage of the current position. - return Scale( iPoints, edges ).Percent( CurrentPos() ); - } - -// ---------------------------------------------------------------------------- -// Speed -// ---------------------------------------------------------------------------- -// -TRealPoint CXnGesture::Speed() const - { - const TReal32 KMicroSecondsInSecond = 1000000; - - // Speed is only evaluated at the end of the swipe - // if user stops at the end of the swipe before lifting stylus, - // speed is zero. If time is zero, return 0 speed (infinite does - // not make sense either). Will need to consider also earlier points - // and their times or start time, if this zero-speed behavior is a problem - TRealPoint speed; - TReal32 time = static_cast< TReal32 >( TimeFromPreviousPoint().Int() ) - / KMicroSecondsInSecond; - if ( !IsMovementStopped() && time > 0 ) - { - TPoint distance = CurrentPos() - PreviousPos(); - speed.iX = static_cast< TReal32 >( distance.iX ) / time; - speed.iY = static_cast< TReal32 >( distance.iY ) / time; - } - return speed; - } - -// ---------------------------------------------------------------------------- -// Distance -// ---------------------------------------------------------------------------- -// -TPoint CXnGesture::Distance() const - { - return CurrentPos() - StartPos(); - } - -// ---------------------------------------------------------------------------- -// TimeFromPreviousPoint -// ---------------------------------------------------------------------------- -// -inline TTimeIntervalMicroSeconds32 CXnGesture::TimeFromPreviousPoint() const - { - const TInt KLatestEntryOffset = 1; - return Elapsed( PreviousEntry().iTime, NthLastEntry( KLatestEntryOffset ).iTime ); - } - -// ---------------------------------------------------------------------------- -// CodeFromPoints -// ---------------------------------------------------------------------------- -// -TXnGestureCode CXnGesture::CodeFromPoints( TAxis aRelevantAxis ) const - { - // select the correct filter based on aRelevantAxis - // these filter_ objects are array decorators that will eliminate either - // x, y or neither coordinate of each point - TXAxisPointArray filterY( iPoints ); - TYAxisPointArray filterX( iPoints ); - TXnPointArray filterNone( iPoints ); - TXnPointArray& filter = - aRelevantAxis == EAxisHorizontal ? static_cast< TXnPointArray& >( filterY ) : - aRelevantAxis == EAxisVertical ? static_cast< TXnPointArray& >( filterX ) : - /* otherwise EAxisBoth */ filterNone; - - // currently the gesture recogniser does not have any state, so it is fast - // to instantiate. The call is not static however, to allow the recogniser - // to be replaced by a more complicated implementation that has state. - // then it may make sense to make the recogniser a member variable. - return TXnGestureRecogniser().GestureCode( filter ); - } - -// ---------------------------------------------------------------------------- -// CodeFromPoints -// ---------------------------------------------------------------------------- -// -TXnGestureCode CXnGesture::LastDirection( TAxis aRelevantAxis ) const - { - // select the correct filter based on aRelevantAxis - // these filter_ objects are array decorators that will eliminate either - // x, y or neither coordinate of each point - TXAxisPointArray filterY( iPoints ); - TYAxisPointArray filterX( iPoints ); - TXnPointArray filterNone( iPoints ); - TXnPointArray& filter = - aRelevantAxis == EAxisHorizontal ? static_cast< TXnPointArray& >( filterY ) : - aRelevantAxis == EAxisVertical ? static_cast< TXnPointArray& >( filterX ) : - /* otherwise EAxisBoth */ filterNone; - - // currently the gesture recogniser does not have any state, so it is fast - // to instantiate. The call is not static however, to allow the recogniser - // to be replaced by a more complicated implementation that has state. - // then it may make sense to make the recogniser a member variable. - return TXnGestureRecogniser().LastDirection( filter ); - } - -// ---------------------------------------------------------------------------- -// return nth point from the end of the points array -// ---------------------------------------------------------------------------- -// -inline const TXnPointEntry& CXnGesture::NthLastEntry( TInt aOffset ) const - { - return iPoints[Max( iPoints.Count() - aOffset, 0 )]; - } - -// ---------------------------------------------------------------------------- -// PreviousEntry -// ---------------------------------------------------------------------------- -// -inline const TXnPointEntry& CXnGesture::PreviousEntry() const - { - return NthLastEntry( KPreviousPointOffset ); - } - -// ---------------------------------------------------------------------------- -// PreviousPos -// ---------------------------------------------------------------------------- -// -inline TPoint CXnGesture::PreviousPos() const - { - return NthLastEntry( KPreviousPointOffset - 1 ).iPos; - } - -// ---------------------------------------------------------------------------- -// SetComplete -// ---------------------------------------------------------------------------- -// -TBool CXnGesture::IsTapDoubleTap() const - { - return iPreviousGesture.iType == TGestureRecord::ETypeTap && - Elapsed( iPreviousGesture.iCompletionTime, iCompletionTime ).Int() <= - KMaxDoubleTapDuration && - IsNear( iPreviousGesture.iPos, iPoints[iPoints.Count() - 1].iPos, - KSamePointTolerance ); - } - -// ---------------------------------------------------------------------------- -// Type -// ---------------------------------------------------------------------------- -// -CXnGesture::TGestureRecord::TType CXnGesture::Type() const - { - if ( CodeFromPoints( EAxisBoth ) == EGestureTap && !IsHolding() ) - { - if ( IsTapDoubleTap() ) - { - return CXnGesture::TGestureRecord::ETypeDoubleTap; - } - else - { - return CXnGesture::TGestureRecord::ETypeTap; - } - } - else - { - return CXnGesture::TGestureRecord::ETypeOther; - } - } - -// ---------------------------------------------------------------------------- -// TGestureRecord constructor -// ---------------------------------------------------------------------------- -// -CXnGesture::TGestureRecord::TGestureRecord() - { - iType = ETypeOther; - } - -// ---------------------------------------------------------------------------- -// TGestureRecord constructor -// ---------------------------------------------------------------------------- -// -CXnGesture::TGestureRecord::TGestureRecord( - CXnGesture::TGestureRecord::TType aType, - TTime aCompletionTime, - TPoint aPos ) - : iType( aType ), iCompletionTime( aCompletionTime ), iPos( aPos ) - { - } diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/uiengine/src/xngesturehelper.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xngesturehelper.cpp Mon Apr 12 20:35:11 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,384 +0,0 @@ -/* -* 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: Gesture helper implementation -* -*/ - -// System includes -#include -#include - -// User includes -#include "xngesturehelper.h" -#include "xngesture.h" -#include "xngesturedefs.h" -#include "xnnode.h" - -using namespace XnGestureHelper; - -namespace XnGestureHelper - { - NONSHARABLE_CLASS( CHoldingTimer ) : public CTimer - { - public: - /** Two-phase constructor */ - static CHoldingTimer* NewL( CXnGestureHelper& aHelper ) - { - CHoldingTimer* self = new ( ELeave ) CHoldingTimer( aHelper ); - CleanupStack::PushL( self ); - self->ConstructL(); - // "hold event" sending is enabled by default - self->iIsEnabled = ETrue; - CActiveScheduler::Add( self ); - CleanupStack::Pop( self ); - return self; - } - - /** Destructor */ - ~CHoldingTimer() - { - Cancel(); - } - - /** Set whether sending holding events is currently enabled */ - void SetEnabled( TBool aEnabled ) - { - iIsEnabled = aEnabled; - // cancel in case hold timer is already running - Cancel(); - } - - /** @return whether sending holding events is currently enabled */ - TBool IsEnabled() const - { - return iIsEnabled; - } - - /** Start the timer. Calls CXnGestureHelper::StartHoldingL upon - * completion */ - void Start() - { - // if sending hold events is disabled, do not ever start the hold - // timer, and hence hold events will never be triggered - if ( iIsEnabled ) - { - Cancel(); - After( KHoldDuration ); - } - } - - private: - /** Constructor */ - CHoldingTimer( CXnGestureHelper& aHelper ) - : // give higher priority to new pointer events with - 1 - CTimer( EPriorityUserInput - 1 ), - iHelper( aHelper ) - { - } - - void RunL() // From CActive - { - iHelper.StartHoldingL(); - } - - private: - /// helper object that will be called back when timer is triggered - CXnGestureHelper& iHelper; - /// whether sending holding events is currently enabled - TBool iIsEnabled; - }; - } // namespace GestureHelper - -/** -* @return position from event. Use this instead of using aEvent direction to -* avoid accidentally using TPointerEvent::iPosition -*/ -inline TPoint Position( const TPointerEvent& aEvent ) - { - // use parent position, since the capturer is using full screen area, - // and because the (Alfred) drag events are not local to visual even when - // coming from the client - return aEvent.iParentPosition; - } - -// ---------------------------------------------------------------------------- -// Two-phase constructor -// ---------------------------------------------------------------------------- -// -CXnGestureHelper* CXnGestureHelper::NewL( CXnNode& aNode ) - { - CXnGestureHelper* self = new ( ELeave ) CXnGestureHelper( aNode ); - CleanupStack::PushL( self ); - self->iHoldingTimer = CHoldingTimer::NewL( *self ); - self->iGesture = new ( ELeave ) CXnGesture(); - CleanupStack::Pop( self ); - return self; - } - -// ---------------------------------------------------------------------------- -// Constructor -// ---------------------------------------------------------------------------- -// -CXnGestureHelper::CXnGestureHelper( CXnNode& aNode ) - : iOwner( aNode ) - { - } - -// ---------------------------------------------------------------------------- -// Destructor -// ---------------------------------------------------------------------------- -// -CXnGestureHelper::~CXnGestureHelper() - { - delete iHoldingTimer; - delete iGesture; - } - -// ---------------------------------------------------------------------------- -// SetHoldingEnabled -// ---------------------------------------------------------------------------- -// -void CXnGestureHelper::SetHoldingEnabled( TBool aEnabled ) - { - iHoldingTimer->SetEnabled( aEnabled ); - } - -// ---------------------------------------------------------------------------- -// IsHoldingEnabled -// ---------------------------------------------------------------------------- -// -TBool CXnGestureHelper::IsHoldingEnabled() const - { - return iHoldingTimer->IsEnabled(); - } - -// ---------------------------------------------------------------------------- -// Reset state -// ---------------------------------------------------------------------------- -// -void CXnGestureHelper::Reset() - { - iHoldingTimer->Cancel(); - iGesture->Reset(); - } - -/** -* Helper function that calls Reset on the pointer to CXnGestureHelper -*/ -static void ResetHelper( TAny* aHelper ) - { - static_cast< CXnGestureHelper* >( aHelper )->Reset(); - } - -// ---------------------------------------------------------------------------- -// Sets gesture destination -// ---------------------------------------------------------------------------- -// -void CXnGestureHelper::SetDestination( CXnNode* aDestination ) - { - iDestination = aDestination; - } - -// ---------------------------------------------------------------------------- -// Gets gesture destination -// ---------------------------------------------------------------------------- -// -CXnNode* CXnGestureHelper::Destination() const - { - return iDestination; - } - -// ---------------------------------------------------------------------------- -// Gets gesture owner -// ---------------------------------------------------------------------------- -// -CXnNode* CXnGestureHelper::Owner() const - { - return &iOwner; - } - -// ---------------------------------------------------------------------------- -// Handle a pointer event -// ---------------------------------------------------------------------------- -// -TXnGestureCode CXnGestureHelper::HandlePointerEventL( - const TPointerEvent& aEvent ) - { - TXnGestureCode ret( EGestureUnknown ); - - switch ( aEvent.iType ) - { - case TPointerEvent::EButton1Down: - // If no up event was received during previous gesture, cancel - // previous event and reset state - if ( !IsIdle() ) - { - iGesture->SetCancelled(); - // ambiguous what is the right thing when "cancel" event leaves - // and "start" does not. Leaving for cancel *after* "start" could - // be unexpected to client, as client would have handled start - // event successfully. Assume that leaving upon cancellation - // can be ignored. - Reset(); - } - // adding the first point implicitly makes the state "not idle" - AddPointL( aEvent ); - // If AddPointL leaves, IsIdle will return EFalse for other events - // types, hence further pointer events will be ignored. - // Therefore, holding will NOT be started if AddPointL leaves, - // since the callback would trigger a gesture callback, and that - // would access an empty points array. - iHoldingTimer->Start(); - iDirection = EGestureUnknown; - break; - - case TPointerEvent::EDrag: - // ignore the event in case not in "recording" state. this may - // happen if holding was triggered, or client sends up event after - // down event was received in a different *client* state, and - // client did not forward the down event to here. - // Also, while stylus down, the same event is received repeatedly - // even if stylus does not move. Filter out by checking if point - // is the same as the latest point - iDirection = iGesture->LastDirection( CXnGesture::EAxisHorizontal ); - - if ( !IsIdle() && !iGesture->IsLatestPoint( Position( aEvent ) ) ) - { - AddPointL( aEvent ); - if ( !( iGesture->IsHolding() || - iGesture->IsNearHoldingPoint( Position( aEvent ) ) ) ) - { - // restart hold timer, since pointer has moved - iHoldingTimer->Start(); - // Remember the point in which holding was started - iGesture->SetHoldingPoint(); - } - } - break; - - case TPointerEvent::EButton1Up: - // ignore up event if no down event received - if ( !IsIdle() ) - { - // reset in case the down event is not received for a reason - // in client, and instead drag or up events are received. - // reset via cleanup stack to ensure Reset is run even if - // observer leaves - CleanupStack::PushL( TCleanupItem( &ResetHelper, this ) ); - iGesture->SetComplete(); - // if adding of the point fails, notify client with a - // cancelled event. It would be wrong to send another - // gesture code when the up point is not known - if ( AddPoint( aEvent ) != KErrNone ) - { - iGesture->SetCancelled(); - } - else - { - // send gesture code if holding has not been started - if ( !iGesture->IsHolding() ) - { - // if client leaves, the state is automatically reset. - // In this case the client will not get the released event - ret = iDirection; - } - // send an event that stylus was lifted - iGesture->SetReleased(); - } - // reset state - CleanupStack::PopAndDestroy( this ); - } - break; - - default: - break; - } - - return ret; - } - -// ---------------------------------------------------------------------------- -// Is the helper idle? -// inline ok in cpp file for a private member function -// ---------------------------------------------------------------------------- -// -inline TBool CXnGestureHelper::IsIdle() const - { - return iGesture->IsEmpty(); - } - -// ---------------------------------------------------------------------------- -// Add a point to the sequence of points that together make up the gesture -// inline ok in cpp file for a private member function -// ---------------------------------------------------------------------------- -// -inline void CXnGestureHelper::AddPointL( const TPointerEvent& aEvent ) - { - User::LeaveIfError( AddPoint( aEvent ) ); - } - -// ---------------------------------------------------------------------------- -// Add a point to the sequence of points that together make up the gesture -// inline ok in cpp file for a private member function -// ---------------------------------------------------------------------------- -// -inline TInt CXnGestureHelper::AddPoint( const TPointerEvent& aEvent ) - { - return iGesture->AddPoint( Position ( aEvent ) ); - } - -/** -* Helper function that calls ContinueHolding on the pointer to TGesture -*/ -static void ContinueHolding( TAny* aGesture ) - { - static_cast< CXnGesture* >( aGesture )->ContinueHolding(); - } - -// ---------------------------------------------------------------------------- -// Add a point to the sequence of points that together make up the gesture -// ---------------------------------------------------------------------------- -// -void CXnGestureHelper::StartHoldingL() - { - // hold & tap event is specifically filtered out. Use case: in list fast - // scrolling activation (e.g. enhanced coverflow), tap & hold should not - // start fast scroll. In addition, after long tap on start position, - // drag and drag & hold swiping should emit normal swipe and swipe&hold - // events. Therefore, tap & hold is not supported. - if ( !iGesture->IsTap() ) - { - // holding has just started, and gesture code should be provided to client. - // set gesture state so that it produces a gesture code (other than drag) - iGesture->StartHolding(); - - // create an item in the cleanup stack that will set the gesture state - // to holding-was-started-earlier state. NotifyL may leave, but the - // holding-was-started-earlier state must still be successfully set, - // otherwise, the holding gesture code will be sent twice - CleanupStack::PushL( TCleanupItem( &ContinueHolding, iGesture ) ); - - // set holding state to "post holding" - CleanupStack::PopAndDestroy( iGesture ); - } - } - -// ---------------------------------------------------------------------------- -// Check if swipe is valid -// ---------------------------------------------------------------------------- -// -TXnGestureCode CXnGestureHelper::ValidSwipe() const - { - return iGesture->Code( CXnGesture::EAxisBoth ); - } diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/uiengine/src/xngesturerecogniser.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xngesturerecogniser.cpp Mon Apr 12 20:35:11 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,234 +0,0 @@ -/* -* 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: Gesture helper implementation -* -*/ - -#include - -#include "xngesturerecogniser.h" -#include "xngesturedefs.h" -#include "xnpointarray.h" - -using namespace XnGestureHelper; - -const TInt minPointCount = 5; - -/** - * Vector class (math) - */ -NONSHARABLE_CLASS( TVector ) - { -public: - /** - * Constructor - * @param aFrom starting point of the vector - * @param aTo ending point of the vector - */ - TVector( const TPoint& aFrom, const TPoint& aTo ) - : iX( aTo.iX - aFrom.iX ), - iY( aTo.iY - aFrom.iY ) - { - } - - /** @return angle of the vector */ - TReal Angle() const - { - TReal angle = 0; - TReal length = Length(); - if ( length != 0 ) - { - Math::ACos( angle, iX / Length() ); - if ( iY < 0 ) - { - angle = 2 * KPi - angle; - } - } - return Degrees( angle ); - } - - /** @return length of the vector */ - TReal Length() const - { - TReal length = 0; - Math::Sqrt( length, iX * iX + iY * iY ); - return length; - } - -private: - /** @return radians in degrees */ - inline TReal Degrees( TReal aRadians ) const - { - return aRadians * 180 / KPi; - } - -public: - /// x coordinate that represent the vector - TReal iX; - /// y coordinate that represent the vector - TReal iY; - }; - -/** - * @return ETrue if points for a tap event - */ -inline TBool IsTap( const TXnPointArray& aPoints ) - { - // with tap, the pointer is not allowed to leave the tap area and come back - // therefore, gesture length is not an acceptable test for tap, as it tests - // only the last point. therefore, check if *any* point is outside tap area. - TInt i = aPoints.Count(); // latest point if most likely to be outside tap area - while ( --i >= 0 ) - { - // use the raw point (from which no axis has been filtered out) - // because tap should consider both axes even when Code() ignores one axis - if ( KSamePointTolerance < Abs( aPoints.Raw( i ).iX - aPoints.Raw( 0 ).iX ) || - KSamePointTolerance < Abs( aPoints.Raw( i ).iY - aPoints.Raw( 0 ).iY ) ) - { - return EFalse; - } - } - return ETrue; - } - -/** - * @return Length of the gesture in points - */ -inline TReal GestureLength( const TXnPointArray& aPoints ) - { - return TVector( aPoints[0], aPoints[aPoints.Count() - 1] ).Length(); - } - -/** - * @return ETrue if aAngleUnderTest is almost aAngle - * Closeness of the angles is controlled by KAngleTolerance - */ -static TBool IsNear( TReal aAngleUnderTest, TReal aAngle ) - { - return aAngle - KAngleTolerance <= aAngleUnderTest && - aAngleUnderTest <= aAngle + KAngleTolerance; - } - -/** - * @return the angle as a direction flags of TGesture - */ -inline TXnGestureCode Direction( TReal aAngle ) - { - TXnGestureCode direction = EGestureUnknown; - - if ( IsNear( aAngle, 90.0 ) ) - { - direction = EGestureSwipeDown; - } - else if ( IsNear( aAngle, 180.0 ) ) - { - direction = EGestureSwipeLeft; - } - else if ( IsNear( aAngle, 270.0 ) ) - { - direction = EGestureSwipeUp; - } - else if ( 360.0 - KAngleTolerance <= aAngle || aAngle <= KAngleTolerance ) - { - direction = EGestureSwipeRight; - } - else // for lint warning - { - // unknown angle - } - - return direction; - } - -/** @return direction between points */ -inline TXnGestureCode Direction( const TPoint& aFromPoint, const TPoint& aToPoint ) - { - return Direction( TVector( aFromPoint, aToPoint ).Angle() ); - } - -/** @return overall direction between points */ -static TXnGestureCode GeneralDirection( const TXnPointArray& aPoints ) - { - return Direction( aPoints[0], aPoints[aPoints.Count() - 1]); - } - -/** -* @return the last received point that is different that the latest point, -* or first point if no point is different than latest -*/ -inline TPoint PreviousPoint( const TXnPointArray& aPoints ) - { - TPoint latestPoint = aPoints[aPoints.Count() - 1]; - TInt i = aPoints.Count() - 1; - while ( --i >= 0 ) - { - if ( latestPoint != aPoints[i] ) - { - return aPoints[i]; - } - } - return aPoints[0]; - } - -/** @return direction between last two points */ -TXnGestureCode TXnGestureRecogniser::LastDirection( const TXnPointArray& aPoints ) const - { - TXnGestureCode ret = EGestureUnknown; - - if ( ( aPoints.Count() > 0 ) && - ( GestureLength( aPoints ) >= KMinSwipeLength )) - { - if ( aPoints.Count() > minPointCount ) - { - // return direction between latest and previous points. - // pick the previous point that is different than the last point - // because while using an x or y filter array, more than one - // sequential points may look like the same point because - // the differing coordinate coordinate is filtered out. For example, - // if dragging left and slightly up, many y coordinates will have the - // same value, while only x differs. - ret = Direction( aPoints[ aPoints.Count() - minPointCount ], - aPoints[ aPoints.Count() - 1 ] ); - } - else - { - ret = GeneralDirection( aPoints ); - } - } - - return ret; - } - -// ---------------------------------------------------------------------------- -// Return gesture code of a gesture formed by a sequence of points -// ---------------------------------------------------------------------------- -// -TXnGestureCode TXnGestureRecogniser::GestureCode( const TXnPointArray& aPoints ) const - { - __ASSERT_DEBUG( aPoints.Count() > 0, Panic( EGesturePanicIllegalLogic ) ); - - if (aPoints.Count() <= 0) - { - return EGestureUnknown; - } - - if ( GestureLength( aPoints ) >= KMinSwipeLength ) - { - return GeneralDirection( aPoints ); - } - - // the pointer was moved but was either not moved far enough, or was - // brought back to close to the starting point - return EGestureUnknown; - } diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/uiengine/src/xnhittest.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xnhittest.cpp Mon Apr 12 20:35:11 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,193 +0,0 @@ -/* -* 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: Data class to hold widget info -* -*/ - -// INCLUDES -#include - -#include "xncontroladapter.h" -#include "xnhittest.h" - -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// CXnHitTest::NewL() -// Two-phased constructor. -// ----------------------------------------------------------------------------- -// -CXnHitTest* CXnHitTest::NewL() - { - CXnHitTest* self = CXnHitTest::NewLC(); - CleanupStack::Pop( self ); - return self; - } - -// ----------------------------------------------------------------------------- -// CXnHitTest::NewLC() -// Two-phased constructor. -// ----------------------------------------------------------------------------- -// -CXnHitTest* CXnHitTest::NewLC() - { - CXnHitTest* self = new ( ELeave ) CXnHitTest; - CleanupStack::PushL( self ); - self->ConstructL(); - return self; - } - -// ----------------------------------------------------------------------------- -// CXnHitTest::CXnHitTest() -// C++ default constructor -// ----------------------------------------------------------------------------- -// -CXnHitTest::CXnHitTest() - { - } - -// ----------------------------------------------------------------------------- -// CXnHitTest::~CXnHitTest() -// C++ default destructor. -// ----------------------------------------------------------------------------- -// -CXnHitTest::~CXnHitTest() - { - CCoeEnv::Static()->RemoveMessageMonitorObserver( *this ); - iHitRegion.Reset(); - } - -// ----------------------------------------------------------------------------- -// CXnHitTest::ConstructL() -// Two-phased constructor. -// ----------------------------------------------------------------------------- -// -void CXnHitTest::ConstructL() - { - CCoeEnv::Static()->AddMessageMonitorObserverL( *this ); - } - -// ----------------------------------------------------------------------------- -// CXnHitTest::MonitorWsMessage() -// ----------------------------------------------------------------------------- -// -void CXnHitTest::MonitorWsMessage( const TWsEvent& aEvent ) - { - TInt type( aEvent.Type() ); - - if ( type == EEventPointer ) - { - iPointerEvent = *aEvent.Pointer(); - } - } - -// ----------------------------------------------------------------------------- -// CXnHitTest::AddControl() -// ----------------------------------------------------------------------------- -// -void CXnHitTest::AddControl( CXnControlAdapter* aControl ) - { - if ( iHitRegion.Find( aControl ) == KErrNotFound ) - { - iHitRegion.Append( aControl ); - } - } - -// ----------------------------------------------------------------------------- -// CXnHitTest::RemoveControl() -// ----------------------------------------------------------------------------- -// -void CXnHitTest::RemoveControl( CXnControlAdapter* aControl ) - { - TInt index( iHitRegion.Find( aControl ) ); - - if ( index != KErrNotFound ) - { - iHitRegion.Remove( index ); - } - } - -// ----------------------------------------------------------------------------- -// CXnHitTest::SetFlags() -// ----------------------------------------------------------------------------- -// -void CXnHitTest::SetFlags( const TInt aFlags ) - { - iFlags |= aFlags; - } - -// ----------------------------------------------------------------------------- -// CXnHitTest::ClearFlags() -// ----------------------------------------------------------------------------- -// -void CXnHitTest::ClearFlags( const TInt aFlags ) - { - iFlags &= ~aFlags; - } - -// ----------------------------------------------------------------------------- -// CXnHitTest::Flags() -// ----------------------------------------------------------------------------- -// -TInt CXnHitTest::Flags() const - { - return iFlags; - } - -// ----------------------------------------------------------------------------- -// CXnHitTest::Flush() -// ----------------------------------------------------------------------------- -// -void CXnHitTest::Flush() - { - iFlags = 0; - - iHitRegion.Reset(); - } - -// ----------------------------------------------------------------------------- -// CXnHitTest::HitRegionCount() -// ----------------------------------------------------------------------------- -// -TInt CXnHitTest::HitRegionCount() const - { - return iHitRegion.Count(); - } - -// ----------------------------------------------------------------------------- -// CXnHitTest::HitRegion() -// ----------------------------------------------------------------------------- -// -CXnControlAdapter* CXnHitTest::HitRegion() const - { - TInt count( HitRegionCount() ); - - if ( count > 0 ) - { - return iHitRegion[count - 1]; - } - - return NULL; - } - -// ----------------------------------------------------------------------------- -// CXnHitTest::PointerEvent() -// ----------------------------------------------------------------------------- -// -const TPointerEvent& CXnHitTest::PointerEvent() const - { - return iPointerEvent; - } - -// End of file diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/uiengine/src/xnkeyeventdispatcher.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xnkeyeventdispatcher.cpp Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/xmluirendering/uiengine/src/xnkeyeventdispatcher.cpp Fri Apr 23 13:22:20 2010 +0100 @@ -192,6 +192,9 @@ CCoeControl* destination = reinterpret_cast< CCoeControl* >( handle ); TPointerEvent& event( *aEvent.Pointer() ); + + // Store event + iPointerEvent = *aEvent.Pointer(); if ( iCbaContainer ) { @@ -225,6 +228,16 @@ } // ----------------------------------------------------------------------------- +// CXnKeyEventDispatcher::PointerEvent() +// +// ----------------------------------------------------------------------------- +// +const TPointerEvent& CXnKeyEventDispatcher::PointerEvent() const + { + return iPointerEvent; + } + +// ----------------------------------------------------------------------------- // CXnKeyEventDispatcher::OfferKeyEventL // Handles key events. // ----------------------------------------------------------------------------- @@ -234,9 +247,7 @@ TEventCode aType ) { TKeyResponse resp( EKeyWasNotConsumed ); - - iEventCode = aType; - + CXnNode* node( NULL ); TBool keyYesNoApps( EFalse ); @@ -249,7 +260,7 @@ // When menu is focused or LSK/RSK is pressed, // then forward events to menuadapter. // Note that MSK is handled directly in the base class as it used only - // for activating + // for activation node = iMenuNode; } else if ( aKeyEvent.iScanCode == EStdKeyApplication0 || @@ -259,8 +270,9 @@ keyYesNoApps = ETrue; iFocusChanged = EFalse; + // AppsKey, YesKey, NoKey events must be always handled, and if we don't - // have a focused node, then let the view node do the job + // have a focused node, then let the view handle the event node = ( !iNode ) ? iUiEngine.ActiveView() : iNode; } else @@ -309,6 +321,10 @@ if ( editmode->OfferKeyEventL( aKeyEvent, aType ) == EKeyWasConsumed ) { + iFocusChanged = EFalse; + iKeyEventNode = NULL; + iEventCode = EEventNull; + return EKeyWasConsumed; } @@ -324,8 +340,7 @@ if ( iFocusChanged && ( aType == EEventKeyUp ) ) { - // Pass keyup event to - // previously focused node + // Pass keyup event to the previously focused node node = iKeyEventNode; } } @@ -336,7 +351,9 @@ { // We are waiting for down event return resp; - } + } + + iEventCode = aType; } if ( !node ) diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/uiengine/src/xnnodeimpl.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xnnodeimpl.cpp Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/xmluirendering/uiengine/src/xnnodeimpl.cpp Fri Apr 23 13:22:20 2010 +0100 @@ -43,7 +43,6 @@ #include "xneditmode.h" #include "xneditor.h" #include "xntext.h" -#include "xnhittest.h" #include "xnscrollablecontroladapter.h" #include "xnviewdata.h" #include "xnrootdata.h" @@ -266,8 +265,6 @@ CXnDomNode& aEventNode, CXnDomNode& aTriggerNode, CXnNode& aEventData ); static void RunFullScreenEffectL( CXnUiEngine& aEngine, CXnDomNode& aEventNode ); -static void RunActivateViewL( - CXnNodeImpl* aThis, CXnUiEngine& aEngine, CXnDomNode& aEventNode ); static void RunActivateNextViewL( CXnUiEngine& aEngine, CXnDomNode& aEventNode ); static void RunActivatePreviousViewL( CXnUiEngine& aEngine, CXnDomNode& aEventNode ); static void RunAddViewL( CXnUiEngine& aEngine, CXnDomNode& aEventNode ); @@ -2773,39 +2770,6 @@ } // ----------------------------------------------------------------------------- -// RunActivateViewL -// ----------------------------------------------------------------------------- -// -static void RunActivateViewL( - CXnNodeImpl* aThis, - CXnUiEngine& aEngine, - CXnDomNode& aEventNode ) - { - CXnDomList& children( aEventNode.ChildNodes() ); - - TInt count( children.Length() ); - - for ( TInt i = 0; i < count; ++i ) - { - CXnDomNode* node = static_cast< CXnDomNode* >( children.Item( i ) ); - - const TDesC8& type( node->Name() ); - - if ( type == XnPropertyNames::action::KProperty ) - { - const TDesC8& id( node->AttributeValue( XnPropertyNames::action::KValue ) ); - - CXnNode* viewNode( aEngine.FindNodeByIdL( id, aThis->Namespace() ) ); - - if ( viewNode ) - { - aEngine.ActivateViewL( *viewNode ); - } - } - } - } - -// ----------------------------------------------------------------------------- // RunActivateNextViewL // ----------------------------------------------------------------------------- // @@ -3560,7 +3524,8 @@ if ( menuIf ) { - menuIf->TryDisplayingMenuBarL( *menuId ); + aEngine.Editor()->SetTargetPlugin( aEngine.FocusedNode() ); + menuIf->TryDisplayingMenuBarL( *menuId, EFalse ); } CleanupStack::PopAndDestroy( menuId ); @@ -3947,10 +3912,6 @@ { RunRemoveViewL( aEngine, aEventNode ); } - else if ( nameString == XnPropertyNames::action::event::KActivateView ) - { - RunActivateViewL( aThis, aEngine, aEventNode ); - } else if ( nameString == XnPropertyNames::action::event::KActivate ) { RunActivateL( aThis, aEngine, aEventNode ); diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/uiengine/src/xnpointarray.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xnpointarray.cpp Mon Apr 12 20:35:11 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,56 +0,0 @@ -/* -* 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: Array of points -* -*/ - -#include "xnpointarray.h" - -using namespace XnGestureHelper; - -// ---------------------------------------------------------------------------- -// TXnPointArray constructor -// ---------------------------------------------------------------------------- -// -TXnPointArray::TXnPointArray( const RArray< TXnPointEntry >& aPoints ) - : iPoints( aPoints ) - { - } - -// ---------------------------------------------------------------------------- -// TXnPointArray length -// ---------------------------------------------------------------------------- -// -TInt TXnPointArray::Count() const - { - return iPoints.Count(); - } - -// ---------------------------------------------------------------------------- -// point at index, no filtering -// ---------------------------------------------------------------------------- -// -TPoint TXnPointArray::operator[]( TInt aIndex ) const - { - return iPoints[aIndex].iPos; - } - -// ---------------------------------------------------------------------------- -// Unfiltered point at index -// ---------------------------------------------------------------------------- -// -const TPoint& TXnPointArray::Raw( TInt aIndex ) const - { - return iPoints[aIndex].iPos; - } diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/uiengine/src/xnpopupcontroladapter.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xnpopupcontroladapter.cpp Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/xmluirendering/uiengine/src/xnpopupcontroladapter.cpp Fri Apr 23 13:22:20 2010 +0100 @@ -24,6 +24,8 @@ // User includes #include "xnappuiadapter.h" +#include "xnviewadapter.h" +#include "xnkeyeventdispatcher.h" #include "xnviewmanager.h" #include "xnviewdata.h" #include "xnplugindata.h" @@ -35,7 +37,6 @@ #include "xntype.h" #include "xnuiengine.h" #include "xneditor.h" -#include "xnhittest.h" #include "xnfocuscontrol.h" #include "xnpopupcontroladapter.h" @@ -165,6 +166,8 @@ } } + iUiEngine->Editor()->SetTargetPlugin( NULL ); + iMenuItems.Reset(); iCommandId = 0; @@ -197,13 +200,18 @@ void CXnPopupControlAdapter::TryDisplayingStylusPopupL( CXnNode& aPlugin ) { HideMenuL(); + CXnViewManager* manager( iUiEngine->ViewManager() ); CXnPluginData* plugin( manager->ActiveViewData().Plugin( &aPlugin ) ); + if ( !plugin ) { return; } - TPointerEvent event( iUiEngine->HitTest().PointerEvent() ); + + CXnViewAdapter& adapter( iUiEngine->AppUiAdapter().ViewAdapter() ); + + const TPointerEvent& event( adapter.EventDispatcher()->PointerEvent() ); delete iStylusPopupMenu; iStylusPopupMenu = NULL; diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/uiengine/src/xnpropertysubscriber.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xnpropertysubscriber.cpp Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/xmluirendering/uiengine/src/xnpropertysubscriber.cpp Fri Apr 23 13:22:20 2010 +0100 @@ -85,7 +85,7 @@ // void CXnPropertySubscriber::DoCancel() { - iProperty.Close(); + iProperty.Cancel(); } // ----------------------------------------------------------------------------- @@ -103,3 +103,14 @@ iPropertyChangeObserver.PropertyChangedL( iKey, intValue ); } } + +// --------------------------------------------------------- +// --------------------------------------------------------- +// +TInt CXnPropertySubscriber::RunError(TInt /*aError*/) + { + return KErrNone; + } + +// End of file + diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/uiengine/src/xnspbgcleaner.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/xmluirendering/uiengine/src/xnspbgcleaner.cpp Fri Apr 23 13:22:20 2010 +0100 @@ -0,0 +1,137 @@ +/* +* Copyright (c) 2010 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: +* statuspane's background cleaner implementation +* +*/ + +// System includes +#include +#include +#include + +// User includes +#include "xnspbgcleaner.h" + +// CONSTANTS + +// ============================ LOCAL FUNCTIONS ================================ + +// ============================ MEMBER FUNCTIONS =============================== + +// --------------------------------------------------------- +// CXnSpBgCleaner::NewL +// --------------------------------------------------------- +// +CXnSpBgCleaner* CXnSpBgCleaner::NewL() + { + CXnSpBgCleaner* self = CXnSpBgCleaner::NewLC(); + CleanupStack::Pop(); // self; + return self; + } + +// --------------------------------------------------------- +// CXnSpBgCleaner::NewLC +// --------------------------------------------------------- +// +CXnSpBgCleaner* CXnSpBgCleaner::NewLC() + { + CXnSpBgCleaner* self = new ( ELeave ) CXnSpBgCleaner(); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +// --------------------------------------------------------- +// CXnSpBgCleaner::CXnSpBgCleaner +// --------------------------------------------------------- +// +CXnSpBgCleaner::CXnSpBgCleaner() + { + } + +// --------------------------------------------------------- +// CXnSpBgCleaner::ConstructL +// --------------------------------------------------------- +// +void CXnSpBgCleaner::ConstructL() + { + CreateWindowL(); + + TRect statusPaneRect; + AknLayoutUtils::LayoutMetricsRect( + AknLayoutUtils::EStatusPane, statusPaneRect ); + + SetRect( statusPaneRect ); + SetNonFocusing(); + + Window().SetOrdinalPosition( -1 ); + Window().SetBackgroundColor( TRgb::Color16MA(0) ); + Window().SetVisible( ETrue ); + + ActivateL(); + } + +// --------------------------------------------------------- +// CXnSpBgCleaner::~CXnSpBgCleaner +// --------------------------------------------------------- +// +CXnSpBgCleaner::~CXnSpBgCleaner() + { + } + +// --------------------------------------------------------- +// CXnSpBgCleaner::SizeChanged +// --------------------------------------------------------- +// +void CXnSpBgCleaner::SizeChanged() + { + CCoeControl::SizeChanged(); + DrawDeferred(); + } + +// --------------------------------------------------------- +// CXnSpBgCleaner::Draw +// --------------------------------------------------------- +// +void CXnSpBgCleaner::Draw( const TRect& /*aRect*/ ) const + { + CWindowGc& gc = SystemGc(); + TRgb color( TRgb::Color16MA(0) ); + gc.SetPenColor( color ); + gc.SetBrushColor( color ); + gc.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha ); + gc.SetPenStyle(CGraphicsContext::ESolidPen ); + gc.SetBrushStyle(CGraphicsContext::ESolidBrush ); + gc.Clear(); + } + +// --------------------------------------------------------- +// CXnSpBgCleaner::HandleResourceChange +// --------------------------------------------------------- +// +void CXnSpBgCleaner::HandleResourceChange( TInt aType ) + { + CCoeControl::HandleResourceChange( aType ); + + if ( KEikDynamicLayoutVariantSwitch == aType ) + { + TRect statusPaneRect; + AknLayoutUtils::LayoutMetricsRect( + AknLayoutUtils::EStatusPane, statusPaneRect ); + SetRect( statusPaneRect ); + } + } + +// End of file diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/uiengine/src/xnuiengine.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xnuiengine.cpp Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/xmluirendering/uiengine/src/xnuiengine.cpp Fri Apr 23 13:22:20 2010 +0100 @@ -264,15 +264,6 @@ } // ----------------------------------------------------------------------------- -// CXnUiEngine::ActivateViewL -// Activate a view -// ----------------------------------------------------------------------------- -// -void CXnUiEngine::ActivateViewL( CXnNode& /*aViewNode*/ ) - { - } - -// ----------------------------------------------------------------------------- // CXnUiEngine::ViewManager // ----------------------------------------------------------------------------- // @@ -498,15 +489,6 @@ } // ----------------------------------------------------------------------------- -// CXnUiEngine::HitTest -// ----------------------------------------------------------------------------- -// -CXnHitTest& CXnUiEngine::HitTest() const - { - return iUiEngineImpl->HitTest(); - } - -// ----------------------------------------------------------------------------- // CXnUiEngine::GetThemeResource // ----------------------------------------------------------------------------- // diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/uiengine/src/xnuiengine.rss --- a/idlehomescreen/xmluirendering/uiengine/src/xnuiengine.rss Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/xmluirendering/uiengine/src/xnuiengine.rss Fri Apr 23 13:22:20 2010 +0100 @@ -185,4 +185,24 @@ buf = qtn_hs_operation_failed_no_disk; } +RESOURCE DIALOG r_backup_restore_wait_dialog + { + flags = EAknWaitNoteFlags; + buttons = R_AVKON_SOFTKEYS_EMPTY; + items = + { + DLG_LINE + { + type = EAknCtNote; + id = EGeneralNote; + control= AVKON_NOTE + { + layout = EWaitLayout; + singular_label = qtn_hs_backup_use_prevented; + animation = R_QGN_GRAF_WAIT_BAR_ANIM; + }; + } + }; + } + // End of file diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/uiengine/src/xnuiengineappif.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xnuiengineappif.cpp Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/xmluirendering/uiengine/src/xnuiengineappif.cpp Fri Apr 23 13:22:20 2010 +0100 @@ -197,16 +197,6 @@ } // ----------------------------------------------------------------------------- -// TXnUiEngineAppIf::ActivateViewL -// Activate a view -// ----------------------------------------------------------------------------- -// -EXPORT_C void TXnUiEngineAppIf::ActivateViewL( CXnNodeAppIf& aViewNode ) - { - iUiEngine->ActivateViewL( aViewNode.Node() ); - } - -// ----------------------------------------------------------------------------- // TXnUiEngineAppIf::ActiveView // Return the active view // ----------------------------------------------------------------------------- diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/uiengine/src/xnuiengineimpl.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xnuiengineimpl.cpp Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/xmluirendering/uiengine/src/xnuiengineimpl.cpp Fri Apr 23 13:22:20 2010 +0100 @@ -51,7 +51,6 @@ #include "xndomdocument.h" #include "xndomnode.h" #include "xneditmode.h" -#include "xnhittest.h" #include "xnnode.h" #include "xnpanic.h" #include "xneffectmanager.h" @@ -8067,9 +8066,7 @@ void CXnUiEngineImpl::ConstructL() { iEditMode = CXnEditMode::NewL( *iUiEngine ); - - iHitTest = CXnHitTest::NewL(); - + iCurrentGraphicsDevice = CCoeEnv::Static()->ScreenDevice(); // Update the units here, even the refence client rect is only a quess. @@ -8104,7 +8101,6 @@ iViewManager.RemoveObserver( *this ); delete iEditMode; - delete iHitTest; iFocusCandidateList.Reset(); @@ -8291,7 +8287,15 @@ { AddToRedrawListL( node, rect ); - adapter->SetRect( rect ); + // popup calculates its position based on _s60-position-hint property + if( node->Type()->Type() == KPopUpNodeName ) + { + adapter->DoHandlePropertyChangeL(); + } + else + { + adapter->SetRect( rect ); + } CXnProperty* prop = node->GetPropertyL( XnPropertyNames::common::KSizeAware ); if ( prop && prop->StringValue() == @@ -9669,15 +9673,6 @@ } // ----------------------------------------------------------------------------- -// CXnUiEngineImpl::HitTest -// ----------------------------------------------------------------------------- -// -CXnHitTest& CXnUiEngineImpl::HitTest() const - { - return *iHitTest; - } - -// ----------------------------------------------------------------------------- // CXnUiEngineImpl::GetThemeResource // ----------------------------------------------------------------------------- // @@ -9882,11 +9877,15 @@ // ----------------------------------------------------------------------------- void CXnUiEngineImpl::HandlePartialTouchInputL( CXnNode& aNode, TBool aEnable ) { + CXnNode* editorplugin = FindPlugin( aNode ); + if ( !editorplugin ) + { + User::Leave( KErrNotFound ); + } + DisableRenderUiLC(); - CXnNode* editorplugin = FindPlugin( aNode ); - - if ( aEnable ) - + + if ( aEnable ) { iSplitScreenState.iPartialScreenOpen = ETrue; iSplitScreenState.iPartialScreenEditorNode = &aNode; @@ -9896,6 +9895,25 @@ iViewManager.ActiveViewData().ViewNode()->Control() ); control->ResetGrabbing(); + + // Block progression must be bottom-to-top when partial screen is open + // Previous value needs to be stored first + CXnProperty* prop( + editorplugin->Parent()->GetPropertyL( + XnPropertyNames::style::common::KBlockProgression ) ); + if ( prop ) + { + iSplitScreenState.iPartialScreenBlock = &prop->StringValue(); + } + else + { + iSplitScreenState.iPartialScreenBlock = + &XnPropertyNames::style::common::block_progression::KTB(); + } + + SetPartialScreenBlockProgressionL( + editorplugin->Parent(), + XnPropertyNames::style::common::block_progression::KBT ); // Hide all plugins except the one that contains given editor node RPointerArray< CXnNode >& plugins( *Plugins() ); @@ -9907,13 +9925,6 @@ SetNodeVisibleL(pluginNode, EFalse); } } - - // Block progression must be bottom-to-top when partial screen is open - // Previous value needs to be stored first - StorePartialScreenBlockProgressionL(); - - SetPartialScreenBlockProgressionL( - XnPropertyNames::style::common::block_progression::KBT ); // Hide statuspane iAppUiAdapter.StatusPane()->MakeVisible( EFalse ); @@ -9922,30 +9933,23 @@ else { // Show plugin nodes again - RPointerArray< CXnNode >& plugins( *Plugins() ); + RPointerArray< CXnNode >& plugins( *Plugins() ); for( TInt i=0; iDes()); - delete iSplitScreenState.iPartialScreenBlock; - iSplitScreenState.iPartialScreenBlock = NULL; - } + + SetPartialScreenBlockProgressionL( + editorplugin->Parent(), + *iSplitScreenState.iPartialScreenBlock ); + iSplitScreenState.iPartialScreenBlock = NULL; iSplitScreenState.iPartialScreenEditorNode = NULL; iSplitScreenState.iPartialScreenOpen = EFalse; @@ -10096,59 +10100,23 @@ // ----------------------------------------------------------------------------- // SetPartialScreenBlockProgressionL // ----------------------------------------------------------------------------- -void CXnUiEngineImpl::SetPartialScreenBlockProgressionL( const TDesC8& aBlockProgression ) - { - CXnNode* plugin = FindPlugin( *iSplitScreenState.iPartialScreenEditorNode ); - CXnNode* parent( NULL ); - if( plugin ) - { - parent = plugin->Parent(); - } - - CXnDomStringPool* sp( iUiEngine->ODT()->DomDocument().StringPool()); - if(parent) - { +void CXnUiEngineImpl::SetPartialScreenBlockProgressionL( + CXnNode* aParent, const TDesC8& aBlockProgression ) + { + CXnDomStringPool* sp( iUiEngine->ODT()->DomDocument().StringPool()); + if( aParent && sp ) + { CXnProperty* block_progression = CXnProperty::NewL( - XnPropertyNames::style::common::KBlockProgression, - aBlockProgression, - CXnDomPropertyValue::EString, *sp ); - - CleanupStack::PushL( block_progression ); - parent->SetPropertyL(block_progression); - CleanupStack::Pop( block_progression ); - } - } - -// ----------------------------------------------------------------------------- -// SetPartialScreenBlockProgressionL -// ----------------------------------------------------------------------------- -void CXnUiEngineImpl::StorePartialScreenBlockProgressionL() - { - CXnNode* parent = iSplitScreenState.iPartialScreenEditorNode->Parent(); - - if(parent) - { - CXnProperty* blocProgressionProperty( - parent->GetPropertyL( XnPropertyNames::style::common::KBlockProgression ) ); - if ( !blocProgressionProperty ) - { - User::Leave( KErrNotFound ); - } - HBufC* blocProgressionValue (blocProgressionProperty->StringValueL()); - if ( !blocProgressionValue ) - { - User::Leave( KErrNotFound ); - } - CleanupStack::PushL( blocProgressionValue ); - if(iSplitScreenState.iPartialScreenBlock) - { - delete iSplitScreenState.iPartialScreenBlock; - iSplitScreenState.iPartialScreenBlock = NULL; - } - iSplitScreenState.iPartialScreenBlock = - CnvUtfConverter::ConvertFromUnicodeToUtf8L(blocProgressionValue->Des() ); - CleanupStack::PopAndDestroy( blocProgressionValue ); - } + XnPropertyNames::style::common::KBlockProgression, + aBlockProgression, + CXnDomPropertyValue::EString, *sp ); + if ( block_progression ) + { + CleanupStack::PushL( block_progression ); + aParent->SetPropertyL(block_progression); + CleanupStack::Pop( block_progression ); + } + } } // ----------------------------------------------------------------------------- diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/uiengine/src/xnuienginepluginif.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xnuienginepluginif.cpp Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/xmluirendering/uiengine/src/xnuienginepluginif.cpp Fri Apr 23 13:22:20 2010 +0100 @@ -28,7 +28,6 @@ #include "xneditor.h" #include "xnviewdata.h" #include "xndomnode.h" -#include "xnhittest.h" #include "xnpanic.h" // ============================ MEMBER FUNCTIONS =============================== @@ -182,15 +181,6 @@ } // ----------------------------------------------------------------------------- -// TXnUiEnginePluginIf::RestorePreviousFocusedNode -// Forwards the call to the ui engine implementation -// ----------------------------------------------------------------------------- -// -EXPORT_C void TXnUiEnginePluginIf::RestorePreviousFocusedNode() - { - } - -// ----------------------------------------------------------------------------- // TXnUiEnginePluginIf::StringPool // Forwards the call to the ui engine implementation // ----------------------------------------------------------------------------- @@ -245,16 +235,6 @@ } // ----------------------------------------------------------------------------- -// TXnUiEnginePluginIf::ActivateViewL -// Activate a view -// ----------------------------------------------------------------------------- -// -EXPORT_C void TXnUiEnginePluginIf::ActivateViewL( CXnNodePluginIf& aViewNode ) - { - iUiEngine->ActivateViewL( aViewNode.Node() ); - } - -// ----------------------------------------------------------------------------- // TXnUiEnginePluginIf::ScreenDeviceSize // Get the size of the current screen device // ----------------------------------------------------------------------------- @@ -330,35 +310,8 @@ } // ----------------------------------------------------------------------------- -// TXnUiEnginePluginIf::HitRegion -// ----------------------------------------------------------------------------- -// -EXPORT_C CXnControlAdapter* TXnUiEnginePluginIf::HitRegion() const - { - return iUiEngine->HitTest().HitRegion(); - } - -// ----------------------------------------------------------------------------- -// TXnUiEnginePluginIf::DeactivateFocusedNodeL -// Deactivates focused node -// ----------------------------------------------------------------------------- +// TXnUiEnginePluginIf::PluginNodeL // -EXPORT_C void TXnUiEnginePluginIf::DeactivateFocusedNodeL() - { - } - -// ----------------------------------------------------------------------------- -// TXnUiEnginePluginIf::ShowFocus -// Queries wheter focus is visible -// ----------------------------------------------------------------------------- -// -EXPORT_C TBool TXnUiEnginePluginIf::ShowFocus() - { - return EFalse; - } - -// ----------------------------------------------------------------------------- -// TXnUiEnginePluginIf::PluginNodeL // ----------------------------------------------------------------------------- // EXPORT_C CXnNodePluginIf& TXnUiEnginePluginIf::PluginNodeL( @@ -393,44 +346,6 @@ } // ----------------------------------------------------------------------------- -// TXnUiEnginePluginIf::SetFocusVisibleL -// Sets focus visibility of active view -// ----------------------------------------------------------------------------- -// -EXPORT_C void TXnUiEnginePluginIf::SetFocusVisibleL( TBool /*aVisible*/ ) - { - } - -// ----------------------------------------------------------------------------- -// TXnUiEnginePluginIf::FocusVisible -// Gets focus visibility of active view -// ----------------------------------------------------------------------------- -// -EXPORT_C TBool TXnUiEnginePluginIf::FocusVisible() - { - return EFalse; - } - -// ----------------------------------------------------------------------------- -// TXnUiEnginePluginIf::EnableSwipeL -// Sets swipe enabled or disabled -// ----------------------------------------------------------------------------- -// -EXPORT_C void TXnUiEnginePluginIf::EnableSwipeL( TBool /*aEnable*/ ) - { - } - -// ----------------------------------------------------------------------------- -// TXnUiEnginePluginIf::SwipeEnabledL -// queries whether swipe is enabled or not -// ----------------------------------------------------------------------------- -// -EXPORT_C TBool TXnUiEnginePluginIf::SwipeEnabledL() - { - return EFalse; - } - -// ----------------------------------------------------------------------------- // TXnUiEnginePluginIf::DisableRenderUiLC // // ----------------------------------------------------------------------------- @@ -461,6 +376,5 @@ return iUiEngine->IsTextEditorActive(); } - // End of file diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/uiengine/src/xnviewadapter.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xnviewadapter.cpp Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/xmluirendering/uiengine/src/xnviewadapter.cpp Fri Apr 23 13:22:20 2010 +0100 @@ -367,6 +367,8 @@ iFlags.Set( EIsActivated ); + // State must be cleared before adding to stack + iEventDispatcher->ClearStateL(); iAppUiAdapter.AddToStackL( *this, iEventDispatcher ); // enable statuspane transparancy @@ -484,18 +486,20 @@ // ----------------------------------------------------------------------------- // void CXnViewAdapter::ActivateContainerL( CXnViewData& aContainer, - TBool aEnterEditState ) - { - if ( iContainer == &aContainer || iFlags.IsSet( EIsDestructionRunning ) ) - { + TBool aEnterEditState, TBool aForceActivation ) + { + // Returns if the container remains the same and activation is not forced + // Otherwise the old container is deactivated and the new is activated + if ( iFlags.IsSet( EIsDestructionRunning ) || + ( ( !aForceActivation ) && ( iContainer == &aContainer ) ) ) + { return; } + // Find previous container and then deactivate it const CXnViewData* previous( iContainer ); - - // Deactivate previous DeactivateContainerL(); - + if ( iFlags.IsClear( EIsActivated ) ) { // Some other view than this in this appui is currently active, @@ -569,17 +573,15 @@ return; } - // Deactivate container even though it hasn't changed to close all popups - // and other windows - DeactivateContainerL(); - // first view is default CXnViewData* viewData = static_cast( views[0] ); if ( viewData ) { EnterEditStateL( *viewData, aEnterEditState ); - ActivateContainerL( *viewData, aEnterEditState ); + // Deactivate container even though it hasn't changed to close all + // popups and other windows + ActivateContainerL( *viewData, aEnterEditState, ETrue ); } } diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/uiengine/src/xnviewcontroladapter.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xnviewcontroladapter.cpp Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/xmluirendering/uiengine/src/xnviewcontroladapter.cpp Fri Apr 23 13:22:20 2010 +0100 @@ -59,9 +59,9 @@ // void CXnViewControlAdapter::ConstructL( CXnNodePluginIf& aNode ) { + CreateWindowL(); + CXnControlAdapter::ConstructL( aNode ); - - CreateWindowL(); if( Window().SetTransparencyAlphaChannel() == KErrNone ) { diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/uiengine/src/xnviewmanager.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xnviewmanager.cpp Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/xmluirendering/uiengine/src/xnviewmanager.cpp Fri Apr 23 13:22:20 2010 +0100 @@ -277,9 +277,7 @@ // ----------------------------------------------------------------------------- // CXnViewManager::~CXnViewManager() - { - delete iUiStartupPhase; - + { delete iStabilityTimer; iObservers.Reset(); @@ -304,33 +302,6 @@ } // ----------------------------------------------------------------------------- -// CXnViewManager::PropertyChangedL() -// -// ----------------------------------------------------------------------------- -// -void CXnViewManager::PropertyChangedL( const TUint32 aKey, const TInt aValue ) - { - if ( aKey == KPSStartupUiPhase && aValue == EStartupUiPhaseAllDone ) - { - iUiStartupPhaseAllDone = ETrue; - - iAppUiAdapter.ViewAdapter().ActivateContainerL( ActiveViewData() ); - } - - iUiStartupPhaseAllDone = ETrue; - } - -// ----------------------------------------------------------------------------- -// CXnViewManager::UiStartupPhaseAllDone() -// -// ----------------------------------------------------------------------------- -// -TBool CXnViewManager::UiStartupPhaseAllDone() const - { - return iUiStartupPhaseAllDone; - } - -// ----------------------------------------------------------------------------- // CXnViewManager::ConstructL() // 2nd phase constructor // ----------------------------------------------------------------------------- @@ -374,14 +345,8 @@ CleanupStack::PopAndDestroy(); // DisableRenderUiLC(); - // Determine UI startup phase - delete iUiStartupPhase; - iUiStartupPhase = NULL; - - iUiStartupPhaseAllDone = EFalse; - - iUiStartupPhase = CXnPropertySubscriber::NewL( - KPSUidStartup, KPSStartupUiPhase, *this ); + // Activate initial view already here to get publishers loaded + ActiveViewData().SetActive( ETrue ); } // ----------------------------------------------------------------------------- diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/uiengine/src/xnwaitdialog.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/xmluirendering/uiengine/src/xnwaitdialog.cpp Fri Apr 23 13:22:20 2010 +0100 @@ -0,0 +1,59 @@ +/* +* Copyright (c) 2010 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: +* implementation of wait dialog that doesn't consume key events. +* +*/ + +// System includes + +// User includes +#include "xnwaitdialog.h" + +// CONSTANTS + +// ============================ LOCAL FUNCTIONS ================================ + +// ============================ MEMBER FUNCTIONS =============================== + +// --------------------------------------------------------------------------- +// CXnWaitDialog::CXnWaitDialog +// --------------------------------------------------------------------------- +// +CXnWaitDialog::CXnWaitDialog( CEikDialog** aSelfPtr, + TBool aVisibilityDelayOff ) + : CAknWaitDialog( aSelfPtr, aVisibilityDelayOff ) + { + } + +// --------------------------------------------------------------------------- +// CXnWaitDialog::~CXnWaitDialog +// --------------------------------------------------------------------------- +// +CXnWaitDialog::~CXnWaitDialog() + { + } + +// --------------------------------------------------------------------------- +// CXnWaitDialog::OfferKeyEventL +// --------------------------------------------------------------------------- +// +TKeyResponse CXnWaitDialog::OfferKeyEventL( + const TKeyEvent& /*aKeyEvent*/, + TEventCode /*aType*/ ) + { + return EKeyWasConsumed; // consume all keys while open + } + +// End of file diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/uiengine/src/xnwallpaperview.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xnwallpaperview.cpp Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/xmluirendering/uiengine/src/xnwallpaperview.cpp Fri Apr 23 13:22:20 2010 +0100 @@ -37,6 +37,7 @@ #include "xnbackgroundmanager.h" #include "xneffectmanager.h" #include "xnviewmanager.h" +#include "xnspbgcleaner.h" // Constants _LIT( KResourceDrive, "z:" ); @@ -100,7 +101,8 @@ { CCoeEnv::Static()->DeleteResourceFile( iResourceOffset ); - delete iContainer; + delete iContainer; + delete iXnSpBgCleaner; delete iTimer; } @@ -123,15 +125,22 @@ // switch layout CEikStatusPane* sp( iAppUi.StatusPane() ); + // setup status pane layout sp->SwitchLayoutL( R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT ); + // apply changes sp->ApplyCurrentSettingsL(); - // disable transparancy - if ( sp->IsTransparent() ) + sp->EnableTransparent( EFalse ); + + // create background cleaner for sp + if ( !iXnSpBgCleaner ) { - sp->EnableTransparent( EFalse ); + iXnSpBgCleaner = CXnSpBgCleaner::NewL(); + AppUi()->AddToStackL( *this, iXnSpBgCleaner ); } - + + // update sp + iXnSpBgCleaner->DrawNow(); sp->DrawNow(); // update cba @@ -181,6 +190,13 @@ iContainer = NULL; } + if ( iXnSpBgCleaner ) + { + AppUi()->RemoveFromStack( iXnSpBgCleaner ); + delete iXnSpBgCleaner; + iXnSpBgCleaner = NULL; + } + iAppUi.EffectManager()->UiRendered(); } diff -r d6c9979772b6 -r c2e9d284d779 idlehomescreen/xmluirendering/uiengine/src/xnwidgetextensionadapter.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xnwidgetextensionadapter.cpp Mon Apr 12 20:35:11 2010 +0100 +++ b/idlehomescreen/xmluirendering/uiengine/src/xnwidgetextensionadapter.cpp Fri Apr 23 13:22:20 2010 +0100 @@ -19,16 +19,15 @@ #include #include #include +#include +#include // User includes #include "xnwidgetextensionadapter.h" #include "xncontroladapter.h" - #include "xncomponentnodeimpl.h" #include "xncomponent.h" - #include "xnuiengine.h" -#include "xnhittest.h" #include "xnnode.h" #include "xnnodepluginif.h" @@ -46,9 +45,6 @@ #include "xnviewdata.h" #include "xnplugindata.h" -#include -#include - // Constants _LIT8( KPopup, "popup" ); _LIT8( KPositionHint, "_s60-position-hint" ); @@ -215,60 +211,9 @@ if ( aVisible && iPopup ) { - // read position-hint property and set-up its variable - CXnProperty* positionHintProp = NULL; - TRAP_IGNORE( positionHintProp = iNode.Node().GetPropertyL( KPositionHint ) ); - - if ( positionHintProp ) - { - const TDesC8& displayHintVal = positionHintProp->StringValue(); - - if ( displayHintVal == XnPropertyNames::tooltip::positionhint::KAboveLeft ) - { - iPositionHint = EAboveLeft; - } - else if ( displayHintVal == XnPropertyNames::tooltip::positionhint::KAboveRight ) - { - iPositionHint = EAboveRight; - } - else if ( displayHintVal == XnPropertyNames::tooltip::positionhint::KBelowLeft ) - { - iPositionHint = EBelowLeft; - } - else if ( displayHintVal == XnPropertyNames::tooltip::positionhint::KBelowRight ) - { - iPositionHint = EBelowRight; - } - else if ( displayHintVal == XnPropertyNames::tooltip::positionhint::KRight ) - { - iPositionHint = ERight; - } - else if ( displayHintVal == XnPropertyNames::tooltip::positionhint::KLeft ) - { - iPositionHint = ELeft; - } - else - { - // if the value if of unknown type, use default one - if ( AknLayoutUtils::LayoutMirrored() ) - { - iPositionHint = EAboveRight; - } - else - { - iPositionHint = EAboveLeft; - } - } - - if ( iPositionHint != ENone ) - { - // the popup is going visible and position-hind is available - // calculate its position - CalculatePosition(); - } - } + ChangePopupPosition(); } - + TBool effectStarted = EFalse; if ( iAppUiAdapter->IsForeground() ) { @@ -373,10 +318,88 @@ // void CXnWidgetExtensionAdapter::Draw( const TRect& aRect ) const { + SystemGc().Clear( aRect ); CXnControlAdapter::Draw( aRect ); } // ----------------------------------------------------------------------------- +// CXnWidgetExtensionAdapter::DoHandlePropertyChangeL +// +// ----------------------------------------------------------------------------- +// +void CXnWidgetExtensionAdapter::DoHandlePropertyChangeL( CXnProperty* /*aProperty*/ ) + { + if( iNode.Node().IsLaidOut() && IsVisible() ) + { + ChangePopupPosition(); + } + } + +// ----------------------------------------------------------------------------- +// CXnWidgetExtensionAdapter::ChangePopupPosition +// +// ----------------------------------------------------------------------------- +// +void CXnWidgetExtensionAdapter::ChangePopupPosition() + { + if ( iPopup ) + { + // read position-hint property and set-up its variable + CXnProperty* positionHintProp = NULL; + TRAP_IGNORE( positionHintProp = iNode.Node().GetPropertyL( KPositionHint ) ); + + if ( positionHintProp ) + { + const TDesC8& displayHintVal = positionHintProp->StringValue(); + + if ( displayHintVal == XnPropertyNames::tooltip::positionhint::KAboveLeft ) + { + iPositionHint = EAboveLeft; + } + else if ( displayHintVal == XnPropertyNames::tooltip::positionhint::KAboveRight ) + { + iPositionHint = EAboveRight; + } + else if ( displayHintVal == XnPropertyNames::tooltip::positionhint::KBelowLeft ) + { + iPositionHint = EBelowLeft; + } + else if ( displayHintVal == XnPropertyNames::tooltip::positionhint::KBelowRight ) + { + iPositionHint = EBelowRight; + } + else if ( displayHintVal == XnPropertyNames::tooltip::positionhint::KRight ) + { + iPositionHint = ERight; + } + else if ( displayHintVal == XnPropertyNames::tooltip::positionhint::KLeft ) + { + iPositionHint = ELeft; + } + else + { + // if the value if of unknown type, use default one + if ( AknLayoutUtils::LayoutMirrored() ) + { + iPositionHint = EAboveRight; + } + else + { + iPositionHint = EAboveLeft; + } + } + + if ( iPositionHint != ENone ) + { + // the popup is going visible and position-hind is available + // calculate its position + CalculatePosition(); + } + } + } + } + +// ----------------------------------------------------------------------------- // CalculatePosition // This is used only for popup element with position hint // ----------------------------------------------------------------------------- @@ -385,8 +408,8 @@ // widget's rectangle TRect controlRect; - // get popup's window size - TRect popupRect = this->Rect(); + // get popup's size. + TSize popupSize = iNode.BorderRect().Size(); TRect clientRect = static_cast( *iAppUiAdapter ).ClientRect(); @@ -434,16 +457,16 @@ // if this position does not fit the screen, // and if below left is more suitable, use it - if ( spaceAbove < popupRect.Height() && spaceBelow > spaceAbove ) + if ( spaceAbove < popupSize.iHeight && spaceBelow > spaceAbove ) { rect = TRect( TPoint( controlRect.iTl.iX, controlRect.iBr.iY ), - TPoint( controlRect.iTl.iX + popupRect.Width(), controlRect.iBr.iY + popupRect.Height() ) ); + TPoint( controlRect.iTl.iX + popupSize.iWidth, controlRect.iBr.iY + popupSize.iHeight ) ); } else { // use the above-left position - rect = TRect( TPoint( controlRect.iTl.iX, controlRect.iTl.iY - popupRect.Height() ), - TPoint( controlRect.iTl.iX + popupRect.Width(), controlRect.iTl.iY ) ); + rect = TRect( TPoint( controlRect.iTl.iX, controlRect.iTl.iY - popupSize.iHeight ), + TPoint( controlRect.iTl.iX + popupSize.iWidth, controlRect.iTl.iY ) ); } break; @@ -452,15 +475,15 @@ // if this position does not fit the screen, // and if below right is more suitable, use it - if ( spaceAbove < popupRect.Height() && spaceBelow > spaceAbove ) + if ( spaceAbove < popupSize.iHeight && spaceBelow > spaceAbove ) { - rect = TRect( TPoint( controlRect.iBr.iX - popupRect.Width(), controlRect.iBr.iY ), - TPoint( controlRect.iBr.iX, controlRect.iBr.iY + popupRect.Height() ) ); + rect = TRect( TPoint( controlRect.iBr.iX - popupSize.iWidth, controlRect.iBr.iY ), + TPoint( controlRect.iBr.iX, controlRect.iBr.iY + popupSize.iHeight ) ); } else { // use the above-right position - rect = TRect( TPoint( controlRect.iBr.iX - popupRect.Width(), controlRect.iTl.iY - popupRect.Height() ), + rect = TRect( TPoint( controlRect.iBr.iX - popupSize.iWidth, controlRect.iTl.iY - popupSize.iHeight ), TPoint( controlRect.iBr.iX, controlRect.iTl.iY ) ); } break; @@ -469,16 +492,16 @@ // if this position does not fit the screen, // and if above left is more suitable, use it - if ( spaceBelow < popupRect.Height() && spaceBelow < spaceAbove ) + if ( spaceBelow < popupSize.iHeight && spaceBelow < spaceAbove ) { - rect = TRect( TPoint( controlRect.iTl.iX, controlRect.iTl.iY - popupRect.Height() ), - TPoint( controlRect.iTl.iX + popupRect.Width(), controlRect.iTl.iY ) ); + rect = TRect( TPoint( controlRect.iTl.iX, controlRect.iTl.iY - popupSize.iHeight ), + TPoint( controlRect.iTl.iX + popupSize.iWidth, controlRect.iTl.iY ) ); } else { // use the below-left position rect = TRect( TPoint( controlRect.iTl.iX, controlRect.iBr.iY ), - TPoint( controlRect.iTl.iX + popupRect.Width(), controlRect.iBr.iY + popupRect.Height() ) ); + TPoint( controlRect.iTl.iX + popupSize.iWidth, controlRect.iBr.iY + popupSize.iHeight ) ); } break; @@ -486,16 +509,16 @@ // if this position does not fit the screen, // and if above right is more suitable, use it - if ( spaceBelow < popupRect.Height() && spaceBelow < spaceAbove ) + if ( spaceBelow < popupSize.iHeight && spaceBelow < spaceAbove ) { - rect = TRect( TPoint( controlRect.iBr.iX - popupRect.Width(), controlRect.iTl.iY - popupRect.Height() ), + rect = TRect( TPoint( controlRect.iBr.iX - popupSize.iWidth, controlRect.iTl.iY - popupSize.iHeight ), TPoint( controlRect.iBr.iX, controlRect.iTl.iY ) ); } else { // use the below-right position - rect = TRect( TPoint( controlRect.iBr.iX - popupRect.Width(), controlRect.iBr.iY ), - TPoint( controlRect.iBr.iX, controlRect.iBr.iY + popupRect.Height() ) ); + rect = TRect( TPoint( controlRect.iBr.iX - popupSize.iWidth, controlRect.iBr.iY ), + TPoint( controlRect.iBr.iX, controlRect.iBr.iY + popupSize.iHeight ) ); } break; @@ -503,33 +526,33 @@ // if this position does not fit the screen, // and if left or above-left is more suitable, use it - if ( spaceRight < popupRect.Width() ) + if ( spaceRight < popupSize.iWidth ) { // use the left position if the space is big enough - if ( spaceLeft >= popupRect.Width() ) + if ( spaceLeft >= popupSize.iWidth ) { // use left position - rect = TRect( TPoint( controlRect.iTl.iX - popupRect.Width(), controlRect.iTl.iY ), - TPoint( controlRect.iTl.iX, controlRect.iTl.iY + popupRect.Height() ) ); + rect = TRect( TPoint( controlRect.iTl.iX - popupSize.iWidth, controlRect.iTl.iY ), + TPoint( controlRect.iTl.iX, controlRect.iTl.iY + popupSize.iHeight ) ); } - else if ( spaceAbove >= popupRect.Height() ) + else if ( spaceAbove >= popupSize.iHeight ) { // use the above-right position - rect = TRect( TPoint( controlRect.iBr.iX - popupRect.Width(), controlRect.iTl.iY - popupRect.Height() ), + rect = TRect( TPoint( controlRect.iBr.iX - popupSize.iWidth, controlRect.iTl.iY - popupSize.iHeight ), TPoint( controlRect.iBr.iX, controlRect.iTl.iY ) ); } else { // use the below-right position - rect = TRect( TPoint( controlRect.iBr.iX - popupRect.Width(), controlRect.iBr.iY ), - TPoint( controlRect.iBr.iX, controlRect.iBr.iY + popupRect.Height() ) ); + rect = TRect( TPoint( controlRect.iBr.iX - popupSize.iWidth, controlRect.iBr.iY ), + TPoint( controlRect.iBr.iX, controlRect.iBr.iY + popupSize.iHeight ) ); } } else { // use the right position rect = TRect( TPoint( controlRect.iBr.iX, controlRect.iTl.iY ), - TPoint( controlRect.iBr.iX + popupRect.Width(), controlRect.iTl.iY + popupRect.Height() ) ); + TPoint( controlRect.iBr.iX + popupSize.iWidth, controlRect.iTl.iY + popupSize.iHeight ) ); } break; @@ -538,32 +561,32 @@ // if this position does not fit the screen, // and if right is more suitable, use it - if ( spaceLeft < popupRect.Width() ) + if ( spaceLeft < popupSize.iWidth ) { // use the right position, if it the space is big enough - if ( spaceRight >= popupRect.Width() ) + if ( spaceRight >= popupSize.iWidth ) { rect = TRect( TPoint( controlRect.iBr.iX, controlRect.iTl.iY ), - TPoint( controlRect.iBr.iX + popupRect.Width(), controlRect.iTl.iY + popupRect.Height() ) ); + TPoint( controlRect.iBr.iX + popupSize.iWidth, controlRect.iTl.iY + popupSize.iHeight ) ); } - else if ( spaceAbove >= popupRect.Height() ) + else if ( spaceAbove >= popupSize.iHeight ) { // use the above-left position - rect = TRect( TPoint( controlRect.iTl.iX, controlRect.iTl.iY - popupRect.Height() ), - TPoint( controlRect.iTl.iX + popupRect.Width(), controlRect.iTl.iY ) ); + rect = TRect( TPoint( controlRect.iTl.iX, controlRect.iTl.iY - popupSize.iHeight ), + TPoint( controlRect.iTl.iX + popupSize.iWidth, controlRect.iTl.iY ) ); } else { // use the below-left position rect = TRect( TPoint( controlRect.iTl.iX, controlRect.iBr.iY ), - TPoint( controlRect.iTl.iX + popupRect.Width(), controlRect.iBr.iY + popupRect.Height() ) ); + TPoint( controlRect.iTl.iX + popupSize.iWidth, controlRect.iBr.iY + popupSize.iHeight ) ); } } else { // use the left position - rect = TRect( TPoint( controlRect.iTl.iX - popupRect.Width(), controlRect.iTl.iY ), - TPoint( controlRect.iTl.iX, controlRect.iTl.iY + popupRect.Height() ) ); + rect = TRect( TPoint( controlRect.iTl.iX - popupSize.iWidth, controlRect.iTl.iY ), + TPoint( controlRect.iTl.iX, controlRect.iTl.iY + popupSize.iHeight ) ); } break; default: diff -r d6c9979772b6 -r c2e9d284d779 menufw/menufwui/matrixmenu/loc/matrix_menu.loc --- a/menufw/menufwui/matrixmenu/loc/matrix_menu.loc Mon Apr 12 20:35:11 2010 +0100 +++ b/menufw/menufwui/matrixmenu/loc/matrix_menu.loc Fri Apr 23 13:22:20 2010 +0100 @@ -29,13 +29,13 @@ //d: Displayed in Status Pane. //l: title_pane_t2/opt9 //r: 1.0 -#define qtn_org_root_editing_title "Organizing Menu" +#define qtn_org_root_editing_title "Editing Menu" //d: Title of a folder in Edit Mode. //d: Displayed in Status Pane. %U is the name of the opened folder. //l: title_pane_t2/opt9 //r: 1.0 -#define qtn_org_folder_editing_title "Organizing %U" +#define qtn_org_folder_editing_title "Editing %U" //d: Label of the menu item. //d: Opens selected item. diff -r d6c9979772b6 -r c2e9d284d779 taskswitcher/contextengine/rom/tscontextservices.iby --- a/taskswitcher/contextengine/rom/tscontextservices.iby Mon Apr 12 20:35:11 2010 +0100 +++ b/taskswitcher/contextengine/rom/tscontextservices.iby Fri Apr 23 13:22:20 2010 +0100 @@ -21,10 +21,5 @@ // Context Services binaries file=ABI_DIR/BUILD_DIR/tscontextservicesutils.dll SHARED_LIB_DIR/tscontextservicesutils.dll -// backup registration -data=DATAZ_/private/20011417/backup_registration.xml private/20011417/backup_registration.xml - -// stub sis -data=ZSYSTEM/install/tsctxsrv_stub.sis system/install/tsctxsrv_stub.sis #endif // TSCONTEXTSERVICES diff -r d6c9979772b6 -r c2e9d284d779 taskswitcher/contextengine/tsfswserver/engine/inc/tsfswengine.h --- a/taskswitcher/contextengine/tsfswserver/engine/inc/tsfswengine.h Mon Apr 12 20:35:11 2010 +0100 +++ b/taskswitcher/contextengine/tsfswserver/engine/inc/tsfswengine.h Fri Apr 23 13:22:20 2010 +0100 @@ -105,6 +105,7 @@ */ IMPORT_C TUid ForegroundAppUidL( TInt aType ); +public: /** * Callback for rotation completion. Takes ownership of a given * bitmap. @@ -168,17 +169,6 @@ TUid AppUidForWgIdL( TInt aWgId ); /** - * Finds out the application name. - * @param aWindowName window group name or NULL - * @param aAppUId application uid - * @param aWgId window group id - * @return application name, ownership transferred to caller - */ - HBufC* FindAppNameLC( CApaWindowGroupName* aWindowName, - const TUid& aAppUid, - TInt aWgId ); - - /** * Makes a copy of the bitmap with the given handle. * @param aFbsHandle bitmap handle * @param aKeepAspectRatio if true then aspect ratio is kept diff -r d6c9979772b6 -r c2e9d284d779 taskswitcher/contextengine/tsfswserver/engine/inc/tsfswobservers.h --- a/taskswitcher/contextengine/tsfswserver/engine/inc/tsfswobservers.h Mon Apr 12 20:35:11 2010 +0100 +++ b/taskswitcher/contextengine/tsfswserver/engine/inc/tsfswobservers.h Fri Apr 23 13:22:20 2010 +0100 @@ -56,12 +56,6 @@ * Called when there is a change in the task list. */ virtual void FswDataChanged() = 0; - - /** - * Called to find out how many clients are subscribed - * for fsw content change notifications. - */ - virtual TInt FswDataListenerCount() = 0; }; /** diff -r d6c9979772b6 -r c2e9d284d779 taskswitcher/contextengine/tsfswserver/engine/src/tscpsnotifier.cpp --- a/taskswitcher/contextengine/tsfswserver/engine/src/tscpsnotifier.cpp Mon Apr 12 20:35:11 2010 +0100 +++ b/taskswitcher/contextengine/tsfswserver/engine/src/tscpsnotifier.cpp Fri Apr 23 13:22:20 2010 +0100 @@ -18,10 +18,10 @@ #include "tscpsnotifier.h" #include "tsfswengine.h" -#include -#include -#include -#include +#include +#include +#include +#include #include _LIT8( KCPService, "Service.ContentPublishing" ); diff -r d6c9979772b6 -r c2e9d284d779 taskswitcher/contextengine/tsfswserver/engine/src/tsfswengine.cpp --- a/taskswitcher/contextengine/tsfswserver/engine/src/tsfswengine.cpp Mon Apr 12 20:35:11 2010 +0100 +++ b/taskswitcher/contextengine/tsfswserver/engine/src/tsfswengine.cpp Fri Apr 23 13:22:20 2010 +0100 @@ -380,55 +380,6 @@ } // -------------------------------------------------------------------------- -// CTsFswEngine::FindAppNameLC -// -------------------------------------------------------------------------- -// -HBufC* CTsFswEngine::FindAppNameLC( CApaWindowGroupName* aWindowName, - const TUid& aAppUid, - TInt aWgId ) - { - //Retrieve the app name - TApaAppInfo info; - iAppArcSession.GetAppInfo( info, aAppUid ); - TPtrC caption = info.iShortCaption; - - HBufC* tempName = 0; - if ( !caption.Length() && aWindowName ) // if not set - use thread name instead - { - if ( aWindowName->Caption().Length() ) - { - tempName = aWindowName->Caption().AllocL(); - //put on cleanupstack after the if - } - else - { - TThreadId threadId; - TInt err = iWsSession.GetWindowGroupClientThreadId( - aWgId, threadId ); - if ( err == KErrNone ) - { - RThread thread; - CleanupClosePushL( thread ); - err = thread.Open ( threadId ); - if ( err==KErrNone ) - { - tempName = thread.Name().AllocL(); // codescanner::forgottoputptroncleanupstack - // tempName put on cleanupstack after the if - } - CleanupStack::PopAndDestroy( &thread ); - } - } - } - else - { - tempName = caption.AllocL(); - //put on cleanupstack after the if - } - CleanupStack::PushL( tempName ); - return tempName; - } - -// -------------------------------------------------------------------------- // CTsFswEngine::CopyBitmapL // -------------------------------------------------------------------------- // diff -r d6c9979772b6 -r c2e9d284d779 taskswitcher/contextengine/tsfswserver/engine/src/tsfswiconcache.cpp --- a/taskswitcher/contextengine/tsfswserver/engine/src/tsfswiconcache.cpp Mon Apr 12 20:35:11 2010 +0100 +++ b/taskswitcher/contextengine/tsfswserver/engine/src/tsfswiconcache.cpp Fri Apr 23 13:22:20 2010 +0100 @@ -23,8 +23,8 @@ #include // size for the created app icons -const TInt KAppIconWidth = 96; -const TInt KAppIconHeight = 96; +const TInt KAppIconWidth = 300; +const TInt KAppIconHeight = 300; // -------------------------------------------------------------------------- // CTsFswIconCache::NewL diff -r d6c9979772b6 -r c2e9d284d779 taskswitcher/contextengine/tsfswserver/server/inc/tsfswserver.h --- a/taskswitcher/contextengine/tsfswserver/server/inc/tsfswserver.h Mon Apr 12 20:35:11 2010 +0100 +++ b/taskswitcher/contextengine/tsfswserver/server/inc/tsfswserver.h Fri Apr 23 13:22:20 2010 +0100 @@ -66,8 +66,6 @@ // from MTsFswEngineObserver void FswDataChanged(); - TInt FswDataListenerCount(); - private: TInt iSessionCount; CTsFswEngine* iEngine; diff -r d6c9979772b6 -r c2e9d284d779 taskswitcher/contextengine/tsfswserver/server/src/tsfswserver.cpp --- a/taskswitcher/contextengine/tsfswserver/server/src/tsfswserver.cpp Mon Apr 12 20:35:11 2010 +0100 +++ b/taskswitcher/contextengine/tsfswserver/server/src/tsfswserver.cpp Fri Apr 23 13:22:20 2010 +0100 @@ -188,25 +188,6 @@ } // -------------------------------------------------------------------------- -// CTsFswServer::FswDataListenersCount -// callback from engine -// -------------------------------------------------------------------------- -// -TInt CTsFswServer::FswDataListenerCount() - { - TInt n = 0; - iSessionIter.SetToFirst(); - while ( CTsFswSession* session = static_cast( iSessionIter++ ) ) - { - if ( session->IsListening() ) - { - ++n; - } - } - return n; - } - -// -------------------------------------------------------------------------- // RunServerL // -------------------------------------------------------------------------- // diff -r d6c9979772b6 -r c2e9d284d779 taskswitcher/taskswitcherui/taskswitcherapp/data/taskswitcher_reg.rss --- a/taskswitcher/taskswitcherui/taskswitcherapp/data/taskswitcher_reg.rss Mon Apr 12 20:35:11 2010 +0100 +++ b/taskswitcher/taskswitcherui/taskswitcherapp/data/taskswitcher_reg.rss Fri Apr 23 13:22:20 2010 +0100 @@ -27,5 +27,6 @@ app_file="taskswitcher"; localisable_resource_file="\\resource\\apps\\taskswitcher"; localisable_resource_id = R_LOCALISABLE_APP_INFO; - hidden=KAppIsHidden; + hidden = KAppIsHidden; + launch = KAppLaunchInBackground; } diff -r d6c9979772b6 -r c2e9d284d779 taskswitcher/taskswitcherui/taskswitcherapp/inc/tsappui.h --- a/taskswitcher/taskswitcherui/taskswitcherapp/inc/tsappui.h Mon Apr 12 20:35:11 2010 +0100 +++ b/taskswitcher/taskswitcherui/taskswitcherapp/inc/tsappui.h Fri Apr 23 13:22:20 2010 +0100 @@ -51,7 +51,8 @@ ENoneTransition = 0, EForegroundTransition = 3, EBackgroundTransition = 4, - EActivationTransition = 5 + EActivationTransition = 5, + EActivationAppShowTransition = 1507, }; /** @@ -80,7 +81,9 @@ /** * Function start transition */ - void StartTransion( TUint aTransitionType ); + void StartTransion( TUint aTransitionType, + TUid aNextAppUid = TUid::Null(), + TInt aWgId = 0 ); /** * from MGfxTransEffectObserver @@ -88,7 +91,9 @@ void TransitionFinished(const CCoeControl* aControl, TUint aAction); void MoveAppToForeground( TUint aTransitionType ); - void MoveAppToBackground( TUint aTransitionType ); + void MoveAppToBackground( TUint aTransitionType, + TUid aAppUid = TUid::Null(), + TInt aWgId = 0 ); /** * Functions for showing/hiding popups. @@ -117,11 +122,15 @@ void HandleResourceChangeL( TInt aType ); void HandleForegroundEventL( TBool aForeground ); void HandleCommandL( TInt aCommand ); + void HandleWsEventL(const TWsEvent& aEvent, + CCoeControl* aDestination); void StartTransition( TUint aTranstionId, TBool aVisibility, TBool aLayers, TUint aSubCom ); + + void StartAppActivateTransition( TUid aNextAppUid, TInt aWgId ); private: // New functions @@ -149,8 +158,33 @@ * task switcher app */ void FreeMemoryRequest(); + + /** + * Returns id of window group lying beneath task + * switcher window group. + * In case of embeded app it returns top paren window group. + * + * @param aIgnoreParentChild if set to ETrue, parent/child relationship + * will be ignored when deteriminig window + * group id + */ + TInt WgIdOfUnderlyingApp( TBool aIgnoreParentChild ); static TInt GoToBackgroundTimerCallback( TAny* aParam ); + + /* + * Returns id of top parent window group for embeded window group. + * @param aChildWg embeded window group id + * @return top parent window group id or 0 in case od standlalone + */ + TInt GetTopParentWg( TInt aChildWg); + + /* + * Returns id of parent window group for embeded window group. + * @param aChildWg embeded window group id + * @return parent window group id or 0 in case od standlalone + */ + TInt GetParentWg( TInt aChildWg ); private: @@ -191,6 +225,8 @@ TBool iUiStarted; TBool iDisableAppKeyHandling; + TInt iUnderAppWgId; + }; #endif // TSAPPUI_H diff -r d6c9979772b6 -r c2e9d284d779 taskswitcher/taskswitcherui/taskswitcherapp/inc/tsappview.h --- a/taskswitcher/taskswitcherui/taskswitcherapp/inc/tsappview.h Mon Apr 12 20:35:11 2010 +0100 +++ b/taskswitcher/taskswitcherui/taskswitcherapp/inc/tsappview.h Fri Apr 23 13:22:20 2010 +0100 @@ -108,6 +108,15 @@ * background redraw. */ void EnableDragEvents( TBool aEnable ); + + /** + * Checks if app with the given wg id is closing + * + * @param aWgId id of window group which is checked + * if it is closing + * @return ETrue if application is being closed, EFalse otherwise + */ + TBool AppCloseInProgress( TInt aWgId ); protected: // from MCoeControlObserver @@ -192,8 +201,11 @@ TTouchFeedbackType aFeedbackType, const TPointerEvent& aPointerEvent); - - + /** + * Area, where drag events are being handled. + */ + TRect DragArea(); + public://From MTsEventControlerObserver /** * Declare drag gesture handling. diff -r d6c9979772b6 -r c2e9d284d779 taskswitcher/taskswitcherui/taskswitcherapp/inc/tsfastswaparea.h --- a/taskswitcher/taskswitcherui/taskswitcherapp/inc/tsfastswaparea.h Mon Apr 12 20:35:11 2010 +0100 +++ b/taskswitcher/taskswitcherui/taskswitcherapp/inc/tsfastswaparea.h Fri Apr 23 13:22:20 2010 +0100 @@ -218,6 +218,11 @@ */ TPoint ViewPos()const; + /** + * Checks if the app with the given window group id is closing + */ + TBool IsAppClosing( TInt aWgId ); + public: // from CCoeControl TInt CountComponentControls() const; @@ -270,6 +275,11 @@ void ReCreateGridL(); /** + * Setup grid layout + */ + void LayoutGridL(); + + /** * Returns rectangles for fast swap area controls */ void GetFastSwapAreaRects( RArray& aRects ); @@ -431,6 +441,7 @@ // Key event handling TBool iConsumeEvent; TBool iKeyEvent; + RArray iIsClosing; }; #endif // TSFASTSWAPAREA_H diff -r d6c9979772b6 -r c2e9d284d779 taskswitcher/taskswitcherui/taskswitcherapp/inc/tsfastswapgrid.h --- a/taskswitcher/taskswitcherui/taskswitcherapp/inc/tsfastswapgrid.h Mon Apr 12 20:35:11 2010 +0100 +++ b/taskswitcher/taskswitcherui/taskswitcherapp/inc/tsfastswapgrid.h Fri Apr 23 13:22:20 2010 +0100 @@ -175,6 +175,21 @@ * Returns visible view. Items outside of visible rectangle are not drawn. */ TRect VisibleViewRect(); + + /** + * Updates layout data for item drawer. Should be called when + * layout maybe out of date + */ + void UpdateItemDrawerLayoutDataL(); + + /** + * Enables/disables avkon event handling. + * + * @param aEnable if set to ETrue, pointer events will be forwarded + * to CAknGrid base class if necessary. If set to EFalse, + * no pointer events will be forwarded. + */ + void EnableAknEventHandling( TBool aEnable ); private: // From CAknGrid virtual void CreateItemDrawerL(); @@ -211,6 +226,9 @@ // Visible view rectangle (horizontal scrolling support) TRect iVisibleViewRect; + + // Flag controlling input handling by grid + TBool iAknEventHandlingEnabled; }; @@ -223,8 +241,7 @@ public: // Constructor and destructor CTsGridItemDrawer( CTsFastSwapGrid* aGrid, - CFormattedCellListBoxData* aData, - TRect aScreenRect ); + CFormattedCellListBoxData* aData ); ~CTsGridItemDrawer(); public: // New functions @@ -292,6 +309,14 @@ * @param aStrokeSize size of the stroke rectangle */ void SetStrokeOffset( TPoint aStrokeOffset, TSize aStrokeSize ); + + /** + * Set screen rectangle, used by the item drawer to determine + * drawn area. + * + * @param aRect screen rectangle + */ + void SetScreenRect( TRect aRect ); private: // From CFormattedCellListBoxItemDrawer void DrawActualItem( TInt aItemIndex, const TRect& aActualItemRect, diff -r d6c9979772b6 -r c2e9d284d779 taskswitcher/taskswitcherui/taskswitcherapp/src/tsappui.cpp --- a/taskswitcher/taskswitcherui/taskswitcherapp/src/tsappui.cpp Mon Apr 12 20:35:11 2010 +0100 +++ b/taskswitcher/taskswitcherui/taskswitcherapp/src/tsappui.cpp Fri Apr 23 13:22:20 2010 +0100 @@ -60,7 +60,9 @@ // time to wait before sending the task to background // (must give time to animation) -const TInt KWaitBeforeGoingToBackground = 175000; +const TInt KWaitBeforeGoingToBackground = 200000; + +const TUid KTsAppUid = { KTsAppUidValue }; // ----------------------------------------------------------------------------- // CTsAppUi::ConstructL() @@ -118,6 +120,7 @@ // Create custom window group iWg = RWindowGroup(CCoeEnv::Static()->WsSession()); iWg.Construct((TUint32)&iWg, ETrue); + iWg.EnableScreenChangeEvents(); // Create UI iAppView = CTsAppView::NewL( ApplicationRect(), *iDeviceState, iWg ); @@ -147,6 +150,9 @@ iEikonEnv->RootWin().SetOrdinalPosition(-1, ECoeWinPriorityNeverAtFront); iEikonEnv->RootWin().EnableReceiptOfFocus(EFalse); + RWindowGroup& windowGroup = CCoeEnv::Static()->RootWin(); + windowGroup.EnableGroupListChangeEvents(); + iIsPopUpShown = EFalse; iUiStarted = EFalse; iDisableAppKeyHandling = EFalse; @@ -209,7 +215,7 @@ // CTsAppUi::StartTransion // ----------------------------------------------------------------------------- // -void CTsAppUi::StartTransion( TUint aTransitionType ) +void CTsAppUi::StartTransion( TUint aTransitionType, TUid aNextAppUid, TInt aWgId ) { if( !EffectsEnabled() ) { @@ -230,10 +236,7 @@ CAknTransitionUtils::EForceInvisible ); break; case EActivationTransition: - StartTransition( aTransitionType, - EFalse, - ETrue, - CAknTransitionUtils::EForceInvisible ); + StartAppActivateTransition( aNextAppUid, aWgId ); break; } } @@ -262,6 +265,46 @@ } // ----------------------------------------------------------------------------- +// CTsAppUi::StartAppActivateTransition +// ----------------------------------------------------------------------------- +// +void CTsAppUi::StartAppActivateTransition( TUid aNextAppUid, TInt aWgId ) + { + // Check what type of transition will be trigerred + if ( aWgId == iUnderAppWgId ) + { + // App under task switcher was launched + StartTransition( EActivationTransition, + EFalse, + ETrue, + CAknTransitionUtils::EForceInvisible ); + } + else + { + // App start animation + TRAP_IGNORE( RequestPopUpL() ); + const TDesC8* ptr = reinterpret_cast(iAppView); + GfxTransEffect::Abort(iAppView); + TInt groupId = GfxTransEffect::BeginGroup(); + GfxTransEffect::BeginFullScreen( + EActivationAppShowTransition, ApplicationRect(), + AknTransEffect::EParameterType, + AknTransEffect::GfxTransParam( aNextAppUid , KTsAppUid ) ); + GfxTransEffect::Begin( iAppView, EActivationTransition ); + GfxTransEffect::SetDemarcation( iAppView, iAppView->Rect() ); + GfxTransEffect::NotifyExternalState( ECaptureComponentsBegin, ptr ); + iAppView->MakeVisible( EFalse ); + CAknTransitionUtils::MakeVisibleSubComponents( + iAppView, + static_cast(CAknTransitionUtils::EForceInvisible) ); + GfxTransEffect::NotifyExternalState( ECaptureComponentsEnd, ptr ); + GfxTransEffect::End( iAppView ); + GfxTransEffect::EndFullScreen(); + GfxTransEffect::EndGroup(groupId); + } + } + +// ----------------------------------------------------------------------------- // CTsAppUi::TransitionFinished // ----------------------------------------------------------------------------- // @@ -446,7 +489,7 @@ // CTsAppUi::MoveAppToBackground() // ----------------------------------------------------------------------------- // -void CTsAppUi::MoveAppToBackground( TUint aTransitionType ) +void CTsAppUi::MoveAppToBackground( TUint aTransitionType, TUid aAppUid, TInt aWgId ) { TSLOG_CONTEXT( MoveAppToBackground, TSLOG_LOCAL ); TSLOG_IN(); @@ -457,7 +500,7 @@ } else { - StartTransion(aTransitionType); + StartTransion(aTransitionType, aAppUid, aWgId); iGoToBackgroundTimer->Cancel(); iGoToBackgroundTimer->Start( KWaitBeforeGoingToBackground, @@ -698,4 +741,98 @@ return retVal; } + +// ----------------------------------------------------------------------------- +// CTsAppUi::HandleWsEventL +// ----------------------------------------------------------------------------- +// +void CTsAppUi::HandleWsEventL(const TWsEvent& aEvent, + CCoeControl* aDestination) + { + CAknAppUi::HandleWsEventL(aEvent, aDestination); + TInt eventType = aEvent.Type(); + if ( eventType == EEventWindowGroupListChanged ) + { + TInt wgId = WgIdOfUnderlyingApp(EFalse); + if ( iForeground && + wgId != iUnderAppWgId && + !iAppView->AppCloseInProgress(iUnderAppWgId) ) + { + MoveAppToBackground( ENoneTransition ); + } + if ( WgIdOfUnderlyingApp(ETrue) != iUnderAppWgId ) + { + HandleResourceChangeL(KEikDynamicLayoutVariantSwitch); + } + iUnderAppWgId = wgId; + } + } + + +// ----------------------------------------------------------------------------- +// CTsAppUi::WgIdOfUnderlyingApp +// ----------------------------------------------------------------------------- +// +TInt CTsAppUi::WgIdOfUnderlyingApp( TBool aIgnoreParentChild ) + { + TInt retVal(0); + TApaTaskList taskList( iEikonEnv->WsSession() ); + TInt underlyingWg = taskList.FindByPos(0).WgId(); + if ( aIgnoreParentChild ) + { + retVal = underlyingWg; + } + else + { + TInt parentWg = GetTopParentWg( underlyingWg ); + retVal = parentWg ? parentWg : underlyingWg; + } + return retVal; + } + +// ----------------------------------------------------------------------------- +// CTsAppUi::GetTopParentWg +// ----------------------------------------------------------------------------- +// +TInt CTsAppUi::GetTopParentWg( TInt aChildWg ) + { + TInt parentWg = GetParentWg( aChildWg ); + if( parentWg ) + { + TInt topParentWg = GetTopParentWg( parentWg ); + if( topParentWg ) + { + parentWg = topParentWg; + } + } + return parentWg; + } + +// ----------------------------------------------------------------------------- +// CTsAppUi::GetParentWg +// ----------------------------------------------------------------------------- +// +TInt CTsAppUi::GetParentWg( TInt aChildWg ) + { + TInt retVal(0); + RArray allWgIds; + // Ask for window group list from RWsSession + TInt error = iEikonEnv->WsSession().WindowGroupList( 0, &allWgIds ); + if ( !error ) + { + TInt count( allWgIds.Count() ); + for ( TInt i( 0 ); i < count; i++ ) + { + RWsSession::TWindowGroupChainInfo info = allWgIds[i]; + if ( info.iId == aChildWg && info.iParentId > 0) + { + retVal = info.iParentId; + break; + } + } + } + allWgIds.Close(); + return retVal; + } + // End of file diff -r d6c9979772b6 -r c2e9d284d779 taskswitcher/taskswitcherui/taskswitcherapp/src/tsappview.cpp --- a/taskswitcher/taskswitcherui/taskswitcherapp/src/tsappview.cpp Mon Apr 12 20:35:11 2010 +0100 +++ b/taskswitcher/taskswitcherui/taskswitcherapp/src/tsappview.cpp Fri Apr 23 13:22:20 2010 +0100 @@ -457,6 +457,10 @@ TSLOG_CONTEXT( CTsAppView::HandleSwitchToForegroundEvent, TSLOG_LOCAL ); TSLOG_IN(); + // Forward event to interested controls + iFastSwapArea->HandleSwitchToForegroundEvent(); + iFastSwapArea->UpdateComponentVisibility(); + // Check for layout updates CTsAppUi* appUi = static_cast(iCoeEnv->AppUi()); if ( iViewRect != appUi->ApplicationRect() && @@ -477,10 +481,6 @@ // Focus jumps back to fsw ChangeFocus( iFastSwapArea ); - // Forward event to interested controls - iFastSwapArea->HandleSwitchToForegroundEvent(); - iFastSwapArea->UpdateComponentVisibility(); - // Start animation CTsAppUi* appui = static_cast( iEikonEnv->AppUi() ); @@ -614,9 +614,8 @@ { LaunchFeedback(ETouchFeedbackBasic, TTouchFeedbackType( ETouchFeedbackVibra | ETouchFeedbackAudio), aPointerEvent); - if ( !( iFastSwapArea->Rect().Contains(aPointerEvent.iParentPosition) || - iAppsHeading->Rect().Contains(aPointerEvent.iParentPosition) - ) ) + + if( !DragArea().Contains(aPointerEvent.iParentPosition)) { //move task switcher to background iEvtHandler->EnableEventHandling(EFalse); @@ -730,13 +729,7 @@ // void CTsAppView::DragL(const MAknTouchGestureFwDragEvent& aEvent) { - if( aEvent.State() == EAknTouchGestureFwStop ) - { - LaunchFeedback(ETouchFeedbackBasic, TTouchFeedbackType( - ETouchFeedbackVibra | ETouchFeedbackAudio), TPointerEvent()); - } - if( iFastSwapArea->Rect().Contains(aEvent.StartPosition()) || - iAppsHeading->Rect().Contains(aEvent.StartPosition()) ) + if(DragArea().Contains(aEvent.StartPosition())) { iFastSwapArea->DragL(aEvent); } @@ -778,6 +771,34 @@ } +// ----------------------------------------------------------------------------- +// CTsAppView::AppCloseInProgress() +// ----------------------------------------------------------------------------- +// +TBool CTsAppView::AppCloseInProgress( TInt aWgId ) + { + return iFastSwapArea->IsAppClosing(aWgId); + } +// ----------------------------------------------------------------------------- +// CTsAppView::DragArea +// ----------------------------------------------------------------------------- +// +TRect CTsAppView::DragArea() + { + TRect dragArea; + if (Layout_Meta_Data::IsLandscapeOrientation()) + { + dragArea.SetRect(iAppsHeading->Rect().iTl.iX, + iAppsHeading->Rect().iTl.iY, iFastSwapArea->Rect().iBr.iX, + iFastSwapArea->Rect().iBr.iY); + } + else + { + dragArea.SetRect(Rect().iTl.iX, iAppsHeading->Rect().iTl.iY, + Rect().iBr.iX, iFastSwapArea->Rect().iBr.iY); + } + return dragArea; + } // End of file diff -r d6c9979772b6 -r c2e9d284d779 taskswitcher/taskswitcherui/taskswitcherapp/src/tsfastswaparea.cpp --- a/taskswitcher/taskswitcherui/taskswitcherapp/src/tsfastswaparea.cpp Mon Apr 12 20:35:11 2010 +0100 +++ b/taskswitcher/taskswitcherui/taskswitcherapp/src/tsfastswaparea.cpp Fri Apr 23 13:22:20 2010 +0100 @@ -115,6 +115,7 @@ CTsFastSwapArea::~CTsFastSwapArea() { iArray.ResetAndDestroy(); + iIsClosing.Close(); delete iGrid; delete iFSClient; delete iPopup; @@ -134,7 +135,7 @@ SetRect( aRect ); - // setup ganes grid + // setup grid ReCreateGridL(); // create stylus popup instance @@ -188,6 +189,44 @@ AknListBoxLayouts::SetupStandardGrid( *iGrid ); + // Setup layout + LayoutGridL(); + + if( wasHighlight ) + { + iGrid->ShowHighlight(); + } + else + { + iGrid->HideHighlight(); + } + + // Setup empty text + HBufC* text = StringLoader::LoadLC( R_TS_FSW_NO_APPS ); + iGrid->SetEmptyGridTextL( *text ); + CleanupStack::PopAndDestroy( text ); + + // Setup grid observers + if ( obs ) + { + iGrid->SetObserver( obs ); + } + iGrid->SetListBoxObserver(this); + iGrid->SetFastSwapGridObserver(this); + iGrid->SetContainerWindowL(*this); + + // Make sure that there is an ActivateL call even when we are not + // called from ConstructL. (in order to have the grid's parent ptr set properly) + ActivateL(); + } + + +// -------------------------------------------------------------------------- +// CTsFastSwapArea::LayoutGridL +// -------------------------------------------------------------------------- +// +void CTsFastSwapArea::LayoutGridL() + { RArray rects; CleanupClosePushL(rects); rects.ReserveL(KLayoutItemCount); @@ -222,22 +261,13 @@ AknsUtils::GetCachedColor( AknsUtils::SkinInstance(), highlightTextColor, KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG11 ); CFormattedCellListBoxData::TColors colors; - colors.iText = textColor; + colors.iText = textColor; colors.iBack = iGrid->ItemDrawer()->BackColor(); colors.iHighlightedText = highlightTextColor; colors.iHighlightedBack = iGrid->ItemDrawer()->HighlightedBackColor(); iGrid->ItemDrawer()->FormattedCellData()->SetSubCellColorsL(1, colors); iGrid->SetStrokeColors(textColor, highlightTextColor); - // Setup grid observers - if ( obs ) - { - iGrid->SetObserver( obs ); - } - iGrid->SetListBoxObserver(this); - iGrid->SetFastSwapGridObserver(this); - iGrid->SetContainerWindowL(*this); - if ( AknLayoutUtils::LayoutMirrored() ) { iGridItemGap = gridItem.Rect().iTl.iX - gridNextItem.Rect().iBr.iX; @@ -258,24 +288,11 @@ } iGridItemWidth = gridItem.Rect().Width(); + // Update item drawer + iGrid->UpdateItemDrawerLayoutDataL(); + // Update state HandleDeviceStateChanged( EDeviceType ); - if( wasHighlight ) - { - iGrid->ShowHighlight(); - } - else - { - iGrid->HideHighlight(); - } - - HBufC* text = StringLoader::LoadLC( R_TS_FSW_NO_APPS ); - iGrid->SetEmptyGridTextL( *text ); - CleanupStack::PopAndDestroy( text ); - - // Make sure that there is an ActivateL call even when we are not - // called from ConstructL. (in order to have the grid's parent ptr set properly) - ActivateL(); } @@ -333,11 +350,11 @@ // data with new layout values TInt selIdx = SelectedIndex(); TRAPD(err, - ReCreateGridL(); - /*iEvtHandler.ReInitPhysicsL(GridWorldSize(), ViewSize(), ETrue);*/); + /*ReCreateGridL()*/ + LayoutGridL() ); if ( err != KErrNone ) { - TSLOG1( TSLOG_INFO, "ReCreateGridL leaves with %d", err ); + TSLOG1( TSLOG_INFO, "LayoutGridL leaves with %d", err ); } HandleFswContentChanged(); iGrid->SetCurrentDataIndex(selIdx); @@ -380,6 +397,7 @@ if ( aIndex >= 0 && aIndex < iArray.Count() ) { TInt wgId = iArray[aIndex]->WgId(); + TUid appUid = iArray[aIndex]->AppUid(); // Move other app to foreground and then move ourselves to background. // Order is important and cannot be reversed. iFSClient->SwitchToApp( wgId ); @@ -389,7 +407,7 @@ iIgnoreLayoutSwitch = ETrue; CTsAppUi* appui = static_cast( iEikonEnv->AppUi() ); - appui->MoveAppToBackground( CTsAppUi::EActivationTransition ); + appui->MoveAppToBackground( CTsAppUi::EActivationTransition, appUid, wgId ); iIgnoreLayoutSwitch = EFalse; // Orientation update @@ -418,6 +436,7 @@ } TInt wgId = iArray[aIndex]->WgId(); iFSClient->CloseApp( wgId ); + iIsClosing.Append(wgId); // 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 @@ -689,9 +708,9 @@ } // refresh the items in the grid - iGrid->HandleItemAdditionL(); iEvtHandler.ReInitPhysicsL( GridWorldSize(), ViewSize(), ETrue ); UpdateGrid( ETrue, !aSuppressAnimation ); + iGrid->HandleItemAdditionL(); TSLOG_OUT(); } @@ -753,6 +772,11 @@ { // stop listening for changes in fsw content iFSClient->CancelSubscribe(); + // Hide highlight + if ( iGrid->GridBehaviour() == CTsFastSwapGrid::ETouchOnly ) + { + iGrid->HideHighlight(); + } } // ----------------------------------------------------------------------------- @@ -764,8 +788,20 @@ TSLOG_CONTEXT( CTsFastSwapArea::HandleSwitchToForegroundEvent, TSLOG_LOCAL ); TSLOG_IN(); + iIsClosing.Reset(); + + CTsGridItemDrawer* itemDrawer = + static_cast( iGrid->ItemDrawer() ); + itemDrawer->SetRedrawBackground(ETrue); + + // Update Layout + CTsAppUi* appUi = static_cast(iEikonEnv->AppUi()); + if ( appUi && appUi->EffectsEnabled() ) + { + TRAP_IGNORE( LayoutGridL() ); + } + // Reset grid - TRAP_IGNORE( ReCreateGridL() ); if ( iDeviceState.DeviceType() == CTsDeviceState::EFullTouch ) { iGrid->HideHighlight(); @@ -786,6 +822,8 @@ iRedrawTimer->Cancel(); iRedrawTimer->After(KRedrawTime); + itemDrawer->SetRedrawBackground(EFalse); + // give feedback LaunchPopupFeedback(); @@ -923,6 +961,9 @@ if(aPointerEvent.iType == TPointerEvent::EButton1Down) { iTapEvent = aPointerEvent; + iGrid->EnableAknEventHandling(EFalse); + iGrid->HandlePointerEventL(aPointerEvent); + iGrid->EnableAknEventHandling(ETrue); } } @@ -1669,4 +1710,24 @@ return availableRect.iPixelSize.iWidth > availableRect.iPixelSize.iHeight; } + +// ----------------------------------------------------------------------------- +// CTsFastSwapArea::IsAppClosing +// ----------------------------------------------------------------------------- +// +TBool CTsFastSwapArea::IsAppClosing( TInt aWgId ) + { + TBool retVal(EFalse); + if ( iIsClosing.Count() ) + { + TInt idx = iIsClosing.Find(aWgId); + retVal = idx != KErrNotFound; + if ( retVal ) + { + iIsClosing.Remove(idx); + } + } + return retVal; + } + // End of file diff -r d6c9979772b6 -r c2e9d284d779 taskswitcher/taskswitcherui/taskswitcherapp/src/tsfastswapgrid.cpp --- a/taskswitcher/taskswitcherui/taskswitcherapp/src/tsfastswapgrid.cpp Mon Apr 12 20:35:11 2010 +0100 +++ b/taskswitcher/taskswitcherui/taskswitcherapp/src/tsfastswapgrid.cpp Fri Apr 23 13:22:20 2010 +0100 @@ -42,7 +42,8 @@ : CAknGrid(), iCloseIconHitIdx( KErrNotFound ), iBehaviour( ETouchOnly ), - iHighlightVisible( EFalse ) + iHighlightVisible( EFalse ), + iAknEventHandlingEnabled(ETrue) { } @@ -112,27 +113,27 @@ if ( closeIconRect.Contains( aPointerEvent.iParentPosition ) ) { // Close icon hit + TInt hitDataIdx(hitItem); + if ( AknLayoutUtils::LayoutMirrored() ) + { + // Calculate logical item index + hitDataIdx = Model()->ItemTextArray()->MdcaCount() - 1 - hitItem; + } + iCloseIconHitIdx = hitDataIdx; + eventHandled = ETrue; + if ( aPointerEvent.iType == TPointerEvent::EButton1Down ) { - // pointer down - finish processing but do not forward to grid - eventHandled = ETrue; + // Update current item and redraw grid + SetCurrentItemIndex( hitItem ); + DrawNow(); + + iCloseIconRedrawTimer->Cancel(); + iCloseIconRedrawTimer->After(KCloseIconRedrawTime); } else { // Pointer up - TInt hitDataIdx(hitItem); - if ( AknLayoutUtils::LayoutMirrored() ) - { - // Calculate logical item index - hitDataIdx = Model()->ItemTextArray()->MdcaCount() - 1 - hitItem; - } - iCloseIconHitIdx = hitDataIdx; - eventHandled = ETrue; - // Hide highlight to mark close icon - HideHighlight(); - // Update current item and redraw grid - SetCurrentItemIndex( hitItem ); - DrawNow(); if ( iFastSwapGridObserver ) { MTouchFeedback* feedback = MTouchFeedback::Instance(); @@ -140,8 +141,6 @@ ETouchFeedbackBasicButton, ETouchFeedbackVibra, aPointerEvent); - iCloseIconRedrawTimer->Cancel(); - iCloseIconRedrawTimer->After(KCloseIconRedrawTime); } if ( GridBehaviour() == EHybrid ) { @@ -151,6 +150,8 @@ { Redraw(); } + iFastSwapGridObserver->HandleCloseEventL( hitDataIdx ); + ResetCloseHit(); } } } @@ -168,7 +169,10 @@ { itemDrawer->SetRedrawBackground( EFalse ); } - CAknGrid::HandlePointerEventL( aPointerEvent ); + if ( iAknEventHandlingEnabled ) + { + CAknGrid::HandlePointerEventL( aPointerEvent ); + } Redraw(); } @@ -255,9 +259,31 @@ TSLOG_CONTEXT( CTsFastSwapGrid::CreateItemDrawerL, TSLOG_LOCAL ); TSLOG_IN(); + CFormattedCellGridData* data = CFormattedCellGridData::NewL(); + CleanupStack::PushL( data ); + CTsGridItemDrawer* itemDrawer = + new ( ELeave ) CTsGridItemDrawer( this, data ); + iItemDrawer = itemDrawer; + CleanupStack::Pop( data ); + + TSLOG_OUT(); + } + + +// ----------------------------------------------------------------------------- +// CTsFastSwapGrid::UpdateItemDrawerLayoutDataL +// ----------------------------------------------------------------------------- +// +void CTsFastSwapGrid::UpdateItemDrawerLayoutDataL() + { + CTsGridItemDrawer* itemDrawer = + static_cast( ItemDrawer() ); + TPixelsAndRotation screenSize; iEikonEnv->ScreenDevice()->GetDefaultScreenSizeAndRotation(screenSize); TRect availableRect = TRect( TPoint(0,0), screenSize.iPixelSize ); + itemDrawer->SetScreenRect(availableRect); + TAknLayoutRect fastSwapAreaPane; TInt variety = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0; fastSwapAreaPane.LayoutRect( availableRect, @@ -265,19 +291,19 @@ const TInt leftOffset = iParent->Rect().iTl.iX; const TInt rightOffset = availableRect.Width() - iParent->Rect().iBr.iX; SetVisibleViewRect(fastSwapAreaPane.Rect()); + itemDrawer->SetEdgeOffset( leftOffset, rightOffset ); - CFormattedCellGridData* data = CFormattedCellGridData::NewL(); - CleanupStack::PushL( data ); - CTsGridItemDrawer* itemDrawer = - new ( ELeave ) CTsGridItemDrawer( this, data, availableRect ); - CleanupStack::PushL( itemDrawer ); - itemDrawer->SetEdgeOffset( leftOffset, rightOffset ); - iItemDrawer = itemDrawer; - CleanupStack::Pop( itemDrawer ); - CleanupStack::Pop( data ); LoadCloseIconAndStrokeParams(); - - TSLOG_OUT(); + } + + +// ----------------------------------------------------------------------------- +// CTsFastSwapGrid::EnableAknEventHandling +// ----------------------------------------------------------------------------- +// +void CTsFastSwapGrid::EnableAknEventHandling( TBool aEnable ) + { + iAknEventHandlingEnabled = aEnable; } // ----------------------------------------------------------------------------- @@ -288,9 +314,7 @@ { if ( aSource == iCloseIconRedrawTimer ) { - TInt itemToClose = iCloseIconHitIdx; ResetCloseHit(); - iFastSwapGridObserver->HandleCloseEventL( itemToClose ); } } @@ -569,13 +593,11 @@ // CTsGridItemDrawer::CTsGridItemDrawer( CTsFastSwapGrid* aGrid, - CFormattedCellListBoxData* aData, - TRect aScreenRect ) + CFormattedCellListBoxData* aData ) : CFormattedCellListBoxItemDrawer( aGrid->Model(), NULL, aData ), iGrid( aGrid ), - iScreenRect( aScreenRect ), iStrokeColor( KRgbBlack ), iHighlightStrokeColor( KRgbBlack ) { @@ -697,6 +719,16 @@ // ----------------------------------------------------------------------------- +// CTsGridItemDrawer::SetScreenRect +// ----------------------------------------------------------------------------- +// +void CTsGridItemDrawer::SetScreenRect( TRect aRect ) + { + iScreenRect = aRect; + } + + +// ----------------------------------------------------------------------------- // CTsGridItemDrawer::DrawActualItem // ----------------------------------------------------------------------------- //