# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1262860781 -7200 # Node ID 5315654608de41e64a63da9ff0b852212dfe560f # Parent f72a12da539e18cb77a927dd69b9cd88420bdf82 Revision: 200951 Kit: 201001 diff -r f72a12da539e -r 5315654608de group/bld.inf --- a/group/bld.inf Thu Dec 17 08:40:49 2009 +0200 +++ b/group/bld.inf Thu Jan 07 12:39:41 2010 +0200 @@ -20,7 +20,6 @@ #include "../homescreen_plat/group/bld.inf" #include "../idlehomescreen/group/bld.inf" #include "../menufw/group/bld.inf" -#include "../widgetmanager/group/bld.inf" PRJ_PLATFORMS diff -r f72a12da539e -r 5315654608de idlehomescreen/data/qhd_tch/desktop_20026f4f/hsps/00/manifest.dat --- a/idlehomescreen/data/qhd_tch/desktop_20026f4f/hsps/00/manifest.dat Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/data/qhd_tch/desktop_20026f4f/hsps/00/manifest.dat Thu Jan 07 12:39:41 2010 +0200 @@ -28,7 +28,7 @@ 2 RnD description desktop plugin - mif(icon.mif 16384 16385) + skin(270501603 9361):mif(icon.mif 16384 16385) diff -r f72a12da539e -r 5315654608de idlehomescreen/data/qhd_tch/desktop_20026f4f/hsps/00/widgetconfiguration.xml --- a/idlehomescreen/data/qhd_tch/desktop_20026f4f/hsps/00/widgetconfiguration.xml Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/data/qhd_tch/desktop_20026f4f/hsps/00/widgetconfiguration.xml Thu Jan 07 12:39:41 2010 +0200 @@ -24,10 +24,10 @@ - - + + - + diff -r f72a12da539e -r 5315654608de idlehomescreen/data/qhd_tch/profile_2001cb7c/hsps/00/manifest.dat --- a/idlehomescreen/data/qhd_tch/profile_2001cb7c/hsps/00/manifest.dat Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/data/qhd_tch/profile_2001cb7c/hsps/00/manifest.dat Thu Jan 07 12:39:41 2010 +0200 @@ -23,7 +23,8 @@ widgetconfiguration.xml RnD description profile plugin - skin(270501603 8433):mif(icon.mif 16384 16385) + + skin(270501603 9360):mif(icon.mif 16384 16385) profile.o0000 diff -r f72a12da539e -r 5315654608de idlehomescreen/data/qhd_tch/templateview_20026f50/loc/templateview.loc --- a/idlehomescreen/data/qhd_tch/templateview_20026f50/loc/templateview.loc Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/data/qhd_tch/templateview_20026f50/loc/templateview.loc Thu Jan 07 12:39:41 2010 +0200 @@ -249,8 +249,14 @@ // r: TB9.2 #define qtn_hs_title_editing_view "Editing view" -// d: right softkey caption in inactive call state -// l: text_softkey call +// d: Call +// l: control_pane_t1/opt7 // w: // r: TB9.2 #define text_softkey_call "Call" + +// d: Added new option menu item to Edit mode for opening the widget catalog, +// l: list_single_pane_t1_cp2 +// w: +// r: TB9.2 +#define qtn_hs_edit_widget_catalog "Widget Catalog" diff -r f72a12da539e -r 5315654608de idlehomescreen/data/qhd_tch/templateview_20026f50/xuikon/00/templateview.xml --- a/idlehomescreen/data/qhd_tch/templateview_20026f50/xuikon/00/templateview.xml Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/data/qhd_tch/templateview_20026f50/xuikon/00/templateview.xml Thu Jan 07 12:39:41 2010 +0200 @@ -146,15 +146,6 @@ - - - - - - - - - @@ -170,11 +161,12 @@ - + + diff -r f72a12da539e -r 5315654608de idlehomescreen/data/qhd_tch/templateview_20026f50/xuikon/00/view.dtd --- a/idlehomescreen/data/qhd_tch/templateview_20026f50/xuikon/00/view.dtd Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/data/qhd_tch/templateview_20026f50/xuikon/00/view.dtd Thu Jan 07 12:39:41 2010 +0200 @@ -401,9 +401,19 @@ + + + diff -r f72a12da539e -r 5315654608de idlehomescreen/data/qhd_tch/view_2001f48b/loc/View.loc --- a/idlehomescreen/data/qhd_tch/view_2001f48b/loc/View.loc Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/data/qhd_tch/view_2001f48b/loc/View.loc Thu Jan 07 12:39:41 2010 +0200 @@ -249,8 +249,14 @@ // r: TB9.2 #define qtn_hs_title_editing_view "Editing view" -// d: right softkey caption in inactive call state -// l: text_softkey call +// d: Call +// l: control_pane_t1/opt7 // w: // r: TB9.2 #define text_softkey_call "Call" + +// d: Added new option menu item to Edit mode for opening the widget catalog, +// l: list_single_pane_t1_cp2 +// w: +// r: TB9.2 +#define qtn_hs_edit_widget_catalog "Widget Catalog" diff -r f72a12da539e -r 5315654608de idlehomescreen/data/qhd_tch/view_2001f48b/xuikon/00/View.dtd --- a/idlehomescreen/data/qhd_tch/view_2001f48b/xuikon/00/View.dtd Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/data/qhd_tch/view_2001f48b/xuikon/00/View.dtd Thu Jan 07 12:39:41 2010 +0200 @@ -401,9 +401,19 @@ + + + diff -r f72a12da539e -r 5315654608de idlehomescreen/data/qhd_tch/view_2001f48b/xuikon/00/View.xml --- a/idlehomescreen/data/qhd_tch/view_2001f48b/xuikon/00/View.xml Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/data/qhd_tch/view_2001f48b/xuikon/00/View.xml Thu Jan 07 12:39:41 2010 +0200 @@ -146,15 +146,6 @@ - - - - - - - - - @@ -170,11 +161,12 @@ - + + diff -r f72a12da539e -r 5315654608de idlehomescreen/data/vga_tch/view1_2001fdb9/loc/view.loc --- a/idlehomescreen/data/vga_tch/view1_2001fdb9/loc/view.loc Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/data/vga_tch/view1_2001fdb9/loc/view.loc Thu Jan 07 12:39:41 2010 +0200 @@ -69,6 +69,12 @@ // r: TB9.2 #define qtn_hs_add_widget "Add content" +// d: Access the widget catalog +// l: list_single_pane_t1_cp2 +// w: +// r: TB9.2 +#define qtn_hs_widget_catalog "Widget catalog" + // d: Search // l: control_pane_t1/opt7 // w: @@ -247,4 +253,10 @@ // l: control_pane_t1/opt7 // w: // r: TB9.2 -#define qtn_hs_sk2_call "Call" +#define text_softkey_call "Call" + +// d: Added new option menu item to Edit mode for opening the widget catalog, +// l: list_single_pane_t1_cp2 +// w: +// r: TB9.2 +#define qtn_hs_edit_widget_catalog "Widget Catalog" diff -r f72a12da539e -r 5315654608de idlehomescreen/data/vga_tch/view1_2001fdb9/xuikon/00/view.dtd --- a/idlehomescreen/data/vga_tch/view1_2001fdb9/xuikon/00/view.dtd Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/data/vga_tch/view1_2001fdb9/xuikon/00/view.dtd Thu Jan 07 12:39:41 2010 +0200 @@ -8,7 +8,7 @@ + + + + + + + + diff -r f72a12da539e -r 5315654608de idlehomescreen/group/bld.inf --- a/idlehomescreen/group/bld.inf Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/group/bld.inf Thu Jan 07 12:39:41 2010 +0200 @@ -24,6 +24,7 @@ #include "../sapiwrapper/hspswrapper/group/bld.inf" #include "../xmluirendering/group/bld.inf" #include "../xmluicontroller/group/bld.inf" +#include "../widgetmanager/group/bld.inf" #ifdef FF_HOMESCREEN_COMMON_IDLEFW #include "../data/group/bld.inf" diff -r f72a12da539e -r 5315654608de idlehomescreen/hscontentcontrol/group/hscontentcontrol.mmp --- a/idlehomescreen/hscontentcontrol/group/hscontentcontrol.mmp Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/hscontentcontrol/group/hscontentcontrol.mmp Thu Jan 07 12:39:41 2010 +0200 @@ -31,6 +31,7 @@ SOURCE hscontentcontrolfactory.cpp SOURCE hscontentcontrolui.cpp +SOURCE hscontentcontrolecomlistener.cpp //By default, the build tools look for the WINSCW def file in a BWINS directory //(at the same level as the directory containing the mmp file), diff -r f72a12da539e -r 5315654608de idlehomescreen/hscontentcontrol/inc/hscontentcontrolecomlistener.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/hscontentcontrol/inc/hscontentcontrolecomlistener.h Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,96 @@ +/* +* 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: Listens for change in ecom registry of content controller +* interface. +* +*/ + +#ifndef HSCONTENTCONTROLECOMLISTENER_H +#define HSCONTENTCONTROLECOMLISTENER_H + +// System includes +#include + +// User includes + +// Forward declarations +class MHsContentControlEComObserver; +class REComSession; + +// Class declaration +/** +* @class CHsContentControlEComListener +* +* @brief An instance of class CHsContentControlEComListener which listens for +* changes in the ECOM registry. +* +* @lib hscontentcontrol.lib +*/ +NONSHARABLE_CLASS( CHsContentControlEComListener ) : public CActive + { +public: // Constructor and destructor + + /** + * Two-phased constructor. + */ + static CHsContentControlEComListener* NewL( + MHsContentControlEComObserver& aContentControlEComObserver ); + + /** + * Destructor. + */ + ~CHsContentControlEComListener(); + +protected: // Functions from base classes + /** + * From CActive + */ + void RunL(); + + /** + * From CActive + */ + void DoCancel(); + + /** + * From CActive + */ + TInt RunError( TInt aError ); + +private: // Constructors + + /** + * Default C++ constructor. + */ + CHsContentControlEComListener( + MHsContentControlEComObserver& aHsContentControlEComObserver ); + + /** + * Second phase constructor. + */ + void ConstructL(); + +private: // Data + + // Reference of MHsContentControlEComObserver + MHsContentControlEComObserver& iHsContentControlEComObserver; + + // An object of type REComSession. + REComSession* iEComSession; + }; + +#endif // HSCONTENTCONTROLECOMLISTENER_H + +// End of file + diff -r f72a12da539e -r 5315654608de idlehomescreen/hscontentcontrol/inc/hscontentcontrolecomobserver.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/hscontentcontrol/inc/hscontentcontrolecomobserver.h Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,42 @@ +/* +* 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: Observes for change in ecom registry of content controller +* interface. +* +*/ + +#ifndef HSCONTENTCONTROLECOMOBSERVER_H +#define HSCONTENTCONTROLECOMOBSERVER_H + +// Class declaration +/** +* MHsContentControlEComObserver +* +* @brief The observer of ecom registry changes. The derived class needs to implement +* the functions below and will be notified by CHsContentControlEComListener. +* +* @see CHsContentControlEComListener +*/ +class MHsContentControlEComObserver + { +public: + /** + * Notification of Ecom registry change. + */ + virtual void HandleEComChangeEvent() = 0; + }; + +#endif // HSCONTENTCONTROLECOMOBSERVER_H + +// End of file diff -r f72a12da539e -r 5315654608de idlehomescreen/hscontentcontrol/inc/hscontentcontrolfactory.h --- a/idlehomescreen/hscontentcontrol/inc/hscontentcontrolfactory.h Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/hscontentcontrol/inc/hscontentcontrolfactory.h Thu Jan 07 12:39:41 2010 +0200 @@ -20,9 +20,14 @@ // System includes #include +#include + +// User includes +#include "hscontentcontrolecomobserver.h" // Forward declarations -#include +class CHsContentControlEComListener; + /** * Content control UI base class * @@ -34,7 +39,8 @@ * @lib hscontentcontrol.lib * @since S60 v5.0 */ -NONSHARABLE_CLASS( CHsContentControlFactory ) : public CBase +NONSHARABLE_CLASS( CHsContentControlFactory ) : public CBase, + public MHsContentControlEComObserver { public: // Constructor and destructor /** @@ -47,6 +53,13 @@ */ IMPORT_C ~CHsContentControlFactory(); +public: // from MHsContentControlEComObserver + + /** + * Notification of Ecom registry change. + */ + void HandleEComChangeEvent(); + private: // Constructors /** * Constructor @@ -65,20 +78,49 @@ const TDesC8& aControllerType ); private: - /** - * + /** + * Finds and returns loaded ContentControlUi object from array. */ MHsContentControlUi* FindHsContentController( const TDesC8& aControllerType ); + /** + * Checks if a plugin is removed/upgraded/downgraded. + */ + void CheckPluginChangesL(); + /** + * Finds plugin implementation info in the ECOM registry. + * @param aUid The plugin UID which is to be checked. + * @param aPluginArray The array of plugins which have been implemented. + * @return ImplementationInfo of plugin. + */ + CImplementationInformation* FindPluginImplInfo( + const TUid& aUid, const RImplInfoPtrArray& aPlugInArray ); + + /** + * Checks if an upgrade or downgrade of the existing plugins happened. + * @param aPluginImplInfo ImplInfo of plugin to be checked for upgrade/downgrade. + * @return ETrue if upgrade/downgrade, EFalse otherwise. + */ + TBool PluginUpgradeDowngrade( const CImplementationInformation& aPluginImplInfo ); + private: // Data /** - * + * An array of type CHsContentControlUi ( Owned ). */ RPointerArray< CHsContentControlUi > iHsContentControlUis; + + /** + * An array of type CImplementationInformation ( Owned ). + */ + RImplInfoPtrArray iImplArray; + /** + * An object of type CHsContentControlEComListener ( Owned ). + */ + CHsContentControlEComListener* iHsContentControlEComListener; }; diff -r f72a12da539e -r 5315654608de idlehomescreen/hscontentcontrol/src/hscontentcontrolecomlistener.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/hscontentcontrol/src/hscontentcontrolecomlistener.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,128 @@ +/* + * 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: The source file of the CHsContentControlEComListener class. + * + */ + +// System includes +#include + +// User includes +#include "hscontentcontrolecomlistener.h" +#include "hscontentcontrolecomobserver.h" + +// --------------------------------------------------------- +// CHsContentControlEComListener::NewL +// --------------------------------------------------------- +// +CHsContentControlEComListener* CHsContentControlEComListener::NewL( + MHsContentControlEComObserver& aContentControlEComObserver ) + { + CHsContentControlEComListener* self = + new ( ELeave ) CHsContentControlEComListener( + aContentControlEComObserver ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop(); + return self; + } + +// --------------------------------------------------------- +// CHsContentControlEComListener::~CHsContentControlEComListener +// --------------------------------------------------------- +// +CHsContentControlEComListener::~CHsContentControlEComListener() + { + Cancel(); // Cancel any request, if outstanding + if( iEComSession ) + { + // Close session to ECom server + iEComSession->Close(); + } + + // Free up resources held by the EComSession. + REComSession::FinalClose(); + } + +// --------------------------------------------------------- +// CHsContentControlEComListener::CHsContentControlEComListener +// --------------------------------------------------------- +// +CHsContentControlEComListener::CHsContentControlEComListener( + MHsContentControlEComObserver& aContentControlEComObserver ) + : CActive( CActive::EPriorityStandard ), + iHsContentControlEComObserver( aContentControlEComObserver ) + { + } + +// --------------------------------------------------------- +// CHsContentControlEComListener::ConstructL +// rest of the details are commented in the header +// --------------------------------------------------------- +// +void CHsContentControlEComListener::ConstructL() + { + // Connect to the ECOM session server. + iEComSession = &REComSession::OpenL(); + + // Queue the active object in the scheduler + CActiveScheduler::Add( this ); + + // Start the active object and listen for changes in the ECOM registry. + iEComSession->NotifyOnChange( iStatus ); + SetActive(); + } + +// --------------------------------------------------------- +// CHsContentControlEComListener::RunL +// rest of the details are commented in the header +// --------------------------------------------------------- +// +void CHsContentControlEComListener::RunL() + { + if ( &iHsContentControlEComObserver && + KErrNone == iStatus.Int() ) + { + // Notify observer + iHsContentControlEComObserver.HandleEComChangeEvent(); + } + + // Keep listening changes + iEComSession->NotifyOnChange( iStatus ); + + // Restart the active Object + SetActive(); + } + +// --------------------------------------------------------- +// CHsContentControlEComListener::DoCancel +// --------------------------------------------------------- +// +void CHsContentControlEComListener::DoCancel() + { + // Cancel any outstanding requests. + iEComSession->CancelNotifyOnChange( iStatus ); + } + + +// --------------------------------------------------------- +// CHsContentControlEComListener::RunError +// --------------------------------------------------------- +// +TInt CHsContentControlEComListener::RunError( TInt /*aError*/ ) + { + return KErrNone; + } + +// End of file diff -r f72a12da539e -r 5315654608de idlehomescreen/hscontentcontrol/src/hscontentcontrolfactory.cpp --- a/idlehomescreen/hscontentcontrol/src/hscontentcontrolfactory.cpp Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/hscontentcontrol/src/hscontentcontrolfactory.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -21,10 +21,11 @@ // User include files #include "hscontentcontrolfactory.h" +#include "hscontentcontrolecomlistener.h" // Local constants -// TODO: Content controller ECom interface UID +// Content controller ECom interface UID const TUid KInterfaceUidContentController = { 0x20026F51 }; // ======== LOCAL FUNCTIONS ======== @@ -73,6 +74,10 @@ // void CHsContentControlFactory::ConstructL() { + iHsContentControlEComListener = + CHsContentControlEComListener::NewL( *this ); + REComSession::ListImplementationsL( + KInterfaceUidContentController, iImplArray ); } // ---------------------------------------------------------------------------- @@ -89,7 +94,10 @@ // EXPORT_C CHsContentControlFactory::~CHsContentControlFactory() { + iImplArray.ResetAndDestroy(); + iImplArray.Close(); iHsContentControlUis.ResetAndDestroy(); + delete iHsContentControlEComListener; } // --------------------------------------------------------------------------------- @@ -115,17 +123,17 @@ { CImplementationInformation* information( plugins[i] ); - if ( information->OpaqueData().Compare( aControlType ) == 0 ) + if ( information->OpaqueData().CompareF( aControlType ) == 0 ) { CHsContentControlUi* ccUi = CHsContentControlUi::NewL( information->ImplementationUid() ); + CleanupStack::PushL( ccUi ); ccUi->SetContentControlTypeL( information->OpaqueData() ); - iHsContentControlUis.AppendL( ccUi ); + CleanupStack::Pop(); //ccUi retval = ccUi; - // All done break; } @@ -149,7 +157,7 @@ { CHsContentControlUi* cc( iHsContentControlUis[ i ] ); - if ( cc->ContentControlType().Compare( aControlType ) == 0 ) + if ( cc->ContentControlType().CompareF( aControlType ) == 0 ) { return cc; } @@ -158,4 +166,131 @@ return NULL; } +// ---------------------------------------------------------------------------- +// CHsContentControlFactory::HandleEComChangeEvent() +// ---------------------------------------------------------------------------- +// +void CHsContentControlFactory::HandleEComChangeEvent() + { + // ignore event if no plugin loaded. + if ( iHsContentControlUis.Count() > 0 ) + { + TRAP_IGNORE( CheckPluginChangesL(); ); + } + } + +// ---------------------------------------------------------------------------- +// CHsContentControlFactory::CheckPluginChangesL +// ---------------------------------------------------------------------------- +// +void CHsContentControlFactory::CheckPluginChangesL() + { + // Array to return all implementations in an interface + RImplInfoPtrArray plugInArray; + CleanupResetAndDestroyPushL( plugInArray ); + + // Get the list of all implementations. + REComSession::ListImplementationsL( + KInterfaceUidContentController, plugInArray ); + + TUid uid( KNullUid ); + TBool done( EFalse ); + + // If an implementation is not present in present in the plugInArray then its removed. + for( TInt index( iImplArray.Count() - 1 ); index >= 0 && !done; --index ) + { + uid = plugInArray[ index ]->ImplementationUid(); + CImplementationInformation* implInfo = + FindPluginImplInfo( uid, plugInArray ); + if ( implInfo && PluginUpgradeDowngrade( *implInfo ) ) + { + done = ETrue; + } + else + { + // check if ContenControlUi is loaded, unload it + for( TInt innerIndex( iHsContentControlUis.Count() - 1 ); + innerIndex >= 0 && !done; --innerIndex ) + { + CHsContentControlUi* cc( iHsContentControlUis[ innerIndex ] ); + if ( cc && cc->ImplUid() == uid ) + { + iHsContentControlUis.Remove( innerIndex ); + delete cc; + cc = NULL; + done = ETrue; + } + } + done = ETrue; + } + } + + // Cleanup. + CleanupStack::PopAndDestroy(); // plugInArray + + // Reset the array and refresh the plugin list. + iImplArray.ResetAndDestroy(); + iImplArray.Close(); + REComSession::ListImplementationsL( + KInterfaceUidContentController, iImplArray ); + } + +// ---------------------------------------------------------------------------- +// CHsContentControlFactory::FindPluginImplInfo +// ---------------------------------------------------------------------------- +// +CImplementationInformation* CHsContentControlFactory::FindPluginImplInfo( + const TUid& aUid, const RImplInfoPtrArray& aPlugInArray ) + { + CImplementationInformation* implInfo( NULL ); + for( TInt index( aPlugInArray.Count() - 1 ); index >= 0; --index ) + { + implInfo = aPlugInArray[ index ]; + if( aUid == implInfo->ImplementationUid() ) + { + break; + } + } + return implInfo; + } + +// ---------------------------------------------------------------------------- +// CHsContentControlFactory::PluginUpgradeDowngrade +// ---------------------------------------------------------------------------- +// +TBool CHsContentControlFactory::PluginUpgradeDowngrade( + const CImplementationInformation& aPluginImplInfo ) + { + // Check for each plugin in the array if the version matches with the plugin we have + TUid uid = aPluginImplInfo.ImplementationUid(); + for( TInt outterIndex( iImplArray.Count() - 1 ); outterIndex >= 0; --outterIndex ) + { + if( uid == iImplArray[ outterIndex ]->ImplementationUid() ) + { + if( aPluginImplInfo.Version() != iImplArray[ outterIndex ]->Version() || + aPluginImplInfo.Drive() != iImplArray[ outterIndex ]->Drive() || + aPluginImplInfo.DisplayName() != iImplArray[ outterIndex ]->DisplayName() || + aPluginImplInfo.OpaqueData() != iImplArray[ outterIndex ]->OpaqueData() ) + { + // If control reaches here, it means we either have an upgrade or downgrade. + // check if we have loaded this plugin, reload it if found in array. + for( TInt innerIndex( iHsContentControlUis.Count() - 1 ); + innerIndex >= 0; --innerIndex ) + { + CHsContentControlUi* cc( iHsContentControlUis[ innerIndex ] ); + if ( cc && cc->ImplUid() == uid ) + { + iHsContentControlUis.Remove( innerIndex ); + delete cc; + cc = NULL; + innerIndex = KErrNotFound; + } + } + return ETrue; + } + } + } + return EFalse; + } + // End of file diff -r f72a12da539e -r 5315654608de idlehomescreen/inc/xnmenu.h --- a/idlehomescreen/inc/xnmenu.h Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/inc/xnmenu.h Thu Jan 07 12:39:41 2010 +0200 @@ -24,9 +24,7 @@ #include "xncomponent.h" #include "mxncomponentinterface.h" -#if 0 // MSK icon change class TAknsItemID; -#endif // MSK icon change namespace XnMenuInterface { @@ -99,7 +97,6 @@ TBool aPreserveAspectRatio = EFalse, TBool aInvertMask = EFalse, TBool aTransferOwnership = ETrue ) = 0; -#if 0 // MSK icon change /** * Sets soft key image. * @param aId icon bitmap IID @@ -116,8 +113,6 @@ XnMenuInterface::MXnMenuInterface::TSoftKeyPosition aPos, TBool aEnable ) = 0; -#endif // MSK icon change - /** * Sets softkey text. * @since Series 60 3.2 @@ -198,7 +193,6 @@ TBool aPreserveAspectRatio, TBool aInvertMask, TBool aTransferOwnership = ETrue ); -#if 0 // MSK icon change /** * @see MXnMenuInterface::SetSoftKeyImage */ @@ -208,7 +202,6 @@ const TInt32 aBmpM, XnMenuInterface::MXnMenuInterface::TSoftKeyPosition aPos, TBool aEnable ); -#endif // MSK icon change /** * @see MXnMenuInterface::SetSoftkeyTextL diff -r f72a12da539e -r 5315654608de idlehomescreen/inc/xnmenuadapter.h --- a/idlehomescreen/inc/xnmenuadapter.h Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/inc/xnmenuadapter.h Thu Jan 07 12:39:41 2010 +0200 @@ -107,7 +107,6 @@ CXnNodeAppIf* aNode, TBool aPreserveAspectRatio, TBool aInvertMask,TBool aTransferOwnership); -#if 0 // MSK icon change /** * Sets soft key image. * @param aId icon bitmap IID @@ -123,7 +122,6 @@ const TInt32 aBmpM, XnMenuInterface::MXnMenuInterface::TSoftKeyPosition aPos, TBool aEnable ); -#endif // MSK icon change /** * Sets softkey text. diff -r f72a12da539e -r 5315654608de idlehomescreen/inc/xnviewmanager.h --- a/idlehomescreen/inc/xnviewmanager.h Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/inc/xnviewmanager.h Thu Jan 07 12:39:41 2010 +0200 @@ -87,7 +87,8 @@ NONSHARABLE_CLASS( CXnViewManager ) : public CBase { // Friend classes - friend class CXnViewAdapter; + friend class CXnViewAdapter; + public: /** * Two-phased constructor. @@ -234,10 +235,8 @@ public: void UpdatePageManagementInformationL(); -#if 0 // MSK icon change private: TInt ResolveIconIndex( TInt aPageCount, TInt aPageNum ) const; -#endif // MSK icon change private: // data diff -r f72a12da539e -r 5315654608de idlehomescreen/nativeuicontroller/src/aistatuspanel.cpp --- a/idlehomescreen/nativeuicontroller/src/aistatuspanel.cpp Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/nativeuicontroller/src/aistatuspanel.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -385,7 +385,7 @@ void CAiStatusPanel::StopTitlePaneScrollingL() { - //stop scrolling + // stop scrolling if( iTitlePane->Text() ) { iTitlePane->SetTextL( *iTitlePane->Text(), EFalse ); @@ -394,7 +394,7 @@ void CAiStatusPanel::ScrollTitlePaneTextL() { -// start scrolling + // start scrolling if( iTitlePane->Text() ) { iTitlePane->SetTextL( *iTitlePane->Text(), ETrue ); diff -r f72a12da539e -r 5315654608de idlehomescreen/nativeuicontroller/src/aititlepanerenderer.cpp --- a/idlehomescreen/nativeuicontroller/src/aititlepanerenderer.cpp Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/nativeuicontroller/src/aititlepanerenderer.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -210,10 +210,7 @@ void CAiTitlePaneRenderer::FocusObtainedL() { - // This scrolls the title pane text only if it has been changed iStatusPanel.RenderTitlePaneL(); - // Force the scroll just to be safe - iStatusPanel.ScrollTitlePaneTextL(); } void CAiTitlePaneRenderer::FocusLostL() diff -r f72a12da539e -r 5315654608de idlehomescreen/sapiwrapper/cpswrapper/inc/cpswrapper.h --- a/idlehomescreen/sapiwrapper/cpswrapper/inc/cpswrapper.h Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/sapiwrapper/cpswrapper/inc/cpswrapper.h Thu Jan 07 12:39:41 2010 +0200 @@ -20,7 +20,7 @@ // System includes #include -#include // for MLiwNotifyCallback +#include // for MLiwNotifyCallback // Forward declarations class CLiwServiceHandler; diff -r f72a12da539e -r 5315654608de idlehomescreen/sapiwrapper/cpswrapper/src/cpsobserver.cpp --- a/idlehomescreen/sapiwrapper/cpswrapper/src/cpsobserver.cpp Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/sapiwrapper/cpswrapper/src/cpsobserver.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -17,10 +17,10 @@ // INCLUDE FILES -#include -#include -#include -#include +#include +#include +#include +#include #include "cpsobserver.h" #include "cpswrapper.h" @@ -71,7 +71,7 @@ // CCpsObserver::~CCpsObserver() { - ReleaseL(); + TRAP_IGNORE( ReleaseL() ); ReleaseLiw(); } diff -r f72a12da539e -r 5315654608de idlehomescreen/sapiwrapper/cpswrapper/src/cpswrapper.cpp --- a/idlehomescreen/sapiwrapper/cpswrapper/src/cpswrapper.cpp Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/sapiwrapper/cpswrapper/src/cpswrapper.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -16,9 +16,9 @@ */ // System include files -#include -#include -#include +#include +#include +#include #include // User include files diff -r f72a12da539e -r 5315654608de idlehomescreen/sapiwrapper/hspswrapper/inc/hspswrapper.h --- a/idlehomescreen/sapiwrapper/hspswrapper/inc/hspswrapper.h Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/sapiwrapper/hspswrapper/inc/hspswrapper.h Thu Jan 07 12:39:41 2010 +0200 @@ -21,7 +21,7 @@ #define C_CHSPSWRAPPER_H #include -#include // for MLiwNotifyCallback +#include // for MLiwNotifyCallback class CLiwServiceHandler; class MLiwInterface; diff -r f72a12da539e -r 5315654608de idlehomescreen/sapiwrapper/hspswrapper/src/hspswrapper.cpp --- a/idlehomescreen/sapiwrapper/hspswrapper/src/hspswrapper.cpp Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/sapiwrapper/hspswrapper/src/hspswrapper.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -16,8 +16,8 @@ */ -#include -#include +#include +#include #include #include "hspswrapper.h" diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/conf/widgetmanager.confml Binary file idlehomescreen/widgetmanager/conf/widgetmanager.confml has changed diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/conf/widgetmanager_20026F53.crml Binary file idlehomescreen/widgetmanager/conf/widgetmanager_20026F53.crml has changed diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/data/20026F53.rss --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/data/20026F53.rss Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,44 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: widget manager plugin registry resource +* +*/ + +#include "registryinfov2.rh" + +// Declares info for two implementations +RESOURCE REGISTRY_INFO theInfo + { + resource_format_version = RESOURCE_FORMAT_VERSION_2; + dll_uid = 0x20026F53; + interfaces = + { + INTERFACE_INFO + { + // UID of interface that is implemented + interface_uid = 0x20026F51; + implementations = + { + IMPLEMENTATION_INFO + { + implementation_uid = 0x20026F53; + version_no = 1; + display_name = "Widget Manager"; + default_data = "WmContentControlUI"; + opaque_data = "0x20026F53"; + } + }; + } + }; + } diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/data/widgetmanagerview.loc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/data/widgetmanagerview.loc Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,163 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Localisation file of Widget Manager +* +*/ + + + +// TITLES OF EACH VIEW + +// d: Title of Application +// d: +// d: +// l: title_pane_t2/opt12 +// w: +// r: TB9.2 +#define qtn_wm_title_text "Widget Catalog" + + + +// OPTIONS-MENU MENUITEMS + +// d: Add-menuitem in Options-menu +// d: +// d: +// l: list_single_pane_t1_cp2 +// w: +// r: TB9.2 +// +#define qtn_options_wm_add "Add To Homescreen" + +// d: Launch-menuitem in Options-menu +// d: +// d: +// l: list_single_pane_t1_cp2 +// w: +// r: TB9.2 +// +#define qtn_options_wm_launch_widget "Launch" + +// d: Search-menuitem in Options-menu +// d: +// d: +// l: list_single_pane_t1_cp2 +// w: +// r: TB9.2 +// +#define qtn_options_wm_search "Search" + +// d: Uninstall-menuitem in Options-menu +// d: +// d: +// l: list_single_pane_t1_cp2 +// w: +// r: TB9.2 +// +#define qtn_options_wm_uninstall "Uninstall" + +// d: Open-menuitem in Options-menu +// d: +// d: +// l: list_single_pane_t1_cp2 +// w: +// r: TB9.2 +// +#define qtn_options_wm_open "Open" + +// d: Sort alphabetically-menuitem in Options-menu +// d: +// d: +// l: list_single_pane_t1_cp2 +// w: +// r: TB9.2 +// +#define qtn_options_wm_sort_alpha "Sort alphabetically" + +// d: Details-menuitem in Options-menu +// d: +// d: +// l: list_single_pane_t1_cp2 +// w: +// r: TB9.2 +// +#define qtn_options_wm_show_details "Details" + + + +// MISC + +// d: Text displayed on OVI Store button +// d: +// d: +// l: wgtman_btn_pane_t1 +// w: +// r: TB9.2 +// +#define qtn_wm_ovi_store_title "Ovi Store" + +// d: Info popup to indicate that an item can not be added to home screen +// d: because current view is full +// d: +// l: popup_note_window +// w: +// r: TB9.2 +// +#define qtn_hs_add_widget_no_space_note "Not enough space to add new widget to active page. Remove some content first" + +// d: Info popup to indicate that an item can not be added to home screen +// d: because maximum instance count of current widget would be exceeded +// d: +// l: popup_note_window +// w: +// r: TB9.2 +// +#define qtn_hs_add_widget_max_count_note "Unable to add. Home screen does not allow more instances of this widget" + +// d: widget details dialog left softkey for adding widget to home screen +// d: Note: widgets dialog is not necessarily full screen width, which may affect +// d: string max length! +// l: control_pane_t1/opt7 +// w: +// r: TB9.2 +// +#define qtn_wm_details_add_to_hs "Add" + +// d: widget details dialog - no description +// d: +// d: +// l: listrow_wgtman_pane_t2 +// w: +// r: TB9.2 +// +#define qtn_wm_details_no_description "No description available" + +// d: widget uninstall not allowed +// d: +// d: +// l: popup_note_window +// w: +// r: TB9.2 +// +#define qtn_wm_uninst_not_allowed "%U can not be uninstalled " + +// d: widget details dialog default text for wrt widgets +// d: +// d: +// l: popup_note_window +// w: +// r: TB9.2 +// +#define qtn_wm_widget_details_wrt "This widget uses web content. Only one instance of this widget can be in the Home screen at a time." + diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/data/widgetmanagerview.rss --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/data/widgetmanagerview.rss Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,246 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +* +*/ + +// INCLUDES +#include +#include +#include +#include +#include +#include +#include + +#include "widgetmanager.hrh" +#include "widgetmanagerview.loc" + +// RESOURCE IDENTIFIER +NAME WIGZ // 4 letter ID + +RESOURCE RSS_SIGNATURE + { + } + +// ---------------------------------------------------- +// MAIN VIEW AND ITS PARTS +// ---------------------------------------------------- + +RESOURCE AVKON_VIEW r_wm_main_container_view + { + cba = R_AVKON_SOFTKEYS_OPTIONS_BACK__SELECT; + menubar = r_wm_main_container_options_menu; + toolbar = 0; + } + +RESOURCE TITLE_PANE r_wm_main_container_title_resource + { + txt = qtn_wm_title_text; + } + +// ---------------------------------------------------- +// MENU +// ---------------------------------------------------- + +RESOURCE MENU_BAR r_wm_main_container_options_menu + { + titles = + { + MENU_TITLE + { + menu_pane = r_wm_main_container_menu_pane; + } + }; + } + +RESOURCE MENU_PANE r_wm_main_container_menu_pane + { + items = + { + MENU_ITEM + { + command = EWmMainContainerViewOpenPortalMenuItemCommand; + txt = qtn_options_wm_open; + flags = EEikMenuItemAction; + }, + MENU_ITEM + { + command = EWmMainContainerViewAddMenuItemCommand; + txt = qtn_options_wm_add; + flags = EEikMenuItemAction; + }, + MENU_ITEM + { + command = EWmMainContainerViewWiddetDetailsMenuItemCommand; + txt = qtn_options_wm_show_details; + flags = EEikMenuItemSpecific; + }, + MENU_ITEM + { + command = EWmMainContainerViewLaunchMenuItemCommand; + txt = qtn_options_wm_launch_widget; + flags = EEikMenuItemSpecific; + }, + MENU_ITEM + { + command = EWmMainContainerViewSearchMenuItemCommand; + txt = qtn_options_wm_search; + }, + MENU_ITEM + { + command = EWmMainContainerViewSortAlphaMenuItemCommand; + txt = qtn_options_wm_sort_alpha; + }, + MENU_ITEM + { + command = EWmMainContainerViewUninstallMenuItemCommand; + txt = qtn_options_wm_uninstall; + flags = EEikMenuItemSpecific; + }, + MENU_ITEM + { + command = EWmMainContainerViewHelpMenuItemCommand; + txt = qtn_options_help; + }, + MENU_ITEM + { + command = EWmMainContainerViewBackMenuItemCommand; + txt = qtn_options_exit; + } + }; + } + +// ---------------------------------------------------- +// OVI STORE BUTTON +// ---------------------------------------------------- + +RESOURCE AVKON_BUTTON r_wm_portal_button + { + flags = 0; + states = + { + AVKON_BUTTON_STATE + { + flags = 0; + txt = qtn_wm_ovi_store_title; + bmpfile = AVKON_BITMAP_FILE; + bmpid = EMbmAvkonQgn_graf_wml_wait_globe_04; + bmpmask = EMbmAvkonQgn_graf_wml_wait_globe_04_mask; + press_bmpid = EMbmAvkonQgn_graf_wml_wait_globe_04; + press_bmpmask = EMbmAvkonQgn_graf_wml_wait_globe_04_mask; + } + }; + } + +RESOURCE TBUF r_qtn_wm_go_to_ovi_store + { + buf = qtn_wm_ovi_store_title; + } + +// ---------------------------------------------------- +// MISCELLANEOUS INFO MESSAGES +// ---------------------------------------------------- + +RESOURCE TBUF r_qtn_hs_add_widget_no_space_note + { + buf = qtn_hs_add_widget_no_space_note; + } + +RESOURCE TBUF r_qtn_hs_add_widget_max_count_note + { + buf = qtn_hs_add_widget_max_count_note; + } + +RESOURCE TBUF r_qtn_hs_hs_memory_full + { + buf = qtn_hs_hs_memory_full; + } + +RESOURCE TBUF r_qtn_wm_details_no_description + { + buf = qtn_wm_details_no_description; + } + +RESOURCE TBUF r_qtn_wm_widget_details_wrt + { + buf = qtn_wm_widget_details_wrt; + } + +RESOURCE TBUF r_qtn_wm_uninst_not_allowed + { + buf = qtn_wm_uninst_not_allowed; + } + +// ---------------------------------------------------- +// Wm Details dialog +// ---------------------------------------------------- + +STRUCT WMDLGCONTROL + { + STRUCT control; + } + +RESOURCE DIALOG r_wm_details_add_dialog + { + flags = EEikDialogFlagNoDrag | + EEikDialogFlagCbaButtons | + EEikDialogFlagWait | + EEikDialogFlagNoTitleBar; + buttons = r_wm_details_add_close_cba; + } + +RESOURCE CBA r_wm_details_add_close_cba + { + buttons = + { + CBA_BUTTON // add + { + id = ECbaAddToHs; + txt = qtn_wm_details_add_to_hs; + }, + CBA_BUTTON // close + { + id = EAknSoftkeyClose; + txt = text_softkey_close; + } + }; + } + +RESOURCE DIALOG r_wm_details_only_dialog + { + flags = EEikDialogFlagNoDrag | + EEikDialogFlagCbaButtons | + EEikDialogFlagWait | + EEikDialogFlagNoTitleBar; + buttons = r_wm_details_empty_close_cba; + } + +RESOURCE CBA r_wm_details_empty_close_cba + { + buttons = + { + CBA_BUTTON // empty + { + id = 0; + txt = text_softkey_empty; + }, + CBA_BUTTON // close + { + id = EAknSoftkeyClose; + txt = text_softkey_close; + } + }; + } diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/gfx/add_widget_button.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/gfx/add_widget_button.svg Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/gfx/qgn_menu_hswidget.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/gfx/qgn_menu_hswidget.svg Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/gfx/qgn_menu_ovistore.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/gfx/qgn_menu_ovistore.svg Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/group/bld.inf --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/group/bld.inf Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,43 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* Widget manager build information +* +*/ + +PRJ_PLATFORMS +DEFAULT + +PRJ_EXPORTS +../rom/widgetmanager.iby CORE_APP_LAYER_IBY_EXPORT_PATH(widgetmanager.iby) +../rom/widgetmanager_resources.iby CORE_APP_LAYER_IBY_EXPORT_PATH(widgetmanager_resources.iby) + +../sis/widgetmanager_stub.sis /epoc32/data/z/system/install/widgetmanager_stub.sis + +// cenrep +../conf/widgetmanager.confml APP_LAYER_CONFML(widgetmanager.confml) +../conf/widgetmanager_20026F53.crml APP_LAYER_CRML(widgetmanager_20026F53.crml) + +PRJ_EXTENSIONS +START EXTENSION s60/mifconv +OPTION TARGETFILE widgetmanager.mif +OPTION HEADERFILE widgetmanager.mbg +OPTION SOURCEDIR ../gfx +OPTION SOURCEFILE wmicons.txt +END + +PRJ_MMPFILES + +widgetmanager.mmp + diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/group/widgetmanager.mmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/group/widgetmanager.mmp Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,115 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* Widget manager project definition file +* +*/ + +#include +#include + +TARGET widgetmanager.dll +TARGETTYPE PLUGIN + +// ECom Dll recognition UID followed by the unique UID for this dll +UID 0x10009D8D 0x20026F53 + +VENDORID VID_DEFAULT +SECUREID 0x20026F53 + +// SIS installation + IAD support +VERSION 1.0 +paged + +CAPABILITY CAP_ECOM_PLUGIN + +SOURCEPATH ../src +SOURCE wmpluginproxy.cpp +SOURCE wmplugin.cpp +SOURCE wmresourceloader.cpp +SOURCE wmmaincontainer.cpp +SOURCE wmmaincontainerview.cpp +SOURCE wmwidgetdata.cpp +SOURCE wmlistbox.cpp +SOURCE wmimageconverter.cpp +SOURCE wmpersistentwidgetorder.cpp +SOURCE wmeffectmanager.cpp +SOURCE wmdetailsdlg.cpp +SOURCE wmportalbutton.cpp +SOURCE wmwidgetloaderao.cpp + +SOURCEPATH ../data +START RESOURCE 20026F53.rss +TARGETPATH ECOM_RESOURCE_DIR +TARGET widgetmanager.rsc +END //RESOURCE + +SOURCEPATH ../data +START RESOURCE widgetmanagerview.rss +HEADER +TARGETPATH RESOURCE_FILES_DIR +LANGUAGE_IDS +END //RESOURCE + +USERINCLUDE . +USERINCLUDE ../inc +USERINCLUDE ../data + +APP_LAYER_SYSTEMINCLUDE +SYSTEMINCLUDE /epoc32/include/ecom + + +LIBRARY euser.lib +LIBRARY cone.lib +LIBRARY avkon.lib +LIBRARY eikcore.lib +LIBRARY estor.lib +LIBRARY eikcoctl.lib +LIBRARY eikctl.lib +LIBRARY eikdlg.lib + +LIBRARY efsrv.lib // RFs +LIBRARY bafl.lib // BaflUtils +LIBRARY apgrfx.lib // RApaLsSession +LIBRARY commonengine.lib // StringLoader + +LIBRARY aknicon.lib // AknIconUtility +LIBRARY imageconversion.lib // CImageDecoder +LIBRARY bitmaptransforms.lib // CBitmapScaler +LIBRARY fbscli.lib // CFbsBitmap +LIBRARY bitgdi.lib // CFbsBitmapDevice +LIBRARY gdi.lib // CFont +LIBRARY egul.lib // TextUtils +LIBRARY ecom.lib // ECom fw +LIBRARY aknskins.lib // AknsDrawUtils +LIBRARY aknskinsrv.lib // AknsDrawUtils +LIBRARY aknswallpaperutils.lib // AknsDrawUtils +LIBRARY hscontentcontrol.lib // CHsContentControlUi +LIBRARY apparc.lib // CApaCommandLine +LIBRARY aknlayout.lib // avkon layout +LIBRARY aknlayout2scalable.lib // scalable avkon layout +LIBRARY swinstcli.lib // widget uninstall +LIBRARY hscontentinfo.lib // CHsContentInfo +LIBRARY platformenv.lib // DriveInfo::GetDefaultDrive +LIBRARY svgengine.lib // CSvgEngineInterfaceImpl +LIBRARY gfxtrans.lib // effect manager +LIBRARY ws32.lib //WindowSession +LIBRARY widgetregistryclient.lib // WidgetRegistryClient +LIBRARY hlplch.lib // HlpLauncher +LIBRARY sysutil.lib // diskspace +LIBRARY featmgr.lib // FeatureManager +LIBRARY etext.lib +LIBRARY centralrepository.lib + +// End of file diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/group/wmicons.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/group/wmicons.txt Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,3 @@ +-c32,8 qgn_menu_hswidget +-c32,8 add_widget_button +-c32,8 qgn_menu_ovistore.svg diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/inc/widgetmanager.hrh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/inc/widgetmanager.hrh Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,44 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* Declares resource ids for widgetmanager application. +* +*/ + + +/** WidgetManger viev uid */ +enum TWidgetManagerViewUids + { + EWmMainContainerViewId = 0x20026F53 + }; + +/** MainContainer View Commands */ +enum TWmMainContainerViewCommands + { + EWmMainContainerViewAddMenuItemCommand = 0x6000, + EWmMainContainerViewLaunchMenuItemCommand, + EWmMainContainerViewSearchMenuItemCommand, + EWmMainContainerViewSortAlphaMenuItemCommand, + EWmMainContainerViewUninstallMenuItemCommand, + EWmMainContainerViewHelpMenuItemCommand, + EWmMainContainerViewOpenPortalMenuItemCommand, + EWmMainContainerViewBackMenuItemCommand, + EWmMainContainerViewWiddetDetailsMenuItemCommand + }; + +enum TWmMenuCmdIDs + { + ECbaAddToHs = 1 + }; + diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/inc/wmcommon.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/inc/wmcommon.h Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,45 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + + +#ifndef WMCOMMON_H +#define WMCOMMON_H + +//includes +#include + +// widgetmanager UID +const TUid KUidWidgetManager = { 0x200255FF }; + +// HsContentInfo types +_LIT8( KContentWidget, "widget" ); +_LIT8( KContentTemplate, "template" ); + +// UI related const +const TInt KWidgetHeight = 90; + +// UI component ID's +enum TWmUiControlIds + { + EOviPortal = 0x1, + ELastPortal, + EWidgetsList, + EFindBox, + EMaximumWidgets = 0xC8 + }; + +#endif //WMCOMMON_H diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/inc/wmcrkeys.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/inc/wmcrkeys.h Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,67 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + + +#ifndef __WMCRKEYS_H__ +#define __WMCRKEYS_H__ + +// WidgetManager CR key +const TUint32 KCrWidgetManagerm = 0x20026F53; + +/** + * Key Id's from 0x1 to 0x28 are reserved for languages. + * LangId_0 0x1 + * OviStoreBrowserUrl_0 0x2 + * OperatorUrl_0 0x3 + * OperatorButtonText_0 0x4 + * ... + * LangId_9 0x25 + * OviStoreBrowserUrl_9 0x26 + * OperatorUrl_9 0x27 + * OperatorButtonText_9 0x28 + */ + +const TUint32 KOviStoreBrowserUrlOffset = 1; +const TUint32 OperatorUrlOffset = 2; +const TUint32 KperatorButtonTextOffset = 3; + +/** + * Key to first language id + */ +const TUint32 KLangId0 = 0x1; + +/** + * Key to last language id + */ +const TUint32 KLangId9 = 0x25; + +/** + * Key to Ovi Store Client param + */ +const TUint32 KOviStoreClientParam = 0x29; + +/** + * Key to Operator button icon + */ +const TUint32 KOperatorButtonIcon = 0x2A; + +/** + * Key to Ovi Store client BunbleId + */ +const TUint32 KOviStoreBunbleId = 0x2B; + +#endif // __WMCRKEYS_H__ diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/inc/wmdetailsdlg.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/inc/wmdetailsdlg.h Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,147 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* Declares widget details dialog for WidgetManager +* +*/ + +#ifndef ___WMDETAILSDLG_H__ +#define ___WMDETAILSDLG_H__ + +// INCLUDES +#include +#include + +// FORWARD DECLARATIONS +class CEikRichTextEditor; +class CAknsBasicBackgroundControlContext; + +// CLASS DECLARATIONS +/** + * CWmDetailsDlg + */ +NONSHARABLE_CLASS( CWmDetailsDlg ): public CAknDialog + { +public: + + /** + * Two-phased constructor. + */ + static CWmDetailsDlg* NewL( + const TDesC& aName, + const TDesC& aDescription, + TBool aCanBeAdded, + const CFbsBitmap* aLogoBmp, + const CFbsBitmap* aLogoMask, + CAknsBasicBackgroundControlContext* aBgContext ); + + /** Destructor. */ + ~CWmDetailsDlg(); + +public: // New functions + /** From CAknDialog Initializes the dialog and calls + CAknDialog's ExecuteLD() */ + TInt ExecuteLD(); + +private: // Functions from base classes + + + /** From CEikDialog Initializes dialog before layout*/ + void PreLayoutDynInitL(); + + /** From CEikDialog Handles button events and looks + if the dialog can be closed */ + TBool OkToExitL(TInt aButtonId); + + /** From CCoeControl Handles key events */ + TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent,TEventCode aType ); + + /** From CEikDialog Called by framework when dialog is activated */ + void ActivateL(); + + /** From CAknDialog called to provide access to the contorols */ + TTypeUid::Ptr MopSupplyObject( TTypeUid aId ); + + /** From CAknDialog */ + void SetSizeAndPosition( const TSize& aSize ); + + /** From CCoeControl */ + void SizeChanged(); + + /** From CCoeControl */ + TInt CountComponentControls() const; + CCoeControl* ComponentControl(TInt aIndex) const; + void Draw( const TRect& aRect ) const; + + /** Desired rect for dialog */ + TRect WmDetailsDialogRect(); + + /** Insert and format content */ + void InsertAndFormatContentL(); + +private: + + /** Constructor for performing 1st stage construction */ + CWmDetailsDlg( TBool aCanBeAdded ); + + /** 2nd phase constructor */ + void ConstructL( + const TDesC& aName, + const TDesC& aDescription, + const CFbsBitmap* aLogoBmp, + const CFbsBitmap* aLogoMask, + CAknsBasicBackgroundControlContext* aBgContext ); + +private: + + /** + * Background context (not owned) + */ + CAknsBasicBackgroundControlContext* iBgContext; + + /** + * Richtext editor + */ + CEikRichTextEditor* iRtEditor; + + /** + * Name of widget + */ + HBufC* iName; + + /** + * Description of widget + */ + HBufC* iDescription; + + /** + * Logo image + */ + CFbsBitmap* iLogoBmp; + + /** + * Logo mask + */ + CFbsBitmap* iLogoMask; + + /** + * ETrue if widget can be added to HS + */ + TBool iCanBeAdded; + + }; + +#endif ___WMDETAILSDLG_H__ + +// End of File diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/inc/wmeffectmanager.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/inc/wmeffectmanager.h Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,111 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* CImageConverter declaration +* +*/ + +#ifndef WMEFFECTMANAGER_H +#define WMEFFECTMANAGER_H + +// INCLUDES +#include + +class CCoeEnv; +// CONSTANTS +// Effects +const TInt KAppStartCommonDefaultStyle = 3; +const TInt KAppExitCommonDefaultStyle = 5; + +/** + * Struct which holds needed info of effect. + */ +NONSHARABLE_STRUCT( TWmEffect ) + { + TInt iState; + TInt iType; + TInt iId; + }; + +/** + * Effect manager. + * Handles starting and ending effects. + * + * @since S60 v5.0 + */ +NONSHARABLE_CLASS( CWmEffectManager ) : public CBase + { +public: + /** + * Two-phased constructor. + * @return new instance of CWmEffectManager. + */ + static CWmEffectManager* NewL( CCoeEnv& aCoeEnv ); + + /** + * Destructor. + */ + ~CWmEffectManager(); + +public: + /** + * Begin handling of fullscreen effect. + * @param aId effect id + */ + void BeginFullscreenEffectL( TInt aId ); + + /** + * When UiRendered is called effect is ended and will be drawn + */ + void UiRendered(); + +private: + /** + * C++ default constructor. + */ + CWmEffectManager( CCoeEnv& aCoeEnv ); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(); + +private: + /** + * Starts fullscreen effect. + * @param aEffect effect data + */ + void DoBeginFullscreenEffect( TWmEffect& aEffect ); + + /** + * Removes and destroys effect from effect list. + * @param aEffect effect data + */ + void RemoveEffect( TWmEffect* aEffect ); + +private: // data + /** + * List of started effects. + */ + RPointerArray iEffects; + + /** + * COE env + */ + CCoeEnv& iCoeEnv; + }; + +#endif // WMEFFECTMANAGER_H + +// End of file diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/inc/wmimageconverter.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/inc/wmimageconverter.h Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,243 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* CWmImageConverter declaration +* +*/ + +#ifndef WMIMAGECONVERTER_H +#define WMIMAGECONVERTER_H + +//includes +#include +#include +#include +#include // MAknIconFileProvider + +// Forward declarations +class CFbsBitmap; +class CBitmapScaler; +class CImageDecoder; +class TAknsItemID; +class CWmUnitTest; +class MSvgError; + +// Class declaration +/** + * MConverterObserver + * To notify when image is converted + */ +NONSHARABLE_CLASS( MConverterObserver ) + { + public: + virtual void NotifyCompletion( TInt aError ) = 0; + }; + +// Class declaration +/** + * CWmImageConverter + * Image converter + */ +NONSHARABLE_CLASS ( CWmImageConverter ) : public CActive, + public MAknIconFileProvider + { + /** states for this converter */ + enum TState + { + EIdle = 0, + EDecoding, + EScalingBitmap, + EScalingMask + }; + +public: //contructors/destructors + /** + * Two-phased constructor. + * @param aObserver observer + */ + static CWmImageConverter* NewL( MConverterObserver* aObserver ); + + /** Destructor */ + ~CWmImageConverter(); + +public: // interface methods + + /** + * Parses icon string and prepares logo image. + * + * @param aWidth wanted widht + * @param aHeight wanted height + * @param aIconStr str containing logo icon + * Supported values: + * - skin( ):mif( ) + * - mif( ) + * - uid() + * - . + */ + void HandleIconStringL( TInt aWidth, TInt aHeight, const TDesC& aIconStr ); + + /** + * Returns converted bitmap. Caller takes ownership + * + * @return CFbsBitmap + */ + CFbsBitmap* Bitmap(); + + /** + * Returns converted mask. Caller takes ownership + * + * @return CFbsBitmap + */ + CFbsBitmap* Mask(); + + /** + * sets the size for decoding + * @param aSize the logo size + */ + void SetLogoSize( const TSize& aSize ); + + /** supported image conversion methods */ + enum TConversionMethod + { + EUnrecognized, // we could not recognise the icon string + EUidIcon, // App.UID-coded icon + ESvgIcon, // Icon from SVG-file + ESkinIcon, // Icon from SKIN id + EMifIcon, // Icon from MIF file, known graphic index + ESkinAndMifIcon, // Icon from SKIN and MIF combination + EImageIcon, // Icon from image file (jpeg or png) + }; + + /** + * The type of currently converted image. + * This method can be used to check if correct conversion was used. + * @return conversion method used for current image + */ + TConversionMethod ConversionMethod(); + +protected: // implementation of CActive + /** + * Implements cancellation of an outstanding request. + * + * @see CActive::DoCancel + */ + void DoCancel(); + + /** + * Handles an active object's request completion event. + * + * @see CActive::RunL + */ + void RunL(); + + /** + * RunError + * + * @see CActive::RunError + */ + TInt RunError(TInt aError); + +private: + CWmImageConverter(); + void ConstructL( MConverterObserver* aObserver ); + void CheckSvgErrorL( MSvgError* aError ); + +private: + + void ScaleBitmap( TInt aWidth, TInt aHeight ); + void ScaleMask( TInt aWidth, TInt aHeight ); + void CreateIconFromUidL( const TUid& aUid ); + void CreateIconFromSvgL( const TDesC& aFileName ); + void CreateIconFromOtherL( const TDesC& aFileName ); + void CreateSkinOrMifIconL( + const TAknsItemID& aItemId, TInt aBitmapId, + TInt aMaskId, const TDesC& aFileName ); + // resolvers + TBool ResolveUid( const TDesC& aPath, TUid& aUid ); + TBool ResolveSkinId( const TDesC& aPath, TAknsItemID& aItemId ); + TBool ResolveMifId( const TDesC& aPath, TInt& aBitmapId, + TInt& aMaskId, TDes& aFileName ); + TBool ResolveSkinIdAndMifId( const TDesC& aPath, TAknsItemID& aItemId, + TInt& aBitmapId, TInt& aMaskId, TDes& aFileName ); + TBool EndsWith( const TDesC& aString, const TDesC& aPattern ); + +private: // from MAknIconFileProvider + + /** Returns an open file handle to the icon file. */ + void RetrieveIconFileHandleL( RFile& aFile, const TIconFileType aType ); + + /** Stops using this MAknIconFileProvider instance */ + void Finished(); + +private: + /** + * Converter observer (not owned) + */ + MConverterObserver* iObserver; + + /** + * decoded image + */ + CFbsBitmap* iBitmap; + + /** + * decoded image mask + */ + CFbsBitmap* iMask; + + /** + * decoder from ICL API + */ + CImageDecoder* iImageDecoder; + + /** + * bitmap scaler + */ + CBitmapScaler* iScaler; + + /** + * internal state + */ + TState iState; + + /** + * File name to convert + */ + TFileName iFilename; + + /** + * size to convert + */ + TSize iSize; + + /** + * is scaling needed + */ + TBool iScaleNeeded; + + /** + * File handle + */ + RFs iFs; + + /** + * Conversion method for current image + */ + TConversionMethod iConversionMethod; + + }; + +#endif // #ifndef WMIMAGECONVERTER_H + +// end of file diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/inc/wmlistbox.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/inc/wmlistbox.h Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,400 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* Declares widget listbox for WidgetManager +* +*/ + +#ifndef ___WMLISTBOX_H__ +#define ___WMLISTBOX_H__ + +// INCLUDES +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include "wmwidgetdataobserver.h" +#include "wmwidgetdata.h" + +// FORWARD DECLARATIONS +class CWmListBox; +class CWmPlugin; +class CListBoxView; +class CFormattedCellListBoxData; +class CAknLongTapDetector; +class CWmListModel; +class CWmWidgetData; +class CAknStylusPopUpMenu; +class MEikMenuObserver; + +// CLASS DECLARATIONS + +/** + * CWmListItemDrawer + */ +NONSHARABLE_CLASS( CWmListItemDrawer ): public CFormattedCellListBoxItemDrawer + { +public: + /** Two-phased constructor. */ + static CWmListItemDrawer* NewL( + CWmPlugin& aWmPlugin, + MTextListBoxModel* aTextListBoxModel, + const CFont* aFont, + CFormattedCellListBoxData* aFormattedCellData, + CWmListBox* aListBox ); + + /** Destructor. */ + ~CWmListItemDrawer(); + + /** Default logo image. */ + const CFbsBitmap* DefaultLogoImage(); + /** Default logo mask. */ + const CFbsBitmap* DefaultLogoMask(); + + /** + * re-size bitmaps to size provided by layout + */ + void ResizeDefaultBitmaps(); + + /** + * Responds to skin changed event. + */ + void HandleSkinChanged(); + +public: + + /** + * from CFormattedCellListBoxItemDrawer: + * draws a single list box item + */ + void DrawItem( + TInt aItemIndex, TPoint aItemRectPos, + TBool aItemIsSelected, TBool aItemIsCurrent, + TBool aViewIsEmphasized, TBool aViewIsDimmed ) const; + +private: + /** Constructor for performing 1st stage construction */ + CWmListItemDrawer( + CWmPlugin& aWmPlugin, + MTextListBoxModel* aTextListBoxModel, + const CFont* aFont, + CFormattedCellListBoxData* aFormattedCellData, + CWmListBox* aListBox ); + + /** 2nd phase constructor */ + void ConstructL(); + +private: // data members + + /** + * the plugin root (not owned) + */ + CWmPlugin& iWmPlugin; + + /** + * pointer to the list box data (not owned) + */ + CFormattedCellListBoxData* iCellData; + + /** + * pointer to the listbox (not owned) + */ + CWmListBox* iListBox; + + /** + * current font used in drawing (not owned) + */ + const CFont* iFont; + + /** + * add-button colored bitmap (default color) + */ + CFbsBitmap* iAddWidgetBtnImage; + + /** + * add-button mask + */ + CFbsBitmap* iAddWidgetBtnMask; + + /** + * add-button colored bitmap (highlighted color) + */ + CFbsBitmap* iAddWidgetBtnHighlightImage; + + /** + * add-button mask + */ + CFbsBitmap* iAddWidgetBtnHighlightMask; + + /** + * default logo (when widget does not have one) bitmap + */ + CFbsBitmap* iDefaultLogoImage; + + /** + * default logo (when widget does not have one) mask + */ + CFbsBitmap* iDefaultLogoImageMask; + + }; + + + +// CLASS DECLARATIONS +/** + * CWmListBox + */ +NONSHARABLE_CLASS( CWmListBox ): public CAknDouble2LargeStyleListBox, + public MWmWidgetDataObserver + { +public: + + /** + * Two-phased constructor. + */ + static CWmListBox* NewL( + CWmPlugin& aWmPlugin, + const TRect& aRect, + const CCoeControl* aParent, + TInt aFlags = 0 ); + + /** Destructor. */ + ~CWmListBox(); + +public: // API for manipulating list content + + /** Default Logo. */ + const CFbsBitmap* DefaultLogo(); + /** Default Logo mask. */ + const CFbsBitmap* DefaultMask(); + + /** + * Findbox visibility + * + * @param aVisibility sets find pane visibility + */ + inline void SetFindPaneIsVisible( TBool aVisibility ); + + /** + * Currently selected item index + * + * @return return currently selected item + */ + TInt CurrentListBoxItemIndex(); + + /** + * real index for listbox item if findbox is active + * + * @return return index from original list for currently selected item + */ + TInt RealIndex( TInt aIndex ); + + /** + * number of items in the widget data array (also items on the list) + * + * @return count of widget data array + */ + inline TInt WidgetDataCount(); + + /** + * currently selected item + * @return the selected item, or NULL if nothing selected + */ + CWmWidgetData* WidgetData(); + + /** + * gets an item by index + * + * @param aItemIndex index for item to return + */ + CWmWidgetData& WidgetData( TInt aItemIndex ); + + /** + * gets the constant widget data array + */ + inline const RWidgetDataValues& WidgetDataArray(); + + /** + * inserts widget data to the model. Takes ownership of the object. + * The widget data will appear to correct location in natural order: + * - in previously saved position, if it has been viewed before + * (widget data must have a pointer to persistent widget order) + * - in case this is a new widget, it will appear topmost + * - in case there is no persistent widgets order or it is empty, + * the widget is added in alphabetical order + * + * NOTE: caller must call HandleItemAdditionL() for the listbox after + * adding all widget datas to update the listbox correctly! + * + * @param aWidget Data data to add + */ + void AddWidgetDataL( CWmWidgetData* aWidgetData ); + + /** + * removes widget data from given index in the model + * The method reorganises the list model and size. + * Drawing is still needed to update the appearance. + * + * @param aItemIndex index to remove + * */ + void RemoveWidgetData( TInt aItemIndex/*, TBool aRedraw = ETrue*/ ); + + /** + * requests to redraw item in given index position + * + * @param aItemIndex index to redraw + */ + void RedrawItem( TInt aItemIndex ); + + /** sort order of widgets in the list */ + enum TSortOrder + { + /** sort list as it was on last run */ + EStoredOrder, + /** sort alphabetically */ + EAlphabetical, + /** show latest installed first */ + ELatestFirst + }; + + /** + * sets the list sort order + * + * @param aOrder sort order + */ + void SetSortOrderL( TSortOrder aOrder ); + + /** + * Responds to layout switched. + */ + void HandleLayoutChanged(); + + /** + * Responds to skin changed. + */ + void HandleSkinChanged(); + + /** + * State of pointer down event + * + * @return ETrue if pointer is down + */ + inline TBool PressedDown(); + + /** + * Returns size of logo + * + * @return Size of logo rect + */ + TSize LogoSize(); + +private: // from CEikTextListBox + /** + * Creates the item drawer. + * + * @see CEikTextListBox::CreateItemDrawerL + */ + void CreateItemDrawerL(); + +protected: // from base class CCoeControl + + /** + * Sets the control's extent, specifying a rectangle. + * + * @see CCoeControl::SizeChanged + */ + void SizeChanged(); + +private: // from base class CCoeControl + + /* + * Draws the control. + * + * @see CCoeControl::Draw + */ + void Draw( const TRect& aRect ) const; + + /** + * Handles pointer events. + * + * @see CCoeControl::HandlePointerEventL + */ + void HandlePointerEventL( const TPointerEvent& aPointerEvent ); + +private: + /** Constructor for performing 1st stage construction */ + CWmListBox( CWmPlugin& aWmPlugin ); + + /** 2nd phase constructor */ + void ConstructL( + const TRect& aRect, + const CCoeControl* aParent, + TInt aFlags ); + + +protected: // from MWmWidgetDataObserver + + /** + * widget needs redrawing + * + * @param aWidgetData item to redraw + */ + void HandleWidgetDataChanged( CWmWidgetData* aWidgetData ); + +private: // own methods + + /** + * linear order for sorting, depending on the sort type being used + */ + TLinearOrder SortOrder( TSortOrder aOrder ); + +private: + + /** + * the plugin root (not owned) + */ + CWmPlugin& iWmPlugin; + + /** + * array of widget data objects (the list model) + */ + RWidgetDataValues iWidgetDatas; + + /** + * the currently active item ADD button's rectangle, for push recognition + */ + TRect iButtonRect; + + /** + * state of list box find pane + */ + TBool iFindPaneIsVisible; + + /** + * state of pointer pressed down and hold + */ + TBool iPressedDown; + + }; +#include "wmlistbox.inl" + +#endif ___WMLISTBOX_H__ + +// End of File diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/inc/wmlistbox.inl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/inc/wmlistbox.inl Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,53 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* Inline function definitions for CWmListBox +* +*/ + +#ifndef WMLISTBOX_INL_ +#define WMLISTBOX_INL_ + +/** + * Findbox visibility + * + * @param aVisibility sets find pane visibility + */ + inline void CWmListBox::SetFindPaneIsVisible( TBool aVisibility ) + { iFindPaneIsVisible = aVisibility; } + + /** + * number of items in the widget data array (also items on the list) + * + * @return count of widget data array + */ + inline TInt CWmListBox::WidgetDataCount() + { return iWidgetDatas.Count(); } + + /** + * gets the constant widget data array + */ + inline const RWidgetDataValues& CWmListBox::WidgetDataArray() + { return iWidgetDatas; } + +/** + * State of pointer down event + * + * @return ETrue if pointer is down + */ + inline TBool CWmListBox::PressedDown() + { return iPressedDown; } + + +#endif /* WMLISTBOX_INL_ */ diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/inc/wmmaincontainer.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/inc/wmmaincontainer.h Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,383 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* Declares main container control for Widget Manager application. +* +*/ + +#ifndef WMMAINCONTAINER_H +#define WMMAINCONTAINER_H + +#include +#include +#include +#include +#include +#include +#include +#include // MEikListBoxObserver + +// FORWARD DECLARATIONS +class CWmPlugin; +class CWmListBox; +class CAknsBasicBackgroundControlContext; +class CAknViewAppUi; +class CAknSearchField; +class CCoeControl; +class CAknSearchField; +class CWmPortalButton; +class CWmWidgetLoaderAo; +class CWmMainContainerView; + +/** + * Container class for WmMainContainer + * + * @class CWmMainContainer WmMainContainer.h + */ +NONSHARABLE_CLASS( CWmMainContainer ) : public CCoeControl, + public MEikListBoxObserver + { +public: // constructors and destructor + + /* + * Two-phased constructor. + * + * @param aRect container rect + * @param aWmPlugin wm plugin + */ + static CWmMainContainer* NewL( + const TRect& aRect, + CWmPlugin& aWmPlugin ); + + /* + * Two-phased constructor. + * + * @param aRect container rect + * @param aWmPlugin wm plugin + */ + static CWmMainContainer* NewLC( + const TRect& aRect, + CWmPlugin& aWmPlugin ); + + /** Destructor */ + virtual ~CWmMainContainer(); + +private: + /** constructor */ + CWmMainContainer( + CWmPlugin& aWmPlugin ); + + /** 2nd phase constructor */ + void ConstructL( + const TRect& aRect ); + +public: // new functions + + /** + * @return reference to WmPlugin + */ + CWmPlugin& WmPlugin(); + + /** + * @return true, if portal button is currently selected + */ + TBool PortalSelected(); + + /** + * @return true, if a widget in list is currently selected + */ + TBool WidgetSelected(); + + /** + * @return true, ADD command is possible + */ + TBool CanDoAdd(); + + /** + * @return true, if UNINSTALL command is possible + */ + TBool CanDoUninstall(); + + /** + * @return true, if LAUNCH command is possible + */ + TBool CanDoLaunch(); + + /** + * @return true, if FIND command is possible + */ + TBool CanDoFind(); + + /** + * @return true, if SORT command is possible + */ + TBool CanDoSort(); + + /** + * @return true, if DETAILS command is possible + */ + TBool CanDoDetails(); + + /** + * @return true, if HELP command is possible + */ + TBool CanDoHelp(); + + /** + * executes widget details dialog launch + */ + void LaunchDetailsDialogL(); + + /** + * executes widget addition to home screen + */ + void AddWidgetToHomeScreenL(); + + /** + * executes widget launch + */ + void LaunchWidgetL(); + + /** + * executes findbox activation + */ + void ActivateFindPaneL(); + + /** + * executes findbox deactivation + */ + void DeactivateFindPaneL(); + + /** + * sorts the widget list in alphabetical order + */ + void SortListAlphabeticallyL(); + + /** + * executes widget uninstall + */ + void UninstallWidgetL(); + + /** + * opens OVI portal + */ + void OpenOviPortalL(); + + /** + * Selection key (middle soft key) + */ + void SelectL(); + + /** + * Show widget manager help + */ + void ShowHelpL(); + + /** + * handles situation when widget list has changed. + * in practice reloads the widget list from the widgets API + * and redraws the screen. + */ + void HandleWidgetListChanged(); + +public: + + /** + * Handles key events. + * + * @see CCoeControl::OfferKeyEventL + */ + TKeyResponse OfferKeyEventL( + const TKeyEvent& aKeyEvent, + TEventCode aType ); + + /** + * Handles a change to the control's resources + * + * @see CCoeControl::HandleResourceChange + */ + void HandleResourceChange( TInt aType ); + + /** + * Handles pointer events. + * + * @see CCoeControl::HandlePointerEventL + */ + void HandlePointerEventL( const TPointerEvent& aPointerEvent ); + + /** + * Moves focus to the OVI button + */ + void SetFocusToOviButton(); + + /** + * Moves focus to the widgets list, alternatively also setting the currently + * selected item. + * @param aIndex the item in widgets list to highlight during setting focus. + * By default the previously selected item will be highlighted. + */ + void SetFocusToWidgetList( TInt aIndex = KErrUnknown ); + + /* + * Tells if user inputs should be handeled or not. If ret is EFalse wm + * can ignore user inputs. This is becouse closing view is async and user + * might give some inputs before view is closed. + */ + TBool ClosingDown(); + + /* + * To set iClosingDown. See above. + */ + void SetClosingDown( TBool aClosingDown ); + +protected: // from base class CCoeControl + + /** + * Sets the control's extent, specifying a rectangle. + * + * @see CCoeControl::SizeChanged + */ + void SizeChanged(); + +private: // from base class CCoeControl + + /* + * Draws the control. + * + * @see CCoeControl::Draw + */ + void Draw( const TRect& aRect ) const; + + /** + * Suppy Mop object for control context + * @param TTypeUid aId + */ + TTypeUid::Ptr MopSupplyObject(TTypeUid aId); + +private: // from MEikListBoxObserver + + /** + * List box observer interface. + * + * @see MEikListBoxObserver::HandleListBoxEventL + */ + void HandleListBoxEventL( + CEikListBox* aListBox, + TListBoxEvent aEventType); + +private: // New functions + + void AddControlL( CCoeControl* aControl, TInt aControlId ); + void InitializeControlsL( const TRect& aRect ); + void LayoutControls(); + void StartLoadingWidgetsL(); + void RemoveCtrlsFromStack(); + TKeyResponse MoveFocusByKeys( + const TKeyEvent& aKeyEvent, + TEventCode aType ); + void UpdateFocusMode(); + CCoeControl* FindChildControlByPoint( const TPoint& aPoint ); + void HandleFindSizeChanged(); + void FetchRepositoryDataL(); + +private: + + /** + * the plugin root + */ + CWmPlugin& iWmPlugin; + + /** + * the widgets list + */ + CWmListBox* iWidgetsList; + + /** + * search filed + */ + CAknSearchField* iFindbox; + + /** + * search filed visibility switch + */ + TBool iFindPaneIsVisible; + + /** + * background + */ + CAknsBasicBackgroundControlContext* iBgContext; + + /** + * Ovi portal + */ + CWmPortalButton* iOviPortal; + + /** GUI layout modes */ + enum TWmLayout + { + EPortrait, + ELandscape, + ELandscapeMirrored + }; + + /** + * current widget manager container layout + */ + TWmLayout iLayout; + + /** focus modes */ + enum TWmFocusMode + { + ENowhere, + EOvi, + EList, + EFind + }; + + /** + * current widget manager focus mode + */ + TWmFocusMode iFocusMode; + + /** + * AO for loading widgets into the list UI + */ + CWmWidgetLoaderAo* iWidgetLoader; + + /** + * If this is set to ETrue it means wmview is closing and all user inputs + * should be ignored. + */ + TBool iClosingDown; + + /** + * Localized Url to start browser + */ + HBufC* iOviStoreUrl; + + /** + * OviStore bundleId + */ + HBufC* iOviStoreClientBundleId; + + /** + * OviStore client param + */ + HBufC* iOviStoreClientParam; + + }; + +#endif // WMMAINCONTAINER_H + +// End of File diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/inc/wmmaincontainerview.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/inc/wmmaincontainerview.h Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,141 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* Declares main container view for Widget Manager application. +* +*/ + +#ifndef WMMAINCONTAINERVIEW_H +#define WMMAINCONTAINERVIEW_H + +#include + + +class CWmMainContainer; +class CWmPlugin; + +/** + * Avkon view class for WmMainContainerView. It is register with the view server + * by the AppUi. It owns the container control. + * @class CWmMainContainerView WmMainContainerView.h + */ +NONSHARABLE_CLASS( CWmMainContainerView ) : public CAknView + { + +public: // constructors and destructor + /** + * Two-phased constructor. + * + * @param aWmPlugin wm plugin + */ + static CWmMainContainerView* NewL( CWmPlugin& aWmPlugin ); + + /** + * Two-phased constructor. + * + * @param aWmPlugin wm plugin + */ + static CWmMainContainerView* NewLC( CWmPlugin& aWmPlugin ); + + /** Destructor */ + virtual ~CWmMainContainerView(); + + +public: // from base class CAknView + /** + * Returns views id, intended for overriding by sub classes. + * + * @see CAknView::Id + */ + TUid Id() const; + + /** + * Command handling function intended for overriding by sub classes. + * + * @see CAknView::HandleCommandL + */ + void HandleCommandL( TInt aCommand ); + +public: + /** + * Creates CWmMainContainer + */ + CWmMainContainer* CreateContainerL(); + +private: + CWmMainContainerView( CWmPlugin& aWmPlugin ); + void ConstructL(); + +protected: // from base class CAknView + /** + * Avkon view architecture system. + * + * @see CAknView::DoActivateL + */ + void DoActivateL( + const TVwsViewId& aPrevViewId, + TUid aCustomMessageId, + const TDesC8& aCustomMessage ); + + /** + * View deactivation function intended for overriding by sub classes. + * + * @see CAknView::DoActivateL + */ + void DoDeactivate(); + + /** + * Event handler for status pane size changes. + * + * @see CAknView::HandleStatusPaneSizeChange + */ + void HandleStatusPaneSizeChange(); + +protected: // From MEikMenuObserver + /* + * Menu observer interface. + * + * @see MEikMenuObserver::DynInitMenuPaneL + */ + void DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane); + +private: + + /** menu commands */ + TBool HandleOpenMenuItemSelectedL(); + TBool HandleAddMenuItemSelectedL(); + TBool HandleLaunchMenuItemSelectedL(); + TBool HandleSearchMenuItemSelectedL(); + TBool HandleSortAlphaMenuItemSelectedL(); + TBool HandleUninstallMenuItemSelectedL(); + TBool HandleHelpMenuItemSelectedL(); + TBool HandleDetailsMenuItemSelectedL(); + TBool HandleDeactivateFindPaneL(); + /** setup status pane */ + void SetupStatusPaneL(); + +private: + /** + * the container + */ + CWmMainContainer* iWmMainContainer; + + /** + * the plugin root (not owned) + */ + CWmPlugin& iWmPlugin; + + }; + +#endif // WMMAINCONTAINERVIEW_H diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/inc/wmpersistentwidgetorder.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/inc/wmpersistentwidgetorder.h Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,142 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* Defines an ordered list of widget id's with persistence capability +* +*/ + +#ifndef WMPERSISTENTWIDGETORDER_H +#define WMPERSISTENTWIDGETORDER_H + +// INCLUDES +#include +#include "wmwidgetdata.h" + +// FORWARD DECLARATIONS +class RFs; + +// CLASS DECLARATION +/** + * CWmPersistentWidgetOrder + * This class is an ordered list of widget identifiers. The list can be + * serialised and extract from stream and persisted. The list can be used + * in sorting a pointer array of CWmWidgetData. + */ +NONSHARABLE_CLASS( CWmPersistentWidgetOrder ) : public CBase + { + +public: // Constructors and destructor + /** + * static constructor. + */ + static CWmPersistentWidgetOrder* NewL( RFs& aFs ); + + /** Destructor. */ + ~CWmPersistentWidgetOrder(); + +private: // private construction + + /** + * constructor + */ + CWmPersistentWidgetOrder( RFs& aFs ); + + /** + * 2nd phase constructor + */ + void ConstructL(); + + +public: // API + + /** + * Loads the persistent widget list from storage. + * This is typically done once after construction. + * The instance can now be used to sort widget data. + */ + void LoadL(); + + /** + * Stores a sorted array of WmWidgetData types. Note that + * the order will be directly stored and a copy will not + * be kept locally, so this instance can not be used to + * sort widget data until LoadL() is called. + * + * @param aArray the array of widget daya types + */ + void StoreL( const RWidgetDataValues& aArray ); + + /** + * Retrieves an index of given widget data object within the list. + * This index can be used to sort and organise. Note that LoadL() + * must be used prior to calling this method, and before that + * there must be something persisted. + * + * @param aWidgetData data to seek index of in the sorted order + * @return the index found, or KErrNotFound if widget is new + */ + TInt IndexOf( const CWmWidgetData& aWidgetData ) const; + + /** + * checks if the persistent widget order is empty. In this case it does + * not make any sense to use the object to sort anything. + * Note that before loading the object is always empty. + */ + TBool IsEmpty() const; + +protected: + + /** + * Cleans up the array + */ + void CleanupArray(); + + /** + * build the storage file path and name. The storage file will be located + * in host process private directory. + * @param aPathBuf a buffer to receive the complete file path + */ + void GetStoreFileNameL( TDes& aPathBuf ); + + /** + * Unique tag of a widget + */ + class Tag + { + public: + /** constructs a tag from parameters */ + Tag( TInt32 aUid, HBufC16* aPublisherId ); + + /** compares a tag agains a widget data */ + TBool Matches( const CWmWidgetData& aWidgetData ) const; + + /** widget uid */ + TInt32 iUid; + + /** widget publisher id */ + HBufC16* iPublisherId; + }; + +private: // data members + + /** the file session */ + RFs& iFs; + + /** array of widget tags for sorting */ + RArray iTagArray; + + }; + + +#endif // WMPERSISTENTWIDGETORDER_H diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/inc/wmplugin.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/inc/wmplugin.h Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,195 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* widget manager plugin declaration +* +*/ + +#ifndef __WMPLUGIN_ +#define __WMPLUGIN_ + +// INCLUDES +#include +#include + +#include +#include +#include + +class CAknViewAppUi; +class CWmResourceLoader; +class CWmMainContainerView; +class CWmMainContainer; +class CWmEffectManager; + +/** + * CWmPlugin + */ +NONSHARABLE_CLASS( CWmPlugin ) : public CHsContentControlUi + { +public: + + /** + * Two-phased constructor. + */ + static CWmPlugin* NewL(); + + /** Destructor */ + ~CWmPlugin(); + +public: // From MHsContentControlUi + + /** + * shows the widget manager UI + * + * @see MHsContentControlUi::Activate + */ + void Activate(); + + /** + * Notifies widget list changes + * + * @see MHsContentControlUi::NotifyWidgetListChanged + */ + void NotifyWidgetListChanged(); + +public: // plugin services + + /** + * whether widget manager UI is showing + * + * @return return ETrue if wm UI is showed + */ + TBool IsActive(); + + /** + * hides widget manager UI + */ + void Deactivate(); + + /** + * main view activated. Sets the previous view ID and main container + * + * @param aPreviousViewId + * @param aWmMainContainer + */ + void MainViewActivated( + const TVwsViewId& aPreviousViewId, + CWmMainContainer* aWmMainContainer ); + + /** + * main view was deactivated + */ + void MainViewDeactivated(); + + /** Postponed command to execute when widgetmanager has deactivated */ + enum TCommand + { + /** no command */ + ENone, + /** add content to home screen */ + EAddToHomescreen + }; + + /** + * Sets a postponed command. The postponed command will be executed after + * widget manager has been deactivated. + * + * @param aCommand the command to be executed + * @param aContent content parameter related to the command + */ + void SetPostponedCommandL( + TCommand aCommand, CHsContentInfo& aContent ); + + /** + * the CAknViewAppUi reference + * + * @return returns CAknViewAppUi + */ + CAknViewAppUi& ViewAppUi(); + + /** + * the resource loader + * + * @return returns CWmResourceLoader + */ + CWmResourceLoader& ResourceLoader(); + + /** + * the content controller ref + * + * @return returns MHsContentController + */ + MHsContentController& ContentController(); + + /** + * the shared file server reference + */ + RFs& FileServer(); + +private: + /** constructor */ + CWmPlugin(); + /** 2nd phase constructor */ + void ConstructL(); + /** actions that are done when widget manager is closed */ + void ExecutePostponedCommandL(); + +private: // data members + + /** + * the host application view app UI (not owned) + */ + CAknViewAppUi* iViewAppUi; + + /** + * main container (not owned) + */ + CWmMainContainer* iWmMainContainer; + + /** + * resource loader + */ + CWmResourceLoader* iResourceLoader; + + /** + * previous view ID (shown when main view closed) + */ + TVwsViewId iPreviousViewUid; + + /** + * Takes care of fancy UI effects + */ + CWmEffectManager* iEffectManager; + + /** + * The file server session + */ + RFs* iFs; + + /** + * command to be executed when widgetmanager has + * been deactivated + */ + TCommand iPostponedCommand; + + /** + * content info as parameter to iPostponedCommand + */ + CHsContentInfo* iPostponedContent; + + }; + +#endif // __WMPLUGIN_ + diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/inc/wmportalbutton.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/inc/wmportalbutton.h Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,142 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* Declares portal button for WidgetManager +* +*/ + +#ifndef ___WMPORTALBUTTON_H__ +#define ___WMPORTALBUTTON_H__ + +#include // CAknButton +#include "wmimageconverter.h" +#include "wmcommon.h" + +// FORWARD DECLARATIONS +class CWmMainContainer; + +/** + * Portal button ( ovi, operator ) class for Wm + * + * @class CWmPortalButton wmportalbutton.h + */ +NONSHARABLE_CLASS( CWmPortalButton ) : public CAknButton, + public MConverterObserver + { +public: + /* + * Two-phased constructor. + * + * @param aParent button title text + * @param aText button title text + * @param aUrl Url to open in browser when clicked. + * @param aButtonCtrlId type of button + */ + static CWmPortalButton* NewL( + const CCoeControl* aParent, + const TDesC& aText = KNullDesC, + const TDesC& aUrl = KNullDesC, + TWmUiControlIds aButtonCtrlId = EOviPortal ); + + /** Destructor */ + virtual ~CWmPortalButton(); + +public: // Functions from base class + + /** + * Handles key events. + * + * @see CCoeControl::OfferKeyEventL + */ + TKeyResponse OfferKeyEventL( + const TKeyEvent& aKeyEvent, TEventCode aType ); + + /** + * Handles pointer events. + * + * @see CCoeControl::HandlePointerEventL + */ + void HandlePointerEventL( const TPointerEvent& aPointerEvent ); + + /* + * Draws the control. + * + * @see CCoeControl::Draw + */ + void Draw( const TRect& /*aRect*/ ) const; + + /** + * Sets the control's extent, specifying a rectangle. + * + * @see CCoeControl::SizeChanged + */ + void SizeChanged(); + +protected: // from MConverterObserver + + /** image conversin completed */ + void NotifyCompletion( TInt aError ); + +protected: // Constructors + + /** Constructor for performing 1st stage construction */ + CWmPortalButton( const TInt aFlags, + TWmUiControlIds aButtonCtrlId = EOviPortal ); + + /** 2nd phase constructor */ + void ConstructL( + const CCoeControl* aParent, + const TDesC& aText = KNullDesC, + const TDesC& aUrl = KNullDesC ); + +private: + + /** + * Draws text over button + */ + void DrawText( CWindowGc& aGc, + const TDesC& aText, + TAknTextComponentLayout& aLayout, + TInt aMargin ) const; + +private: //data members + /** + * Button text + */ + HBufC* iText; + + /** + * Url assigned to button + */ + HBufC* iUrl; + + /** + * the image converter utility + */ + CWmImageConverter* iImageConverter; + + /** + * Parent control + */ + CWmMainContainer* iWmMainContainer; + + /** + * Button ctrl id + */ + TWmUiControlIds iButtonCtrlId; + }; + +#endif //___WMPORTALBUTTON_H__ + +// End of File diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/inc/wmresourceloader.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/inc/wmresourceloader.h Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,133 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* loads widget manager resources and icons +* +*/ + + +#ifndef WMRESOURCELOADER_H_ +#define WMRESOURCELOADER_H_ + +// INCLUDE FILES +#include + +// FORWARD DECLARATIONS +class CAknStylusPopUpMenu; +class CEikonEnv; +class CAknButton; +class CAknInformationNote; + +/** + * CWmResourceLoader + */ +NONSHARABLE_CLASS( CWmResourceLoader ) : public CBase + { + +public: // construction/destruction + /** + * static constructor + * + * @param aCoeEnv Control environment. + */ + static CWmResourceLoader* NewL( + CEikonEnv& aEnv ); + + /** destructor */ + ~CWmResourceLoader(); + +public: // services + + /** + * Loads a button from the widgetmanager resource file + * using CAknButton::ConstructFromResourceL + * + * @param aResource handle to the empty button instance + * @param aResourceId ID of the resource to use in loading + */ + void LoadButtonL( + CAknButton& aResource, + TInt aResourceId ); + + /** + * shows a simple info popup with OK button + * @param aResourceId the resource id of string to be shown + * @param aString additional string to be replaced into %U + */ + void InfoPopupL( TInt aResourceId, const TDesC& aString ); + + /** + * shows a standard error popup + * @param aErrorCode a system-wide standard error code + */ + void ErrorPopup( TInt aErrorCode ); + + /** icon file path */ + const TDesC& IconFilePath(); + + /** default no description text */ + const TDesC& NoDescriptionText(); + +private: // internal methods + + /** constructor */ + CWmResourceLoader( + CEikonEnv& aEnv ); + + /** 2nd phase constructor */ + void ConstructL(); + + /** load the resource */ + void LoadResourcesL(); + + /** free resources */ + void UnloadResources(); + + /** find icon file path */ + void DetermineIconFilePath(); + +private: // members + + /** + * the environment + */ + CEikonEnv& iEnv; + + /** + * name of this DLL + */ + TFileName iDllName; + + /** + * resource file offset + */ + TInt iResourceFileOffset; + + /** + * ICON file + */ + TFileName iMifFile; + + /** + * info note dialog + */ + CAknInformationNote *iNote; + + /** + * Default description text + */ + HBufC* iDescription; + }; + +#endif // WMRESOURCELOADER_H_ diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/inc/wmwidgetdata.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/inc/wmwidgetdata.h Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,271 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* CWmWidgetData declaration +* +*/ + + +#ifndef WMWIDGETDATA_H +#define WMWIDGETDATA_H + +// INCLUDES +#include +#include +#include +#include +#include + +#include "wmimageconverter.h" + +// FORWARD DECLARATIONS +class CDictionaryFileStore; +class MWmWidgetDataObserver; +class CFbsBitmap; +class CHsContentInfo; +class CWmPersistentWidgetOrder; +class RWidgetRegistryClientSession; + +// CLASS DECLARATION +/** + * CWmWidgetData is a representation of a widget in CWmListBox. it + * stores all data required for drawing the item in a list box, and + * handling the list item. + */ +NONSHARABLE_CLASS( CWmWidgetData ) + : public CBase + , public MConverterObserver + { + +public: // types + + /** widget type */ + enum TWidgetType + { + EUnknown, + ENative, + ECps // wrt widgets included in this category + }; + +public: // construction + /** + * static constructor + * @param aHsContentInfo (takes ownership) + * @param aRegistryClientSession (does not take ownership) + */ + static CWmWidgetData* NewL( + CHsContentInfo* aHsContentInfo, + RWidgetRegistryClientSession* aRegistryClientSession ); + + /** + * static constructor, leaves object in cleanup stack + * @param aHsContentInfo (takes ownership) + * @param aRegistryClientSession (does not take ownership) + */ + static CWmWidgetData* NewLC( + CHsContentInfo* aHsContentInfo, + RWidgetRegistryClientSession* aRegistryClientSession ); + + /** Destructor. */ + ~CWmWidgetData(); + +private: // private construction + /** Constructor for performing 1st stage construction */ + CWmWidgetData(); + + /** 2nd phase constructor */ + void ConstructL( + CHsContentInfo* aHsContentInfo, + RWidgetRegistryClientSession* aRegistryClientSession ); + + /** + * Initialisation routine + * called from ConstructL and whenever the content type changes + */ + void InitL( + CHsContentInfo* aHsContentInfo, + RWidgetRegistryClientSession* aRegistryClientSession ); + +public: // external handles + + /** + * sets an observer for callbacks + * + * @param aObserver notifications when changes occur in widget data + */ + void SetObserver( MWmWidgetDataObserver* aObserver ); + + /** + * persistent widget order handle, which is used in comparing + */ + void SetPersistentWidgetOrder( + const CWmPersistentWidgetOrder* aPersistentWidgetOrder ); + + /** + * set logo rect size + */ + void SetLogoSize( const TSize& aSize ); + + /** + * Init logo re-creation + */ + void ReCreateLogo( const TSize& aSize ); + + /** + * Replaces the content of this widget data. The method is called + * during widget update. If widget values change, a change event is + * fired for the observer. + * + * @param aHsContentInfo new content (takes ownership) + * @return ETrue if content was changed + */ + TBool ReplaceContentInfoL( + CHsContentInfo* aHsContentInfo ); + +public: // comparing / sorting + /** whether this object represents the same widget as aContentInfo */ + TBool EqualsTo( CHsContentInfo& aContentInfo ); + + /** comparator function for sort by name (compare two names)*/ + static TInt CompareByName( + const CWmWidgetData& aDataOne, + const CWmWidgetData& aDataTwo ); + + /** + * comparator function for sorting by stored order + **/ + static TInt CompareByPersistentWidgetOrder( + const CWmWidgetData& aDataOne, + const CWmWidgetData& aDataTwo ); + +public: // methods to read the content + + /** the HsContent info */ + inline CHsContentInfo& HsContentInfo(); + + /** the HsContent info */ + inline const CHsContentInfo& HsContentInfo() const; + + /** widget name */ + inline const TDesC& Name() const; + + /** widget description */ + inline const TDesC& Description() const; + + /** widget uid */ + inline TUid Uid() const; + + /** cps widget publisher id */ + inline const TDesC& PublisherId() const; + + /** cps widget publisher uid */ + TUid PublisherUid(); + + /** widget type */ + inline TWidgetType WidgetType() const; + + /** running install animation index */ + inline TInt InstallAnimationIndex() const; + + /** the logo bitmap */ + inline const CFbsBitmap* LogoImage(); + + /** the logo bitmap */ + inline const CFbsBitmap* LogoImageMask(); + + /** whether the widget data is valid or not */ + inline TBool IsValid(); + + /** sets the widget data validity */ + inline void SetValid( TBool aValid ); + +protected: // from MConverterObserver + + /** image conversin completed */ + void NotifyCompletion( TInt aError ); + +private: // new functions + + /** fetches publisher uid from widget registry*/ + void FetchPublisherUidL( + RWidgetRegistryClientSession* aRegistryClientSession ); + + /** Converts uid to TUid from TDesC8 */ + TUid UidFromString( const TDesC8& aUidString ) const; + + /** Logo icon string handling */ + static TInt HandleAsyncIconString( TAny* aPtr ); + void HandleIconStringL( const TDesC& aIconStr ); + void FireDataChanged(); + +private: // data members + + /* instance of the CIdle class for async iconStr handling*/ + CIdle* iIdle; + + /* the image converter utility */ + CWmImageConverter* iImageConverter; + + /* observes this widget representation (NOT OWNED) */ + MWmWidgetDataObserver* iObserver; + + /* rotating animation index */ + TInt iInstallAnimationIndex; + + /** the widget logo bitmap */ + CFbsBitmap* iLogoImage; + + /** the widget logo mask */ + CFbsBitmap* iLogoImageMask; + + /** The CHsContentInfo that corresponds to this list row */ + CHsContentInfo* iHsContentInfo; + + /** type oif the widget */ + TWidgetType iWidgetType; + + /** persistent order of widgets (used in sorting) */ + const CWmPersistentWidgetOrder* iPersistentWidgetOrder; + + /** wrt widget publisher uid */ + TUid iPublisherUid; + + /** size of logo rect in list item */ + TSize iLogoSize; + + /** validity of the widget - used during list refresh */ + TBool iValid; + + }; + + +/** + * Pointer array of widget data objects. + * Also acts as an adapter to a descriptor array, providing the + * widget names as descriptor array elements. + */ +NONSHARABLE_CLASS( RWidgetDataValues ) : public RPointerArray, + public MDesCArray + { + protected: // from MDesCArray + /** returns number of items in the pointer array */ + inline TInt MdcaCount() const; + + /** returns the pointed widget name */ + inline TPtrC16 MdcaPoint(TInt aIndex) const; + + }; + +#include "wmwidgetdata.inl" +#endif // WMWIDGETDATA_H diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/inc/wmwidgetdata.inl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/inc/wmwidgetdata.inl Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,85 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* CWmWidgetData , RWidgetDataValues inline function definitions +* +*/ + +#ifndef WMWIDGETDATA_INL_ +#define WMWIDGETDATA_INL_ + + /** the HsContent info */ + inline CHsContentInfo& CWmWidgetData::HsContentInfo() + { return *iHsContentInfo; } + + /** the HsContent info */ + inline const CHsContentInfo& CWmWidgetData::HsContentInfo() const + { return *iHsContentInfo; } + + /** widget name */ + inline const TDesC& CWmWidgetData::Name() const + { return iHsContentInfo->Name(); } + + /** widget description */ + inline const TDesC& CWmWidgetData::Description() const + { return iHsContentInfo->Description(); } + + /** widget uid */ + inline TUid CWmWidgetData::Uid() const + { return UidFromString( iHsContentInfo->Uid() ); }; + + /** cps widget publisher id */ + inline const TDesC& CWmWidgetData::PublisherId() const + { return iHsContentInfo->PublisherId(); } + + /** widget type */ + inline CWmWidgetData::TWidgetType CWmWidgetData::WidgetType() const + { return iWidgetType; } + + /** running install animation index */ + inline TInt CWmWidgetData::InstallAnimationIndex() const + { return iInstallAnimationIndex; } + + /** the logo bitmap */ + inline const CFbsBitmap* CWmWidgetData::LogoImage() + { return iLogoImage; } + + /** the logo bitmap */ + inline const CFbsBitmap* CWmWidgetData::LogoImageMask() + { return iLogoImageMask; } + + /** whether the widget data is valid or not */ + inline TBool CWmWidgetData::IsValid() + { return iValid; } + + /** sets the widget data validity */ + inline void CWmWidgetData::SetValid( TBool aValid ) + { iValid = aValid; } + + + //From RWidgetDataValues + + /** returns number of items in the pointer array */ + inline TInt RWidgetDataValues::MdcaCount() const + { + return Count(); + } + /** returns the pointed widget name */ + inline TPtrC16 RWidgetDataValues::MdcaPoint(TInt aIndex) const + { + const TPtrC16 ptr( (*this)[aIndex]->Name() ); + return ptr; + } + +#endif /* WMWIDGETDATA_INL_ */ diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/inc/wmwidgetdataobserver.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/inc/wmwidgetdataobserver.h Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,48 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* Observer for changes in the widget data +* +*/ + + +#ifndef WMWIDGETDATAOBSERVER_H +#define WMWIDGETDATAOBSERVER_H + +// INCLUDES +#include + +// Forward declarations +class CWmWidgetData; + +// CLASS DECLARATION + +/** + * Observer class for receiving notifications + * when changes occur in widget data + */ +NONSHARABLE_CLASS( MWmWidgetDataObserver ) + { + public: + /** + * A single widget data has changed. + * @param aWidgetData pointer to the data where change + * has occurred + */ + virtual void HandleWidgetDataChanged( + CWmWidgetData* aWidgetData ) = 0; + + }; + +#endif // WMWIDGETDATAOBSERVER_H diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/inc/wmwidgetloaderao.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/inc/wmwidgetloaderao.h Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,126 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* Active object to load widgets into list +* +*/ + +#ifndef WMWIDGETLOADERAO_H_ +#define WMWIDGETLOADERAO_H_ + +// INCLUDES +#include + +// FORWARD DECLARATIONS +class CWmPlugin; +class CWmListBox; +class CHsContentInfo; +class CWmWidgetData; +class CWmPersistentWidgetOrder; +class RWidgetRegistryClientSession; + +// CLASS DECLARATIONS + +/** + * Active object to load widgets into list + */ +NONSHARABLE_CLASS( CWmWidgetLoaderAo ) : public CAsyncOneShot + { + +public: + /** + * Static constructor + */ + static CWmWidgetLoaderAo* NewL( + CWmPlugin& aWmPlugin, + CWmListBox& aTargetList ); + + /** + * Destructor. + */ + ~CWmWidgetLoaderAo(); + + /** + * Starts the load process by activating the AO + */ + void StartLoading(); + +private: + + /** + * Constructor + */ + CWmWidgetLoaderAo( + CWmPlugin& aWmPlugin, + CWmListBox& aTargetList ); + + /** + * 2nd phase constructor + */ + void ConstructL(); + +protected: // from CActive + + /** + * AO body + */ + void RunL(); + + /** + * AO error handler + */ + TInt RunError( TInt aError ); + +private: + + /** + * loads widgets into the listbox + */ + void DoLoadWidgetsL(); + + /** + * finds a widget data entry from iWidgetsList that matches + * given content info. returns a pointer to the data found, + * or NULL if not found + */ + CWmWidgetData* FindWidgetData( CHsContentInfo& aContentInfo ); + + /** + * adds a widget data entry to iWidgetsList + * takes ownership of aContentInfo + */ + void AddWidgetDataL( CHsContentInfo* aContentInfo ); + + /** + * cleanup resources allocated runing one single run + */ + void Cleanup(); + +private: // data + + /** reference to the widget manager root */ + CWmPlugin& iWmPlugin; + + /** target where widgets are to be loaded */ + CWmListBox& iWidgetsList; + + /** widget registry */ + RWidgetRegistryClientSession* iWidgetRegistry; + + /** persistent widget order */ + CWmPersistentWidgetOrder* iWidgetOrder; + + }; + +#endif // WMWIDGETLOADERAO_H_ diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/rom/widgetmanager.iby --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/rom/widgetmanager.iby Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,34 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* widgetmanager binaries +*/ + +#ifndef WIDGETMANAGER_IBY +#define WIDGETMANAGER_IBY + +// widgetmanager plugin +ECOM_PLUGIN( widgetmanager.dll, widgetmanager.rsc ) + +// widgetmanager icons +data=DATAZ_\resource\apps\widgetmanager.mif \resource\apps\widgetmanager.mif + +// widgetmanager stub sis +data=ZSYSTEM\install\widgetmanager_stub.sis system\install\widgetmanager_stub.sis + +// cenrep +data=DATAZ_\private\10202be9\20026F53.txt private\10202be9\20026F53.txt + +#endif // WIDGETMANAGER_IBY + diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/rom/widgetmanager_resources.iby --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/rom/widgetmanager_resources.iby Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,25 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* widgetmanager resource binaries +*/ + +#ifndef WIDGETMANAGER_RESOURCES_IBY +#define WIDGETMANAGER_RESOURCES_IBY + +// widgetmanager resources +data=DATAZ_\resource\widgetmanagerview.rsc \resource\widgetmanagerview.rsc + +#endif // WIDGETMANAGER_RESOURCES_IBY + diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/sis/Create_update_sisx.bat --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/sis/Create_update_sisx.bat Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,28 @@ +rem +rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +rem All rights reserved. +rem This component and the accompanying materials are made available +rem under the terms of "Eclipse Public License v1.0" +rem which accompanies this distribution, and is available +rem at the URL "http://www.eclipse.org/legal/epl-v10.html". +rem +rem Initial Contributors: +rem Nokia Corporation - initial contribution. +rem +rem Contributors: +rem +rem Description: +rem + +rem Change dll versions for IAD update +call elftran.exe -version 1.1 \epoc32\release\armv5\urel\widgetmanager.dll +call elftran.exe -version 1.1 \epoc32\release\armv5\udeb\widgetmanager.dll + +rem Create wm sis&sisx files +makesis widgetmanager_udeb.pkg +signsis widgetmanager_udeb.SIS widgetmanager_udeb.SISX Nokia_RnDCert_02.der Nokia_RnDCert_02.key +makesis widgetmanager_urel.pkg +signsis widgetmanager_urel.SIS widgetmanager_urel.SISX Nokia_RnDCert_02.der Nokia_RnDCert_02.key + +rem Create wm stubsis file +makesis -s widgetmanager_stub.pkg \ No newline at end of file diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/sis/Nokia_RnDCert_02.der Binary file idlehomescreen/widgetmanager/sis/Nokia_RnDCert_02.der has changed diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/sis/Nokia_RnDCert_02.key --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/sis/Nokia_RnDCert_02.key Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICXQIBAAKBgQC/TDP7KKIaf5+uW4OD2iVZuUMC2a+SeQTjf6srlKcOm+CpPNXn +uLNm/8fdEnyOIuRXPRKmqhs1n0JkxEGHynELWMTuKXbQx9SRAGUXzyneGn+IJNnO +vOKHWgKCouX2hfI8rtkdqJpqmO460gGsMgw+lsbeyWyW9lnfLxq+ZC7sqQIDAQAB +AoGBALmUWZE8GBaQ3P4u9WUCSd3DJkkrmXIFSULSZeH/chlwCwDjbbhArHothVzo +REE3hEFFlERvHbplZ+mNouzy7boduvgUzbksGrbGMLJ2qO1GzWWVwV+GzOWKd3ss +/98Gwoy5R8pjnkqUE2wP1iJFw0FjvUTKcYv/z6t3LLJ0CsoBAkEA+c7ixvsviQ3J +s0INytCKU2bf8fqFQJi1VI82ukxNsujGTQ9upVSjuvqPvWyDvvTdrUBHqO+3qPut +sEh01Q8aiQJBAMQKDJPVRu4ud3mwUfEavzL5EjqwG1k9VCNGYsT4FwtrHcxu1oP/ +pk6M3rIZukqomoEEnHWPMwhrK3fhBqi0OSECQQDr40VXege4FnH5OI2Hj4afHMyp +VdQQXGMWFyopnzXblFz0lXb43cTCIiorR9XcMqNFHybLypkWE5o+lRzlt55pAkBQ +P/zeF5Sts//cpL0mgdh7OVKpC6ZmZaCnwAx2rUhhuDu+kDDoYCLoTOps5fNI1LRK +1GRoC3LMo3Jr5IYhUYWBAkBpCpN6k4JU/mszq98EojHerQNxk8sPqvQKUzTutohT +1gLX9yepGayB/TtT2EEJDkWOlnTy/dvN6W3vzbJYz97x +-----END RSA PRIVATE KEY----- diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/sis/backup_registration.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/sis/backup_registration.xml Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,5 @@ + + + + + diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/sis/widgetmanager_stub.pkg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/sis/widgetmanager_stub.pkg Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,28 @@ +; +; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +; All rights reserved. +; This component and the accompanying materials are made available +; under the terms of "Eclipse Public License v1.0" +; which accompanies this distribution, and is available +; at the URL "http://www.eclipse.org/legal/epl-v10.html". +; +; Initial Contributors: +; Nokia Corporation - initial contribution. +; +; Contributors: +; +; Description: widgetmanager_stub.pkg +; + +;Language - standard language definitions +&EN + +; standard SIS file header +#{"Widget Manager"},(0x20026F53),1,0,0,TYPE=SA + +;Localized Vendor name +%{"Nokia"} + +;Unique Vendor name +:"Nokia" + diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/sis/widgetmanager_stub.sis Binary file idlehomescreen/widgetmanager/sis/widgetmanager_stub.sis has changed diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/sis/widgetmanager_udeb.pkg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/sis/widgetmanager_udeb.pkg Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,48 @@ +; +; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +; All rights reserved. +; This component and the accompanying materials are made available +; under the terms of "Eclipse Public License v1.0" +; which accompanies this distribution, and is available +; at the URL "http://www.eclipse.org/legal/epl-v10.html". +; +; Initial Contributors: +; Nokia Corporation - initial contribution. +; +; Contributors: +; +; Description: widgetmanager.pkg +; + +;Language - standard language definitions +&EN + +; standard SIS file header +#{"Widget Manager"},(0x20026F53),1,1,0,TYPE=SA,RU + +;Localised Vendor name +%{"Nokia"} + +;Unique Vendor name +:"Nokia" + +;Supports Series 60 v 5.0 +[0x1028315F], 0, 0, 0, {"S60ProductID"} + +;We need to force update to be installed to c-drive +;becouse we are part of the homescreen. If update was installed to memcard +;homescreen will be closed when memcard is removed. + +; widgetmanager plugin and plugin resource +"\epoc32\release\armv5\udeb\widgetmanager.dll" -"C:\sys\bin\widgetmanager.dll" +"\epoc32\data\z\resource\plugins\widgetmanager.rsc" -"C:\resource\plugins\widgetmanager.rsc" + +; widgetmanager resource file +"\epoc32\data\z\resource\widgetmanagerview.rsc" -"C:\resource\widgetmanagerview.rsc" + +; widgetmanager icons +"\epoc32\data\z\resource\apps\widgetmanager.mif" -"C:\resource\apps\widgetmanager.mif" + +; cenrep +"\epoc32\data\z\private\10202be9\20026F53.txt" -"C:\private\10202be9\20026F53.txt" + diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/sis/widgetmanager_urel.pkg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/sis/widgetmanager_urel.pkg Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,47 @@ +; +; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +; All rights reserved. +; This component and the accompanying materials are made available +; under the terms of "Eclipse Public License v1.0" +; which accompanies this distribution, and is available +; at the URL "http://www.eclipse.org/legal/epl-v10.html". +; +; Initial Contributors: +; Nokia Corporation - initial contribution. +; +; Contributors: +; +; Description: widgetmanager.pkg +; + +;Language - standard language definitions +&EN + +; standard SIS file header +#{"Widget Manager"},(0x20026F53),1,1,0,TYPE=SA,RU + +;Localised Vendor name +%{"Nokia"} + +;Unique Vendor name +:"Nokia" + +;Supports Series 60 v 5.0 +[0x1028315F], 0, 0, 0, {"S60ProductID"} + +;We need to force update to be installed to c-drive +;becouse we are part of the homescreen. If update was installed to memcard +;homescreen will be closed when memcard is removed. + +; widgetmanager plugin and plugin resource +"\epoc32\release\armv5\urel\widgetmanager.dll" -"C:\sys\bin\widgetmanager.dll" +"\epoc32\data\z\resource\plugins\widgetmanager.rsc" -"C:\resource\plugins\widgetmanager.rsc" + +; widgetmanager resource file +"\epoc32\data\z\resource\widgetmanagerview.rsc" -"C:\resource\widgetmanagerview.rsc" + +; widgetmanager icons +"\epoc32\data\z\resource\apps\widgetmanager.mif" -"C:\resource\apps\widgetmanager.mif" + +; cenrep +"\epoc32\data\z\private\10202be9\20026F53.txt" -"C:\private\10202be9\20026F53.txt" \ No newline at end of file diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/src/wmdetailsdlg.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/src/wmdetailsdlg.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,525 @@ +/* +* 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: +* Implementation of the widget details dlg for WidgetManager +* +*/ + +// INCLUDE FILES +#include +#include // for CRichTextEditor +#include // for CRichText +#include // for AknUtils +#include // MAknsSkinInstance +#include // AknsDrawUtils +#include //layout +#include +#include +#include +#include + +#include +#include "widgetmanager.hrh" +#include "wmdetailsdlg.h" + + +// CONSTANTS + + +// MEMBER FUNCTIONS + +// --------------------------------------------------------- +// FullScreenRect +// rectangle representing the screen +// --------------------------------------------------------- +// +TRect FullScreenRect() + { + TRect screen; + CCoeEnv* env = CCoeEnv::Static(); + if ( env ) + { + CWsScreenDevice* screenDevice = env->ScreenDevice(); + if ( screenDevice ) + screen.SetRect( TPoint(0,0), screenDevice->SizeInPixels() ); + } + return screen; + } + +// --------------------------------------------------------- +// CWmDetailsDlg::NewL +// --------------------------------------------------------- +// +CWmDetailsDlg* CWmDetailsDlg::NewL( + const TDesC& aName, + const TDesC& aDescription, + TBool aCanBeAdded, + const CFbsBitmap* aLogoBmp, + const CFbsBitmap* aLogoMask, + CAknsBasicBackgroundControlContext* aBgContext ) + { + CWmDetailsDlg* self = new ( ELeave ) CWmDetailsDlg( aCanBeAdded ); + CleanupStack::PushL( self ); + self->ConstructL( aName, aDescription, aLogoBmp, aLogoMask, aBgContext ); + CleanupStack::Pop( self ); + return self; + } + +// --------------------------------------------------------- +// CWmDetailsDlg::CWmDetailsDlg +// --------------------------------------------------------- +// +CWmDetailsDlg::CWmDetailsDlg( TBool aCanBeAdded ) + : CAknDialog(), + iCanBeAdded( aCanBeAdded ) + { + iBorder = TGulBorder::ERaisedControl; + } + +// --------------------------------------------------------- +// CWmDetailsDlg::~CWmDetailsDlg +// --------------------------------------------------------- +// +CWmDetailsDlg::~CWmDetailsDlg() + { + iEikonEnv->RemoveFromStack( iRtEditor ); + iEikonEnv->RemoveFromStack( this ); + delete iRtEditor; + delete iName; + delete iDescription; + delete iLogoBmp; + delete iLogoMask; + } + +// ----------------------------------------------------------------------------- +// CWmDetailsDlg::ExecuteLD +// ----------------------------------------------------------------------------- +// +TInt CWmDetailsDlg::ExecuteLD() + { + if ( iCanBeAdded ) + { + return CAknDialog::ExecuteLD( R_WM_DETAILS_ADD_DIALOG ); + } + else + { + return CAknDialog::ExecuteLD( R_WM_DETAILS_ONLY_DIALOG ); + } + } + +// --------------------------------------------------------- +// CWmDetailsDlg::ConstructL +// --------------------------------------------------------- +// +void CWmDetailsDlg::ConstructL( + const TDesC& aName, + const TDesC& aDescription, + const CFbsBitmap* aLogoBmp, + const CFbsBitmap* aLogoMask, + CAknsBasicBackgroundControlContext* aBgContext ) + { + if ( !aLogoBmp ) + { + User::Leave( KErrArgument ); + } + + CAknDialog::ConstructL( R_AVKON_DIALOG_EMPTY_MENUBAR ); + + iBgContext = aBgContext; + iName = aName.AllocL(); + iDescription = aDescription.AllocL(); + + // create bitmap and duplicate handle + iLogoBmp = new ( ELeave ) CFbsBitmap; + TSize newSize = TSize( aLogoBmp->SizeInPixels().iWidth , + aLogoBmp->SizeInPixels().iHeight ); + User::LeaveIfError( iLogoBmp->Create( newSize, aLogoBmp->DisplayMode() ) ); + User::LeaveIfError( iLogoBmp->Duplicate( aLogoBmp->Handle() ) ); + + if ( aLogoMask ) + { + iLogoMask = new ( ELeave ) CFbsBitmap; + newSize = TSize( aLogoMask->SizeInPixels().iWidth , + aLogoMask->SizeInPixels().iHeight ); + User::LeaveIfError( iLogoMask->Create( newSize, aLogoMask->DisplayMode() ) ); + User::LeaveIfError( iLogoMask->Duplicate( aLogoMask->Handle() ) ); + } + + iEikonEnv->AddWindowShadow( static_cast(this) ); + } + +// ----------------------------------------------------------------------------- +// CWmDetailsDlg::OkToExitL +// ----------------------------------------------------------------------------- +// +TBool CWmDetailsDlg::OkToExitL( TInt aButtonId ) + { + if ( aButtonId == ECbaAddToHs || + aButtonId == EAknSoftkeyClose ) + { + // Close dlg + return ETrue; + } + return EFalse; + } + +// ----------------------------------------------------------------------------- +// CWmDetailsDlg::PreLayoutDynInitL +// ----------------------------------------------------------------------------- +// +void CWmDetailsDlg::PreLayoutDynInitL() + { + iRtEditor = new(ELeave) CEikRichTextEditor(); + iRtEditor->ConstructL( this, + 0, + 0, + CEikEdwin::EReadOnly | + CEikEdwin::ENoAutoSelection | + CEikEdwin::EAvkonDisableCursor | + CEikEdwin::EDisplayOnly ); + iRtEditor->SetContainerWindowL(*this); + iRtEditor->SetAknEditorFlags( + EAknEditorFlagEnableScrollBars | + EEikEdwinAvkonDisableCursor | + EEikEdwinDisplayOnly | + EEikEdwinReadOnly ); + + iRtEditor->SetSkinBackgroundControlContextL( iBgContext ); + + CEikScrollBarFrame* scrollBarFrame = iRtEditor->CreateScrollBarFrameL(); + scrollBarFrame->SetScrollBarVisibilityL( CEikScrollBarFrame::EOff, + CEikScrollBarFrame::EOff ); + + InsertAndFormatContentL(); + iRtEditor->UpdateScrollBarsL(); + } + +//------------------------------------------------------------------------------ +// CWmDetailsDlg::InsertAndFormatContentL +//------------------------------------------------------------------------------ +// +void CWmDetailsDlg::InsertAndFormatContentL() + { + CRichText* richText = iRtEditor->RichText(); + const TInt KMinTxtLength = 100; + + richText->Reset(); + if ( iDescription->Des().Length() <= KMinTxtLength ) + { + richText->InsertL( richText->DocumentLength(), + CEditableText::ELineBreak ); + } + richText->InsertL( richText->DocumentLength(), *iDescription ); + + // change the color of the text according to the skin color + TRgb color = KRgbBlack; + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + AknsUtils::GetCachedColor(skin, color, KAknsIIDQsnTextColors, + EAknsCIQsnTextColorsCG6 ); + + // Format text + iRtEditor->SetSelectionL( 0, richText->DocumentLength() ); + + // Get a logical font to base my font on: + const CFont* logicalFont = AknLayoutUtils::FontFromId(EAknLogicalFontPrimarySmallFont); + // Extract font information + TFontSpec fontspec = logicalFont->FontSpecInTwips(); + TCharFormat charFormat(fontspec.iTypeface.iName, fontspec.iHeight); + TCharFormatMask charFormatMask; + CParaFormat paraFormat; + TParaFormatMask paraFormatMask; + paraFormat.iHorizontalAlignment = CParaFormat::EJustifiedAlign; + charFormat.iFontPresentation.iTextColor = color; + paraFormatMask.SetAttrib(EAttAlignment); + charFormatMask.SetAttrib(EAttFontTypeface); + charFormatMask.SetAttrib(EAttFontHeight); + charFormatMask.SetAttrib(EAttColor); + iRtEditor->ApplyParaFormatL(¶Format, paraFormatMask); + iRtEditor->ApplyCharFormatL(charFormat, charFormatMask); + iRtEditor->ClearSelectionL(); + } + +//------------------------------------------------------------------------------ +// CWmDetailsDlg::CountComponentControls +//------------------------------------------------------------------------------ +// +TInt CWmDetailsDlg::CountComponentControls() const + { + return iRtEditor ? 1 : 0; + } + +//------------------------------------------------------------------------------ +// CWmDetailsDlg::ComponentControl +//------------------------------------------------------------------------------ +// +CCoeControl* CWmDetailsDlg::ComponentControl(TInt aIndex) const + { + switch (aIndex) + { + case 0: + return iRtEditor; + default: + return NULL; + } + } + +//------------------------------------------------------------------------------ +// CWmDetailsDlg::ActivateL +//------------------------------------------------------------------------------ +// +void CWmDetailsDlg::ActivateL() + { + CAknDialog::ActivateL(); + iEikonEnv->EikAppUi()->AddToStackL( this, ECoeStackPriorityDialog ); + iEikonEnv->EikAppUi()->AddToStackL( iRtEditor ); + iRtEditor->SetFocus( ETrue ); + } + +// ----------------------------------------------------------------------------- +// CWmDetailsDlg::WmDetailsDialogRect +// ----------------------------------------------------------------------------- +// +TRect CWmDetailsDlg::WmDetailsDialogRect() + { + TRect mainPane, dlgRect; + TPoint topLeft; + TInt desiredW, desiredH; + AknLayoutUtils::LayoutMetricsRect( + AknLayoutUtils::EApplicationWindow, mainPane ); + + if ( Layout_Meta_Data::IsLandscapeOrientation() ) + { + desiredW = ( mainPane.Width() - (mainPane.Width()/4) ); + desiredH = ( mainPane.Height() - (mainPane.Height()/5) ); + topLeft.iX = ( ( mainPane.Width() - desiredW ) /2); + topLeft.iY = ( ( mainPane.Height() - desiredH ) /2); + dlgRect.SetRect( topLeft, TSize( desiredW, desiredH ) ); + } + else + { + desiredH = ( mainPane.Height() - (mainPane.Height()/4) ); + desiredW = ( mainPane.Width() - (mainPane.Width()/5) ); + topLeft.iX = ( ( mainPane.Width() - desiredW ) /2); + topLeft.iY = ( ( mainPane.Height() - desiredH ) /2); + dlgRect.SetRect( topLeft, TSize( desiredW, desiredH ) ); + } + return dlgRect; + } + +// ----------------------------------------------------------------------------- +// CWmDetailsDlg::SetSizeAndPosition +// ----------------------------------------------------------------------------- +// +void CWmDetailsDlg::SetSizeAndPosition( const TSize& /*aSize*/ ) + { + SetRect( WmDetailsDialogRect() ); + } + +// ----------------------------------------------------------------------------- +// CWmDetailsDlg::SizeChanged +// ----------------------------------------------------------------------------- +// +void CWmDetailsDlg::SizeChanged() + { + CAknDialog::SizeChanged(); + TRect rect = Rect(); + if ( iBgContext ) { iBgContext->SetRect( FullScreenRect() ); } + if ( iRtEditor ) + { + const TInt offSet = 5; + TRect cbaRect; + AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EControlPane, cbaRect ); + + TInt logoH = iLogoBmp->SizeInPixels().iHeight; + + TInt height, width; + if ( Layout_Meta_Data::IsLandscapeOrientation() ) + { + height = ( (rect.Height() - logoH) - (cbaRect.Height() * 2) - offSet ); + } + else + { + height = ( (rect.Height() - logoH) - (cbaRect.Height() * 1.5) - offSet ); + } + + width = ( rect.Width() - (CEikScrollBar::DefaultScrollBarBreadth() * 4 ) - offSet ); + TPoint point = TPoint( rect.iTl.iX + offSet, rect.iTl.iY + logoH + offSet ); + TSize size = TSize( width, height ); + iRtEditor->SetRect( TRect( point, size ) ); + TRAP_IGNORE( + iRtEditor->SetSkinBackgroundControlContextL( iBgContext ); + InsertAndFormatContentL(); ); + } + } + +// ---------------------------------------------------------------------------- +// CWmDetailsDlg::SupplyMopObject +// ---------------------------------------------------------------------------- +// +TTypeUid::Ptr CWmDetailsDlg::MopSupplyObject( TTypeUid aId ) + { + if ( aId.iUid == MAknsControlContext::ETypeId ) + { + return MAknsControlContext::SupplyMopObject( aId, iBgContext ); + } + return CAknDialog::MopSupplyObject( aId ); + } + +// ---------------------------------------------------------------------------- +// CWmDetailsDlg::OfferKeyEventL +// ---------------------------------------------------------------------------- +// +TKeyResponse CWmDetailsDlg::OfferKeyEventL( const TKeyEvent& aKeyEvent,TEventCode aType ) + { + if (aType == EEventKey) + { + switch (aKeyEvent.iCode) + { + case EKeyEscape: + { + // framework calls this when dialog must shut down + return CAknDialog::OfferKeyEventL( aKeyEvent, aType ); + } + case EKeyDownArrow: + { + if ( iRtEditor ) + { + iRtEditor->MoveCursorL(TCursorPosition::EFPageDown, EFalse); + return EKeyWasConsumed; + } + } + case EKeyUpArrow: + { + if ( iRtEditor ) + { + iRtEditor->MoveCursorL(TCursorPosition::EFPageUp, EFalse); + return EKeyWasConsumed; + } + } + default: + { + if ( iRtEditor ) + { + return iRtEditor->OfferKeyEventL( aKeyEvent, aType ); + } + break; + } + } + } + return CAknDialog::OfferKeyEventL( aKeyEvent, aType); + } + +// ----------------------------------------------------------------------------- +// CWmDetailsDlg::Draw +// ----------------------------------------------------------------------------- +// +void CWmDetailsDlg::Draw( const TRect& /*aRect*/ ) const + { + CWindowGc& gc = SystemGc(); + TRect rect = Rect(); + TRect innerRect( rect ); + TRgb color = KRgbBlack; + const TInt offSet = 5; + + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + MAknsControlContext* cc = AknsDrawUtils::ControlContext( this ); + + // draw background + if ( !AknsDrawUtils::Background( skin, cc, this, gc, innerRect ) ) + { + gc.SetPenStyle( CGraphicsContext::ENullPen ); + gc.SetBrushStyle( CGraphicsContext::ENullBrush ); + gc.SetBrushColor( AKN_LAF_COLOR( 0 ) ); + gc.SetBrushStyle( CGraphicsContext::ESolidBrush ); + gc.DrawRect( innerRect ); + gc.SetBrushStyle( CGraphicsContext::ENullBrush ); + } + + // to fix scrollbar background issue in richtext editor + if ( iRtEditor ) + { + MAknsControlContext* ccRte = AknsDrawUtils::ControlContext( iRtEditor ); + AknsDrawUtils::Background( skin, ccRte, iRtEditor, gc, iRtEditor->Rect() ); + } + + // draw logo + TRect bmpRect( TPoint(0,0), TSize( iLogoBmp->SizeInPixels() ) ); + TPoint point = TPoint( innerRect.iTl.iX + offSet, + innerRect.iTl.iY + offSet ); + + if ( iLogoBmp && iLogoMask ) + { + gc.BitBltMasked( point, iLogoBmp, + bmpRect, iLogoMask, ETrue ); + } + else + { + gc.BitBlt( point, iLogoBmp, bmpRect ); + } + + // draw name + point.iX += (bmpRect.Width() + offSet); + + AknsUtils::GetCachedColor( + skin, color, + KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG6 ); + + // DRAW TEXT + const CFont* font = AknLayoutUtils::FontFromId( EAknLogicalFontPrimaryFont ); + gc.UseFont( font ); + gc.SetPenColor( color ); + gc.SetPenStyle( CGraphicsContext::ESolidPen ); + point.iY += (bmpRect.Height() - (font->HeightInPixels() /2 ) ); + CGraphicsContext::TDrawTextParam param; + + HBufC* buf = iName->Des().Alloc(); + if ( buf ) + { + TPtr bufPtr = buf->Des(); + TextUtils::ClipToFit( bufPtr, *font, (innerRect.Width() - point.iX ) ); + gc.DrawText( bufPtr ,point, param ); + delete buf; + } + else + { + gc.DrawText( *iName ,point, param ); + } + + gc.DiscardFont(); + + // draw the rounded rectangle as border + const TInt KFrameRoundRadius = 3; + 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 ); + } + +// End of File + diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/src/wmeffectmanager.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/src/wmeffectmanager.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,157 @@ +/* +* 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: Effect manager. +* +*/ + + +// SYSTEM INCLUDE FILES +#include +#include +#include // For transition effects +#include // For transition effects + +// INCLUDE FILES +#include "wmeffectmanager.h" + +// CONSTANTS +const TInt KEffectTypeFullscreen = 1; + +const TInt KWaitForLayout = 1; +const TInt KEffectStarted = 2; + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// C++ default constructor. +// ----------------------------------------------------------------------------- +// +CWmEffectManager::CWmEffectManager( CCoeEnv& aCoeEnv ): iCoeEnv (aCoeEnv) + { + } + +// ----------------------------------------------------------------------------- +// Symbian 2nd phase constructor. +// ----------------------------------------------------------------------------- +// +void CWmEffectManager::ConstructL() + { + } + +// ----------------------------------------------------------------------------- +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +CWmEffectManager* CWmEffectManager::NewL( CCoeEnv& aCoeEnv ) + { + CWmEffectManager* self = new (ELeave) CWmEffectManager( aCoeEnv ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +// ----------------------------------------------------------------------------- +// Destructor. +// ----------------------------------------------------------------------------- +// +CWmEffectManager::~CWmEffectManager() + { + GfxTransEffect::AbortFullScreen(); + iEffects.ResetAndDestroy(); + } + +// ----------------------------------------------------------------------------- +// CWmEffectManager::BeginFullscreenEffectL +// ----------------------------------------------------------------------------- +// +void CWmEffectManager::BeginFullscreenEffectL( TInt aId ) + { + TWmEffect* effect = new (ELeave) TWmEffect; + CleanupStack::PushL( effect ); + effect->iId = aId; + effect->iType = KEffectTypeFullscreen; + effect->iState = KWaitForLayout; + iEffects.Append( effect ); + + CleanupStack::Pop( effect ); + + DoBeginFullscreenEffect( *effect ); + } + +// ----------------------------------------------------------------------------- +// CWmEffectManager::UiRendered +// ----------------------------------------------------------------------------- +// +void CWmEffectManager::UiRendered() + { + for ( TInt i = 0; i < iEffects.Count(); ) + { + TWmEffect* effect = iEffects[i]; + if ( effect && effect->iState == KEffectStarted ) + { + GfxTransEffect::EndFullScreen(); + RemoveEffect( effect ); + } + else + { + // RemoveEffect() will remove from iEffects array and + // thats why we need to have conter in else + i++; + } + } + } + +// ----------------------------------------------------------------------------- +// CWmEffectManager::DoBeginFullscreenEffect +// ----------------------------------------------------------------------------- +// +void CWmEffectManager::DoBeginFullscreenEffect( TWmEffect& aEffect ) + { + if ( iCoeEnv.WsSession().GetFocusWindowGroup() != + iCoeEnv.RootWin().Identifier() ) + { + // Window group is not focused + RemoveEffect( &aEffect ); + return; + } + + const TInt flags( AknTransEffect::TParameter::EActivateExplicitCancel ); + const TUid targetAppUid( iAvkonAppUi->Application()->AppDllUid() ); + + // Set effect begin point + GfxTransEffect::BeginFullScreen( aEffect.iId , iAvkonAppUi->ClientRect(), + AknTransEffect::EParameterType, AknTransEffect::GfxTransParam( + targetAppUid, flags ) ); + + aEffect.iState = KEffectStarted; + } + +// ----------------------------------------------------------------------------- +// CXnEffectManager::RemoveEffect +// ----------------------------------------------------------------------------- +// +void CWmEffectManager::RemoveEffect( TWmEffect* aEffect ) + { + TInt index = iEffects.Find( aEffect ); + if ( index != KErrNotFound ) + { + TWmEffect* temp = iEffects[index]; + iEffects.Remove( index ); + delete temp; + } + } + +// End fo file + diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/src/wmimageconverter.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/src/wmimageconverter.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,913 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* CWmImageConverter implementation +* +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include // KWidgetUidLowerBound, KWidgetUidUpperBound + +#include "wmimageconverter.h" + +_LIT( KSkin, "skin" ); +_LIT( KMif, "mif" ); +_LIT( KUid, "uid" ); +_LIT( KColon, ":" ); +_LIT( KSvgExt, ".svg" ); +_LIT( KHexPrefix, "0x" ); +const TUint KLeftParenthesis = '('; + +// --------------------------------------------------------- +// CWmImageConverter::NewL +// --------------------------------------------------------- +// +CWmImageConverter* CWmImageConverter::NewL( MConverterObserver* aObserver ) + { + CWmImageConverter* self = + new(ELeave) CWmImageConverter(); + CleanupStack::PushL( self ); + self->ConstructL( aObserver ); + CleanupStack::Pop(self); + return self; + } + +// --------------------------------------------------------- +// CWmImageConverter::CWmImageConverter +// --------------------------------------------------------- +// +CWmImageConverter::CWmImageConverter() + : CActive( EPriorityStandard ) + { + iState = EIdle; + iBitmap = NULL; + iMask = NULL; + iObserver = NULL; + iConversionMethod = EUnrecognized; + CActiveScheduler::Add( this ); + } + +// --------------------------------------------------------- +// CWmImageConverter::ConstructL +// --------------------------------------------------------- +// +void CWmImageConverter::ConstructL( MConverterObserver* aObserver ) + { + User::LeaveIfError( iFs.Connect() ); + iFs.ShareProtected(); + iScaler = CBitmapScaler::NewL(); + iObserver = aObserver; + } + +// --------------------------------------------------------- +// CWmImageConverter::~CWmImageConverter +// --------------------------------------------------------- +// +CWmImageConverter::~CWmImageConverter() + { + Cancel(); + delete iImageDecoder; + iFs.Close(); + if (iBitmap) + { + delete iBitmap; + iBitmap = NULL; + } + if (iMask) + { + delete iMask; + iMask = NULL; + } + delete iScaler; + } + +// --------------------------------------------------------- +// CWmImageConverter::HandleIconStringL +// --------------------------------------------------------- +// +void CWmImageConverter::HandleIconStringL( + TInt aWidth, TInt aHeight, + const TDesC& aIconStr ) + { + if ( aIconStr.Length() ) + { + TAknsItemID skinItemId; + skinItemId.iMajor = 0; + skinItemId.iMinor = 0; + TInt bitmapId( KErrNotFound ); + TInt maskId( KErrNotFound ); + TUid appUid; + iFilename = KNullDesC; + iScaleNeeded = EFalse; + iSize.SetSize( aWidth, aHeight ); + + if ( ResolveSkinIdAndMifId( + aIconStr, skinItemId, bitmapId, maskId, iFilename ) ) + { + if ( bitmapId >= 0 && skinItemId.iMajor > 0 ) + iConversionMethod = ESkinAndMifIcon; + else if ( bitmapId >= 0 ) + iConversionMethod = EMifIcon; + else + iConversionMethod = ESkinIcon; + CreateSkinOrMifIconL( + skinItemId, bitmapId, maskId, iFilename ); + } + else if ( ResolveUid( aIconStr, appUid ) ) + { + iConversionMethod = EUidIcon; + CreateIconFromUidL( appUid ); + } + else if ( EndsWith( aIconStr, KSvgExt ) ) + { + // filename_with_full_path.svg + iConversionMethod = ESvgIcon; + CreateIconFromSvgL( aIconStr ); + } + else if ( BaflUtils::FileExists( iFs, aIconStr ) ) + { + // filename_with_full_path.png/jpg + iConversionMethod = EImageIcon; + CreateIconFromOtherL( aIconStr ); + } + else + { + iConversionMethod = EUnrecognized; + User::Leave( KErrArgument ); + } + } + } + +// --------------------------------------------------------- +// CWmImageConverter::CreateIconFromUidL +// --------------------------------------------------------- +// +void CWmImageConverter::CreateIconFromUidL( const TUid& aUid ) + { + CFbsBitmap* bitmap = NULL; + CFbsBitmap* mask = NULL; + + if ( aUid.iUid >= KWidgetUidLowerBound && + aUid.iUid < KWidgetUidUpperBound ) + { + // AknsUtils::CreateAppIconLC panics incase of WRT + + RApaLsSession lsSession; + User::LeaveIfError( lsSession.Connect() ); + CleanupClosePushL( lsSession ); + + CArrayFixFlat* sizeArray = new (ELeave) CArrayFixFlat(3); + CleanupStack::PushL( sizeArray ); + User::LeaveIfError( lsSession.GetAppIconSizes( aUid, *sizeArray ) ); + TInt sizeCount = sizeArray->Count(); + TSize size; + if ( sizeCount > 0 ) + { + for( TInt i=0; i < sizeArray->Count(); i++ ) + { + size = (*sizeArray)[i]; + if ( size == iSize ) + { + break; + } + } + } + CApaMaskedBitmap* maskedBmp = CApaMaskedBitmap::NewLC(); + User::LeaveIfError( lsSession.GetAppIcon( aUid, size, *maskedBmp ) ); + iBitmap = static_cast( maskedBmp ); // ownership transfered + + iMask = new ( ELeave ) CFbsBitmap; + User::LeaveIfError( iMask->Create( + maskedBmp->Mask()->SizeInPixels(), + maskedBmp->Mask()->DisplayMode() ) ); + // duplicate mask, origional is owned by maskedBmp + iMask->Duplicate( maskedBmp->Mask()->Handle() ); + CleanupStack::Pop( maskedBmp ); + maskedBmp = NULL; + CleanupStack::PopAndDestroy(sizeArray); + CleanupStack::PopAndDestroy( &lsSession ); + + // scale or notify + if ( size == iSize ) + { + iObserver->NotifyCompletion( KErrNone ); + } + else + { + iScaleNeeded = ETrue; + ScaleBitmap( iSize.iWidth, iSize.iHeight ); + } + } + else if ( aUid.iUid != KNullUid.iUid ) + { + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + TInt err( KErrNone ); + TRAP( err, + { + AknsUtils::CreateAppIconLC( skin, aUid, + EAknsAppIconTypeContext, bitmap, mask ); + CleanupStack::Pop( 2 ); // for trap + } + ); + + if( KErrNone != err ) + { + // If icon is not created, try to create default application icon + AknsUtils::CreateIconLC( skin, + KAknsIIDQgnMenuUnknownLst, bitmap, mask, + AknIconUtils::AvkonIconFileName(), + EMbmAvkonQgn_menu_unknown_lst, + EMbmAvkonQgn_menu_unknown_lst_mask ); + CleanupStack::Pop( 2 ); // for trap + } + + iBitmap = bitmap; + iMask = mask; + + err = AknIconUtils::SetSize( iBitmap , iSize, EAspectRatioNotPreserved ); + if ( KErrNone == err ) + { + err = AknIconUtils::SetSize( iMask , iSize, EAspectRatioNotPreserved ); + } + + // notify observer + iObserver->NotifyCompletion( err ); + } + else + { + User::Leave( KErrArgument ); + } + } + +// --------------------------------------------------------- +// CWmImageConverter::CreateIconFromSvgL +// --------------------------------------------------------- +// +void CWmImageConverter::CreateIconFromSvgL( const TDesC& aFileName ) + { + if ( iBitmap ) + { + delete iBitmap; + iBitmap = NULL; + } + if ( iMask ) + { + delete iMask; + iMask = NULL; + } + + TDisplayMode mode = CEikonEnv::Static()->ScreenDevice()->DisplayMode(); + TFontSpec fontspec; + + CFbsBitmap* frameBuffer = new ( ELeave ) CFbsBitmap; + CleanupStack::PushL( frameBuffer ); + frameBuffer->Create( iSize, mode ); + + CSvgEngineInterfaceImpl* svgEngine = CSvgEngineInterfaceImpl::NewL( + frameBuffer, NULL, fontspec ); + svgEngine->SetDRMMode( EFalse ); + + TInt domHandle; + CheckSvgErrorL( svgEngine->PrepareDom( aFileName, domHandle ) ); + + CFbsBitmap* bitmap = new(ELeave) CFbsBitmap; + User::LeaveIfError( bitmap->Create( iSize, mode) ); + CleanupStack::PushL( bitmap ); + + CFbsBitmap* mask = new(ELeave) CFbsBitmap; + User::LeaveIfError( mask->Create( iSize, EGray256 ) ); + CleanupStack::PushL( mask ); + + CheckSvgErrorL( svgEngine->UseDom( domHandle, bitmap, mask ) ); + + MSvgError* err; + svgEngine->Start( err ); + CheckSvgErrorL( err ); + + CheckSvgErrorL( svgEngine->UseDom( domHandle, NULL, NULL ) ); + CheckSvgErrorL( svgEngine->DeleteDom( domHandle ) ); + + CleanupStack::Pop( mask ); + CleanupStack::Pop( bitmap ); + CleanupStack::PopAndDestroy( frameBuffer ); + + iBitmap = bitmap; + iMask = mask; + iObserver->NotifyCompletion( KErrNone ); + } + +// --------------------------------------------------------- +// CWmImageConverter::CheckSvgErrorL +// --------------------------------------------------------- +// +void CWmImageConverter::CheckSvgErrorL( MSvgError* aError ) + { + if ( aError ) + { + User::LeaveIfError( aError->SystemErrorCode() ); + } + } + +// --------------------------------------------------------- +// CWmImageConverter::CreateIconFromOtherL +// --------------------------------------------------------- +// +void CWmImageConverter::CreateIconFromOtherL( const TDesC& aFileName ) + { + if ( IsActive() || iState != EIdle ) + { + User::Leave( KErrNotReady ); + } + + if ( iImageDecoder ) delete iImageDecoder; iImageDecoder = NULL; + if (iBitmap) {delete iBitmap; iBitmap = NULL;} + if (iMask) {delete iMask; iMask = NULL;} + + iFilename.Copy( aFileName ); + + // create the decoder + iImageDecoder = CImageDecoder::FileNewL( iFs, iFilename ); + + TSize size = iImageDecoder->FrameInfo().iOverallSizeInPixels; + + // create the destination bitmap + iBitmap = new (ELeave) CFbsBitmap(); + iBitmap->Create( size, + iImageDecoder->FrameInfo().iFrameDisplayMode ); + + iMask = new (ELeave) CFbsBitmap(); + iMask->Create( size, EGray256 ); + + if ( size != iSize ) + { + iScaleNeeded = ETrue; + } + // start conversion to bitmap + iState = EDecoding; + iImageDecoder->Convert( &iStatus, *iBitmap, *iMask ); + SetActive(); + } + +// --------------------------------------------------------- +// CWmImageConverter::DoCancel +// --------------------------------------------------------- +// +void CWmImageConverter::DoCancel() + { + if( iState == EDecoding ) + { + iImageDecoder->Cancel(); + if ( iObserver ) + { + iObserver->NotifyCompletion( KErrCancel ); + } + } + else if( iState == EScalingBitmap || + iState == EScalingMask ) + { + iScaler->Cancel(); + if ( iObserver ) + { + iObserver->NotifyCompletion( KErrCancel ); + } + } + else + { + // State is EIdle, do nothing + } + iState = EIdle; + iScaleNeeded = EFalse; + } + +// --------------------------------------------------------- +// CWmImageConverter::RunL +// --------------------------------------------------------- +// +void CWmImageConverter::RunL() + { + switch( iState ) + { + case EDecoding: + { + if( iStatus.Int() == KErrNone ) + { + if ( iScaleNeeded ) + { + ScaleBitmap( iSize.iWidth, iSize.iHeight ); + } + else + { + iState = EIdle; + if ( iObserver ) + { + iObserver->NotifyCompletion( KErrNone ); + } + } + break; + } + else if( iStatus.Int() == KErrUnderflow ) + { + iImageDecoder->ContinueConvert( &iStatus ); + SetActive(); + break; + } + else if ( iStatus.Int() == KErrCorrupt ) + { + iState = EIdle; + iScaleNeeded = EFalse; + if ( iBitmap ) + { + delete iBitmap; + iBitmap = NULL; + } + if ( iMask ) + { + delete iMask; + iMask = NULL; + } + if ( iObserver ) + { + iObserver->NotifyCompletion( KErrCorrupt ); + } + break; + } + else + { + // Unknown error + iState = EIdle; + iScaleNeeded = EFalse; + if ( iBitmap ) + { + delete iBitmap; + iBitmap = NULL; + } + if ( iMask ) + { + delete iMask; + iMask = NULL; + } + if ( iObserver ) + { + iObserver->NotifyCompletion( iStatus.Int() ); + } + break; + } + } + case EScalingBitmap: + { + if( iStatus.Int() == KErrNone && iMask ) + { + ScaleMask( iSize.iWidth, iSize.iHeight ); + } + else + { + iState = EIdle; + iScaleNeeded = EFalse; + if ( iObserver ) + { + iObserver->NotifyCompletion( iStatus.Int() ); + } + } + break; + } + case EScalingMask: + { + iState = EIdle; + iScaleNeeded = EFalse; + if ( iObserver ) + { + iObserver->NotifyCompletion( iStatus.Int() ); + } + break; + } + default: + break; + } + } + +// --------------------------------------------------------- +// CWmImageConverter::RunError +// --------------------------------------------------------- +// +TInt CWmImageConverter::RunError(TInt /*aError*/) + { + // Our RunL does not contain any method calls that would leave, so this method + // should never be called. + iScaleNeeded = EFalse; + return KErrNone; + } + +// --------------------------------------------------------- +// CWmImageConverter::ScaleBitmap +// --------------------------------------------------------- +// +void CWmImageConverter::ScaleBitmap( TInt aWidth, TInt aHeight ) + { + if ( !IsActive() && + iBitmap && + ( iState == EDecoding || iState == EIdle ) ) + { + // the maintain aspect ratio is by default set to true + iScaler->Scale( &iStatus, *iBitmap, TSize( aWidth,aHeight ), EFalse ); + iState = EScalingBitmap; + SetActive(); + } + } + +// --------------------------------------------------------- +// CWmImageConverter::ScaleMask +// --------------------------------------------------------- +// +void CWmImageConverter::ScaleMask( TInt aWidth, TInt aHeight ) + { + if ( !IsActive() && + iState == EScalingBitmap && + iMask ) + { + // the maintain aspect ratio is by default set to true + iScaler->Scale( &iStatus, *iMask, TSize(aWidth,aHeight), EFalse ); + iState = EScalingMask; + SetActive(); + } + } + +// --------------------------------------------------------- +// CWmImageConverter::Bitmap +// --------------------------------------------------------- +// +CFbsBitmap* CWmImageConverter::Bitmap() + { + CFbsBitmap* bitmap = NULL; + if (iState == EIdle && + iBitmap ) + { + bitmap = iBitmap; // ownership taken + iBitmap = NULL; + } + return bitmap; + } + +// --------------------------------------------------------- +// CWmImageConverter::Mask +// --------------------------------------------------------- +// +CFbsBitmap* CWmImageConverter::Mask() + { + CFbsBitmap* mask = NULL; + if (iState == EIdle && + iMask ) + { + mask = iMask; // ownership taken + iMask = NULL; + } + return mask; + } + +// --------------------------------------------------------- +// CWmImageConverter::EndsWith +// --------------------------------------------------------- +// +TBool CWmImageConverter::EndsWith( const TDesC& aString, + const TDesC& aPattern ) + { + return ( aString.Right( aPattern.Length() ) == aPattern ); + } + +// --------------------------------------------------------------------------- +// CWmImageConverter::ResolveUid +// --------------------------------------------------------------------------- +// +TBool CWmImageConverter::ResolveUid( + const TDesC& aPath, TUid& aUid ) + { + // Syntax: uid(0x12345678) + TInt error = KErrNotFound; + TInt pos = aPath.FindF( KUid ); + if( pos == 0 ) + { + // Skip skin token + pos += KUid().Length(); + + // Initialize lexer + TLex lex( aPath.Mid( pos ) ); + + // Check left parenthesis + if ( lex.Get() == KLeftParenthesis ) + { + lex.SkipSpaceAndMark(); + lex.SkipCharacters(); + + TPtrC mtoken = lex.MarkedToken(); + pos = mtoken.FindF( KHexPrefix ); + if ( pos == 0 ) + { + TLex lex( mtoken.Mid( KHexPrefix().Length() ) ); + TUint id = 0; + error = lex.Val( id, EHex ); + aUid = TUid::Uid( (TInt)id ); + } + else + { + TInt id( 0 ); + error = lex.Val( id ); + aUid.iUid = id; + } + } + } + + return (error == KErrNone ); + } + +// --------------------------------------------------------------------------- +// CWmImageConverter::ResolveSkinId +// --------------------------------------------------------------------------- +// +TBool CWmImageConverter::ResolveSkinId( + const TDesC& aPath, TAknsItemID& aItemId ) + { + // Syntax: skin(major minor) + TInt error = KErrNotFound; + TInt pos = aPath.FindF( KSkin ); + if( pos == 0 ) + { + // Skip skin token + pos += KSkin().Length(); + + // Initialize lexer + TLex lex( aPath.Mid( pos ) ); + + lex.SkipSpaceAndMark(); + // Check left parenthesis + if ( lex.Get() == KLeftParenthesis ) + { + pos++; + TLex lex( aPath.Mid( pos ) ); + lex.SkipSpaceAndMark(); + + TPtrC mtoken = lex.MarkedToken(); + pos = mtoken.FindF( KHexPrefix ); + if ( pos == 0 ) + { + TUint majorId( 0 ); + TUint minorId( 0 ); + lex.Assign( mtoken.Mid( KHexPrefix().Length() ) ); + error = lex.Val( majorId, EHex ); + lex.SkipSpace(); + lex.SkipAndMark( KHexPrefix().Length() ); + error |= lex.Val( minorId, EHex ); + aItemId.Set( majorId, minorId ); + } + else + { + TInt majorId(0); + TInt minorId(0); + error = lex.Val( majorId ); + lex.SkipSpace(); + error |= lex.Val( minorId ); + aItemId.Set( majorId, minorId ); + } + } + } + + return (error == KErrNone ); + } + +// --------------------------------------------------------------------------- +// CWmImageConverter::ResolveMifId +// --------------------------------------------------------------------------- +// +TBool CWmImageConverter::ResolveMifId( + const TDesC& aPath, TInt& aBitmapId, + TInt& aMaskId, TDes& aFileName ) + { + // Syntax: mif(filename bimapId maskId) + TInt error = KErrNotFound; + TInt pos = aPath.FindF( KMif ); + if( pos == 0 ) + { + // Skip mif token + pos += KMif().Length(); + // Initialize lexer + TLex lex( aPath.Mid( pos ) ); + + // Check left parenthesis + if ( lex.Get() == KLeftParenthesis ) + { + lex.SkipSpaceAndMark(); + lex.SkipCharacters(); + // Resolve MifFile name + aFileName.Copy(lex.MarkedToken()); + if( aFileName.Length()!= 0) + { + // Resolve bitmap id + lex.SkipSpace(); + error = lex.Val( aBitmapId ); + + // Resolve mask id + // dont return error if it is not found, that is ok + lex.SkipSpace(); + lex.Val( aMaskId ); + } + else + { + error = KErrNotFound; + } + } + } + return (error == KErrNone ); + } + +// --------------------------------------------------------------------------- +// CWmImageConverter::ResolveSkinIdAndMifId +// --------------------------------------------------------------------------- +// +TBool CWmImageConverter::ResolveSkinIdAndMifId( + const TDesC& aPath, TAknsItemID& aItemId, + TInt& aBitmapId, TInt& aMaskId, TDes& aFileName ) + { + // Syntax: skin(major minor):mif(filename bimapId maskId) + TBool result = ResolveSkinId( aPath, aItemId ); + if ( result ) + { + TInt pos = aPath.FindF( KColon ); + if ( pos != KErrNotFound ) + { + TPtrC ptr = aPath.Mid( pos+1 ); + result = ResolveMifId( ptr, aBitmapId, aMaskId, aFileName ); + } + } + else + { + result = ResolveMifId( aPath, aBitmapId, aMaskId, aFileName ); + } + return result; + } + +// --------------------------------------------------------------------------- +// CWmImageConverter::CreateSkinOrMifIconL +// --------------------------------------------------------------------------- +// +void CWmImageConverter::CreateSkinOrMifIconL( + const TAknsItemID& aItemId, TInt aBitmapId, + TInt aMaskId, const TDesC& aFileName ) + { + iFilename = aFileName; + CFbsBitmap* bitmap = NULL; + CFbsBitmap* mask = NULL; + + // Load from skin + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + if ( skin && aItemId.iMajor != 0 && aItemId.iMinor != 0 ) + { + TInt err( KErrNone ); + CAknsMaskedBitmapItemData* itemData = NULL; + TRAP( err, itemData = + static_cast( + skin->CreateUncachedItemDataL( aItemId, EAknsITMaskedBitmap ) ); ); + if( itemData && KErrNone == err ) + { + CleanupStack::PushL( itemData ); + // Detach bitmaps + bitmap = itemData->Bitmap(); + itemData->SetBitmap( NULL ); + mask = itemData->Mask(); + itemData->SetMask( NULL ); + CleanupStack::PopAndDestroy( itemData ); + } + else + { + // look in imagetable + CAknsImageTableItemData* iconData = NULL; + TRAP( err, iconData = static_cast( + skin->CreateUncachedItemDataL( aItemId, EAknsITImageTable ) ); ); + if( iconData && KErrNone == err ) + { + CleanupStack::PushL( iconData ); + if( iconData->NumberOfImages() ) + { + TAknsItemID iconIId; + iconIId.Set( iconData->ImageIID(0) ); + TRAP( err, AknsUtils::CreateIconL( + skin, iconIId, bitmap, mask, KNullDesC, -1, -1 ); ); + } + CleanupStack::PopAndDestroy( iconData ); + } + } + + if ( KErrNone == err && bitmap ) + { + TInt err = AknIconUtils::SetSize( bitmap , iSize, EAspectRatioNotPreserved ); + if ( KErrNone == err ) + { + if ( mask ) + { + err = AknIconUtils::SetSize( mask , iSize, EAspectRatioNotPreserved ); + } + iBitmap = bitmap; + iMask = mask; + // notify observer + iObserver->NotifyCompletion( KErrNone ); + return; + } + else + { + if ( bitmap ) { delete bitmap; bitmap = NULL; } + if ( mask ){ delete mask; mask = NULL; } + } + } + } + + if( aBitmapId != KErrNotFound && !bitmap && + aFileName.Length() && BaflUtils::FileExists( iFs, aFileName ) ) + { + if ( aMaskId != KErrNotFound ) + { + // Create icon from Mif filename , bitmap id and mask id + AknIconUtils::CreateIconL( + bitmap, mask, *this, aBitmapId, aMaskId ); + } + else + { + bitmap = AknIconUtils::CreateIconL( *this, aBitmapId ); + } + } + else + { + User::Leave( KErrArgument ); + } + + iBitmap = bitmap; + iMask = mask; + + TInt err = AknIconUtils::SetSize( iBitmap , iSize, EAspectRatioNotPreserved ); + if ( KErrNone == err ) + { + err = AknIconUtils::SetSize( iMask , iSize, EAspectRatioNotPreserved ); + } + + // notify observer + iObserver->NotifyCompletion( err ); + } + +// --------------------------------------------------------------------------- +// CWmImageConverter::SetLogoSize() +// --------------------------------------------------------------------------- +// +void CWmImageConverter::SetLogoSize( const TSize& aSize ) + { + iSize = aSize; + } + +// --------------------------------------------------------------------------- +// CWmImageConverter::ConversionMethod() +// --------------------------------------------------------------------------- +// +CWmImageConverter::TConversionMethod CWmImageConverter::ConversionMethod() + { + return iConversionMethod; + } + +// --------------------------------------------------------------------------- +// CWmImageConverter::RetrieveIconFileHandleL +// --------------------------------------------------------------------------- +// +void CWmImageConverter::RetrieveIconFileHandleL( + RFile& aFile, const TIconFileType /*aType*/ ) + { + User::LeaveIfError( aFile.Open( iFs, iFilename, EFileShareAny ) ); + } + +// --------------------------------------------------------------------------- +// CWmImageConverter::Finished +// --------------------------------------------------------------------------- +// +void CWmImageConverter::Finished() + { + // finishes using the icon file. No actions needed here. + } + + +// End of file + diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/src/wmlistbox.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/src/wmlistbox.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,720 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* Implementation of the widget listbox for WidgetManager +* +*/ + +// INCLUDE FILES +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "wmcommon.h" +#include "wmplugin.h" +#include "wmresourceloader.h" +#include "wmlistbox.h" +#include "wmwidgetdata.h" + +// CONSTANTS + +// MEMBER FUNCTIONS + +// --------------------------------------------------------- +// CWmListItemDrawer::NewL +// --------------------------------------------------------- +// +CWmListItemDrawer* CWmListItemDrawer::NewL( + CWmPlugin& aWmPlugin, + MTextListBoxModel* aTextListBoxModel, + const CFont* aFont, + CFormattedCellListBoxData* aFormattedCellData, + CWmListBox* aListBox ) + { + CWmListItemDrawer* self = new ( ELeave ) CWmListItemDrawer( + aWmPlugin, + aTextListBoxModel, + aFont, + aFormattedCellData, + aListBox ); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + return self; + } + +// --------------------------------------------------------- +// CWmListItemDrawer::CWmListItemDrawer +// --------------------------------------------------------- +// +CWmListItemDrawer::CWmListItemDrawer( + CWmPlugin& aWmPlugin, + MTextListBoxModel* aTextListBoxModel, + const CFont* aFont, + CFormattedCellListBoxData* aFormattedCellData, + CWmListBox* aListBox ) + : CFormattedCellListBoxItemDrawer( aTextListBoxModel,aFont,aFormattedCellData ), + iWmPlugin( aWmPlugin ) + { + iCellData = aFormattedCellData; + iListBox = aListBox; + iFont = aFont; + } + +// --------------------------------------------------------- +// CWmListItemDrawer::ConstructL +// --------------------------------------------------------- +// +void CWmListItemDrawer::ConstructL() + { + SetSkinEnabledL( ETrue ); + + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + AknsUtils::CreateIconL( + skin, + KAknsIIDQgnMenuHswidget, + iDefaultLogoImage, + iDefaultLogoImageMask, + iWmPlugin.ResourceLoader().IconFilePath(), + EMbmWidgetmanagerQgn_menu_hswidget, + EMbmWidgetmanagerQgn_menu_hswidget_mask + ); + + AknsUtils::CreateColorIconL( + skin, + KAknsIIDQgnIndiWmAdd, + KAknsIIDQsnTextColors, + EAknsCIQsnTextColorsCG6, + iAddWidgetBtnImage, + iAddWidgetBtnMask, + iWmPlugin.ResourceLoader().IconFilePath(), + EMbmWidgetmanagerAdd_widget_button, + EMbmWidgetmanagerAdd_widget_button_mask, + KRgbBlack ); + + AknsUtils::CreateColorIconL( + skin, + KAknsIIDQgnIndiWmAdd, + KAknsIIDQsnTextColors, + EAknsCIQsnTextColorsCG10, + iAddWidgetBtnHighlightImage, + iAddWidgetBtnHighlightMask, + iWmPlugin.ResourceLoader().IconFilePath(), + EMbmWidgetmanagerAdd_widget_button, + EMbmWidgetmanagerAdd_widget_button_mask, + KRgbWhite ); + } + +// --------------------------------------------------------- +// CWmListItemDrawer::~CWmListItemDrawer +// --------------------------------------------------------- +// +CWmListItemDrawer::~CWmListItemDrawer() + { + iCellData = NULL; + iListBox = NULL; + + // dispose icons + delete iDefaultLogoImage; + delete iDefaultLogoImageMask; + delete iAddWidgetBtnImage; + delete iAddWidgetBtnMask; + delete iAddWidgetBtnHighlightImage; + delete iAddWidgetBtnHighlightMask; + } + +// --------------------------------------------------------- +// CWmListItemDrawer::ResizeDefaultBitmaps +// --------------------------------------------------------- +// +void CWmListItemDrawer::ResizeDefaultBitmaps() + { + TAknWindowLineLayout logoPane = + AknLayoutScalable_Apps::listrow_wgtman_pane_g1().LayoutLine(); + TAknWindowLineLayout addPane = + AknLayoutScalable_Apps::listrow_wgtman_pane_g2().LayoutLine(); + TAknLayoutRect layoutRect; + TRect rect = TRect( ItemCellSize() ); + layoutRect.LayoutRect( rect, logoPane ); + + // RESIZE DEFAULT LOGO BITMAPS ACCORDING TO LAYOUT + TSize size = layoutRect.Rect().Size(); + AknIconUtils::SetSize( + iDefaultLogoImage, size, EAspectRatioPreserved ); + AknIconUtils::SetSize( + iDefaultLogoImageMask, size, EAspectRatioPreserved ); + + // RESIZE ADD BTN BITMAPS ACCORDING TO LAYOUT + layoutRect.LayoutRect( rect, addPane ); + size = layoutRect.Rect().Size(); + AknIconUtils::SetSize( + iAddWidgetBtnImage, size, EAspectRatioPreserved ); + AknIconUtils::SetSize( + iAddWidgetBtnMask, size, EAspectRatioPreserved ); + AknIconUtils::SetSize( + iAddWidgetBtnHighlightImage, size, EAspectRatioPreserved ); + AknIconUtils::SetSize( + iAddWidgetBtnHighlightMask, size, EAspectRatioPreserved ); + } + +// --------------------------------------------------------- +// CWmListItemDrawer::DrawItem +// --------------------------------------------------------- +// +void CWmListItemDrawer::DrawItem( TInt aItemIndex, TPoint aItemRectPos, + TBool aItemIsSelected, TBool aItemIsCurrent, + TBool aViewIsEmphasized, TBool aViewIsDimmed ) const + { + TSize cellSize = ItemCellSize(); + + CWmWidgetData& wData = iListBox->WidgetData( aItemIndex ); + // Get graphics context which is used for drawing. + CWindowGc& gc = *Gc(); + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + TInt selectedIndex = iListBox->CurrentItemIndex(); + TBool isInFocus = ( selectedIndex == aItemIndex ); + TBool listFocused = iListBox->IsFocused(); + TRect itemRect = TRect( aItemRectPos, cellSize ); + + if ( isInFocus && listFocused ) + { + // force baseclass to draw highlight and animation for this item + CFormattedCellListBoxItemDrawer::DrawItemText( + aItemIndex, itemRect, + aItemIsCurrent, aViewIsEmphasized, + ( isInFocus || aItemIsSelected ) ); + + if ( iListBox->PressedDown() ) + { + TRect innerRect( itemRect ); + const TInt highlightOffset = 3; + innerRect.Shrink( highlightOffset, highlightOffset ); + AknsDrawUtils::DrawFrame( skin, + gc, + itemRect, + innerRect, + KAknsIIDQsnFrListPressed, + KAknsIIDQsnFrListCenterPressed ); + } + } + else + { + // to prevent item staying highlighted when list isn't focused. + CFormattedCellListBoxItemDrawer::DrawEmptyItem( + aItemIndex, aItemRectPos, aViewIsDimmed ); + } + + + // DRAW LOGO + CFbsBitmap* bitmap = const_cast(wData.LogoImage()); + CFbsBitmap* mask = const_cast(wData.LogoImageMask()); + TAknLayoutRect logoLayout; + logoLayout.LayoutRect( itemRect, + AknLayoutScalable_Apps::listrow_wgtman_pane_g1().LayoutLine() ); + + if ( !bitmap ) + { + logoLayout.DrawImage( gc, iDefaultLogoImage, iDefaultLogoImageMask ); + } + else + { + logoLayout.DrawImage( gc, bitmap, mask ); + } + + TRgb textColor; + TAknsQsnTextColorsIndex index = ( isInFocus && listFocused )? + EAknsCIQsnTextColorsCG10 : EAknsCIQsnTextColorsCG6; + + AknsUtils::GetCachedColor( + skin, textColor, KAknsIIDQsnTextColors, index ); + + // DRAW TEXT + gc.UseFont( iFont ); + gc.SetPenColor( textColor ); + gc.SetPenSize( TSize(2,2) ); + + TAknTextLineLayout titleTextLayout = + AknLayoutScalable_Apps::listrow_wgtman_pane_t1().LayoutLine(); + TAknTextLineLayout descTextLayout = + AknLayoutScalable_Apps::listrow_wgtman_pane_t2().LayoutLine(); + + TAknLayoutText textLayout; + textLayout.LayoutText( itemRect, titleTextLayout ); + textLayout.DrawText( gc, wData.Name(), ETrue, textColor ); + + if ( wData.HsContentInfo().CanBeAdded() ) + { + // DRAW ADD BUTTON + TAknLayoutRect addButtonLayout; + addButtonLayout.LayoutRect( itemRect, + AknLayoutScalable_Apps::listrow_wgtman_pane_g2().LayoutLine() ); + if ( isInFocus && listFocused ) + { + addButtonLayout.DrawImage( gc, + iAddWidgetBtnHighlightImage, iAddWidgetBtnHighlightMask ); + } + else + { + addButtonLayout.DrawImage( gc, + iAddWidgetBtnImage, iAddWidgetBtnMask ); + } + } + + gc.SetPenSize(TSize(1,1)); + + // DRAW DESCRIPTION TEXT + textLayout.LayoutText( itemRect, descTextLayout ); + textLayout.DrawText( gc, wData.Description(), ETrue, textColor ); + gc.DiscardFont(); + } + +// --------------------------------------------------------- +// CWmListItemDrawer::DefaultLogoImage() +// --------------------------------------------------------- +// +const CFbsBitmap* CWmListItemDrawer::DefaultLogoImage() + { + return iDefaultLogoImage; + } + +// --------------------------------------------------------- +// CWmListItemDrawer::DefaultLogoMask() +// --------------------------------------------------------- +// +const CFbsBitmap* CWmListItemDrawer::DefaultLogoMask() + { + return iDefaultLogoImageMask; + } + +// --------------------------------------------------------- +// CWmListItemDrawer::HandleSkinChanged +// --------------------------------------------------------- +// +void CWmListItemDrawer::HandleSkinChanged() + { + CFbsBitmap* addWidgetBtnImage( NULL ); + CFbsBitmap* addWidgetBtnMask( NULL ); + CFbsBitmap* addWidgetBtnHighlightImage( NULL ); + CFbsBitmap* addWidgetBtnHighlightMask( NULL ); + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + + TRAPD( err, + AknsUtils::CreateColorIconLC( + skin, + KAknsIIDQgnIndiWmAdd, + KAknsIIDQsnTextColors, + EAknsCIQsnTextColorsCG6, + addWidgetBtnImage, + addWidgetBtnMask, + iWmPlugin.ResourceLoader().IconFilePath(), + EMbmWidgetmanagerAdd_widget_button, + EMbmWidgetmanagerAdd_widget_button_mask, + KRgbBlack ); + + AknsUtils::CreateColorIconLC( + skin, + KAknsIIDQgnIndiWmAdd, + KAknsIIDQsnTextColors, + EAknsCIQsnTextColorsCG10, + addWidgetBtnHighlightImage, + addWidgetBtnHighlightMask, + iWmPlugin.ResourceLoader().IconFilePath(), + EMbmWidgetmanagerAdd_widget_button, + EMbmWidgetmanagerAdd_widget_button_mask, + KRgbWhite ); + + CleanupStack::Pop( 4 ); // pop icons + ); + + if ( KErrNone == err ) + { + // delete old icons + delete iAddWidgetBtnImage; + iAddWidgetBtnImage = NULL; + delete iAddWidgetBtnMask; + iAddWidgetBtnMask = NULL; + delete iAddWidgetBtnHighlightImage; + iAddWidgetBtnHighlightImage = NULL; + delete iAddWidgetBtnHighlightMask; + iAddWidgetBtnHighlightMask = NULL; + + // transfer ownership + iAddWidgetBtnImage = addWidgetBtnImage; + addWidgetBtnImage = NULL; + iAddWidgetBtnMask = addWidgetBtnMask; + addWidgetBtnMask = NULL; + iAddWidgetBtnHighlightImage = addWidgetBtnHighlightImage; + addWidgetBtnHighlightImage = NULL; + iAddWidgetBtnHighlightMask = addWidgetBtnHighlightMask; + addWidgetBtnHighlightMask = NULL; + + // resize new created icons + ResizeDefaultBitmaps(); + } + } + +// --------------------------------------------------------- +// CWmListBox::NewL +// --------------------------------------------------------- +// +CWmListBox* CWmListBox::NewL( + CWmPlugin& aWmPlugin, + const TRect& aRect, + const CCoeControl* aParent, + TInt aFlags ) + { + CWmListBox* self = new ( ELeave ) CWmListBox( aWmPlugin); + CleanupStack::PushL( self ); + self->ConstructL( aRect, aParent, aFlags ); + CleanupStack::Pop( self ); + return self; + } + +// --------------------------------------------------------- +// CWmListBox::CWmListBox +// --------------------------------------------------------- +// +CWmListBox::CWmListBox( CWmPlugin& aWmPlugin ): + CAknDouble2LargeStyleListBox(), + iWmPlugin( aWmPlugin ) + { + iFindPaneIsVisible = EFalse; + iPressedDown = EFalse; + } + +// --------------------------------------------------------- +// CWmListBox::~CWmListBox +// --------------------------------------------------------- +// +CWmListBox::~CWmListBox() + { + iWidgetDatas.ResetAndDestroy(); + } + +// --------------------------------------------------------- +// CWmListBox::ConstructL +// --------------------------------------------------------- +// +void CWmListBox::ConstructL( + const TRect& aRect, + const CCoeControl* aParent, + TInt aFlags ) + { + CEikFormattedCellListBox::ConstructL( aParent, aFlags ); + SetContainerWindowL( *aParent ); + + // set model point to the widgets array + Model()->SetItemTextArray( &iWidgetDatas ); + Model()->SetOwnershipType( ELbmDoesNotOwnItemArray ); + + // set empty-text to null + View()->SetListEmptyTextL( KNullDesC ); + + SetRect( aRect ); + } + +// --------------------------------------------------------- +// CWmListBox::WidgetData +// --------------------------------------------------------- +// +CWmWidgetData* CWmListBox::WidgetData() + { + TInt index = CurrentListBoxItemIndex(); + return (index>=0 ? iWidgetDatas[index] : NULL); + } + +// --------------------------------------------------------- +// CWmListBox::WidgetData +// --------------------------------------------------------- +// +CWmWidgetData& CWmListBox::WidgetData( TInt aItemIndex ) + { + return *iWidgetDatas[ RealIndex( aItemIndex ) ]; + } + +// --------------------------------------------------------- +// CWmListBox::AddWidgetDataL +// --------------------------------------------------------- +// +void CWmListBox::AddWidgetDataL( CWmWidgetData* aWidgetData ) + { + aWidgetData->SetObserver( this ); + aWidgetData->SetLogoSize( LogoSize() ); + iWidgetDatas.InsertInOrderAllowRepeatsL( aWidgetData, + SortOrder(EStoredOrder) ); + HandleItemAdditionL(); + } + +// --------------------------------------------------------- +// CWmListBox::RemoveWidgetData +// --------------------------------------------------------- +// +void CWmListBox::RemoveWidgetData( TInt aItemIndex ) + { + TInt realIndex = RealIndex( aItemIndex ); + TBool current = ( aItemIndex == CurrentItemIndex() ); + // remove widget data + CWmWidgetData* data = iWidgetDatas[realIndex]; + iWidgetDatas.Remove( realIndex ); + delete data; + + // reorganise + TRAP_IGNORE( + AknListBoxUtils::HandleItemRemovalAndPositionHighlightL( + this, realIndex, current ) ); + } + +// --------------------------------------------------------- +// CWmListBox::RedrawItem +// --------------------------------------------------------- +// +void CWmListBox::RedrawItem( TInt aItemIndex ) + { + View()->DrawItem( aItemIndex ); + } + +// --------------------------------------------------------- +// CWmListBox::SetSortOrderL +// --------------------------------------------------------- +// +void CWmListBox::SetSortOrderL( TSortOrder aOrder ) + { + // now sort the existing data + iWidgetDatas.Sort( SortOrder( aOrder ) ); + DrawNow(); + } + +// --------------------------------------------------------- +// CWmListBox::CreateItemDrawerL +// --------------------------------------------------------- +// +void CWmListBox::CreateItemDrawerL() + { + CFormattedCellListBoxData* cellData = CFormattedCellListBoxData::NewL(); + CleanupStack::PushL( cellData ); + iItemDrawer = CWmListItemDrawer::NewL( + iWmPlugin, + Model(), + iEikonEnv->DenseFont(), + cellData, + this ); + CleanupStack::Pop(); // cellData + } + +// --------------------------------------------------------- +// CWmListBox::HandleLayoutChanged +// --------------------------------------------------------- +// +void CWmListBox::HandleLayoutChanged() + { + TSize ls = LogoSize(); + for ( TInt i=0; iReCreateLogo( ls ); + } + } + +// --------------------------------------------------------- +// CWmListBox::HandleSkinChanged +// --------------------------------------------------------- +// +void CWmListBox::HandleSkinChanged() + { + CWmListItemDrawer* itemDrawer = + static_cast ( iItemDrawer ); + if ( itemDrawer ) + { + itemDrawer->HandleSkinChanged(); + } + } + +// --------------------------------------------------------- +// CWmListBox::HandleWidgetDataChanged +// --------------------------------------------------------- +// +void CWmListBox::HandleWidgetDataChanged( CWmWidgetData* aWidgetData ) + { + if ( !iFindPaneIsVisible ) + { + // spontaneous change in the model. Cause table to redraw + TInt index = iWidgetDatas.Find( aWidgetData ); + if ( index >= 0 ) + { + // redraw item. + RedrawItem( RealIndex( index ) ); + } + } + else + { + // redraw everything + Parent()->DrawDeferred(); + } + } + +// --------------------------------------------------------- +// CWmListBox::SortOrder +// --------------------------------------------------------- +// +TLinearOrder CWmListBox::SortOrder( TSortOrder aOrder ) + { + if ( aOrder == EStoredOrder ) + { + return TLinearOrder( + CWmWidgetData::CompareByPersistentWidgetOrder ); + } + else + { + return TLinearOrder( + CWmWidgetData::CompareByName ); + } + } + +// --------------------------------------------------------- +// CWmListBox::CurrentListBoxItemIndex +// --------------------------------------------------------- +// +TInt CWmListBox::CurrentListBoxItemIndex() + { + TInt index( KErrNotFound ); + if ( Model()->NumberOfItems() > 0 ) + { + index = CurrentItemIndex(); + } + return RealIndex( index ); + } + +// --------------------------------------------------------- +// CWmListBox::RealIndex +// --------------------------------------------------------- +// +TInt CWmListBox::RealIndex( TInt aIndex ) + { + TInt realIndex = aIndex; + if ( iFindPaneIsVisible && aIndex >= 0 ) + { + realIndex = static_cast(Model())->Filter() + ->FilteredItemIndex( aIndex ); + } + return realIndex; + } + +// --------------------------------------------------------- +// CWmListBox::SizeChanged +// --------------------------------------------------------- +// +void CWmListBox::SizeChanged() + { + CAknDouble2LargeStyleListBox::SizeChanged(); + + CWmListItemDrawer* itemDrawer = + static_cast ( iItemDrawer ); + if ( itemDrawer ) + { + return itemDrawer->ResizeDefaultBitmaps(); + } + } + +// --------------------------------------------------------- +// CWmListBox::Draw +// --------------------------------------------------------- +// +void CWmListBox::Draw( const TRect& aRect ) const + { + CWindowGc& gc = SystemGc(); + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + MAknsControlContext* cc = AknsDrawUtils::ControlContext( this ); + AknsDrawUtils::Background( skin, cc, this, gc, Rect() ); + CAknDouble2LargeStyleListBox::Draw( aRect ); + } + +// --------------------------------------------------------- +// CWmListBox::HandlePointerEventL +// --------------------------------------------------------- +// +void CWmListBox::HandlePointerEventL( const TPointerEvent& aPointerEvent ) + { + // Check if pointer is down ( needed for drawing correct hightlight frame ) + if ( Rect().Contains( aPointerEvent.iPosition ) ) + { + if ( aPointerEvent.iType == TPointerEvent::EButton1Down ) + { + iPressedDown = ETrue; + RedrawItem( CurrentListBoxItemIndex() ); + } + else if( aPointerEvent.iType == TPointerEvent::EButton1Up ) + { + iPressedDown = EFalse; + RedrawItem( CurrentListBoxItemIndex() ); + } + } + + CAknDouble2LargeStyleListBox::HandlePointerEventL( aPointerEvent ); + } + +// --------------------------------------------------------- +// CWmListBox::LogoSize +// --------------------------------------------------------- +// +TSize CWmListBox::LogoSize() + { + TAknLayoutRect rowLayoutRect; + rowLayoutRect.LayoutRect( Rect(), + AknLayoutScalable_Apps::listrow_wgtman_pane().LayoutLine() ); + TAknLayoutRect logoLayoutRect; + logoLayoutRect.LayoutRect( rowLayoutRect.Rect(), + AknLayoutScalable_Apps::listrow_wgtman_pane_g1().LayoutLine() ); + return logoLayoutRect.Rect().Size(); + } + +// --------------------------------------------------------- +// CWmListBox::DefaultLogo +// --------------------------------------------------------- +// +const CFbsBitmap* CWmListBox::DefaultLogo() + { + CWmListItemDrawer* itemDrawer = + static_cast ( iItemDrawer ); + if ( itemDrawer ) + { + return itemDrawer->DefaultLogoImage(); + } + return NULL; + } + +// --------------------------------------------------------- +// CWmListBox::DefaultMask +// --------------------------------------------------------- +// +const CFbsBitmap* CWmListBox::DefaultMask() + { + CWmListItemDrawer* itemDrawer = + static_cast ( iItemDrawer ); + if ( itemDrawer ) + { + return itemDrawer->DefaultLogoMask(); + } + return NULL; + } + +// End of File + diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/src/wmmaincontainer.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/src/wmmaincontainer.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,1311 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* Implementation of the container control for WidgetManager application. +* +*/ + +// INCLUDE FILES +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include //installer +#include // widgetreqistry +#include // for starting the OVI client +#include // FeatureManager +#include // HlpLauncher +#include +#include +#include + +#include "wmcrkeys.h" +#include "wmcommon.h" +#include "wmplugin.h" +#include "wmmaincontainer.h" +#include "wmmaincontainerview.h" +#include "wmresourceloader.h" +#include "widgetmanager.hrh" +#include "wmlistbox.h" +#include "wmpersistentwidgetorder.h" +#include "wmdetailsdlg.h" +#include "wmportalbutton.h" +#include "wmwidgetloaderao.h" + +// CONSTANTS +const TInt KTextLimit = 40; // Text-limit for find-field +const TInt KMinWidgets = 1; // minimum number of widgets to show findpane +_LIT8( KWrtMime, "application/x-nokia-widget"); +_LIT( KBrowserPrefix, "4 "); + +// --------------------------------------------------------- +// CWmMainContainer::CWmMainContainer() +// --------------------------------------------------------- +// +CWmMainContainer::CWmMainContainer( CWmPlugin& aWmPlugin ) : + iWmPlugin( aWmPlugin ) + { + iWidgetsList = NULL; + iFindbox = NULL; + iFindPaneIsVisible = EFalse; + iBgContext = NULL; + iFocusMode = ENowhere; + iClosingDown = ETrue; + } + +// --------------------------------------------------------- +// CWmMainContainer::~CWmMainContainer() +// --------------------------------------------------------- +// +CWmMainContainer::~CWmMainContainer() + { + delete iOviStoreUrl; + delete iOviStoreClientBundleId; + delete iOviStoreClientParam; + + RemoveCtrlsFromStack(); + Components().ResetAndDestroy(); + delete iWidgetLoader; + iWidgetsList = NULL; + iOviPortal = NULL; + iFindbox = NULL; + delete iBgContext; + } + +// --------------------------------------------------------- +// CWmMainContainer::NewL +// --------------------------------------------------------- +// +CWmMainContainer* CWmMainContainer::NewL( + const TRect& aRect, + CWmPlugin& aWmPlugin ) + { + CWmMainContainer* self = CWmMainContainer::NewLC( + aRect, + aWmPlugin ); + CleanupStack::Pop( self ); + return self; + } + +// --------------------------------------------------------- +// CWmMainContainer::NewLC +// --------------------------------------------------------- +// +CWmMainContainer* CWmMainContainer::NewLC( + const TRect& aRect, + CWmPlugin& aWmPlugin ) + { + CWmMainContainer* self = new (ELeave) CWmMainContainer( aWmPlugin ); + CleanupStack::PushL( self ); + self->ConstructL( aRect ); + return self; + } + +// --------------------------------------------------------- +// ScreenRect +// rectangle representing the screen +// --------------------------------------------------------- +// +TRect ScreenRect() + { + TRect screen; + CCoeEnv* env = CCoeEnv::Static(); + if ( env ) + { + CWsScreenDevice* screenDevice = env->ScreenDevice(); + if ( screenDevice ) + screen.SetRect( TPoint(0,0), screenDevice->SizeInPixels() ); + } + return screen; + } + +// --------------------------------------------------------- +// CWmMainContainer::ConstructL +// --------------------------------------------------------- +// +void CWmMainContainer::ConstructL( + const TRect& aRect ) + { + // Initialize control array + InitComponentArrayL(); + Components().SetControlsOwnedExternally( ETrue ); + + // create the UI + CreateWindowL(); + + // background context + iBgContext = CAknsBasicBackgroundControlContext::NewL( + KAknsIIDQsnBgScreen, ScreenRect() , ETrue); + + // Read needed values from cenrep + TRAP_IGNORE( FetchRepositoryDataL(); ); + + // set up controls + InitializeControlsL( aRect ); + + // set size and activate + SetRect( aRect ); + ActivateL(); + + } + +// --------------------------------------------------------- +// CWmMainContainer::FetchRepositoryDataL +// --------------------------------------------------------- +// +void CWmMainContainer::FetchRepositoryDataL() + { + iOviStoreUrl = NULL; + iOviStoreClientBundleId = NULL; + iOviStoreClientParam = NULL; + + CRepository *repository = CRepository::NewLC( + TUid::Uid( KCrWidgetManagerm ) ); + TInt err = KErrNone; + + //read localized data from cenrep + TLanguage sysLang = User::Language(); + for( TUint32 i = KLangId0; i <= KLangId9; i+=4 ) + { + TInt crLang = 0; + err = repository->Get( i, crLang ); + + if ( sysLang == crLang && err == KErrNone ) + { + // system langauge matches langauge in cenrep + iOviStoreUrl = HBufC::NewL( + NCentralRepositoryConstants::KMaxUnicodeStringLength ); + TPtr ptr( iOviStoreUrl->Des() ); + + // get localized ovi store url + err = repository->Get( i + KOviStoreBrowserUrlOffset, ptr ); + if ( err != KErrNone ) + { + delete iOviStoreUrl; + iOviStoreUrl = NULL; + } + } + } + + //read other data from cenrep + iOviStoreClientBundleId = HBufC::NewL( + NCentralRepositoryConstants::KMaxUnicodeStringLength ); + TPtr ptr( iOviStoreClientBundleId->Des() ); + err = repository->Get( KOviStoreBunbleId, ptr ); + if ( err != KErrNone ) + { + delete iOviStoreClientBundleId; + iOviStoreClientBundleId = NULL; + } + + iOviStoreClientParam = HBufC::NewL( + NCentralRepositoryConstants::KMaxUnicodeStringLength ); + ptr.Set( iOviStoreClientParam->Des() ); + err = repository->Get( KOviStoreClientParam, ptr ); + if ( err != KErrNone ) + { + delete iOviStoreClientParam; + iOviStoreClientParam = NULL; + } + + CleanupStack::PopAndDestroy( repository ); + } + +// --------------------------------------------------------- +// CWmMainContainer::SizeChanged +// --------------------------------------------------------- +// +void CWmMainContainer::SizeChanged() + { + CCoeControl::SizeChanged(); + iBgContext->SetRect( ScreenRect() ); + LayoutControls(); + } + +// --------------------------------------------------------- +// CWmMainContainer::LayoutControls +// --------------------------------------------------------- +// +void CWmMainContainer::LayoutControls() + { + TBool landscape = Layout_Meta_Data::IsLandscapeOrientation(); + + TAknWindowLineLayout listPane = + AknLayoutScalable_Apps::listscroll_wgtman_pane(landscape ? 1 : 0).LayoutLine(); + + TAknWindowLineLayout btnPane = + AknLayoutScalable_Apps::wgtman_btn_pane(landscape ? 1 : 0).LayoutLine(); + + TRect rect = Rect(); + + if ( landscape ) + { + if ( Layout_Meta_Data::IsMirrored() ) + { + iLayout = ELandscapeMirrored; + } + else + { + iLayout = ELandscape; + } + } + else + { + iLayout = EPortrait; + } + + // layout Ovi button + AknLayoutUtils::LayoutControl( iOviPortal, rect, btnPane ); + + if( iFindbox && iFindPaneIsVisible ) + { + TAknLayoutRect layoutRect; + layoutRect.LayoutRect( rect, listPane ); + iWidgetsList->SetRect( layoutRect.Rect() ); + HandleFindSizeChanged(); + } + else + { + AknLayoutUtils::LayoutControl( iWidgetsList, rect, listPane ); + } + + DrawDeferred(); + } + +// --------------------------------------------------------- +// CWmMainContainer::OfferKeyEventL +// --------------------------------------------------------- +// +TKeyResponse CWmMainContainer::OfferKeyEventL( + const TKeyEvent& aKeyEvent, + TEventCode aType ) + { + TKeyResponse keyResponse( EKeyWasNotConsumed ); + + if ( iFindbox ) + { + // open search field with alpha digit numbers + if ( aType == EEventKeyDown && !iFindPaneIsVisible && + aKeyEvent.iScanCode < EStdKeyF1 && + TChar(aKeyEvent.iScanCode).IsAlphaDigit() ) + { + ActivateFindPaneL(); + + if ( iFindPaneIsVisible ) + { + return EKeyWasConsumed; + } + } + + if ( iFindPaneIsVisible ) + { + // deactive the FindPane when Back has been pressed + if ( aType == EEventKeyDown && + aKeyEvent.iScanCode == EStdKeyBackspace ) + { + TBuf searchText; + iFindbox->GetSearchText( searchText ); + if ( searchText == KNullDesC ) + { + DeactivateFindPaneL(); + return EKeyWasConsumed; + } + } + + // Cancel-selected need to unfocus findbox + // to receive event in ProcessCommand + if ( aType == EEventKeyDown + && aKeyEvent.iScanCode == EStdKeyDevice1 ) + { + iFindbox->SetFocus( EFalse ); + UpdateFocusMode(); + return EKeyWasConsumed; + } + + if ( aKeyEvent.iScanCode == EStdKeyNo || + aKeyEvent.iCode == EKeyNo ) + { + DeactivateFindPaneL(); + return EKeyWasConsumed; + } + + // find items with all event codes (that's the reason why there is EEventKey instead of aType) + TBool needsRefresh( EFalse ); + keyResponse = AknFind::HandleFindOfferKeyEventL( + aKeyEvent, EEventKey, this, + iWidgetsList, iFindbox, ETrue, needsRefresh ); + if ( needsRefresh ) + { + DrawNow(); + } + } + } + + // check special cases for movement between controls + if ( keyResponse == EKeyWasNotConsumed && !iFindPaneIsVisible ) + { + keyResponse = MoveFocusByKeys( aKeyEvent, aType ); + } + + // pass key event except backpace or delete key event to widgets list if focused + if ( keyResponse == EKeyWasNotConsumed && iWidgetsList->IsFocused() ) + { + if ( (aType == EEventKey) && (aKeyEvent.iCode == EKeyBackspace || aKeyEvent.iCode == EKeyDelete)) + { + if( CanDoUninstall() ) + { + UninstallWidgetL(); + } + else + { + CWmWidgetData* data = iWidgetsList->WidgetData(); + if( data != NULL ) + iWmPlugin.ResourceLoader().InfoPopupL( + R_QTN_WM_UNINST_NOT_ALLOWED, data->Name() ); + } + } + else + { + //passing to listbox handler + keyResponse = iWidgetsList->OfferKeyEventL( + aKeyEvent, aType ); + } + } + + // pass key event to OVI portal if focused + if ( keyResponse == EKeyWasNotConsumed && iOviPortal->IsFocused() ) + { + keyResponse = iOviPortal->OfferKeyEventL( + aKeyEvent, aType ); + } + + if ( keyResponse == EKeyWasConsumed ) + DrawDeferred(); + + // Do not let UI framework forward the keys to child controls as + // we have already done that. + return EKeyWasConsumed; + } + + +// --------------------------------------------------------- +// CWmMainContainer::MoveFocusByKeys +// --------------------------------------------------------- +// +TKeyResponse CWmMainContainer::MoveFocusByKeys( + const TKeyEvent& aKeyEvent, + TEventCode aType ) + { + TKeyResponse keyResponse( EKeyWasNotConsumed ); + + if ( iWidgetsList->IsFocused() ) + { + // ------------------------------------ + // focus is in the WIDGETS LIST + // ------------------------------------ + if ( iLayout == EPortrait && + aKeyEvent.iScanCode == EStdKeyUpArrow && + iWidgetsList->CurrentItemIndex() == 0 ) + { + // widget list top -> up -> ovi button (portrait) + if ( aType == EEventKey ) + SetFocusToOviButton(); + keyResponse = EKeyWasConsumed; + } + else if ( iLayout == EPortrait && + aKeyEvent.iScanCode == EStdKeyDownArrow && + iWidgetsList->CurrentItemIndex() == + iWidgetsList->Model()->NumberOfItems() - 1 ) + { + // widget list bottom -> down -> ovi button (portrait) + if ( aType == EEventKey ) + SetFocusToOviButton(); + keyResponse = EKeyWasConsumed; + } + else if ( iLayout == ELandscape && + aKeyEvent.iScanCode == EStdKeyRightArrow ) + { + // widget list -> right -> ovi button (landscape) + if ( aType == EEventKey ) + SetFocusToOviButton(); + keyResponse = EKeyWasConsumed; + } + else if ( iLayout == ELandscapeMirrored && + aKeyEvent.iScanCode == EStdKeyLeftArrow ) + { + // widget list -> left -> ovi button (landscape mirrored) + if ( aType == EEventKey ) + SetFocusToOviButton(); + keyResponse = EKeyWasConsumed; + } + } + else if ( iOviPortal->IsFocused() ) + { + // ------------------------------------ + // focus is in the OVI PORTAL BUTTON + // ------------------------------------ + if ( iLayout == EPortrait && + aKeyEvent.iScanCode == EStdKeyDownArrow ) + { + // ovi button -> down -> widget list top (portrait) + if ( aType == EEventKey ) + SetFocusToWidgetList( 0 ); + keyResponse = EKeyWasConsumed; + } + else if ( iLayout == EPortrait && + aKeyEvent.iScanCode == EStdKeyUpArrow ) + { + // obi button -> up -> widget list bottom (portrait) + if ( aType == EEventKey ) + SetFocusToWidgetList( iWidgetsList->Model()->NumberOfItems()-1 ); + keyResponse = EKeyWasConsumed; + } + else if ( iLayout == ELandscape && + aKeyEvent.iScanCode == EStdKeyLeftArrow ) + { + // ovi button -> left -> widget list (landscape) + if ( aType == EEventKey ) + SetFocusToWidgetList(); + keyResponse = EKeyWasConsumed; + } + else if ( iLayout == ELandscapeMirrored && + aKeyEvent.iScanCode == EStdKeyRightArrow ) + { + // ovi button -> right -> widget list (landscape mirrored) + if ( aType == EEventKey ) + SetFocusToWidgetList(); + keyResponse = EKeyWasConsumed; + } + } + else + { + // ------------------------------------ + // focus is NOWHERE + // ------------------------------------ + if ( aKeyEvent.iScanCode == EStdKeyUpArrow || + aKeyEvent.iScanCode == EStdKeyDownArrow || + aKeyEvent.iScanCode == EStdKeyLeftArrow || + aKeyEvent.iScanCode == EStdKeyRightArrow ) + { + // no focus -> key hit -> focus list + if ( aType == EEventKey ) + SetFocusToWidgetList(); + keyResponse = EKeyWasConsumed; + } + } + + return keyResponse; + } + +// --------------------------------------------------------- +// CWmMainContainer::SetFocusToOviButton +// --------------------------------------------------------- +// +void CWmMainContainer::SetFocusToOviButton() + { + iWidgetsList->SetFocus(EFalse); + iOviPortal->SetFocus(ETrue); + DrawDeferred(); + UpdateFocusMode(); + } + +// --------------------------------------------------------- +// CWmMainContainer::SetFocusToWidgetList +// --------------------------------------------------------- +// +void CWmMainContainer::SetFocusToWidgetList( TInt aIndex ) + { + iOviPortal->SetFocus(EFalse); + iWidgetsList->SetFocus(ETrue); + if ( aIndex >= 0 && aIndex < iWidgetsList->Model()->NumberOfItems() ) + { + iWidgetsList->SetCurrentItemIndex( aIndex ); + } + DrawDeferred(); + UpdateFocusMode(); + } + +// --------------------------------------------------------- +// CWmMainContainer::UpdateFocusMode +// --------------------------------------------------------- +// +void CWmMainContainer::UpdateFocusMode() + { + if ( iOviPortal->IsFocused() ) + { + // OVI BUTTON is focused + iFocusMode = EOvi; + } + else if( ( iFindPaneIsVisible ) && + ( iFindbox->IsFocused() || iWidgetsList->IsFocused() ) ) + { + // FIND MODE + iFocusMode = EFind; + } + else if ( iWidgetsList->IsFocused() ) + { + // WIDGETS LIST is focused + iFocusMode = EList; + } + else + { + // NO focus + iFocusMode = ENowhere; + } + } + +// --------------------------------------------------------- +// CWmMainContainer::FindChildControlByPoint +// --------------------------------------------------------- +// +CCoeControl* CWmMainContainer::FindChildControlByPoint( + const TPoint& aPoint ) + { + CCoeControl* theControl = NULL; + CCoeControlArray::TCursor cursor = Components().Begin(); + CCoeControl* c; + while((c=cursor.Control()) != NULL ) + { + if(c->IsVisible()) + { + if ( c->Rect().Contains( aPoint ) ) theControl = c; + } + cursor.Next(); + } + return theControl; + } + +// --------------------------------------------------------- +// CWmMainContainer::HandlePointerEventL +// --------------------------------------------------------- +// +void CWmMainContainer::HandlePointerEventL( const TPointerEvent& aPointerEvent ) + { + if ( !iClosingDown ) + { + + if (aPointerEvent.iType == TPointerEvent::EButton1Down) + { + // Check if user clicked a child control + CCoeControl* control = FindChildControlByPoint( aPointerEvent.iPosition ); + if ( control && !control->IsFocused() ) + { + // set focus to selected list box item. + if ( control == iWidgetsList ) + { + TInt itemIndex = iWidgetsList->CurrentListBoxItemIndex(); + TBool itemPointed = iWidgetsList->View()->XYPosToItemIndex( + aPointerEvent.iParentPosition, + itemIndex ); + if ( itemIndex >= 1 && itemPointed ) + { + iWidgetsList->SetCurrentItemIndex( itemIndex - 1 ); + } + } + + // Set focus to the control that was clicked + control->SetFocus( ETrue ); + // remove focus from ALL other child controls. + CCoeControlArray::TCursor cursor = Components().Begin(); + CCoeControl* c; + while ((c=cursor.Control()) != NULL ) + { + if ( c != control && c->IsFocused() ) c->SetFocus( EFalse ); + cursor.Next(); + } + // update focus mode accordingly + UpdateFocusMode(); + // repaint + DrawDeferred(); + } + } + + CCoeControl::HandlePointerEventL( aPointerEvent ); + } + } + +// --------------------------------------------------------- +// CWmMainContainer::InitializeControlsL +// --------------------------------------------------------- +// +void CWmMainContainer::InitializeControlsL( const TRect& /*aRect*/ ) + { + // Create OVI STORE button + HBufC* oviText = StringLoader::LoadLC( R_QTN_WM_GO_TO_OVI_STORE ); + iOviPortal = CWmPortalButton::NewL( this, *oviText ); + CleanupStack::PopAndDestroy( oviText ); + + iOviPortal->SetMopParent( this ); + AddControlL( iOviPortal, EOviPortal ); + + // Create widget list box + iWidgetsList = CWmListBox::NewL( + iWmPlugin, + TRect(), + this ); + iWidgetsList->SetMopParent( this ); + AddControlL( iWidgetsList, EWidgetsList ); + iWidgetsList->ActivateL(); + iWidgetsList->SetListBoxObserver( this ); + + // Create scroll bar. + iWidgetsList->CreateScrollBarFrameL( ETrue ); + iWidgetsList->ScrollBarFrame()->SetScrollBarVisibilityL( + CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto ); + iWidgetsList->UpdateScrollBarsL(); + + // search field + iFindbox = CAknSearchField::NewL( *this, + CAknSearchField::EAdaptiveSearch, + 0, KTextLimit ); + AddControlL( iFindbox, EFindBox ); + + UpdateFocusMode(); + StartLoadingWidgetsL(); + } + +// --------------------------------------------------------- +// CWmMainContainer::HandleWidgetListChanged +// --------------------------------------------------------- +// +void CWmMainContainer::HandleWidgetListChanged() + { + TRAP_IGNORE( StartLoadingWidgetsL(); ); + } + +// --------------------------------------------------------- +// CWmMainContainer::StartLoadingWidgetsL +// --------------------------------------------------------- +// +void CWmMainContainer::StartLoadingWidgetsL() + { + if ( !iWidgetLoader ) + { + // create the widget loader AO + iWidgetLoader = CWmWidgetLoaderAo::NewL( iWmPlugin, *iWidgetsList ); + } + iWidgetLoader->StartLoading(); + } + +// --------------------------------------------------------- +// CWmMainContainer::HandleResourceChange +// --------------------------------------------------------- +// +void CWmMainContainer::HandleResourceChange( TInt aType ) + { + CCoeControl::HandleResourceChange( aType ); + + if ( KEikDynamicLayoutVariantSwitch == aType ) + { + TRect rect; + AknLayoutUtils::LayoutMetricsRect( + AknLayoutUtils::EMainPane, rect ); + SetRect( rect ); + + // notify widgetlist + iWidgetsList->HandleLayoutChanged(); + } + else if ( KAknsMessageSkinChange == aType ) + { + // notify widgetlist , colored add icon need to be updated + iWidgetsList->HandleSkinChanged(); + } + } + + +// --------------------------------------------------------- +// CWmMainContainer::MopSupplyObject +// --------------------------------------------------------- +// +TTypeUid::Ptr CWmMainContainer::MopSupplyObject( TTypeUid aId ) + { + if ( aId.iUid == MAknsControlContext::ETypeId ) + { + return MAknsControlContext::SupplyMopObject( + aId, iBgContext ); + } + return CCoeControl::MopSupplyObject( aId ); + } + +// --------------------------------------------------------- +// CWmMainContainer::Draw +// --------------------------------------------------------- +// +void CWmMainContainer::Draw( const TRect& /*aRect*/ ) const + { + CWindowGc& gc = SystemGc(); + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + MAknsControlContext* cc = AknsDrawUtils::ControlContext( this ); + AknsDrawUtils::Background( skin, cc, this, gc, Rect() ); + } + +// --------------------------------------------------------- +// CWmMainContainer::AddControlL +// --------------------------------------------------------- +// +void CWmMainContainer::AddControlL( + CCoeControl* aControl, + TInt aControlId ) + { + Components().AppendLC( aControl, aControlId ); // Ownership transfered + CleanupStack::Pop(aControl); + iWmPlugin.ViewAppUi().AddToStackL( aControl ); + aControl->MakeVisible( ETrue ); + } + +// --------------------------------------------------------- +// CWmMainContainer::WmPlugin +// --------------------------------------------------------- +// +CWmPlugin& CWmMainContainer::WmPlugin() + { + return iWmPlugin; + } + +// --------------------------------------------------------- +// CWmMainContainer::PortalSelected +// --------------------------------------------------------- +// +TBool CWmMainContainer::PortalSelected() + { + return ( iFocusMode == EOvi ); + } + +// --------------------------------------------------------- +// CWmMainContainer::WidgetSelected +// --------------------------------------------------------- +// +TBool CWmMainContainer::WidgetSelected() + { + return ( iFocusMode == EList ) || ( iFocusMode == EFind ); + } + +// --------------------------------------------------------- +// CWmMainContainer::CanDoAdd +// --------------------------------------------------------- +// +TBool CWmMainContainer::CanDoAdd() + { + TBool retVal = EFalse; + CWmWidgetData* data = iWidgetsList->WidgetData(); + if ( WidgetSelected() && data ) + { + if ( data->HsContentInfo().CanBeAdded() ) + retVal = ETrue; + } + return retVal; + } + +// --------------------------------------------------------- +// CWmMainContainer::CanDoUninstall +// --------------------------------------------------------- +// +TBool CWmMainContainer::CanDoUninstall() + { + TBool retVal( EFalse ); + CWmWidgetData* data = iWidgetsList->WidgetData(); + if ( WidgetSelected() && data ) + { + if ( data->WidgetType() == CWmWidgetData::ECps && + data->PublisherUid() != KNullUid ) + { + retVal = ETrue; + } + } + return retVal; + } + +// --------------------------------------------------------- +// CWmMainContainer::CanDoLaunch +// --------------------------------------------------------- +// +TBool CWmMainContainer::CanDoLaunch() + { + TBool retVal(EFalse); + if ( WidgetSelected() ) + { + CWmWidgetData* data = iWidgetsList->WidgetData(); + if ( data->WidgetType() == CWmWidgetData::ECps && + data->PublisherUid() != KNullUid ) + { + retVal = ETrue; + } + } + return retVal; + } + +// --------------------------------------------------------- +// CWmMainContainer::CanDoFind +// --------------------------------------------------------- +// +TBool CWmMainContainer::CanDoFind() + { + TBool canDo( !iFindPaneIsVisible ); + if ( canDo ) + { + canDo = ( iFocusMode == EList || iFocusMode == ENowhere ); + } + return canDo; + } + +// --------------------------------------------------------- +// CWmMainContainer::CanDoSort +// --------------------------------------------------------- +// +TBool CWmMainContainer::CanDoSort() + { + return !iFindPaneIsVisible; + } + +// --------------------------------------------------------- +// CWmMainContainer::CanDoDetails +// --------------------------------------------------------- +// +TBool CWmMainContainer::CanDoDetails() + { + return WidgetSelected(); + } + +// --------------------------------------------------------- +// CWmMainContainer::CanDoHelp +// --------------------------------------------------------- +// +TBool CWmMainContainer::CanDoHelp() + { + return FeatureManager::FeatureSupported( KFeatureIdHelp ); + } + +// --------------------------------------------------------------------------- +// CWmMainContainer::AddWidgetToHomeScreenL +// --------------------------------------------------------------------------- +// +void CWmMainContainer::AddWidgetToHomeScreenL() + { + CWmWidgetData* data = iWidgetsList->WidgetData(); + if ( !iClosingDown && data ) + { + if ( iFindbox && iFindPaneIsVisible ) + { + DeactivateFindPaneL(); + } + + // set add to homescreen to be executed later + iWmPlugin.SetPostponedCommandL( + CWmPlugin::EAddToHomescreen, data->HsContentInfo() ); + + iWmPlugin.Deactivate(); + } + } + +// --------------------------------------------------------------------------- +// CWmMainContainer::LaunchWidgetL +// --------------------------------------------------------------------------- +// +void CWmMainContainer::LaunchWidgetL() + { + if ( CanDoLaunch() ) + { + CWmWidgetData* data = iWidgetsList->WidgetData(); + + HBufC* param = KNullDesC().AllocLC(); // launch params + + RApaLsSession appArc; + User::LeaveIfError( appArc.Connect() ); // connect to AppArc server + CleanupClosePushL( appArc ); + TThreadId id; + User::LeaveIfError( appArc.StartDocument( + *param, data->PublisherUid(), id ) ); + + CleanupStack::PopAndDestroy( &appArc ); + CleanupStack::PopAndDestroy( param ); + } + } + +// --------------------------------------------------------------------------- +// CWmMainContainer::ActivateFindPaneL +// --------------------------------------------------------------------------- +// +void CWmMainContainer::ActivateFindPaneL() + { + if ( iFindbox && !iFindPaneIsVisible && + iWidgetsList->Model()->NumberOfItems() > KMinWidgets ) + { + // enable filtering + CAknFilteredTextListBoxModel* m = + static_cast ( iWidgetsList->Model() ); + if ( m ) + { + m->CreateFilterL( iWidgetsList, iFindbox ); + if ( m->Filter() ) + { + m->Filter()->SetParentControl( this ); + } + } + + iFindbox->ActivateL(); + iFindbox->ResetL(); + iFindbox->SetSearchTextL( KNullDesC ); + iFindbox->SetSkinEnabledL( ETrue ); + + iFindPaneIsVisible = ETrue; + iFindbox->MakeVisible( ETrue ); + + // layout listbox and findbox + LayoutControls(); + + iFindbox->SetFocus( ETrue ); + iWidgetsList->SetFindPaneIsVisible( ETrue ); + + // set soft key set + CEikButtonGroupContainer* cbaGroup = + CEikButtonGroupContainer::Current(); + cbaGroup->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_CANCEL__SELECT ); + cbaGroup->DrawNow(); + + UpdateFocusMode(); + } + } + +// --------------------------------------------------------------------------- +// CWmMainContainer::DeactivateFindPaneL +// --------------------------------------------------------------------------- +// +void CWmMainContainer::DeactivateFindPaneL() + { + if( iFindbox && iFindPaneIsVisible ) + { + // notify search field we're shutting down + TKeyEvent keyEvent = { EKeyNo, EStdKeyNo, 0, 0 }; + iFindbox->OfferKeyEventL( keyEvent, EEventKey ); + + // reset findbox + iFindbox->ResetL(); + + // reset filter + CAknFilteredTextListBoxModel* m = + static_cast ( iWidgetsList->Model() ); + if ( m && m->Filter() ) + { + m->Filter()->ResetFilteringL(); + m->RemoveFilter(); + } + + iFindbox->MakeVisible( EFalse ); + iFindbox->SetFocus( EFalse ); + iFindPaneIsVisible = EFalse; + iWidgetsList->SetFindPaneIsVisible( EFalse ); + + LayoutControls(); + iWidgetsList->SetFocus( ETrue ); + + // set soft key set + CEikButtonGroupContainer* cbaGroup = + CEikButtonGroupContainer::Current(); + cbaGroup->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_BACK__SELECT ); + cbaGroup->DrawNow(); + + UpdateFocusMode(); + DrawNow(); + } + } + +// --------------------------------------------------------------------------- +// CWmMainContainer::SortListAlphabeticallyL +// --------------------------------------------------------------------------- +// +void CWmMainContainer::SortListAlphabeticallyL() + { + if ( iWidgetsList ) + { + iWidgetsList->SetSortOrderL( CWmListBox::EAlphabetical ); + + //store changed list order + CWmPersistentWidgetOrder* widgetOrder = + CWmPersistentWidgetOrder::NewL( iWmPlugin.FileServer() ); + CleanupStack::PushL( widgetOrder ); + widgetOrder->StoreL( iWidgetsList->WidgetDataArray() ); + CleanupStack::PopAndDestroy( widgetOrder ); + + } + } + +// --------------------------------------------------------------------------- +// CWmMainContainer::UninstallWidgetL +// --------------------------------------------------------------------------- +// +void CWmMainContainer::UninstallWidgetL() + { + if ( CanDoUninstall() ) + { + CWmWidgetData* data = iWidgetsList->WidgetData(); + + SwiUI::RSWInstLauncher installer; + User::LeaveIfError( installer.Connect() ); + + installer.Uninstall( data->PublisherUid(), KWrtMime ); + installer.Close(); + } + } + +// --------------------------------------------------------------------------- +// CWmMainContainer::OpenOviPortalL +// --------------------------------------------------------------------------- +// +void CWmMainContainer::OpenOviPortalL() + { + if ( !iClosingDown ) + { + RApaLsSession session; + User::LeaveIfError( session.Connect() ); + CleanupClosePushL( session ); + TApaAppInfo appInfo; + TUid launchUid; + + // Get ovi store uid + RWidgetRegistryClientSession widgetSession; + User::LeaveIfError( widgetSession.Connect() ); + CleanupClosePushL( widgetSession ); + + launchUid.iUid = widgetSession.GetWidgetUidL( *iOviStoreClientBundleId ); + CleanupStack::PopAndDestroy( &widgetSession ); + + TInt err = session.GetAppInfo( appInfo, launchUid ); + if ( err == KErrNone ) + { + CApaCommandLine* commandLine = CApaCommandLine::NewLC(); + commandLine->SetExecutableNameL(appInfo.iFullName); + HBufC8* buf8 = HBufC8::NewLC( iOviStoreClientParam->Des().Length() ); + buf8->Des().Copy( *iOviStoreClientParam ); + + //cmdLine->SetOpaqueDataL( *buf8 ); + commandLine->SetTailEndL( *buf8 ); + err = session.StartApp( *commandLine ); + CleanupStack::PopAndDestroy( buf8 ); + CleanupStack::PopAndDestroy( commandLine ); + } + else + { + if( iOviStoreUrl ) + { + // Ovi store not found start browser + const TUid KOSSBrowserUidValue = { 0x10008D39 }; + HBufC* param = HBufC::NewLC( iOviStoreUrl->Length() + + KBrowserPrefix().Length() ); + + param->Des().Copy( KBrowserPrefix ); + param->Des().Append( *iOviStoreUrl ); + + 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::PopAndDestroy( param ); + } + } + CleanupStack::PopAndDestroy( &session ); + } + } + +// --------------------------------------------------------------------------- +// CWmMainContainer::SelectL +// --------------------------------------------------------------------------- +// +void CWmMainContainer::SelectL() + { + if ( WidgetSelected() ) + AddWidgetToHomeScreenL(); + else if ( PortalSelected() ) + OpenOviPortalL(); + else + SetFocusToWidgetList(); + } + +// --------------------------------------------------------------------------- +// CWmMainContainer::ShowHelpL +// --------------------------------------------------------------------------- +// +void CWmMainContainer::ShowHelpL() + { + TUid fwUid = TUid::Uid( AI_UID3_AIFW_COMMON ); + // retrieve resolve host application help context + CArrayFix* helpContext = + iEikonEnv->EikAppUi()->AppHelpContextL(); + + // add the widget manager entry into the help context + CleanupStack::PushL( helpContext ); + helpContext->InsertL( 0, TCoeHelpContext( + fwUid, KWM_HLP_WIDGET_COLLECTION ) ); + CleanupStack::Pop( helpContext ); + + // launch help + HlpLauncher::LaunchHelpApplicationL( + iEikonEnv->WsSession(), + helpContext ); + helpContext = 0; // HlpLauncher takes ownership of helpContext + } + +// --------------------------------------------------------------------------- +// CWmMainContainer::RemoveCtrlsFromStack +// --------------------------------------------------------------------------- +// +void CWmMainContainer::RemoveCtrlsFromStack() + { + for ( TInt i=0; i < CountComponentControls(); i++ ) + { + CCoeControl* ctl = ComponentControl( i ) ; + if ( ctl ) + { + iWmPlugin.ViewAppUi().RemoveFromStack( ctl ); + } + } + } + +// --------------------------------------------------------------------------- +// CWmMainContainer::HandleListBoxEventL +// --------------------------------------------------------------------------- +// +void CWmMainContainer::HandleListBoxEventL( + CEikListBox* /*aListBox*/, TListBoxEvent aEventType ) + { + if ( !iClosingDown && ( aEventType == EEventEnterKeyPressed || + aEventType == EEventItemSingleClicked ) ) + { + AddWidgetToHomeScreenL(); + } + } + +// ---------------------------------------------------- +// CWmMainContainer::LaunchDetailsDialogL +// ---------------------------------------------------- +// +void CWmMainContainer::LaunchDetailsDialogL() + { + CWmWidgetData* data = iWidgetsList->WidgetData(); + if ( data ) + { + const CFbsBitmap* logo = ( data->LogoImage() ) ? + data->LogoImage() : iWidgetsList->DefaultLogo(); + const CFbsBitmap* mask = ( data->LogoImageMask() ) ? + data->LogoImageMask() : iWidgetsList->DefaultMask(); + + TPtrC description = ( data->Description().Length() > 0 ) ? + data->Description() : iWmPlugin.ResourceLoader().NoDescriptionText(); + CWmDetailsDlg* dlg = CWmDetailsDlg::NewL( + data->Name(), description, + data->HsContentInfo().CanBeAdded(), + logo, mask, iBgContext ); + + if ( dlg && dlg->ExecuteLD() == ECbaAddToHs ) + { + AddWidgetToHomeScreenL(); + } + } + } + +// ---------------------------------------------------- +// CWmMainContainer::SetClosingDown +// ---------------------------------------------------- +// +void CWmMainContainer::SetClosingDown( TBool aClosingDown ) + { + iClosingDown = aClosingDown; + } + +// ---------------------------------------------------- +// CWmMainContainer::ClosingDown +// ---------------------------------------------------- +// +TBool CWmMainContainer::ClosingDown() + { + return iClosingDown; + } + +// ---------------------------------------------------- +// CWmMainContainer::HandleFindSizeChanged +// ---------------------------------------------------- +// +void CWmMainContainer::HandleFindSizeChanged() + { + TAknWindowLineLayout findPane = + AknLayoutScalable_Avkon::find_pane().LayoutLine(); + + TAknWindowLineLayout listPane; + + TRect listRect = iWidgetsList->Rect(); + listPane.il = listRect.iTl.iX; + listPane.it = listRect.iTl.iY; + listPane.ib = 0; + listPane.iH = TUint16( listRect.Height() - ( findPane.iH - 1 ) ); + listPane.iW = listRect.Width(); + listPane.ir = ELayoutEmpty; + + // set findpane width equal to listwidth + findPane.iW = listPane.iW; + + TRect rect = Rect(); + AknLayoutUtils::LayoutControl( iFindbox, rect, findPane ); + AknLayoutUtils::LayoutControl( iWidgetsList, rect, listPane ); + + iWidgetsList->DrawNow(); + } + + +// End of File + diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/src/wmmaincontainerview.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/src/wmmaincontainerview.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,415 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* Implementation of the main container view for WidgetManager application. +* +*/ + +// INCLUDES +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "wmplugin.h" +#include "widgetmanager.hrh" +#include "wmmaincontainerview.h" +#include "wmresourceloader.h" +#include "wmmaincontainer.h" +#include + + +// --------------------------------------------------------- +// CWmMainContainerView::CWmMainContainerView() +// --------------------------------------------------------- +// +CWmMainContainerView::CWmMainContainerView( + CWmPlugin& aWmPlugin ): + iWmPlugin( aWmPlugin ) + { + iWmMainContainer = NULL; + } + +// --------------------------------------------------------- +// CWmMainContainerView::~CWmMainContainerView() +// --------------------------------------------------------- +// +CWmMainContainerView::~CWmMainContainerView() + { + if ( iWmMainContainer != NULL ) + { + AppUi()->RemoveFromViewStack( *this, iWmMainContainer ); + delete iWmMainContainer; + iWmMainContainer = NULL; + } + } + +// --------------------------------------------------------- +// CWmMainContainerView::NewL +// --------------------------------------------------------- +// +CWmMainContainerView* CWmMainContainerView::NewL( + CWmPlugin& aWmPlugin ) + { + CWmMainContainerView* self = CWmMainContainerView::NewLC( + aWmPlugin ); + CleanupStack::Pop( self ); + return self; + } + +// --------------------------------------------------------- +// CWmMainContainerView::NewLC +// --------------------------------------------------------- +// +CWmMainContainerView* CWmMainContainerView::NewLC( + CWmPlugin& aWmPlugin ) + { + CWmMainContainerView* self = + new ( ELeave ) CWmMainContainerView( aWmPlugin ); + CleanupStack::PushL( self ); + self->ConstructL(); + return self; + } + +// --------------------------------------------------------- +// CWmMainContainerView::ConstructL +// --------------------------------------------------------- +// +void CWmMainContainerView::ConstructL() + { + BaseConstructL( R_WM_MAIN_CONTAINER_VIEW ); + } + +// --------------------------------------------------------- +// CWmMainContainerView::Id +// --------------------------------------------------------- +// +TUid CWmMainContainerView::Id() const + { + return TUid::Uid( EWmMainContainerViewId ); + } + +// --------------------------------------------------------- +// CWmMainContainerView::HandleCommandL +// --------------------------------------------------------- +// +void CWmMainContainerView::HandleCommandL( TInt aCommand ) + { + if ( !iWmMainContainer->ClosingDown() ) + { + switch ( aCommand ) + { + case EWmMainContainerViewOpenPortalMenuItemCommand: + HandleOpenMenuItemSelectedL(); + break; + case EWmMainContainerViewAddMenuItemCommand: + HandleAddMenuItemSelectedL(); + break; + case EWmMainContainerViewLaunchMenuItemCommand: + HandleLaunchMenuItemSelectedL(); + break; + case EWmMainContainerViewSearchMenuItemCommand: // flow through + case EAknSoftkeySearch: + HandleSearchMenuItemSelectedL(); + break; + case EWmMainContainerViewSortAlphaMenuItemCommand: + HandleSortAlphaMenuItemSelectedL(); + break; + case EWmMainContainerViewUninstallMenuItemCommand: + HandleUninstallMenuItemSelectedL(); + break; + case EWmMainContainerViewHelpMenuItemCommand: + HandleHelpMenuItemSelectedL(); + break; + case EWmMainContainerViewBackMenuItemCommand: // flow through + case EAknSoftkeyBack: + iWmPlugin.Deactivate(); + break; + case EWmMainContainerViewWiddetDetailsMenuItemCommand: + HandleDetailsMenuItemSelectedL(); + break; + case EAknSoftkeySelect: + if ( iWmMainContainer ) + iWmMainContainer->SelectL(); + break; + case EAknSoftkeyCancel: // flow through + case EEikCmdCanceled: + { + HandleDeactivateFindPaneL(); + break; + } + default: + break; + } + } + } + +// --------------------------------------------------------- +// CWmMainContainerView::DoActivateL +// --------------------------------------------------------- +// +void CWmMainContainerView::DoActivateL( + const TVwsViewId& aPrevViewId, + TUid /*aCustomMessageId*/, + const TDesC8& /*aCustomMessage*/ ) + { + if ( iWmMainContainer == NULL ) + { + iWmMainContainer = CreateContainerL(); + iWmMainContainer->SetMopParent( this ); + AppUi()->AddToStackL( *this, iWmMainContainer ); + } + + SetupStatusPaneL(); + + iWmPlugin.MainViewActivated( aPrevViewId, iWmMainContainer ); + StatusPane()->SwitchLayoutL( + R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT ); + StatusPane()->ApplyCurrentSettingsL(); + StatusPane()->DrawNow(); + CEikButtonGroupContainer* bgc( Cba() ); + + CEikCba* cba = static_cast< CEikCba* >( bgc->ButtonGroup() ); + if ( cba ) + { + + bgc->SetBoundingRect( TRect() ); + cba->DrawNow(); + } + } + +// --------------------------------------------------------- +// CWmMainContainerView::DoDeactivate +// --------------------------------------------------------- +// +void CWmMainContainerView::DoDeactivate() + { + if ( iWmMainContainer != NULL ) + { + AppUi()->RemoveFromViewStack( *this, iWmMainContainer ); + delete iWmMainContainer; + 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() ); + } + } + + } + +// --------------------------------------------------------- +// CWmMainContainerView::SetupStatusPaneL +// --------------------------------------------------------- +// +void CWmMainContainerView::SetupStatusPaneL() + { + // setup the title pane + TUid titlePaneUid = TUid::Uid( EEikStatusPaneUidTitle ); + CEikStatusPaneBase::TPaneCapabilities subPaneTitle = + StatusPane()->PaneCapabilities( titlePaneUid ); + if ( subPaneTitle.IsPresent() && subPaneTitle.IsAppOwned() ) + { + CAknTitlePane* title = static_cast< CAknTitlePane* >( + StatusPane()->ControlL( titlePaneUid ) ); + if ( title ) + { + TResourceReader reader; + iEikonEnv->CreateResourceReaderLC( + reader, R_WM_MAIN_CONTAINER_TITLE_RESOURCE ); + title->SetFromResourceL( reader ); + title->DrawDeferred(); + CleanupStack::PopAndDestroy(); // reader internal state + } + } + } + +// --------------------------------------------------------- +// CWmMainContainerView::CreateContainerL +// --------------------------------------------------------- +// +CWmMainContainer* CWmMainContainerView::CreateContainerL() + { + return CWmMainContainer::NewL( ClientRect(), iWmPlugin ); + } + +// --------------------------------------------------------- +// CWmMainContainerView::DynInitMenuPaneL +// --------------------------------------------------------- +// +void CWmMainContainerView::DynInitMenuPaneL( + TInt aResourceId, CEikMenuPane* aMenuPane ) + { + if ( aResourceId == R_WM_MAIN_CONTAINER_MENU_PANE && + iWmMainContainer ) + { + aMenuPane->SetItemDimmed( EWmMainContainerViewAddMenuItemCommand, + !iWmMainContainer->CanDoAdd() ); + aMenuPane->SetItemDimmed( EWmMainContainerViewWiddetDetailsMenuItemCommand, + !iWmMainContainer->CanDoDetails() ); + aMenuPane->SetItemDimmed( EWmMainContainerViewLaunchMenuItemCommand, + !iWmMainContainer->CanDoLaunch() ); + aMenuPane->SetItemDimmed( EWmMainContainerViewSearchMenuItemCommand, + !iWmMainContainer->CanDoFind() ); + aMenuPane->SetItemDimmed( EWmMainContainerViewSortAlphaMenuItemCommand, + !iWmMainContainer->CanDoSort() ); + aMenuPane->SetItemDimmed( EWmMainContainerViewHelpMenuItemCommand, + !iWmMainContainer->CanDoHelp() ); + aMenuPane->SetItemDimmed( EWmMainContainerViewUninstallMenuItemCommand, + !iWmMainContainer->CanDoUninstall() ); + if ( !iWmMainContainer->PortalSelected() ) + aMenuPane->DeleteMenuItem( EWmMainContainerViewOpenPortalMenuItemCommand ); + if ( !iWmMainContainer->WidgetSelected() ) + aMenuPane->DeleteMenuItem( EWmMainContainerViewAddMenuItemCommand ); + } + } + +// --------------------------------------------------------- +// CWmMainContainerView::HandleOpenMenuItemSelectedL +// --------------------------------------------------------- +// +TBool CWmMainContainerView::HandleOpenMenuItemSelectedL() + { + if ( iWmMainContainer && iWmMainContainer->PortalSelected() ) + { + iWmMainContainer->OpenOviPortalL(); + } + return ETrue; + } + +// --------------------------------------------------------- +// CWmMainContainerView::HandleDetailsMenuItemSelectedL +// --------------------------------------------------------- +// +TBool CWmMainContainerView::HandleDetailsMenuItemSelectedL() + { + if ( iWmMainContainer && iWmMainContainer->WidgetSelected() ) + { + iWmMainContainer->LaunchDetailsDialogL(); + } + return ETrue; + } + +// --------------------------------------------------------- +// CWmMainContainerView::HandleAddMenuItemSelectedL +// --------------------------------------------------------- +// +TBool CWmMainContainerView::HandleAddMenuItemSelectedL() + { + if ( iWmMainContainer && iWmMainContainer->WidgetSelected() ) + { + iWmMainContainer->AddWidgetToHomeScreenL(); + } + return ETrue; + } + +// --------------------------------------------------------- +// CWmMainContainerView::HandleLaunchMenuItemSelectedL +// --------------------------------------------------------- +// +TBool CWmMainContainerView::HandleLaunchMenuItemSelectedL() + { + if ( iWmMainContainer && iWmMainContainer->WidgetSelected() ) + { + iWmMainContainer->LaunchWidgetL(); + } + return ETrue; + } + +// --------------------------------------------------------- +// CWmMainContainerView::HandleSearchMenuItemSelectedL +// --------------------------------------------------------- +// +TBool CWmMainContainerView::HandleSearchMenuItemSelectedL() + { + if ( iWmMainContainer ) + { + iWmMainContainer->ActivateFindPaneL(); + } + return ETrue; + } + +// --------------------------------------------------------- +// CWmMainContainerView::HandleSortAlphaMenuItemSelectedL +// --------------------------------------------------------- +// +TBool CWmMainContainerView::HandleSortAlphaMenuItemSelectedL() + { + if ( iWmMainContainer ) + { + iWmMainContainer->SortListAlphabeticallyL(); + } + return ETrue; + } + +// --------------------------------------------------------- +// CWmMainContainerView::HandleUninstallMenuItemSelectedL +// --------------------------------------------------------- +// +TBool CWmMainContainerView::HandleUninstallMenuItemSelectedL() + { + if ( iWmMainContainer ) + { + iWmMainContainer->UninstallWidgetL(); + } + return ETrue; + } + +// --------------------------------------------------------- +// CWmMainContainerView::HandleHelpMenuItemSelectedL +// --------------------------------------------------------- +// +TBool CWmMainContainerView::HandleHelpMenuItemSelectedL() + { + iWmMainContainer->ShowHelpL(); + return ETrue; + } + +// --------------------------------------------------------- +// CWmMainContainerView::HandleDeactivateFindPaneL +// --------------------------------------------------------- +// +TBool CWmMainContainerView::HandleDeactivateFindPaneL() + { + if ( iWmMainContainer ) + { + iWmMainContainer->DeactivateFindPaneL(); + } + return ETrue; + } + +// End of file diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/src/wmpersistentwidgetorder.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/src/wmpersistentwidgetorder.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,230 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* Defines an ordered list of widget id's with persistence capability +* +*/ + +// INCLUDES +#include // RFile +#include // streams +#include +#include + +#include "wmwidgetdata.h" +#include "wmpersistentwidgetorder.h" + +// CONSTANTS +_LIT( KStoreFileName, "wmlistorder.dat" ); + + +// --------------------------------------------------------- +// CWmPersistentWidgetOrder::NewL +// --------------------------------------------------------- +// +CWmPersistentWidgetOrder* CWmPersistentWidgetOrder::NewL( RFs& aFs ) + { + CWmPersistentWidgetOrder* self = + new (ELeave) CWmPersistentWidgetOrder( aFs ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +// --------------------------------------------------------- +// CWmPersistentWidgetOrder::CWmPersistentWidgetOrder +// --------------------------------------------------------- +// +CWmPersistentWidgetOrder::CWmPersistentWidgetOrder( RFs& aFs ) + : iFs( aFs ) + { + } + +// --------------------------------------------------------- +// CWmPersistentWidgetOrder::ConstructL +// --------------------------------------------------------- +// +void CWmPersistentWidgetOrder::ConstructL() + { + } + +// --------------------------------------------------------- +// CWmPersistentWidgetOrder::~CWmPersistentWidgetOrder +// --------------------------------------------------------- +// +CWmPersistentWidgetOrder::~CWmPersistentWidgetOrder() + { + CleanupArray(); + } + +// --------------------------------------------------------- +// CWmPersistentWidgetOrder::LoadL +// --------------------------------------------------------- +// +void CWmPersistentWidgetOrder::LoadL() + { + // 1. empty the in-mempory storage + CleanupArray(); + // 2. create stream for reading data from a file + TFileName storeFileName; + GetStoreFileNameL( storeFileName ); + CPermanentFileStore* fileStore = NULL; + fileStore = CPermanentFileStore::OpenL( + iFs, storeFileName, EFileRead ); + CleanupStack::PushL( fileStore ); + RStoreReadStream reader; + reader.OpenLC( *fileStore, fileStore->Root() ); + // 3. read all contents from the stream + TInt arrayCount = reader.ReadInt32L(); + while( iTagArray.Count() < arrayCount ) + { + TInt32 uid = reader.ReadInt32L(); + TInt32 publisherIdLen = reader.ReadInt32L(); + HBufC16* publisherId = HBufC16::NewLC(publisherIdLen); + TPtr16 publisherIdPtr = publisherId->Des(); + reader.ReadL( publisherIdPtr, publisherIdLen ); + iTagArray.AppendL( Tag( uid, publisherId ) ); + CleanupStack::Pop( publisherId ); + } + // 4. cleanup + CleanupStack::PopAndDestroy( &reader ); + CleanupStack::PopAndDestroy( fileStore ); + } + +// --------------------------------------------------------- +// CWmPersistentWidgetOrder::StoreL +// --------------------------------------------------------- +// +void CWmPersistentWidgetOrder::StoreL( const RWidgetDataValues& aArray ) + { + // 1. create stream for storing the data to a file + TFileName storeFileName; + GetStoreFileNameL( storeFileName ); + CPermanentFileStore* fileStore = CPermanentFileStore::ReplaceLC( + iFs, storeFileName, EFileWrite ); + fileStore->SetTypeL( KPermanentFileStoreLayoutUid ); + RStoreWriteStream writer; + TStreamId id = writer.CreateLC( *fileStore ); + // 2. write all content to the stream + writer.WriteInt32L( aArray.Count() ); + for( TInt i=0; iUid().iUid; + const TDesC16& publisherId = aArray[i]->HsContentInfo().PublisherId(); + writer.WriteInt32L( uid ); + writer.WriteInt32L( publisherId.Length() ); + writer.WriteL( publisherId, publisherId.Length() ); + } + // 3. check available space and commit the stream + TInt streamsize = writer.Sink()->SizeL(); + TBool belowCriticalLevel = SysUtil::DiskSpaceBelowCriticalLevelL( + &iFs, streamsize, EDriveC ); + if( !belowCriticalLevel ) + { + writer.CommitL(); + fileStore->SetRootL(id); + fileStore->CommitL(); + } + // 4. cleanup + CleanupStack::PopAndDestroy( &writer ); + CleanupStack::PopAndDestroy( fileStore ); + } + +// --------------------------------------------------------- +// CWmPersistentWidgetOrder::CleanupArray +// --------------------------------------------------------- +// +void CWmPersistentWidgetOrder::CleanupArray() + { + for( TInt i=0; i +#include +#include + +#include "wmcommon.h" +#include "widgetmanager.hrh" +#include "wmmaincontainer.h" +#include "wmmaincontainerview.h" +#include "wmresourceloader.h" +#include "wmplugin.h" +#include "wmeffectmanager.h" +#include + +// --------------------------------------------------------- +// CWmPlugin::NewL +// --------------------------------------------------------- +// +CWmPlugin* CWmPlugin::NewL() + { + CWmPlugin* self=new(ELeave) CWmPlugin(); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + return self; + } + +// --------------------------------------------------------- +// CWmPlugin::~CWmPlugin +// --------------------------------------------------------- +// +CWmPlugin::~CWmPlugin() + { + if ( iViewAppUi ) + { + Deactivate(); + iViewAppUi->RemoveView( TUid::Uid( EWmMainContainerViewId ) ); + } + iWmMainContainer = NULL; + delete iResourceLoader; + delete iEffectManager; + delete iPostponedContent; + } + +// --------------------------------------------------------- +// CWmPlugin::CWmPlugin +// --------------------------------------------------------- +// +CWmPlugin::CWmPlugin() + { + iPreviousViewUid.iViewUid = KNullUid; + } + +// --------------------------------------------------------- +// CWmPlugin::ConstructL +// --------------------------------------------------------- +// +void CWmPlugin::ConstructL() + { + iWmMainContainer = NULL; + + // store static view app ui + CEikonEnv* eikonEnv = CEikonEnv::Static(); + if ( !eikonEnv ) User::Leave( KErrUnknown ); + iViewAppUi = (CAknViewAppUi*)eikonEnv->EikAppUi(); + if ( !iViewAppUi ) User::Leave( KErrUnknown ); + + // create resource loader + iFs = &eikonEnv->FsSession(); + iResourceLoader = CWmResourceLoader::NewL( *eikonEnv ); + iEffectManager = CWmEffectManager::NewL( *eikonEnv ); + + // main view + CWmMainContainerView* mainView = + CWmMainContainerView::NewL( *this ); + CleanupStack::PushL( mainView ); + iViewAppUi->AddViewL( mainView ); + CleanupStack::Pop( mainView ); + } + +// --------------------------------------------------------- +// CWmPlugin::Activate +// --------------------------------------------------------- +// +void CWmPlugin::Activate() + { + if ( !IsActive() && iHsContentController ) + { + TRAP_IGNORE( + iEffectManager->BeginFullscreenEffectL( + KAppStartCommonDefaultStyle ); + iViewAppUi->ActivateLocalViewL( + TUid::Uid( EWmMainContainerViewId ) ); + ); + } + } + +// --------------------------------------------------------- +// CWmPlugin::IsActive +// --------------------------------------------------------- +// +TBool CWmPlugin::IsActive() + { + return ( iPreviousViewUid.iViewUid != KNullUid ); + } + +// --------------------------------------------------------- +// CWmPlugin::Deactivate +// --------------------------------------------------------- +// +void CWmPlugin::Deactivate() + { + if ( IsActive() ) + { + iWmMainContainer->SetClosingDown( ETrue ); + TRAP_IGNORE( + iEffectManager->BeginFullscreenEffectL( + KAppExitCommonDefaultStyle ); + iViewAppUi->ActivateLocalViewL( + iPreviousViewUid.iViewUid ); + ); + } + } + +// --------------------------------------------------------- +// CWmPlugin::MainViewActivated +// --------------------------------------------------------- +// +void CWmPlugin::MainViewActivated( + const TVwsViewId& aViewId, + CWmMainContainer* aWmMainContainer ) + { + iPreviousViewUid = aViewId; + iWmMainContainer = aWmMainContainer; + iEffectManager->UiRendered(); + iWmMainContainer->SetClosingDown( EFalse ); + } + +// --------------------------------------------------------- +// CWmPlugin::MainViewDeactivated +// --------------------------------------------------------- +// +void CWmPlugin::MainViewDeactivated() + { + iPreviousViewUid.iViewUid = KNullUid; + iWmMainContainer = NULL; + iEffectManager->UiRendered(); + + TRAP_IGNORE( ExecutePostponedCommandL(); ); + } + +// --------------------------------------------------------- +// CWmPlugin::SetPostponedCommandL +// --------------------------------------------------------- +// +void CWmPlugin::SetPostponedCommandL( + TCommand aCommand, CHsContentInfo& aContentInfo ) + { + iPostponedCommand = aCommand; + delete iPostponedContent; + iPostponedContent = NULL; + iPostponedContent = aContentInfo.CloneL(); + } + +// --------------------------------------------------------- +// CWmPlugin::ExecutePostponedCommandL +// --------------------------------------------------------- +// +void CWmPlugin::ExecutePostponedCommandL() + { + if ( iPostponedCommand == EAddToHomescreen ) + { + TInt err = ContentController().AddWidgetL( *iPostponedContent ); + if ( err == KHsErrorViewFull || + err == KHsErrorDoesNotFit ) + { + ResourceLoader().InfoPopupL( + R_QTN_HS_ADD_WIDGET_NO_SPACE_NOTE, KNullDesC ); + } + else if ( err == KHsErrorMaxInstanceCountExceeded ) + { + ResourceLoader().InfoPopupL( + R_QTN_HS_ADD_WIDGET_MAX_COUNT_NOTE, KNullDesC ); + } + else if ( err == KErrNoMemory ) + { + ResourceLoader().InfoPopupL( + R_QTN_HS_HS_MEMORY_FULL, KNullDesC ); + } + else if ( err != KErrNone ) + { + ResourceLoader().ErrorPopup( err ); + } + } + iPostponedCommand = ENone; + delete iPostponedContent; + iPostponedContent = NULL; + } + +// --------------------------------------------------------- +// CWmPlugin::MainViewDeactivated +// --------------------------------------------------------- +// +CAknViewAppUi& CWmPlugin::ViewAppUi() + { + return *iViewAppUi; + } + +// --------------------------------------------------------- +// CWmPlugin::MainViewDeactivated +// --------------------------------------------------------- +// +CWmResourceLoader& CWmPlugin::ResourceLoader() + { + return *iResourceLoader; + } + +// --------------------------------------------------------- +// CWmPlugin::MainViewDeactivated +// --------------------------------------------------------- +// +MHsContentController& CWmPlugin::ContentController() + { + return *iHsContentController; + } + +// --------------------------------------------------------- +// CWmPlugin::MainViewDeactivated +// --------------------------------------------------------- +// +RFs& CWmPlugin::FileServer() + { + return *iFs; + } + +// --------------------------------------------------------- +// CWmPlugin::NotifyWidgetListChanged +// --------------------------------------------------------- +// +void CWmPlugin::NotifyWidgetListChanged() + { + if ( iWmMainContainer ) + { + iWmMainContainer->HandleWidgetListChanged(); + } + } + +// End of file diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/src/wmpluginproxy.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/src/wmpluginproxy.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,37 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* widget manager plugin proxy +* +*/ + +#include +#include + +#include "wmplugin.h" + +// Map the interface implementation UIDs to implementation factory functions +const TImplementationProxy ImplementationTable[] = + { + IMPLEMENTATION_PROXY_ENTRY( 0x20026F53, CWmPlugin::NewL ) + }; + + +// Exported proxy for instantiation method resolution. +EXPORT_C const TImplementationProxy* ImplementationGroupProxy( + TInt& aTableCount) + { + aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy); + return ImplementationTable; + } diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/src/wmportalbutton.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/src/wmportalbutton.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,426 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* Implementation of the portal button for WidgetManager +* +*/ + +// INCLUDE FILES +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "wmportalbutton.h" +#include "wmcommon.h" +#include "wmplugin.h" +#include "wmresourceloader.h" +#include "wmmaincontainer.h" + +// MEMBER FUNCTIONS + +// --------------------------------------------------------- +// CWmPortalButton::NewL +// --------------------------------------------------------- +// +CWmPortalButton* CWmPortalButton::NewL( + const CCoeControl* aParent, + const TDesC& aText, + const TDesC& aUrl, + TWmUiControlIds aButtonCtrlId ) + { + CWmPortalButton* self = new (ELeave) CWmPortalButton( + KAknButtonTextInsideFrame, aButtonCtrlId ); + CleanupStack::PushL( self ); + self->ConstructL( aParent,aText, aUrl ); + CleanupStack::Pop( self ); + return self; + } + +// --------------------------------------------------------- +// CWmPortalButton::~CWmPortalButton +// --------------------------------------------------------- +// +CWmPortalButton::~CWmPortalButton() + { + delete iText; + delete iUrl; + delete iImageConverter; + } + +// --------------------------------------------------------- +// CWmPortalButton::CWmPortalButton +// --------------------------------------------------------- +// +CWmPortalButton::CWmPortalButton( + const TInt aFlags, + TWmUiControlIds aButtonCtrlId ) + :CAknButton( aFlags ), + iButtonCtrlId( aButtonCtrlId ) + { + } + +// --------------------------------------------------------- +// CWmPortalButton::ConstructL +// --------------------------------------------------------- +// +void CWmPortalButton::ConstructL( + const CCoeControl* aParent, + const TDesC& aText, const TDesC& aUrl ) + { + if ( !aParent ) + { + User::Leave( KErrArgument ); + } + else if ( iButtonCtrlId != EOviPortal ) + { + // operator button not supported until layout available. + User::Leave( KErrNotSupported ); + } + + SetContainerWindowL( *aParent ); + + // Obtain pointer to main container. + iWmMainContainer = + static_cast ( + const_cast ( aParent ) ); + + CGulIcon* icon = AknsUtils::CreateGulIconL( + AknsUtils::SkinInstance(), KAknsIIDQgnMenuOviStore, + iWmMainContainer->WmPlugin().ResourceLoader().IconFilePath(), + EMbmWidgetmanagerQgn_menu_ovistore, + EMbmWidgetmanagerQgn_menu_ovistore_mask ); + + CleanupStack::PushL( icon ); + CAknButton::ConstructL( icon, NULL, NULL, NULL, + aText, KNullDesC, 0 ); + CleanupStack::Pop( icon ); // ownership taken + + TAknsItemID frameId = ((iButtonCtrlId == EOviPortal) ? + KAknsIIDQgnHomeWmButton : KAknsIIDQsnFrButtonNormal); + TAknsItemID frameCenterId = ((iButtonCtrlId == EOviPortal) ? + KAknsIIDQgnHomeWmButtonCenter : KAknsIIDQsnFrButtonCenterNormal ); + TAknsItemID framePressedId = ((iButtonCtrlId == EOviPortal) ? + KAknsIIDQgnHomeWmButtonPressed : KAknsIIDQsnFrButtonPressed ); + TAknsItemID framePressedCenterId = ((iButtonCtrlId == EOviPortal) ? + KAknsIIDQgnHomeWmButtonPressedCenter : KAknsIIDQsnFrButtonCenterPressed ); + + iText = aText.AllocL(); + iUrl = aUrl.AllocL(); + + SetFocusing( ETrue ); + SetBackgroundIds( frameId, + framePressedId, + KAknsIIDQsnFrButtonInactive, + framePressedId, + KAknsIIDQsnFrButtonInactive ); + SetFrameAndCenterIds( + frameId, + frameCenterId, + KAknsIIDDefault, + KAknsIIDDefault, + KAknsIIDDefault, + KAknsIIDDefault, + framePressedId, + framePressedCenterId, + KAknsIIDDefault, + KAknsIIDDefault ); + + // ready to be drawn + ActivateL(); + } + +// --------------------------------------------------------- +// CWmPortalButton::HandlePointerEventL +// --------------------------------------------------------- +// +void CWmPortalButton::HandlePointerEventL( + const TPointerEvent& aPointerEvent ) + { + CAknButton::HandlePointerEventL( aPointerEvent); + + if ( AknLayoutUtils::PenEnabled() ) + { + switch ( aPointerEvent.iType ) + { + case TPointerEvent::EButton1Down: + { + break; + } + case TPointerEvent::EButton1Up: + { + if ( iWmMainContainer && + iButtonCtrlId == EOviPortal ) + { + iWmMainContainer->OpenOviPortalL(); + } + break; + } + default: + break; + } + } + } + +// --------------------------------------------------------- +// CWmPortalButton::OfferKeyEventL +// --------------------------------------------------------- +// +TKeyResponse CWmPortalButton::OfferKeyEventL( + const TKeyEvent& aKeyEvent, + TEventCode aType ) + { + TKeyResponse keyResponse( EKeyWasNotConsumed ); + keyResponse = CAknButton::OfferKeyEventL( aKeyEvent, aType ); + + if ( ( aType == EEventKey ) && + ( aKeyEvent.iScanCode == EStdKeyDevice3 || + aKeyEvent.iScanCode == EStdKeyEnter ) ) + { + if ( iWmMainContainer && + iButtonCtrlId == EOviPortal ) + { + iWmMainContainer->OpenOviPortalL(); + } + + keyResponse = EKeyWasConsumed; + } + + return keyResponse; + } + +// --------------------------------------------------------- +// CWmPortalButton::SizeChanged +// --------------------------------------------------------- +// +void CWmPortalButton::SizeChanged() + { + CAknButton::SizeChanged(); + + TBool landscape = Layout_Meta_Data::IsLandscapeOrientation(); + TRect rect = Rect(); + TAknLayoutRect imageLayout; + if ( iButtonCtrlId == EOviPortal ) + { + imageLayout.LayoutRect( rect, + AknLayoutScalable_Apps::wgtman_btn_pane_g1( + landscape ? 1 : 0).LayoutLine() ); + } + SetTextVerticalAlignment( CAknButton::ECenter ); + SetIconSize( imageLayout.Rect().Size() ); + SetTextAndIconAlignment( + landscape ? CAknButton::EIconOverText : CAknButton::EIconBeforeText ); + } + +// --------------------------------------------------------- +// CWmPortalButton::NotifyCompletion +// --------------------------------------------------------- +// +void CWmPortalButton::NotifyCompletion( TInt aError ) + { + if ( KErrNone != aError ) + { + // no image available. Do nothing. + } + else + { + CGulIcon* icon = NULL; + TRAPD( err, icon = CGulIcon::NewL( + iImageConverter->Bitmap(), iImageConverter->Mask() ) ); + if ( KErrNone == err && icon ) + { + // Ownership transfered + State()->SetIcon( icon ); + DrawDeferred(); + } + } + } + +// --------------------------------------------------------- +// CWmPortalButton::Draw +// --------------------------------------------------------- +// +void CWmPortalButton::Draw( const TRect& /*aRect*/ ) const + { + TRect rect = Rect(); + + TAknLayoutRect centerLayout; + centerLayout.LayoutRect( rect, + AknLayoutScalable_Avkon::toolbar_button_pane_g1().LayoutLine() ); + TRect innerRect = centerLayout.Rect(); + + CWindowGc& gc = SystemGc(); + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + + TAknsItemID frameId = ( ( iButtonCtrlId == EOviPortal) ? + KAknsIIDQgnHomeWmButton : KAknsIIDQsnFrButtonNormal ); + TAknsItemID frameCenterId = ( ( iButtonCtrlId == EOviPortal) ? + KAknsIIDQgnHomeWmButtonCenter : KAknsIIDQsnFrButtonCenterNormal ); + + if ( iButtonPressed ) + { + frameId = ( ( iButtonCtrlId == EOviPortal) ? + KAknsIIDQgnHomeWmButtonPressed : KAknsIIDQsnFrButtonPressed ); + frameCenterId = ( ( iButtonCtrlId == EOviPortal) ? + KAknsIIDQgnHomeWmButtonPressedCenter : KAknsIIDQsnFrButtonCenterPressed ); + } + else if ( IsDimmed() ) + { + frameId = KAknsIIDQsnFrButtonInactive; + frameCenterId = KAknsIIDQsnFrButtonCenterInactive; + } + else if ( IsFocused() ) + { + frameId = KAknsIIDQsnFrList; + frameCenterId = KAknsIIDQsnFrListCenter; + } + + iBgContext->SetFrame( frameId ); + iBgContext->SetCenter( frameCenterId ); + iBgContext->SetFrameRects( rect, innerRect ); + + if ( !AknsDrawUtils::Background( skin, iBgContext, NULL, + gc, rect, KAknsDrawParamNoClearUnderImage ) ) + { + gc.SetBrushColor( KRgbRed ); + gc.SetBrushStyle( CGraphicsContext::ESolidBrush ); + gc.DrawRect( rect ); + } + gc.SetBrushStyle( CGraphicsContext::ENullBrush ); + + CAknButtonState* state = State(); + if ( state ) + { + TBool landscape = Layout_Meta_Data::IsLandscapeOrientation(); + + const CGulIcon* icon = state->Icon(); + CFbsBitmap* bitmap = const_cast(icon->Bitmap()); + CFbsBitmap* mask = const_cast(icon->Mask()); + // draw image + if ( state->Icon() && bitmap && mask ) + { + TAknLayoutRect imageLayout; + if ( iButtonCtrlId == EOviPortal ) + { + imageLayout.LayoutRect( rect, + AknLayoutScalable_Apps::wgtman_btn_pane_g1( + landscape ? 1 : 0).LayoutLine() ); + } + imageLayout.DrawImage( gc, bitmap, mask ); + } + + // draw text if portrait + if ( !landscape ) + { + TAknTextComponentLayout leftLayout; + if ( iButtonCtrlId == EOviPortal ) + { + leftLayout = AknLayoutScalable_Apps::wgtman_btn_pane_t1( + landscape ? 1 : 0 ); + } + DrawText( gc, state->Text(), leftLayout, 1 ); + } + } + } + +// --------------------------------------------------------- +// CWmPortalButton::DrawText +// --------------------------------------------------------- +// +void CWmPortalButton::DrawText( + CWindowGc& aGc, + const TDesC& aText, + TAknTextComponentLayout& aLayout, + TInt aMargin ) const + { + TAknLayoutText layoutText; + layoutText.LayoutText(Rect(), aLayout.LayoutLine() ); + + const CFont* font = layoutText.Font(); + TRect textRect = layoutText.TextRect(); + + aGc.UseFont( font ); + + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + + TRgb textColor( layoutText.Color() ); + + if ( IsDimmed() ) + { + const TInt KAlpha = 77; + textColor = iEikonEnv->ControlColor( EColorButtonText, *this ); + // try over-writing color from theme, ignore error. + AknsUtils::GetCachedColor( + skin, textColor, KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG6 ); + textColor.SetAlpha( KAlpha ); + } + else if ( IsFocused() || iButtonPressed ) + { + textColor = iEikonEnv->ControlColor( EColorButtonTextPressed, *this ); + // try over-writing color from theme, ignore error. + AknsUtils::GetCachedColor( + skin, textColor, KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG10 ); + } + else if ( textColor.Internal() <= 0 ) + { + textColor = iEikonEnv->ControlColor( EColorButtonText, *this ); + // try over-writing color from theme, ignore error. + AknsUtils::GetCachedColor( + skin, textColor, KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG6 ); + } + aGc.SetPenColor( textColor); + + // Layout data not correct, add some space for text + textRect.iBr.iX += aMargin; + textRect.iTl.iX -= aMargin; + + // buffer for visually ordered text + TBuf<255 + KAknBidiExtraSpacePerLine> visualText; + TInt clipWidth = textRect.Width(); + + // bidi processing - using AknBidiTextUtils. + AknBidiTextUtils::ConvertToVisualAndClip( + aText, + visualText, + *font, + clipWidth, + clipWidth ); + + TInt baselineOffset = 0; + switch ( iVerticalAlignment ) + { + case ETop: + baselineOffset = font->AscentInPixels(); + break; + + case EBottom: + baselineOffset = textRect.Height(); + break; + + default: // centered + baselineOffset = font->AscentInPixels() + + ( textRect.Height() - font->AscentInPixels() ) / 2; + } + + aGc.DrawText( visualText, textRect, + baselineOffset, layoutText.Align() ); + } + +// End of file diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/src/wmresourceloader.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/src/wmresourceloader.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,221 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* loads widget manager resources and icons +* +*/ + +// INCLUDE FILES +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "wmresourceloader.h" + +// CONSTANTS +_LIT( KZdrive, "Z:" ); +_LIT( KRelativeMifPath, "\\resource\\apps\\widgetmanager.mif" ); +_LIT( KRelativeResourcePathWithWildcard, "\\resource\\widgetmanagerview.r*" ); +_LIT( KRelativeResourcePath, "\\resource\\widgetmanagerview.rsc" ); + +// --------------------------------------------------------- +// CWmResourceLoader::NewL +// --------------------------------------------------------- +// +CWmResourceLoader* CWmResourceLoader::NewL( + CEikonEnv& aEnv ) + { + CWmResourceLoader* self = new (ELeave) CWmResourceLoader( aEnv ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +// --------------------------------------------------------- +// CWmResourceLoader::CWmResourceLoader +// --------------------------------------------------------- +// +CWmResourceLoader::CWmResourceLoader( CEikonEnv& aEnv ) + : iEnv( aEnv ) + { + } + +// --------------------------------------------------------- +// CWmResourceLoader::~CWmResourceLoader +// --------------------------------------------------------- +// +CWmResourceLoader::~CWmResourceLoader() + { + UnloadResources(); + delete iNote; + delete iDescription; + } + +// --------------------------------------------------------- +// CWmResourceLoader::ConstructL +// --------------------------------------------------------- +// +void CWmResourceLoader::ConstructL() + { + Dll::FileName( iDllName ); + + LoadResourcesL(); + DetermineIconFilePath(); + + iDescription = StringLoader::LoadL( + R_QTN_WM_DETAILS_NO_DESCRIPTION, &iEnv ); + } + +// --------------------------------------------------------- +// CWmResourceLoader::LoadResourcesL +// --------------------------------------------------------- +// +void CWmResourceLoader::LoadResourcesL() + { + TFileName resourceFile; + RFs& fs = iEnv.FsSession(); + TPtrC dllDrive = iDllName.Left(2); + resourceFile.Copy( dllDrive ); + resourceFile.Append( KRelativeResourcePathWithWildcard ); + BaflUtils::NearestLanguageFile( fs, resourceFile ); + if ( !BaflUtils::FileExists( fs, resourceFile ) ) + { + resourceFile.Copy( dllDrive ); + resourceFile.Append( KRelativeResourcePath ); + BaflUtils::NearestLanguageFile( fs, resourceFile ); + if ( !BaflUtils::FileExists( fs, resourceFile ) && + dllDrive != KZdrive() ) + { + // try to load resource from ROM ( partial upgrade case ) + resourceFile.Copy( KZdrive ); + resourceFile.Append( KRelativeResourcePathWithWildcard ); + BaflUtils::NearestLanguageFile( fs, resourceFile ); + if ( !BaflUtils::FileExists( fs, resourceFile ) ) + { + resourceFile.Copy( KZdrive ); + resourceFile.Append( KRelativeResourcePath ); + BaflUtils::NearestLanguageFile( fs, resourceFile ); + } + } + } + iResourceFileOffset = iEnv.AddResourceFileL( resourceFile ); + } + +// --------------------------------------------------------- +// CWmResourceLoader::UnloadResources +// --------------------------------------------------------- +// +void CWmResourceLoader::UnloadResources() + { + if ( iResourceFileOffset ) + { + iEnv.DeleteResourceFile( iResourceFileOffset ); + } + } + +// --------------------------------------------------------- +// CWmResourceLoader::DetermineIconFilePath +// --------------------------------------------------------- +// +void CWmResourceLoader::DetermineIconFilePath() + { + RFs& fs = iEnv.FsSession(); + iMifFile.Copy( iDllName.Left(2) ); + iMifFile.Append( KRelativeMifPath ); + if ( !BaflUtils::FileExists( fs, iMifFile ) ) + { + // Load from ROM ( partial upgrade case ) + iMifFile.Copy( KZdrive ); + iMifFile.Append( KRelativeMifPath ); + } + } + +// --------------------------------------------------------- +// CWmResourceLoader::IconFilePath +// --------------------------------------------------------- +// +const TDesC& CWmResourceLoader::IconFilePath() + { + return iMifFile; + } + +// --------------------------------------------------------- +// CWmResourceLoader::LoadButtonL +// --------------------------------------------------------- +void CWmResourceLoader::LoadButtonL( + CAknButton& aResource, + TInt aResourceId ) + { + TResourceReader reader; + iEnv.CreateResourceReaderLC( reader, aResourceId ); + aResource.ConstructFromResourceL( reader ); + CleanupStack::PopAndDestroy(); // reader + } + +// --------------------------------------------------------- +// LoadStringLC +// loads a string from resource. If an additional string is +// given (the length is greater than zero) uses a different +// StringLoader method to load. +// --------------------------------------------------------- +// +HBufC* LoadStringLC( TInt aResourceId, const TDesC& aString, CEikonEnv* aEnv ) + { + if ( aString.Length() > 0 ) + return StringLoader::LoadLC( aResourceId, aString, aEnv ); + else + return StringLoader::LoadLC( aResourceId, aEnv ); + } + +// --------------------------------------------------------- +// CWmResourceLoader::InfoPopupL +// --------------------------------------------------------- +// +void CWmResourceLoader::InfoPopupL( TInt aResourceId, const TDesC& aString ) + { + HBufC* infoMsg = LoadStringLC( aResourceId, aString, &iEnv ); + iNote = new (ELeave) CAknInformationNote( &iNote ); + iNote->SetTimeout( CAknNoteDialog::ELongTimeout ); + iNote->ExecuteLD( *infoMsg ); + CleanupStack::PopAndDestroy( infoMsg ); + } + +// --------------------------------------------------------- +// CWmResourceLoader::ErrorPopup +// --------------------------------------------------------- +// +void CWmResourceLoader::ErrorPopup( TInt aErrorCode ) + { + iEnv.HandleError( aErrorCode ); + } + +// --------------------------------------------------------- +// CWmResourceLoader::NoDescriptionText +// --------------------------------------------------------- +// +const TDesC& CWmResourceLoader::NoDescriptionText() + { + return *iDescription; + } + +// end of file + diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/src/wmwidgetdata.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/src/wmwidgetdata.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,416 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* CWmWidgetData implementation. +* +*/ + + +// INCLUDE FILES +#include +#include +#include +#include +#include // widgetreqistry +#include +#include + +#include "wmwidgetdata.h" +#include "wmwidgetdataobserver.h" +#include "wmpersistentwidgetorder.h" +#include "wmcommon.h" +#include + +// --------------------------------------------------------- +// CWmWidgetData::NewL +// --------------------------------------------------------- +// +CWmWidgetData* CWmWidgetData::NewL( + CHsContentInfo* aHsContentInfo, + RWidgetRegistryClientSession* aRegistryClientSession ) + { + CWmWidgetData* self = CWmWidgetData::NewLC( + aHsContentInfo, aRegistryClientSession ); + CleanupStack::Pop(); // self; + return self; + } + +// --------------------------------------------------------- +// CWmWidgetData::NewLC +// --------------------------------------------------------- +// +CWmWidgetData* CWmWidgetData::NewLC( + CHsContentInfo* aHsContentInfo, + RWidgetRegistryClientSession* aRegistryClientSession ) + { + CWmWidgetData* self = new ( ELeave ) CWmWidgetData(); + CleanupStack::PushL(self); + self->ConstructL( aHsContentInfo, aRegistryClientSession ); + return self; + } + +// --------------------------------------------------------- +// CWmWidgetData::CWmWidgetData +// --------------------------------------------------------- +// +CWmWidgetData::CWmWidgetData() + { + iIdle = NULL; + iLogoImage = NULL; + iLogoImageMask = NULL; + iHsContentInfo = NULL; + iWidgetType = CWmWidgetData::EUnknown; + iInstallAnimationIndex = KErrNotFound; + iPublisherUid = KNullUid; + iLogoSize = TSize( 0, 0 ); + } + +// --------------------------------------------------------- +// CWmWidgetData::ConstructL +// --------------------------------------------------------- +// +void CWmWidgetData::ConstructL( + CHsContentInfo* aHsContentInfo, + RWidgetRegistryClientSession* aRegistryClientSession ) + { + InitL( aHsContentInfo, aRegistryClientSession ); + + // start decoding the icon + iImageConverter = CWmImageConverter::NewL( this ); + iIdle = CIdle::NewL( CActive::EPriorityLow ); + iIdle->Start( TCallBack( HandleAsyncIconString, this ) ); + } + +// --------------------------------------------------------- +// CWmWidgetData::InitL +// --------------------------------------------------------- +// +void CWmWidgetData::InitL( + CHsContentInfo* aHsContentInfo, + RWidgetRegistryClientSession* aRegistryClientSession ) + { + // analyse the widget type + if ( aHsContentInfo->Type() == KContentTemplate ) + { + iWidgetType = CWmWidgetData::ECps; // wrt widgets included in this gategory + } + else if ( aHsContentInfo->Type() == KContentWidget ) + { + iWidgetType = CWmWidgetData::ENative; + } + + // take ownership of the content info + iHsContentInfo = aHsContentInfo; + + // get publisher uid from widget registry + FetchPublisherUidL( aRegistryClientSession ); + + } + +// --------------------------------------------------------- +// CWmWidgetData::~CWmWidgetData +// --------------------------------------------------------- +// +CWmWidgetData::~CWmWidgetData() + { + if ( iIdle && iIdle->IsActive() ) + { + iIdle->Cancel(); + } + delete iIdle; + SetObserver( NULL ); + delete iLogoImage; + delete iLogoImageMask; + delete iImageConverter; + delete iHsContentInfo; + } + +// --------------------------------------------------------- +// CWmWidgetData::SetObserver +// --------------------------------------------------------- +// +void CWmWidgetData::SetObserver( MWmWidgetDataObserver* aObserver ) + { + iObserver = aObserver; + } + +// --------------------------------------------------------- +// CWmWidgetData::SetObserver +// --------------------------------------------------------- +// +void CWmWidgetData::SetPersistentWidgetOrder( + const CWmPersistentWidgetOrder* aPersistentWidgetOrder ) + { + iPersistentWidgetOrder = aPersistentWidgetOrder; + } + +// --------------------------------------------------------- +// CWmWidgetData::EqualsTo +// --------------------------------------------------------- +// +TBool CWmWidgetData::EqualsTo( CHsContentInfo& aContentInfo ) + { + return ( + HsContentInfo().Uid() == aContentInfo.Uid() && + HsContentInfo().PublisherId() == aContentInfo.PublisherId() ); + } + +// --------------------------------------------------------- +// CWmWidgetData::CompareByName +// --------------------------------------------------------- +// +TInt CWmWidgetData::CompareByName( + const CWmWidgetData& aDataOne, const CWmWidgetData& aDataTwo ) + { + // negate the result for ascending alphabetical order + TInt result = aDataOne.Name().CompareC( aDataTwo.Name() ); + return result; + } + +// --------------------------------------------------------- +// CWmWidgetData::CompareByPersistentWidgetOrder +// --------------------------------------------------------- +// +TInt CWmWidgetData::CompareByPersistentWidgetOrder( + const CWmWidgetData& aDataOne, const CWmWidgetData& aDataTwo ) + { + TInt result; + const CWmPersistentWidgetOrder* order = aDataOne.iPersistentWidgetOrder; + if ( order && !order->IsEmpty() ) + { + result = order->IndexOf( aDataOne ) - order->IndexOf( aDataTwo ); + } + else + { + // fallback: if persistent widget order is not available + // or it is empty (this is the case on first start, or if the persistent + // file is corrupted or deleted) -> order widgets by name. + result = CompareByName( aDataOne, aDataTwo ); + } + return result; + } + +// --------------------------------------------------------- +// CWmWidgetData::NotifyCompletion +// --------------------------------------------------------- +// +void CWmWidgetData::NotifyCompletion( TInt aError ) + { + delete iLogoImage; + iLogoImage = NULL; + delete iLogoImageMask; + iLogoImageMask = NULL; + if ( KErrNone != aError ) + { + // no image available. Do nothing. + } + else + { + iLogoImage = iImageConverter->Bitmap(); + iLogoImageMask = iImageConverter->Mask(); + FireDataChanged(); + } + } + +// --------------------------------------------------------- +// CWmWidgetData::HandleIconStringL +// --------------------------------------------------------- +// +void CWmWidgetData::HandleIconStringL( const TDesC& aIconStr ) + { + HBufC* iconStr = NULL; + if ( aIconStr.Length() == 0 && + iPublisherUid != KNullUid ) + { + // workaround for wrt widgets icon + _LIT( KUidTag, "uid(0x%x)" ); + const TInt KLength = 32; + iconStr = HBufC::NewLC( KLength ); + iconStr->Des().Format( KUidTag, iPublisherUid.iUid ); + } + else + { + iconStr = aIconStr.AllocLC(); + } + + TSize size( iLogoSize ); + if ( iLogoImage ) { size = iLogoImage->SizeInPixels(); } + if ( size != iLogoSize && + iLogoSize.iWidth > 0 && iLogoSize.iHeight > 0 ) + { + size = iLogoSize; + } + iImageConverter->HandleIconStringL( + size.iWidth, size.iHeight, *iconStr ); + + CleanupStack::PopAndDestroy( iconStr ); + } + +// --------------------------------------------------------- +// CWmWidgetData::FireDataChanged +// --------------------------------------------------------- +// +void CWmWidgetData::FireDataChanged() + { + if ( iObserver ) + { + iObserver->HandleWidgetDataChanged( this ); + } + } + +// ---------------------------------------------------- +// CWmWidgetData::UidFromString +// ---------------------------------------------------- +// +TUid CWmWidgetData::UidFromString( const TDesC8& aUidString ) const + { + TUid uid( TUid::Null() ); + const TInt KHexPrefixLength = 2; + if ( aUidString.Length() > KHexPrefixLength ) + { + TUint id = 0; + TLex8 lex( aUidString.Mid( KHexPrefixLength ) ); + if ( lex.Val( id, EHex ) == KErrNone ) + { + uid.iUid = (TInt32)id; + } + } + return uid; + } + +// ---------------------------------------------------- +// CWmWidgetData::PublisherUid +// ---------------------------------------------------- +// +TUid CWmWidgetData::PublisherUid() + { + return iPublisherUid; + } + +// ---------------------------------------------------- +// CWmWidgetData::FetchPublisherUidL +// ---------------------------------------------------- +// +void CWmWidgetData::FetchPublisherUidL( + RWidgetRegistryClientSession* aRegistryClientSession ) + { + if ( iPublisherUid == KNullUid && + PublisherId() != KNullDesC && + iWidgetType != CWmWidgetData::ENative && + aRegistryClientSession ) + { + TInt widgetUid = aRegistryClientSession->GetWidgetUidL( PublisherId() ); + if ( widgetUid != 0 ) + { + // WRT widget + iPublisherUid = TUid::Uid( widgetUid ); + + HBufC* desc = StringLoader::LoadLC( R_QTN_WM_WIDGET_DETAILS_WRT, + CEikonEnv::Static() ); + iHsContentInfo->SetDescriptionL( *desc ); + CleanupStack::PopAndDestroy( desc ); + } + else + { + iPublisherUid = KNullUid; + } + } + } +// ---------------------------------------------------- +// CWmWidgetData::SetLogoSize +// ---------------------------------------------------- +// +void CWmWidgetData::SetLogoSize( const TSize& aSize ) + { + iLogoSize = aSize; + if ( iImageConverter ) + { + iImageConverter->SetLogoSize( aSize ); + } + } + +// --------------------------------------------------------- +// CWmWidgetData::HandleAsyncIconString +// --------------------------------------------------------- +// +TInt CWmWidgetData::HandleAsyncIconString( TAny* aPtr ) + { + CWmWidgetData* self = static_cast< CWmWidgetData* >( aPtr ); + if ( self->iIdle->IsActive() ) + { + self->iIdle->Cancel(); + } + TRAP_IGNORE( self->HandleIconStringL( + self->HsContentInfo().IconPath() ); ); + return KErrNone; + } + +// --------------------------------------------------------- +// CWmWidgetData::ReCreateLogo +// --------------------------------------------------------- +// +void CWmWidgetData::ReCreateLogo( const TSize& aSize ) + { + iLogoSize = aSize; + + delete iLogoImage; + iLogoImage = NULL; + delete iLogoImageMask; + iLogoImageMask = NULL; + + if ( iIdle && !iIdle->IsActive() ) + { + // start decoding the icon + iIdle->Start( TCallBack( HandleAsyncIconString, this ) ); + } + } + +// --------------------------------------------------------- +// CWmWidgetData::ReplaceContentInfoL +// --------------------------------------------------------- +// +TBool CWmWidgetData::ReplaceContentInfoL( + CHsContentInfo* aHsContentInfo ) + { + TBool sameAppearance = ( + iHsContentInfo->Name() == aHsContentInfo->Name() && + iHsContentInfo->Description() == aHsContentInfo->Description() && + iHsContentInfo->CanBeAdded() == aHsContentInfo->CanBeAdded() ); + TBool sameLogo = ( + iHsContentInfo->IconPath() == aHsContentInfo->IconPath() ); + + // delete the old content info + delete iHsContentInfo; + iHsContentInfo = NULL; + + // re-init the object + InitL( aHsContentInfo, NULL ); + + if ( !sameAppearance ) + { + // fire change event -> widget redrawn + FireDataChanged(); + } + + if ( !sameLogo ) + { + // re-convert image + // change event will be fired later when bitmap is ready + ReCreateLogo( iLogoSize ); + } + + return !( sameAppearance && sameLogo ); + } +// End of file + diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/src/wmwidgetloaderao.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/src/wmwidgetloaderao.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,271 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* Active object to load widgets into list +* +*/ + +// INCLUDE FILES +#include "wmcommon.h" +#include "wmplugin.h" +#include "wmresourceloader.h" +#include "wmpersistentwidgetorder.h" +#include "wmlistbox.h" +#include "wmwidgetloaderao.h" + +#include // content control api +#include // content control api +#include // widget reqistry +#include // avkon resources +#include // TResourceReader + +// --------------------------------------------------------------------------- +// CWmWidgetLoaderAo::NewL +// --------------------------------------------------------------------------- +// +CWmWidgetLoaderAo* CWmWidgetLoaderAo::NewL( + CWmPlugin& aWmPlugin, + CWmListBox& aTargetList ) + { + CWmWidgetLoaderAo* self = new (ELeave) CWmWidgetLoaderAo( + aWmPlugin, aTargetList ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +// --------------------------------------------------------------------------- +// CWmWidgetLoaderAo::NewL +// --------------------------------------------------------------------------- +// +CWmWidgetLoaderAo::CWmWidgetLoaderAo( + CWmPlugin& aWmPlugin, + CWmListBox& aTargetList ) + : CAsyncOneShot( EPriorityStandard ) + , iWmPlugin( aWmPlugin ) + , iWidgetsList( aTargetList ) + { + iWidgetRegistry = NULL; + iWidgetOrder = NULL; + } + +// --------------------------------------------------------------------------- +// CWmWidgetLoaderAo::ConstructL +// --------------------------------------------------------------------------- +// +void CWmWidgetLoaderAo::ConstructL() + { + } + +// --------------------------------------------------------------------------- +// CWmWidgetLoaderAo::~CWmWidgetLoaderAo +// --------------------------------------------------------------------------- +// +CWmWidgetLoaderAo::~CWmWidgetLoaderAo() + { + // cancel ongoing operation + Cancel(); + + // cleanup run data + Cleanup(); + + } + +// --------------------------------------------------------------------------- +// CWmWidgetLoaderAo::StartLoading +// --------------------------------------------------------------------------- +// +void CWmWidgetLoaderAo::StartLoading() + { + if ( IsActive() ) + { + // cancel ongoing process + Cancel(); + } + Call(); + } + +// --------------------------------------------------------------------------- +// CWmWidgetLoaderAo::RunL +// --------------------------------------------------------------------------- +// +void CWmWidgetLoaderAo::RunL() + { + DoLoadWidgetsL(); + Cleanup(); + } + +// --------------------------------------------------------------------------- +// CWmWidgetLoaderAo::RunError +// --------------------------------------------------------------------------- +// +TInt CWmWidgetLoaderAo::RunError( TInt /*aError*/ ) + { + Cleanup(); + return KErrNone; + } + +// --------------------------------------------------------- +// CWmWidgetLoaderAo::DoLoadWidgetsL +// --------------------------------------------------------- +// +void CWmWidgetLoaderAo::DoLoadWidgetsL() + { + // 1. mark all the existing widgets initially non-valid + for( TInt i=0; iLoadL() ); + + // 4. loop through the content array and compare it against the existing + // widget data. + TInt widgetsAdded = 0; + TInt widgetsChanged = 0; + while( contentInfoArray->Array().Count() > 0 ) + { + CHsContentInfo* contentInfo = contentInfoArray->Array()[0]; + contentInfoArray->Array().Remove( 0 ); + + // check if this widget exists. + // if it does, keep the existing one + // if it does not, add it + CWmWidgetData* existingData = FindWidgetData( *contentInfo ); + if ( existingData ) + { + // update existing widget data + existingData->SetValid( ETrue ); + if ( existingData->ReplaceContentInfoL( contentInfo ) ) + { + ++widgetsChanged; + } + } + else + { + // add a new widget data + AddWidgetDataL( contentInfo ); + ++widgetsAdded; + } + } + + // 5: finally, remove all UI widgets that during the loading process were + // NOT marked as VALID. those widgets do not exist anymore. + TInt widgetsRemoved = 0; + for( TInt i=0; i 0 ) + { + iWidgetsList.DrawDeferred(); + } + + // 6: cleanup + CleanupStack::PopAndDestroy( contentInfoArray ); + + // 7. check list empty condition + if ( iWidgetsList.WidgetDataCount() == 0 ) + { + TResourceReader rr; + CEikonEnv::Static()->CreateResourceReaderLC( + rr, R_AVKON_LISTBOX_DEFAULT_EMPTY_TEXT ); + TPtrC empty= rr.ReadTPtrC(); + iWidgetsList.View()->SetListEmptyTextL( empty ); + CleanupStack::PopAndDestroy(); + iWidgetsList.DrawDeferred(); + } + + // 8. store list order if necessary + if ( loadError != KErrNone || widgetsAdded > 0 || widgetsRemoved > 0 ) + { + iWidgetOrder->StoreL( iWidgetsList.WidgetDataArray() ); + } + + } + +// --------------------------------------------------------- +// CWmWidgetLoaderAo::FindWidgetDataL +// --------------------------------------------------------- +// +CWmWidgetData* CWmWidgetLoaderAo::FindWidgetData( + CHsContentInfo& aContentInfo ) + { + CWmWidgetData* data = NULL; + for( TInt i=0; iConnect() ); + } + CleanupStack::Pop( aContentInfo ); + + CWmWidgetData* widgetData = CWmWidgetData::NewLC( + aContentInfo, iWidgetRegistry ); + widgetData->SetPersistentWidgetOrder( iWidgetOrder ); + widgetData->SetValid( ETrue ); + iWidgetsList.AddWidgetDataL( widgetData ); + CleanupStack::Pop( widgetData ); + } + +// --------------------------------------------------------------------------- +// CWmWidgetLoaderAo::Cleanup +// --------------------------------------------------------------------------- +// +void CWmWidgetLoaderAo::Cleanup() + { + // disconnect widget registry + if ( iWidgetRegistry ) + { + iWidgetRegistry->Disconnect(); + iWidgetRegistry->Close(); + delete iWidgetRegistry; + iWidgetRegistry = NULL; + } + + // delete widget order + delete iWidgetOrder; + iWidgetOrder = NULL; + } + +// end of file + diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/tsrc/wmunittest/bwins/wmunittestu.def --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/tsrc/wmunittest/bwins/wmunittestu.def Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,3 @@ +EXPORTS + ?LibEntryL@@YAPAVCScriptBase@@AAVCTestModuleIf@@@Z @ 1 NONAME ; class CScriptBase * LibEntryL(class CTestModuleIf &) + diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/tsrc/wmunittest/conf/ui_wmunittest.cfg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/tsrc/wmunittest/conf/ui_wmunittest.cfg Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,909 @@ +//------------------------------------------------------------------------------- +// constants +//------------------------------------------------------------------------------- +// +[Define] + +TRUE 1 +FALSE 0 + +OK 0 +FAIL -1 + +MAX_WIDGET_AMOUNT 1000 // non-functional requirement + +NAME 100 +DESCRIPTION 101 +LOGO_PATH 102 +CAN_BE_ADDED 103 +CAN_BE_REMOVED 104 + +EUnrecognized 0 +EUidIcon 1 +ESvgIcon 2 +ESkinIcon 3 +EMifIcon 4 +ESkinAndMifIcon 5 +EImageIcon 6 + +[Enddefine] + +//------------------------------------------------------------------------------- +// Test cases for the plugin +//------------------------------------------------------------------------------- +// + + +// Tests WmPlugin construction +[Test] +title WmPlugin create/delete +create wmunittest test +test HeapSet +test PluginCreate +pause 500 +test PluginDelete +test HeapCheck +delete test +[Endtest] + +// Heap usage logging +[Test] +title WmPlugin memcon test +create wmunittest test +test HeapSet +test LogHeap "before wm" +test PluginCreate +test LogHeap "wm Active" +// +test SetMass 10 +test PluginActivate +pause 500 +test LogHeap "10 widgets" +// +test SetMass 20 +test PluginWidgetsChanged +pause 250 +test LogHeap "20 widgets" +// +test SetMass 30 +test PluginWidgetsChanged +pause 250 +test LogHeap "30 widgets" +// +test SetMass 40 +test PluginWidgetsChanged +pause 250 +test LogHeap "40 widgets" +// +test SetMass 50 +test PluginWidgetsChanged +pause 250 +test LogHeap "50 widgets" +// +test SetMass 60 +test PluginWidgetsChanged +pause 250 +test LogHeap "60 widgets" +// +test SetMass 70 +test PluginWidgetsChanged +pause 250 +test LogHeap "70 widgets" +// +test SetMass 80 +test PluginWidgetsChanged +pause 250 +test LogHeap "80 widgets" +// +test SetMass 90 +test PluginWidgetsChanged +pause 250 +test LogHeap "90 widgets" +// +test SetMass 100 +test PluginWidgetsChanged +pause 250 +test LogHeap "100 widgets" +// +test SetMass 200 +test PluginWidgetsChanged +pause 250 +test LogHeap "200 widgets" +// +test SetMass 300 +test PluginWidgetsChanged +pause 250 +test LogHeap "300 widgets" +// +test SetMass 400 +test PluginWidgetsChanged +pause 250 +test LogHeap "400 widgets" +// +test SetMass 500 +test PluginWidgetsChanged +pause 250 +test LogHeap "500 widgets" +// +test PluginDeactivate +pause 250 +test LogHeap "wm deactive" +// +test PluginDeactivate +pause 500 +test PluginDelete +test HeapCheck +test LogHeap "after wm" +delete test +[Endtest] + +// Tests WmPlugin Activate method +[Test] +title WmPlugin activate/deactivate +create wmunittest test +test HeapSet +test PluginCreate +test SetMass 10 +test PluginActivate +pause 500 +test PluginDeactivate +pause 500 +test PluginDelete +test HeapCheck +delete test +[Endtest] + +// Tests WmPlugin NotifyWidgetListChanged 10->10 wigets +[Test] +title WmPlugin notify 10->10 +create wmunittest test +test HeapSet +test PluginCreate +test SetMass 10 +test PluginActivate +pause 500 +test SetMass 10 +test PluginWidgetsChanged +pause 500 +test PluginDeactivate +pause 500 +test PluginDelete +test HeapCheck +delete test +[Endtest] + +// Tests WmPlugin NotifyWidgetListChanged 10->11 widgets +[Test] +title WmPlugin notify 10->11 +create wmunittest test +test HeapSet +test PluginCreate +test SetMass 10 +test PluginActivate +pause 500 +test SetMass 11 +test PluginWidgetsChanged +pause 500 +test PluginDeactivate +pause 500 +test PluginDelete +test HeapCheck +delete test +[Endtest] + +// Tests WmPlugin NotifyWidgetListChanged 10->9 widgets +[Test] +title WmPlugin notify 10->9 +create wmunittest test +test HeapSet +test PluginCreate +test SetMass 10 +test PluginActivate +pause 500 +test SetMass 9 +test PluginWidgetsChanged +pause 500 +test PluginDeactivate +pause 500 +test PluginDelete +test HeapCheck +delete test +[Endtest] + +// Tests WmPlugin NotifyWidgetListChanged 0->10 widgets +[Test] +title WmPlugin notify 0->10 +create wmunittest test +test HeapSet +test PluginCreate +test SetMass 0 +test PluginActivate +pause 500 +test SetMass 10 +test PluginWidgetsChanged +pause 500 +test PluginDeactivate +pause 500 +test PluginDelete +test HeapCheck +delete test +[Endtest] + +// Tests WmPlugin NotifyWidgetListChanged 10->0 widgets +[Test] +title WmPlugin notify 10->0 +create wmunittest test +test HeapSet +test PluginCreate +test SetMass 10 +test PluginActivate +pause 500 +test SetMass 0 +test PluginWidgetsChanged +pause 500 +test PluginDeactivate +pause 500 +test PluginDelete +test HeapCheck +delete test +[Endtest] + +// Tests WmPlugin NotifyWidgetListChanged with ridiculous amount of widgets +// testing the OOM error handling +[Test] +title WmPlugin notify OOM +create wmunittest test +test HeapSet +test PluginCreate +test SetMass 10 +test PluginActivate +pause 500 +test SetMass 10000 +test PluginWidgetsChanged +pause 500 +test PluginDeactivate +pause 500 +test PluginDelete +test HeapCheck +delete test +[Endtest] + +// Tests WmPlugin with large data amount +[Test] +title WmPlugin capacity +create wmunittest test +test HeapSet +test PluginCreate +test SetMass MAX_WIDGET_AMOUNT +test PluginActivate +pause 3000 +test PluginDelete +test HeapCheck +delete test +[Endtest] + +// Tests WmPlugin by notifying widget list changed hundreds of times +// with different widget amounts and different timeouts. Target is to +// interrupt the previous update process test that it is cancelled ok +[Test] +title WmPlugin robustness +create wmunittest test +test HeapSet +test PluginCreate +test SetMass 5 +test PluginActivate +pause 500 +loop 100 +test SetMass 10 +test PluginWidgetsChanged +pause 10 +test SetMass 15 +test PluginWidgetsChanged +pause 90 +test SetMass 11 +test PluginWidgetsChanged +pause 50 +test SetMass 16 +test PluginWidgetsChanged +pause 120 +endloop +test PluginDeactivate +pause 500 +test PluginDelete +test HeapCheck +delete test +[Endtest] + +// Tests WmPlugin by notifying widget list changed hundreds of times +// with no change in the widget list at all -> there should be no +// unnecessary drawing in widget manager UI at all +[Test] +title WmPlugin robustness 2 +create wmunittest test +test HeapSet +test PluginCreate +test SetMass 5 +test PluginActivate +pause 500 +loop 100 +test SetMass 10 +test PluginWidgetsChanged +endloop +pause 500 +test PluginDeactivate +pause 500 +test PluginDelete +test HeapCheck +delete test +[Endtest] + + +//------------------------------------------------------------------------------- +// Test cases for notifications where widget data changes +//------------------------------------------------------------------------------- +// + +// Tests WmPlugin Notify one widget name changes +[Test] +title WmPlugin change name +create wmunittest test +test HeapSet +test PluginCreate +test SetMass 5 +test PluginActivate +pause 1000 +test ChangeContent 1 NAME "New widget name!" +test PluginWidgetsChanged +pause 1000 +test ChangeContent 1 NAME "Name changes again!" +test PluginWidgetsChanged +pause 1000 +test PluginDeactivate +pause 500 +test PluginDelete +test HeapCheck +delete test +[Endtest] + +// Tests WmPlugin Notify one widget descr. changes +[Test] +title WmPlugin change description +create wmunittest test +test HeapSet +test PluginCreate +test SetMass 5 +test PluginActivate +pause 1000 +test ChangeContent 1 DESCRIPTION "New description!" +test PluginWidgetsChanged +pause 1000 +test ChangeContent 1 DESCRIPTION "Description changes again!" +test PluginWidgetsChanged +pause 1000 +test PluginDeactivate +pause 500 +test PluginDelete +test HeapCheck +delete test +[Endtest] + +// Tests WmPlugin Notify one widget logo changes +[Test] +title WmPlugin change logo +create wmunittest test +test HeapSet +test PluginCreate +test SetMass 5 +test PluginActivate +pause 1000 +test ChangeContent 1 LOGO_PATH "uid(0x10005901)" +test PluginWidgetsChanged +pause 1000 +test ChangeContent 1 LOGO_PATH "c:\testframework\wmunittest\wmlogo\logo.svg" +test PluginWidgetsChanged +pause 1000 +test PluginDeactivate +pause 500 +test PluginDelete +test HeapCheck +delete test +[Endtest] + +// Tests WmPlugin Notify CanbeAdded values change +[Test] +title WmPlugin change plus-sign +create wmunittest test +test HeapSet +test PluginCreate +test SetMass 5 +test PluginActivate +pause 1000 +test ChangeContent 1 CAN_BE_ADDED "0" +test PluginWidgetsChanged +pause 1000 +test ChangeContent 1 CAN_BE_ADDED "1" +test PluginWidgetsChanged +pause 1000 +test PluginDeactivate +pause 500 +test PluginDelete +test HeapCheck +delete test +[Endtest] + + + +//------------------------------------------------------------------------------- +// Test cases for the persistent widget order +//------------------------------------------------------------------------------- +// + +// Tests persistent widget order NewL method +[Test] +title Widget order create +create wmunittest test +test HeapSet +test WidgetOrderCreate +test WidgetOrderCheckIsEmpty TRUE +test WidgetOrderDelete +test HeapCheck +delete test +[Endtest] + +// Test persistent widget order STORE method +[Test] +title Widget order store +create wmunittest test +test HeapSet +test WidgetOrderCreate +test SetMass 5 +test WidgetOrderSave +test WidgetOrderDelete +test HeapCheck +delete test +[Endtest] + +// Test persistent widget order STORE method when storing an empty array +[Test] +title Widget order store empty +create wmunittest test +test HeapSet +test WidgetOrderCreate +test SetMass 0 +test WidgetOrderSave +test WidgetOrderDelete +test HeapCheck +delete test +[Endtest] + + +// Tests persistent widget order LOAD method +[Test] +title Widget order load +create wmunittest test +test HeapSet +test WidgetOrderCreate +test SetMass 5 +test WidgetOrderSave +test WidgetOrderDelete +test WidgetOrderCreate +test WidgetOrderLoad +test WidgetOrderCheckIsEmpty FALSE +test WidgetOrderDelete +test HeapCheck +delete test +[Endtest] + +// Tests persistent widget order LOAD method when count is ZERO +[Test] +title Widget order load empty +create wmunittest test +test HeapSet +test WidgetOrderCreate +test SetMass 0 +test WidgetOrderSave +test WidgetOrderDelete +test WidgetOrderCreate +test WidgetOrderLoad +test WidgetOrderCheckIsEmpty TRUE +test WidgetOrderDelete +test HeapCheck +delete test +[Endtest] + +// Tests persistent widget order INDEXOF method +[Test] +title Widget order use +create wmunittest test +test HeapSet +test WidgetOrderCreate +test SetMass 8 +test WidgetOrderSave +test WidgetOrderDelete +test WidgetOrderCreate +test WidgetOrderLoad +test WidgetOrderCheckIsEmpty FALSE +test SetMass 7 +test WidgetOrderUse +test WidgetOrderDelete +test HeapCheck +delete test +[Endtest] + +// Tests persistent widget order INDEXOF method when class is empty +[Test] +title Widget order use empty +create wmunittest test +test HeapSet +test WidgetOrderCreate +test SetMass 0 +test WidgetOrderSave +test WidgetOrderDelete +test WidgetOrderCreate +test WidgetOrderLoad +test WidgetOrderCheckIsEmpty TRUE +test SetMass 18 +test WidgetOrderUse +test WidgetOrderDelete +test HeapCheck +delete test +[Endtest] + +// Tests persistent widget order with large data amount +[Test] +title Widget order capacity +create wmunittest test +test HeapSet +test WidgetOrderCreate +test SetMass MAX_WIDGET_AMOUNT +test WidgetOrderSave +test WidgetOrderDelete +test WidgetOrderCreate +test WidgetOrderLoad +test SetMass MAX_WIDGET_AMOUNT +test WidgetOrderUse +test WidgetOrderDelete +test HeapCheck +delete test +[Endtest] + +// Tests persistent widget order save & load 100 times in sequence +[Test] +title Widget order robustness +create wmunittest test +test HeapSet +test WidgetOrderCreate +test SetMass 100 +loop 100 +test WidgetOrderSave +endloop +test WidgetOrderDelete +test WidgetOrderCreate +test SetMass 100 +loop 100 +test WidgetOrderLoad +endloop +test WidgetOrderUse +test WidgetOrderDelete +test HeapCheck +delete test +[Endtest] + + +//------------------------------------------------------------------------------- +// Test cases for the image converter +//------------------------------------------------------------------------------- +// + +// Tests image converter NewL method +[Test] +title Image converter create delete +create wmunittest test +test HeapSet +test ImageConverterCreate +test ImageConverterConversionMethod EUnrecognized +test ImageConverterDelete +test HeapCheck +delete test +[Endtest] + +// Tests malformed icon string +[Test] +title malformed image formats +create wmunittest test +test HeapSet +test ImageConverterCreate +test ImageConverterConvert "foo bar" +test ImageConverterWaitResult FAIL +test ImageConverterConvert "*************" +test ImageConverterWaitResult FAIL +test ImageConverterConvert "uid skin mif logo icon jpg jpeg icon" +test ImageConverterWaitResult FAIL +test ImageConverterConvert "girl.jpg" +test ImageConverterWaitResult FAIL +test ImageConverterConvert "dirty_hack.exe" +test ImageConverterWaitResult FAIL +test ImageConverterConvert "c:/testframework/wmunittest/wmlogo/logo.jpg" +test ImageConverterWaitResult FAIL +test ImageConverterConvert "skin (0x10005a26 0x1000 )" +test ImageConverterWaitResult FAIL +test ImageConverterConvert "mif ( c:\testframework\wmunittest\wmlogo\logo.mif 16384 16385)" +test ImageConverterWaitResult FAIL +test ImageConverterConvert "skin( 0x100056c6 0x86 ):mif ( c:\testframework\wmunittest\wmlogo\logo.mif 16384 16385 )" +test ImageConverterWaitResult FAIL +test ImageConverterConvert "skin ( 0x101f84b7 0x1000594D ) : mif ( c:\testframework\wmunittest\wmlogo\logo.mif 16384 16385 )" +test ImageConverterWaitResult FAIL +test ImageConverterConvert " uid(0x10005901 )" +test ImageConverterWaitResult FAIL +test ImageConverterConvert "uid (268458241 )" +test ImageConverterWaitResult FAIL +test ImageConverterConvert "uid (0x10005901)" +test ImageConverterWaitResult FAIL +test ImageConverterDelete +test HeapCheck +delete test +[Endtest] + + +// Tests image converter with skin syntax +// this test will never pass on STIF because STIF AppUI does +// not have EAknEnableSkin flag defined in its BaseConstructL +// therefore commented out. +/* +[Test] +title Image converter skin +create wmunittest test +test HeapSet +test ImageConverterCreate +test ImageConverterConvert "skin(0x101F86E3 0x100d)" +test ImageConverterWaitResult OK +test ImageConverterConversionMethod ESkinIcon +test ImageConverterDelete +test HeapCheck +delete test +[Endtest] +*/ + +// Tests image converter skin method with null skin item ids +[Test] +title Image converter skin (null) +create wmunittest test +test HeapSet +test ImageConverterCreate +test ImageConverterConvert "skin(0 0)" +test ImageConverterWaitResult FAIL +test ImageConverterDelete +test HeapCheck +delete test +[Endtest] + +// Tests image converter with skin/mif syntax +[Test] +title Image converter skin/mif +create wmunittest test +test HeapSet +test ImageConverterCreate +test ImageConverterConvert "skin(270501603 4145):mif(c:\testframework\wmunittest\wmlogo\logo.mif 16384 16385)" +test ImageConverterWaitResult OK +test ImageConverterConversionMethod ESkinAndMifIcon +test ImageConverterDelete +test HeapCheck +delete test +[Endtest] + +// Tests image converter mif method +[Test] +title Image converter mif +create wmunittest test +test HeapSet +test ImageConverterCreate +test ImageConverterConvert "mif(c:\testframework\wmunittest\wmlogo\logo.mif 16384 16385)" +test ImageConverterWaitResult OK +test ImageConverterConversionMethod EMifIcon +test ImageConverterDelete +test HeapCheck +delete test +[Endtest] + +// Tests image converter mif method with invalid path +[Test] +title Image converter mif (invalid path) +create wmunittest test +test HeapSet +test ImageConverterCreate +test ImageConverterConvert "mif(c:\blabla.mif 16384 16385)" +test ImageConverterWaitResult FAIL +test ImageConverterDelete +test HeapCheck +delete test +[Endtest] + +// Tests image converter mif method with invalid bitmap & mask ids +[Test] +title Image converter mif (invalid ids) +create wmunittest test +test HeapSet +test ImageConverterCreate +test ImageConverterConvert "mif(c:\testframework\wmunittest\wmlogo\logo.mif 1 2)" +test ImageConverterWaitResult FAIL +test ImageConverterDelete +test HeapCheck +delete test +[Endtest] + +// Tests image converter uid method +[Test] +title Image converter uid +create wmunittest test +test HeapSet +test ImageConverterCreate +test ImageConverterConvert "uid(0x10005901)" +test ImageConverterWaitResult OK +test ImageConverterConversionMethod EUidIcon +test ImageConverterDelete +test HeapCheck +delete test +[Endtest] + +// Tests image converter uid method with null uid +[Test] +title Image converter uid (null) +create wmunittest test +test HeapSet +test ImageConverterCreate +test ImageConverterConvert "uid(0x0)" +test ImageConverterWaitResult FAIL +test ImageConverterDelete +test HeapCheck +delete test +[Endtest] + +// Tests image converter uid method with wrt widget uid. +[Test] +title Image converter wrt widget +create wmunittest test +test HeapSet +test InstallWrtWidget "c:\testframework\wmunittest\wmlogo\test.wgz" +test ImageConverterCreate +test ImageConverterConvert "uid(0x2000DAD2)" +test ImageConverterWaitResult OK +test ImageConverterConversionMethod EUidIcon +test ImageConverterDelete +test UninstallWrtWidget "0x2000DAD2" +test HeapCheck +delete test +[Endtest] + +// Tests image converter svg method +[Test] +title Image converter svg +create wmunittest test +test HeapSet +test ImageConverterCreate +test ImageConverterConvert "c:\testframework\wmunittest\wmlogo\logo.svg" +test ImageConverterWaitResult OK +test ImageConverterConversionMethod ESvgIcon +test ImageConverterDelete +test HeapCheck +delete test +[Endtest] + +// Tests image converter svg method corrupt file. +[Test] +title Image converter svg (corrupted) +create wmunittest test +test HeapSet +test ImageConverterCreate +test ImageConverterConvert "c:\testframework\wmunittest\wmlogo\logocorrupt.svg" +test ImageConverterWaitResult FAIL +test ImageConverterConversionMethod ESvgIcon +test ImageConverterDelete +test HeapCheck +delete test +[Endtest] + +// Tests image converter png method +[Test] +title Image converter png +create wmunittest test +test HeapSet +test ImageConverterCreate +test ImageConverterConvert "c:\testframework\wmunittest\wmlogo\logo.png" +test ImageConverterWaitResult OK +test ImageConverterConversionMethod EImageIcon +test ImageConverterDelete +test HeapCheck +delete test +[Endtest] + +// Tests image converter png method corrupt file. +[Test] +title Image converter png (corrupted) +create wmunittest test +test HeapSet +test ImageConverterCreate +test ImageConverterConvert "c:\testframework\wmunittest\wmlogo\logocorrupt.png" +test ImageConverterWaitResult FAIL +test ImageConverterDelete +test HeapCheck +delete test +[Endtest] + +// Tests image converter jpeg method +[Test] +title Image converter jpeg +create wmunittest test +test HeapSet +test ImageConverterCreate +test ImageConverterConvert "c:\testframework\wmunittest\wmlogo\logo.jpg" +test ImageConverterWaitResult OK +test ImageConverterConversionMethod EImageIcon +test ImageConverterDelete +test HeapCheck +delete test +[Endtest] + +// Tests image converter jpeg method +[Test] +title Image converter jpeg (corrupted) +create wmunittest test +test HeapSet +test ImageConverterCreate +test ImageConverterConvert "c:\testframework\wmunittest\wmlogo\logocorrupt.jpg" +test ImageConverterWaitResult FAIL +test ImageConverterDelete +test HeapCheck +delete test +[Endtest] + +// Tests image converter cancel +[Test] +title Image converter cancel +create wmunittest test +test HeapSet +test ImageConverterCreate +test ImageConverterConvert "c:\testframework\wmunittest\wmlogo\logo.svg" +test CancelConvert +test ImageConverterWaitResult FAIL +test ImageConverterDelete +test HeapCheck +delete test +[Endtest] + + +//------------------------------------------------------------------------------- +// Misc Test cases +//------------------------------------------------------------------------------- +// + +// Tests error note +[Test] +title Other error note +create wmunittest test +test HeapSet +test PluginCreate +test PluginActivate +test ErrorPopup +pause 3000 +test PluginDelete +test HeapCheck +delete test +[Endtest] + +/* +// Test for heikki to play :) +[Test] +title WmPlugin 1h test +create wmunittest test +test HeapSet +test PluginCreate +test SetMass 500 +test PluginActivate +pause 3600000 +test PluginDelete +test HeapCheck +delete test +[Endtest] +*/ + + diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/tsrc/wmunittest/conf/wmunittest.bat --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/tsrc/wmunittest/conf/wmunittest.bat Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,19 @@ +rem /* +rem * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +rem * All rights reserved. +rem * This component and the accompanying materials are made available +rem * under the terms of "Eclipse Public License v1.0" +rem * which accompanies this distribution, and is available +rem * at the URL "http://www.eclipse.org/legal/epl-v10.html". +rem * +rem * Initial Contributors: +rem * Nokia Corporation - initial contribution. +rem * +rem * Contributors: +rem * +rem * Description: +rem * +rem */ + +ATSInterface.exe -testmodule TestScripter -config c:\testframework\ui_wmunittest.cfg + diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/tsrc/wmunittest/conf/wmunittest.ini --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/tsrc/wmunittest/conf/wmunittest.ini Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,188 @@ +# +# This is STIF initialization file +# Comment lines start with '#'-character. +# See STIF TestFramework users guide.doc for instructions + +# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +# Set following test engine settings: +# - Set Test Reporting mode. TestReportMode's possible values are: +# + 'Summary': Summary of the tested test cases. +# + 'Environment': Hardware and software info. +# + 'TestCases': Test case report. +# + 'FullReport': Set of all above ones. +# + Example 'TestReportMode= Summary TestCases' +# +# - CreateTestReport setting controls report creation mode +# + YES, Test report will created. +# + NO, No Test report. +# +# - File path indicates the base path of the test report. +# - File name indicates the name of the test report. +# +# - File format indicates the type of the test report. +# + TXT, Test report file will be txt type, for example 'TestReport.txt'. +# + HTML, Test report will be html type, for example 'TestReport.html'. +# + XML, Test report will be xml type, for example 'TestReport.xml'. +# Note, that xml format is available only when output is set to FILE. +# +# - File output indicates output source of the test report. +# + FILE, Test report logging to file. +# + RDEBUG, Test report logging to using rdebug. +# +# - File Creation Mode indicates test report overwriting if file exist. +# + OVERWRITE, Overwrites if the Test report file exist. +# + APPEND, Continue logging after the old Test report information if +# report exist. +# - Sets a device reset module's dll name(Reboot). +# + If Nokia specific reset module is not available or it is not correct one +# StifHWResetStub module may use as a template for user specific reset +# module. +# - Sets STIF test measurement disable options. e.g. pluging1 and pluging2 disablation +# DisableMeasurement= stifmeasurementplugin01 stifmeasurementplugin02 +# + +[Engine_Defaults] + +TestReportMode= FullReport # Possible values are: 'Empty', 'Summary', 'Environment', + # 'TestCases' or 'FullReport' + +CreateTestReport= YES # Possible values: YES or NO + +TestReportFilePath= C:\LOGS\TestFramework\ +TestReportFileName= WidgetManager + +TestReportFormat= TXT # Possible values: TXT, HTML or XML +TestReportOutput= FILE # Possible values: FILE or RDEBUG +TestReportFileCreationMode= OVERWRITE # Possible values: OVERWRITE or APPEND + +DeviceResetDllName= StifResetForNokia.dll # e.g. 'StifHWResetStub.dll' for user specific reseting + +DisableMeasurement= stifmeasurementdisablenone # Possible values are: + # 'stifmeasurementdisablenone', 'stifmeasurementdisableall' + # 'stifmeasurementplugin01', 'stifmeasurementplugin02', + # 'stifmeasurementplugin03', 'stifmeasurementplugin04', + # 'stifmeasurementplugin05' or 'stifbappeaprofiler' + +Timeout= 0 # Default timeout value for each test case. In milliseconds +UITestingSupport= YES # Possible values: YES or NO +#SeparateProcesses= YES # Possible values: YES or NO (default: NO) +[End_Defaults] +# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- + + + +# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- + +# Widget manager unit tests +[New_Module] +ModuleName= testscripter +TestCaseFile= c:\testframework\ui_wmunittest.cfg +[End_Module] + +# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- + + + + +# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +# Set STIF logging overwrite parameters for Logger. +# Hardware and emulator environment logging path and styles can +# be configured from here to overwrite the Logger's implemented values. +# +# Settings description: +# - Indicates option for creation log directory/directories. If log directory/directories +# is/are not created by user they will make by software. +# + YES, Create log directory/directories if not allready exist. +# + NO, Log directory/directories not created. Only created one is used. +# +# - Overwrite emulator path setting. +# + Example: If 'EmulatorBasePath= C:\LOGS\TestFramework\' and in code is defined +# Logger's path 'D:\\LOGS\\Module\\' with those definition the path +# will be 'C:\LOGS\TestFramework\LOGS\Module\' +# +# - Overwrite emulator's logging format. +# + TXT, Log file(s) will be txt type(s), for example 'Module.txt'. +# + HTML, Log file(s) will be html type(s), for example 'Module.html'. +# +# - Overwrited emulator logging output source. +# + FILE, Logging to file(s). +# + RDEBUG, Logging to using rdebug(s). +# +# - Overwrite hardware path setting (Same description as above in emulator path). +# - Overwrite hardware's logging format(Same description as above in emulator format). +# - Overwrite hardware's logging output source(Same description as above in emulator output). +# +# - File Creation Mode indicates file overwriting if file exist. +# + OVERWRITE, Overwrites if file(s) exist. +# + APPEND, Continue logging after the old logging information if file(s) exist. +# +# - Will thread id include to the log filename. +# + YES, Thread id to log file(s) name, Example filename 'Module_b9.txt'. +# + NO, No thread id to log file(s), Example filename 'Module.txt'. +# +# - Will time stamps include the to log file. +# + YES, Time stamp added to each line in log file(s). Time stamp is +# for example'12.Nov.2003 115958 LOGGING INFO' +# + NO, No time stamp(s). +# +# - Will line breaks include to the log file. +# + YES, Each logging event includes line break and next log event is in own line. +# + NO, No line break(s). +# +# - Will event ranking include to the log file. +# + YES, Event ranking number added to each line in log file(s). Ranking number +# depends on environment's tics, for example(includes time stamp also) +# '012 12.Nov.2003 115958 LOGGING INFO' +# + NO, No event ranking. +# +# - Will write log file in unicode format. +# + YES, Log file will be written in unicode format +# + NO, Log will be written as normal, not unicode, file. +# + +[Logger_Defaults] + +#NOTE: If you want to set Logger using next setting(s) remove comment(s)'#' +#NOTE: TestEngine and TestServer logging settings cannot change here + +#CreateLogDirectories= YES # Possible values: YES or NO + +#EmulatorBasePath= C:\LOGS\TestFramework\ +#EmulatorFormat= HTML # Possible values: TXT or HTML +#EmulatorOutput= FILE # Possible values: FILE or RDEBUG + +#HardwareBasePath= D:\LOGS\TestFramework\ +#HardwareFormat= HTML # Possible values: TXT or HTML +#HardwareOutput= FILE # Possible values: FILE or RDEBUG + +#FileCreationMode= OVERWRITE # Possible values: OVERWRITE or APPEND + +#ThreadIdToLogFile= YES # Possible values: YES or NO +#WithTimeStamp= YES # Possible values: YES or NO +#WithLineBreak= YES # Possible values: YES or NO +#WithEventRanking= YES # Possible values: YES or NO + +#FileUnicode= YES # Possible values: YES or NO +#AddTestCaseTitle= YES # Possible values: YES or NO +[End_Logger_Defaults] +# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- + + + +# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +# Set filters to be used by ConsoleUI. +# If you want to use filter with ConsoleUI, simply remove comments +# from section below and provide valid filter entries. +# Each filter line has to start with "filter= " keyword. +# Filter can contain special wildcard characters: +# * which stands for none or any literal; +# ? which stands for single character. +# Filters are not case-sensitive. + +#[Filters] +#filter= *math* +#filter= *radio* +#[End_Filters] +# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- + +# End of file diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/tsrc/wmunittest/data/wmlogo/logo.jpg Binary file idlehomescreen/widgetmanager/tsrc/wmunittest/data/wmlogo/logo.jpg has changed diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/tsrc/wmunittest/data/wmlogo/logo.mif Binary file idlehomescreen/widgetmanager/tsrc/wmunittest/data/wmlogo/logo.mif has changed diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/tsrc/wmunittest/data/wmlogo/logo.png Binary file idlehomescreen/widgetmanager/tsrc/wmunittest/data/wmlogo/logo.png has changed diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/tsrc/wmunittest/data/wmlogo/logo.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/tsrc/wmunittest/data/wmlogo/logo.svg Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,72 @@ + + + + + + + + + + + image/svg+xml + + + + + + + + diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/tsrc/wmunittest/data/wmlogo/logocorrupt.jpg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/tsrc/wmunittest/data/wmlogo/logocorrupt.jpg Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,13 @@ + JFIF  ` ` 6Exif II*     & JZP `N:ym C%0A +~5;ܬz9բs7(dU =]_.%P 93̧_dPh +l8,2> W9>Mɮ\te ?~jATۍz;桹 YoI, fI]Q,X +)\{S幭*5*| i l #^ʮYC،׍8o@$_ױ>RzY|Tr>)-k$ v~o@GGlnU^O^`l1qsֱ5MrO +S@eViCn󥋩 +ſu9RA b0n{Jʲ Z(W:t(NLW7Q0/͏*ϛZe{}IBi- r ?L~5 Rrwf$(0QE s߄b9#Q{-%[HKv 8?νBj|_RI'/=VCw{c@S{yȺ cosH8o z eˮԔVVrlF-D#׃^TMzO0Bס3WڇNi=_n@m~׿oq3טCiZu4t-)HLKLL R2Pa@LtqTLYYBi5z!#9 }>rs>9=/dd~n^'>ǁﷺI e 06Ecg@[ndqu 9<1w>'l7AO;P ځj>/oߤ1E?ꗁ>fG. [[RS YT]Vá7d⠶"Z-&'hH(|jh~@@EٟM;|o֤O"I,j  "A*7-b$-D+>9.|?~N/i ^_(56}&x %菴l1_~+\}vj4TVVŕ]=7xJhАRVTFĵۛ::;;[:n[OЌA`  śE +@I[I59]<{k7aGddҸ/[6L,3&g3PM{lڭG7ylԼ+,vw oE?-tk!K,q.x_.3܂;LSsj2O`]'݊}VZ ]07o`R7V2b☳W]Q]x7R .r-wgϞ㗽x$]\ZX.955qix0d윙K|=ß=rx1C'#ɓ켜?!G{{Gʥw;0u} +8> [Qb n0Ti_ WsMPhp>Rr+ZdL-ĕkdVZq2j%]8zEeÖX;lЕ.CW: _:b瘥N\쬰NS縬Ԃ>?%-FIZ+N} ́-; {c   #cr4KZMۿik ~ -/!86?)89ieHleEyꚚ⒲¼‚}<}"+I+T[y>vޱ[go`wXSP|=[cƮawjjڡ5vE=M+ +5]+ZsgƎpMZ?]+XsG3§kh=mtm\oƎKu_x>(3$*<:&/0"(_"&z^3<$k֭eU&mmrs S4L{+=9~,p z?=iQ -}?j+?~0xs$<29Oy0l3 d7ϴ#1N5t/ϸ +IPyZIo'lZ{AIZ*Ko^pymO_|sovg8sƹ7޾uSn҅WN\vҵ3_8K\xx܃o!&pڹ7.]uԅӧ.]tmKg/a&laz9D!Y1H" lq}O=5E7$$T&'9 16x%{[{p2EĘ/, _0D +1 p/ro쀈WObc0a8 @ ~ءݫw K +꧿~y + |.(b0t$#3%NvP{Nc#]sc]K]Vv@I?}86s28h Hc8yK&sRəga@7FFnL$HgT3HvcbGiRC{jon!>-kua7*q*WQET-YߥW!JRiwf8A +'5:5 C瀀R?׉*@8KZrA#^2Z8X/*Ē12(B@]~[k"ƋFl2SB {L)d.^JNա"^I3 PM!əG1++O RC09 +> (o-Jf )Ɣ/<,~%@5j269(O@S0*|[҂9@LTnPNjU=M*̀ )viOi}`O9?'h[{ fn}`\2;J'Gg| &4r\49M%94׈|+"ȿ5#gDIK:Q!+מ93}LvgHɸ4'S-_4@^AS\&$8\)se @#~Wd,EZ t~Yz_S\f=Y"΀LԢgr $7)oј5`҂i?6?N]? &XCWo{H SV蟴p 70Š(~] 2٠1 %Z" U?zq*#i?檤zHscbVVLڏ3"KСC9tA/a#L a3fLOtAopG͊CgTQԂC%m}@?D=&4kbR=Ƈ=@TdYt +bU 6+֓H8u%cK@*/ +9 ,Q%8x_IB/+ i`lH| ߒz(T%߼IZhbda1HfKi{G1?ЕGF2Äli +b@o~cI1WMqV1< t9SOG`7$T}i(w)JjPsʲ1}>5"^Ғ% `#ET +5KZ꽂LcL .QtESsV$o!ׂQovϼ\K@ +X<*uXdbwi O=ƤߤSS1x:ȈZ$0@8t"E2Ċ3qR([Xjl'I]$ u*{v~h/UH\> AV0VPapdi&mZ,B  +sĀAD~uWPO[@ηjϯuU;|~ͻ7vhYT. +kLc!Zȇ *8 AEwSS\:?[]_o/_}~ͻ; +m,( xmZu*TH 0Cu$fH@~Su 0@]G +@uOW}vh|:6@@d@ *cx +- Q񙊼k1>~U}a{_-9}~A#@߷/ԧHZrS+%ЂpDiЍ)K3Їh#3|=]z'oח'4@ۿTwQ!A i{pHK Xhl6@s][@k;;`:_>&84*ta ^g + + + rdf:about=""> + image/svg+xml + + + + + + id="image2462" + height="18.19879" + width="31.139833" + sodipodi:absref="Y:\HS_Domain\homescreen\idlehomescreen\data\qhd_tch\shortcut2_2001f484\gfx\shortcut2logo.png" + xlink:href="Y:\HS_Domain\homescreen\idlehomescreen\data\qhd_tch\shortcut2_2001f484\gfx\shortcut2logo.png" + transform="matrix(1,0,2.5955691e-2,0.9996631,0,0)" /> + + diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/tsrc/wmunittest/data/wmlogo/test.wgz Binary file idlehomescreen/widgetmanager/tsrc/wmunittest/data/wmlogo/test.wgz has changed diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/tsrc/wmunittest/eabi/wmunittestu.def --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/tsrc/wmunittest/eabi/wmunittestu.def Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,3 @@ +EXPORTS + _Z9LibEntryLR13CTestModuleIf @ 1 NONAME + diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/tsrc/wmunittest/group/Create_sisx.bat --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/tsrc/wmunittest/group/Create_sisx.bat Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,19 @@ +rem +rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +rem All rights reserved. +rem This component and the accompanying materials are made available +rem under the terms of "Eclipse Public License v1.0" +rem which accompanies this distribution, and is available +rem at the URL "http://www.eclipse.org/legal/epl-v10.html". +rem +rem Initial Contributors: +rem Nokia Corporation - initial contribution. +rem +rem Contributors: +rem +rem Description: +rem + +rem Create wm sis&sisx files +makesis wmunittest.pkg +signsis wmunittest.SIS wmunittest.SISX Nokia_RnDCert_02.der Nokia_RnDCert_02.key diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/tsrc/wmunittest/group/Nokia_RnDCert_02.der Binary file idlehomescreen/widgetmanager/tsrc/wmunittest/group/Nokia_RnDCert_02.der has changed diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/tsrc/wmunittest/group/Nokia_RnDCert_02.key --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/tsrc/wmunittest/group/Nokia_RnDCert_02.key Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICXQIBAAKBgQC/TDP7KKIaf5+uW4OD2iVZuUMC2a+SeQTjf6srlKcOm+CpPNXn +uLNm/8fdEnyOIuRXPRKmqhs1n0JkxEGHynELWMTuKXbQx9SRAGUXzyneGn+IJNnO +vOKHWgKCouX2hfI8rtkdqJpqmO460gGsMgw+lsbeyWyW9lnfLxq+ZC7sqQIDAQAB +AoGBALmUWZE8GBaQ3P4u9WUCSd3DJkkrmXIFSULSZeH/chlwCwDjbbhArHothVzo +REE3hEFFlERvHbplZ+mNouzy7boduvgUzbksGrbGMLJ2qO1GzWWVwV+GzOWKd3ss +/98Gwoy5R8pjnkqUE2wP1iJFw0FjvUTKcYv/z6t3LLJ0CsoBAkEA+c7ixvsviQ3J +s0INytCKU2bf8fqFQJi1VI82ukxNsujGTQ9upVSjuvqPvWyDvvTdrUBHqO+3qPut +sEh01Q8aiQJBAMQKDJPVRu4ud3mwUfEavzL5EjqwG1k9VCNGYsT4FwtrHcxu1oP/ +pk6M3rIZukqomoEEnHWPMwhrK3fhBqi0OSECQQDr40VXege4FnH5OI2Hj4afHMyp +VdQQXGMWFyopnzXblFz0lXb43cTCIiorR9XcMqNFHybLypkWE5o+lRzlt55pAkBQ +P/zeF5Sts//cpL0mgdh7OVKpC6ZmZaCnwAx2rUhhuDu+kDDoYCLoTOps5fNI1LRK +1GRoC3LMo3Jr5IYhUYWBAkBpCpN6k4JU/mszq98EojHerQNxk8sPqvQKUzTutohT +1gLX9yepGayB/TtT2EEJDkWOlnTy/dvN6W3vzbJYz97x +-----END RSA PRIVATE KEY----- diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/tsrc/wmunittest/group/bld.inf --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/tsrc/wmunittest/group/bld.inf Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,39 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* Widget manager unit tests +*/ + +PRJ_PLATFORMS +DEFAULT + +PRJ_TESTEXPORTS +// test case configuration +../conf/wmunittest.bat /epoc32/winscw/c/wmunittest.bat +../conf/wmunittest.ini /epoc32/winscw/c/testframework/testframework.ini +../conf/ui_wmunittest.cfg /epoc32/winscw/c/testframework/ui_wmunittest.cfg +// test data +../data/wmlogo/logo.jpg /epoc32/winscw/c/testframework/wmunittest/wmlogo/logo.jpg +../data/wmlogo/logo.mif /epoc32/winscw/c/testframework/wmunittest/wmlogo/logo.mif +../data/wmlogo/logo.png /epoc32/winscw/c/testframework/wmunittest/wmlogo/logo.png +../data/wmlogo/logo.svg /epoc32/winscw/c/testframework/wmunittest/wmlogo/logo.svg +../data/wmlogo/logocorrupt.jpg /epoc32/winscw/c/testframework/wmunittest/wmlogo/logocorrupt.jpg +../data/wmlogo/logocorrupt.png /epoc32/winscw/c/testframework/wmunittest/wmlogo/logocorrupt.png +../data/wmlogo/logocorrupt.svg /epoc32/winscw/c/testframework/wmunittest/wmlogo/logocorrupt.svg +../data/wmlogo/test.wgz /epoc32/winscw/c/testframework/wmunittest/wmlogo/test.wgz + +PRJ_TESTMMPFILES +wmunittest.mmp + +// End of File diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/tsrc/wmunittest/group/wmunittest.mmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/tsrc/wmunittest/group/wmunittest.mmp Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,104 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: MMP file for STIF Test Framework's TestScripter +* testclass test module. +* +*/ + +#include +#include +#include + +TARGET wmunittest.dll +TARGETTYPE dll +UID 0x1000008D 0x101FB3E3 + +CAPABILITY ALL -TCB +VENDORID VID_DEFAULT +SECUREID 0x101FB3E3 + +DEFFILE wmunittest.def + +USERINCLUDE ../inc +USERINCLUDE ../../../inc + +APP_LAYER_SYSTEMINCLUDE +SYSTEMINCLUDE /epoc32/include/libc +SYSTEMINCLUDE /epoc32/include/ecom + +SOURCEPATH ../../../src +SOURCE wmplugin.cpp +SOURCE wmresourceloader.cpp +SOURCE wmmaincontainer.cpp +SOURCE wmmaincontainerview.cpp +SOURCE wmwidgetdata.cpp +SOURCE wmlistbox.cpp +SOURCE wmimageconverter.cpp +SOURCE wmpersistentwidgetorder.cpp +SOURCE wmeffectmanager.cpp +SOURCE wmdetailsdlg.cpp +SOURCE wmportalbutton.cpp +SOURCE wmwidgetloaderao.cpp + +SOURCEPATH ../src +SOURCE wmunittest.cpp +SOURCE wmunittest_all.cpp +SOURCE wmunittest_plugin.cpp +SOURCE wmunittest_sortorder.cpp +SOURCE wmunittest_converter.cpp + +// same as in widgetmanager.mmp +LIBRARY euser.lib +LIBRARY cone.lib +LIBRARY avkon.lib +LIBRARY eikcore.lib +LIBRARY estor.lib +LIBRARY eikcoctl.lib +LIBRARY eikctl.lib +LIBRARY eikdlg.lib +LIBRARY efsrv.lib // RFs +LIBRARY bafl.lib // BaflUtils +LIBRARY apgrfx.lib // RApaLsSession +LIBRARY commonengine.lib // StringLoader +LIBRARY aknicon.lib // AknIconUtility +LIBRARY imageconversion.lib // CImageDecoder +LIBRARY bitmaptransforms.lib // CBitmapScaler +LIBRARY fbscli.lib // CFbsBitmap +LIBRARY gdi.lib // CFont +LIBRARY egul.lib // TextUtils +LIBRARY ecom.lib // ECom fw +LIBRARY aknskins.lib // AknsDrawUtils +LIBRARY aknskinsrv.lib // AknsDrawUtils +LIBRARY aknswallpaperutils.lib // AknsDrawUtils +LIBRARY hscontentcontrol.lib // CHsContentControlUi +LIBRARY apparc.lib // CApaCommandLine +LIBRARY aknlayout.lib // avkon layout +LIBRARY aknlayout2scalable.lib // scalable avkon layout +LIBRARY swinstcli.lib // widget uninstall +LIBRARY hscontentinfo.lib // CHsContentInfo +LIBRARY platformenv.lib // DriveInfo::GetDefaultDrive +LIBRARY svgengine.lib // CSvgEngineInterfaceImpl +LIBRARY gfxtrans.lib // effect manager +LIBRARY ws32.lib //WindowSession +LIBRARY widgetregistryclient.lib // WidgetRegistryClient +LIBRARY hlplch.lib // HlpLauncher +LIBRARY sysutil.lib // diskspace +LIBRARY featmgr.lib // FeatureManager +LIBRARY etext.lib +LIBRARY centralrepository.lib + +// libraries needed by the test framework +LIBRARY stiftestinterface.lib + +// End of File diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/tsrc/wmunittest/group/wmunittest.pkg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/tsrc/wmunittest/group/wmunittest.pkg Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,51 @@ +; +; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +; All rights reserved. +; This component and the accompanying materials are made available +; under the terms of "Eclipse Public License v1.0" +; which accompanies this distribution, and is available +; at the URL "http://www.eclipse.org/legal/epl-v10.html". +; +; Initial Contributors: +; Nokia Corporation - initial contribution. +; +; Contributors: +; +; Description: +; +; Installation file for STIF +; + +; Languages +&EN + +; Provide value for uid +#{"STIF"},(0x101FB3E3),1,1,0,TYPE=SA + +; Series60 product id for S60 3.0 +[0x101F7961], 0, 0, 0, {"Series60ProductID"} + +; Localised Vendor name +%{"Nokia"} + +; Unique Vendor name +:"Nokia" + + +; Install files + +"\epoc32\release\armv5\udeb\wmunittest.dll" - "!:\sys\bin\wmunittest.dll" + +"..\conf\wmunittest.bat" - "!:\wmunittest.bat" +"..\conf\wmunittest.ini" - "!:\testframework\testframework2.ini" +"..\conf\ui_wmunittest.cfg" - "!:\testframework\ui_wmunittest.cfg" + +"..\data\wmlogo\logo.jpg" - "!:\testframework\wmunittest\wmlogo\logo.jpg" +"..\data\wmlogo\logo.mif" - "!:\testframework\wmunittest\wmlogo\logo.mif" +"..\data\wmlogo\logo.png" - "!:\testframework\wmunittest\wmlogo\logo.png" +"..\data\wmlogo\logo.svg" - "!:\testframework\wmunittest\wmlogo\logo.svg" +"..\data\wmlogo\logocorrupt.jpg" - "!:\testframework\wmunittest\wmlogo\logocorrupt.jpg" +"..\data\wmlogo\logocorrupt.png" - "!:\testframework\wmunittest\wmlogo\logocorrupt.png" +"..\data\wmlogo\logocorrupt.svg" - "!:\testframework\wmunittest\wmlogo\logocorrupt.svg" +"..\data\wmlogo\test.wgz" - "!:\testframework\wmunittest\wmlogo\test.wgz" + diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/tsrc/wmunittest/inc/wmunittest.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/tsrc/wmunittest/inc/wmunittest.h Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,211 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: STIF testclass declaration +* +*/ + +#ifndef WMUNITTEST_H +#define WMUNITTEST_H + +// INCLUDES +#include +#include +#include +#include +#include // RFs + +#include "wmimageconverter.h" // MConverterObserver +#include + +// MACROS +#define TEST_CLASS_VERSION_MAJOR 0 +#define TEST_CLASS_VERSION_MINOR 0 +#define TEST_CLASS_VERSION_BUILD 0 + +// MACROS FOR THE TEST CASES +#define _LOG(a) iLog->Log(_L(a)) +#define _RETURN(a, b) iLog->Log(_L("\treturn: %d"),b); \ + iLog->Log(_L(a)); \ + return b; \ + +#define _CLEANUPCHECK_BEGIN \ + CBase* __check = new (ELeave) CBase(); \ + CleanupStack::PushL( __check ); + +#define _CLEANUPCHECK_END \ + CleanupStack::PopAndDestroy( __check ); + + +// Logging path & file +_LIT( KWmUnitTestLogPath, "\\logs\\testframework\\wmunittest\\" ); +_LIT( KWmUnitTestLogFile, "wmunittest.txt" ); + +// FORWARD DECLARATIONS +class CWmPlugin; +class CWmPersistentWidgetOrder; +class CWmImageConverter; +class CHsContentInfo; +class CHsContentInfoArray; +class RWidgetDataValues; + + +// CLASS DECLARATION +/** +* test class for STIF Test Framework TestScripter. +*/ +NONSHARABLE_CLASS(CWmUnitTest) : public CScriptBase, + public MConverterObserver, + public MHsContentController + { + public: // Constructors and destructor + /** static constructor */ + static CWmUnitTest* NewL( CTestModuleIf& aTestModuleIf ); + /** desctructor */ + ~CWmUnitTest(); + + private: // private stuff + /** default constructor */ + CWmUnitTest( CTestModuleIf& aTestModuleIf ); + /** 2nd phase constructor */ + void ConstructL(); + /** version check */ + void SendTestClassVersion(); + + public: // Test run API + + /** From CScriptBase Runs a script line. */ + virtual TInt RunMethodL( CStifItemParser& aItem ); + + public: // from MConverterObserver + + virtual void NotifyCompletion( TInt aError ); + + public: // from MHsContentController + + TInt WidgetListL( CHsContentInfoArray& aArray ); + TInt ViewListL( CHsContentInfoArray& aArray ); + TInt AppListL( CHsContentInfoArray& aArray ); + TInt AddWidgetL( CHsContentInfo& aInfo ); + TInt RemoveWidgetL( CHsContentInfo& aInfo ); + TInt AddViewL( CHsContentInfo& aInfo ); + TInt RemoveViewL( CHsContentInfo& aInfo ); + TInt ActivateViewL( CHsContentInfo& aInfo ); + TInt ActivateAppL( CHsContentInfo& aInfo ); + + private: // Test methods + + // GENERAL + + // sets heap reference value + TInt HeapSetL( CStifItemParser& aItem ); + // Log heap usage to file + TInt LogHeapL( CStifItemParser& aItem ); + // compares heap against reference, logs warning if no match + TInt HeapCheckL( CStifItemParser& aItem ); + // sets the mass of data for next test case + TInt SetMassL( CStifItemParser& aItem ); + // install and uninstall wrt widget for tests + TInt InstallWrtWidgetL( CStifItemParser& aItem ); + TInt UninstallWrtWidgetL( CStifItemParser& aItem ); + // test error note + TInt ErrorPopupL( CStifItemParser& aItem ); + + // TESTING THE PLUGIN + + // creates the WM plugin + TInt PluginCreateL( CStifItemParser& aItem ); + // deletes WM plugin + TInt PluginDeleteL( CStifItemParser& aItem ); + // calls Activate method for WM plugin + TInt PluginActivateL( CStifItemParser& aItem ); + // calls Deactivate method for WM plugin + TInt PluginDeactivateL( CStifItemParser& aItem ); + // calls NotifyWidgetListChanged method for WM plugin + TInt PluginWidgetsChangedL( CStifItemParser& aItem ); + // changes test content + TInt ChangeContentL( CStifItemParser& aItem ); + + // TESTING THE WIDGET SORTING AND ORDER + + // creates WM persistent widget order object + TInt WidgetOrderCreateL( CStifItemParser& aItem ); + // deletes WM persistent widget order object + TInt WidgetOrderDeleteL( CStifItemParser& aItem ); + // tests WM persistent widget order's LOAD method + TInt WidgetOrderLoadL( CStifItemParser& aItem ); + // tests WM persistent widget order's SAVE method + TInt WidgetOrderSaveL( CStifItemParser& aItem ); + // tests WM persistent widget order's SAVE method + TInt WidgetOrderCheckIsEmptyL( CStifItemParser& aItem ); + // calls WM persistent widget order's API methods + TInt WidgetOrderUseL( CStifItemParser& aItem ); + + // TESTING IMAGE CONVERSION ROUTINES + + // creates image converter object + TInt ImageConverterCreateL( CStifItemParser& aItem ); + // deletes image converter object + TInt ImageConverterDeleteL( CStifItemParser& aItem ); + // calls image converter's main conversion method + TInt ImageConverterConvertL( CStifItemParser& aItem ); + // checks image converter callback and checks its result + TInt ImageConverterWaitResultL( CStifItemParser& aItem ); + // gets and checks the conversion method from image converter + TInt ImageConverterConversionMethodL( CStifItemParser& aItem ); + // cancel ongoing convert + TInt CancelConvertL( CStifItemParser& aItem ); + + + private: // members used in testing + + void CreateContentInfoArrayL( CHsContentInfoArray& aArray, TInt aCount ); + void CreateWidgetDataArrayL( RWidgetDataValues& aArray, TInt aCount ); + + // file server + RFs iFs; + + // the WM plugin instance + CWmPlugin* iWmPlugin; + + // the WM persistent widget order instance + CWmPersistentWidgetOrder* iWmWidgetOrder; + + // the Image converter instance + CWmImageConverter* iImageConverter; + + // amount of heap allocated in HeapSet + TInt iHeapSize; + + // image converter response ready + TBool iConversionReady; + + // image converter result + TInt iConversionError; + + // switch for active schedular wait + TBool iWaiting; + + // multipurpose test data count + TInt iMass; + + // requested changes to the content + TInt iChangeIndex; + TInt iChangeType; + HBufC16* iChangeValue; + }; + + +#endif // WMUNITTEST_H + +// End of File diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/tsrc/wmunittest/src/wmunittest.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/tsrc/wmunittest/src/wmunittest.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,112 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: This file contains testclass implementation. +* +*/ + +// INCLUDE FILES +#include +#include + +#include "wmunittest.h" + + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CWmUnitTest::CWmUnitTest +// ----------------------------------------------------------------------------- +// +CWmUnitTest::CWmUnitTest( + CTestModuleIf& aTestModuleIf ): + CScriptBase( aTestModuleIf ) + { + iChangeValue = NULL; + } + +// ----------------------------------------------------------------------------- +// CWmUnitTest::ConstructL +// ----------------------------------------------------------------------------- +// +void CWmUnitTest::ConstructL() + { + iLog = CStifLogger::NewL( KWmUnitTestLogPath, + KWmUnitTestLogFile, + CStifLogger::ETxt, + CStifLogger::EFile, + EFalse ); + + SendTestClassVersion(); + + User::LeaveIfError( iFs.Connect() ); + } + +// ----------------------------------------------------------------------------- +// CWmUnitTest::NewL +// ----------------------------------------------------------------------------- +// +CWmUnitTest* CWmUnitTest::NewL( + CTestModuleIf& aTestModuleIf ) + { + CWmUnitTest* self = new (ELeave) CWmUnitTest( aTestModuleIf ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +// ----------------------------------------------------------------------------- +// CWmUnitTest::~CWmUnitTest +// ----------------------------------------------------------------------------- +// +CWmUnitTest::~CWmUnitTest() + { + // Delete logger + delete iLog; + // close file server + iFs.Close(); + } + +//----------------------------------------------------------------------------- +// CWmDeploymentClientTest::SendTestClassVersion +//----------------------------------------------------------------------------- +// +void CWmUnitTest::SendTestClassVersion() + { + TVersion moduleVersion; + moduleVersion.iMajor = TEST_CLASS_VERSION_MAJOR; + moduleVersion.iMinor = TEST_CLASS_VERSION_MINOR; + moduleVersion.iBuild = TEST_CLASS_VERSION_BUILD; + + TFileName moduleName; + moduleName = _L("wmunittest.dll"); + + TBool newVersionOfMethod = ETrue; + TestModuleIf().SendTestModuleVersion(moduleVersion, moduleName, newVersionOfMethod); + } + +// ========================== OTHER EXPORTED FUNCTIONS ========================= + +// ----------------------------------------------------------------------------- +// LibEntryL() - polymorphic Dll entry point. +// ----------------------------------------------------------------------------- +// +EXPORT_C CScriptBase* LibEntryL( + CTestModuleIf& aTestModuleIf ) // Backpointer to STIF Test Framework + { + return ( CScriptBase* ) CWmUnitTest::NewL( aTestModuleIf ); + } + + +// End of File diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/tsrc/wmunittest/src/wmunittest_all.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/tsrc/wmunittest/src/wmunittest_all.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,250 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: list of all test blocks +* +*/ + +//INCLUDE FILES +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "wmunittest.h" +#include "wmresourceloader.h" + +// CONSTANTS +_LIT( KHexPrefix, "0x" ); +_LIT8( KWrtMime, "application/x-nokia-widget"); + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CWmUnitTest::RunMethodL +// ----------------------------------------------------------------------------- +// +TInt CWmUnitTest::RunMethodL( + CStifItemParser& aItem ) + { + static TStifFunctionInfo const KFunctions[] = + { + // general test blocks + ENTRY( "HeapSet", CWmUnitTest::HeapSetL ), + ENTRY( "LogHeap", CWmUnitTest::LogHeapL ), + ENTRY( "HeapCheck", CWmUnitTest::HeapCheckL ), + ENTRY( "SetMass", CWmUnitTest::SetMassL ), + ENTRY( "ErrorPopup", CWmUnitTest::ErrorPopupL ), + + // install/uninstall wrt widget for test + ENTRY( "InstallWrtWidget", CWmUnitTest::InstallWrtWidgetL ), + ENTRY( "UninstallWrtWidget", CWmUnitTest::UninstallWrtWidgetL ), + + // test blocks for the plugin + ENTRY( "PluginCreate", CWmUnitTest::PluginCreateL ), + ENTRY( "PluginDelete", CWmUnitTest::PluginDeleteL ), + ENTRY( "PluginActivate", CWmUnitTest::PluginActivateL ), + ENTRY( "PluginDeactivate", CWmUnitTest::PluginDeactivateL ), + ENTRY( "PluginWidgetsChanged", CWmUnitTest::PluginWidgetsChangedL ), + ENTRY( "ChangeContent", CWmUnitTest::ChangeContentL ), + + // test blocks for the persistent widget order class + ENTRY( "WidgetOrderCreate", CWmUnitTest::WidgetOrderCreateL ), + ENTRY( "WidgetOrderDelete", CWmUnitTest::WidgetOrderDeleteL ), + ENTRY( "WidgetOrderLoad", CWmUnitTest::WidgetOrderLoadL ), + ENTRY( "WidgetOrderSave", CWmUnitTest::WidgetOrderSaveL ), + ENTRY( "WidgetOrderCheckIsEmpty", CWmUnitTest::WidgetOrderCheckIsEmptyL ), + ENTRY( "WidgetOrderUse", CWmUnitTest::WidgetOrderUseL ), + + // test blocks for the image converter + ENTRY( "ImageConverterCreate", CWmUnitTest::ImageConverterCreateL ), + ENTRY( "ImageConverterDelete", CWmUnitTest::ImageConverterDeleteL ), + ENTRY( "ImageConverterConvert", CWmUnitTest::ImageConverterConvertL ), + ENTRY( "ImageConverterWaitResult", CWmUnitTest::ImageConverterWaitResultL ), + ENTRY( "ImageConverterConversionMethod", CWmUnitTest::ImageConverterConversionMethodL ), + ENTRY( "CancelConvert", CWmUnitTest::CancelConvertL ), + + }; + + const TInt count = sizeof( KFunctions ) / + sizeof( TStifFunctionInfo ); + + return RunInternalL( KFunctions, count, aItem ); + } + +// ----------------------------------------------------------------------------- +// CWmUnitTest::HeapSetL +// ----------------------------------------------------------------------------- +// +TInt CWmUnitTest::HeapSetL( CStifItemParser& /*aItem*/ ) + { + User::Heap().AllocSize( iHeapSize ); + _RETURN("HeapSetL End", KErrNone); + } + +// ----------------------------------------------------------------------------- +// CWmUnitTest::LogHeapL +// ----------------------------------------------------------------------------- +// +TInt CWmUnitTest::LogHeapL( CStifItemParser& aItem ) + { + TPtrC inputStr; + aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); + User::LeaveIfError( aItem.GetNextString( inputStr ) ); + + TInt size = 0; + User::Heap().AllocSize( size ); + iLog->Log( _L("Heap usage, %S: %d"), &inputStr, size ); + _RETURN("LogHeapL End", KErrNone); + } + +// ----------------------------------------------------------------------------- +// CWmUnitTest::HeapCheckL +// ----------------------------------------------------------------------------- +// +TInt CWmUnitTest::HeapCheckL( CStifItemParser& /*aItem*/ ) + { + TInt ret = KErrNone; + TInt heapSizeAtCheckpoint; + User::Heap().AllocSize( heapSizeAtCheckpoint ); + if ( iHeapSize != heapSizeAtCheckpoint ) + { + //ret = KErrTooBig; <-- not reliable + _LOG("Warning: potential memory leak detected!!!"); + } + _RETURN("HeapCheckL End", ret); + } + +// ----------------------------------------------------------------------------- +// CWmUnitTest::SetMassL +// ----------------------------------------------------------------------------- +// +TInt CWmUnitTest::SetMassL( CStifItemParser& aItem ) + { + aItem.GetNextInt( iMass ); + _RETURN("SetMassL End", KErrNone); + } + +// ----------------------------------------------------------------------------- +// CWmUnitTest::InstallWrtWidgetL +// ----------------------------------------------------------------------------- +// +TInt CWmUnitTest::InstallWrtWidgetL( CStifItemParser& aItem ) + { + TInt ret = KErrNone; + TPtrC inputStr; + aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); + User::LeaveIfError( aItem.GetNextString( inputStr ) ); + if ( inputStr.Length() == 0 ) User::Leave( KErrArgument ); + + // install widget + SwiUI::RSWInstSilentLauncher installer; + User::LeaveIfError( installer.Connect() ); + CleanupClosePushL( installer ); + + SwiUI::TInstallReqPckg installReqPckg; + SwiUI::TInstallOptions options; + TRequestStatus status = KRequestPending; + + options.iUpgrade = SwiUI::EPolicyAllowed; + options.iOptionalItems = SwiUI::EPolicyAllowed; + options.iOCSP = SwiUI::EPolicyAllowed; + options.iIgnoreOCSPWarnings = SwiUI::EPolicyAllowed; + options.iUntrusted = SwiUI::EPolicyAllowed; + options.iPackageInfo = SwiUI::EPolicyAllowed; + options.iCapabilities = SwiUI::EPolicyAllowed; + options.iKillApp = SwiUI::EPolicyAllowed; + options.iOverwrite = SwiUI::EPolicyAllowed; + options.iDownload = SwiUI::EPolicyAllowed; + options.iDrive = 'C'; + options.iLang = User::Language(); + options.iUsePhoneLang = ETrue; + options.iUpgradeData = SwiUI::EPolicyAllowed; + + SwiUI::TInstallOptionsPckg optionsPkg( options ); + installer.SilentInstall( status , inputStr, optionsPkg ); + User::WaitForRequest( status ); + ret = status.Int(); + CleanupStack::PopAndDestroy( &installer ); + _RETURN("InstallWrtWidgetL End", ret); + } + +// ----------------------------------------------------------------------------- +// CWmUnitTest::UninstallWrtWidgetL +// ----------------------------------------------------------------------------- +// +TInt CWmUnitTest::UninstallWrtWidgetL( CStifItemParser& aItem ) + { + TInt ret = KErrNone; + TPtrC inputStr; + aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); + User::LeaveIfError( aItem.GetNextString( inputStr ) ); + if ( inputStr.Length() == 0 ) User::Leave( KErrArgument ); + + TUid uid; + TLex lex( inputStr ); + lex.SkipSpaceAndMark(); + TPtrC mtoken = lex.MarkedToken(); + TInt pos = mtoken.FindF( KHexPrefix ); + if ( pos == 0 ) + { + TLex lex( mtoken.Mid( KHexPrefix().Length() ) ); + TUint id = 0; + ret = lex.Val( id, EHex ); + uid = TUid::Uid( (TInt)id ); + } + else + { + TInt id( 0 ); + ret = lex.Val( id ); + uid.iUid = id; + } + + if ( ret == KErrNone ) + { + // Uninstall widget + SwiUI::RSWInstSilentLauncher installer; + User::LeaveIfError( installer.Connect() ); + CleanupClosePushL( installer ); + + TRequestStatus status = KRequestPending; + SwiUI::TUninstallOptions optionsUninstall; + optionsUninstall.iBreakDependency = SwiUI::EPolicyAllowed; + optionsUninstall.iKillApp = SwiUI::EPolicyAllowed; + SwiUI::TUninstallOptionsPckg uninstallOptionsPkg( optionsUninstall ); + + installer.SilentUninstall( status, uid, uninstallOptionsPkg, KWrtMime ); + User::WaitForRequest( status ); + CleanupStack::PopAndDestroy( &installer ); + } + + _RETURN("UninstallWrtWidgetL End", ret); + } + +// ----------------------------------------------------------------------------- +// CWmUnitTest::ErrorPopup +// ----------------------------------------------------------------------------- +// +TInt CWmUnitTest::ErrorPopupL( CStifItemParser& /*aItem*/ ) + { + CWmResourceLoader* res = CWmResourceLoader::NewL( *CEikonEnv::Static() ); + res->ErrorPopup(KErrNone); + delete res; + _RETURN("ErrorPopupL End", KErrNone); + } +// End of File diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/tsrc/wmunittest/src/wmunittest_converter.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/tsrc/wmunittest/src/wmunittest_converter.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,164 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: test blocks for CWmImageConverter +* +*/ + +//INCLUDE FILES +#include +#include +#include +#include +#include +#include +#include "wmunittest.h" +// components to test +#include "wmimageconverter.h" + + +// ----------------------------------------------------------------------------- +// CWmUnitTest::ImageConverterCreateL +// ----------------------------------------------------------------------------- +// +TInt CWmUnitTest::ImageConverterCreateL( CStifItemParser& /*aItem*/ ) + { + if ( iImageConverter != 0 ) User::Leave( KErrArgument ); + TInt ret = KErrNone; + _CLEANUPCHECK_BEGIN + iImageConverter = CWmImageConverter::NewL( this ); + _CLEANUPCHECK_END + _RETURN("ImageConverterCreateL End", ret); + } + +// ----------------------------------------------------------------------------- +// CWmUnitTest::ImageConverterDeleteL +// ----------------------------------------------------------------------------- +// +TInt CWmUnitTest::ImageConverterDeleteL( CStifItemParser& /*aItem*/ ) + { + if ( iImageConverter == 0 ) User::Leave( KErrArgument ); + TInt ret = KErrNone; + delete iImageConverter; + iImageConverter = 0; + _RETURN("ImageConverterDeleteL End", ret); + } + +// ----------------------------------------------------------------------------- +// CWmUnitTest::ImageConverterConvertL +// ----------------------------------------------------------------------------- +// +TInt CWmUnitTest::ImageConverterConvertL( CStifItemParser& aItem ) + { + if ( iImageConverter == 0 ) User::Leave( KErrArgument ); + TInt ret = KErrNone; + iConversionReady = EFalse; + TPtrC inputStr; + + aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); + User::LeaveIfError( aItem.GetNextString( inputStr ) ); + if ( inputStr.Length() == 0 ) User::Leave( KErrArgument ); + + TRAPD( err, iImageConverter->HandleIconStringL( 40, 40, inputStr ) ); + if ( err != KErrNone ) + { + _LOG("ImageConverterConvertL:HandleIconStringL returns with leave"); + iConversionReady = ETrue; + iConversionError = err; + } + + _RETURN("ImageConverterConvertL End", ret ); + } + +// ----------------------------------------------------------------------------- +// CWmUnitTest::ImageConverterWaitResultL +// ----------------------------------------------------------------------------- +// +TInt CWmUnitTest::ImageConverterWaitResultL( CStifItemParser& aItem ) + { + if ( iImageConverter == 0 ) User::Leave( KErrArgument ); + TInt ret = KErrNone; + TInt expectedResult; + + User::LeaveIfError( aItem.GetNextInt( expectedResult ) ); + + iWaiting = EFalse; + if ( !iConversionReady ) + { + iWaiting = ETrue; + CActiveScheduler::Start(); + iWaiting = EFalse; + } + + // check conversion error + if ( expectedResult == KErrNone && iConversionError != KErrNone ) + { + _LOG("ImageConverterWaitResultL: expected ok, returns error"); + ret = iConversionError; + } + else if ( expectedResult != KErrNone && iConversionError == KErrNone ) + { + _LOG("ImageConverterWaitResultL: expected error, returns ok"); + ret = KErrGeneral; + } + + _RETURN("ImageConverterWaitResultL End", ret); + } + +// ----------------------------------------------------------------------------- +// CWmUnitTest::NotifyCompletion +// ----------------------------------------------------------------------------- +// +void CWmUnitTest::NotifyCompletion( TInt aError ) + { + if ( !iConversionReady ) + { + iConversionReady = ETrue; + iConversionError = aError; + if ( iWaiting ) + { + CActiveScheduler::Stop(); + } + } + } + +// ----------------------------------------------------------------------------- +// CWmUnitTest::ImageConverterConversionMethodL +// ----------------------------------------------------------------------------- +// +TInt CWmUnitTest::ImageConverterConversionMethodL( CStifItemParser& aItem ) + { + if ( iImageConverter == 0 ) User::Leave( KErrArgument ); + TInt ret = KErrNone; + TInt conversionMethod; + + User::LeaveIfError( aItem.GetNextInt( conversionMethod ) ); + + // check conversion method + if ( conversionMethod != iImageConverter->ConversionMethod() ) + ret = KErrGeneral; + + _RETURN("ImageConverterConversionMethodL End", ret); + } + +// ----------------------------------------------------------------------------- +// CWmUnitTest::CancelConvertL +// ----------------------------------------------------------------------------- +// +TInt CWmUnitTest::CancelConvertL( CStifItemParser& /*aItem*/ ) + { + if ( iImageConverter == 0 ) User::Leave( KErrArgument ); + iImageConverter->Cancel(); + _RETURN("CancelConvertL End", KErrNone); + } +// End of File diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/tsrc/wmunittest/src/wmunittest_plugin.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/tsrc/wmunittest/src/wmunittest_plugin.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,232 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: test blocks for CWmPlugin +* +*/ + +//INCLUDE FILES +#include +#include +#include +#include +#include +#include +#include "wmunittest.h" +// components to test +#include "wmplugin.h" +#include +#include + +// MACROS +#define _LOG(a) iLog->Log(_L(a)) +#define _RETURN(a, b) iLog->Log(_L("\treturn: %d"),b); \ + iLog->Log(_L(a)); \ + return b; \ + +#define _CLEANUPCHECK_BEGIN \ + CBase* __check = new (ELeave) CBase(); \ + CleanupStack::PushL( __check ); + +#define _CLEANUPCHECK_END \ + CleanupStack::PopAndDestroy( __check ); + +// CONSTANTS +const TInt KName = 100; +const TInt KDescription = 101; +const TInt KLogoPath = 102; +const TInt KCanBeAdded = 103; +const TInt KCanBeRemoved = 104; + + +// ============================ MEMBER FUNCTIONS =============================== + + +// ----------------------------------------------------------------------------- +// CWmUnitTest::PluginCreateL +// ----------------------------------------------------------------------------- +// +TInt CWmUnitTest::PluginCreateL( CStifItemParser& /*aItem*/ ) + { + if ( iWmPlugin != 0 ) User::Leave( KErrArgument ); + TInt ret = KErrNone; + _CLEANUPCHECK_BEGIN + iWmPlugin = CWmPlugin::NewL(); + iWmPlugin->SetContentController( this ); + _CLEANUPCHECK_END + _RETURN("PluginCreateL End", ret); + } + +// ----------------------------------------------------------------------------- +// CWmUnitTest::PluginDeleteL +// ----------------------------------------------------------------------------- +// +TInt CWmUnitTest::PluginDeleteL( CStifItemParser& /*aItem*/ ) + { + if ( iWmPlugin == 0 ) User::Leave( KErrArgument ); + TInt ret = KErrNone; + delete iWmPlugin; + iWmPlugin = 0; + _RETURN("PluginDeleteL End", ret); + } + +// ----------------------------------------------------------------------------- +// CWmUnitTest::PluginActivateL +// ----------------------------------------------------------------------------- +// +TInt CWmUnitTest::PluginActivateL( CStifItemParser& /*aItem*/ ) + { + if ( iWmPlugin == 0 ) User::Leave( KErrArgument ); + iWmPlugin->Activate(); + _RETURN("PluginActivateL End", KErrNone); + } + +// ----------------------------------------------------------------------------- +// CWmUnitTest::PluginDeactivateL +// ----------------------------------------------------------------------------- +// +TInt CWmUnitTest::PluginDeactivateL( CStifItemParser& /*aItem*/ ) + { + if ( iWmPlugin == 0 ) User::Leave( KErrArgument ); + iWmPlugin->Deactivate(); + _RETURN("PluginActivateL End", KErrNone); + } + +// ----------------------------------------------------------------------------- +// CWmUnitTest::PluginWidgetsChangedL +// ----------------------------------------------------------------------------- +// +TInt CWmUnitTest::PluginWidgetsChangedL( CStifItemParser& /*aItem*/ ) + { + if ( iWmPlugin == 0 ) User::Leave( KErrArgument ); + iWmPlugin->NotifyWidgetListChanged(); + _RETURN("PluginWidgetsChangedL End", KErrNone); + } + +// ============================================================================= +// Methods from MHsContentController +// ============================================================================= + +TInt CWmUnitTest::WidgetListL( CHsContentInfoArray& aArray ) + { + CreateContentInfoArrayL( aArray, iMass ); + return KErrNone; + } + +TInt CWmUnitTest::ViewListL( CHsContentInfoArray& /*aArray*/ ) + { + return KErrNone; + } + +TInt CWmUnitTest::AppListL( CHsContentInfoArray& /*aArray*/ ) + { + return KErrNone; + } + +TInt CWmUnitTest::AddWidgetL( CHsContentInfo& /*aInfo*/ ) + { + return KErrNone; + } + +TInt CWmUnitTest::RemoveWidgetL( CHsContentInfo& /*aInfo*/ ) + { + return KErrNone; + } + +TInt CWmUnitTest::AddViewL( CHsContentInfo& /*aInfo*/ ) + { + return KErrNone; + } + +TInt CWmUnitTest::RemoveViewL( CHsContentInfo& /*aInfo*/ ) + { + return KErrNone; + } + +TInt CWmUnitTest::ActivateViewL( CHsContentInfo& /*aInfo*/ ) + { + return KErrNone; + } + +TInt CWmUnitTest::ActivateAppL( CHsContentInfo& /*aInfo*/ ) + { + return KErrNone; + } + + + +// ----------------------------------------------------------------------------- +// CWmUnitTest::ChangeContentL +// ----------------------------------------------------------------------------- +// +TInt CWmUnitTest::ChangeContentL( CStifItemParser& aItem ) + { + aItem.GetNextInt( iChangeIndex ); + aItem.GetNextInt( iChangeType ); + TPtrC changeValue; + aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); + aItem.GetNextString( changeValue ); + delete iChangeValue; + iChangeValue = NULL; + iChangeValue = changeValue.AllocL(); + _RETURN("ChangeContentL End", KErrNone); + } + +// string -> bool conversion function +TBool s2b( const TDesC& str ) + { + return ( str == _L("1") ? ETrue : EFalse ); + } + +// ----------------------------------------------------------------------------- +// CWmUnitTest::CreateContentInfoArrayL +// ----------------------------------------------------------------------------- +// +void CWmUnitTest::CreateContentInfoArrayL( CHsContentInfoArray& aArray, TInt aCount ) + { + for( TInt i=0; i name; + name.Format( _L("Widget_%d"), i ); + info->SetNameL( name ); + TBuf8<20> id; + id.Num( i ); + info->SetUidL( id ); + info->SetTypeL( _L8("template") ); + info->SetIconPathL( _L("uid(0x2000DAD2)") ); + info->SetCanBeAdded( ETrue ); + info->SetDescriptionL(_L("Default plaa plaa plaa plaa plaa plaa plaa")); + + aArray.Array().AppendL( info ); + CleanupStack::Pop( info ); + } + + // change content + if ( iChangeIndex >= 0 && iChangeIndex < aCount ) + { + CHsContentInfo* info = aArray.Array()[iChangeIndex]; + if ( iChangeType == KName ) + { info->SetNameL( *iChangeValue ); } + else if ( iChangeType == KDescription ) + { info->SetDescriptionL( *iChangeValue ); } + else if ( iChangeType == KLogoPath ) + { info->SetIconPathL( *iChangeValue ); } + else if ( iChangeType == KCanBeAdded ) + { info->SetCanBeAdded( s2b(*iChangeValue) ); } + else if ( iChangeType == KCanBeRemoved ) + { info->SetCanBeRemoved( s2b(*iChangeValue) ); } + } + } + +// End of File diff -r f72a12da539e -r 5315654608de idlehomescreen/widgetmanager/tsrc/wmunittest/src/wmunittest_sortorder.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/tsrc/wmunittest/src/wmunittest_sortorder.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -0,0 +1,175 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: test blocks for CWmPersistentWidgetorder +* +*/ + +//INCLUDE FILES +#include +#include +#include +#include +#include +#include +#include "wmunittest.h" +// components to test +#include "wmpersistentwidgetorder.h" +#include "wmwidgetdata.h" +#include +#include +#include // widgetreqistry + +// ============================ MEMBER FUNCTIONS =============================== + + +// ----------------------------------------------------------------------------- +// CWmUnitTest::WidgetOrderCreateL +// ----------------------------------------------------------------------------- +// +TInt CWmUnitTest::WidgetOrderCreateL( CStifItemParser& /*aItem*/ ) + { + if ( iWmWidgetOrder != 0 ) User::Leave( KErrArgument ); + TInt ret = KErrNone; + _CLEANUPCHECK_BEGIN + iWmWidgetOrder = CWmPersistentWidgetOrder::NewL( iFs ); + _CLEANUPCHECK_END + _RETURN("WidgetOrderCreateL End", ret); + } + +// ----------------------------------------------------------------------------- +// CWmUnitTest::WidgetOrderDeleteL +// ----------------------------------------------------------------------------- +// +TInt CWmUnitTest::WidgetOrderDeleteL( CStifItemParser& /*aItem*/ ) + { + if ( iWmWidgetOrder == 0 ) User::Leave( KErrArgument ); + TInt ret = KErrNone; + delete iWmWidgetOrder; + iWmWidgetOrder = 0; + _RETURN("WidgetOrderDeleteL End", ret); + } + +// ----------------------------------------------------------------------------- +// CWmUnitTest::WidgetOrderLoadL +// ----------------------------------------------------------------------------- +// +TInt CWmUnitTest::WidgetOrderLoadL( CStifItemParser& /*aItem*/ ) + { + if ( iWmWidgetOrder == 0 ) User::Leave( KErrArgument ); + TInt ret = KErrNone; + _CLEANUPCHECK_BEGIN + iWmWidgetOrder->LoadL(); + _CLEANUPCHECK_END + _RETURN("WidgetOrderLoadL End", ret); + } + + +// ----------------------------------------------------------------------------- +// CWmUnitTest::WidgetOrderSaveL +// ----------------------------------------------------------------------------- +// +TInt CWmUnitTest::WidgetOrderSaveL( CStifItemParser& /*aItem*/ ) + { + if ( iWmWidgetOrder == 0 ) User::Leave( KErrArgument ); + TInt ret = KErrNone; + + _CLEANUPCHECK_BEGIN + RWidgetDataValues array; + CleanupClosePushL( array ); + CreateWidgetDataArrayL( array, iMass ); + iWmWidgetOrder->StoreL( array ); + array.ResetAndDestroy(); + CleanupStack::Pop( &array ); + _CLEANUPCHECK_END + + _RETURN("WidgetOrderSaveL End", ret); + } + +// ----------------------------------------------------------------------------- +// CWmUnitTest::WidgetOrderCheckIsEmptyL +// ----------------------------------------------------------------------------- +// +TInt CWmUnitTest::WidgetOrderCheckIsEmptyL( CStifItemParser& aItem ) + { + if ( iWmWidgetOrder == 0 ) User::Leave( KErrArgument ); + TInt ret = KErrNone; + TInt expectedResult; + aItem.GetNextInt( expectedResult ); + + if ( iWmWidgetOrder->IsEmpty() && !expectedResult ) + ret = KErrGeneral; + if ( !iWmWidgetOrder->IsEmpty() && expectedResult ) + ret = KErrGeneral; + + _RETURN("WidgetOrderCheckIsEmptyL End", ret); + } + +// ----------------------------------------------------------------------------- +// CWmUnitTest::WidgetOrderUseL +// ----------------------------------------------------------------------------- +// +TInt CWmUnitTest::WidgetOrderUseL( CStifItemParser& /*aItem*/ ) + { + if ( iWmWidgetOrder == 0 ) User::Leave( KErrArgument ); + TInt ret = KErrNone; + + _CLEANUPCHECK_BEGIN + // test IndexOf + RWidgetDataValues array; + CreateWidgetDataArrayL( array, iMass ); + for( TInt i=0; iIndexOf( *array[i] ); + if ( index < KErrNotFound || index >= array.Count() ) + ret = KErrUnknown; // illegal index + } + array.ResetAndDestroy(); + _CLEANUPCHECK_END + + _RETURN("WidgetOrderUseL End", ret); + } + + +// ----------------------------------------------------------------------------- +// CWmUnitTest::CreateWidgetDataArrayL +// ----------------------------------------------------------------------------- +// +void CWmUnitTest::CreateWidgetDataArrayL( RWidgetDataValues& aArray, TInt aCount ) + { + // first create an array of content info classes + CHsContentInfoArray* contentArray = CHsContentInfoArray::NewL(); + CleanupStack::PushL( contentArray ); + CreateContentInfoArrayL( *contentArray, aCount ); + // connect to widget registry + RWidgetRegistryClientSession registryClient; + User::LeaveIfError( registryClient.Connect() ); + CleanupClosePushL( registryClient ); + + while( contentArray->Array().Count() > 0 ) + { + CWmWidgetData* data = CWmWidgetData::NewL( + contentArray->Array()[0], ®istryClient); + contentArray->Array().Remove( 0 ); + CleanupStack::PushL( data ); + aArray.AppendL( data ); + CleanupStack::Pop( data ); + } + + registryClient.Disconnect(); + CleanupStack::PopAndDestroy( ®istryClient ); + CleanupStack::PopAndDestroy( contentArray ); + } + + +// End of File diff -r f72a12da539e -r 5315654608de idlehomescreen/xmluicontroller/inc/contentpublisher.h --- a/idlehomescreen/xmluicontroller/inc/contentpublisher.h Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/xmluicontroller/inc/contentpublisher.h Thu Jan 07 12:39:41 2010 +0200 @@ -28,7 +28,7 @@ #define CONTENTPUBLISHER_H #include -#include +#include // FORWARD DECLARATIONS class CLiwGenericParamList; diff -r f72a12da539e -r 5315654608de idlehomescreen/xmluicontroller/src/aieventhandler.cpp --- a/idlehomescreen/xmluicontroller/src/aieventhandler.cpp Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/xmluicontroller/src/aieventhandler.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -15,9 +15,9 @@ * */ -#include -#include -#include +#include +#include +#include #include #include diff -r f72a12da539e -r 5315654608de idlehomescreen/xmluicontroller/src/contentpublisher.cpp --- a/idlehomescreen/xmluicontroller/src/contentpublisher.cpp Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/xmluicontroller/src/contentpublisher.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -18,9 +18,9 @@ #include "contentpublisher.h" #include "globalqueryhandler.h" -#include -#include -#include +#include +#include +#include #include #include #include "xmluicontroller.h" diff -r f72a12da539e -r 5315654608de idlehomescreen/xmluicontroller/src/onlineofflinehelper.cpp --- a/idlehomescreen/xmluicontroller/src/onlineofflinehelper.cpp Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/xmluicontroller/src/onlineofflinehelper.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -273,7 +273,7 @@ // Show roaming notification CAknGlobalNote* note = CAknGlobalNote::NewLC(); HBufC* msg( StringLoader::LoadLC( R_QTN_HS_AUTOMATIC_OFFLINE ) ); - + note->SetSoftkeys(R_AVKON_SOFTKEYS_OK_EMPTY); note->ShowNoteL( EAknGlobalInformationNote, *msg ); CleanupStack::PopAndDestroy( 2, note ); // msg } diff -r f72a12da539e -r 5315654608de idlehomescreen/xmluirendering/renderingplugins/extrenderingplugin/src/xnextrenderingpluginadapter.cpp --- a/idlehomescreen/xmluirendering/renderingplugins/extrenderingplugin/src/xnextrenderingpluginadapter.cpp Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/xmluirendering/renderingplugins/extrenderingplugin/src/xnextrenderingpluginadapter.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -22,9 +22,6 @@ // Local constants -// TODO: Content controller ECom interface UID -const TUid KInterfaceUidContentController = { 0x20026F51 }; - // ======== MEMBER FUNCTIONS ======== // ---------------------------------------------------------------------------- diff -r f72a12da539e -r 5315654608de idlehomescreen/xmluirendering/renderingplugins/xnmenufactory/src/xnmenu.cpp --- a/idlehomescreen/xmluirendering/renderingplugins/xnmenufactory/src/xnmenu.cpp Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/xmluirendering/renderingplugins/xnmenufactory/src/xnmenu.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -96,7 +96,6 @@ adapter->SetSoftKeyImageL( aBitmap, aMask, aPos, aNode, aPreserveAspectRatio, aInvertMask, aTransferOwnership ); } -#if 0 // MSK icon // ----------------------------------------------------------------------------- // CXnMenu::SetSoftKeyImageL // @@ -111,7 +110,6 @@ CXnMenuAdapter* adapter = static_cast< CXnMenuAdapter* >( ControlAdapter() ); adapter->SetSoftKeyImageL( aId, aBmpFile, aBmp, aBmpM, aPos, aEnable ); } -#endif // MSK icon // ----------------------------------------------------------------------------- // CXnMenu::SetSoftKeyTextL diff -r f72a12da539e -r 5315654608de idlehomescreen/xmluirendering/renderingplugins/xnmenufactory/src/xnmenuadapter.cpp --- a/idlehomescreen/xmluirendering/renderingplugins/xnmenufactory/src/xnmenuadapter.cpp Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/xmluirendering/renderingplugins/xnmenufactory/src/xnmenuadapter.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -71,8 +71,6 @@ const TInt KXnMenuArrayGranularity = 6; const TInt KWideScreenWidth = 640; -_LIT( KMskIconDialer, "#dialer"); - using namespace XnPropertyNames; static CXnNodePluginIf* FindChildL(CXnNodePluginIf& aNode, @@ -93,14 +91,11 @@ iPreserveAspectRatio( EFalse ), iUpdateAppearance( ETrue ), iOwnBitmaps( ETrue ), - iDefault( EFalse ) -#if 0 // MSK icon change - , + iDefault( EFalse ), iId( KAknsIIDQsnIconColors ), iBmpFile( NULL ), iBmp( 0 ), iBmpM( 0 ) -#endif // MSK icon change { } @@ -129,10 +124,8 @@ iImageOn = EFalse; iInvertMask = EFalse; iPreserveAspectRatio = EFalse; -#if 0 // MSK icon change delete iBmpFile; iBmpFile = NULL; -#endif // MSK icon change } CXnNodePluginIf* iNode; @@ -147,12 +140,10 @@ TBool iUpdateAppearance; TBool iOwnBitmaps; TBool iDefault; -#if 0 // MSK icon change TAknsItemID iId; HBufC* iBmpFile; TInt32 iBmp; TInt32 iBmpM; -#endif // MSK icon change }; @@ -1104,7 +1095,6 @@ // void CXnMenuAdapter::SetSoftkeyAppearanceL( CXnSoftkeyItem& aItem ) { -#if 0 // MSK icon change if( IsNodeVisibleL( *aItem.iNode) ) { if( aItem.iImageOn ) @@ -1129,54 +1119,6 @@ } } } -#else // MSK icon change - if( IsNodeVisibleL( *aItem.iNode) ) - { - if( aItem.iPosition == CEikButtonGroupContainer::ELeftSoftkeyPosition - || aItem.iPosition == CEikButtonGroupContainer::ERightSoftkeyPosition) - { - if(aItem.iImageOn) - { - ChangeSoftkeyImageL(aItem); - } - else if(aItem.iLabel)// change label - { - TBool left(EFalse); - if(aItem.iPosition == CEikButtonGroupContainer::ELeftSoftkeyPosition) - { - left = ETrue; - } - EikSoftkeyImage::SetLabel( iContainer,left ); - iContainer->SetCommandL( aItem.iPosition, aItem.iCommandId, *aItem.iLabel ); - - } - - } - else if(aItem.iPosition == CEikButtonGroupContainer::EMiddleSoftkeyPosition) - { - if( aItem.iLabel ) - { - // Msk will have predefined image based on command id - if( *aItem.iLabel == menu::KMSKDotImage16 ) - { - aItem.iCommandId = KCBACommandFirst; - } - else if(*aItem.iLabel == KMskIconDialer) - { -#ifndef _AVKON_CBA_LSC - aItem.iCommandId = EAknSoftkeyDialler; -#endif - } - else - { - aItem.iCommandId = KCBACommandMiddle; - } - iContainer->SetCommandL( aItem.iPosition, aItem.iCommandId, *aItem.iLabel ); - } - } - } - } -#endif // MSK icon change // ----------------------------------------------------------------------------- // CXnMenuAdapter::InitSoftkeyItemsL @@ -1220,13 +1162,11 @@ // No layout calulations needed node->SetLayoutCapable( EFalse ); -#if 0 // MSK icon change if ( aItem.iPosition == CEikButtonGroupContainer::EMiddleSoftkeyPosition ) { aItem.iImageOn = ETrue; return; } -#endif // MSK icon change CXnProperty* pathProp( node->PathL() ); if( pathProp ) @@ -1778,6 +1718,9 @@ // void CXnMenuAdapter::SetContainerL( CEikButtonGroupContainer& aContainer ) { + + User::LeaveIfNull( &aContainer ); + TBool updateNeeded( EFalse ); TInt statusPaneId( iAvkonAppUi->StatusPane()->CurrentLayoutResId() ); @@ -1985,7 +1928,6 @@ } } -#if 0 // MSK icon change // ----------------------------------------------------------------------------- // CXnMenuAdapter::SetSoftKeyImageL // @@ -2039,7 +1981,6 @@ softkey->iNode->SetDirtyL(); } } -#endif // MSK icon change // ----------------------------------------------------------------------------- // CXnMenuAdapter::SetSoftKeyTextL @@ -2422,11 +2363,9 @@ // void CXnMenuAdapter::ChangeSoftkeyImageL(const CXnSoftkeyItem& aSoftkey) { -#if 0 // MSK icon change if ( aSoftkey.iPosition == CEikButtonGroupContainer::ELeftSoftkeyPosition || aSoftkey.iPosition == CEikButtonGroupContainer::ERightSoftkeyPosition ) { -#endif // MSK icon change TSize size; if(AknLayoutUtils::PenEnabled()) { @@ -2444,8 +2383,7 @@ { left = EFalse; } - EikSoftkeyImage::SetImage( iContainer, *image, left ); -#if 0 // MSK icon change + EikSoftkeyImage::SetImage( iContainer, *image, left ); } else if ( aSoftkey.iBmpFile ) { @@ -2460,7 +2398,6 @@ ETrue ); cba->DrawNow(); } -#endif // MSK icon change } // --------------------------------------------------------------------------- @@ -2626,17 +2563,11 @@ softkey->iImageOn = EFalse; softkey->iLabel = FindSoftkeyLabelL(aNode); } -#if 0 // MSK icon change else { InitSoftkeyItemImageL( *softkey ); } -#else // MSK icon change - else if(softkey->iPosition != CEikButtonGroupContainer::EMiddleSoftkeyPosition) - { // we can't set own image to middle softkey - InitSoftkeyItemImageL( *softkey ); - } -#endif // MSK icon change + softkey->iUpdateAppearance = ETrue; iSoftkeyItems.AppendL(softkey); CleanupStack::Pop(softkey); diff -r f72a12da539e -r 5315654608de idlehomescreen/xmluirendering/renderingplugins/xnnewstickerfactory/src/xnnewstickercontrol.cpp --- a/idlehomescreen/xmluirendering/renderingplugins/xnnewstickerfactory/src/xnnewstickercontrol.cpp Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/xmluirendering/renderingplugins/xnnewstickerfactory/src/xnnewstickercontrol.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -422,7 +422,7 @@ // const TDesC& CXnNewstickerControl::Title(TInt aIndex) { - if (aIndex < 0 || aIndex > iTitles.Count()) + if (aIndex < 0 || aIndex >= iTitles.Count()) { return KNullDesC; } @@ -513,6 +513,11 @@ // const TDesC8& CXnNewstickerControl::CurrentSvgTitle() { + if ( iFirstDrawingTitleIndex < 0 || iFirstDrawingTitleIndex >= iTitles.Count() ) + { + return KNullDesC8; + } + CTitleData* title = iTitles[iFirstDrawingTitleIndex]; // Is it SVG title if (title->IsSvgTitle()) @@ -787,7 +792,7 @@ return; } iFirstDrawingTitleIndex = GetNextTitleWithContent( iFirstDrawingTitleIndex ); - if ( iFirstDrawingTitleIndex < 0 ) + if ( iFirstDrawingTitleIndex < 0 || iFirstDrawingTitleIndex >= iTitles.Count() ) { return; } @@ -938,6 +943,10 @@ { return; } + if ( iFirstDrawingTitleIndex < 0 || iFirstDrawingTitleIndex >= iTitles.Count() ) + { + return; + } if (iTitles[iFirstDrawingTitleIndex]->IsSvgTitle()) { // Show SVG title @@ -1086,7 +1095,8 @@ void CXnNewstickerControl::DoScrollL() { // If there are no titles, don't do anything. - if( !IsVisibleTitles() || iFirstDrawingTitleIndex < 0 ) + if( !IsVisibleTitles() || iFirstDrawingTitleIndex < 0 || + iFirstDrawingTitleIndex >= iTitles.Count() ) { return; } @@ -1317,7 +1327,7 @@ const TInt count = iTitles.Count(); TInt textWidth=0; const TInt rectWidth = iContentRect.Width(); - if( iCurrentTitleIndex < count ) + if( iCurrentTitleIndex >= 0 && iCurrentTitleIndex < count ) { textWidth = iTitles[iCurrentTitleIndex]->TitleTextLengthInPixels(); } diff -r f72a12da539e -r 5315654608de idlehomescreen/xmluirendering/renderingplugins/xnnppluginfactory/inc/xnnpplugincontroladapter.h --- a/idlehomescreen/xmluirendering/renderingplugins/xnnppluginfactory/inc/xnnpplugincontroladapter.h Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/xmluirendering/renderingplugins/xnnppluginfactory/inc/xnnpplugincontroladapter.h Thu Jan 07 12:39:41 2010 +0200 @@ -21,7 +21,7 @@ #define CPLUGINCONTROLADAPTER_H // INCLUDES -#include +#include // CLASS DECLARATION diff -r f72a12da539e -r 5315654608de idlehomescreen/xmluirendering/renderingplugins/xnnppluginfactory/src/xnnppluginhandler.cpp --- a/idlehomescreen/xmluirendering/renderingplugins/xnnppluginfactory/src/xnnppluginhandler.cpp Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/xmluirendering/renderingplugins/xnnppluginfactory/src/xnnppluginhandler.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -20,7 +20,7 @@ // INCLUDE FILES #include "xnnppluginhandler.h" #include -#include +#include // ============================= LOCAL FUNCTIONS =============================== diff -r f72a12da539e -r 5315654608de idlehomescreen/xmluirendering/renderingplugins/xntexteditorfactory/src/xntexteditorpublisher.cpp --- a/idlehomescreen/xmluirendering/renderingplugins/xntexteditorfactory/src/xntexteditorpublisher.cpp Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/xmluirendering/renderingplugins/xntexteditorfactory/src/xntexteditorpublisher.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -18,9 +18,9 @@ #include "xntexteditorpublisher.h" #include "xntexteditoradapter.h" -#include -#include -#include +#include +#include +#include #include #include #include diff -r f72a12da539e -r 5315654608de idlehomescreen/xmluirendering/renderingplugins/xnvolumecontrolfactory/src/xnvolumecontroladapter.cpp --- a/idlehomescreen/xmluirendering/renderingplugins/xnvolumecontrolfactory/src/xnvolumecontroladapter.cpp Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/xmluirendering/renderingplugins/xnvolumecontrolfactory/src/xnvolumecontroladapter.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -214,10 +214,24 @@ void CXnVolumeControlAdapter::GetRangeL( TInt& aMinimumValue, TInt& aMaximumValue ) { CXnProperty* minRange = iNode.GetPropertyL( XnPropertyNames::volumecontrol::KMinRange ); - aMinimumValue = static_cast( minRange->FloatValueL() ); + if ( minRange ) + { + aMinimumValue = static_cast( minRange->FloatValueL() ); + } + else + { + aMinimumValue = 1; + } CXnProperty* maxRange = iNode.GetPropertyL( XnPropertyNames::volumecontrol::KMaxRange ); - aMaximumValue = static_cast( maxRange->FloatValueL() ); + if ( maxRange ) + { + aMaximumValue = static_cast( maxRange->FloatValueL() ); + } + else + { + aMaximumValue = aMinimumValue; + } } // ----------------------------------------------------------------------------- @@ -517,7 +531,12 @@ TInt CXnVolumeControlAdapter::GetCurrentValueL() { CXnProperty* valueProperty = iNode.GetPropertyL( XnPropertyNames::action::KValue ); - return static_cast( valueProperty->FloatValueL() ); + TInt retVal( 1 ); + if ( valueProperty ) + { + retVal = static_cast( valueProperty->FloatValueL() ); + } + return retVal; } // ---------------------------------------------------------------------------- diff -r f72a12da539e -r 5315654608de idlehomescreen/xmluirendering/uiengine/inc/xneditor.h --- a/idlehomescreen/xmluirendering/uiengine/inc/xneditor.h Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/xmluirendering/uiengine/inc/xneditor.h Thu Jan 07 12:39:41 2010 +0200 @@ -37,6 +37,7 @@ class CAknListQueryDialog; class CXnViewManager; class CXnViewData; +class CRepository; namespace hspswrapper { @@ -185,6 +186,14 @@ */ CHspsWrapper& HspsWrapper() const; + /** + * Retrives Id read from central repository. + * + * @since S60 5.0 + * @return sucess or failure standard error code + */ + TInt IdFromCrep ( TDes8& aUid ) const; + private: // from MHsContentController @@ -296,6 +305,8 @@ CXnNode* iTargetPlugin; /** Widgets visibility state */ TBool iWidgetsVisibilityState; + /** Central repository , to choose plugin, owned*/ + CRepository* iRepository; }; #endif // C_XNEDITOR_H diff -r f72a12da539e -r 5315654608de idlehomescreen/xmluirendering/uiengine/inc/xneffectmanager.h --- a/idlehomescreen/xmluirendering/uiengine/inc/xneffectmanager.h Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/xmluirendering/uiengine/inc/xneffectmanager.h Thu Jan 07 12:39:41 2010 +0200 @@ -94,14 +94,16 @@ /** * Starts fullscreen effect. * @param aEffect effect data + * @return ETrue if effect started, otherwise EFalse */ - void DoBeginFullscreenEffect( TXnEffect& aEffect ); + TBool DoBeginFullscreenEffect( TXnEffect& aEffect ); /** * Starts control effect. * @param aEffect effect data + * @return ETrue if effect started, otherwise EFalse */ - void DoBeginControlEffect( TXnEffect& aEffect ); + TBool DoBeginControlEffect( TXnEffect& aEffect ); /** * Removes and destroys effect from effect list. diff -r f72a12da539e -r 5315654608de idlehomescreen/xmluirendering/uiengine/inc/xnplugindefs.h --- a/idlehomescreen/xmluirendering/uiengine/inc/xnplugindefs.h Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/xmluirendering/uiengine/inc/xnplugindefs.h Thu Jan 07 12:39:41 2010 +0200 @@ -67,7 +67,7 @@ _LIT8( KDummy8, "empty" ); // CPS constants -_LIT( KTemplatedWidget, "ai3templatedwidget" ); +_LIT( KWRTTemplate, "ai3templatedwidget" ); _LIT( KPublisher16, "publisher" ); _LIT8( KPublisher, "publisher" ); _LIT8( KContentType, "content_type" ); @@ -93,6 +93,5 @@ _LIT8( KWallpaper, "wallpaper" ); _LIT8( KPath, "path" ); -_LIT8( KWRTTemplate, "ai3templatedwidget"); #endif /* _XNPLUGINDEFS_H_ */ diff -r f72a12da539e -r 5315654608de idlehomescreen/xmluirendering/uiengine/inc/xnscrollablecontroladapter.h --- a/idlehomescreen/xmluirendering/uiengine/inc/xnscrollablecontroladapter.h Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/xmluirendering/uiengine/inc/xnscrollablecontroladapter.h Thu Jan 07 12:39:41 2010 +0200 @@ -18,24 +18,25 @@ #ifndef __XNSCROLLABLECONTROLADAPTER_H__ #define __XNSCROLLABLECONTROLADAPTER_H__ -// INCLUDES -#include "xncontroladapter.h" +// System includes #include +#include #include -#include -// FORWARD DECLARATIONS +// User includes +#include "xncontroladapter.h" + +// Forward declarations class CXnNodePluginIf; class CXnUiEngine; class CXnNode; class CAknPhysics; - -// CLASS DECLARATION +// Class declaration /** * @ingroup group_xnlayoutengine -* Popup Control adapter interface class +* Scrollable Control adapter interface class * @lib xnlayoutengine.lib * @since Series 60 5.0 */ @@ -224,6 +225,11 @@ * True, if layout has been changed and engine needs to be reset. */ TBool iLayoutChanged; + + /** + * Direction + */ + TInt iDirection; }; #endif // __XNSCROLLABLECONTROLADAPTER_H__ diff -r f72a12da539e -r 5315654608de idlehomescreen/xmluirendering/uiengine/inc/xnwidgetextensionadapter.h --- a/idlehomescreen/xmluirendering/uiengine/inc/xnwidgetextensionadapter.h Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/xmluirendering/uiengine/inc/xnwidgetextensionadapter.h Thu Jan 07 12:39:41 2010 +0200 @@ -22,8 +22,6 @@ #include "xncontroladapter.h" #include -#include "xncontroladapter.h" - // Forward declarations class CXnAppUiAdapter; class CXnNode; diff -r f72a12da539e -r 5315654608de idlehomescreen/xmluirendering/uiengine/src/xncontroladapterimpl.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xncontroladapterimpl.cpp Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/xmluirendering/uiengine/src/xncontroladapterimpl.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -3064,10 +3064,15 @@ CFbsBitmap* returnValue = NULL; CFbsBitmap* bitmapMask = NULL; + if ( !pathProperty ) + { + return NULL; + } + CXnDomList& propertyValueList = pathProperty->Property()->PropertyValueList(); TInt count = propertyValueList.Length(); - for ( TInt i = 0; i < propertyValueList.Length(); ++i ) + for ( TInt i = 0; i < count; ++i ) { CXnDomPropertyValue* value = static_cast< CXnDomPropertyValue* >( propertyValueList.Item( i ) ); @@ -3093,53 +3098,56 @@ } else if ( value->PrimitiveValueType() == CXnDomPropertyValue::EPercentage ) { - CXnDomPropertyValue* tmpValue = NULL; - tmpValue = value->CloneL(); - CXnProperty* tmpProperty = NULL; - CleanupStack::PushL( tmpValue ); - tmpProperty = CXnProperty::NewL( - KNullDesC8, - tmpValue, - aNode.UiEngine()->ODT()->DomDocument().StringPool() ); - CleanupStack::Pop( tmpValue ); - TSize imageSize = returnValue->SizeInPixels(); - CleanupStack::PushL( tmpProperty ); - TInt intValue = static_cast< TInt >( value->FloatValueL() ); - TInt dividerValue = 0; - - switch ( i ) + if ( returnValue ) { - case 1: + CXnDomPropertyValue* tmpValue = NULL; + tmpValue = value->CloneL(); + CXnProperty* tmpProperty = NULL; + CleanupStack::PushL( tmpValue ); + tmpProperty = CXnProperty::NewL( + KNullDesC8, + tmpValue, + aNode.UiEngine()->ODT()->DomDocument().StringPool() ); + CleanupStack::Pop( tmpValue ); + TSize imageSize = returnValue->SizeInPixels(); + CleanupStack::PushL( tmpProperty ); + TInt intValue = static_cast< TInt >( value->FloatValueL() ); + TInt dividerValue = 0; + + switch ( i ) { - dividerValue = aNode.UiEngine()->VerticalPixelValueL( - tmpProperty, imageSize.iHeight ); - aBorderBitmapDividerTop = dividerValue; - break; + case 1: + { + dividerValue = aNode.UiEngine()->VerticalPixelValueL( + tmpProperty, imageSize.iHeight ); + aBorderBitmapDividerTop = dividerValue; + break; + } + case 2: + { + dividerValue = aNode.UiEngine()->HorizontalPixelValueL( + tmpProperty, imageSize.iWidth ); + aBorderBitmapDividerRight = dividerValue; + break; + } + case 3: + { + dividerValue = aNode.UiEngine()->VerticalPixelValueL( + tmpProperty, imageSize.iHeight ); + aBorderBitmapDividerBottom = dividerValue; + break; + } + case 4: + { + dividerValue = aNode.UiEngine()->HorizontalPixelValueL( + tmpProperty, imageSize.iWidth ); + aBorderBitmapDividerLeft = dividerValue; + break; + } } - case 2: - { - dividerValue = aNode.UiEngine()->HorizontalPixelValueL( - tmpProperty, imageSize.iWidth ); - aBorderBitmapDividerRight = dividerValue; - break; - } - case 3: - { - dividerValue = aNode.UiEngine()->VerticalPixelValueL( - tmpProperty, imageSize.iHeight ); - aBorderBitmapDividerBottom = dividerValue; - break; - } - case 4: - { - dividerValue = aNode.UiEngine()->HorizontalPixelValueL( - tmpProperty, imageSize.iWidth ); - aBorderBitmapDividerLeft = dividerValue; - break; - } + + CleanupStack::PopAndDestroy( tmpProperty ); } - - CleanupStack::PopAndDestroy( tmpProperty ); } else if ( value->PrimitiveValueType() == CXnDomPropertyValue::EString || value->PrimitiveValueType() == CXnDomPropertyValue::EIdent ) diff -r f72a12da539e -r 5315654608de idlehomescreen/xmluirendering/uiengine/src/xneditor.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xneditor.cpp Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/xmluirendering/uiengine/src/xneditor.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -28,6 +28,7 @@ #include #include #include +#include // User includes #include "xnuiengine.h" @@ -80,12 +81,14 @@ _LIT8( KSingle, "single" ); _LIT8( KMulti, "multi" ); -_LIT8( KWMUi, "WmContentControlUI" ); const TInt32 KMultiInstanceUnlimitedValue = -1; -const TInt32 KMultiInstanceHiddenValue = 0; const TUid KDummyUid = { 0x0000000 }; + +const TUint32 KAICCPluginUIDKey = 0x00003010; +const TInt32 KOpaQDataLen = 10; + enum { ECanBeAdded = 0x01, @@ -307,6 +310,7 @@ { iCpsWrapper = CCpsWrapper::NewL( *this ); iHspsWrapper = CHspsWrapper::NewL( aUid, this ); + iRepository= CRepository::NewL( TUid::Uid( KCRUidActiveIdleLV ) ); } // --------------------------------------------------------------------------- @@ -320,6 +324,7 @@ delete iCpsWrapper; delete iHspsWrapper; delete iPublisherMap; + delete iRepository; } // ----------------------------------------------------------------------------- @@ -617,14 +622,26 @@ } // --------------------------------------------------------------------------- +// CXnEditor::IdFromCrep +// --------------------------------------------------------------------------- +// +TInt CXnEditor::IdFromCrep (TDes8& aUid) const + { + return iRepository->Get( KAICCPluginUIDKey, aUid ); + } + // CXnEditor::AddWidgetL // --------------------------------------------------------------------------- // void CXnEditor::AddWidgetL() { - MHsContentControlUi* ui( - iViewManager.AppUiAdapter().HsContentController( KWMUi ) ); - + TBuf8 oPaqDataStr; + + MHsContentControlUi* ui( NULL ); + if ( IdFromCrep ( oPaqDataStr ) == KErrNone ) + { + ui = iViewManager.AppUiAdapter().HsContentController( oPaqDataStr ); + } if( ui ) { ui->SetContentController( this ); @@ -1517,9 +1534,13 @@ // void CXnEditor::WidgetListChanged() { - MHsContentControlUi* ui( - iViewManager.AppUiAdapter().HsContentController( KWMUi ) ); - + TBuf8 oPaqDataStr; + + MHsContentControlUi* ui( NULL ); + if ( IdFromCrep ( oPaqDataStr ) == KErrNone ) + { + ui = iViewManager.AppUiAdapter().HsContentController( oPaqDataStr ); + } if( ui ) { ui->NotifyWidgetListChanged(); @@ -1537,9 +1558,13 @@ // void CXnEditor::ViewListChanged() { - MHsContentControlUi* ui( - iViewManager.AppUiAdapter().HsContentController( KWMUi ) ); - + TBuf8 oPaqDataStr; + + MHsContentControlUi* ui( NULL ); + if ( IdFromCrep ( oPaqDataStr ) == KErrNone ) + { + ui = iViewManager.AppUiAdapter().HsContentController( oPaqDataStr ); + } if( ui ) { ui->NotifyViewListChanged(); diff -r f72a12da539e -r 5315654608de idlehomescreen/xmluirendering/uiengine/src/xneffectmanager.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xneffectmanager.cpp Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/xmluirendering/uiengine/src/xneffectmanager.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -156,7 +156,6 @@ { for ( TInt i = 0; i < iEffects.Count(); ) { - TInt count = iEffects.Count(); // for debugging TXnEffect* effect = iEffects[i]; if ( effect && effect->iState == KEffectStarted ) { @@ -183,9 +182,9 @@ // void CXnEffectManager::UiLayouted() { - TInt count = iEffects.Count(); - for ( TInt i = 0; i < count; i++ ) + for ( TInt i = 0; i < iEffects.Count(); ) { + TBool effectStarted = ETrue; TXnEffect* effect = iEffects[i]; if ( effect && effect->iNode && effect->iState == KWaitForLayout && @@ -193,13 +192,23 @@ { if ( effect->iType == KEffectTypeFullscreen ) { - DoBeginFullscreenEffect( *effect ); + effectStarted = DoBeginFullscreenEffect( *effect ); } else if ( effect->iType == KEffectTypeControl ) { - DoBeginControlEffect( *effect ); + effectStarted = DoBeginControlEffect( *effect ); } } + + if ( effectStarted ) + { + i++; + } + else + { + // effect cannot be started, remove it + RemoveEffect( effect ); + } } } @@ -207,7 +216,7 @@ // CXnEffectManager::DoBeginFullscreenEffect // ----------------------------------------------------------------------------- // -void CXnEffectManager::DoBeginFullscreenEffect( TXnEffect& aEffect ) +TBool CXnEffectManager::DoBeginFullscreenEffect( TXnEffect& aEffect ) { CCoeEnv* coe( CCoeEnv::Static() ); @@ -215,8 +224,7 @@ coe->RootWin().Identifier() ) { // Window group is not focused - RemoveEffect( &aEffect ); - return; + return EFalse; } const TInt flags( AknTransEffect::TParameter::EActivateExplicitCancel ); @@ -228,22 +236,23 @@ targetAppUid, flags ) ); aEffect.iState = KEffectStarted; + return ETrue; } // ----------------------------------------------------------------------------- // CXnEffectManager::DoBeginControlEffect // ----------------------------------------------------------------------------- // -void CXnEffectManager::DoBeginControlEffect( TXnEffect& aEffect ) +TBool CXnEffectManager::DoBeginControlEffect( TXnEffect& aEffect ) { + TBool ret = EFalse; CCoeEnv* coe( CCoeEnv::Static() ); if ( coe->WsSession().GetFocusWindowGroup() != coe->RootWin().Identifier() ) { // Window group is not focused - RemoveEffect( &aEffect ); - return; + return ret; } // Set effect begin point @@ -251,11 +260,10 @@ { GfxTransEffect::Begin( aEffect.iNode->Control() , aEffect.iId ); aEffect.iState = KEffectStarted; + ret = ETrue; } - else - { - RemoveEffect( &aEffect ); - } + + return ret; } // ----------------------------------------------------------------------------- diff -r f72a12da539e -r 5315654608de idlehomescreen/xmluirendering/uiengine/src/xnkeyeventdispatcher.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xnkeyeventdispatcher.cpp Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/xmluirendering/uiengine/src/xnkeyeventdispatcher.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -596,28 +596,8 @@ // ----------------------------------------------------------------------------- // void CXnKeyEventDispatcher::NotifyWidgetAdditionL( - const CXnPluginData& aPluginData ) + const CXnPluginData& /*aPluginData*/ ) { - if ( aPluginData.Active() ) - { - iUiEngine.AppUiAdapter().ShowFocus(); - - RPointerArray< CXnNode > initial; - CleanupClosePushL( initial ); - - if ( iUiEngine.IsEditMode() ) - { - initial.AppendL( aPluginData.Owner()->LayoutNode() ); - } - else - { - aPluginData.InitialFocusNodesL( initial ); - } - - SetInitialFocusL( initial ); - - CleanupStack::PopAndDestroy( &initial ); - } } // ----------------------------------------------------------------------------- diff -r f72a12da539e -r 5315654608de idlehomescreen/xmluirendering/uiengine/src/xnnodeimpl.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xnnodeimpl.cpp Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/xmluirendering/uiengine/src/xnnodeimpl.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -2331,6 +2331,10 @@ attrs.FindByName( XnPropertyNames::action::KName ) ); CXnDomAttribute* valueAttribute = static_cast< CXnDomAttribute* >( attrs.FindByName( XnPropertyNames::action::KValue ) ); + if ( !nameAttribute || !valueAttribute ) + { + continue; + } if ( nameAttribute->Value() == XnPropertyNames::action::trigger::name::keyevent::KEventType ) { @@ -2522,6 +2526,10 @@ attrs.FindByName( XnPropertyNames::action::KName ) ); CXnDomAttribute* valueAttribute = static_cast< CXnDomAttribute* >( attrs.FindByName( XnPropertyNames::action::KValue ) ); + if ( !nameAttribute || !valueAttribute ) + { + continue; + } if ( nameAttribute->Value() == XnPropertyNames::action::trigger::name::stylus::KStylusState ) { @@ -2677,6 +2685,11 @@ CXnDomAttribute* valueAttribute = static_cast< CXnDomAttribute* >( attrs.FindByName( XnPropertyNames::action::KValue ) ); + if ( !nameAttribute || !valueAttribute ) + { + return EFalse; + } + const TDesC8& name = nameAttribute->Value(); // check that eventype name matches @@ -7520,17 +7533,7 @@ if ( popup ) { - if ( aSource == XnEventSource::EStylus ) - { - const TTimeIntervalMicroSeconds32 delay( 0 ); - const TTimeIntervalMicroSeconds32 display( 1000 * 1000 * 6 ); - - popup->ShowPopupL( aRect, delay, display ); - } - else - { - popup->ShowPopupL( aRect ); - } + popup->ShowPopupL( aRect ); } } } diff -r f72a12da539e -r 5315654608de idlehomescreen/xmluirendering/uiengine/src/xnscrollablecontroladapter.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xnscrollablecontroladapter.cpp Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/xmluirendering/uiengine/src/xnscrollablecontroladapter.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -36,6 +36,11 @@ _LIT8(KViewportWidth, "viewport-width"); _LIT8(KViewportTop, "viewport-top"); _LIT8(KViewportLeft, "viewport-left"); +_LIT8(KScrollDirection, "scroll-direction"); +_LIT8(KHorizontal, "horizontal"); + +const TInt EVertical( 0 ); +const TInt EHorizontal( 1 ); // ============================ MEMBER FUNCTIONS =============================== @@ -90,6 +95,16 @@ iUiEngine = iNode.Node().UiEngine(); iNode.Node().SetScrollableControl( this ); + + // Default + iDirection = EVertical; + + CXnProperty* prop( iNode.GetPropertyL( KScrollDirection ) ); + + if ( prop && prop->StringValue() == KHorizontal ) + { + iDirection = EHorizontal; + } } // ----------------------------------------------------------------------------- @@ -104,7 +119,9 @@ { return; } - TPoint stylusPos = aPointerEvent.iPosition; + + TPoint stylusPos( aPointerEvent.iPosition ); + switch( aPointerEvent.iType ) { case TPointerEvent::EButton1Down: @@ -118,17 +135,20 @@ } break; case TPointerEvent::EButton1Up: - { - TInt distance = iStartPosition.iY - stylusPos.iY; - TPoint drag( 0, distance ); - iPhysics->StartPhysics( drag, iStartTime ); + { + TInt distanceY( iStartPosition.iY - stylusPos.iY ); + TInt distanceX( iStartPosition.iX - stylusPos.iX ); + + TPoint drag( distanceX, distanceY ); + iPhysics->StartPhysics( drag, iStartTime ); } break; case TPointerEvent::EDrag: { TPoint distanceFromStart( iStartPosition - stylusPos ); - if( Abs( distanceFromStart.iY ) > KOffset ) + if( ( Abs( distanceFromStart.iY ) > KOffset && iDirection == EVertical ) || + ( Abs( distanceFromStart.iX ) > KOffset && iDirection == EHorizontal ) ) { CXnNode* focused( iUiEngine->FocusedNode() ); @@ -142,8 +162,12 @@ } TInt deltaY( iStylusPosition.iY - stylusPos.iY ); + TInt deltaX( iStylusPosition.iX - stylusPos.iX ); + iStylusPosition = stylusPos; - TPoint deltaPoint( 0, deltaY ); + + TPoint deltaPoint( deltaX, deltaY ); + iPhysics->RegisterPanningPosition( deltaPoint ); } break; @@ -161,7 +185,7 @@ // void CXnScrollableControlAdapter::Draw( const TRect& aRect ) const { - CXnControlAdapter::Draw( aRect ); + CXnControlAdapter::Draw( aRect ); } // ----------------------------------------------------------------------------- @@ -248,20 +272,44 @@ // ----------------------------------------------------------------------------- void CXnScrollableControlAdapter::ShowItem( CXnNode& aNode ) { - TRect rect = aNode.MarginRect(); + TRect rect( aNode.MarginRect() ); + if( !iViewPort.Contains( rect.iTl ) || !iViewPort.Contains( rect.iBr ) ) { - TInt delta( 0 ); - if( rect.iTl.iY < iViewPort.iTl.iY ) - { - delta = rect.iTl.iY - iViewPort.iTl.iY; + if ( iDirection == EVertical ) + { + TInt delta( 0 ); + + if( rect.iTl.iY < iViewPort.iTl.iY ) + { + delta = rect.iTl.iY - iViewPort.iTl.iY; + } + else if( rect.iBr.iY > iViewPort.iBr.iY ) + { + delta = rect.iBr.iY - iViewPort.iBr.iY; + } + + TPoint newPosition( iPreviousPosition + TPoint( 0, delta ) ); + + ViewPositionChanged( newPosition, ETrue, 0 ); } - else if( rect.iBr.iY > iViewPort.iBr.iY ) + else { - delta = rect.iBr.iY - iViewPort.iBr.iY; + TInt delta( 0 ); + + if( rect.iTl.iX < iViewPort.iTl.iX ) + { + delta = rect.iTl.iX - iViewPort.iTl.iX; + } + else if( rect.iBr.iX > iViewPort.iBr.iX ) + { + delta = rect.iBr.iX - iViewPort.iBr.iX; + } + + TPoint newPosition( iPreviousPosition + TPoint( delta, 0 ) ); + + ViewPositionChanged( newPosition, ETrue, 0 ); } - TPoint newPosition = iPreviousPosition + TPoint( 0, delta ); - ViewPositionChanged( newPosition, ETrue, 0 ); } } @@ -286,7 +334,17 @@ void CXnScrollableControlAdapter::ViewPositionChanged( const TPoint& aNewPosition, TBool aDrawNow, TUint /*aFlags*/ ) { - TPoint diff = TPoint( 0, aNewPosition.iY - iPreviousPosition.iY ); + TPoint diff; + + if ( iDirection == EVertical ) + { + diff = TPoint( 0, aNewPosition.iY - iPreviousPosition.iY ); + } + else + { + diff = TPoint( aNewPosition.iX - iPreviousPosition.iX, 0 ); + } + iPreviousPosition = aNewPosition; iCurrentPosition += diff; TPoint tmpPos = iNode.Control()->Position(); @@ -341,9 +399,21 @@ return; } TSize viewPortSize = iViewPort.Size(); - TSize totalSize( iNode.MarginRect().Size() ); - iPhysics->InitPhysicsL( totalSize, viewPortSize, EFalse ); - iCurrentPosition = TPoint( 0, viewPortSize.iHeight / 2 ); + TSize totalSize( iNode.Rect().Size() ); + + if ( iDirection == EVertical ) + { + iPhysics->InitPhysicsL( totalSize, viewPortSize, EFalse ); + } + else + { + iPhysics->InitPhysicsL( totalSize, viewPortSize, ETrue ); + } + + + iCurrentPosition = + TPoint( viewPortSize.iWidth / 2, viewPortSize.iHeight / 2 ); + iPreviousPosition = iStartViewPosition = iCurrentPosition; } @@ -358,16 +428,18 @@ TInt top( 0 ); TInt left( 0 ); + CXnNode& node( iNode.Node() ); + // Width CXnProperty* prop = iNode.GetPropertyL( KViewportWidth ); if( prop ) { width = iUiEngine->HorizontalPixelValueL( - prop, iNode.MarginRect().Width() ); + prop, iNode.Rect().Width() ); } if( width == 0 ) { - width = iNode.MarginRect().Width(); + width = node.Parent()->Rect().Width(); } // Height @@ -375,11 +447,11 @@ if( prop ) { height = iUiEngine->VerticalPixelValueL( - prop, iNode.MarginRect().Height() ); + prop, iNode.Rect().Height() ); } if( height == 0 ) { - height = iNode.MarginRect().Height(); + height = node.Parent()->Rect().Height(); } // Top @@ -387,7 +459,7 @@ if( prop ) { top = iUiEngine->VerticalPixelValueL( - prop, iNode.MarginRect().Height() ); + prop, iNode.Rect().Height() ); } // Left @@ -395,10 +467,10 @@ if( prop ) { left = iUiEngine->HorizontalPixelValueL( - prop, iNode.MarginRect().Width() ); + prop, iNode.Rect().Width() ); } - iViewPort = TRect( iNode.MarginRect().iTl, TSize( width, height ) ); + iViewPort = TRect( iNode.Rect().iTl, TSize( width, height ) ); iViewPort.Move( left, top ); } diff -r f72a12da539e -r 5315654608de idlehomescreen/xmluirendering/uiengine/src/xnuiengineimpl.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xnuiengineimpl.cpp Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/xmluirendering/uiengine/src/xnuiengineimpl.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -9247,111 +9247,115 @@ // void CXnUiEngineImpl::AddToDirtyListL( CXnNode* aNode ) { - CXnNode* nodeToRedrawList( aNode ); - CXnNode* nodeToDirtyList( aNode ); - - if ( aNode == RootNode() ) - { - // Force relayout and redraw from current view - iDirtyList.Reset(); - iDirtyList.AppendL( iCurrentView ); - TXnDirtyRegion* dirtyRegion = FindDirtyRegionL( *iCurrentView ); - if( dirtyRegion ) - { - dirtyRegion->iRegion.Clear(); - } - iLayoutControl |= XnLayoutControl::EViewDirty; - nodeToDirtyList = nodeToRedrawList = iCurrentView; - nodeToDirtyList->ClearRenderedAndLaidOut(); - - // Add to draw list for redraw - AddToRedrawListL( nodeToRedrawList ); - } - else - { - if ( !IsAbsoluteL( *aNode ) && !IsNodeTooltip( *aNode ) ) - { - // Check adaptives in normal flow - CXnNode* oldest( NULL ); - CXnNode* adaptive( aNode ); - - if ( !aNode->IsAdaptive( ETrue ) ) - { - adaptive = aNode->Parent(); - } - - for ( ; adaptive && adaptive->IsAdaptive( ETrue ); - adaptive = adaptive->Parent() ) - { - oldest = adaptive; - } - - // Now we have found the oldest adaptive node if present - if ( oldest ) - { - nodeToRedrawList = nodeToDirtyList = adaptive; - } - } - - RPointerArray< CXnNode > dirtyList; - CleanupClosePushL( dirtyList ); - TInt count( iDirtyList.Count() ); - TBool found; - - // first, check that aNode's children are not in the dirty array - for ( TInt i = 0; i < count; ++i ) - { - found = EFalse; - CXnNode* candidate( iDirtyList[i] ); - - for ( CXnNode* node = candidate->Parent(); node && !found; - node = node->Parent() ) - { - if ( nodeToDirtyList == node ) - { - found = ETrue; - } - } - - if ( !found ) - { - // Put candidate back to list as child is not found - dirtyList.AppendL( candidate ); - } - } - - found = EFalse; - - // second, check that aNode's parent is not in dirty array - for ( TInt i = 0; i < count && !found; ++i ) - { - CXnNode* candidate( iDirtyList[i] ); - - for ( CXnNode* node = nodeToDirtyList; node && !found; - node = node->Parent() ) - { - if ( node == candidate ) - { - found = ETrue; - } - } - } - - if ( !found && iDirtyList.Find( nodeToDirtyList ) == KErrNotFound ) - { - // Add node to dirty list as parent is neither found - dirtyList.AppendL( nodeToDirtyList ); + + if ( aNode ) + { + CXnNode* nodeToRedrawList( aNode ); + CXnNode* nodeToDirtyList( aNode ); + + if ( aNode == RootNode() ) + { + // Force relayout and redraw from current view + iDirtyList.Reset(); + iDirtyList.AppendL( iCurrentView ); + TXnDirtyRegion* dirtyRegion = FindDirtyRegionL( *iCurrentView ); + if( dirtyRegion ) + { + dirtyRegion->iRegion.Clear(); + } + iLayoutControl |= XnLayoutControl::EViewDirty; + nodeToDirtyList = nodeToRedrawList = iCurrentView; nodeToDirtyList->ClearRenderedAndLaidOut(); - + // Add to draw list for redraw AddToRedrawListL( nodeToRedrawList ); } - - // finally update the dirty list - iDirtyList.Reset(); - iDirtyList = dirtyList; - - CleanupStack::Pop( &dirtyList ); + else + { + if ( !IsAbsoluteL( *aNode ) && !IsNodeTooltip( *aNode ) ) + { + // Check adaptives in normal flow + CXnNode* oldest( NULL ); + CXnNode* adaptive( aNode ); + + if ( !aNode->IsAdaptive( ETrue ) ) + { + adaptive = aNode->Parent(); + } + + for ( ; adaptive && adaptive->IsAdaptive( ETrue ); + adaptive = adaptive->Parent() ) + { + oldest = adaptive; + } + + // Now we have found the oldest adaptive node if present + if ( oldest ) + { + nodeToRedrawList = nodeToDirtyList = adaptive; + } + } + + RPointerArray< CXnNode > dirtyList; + CleanupClosePushL( dirtyList ); + TInt count( iDirtyList.Count() ); + TBool found; + + // first, check that aNode's children are not in the dirty array + for ( TInt i = 0; i < count; ++i ) + { + found = EFalse; + CXnNode* candidate( iDirtyList[i] ); + + for ( CXnNode* node = candidate->Parent(); node && !found; + node = node->Parent() ) + { + if ( nodeToDirtyList == node ) + { + found = ETrue; + } + } + + if ( !found ) + { + // Put candidate back to list as child is not found + dirtyList.AppendL( candidate ); + } + } + + found = EFalse; + + // second, check that aNode's parent is not in dirty array + for ( TInt i = 0; i < count && !found; ++i ) + { + CXnNode* candidate( iDirtyList[i] ); + + for ( CXnNode* node = nodeToDirtyList; node && !found; + node = node->Parent() ) + { + if ( node == candidate ) + { + found = ETrue; + } + } + } + + if ( !found && iDirtyList.Find( nodeToDirtyList ) == KErrNotFound ) + { + // Add node to dirty list as parent is neither found + dirtyList.AppendL( nodeToDirtyList ); + nodeToDirtyList->ClearRenderedAndLaidOut(); + + // Add to draw list for redraw + AddToRedrawListL( nodeToRedrawList ); + } + + // finally update the dirty list + iDirtyList.Reset(); + iDirtyList = dirtyList; + + CleanupStack::Pop( &dirtyList ); + } } } diff -r f72a12da539e -r 5315654608de idlehomescreen/xmluirendering/uiengine/src/xnviewmanager.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xnviewmanager.cpp Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/xmluirendering/uiengine/src/xnviewmanager.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -23,10 +23,7 @@ #include #include -#if 0 // MSK icon change #include -#include -#endif // MSK icon change // User includes #include "xnapplication.h" @@ -56,9 +53,8 @@ // Constants _LIT8( KEmptyWidgetUid, "0x2001f47f" ); -_LIT8( KViewSwitcherText, "switcher_text" ); _LIT8( KStateError, "Error" ); -_LIT8( KMax, "max" ); + _LIT8( KTemplateViewUID, "0x20026f50" ); @@ -69,60 +65,9 @@ EViewIsValid, }; -const TInt KMinPages = 1; - -#if 0 // MSK icon change - -const TInt KIconIds[] = { - EMbmAvkonQgnQgn_home_page_11, - EMbmAvkonQgnQgn_home_page_21, - EMbmAvkonQgnQgn_home_page_22, - EMbmAvkonQgnQgn_home_page_31, - EMbmAvkonQgnQgn_home_page_32, - EMbmAvkonQgnQgn_home_page_33, - EMbmAvkonQgnQgn_home_page_41, - EMbmAvkonQgnQgn_home_page_42, - EMbmAvkonQgnQgn_home_page_43, - EMbmAvkonQgnQgn_home_page_44, - EMbmAvkonQgnQgn_home_page_51, - EMbmAvkonQgnQgn_home_page_52, - EMbmAvkonQgnQgn_home_page_53, - EMbmAvkonQgnQgn_home_page_54, - EMbmAvkonQgnQgn_home_page_55, - EMbmAvkonQgnQgn_home_page_61, - EMbmAvkonQgnQgn_home_page_62, - EMbmAvkonQgnQgn_home_page_63, - EMbmAvkonQgnQgn_home_page_64, - EMbmAvkonQgnQgn_home_page_65, - EMbmAvkonQgnQgn_home_page_66 - }; - -const TInt KMaskIds[] = { - EMbmAvkonQgnQgn_home_page_11_mask, - EMbmAvkonQgnQgn_home_page_21_mask, - EMbmAvkonQgnQgn_home_page_22_mask, - EMbmAvkonQgnQgn_home_page_31_mask, - EMbmAvkonQgnQgn_home_page_32_mask, - EMbmAvkonQgnQgn_home_page_33_mask, - EMbmAvkonQgnQgn_home_page_41_mask, - EMbmAvkonQgnQgn_home_page_42_mask, - EMbmAvkonQgnQgn_home_page_43_mask, - EMbmAvkonQgnQgn_home_page_44_mask, - EMbmAvkonQgnQgn_home_page_51_mask, - EMbmAvkonQgnQgn_home_page_52_mask, - EMbmAvkonQgnQgn_home_page_53_mask, - EMbmAvkonQgnQgn_home_page_54_mask, - EMbmAvkonQgnQgn_home_page_55_mask, - EMbmAvkonQgnQgn_home_page_61_mask, - EMbmAvkonQgnQgn_home_page_62_mask, - EMbmAvkonQgnQgn_home_page_63_mask, - EMbmAvkonQgnQgn_home_page_64_mask, - EMbmAvkonQgnQgn_home_page_65_mask, - EMbmAvkonQgnQgn_home_page_66_mask - }; - -const TAknsItemID KSkinIds[] = { +/* +const TAknsItemID KSkinIds[] = { KAknsIIDQgnHomePage11, KAknsIIDQgnHomePage21, KAknsIIDQgnHomePage22, @@ -144,10 +89,8 @@ KAknsIIDQgnHomePage64, KAknsIIDQgnHomePage65, KAknsIIDQgnHomePage66 - }; - -#endif // MSK icon change - + }; +*/ // ============================ LOCAL FUNCTIONS =============================== @@ -227,6 +170,129 @@ CleanupStack::PopAndDestroy( 2, &nodes ); // &list } +// ----------------------------------------------------------------------------- +// resolveIconId +// ----------------------------------------------------------------------------- +// +static TAknsItemID ResolveIconId( TInt aIndex ) + { + TAknsItemID ret( KAknsIIDNone ); + switch( aIndex ) + { + case 0: + { + ret = KAknsIIDQgnHomePage11; + } + break; + case 1: + { + ret = KAknsIIDQgnHomePage21; + } + break; + case 2: + { + ret = KAknsIIDQgnHomePage22; + } + break; + case 3: + { + ret = KAknsIIDQgnHomePage31; + } + break; + case 4: + { + ret = KAknsIIDQgnHomePage32; + } + break; + case 5: + { + ret = KAknsIIDQgnHomePage33; + } + break; + case 6: + { + ret = KAknsIIDQgnHomePage41; + } + break; + case 7: + { + ret = KAknsIIDQgnHomePage42; + } + break; + case 8: + { + ret = KAknsIIDQgnHomePage43; + } + break; + case 9: + { + ret = KAknsIIDQgnHomePage44; + } + break; + case 10: + { + ret = KAknsIIDQgnHomePage51; + } + break; + case 11: + { + ret = KAknsIIDQgnHomePage52; + } + break; + case 12: + { + ret = KAknsIIDQgnHomePage53; + } + break; + case 13: + { + ret = KAknsIIDQgnHomePage54; + } + break; + case 14: + { + ret = KAknsIIDQgnHomePage55; + } + break; + case 15: + { + ret = KAknsIIDQgnHomePage61; + } + break; + case 16: + { + ret = KAknsIIDQgnHomePage62; + } + break; + case 17: + { + ret = KAknsIIDQgnHomePage63; + } + break; + case 18: + { + ret = KAknsIIDQgnHomePage64; + } + break; + case 19: + { + ret = KAknsIIDQgnHomePage65; + } + break; + case 20: + { + ret = KAknsIIDQgnHomePage66; + } + break; + default: + { + } + break; + } + + return ret; + } + // ============================ MEMBER FUNCTIONS =============================== // ----------------------------------------------------------------------------- @@ -1597,7 +1663,7 @@ // ----------------------------------------------------------------------------- // void CXnViewManager::UpdatePageManagementInformationL() - { + { // Update MSK info // Obtain menu bar CXnNode* menuBar( iUiEngine->MenuBarNode() ); @@ -1610,50 +1676,28 @@ if ( menuIf ) { -#if 0 // MSK icon change // Get count of views in array and index of actual view TInt count( ViewAmount() ); TInt current( ViewIndex() + 1 ); // Update MSK icon + /* TInt index = ResolveIconIndex( count, current ); menuIf->SetSoftKeyImageL( KSkinIds[index], - AknIconUtils::AvkonIconFileName(), - KIconIds[index], - KMaskIds[index], + KNullDesC, + 0, + 0, XnMenuInterface::MXnMenuInterface::ECenter, ETrue ); - -#else // MSK icon change - // Get array of views - RPointerArray< CXnPluginData >& views( iRootData->PluginData() ); - // Get count of views in array and index of actual view - TInt count( views.Count() ); - TInt actual( views.Find( &ActiveViewData() ) + 1 ); - - // Construct a text info - _LIT( KSeparator, "/" ); - TBuf< 32 >info( KNullDesC ); - - if ( AknLayoutUtils::LayoutMirrored() ) - { - info.AppendNum( actual ); - info.Append( KSeparator ); - info.AppendNum( count ); - } - else - { - info.AppendNum( actual ); - info.Append( KSeparator ); - info.AppendNum( count ); - } - - AknTextUtils::LanguageSpecificNumberConversion( info ); - - // Update info - menuIf->SetSoftKeyTextL( info, - XnMenuInterface::MXnMenuInterface::ECenter ); -#endif // MSK icon change + */ + TInt index = ResolveIconIndex( count, current ); + TAknsItemID iconId = ResolveIconId( index ); + menuIf->SetSoftKeyImageL( iconId, + KNullDesC, + 0, + 0, + XnMenuInterface::MXnMenuInterface::ECenter, + ETrue ); } } } @@ -1692,10 +1736,6 @@ return iRootData->MaxPages(); } - -#if 0 // MSK icon change - - // ----------------------------------------------------------------------------- // CXnViewManager::ResolveIconIndex // @@ -1714,6 +1754,4 @@ return index; } - -#endif // MSK icon change // End of file diff -r f72a12da539e -r 5315654608de layers.sysdef.xml --- a/layers.sysdef.xml Thu Dec 17 08:40:49 2009 +0200 +++ b/layers.sysdef.xml Thu Jan 07 12:39:41 2010 +0200 @@ -15,7 +15,7 @@ - + diff -r f72a12da539e -r 5315654608de menufw/hierarchynavigator/hnengine/inc/hncontrollerinterface.h --- a/menufw/hierarchynavigator/hnengine/inc/hncontrollerinterface.h Thu Dec 17 08:40:49 2009 +0200 +++ b/menufw/hierarchynavigator/hnengine/inc/hncontrollerinterface.h Thu Jan 07 12:39:41 2010 +0200 @@ -11,7 +11,7 @@ * * Contributors: * -* Description: +* Description: * */ @@ -21,11 +21,11 @@ #include "hnsuiteobserver.h" -class CLiwGenericParamList; +class CLiwGenericParamList; /** * @ingroup group_hnengine - * User interface refresh type + * User interface refresh type */ enum THnUiRefreshType { @@ -33,9 +33,6 @@ ERefreshToolbar, EStartEditMode, EStopEditMode, - EZoomLarge, - EZoomSmall, - EZoomNormal, EForegroundGain, EBackgroundGain, ELightOn, @@ -63,22 +60,22 @@ * @param aRefreshType Defines reason for refresh. */ virtual void NotifyUiRefreshL( const THnUiRefreshType aRefreshType ) = 0; - + /** * Trigger appropriate action on suite model. - * + * * @param aCustomSuiteEvent Event that is associated * with the lifecycle of a suite * @param aModel Suite model on that custom event should be performed. */ - virtual void HandleSuiteEventL ( THnCustomSuiteEvent aCustomSuiteEvent, + virtual void HandleSuiteEventL ( THnCustomSuiteEvent aCustomSuiteEvent, CHnSuiteModel *aModel ) = 0; - + /** * Whenever an action for extension manager occurs it invokes * this method to execute one, passing the information needed * by extension manager about the action as a parameters. - * + * * @param aUid UID of the ECom plugin's. * @param aCommand Command which has to be executed on the plugin. * Request to the Service. diff -r f72a12da539e -r 5315654608de menufw/hierarchynavigator/hnengine/src/hnengine.cpp --- a/menufw/hierarchynavigator/hnengine/src/hnengine.cpp Thu Dec 17 08:40:49 2009 +0200 +++ b/menufw/hierarchynavigator/hnengine/src/hnengine.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -11,7 +11,7 @@ * * Contributors: * -* Description: +* Description: * */ @@ -19,7 +19,7 @@ #include #include #include -#include +#include #include #include @@ -143,7 +143,7 @@ // CHnSuiteModel* CHnEngine::GetLastSuiteModelL() { - return iSuiteContainer->GetLastSuiteModel(); + return iSuiteContainer->GetLastSuiteModel(); } // --------------------------------------------------------------------------- @@ -152,14 +152,14 @@ // CHnSuiteModel* CHnEngine::GetParentSuiteModelL() { - return iSuiteContainer->GetParentSuiteModel(); + return iSuiteContainer->GetParentSuiteModel(); } // --------------------------------------------------------------------------- // // --------------------------------------------------------------------------- // -EXPORT_C TInt CHnEngine::TriggerHnEventL( const TInt aHnEventId, +EXPORT_C TInt CHnEngine::TriggerHnEventL( const TInt aHnEventId, const TInt aRecipientId, CLiwGenericParamList* aEventParameters ) { TInt ret = iSuiteContainer->OfferHnEventL( aHnEventId, aRecipientId, @@ -187,14 +187,14 @@ // // --------------------------------------------------------------------------- // -TInt CHnEngine::LoadSuiteFromUriL( const TDesC8& aSuiteName, +TInt CHnEngine::LoadSuiteFromUriL( const TDesC8& aSuiteName, const TDesC8& aUriQuery, const TDesC8& aUriFragment ) { TInt error( KErrNone ); - + if( !( aSuiteName.Compare( KRoot8 ) ) ) { - CLiwGenericParamList* uriParams = + CLiwGenericParamList* uriParams = UriQueryToLiwListLC( aUriQuery, aUriFragment, aSuiteName ); CLiwGenericParamList* params = CLiwGenericParamList::NewLC(); params->AppendL( iMetaDataModel->GetSuiteParameters( 0 ) ); @@ -211,15 +211,15 @@ UriQueryToLiwListLC( aUriQuery, aUriFragment, aSuiteName ); HBufC* suiteName = HnConvUtils::Str8ToStrLC( aSuiteName ); - params->AppendL( TLiwGenericParam( KNewSuiteParamNameEn, + params->AppendL( TLiwGenericParam( KNewSuiteParamNameEn, TLiwVariant( *suiteName ) ) ); - + error = HandleNewSuiteLoadedEventL( *params ); - + CleanupStack::PopAndDestroy( suiteName ); CleanupStack::PopAndDestroy( params ); } - + return error; } @@ -255,7 +255,7 @@ // set parameters iSuiteContainer->GetLastSuiteModel()->SetExitMode( EExitModeHide ); } - + CleanupStack::PopAndDestroy( params ); CleanupStack::PopAndDestroy( &exitMode ); @@ -273,25 +273,25 @@ { DEBUG(("_MM_:CHnEngine::LoadSuitesFromUriL IN")); DEBUG8(("_MM_:\tURI: %S",&aUri)); - + TBool consumed(EFalse); - + if ( aUri.Find( KSetFocusWithPref ) != KErrNotFound ) { LoadFromCrL( aUri ); consumed = ETrue; } - + if ( !consumed ) { consumed = HandleActionL( aUri ); } - + if ( !consumed ) { LoadSuitesL( aUri ); } - + DEBUG(("_MM_:CHnEngine::LoadSuitesFromUriL OUT")); } @@ -303,10 +303,10 @@ CLiwGenericParamList& aParams ) { TInt ret(KErrNotFound); - + if ( aEventName == KNewSuiteLoadedMdEvent ) { - // This handles new suite creation, putting its visual model + // This handles new suite creation, putting its visual model // onto the stack eventually. ret = HandleNewSuiteLoadedEventL( aParams ); } @@ -349,30 +349,12 @@ // Stopping edit mode iControllerInterface.NotifyUiRefreshL( EStopEditMode ); ret = KErrNone; - } + } else if (aEventName == KSetFocusEvent ) { // SetFocus ret = HandleSetFocusEventL( aParams ); } - else if (aEventName == KZoomLarge ) - { - // Stopping edit mode - iControllerInterface.NotifyUiRefreshL( EZoomLarge ); - ret = KErrNone; - } - else if (aEventName == KZoomSmall) - { - // Stopping edit mode - iControllerInterface.NotifyUiRefreshL( EZoomSmall ); - ret = KErrNone; - } - else if (aEventName == KZoomNormal ) - { - // Stopping edit mode - iControllerInterface.NotifyUiRefreshL( EZoomNormal ); - ret = KErrNone; - } else if (aEventName == KAppGainForeground ) { //force matrix gain foreground @@ -387,7 +369,7 @@ iControllerInterface.NotifyUiRefreshL( EBackgroundGain ); ret = KErrNone; } - + return ret; } @@ -395,10 +377,10 @@ // // --------------------------------------------------------------------------- // -TInt CHnEngine::HandleWidgetChangeL( +TInt CHnEngine::HandleWidgetChangeL( CLiwGenericParamList& aParams ) { - THnSuiteWidgetType type = EChangeWidget; + THnSuiteWidgetType type = EChangeWidget; TInt pos( 0 ); const TLiwGenericParam* param = NULL; param = aParams.FindFirst( pos, KWidgetTypeAttrName8 ); @@ -407,13 +389,13 @@ TPtrC widgetType( KNullDesC ); param->Value().Get( widgetType ); if ( widgetType.Compare( KWidgetTypeList ) == 0 ) - type = EListWidget; - else if ( widgetType.Compare( KWidgetTypeGrid ) == 0 ) - type = EGridWidget; + type = EListWidget; + else if ( widgetType.Compare( KWidgetTypeGrid ) == 0 ) + type = EGridWidget; else if ( widgetType.Compare( KWidgetTypeCoverFlow ) == 0 ) - type = ECoverFlowWidget; + type = ECoverFlowWidget; } - + CHnSuiteModel* model = iSuiteContainer->GetLastSuiteModel(); return HandleWidgetChangeL( model->SuiteName(), type ); } @@ -424,16 +406,16 @@ // TInt CHnEngine::HandleWidgetChangeL( const TDesC& aSuiteName, THnSuiteWidgetType aType ) - { + { DEBUG(("_MM_:CMatrixMenuAppUi::HandleWidgetChangeL IN")); TInt ret( KErrGeneral ); - + CHnRepositoryManager* rep = CHnRepositoryManager::NewLC(); THnSuiteWidgetType type( EUnspecified ); TInt err( rep->ReadSuiteWidgetTypeL( aSuiteName, type ) ); - + if( ( !err || err == KErrNotFound ) && type != EUnspecified ) - { + { ret = rep->StoreSuiteWidgetTypeL( aSuiteName, aType ); } CleanupStack::PopAndDestroy( rep ); @@ -445,7 +427,7 @@ // // --------------------------------------------------------------------------- // -TInt CHnEngine::HandleReevaluateEventL( +TInt CHnEngine::HandleReevaluateEventL( CLiwGenericParamList& aParams ) { TInt ret(KErrNone); @@ -454,21 +436,21 @@ _LIT8( KIdGlobalPath, "filter:id"); _LIT8( KGenrePath, "filter:[%d]/genre"); _LIT8( KItemPath, "filter:[%d]/item"); - + CHnFilter* filter = CHnFilter::NewLC(); - + TLiwGenericParam param; param.PushL(); aParams.AtL(0, param); ASSERT( !param.Name().Compare( KFilterElementItem8 ) ); - + TLiwVariant suiteIdVariant; suiteIdVariant.PushL(); TLiwVariant genreVariant; genreVariant.PushL(); - TInt idFound = + TInt idFound = HnLiwUtils::GetVariantL( aParams, KIdGlobalPath(), suiteIdVariant ); - TInt found = + TInt found = HnLiwUtils::GetVariantL(aParams, KGenreGlobalPath(), genreVariant ); if (idFound != KErrNotFound) { @@ -498,16 +480,16 @@ TLiwVariant itemVariant; HnLiwUtils::GetVariantL(aParams, path, itemVariant ); CleanupStack::PopAndDestroy( &path ); - + TPtrC suiteName; TPtrC itemId; genreVariant.Get(suiteName); itemVariant.Get(itemId); - + CHnItemId* itemIdObject = CHnItemId::NewLC(suiteName, itemId); filter->AppendItemIdL( itemIdObject ); CleanupStack::Pop( itemIdObject ); - + genreVariant.Reset(); itemVariant.Reset(); } @@ -539,7 +521,7 @@ { DEBUG(("_MM_:CHnEngine::HandleNewSuiteLoadedEventL IN")); TInt err( KErrNone ); - const TLiwGenericParam* param = + const TLiwGenericParam* param = aParams.FindFirst( err, KNewSuiteParamNameEn ); if( err != KErrNotFound ) { @@ -562,9 +544,9 @@ { iMetaDataModel->SetModeL( EMdModeNormal ); } - - TRAP( err, iMetaDataModel->EvaluateL( *filter ) ); - + + TRAP( err, iMetaDataModel->EvaluateL( *filter ) ); + CleanupStack::PopAndDestroy( filter ); if ( err ) { @@ -590,7 +572,7 @@ break; default : { - message = HBufC::NewL( KDebugNoteOtherError().Length() + + message = HBufC::NewL( KDebugNoteOtherError().Length() + KMaxLength ); message->Des().AppendFormat( KDebugNoteOtherError, err ); } @@ -602,7 +584,7 @@ } DEBUG(("_MM_:\tReturned error code: %d",err)); DEBUG(("_MM_:CHnEngine::HandleNewSuiteLoadedEventL OUT")); - + return err; } @@ -612,10 +594,10 @@ // TInt CHnEngine::HandleSetFocusEventL( const CLiwGenericParamList& aParams ) { - // Triggering event in hierarchy navigator, specifying + // Triggering event in hierarchy navigator, specifying // that suite given by the name genre has been DEBUG(("_MM_:CHnEngine::HandleSetFocusEventL IN")); - + TInt posSuite( 0 ); TInt posItem( 0 ); TInt64 suiteCustomId( KErrNotFound ); @@ -624,25 +606,25 @@ // Get suite's and item's custom ids. const TLiwGenericParam* paramSuiteId = aParams.FindFirst( posSuite, KSuiteCustomId8 ); const TLiwGenericParam* paramItemId = aParams.FindFirst( posItem, KItemCustomId8 ); - - + + if ( posSuite >= 0 && posItem >= 0 ) { suiteCustomId = paramSuiteId->Value().AsTInt64(); itemCustomId = paramItemId->Value().AsTInt64(); - + // Get matching suite. CHnSuiteModel* suiteModel = iSuiteContainer->GetMatchingSuiteModel( suiteCustomId ); - + if ( suiteModel ) { // If suite is not null, then find matching item model. TInt index( KErrNotFound ); CHnItemModel* itemModel = suiteModel->GetMatchingItemModelL( itemCustomId, index ); - + if ( itemModel ) { - // If itemModel is not null then set highlight and set highligh + // If itemModel is not null then set highlight and set highligh // on matching item. suiteModel->SetSuiteHighlightL( index ); iControllerInterface.HandleSuiteEventL( ESuiteHighlightChanged, suiteModel ); @@ -653,7 +635,7 @@ } } } - + DEBUG(("_MM_:CHnEngine::HandleSetFocusEventL OUT")); return KErrNone; } @@ -665,13 +647,13 @@ TInt CHnEngine::HandleMoveFocusBeforeDeleteEventL( const CLiwGenericParamList& /* aParams */ ) { - // Triggering event in hierarchy navigator, specifying + // Triggering event in hierarchy navigator, specifying // that suite given by the name genre has been DEBUG(("_MM_:CHnEngine::HandleMoveFocusBeforeDeleteEventL IN")); - + TInt currentHighlight( GetLastSuiteModelL()->GetSuiteHighlight() ); TInt itemsCount( GetLastSuiteModelL()->GetItemModelsCount() ); - + TInt shift( 0 ); if( AknLayoutUtils::PenEnabled() && iEditMode ) { @@ -688,7 +670,7 @@ } iControllerInterface.HandleSuiteEventL( ESuiteHighlightChanged, GetLastSuiteModelL() ); - + DEBUG(("_MM_:CHnEngine::HandleMoveFocusBeforeDeleteEventL OUT")); return KErrNone; } @@ -752,12 +734,12 @@ // --------------------------------------------------------------------------- // EXPORT_C TInt CHnEngine::InitializeL( CLiwGenericParamList& aParam ) - { + { DEBUG(("_MM_:CMatrixMenuAppUi::InitializeL IN")); User::LeaveIfError( HandleNewSuiteLoadedEventL( aParam ) ); DEBUG(("_MM_:CMatrixMenuAppUi::InitializeL OUT")); // This is an interface method so some value has to be returned. - return KErrNone; + return KErrNone; } // --------------------------------------------------------------------------- @@ -835,7 +817,7 @@ EXPORT_C void CHnEngine::ResetModelsL() { MMPERF(("CHnEngine::ResetModelsL - START")); - + iControllerInterface.NotifyUiRefreshL( ERemoveLiwObjects ); if( iSuiteContainer ) @@ -863,12 +845,12 @@ const TDesC8& aUriQuery, const TDesC8& aUriFragment, const TDesC8& aSuiteName ) { CLiwGenericParamList* list = CLiwGenericParamList::NewLC(); - + CLiwDefaultMap* map = CLiwDefaultMap::NewL(); map->PushL(); - + RPointerArray< HBufC8 > params = SplitL( aUriQuery, KAnd8 ); - + for( TInt i = 0; i < params.Count(); i++ ) { RPointerArray< HBufC8 > paramValue = SplitL( *params[ i ], KEquals8 ); @@ -877,15 +859,15 @@ map->InsertL( *paramValue[ 0 ], TLiwVariant( *paramValue[ 1 ] ) ); CleanupStack::PopAndDestroy( ¶mValue ); } - + if ( aUriFragment.Length() > 0 && aSuiteName.Length() > 0 ) { map->InsertL( KUriHighlight, TLiwVariant( aUriFragment ) ); map->InsertL( KUriHighlightSuite, TLiwVariant( aSuiteName ) ); } - + list->AppendL( TLiwGenericParam( KParams8, TLiwVariant( map ))); - + params.ResetAndDestroy(); CleanupStack::PopAndDestroy( map ); @@ -901,17 +883,17 @@ { RPointerArray< HBufC8 > tokens; CleanupResetAndDestroyPushL( tokens ); - + if ( aSource.Length() > 0 && aSeparator.Length() > 0 ) { TPtrC8 tmpSource = aSource; TPtrC8 token( KNullDesC8 ); - + while( ETrue ) { TInt length = tmpSource.Find( aSeparator ); - + if ( length >= 0 ) { token.Set( tmpSource.Mid( 0, length ) ); @@ -947,8 +929,8 @@ } //The suite on top of the stack is probably displayed. //Switching to edit mode has some dramatic ui impact, - //thus when parts of the suite will get displayed - //it may look awkward thus the suite on top of the stack + //thus when parts of the suite will get displayed + //it may look awkward thus the suite on top of the stack //is marked as uninitialized, therefore ui will be able to //react only to the ready suite model. if (AknLayoutUtils::PenEnabled() || (!AknLayoutUtils::PenEnabled() && iEditMode)) @@ -973,7 +955,7 @@ // --------------------------------------------------------------------------- // -EXPORT_C void CHnEngine::HandleRequestL( const CLiwGenericParamList& aParam, +EXPORT_C void CHnEngine::HandleRequestL( const CLiwGenericParamList& aParam, CLiwGenericParamList* /*aOutput*/ ) { TInt pos( 0 ); @@ -1013,22 +995,22 @@ { HBufC8* uriBuf = HBufC8::NewLC( aUri.Length() ); uriBuf->Des().Copy( aUri ); - + TUriParser8 parser; parser.Parse( *uriBuf ); User::LeaveIfError( parser.IsSchemeValid() ? KErrNone : KErrPathNotFound ); - + const TDesC8& query = parser.Extract( EUriQuery ); RPointerArray< HBufC8 > params = SplitL( query, HnLogicalRelations::KLogicalAnd8); - + TBuf8 item; - + for( TInt i = 0; i < params.Count(); i++ ) { RPointerArray< HBufC8 > paramValue = SplitL( *params[ i ], HnLogicalRelations::KLogicalEqual8 ); CleanupResetAndDestroyPushL( paramValue ); ASSERT( paramValue.Count() == 2 ); - + if ( !paramValue[0]->Compare(KMcsAppGroupName8) ) { TBuf8 appgrname; @@ -1054,19 +1036,19 @@ } CleanupStack::PopAndDestroy( ¶mValue ); } - + TBuf item1; item1.Copy(item); CRepository *cenRep = CRepository::NewLC( KCRUidMenu ); cenRep->Set(KMenuShowFolder, item1); CleanupStack::PopAndDestroy( cenRep ); - + params.ResetAndDestroy(); CleanupStack::PopAndDestroy( uriBuf ); - + } // --------------------------------------------------------------------------- -// +// // --------------------------------------------------------------------------- // void CHnEngine::LightStatusChanged(TInt aTarget, @@ -1094,23 +1076,23 @@ } // --------------------------------------------------------------------------- -// +// // --------------------------------------------------------------------------- // TBool CHnEngine::HandleActionL( const TDesC8& aUri ) { TBool exitActionConsumed(EFalse); - + HBufC8* uriBuf = HBufC8::NewLC( aUri.Length() ); uriBuf->Des().Copy( aUri ); - + TUriParser8 parser; parser.Parse( *uriBuf ); User::LeaveIfError( parser.IsSchemeValid() ? KErrNone : KErrPathNotFound ); - + const TDesC8& host8 = parser.Extract( EUriHost ); const TDesC8& query = parser.Extract( EUriQuery ); - + RBuf action; CleanupClosePushL( action ); CLiwGenericParamList* paramsUri = UriQueryToLiwListLC( query, KNullDesC8, KNullDesC8 ); @@ -1128,7 +1110,7 @@ { exitHideHostNotFound = EFalse; } - + if ( exitHideHostNotFound ) { //send to foreground @@ -1145,7 +1127,7 @@ HandleModelEventL( KAppGainBackground, *pl ); CleanupStack::PopAndDestroy( pl ); } - + if ( exitHideHostNotFound && iSuiteContainer->GetLastSuiteModel() == suiteModel ) { HandleBackEventL( host, 1 ); @@ -1156,14 +1138,14 @@ CLiwGenericParamList* params = CLiwGenericParamList::NewLC(); params->AppendL( iMetaDataModel->GetSuiteParameters( 0 ) ); ResetModelsL(); - InitializeL( *params ); + InitializeL( *params ); CleanupStack::PopAndDestroy( params ); } - + CleanupStack::PopAndDestroy( &host ); exitActionConsumed = ETrue; } - + CleanupStack::PopAndDestroy( paramsUri ); CleanupStack::PopAndDestroy( &action ); CleanupStack::PopAndDestroy( uriBuf ); @@ -1171,7 +1153,7 @@ } // --------------------------------------------------------------------------- -// +// // --------------------------------------------------------------------------- // void CHnEngine::LoadSuitesL( const TDesC8& aUri ) @@ -1179,14 +1161,14 @@ TBool sendToForeground(EFalse); HBufC8* uriBuf = HBufC8::NewLC( aUri.Length() ); uriBuf->Des().Copy( aUri ); - + TUriParser8 parser; parser.Parse( *uriBuf ); User::LeaveIfError( parser.IsSchemeValid() ? KErrNone : KErrPathNotFound ); - + CDesC8ArrayFlat* suiteNameArray = new( ELeave ) CDesC8ArrayFlat( KDefaultGranularity ) ; CleanupStack::PushL( suiteNameArray ); - + const TDesC8& host = parser.Extract( EUriHost ); RBuf8 host8; CleanupClosePushL( host8 ); @@ -1207,18 +1189,18 @@ ParseSuiteUriPathL( *path8, *suiteNameArray ); CleanupStack::PopAndDestroy( path8 ); } - + TBool suiteExists( EFalse ); iMetaDataModel->IgnoreEvaluations( ETrue ); iMetaDataModel->QueueForeground( CHnMdModel::EWhenAnySuiteIsEvaluated ); - + if( host8.Length() == 0 || ( host8.Length() > 0 && !iMetaDataModel->SuiteModelExistsL( host8 ) ) ) { suiteNameArray->Reset(); suiteNameArray->AppendL( KRoot8 ); } - + for( TInt i = 0; i < suiteNameArray->Count(); ++i ) { suiteExists = iMetaDataModel->SuiteModelExistsL( @@ -1226,13 +1208,13 @@ TBool nextExists = i < suiteNameArray->Count() - 1 && iMetaDataModel->SuiteModelExistsL( ( *suiteNameArray )[i + 1] ); TBool isLast = ( i == ( suiteNameArray->Count() - 1 ) ); - + TBool turnOnEvaluation = ( suiteExists && ( !nextExists || isLast ) ); if( turnOnEvaluation || !suiteExists ) { iMetaDataModel->IgnoreEvaluations( EFalse ); } - + TInt err( KErrNone ); // Ignore loading new suite if the last suite in model is the same @@ -1246,7 +1228,7 @@ continue; } } - + if( suiteExists ) { if (!nextExists) @@ -1261,7 +1243,7 @@ { // Tricky: if foreground is still queued it means that the suite is evaluated // asynchronously. Override the previos foreground queue setting with one - // that will be effective only if the last loaded suite is evaluated. + // that will be effective only if the last loaded suite is evaluated. iMetaDataModel->QueueForeground( CHnMdModel::EWhenCurrentTopSuiteIsEvaluated ); } if ( err != KErrNone ) @@ -1269,19 +1251,19 @@ sendToForeground = ETrue; } } - + if( !suiteExists || err != KErrNone || !nextExists ) { CHnFilter* filter = CHnFilter::NewLC(); filter->SetSuiteId( iSuiteContainer->GetLastSuiteModel()->CustomId() ); - + filter->SetEvaluateSuiteL( ETrue ); iMetaDataModel->IgnoreEvaluations( EFalse ); - + TRAPD( err, iMetaDataModel->EvaluateL( *filter ) ); - + CleanupStack::PopAndDestroy( filter ); if( err ) { @@ -1293,17 +1275,17 @@ break; } } - + // set highlight only when path is valid! if( suiteExists ) { HighlightPlacementFromUriL( parser.Extract( EUriFragment ) ); } - + CleanupStack::PopAndDestroy( &host8 ); CleanupStack::PopAndDestroy( suiteNameArray ); CleanupStack::PopAndDestroy( uriBuf ); - + // send to foreground if ( sendToForeground ) { diff -r f72a12da539e -r 5315654608de menufw/hierarchynavigator/hnmetadatamodel/inc/hnglobals.h --- a/menufw/hierarchynavigator/hnmetadatamodel/inc/hnglobals.h Thu Dec 17 08:40:49 2009 +0200 +++ b/menufw/hierarchynavigator/hnmetadatamodel/inc/hnglobals.h Thu Jan 07 12:39:41 2010 +0200 @@ -11,7 +11,7 @@ * * Contributors: * -* Description: +* Description: * */ @@ -38,23 +38,23 @@ */ const TInt KMaxLength = 12; -/** +/** * Single character length. */ const TInt KSingleChar( 1 ); -/** +/** * Default datagranularity. */ const TInt KDefaultGranularity( 8 ); -/** +/** * Max digit number. */ const TInt KMaxDigitNumber( 10 ); -/** - * A number of cached suites. +/** + * A number of cached suites. */ const TInt KXmlModelCacheMaxLength( 10 ); @@ -67,77 +67,77 @@ * KErrNoMemory code from MenuService */ const TInt KSErrNoMemory = 1007; -/** +/** * Logical relations namespace */ namespace HnLogicalRelations - { - /** - * Greater. + { + /** + * Greater. */ _LIT8( KLogicalGreater8, ">" ); - - /** - * Less. + + /** + * Less. */ _LIT8( KLogicalLess8, "<" ); - - /** - * Equals. + + /** + * Equals. */ _LIT8( KLogicalEqual8, "=" ); - - /** - * Different. + + /** + * Different. */ _LIT8( KLogicalDifferent8, "!=" ); - - /** - * And. + + /** + * And. */ _LIT8( KLogicalAnd8, "&" ); - - /** - * Or. + + /** + * Or. */ _LIT8( KLogicalOr8, "|" ); - - /** - * Nas. + + /** + * Nas. */ _LIT8( KLogicalHas8, "HAS" ); - - /** - * Has not. + + /** + * Has not. */ _LIT8( KLogicalHasNot8, "HASNOT" ); } -/** +/** * Event namespace */ namespace HnEvent { - /** - * Event data. + /** + * Event data. */ _LIT8( KEventArgNamespace8, "event_data"); - - /** - * Dropped before custom id. + + /** + * Dropped before custom id. */ _LIT8( KDroppedBefore8, "dropped_before_custom_id" ); - - /** - * Dragged custom id. + + /** + * Dragged custom id. */ _LIT8( KDragged8, "dragged_custom_id" ); - - /** - * Highlight offset. + + /** + * Highlight offset. */ _LIT8( KHighlightOffset8, "highlight_offset" ); - + } @@ -183,7 +183,7 @@ _LIT8( KMenuConditionAttrName8, "condition" ); _LIT8( KIndexAttrName8, "index" ); _LIT8( KMenuDimmAttrName8, "dimm" ); -_LIT8( KGenreAttrName8, "genre" ); +_LIT8( KGenreAttrName8, "genre" ); _LIT8( KTitleAttrName8, "title" ); _LIT8( KEmptyTextAttrName8, "emptytext" ); _LIT8( KNameAttrName8, "name" ); @@ -315,7 +315,7 @@ _LIT8( KEvaluateMdModel, "EvaluateMdModel" ); _LIT8( KDisableActionsForItem, "DisableActionsForItem" ); -_LIT( KSuiteName, "suite_name" ); +_LIT( KSuiteName, "suite_name" ); _LIT8( KSuiteName8, "suite_name" ); // @@ -351,7 +351,7 @@ _LIT8( KTitleName8, "suite" ); _LIT8( KItemName8, "item" ); _LIT8( KGenreName8, "genre" ); -_LIT8( KLocalizationName8, "localization" ); +_LIT8( KLocalizationName8, "localization" ); _LIT8( KEventName8, "event" ); _LIT8( KMenuItemName8, "menuitem" ); @@ -359,13 +359,13 @@ _LIT8( KMenuItemSpecificName8, "menuitem_specific" ); _LIT( KMenuItemSpecificName, "menuitem_specific" ); -_LIT( KRoot, "root" ); +_LIT( KRoot, "root" ); _LIT8( KRoot8, "root" ); _LIT( KExtension, ".r" ); // rsc, r01, r02, etc. _LIT( KExtensionRsc, ".rsc" ); -_LIT8( KHexStart8, "0x"); +_LIT8( KHexStart8, "0x"); _LIT( KDrive , "C:"); _LIT( KEntriesSuffix, "suites\\"); @@ -394,9 +394,6 @@ _LIT( KSwitchWidgetMdEvent, "switch_widget" ); _LIT( KStartEditModeMdEvent, "start_edit_mode" ); _LIT( KStopEditModeMdEvent, "stop_edit_mode" ); -_LIT( KZoomLarge, "zoom_large" ); -_LIT( KZoomNormal, "zoom_normal" ); -_LIT( KZoomSmall, "zoom_small" ); _LIT( KAppGainForeground, "gain_foreground" ); _LIT( KAppGainBackground, "gain_background" ); _LIT( KSetFocusEvent, "set_focus" ); @@ -423,11 +420,11 @@ #endif// _DEBUG // info notes for notifying lack of configuration files -_LIT( KDebugNoteDirNotFound, +_LIT( KDebugNoteDirNotFound, "Directory containing suite configuration not found!" ); -_LIT( KDebugNoteFileNotFound, +_LIT( KDebugNoteFileNotFound, "File containing suite configuration not found!" ); -_LIT( KDebugNoteOtherError, +_LIT( KDebugNoteOtherError, "Loading suite configuration returned error: %d" ); _LIT8( KStar8, "*" ); @@ -446,7 +443,7 @@ _LIT( KOnFocusGain, "item:focus" ); _LIT( KOnFocusLost, "item:unfocus" ); -_LIT8( KIndexWithBrackets8, "[$index]"); +_LIT8( KIndexWithBrackets8, "[$index]"); _LIT8( KIndex8, "$index" ); _LIT( KIndex, "$index" ); _LIT8( KCount, "/[$count]" ); @@ -507,9 +504,9 @@ const TInt KTimeStampBufferLength = 25; -const TInt KUidStringLength = 10; +const TInt KUidStringLength = 10; -const TInt KTimeStampCutOff = 5; +const TInt KTimeStampCutOff = 5; /** * Order in which drives are searched for suites. @@ -550,7 +547,7 @@ { EImageSourceUndefined = 0, EImageSourceFile, - EImageSourceResource, + EImageSourceResource, EImageSourceApplicationUid, EImageSourceLiw }; diff -r f72a12da539e -r 5315654608de menufw/hierarchynavigator/hnmetadatamodel/inc/hnmdmodel.h --- a/menufw/hierarchynavigator/hnmetadatamodel/inc/hnmdmodel.h Thu Dec 17 08:40:49 2009 +0200 +++ b/menufw/hierarchynavigator/hnmetadatamodel/inc/hnmdmodel.h Thu Jan 07 12:39:41 2010 +0200 @@ -11,7 +11,7 @@ * * Contributors: * -* Description: +* Description: * */ @@ -21,7 +21,7 @@ #define C_HNMDMODEL_H #include -#include +#include #include #include #include "hnglobals.h" @@ -44,19 +44,19 @@ /** * Type of the property. - * + * * @ingroup group_hnmetadatamodel */ enum TPropertyType { EUndefined = 0, EGenre, - EVisualItemCount + EVisualItemCount }; /** * Mode type. - * + * * @ingroup group_hnmetadatamodel */ enum TMdMode @@ -69,72 +69,72 @@ * Common pointers. * * @since S60 5.0 - * @ingroup group_hnmetadatamodel + * @ingroup group_hnmetadatamodel */ struct THnMdCommonPointers - { + { /** * Not own - Localization. */ CHnMdLocalization* iLocalization; - + /** * Not own - Query generator. */ THnIdGenerator* iIdGenerator; - + /** * Not own - Suite model container. */ CHnSuiteModelContainer* iContainer; - + /** * Not own - Meta data model. */ CHnMdModel* iModel; - + /** * Not own - Xml model provider. */ CHnXmlModelProvider* iXmlModelProvider; - + /** * Not own - Cache for bitmap and mask ids. */ CHnBitmapIdCache* iBitmapIdCache; - + /** * Not own - Model event observer. */ MHnMdModelEventObserver* iModelEventObserver; - + /** * Not own - Edit mode interface. */ MHnEditModeInterface* iEditModeInterface; - + /** * Not own - Handler to file server session; - */ + */ RFs& iFs; - + /** * Gets static pointer from TLS. */ static THnMdCommonPointers* Static() {return (THnMdCommonPointers*)Dll::Tls(); } - + /** * Sets pointer to TLS. - * + * * @param aCmnPtrs Pointer to set */ static void SetStatic( THnMdCommonPointers* aCmnPtrs ) { Dll::SetTls(aCmnPtrs); } - - private: + + private: // only model can create it - friend class CHnMdModel; - + friend class CHnMdModel; + /** * Standard C++ consturctor. */ @@ -151,26 +151,26 @@ /** * Copy constructor declared as private to disallow copying. - * + * * @param aCmnPtrs Pointer to set. */ THnMdCommonPointers( const THnMdCommonPointers& aCmnPtrs ):iFs( aCmnPtrs.iFs ) { } - + /** * Assignment operator */ THnMdCommonPointers& operator=( const THnMdCommonPointers& ){return *this;} }; - + /** * Id generator. * * @lib ?library * @since S60 5.0 - * @ingroup group_hnmetadatamodel + * @ingroup group_hnmetadatamodel */ struct THnIdGenerator - { + { /** * Standatrd C++ constructor. */ @@ -188,7 +188,7 @@ return iId++; } private: - + /** * Copy constructor declared as private to disallow copying. * @param aGenerator Id generator; @@ -199,23 +199,23 @@ * Assignment operator. */ THnIdGenerator& operator=(const THnIdGenerator&); - + /** * Id */ - TInt iId; + TInt iId; }; /** * Model event observer. * - * @since S60 5.0 + * @since S60 5.0 * @ingroup group_hnmetadatamodel */ class MHnMdModelEventObserver { public: - + /** * Handles modlde event. * @@ -223,7 +223,7 @@ * @param aEventName Event name. * @param aParams Parameters. */ - virtual TInt HandleModelEventL( const TDesC& aEventName, + virtual TInt HandleModelEventL( const TDesC& aEventName, CLiwGenericParamList& aParams ) = 0; }; @@ -231,10 +231,10 @@ * Meta data model * * This is the main class of the Meta Data Model component. - * + * * This class is the entry point for building the meta data model * and for evaluation. - * + * * @since S60 5.0 * @ingroup group_hnmetadatamodel */ @@ -277,7 +277,7 @@ * @since S60 5.0 */ virtual ~CHnMdModel(); - + /** * Evaluates the model. Takes filter as a parameter. * @@ -288,19 +288,19 @@ /** * Manages evaluation lock. - * + * * @param aLock Locks evaluation if set to ETrue. * @param aEvaluate Runs evaluation if aEvaluate == ETrue. */ IMPORT_C void SetEvaluationLockL( TBool aLock, TBool aEvaluate = ETrue ); - + /** * Evaluates the model. * * @since S60 5.0 */ IMPORT_C void EvaluateL(); - + /** * Switches between edit mode and normal mode * @@ -308,8 +308,8 @@ * @param aMode Suite model container. */ IMPORT_C void SetModeL( TMdMode aMode ); - - + + /** * Gets suite's meta data model. * @@ -317,7 +317,7 @@ * @return Suite meta data model. */ IMPORT_C CHnMdSuite* GetLastSuite(); - + /** * Gets suite's meta data model. * @@ -326,7 +326,7 @@ * @return Suite meta data model. */ CHnMdSuite* GetSuite( TInt aPosition ); - + /** * Gets suite's parameters.. * @@ -336,39 +336,39 @@ * @return Suite meta data model. */ IMPORT_C CLiwGenericParamList& GetSuiteParameters( TInt aPosition ); - - + + /** * Handles back event. - * + * * @since S60 v3.2 * @param aMulContainer Suite model container. * @param aGenre Name of the suite. * @param aIterations Number of iterations. * @return Error code. - */ + */ IMPORT_C TInt HandleBackEventL( CHnSuiteModelContainer* aMulContainer, const TDesC& aGenre, TInt aIterations = KModelCountForRoot ); - + /** * Handles sis installation event. - * + * * @since S60 v3.2 * @param aMulContainer Suite model container. - */ - IMPORT_C void HandleSisInstallationEventL( + */ + IMPORT_C void HandleSisInstallationEventL( CHnSuiteModelContainer* aMulContainer ); - + /** * Loads a suite from xml data. - * + * * @since S60 v5.0 * @param aGenre Name of the suite. * @param aSuiteParams Suite parameters. * @return Error code. - */ + */ IMPORT_C TInt LoadSuiteL( const TDesC& aGenre, CLiwGenericParamList* aSuiteParams = NULL ); - + /** * Check if suite model exists. * @@ -377,7 +377,7 @@ * @return ETrue if suite model exists, otherwise EFalse. */ IMPORT_C TBool SuiteModelExistsL( const TDesC8& aSuiteModel ); - + /** * Gets suite's meta data model. * @@ -393,22 +393,22 @@ * @since S60 5.0 */ IMPORT_C void DeleteLastSuite(); - - + + /** * Realeses localization files. * * @since S60 5.0 */ IMPORT_C void ReleaseLocalization(); - + /** * Reloads localization. * * @since S60 5.0 */ IMPORT_C void ReloadLocalizationL(); - + /** * Informs metadatamodel to ignore evaluations or * to performing evaluations, according to the @@ -418,7 +418,7 @@ * @param aIgnore Metadatamodel ignores evaluations when set to ETrue. */ IMPORT_C void IgnoreEvaluations( TBool aIgnore ); - + /** * Request that menu goes to foreground when evaluation completes. * @@ -435,7 +435,7 @@ * simply means not to bring menu to foreground. */ IMPORT_C void QueueForeground( TForegroundGainTriggeringEvent aWhen ); - + /** * Is there a queue for foreground gain. * @@ -443,7 +443,7 @@ * @return should foreground be gained after evaluation. */ IMPORT_C TBool IsForegroundQueued() const; - + /** * Notifies this metadata model that suite evaluation has completed. * @@ -451,7 +451,7 @@ * has completed */ void SuiteModelReadyToShowL( CHnSuiteModel* aJustEvaluatedSuite ); - + /** * Causes all of the loades suites except for the suite at the bottom * of the stack to be reloaded from their corresponding xml file @@ -461,10 +461,10 @@ * @param aIgnore aModelContainer Model container object. */ void ReloadStackSuitesL( CHnSuiteModelContainer* aModelContainer ); - + /** * Counts number of loaded suites. - * + * * @since S60 5.0 * @return Number of loaded suites */ @@ -476,7 +476,7 @@ * @since S60 5.0 */ void EvaluateTopSuiteL(); - + private: /** @@ -497,83 +497,78 @@ CHnSuiteModelContainer * aSuiteModelContainer ); private: // data - + /** * Id generator. */ - THnIdGenerator iIdGenerator; - + THnIdGenerator iIdGenerator; + /** * Own - Localization. */ CHnMdLocalization* iLocalization; - + /** * Own - Xml model provider. */ CHnXmlModelProvider* iXmlModelProvider; - + /** * Own - bitmap and mask ids cache. */ CHnBitmapIdCache* iBitmapIdCache; - + /** * Not Own - Event observer. */ MHnMdModelEventObserver* iModelEventObserver; - + /** * Stores pointers to common objects in the system * This object is shared throut the whole system. - */ + */ THnMdCommonPointers iCmnPtrs; - + /** * Stores information about mode. */ TMdMode iMode; - + /** * Loaded Suites stack. * Object and content owned. */ RPointerArray iLoadedSuites; - + /** * Repository widget type observer. */ CHnRepositoryObserver* iRepositoryWidgetTypeObserver; - + /** * Repository folder change observer. */ CHnRepositoryObserver* iRepositoryShowFolderObserver; - - /** - * Repository folder change observer. - */ - CHnRepositoryObserver* iRepositoryZoomObserver; - + /** * When set, forces metadatamodel to skip evaluations. */ TBool iIgnoreEvaluations; - + /** * Queues foreground gain action. */ TBool iForegroundQueued; - + /** * Not own - pointer to the suite model that must be evaluated * before matrix menu can be brought to foreground. - * + * * When NULL, then any suite evaluation brings menu to foreground. * It is only meaningful when iForegroundQueued is ETrue. */ CHnSuiteModel* iForegroundTriggeringSuite; - + }; #endif // C_HNMDMODEL_H diff -r f72a12da539e -r 5315654608de menufw/hierarchynavigator/hnmetadatamodel/inc/hnrepositoryobserver.h --- a/menufw/hierarchynavigator/hnmetadatamodel/inc/hnrepositoryobserver.h Thu Dec 17 08:40:49 2009 +0200 +++ b/menufw/hierarchynavigator/hnmetadatamodel/inc/hnrepositoryobserver.h Thu Jan 07 12:39:41 2010 +0200 @@ -29,9 +29,9 @@ /** * Repository Observer base class. - * + * * It is used to be derived by repository observers. - * + * * @lib hnmetadatamodel * @since S60 5.0 * @ingroup group_hnmetadatamodel @@ -41,70 +41,70 @@ public MCenRepNotifyHandlerCallback { public: - + /** * Default C++ Destructor. - * + * * @since S60 v5.0 - */ + */ virtual ~CHnRepositoryObserver(); - + protected: /** * Defautlt C++ Constructor. - * + * * @param aCmnPtrs Common pointers. * @since S60 v5.0 - */ + */ CHnRepositoryObserver( THnMdCommonPointers* aCmnPtrs ); - + /** * Defautlt C++ Constructor. - * + * * @param aCmnPtrs Common pointers. * @since S60 v5.0 - */ + */ CHnRepositoryObserver( THnMdCommonPointers* aCmnPtrs, TUint32 iId ); - + /** * Second stage constructor. - * + * * @since S60 v5.0 */ void ConstructL( const TUid aRepositoryUid ); - + protected: /** * Own - Central Repository access class. */ CRepository *iRepository; - + /** * Id of the CR entry to be watched. */ TUint32 iId; - + /** * Common pointers. - */ + */ THnMdCommonPointers* iCmnPtrs; - + /** * Own - Central repository notification handler. */ CCenRepNotifyHandler* iNotifyHandler; - + }; /** * Widget Type Repository Observer. - * + * * It is used to inform hierarchy navigator of changes in the suites repository. - * + * * @lib hnmetadatamodel * @since S60 5.0 * @ingroup group_hnmetadatamodel @@ -112,71 +112,71 @@ NONSHARABLE_CLASS( CHnRepositoryWidgetTypeObserver ): public CHnRepositoryObserver { public: - + /** * Default C++ Destructor. - * + * * @since S60 v5.0 - */ + */ virtual ~CHnRepositoryWidgetTypeObserver(); - + /** * Factory function. - * + * * @param aCmnPtrs Common pointers. * @return Repository Observer. * @since S60 v5.0 - */ - static CHnRepositoryWidgetTypeObserver* NewL( THnMdCommonPointers* aCmnPtrs, const TUid aRepositoryUid ); + */ + static CHnRepositoryWidgetTypeObserver* NewL( THnMdCommonPointers* aCmnPtrs, const TUid aRepositoryUid ); /** * Factory function. - * + * * @param aCmnPtrs Common pointers. * @return Repository Observer. * @since S60 v5.0 - */ + */ static CHnRepositoryWidgetTypeObserver* NewLC( THnMdCommonPointers* aCmnPtrs, const TUid aRepositoryUid ); - + /** - * Change handler method. + * Change handler method. * It is invoked whenever notifier detects a change in the CR. - * + * * @param aId Id of the entry in CR. * @since S60 v5.0 */ void HandleNotifyGeneric(TUint32 aId); - + /** - * Change handler method. + * Change handler method. * It is invoked whenever notifier detects a change in the CR. - * + * * @param aId Id of the entry in CR. * @since S60 v5.0 */ void HandleNotifyGenericL(TUint32 aId); - + private: /** * Defautlt C++ Constructor. - * + * * @param aCmnPtrs Common pointers. * @since S60 v5.0 - */ + */ CHnRepositoryWidgetTypeObserver( THnMdCommonPointers* aCmnPtrs ); - + private: - + /** * Second stage constructor. - * + * * @since S60 v5.0 */ void ConstructL( const TUid aRepositoryUid ); - + private: - + /** * Array holding ids of widgets being switched. * It is used to eliminate double refresh for such suites. @@ -187,22 +187,22 @@ -NONSHARABLE_CLASS( CHnRepositoryShowFolderObserver ): public CHnRepositoryObserver, +NONSHARABLE_CLASS( CHnRepositoryShowFolderObserver ): public CHnRepositoryObserver, public MLiwNotifyCallback, public MHnSuiteObserver { public: - + /** * Default C++ Destructor. - * + * * @since S60 v5.0 - */ + */ virtual ~CHnRepositoryShowFolderObserver(); - + /** * Factory function. - * + * * @param aCmnPtrs Common pointers. * @return Repository Observer. * @since S60 v5.0 @@ -213,7 +213,7 @@ /** * Factory function. - * + * * @param aCmnPtrs Common pointers. * @return Repository Observer. * @since S60 v5.0 @@ -221,26 +221,26 @@ static CHnRepositoryShowFolderObserver* NewLC( THnMdCommonPointers* aCmnPtrs, const TUid aRepositoryUid, const TUint32 aId); - + /** - * Change handler method. + * Change handler method. * It is invoked whenever notifier detects a change in the CR. - * + * * @param aId Id of the entry in CR. * @since S60 v5.0 */ void HandleNotifyString(TUint32 aId, const TDesC16& aNewValue ); - + /** - * Change handler method. + * Change handler method. * It is invoked whenever notifier detects a change in the CR. - * + * * @param aId Id of the entry in CR. * @since S60 v5.0 */ void HandleNotifyStringL(TUint32 aId, const TDesC16& aNewValue ); - - + + /** * From MLiwNotifyCallback */ @@ -249,49 +249,49 @@ TInt aEventId, CLiwGenericParamList& aEventParamList, const CLiwGenericParamList& aInParamList); - + /** * From MHnSuiteObserver */ - virtual void HandleSuiteEventL ( THnCustomSuiteEvent aCustomSuiteEvent, + virtual void HandleSuiteEventL ( THnCustomSuiteEvent aCustomSuiteEvent, CHnSuiteModel *aModel ); - + private: /** * Defautlt C++ Constructor. - * + * * @param aCmnPtrs Common pointers. * @since S60 v5.0 - */ + */ CHnRepositoryShowFolderObserver( THnMdCommonPointers* aCmnPtrs, TUint32 iId ); /** * Extracts the folder name from the CR key. - * + * * @param aNewValue The CR key. * @since S60 v5.0 - */ + */ void ExtractCRKeyShowFolderName( const TDesC& aNewValue ); - + /** * Request get list for parent folder of an application. - * + * * @param aFolderId A parent folder id * @since S60 v5.0 */ void GetShowFolderL( TUint32 aFolderId ); - + /** * Request get list for a folder with given application group name * contained in iCRKeyFolderName. - * + * * @since S60 v5.0 */ void GetShowFolderGroupNameL(); - + private: /** * Type of a flag describing the type of notification. @@ -300,119 +300,40 @@ * SECOND_NOTIFY - handled notify caused by the second get list */ enum TNotifyType { EAPP_ID=1, EAPP_UID=2, ESECOND_NOTIFY=4 }; - + private: - + /** * Second stage constructor. - * + * * @since S60 v5.0 */ void ConstructL( const TUid aRepositoryUid ); private: - + /** * Folder application group name. */ TBuf8 iCRKeyFolderName; - + /** * Mcs id for an application item in a folder with a given app group name. */ TBuf8 iCRKeyFolderItemUid; - + /** * Own. * Intance of the service handler. */ CHnServiceHandler* iServiceHandler; - + /** * Flag describing the type of notification. */ TInt iNotifyType; }; - -NONSHARABLE_CLASS( CHnRepositoryZoomObserver ): public CHnRepositoryObserver - { -public: - - /** - * Default C++ Destructor. - * - * @since S60 v5.0 - */ - virtual ~CHnRepositoryZoomObserver(); - - /** - * Factory function. - * - * @param aCmnPtrs Common pointers. - * @return Repository Observer. - * @since S60 v5.0 - */ - static CHnRepositoryZoomObserver* NewL( - THnMdCommonPointers* aCmnPtrs, const TUid aRepositoryUid, - const TUint32 aId); - - /** - * Factory function. - * - * @param aCmnPtrs Common pointers. - * @return Repository Observer. - * @since S60 v5.0 - */ - static CHnRepositoryZoomObserver* NewLC( - THnMdCommonPointers* aCmnPtrs, const TUid aRepositoryUid, - const TUint32 aId); - - /** - * Change handler method. - * It is invoked whenever notifier detects a change in the CR. - * - * @param aId Id of the entry in CR. - * @since S60 v5.0 - */ - void HandleNotifyInt(TUint32 aId, TInt aNewValue ); - - /** - * Change handler method. - * It is invoked whenever notifier detects a change in the CR. - * - * @param aId Id of the entry in CR. - * @since S60 v5.0 - */ - void HandleNotifyIntL(TUint32 aId, TInt aNewValue ); - -private: - - /** - * Defautlt C++ Constructor. - * - * @param aCmnPtrs Common pointers. - * @since S60 v5.0 - */ - CHnRepositoryZoomObserver( THnMdCommonPointers* aCmnPtrs, TUint32 iId ); - -private: - - /** - * Second stage constructor. - * - * @since S60 v5.0 - */ - void ConstructL( const TUid aRepositoryUid ); - - /** - * Setup initial value of zoom at startup; - * - * @since S60 v5.0 - */ - void InitializeL(); - }; - #endif /*HNREPOSITORYOBSERVER_H_*/ //End of file diff -r f72a12da539e -r 5315654608de menufw/hierarchynavigator/hnmetadatamodel/src/hnmdmodel.cpp --- a/menufw/hierarchynavigator/hnmetadatamodel/src/hnmdmodel.cpp Thu Dec 17 08:40:49 2009 +0200 +++ b/menufw/hierarchynavigator/hnmetadatamodel/src/hnmdmodel.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -11,7 +11,7 @@ * * Contributors: * -* Description: +* Description: * */ @@ -52,7 +52,7 @@ MMPERF(("CHnMetaDataModel::ConstructL - model privider ready")); iXmlModelProvider->ReloadModelL(); MMPERF(("CHnMetaDataModel::ConstructL - model reloaded")); - + iCmnPtrs.iLocalization = iLocalization; iCmnPtrs.iIdGenerator = &iIdGenerator; iCmnPtrs.iModel = this; @@ -60,13 +60,12 @@ iCmnPtrs.iContainer = aSuiteModelContainer; iCmnPtrs.iModelEventObserver = aModelObserver; iCmnPtrs.iBitmapIdCache = iBitmapIdCache; - + THnMdCommonPointers::SetStatic(&iCmnPtrs); - + iMode = EMdModeNormal; iRepositoryWidgetTypeObserver = CHnRepositoryWidgetTypeObserver::NewL( &iCmnPtrs, KMatrixRepositoryUid ); iRepositoryShowFolderObserver = CHnRepositoryShowFolderObserver::NewL( &iCmnPtrs, KCRUidMenu, KMenuShowFolder ); - iRepositoryZoomObserver = CHnRepositoryZoomObserver::NewL( &iCmnPtrs, KCRUidAvkon, KAknGlobalUiZoom ); MMPERF(("CHnMetaDataModel::ConstructL - rep. observer ready")); } @@ -74,7 +73,7 @@ // // --------------------------------------------------------------------------- // -EXPORT_C CHnMdModel* CHnMdModel::NewL( +EXPORT_C CHnMdModel* CHnMdModel::NewL( MHnMdModelEventObserver* aModelObserver, CHnSuiteModelContainer * aSuiteModelContainer ) { @@ -88,7 +87,7 @@ // // --------------------------------------------------------------------------- // -EXPORT_C CHnMdModel* CHnMdModel::NewLC( +EXPORT_C CHnMdModel* CHnMdModel::NewLC( MHnMdModelEventObserver* aModelObserver, CHnSuiteModelContainer * aSuiteModelContainer ) { @@ -114,7 +113,6 @@ { delete iRepositoryWidgetTypeObserver; delete iRepositoryShowFolderObserver; - delete iRepositoryZoomObserver; iLoadedSuites.ResetAndDestroy(); delete iXmlModelProvider; delete iLocalization; @@ -136,7 +134,7 @@ CHnMdSuite* lastMdModel = GetLastSuite(); ASSERT( !lastMdModel->SuiteName().Compare( aSuiteName ) ); #endif - + TInt countDown( aIterations ); CHnSuiteModel* current = NULL; while( ( current = aMulContainer->GetParentSuiteModel() ) != NULL && @@ -145,12 +143,12 @@ current = aMulContainer->GetLastSuiteModel(); // pop the suite model aMulContainer->PopSuiteModelL( current->SuiteName() ); - + // remove the suite that we are leaving DeleteLastSuite(); countDown--; } - + current = aMulContainer->GetLastSuiteModel(); current->GetItemsOrder()->MarkSuiteUninitialized(); CHnFilter* filter = CHnFilter::NewLC(); @@ -191,7 +189,7 @@ { break; } - + CHnMdSuite* suite = GetLastSuite(); if( iXmlModelProvider->SuiteExistsL( suite->SuiteName() ) ) { @@ -204,13 +202,13 @@ aModelContainer->PopSuiteModelL( suite->SuiteName() ); DeleteLastSuite(); } - + TInt err( KErrNone ); CHnFilter* filter = CHnFilter::NewLC(); filter->SetEvaluateSuiteL( ETrue ); SetModeL( iMode ); - + for( TInt i( paramsArray.Count() - 1 ); i >= 0 && !err; i-- ) { CLiwGenericParamList* suiteParams = CLiwGenericParamList::NewL(); @@ -231,7 +229,7 @@ *filter, *iCmnPtrs.iContainer->GetLastSuiteModel() ); GetLastSuite()->EvaluateL( *iCmnPtrs.iContainer->GetLastSuiteModel() ); } - + CleanupStack::PopAndDestroy( filter ); CleanupStack::PopAndDestroy( ¶msArray ); } @@ -296,7 +294,7 @@ // EXPORT_C CHnMdSuite* CHnMdModel::GetLastSuite() { - return (iLoadedSuites.Count()>0) + return (iLoadedSuites.Count()>0) ? iLoadedSuites[ iLoadedSuites.Count()-1 ] : NULL; } @@ -355,7 +353,7 @@ { User::Leave( KErrArgument ); } - + if ( IsForegroundQueued() && ( !iForegroundTriggeringSuite || iForegroundTriggeringSuite == aJustEvaluatedSuite ) ) { @@ -373,7 +371,7 @@ // CHnMdSuite* CHnMdModel::GetSuite( TInt aPosition ) { - return ( (aPosition >= 0) && (aPosition < iLoadedSuites.Count()) ) + return ( (aPosition >= 0) && (aPosition < iLoadedSuites.Count()) ) ? iLoadedSuites[ aPosition ] : NULL; } @@ -405,11 +403,11 @@ // // --------------------------------------------------------------------------- // -EXPORT_C TInt CHnMdModel::LoadSuiteL( const TDesC& aGenre, +EXPORT_C TInt CHnMdModel::LoadSuiteL( const TDesC& aGenre, CLiwGenericParamList* aSuiteParams ) { TInt err( KErrNone ); - + RXmlEngDocument xmlDoc; // Xml model provider takes ownership of xmlDoc. TRAP( err, iXmlModelProvider->GetModelL( aGenre, xmlDoc ) ); @@ -423,28 +421,28 @@ err = KErrCorrupt; } } - + if ( !err ) { CHnMdSuite* newSuite = CHnMdSuite::NewLC( element, &iCmnPtrs ); - + if (aSuiteParams) { newSuite->SetSuiteParametersL( *aSuiteParams ); } - + TInt pos( 0 ); newSuite->GetSuiteParameters().FindFirst( pos, KSuiteName8); if ( pos == KErrNotFound ) { - newSuite->GetSuiteParameters().AppendL( + newSuite->GetSuiteParameters().AppendL( TLiwGenericParam(KSuiteName8, TLiwVariant( aGenre ) ) ); } iCmnPtrs.iContainer->PushNewSuiteModelL( newSuite->SuiteName() ); iCmnPtrs.iContainer->GetLastSuiteModel()->GetItemsOrder()-> SetSuiteId( iCmnPtrs.iIdGenerator->GetNextId() ); - + CleanupStack::Pop( newSuite ); iLoadedSuites.AppendL( newSuite ); } @@ -452,7 +450,7 @@ { MMPERF(("CHnMdModel::LoadSuiteL - Error TRAPPED!")); } - + return err; } @@ -477,7 +475,7 @@ EXPORT_C void CHnMdModel::GetCurrentUriL( TDes& aUri ) { iXmlModelProvider->ReloadModelL(); - + aUri.Append( KPrefMm ); for( TInt i(0); i < iLoadedSuites.Count(); i++ ) { diff -r f72a12da539e -r 5315654608de menufw/hierarchynavigator/hnmetadatamodel/src/hnrepositoryobserver.cpp --- a/menufw/hierarchynavigator/hnmetadatamodel/src/hnrepositoryobserver.cpp Thu Dec 17 08:40:49 2009 +0200 +++ b/menufw/hierarchynavigator/hnmetadatamodel/src/hnrepositoryobserver.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -35,7 +35,7 @@ class CHnServiceHandler; // --------------------------------------------------------------------------- -// +// // --------------------------------------------------------------------------- // void CHnRepositoryObserver::ConstructL( const TUid aRepositoryUid ) @@ -44,27 +44,27 @@ } // --------------------------------------------------------------------------- -// +// // --------------------------------------------------------------------------- // -CHnRepositoryObserver::CHnRepositoryObserver( THnMdCommonPointers* aCmnPtrs ) +CHnRepositoryObserver::CHnRepositoryObserver( THnMdCommonPointers* aCmnPtrs ) : iCmnPtrs(aCmnPtrs) { - + } // --------------------------------------------------------------------------- -// +// // --------------------------------------------------------------------------- // -CHnRepositoryObserver::CHnRepositoryObserver( THnMdCommonPointers* aCmnPtrs, TUint32 aId ) +CHnRepositoryObserver::CHnRepositoryObserver( THnMdCommonPointers* aCmnPtrs, TUint32 aId ) : iId( aId ), iCmnPtrs(aCmnPtrs) { - + } // --------------------------------------------------------------------------- -// +// // --------------------------------------------------------------------------- // CHnRepositoryObserver::~CHnRepositoryObserver() @@ -78,10 +78,10 @@ // class CHnRepositoryWidgetTypeObserver // --------------------------------------------------------------------------- -// +// // --------------------------------------------------------------------------- // -CHnRepositoryWidgetTypeObserver * CHnRepositoryWidgetTypeObserver::NewL( +CHnRepositoryWidgetTypeObserver * CHnRepositoryWidgetTypeObserver::NewL( THnMdCommonPointers* aCmnPtrs, const TUid aRepositoryUid ) { CHnRepositoryWidgetTypeObserver * self = CHnRepositoryWidgetTypeObserver::NewLC( aCmnPtrs, aRepositoryUid ); @@ -90,10 +90,10 @@ } // --------------------------------------------------------------------------- -// +// // --------------------------------------------------------------------------- // -CHnRepositoryWidgetTypeObserver * CHnRepositoryWidgetTypeObserver::NewLC( +CHnRepositoryWidgetTypeObserver * CHnRepositoryWidgetTypeObserver::NewLC( THnMdCommonPointers* aCmnPtrs, const TUid aRepositoryUid ) { CHnRepositoryWidgetTypeObserver * self = new (ELeave) CHnRepositoryWidgetTypeObserver( aCmnPtrs ); @@ -103,7 +103,7 @@ } // --------------------------------------------------------------------------- -// +// // --------------------------------------------------------------------------- // void CHnRepositoryWidgetTypeObserver::ConstructL( const TUid aRepositoryUid ) @@ -115,26 +115,26 @@ // --------------------------------------------------------------------------- -// +// // --------------------------------------------------------------------------- // -CHnRepositoryWidgetTypeObserver::CHnRepositoryWidgetTypeObserver( THnMdCommonPointers* aCmnPtrs ) +CHnRepositoryWidgetTypeObserver::CHnRepositoryWidgetTypeObserver( THnMdCommonPointers* aCmnPtrs ) : CHnRepositoryObserver( aCmnPtrs ) { - + } // --------------------------------------------------------------------------- -// +// // --------------------------------------------------------------------------- // CHnRepositoryWidgetTypeObserver::~CHnRepositoryWidgetTypeObserver() { iWidgetSwitches.Close(); } - + // --------------------------------------------------------------------------- -// +// // --------------------------------------------------------------------------- // void CHnRepositoryWidgetTypeObserver::HandleNotifyGeneric(TUint32 aId) @@ -143,7 +143,7 @@ } // --------------------------------------------------------------------------- -// +// // --------------------------------------------------------------------------- // void CHnRepositoryWidgetTypeObserver::HandleNotifyGenericL(TUint32 aId) @@ -152,9 +152,9 @@ DEBUG(("\tID: %d",aId)); THnSuiteWidgetType suiteState( EUnspecified ); - iRepository->Get( aId, (int &) suiteState); + iRepository->Get( aId, (int &) suiteState); TInt id = iWidgetSwitches.Find(aId); - + if ( suiteState == EChangeWidget ) { iWidgetSwitches.AppendL(aId); @@ -164,7 +164,7 @@ iWidgetSwitches.Remove(id); return; } - + CHnSuiteModel* lastSuiteModel = iCmnPtrs->iContainer->GetLastSuiteModel(); TBuf suiteName; if ( iRepository->Get( aId - 1, suiteName ) == KErrNone && lastSuiteModel @@ -172,21 +172,21 @@ { DEBUG16(("\t\tSuite Name: %S",&suiteName)); lastSuiteModel->GetItemsOrder()->MarkSuiteUninitialized(); - + TInt32 suiteId = lastSuiteModel->CustomId(); - + CLiwGenericParamList* inParam = CLiwGenericParamList::NewL(); CleanupStack::PushL( inParam ); - + CLiwDefaultMap* map = CLiwDefaultMap::NewLC(); - + map->InsertL( KGenreName8, TLiwVariant(suiteName) ); map->InsertL( KId8, TLiwVariant(suiteId) ); inParam->AppendL(TLiwGenericParam( KFilterElementItem8, TLiwVariant(map) )); CleanupStack::PopAndDestroy( map ); - + iCmnPtrs->iModelEventObserver->HandleModelEventL( KReevaluateMdEvent, *inParam ); - + CleanupStack::PopAndDestroy( inParam ); } DEBUG(("_MM_:CHnRepositoryObserver::HandleNotifyGeneric OUT")); @@ -195,10 +195,10 @@ // class CHnRepositoryShowFolderObserver // --------------------------------------------------------------------------- -// +// // --------------------------------------------------------------------------- // -CHnRepositoryShowFolderObserver * CHnRepositoryShowFolderObserver::NewL( +CHnRepositoryShowFolderObserver * CHnRepositoryShowFolderObserver::NewL( THnMdCommonPointers* aCmnPtrs, const TUid aRepositoryUid, const TUint32 aId ) { CHnRepositoryShowFolderObserver * self = CHnRepositoryShowFolderObserver::NewLC( aCmnPtrs, aRepositoryUid, aId ); @@ -207,10 +207,10 @@ } // --------------------------------------------------------------------------- -// +// // --------------------------------------------------------------------------- // -CHnRepositoryShowFolderObserver * CHnRepositoryShowFolderObserver::NewLC( +CHnRepositoryShowFolderObserver * CHnRepositoryShowFolderObserver::NewLC( THnMdCommonPointers* aCmnPtrs, const TUid aRepositoryUid, const TUint32 aId ) { CHnRepositoryShowFolderObserver * self = new (ELeave) CHnRepositoryShowFolderObserver( aCmnPtrs, aId ); @@ -220,7 +220,7 @@ } // --------------------------------------------------------------------------- -// +// // --------------------------------------------------------------------------- // void CHnRepositoryShowFolderObserver::ConstructL( const TUid aRepositoryUid ) @@ -228,24 +228,24 @@ CHnRepositoryObserver::ConstructL( aRepositoryUid ); TInt ret = iRepository->Create( iId, KBlank ); iNotifyHandler = CCenRepNotifyHandler::NewL( - *this, *iRepository, + *this, *iRepository, CCenRepNotifyHandler::EStringKey, iId ); iNotifyHandler->StartListeningL(); } // --------------------------------------------------------------------------- -// +// // --------------------------------------------------------------------------- // -CHnRepositoryShowFolderObserver::CHnRepositoryShowFolderObserver( THnMdCommonPointers* aCmnPtrs, TUint32 aId ) +CHnRepositoryShowFolderObserver::CHnRepositoryShowFolderObserver( THnMdCommonPointers* aCmnPtrs, TUint32 aId ) : CHnRepositoryObserver( aCmnPtrs, aId ) { - + } // --------------------------------------------------------------------------- -// +// // --------------------------------------------------------------------------- // CHnRepositoryShowFolderObserver::~CHnRepositoryShowFolderObserver() @@ -254,7 +254,7 @@ } // --------------------------------------------------------------------------- -// +// // --------------------------------------------------------------------------- // void CHnRepositoryShowFolderObserver::HandleNotifyString(TUint32 aId, const TDesC16& aNewValue ) @@ -263,20 +263,20 @@ } // --------------------------------------------------------------------------- -// +// // --------------------------------------------------------------------------- // void CHnRepositoryShowFolderObserver::HandleNotifyStringL(TUint32 aId, const TDesC16& aNewValue) { DEBUG(("_MM_:CHnRepositoryShowFolderObserver::HandleNotifyStringL IN")); DEBUG(("\tID: %d : %S", aId, &aNewValue)); - + //++Show Folder if( aId == iId && aNewValue.Length()) { iNotifyType = 0; ExtractCRKeyShowFolderName( aNewValue ); - + // iCRKeyFolderItemUid can contain mcs id or uid // in case of uid it will be replaced whith id in HandleNotifyL callback if( iCRKeyFolderItemUid.Length()>0 ) @@ -294,7 +294,7 @@ CHnMdBaseKey* inDataKey = HnMdKeyFactory::CreateL( KInData8, KKeyTypeMap, KDefaultParentId8 ); CleanupStack::PushL( inDataKey ); - + CHnMdBaseKey* filter( NULL ); HBufC8* id( NULL ); if ( iCRKeyFolderName.Length()>0 && !( iNotifyType & EAPP_UID ) ) @@ -306,8 +306,8 @@ inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KIdParam, KKeyTypeInteger, *id ) ); inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KRecursiveSearch8, KKeyTypeBoolean, KStringTrue8 ) ); inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KFlatResult8, KKeyTypeBoolean, KStringTrue8 ) ); - - filter = HnMdKeyFactory::CreateL( + + filter = HnMdKeyFactory::CreateL( KFilter8, KKeyTypeMap, KStringTrue8 ); CleanupStack::PushL( filter ); filter->AddSubKeyL( HnMdKeyFactory::CreateL( KMcsAppGroupName8, KKeyTypeString, iCRKeyFolderName ) ); @@ -331,7 +331,7 @@ inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KRecursiveSearch8, KKeyTypeBoolean, KStringTrue8 ) ); inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KFlatResult8, KKeyTypeBoolean, KStringTrue8 ) ); - filter = HnMdKeyFactory::CreateL( + filter = HnMdKeyFactory::CreateL( KFilter8, KKeyTypeMap, KStringTrue8 ); CleanupStack::PushL( filter ); filter->AddSubKeyL( HnMdKeyFactory::CreateL( KUid8, KKeyTypeInteger, iCRKeyFolderItemUid ) ); @@ -346,7 +346,7 @@ inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KIdParam, KKeyTypeInteger, *id ) ); inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KParentOnly8, KKeyTypeBoolean, KStringTrue8 ) ); } - + RPointerArray< CHnMdBaseKey > data; CleanupClosePushL( data ); data.AppendL( inDataKey ); @@ -393,32 +393,32 @@ } CleanupStack::PopAndDestroy( inDataKey ); } - + DEBUG(("_MM_:CHnRepositoryShowFolderObserver::HandleNotifyStringL OUT")); - + } // --------------------------------------------------------------------------- -// +// // --------------------------------------------------------------------------- // void CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName( const TDesC& aNewValue ) { - DEBUG(( "_MM_:CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName IN" )); + DEBUG(( "_MM_:CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName IN" )); iCRKeyFolderName.Copy( KBlank ); iCRKeyFolderItemUid.Copy( KBlank ); - + int keyValueLength = aNewValue.Length(); if( keyValueLength ) { TApaAppGroupName folder; TBuf tempBuf; TBuf timeStamp; - + TInt ret = aNewValue.Find( KComma ); if( (ret == KErrNotFound )|| ( ret == ( keyValueLength-1 ) ) ) { - DEBUG(( "_MM_:CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName (bad CR key value input) OUT" )); + DEBUG(( "_MM_:CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName (bad CR key value input) OUT" )); return; //bad CR key value input } if( ret>KApaMaxAppGroupName ) @@ -431,7 +431,7 @@ return; } tempBuf.Copy(aNewValue.Mid( ret + 1 ) ); - + TInt posUid = tempBuf.Find( KComma ); if ( KErrNotFound != posUid ) { @@ -454,31 +454,31 @@ } timeStamp.Copy( tempBuf ); } - + TTime currentTime; currentTime.HomeTime(); TTimeIntervalSeconds interval; - + TTime timeStampTime; ret = timeStampTime.Set(timeStamp); - + if(ret == KErrGeneral ) { - DEBUG(( "_MM_:CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName (bad timestamp) OUT" )); - return; // bad time stamp value + DEBUG(( "_MM_:CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName (bad timestamp) OUT" )); + return; // bad time stamp value } - + ret = currentTime.SecondsFrom( timeStampTime, interval ); - + if( interval.Int() < 0 ) {//negative timestamp is set ahead of current time...! - DEBUG(( "_MM_:CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName (negative interval) OUT" )); + DEBUG(( "_MM_:CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName (negative interval) OUT" )); return; } - + if(( interval.Int()) > KTimeStampCutOff ) {//positive timestamp but more than 5 seconds - DEBUG(( "_MM_:CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName (more than 5 seconds) OUT" )); + DEBUG(( "_MM_:CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName (more than 5 seconds) OUT" )); return; } else @@ -486,16 +486,16 @@ iCRKeyFolderName.Copy(folder); } } - DEBUG(( "_MM_:CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName OUT" )); + DEBUG(( "_MM_:CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName OUT" )); } // --------------------------------------------------------------------------- -// +// // --------------------------------------------------------------------------- // void CHnRepositoryShowFolderObserver::GetShowFolderL( TUint32 aFolderId ) { - + CHnMdBaseKey* inDataKey = HnMdKeyFactory::CreateL( KInData8, KKeyTypeMap, KDefaultParentId8 ); CleanupStack::PushL( inDataKey ); @@ -507,7 +507,7 @@ RPointerArray< CHnMdBaseKey > data; CleanupClosePushL( data ); data.Append( inDataKey ); - + CHnMdBaseKey* serviceData = HnMdKeyFactory::CreateL( KServiceContentName, KKeyTypeString, KMatrixMenuData ); CleanupStack::PushL( serviceData ); @@ -542,12 +542,12 @@ } // --------------------------------------------------------------------------- -// +// // --------------------------------------------------------------------------- // void CHnRepositoryShowFolderObserver::GetShowFolderGroupNameL() { - + CHnMdBaseKey* inDataKey = HnMdKeyFactory::CreateL( KInData8, KKeyTypeMap, KDefaultParentId8 ); CleanupStack::PushL( inDataKey ); @@ -556,14 +556,14 @@ inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KIdParam, KKeyTypeInteger, *id ) ); inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KRecursiveSearch8, KKeyTypeBoolean, KStringTrue8 ) ); inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KFlatResult8, KKeyTypeBoolean, KStringTrue8 ) ); - - CHnMdBaseKey* filter = HnMdKeyFactory::CreateL( + + CHnMdBaseKey* filter = HnMdKeyFactory::CreateL( KFilter8, KKeyTypeMap, KStringTrue8 ); CleanupStack::PushL( filter ); filter->AddSubKeyL( HnMdKeyFactory::CreateL( KMcsAppGroupName8, KKeyTypeString, iCRKeyFolderName ) ); filter->AddSubKeyL( HnMdKeyFactory::CreateL( KType8, KKeyTypeString, KMenuFolder8 ) ); filter->AddSubKeyL( HnMdKeyFactory::CreateL( KHidden8, KKeyTypeBoolean, KStringFalse8 ) ); - + RPointerArray< CHnMdBaseKey > data; CleanupClosePushL( data ); data.AppendL( inDataKey ); @@ -571,7 +571,7 @@ { data.AppendL( filter ); } - + CHnMdBaseKey* serviceData = HnMdKeyFactory::CreateL( KServiceContentName, KKeyTypeString, KMatrixMenuData ); CleanupStack::PushL( serviceData ); @@ -607,7 +607,7 @@ } // --------------------------------------------------------------------------- -// +// // --------------------------------------------------------------------------- // TInt CHnRepositoryShowFolderObserver::HandleNotifyL( @@ -644,7 +644,7 @@ iNotifyType |= ESECOND_NOTIFY; TLiwVariant varId; varId.PushL(); TLiwVariant varParentId; varParentId.PushL(); - + HnLiwUtils::GetVariantL( aEventParamList, KIdPath8, 0, varId ); HnLiwUtils::GetVariantL( aEventParamList, KParentIdPath8, 0, varParentId ); @@ -656,7 +656,7 @@ CleanupStack::PopAndDestroy( &varParentId ); CleanupStack::PopAndDestroy( &varId ); - + GetShowFolderL( parentId ); return KErrNone; } @@ -692,43 +692,43 @@ { return KErrNotFound; } - + TLiwVariant varId; varId.PushL(); TLiwVariant varAppGroupName; varAppGroupName.PushL(); TLiwVariant varSuiteName; varSuiteName.PushL(); TLiwVariant varChildrenCount; varChildrenCount.PushL(); - + HnLiwUtils::GetVariantL( aEventParamList, KIdPath8, 0, varId ); HnLiwUtils::GetVariantL( aEventParamList, KAppGroupNamePath8, 0, varAppGroupName ); HnLiwUtils::GetVariantL( aEventParamList, KTitleNamePath8, 0, varSuiteName ); HnLiwUtils::GetVariantL( aEventParamList, KChildrenCountPath8, 0, varChildrenCount ); - + CLiwGenericParamList* paramList = CLiwGenericParamList::NewL(); CleanupStack::PushL( paramList ); - + CLiwDefaultMap* map = CLiwDefaultMap::NewLC(); - - paramList->AppendL( TLiwGenericParam( KSuiteName8, - TLiwVariant( KFolderSuite ) ) ); - - map->InsertL( KSuiteName8, varSuiteName ); + + paramList->AppendL( TLiwGenericParam( KSuiteName8, + TLiwVariant( KFolderSuite ) ) ); + + map->InsertL( KSuiteName8, varSuiteName ); map->InsertL( KFolderId8, varId ); map->InsertL( KRemoveLocked8, TLiwVariant( KStringFalse8 ) ); map->InsertL( KParentFolderId8, varId ); map->InsertL( KTmpParentFolderId8, varId ); map->InsertL( KMcsAppGroupName8, varAppGroupName ); - + paramList->AppendL( TLiwGenericParam( KParams8, TLiwVariant( map ) ) ); - + CleanupStack::PopAndDestroy( map ); - + while ( iCmnPtrs->iModel->LoadedSuitesCount() > 1 ) { CHnMdSuite* suite = iCmnPtrs->iModel->GetLastSuite(); iCmnPtrs->iContainer->PopSuiteModelL( suite->SuiteName() ); - iCmnPtrs->iModel->DeleteLastSuite(); + iCmnPtrs->iModel->DeleteLastSuite(); } - + if ( iCmnPtrs->iContainer->GetLastSuiteModel()->CustomId() != varId.AsTInt64() ) { iCmnPtrs->iModelEventObserver->HandleModelEventL( KNewSuiteLoadedMdEvent, *paramList ); @@ -754,33 +754,33 @@ CleanupStack::PopAndDestroy( pl ); CleanupStack::PopAndDestroy( &varId ); CleanupStack::PopAndDestroy( &varItemCustomId ); - + iCRKeyFolderItemUid.Copy( KBlank ); } - + iNotifyType = 0; iCRKeyFolderName.Copy( KBlank ); iRepository->Set( iId, KBlank ); - + CleanupStack::PopAndDestroy( paramList ); CleanupStack::PopAndDestroy( &varChildrenCount ); CleanupStack::PopAndDestroy( &varSuiteName ); CleanupStack::PopAndDestroy( &varAppGroupName ); CleanupStack::PopAndDestroy( &varId ); } - + DEBUG(("_MM_:CHnRepositoryShowFolderObserver::HandleNotifyL OUT")); return KErrNone; } // --------------------------------------------------------------------------- -// +// // --------------------------------------------------------------------------- // -void CHnRepositoryShowFolderObserver::HandleSuiteEventL ( THnCustomSuiteEvent aCustomSuiteEvent, +void CHnRepositoryShowFolderObserver::HandleSuiteEventL ( THnCustomSuiteEvent aCustomSuiteEvent, CHnSuiteModel *aModel ) { - + if ( aCustomSuiteEvent == ESuiteModelInitialized && iCRKeyFolderItemUid.Length() > 0 ) { if (iCRKeyFolderItemUid.Length() > 0 ) @@ -802,112 +802,4 @@ } } - -// class CHnRepositoryZoomObserver -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -CHnRepositoryZoomObserver * CHnRepositoryZoomObserver::NewL( - THnMdCommonPointers* aCmnPtrs, const TUid aRepositoryUid, const TUint32 aId ) - { - CHnRepositoryZoomObserver * self = CHnRepositoryZoomObserver::NewLC( aCmnPtrs, aRepositoryUid, aId ); - CleanupStack::Pop(self); - return self; - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -CHnRepositoryZoomObserver * CHnRepositoryZoomObserver::NewLC( - THnMdCommonPointers* aCmnPtrs, const TUid aRepositoryUid, const TUint32 aId ) - { - CHnRepositoryZoomObserver * self = new (ELeave) CHnRepositoryZoomObserver( aCmnPtrs, aId ); - CleanupStack::PushL(self); - self->ConstructL( aRepositoryUid ); - return self; - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -void CHnRepositoryZoomObserver::ConstructL( const TUid aRepositoryUid ) - { - CHnRepositoryObserver::ConstructL( aRepositoryUid ); - iNotifyHandler = CCenRepNotifyHandler::NewL( - *this, *iRepository, - CCenRepNotifyHandler::EIntKey, iId ); - InitializeL(); - iNotifyHandler->StartListeningL(); - } - - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -CHnRepositoryZoomObserver::CHnRepositoryZoomObserver( THnMdCommonPointers* aCmnPtrs, TUint32 aId ) - : CHnRepositoryObserver( aCmnPtrs, aId ) - { - - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -CHnRepositoryZoomObserver::~CHnRepositoryZoomObserver() - { - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -void CHnRepositoryZoomObserver::HandleNotifyInt(TUint32 aId, TInt aNewValue ) - { - TRAP_IGNORE( HandleNotifyIntL(aId, aNewValue) ); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -void CHnRepositoryZoomObserver::HandleNotifyIntL(TUint32 aId, TInt aNewValue ) - { - DEBUG(("_MM_:CHnRepositoryZoomObserver::HandleNotifyStringL IN")); - DEBUG(("\tID: %d : %d", aId, aNewValue)); - - CLiwGenericParamList* paramList = CLiwGenericParamList::NewL(); - CleanupStack::PushL( paramList ); - - if ( (TAknUiZoom)aNewValue == EAknUiZoomLarge ) - { - iCmnPtrs->iModelEventObserver->HandleModelEventL( KZoomLarge, *paramList ); - } - else if ( (TAknUiZoom)aNewValue == EAknUiZoomSmall ) - { - iCmnPtrs->iModelEventObserver->HandleModelEventL( KZoomSmall, *paramList ); - } - else - { - iCmnPtrs->iModelEventObserver->HandleModelEventL( KZoomNormal, *paramList ); - } - - CleanupStack::PopAndDestroy( paramList ); - DEBUG(("_MM_:CHnRepositoryZoomObserver::HandleNotifyStringL OUT")); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -void CHnRepositoryZoomObserver::InitializeL() - { - TInt value(0); - iRepository->Get( iId, value); - HandleNotifyIntL( iId, value ); - } // End of File diff -r f72a12da539e -r 5315654608de menufw/hierarchynavigator/hnutilities/group/bld.inf --- a/menufw/hierarchynavigator/hnutilities/group/bld.inf Thu Dec 17 08:40:49 2009 +0200 +++ b/menufw/hierarchynavigator/hnutilities/group/bld.inf Thu Jan 07 12:39:41 2010 +0200 @@ -28,9 +28,7 @@ ../inc/hnmdkeyfactory.h |../../../inc/hnmdkeyfactory.h ../inc/hnservicehandler.h |../../../inc/hnservicehandler.h -../data/20012474_newMenuFw.txt /epoc32/release/winscw/udeb/z/private/10202be9/20012474.txt -../data/20012474_newMenuFw.txt /epoc32/release/winscw/urel/z/private/10202be9/20012474.txt -../data/20012474_newMenuFw.txt /epoc32/data/z/private/10202be9/20012474.txt +../data/20012474_newMenuFw.txt z:/private/10202be9/20012474.txt PRJ_MMPFILES hnutilities.mmp diff -r f72a12da539e -r 5315654608de menufw/menufwui/matrixmenu/group/bld.inf --- a/menufw/menufwui/matrixmenu/group/bld.inf Thu Dec 17 08:40:49 2009 +0200 +++ b/menufw/menufwui/matrixmenu/group/bld.inf Thu Jan 07 12:39:41 2010 +0200 @@ -33,9 +33,7 @@ ../inc/mmguiuid.hrh |../../../inc/mmguiuid.hrh // backup registration -backup_registration.xml /epoc32/data/Z/private/101F4CD2/backup_registration.xml -backup_registration.xml /epoc32/release/winscw/udeb/Z/private/101F4CD2/backup_registration.xml -backup_registration.xml /epoc32/release/winscw/urel/Z/private/101F4CD2/backup_registration.xml +backup_registration.xml Z:/private/101F4CD2/backup_registration.xml PRJ_MMPFILES matrixmenu.mmp diff -r f72a12da539e -r 5315654608de menufw/menufwui/matrixmenu/group/matrixmenu.mmp --- a/menufw/menufwui/matrixmenu/group/matrixmenu.mmp Thu Dec 17 08:40:49 2009 +0200 +++ b/menufw/menufwui/matrixmenu/group/matrixmenu.mmp Thu Jan 07 12:39:41 2010 +0200 @@ -35,7 +35,6 @@ SOURCE mmapplication.cpp SOURCE mmappui.cpp SOURCE mmdocument.cpp -SOURCE mmpropertysubscriber.cpp SOURCE mmnomemory.cpp SOURCE mmappkeyhandler.cpp diff -r f72a12da539e -r 5315654608de menufw/menufwui/matrixmenu/help/data/xhtml.zip Binary file menufw/menufwui/matrixmenu/help/data/xhtml.zip has changed diff -r f72a12da539e -r 5315654608de menufw/menufwui/matrixmenu/inc/mmappui.h --- a/menufw/menufwui/matrixmenu/inc/mmappui.h Thu Dec 17 08:40:49 2009 +0200 +++ b/menufw/menufwui/matrixmenu/inc/mmappui.h Thu Jan 07 12:39:41 2010 +0200 @@ -12,7 +12,7 @@ * Contributors: * * Description: Application UI class -* Version : %version: MM_83.1.2.1.23.1.18 % << Don't touch! Updated by Synergy at check-out. +* Version : %version: MM_83.1.2.1.23.1.19 % << Don't touch! Updated by Synergy at check-out. * */ @@ -28,14 +28,12 @@ #include #include #include -#include //for flip change status #include #include "hncontrollerinterface.h" #include "mmwidgetobserver.h" #include "hnsuiteobserver.h" #include "mmactionrequest.h" -#include "mmpropertysubscriber.h" #include "hnglobals.h" @@ -76,7 +74,6 @@ public MAknToolbarObserver, public MMmWidgetObserver, public MMmActionRequest, - public MMmPropertyChangeObserver, public MAknsSkinChangeObserver { @@ -307,24 +304,11 @@ TInt ExecuteExtensionActionL( const TUid aUid , const TDesC& aCommand, CLiwGenericParamList* aEventParamList ); -// from MMmPropertyChangeObserver - /** - * Called when property changed - * @since S60 v3.0 - */ - void PropertyChangedL(TInt aValue); - - /** - * Sets the zoom for the application. - */ - void SetZoom( TAknUiZoom aZoom ); - /** * Reloads cascade menu map. */ void ReloadCascadeMenuMapL(); - /** * Called by the skin server when skin content is changed and the * connected client wants to be informed. @@ -784,14 +768,6 @@ void ResetContainerMapToRootL(); /** - * Called to retrive flip status. - * - * @since S60 v5.0 - * @return Is flip open. - */ - TBool FlipOpen(); - - /** * Resets view to root. * * @return ETrue if view was not displaying root suite already, EFalse otherwise @@ -962,22 +938,6 @@ CMMExtensionManager* iMmExtManager; /** - * Sliding keyboard (flip) status - */ - EPSHWRMFlipStatus iKeyboardFlipStatus; - - /** - * Slider event subscriber - * own - */ - CMmPropertySubscriber* iSliderEventSubscriber; - - /** - * Current zoom; - */ - TAknUiZoom iZoom; - - /** * Screen state. */ TBool iScreenOn; diff -r f72a12da539e -r 5315654608de menufw/menufwui/matrixmenu/inc/mmpropertysubscriber.h --- a/menufw/menufwui/matrixmenu/inc/mmpropertysubscriber.h Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,85 +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: Subscribes properties from P&S - * -*/ - -#ifndef MMPROPERTYSUBSCRIBER_H -#define MMPROPERTYSUBSCRIBER_H - -#include // For CActive, link against: euser.lib -#include -// Observer for property change. Currently integer value supported -class MMmPropertyChangeObserver - { -public: - virtual void PropertyChangedL(TInt aValue)=0; - }; - -/** -* Subcribes property from P&S and listen property changes -* -* @lib xn3layoutengine.lib -* @since Series 60 5.0 -*/ -NONSHARABLE_CLASS( CMmPropertySubscriber ) : public CActive - { -public: - // Cancel and destroy - ~CMmPropertySubscriber(); - - /** - * Two-phased constructor. - * @param aUid P&S property category - * @param aKey P&S property key - * @param aObserver Given property change observer - */ - static CMmPropertySubscriber* NewL( - const TUid aUid, - const TUint32 aKey, - MMmPropertyChangeObserver& aObserver); - - /** - * Two-phased constructor. - * @param aUid P&S property category - * @param aKey P&S property key - * @param aObserver Given property change observer - */ - static CMmPropertySubscriber* NewLC( - const TUid aUid, - const TUint32 aKey, - MMmPropertyChangeObserver& aObserver); - -private: - // C++ constructor - CMmPropertySubscriber(MMmPropertyChangeObserver& aObserver); - - // Second-phase constructor - void ConstructL(const TUid aUid,const TUint32 aKey); - -private: // From CActive - // Handle completion - void RunL(); - - // How to cancel me - void DoCancel(); - -private: - //Observer for property changes - MMmPropertyChangeObserver& iPropertyChangeObserver; - // Property to listen - RProperty iProperty; - }; - -#endif // MMPROPERTYSUBSCRIBER_H diff -r f72a12da539e -r 5315654608de menufw/menufwui/matrixmenu/src/mmappui.cpp --- a/menufw/menufwui/matrixmenu/src/mmappui.cpp Thu Dec 17 08:40:49 2009 +0200 +++ b/menufw/menufwui/matrixmenu/src/mmappui.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -12,8 +12,8 @@ * Contributors: * * Description: Application UI class -* Version : %version: MM_176.1.28.1.52 % << Don't touch! Updated by Synergy at check-out. -* Version : %version: MM_176.1.28.1.52 % << Don't touch! Updated by Synergy at check-out. +* Version : %version: MM_176.1.28.1.54 % << Don't touch! Updated by Synergy at check-out. +* Version : %version: MM_176.1.28.1.54 % << Don't touch! Updated by Synergy at check-out. * */ @@ -42,7 +42,6 @@ #include #include #include -#include //flip status enums #include #include #include @@ -66,7 +65,6 @@ #include "mmwidgetcontainer.h" #include "mmtemplatelibrary.h" #include "mmextensionmanager.h" -#include "mmpropertysubscriber.h" #include "hnitemsorder.h" #include "mmnomemory.h" @@ -124,10 +122,6 @@ iMmExtManager = CMMExtensionManager::NewL( *this ); - iKeyboardFlipStatus = EPSHWRMFlipStatusUninitialized; - iSliderEventSubscriber = CMmPropertySubscriber::NewL(KPSUidHWRM, - KHWRMFlipStatus, *this); - iScreenOn = ETrue; iSkinChangeNeeded = EFalse; iSkinChangeInProgress = EFalse; @@ -190,7 +184,6 @@ delete iHNInterface; FeatureManager::UnInitializeLib(); delete iMmExtManager; - delete iSliderEventSubscriber; delete iTemplateLibrary; delete iDummyTemplateLib; delete iAppkeyHandler; @@ -315,9 +308,9 @@ CAknAppUi::ProcessCommandL( aCommand ); } - if (iCurrentContainer && iCurrentContainer == TopFocusedControl() ) + if ( iCurrentContainer ) { - iCurrentContainer->HandleTopFocusL(); + iCurrentContainer->EndLongTapL(); } } @@ -728,7 +721,8 @@ TBool idByContainer = iCurrentContainer->IsHighlightVisible() && iCurrentContainer->GetSuiteModelL()->GetItemModelsCount() > 1; TInt current = idByContainer ? - iCurrentContainer->GetHighlight() : KErrNotFound; + iCurrentContainer->GetHighlight(): + iCurrentContainer->GetSuiteModelL()->GetSuiteHighlight(); ForwardEventToHNL( aEvent, current ); } @@ -763,15 +757,6 @@ case EStopEditMode: SetEditModeL( EFalse ); break; - case EZoomLarge: - SetZoom( EAknUiZoomLarge ); - break; - case EZoomSmall: - SetZoom( EAknUiZoomSmall ); - break; - case EZoomNormal: - SetZoom( EAknUiZoomNormal ); - break; case EForegroundGain: { DEBUG(("_MM_:CMmAppUi::NotifyUiRefreshL Foreground")); @@ -1333,10 +1318,9 @@ MMPERF(("CMmAppUi::DynInitMenuPaneL - STOP")); } - if ( !popupMenuDisplayed && iCurrentContainer - && iCurrentContainer == TopFocusedControl() ) + if ( !popupMenuDisplayed && iCurrentContainer ) { - iCurrentContainer->HandleTopFocusL( EFalse ); + iCurrentContainer->EndLongTapL( EFalse ); HandleHighlightItemSingleClickedL( iCurrentContainer->Widget()->CurrentItemIndex() ); } @@ -1356,10 +1340,6 @@ { ForwardEventToHNL( KKeyIdSelect, aIndex ); } - else if ( iCurrentSuiteModel->WidgetType() == EGridWidget && FlipOpen() ) - { - ForwardEventToHNL( KKeyIdSelect, aIndex ); - } else if ( iCurrentSuiteModel->WidgetType() == EGridWidget && IsEditMode() && iCurrentContainer->GetPreviousHighlight() == aIndex && !iCurrentContainer->IsDraggable()) @@ -1761,8 +1741,6 @@ iCurrentContainer->Widget()->View()->SetDisableRedraw(ETrue); iDummyContainer->MakeVisible( ETrue ); RefreshCbaL(); - iCurrentContainer->SetZoom( iZoom ); - iCurrentContainer->SetFlipOpenL( FlipOpen() ); iCurrentContainer->SetEditModeL( IsEditMode() ); iCurrentContainer->SetSuiteModelL( iCurrentSuiteModel ); iCurrentContainer->HandleResourceChange( KAknsMessageSkinChange ); @@ -1796,8 +1774,6 @@ if ( iCurrentSuiteModel ) { iCurrentContainer->Widget()->View()->SetDisableRedraw(ETrue); - iCurrentContainer->SetZoom( iZoom ); - iCurrentContainer->SetFlipOpenL( FlipOpen() ); iCurrentContainer->SetEditModeL( IsEditMode() ); iCurrentContainer->SetSuiteModelL( iCurrentSuiteModel ); iCurrentContainer->SetEmptyTextL( iCurrentSuiteModel->EmptyText() ); @@ -2344,8 +2320,6 @@ iHNInterface = NULL; delete iMmExtManager; iMmExtManager = NULL; - delete iSliderEventSubscriber; - iSliderEventSubscriber = NULL; delete iTemplateLibrary; iTemplateLibrary = NULL; @@ -2367,8 +2341,6 @@ iMmExtManager = CMMExtensionManager::NewL( *this ); - iKeyboardFlipStatus = EPSHWRMFlipStatusUninitialized; - iScreenOn = ETrue; iSkinChangeNeeded = EFalse; iSkinChangeInProgress = EFalse; @@ -2433,7 +2405,6 @@ if( created ) { containerToLoad->Widget()->View()->SetDisableRedraw( ETrue ); - containerToLoad->SetFlipOpenL( FlipOpen() ); containerToLoad->SetEditModeL( IsEditMode() ); containerToLoad->SetSuiteModelL( aModel ); containerToLoad->SetEmptyTextL( aModel->EmptyText() ); @@ -2776,57 +2747,6 @@ // // --------------------------------------------------------------------------- // -void CMmAppUi::PropertyChangedL(TInt aValue) - { - iKeyboardFlipStatus = (EPSHWRMFlipStatus)aValue; - - if ( iCurrentContainer ) - { - if( iKeyboardFlipStatus == EPSHWRMFlipOpen ) - { - TBool wasHighlightVisible = iCurrentContainer->IsHighlightVisible(); - iCurrentContainer->SetFlipOpenL( ETrue ); - if ( IsForeground() && !IsEditMode() && !wasHighlightVisible ) - { - iCurrentContainer->SetDefaultHighlightL( ETrue ); - } - } - else if( iKeyboardFlipStatus == EPSHWRMFlipClosed ) - { - iCurrentContainer->SetFlipOpenL( EFalse ); - } - } - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TBool CMmAppUi::FlipOpen() - { - return iKeyboardFlipStatus == EPSHWRMFlipOpen; - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -void CMmAppUi::SetZoom( TAknUiZoom aZoom ) - { - if ( iZoom != aZoom) - { - if ( iCurrentContainer ) - { - iCurrentContainer->HandleZoomChanged( aZoom ); - } - } - iZoom = aZoom; - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// TBool CMmAppUi::ResetToRootL() { TBool resetConsumed( EFalse ); @@ -2842,7 +2762,6 @@ if( iCurrentContainer ) { iCurrentContainer->ResetWidgetPosition(); - iCurrentContainer->SetZoom( iZoom ); AddToStackL( iCurrentContainer ); } RefreshUiPanesL( ETrue ); @@ -3029,8 +2948,7 @@ //should be reset to normal then. if( AknLayoutUtils::PenEnabled() ) { - if( iCurrentContainer->WidgetType() == EGridWidget - && !FlipOpen() && !IsEditMode() ) + if( iCurrentContainer->WidgetType() == EGridWidget && !IsEditMode() ) { iCurrentContainer->Widget()->View()->ItemDrawer()-> SetFlags( CListItemDrawer::EDisableHighlight ); diff -r f72a12da539e -r 5315654608de menufw/menufwui/matrixmenu/src/mmpropertysubscriber.cpp --- a/menufw/menufwui/matrixmenu/src/mmpropertysubscriber.cpp Thu Dec 17 08:40:49 2009 +0200 +++ /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: Subscribes properties from P&S - * -*/ - - -#include "mmpropertysubscriber.h" - -// ----------------------------------------------------------------------------- -// ----------------------------------------------------------------------------- -// -CMmPropertySubscriber::CMmPropertySubscriber(MMmPropertyChangeObserver& aObserver) - : CActive( EPriorityStandard ), - iPropertyChangeObserver(aObserver) - { - } - -// ----------------------------------------------------------------------------- -// ----------------------------------------------------------------------------- -// -CMmPropertySubscriber* CMmPropertySubscriber::NewLC( - const TUid aUid, - const TUint32 aKey, - MMmPropertyChangeObserver& aObserver) - { - CMmPropertySubscriber* self = new ( ELeave ) CMmPropertySubscriber(aObserver); - CleanupStack::PushL(self); - self->ConstructL(aUid,aKey); - return self; - } -// ----------------------------------------------------------------------------- -// ----------------------------------------------------------------------------- -// -CMmPropertySubscriber* CMmPropertySubscriber::NewL( - const TUid aUid, - const TUint32 aKey, - MMmPropertyChangeObserver& aObserver) - { - CMmPropertySubscriber* self = CMmPropertySubscriber::NewLC(aUid,aKey,aObserver); - CleanupStack::Pop(); // self; - return self; - } -// ----------------------------------------------------------------------------- -// ----------------------------------------------------------------------------- -// -void CMmPropertySubscriber::ConstructL( - const TUid aUid, - const TUint32 aKey) - { - User::LeaveIfError( iProperty.Attach( aUid, aKey ) ); - CActiveScheduler::Add( this); // Add to scheduler - // initial subscription and process current property value - RunL(); - } -// ----------------------------------------------------------------------------- -// ----------------------------------------------------------------------------- -// -CMmPropertySubscriber::~CMmPropertySubscriber() - { - Cancel(); // Cancel any request, if outstanding - iProperty.Close(); - } -// ----------------------------------------------------------------------------- -// ----------------------------------------------------------------------------- -// -void CMmPropertySubscriber::DoCancel() - { - iProperty.Close(); - } -// ----------------------------------------------------------------------------- -// ----------------------------------------------------------------------------- -// -void CMmPropertySubscriber::RunL() - { - // resubscribe before processing new value to prevent missing updates - iProperty.Subscribe( iStatus ); - SetActive(); - - TInt intValue; - if( iProperty.Get( intValue ) != KErrNotFound ) - { - iPropertyChangeObserver.PropertyChangedL(intValue); - } - } - diff -r f72a12da539e -r 5315654608de menufw/menufwui/mmwidgets/bwins/mmwidgetsu.def --- a/menufw/menufwui/mmwidgets/bwins/mmwidgetsu.def Thu Dec 17 08:40:49 2009 +0200 +++ b/menufw/menufwui/mmwidgets/bwins/mmwidgetsu.def Thu Jan 07 12:39:41 2010 +0200 @@ -1,45 +1,42 @@ EXPORTS ?SetHighlightVisibilityL@CMmWidgetContainer@@UAEXH@Z @ 1 NONAME ; void CMmWidgetContainer::SetHighlightVisibilityL(int) ?SetDefaultHighlightL@CMmGridContainer@@UAEXH@Z @ 2 NONAME ; void CMmGridContainer::SetDefaultHighlightL(int) - ?HandleZoomChanged@CMmWidgetContainer@@QAEXW4TAknUiZoom@@@Z @ 3 NONAME ; void CMmWidgetContainer::HandleZoomChanged(enum TAknUiZoom) - ?PrepareForGarbage@CMmWidgetContainer@@QAEXXZ @ 4 NONAME ; void CMmWidgetContainer::PrepareForGarbage(void) - ?GetPreviousHighlight@CMmWidgetContainer@@UAEHXZ @ 5 NONAME ; int CMmWidgetContainer::GetPreviousHighlight(void) + ?PrepareForGarbage@CMmWidgetContainer@@QAEXXZ @ 3 NONAME ; void CMmWidgetContainer::PrepareForGarbage(void) + ?GetPreviousHighlight@CMmWidgetContainer@@UAEHXZ @ 4 NONAME ; int CMmWidgetContainer::GetPreviousHighlight(void) + ?SetHasFocusL@CMmWidgetContainer@@QAEXH@Z @ 5 NONAME ; void CMmWidgetContainer::SetHasFocusL(int) ?HandleItemAdditionL@CMmWidgetContainer@@UAEXXZ @ 6 NONAME ; void CMmWidgetContainer::HandleItemAdditionL(void) ?NewLC@CMmTemplateLibrary@@SAPAV1@XZ @ 7 NONAME ; class CMmTemplateLibrary * CMmTemplateLibrary::NewLC(void) ?IsDraggable@CMmWidgetContainer@@QAEHXZ @ 8 NONAME ; int CMmWidgetContainer::IsDraggable(void) ?HandleItemRemovalL@CMmWidgetContainer@@UAEXXZ @ 9 NONAME ; void CMmWidgetContainer::HandleItemRemovalL(void) ?NumberOfItemsChangedL@CMmWidgetContainer@@QAEXW4TItemsChangeType@@@Z @ 10 NONAME ; void CMmWidgetContainer::NumberOfItemsChangedL(enum TItemsChangeType) ?RestoreWidgetPosition@CMmWidgetContainer@@QAEXXZ @ 11 NONAME ; void CMmWidgetContainer::RestoreWidgetPosition(void) - ?NewL@CMmTemplateLibrary@@SAPAV1@XZ @ 12 NONAME ; class CMmTemplateLibrary * CMmTemplateLibrary::NewL(void) - ?NewL@CMmHighlightTimer@@SAPAV1@PAVCMmWidgetContainer@@@Z @ 13 NONAME ; class CMmHighlightTimer * CMmHighlightTimer::NewL(class CMmWidgetContainer *) - ?GetSuiteModelL@CMmWidgetContainer@@QAEPAVCHnSuiteModel@@XZ @ 14 NONAME ; class CHnSuiteModel * CMmWidgetContainer::GetSuiteModelL(void) - ?HandleForegroundGainedL@CMmWidgetContainer@@UAEXXZ @ 15 NONAME ; void CMmWidgetContainer::HandleForegroundGainedL(void) + ?GetSuiteModelL@CMmWidgetContainer@@QAEPAVCHnSuiteModel@@XZ @ 12 NONAME ; class CHnSuiteModel * CMmWidgetContainer::GetSuiteModelL(void) + ?HandleForegroundGainedL@CMmWidgetContainer@@UAEXXZ @ 13 NONAME ; void CMmWidgetContainer::HandleForegroundGainedL(void) + ?NewL@CMmHighlightTimer@@SAPAV1@PAVCMmWidgetContainer@@@Z @ 14 NONAME ; class CMmHighlightTimer * CMmHighlightTimer::NewL(class CMmWidgetContainer *) + ?NewL@CMmTemplateLibrary@@SAPAV1@XZ @ 15 NONAME ; class CMmTemplateLibrary * CMmTemplateLibrary::NewL(void) ?CancelDragL@CMmWidgetContainer@@QAEXH@Z @ 16 NONAME ; void CMmWidgetContainer::CancelDragL(int) ?SetManualHighlightL@CMmWidgetContainer@@UAEXHH@Z @ 17 NONAME ; void CMmWidgetContainer::SetManualHighlightL(int, int) - ?SetFlipOpenL@CMmWidgetContainer@@QAEXH@Z @ 18 NONAME ; void CMmWidgetContainer::SetFlipOpenL(int) + ?HandleOptionsMenuVisibilityChangeL@CMmWidgetContainer@@UAEXH@Z @ 18 NONAME ; void CMmWidgetContainer::HandleOptionsMenuVisibilityChangeL(int) ?ItemIsFullyVisible@CMmWidgetContainer@@QAEHH@Z @ 19 NONAME ; int CMmWidgetContainer::ItemIsFullyVisible(int) - ?SetHasFocusL@CMmWidgetContainer@@QAEXH@Z @ 20 NONAME ; void CMmWidgetContainer::SetHasFocusL(int) - ?HandleTopFocusL@CMmWidgetContainer@@UAEXH@Z @ 21 NONAME ; void CMmWidgetContainer::HandleTopFocusL(int) - ?HandleOptionsMenuVisibilityChangeL@CMmWidgetContainer@@UAEXH@Z @ 22 NONAME ; void CMmWidgetContainer::HandleOptionsMenuVisibilityChangeL(int) - ?NewGridContainerL@CMmWidgetContainer@@SAPAV1@ABVTRect@@PAVMObjectProvider@@PAVCMmTemplateLibrary@@@Z @ 23 NONAME ; class CMmWidgetContainer * CMmWidgetContainer::NewGridContainerL(class TRect const &, class MObjectProvider *, class CMmTemplateLibrary *) - ?NumberOfItems@CMmWidgetContainer@@QAEHXZ @ 24 NONAME ; int CMmWidgetContainer::NumberOfItems(void) - ?WidgetType@CMmWidgetContainer@@UAE?AW4THnSuiteWidgetType@@XZ @ 25 NONAME ; enum THnSuiteWidgetType CMmWidgetContainer::WidgetType(void) - ?GetHighlight@CMmWidgetContainer@@UAEHXZ @ 26 NONAME ; int CMmWidgetContainer::GetHighlight(void) - ?ItemIconZoomL@CMmWidgetContainer@@QAEXH@Z @ 27 NONAME ; void CMmWidgetContainer::ItemIconZoomL(int) - ?ResetWidgetPosition@CMmWidgetContainer@@QAEXXZ @ 28 NONAME ; void CMmWidgetContainer::ResetWidgetPosition(void) - ?HandleBackgroundGainedL@CMmWidgetContainer@@UAEXXZ @ 29 NONAME ; void CMmWidgetContainer::HandleBackgroundGainedL(void) - ?CacheWidgetPosition@CMmWidgetContainer@@QAEXXZ @ 30 NONAME ; void CMmWidgetContainer::CacheWidgetPosition(void) - ?NewLC@CMmHighlightTimer@@SAPAV1@PAVCMmWidgetContainer@@@Z @ 31 NONAME ; class CMmHighlightTimer * CMmHighlightTimer::NewLC(class CMmWidgetContainer *) - ?SetEmptyTextL@CMmListBoxContainer@@UAEXABVTDesC16@@@Z @ 32 NONAME ; void CMmListBoxContainer::SetEmptyTextL(class TDesC16 const &) - ?SetObserver@CMmWidgetContainer@@UAEXPAVMMmWidgetObserver@@@Z @ 33 NONAME ; void CMmWidgetContainer::SetObserver(class MMmWidgetObserver *) - ?IsHighlightVisible@CMmWidgetContainer@@UAEHXZ @ 34 NONAME ; int CMmWidgetContainer::IsHighlightVisible(void) - ?GetItemRectL@CMmWidgetContainer@@QAE?AVTRect@@H@Z @ 35 NONAME ; class TRect CMmWidgetContainer::GetItemRectL(int) - ?SetZoom@CMmWidgetContainer@@QAEXW4TAknUiZoom@@@Z @ 36 NONAME ; void CMmWidgetContainer::SetZoom(enum TAknUiZoom) - ?SetIsFaded@CMmWidgetContainer@@QAEXH@Z @ 37 NONAME ; void CMmWidgetContainer::SetIsFaded(int) - ?NewListBoxContainerL@CMmWidgetContainer@@SAPAV1@ABVTRect@@PAVMObjectProvider@@PAVCMmTemplateLibrary@@@Z @ 38 NONAME ; class CMmWidgetContainer * CMmWidgetContainer::NewListBoxContainerL(class TRect const &, class MObjectProvider *, class CMmTemplateLibrary *) - ?StopMovingL@CMmWidgetContainer@@QAEXXZ @ 39 NONAME ; void CMmWidgetContainer::StopMovingL(void) - ?SetDefaultHighlightL@CMmListBoxContainer@@UAEXH@Z @ 40 NONAME ; void CMmListBoxContainer::SetDefaultHighlightL(int) - ?SetEmptyTextL@CMmGridContainer@@UAEXABVTDesC16@@@Z @ 41 NONAME ; void CMmGridContainer::SetEmptyTextL(class TDesC16 const &) - ?SetLongTapObserver@CMmWidgetContainer@@UAEXPAVMMmLongTapObserver@@@Z @ 42 NONAME ; void CMmWidgetContainer::SetLongTapObserver(class MMmLongTapObserver *) - ?ScrollToItemL@CMmWidgetContainer@@QAEHH@Z @ 43 NONAME ; int CMmWidgetContainer::ScrollToItemL(int) + ?NewGridContainerL@CMmWidgetContainer@@SAPAV1@ABVTRect@@PAVMObjectProvider@@PAVCMmTemplateLibrary@@@Z @ 20 NONAME ; class CMmWidgetContainer * CMmWidgetContainer::NewGridContainerL(class TRect const &, class MObjectProvider *, class CMmTemplateLibrary *) + ?NumberOfItems@CMmWidgetContainer@@QAEHXZ @ 21 NONAME ; int CMmWidgetContainer::NumberOfItems(void) + ?WidgetType@CMmWidgetContainer@@UAE?AW4THnSuiteWidgetType@@XZ @ 22 NONAME ; enum THnSuiteWidgetType CMmWidgetContainer::WidgetType(void) + ?GetHighlight@CMmWidgetContainer@@UAEHXZ @ 23 NONAME ; int CMmWidgetContainer::GetHighlight(void) + ?ItemIconZoomL@CMmWidgetContainer@@QAEXH@Z @ 24 NONAME ; void CMmWidgetContainer::ItemIconZoomL(int) + ?ResetWidgetPosition@CMmWidgetContainer@@QAEXXZ @ 25 NONAME ; void CMmWidgetContainer::ResetWidgetPosition(void) + ?HandleBackgroundGainedL@CMmWidgetContainer@@UAEXXZ @ 26 NONAME ; void CMmWidgetContainer::HandleBackgroundGainedL(void) + ?CacheWidgetPosition@CMmWidgetContainer@@QAEXXZ @ 27 NONAME ; void CMmWidgetContainer::CacheWidgetPosition(void) + ?NewLC@CMmHighlightTimer@@SAPAV1@PAVCMmWidgetContainer@@@Z @ 28 NONAME ; class CMmHighlightTimer * CMmHighlightTimer::NewLC(class CMmWidgetContainer *) + ?SetEmptyTextL@CMmListBoxContainer@@UAEXABVTDesC16@@@Z @ 29 NONAME ; void CMmListBoxContainer::SetEmptyTextL(class TDesC16 const &) + ?SetObserver@CMmWidgetContainer@@UAEXPAVMMmWidgetObserver@@@Z @ 30 NONAME ; void CMmWidgetContainer::SetObserver(class MMmWidgetObserver *) + ?IsHighlightVisible@CMmWidgetContainer@@UAEHXZ @ 31 NONAME ; int CMmWidgetContainer::IsHighlightVisible(void) + ?GetItemRectL@CMmWidgetContainer@@QAE?AVTRect@@H@Z @ 32 NONAME ; class TRect CMmWidgetContainer::GetItemRectL(int) + ?EndLongTapL@CMmWidgetContainer@@UAEXH@Z @ 33 NONAME ; void CMmWidgetContainer::EndLongTapL(int) + ?SetIsFaded@CMmWidgetContainer@@QAEXH@Z @ 34 NONAME ; void CMmWidgetContainer::SetIsFaded(int) + ?NewListBoxContainerL@CMmWidgetContainer@@SAPAV1@ABVTRect@@PAVMObjectProvider@@PAVCMmTemplateLibrary@@@Z @ 35 NONAME ; class CMmWidgetContainer * CMmWidgetContainer::NewListBoxContainerL(class TRect const &, class MObjectProvider *, class CMmTemplateLibrary *) + ?StopMovingL@CMmWidgetContainer@@QAEXXZ @ 36 NONAME ; void CMmWidgetContainer::StopMovingL(void) + ?SetDefaultHighlightL@CMmListBoxContainer@@UAEXH@Z @ 37 NONAME ; void CMmListBoxContainer::SetDefaultHighlightL(int) + ?SetEmptyTextL@CMmGridContainer@@UAEXABVTDesC16@@@Z @ 38 NONAME ; void CMmGridContainer::SetEmptyTextL(class TDesC16 const &) + ?SetLongTapObserver@CMmWidgetContainer@@UAEXPAVMMmLongTapObserver@@@Z @ 39 NONAME ; void CMmWidgetContainer::SetLongTapObserver(class MMmLongTapObserver *) + ?ScrollToItemL@CMmWidgetContainer@@QAEHH@Z @ 40 NONAME ; int CMmWidgetContainer::ScrollToItemL(int) diff -r f72a12da539e -r 5315654608de menufw/menufwui/mmwidgets/data/grid/lct/akn_logical_template_3.xml --- a/menufw/menufwui/mmwidgets/data/grid/lct/akn_logical_template_3.xml Thu Dec 17 08:40:49 2009 +0200 +++ b/menufw/menufwui/mmwidgets/data/grid/lct/akn_logical_template_3.xml Thu Jan 07 12:39:41 2010 +0200 @@ -4,17 +4,17 @@ - - + + - + - + - + @@ -27,14 +27,14 @@ - - + + - + - + diff -r f72a12da539e -r 5315654608de menufw/menufwui/mmwidgets/eabi/mmwidgetsu.def --- a/menufw/menufwui/mmwidgets/eabi/mmwidgetsu.def Thu Dec 17 08:40:49 2009 +0200 +++ b/menufw/menufwui/mmwidgets/eabi/mmwidgetsu.def Thu Jan 07 12:39:41 2010 +0200 @@ -8,39 +8,36 @@ _ZN18CMmWidgetContainer10SetIsFadedEi @ 7 NONAME _ZN18CMmWidgetContainer10WidgetTypeEv @ 8 NONAME _ZN18CMmWidgetContainer11CancelDragLEi @ 9 NONAME - _ZN18CMmWidgetContainer11IsDraggableEv @ 10 NONAME - _ZN18CMmWidgetContainer11SetObserverEP17MMmWidgetObserver @ 11 NONAME - _ZN18CMmWidgetContainer11StopMovingLEv @ 12 NONAME - _ZN18CMmWidgetContainer12GetHighlightEv @ 13 NONAME - _ZN18CMmWidgetContainer12GetItemRectLEi @ 14 NONAME - _ZN18CMmWidgetContainer12SetFlipOpenLEi @ 15 NONAME + _ZN18CMmWidgetContainer11EndLongTapLEi @ 10 NONAME + _ZN18CMmWidgetContainer11IsDraggableEv @ 11 NONAME + _ZN18CMmWidgetContainer11SetObserverEP17MMmWidgetObserver @ 12 NONAME + _ZN18CMmWidgetContainer11StopMovingLEv @ 13 NONAME + _ZN18CMmWidgetContainer12GetHighlightEv @ 14 NONAME + _ZN18CMmWidgetContainer12GetItemRectLEi @ 15 NONAME _ZN18CMmWidgetContainer12SetHasFocusLEi @ 16 NONAME _ZN18CMmWidgetContainer13ItemIconZoomLEi @ 17 NONAME _ZN18CMmWidgetContainer13NumberOfItemsEv @ 18 NONAME _ZN18CMmWidgetContainer13ScrollToItemLEi @ 19 NONAME _ZN18CMmWidgetContainer14GetSuiteModelLEv @ 20 NONAME - _ZN18CMmWidgetContainer15HandleTopFocusLEi @ 21 NONAME - _ZN18CMmWidgetContainer17HandleZoomChangedE10TAknUiZoom @ 22 NONAME - _ZN18CMmWidgetContainer17NewGridContainerLERK5TRectP15MObjectProviderP18CMmTemplateLibrary @ 23 NONAME - _ZN18CMmWidgetContainer17PrepareForGarbageEv @ 24 NONAME - _ZN18CMmWidgetContainer18HandleItemRemovalLEv @ 25 NONAME - _ZN18CMmWidgetContainer18IsHighlightVisibleEv @ 26 NONAME - _ZN18CMmWidgetContainer18ItemIsFullyVisibleEi @ 27 NONAME - _ZN18CMmWidgetContainer18SetLongTapObserverEP18MMmLongTapObserver @ 28 NONAME - _ZN18CMmWidgetContainer19CacheWidgetPositionEv @ 29 NONAME - _ZN18CMmWidgetContainer19HandleItemAdditionLEv @ 30 NONAME - _ZN18CMmWidgetContainer19ResetWidgetPositionEv @ 31 NONAME - _ZN18CMmWidgetContainer20GetPreviousHighlightEv @ 32 NONAME - _ZN18CMmWidgetContainer20NewListBoxContainerLERK5TRectP15MObjectProviderP18CMmTemplateLibrary @ 33 NONAME - _ZN18CMmWidgetContainer21NumberOfItemsChangedLE16TItemsChangeType @ 34 NONAME - _ZN18CMmWidgetContainer21RestoreWidgetPositionEv @ 35 NONAME - _ZN18CMmWidgetContainer23HandleBackgroundGainedLEv @ 36 NONAME - _ZN18CMmWidgetContainer23HandleForegroundGainedLEv @ 37 NONAME - _ZN18CMmWidgetContainer23SetHighlightVisibilityLEi @ 38 NONAME - _ZN18CMmWidgetContainer34HandleOptionsMenuVisibilityChangeLEi @ 39 NONAME - _ZN18CMmWidgetContainer7SetZoomE10TAknUiZoom @ 40 NONAME - _ZN19CMmListBoxContainer13SetEmptyTextLERK7TDesC16 @ 41 NONAME - _ZN19CMmListBoxContainer20SetDefaultHighlightLEi @ 42 NONAME - _ZThn52_N18CMmWidgetContainer23HandleBackgroundGainedLEv @ 43 NONAME - _ZThn52_N18CMmWidgetContainer23HandleForegroundGainedLEv @ 44 NONAME + _ZN18CMmWidgetContainer17NewGridContainerLERK5TRectP15MObjectProviderP18CMmTemplateLibrary @ 21 NONAME + _ZN18CMmWidgetContainer17PrepareForGarbageEv @ 22 NONAME + _ZN18CMmWidgetContainer18HandleItemRemovalLEv @ 23 NONAME + _ZN18CMmWidgetContainer18IsHighlightVisibleEv @ 24 NONAME + _ZN18CMmWidgetContainer18ItemIsFullyVisibleEi @ 25 NONAME + _ZN18CMmWidgetContainer18SetLongTapObserverEP18MMmLongTapObserver @ 26 NONAME + _ZN18CMmWidgetContainer19CacheWidgetPositionEv @ 27 NONAME + _ZN18CMmWidgetContainer19HandleItemAdditionLEv @ 28 NONAME + _ZN18CMmWidgetContainer19ResetWidgetPositionEv @ 29 NONAME + _ZN18CMmWidgetContainer20GetPreviousHighlightEv @ 30 NONAME + _ZN18CMmWidgetContainer20NewListBoxContainerLERK5TRectP15MObjectProviderP18CMmTemplateLibrary @ 31 NONAME + _ZN18CMmWidgetContainer21NumberOfItemsChangedLE16TItemsChangeType @ 32 NONAME + _ZN18CMmWidgetContainer21RestoreWidgetPositionEv @ 33 NONAME + _ZN18CMmWidgetContainer23HandleBackgroundGainedLEv @ 34 NONAME + _ZN18CMmWidgetContainer23HandleForegroundGainedLEv @ 35 NONAME + _ZN18CMmWidgetContainer23SetHighlightVisibilityLEi @ 36 NONAME + _ZN18CMmWidgetContainer34HandleOptionsMenuVisibilityChangeLEi @ 37 NONAME + _ZN19CMmListBoxContainer13SetEmptyTextLERK7TDesC16 @ 38 NONAME + _ZN19CMmListBoxContainer20SetDefaultHighlightLEi @ 39 NONAME + _ZThn52_N18CMmWidgetContainer23HandleBackgroundGainedLEv @ 40 NONAME + _ZThn52_N18CMmWidgetContainer23HandleForegroundGainedLEv @ 41 NONAME diff -r f72a12da539e -r 5315654608de menufw/menufwui/mmwidgets/group/bld.inf --- a/menufw/menufwui/mmwidgets/group/bld.inf Thu Dec 17 08:40:49 2009 +0200 +++ b/menufw/menufwui/mmwidgets/group/bld.inf Thu Jan 07 12:39:41 2010 +0200 @@ -12,7 +12,7 @@ * Contributors: * * Description: Build information file for project mmwidgets -* Version : %version: 8.1.3.1.7 % << Don't touch! Updated by Synergy at check-out. +* Version : %version: 8.1.3.1.8 % << Don't touch! Updated by Synergy at check-out. * */ @@ -26,131 +26,69 @@ ../rom/mmwidgets.iby CORE_APP_LAYER_IBY_EXPORT_PATH(mmwidgets.iby) // list exports -../data/list/custom/akn_single_large_graphic_pane.xml /epoc32/release/winscw/udeb/Z/resource/list/custom/akn_single_large_graphic_pane.xml -../data/list/custom/akn_single_large_graphic_pane.xml /epoc32/release/winscw/urel/Z/resource/list/custom/akn_single_large_graphic_pane.xml -../data/list/custom/akn_single_large_graphic_pane.xml /epoc32/data/z/resource/list/custom/akn_single_large_graphic_pane.xml +../data/list/custom/akn_single_large_graphic_pane.xml Z:/resource/list/custom/akn_single_large_graphic_pane.xml -../data/list/custom/akn_logical_template_1.xml /epoc32/release/winscw/udeb/Z/resource/list/custom/akn_logical_template_1.xml -../data/list/custom/akn_logical_template_1.xml /epoc32/release/winscw/urel/Z/resource/list/custom/akn_logical_template_1.xml -../data/list/custom/akn_logical_template_1.xml /epoc32/data/z/resource/list/custom/akn_logical_template_1.xml +../data/list/custom/akn_logical_template_1.xml Z:/resource/list/custom/akn_logical_template_1.xml -../data/list/custom/akn_logical_template_2.xml /epoc32/release/winscw/udeb/Z/resource/list/custom/akn_logical_template_2.xml -../data/list/custom/akn_logical_template_2.xml /epoc32/release/winscw/urel/Z/resource/list/custom/akn_logical_template_2.xml -../data/list/custom/akn_logical_template_2.xml /epoc32/data/z/resource/list/custom/akn_logical_template_2.xml +../data/list/custom/akn_logical_template_2.xml Z:/resource/list/custom/akn_logical_template_2.xml -../data/list/custom/akn_logical_template_3.xml /epoc32/release/winscw/udeb/Z/resource/list/custom/akn_logical_template_3.xml -../data/list/custom/akn_logical_template_3.xml /epoc32/release/winscw/urel/Z/resource/list/custom/akn_logical_template_3.xml -../data/list/custom/akn_logical_template_3.xml /epoc32/data/z/resource/list/custom/akn_logical_template_3.xml +../data/list/custom/akn_logical_template_3.xml Z:/resource/list/custom/akn_logical_template_3.xml -../data/list/custom/akn_logical_template_4.xml /epoc32/release/winscw/udeb/Z/resource/list/custom/akn_logical_template_4.xml -../data/list/custom/akn_logical_template_4.xml /epoc32/release/winscw/urel/Z/resource/list/custom/akn_logical_template_4.xml -../data/list/custom/akn_logical_template_4.xml /epoc32/data/z/resource/list/custom/akn_logical_template_4.xml +../data/list/custom/akn_logical_template_4.xml Z:/resource/list/custom/akn_logical_template_4.xml -../data/list/custom/akn_logical_template_5.xml /epoc32/release/winscw/udeb/Z/resource/list/custom/akn_logical_template_5.xml -../data/list/custom/akn_logical_template_5.xml /epoc32/release/winscw/urel/Z/resource/list/custom/akn_logical_template_5.xml -../data/list/custom/akn_logical_template_5.xml /epoc32/data/z/resource/list/custom/akn_logical_template_5.xml +../data/list/custom/akn_logical_template_5.xml Z:/resource/list/custom/akn_logical_template_5.xml -../data/list/custom/akn_logical_template_6.xml /epoc32/release/winscw/udeb/Z/resource/list/custom/akn_logical_template_6.xml -../data/list/custom/akn_logical_template_6.xml /epoc32/release/winscw/urel/Z/resource/list/custom/akn_logical_template_6.xml -../data/list/custom/akn_logical_template_6.xml /epoc32/data/z/resource/list/custom/akn_logical_template_6.xml +../data/list/custom/akn_logical_template_6.xml Z:/resource/list/custom/akn_logical_template_6.xml -../data/list/custom/akn_logical_template_7.xml /epoc32/release/winscw/udeb/Z/resource/list/custom/akn_logical_template_7.xml -../data/list/custom/akn_logical_template_7.xml /epoc32/release/winscw/urel/Z/resource/list/custom/akn_logical_template_7.xml -../data/list/custom/akn_logical_template_7.xml /epoc32/data/z/resource/list/custom/akn_logical_template_7.xml +../data/list/custom/akn_logical_template_7.xml Z:/resource/list/custom/akn_logical_template_7.xml -../data/list/custom/akn_logical_template_8.xml /epoc32/release/winscw/udeb/Z/resource/list/custom/akn_logical_template_8.xml -../data/list/custom/akn_logical_template_8.xml /epoc32/release/winscw/urel/Z/resource/list/custom/akn_logical_template_8.xml -../data/list/custom/akn_logical_template_8.xml /epoc32/data/z/resource/list/custom/akn_logical_template_8.xml +../data/list/custom/akn_logical_template_8.xml Z:/resource/list/custom/akn_logical_template_8.xml -../data/list/custom/akn_logical_template_10.xml /epoc32/release/winscw/udeb/Z/resource/list/custom/akn_logical_template_10.xml -../data/list/custom/akn_logical_template_10.xml /epoc32/release/winscw/urel/Z/resource/list/custom/akn_logical_template_10.xml -../data/list/custom/akn_logical_template_10.xml /epoc32/data/z/resource/list/custom/akn_logical_template_10.xml +../data/list/custom/akn_logical_template_10.xml Z:/resource/list/custom/akn_logical_template_10.xml -../data/list/custom/akn_logical_template_11.xml /epoc32/release/winscw/udeb/Z/resource/list/custom/akn_logical_template_11.xml -../data/list/custom/akn_logical_template_11.xml /epoc32/release/winscw/urel/Z/resource/list/custom/akn_logical_template_11.xml -../data/list/custom/akn_logical_template_11.xml /epoc32/data/z/resource/list/custom/akn_logical_template_11.xml +../data/list/custom/akn_logical_template_11.xml Z:/resource/list/custom/akn_logical_template_11.xml -../data/list/custom/akn_logical_template_12.xml /epoc32/release/winscw/udeb/Z/resource/list/custom/akn_logical_template_12.xml -../data/list/custom/akn_logical_template_12.xml /epoc32/release/winscw/urel/Z/resource/list/custom/akn_logical_template_12.xml -../data/list/custom/akn_logical_template_12.xml /epoc32/data/z/resource/list/custom/akn_logical_template_12.xml +../data/list/custom/akn_logical_template_12.xml Z:/resource/list/custom/akn_logical_template_12.xml -../data/list/custom/akn_logical_template_13.xml /epoc32/release/winscw/udeb/Z/resource/list/custom/akn_logical_template_13.xml -../data/list/custom/akn_logical_template_13.xml /epoc32/release/winscw/urel/Z/resource/list/custom/akn_logical_template_13.xml -../data/list/custom/akn_logical_template_13.xml /epoc32/data/z/resource/list/custom/akn_logical_template_13.xml +../data/list/custom/akn_logical_template_13.xml Z:/resource/list/custom/akn_logical_template_13.xml // grid exports -../data/grid/custom/akn_single_large_graphic_pane.xml /epoc32/release/winscw/udeb/Z/resource/grid/custom/akn_single_large_graphic_pane.xml -../data/grid/custom/akn_single_large_graphic_pane.xml /epoc32/release/winscw/urel/Z/resource/grid/custom/akn_single_large_graphic_pane.xml -../data/grid/custom/akn_single_large_graphic_pane.xml /epoc32/data/z/resource/grid/custom/akn_single_large_graphic_pane.xml +../data/grid/custom/akn_single_large_graphic_pane.xml Z:/resource/grid/custom/akn_single_large_graphic_pane.xml -../data/grid/custom/akn_logical_template_1.xml /epoc32/release/winscw/udeb/Z/resource/grid/custom/akn_logical_template_1.xml -../data/grid/custom/akn_logical_template_1.xml /epoc32/release/winscw/urel/Z/resource/grid/custom/akn_logical_template_1.xml -../data/grid/custom/akn_logical_template_1.xml /epoc32/data/z/resource/grid/custom/akn_logical_template_1.xml +../data/grid/custom/akn_logical_template_1.xml Z:/resource/grid/custom/akn_logical_template_1.xml -../data/grid/custom/akn_logical_template_2.xml /epoc32/release/winscw/udeb/Z/resource/grid/custom/akn_logical_template_2.xml -../data/grid/custom/akn_logical_template_2.xml /epoc32/release/winscw/urel/Z/resource/grid/custom/akn_logical_template_2.xml -../data/grid/custom/akn_logical_template_2.xml /epoc32/data/z/resource/grid/custom/akn_logical_template_2.xml +../data/grid/custom/akn_logical_template_2.xml Z:/resource/grid/custom/akn_logical_template_2.xml -../data/grid/custom/akn_logical_template_3.xml /epoc32/release/winscw/udeb/Z/resource/grid/custom/akn_logical_template_3.xml -../data/grid/custom/akn_logical_template_3.xml /epoc32/release/winscw/urel/Z/resource/grid/custom/akn_logical_template_3.xml -../data/grid/custom/akn_logical_template_3.xml /epoc32/data/z/resource/grid/custom/akn_logical_template_3.xml +../data/grid/custom/akn_logical_template_3.xml Z:/resource/grid/custom/akn_logical_template_3.xml -../data/grid/custom/akn_logical_template_4.xml /epoc32/release/winscw/udeb/Z/resource/grid/custom/akn_logical_template_4.xml -../data/grid/custom/akn_logical_template_4.xml /epoc32/release/winscw/urel/Z/resource/grid/custom/akn_logical_template_4.xml -../data/grid/custom/akn_logical_template_4.xml /epoc32/data/z/resource/grid/custom/akn_logical_template_4.xml +../data/grid/custom/akn_logical_template_4.xml Z:/resource/grid/custom/akn_logical_template_4.xml //lct exports -../data/list/lct/akn_list_single_hc_apps_pane.xml /epoc32/release/winscw/udeb/Z/resource/list/lct/akn_list_single_hc_apps_pane.xml -../data/list/lct/akn_list_single_hc_apps_pane.xml /epoc32/release/winscw/urel/Z/resource/list/lct/akn_list_single_hc_apps_pane.xml -../data/list/lct/akn_list_single_hc_apps_pane.xml /epoc32/data/z/resource/list/lct/akn_list_single_hc_apps_pane.xml +../data/list/lct/akn_list_single_hc_apps_pane.xml Z:/resource/list/lct/akn_list_single_hc_apps_pane.xml -../data/list/lct/akn_single_large_graphic_pane.xml /epoc32/release/winscw/udeb/Z/resource/list/lct/akn_single_large_graphic_pane.xml -../data/list/lct/akn_single_large_graphic_pane.xml /epoc32/release/winscw/urel/Z/resource/list/lct/akn_single_large_graphic_pane.xml -../data/list/lct/akn_single_large_graphic_pane.xml /epoc32/data/z/resource/list/lct/akn_single_large_graphic_pane.xml +../data/list/lct/akn_single_large_graphic_pane.xml Z:/resource/list/lct/akn_single_large_graphic_pane.xml -../data/list/lct/akn_logical_template_1.xml /epoc32/release/winscw/udeb/Z/resource/list/lct/akn_logical_template_1.xml -../data/list/lct/akn_logical_template_1.xml /epoc32/release/winscw/urel/Z/resource/list/lct/akn_logical_template_1.xml -../data/list/lct/akn_logical_template_1.xml /epoc32/data/z/resource/list/lct/akn_logical_template_1.xml +../data/list/lct/akn_logical_template_1.xml Z:/resource/list/lct/akn_logical_template_1.xml -../data/list/lct/akn_logical_template_2.xml /epoc32/release/winscw/udeb/Z/resource/list/lct/akn_logical_template_2.xml -../data/list/lct/akn_logical_template_2.xml /epoc32/release/winscw/urel/Z/resource/list/lct/akn_logical_template_2.xml -../data/list/lct/akn_logical_template_2.xml /epoc32/data/z/resource/list/lct/akn_logical_template_2.xml +../data/list/lct/akn_logical_template_2.xml Z:/resource/list/lct/akn_logical_template_2.xml -../data/list/lct/akn_logical_template_3.xml /epoc32/release/winscw/udeb/Z/resource/list/lct/akn_logical_template_3.xml -../data/list/lct/akn_logical_template_3.xml /epoc32/release/winscw/urel/Z/resource/list/lct/akn_logical_template_3.xml -../data/list/lct/akn_logical_template_3.xml /epoc32/data/z/resource/list/lct/akn_logical_template_3.xml +../data/list/lct/akn_logical_template_3.xml Z:/resource/list/lct/akn_logical_template_3.xml -../data/list/lct/akn_logical_template_4.xml /epoc32/release/winscw/udeb/Z/resource/list/lct/akn_logical_template_4.xml -../data/list/lct/akn_logical_template_4.xml /epoc32/release/winscw/urel/Z/resource/list/lct/akn_logical_template_4.xml -../data/list/lct/akn_logical_template_4.xml /epoc32/data/z/resource/list/lct/akn_logical_template_4.xml +../data/list/lct/akn_logical_template_4.xml Z:/resource/list/lct/akn_logical_template_4.xml -../data/list/lct/akn_logical_template_5.xml /epoc32/release/winscw/udeb/Z/resource/list/lct/akn_logical_template_5.xml -../data/list/lct/akn_logical_template_5.xml /epoc32/release/winscw/urel/Z/resource/list/lct/akn_logical_template_5.xml -../data/list/lct/akn_logical_template_5.xml /epoc32/data/z/resource/list/lct/akn_logical_template_5.xml +../data/list/lct/akn_logical_template_5.xml Z:/resource/list/lct/akn_logical_template_5.xml -../data/list/lct/akn_logical_template_6.xml /epoc32/release/winscw/udeb/Z/resource/list/lct/akn_logical_template_6.xml -../data/list/lct/akn_logical_template_6.xml /epoc32/release/winscw/urel/Z/resource/list/lct/akn_logical_template_6.xml -../data/list/lct/akn_logical_template_6.xml /epoc32/data/z/resource/list/lct/akn_logical_template_6.xml +../data/list/lct/akn_logical_template_6.xml Z:/resource/list/lct/akn_logical_template_6.xml -../data/list/lct/akn_logical_template_6a.xml /epoc32/release/winscw/udeb/Z/resource/list/lct/akn_logical_template_6a.xml -../data/list/lct/akn_logical_template_6a.xml /epoc32/release/winscw/urel/Z/resource/list/lct/akn_logical_template_6a.xml -../data/list/lct/akn_logical_template_6a.xml /epoc32/data/z/resource/list/lct/akn_logical_template_6a.xml +../data/list/lct/akn_logical_template_6a.xml Z:/resource/list/lct/akn_logical_template_6a.xml -../data/list/lct/akn_logical_template_7.xml /epoc32/release/winscw/udeb/Z/resource/list/lct/akn_logical_template_7.xml -../data/list/lct/akn_logical_template_7.xml /epoc32/release/winscw/urel/Z/resource/list/lct/akn_logical_template_7.xml -../data/list/lct/akn_logical_template_7.xml /epoc32/data/z/resource/list/lct/akn_logical_template_7.xml +../data/list/lct/akn_logical_template_7.xml Z:/resource/list/lct/akn_logical_template_7.xml -../data/list/lct/akn_logical_template_8.xml /epoc32/release/winscw/udeb/Z/resource/list/lct/akn_logical_template_8.xml -../data/list/lct/akn_logical_template_8.xml /epoc32/release/winscw/urel/Z/resource/list/lct/akn_logical_template_8.xml -../data/list/lct/akn_logical_template_8.xml /epoc32/data/z/resource/list/lct/akn_logical_template_8.xml +../data/list/lct/akn_logical_template_8.xml Z:/resource/list/lct/akn_logical_template_8.xml -../data/list/lct/akn_logical_template_12.xml /epoc32/release/winscw/udeb/Z/resource/list/lct/akn_logical_template_12.xml -../data/list/lct/akn_logical_template_12.xml /epoc32/release/winscw/urel/Z/resource/list/lct/akn_logical_template_12.xml -../data/list/lct/akn_logical_template_12.xml /epoc32/data/z/resource/list/lct/akn_logical_template_12.xml +../data/list/lct/akn_logical_template_12.xml Z:/resource/list/lct/akn_logical_template_12.xml -../data/grid/lct/akn_logical_template_3.xml /epoc32/release/winscw/udeb/Z/resource/grid/lct/akn_logical_template_3.xml -../data/grid/lct/akn_logical_template_3.xml /epoc32/release/winscw/urel/Z/resource/grid/lct/akn_logical_template_3.xml -../data/grid/lct/akn_logical_template_3.xml /epoc32/data/z/resource/grid/lct/akn_logical_template_3.xml +../data/grid/lct/akn_logical_template_3.xml Z:/resource/grid/lct/akn_logical_template_3.xml ../inc/mmdraganddropobserver.h |../../../inc/mmdraganddropobserver.h ../inc/mmlongtapobserver.h |../../../inc/mmlongtapobserver.h diff -r f72a12da539e -r 5315654608de menufw/menufwui/mmwidgets/inc/mmgrid.h --- a/menufw/menufwui/mmwidgets/inc/mmgrid.h Thu Dec 17 08:40:49 2009 +0200 +++ b/menufw/menufwui/mmwidgets/inc/mmgrid.h Thu Jan 07 12:39:41 2010 +0200 @@ -12,7 +12,7 @@ * Contributors: * * Description: CMmGrid declaration -* Version : %version: MM_32.1.19 % << Don't touch! Updated by Synergy at check-out. +* Version : %version: MM_32.1.20 % << Don't touch! Updated by Synergy at check-out. * */ @@ -359,6 +359,14 @@ TInt ScrollIfNeeded( const TPointerEvent& aPointerEvent ); /** + * Minimal scrolling (setting top item index and vertical offset) with + * boundary checking and WITHOUT redrawing. + * + * @param aDistanceInPixels Distance to scroll. + */ + void ScrollWithoutRedraw( TInt aDistanceInPixels ); + + /** * Updates the dispapearing highlight. * * @since S60 v3.0 diff -r f72a12da539e -r 5315654608de menufw/menufwui/mmwidgets/inc/mmgridcontainer.h --- a/menufw/menufwui/mmwidgets/inc/mmgridcontainer.h Thu Dec 17 08:40:49 2009 +0200 +++ b/menufw/menufwui/mmwidgets/inc/mmgridcontainer.h Thu Jan 07 12:39:41 2010 +0200 @@ -12,7 +12,7 @@ * Contributors: * * Description: CMmGridContainer declaration -* Version : %version: MM_29.1.13 % << Don't touch! Updated by Synergy at check-out. +* Version : %version: MM_29.1.14 % << Don't touch! Updated by Synergy at check-out. * */ @@ -37,7 +37,7 @@ class CMmListBoxItemDrawer; /** - * Container for Multimedia Menu grid widget + * Container for Multimedia Menu grid widget * * @code * @endcode @@ -50,29 +50,29 @@ public: /** * Two-phased constructor. - * - * @since S60 v5.0 - * @param aRect Rectangle of widget control. - * @param aObjectProvider Object provider. - * @param aTemplateLibrary template library for Drawer - */ - static CMmGridContainer* NewL( const TRect& aRect, - MObjectProvider* aObjectProvider, CMmTemplateLibrary* aTemplateLibrary ); - - /** - * Two-phased constructor. - * + * * @since S60 v5.0 * @param aRect Rectangle of widget control. * @param aObjectProvider Object provider. * @param aTemplateLibrary template library for Drawer */ - static CMmGridContainer* NewLC( const TRect& aRect, + static CMmGridContainer* NewL( const TRect& aRect, MObjectProvider* aObjectProvider, CMmTemplateLibrary* aTemplateLibrary ); - + + /** + * Two-phased constructor. + * + * @since S60 v5.0 + * @param aRect Rectangle of widget control. + * @param aObjectProvider Object provider. + * @param aTemplateLibrary template library for Drawer + */ + static CMmGridContainer* NewLC( const TRect& aRect, + MObjectProvider* aObjectProvider, CMmTemplateLibrary* aTemplateLibrary ); + /** * Destructor. - * + * * @since S60 v5.0 */ virtual ~CMmGridContainer(); @@ -84,23 +84,23 @@ * @return Pointer to grid. */ CAknGrid* Grid(); - + public: // from base class CMmWidgetContainer - + /** * Handle item addition. - * + * * @since S60 v3.0 */ void HandleItemAdditionL(); - + /** * Handle item removal. - * + * * @since S60 v3.0 */ - void HandleItemRemovalL(); - + void HandleItemRemovalL(); + /** * Sets the default highlight in grid. * @@ -108,7 +108,7 @@ * @param aRedraw Is highlight to redraw. */ IMPORT_C void SetDefaultHighlightL( TBool aRedraw = ETrue ); - + /** * Checks if widget is in edit mode state. * @@ -116,14 +116,14 @@ * @param aIsEditMode Is grid in edit mode state. */ void SetEditModeL( TBool aIsEditMode ); - + /** * Derived from CCoeControl, called when container rectangle size is changed. * * @since S60 v5.0 */ - void SizeChanged(); - + void SizeChanged(); + /** * Gets grid model. * @@ -131,7 +131,7 @@ * @return Grid model. */ CMmListBoxModel* GetMmModel(); - + /** * Sets empty text shown when grid is empty. * @@ -139,7 +139,7 @@ * @param aText Text to be shown when grid is empty. */ IMPORT_C void SetEmptyTextL( const TDesC& aText ); - + /** * Sets item drawer and view background context. * @@ -147,91 +147,84 @@ * @param aBgContext Background context. */ void SetItemDrawerAndViewBgContext( - CAknsBasicBackgroundControlContext * aBgContext ); - + CAknsBasicBackgroundControlContext * aBgContext ); + /** * Sets up the grid layout. * * @since S60 v5.0 */ void SetupWidgetLayoutL(); - + /** * Sets suite model. - * + * * @since S60 v5.0 * @param aModel Suite model. */ void SetSuiteModelL( CHnSuiteModel* aModel ); - + /** * Set highlight visibility. - * + * * @since S60 v5.0 - * @param aVisible Visibility status. + * @param aVisible Visibility status. */ void SetHighlightVisibilityL( TBool aVisible ); - + /** * Retrieve type of widget. - * + * * @since S60 v3.0 * @return Type of widget. - */ + */ THnSuiteWidgetType WidgetType(); - - /** - * Called when filp state changed. - * - * @since S60 v3.0 - */ - void FlipStateChangedL(); - + /** * Draws the widget view. * * @since S60 v5.0 */ virtual void DrawView(); - + /** * Set the vertical item offset; * @param aOffset The offset to set to the widget. - * + * * @since S60 v5.0 */ virtual void SetVerticalItemOffset( TInt aOffset ); /** * Gets the current widget vertical item offset. - * + * * @since S60 v5.0 * @return The current widget vertical item offset. */ virtual TInt VerticalItemOffset() const; - + /** * Tells if item is visible (fully or partially). * Overridden from the base class CMmWidgetContainer in order to * provide a reliable implementation for grid. - * + * * @param aItemIndex Item index. * @return ETrue if visible, EFalse otherwise. */ TBool ItemIsVisible( TInt aItemIndex ) const; - + private: /** * Default constructor. - * - * @since S60 v5.0 + * + * @since S60 v5.0 */ CMmGridContainer(); - + /** * 2nd phase constructor. - * - * @since S60 v5.0 + * + * @since S60 v5.0 * @param aRect Rectangle of widget control. * @param aObjectProvider Object provider. * @param aTemplateLibrary template library for Drawer @@ -247,56 +240,40 @@ * @return Grid model. */ CMmGrid* CreateGridL( CMmTemplateLibrary* aTemplateLibrary ); - + /** * Gets column count in current view. * @returns Column count in current view. */ TInt ColumnsInCurrentView(); - + /** * Gets row count in current view. * @returns Row count in current view. */ TInt RowsInCurrentView(); - + /** * Updates current view's scrollbar thumbs. */ void UpdateViewScrollBarThumbs(); - - /** - * Gets base default highlight in landscape mode. - * - * @param aLayout current layout of the grid - * @returns default highlight - */ - TInt LandscapeOrientationDefaultHighlight( TSize aLayout ); /** - * Gets base default highlight in portrait mode. - * - * @param aLayout current layout of the grid - * @returns default highlight - */ - TInt PortraitOrientationDefaultHighlight( TSize aLayout ); - - /** * Calculates offset for default highlight position based on * index of first visible item. - * + * * @returns offset for default highlight */ TInt DefaultHighlightOffset(); - + private: // Data - + /** * Pointer to listbox control. * Own. */ CMmGrid* iGrid; - + }; #endif // C_MMGRIDCONTAINER_H diff -r f72a12da539e -r 5315654608de menufw/menufwui/mmwidgets/inc/mmtemplatelibrary.h --- a/menufw/menufwui/mmwidgets/inc/mmtemplatelibrary.h Thu Dec 17 08:40:49 2009 +0200 +++ b/menufw/menufwui/mmwidgets/inc/mmtemplatelibrary.h Thu Jan 07 12:39:41 2010 +0200 @@ -11,8 +11,8 @@ * * Contributors: * -* Description: -* Version : %version: MM_24.1.8 % << Don't touch! Updated by Synergy at check-out. +* Description: +* Version : %version: MM_24.1.9 % << Don't touch! Updated by Synergy at check-out. * */ @@ -43,57 +43,57 @@ /** * Struct used to store template child data - * + * * @since S60 v5.0 * @ingroup group_mmwidgets */ class TTemplateChild { - + public: - + /** * Rectangle of subcell according to position in item. */ TRect iRectAccordingToParent; - + /** * Data type represented by the subcell. */ TBufC8<64> iData; - + /** * The LCT template used to calculate the subcell position. */ TBufC8<64> iLct; - + /** * The variety for the lct template. */ TInt iVariety; - + /** * Depicts if the subcell is an image or text. */ TBool iIsImage; - + /** * The font id used for displaying text. */ TAknLogicalFontId iFontId; - + /** * The type of align for the text. */ CGraphicsContext::TTextAlign iTextAlign; - + /** * The additional Id for a subcell element used to differentiate it - * from others. e.g the backdrop image has a different visual id + * from others. e.g the backdrop image has a different visual id * since it is displayed only in edit mode. */ TImageVisualId iImageVisualId; - + /** * The type of horizontal align for the icon. */ @@ -105,7 +105,7 @@ /** * Used by Multimedia Menu to load template data. - * + * * @code * @endcode * @lib mmwidgets @@ -116,7 +116,7 @@ { public: // Constructors and destructor - + /** * Destructor. */ @@ -126,7 +126,7 @@ * Two-phased constructor. */ IMPORT_C static CMmTemplateLibrary* NewL(); - + /** * Two-phased constructor. */ @@ -148,210 +148,203 @@ /** * Gets the size of template item according to highlight and orientation. - * + * * @since S60 v3.0 * @param aWidgetType The widget type. - * @param aTemplate The current template for the item. + * @param aTemplate The current template for the item. * @param aLandscapeOrientation Is view in landscape orientation. * @param aHighlighted Is item highlighted. * @param aParentRect The bounding rect in which the item is drawn. - * + * * @return size of item */ - TSize GetSize( TMmWidgetType aWidgetType, const TDesC8& aTemplate, - TBool aLandscapeOrientation = 0, TBool aHighlighted = 0, + TSize GetSize( TMmWidgetType aWidgetType, const TDesC8& aTemplate, + TBool aLandscapeOrientation = 0, TBool aHighlighted = 0, TRect aParentRect = TRect() ); - + /** * Gets the size of template. - * + * * @since S60 v3.0 * @param aItemSize Item size to be set. * @param aWidgetType The widget type. - * @param aTemplate The current template for the item. - * @param aLandscapeOrientation Is view in landscape orientation. + * @param aTemplate The current template for the item. + * @param aLandscapeOrientation Is view in landscape orientation. * @param aHighlighted Is item highlighted. * @param aParentRect The bounding rect in which the item is drawn. - * + * * @return error code */ - TInt GetSize( TSize& aItemSize, TMmWidgetType aWidgetType, - const TDesC8& aTemplate, TBool aLandscapeOrientation, + TInt GetSize( TSize& aItemSize, TMmWidgetType aWidgetType, + const TDesC8& aTemplate, TBool aLandscapeOrientation, TBool aHighlighted , TRect aParentRect = TRect() ); - + /** - * Get array of templates for subcells ( item children ). - * + * Get array of templates for subcells ( item children ). + * * @since S60 v3.0 * @param aWidgetType The widget type. * @param aArray The array of subcell children to be set. * @param aTemplate The current template for the item. * @param aLandscapeOrientation Is view in landscape orientation. * @param aHighlighted Is item highlighted. - * @param aIsEditMode Is in edit mode. - * + * @param aIsEditMode Is in edit mode. + * */ void GetChildrenL( TMmWidgetType aWidgetType, - RArray< TTemplateChild >& aArray, const TDesC8& aTemplate, + RArray< TTemplateChild >& aArray, const TDesC8& aTemplate, TBool aLandscapeOrientation = 0, TBool aHighlighted = 0, TBool aIsEditMode = 0 ); - + /** * Get the layout size ( Grid ) e.g. 3x4 - * + * * @since S60 v3.0 * @param aWidgetType The widget type. * @param aTemplate The current template for the item. * @param aLandscapeOrientation Is view in landscape orientation. - * + * * @return the size of the layout. */ - TSize GetLayoutSizeL( TMmWidgetType aWidgetType, const TDesC8& aTemplate, + TSize GetLayoutSizeL( TMmWidgetType aWidgetType, const TDesC8& aTemplate, TBool aLandscapeOrientation ); - + /** * Get rect of move indicator according to item (as reference position). - * The rect is relevant to the item in point (0,0). + * The rect is relevant to the item in point (0,0). * e.g for item size 20x360 the rect can be (-5,-5):(365,25). - * + * * @since S60 v3.0 * @param aWidgetType The widget type. * @param aTemplate The current template for the item. - * @param aLandscapeOrientation Is view in landscape orientation. + * @param aLandscapeOrientation Is view in landscape orientation. * @param aHighlighted Is item highlighted. - * + * * @return rect of move indicator area. */ - TRect GetMoveIndicatorRect( TMmWidgetType aWidgetType, const TDesC8& aTemplate, + TRect GetMoveIndicatorRect( TMmWidgetType aWidgetType, const TDesC8& aTemplate, TBool aLandscapeOrientation, TBool aHighlighted ); - + /** - * Get children templates for move indicator. - * + * Get children templates for move indicator. + * * @since S60 v3.0 * @param aWidgetType The widget type. * @param aArray Array of children templates. * @param aTemplate The current template for the item. * @param aLandscapeOrientation Is view in landscape orientation. * @param aHighlighted Is item highlighted. - * + * */ void GetMoveIndicatorChildrenL( TMmWidgetType aWidgetType, RArray< TTemplateChild >& aArray, const TDesC8& aTemplate, TBool aLandscapeOrientation, TBool aHighlighted ); - + /** * Get size of item for LCT template. - * + * * @since S60 v3.0 * @param aLCTTemplate The LCT template name. * @param aVariety The variety for aLCTTemplate. * @param aWindowLayout The window layout to be used to calculet the size. * @param aLandscapeOrientation ETrue if view in landscape orientation otherwise EFalse. - * + * * @return item size */ TSize GetLCTSize( const TDesC8& aLCTTemplate, TInt aVariety, TAknWindowLineLayout& aWindowLayout, TBool aLandscapeOrientation ); - + /** * Clean the cache - * + * * @since S60 v3.0 */ void CleanAndClearCache( ); /** - * The template content is loaded. LCT templates have highest priority. + * The template content is loaded. LCT templates have highest priority. * If there is no LCT template, a custom template is loaded. - * + * * @since S60 v3.0 * @param aTemplate The current template for the item. * @param aWidgetType The widget type. * @param aMmTemplateType Type of template (LCT/custom). - * + * * @return Template content. */ HBufC8* GetTemplateContentL( const TDesC8& aTemplate, TMmWidgetType aWidgetType, TMmTemplateType& aMmTemplateType ); - + /** * Sets scrollbar visibility so template library is aware. - * + * * @since S60 v3.0 * @param aIsScrollbarVisible Is scrollbar visible. */ void SetScrollbarVisibilityL( TBool aIsScrollbarVisible ); - + /** * Gets scrollbar visibility. - * + * * @since S60 v3.0 * @return Is scrollbar visible. */ TBool GetScrollbarVisibility(); - - /** - * Sets the current zoom so template library can retrieve the appropriate templates. - * - * @since S60 v3.0 - * @param aZoom Is The current zoom to be set. - */ - void SetZoom( TAknUiZoom aZoom = EAknUiZoomAutomatic ); - + /** * Sets the scrollbar width so template library can calculate the width of the item correctly. - * + * * @since S60 v3.0 * @param aScrollbarWidth The current width of the scrollbar. */ void SetScrollbarWidthL( TInt aScrollbarWidth ); - + /** * Gets scrollbar width. - * + * * @since S60 v3.0 * @return scrollbar width */ TInt ScrollbarWidth(); - + /** * Gets the parent rect for given orientation from which templates were calculated. - * + * * @since S60 v3.0 * @param aLandscapeOrientation The current landscape orientation. * @return Parent rect for given orientation. */ TRect GetParentRect( TBool aLandscapeOrientation ); - + private: /** * Get the lookup text. - * + * * @since S60 v3.0 * @param aTemplate The current template for the item. * @param aWidgetType The widget type. - * @param aLandscapeOrientation Is view in landscape orientation. + * @param aLandscapeOrientation Is view in landscape orientation. * @param aHighlighted Is item highlighted. - * - * @return Lookup text. + * + * @return Lookup text. */ HBufC8* LookupText( const TDesC8& aTemplate, TMmWidgetType aWidgetType, - TAknUiZoom aZoom, TBool aLandscapeOrientation = EFalse, - TBool aHighlighted = EFalse ); - + TBool aLandscapeOrientation = EFalse, + TBool aHighlighted = EFalse ); + /** * Get the lookup text for layout size. - * + * * @since S60 v3.0 * @param aWidgetType The widget type. * @param aTemplate The current template for the item. - * @param aLandscapeOrientation Is view in landscape orientation. - * + * @param aLandscapeOrientation Is view in landscape orientation. + * * @return lookup layout text. */ - HBufC8* LookupLayoutText( TMmWidgetType aWidgetType, TAknUiZoom aZoom, - const TDesC8& aTemplate, TBool aLandscapeOrientation ); - + HBufC8* LookupLayoutText( TMmWidgetType aWidgetType, + const TDesC8& aTemplate, + TBool aLandscapeOrientation ); + /** * Get the lookup text for move indicator. - * + * * @since S60 v3.0 * @param aLookupText The lookup text to be used to create the lookup indicator text. * @return lookup Indicator text. @@ -360,18 +353,18 @@ /** * Load the template to cache. - * + * * @since S60 v3.0 * @param aWidgetType The widget type. * @param aTemplate The current template for the item. * @param aLandscapeOrientation The current orientation. */ - void LoadTemplateL( TMmWidgetType aWidgetType, const TDesC8& aTemplate, + void LoadTemplateL( TMmWidgetType aWidgetType, const TDesC8& aTemplate, TBool aLandscapeOrientation ); - + /** * Get template file content. - * + * * @since S60 v3.0 * @param aContent Descriptor to which the file content should be set. * @param aTemplate The current template for the item. @@ -382,156 +375,147 @@ void GetTemplateFileContentL (HBufC8*& aContent, const TDesC8& aTemplate, TMmWidgetType aWidgetType, TMmTemplateType& aMmTemplateType, TBool aLoadCustomTemplate = EFalse); - + /** * Process xml element. - * + * * @since S60 v3.0 * @param aMmTemplateType Type of template (LCT/custom). * @param aElement Element ( xml ). * @param aTemplate The current template for the item. - * @param aLandscapeOrientation Is view in landscape orientation. + * @param aLandscapeOrientation Is view in landscape orientation. * @param aHighlighted Is item highlighted. - * + * */ void ProcessElementL (TMmTemplateType aMmTemplateType, TXmlEngElement aElement, const TDesC8& aTemplate, - TBool aLandscapeOrientation, TBool aHighlighted); - + TBool aLandscapeOrientation, TBool aHighlighted); + /** * Process the LCT template. - * + * * @since S60 v3.0 * @param aElement Element (xml). * @param aTemplate The current template for the item. - * @param aLandscapeOrientation Is view in landscape orientation. + * @param aLandscapeOrientation Is view in landscape orientation. * @param aHighlighted Is item highlighted. */ - void ProcessLCTTemplateElementL( TXmlEngElement aElement, - const TDesC8& aTemplate, + void ProcessLCTTemplateElementL( TXmlEngElement aElement, + const TDesC8& aTemplate, TBool aLandscapeOrientation, TBool aHighlighted ); /** * Process the custom template. - * + * * @since S60 v3.0 * @param aElement Element (xml) * @param aTemplate The current template for the item. - * @param aLandscapeOrientation Is view in landscape orientation. + * @param aLandscapeOrientation Is view in landscape orientation. * @param aHighlighted Is item highlighted. */ - void ProcessCustomTemplateElementL( TXmlEngElement aElement, - const TDesC8& aTemplate, + void ProcessCustomTemplateElementL( TXmlEngElement aElement, + const TDesC8& aTemplate, TBool aLandscapeOrientation, TBool aHighlighted ); /** * Setup LCT template data. - * + * * @since S60 v3.0 - * @param aChildTemplate Template where the data should be set up. + * @param aChildTemplate Template where the data should be set up. * @param aChildElement Element (xml). * @param aItemSize Item size. */ void SetupLCTTemplateL(TTemplateChild& aChildTemplate, TXmlEngElement& aChildElement, TSize aItemSize ); - + /** - * Setup custom template. - * + * Setup custom template. + * * @since S60 v3.0 - * @param aChildTemplate Template where the data should be set up. + * @param aChildTemplate Template where the data should be set up. * @param aChildElement Element (xml). */ void SetupCustomTemplateL(TTemplateChild& aChildTemplate, TXmlEngElement& aChildElement ); - + /** * Set the template visual id. - * + * * @since S60 v3.0 * @param aChildTemplate Template data. */ void SetupTemplateVisualId(TTemplateChild& aChildTemplate ); - + /** * Setup the item children template data for move indicator and cache the data. - * + * * @since S60 v3.0 * @param aLookupString Lookup string. * @param aItemSize Item size. */ void SetupMoveIndicatorTemplateChildrenL( const TDesC8& aLookupString, TSize aItemSize ); - + /** * Adjusts the item size loaded to template cache according to layout size and orientation. * This method adjusts the item width so that items occupy the view correctly. - * + * * @since S60 v3.0 - * @param aSize The size of the item to be adjusted. - * @param aLayoutSize The layout of the widget e.g 3x4 + * @param aSize The size of the item to be adjusted. + * @param aLayoutSize The layout of the widget e.g 3x4 * @param aLandscapeOrientation The orientation of the template being processed. */ void AdjustItemWidth( TSize& aSize, TSize aLayoutSize, TBool aLandscapeOrientation ); /** * Updates the parent rect according to orientation. - * + * * @since S60 v3.0 * @param aParentRect The current parent rectangle. * @param aLandscapeOrientation The current orientation. */ void UpdateParentRect( TRect aParentRect, TBool aLandscapeOrientation ); - + /** * Sets the parent rect for given orientation. - * + * * @since S60 v3.0 * @param aLandscapeOrientation Orientation for which parent rect shoul be set. * @param aParentRect The parent rect of current orientation. */ void SetParentRect( TBool aLandscapeOrientation, TRect aParentRect); - + /** * Appends the edit mode template (backdrop icon) to the array of template children passed to the item drawer for drawing. - * + * * @since S60 v3.0 * @param aTemplateArray The template array to which the edit mode template is appended. * @param aSize The size of the item for which the edit mode template should be calculated. */ void AppendEditModeTemplateL( RArray< TTemplateChild >& aTemplateArray, TSize aSize ); - + /** * Adjusts the item size according to layout, LCT item size and orientation. - * + * * @since S60 v3.0 * @param aItemSize The LCT item size. * @param aLayoutSize The layout size to be used to calculate item size. * @param aLandscapeOrientation The orientation for which the template is loaded. */ void AdjustItemSize(TSize& aItemSize, TSize aLayoutSize, TBool aLandscapeOrientation ); - - /** - * Get the current zoom for displaying templates. - * - * @since S60 v3.0 - * @return The current zoom. - */ - TAknUiZoom Zoom( ); - + /** * Caches the layout size - * + * * @since S60 v3.0 * @param aLayoutSize The layout size to ba cached. * @param aTemplate The template for the cached layout size. * @param aLandscapeOrientation The orientation for which the template is loaded. - * @return The current zoom. */ void CacheLayoutSizeL( TSize aLayoutSize, const TDesC8& aTemplate, TBool aLandscapeOrientation ); - + /** * Adjusts icon's align to layout (left, center, right). - * + * * @since S60 v5.0 * @param aParentSize The LCT parent item size. * @param aTemplateChild Template data. @@ -545,51 +529,46 @@ * Widget type of template being loaded. */ TMmWidgetType iWidgetType; - + /** * Template type which is being loaded (LCT/custom). */ TMmTemplateType iMmTemplateType; - + /** * Template sizes map. */ RHashMap< HBufC8*, TSize> iTemplateSizesMap; - + /** * Item children template map. */ RHashMap< HBufC8*, RArray > iTemplateChildrenMap; - + /** * Move indicator rects map. */ RHashMap< HBufC8*, TRect> iMoveIndicatorRectsMap; - + /** * Parent bounding rect. */ TRect iParentRectPortrait; - + /** * Parent bounding rect. */ TRect iParentRectLandscape; - + /** * Scrollbar is visible. */ TBool iIsScrollbarVisible; - + /** * Scrollbar width. */ TInt iScrollbarWidth; - - /** - * Zoom type. - */ - TAknUiZoom iZoom; }; #endif // MMTEMPLATELIBRARY_H diff -r f72a12da539e -r 5315654608de menufw/menufwui/mmwidgets/inc/mmwidgetcontainer.h --- a/menufw/menufwui/mmwidgets/inc/mmwidgetcontainer.h Thu Dec 17 08:40:49 2009 +0200 +++ b/menufw/menufwui/mmwidgets/inc/mmwidgetcontainer.h Thu Jan 07 12:39:41 2010 +0200 @@ -11,8 +11,8 @@ * * Contributors: * -* Description: -* Version : %version: MM_48.1.33 % << Don't touch! Updated by Synergy at check-out. +* Description: +* Version : %version: MM_48.1.35 % << Don't touch! Updated by Synergy at check-out. * */ @@ -29,7 +29,7 @@ #include #include #include -#include +#include #include "hnsuiteobserver.h" #include "mmvisibilityobserver.h" @@ -57,7 +57,7 @@ /** * Structure used to store cache for widget position. - * + * * @since S60 v5.0 * @ingroup group_mmwidgets */ @@ -69,32 +69,32 @@ * Initializes member variables with sensible values. */ TMmWidgetPosition(); - + public: // data /** * The vertical item offset cache. */ TInt iVerticalItemOffset; - + /** * The top item index cache. */ TInt iTopItemIndex; - + /** * Tells if the cached values are valid. */ TBool iValid; - + /** * The mode (portrait/landscape) for which the cache is valid. */ TBool iLandscape; - + /** * Id from model (not index) of the currently highlighted item. * It should only be set if the currently highlighted item is - * visible (fully or partially), otherwise it must remain + * visible (fully or partially), otherwise it must remain * initialized to KErrNotFound. */ TInt iHighlightedItemId; @@ -102,7 +102,7 @@ /** * Interface for widget containers. - * + * * @code * @endcode * @lib mmwidgets @@ -110,13 +110,13 @@ * @ingroup group_mmwidgets */ -NONSHARABLE_CLASS( CMmWidgetContainer ): public CCoeControl, +NONSHARABLE_CLASS( CMmWidgetContainer ): public CCoeControl, public MMmVisibilityObserver, public MEikListBoxObserver, - public MAknLongTapDetectorCallBack + public MAknLongTapDetectorCallBack { public: - + /** * Creates a new grid container. * @@ -125,23 +125,23 @@ * @param aObjectProvider Object provider. * @return GridContainer. */ - IMPORT_C static CMmWidgetContainer* NewGridContainerL( const TRect& aRect, + IMPORT_C static CMmWidgetContainer* NewGridContainerL( const TRect& aRect, MObjectProvider* aObjectProvider, CMmTemplateLibrary* aTemplateLibrary ); - + /** * Creates a new listbox container. * * @since S60 v3.0 * @param aRect Parent rectangle. * @param aObjectProvider Object provider. - * @param aTemplateLibrary Template library for drawer. + * @param aTemplateLibrary Template library for drawer. * @return ListboxContainer. */ - IMPORT_C static CMmWidgetContainer* NewListBoxContainerL( const TRect& aRect, + IMPORT_C static CMmWidgetContainer* NewListBoxContainerL( const TRect& aRect, MObjectProvider* aObjectProvider, CMmTemplateLibrary* aTemplateLibrary ); - -public: // Highlight related methods - + +public: // Highlight related methods + /** * Sets the default highlight. * @@ -149,275 +149,276 @@ * @param aRedraw Is highlight to redraw. */ virtual void SetDefaultHighlightL( TBool aRedraw = ETrue ) = 0; - + /** * Sets the highlight. - * + * * @since S60 v3.0 * @param aItemIndex Index to set the highlight at. * @param aRedraw Is highlight to redraw. */ IMPORT_C virtual void SetManualHighlightL(TInt aItemIndex, TBool aRedraw = ETrue ); - + /** * Gets the highlight from the widget. - * + * * @since S60 v3.0 * @return Current Highlight in the widget. */ IMPORT_C virtual TInt GetHighlight(); - + /** * Gets the highlight from the widget. - * + * * @since S60 v3.0 * @return Previous Highlight in the widget. */ IMPORT_C virtual TInt GetPreviousHighlight(); - + /** * Set highlight visibility. - * + * * @since S60 v3.0 - * @param aVisible Visibility status. + * @param aVisible Visibility status. */ IMPORT_C virtual void SetHighlightVisibilityL( TBool aVisible ); - + /** * Set highlight visibility. - * + * * @since S60 v3.0 * @return Visibility status. */ IMPORT_C virtual TBool IsHighlightVisible(); - + /** * Handle item addition. - * + * * @since S60 v3.0 */ IMPORT_C virtual void HandleItemAdditionL(); - - + + /** * Handle item removal. - * + * * @since S60 v3.0 */ IMPORT_C virtual void HandleItemRemovalL(); - + /** * Handle item removal. - * + * * @since S60 v3.0 */ - IMPORT_C CHnSuiteModel* GetSuiteModelL(); - + IMPORT_C CHnSuiteModel* GetSuiteModelL(); + /** * Retrieve type of widget. - * + * * @since S60 v3.0 * @return Type of widget. */ IMPORT_C virtual THnSuiteWidgetType WidgetType(); - + /** * Removes all LIW objects owned by this object. - * + * * LIW objects owned by non-LIW objects that are owned by - * this object are also removed. + * this object are also removed. */ virtual void RemoveLiwObjects(); - + /** - * Checks if timer is active. + * Checks if timer is active. * Calling this method without parameters will cause to return * timer activity state globally (without reference to a specific item index - which tells * if timer is active at all). - * + * * @param aItemIndex Item index for which to check timer activity. Can be not defined. * @return ETrue if timer is active which means highlight is visible. */ TBool IsTimerActive( TInt aItemIndex = KErrNotFound ); - + /** * Sets the long tap observer. - * - * @param aObserver Observer to receive long tap events. + * + * @param aObserver Observer to receive long tap events. */ IMPORT_C virtual void SetLongTapObserver( MMmLongTapObserver* aObserver ); - + /** - * Handles top focus notification. This is called when we want to explicitly inform - * the container that it is in top focus state (or not). - * @param aIsTopFocus ETrue if container is in top focus. + * Informs the container that long tap event is finished (e.g. because + * a command from the context menu has been issued). + * + * @param aStopTimer ETrue when the highlight timer should be stopped. */ - IMPORT_C virtual void HandleTopFocusL( TBool aIsTopFocus = ETrue ); - + IMPORT_C virtual void EndLongTapL( TBool aStopTimer = ETrue ); + /** * Is called when options menu visibility changes (hides or pops up) * @param aOptionsMenuVisible ETrue when option menu pops up. */ - IMPORT_C virtual void HandleOptionsMenuVisibilityChangeL( + IMPORT_C virtual void HandleOptionsMenuVisibilityChangeL( TBool aOptionsMenuVisible ); -public: +public: /** * Sets suite model. - * + * * @since S60 v3.0 * @param aModel Suite model. */ virtual void SetSuiteModelL( CHnSuiteModel* aModel ); - + /** * Gets Multimedia Menu model. - * + * * @since S60 v3.0 * @return Model. */ virtual CMmListBoxModel* GetMmModel() = 0; - + /** * Sets widget observer. - * + * * @since S60 v3.0 * @param aObserver Widget observer. */ IMPORT_C virtual void SetObserver( MMmWidgetObserver* aObserver); - + /** * Gets item rectangle according to item index. - * + * * @since S60 v3.0 * @param aItemIndex Item index. * @return Item rectangle. */ IMPORT_C TRect GetItemRectL( TInt aItemIndex ); - + /** * Sets empty text visible when model has no items. - * + * * @since S60 v3.0 * @param aText Text to be shown when view is empty. */ virtual void SetEmptyTextL(const TDesC& aText) = 0 ; - + /** * Sets flag. - * + * * @since S60 v3.0 * @param Flag Flag. */ virtual void SetFlag(TInt Flag); - + /** * Gets widget. - * + * * @since S60 v3.0 * @return Widget. */ virtual CEikListBox* Widget(); - + /** * Sets background context for item drawer and view. - * + * * @since S60 v3.0 * @param aBgContext Background context. */ virtual void SetItemDrawerAndViewBgContext( CAknsBasicBackgroundControlContext * aBgContext ) =0; - + /** * Sets edit mode so UI is aware. - * + * * @since S60 v3.0 * @param aIsEditMode Is edit mode. */ virtual void SetEditModeL( TBool aIsEditMode ); - + /** * Tells if UI is aware of edit mode. - * + * * @since S60 v5.0 * @return Edit mode status. */ virtual TBool IsEditMode() const; - + /** * Sets up widget layout (needed for grid). - * + * * @since S60 v3.0 */ virtual void SetupWidgetLayoutL() =0; - + /** * Constructor. */ CMmWidgetContainer(); - + /** * Destructor. */ ~CMmWidgetContainer(); - + /** * from CCoeControl. - * + * * @since S60 v3.0 */ void SizeChanged(); - + /** * Draws the widget. - * + * * @since S60 v3.0 * @param aRect Rectangle within the widget shuld be drawn. */ void Draw(const TRect& aRect) const; - + /** * Draws the widget view. * * @since S60 v5.0 */ virtual void DrawView() = 0; - + /** * Returns type UID pointer that can be used in MopSupplyObject. - * + * * @since S60 v3.0 - * @param aId Type UID, should be the same that was given as aId. + * @param aId Type UID, should be the same that was given as aId. * parameter of MopSupplyObject. * @return Type UID pointer. */ TTypeUid::Ptr MopSupplyObject(TTypeUid aId); - + /** * From CCoeControl. - * + * * @since S60 v3.0 * @param aPointerEvent Pointer event. */ void HandlePointerEventL(const TPointerEvent& aPointerEvent); - + /** * From CCoeControl. - * + * * @since S60 v5.0 * @param aPointerEvent Pointer event. */ void HandlePointerEventsInEditModeL(const TPointerEvent& aPointerEvent, TBool aAbortAnimations ); - + /** * Set draggable. - * + * * @since S60 v3.0 * @param aDraggable Is draggable. */ void SetDraggableL( TBool aDraggable ); - + /** * Gets draggable status. * Draggable status determines if the item has @@ -426,167 +427,130 @@ * is not draggable in the sense of this method * because the dragged item is not yet drawn. * It becomes draggable when it start to be drawn - * + * * @since S60 v3.0 * @return Is draggable. */ IMPORT_C TBool IsDraggable(); - + /** * From CCoeControl. - * + * * @since S60 v3.0 * @return count component controls. */ TInt CountComponentControls() const; - + /** * From CCoeControl. - * + * * @since S60 v3.0 * @param aIndex index of control. * @return component control. */ CCoeControl* ComponentControl(TInt aIndex) const; - + /** * From CCoeControl. - * + * * @since S60 v3.0 * @param aKeyEvent key event. * @param aType event type. * @return response to key event. */ TKeyResponse OfferKeyEventL(const TKeyEvent &aKeyEvent, TEventCode aType); - + /** * Zooms item icon. - * + * * @since S60 v3.0 * @param aItemIndex Item index. */ IMPORT_C void ItemIconZoomL( TInt aItemIndex ); - + /** * Handle button up event. - * + * * @since S60 v3.0 * @param aPointerEvent Pointer event. */ - void HandleButtonDownL(const TPointerEvent& aPointerEvent ); - + void HandleButtonDownL(const TPointerEvent& aPointerEvent ); + /** * Handle button down event. - * + * * @since S60 v3.0 * @param aPointerEvent Pointer event. */ void HandleButtonUpL(const TPointerEvent& aPointerEvent ); - + /** * Overridden to invalidate item drawer cache on skin change and * dynamic variant switch. - * + * * @param aType A message UID value. */ void HandleResourceChange( TInt aType ); - + /** * Handle dragging of item. - * + * * @since S60 v3.0 * @param aPointerEvent Pointer event. * @param aAbortAnimation Should animation be aborted. */ void HandleDragL(const TPointerEvent& aPointerEvent, TBool aAbortAnimation ); - + /** * Sets marquee adapter. - * + * * @since S60 v3.0 * @param aAdapter A marquee adapter. - */ + */ void SetMarqueeAdapter( CMmMarqueeAdapter* aAdapter ); - + /** * Sets up item drawer. - * + * * @since S60 v3.0 */ void SetupDrawer(); - + /** * Cancels gragging of item. - * + * * @since S60 v3.0 * @param aAnimate Should dragged item transition be animated. */ IMPORT_C void CancelDragL( TBool aAnimate ); - + /** * Animates item shifting. - * + * * @since S60 v3.0 * @param aHighlight Highlighted item index. */ void AnimateShiftL(TInt aHighlight); - + /** * Gest number of items. - * + * * @since S60 v3.0 * @return Number of items. - */ + */ IMPORT_C TInt NumberOfItems(); - - /** - * Retrieve information if flip is open. - * - * @since S60 v5.0 - * @return ETrue if flip is open. Other cases returns EFalse. - */ - TBool FlipOpen(); - - /** - * Sets the flip open state. - * - * @since S60 v5.0 - * @param aIsFlipOpen Is the flip open. - */ - IMPORT_C void SetFlipOpenL( TBool aIsFlipOpen ); - - /** - * This should be called when flip state was changed - * - * @since S60 v5.0 - */ - virtual void FlipStateChangedL(); - + /** * This should be called at the end of edit mode in non-touch - * + * * @since S60 v5.0 */ IMPORT_C void StopMovingL(); - - /** - * Handle zooming change - * - * @since S60 v5.0 - */ - IMPORT_C void HandleZoomChanged( TAknUiZoom aZoom ); - - /** - * Set the zoom - * - * @since S60 v5.0 - */ - IMPORT_C void SetZoom( TAknUiZoom aZoom ); - + /** * Set the vertical item offset; * @param aOffset The offset to set to the widget. - * + * * @since S60 v5.0 */ virtual void SetVerticalItemOffset( TInt aOffset ) = 0; @@ -594,7 +558,7 @@ /** * Gets the current vertical item offset for the widget in the container. * @since S60 v5.0 - * + * * @return The current vertical item offset. */ virtual TInt VerticalItemOffset() const = 0; @@ -605,7 +569,7 @@ * @since S60 v5.0 */ IMPORT_C void CacheWidgetPosition(); - + /** * Resets the widget position cache to top of view. * Both vartical item offset and top index are set to zero @@ -613,108 +577,108 @@ * @since S60 v5.0 */ IMPORT_C void ResetWidgetPosition(); - + /** * Restores the cached widget position values in the widget. * @since S60 v5.0 */ IMPORT_C void RestoreWidgetPosition(); - + /** * Scrolls to the specified item index so that the item is seen entirely on screen. * @since S60 v5.0 - * + * * @param aIndex The widget item index to scroll to. * @return True if any scrolling was done. */ IMPORT_C TBool ScrollToItemL( TInt aIndex ); - + /** * Called when the number of items in widget model changed. * @since S60 v5.0 - * + * * @param aChange Type of change */ IMPORT_C void NumberOfItemsChangedL( TItemsChangeType aChange ); - + /** - * Aligns the bottom of view to the last model item bottom edge so that no extra + * Aligns the bottom of view to the last model item bottom edge so that no extra * unused pixels are visible at the bottom of screen. * @since S60 v5.0 - * + * * @return True if the view was scrolled. */ TBool AlignBottomOfViewL( ); - + /** * Calculate numer of pixels required to scroll when aligning bottom of view. - * @since S60 v5.0 + * @since S60 v5.0 */ TInt CalcBottomPixelsToScroll(); - + /** * Sets visibility of a widget. - * + * * @param aVisible ETrue if widget should be visible, EFalse - otherwise */ void MakeVisible(TBool aVisible); - + /** * Tells if item is visible (fully or partially). * @param aItemIndex Item index. * @return ETrue if visible, EFalse otherwise. */ virtual TBool ItemIsVisible( TInt aItemIndex ) const; - + /** * Tells if item is entirely visible. * @param aIndex The index of the item. */ IMPORT_C TBool ItemIsFullyVisible(TInt aIndex); - + /** * Prepares the container to be set to the garbage collector. */ IMPORT_C void PrepareForGarbage(); - + /** * Checks, whether the currently dragged item is a draggable item. i.e. parent folder * is not a draggable item. - * @returns True, if dragged item is parent folder + * @returns True, if dragged item is parent folder * or no item is dragged (iDraggedIndex = -1), false otherwise. */ TBool IsNoItemDragged(); - + /** * Sets the iHasFocus member variable, which is used to determine - * if marquee animation can be enabled. + * if marquee animation can be enabled. */ IMPORT_C void SetHasFocusL( TBool aHasFocus ); - + /** * Sets the iIsFaded member variable, which is used to determine - * if marquee animation can be enabled. + * if marquee animation can be enabled. */ IMPORT_C void SetIsFaded( TBool aIsFaded ); - + public: // from MMmVisibilityObserver - + /** - * + * * @since S60 v3.0 */ IMPORT_C void HandleBackgroundGainedL(); /** - * + * * @since S60 v3.0 */ - IMPORT_C void HandleForegroundGainedL(); + IMPORT_C void HandleForegroundGainedL(); public: // from MEikListBoxObserver - + /** * Handles list box events. - * + * * @since S60 v5.0 */ virtual void HandleListBoxEventL(CEikListBox* aListBox, @@ -723,117 +687,117 @@ public: /** * From MAknLongTapDetectorCallBack. Handles long tap events. - * + * * @since S60 v5.0 * @param aPenEventLocation Point coordinates relative to container. * @param aPenEventScreenLocation Point coordinates relative to screen. */ - virtual void HandleLongTapEventL( const TPoint& aPenEventLocation, + virtual void HandleLongTapEventL( const TPoint& aPenEventLocation, const TPoint& aPenEventScreenLocation ); protected: - + /** * Handles additional contruction tasks. - * + * * @since S60 v3.0 */ void ConstructL(); - + /** * Sets highlight locally. * Does not modify the avkon behaviur. - * + * * @since S60 v3.0 * @param aItemIndex Index of the item. */ void SetHighlightL(TInt aItemIndex); - + /** * Checks whether given point collides with specific item's re-order area. - * + * * This function gets called during drag-and-drop operations to * help determine whether item re-ordering is needed. - * + * * @param aItemIndex index of the item to check * @param aPoint point coordinates * @return ETrue if point is located within item re-order area, - * EFalse otherwise + * EFalse otherwise */ virtual TBool PointInItemReorderAreaL( TInt aItemIndex, TPoint aPoint ); - + /** * Hides the options menu if it is being displayed. * This has (probably) the same effect as clicking Cancel (RSK) - * the menu just disappears. */ void HideOptionsMenuIfDisplayed(); - + protected: - + /** - * Validates the widget current item index so that it is consistent with + * Validates the widget current item index so that it is consistent with * the current model. */ void ValidateWidgetCurrentItemIndex(); - + /** * Updates current view's scrollbar thumbs. */ virtual void UpdateViewScrollBarThumbs(); - + /** * Starts or stops marquee animation based on the current state * of the container. */ void StartOrStopMarquee(); - + private: /** * Called when the number of items in widget model changed. * @since S60 v5.0 - * + * * @param aChange Type of change */ void HandleNumberOfItemsChangedL( TItemsChangeType aChange ); - + /** * Manages zooming of folder. - * + * * @since S60 v3.0 * @param aDraggedItemOverIcons Is dragged over icons flag. */ void ManageFolderZoomingL( TBool aDraggedItemOverIcons ); - + /** * Cancels gragging of item if relevant( Edit Mode is activated ) - * + * * @since S60 v3.0 */ void CancelDragL(); - + /** - * Sets the widget highlight back to place if e.g. item was dragged over an item + * Sets the widget highlight back to place if e.g. item was dragged over an item * where it could not be dropped into. - * + * * @since S60 v3.0 */ void SetHighlightAfterDrag(); - + /** * Handles key event. - * + * * @since S60 v3.0 * @param aKeyEvent Key event. * @param aType Event code. */ TKeyResponse HandleKeyEventL(const TKeyEvent &aKeyEvent, TEventCode aType); - + /** * Handles rocker (select) press. */ void HandleRockerPressL(); - + /** * Gets distance between current and previous position. * @param aPos Current position. @@ -842,14 +806,14 @@ */ TInt DeltaSquare( const TPoint aTapPoint, const TPoint aPos ); - + /** * Checks, whether given item is a folder or root folder. * @param aItemIndex Item index to check. * @returns True, if given item is a folder or root folder, false otherwise. */ TBool IsFolderL( TInt aItemIndex ); - + /** * Checks, whether given item has IsDeleteLockedL flag set. * @param aItemIndex Item index to check. @@ -862,7 +826,7 @@ * @returns Column count in current view. */ virtual TInt ColumnsInCurrentView(); - + /** * Gets row count in current view. * @returns Row count in current view. @@ -873,32 +837,32 @@ * Scrolls the view move mode non-touch so that move indicators are visible. */ void ScrollViewIfNeededL(); - + /** * Scrolls the view in pixels. * @param aPixels THe number of pixels to scroll. If negative, the view is scrolled down. */ void ScrollInPixelsL( TInt aPixels ); - + /** * Sets up the scrolling effect movement type. * @param aDown True if scrolling is downwards. */ void SetupScrollingEffectsL( TBool aDown ); - + protected: - + /** * Own. */ CEikListBox* iWidget; - + /** * Key event observer. */ MMmKeyEventObserver* iKeyEventObserver; - + /** * Drag and drop observer. */ @@ -907,124 +871,119 @@ * List box observer. */ MEikListBoxObserver* iListBoxObserver; - + /** * Notifies about time expiration. * * Owned by descendant. */ CMmHighlightTimer* iTimer; - + /** * Marquee adapter. * Own. */ CMmMarqueeAdapter* iMarqueeAdapter; - + /** * Item drawer. * Not own. */ CMmListBoxItemDrawer* iDrawer; - + protected: - + /** * Current Highlight. */ TInt iCurrentHighlight; - + /** * Has drag occurred. */ - TBool iDragOccured; - + TBool iDragOccured; + /** * Processed display elelments for better performance. */ CMmPostEvaluationProcessor* iPostProcessor; - + /** * Set when long tap is in progress (stylus popup displayed over container) */ TBool iLongTapInProgress; - + private: /** * Background context. * Own. - */ + */ CAknsBasicBackgroundControlContext* iBgContext; /** * Last drag point. - */ + */ TPoint iLastDragPoint; - + /** * First tap point. - */ + */ TPoint iTapPoint; - + /** * First tap point. - */ + */ TPoint iItemRelativeTapPoint; - + /** * Last drag highlight. - */ + */ TInt iLastDragHighlight; - + /** * Dragged item index. - */ + */ TBool iDraggedIndex; - + /** * Edit mode status. - */ + */ TBool iIsEditMode; - + /** * Destination of item index. - */ + */ TInt iItemIndexDestination; - + /** * Previous Highlight. - */ + */ TInt iPreviousHighlight; - - /** - * Is flip open - */ - TBool iFlipOpen; - + /** * The current rect of the widget control. */ TRect iWidgetRect; - + /** * Longpress allowed flag. We only accept long press (EEventKey+iRepeats) * when there was no highlight visible before EEventKeyDown, otherwise - * we react only to EEventKeyDown + * we react only to EEventKeyDown */ TBool iAllowLongPress; - + /** * Cache for widget position. */ TMmWidgetPosition iWidgetPositionCache; - + /** * ETrue if Matrix menu window is faded. */ TBool iIsFaded; - + /** * ETrue if Matrix menu has focus (i.e. it is not obscured by any popup * note). @@ -1035,13 +994,13 @@ * ETrue if in foreground. */ TBool iInForeground; - + /** * Own. * Detects long tap events. */ CAknLongTapDetector* iLongTapDetector; - + /** * Observer to notify about long tap events. */ diff -r f72a12da539e -r 5315654608de menufw/menufwui/mmwidgets/inc/mmwidgetsconstants.h --- a/menufw/menufwui/mmwidgets/inc/mmwidgetsconstants.h Thu Dec 17 08:40:49 2009 +0200 +++ b/menufw/menufwui/mmwidgets/inc/mmwidgetsconstants.h Thu Jan 07 12:39:41 2010 +0200 @@ -12,14 +12,14 @@ * Contributors: * * Description: Constants for the matrixmenu -* Version : %version: 33.1.8 % << Don't touch! Updated by Synergy at check-out. +* Version : %version: 33.1.9 % << Don't touch! Updated by Synergy at check-out. * */ #ifndef MMWIDGETSCONSTANTS_H #define MMWIDGETSCONSTANTS_H - + #include @@ -32,106 +32,106 @@ * X component of the 4x3 layout. */ const TInt K4By3LayoutX = 4; - + /** * Y component of the 4x3 layout. */ const TInt K4By3LayoutY = 3; - + /** * X component of the 3x4 layout. */ - + const TInt K3By4LayoutX = 3; - + /** * Y component of the 3x4 layout. */ const TInt K3By4LayoutY = 4; - + /** * X component of the 4x5 layout. */ const TInt K4By5LayoutX = 4; - + /** * Y component of the 5x4 layout. */ const TInt K4By5LayoutY = 5; - + /** * X component of the 5x4 layout. */ const TInt K5By4LayoutX = 5; - + /** * Y component of the 5x4 layout. */ const TInt K5By4LayoutY = 4; - + /** * Below this value, default highlight in 3x4 grid * is set up on the first item. Otherwize, on the default * highlight. */ const TInt K3By4Threshold(5); - + /** * Below this value, default highlight in 4x3 grid * is set up on the first item. Otherwize, on the default * highlight. */ const TInt K4By3Threshold(6); - + /** * Below this value, default highlight in 5x4 grid * is set up on the first item. Otherwize, on the default * highlight. */ const TInt K5By4Threshold(8); - + /** * Below this value, default highlight in 4x5 grid * is set up on the first item. Otherwize, on the default * highlight. */ const TInt K4By5Threshold(10); - + /** * Default highlight in 3x4 grid. */ const TInt K3By4DefaultHighlight(4); - + /** * Default highlight in 4x3 grid. */ const TInt K4By3DefaultHighlight(5); - + /** * Default highlight in 5x4 grid. */ const TInt K5By4DefaultHighlight(7); - + /** * Default highlight in 4x5 grid. */ const TInt K4By5DefaultHighlight(8); - + /** * Number of rows in portrait/non-zoom mode; */ const TInt KRowsPortraitZoomNormal(4); - + /** * Number of columns in landscape/non-zoom mode; */ const TInt KColsPortraitZoomNormal(3); - + /** * Number of rows in portrait/non-zoom mode; */ const TInt KRowsLandscapeZoomNormal(3); - + /** * Number of columns in landscape/non-zoom mode; */ @@ -165,67 +165,67 @@ * Threshold for items shift. */ const TReal KShiftRatio(0.25); - + /** * Drag and drop speed limit. */ const TInt KDragSpeedIgnoreThreshold(15 * 15); - + /** * Number of frames to animate. */ const TInt KMaximumAnimationFramesCount( 6 ); - + /** * Number of frames to animate. */ const TInt KUsualAnimationFramesCount( 3 ); - + /** * Number of frames to animate on non-touch devices. */ const TInt KUsualAnimationFramesCountNonTouch( 2 ); - + /** * No animation frames count. */ const TInt KNoAnimationFramesCount( 1 ); - + /** * Delay between redrawing frames. */ const TInt KAnimationFrameDelay( 40000 ); - + /** * Text alpha during drag. */ const TInt KDragTextAlpha( 50 ); - + /** * Focus based scrolling item threshold. */ const TReal KFocusScrollingThreshold( 0.55 ); - + /** * Focus based scrolling item threshold for listbox landscape mode. */ const TReal KFocusScrollingThresholdListboxLanscape( 1.0 ); - + /** * Value of drag ignore. */ const TInt KDragIgnoreRectValue(200); - + /** * Time between two butto repeat events. */ const TInt KDragRepeatRespawn(2); - + /** * Determines the speed of focus-based scrolling in edit mode. */ const TInt KEditModeScrollingDelayFactor = 4000; - } + } /** * Templates' related constants. @@ -237,15 +237,15 @@ * its default scrollbar width. */ const TInt KCustomTemplateScrolbarWidth (25); - + const TInt KTemplateChildTextLength (64); - + const TInt KSubCellsCount (6); - + const TInt KItemSubCellsText (300); - + const TInt KMoveIndicatorStartingPos ( 32 ); - + } /** @@ -263,13 +263,13 @@ EStdKeyNkpAsterisk, #endif '0', EStdKeyHash }; - + /** * Number of available scancodes. */ const TInt KScanCodeCount = 12; } - + namespace MmMarqueeConstants { const TInt KTextTrimmingThreshold (80); @@ -282,7 +282,7 @@ * Matrix Template Library panic notice. */ _LIT( KMtlPanic, "MTL" ); - + _LIT8( KMmTitle8, "mul_title" ); _LIT8( KMmDetail8, "mul_detail" ); _LIT8( KMmIcon8, "mul_icon" ); @@ -290,9 +290,6 @@ _LIT8( KMmTemplate8, "mul_template" ); _LIT8( KGrid8, "grid" ); _LIT8( KListbox8, "listbox" ); -_LIT8( KZoomLarge8, "large_zoom" ); -_LIT8( KZoomNormal8, "normal_zoom" ); -_LIT8( KZoomSmall8, "small_zoom" ); _LIT8( KEmpty8, "empty" ); _LIT8( KOrientation8, "orientation" ); @@ -310,7 +307,6 @@ _LIT8( KImageVisual8, "imagevisual" ); _LIT8( KImagePath8, "imagepath" ); _LIT8( KGridLayout8, "gridlayout" ); -_LIT8( KVarietyZoom8, "variety_zoom" ); _LIT8( KEnabled8, "enabled" ); _LIT8( KRow8, "row" ); _LIT8( KCol8, "col" ); @@ -323,7 +319,7 @@ _LIT8( KLct8, "lct"); _LIT8( KHighlight8, "highlight" ); _LIT8( KNoHighlight8, "nohighlight" ); -_LIT8( KLandscape8, "landscape" ); +_LIT8( KLandscape8, "landscape" ); _LIT8( KMmMoveIndicatorFrame8, "mul_move_indicator_frame" ); _LIT8( KMmMoveIndicatorArrowTop8, "mul_move_indicator_arrow_top" ); @@ -410,7 +406,7 @@ EImageVisualIdSwapMode = 0x00000001, EImageVisualIdEditMode = 0x00000002 }; - + /** * Defines the type of a template. */ diff -r f72a12da539e -r 5315654608de menufw/menufwui/mmwidgets/src/mmdraweranimator.cpp --- a/menufw/menufwui/mmwidgets/src/mmdraweranimator.cpp Thu Dec 17 08:40:49 2009 +0200 +++ b/menufw/menufwui/mmwidgets/src/mmdraweranimator.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -12,7 +12,7 @@ * Contributors: * * Description: -* Version : %version: MM_40 % << Don't touch! Updated by Synergy at check-out. +* Version : %version: MM_41 % << Don't touch! Updated by Synergy at check-out. * */ @@ -161,7 +161,6 @@ iLastNotedHighlight = highlightedItemIndex; } - iDrawer.Widget()->View()->SetDisableRedraw(EFalse); TInt currentVerticalOffset = static_cast( iDrawer.Widget()->Parent() )->VerticalItemOffset(); @@ -191,7 +190,6 @@ } } - iDrawer.Widget()->View()->SetDisableRedraw(ETrue); iLastRedrawTime.HomeTime(); @@ -204,7 +202,6 @@ else { Cancel(); - iDrawer.Widget()->View()->SetDisableRedraw( EFalse ); #ifdef RD_UI_TRANSITION_EFFECTS_LIST if ( iTransTfx && iTransTfxInternal->EffectsDisabled() ) @@ -275,7 +272,6 @@ } #endif - iDrawer.Widget()->View()->SetDisableRedraw(ETrue); iTimer.After(iStatus, TTimeIntervalMicroSeconds32( MmEffects::KAnimationFrameDelay ) ); SetActive(); diff -r f72a12da539e -r 5315654608de menufw/menufwui/mmwidgets/src/mmgrid.cpp --- a/menufw/menufwui/mmwidgets/src/mmgrid.cpp Thu Dec 17 08:40:49 2009 +0200 +++ b/menufw/menufwui/mmwidgets/src/mmgrid.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -12,7 +12,7 @@ * Contributors: * * Description: -* Version : %version: MM_92 % << Don't touch! Updated by Synergy at check-out. +* Version : %version: MM_94 % << Don't touch! Updated by Synergy at check-out. * */ @@ -185,7 +185,7 @@ // ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- -// +// void CMmGrid::CreateItemDrawerL() { iItemDrawer = iMmDrawer; @@ -235,7 +235,7 @@ DrawNow(); } #endif - + } } @@ -284,7 +284,7 @@ void CMmGrid::HandlePointerEventInNormalModeL( const TPointerEvent& aPointerEvent ) { CMmWidgetContainer* parent = static_cast( Parent() ); - if ( aPointerEvent.iType == TPointerEvent::EButton1Down && !parent->FlipOpen() ) + if ( aPointerEvent.iType == TPointerEvent::EButton1Down ) { const TInt KIgnoreRectSize = 40; TRect ignoreDragRect(aPointerEvent.iPosition, @@ -317,7 +317,7 @@ View()->ItemDrawer()->SetFlags( CListItemDrawer::EPressedDownState ); CMmWidgetContainer* parent = static_cast( Parent() ); TBool highlightWasVisible = parent->IsHighlightVisible(); - + if( itemUnderPointerIndex == View()->CurrentItemIndex() ) { #ifdef RD_UI_TRANSITION_EFFECTS_LIST @@ -339,7 +339,7 @@ #else View()->DrawItem( itemUnderPointerIndex ); #endif - } + } else { TInt previouslyHighlightedItemIndex = View()->CurrentItemIndex(); @@ -350,7 +350,7 @@ } } } - + // ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- @@ -407,86 +407,87 @@ // // ----------------------------------------------------------------------------- // +void CMmGrid::ScrollWithoutRedraw( TInt distanceInPixels ) + { + CAknGridView* view = static_cast( iView ); + const TInt rowHeight = ItemHeight(); + const TInt numOfCols = view->NumberOfColsInView(); + const TInt itemCount = iModel->NumberOfItems(); + TInt totalNumberOfRows = itemCount / numOfCols; + if ( itemCount % numOfCols ) + { + ++totalNumberOfRows; + } + const TInt topItemRowIndex = TopItemIndex() / numOfCols; + + // desired view position relative to the first item in grid (always positive) + TInt desiredViewPosition = rowHeight * topItemRowIndex - VerticalItemOffset(); + + desiredViewPosition += distanceInPixels; + + const TInt viewPositionMin = 0; + const TInt viewPositionMax = + Max( 0, ( totalNumberOfRows * rowHeight ) - view->ViewRect().Height() ); + + desiredViewPosition = Min( desiredViewPosition, viewPositionMax ); + desiredViewPosition = Max( desiredViewPosition, viewPositionMin ); + + ASSERT( desiredViewPosition >= 0 ); + + TInt newTopItemIndex = ( desiredViewPosition / rowHeight ) * numOfCols; + TInt newVerticalOffset = -( desiredViewPosition % rowHeight ); + SetTopItemIndex( newTopItemIndex ); + SetVerticalItemOffset( newVerticalOffset ); + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// TInt CMmGrid::ScrollIfNeeded( const TPointerEvent& aPointerEvent ) { CAknGridView* view = static_cast( View() ); TInt nextScrollDelay = 0; - TBool readyForScrolling = iMmDrawer->GetAnimator()->IsReadyForNewAnimation() + TBool readyForScrolling = iMmDrawer->GetAnimator()->IsReadyForNewAnimation() && iMmDrawer->GetFloatingItemCount() != 0; - + if ( IsPointerInTopScrollingThreshold( aPointerEvent ) ) { // scroll up by one row - TInt newCurrentItemIndex = CurrentItemIndex() - view->NumberOfColsInView(); + TInt newCurrentItemIndex = CurrentItemIndex() - view->NumberOfColsInView(); if ( newCurrentItemIndex < 0 ) { newCurrentItemIndex = CurrentItemIndex(); } - if ( !View()->ItemIsVisible( 0 ) ) - { - nextScrollDelay = MmEffects::KEditModeScrollingDelayFactor * - Max( 1, aPointerEvent.iPosition.iY - Rect().iTl.iY ); - - if ( readyForScrolling ) - { - TRAP_IGNORE( HandlePhysicsScrollEventL( -iItemHeight ) ); - View()->SetCurrentItemIndex( newCurrentItemIndex ); - } - } - else - { - if ( readyForScrolling ) - { - TBool redrawDisabledBefore = View()->RedrawDisabled(); - View()->SetDisableRedraw( EFalse ); - CMmWidgetContainer* parent = static_cast( Parent() ); - parent->ResetWidgetPosition(); - DrawNow(); - View()->SetDisableRedraw( redrawDisabledBefore ); - } - } + nextScrollDelay = MmEffects::KEditModeScrollingDelayFactor * + Max( 1, aPointerEvent.iPosition.iY - Rect().iTl.iY ); + + if ( readyForScrolling ) + { + ScrollWithoutRedraw( -iItemHeight ); + View()->SetCurrentItemIndex( newCurrentItemIndex ); + } } else if ( IsPointerInBottomScrollingThreshold( aPointerEvent) ) { - // scroll down by one row - TInt lastItemIndex = iModel->NumberOfItems() - 1; - - // maximum top item index that can be set (greater top item index value would - // cause an empty row at the bottom of the menu) - TInt maxTopItemIndex = View()->CalcNewTopItemIndexSoItemIsVisible( lastItemIndex ); - TInt currentItemIndex = CurrentItemIndex(); - TInt newCurrentItemIndex = currentItemIndex + view->NumberOfColsInView(); - TInt distanceToScroll( iItemHeight ); - if ( View()->ItemIsVisible( lastItemIndex ) ) + TInt newCurrentItemIndex = CurrentItemIndex() + view->NumberOfColsInView(); + if ( newCurrentItemIndex > iModel->NumberOfItems() - 1 ) { - TPoint lastItemPos( View()->ItemPos( lastItemIndex ) ); - distanceToScroll = iItemHeight - ( Rect().iBr.iY - lastItemPos.iY ) - + Rect().Height() - iViewLayout.iHeight * iItemHeight; + newCurrentItemIndex = CurrentItemIndex(); } - - if ( newCurrentItemIndex <= lastItemIndex ) + + nextScrollDelay = MmEffects::KEditModeScrollingDelayFactor * + Max( 1, Rect().iBr.iY - aPointerEvent.iPosition.iY ); + + if ( readyForScrolling ) { - nextScrollDelay = MmEffects::KEditModeScrollingDelayFactor * - Max( 1, Rect().iBr.iY - aPointerEvent.iPosition.iY ); - - if ( readyForScrolling ) - { - TRAP_IGNORE( HandlePhysicsScrollEventL( distanceToScroll ) ); - View()->SetCurrentItemIndex( newCurrentItemIndex ); - } - } - else if ( TopItemIndex() < maxTopItemIndex ) - { - if ( readyForScrolling ) - { - TRAP_IGNORE( HandlePhysicsScrollEventL( distanceToScroll ) ); - View()->SetCurrentItemIndex( currentItemIndex ); - } + ScrollWithoutRedraw( iItemHeight ); + View()->SetCurrentItemIndex( newCurrentItemIndex ); } } - + return nextScrollDelay; } @@ -687,7 +688,7 @@ { CAknGrid::HandleViewRectSizeChangeL(); } - else + else { // for mirrored layout this function should do // exactly the same things as CAknGrid::HandleViewRectSizeChangeL @@ -713,16 +714,16 @@ const TInt numOfCols = view->NumberOfColsInView(); const TInt numOfRows = view->NumberOfRowsInView(); const TInt itemCount = iModel->NumberOfItems(); - + ASSERT( numOfCols > 0 ); - + TInt lastRow = 0; if ( itemCount > 0 ) { lastRow = ( itemCount - 1 ) / numOfCols; } TInt maxPossibleTopRow = Max( 0, lastRow - numOfRows + 1 ); - + TInt topRow = TopItemIndex() / numOfCols; if ( !( TopItemIndex() % numOfCols == 0 && diff -r f72a12da539e -r 5315654608de menufw/menufwui/mmwidgets/src/mmgridcontainer.cpp --- a/menufw/menufwui/mmwidgets/src/mmgridcontainer.cpp Thu Dec 17 08:40:49 2009 +0200 +++ b/menufw/menufwui/mmwidgets/src/mmgridcontainer.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -11,9 +11,9 @@ * * Contributors: * -* Description: -* Version : %version: MM_72 % << Don't touch! Updated by Synergy at check-out. -* Version : %version: MM_72 % << Don't touch! Updated by Synergy at check-out. +* Description: +* Version : %version: MM_73 % << Don't touch! Updated by Synergy at check-out. +* Version : %version: MM_73 % << Don't touch! Updated by Synergy at check-out. * */ @@ -39,9 +39,9 @@ // Two-phased constructor. // ----------------------------------------------------------------------------- // -CMmGridContainer* CMmGridContainer::NewLC( const TRect& aRect, +CMmGridContainer* CMmGridContainer::NewLC( const TRect& aRect, MObjectProvider* aObjectProvider, CMmTemplateLibrary* aLibrary ) - { + { CMmGridContainer* self = new( ELeave ) CMmGridContainer(); CleanupStack::PushL( self ); self->ConstructL( aRect, aObjectProvider, aLibrary ); @@ -53,9 +53,9 @@ // Two-phased constructor. // ----------------------------------------------------------------------------- // -CMmGridContainer* CMmGridContainer::NewL( const TRect& aRect, +CMmGridContainer* CMmGridContainer::NewL( const TRect& aRect, MObjectProvider* aObjectProvider, CMmTemplateLibrary* aLibrary ) - { + { CMmGridContainer* self = NewLC( aRect, aObjectProvider, aLibrary); CleanupStack::Pop( self ); return self; @@ -71,11 +71,11 @@ } // ----------------------------------------------------------------------------- -// +// // ----------------------------------------------------------------------------- // CAknGrid* CMmGridContainer::Grid() - { + { return iGrid; } // ----------------------------------------------------------------------------- @@ -84,14 +84,14 @@ // ----------------------------------------------------------------------------- // CMmGridContainer::~CMmGridContainer() - { + { delete iGrid; } // ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- -// +// THnSuiteWidgetType CMmGridContainer::WidgetType() { return EGridWidget; @@ -100,27 +100,27 @@ // CMmGridContainer::ConstructL() // 2nd phase constructor // ----------------------------------------------------------------------------- -// +// void CMmGridContainer::ConstructL( const TRect& aRect, MObjectProvider* aObjectProvider, CMmTemplateLibrary* aTemplateLibrary ) { CMmWidgetContainer::ConstructL(); - + SetMopParent( aObjectProvider ); - CreateWindowL(); // Creates window. + CreateWindowL(); // Creates window. iWidget = CreateGridL(aTemplateLibrary); iWidget->SetListBoxObserver( this ); SetRect( aRect ); // Sets rectangle of frame. - ActivateL(); // Activates window. ( Ready to draw ) + ActivateL(); // Activates window. ( Ready to draw ) SetupDrawer(); - SetHighlightVisibilityL( !AknLayoutUtils::PenEnabled() ); + SetHighlightVisibilityL( !AknLayoutUtils::PenEnabled() ); iPostProcessor = CMmPostEvaluationProcessor::NewL( *iDrawer ); } // ----------------------------------------------------------------------------- // CMmGridContainer::CreateGridL() // Constructs listbox from resource, creates scroll bar and sets empty -// list background text. +// list background text. // ----------------------------------------------------------------------------- // CMmGrid* CMmGridContainer::CreateGridL( CMmTemplateLibrary* aTemplateLibrary ) @@ -133,7 +133,7 @@ CAknGridView::EScrollFollowsItemsAndLoops ); iGrid->SetSecondaryScrollingType( CAknGridView::EScrollFollowsGrid ); - iGrid->ScrollBarFrame()->SetScrollBarVisibilityL( + iGrid->ScrollBarFrame()->SetScrollBarVisibilityL( CEikScrollBarFrame::EAuto, CEikScrollBarFrame::EAuto ); iGrid->ScrollBarFrame()->DrawBackground( EFalse, EFalse ); return iGrid; @@ -142,7 +142,7 @@ // ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- -// +// void CMmGridContainer::SizeChanged() { CMmWidgetContainer::SizeChanged(); @@ -171,12 +171,12 @@ CAknGridView::EScrollFollowsItemsAndLoops ); iGrid->SetSecondaryScrollingType( CAknGridView::EScrollFollowsGrid ); - + } - + // In EditMode we allow Avkon to redraw scrollbar background // to prevent scrollbar flicking. - // When edit mode is disabled, this redrawing causes performance problems + // When edit mode is disabled, this redrawing causes performance problems // (and disabling it does not produce erroneous side-effects). if( aIsEditMode ) { @@ -186,7 +186,7 @@ { iGrid->ScrollBarFrame()->DrawBackground( EFalse, EFalse ); } - + CMmWidgetContainer::SetEditModeL( aIsEditMode ); } @@ -196,7 +196,7 @@ // EXPORT_C void CMmGridContainer::SetEmptyTextL(const TDesC& aText) { - iGrid->SetEmptyGridTextL( aText ); + iGrid->SetEmptyGridTextL( aText ); } // ----------------------------------------------------------------------------- @@ -204,26 +204,9 @@ // ----------------------------------------------------------------------------- // EXPORT_C void CMmGridContainer::SetDefaultHighlightL( TBool aRedraw ) - { - CAknGridView* view = (CAknGridView*) iGrid->View(); - - if ( view ) - { - TInt defaultHighlight( 0 ); - TSize layout = TSize( view->NumberOfColsInView(), - view->NumberOfRowsInView() ); - - if ( Layout_Meta_Data::IsLandscapeOrientation() || FlipOpen() ) - { - defaultHighlight = LandscapeOrientationDefaultHighlight( layout ); - } - else - { - defaultHighlight = PortraitOrientationDefaultHighlight( layout ); - } - - SetManualHighlightL( defaultHighlight + DefaultHighlightOffset(), aRedraw ); - } + { + TInt defaultHighlight( 0 ); + SetManualHighlightL( defaultHighlight + DefaultHighlightOffset(), aRedraw ); } // ----------------------------------------------------------------------------- @@ -231,79 +214,17 @@ // // ----------------------------------------------------------------------------- // -TInt CMmGridContainer::LandscapeOrientationDefaultHighlight( TSize aLayout ) - { - TInt defaultHighlight( 0 ); - - if ( aLayout == TSize(MmGrid::K4By3LayoutX, MmGrid::K4By3LayoutY) - && iGrid->Model()->NumberOfItems() >= MmGrid::K4By3Threshold ) - { - defaultHighlight = MmGrid::K4By3DefaultHighlight; - } - else if ( aLayout == TSize(MmGrid::K5By4LayoutX, MmGrid::K5By4LayoutY) - && iGrid->Model()->NumberOfItems() >= MmGrid::K5By4Threshold ) - { - defaultHighlight = MmGrid::K5By4DefaultHighlight; - } - // When flip is opened, the phone layout is not changed immediately, - // so the phone might still be in portrait mode for a couple of secs. - // However, we have to set the correct default item immediately, and - // the correct item is the one for landscape mode, even if the phone - // is still in portrait mode. On variant switch 3x4 layout will be - // replaced by 4x3 layout, while 4x5 layout will change into 5x4. - else if ( aLayout == TSize( MmGrid::K3By4LayoutX, MmGrid::K3By4LayoutY ) - && iGrid->Model()->NumberOfItems() >= MmGrid::K4By3Threshold ) - { - defaultHighlight = MmGrid::K4By3DefaultHighlight; - } - else if ( aLayout == TSize( MmGrid::K4By5LayoutX, MmGrid::K4By5LayoutY ) - && iGrid->Model()->NumberOfItems() >= MmGrid::K5By4Threshold ) - { - defaultHighlight = MmGrid::K5By4DefaultHighlight; - } - - return defaultHighlight; - } - -// ----------------------------------------------------------------------------- -// -// -// ----------------------------------------------------------------------------- -// -TInt CMmGridContainer::PortraitOrientationDefaultHighlight( TSize aLayout ) - { - TInt defaultHighlight( 0 ); - - if ( aLayout == TSize(MmGrid::K4By5LayoutX, MmGrid::K4By5LayoutY ) - && iGrid->Model()->NumberOfItems() >= MmGrid::K4By5Threshold ) - { - defaultHighlight = MmGrid::K4By5DefaultHighlight; - } - else if ( aLayout == TSize(MmGrid::K3By4LayoutX, MmGrid::K3By4LayoutY) - && iGrid->Model()->NumberOfItems() >= MmGrid::K3By4Threshold ) - { - defaultHighlight = MmGrid::K3By4DefaultHighlight; - } - - return defaultHighlight; - } - -// ----------------------------------------------------------------------------- -// -// -// ----------------------------------------------------------------------------- -// TInt CMmGridContainer::DefaultHighlightOffset() { TInt topVisibleItemIndex = iGrid->View()->TopItemIndex(); TInt hiddenPixels = -iGrid->View()->ItemOffsetInPixels(); - - if ( iGrid->View()->ItemIsPartiallyVisible( topVisibleItemIndex ) + + if ( iGrid->View()->ItemIsPartiallyVisible( topVisibleItemIndex ) && hiddenPixels > iGrid->View()->ItemSize().iHeight / 2 ) { topVisibleItemIndex += ColumnsInCurrentView(); } - + return topVisibleItemIndex; } @@ -357,12 +278,12 @@ // ----------------------------------------------------------------------------- // void CMmGridContainer::SetHighlightVisibilityL( TBool aVisible ) - { + { CMmWidgetContainer::SetHighlightVisibilityL( aVisible ); } // --------------------------------------------------------------------------- -// +// // --------------------------------------------------------------------------- // void CMmGridContainer::HandleItemAdditionL() @@ -372,12 +293,12 @@ // --------------------------------------------------------------------------- -// +// // --------------------------------------------------------------------------- // void CMmGridContainer::HandleItemRemovalL() { - + GetMmModel()->HandleSuiteEventL( ESuiteItemsRemoved, GetMmModel()->GetSuiteModel() ); ValidateWidgetCurrentItemIndex(); iDrawer->RemoveFloatingItems(); @@ -385,12 +306,12 @@ { iDrawer->GetAnimator()->SetNextRedrawToWholeScreen(); } - + CacheWidgetPosition(); iGrid->HandleItemRemovalL(); RestoreWidgetPosition(); CacheWidgetPosition(); - + if ( iCurrentHighlight != iGrid->CurrentItemIndex() ) { iCurrentHighlight = iGrid->CurrentItemIndex(); @@ -409,40 +330,7 @@ } // --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- // -void CMmGridContainer::FlipStateChangedL() - { -// if ( !IsEditMode() ) -// { -// if ( FlipOpen() ) -// { -// if ( iTimer ) -// { -// delete iTimer; -// iTimer = NULL; -// } -// SetHighlightVisibilityL( ETrue ); -// if ( iCurrentHighlight == KErrNotFound ) -// { -// SetDefaultHighlightL( ETrue ); -// } -// } -// else -// { -// if ( AknLayoutUtils::PenEnabled() && !iTimer ) -// { -// iTimer = CMmHighlightTimer::NewL( this ); -// } -// SetHighlightVisibilityL( EFalse ); -// DrawNow(); -// } -// } - } - -// --------------------------------------------------------------------------- -// // --------------------------------------------------------------------------- // TInt CMmGridContainer::ColumnsInCurrentView() @@ -451,7 +339,7 @@ return view->NumberOfColsInView(); } // --------------------------------------------------------------------------- -// +// // --------------------------------------------------------------------------- // TInt CMmGridContainer::RowsInCurrentView() @@ -461,7 +349,7 @@ } // --------------------------------------------------------------------------- -// +// // --------------------------------------------------------------------------- // void CMmGridContainer::DrawView() @@ -502,7 +390,7 @@ // TBool CMmGridContainer::ItemIsVisible( TInt aItemIndex ) const { - CListBoxView* v = iGrid->View(); + CListBoxView* v = iGrid->View(); TRect itemRect( v->ItemPos( aItemIndex ), v->ItemSize( aItemIndex ) ); TRect viewRect = v->ViewRect(); TBool isVisible = EFalse; diff -r f72a12da539e -r 5315654608de menufw/menufwui/mmwidgets/src/mmlctutils.cpp --- a/menufw/menufwui/mmwidgets/src/mmlctutils.cpp Thu Dec 17 08:40:49 2009 +0200 +++ b/menufw/menufwui/mmwidgets/src/mmlctutils.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -26,11 +26,11 @@ #include #include - + // --------------------------------------------------------------------------- // // --------------------------------------------------------------------------- -// +// TAknWindowComponentLayout MmLCTUtils::ItemLayout( const TDesC8& aLayout, TInt aVariety ) { if ( !aLayout.Compare(KListSingleLargeGraphicPane8)) @@ -79,7 +79,7 @@ // --------------------------------------------------------------------------- // // --------------------------------------------------------------------------- -// +// TAknTextComponentLayout MmLCTUtils::TextLayout( const TDesC8& aLayout, TInt aVariety ) { if ( aLayout.Compare(KUiaccelAalistSinglePaneT18) == 0 ) @@ -105,7 +105,7 @@ else if ( aLayout.Compare(KlistSingleLargeGraphicPaneT18) == 0 ) { return AknLayoutScalable_Avkon::list_single_large_graphic_pane_t1(aVariety); - } + } else if ( aLayout.Compare(KUiaccelAagridCellImagePaneT18) == 0 ) { return AknLayoutScalable_UiAccel::aagrid_cell_image_pane_t1(aVariety); @@ -154,7 +154,7 @@ else if ( aLayout.Compare(KUiaccelAalistDoubleGraphicPaneG38) == 0 ) { return AknLayoutScalable_UiAccel::aalist_double_graphic_pane_g3(aVariety); - } + } else if ( aLayout.Compare(KUiaccelAalistDoublePaneG18) == 0 ) { return AknLayoutScalable_UiAccel::aalist_double_pane_g1(aVariety); @@ -162,7 +162,7 @@ else if ( aLayout.Compare(KUiaccelAalistDoublePaneG28) == 0 ) { return AknLayoutScalable_UiAccel::aalist_double_pane_g2(aVariety); - } + } else if ( aLayout.Compare(KlistSingleLargeGraphicPane8) == 0 ) { return AknLayoutScalable_Avkon::list_single_large_graphic_pane(aVariety, 0,0); @@ -174,15 +174,15 @@ else if ( aLayout.Compare(KlistSingleLargeGraphicPaneG2Cp28) == 0 ) { return AknLayoutScalable_Avkon::list_single_large_graphic_pane_g2_cp2(aVariety); - } + } else if ( aLayout.Compare(KlistSingleLargeGraphicPaneG4Cp28) == 0 ) { return AknLayoutScalable_Avkon::list_single_large_graphic_pane_g4_cp2(aVariety); - } + } else if ( aLayout.Compare(KUiaccelAagridCellImagePaneG18) == 0 ) { return AknLayoutScalable_UiAccel::aagrid_cell_image_pane_g1(aVariety); - } + } else if ( aLayout.Compare(KUiaccelAagridCellImagePaneG28) == 0 ) { return AknLayoutScalable_UiAccel::aagrid_cell_image_pane_g2(aVariety); @@ -251,8 +251,8 @@ { User::Panic(KMLID, -1); } - return TAknWindowComponentLayout(); - } + return TAknWindowComponentLayout(); + } // --------------------------------------------------------------------------- // @@ -278,10 +278,10 @@ // // --------------------------------------------------------------------------- // -void MmLCTUtils::SetupTextSubCellTemplate( TSize aItemSize, +void MmLCTUtils::SetupTextSubCellTemplate( TSize aItemSize, TTemplateChild& aSubCellTemplate ) { - TAknTextComponentLayout textLayout = TextLayout( aSubCellTemplate.iLct, aSubCellTemplate.iVariety); + TAknTextComponentLayout textLayout = TextLayout( aSubCellTemplate.iLct, aSubCellTemplate.iVariety); TAknTextLineLayout textlineLayout = textLayout.LayoutLine(); TAknLayoutText t; t.LayoutText( aItemSize, textlineLayout ); @@ -295,12 +295,12 @@ // // --------------------------------------------------------------------------- // -void MmLCTUtils::SetupGraphicSubCellTemplate( TSize aItemSize, +void MmLCTUtils::SetupGraphicSubCellTemplate( TSize aItemSize, TTemplateChild& aSubCellTemplate ) { TAknWindowComponentLayout graphicLayout = GraphicLayout ( aSubCellTemplate.iLct, aSubCellTemplate.iVariety); - TAknLayoutRect r; + TAknLayoutRect r; r.LayoutRect( aItemSize, graphicLayout.LayoutLine() ); aSubCellTemplate.iTextAlign = CGraphicsContext::ECenter ; aSubCellTemplate.iRectAccordingToParent = r.Rect(); @@ -331,11 +331,6 @@ TInt rows(0); cols = MmLCTUtils::LCTParameterLimits( aLCTTemplate, aVariety ).LastColumn() + 1; rows = MmLCTUtils::LCTParameterLimits( aLCTTemplate, aVariety ).LastRow() + 1; - if ( aLCTTemplate.Compare(KCellAppPane8) == 0 && aVariety == 3 ) - { - cols = 6; - rows = 2; - } return TSize( cols, rows); } diff -r f72a12da539e -r 5315654608de menufw/menufwui/mmwidgets/src/mmtemplatelibrary.cpp --- a/menufw/menufwui/mmwidgets/src/mmtemplatelibrary.cpp Thu Dec 17 08:40:49 2009 +0200 +++ b/menufw/menufwui/mmwidgets/src/mmtemplatelibrary.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -11,7 +11,7 @@ * * Contributors: * -* Description: +* Description: * */ @@ -31,7 +31,7 @@ // --------------------------------------------------------------------------- -// +// // --------------------------------------------------------------------------- // TUint32 HBuf16Hash( HBufC8* const & aBuf ) @@ -51,9 +51,9 @@ // // --------------------------------------------------------------------------- //: -CMmTemplateLibrary::CMmTemplateLibrary() +CMmTemplateLibrary::CMmTemplateLibrary() : iWidgetType(EWidgetTypeNone), - iTemplateSizesMap( &HBuf16Hash, &HBuf16Ident ), + iTemplateSizesMap( &HBuf16Hash, &HBuf16Ident ), iTemplateChildrenMap( &HBuf16Hash, &HBuf16Ident ), iMoveIndicatorRectsMap( &HBuf16Hash, &HBuf16Ident ) { @@ -76,26 +76,26 @@ THashMapIter iter( iTemplateSizesMap ); while ( HBufC8* const * ptr = iter.NextKey() ) - { + { delete *ptr; - } + } iTemplateSizesMap.Close(); THashMapIter > iter2( iTemplateChildrenMap ); while ( HBufC8* const * ptr = iter2.NextKey() ) - { + { iter2.CurrentValue()->Close(); delete *ptr; - } + } iTemplateChildrenMap.Close(); - + THashMapIter iter4( iMoveIndicatorRectsMap ); while ( HBufC8* const * ptr = iter4.NextKey() ) - { + { delete *ptr; - } + } iMoveIndicatorRectsMap.Close(); - + } // --------------------------------------------------------------------------- @@ -120,7 +120,7 @@ self->ConstructL(); return self; } - + // --------------------------------------------------------------------------- // // --------------------------------------------------------------------------- @@ -134,21 +134,21 @@ // // --------------------------------------------------------------------------- // -TSize CMmTemplateLibrary::GetSize( TMmWidgetType aWidgetType, const TDesC8& aTemplate, +TSize CMmTemplateLibrary::GetSize( TMmWidgetType aWidgetType, const TDesC8& aTemplate, TBool aLandscapeOrientation, TBool aHighlighted, TRect aParentRect ) { TSize result; - GetSize(result, aWidgetType, aTemplate, aLandscapeOrientation, + GetSize(result, aWidgetType, aTemplate, aLandscapeOrientation, aHighlighted, aParentRect ); - return result; + return result; } // --------------------------------------------------------------------------- // // --------------------------------------------------------------------------- // -TInt CMmTemplateLibrary::GetSize( TSize& aItemSize, - TMmWidgetType aWidgetType, const TDesC8& aTemplate, +TInt CMmTemplateLibrary::GetSize( TSize& aItemSize, + TMmWidgetType aWidgetType, const TDesC8& aTemplate, TBool aLandscapeOrientation, TBool aHighlighted, TRect aParentRect ) { if ( KNullDesC8()== aTemplate || aParentRect == TRect(TPoint(0,0), TPoint(0,0)) @@ -159,9 +159,9 @@ UpdateParentRect( aParentRect, aLandscapeOrientation ); TInt err( KErrNone ); - HBufC8* lookup_string = LookupText( aTemplate, aWidgetType, iZoom, - aLandscapeOrientation, aHighlighted ); - + HBufC8* lookup_string = LookupText( aTemplate, aWidgetType, + aLandscapeOrientation, aHighlighted ); + TSize* itemSize = iTemplateSizesMap.Find( lookup_string ); if ( !itemSize ) { @@ -181,7 +181,7 @@ iWidgetType = aWidgetType; TSize layoutSize; TInt err( KErrNone ); - TRAP( err, layoutSize = GetLayoutSizeL( iWidgetType, aTemplate, + TRAP( err, layoutSize = GetLayoutSizeL( iWidgetType, aTemplate, aLandscapeOrientation ) ); if( err == KErrNone ) { @@ -190,7 +190,7 @@ aItemSize = *itemSize; } delete lookup_string; - + return err; } @@ -198,7 +198,7 @@ // // --------------------------------------------------------------------------- // -TSize CMmTemplateLibrary::GetLayoutSizeL( TMmWidgetType aWidgetType, const TDesC8& aTemplate, +TSize CMmTemplateLibrary::GetLayoutSizeL( TMmWidgetType aWidgetType, const TDesC8& aTemplate, TBool aLandscapeOrientation ) { if ( KNullDesC8()== aTemplate ) @@ -210,7 +210,7 @@ { case EGrid: { - HBufC8* lookup_string = LookupLayoutText( aWidgetType, iZoom, + HBufC8* lookup_string = LookupLayoutText( aWidgetType, aTemplate, aLandscapeOrientation ); CleanupStack::PushL( lookup_string ); layoutSize = iTemplateSizesMap.Find( lookup_string ); @@ -223,7 +223,7 @@ } CleanupStack::PopAndDestroy( lookup_string ); } - + break; case EListbox: return TSize( MmListBox::KCols,0 ); @@ -242,10 +242,10 @@ TBool aHighlighted) { ASSERT( KNullDesC8() != aTemplate && aTemplate.Compare( KEmpty8 ) ); - - HBufC8* lookup_string = LookupText(aTemplate, aWidgetType, iZoom, + + HBufC8* lookup_string = LookupText(aTemplate, aWidgetType, aLandscapeOrientation, aHighlighted ); - HBufC8* lookup_indicator_string = LookupIndicatorText( *lookup_string ); + HBufC8* lookup_indicator_string = LookupIndicatorText( *lookup_string ); TRect* itemRect = iMoveIndicatorRectsMap.Find( lookup_indicator_string ); if (!itemRect) @@ -263,7 +263,7 @@ } } } - + delete lookup_indicator_string; delete lookup_string; return *itemRect; @@ -279,7 +279,7 @@ { ASSERT( KNullDesC8() != aTemplate && aTemplate.Compare( KEmpty8 ) ); - HBufC8* lookup_string = LookupText( aTemplate, aWidgetType, iZoom, + HBufC8* lookup_string = LookupText( aTemplate, aWidgetType, aLandscapeOrientation, aHighlighted ); CleanupStack::PushL( lookup_string ); RArray* children = iTemplateChildrenMap.Find( lookup_string ); @@ -289,8 +289,8 @@ children = iTemplateChildrenMap.Find( lookup_string ); if (!children) { - User::Panic( KMtlPanic, -1); - } + User::Panic( KMtlPanic, -1); + } } CleanupStack::PopAndDestroy( lookup_string ); for (TInt i = 0; i < children->Count(); i++) @@ -311,27 +311,27 @@ TBool aLandscapeOrientation, TBool aHighlighted) { ASSERT( KNullDesC8() != aTemplate && aTemplate.Compare( KEmpty8 ) ); - - HBufC8* lookup_string = LookupText(aTemplate, aWidgetType, iZoom, + + HBufC8* lookup_string = LookupText(aTemplate, aWidgetType, aLandscapeOrientation, aHighlighted ); CleanupStack::PushL( lookup_string ); - HBufC8* lookup_indicator_string = LookupIndicatorText( *lookup_string ); + HBufC8* lookup_indicator_string = LookupIndicatorText( *lookup_string ); CleanupStack::PushL( lookup_indicator_string ); - + RArray* children = iTemplateChildrenMap.Find( lookup_indicator_string ); if ( !children ) { TSize itemSize; - GetSize( itemSize, aWidgetType, aTemplate, aLandscapeOrientation, EFalse, GetParentRect( aLandscapeOrientation ) ); + GetSize( itemSize, aWidgetType, aTemplate, aLandscapeOrientation, EFalse, GetParentRect( aLandscapeOrientation ) ); SetupMoveIndicatorTemplateChildrenL( *lookup_indicator_string, itemSize ); children = iTemplateChildrenMap.Find( lookup_indicator_string ); if (!children) User::Panic( KMtlPanic, -1); } - + CleanupStack::PopAndDestroy( lookup_indicator_string ); CleanupStack::PopAndDestroy( lookup_string ); - + for (TInt i = 0; i < children->Count(); i++) { aArray.AppendL((*children)[i]); @@ -342,9 +342,8 @@ // // --------------------------------------------------------------------------- // -HBufC8* CMmTemplateLibrary::LookupText( const TDesC8& aTemplate, - TMmWidgetType aWidgetType, TAknUiZoom aZoom, TBool aLandscapeOrientation, - TBool aHighlighted ) +HBufC8* CMmTemplateLibrary::LookupText( const TDesC8& aTemplate, + TMmWidgetType aWidgetType, TBool aLandscapeOrientation, TBool aHighlighted ) { HBufC8* lookup_string = HBufC8::New( MmTemplateContants::KTemplateChildTextLength ); if (lookup_string) @@ -366,18 +365,6 @@ lookup_string_ptr.Append( KColon8 ); lookup_string_ptr.AppendNum( aHighlighted ); lookup_string_ptr.Append( KColon8 ); - switch ( aZoom ) - { - case EAknUiZoomLarge : - lookup_string_ptr.Append( KZoomLarge8 ); - break; - case EAknUiZoomSmall : - lookup_string_ptr.Append( KZoomSmall8 ); - break; - default : - lookup_string_ptr.Append( KZoomNormal8 ); - break; - } } return lookup_string; } @@ -385,9 +372,9 @@ // ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- -// +// HBufC8* CMmTemplateLibrary::LookupLayoutText( TMmWidgetType aWidgetType, - TAknUiZoom aZoom, const TDesC8& aTemplate, TBool aLandscapeOrientation ) + const TDesC8& aTemplate, TBool aLandscapeOrientation ) { HBufC8* lookup_string = HBufC8::New( MmTemplateContants::KTemplateChildTextLength ); if (lookup_string) @@ -403,18 +390,6 @@ break; } lookup_string_ptr.Append( KColon8 ); - switch ( aZoom ) - { - case EAknUiZoomLarge: - lookup_string_ptr.Append( KZoomLarge8 ); - break; - case EAknUiZoomSmall : - lookup_string_ptr.Append( KZoomSmall8 ); - break; - default: - lookup_string_ptr.Append( KZoomNormal8 ); - break; - } lookup_string_ptr.Append( KColon8 ); lookup_string_ptr.Append( aTemplate ); lookup_string_ptr.Append( KColon8 ); @@ -426,7 +401,7 @@ // ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- -// +// HBufC8* CMmTemplateLibrary::LookupIndicatorText( const TDesC8& aLookupText ) { HBufC8* lookup_string = HBufC8::New( MmTemplateContants::KTemplateChildTextLength ); @@ -437,25 +412,25 @@ lookup_string_ptr.Append( KColon8 ); lookup_string_ptr.Append( aLookupText ); } - + return lookup_string; } // ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- -// -void CMmTemplateLibrary::LoadTemplateL( TMmWidgetType aWidgetType, +// +void CMmTemplateLibrary::LoadTemplateL( TMmWidgetType aWidgetType, const TDesC8& aTemplate, TBool aLandscapeOrientation ) { iWidgetType = aWidgetType; - DEBUG(("_Mm_:CMmTemplateLibrary::LoadTemplateL IN")); + DEBUG(("_Mm_:CMmTemplateLibrary::LoadTemplateL IN")); TMmTemplateType mmTemplateType; HBufC8* content = GetTemplateContentL( aTemplate, aWidgetType, mmTemplateType ); CleanupStack::PushL( content ); RXmlEngDOMImplementation domImpl; CleanupClosePushL( domImpl ); - RXmlEngDOMParser domParser; + RXmlEngDOMParser domParser; CleanupClosePushL( domParser ); DEBUG(("_Mm_:CMmTemplateLibrary::LoadTemplateL Opening domImpl")); domImpl.OpenL(); @@ -463,7 +438,7 @@ DEBUG(("_Mm_:CMmTemplateLibrary::LoadTemplateL parsing content...")); RXmlEngDocument xmlDoc = domParser.ParseL( *content ); CleanupClosePushL( xmlDoc ); - + // first orientation RXmlEngNodeList orientElements; CleanupClosePushL( orientElements ); @@ -490,7 +465,7 @@ TXmlEngElement element; while ( elements.HasNext() ) { - element = elements.Next(); + element = elements.Next(); DEBUG(("_Mm_:iMmTemplateType != EMmTemplateMoveIndicator")); if (element.AttributeValueL(KId8) == KHighlight8) { @@ -514,22 +489,22 @@ CleanupStack::PopAndDestroy( &elements ); } } - + CleanupStack::PopAndDestroy( &orientElements ); CleanupStack::PopAndDestroy( &xmlDoc ); CleanupStack::PopAndDestroy( &domParser ); CleanupStack::PopAndDestroy( &domImpl ); CleanupStack::PopAndDestroy(content); - DEBUG(("_Mm_:CMmTemplateLibrary::LoadTemplateL OUT")); + DEBUG(("_Mm_:CMmTemplateLibrary::LoadTemplateL OUT")); } // ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- -// -void CMmTemplateLibrary::ProcessElementL(TMmTemplateType aMmTemplateType, - TXmlEngElement aElement, - const TDesC8& aTemplate, +// +void CMmTemplateLibrary::ProcessElementL(TMmTemplateType aMmTemplateType, + TXmlEngElement aElement, + const TDesC8& aTemplate, TBool aLandscapeOrientation, TBool aHighlighted ) { @@ -548,8 +523,8 @@ // // ----------------------------------------------------------------------------- // -void CMmTemplateLibrary::ProcessLCTTemplateElementL(TXmlEngElement aElement, - const TDesC8& aTemplate, +void CMmTemplateLibrary::ProcessLCTTemplateElementL(TXmlEngElement aElement, + const TDesC8& aTemplate, TBool aLandscapeOrientation, TBool aHighlighted ) { @@ -565,18 +540,11 @@ if ( !layoutElement.Name().Compare( KLayout8 ) ) { TPtrC8 lctAtt = layoutElement.AttributeValueL(KLct8); - + // set layout for grid TInt variety; - if ( Zoom() == EAknUiZoomLarge && iWidgetType == EGrid) - { - HnConvUtils::Str8ToInt(layoutElement.AttributeValueL(KVarietyZoom8), variety); - } - else - { - HnConvUtils::Str8ToInt(layoutElement.AttributeValueL(KVariety8), variety); - } - + HnConvUtils::Str8ToInt(layoutElement.AttributeValueL(KVariety8), variety); + TSize layoutSize; if ( iWidgetType == EGrid ) { @@ -590,12 +558,12 @@ TAknWindowLineLayout layout; TSize itemSize = GetLCTSize( lctAtt, variety, layout, aLandscapeOrientation ); - + AdjustItemSize( itemSize, layoutSize, aLandscapeOrientation ); - HBufC8* lookup_string = LookupText( aTemplate, iWidgetType, iZoom, + HBufC8* lookup_string = LookupText( aTemplate, iWidgetType, aLandscapeOrientation, aHighlighted ); iTemplateSizesMap.InsertL( lookup_string, itemSize ); - + // setup children RArray< TTemplateChild > childrenDefinition; CleanupClosePushL( childrenDefinition ); @@ -607,20 +575,13 @@ { childElement = childrenElements.Next(); TPtrC8 name = childElement.Name(); - if ( !name.Compare( KTextVisual8 ) || + if ( !name.Compare( KTextVisual8 ) || !name.Compare( KImageVisual8 ) ) - { + { TTemplateChild childTemplate; childTemplate.iLct = childElement.AttributeValueL(KLct8); TInt variety; - if ( Zoom() != EAknUiZoomNormal && iWidgetType == EGrid ) - { - HnConvUtils::Str8ToInt(childElement.AttributeValueL(KVarietyZoom8), variety); - } - else - { - HnConvUtils::Str8ToInt(childElement.AttributeValueL(KVariety8), variety); - } + HnConvUtils::Str8ToInt(childElement.AttributeValueL(KVariety8), variety); childTemplate.iVariety = variety; TPtrC8 ptr = childElement.AttributeValueL(KHAlign8); @@ -640,17 +601,17 @@ { childTemplate.iHAlign = EManualAlignRight; } - + SetupLCTTemplateL( childTemplate, childElement, itemSize ); childrenDefinition.AppendL( childTemplate ); } } CleanupStack::PopAndDestroy( &childrenElements ); // save children defintion in map - lookup_string = LookupText(aTemplate, iWidgetType, iZoom, + lookup_string = LookupText(aTemplate, iWidgetType, aLandscapeOrientation, aHighlighted ); iTemplateChildrenMap.InsertL(lookup_string, childrenDefinition); - CleanupStack::Pop( &childrenDefinition ); + CleanupStack::Pop( &childrenDefinition ); break; } } @@ -661,13 +622,13 @@ // // ----------------------------------------------------------------------------- // -void CMmTemplateLibrary::ProcessCustomTemplateElementL(TXmlEngElement aElement, - const TDesC8& aTemplate, +void CMmTemplateLibrary::ProcessCustomTemplateElementL(TXmlEngElement aElement, + const TDesC8& aTemplate, TBool aLandscapeOrientation, TBool aHighlighted ) { RXmlEngNodeList layoutElements; - CleanupClosePushL( layoutElements ); + CleanupClosePushL( layoutElements ); aElement.GetChildElements( layoutElements ); TXmlEngElement layoutElement; while ( layoutElements.HasNext() ) @@ -680,27 +641,27 @@ TInt height; TInt width; HBufC8* lookup_string; - + HnConvUtils::Str8ToInt(layoutElement.AttributeValueL(KHeight8), height); - HnConvUtils::Str8ToInt(layoutElement.AttributeValueL(KWidth8), width); - lookup_string = LookupText( aTemplate, iWidgetType, iZoom, + HnConvUtils::Str8ToInt(layoutElement.AttributeValueL(KWidth8), width); + lookup_string = LookupText( aTemplate, iWidgetType, aLandscapeOrientation, aHighlighted ); - itemSize = TSize( width, height ); - - - TSize layoutSize = ( aLandscapeOrientation ) ? - TSize( MmGrid::KColsLandscapeZoomNormal, MmGrid::KRowsLandscapeZoomNormal ): + itemSize = TSize( width, height ); + + + TSize layoutSize = ( aLandscapeOrientation ) ? + TSize( MmGrid::KColsLandscapeZoomNormal, MmGrid::KRowsLandscapeZoomNormal ): TSize( MmGrid::KColsPortraitZoomNormal, MmGrid::KRowsPortraitZoomNormal ) ; layoutSize = ( iWidgetType == EGrid ) ? layoutSize: TSize(MmListBox::KCols,0); CacheLayoutSizeL( layoutSize, aTemplate, aLandscapeOrientation ); - + AdjustItemWidth( itemSize, layoutSize, aLandscapeOrientation ); iTemplateSizesMap.InsertL(lookup_string, itemSize); // set children RArray< TTemplateChild > childrenDefinition; - CleanupClosePushL( childrenDefinition ); - + CleanupClosePushL( childrenDefinition ); + RXmlEngNodeList childrenElements; CleanupClosePushL( childrenElements ); layoutElement.GetChildElements( childrenElements ); @@ -709,9 +670,9 @@ { childElement = childrenElements.Next(); TPtrC8 name = childElement.Name(); - if ( !name.Compare( KTextVisual8 ) || + if ( !name.Compare( KTextVisual8 ) || !name.Compare( KImageVisual8 ) ) - { + { TTemplateChild childTemplate; SetupCustomTemplateL( childTemplate, childElement ); childrenDefinition.AppendL( childTemplate ); @@ -719,7 +680,7 @@ } CleanupStack::PopAndDestroy( &childrenElements ); // save children defintion in map - lookup_string = LookupText(aTemplate, iWidgetType, iZoom, + lookup_string = LookupText(aTemplate, iWidgetType, aLandscapeOrientation, aHighlighted ); iTemplateChildrenMap.InsertL(lookup_string, childrenDefinition); CleanupStack::Pop( &childrenDefinition ); @@ -733,7 +694,7 @@ // ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- -// +// HBufC8* CMmTemplateLibrary::GetTemplateContentL(const TDesC8& aTemplate, TMmWidgetType aWidgetType, TMmTemplateType& aMmTemplateType) { @@ -758,32 +719,32 @@ // ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- -// -void CMmTemplateLibrary::GetTemplateFileContentL( HBufC8*& aContent, - const TDesC8& aTemplate, TMmWidgetType aWidgetType, +// +void CMmTemplateLibrary::GetTemplateFileContentL( HBufC8*& aContent, + const TDesC8& aTemplate, TMmWidgetType aWidgetType, TMmTemplateType& aMmTemplateType, TBool aLoadCustomTemplate ) { - DEBUG(("_Mm_:CMmTemplateLibrary::GetTemplateContentL IN")); + DEBUG(("_Mm_:CMmTemplateLibrary::GetTemplateContentL IN")); TFileName filename; // create filename egz: akn_logical_template_3.xml filename.Copy(aTemplate); filename.Insert(0, KUnderline ); filename.Insert(0, KAkn ); filename.Append( KXmlExt ); - + // append path egz: z:\\resource\\grid\\lct\\akn_logical_template_3.xml - + if ( !aLoadCustomTemplate ) { filename.Insert(0, KBslash ); filename.Insert(0, KLct ); } - else + else { filename.Insert(0, KBslash ); filename.Insert(0, KCustom ); } - + switch (aWidgetType) { case EGrid: @@ -795,21 +756,21 @@ filename.Insert(0, KWidgetTypeList ); break; } - - filename.Insert(0, KZResource ); - + + filename.Insert(0, KZResource ); + DEBUG(("\t_Mm_:tail: %S", &filename)); DEBUG(("_Mm_:CMmTemplateLibrary::GetTemplateContentL OUT")); - + // load LCT Template or if it does not exist then load custom template aContent = HnUtils::ReadFileLC(filename); CleanupStack::Pop( aContent ); - + if ( aLoadCustomTemplate ) { aMmTemplateType = ETemplateTypeCustom; } - else + else { aMmTemplateType = ETemplateTypeLCT; } @@ -820,10 +781,10 @@ // // ----------------------------------------------------------------------------- // -TSize CMmTemplateLibrary::GetLCTSize( const TDesC8& aLCTTemplate, TInt aVariety, +TSize CMmTemplateLibrary::GetLCTSize( const TDesC8& aLCTTemplate, TInt aVariety, TAknWindowLineLayout& aWindowLayout, TBool aLandscapeOrientation ) { - TSize size = MmLCTUtils::GetLCTSize( aLCTTemplate, aVariety, + TSize size = MmLCTUtils::GetLCTSize( aLCTTemplate, aVariety, GetParentRect( aLandscapeOrientation ), aWindowLayout ); return size; } @@ -832,13 +793,13 @@ // // ----------------------------------------------------------------------------- // -void CMmTemplateLibrary::SetupLCTTemplateL(TTemplateChild& aChildTemplate, +void CMmTemplateLibrary::SetupLCTTemplateL(TTemplateChild& aChildTemplate, TXmlEngElement& aChildElement, TSize aItemSize ) { TPtrC8 name = aChildElement.Name(); aChildTemplate.iData = aChildElement.AttributeValueL(KId8); SetupTemplateVisualId( aChildTemplate ); - + // read attribute name (mm_title, mm_icon) RXmlEngNodeList attributeElements; CleanupClosePushL( attributeElements ); @@ -846,7 +807,7 @@ TXmlEngElement attElement; while ( attributeElements.HasNext() ) { - attElement = attributeElements.Next(); + attElement = attributeElements.Next(); TPtrC8 nameAtt = attElement.AttributeValueL(KName8); if ( !name.Compare( KTextVisual8 ) && !nameAtt.Compare( KText8 ) ) @@ -873,16 +834,16 @@ TPtrC8 name = aChildElement.Name(); TInt positionx; TInt positiony; TInt height; TInt width; - + HnConvUtils::Str8ToInt(aChildElement.AttributeValueL(KPositionX8), positionx); - HnConvUtils::Str8ToInt(aChildElement.AttributeValueL(KPositionY8), positiony); + HnConvUtils::Str8ToInt(aChildElement.AttributeValueL(KPositionY8), positiony); HnConvUtils::Str8ToInt(aChildElement.AttributeValueL(KHeight8), height); HnConvUtils::Str8ToInt(aChildElement.AttributeValueL(KWidth8), width); aChildTemplate.iRectAccordingToParent = TRect( TPoint(positionx,positiony), TSize(width, height) ); - + aChildTemplate.iData = aChildElement.AttributeValueL(KId8); SetupTemplateVisualId( aChildTemplate ); - + // read attribute name (mm_title, mm_icon) RXmlEngNodeList attributeElements; CleanupClosePushL( attributeElements ); @@ -890,7 +851,7 @@ TXmlEngElement attElement; while ( attributeElements.HasNext() ) { - attElement = attributeElements.Next(); + attElement = attributeElements.Next(); TPtrC8 nameAtt = attElement.AttributeValueL(KName8); if ( !name.Compare( KTextVisual8 ) && !nameAtt.Compare( KText8 ) ) @@ -912,7 +873,7 @@ { aChildTemplate.iFontId = EAknLogicalFontPrimarySmallFont; } - else + else { aChildTemplate.iFontId = EAknLogicalFontSecondaryFont; } @@ -925,7 +886,7 @@ aChildTemplate.iTextAlign = static_cast(textAlign); } } - + CleanupStack::PopAndDestroy( &attributeElements ); } @@ -939,7 +900,7 @@ { aChildTemplate.iImageVisualId = EImageVisualIdEditMode; } - else + else { aChildTemplate.iImageVisualId = EImageVisualIdNormalMode; } @@ -957,7 +918,7 @@ childTemplate.iIsImage = ETrue; childTemplate.iFontId = EAknLogicalFontSecondaryFont; childTemplate.iTextAlign = CGraphicsContext::ELeft; - childTemplate.iRectAccordingToParent = TRect( TPoint( 0,0 ), + childTemplate.iRectAccordingToParent = TRect( TPoint( 0,0 ), TPoint( aSize.iWidth, aSize.iHeight ) ); childTemplate.iData = TBufC8< MmTemplateContants::KTemplateChildTextLength >( KMmBackdropIcon8 ); SetupTemplateVisualId( childTemplate ); @@ -969,49 +930,49 @@ // // ----------------------------------------------------------------------------- // -void CMmTemplateLibrary::SetupMoveIndicatorTemplateChildrenL( +void CMmTemplateLibrary::SetupMoveIndicatorTemplateChildrenL( const TDesC8& aLookupString, TSize aItemSize ) { RArray< TTemplateChild > childrenDefinition; TTemplateChild childTemplate; childTemplate.iIsImage = ETrue; - childTemplate.iImageVisualId = EImageVisualIdNormalMode; + childTemplate.iImageVisualId = EImageVisualIdNormalMode; childTemplate.iFontId = EAknLogicalFontSecondaryFont; childTemplate.iTextAlign = CGraphicsContext::ELeft; - TPoint startingPosition = TPoint( - MmTemplateContants::KMoveIndicatorStartingPos, + TPoint startingPosition = TPoint( + MmTemplateContants::KMoveIndicatorStartingPos, MmTemplateContants::KMoveIndicatorStartingPos); - + //setup move_indicator_arrow_left - childTemplate.iRectAccordingToParent = TRect(TPoint(0,aItemSize.iHeight/2 + startingPosition.iY/2), - TPoint(startingPosition.iX, + childTemplate.iRectAccordingToParent = TRect(TPoint(0,aItemSize.iHeight/2 + startingPosition.iY/2), + TPoint(startingPosition.iX, startingPosition.iY*3/2 + aItemSize.iHeight/2)); - childTemplate.iData = TBufC8< MmTemplateContants::KTemplateChildTextLength>( + childTemplate.iData = TBufC8< MmTemplateContants::KTemplateChildTextLength>( KMmMoveIndicatorArrowLeft8 ); childrenDefinition.AppendL( childTemplate ); - + //setup move_indicator_arrow_right childTemplate.iRectAccordingToParent = TRect( - TPoint(startingPosition.iX + aItemSize.iWidth , aItemSize.iHeight/2 + startingPosition.iY/2), - TPoint(startingPosition.iX*2 + aItemSize.iWidth, + TPoint(startingPosition.iX + aItemSize.iWidth , aItemSize.iHeight/2 + startingPosition.iY/2), + TPoint(startingPosition.iX*2 + aItemSize.iWidth, startingPosition.iY*3/2 + aItemSize.iHeight/2)); childTemplate.iData = TBufC8< MmTemplateContants::KTemplateChildTextLength>( KMmMoveIndicatorArrowRight8 ); childrenDefinition.AppendL( childTemplate ); - + //setup move_indicator_arrow_top - childTemplate.iRectAccordingToParent = TRect(TPoint( aItemSize.iWidth/2 + startingPosition.iX/2, 0 ), + childTemplate.iRectAccordingToParent = TRect(TPoint( aItemSize.iWidth/2 + startingPosition.iX/2, 0 ), TPoint(aItemSize.iWidth/2 + startingPosition.iX*3/2, startingPosition.iY)); childTemplate.iData = TBufC8< MmTemplateContants::KTemplateChildTextLength >( KMmMoveIndicatorArrowTop8 ); childrenDefinition.AppendL( childTemplate ); - + //setup move_indicator_arrow_bottom - childTemplate.iRectAccordingToParent = TRect( TPoint( aItemSize.iWidth/2 + startingPosition.iX/2, - aItemSize.iHeight + startingPosition.iY + 2 ), - TPoint(aItemSize.iWidth/2 + startingPosition.iX*3/2, + childTemplate.iRectAccordingToParent = TRect( TPoint( aItemSize.iWidth/2 + startingPosition.iX/2, + aItemSize.iHeight + startingPosition.iY + 2 ), + TPoint(aItemSize.iWidth/2 + startingPosition.iX*3/2, aItemSize.iHeight + 2 *startingPosition.iY)); - childTemplate.iData = TBufC8< MmTemplateContants::KTemplateChildTextLength>( + childTemplate.iData = TBufC8< MmTemplateContants::KTemplateChildTextLength>( KMmMoveIndicatorArrowBottom8 ); childrenDefinition.AppendL( childTemplate ); @@ -1019,11 +980,11 @@ iTemplateChildrenMap.InsertL(lookup_string, childrenDefinition); CleanupStack::Pop( lookup_string ); lookup_string = NULL; - + lookup_string = aLookupString.AllocLC(); - TRect rectAccordingToParent = TRect( - TPoint( -startingPosition.iX, -startingPosition.iY), - TPoint(2*startingPosition.iX + aItemSize.iWidth , + TRect rectAccordingToParent = TRect( + TPoint( -startingPosition.iX, -startingPosition.iY), + TPoint(2*startingPosition.iX + aItemSize.iWidth , 2*startingPosition.iY + aItemSize.iHeight) ); iMoveIndicatorRectsMap.InsertL( lookup_string, rectAccordingToParent ); @@ -1096,7 +1057,7 @@ { aItemSize.iWidth = ( GetParentRect(aLandscapeOrientation).Width() - iScrollbarWidth ) / aLayoutSize.iWidth; } - else + else { aItemSize.iWidth = GetParentRect(aLandscapeOrientation).Width() / aLayoutSize.iWidth; } @@ -1161,36 +1122,10 @@ // // ----------------------------------------------------------------------------- // -TAknUiZoom CMmTemplateLibrary::Zoom( ) - { - return iZoom; - } - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMmTemplateLibrary::SetZoom( TAknUiZoom aZoom ) - { - if ( (EAknUiZoomLarge == aZoom) - || (EAknUiZoomSmall == aZoom) ) - { - iZoom = aZoom; - } - else - { - iZoom = EAknUiZoomNormal; - } - } - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// void CMmTemplateLibrary::CacheLayoutSizeL(TSize aLayoutSize, const TDesC8& aTemplate, TBool aLandscapeOrientation) { - HBufC8* lookup_layout_text = LookupLayoutText( iWidgetType, iZoom, + HBufC8* lookup_layout_text = LookupLayoutText( iWidgetType, aTemplate, aLandscapeOrientation ); if ( iTemplateSizesMap.Find( lookup_layout_text ) ) diff -r f72a12da539e -r 5315654608de menufw/menufwui/mmwidgets/src/mmwidgetcontainer.cpp --- a/menufw/menufwui/mmwidgets/src/mmwidgetcontainer.cpp Thu Dec 17 08:40:49 2009 +0200 +++ b/menufw/menufwui/mmwidgets/src/mmwidgetcontainer.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -12,7 +12,7 @@ * Contributors: * * Description: -* Version : %version: MM_71.1.17.1.42 % << Don't touch! Updated by Synergy at check-out. +* Version : %version: MM_71.1.17.1.44 % << Don't touch! Updated by Synergy at check-out. * */ @@ -21,7 +21,7 @@ #include #include #include -#include +#include #ifdef RD_UI_TRANSITION_EFFECTS_LIST #include @@ -223,7 +223,7 @@ { static_cast( iDrawer )->InvalidateCache(); } - + CCoeControl::HandleResourceChange( aType ); } @@ -344,9 +344,9 @@ { iDrawer->AnimateDragItemTransitionL(); } - + SetHighlightAfterDrag(); - + iDraggedIndex = -1; iDrawer->SetDraggedIndexL( iDraggedIndex, TPoint(0,0) ); SetDraggableL( EFalse ); @@ -587,12 +587,12 @@ { iMarqueeAdapter->StopMarqueeDrawing(); } - + TInt index = KErrNotFound; TBool itemExists = iWidget->View()->XYPosToItemIndex( aPointerEvent.iPosition, index ); CCoeControl::HandlePointerEventL(aPointerEvent); - + if ( aPointerEvent.iType == TPointerEvent::EButton1Down && itemExists ) { @@ -621,7 +621,7 @@ } TInt lastTopItemIndex = Widget()->TopItemIndex(); - + TBool abortAnimation = lastTopItemIndex != Widget()->TopItemIndex(); if (abortAnimation) @@ -633,7 +633,7 @@ { HandlePointerEventsInEditModeL(aPointerEvent, abortAnimation); } - + if ( iLongTapDetector ) { TPointerEvent longTapPointerEvent = aPointerEvent; @@ -642,8 +642,8 @@ longTapPointerEvent.iType = TPointerEvent::EDrag; } iLongTapDetector->PointerEventL( longTapPointerEvent ); - } - + } + } // ----------------------------------------------------------------------------- @@ -664,7 +664,7 @@ // void CMmWidgetContainer::SetDraggableL( TBool aDraggable ) { - + iDrawer = STATIC_CAST(CMmListBoxItemDrawer*, iWidget->View()->ItemDrawer()); iDrawer->SetDraggableL( aDraggable ); } @@ -860,9 +860,9 @@ { HideOptionsMenuIfDisplayed(); } - + CHnSuiteModel* suiteModel = GetMmModel()->GetSuiteModel(); - + if (suiteModel) { suiteModel->SetSuiteHighlightL( iCurrentHighlight ); @@ -959,7 +959,7 @@ if (!AknLayoutUtils::PenEnabled() && iIsEditMode ) { - if ((GetHighlight() + ColumnsInCurrentView() > NumberOfItems() - 1) + if ((GetHighlight() + ColumnsInCurrentView() > NumberOfItems() - 1) && aKeyEvent.iScanCode == EStdKeyDownArrow) // the second condition is needed to block moving item down when there is no item below the moved item. { @@ -974,7 +974,7 @@ static_cast(iDrawer)->SetHighlightShown( ETrue ); SetHighlightL( iWidget->CurrentItemIndex() ); ScrollViewIfNeededL(); //only edit mode non-touch - + if ( prevIndex != GetHighlight() && KErrNotFound != prevIndex ) { @@ -1104,7 +1104,7 @@ // TInt CMmWidgetContainer::RowsInCurrentView() { - //should be overridden by deriving classes + //should be overridden by deriving classes CListBoxView *view = ((CListBoxView*) Widget()->View()); return view->NumberOfItemsThatFitInRect( Rect());//Widget()->View()->ViewRect()); } @@ -1200,14 +1200,14 @@ } else if ( iAllowLongPress && aType == EEventKey && aKeyEvent.iRepeats > 0 && ( aKeyEvent.iScanCode == EStdKeyDevice3 - || aKeyEvent.iScanCode == EStdKeyEnter + || aKeyEvent.iScanCode == EStdKeyEnter || aKeyEvent.iScanCode == EStdKeyNkpEnter ) ) { HandleRockerPressL(); resp = EKeyWasConsumed; iAllowLongPress = EFalse; } - + return resp; } @@ -1243,7 +1243,7 @@ } iWidget->MakeVisible(ETrue); - Widget()->View()->ItemDrawer()->ClearFlags( + Widget()->View()->ItemDrawer()->ClearFlags( CListItemDrawer::EPressedDownState ); iPostProcessor->StartAt( iWidget->BottomItemIndex() + 1 ); } @@ -1376,37 +1376,6 @@ // // --------------------------------------------------------------------------- // -TBool CMmWidgetContainer::FlipOpen() - { - return iFlipOpen; - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -EXPORT_C void CMmWidgetContainer::SetFlipOpenL( TBool aIsFlipOpen ) - { - if ( aIsFlipOpen != iFlipOpen ) - { - iFlipOpen = aIsFlipOpen; - FlipStateChangedL(); - } - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -void CMmWidgetContainer::FlipStateChangedL() - { -// default do nothing - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// EXPORT_C void CMmWidgetContainer::StopMovingL() { if ( !AknLayoutUtils::PenEnabled() && iDragAndDropObserver ) @@ -1426,26 +1395,26 @@ return; } - TBool needToScrollUp = + TBool needToScrollUp = GetHighlight() - iWidget->TopItemIndex() < ColumnsInCurrentView() && iWidget->TopItemIndex() != 0; - + TBool needToScrollDown = iWidget->BottomItemIndex() - GetHighlight() < ColumnsInCurrentView() - && iWidget->BottomItemIndex() / ColumnsInCurrentView() + && iWidget->BottomItemIndex() / ColumnsInCurrentView() != ( NumberOfItems() - 1 ) / ColumnsInCurrentView(); - + if ( WidgetType() == EGridWidget ) { // TODO: temporary - invisible partial items in MCL grid :/ - needToScrollDown = + needToScrollDown = iWidget->BottomItemIndex() - ColumnsInCurrentView() - GetHighlight() < ColumnsInCurrentView() && ( iWidget->BottomItemIndex() / ColumnsInCurrentView() ) - 1 != ( NumberOfItems() - 1 ) / ColumnsInCurrentView() && iWidget->BottomItemIndex() - iWidget->TopItemIndex() > ColumnsInCurrentView() * RowsInCurrentView(); } - + if ( needToScrollUp ) { #ifdef RD_UI_TRANSITION_EFFECTS_LIST @@ -1468,7 +1437,7 @@ } else if ( needToScrollDown ) { - + #ifdef RD_UI_TRANSITION_EFFECTS_LIST MAknListBoxTfxInternal *transApi = CAknListLoader::TfxApiInternal( iDrawer->Gc() ); if ( transApi ) @@ -1486,7 +1455,7 @@ transApi->Draw( Rect() ); } #endif - + UpdateViewScrollBarThumbs(); } } @@ -1497,7 +1466,7 @@ // void CMmWidgetContainer::UpdateViewScrollBarThumbs() { - + } //---------------------------------------------------------------------------- @@ -1510,7 +1479,7 @@ { TBool marqueeShouldBeEnabled = iHasFocus && iInForeground && !iIsFaded && !IsEditMode(); - + // logical Ex-OR if ( !!marqueeShouldBeEnabled != !!iMarqueeAdapter->IsMarqueeEnabled() ) { @@ -1524,38 +1493,6 @@ } } -//---------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -EXPORT_C void CMmWidgetContainer::HandleZoomChanged( TAknUiZoom aZoom ) - { - SetZoom( aZoom ); - if( WidgetType() == EGridWidget ) - { - CMmGrid* grid = static_cast( iWidget ); - grid->SetupLayout(); - } - Widget()->DrawDeferred(); - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -EXPORT_C void CMmWidgetContainer::SetZoom( TAknUiZoom aZoom ) - { - CMmTemplateLibrary * templateLibrary = - static_cast ( - Widget()->View()->ItemDrawer() )->TemplateLibrary(); - - if ( WidgetType() == EGridWidget && EAknUiZoomSmall == aZoom ) - { - aZoom = EAknUiZoomNormal; - } - templateLibrary->SetZoom( aZoom ); - } - // --------------------------------------------------------------------------- // // --------------------------------------------------------------------------- @@ -1563,13 +1500,13 @@ void CMmWidgetContainer::SetHighlightAfterDrag() { if ( AknLayoutUtils::PenEnabled() && - iDraggedIndex != KErrNotFound && + iDraggedIndex != KErrNotFound && iDraggedIndex != Widget()->CurrentItemIndex() && iDraggedIndex < NumberOfItems() ) { TBool isFolder(EFalse); CHnSuiteModel* model = GetMmModel()->GetSuiteModel(); - CHnItemModel* onItemModel = model->GetItemModel( + CHnItemModel* onItemModel = model->GetItemModel( model->IdByIndex( Widget()->CurrentItemIndex() )); if (onItemModel) { @@ -1589,7 +1526,7 @@ // void CMmWidgetContainer::ValidateWidgetCurrentItemIndex() { - if (Widget()->CurrentItemIndex() >= GetMmModel()->NumberOfItems() + if (Widget()->CurrentItemIndex() >= GetMmModel()->NumberOfItems() || Widget()->CurrentItemIndex() == KErrNotFound ) { iCurrentHighlight = GetMmModel()->NumberOfItems(); @@ -1615,7 +1552,7 @@ iWidgetPositionCache.iLandscape = Layout_Meta_Data::IsLandscapeOrientation(); iWidgetPositionCache.iHighlightedItemId = KErrNotFound; - + TInt highlightedItemIndex = Widget()->CurrentItemIndex(); CHnSuiteModel* suiteModel = GetMmModel()->GetSuiteModel(); if ( suiteModel && highlightedItemIndex != KErrNotFound @@ -1625,7 +1562,7 @@ iWidgetPositionCache.iHighlightedItemId = suiteModel->IdByIndex( highlightedItemIndex ); } - + iWidgetPositionCache.iValid = ETrue; } @@ -1654,7 +1591,7 @@ Widget()->View()->SetTopItemIndex(iWidgetPositionCache.iTopItemIndex); SetVerticalItemOffset(iWidgetPositionCache.iVerticalItemOffset); TRAP_IGNORE( AlignBottomOfViewL() ); - + // Important: If an item that was previously highlighted and visible is // still highlighted and yet somehow is not visible after the position // has been restored, fix the problem by scrolling the view until that @@ -1677,7 +1614,7 @@ { TRAP_IGNORE( ScrollToItemL(Widget()->CurrentItemIndex()) ); } - + iWidgetPositionCache.iValid = EFalse; } } @@ -1728,9 +1665,9 @@ { CacheWidgetPosition(); Widget()->View()->SetDisableRedraw( ETrue ); - + HandleNumberOfItemsChangedL( aChange ); - + Widget()->View()->SetDisableRedraw( EFalse ); RestoreWidgetPosition(); } @@ -1769,7 +1706,7 @@ { TInt scrollConsumed( EFalse ); TInt pixelsToScroll( 0 ); - + if ( NumberOfItems() > 0 ) { pixelsToScroll = CalcBottomPixelsToScroll(); @@ -1796,7 +1733,7 @@ TInt lastItemBottomY = Widget()->View()->ItemPos(lastItemIndex).iY + Widget()->ItemHeight(); TInt pixelsToScroll( 0 ); - + if ( Widget()->ScrollBarFrame()->VerticalScrollBar()->IsVisible() ) { pixelsToScroll = Min( 0, lastItemBottomY - viewHeight ); @@ -1805,7 +1742,7 @@ { pixelsToScroll = Widget()->View()->ItemPos( firstItemIndex ).iY; } - + return pixelsToScroll; } @@ -1836,7 +1773,7 @@ void CMmWidgetContainer::ScrollInPixelsL(TInt aPixels) { SetupScrollingEffectsL( aPixels > 0 ); - + if ( AknLayoutUtils::PenEnabled() ) { Widget()->HandlePhysicsScrollEventL(aPixels); @@ -1846,8 +1783,8 @@ // non-touch avkon doesn't seem to support scrolling by given // amount of pixels TInt delta = aPixels / Widget()->View()->ItemHeight(); - - Widget()->View()->VScrollTo( Widget()->TopItemIndex() + + + Widget()->View()->VScrollTo( Widget()->TopItemIndex() + delta * ColumnsInCurrentView() ); } } @@ -1864,7 +1801,7 @@ scrollConsumed = AlignBottomOfViewL(); if ( !scrollConsumed && Widget()->View()->ItemIsPartiallyVisible(aIndex)) { -// the case when the item is partially visible at top or +// the case when the item is partially visible at top or // bottom of screen. Th e view is scrolled the offset to // make the item entirely visible. TInt offsetBottom = Widget()->View()->ItemPos(aIndex).iY @@ -1878,7 +1815,7 @@ ScrollInPixelsL( offset ); scrollConsumed = ETrue; } - + } else if (!Widget()->View()->ItemIsVisible(aIndex)) { @@ -1918,7 +1855,7 @@ EXPORT_C void CMmWidgetContainer::PrepareForGarbage() { // This is called when the suite model is destoyed and the container is set to be destroyed -// by the garbage collector. There should be no redraws done to the widget in this period +// by the garbage collector. There should be no redraws done to the widget in this period // because this will cause the screen to be redrawn only containing the balnk background. // Before garbage cleanup an asynchronous redraw event may intend to redraw the widget. // SetDisableRedraw() prevents redrawing. Animator is also prepared for garbage so there is @@ -1948,7 +1885,7 @@ // // ----------------------------------------------------------------------------- // -void CMmWidgetContainer::HandleLongTapEventL( const TPoint& aPenEventLocation, +void CMmWidgetContainer::HandleLongTapEventL( const TPoint& aPenEventLocation, const TPoint& aPenEventScreenLocation ) { TInt index( KErrNotFound ); @@ -1977,7 +1914,7 @@ // // ----------------------------------------------------------------------------- // -EXPORT_C void CMmWidgetContainer::HandleTopFocusL( TBool aStopTimer ) +EXPORT_C void CMmWidgetContainer::EndLongTapL( TBool aStopTimer ) { if ( iLongTapInProgress ) { @@ -1991,7 +1928,7 @@ } // --------------------------------------------------------------------------- -// +// // --------------------------------------------------------------------------- // void CMmWidgetContainer::HandleListBoxEventL( CEikListBox* aListBox, @@ -2035,7 +1972,7 @@ break; } } - + // handle different behaviour in edit mode and normal mode if ( !IsEditMode() ) { @@ -2043,14 +1980,14 @@ { case MEikListBoxObserver::EEventFlickStarted: { - static_cast( + static_cast( Widget()->View()->ItemDrawer() )-> EnableCachedDataUse( ETrue ); break; } case MEikListBoxObserver::EEventFlickStopped: { - static_cast( + static_cast( Widget()->View()->ItemDrawer() )-> EnableCachedDataUse( EFalse ); DrawView(); @@ -2058,32 +1995,32 @@ } } } - else + else { switch ( aEventType ) { case MEikListBoxObserver::EEventFlickStopped: { - // this fixes some problems with messed edit mode + // this fixes some problems with messed edit mode // caused by kinetic scrolling iDrawer->GetAnimator()->SetNextRedrawToWholeScreen(); break; } } } - + if ( iListBoxObserver && !iLongTapInProgress ) { iListBoxObserver->HandleListBoxEventL( aListBox, aEventType ); } - + } // --------------------------------------------------------------------------- -// +// // --------------------------------------------------------------------------- // -EXPORT_C void CMmWidgetContainer::HandleOptionsMenuVisibilityChangeL( +EXPORT_C void CMmWidgetContainer::HandleOptionsMenuVisibilityChangeL( TBool aOptionsMenuVisible ) { if ( IsTimerActive() ) diff -r f72a12da539e -r 5315654608de menufw/menusuites/foldersuite/data/matrixmenudata.xml --- a/menufw/menusuites/foldersuite/data/matrixmenudata.xml Thu Dec 17 08:40:49 2009 +0200 +++ b/menufw/menusuites/foldersuite/data/matrixmenudata.xml Thu Jan 07 12:39:41 2010 +0200 @@ -228,6 +228,11 @@ icon_skin_minor_id="" icon_skin_major_id="" param="logs:dialed"/> + + + + + diff -r f72a12da539e -r 5315654608de menufw/menusuites/foldersuite/group/bld.inf --- a/menufw/menusuites/foldersuite/group/bld.inf Thu Dec 17 08:40:49 2009 +0200 +++ b/menufw/menusuites/foldersuite/group/bld.inf Thu Jan 07 12:39:41 2010 +0200 @@ -21,56 +21,34 @@ DEFAULT PRJ_EXPORTS -// exports for HW -// touch -../data/suite.xml /epoc32/data/z/private/101F4CD2/import/suites/foldersuite_touch/suite.xml -../data/items_touch.xml /epoc32/data/z/private/101F4CD2/import/suites/foldersuite_touch/items.xml -// non-touch -../data/suite.xml /epoc32/data/z/private/101F4CD2/import/suites/foldersuite_nontouch/suite.xml -../data/items_nontouch.xml /epoc32/data/z/private/101F4CD2/import/suites/foldersuite_nontouch/items.xml - -// exports for emulator +// exports for HW & emulator // touch -../data/suite.xml /epoc32/release/winscw/udeb/z/private/101F4CD2/import/suites/foldersuite_touch/suite.xml -../data/suite.xml /epoc32/release/winscw/urel/z/private/101F4CD2/import/suites/foldersuite_touch/suite.xml -../data/items_touch.xml /epoc32/release/winscw/udeb/z/private/101F4CD2/import/suites/foldersuite_touch/items.xml -../data/items_touch.xml /epoc32/release/winscw/urel/z/private/101F4CD2/import/suites/foldersuite_touch/items.xml +../data/suite.xml z:/private/101F4CD2/import/suites/foldersuite_touch/suite.xml +../data/items_touch.xml z:/private/101F4CD2/import/suites/foldersuite_touch/items.xml // non-touch -../data/suite.xml /epoc32/release/winscw/udeb/z/private/101F4CD2/import/suites/foldersuite_nontouch/suite.xml -../data/suite.xml /epoc32/release/winscw/urel/z/private/101F4CD2/import/suites/foldersuite_nontouch/suite.xml -../data/items_nontouch.xml /epoc32/release/winscw/udeb/z/private/101F4CD2/import/suites/foldersuite_nontouch/items.xml -../data/items_nontouch.xml /epoc32/release/winscw/urel/z/private/101F4CD2/import/suites/foldersuite_nontouch/items.xml +../data/suite.xml z:/private/101F4CD2/import/suites/foldersuite_nontouch/suite.xml +../data/items_nontouch.xml z:/private/101F4CD2/import/suites/foldersuite_nontouch/items.xml + // default -../data/suite.xml /epoc32/release/winscw/udeb/z/private/101F4CD2/import/suites/foldersuite/suite.xml -../data/suite.xml /epoc32/release/winscw/urel/z/private/101F4CD2/import/suites/foldersuite/suite.xml +../data/suite.xml z:/private/101F4CD2/import/suites/foldersuite/suite.xml #ifdef __PEN_SUPPORT -../data/items_touch.xml /epoc32/release/winscw/udeb/z/private/101F4CD2/import/suites/foldersuite/items.xml -../data/items_touch.xml /epoc32/release/winscw/urel/z/private/101F4CD2/import/suites/foldersuite/items.xml +../data/items_touch.xml z:/private/101F4CD2/import/suites/foldersuite/items.xml #else -../data/items_nontouch.xml /epoc32/release/winscw/udeb/z/private/101F4CD2/import/suites/foldersuite/items.xml -../data/items_nontouch.xml /epoc32/release/winscw/urel/z/private/101F4CD2/import/suites/foldersuite/items.xml +../data/items_nontouch.xml z:/private/101F4CD2/import/suites/foldersuite/items.xml #endif ../loc/matrixmenudata.loc APP_LAYER_LOC_EXPORT_PATH(matrixmenudata.loc) // MCS root folder configuration #ifdef _MATRIX_MENU_INCLUDE_TEST_CONTENT -../data/matrixmenudatatestcontent.xml /epoc32/RELEASE/winscw/udeb/Z/private/200113DD/content/matrixmenudata.xml -../data/matrixmenudatatestcontent.xml /epoc32/RELEASE/winscw/urel/Z/private/200113DD/content/matrixmenudata.xml -../data/matrixmenudatatestcontent.xml /epoc32/data/Z/private/200113DD/content/matrixmenudata.xml +../data/matrixmenudatatestcontent.xml Z:/private/200113DD/content/matrixmenudata.xml #else -../data/matrixmenudata.xml /epoc32/RELEASE/winscw/udeb/Z/private/200113DD/content/matrixmenudata.xml -../data/matrixmenudata.xml /epoc32/RELEASE/winscw/urel/Z/private/200113DD/content/matrixmenudata.xml -../data/matrixmenudata.xml /epoc32/data/Z/private/200113DD/content/matrixmenudata.xml +../data/matrixmenudata.xml Z:/private/200113DD/content/matrixmenudata.xml #endif -../data/matrixmenudata.dtd /epoc32/RELEASE/winscw/udeb/Z/private/200113DD/content/01/matrixmenudata.dtd -../data/matrixmenudata.dtd /epoc32/RELEASE/winscw/urel/Z/private/200113DD/content/01/matrixmenudata.dtd -../data/matrixmenudata.dtd /epoc32/data/Z/private/200113DD/content/01/matrixmenudata.dtd +../data/matrixmenudata.dtd Z:/private/200113DD/content/01/matrixmenudata.dtd -#ifdef SBSV2 ./copyheaderfile.xml /epoc32/tools/makefile_templates/general/copyheaderfile.xml ./copyheaderfile.flm /epoc32/tools/makefile_templates/general/copyheaderfile.flm ./copyheaderfile.meta /epoc32/tools/makefile_templates/general/copyheaderfile.meta -#endif PRJ_MMPFILES foldersuite.mmp diff -r f72a12da539e -r 5315654608de menufw/menusuites/group/bld.inf --- a/menufw/menusuites/group/bld.inf Thu Dec 17 08:40:49 2009 +0200 +++ b/menufw/menusuites/group/bld.inf Thu Jan 07 12:39:41 2010 +0200 @@ -27,9 +27,7 @@ ../rom/menusuites.iby CORE_APP_LAYER_IBY_EXPORT_PATH(menusuites.iby) ../rom/menusuites_resources.iby LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(menusuites_resources.iby) -../data/mmenuschema.xsd /epoc32/release/winscw/udeb/z/private/101F4CD2/import/suites/mmenuschema.xsd -../data/mmenuschema.xsd /epoc32/release/winscw/urel/z/private/101F4CD2/import/suites/mmenuschema.xsd -../data/mmenuschema.xsd /epoc32/data/z/private/101F4CD2/import/suites/mmenuschema.xsd +../data/mmenuschema.xsd z:/private/101F4CD2/import/suites/mmenuschema.xsd PRJ_MMPFILES #ifndef SBSV2 diff -r f72a12da539e -r 5315654608de systemDefinition.xml --- a/systemDefinition.xml Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,33 +0,0 @@ - - - - - - - - -]> - - - -&layer_file; - - -&targetDefinition_file; - - - - -&defaultbuild_file; - - - - - -&defaultclean_file; - - - - diff -r f72a12da539e -r 5315654608de systemDefinitionLayer.xml --- a/systemDefinitionLayer.xml Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ - - - - - - - diff -r f72a12da539e -r 5315654608de widgetmanager/data/20026F53.rss --- a/widgetmanager/data/20026F53.rss Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,44 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: widget manager plugin registry resource -* -*/ - -#include "registryinfov2.rh" - -// Declares info for two implementations -RESOURCE REGISTRY_INFO theInfo - { - resource_format_version = RESOURCE_FORMAT_VERSION_2; - dll_uid = 0x20026F53; - interfaces = - { - INTERFACE_INFO - { - // UID of interface that is implemented - interface_uid = 0x20026F51; - implementations = - { - IMPLEMENTATION_INFO - { - implementation_uid = 0x20026F53; - version_no = 1; - display_name = "Widget Manager"; - default_data = "WmContentControlUI"; - opaque_data = "WmContentControlUI"; - } - }; - } - }; - } diff -r f72a12da539e -r 5315654608de widgetmanager/data/widgetmanagerview.loc --- a/widgetmanager/data/widgetmanagerview.loc Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,154 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Localisation file of Widget Manager -* -*/ - - - -// TITLES OF EACH VIEW - -// d: Title of Application -// d: -// d: -// l: title_pane_t2/opt12 -// w: -// r: TB9.2 -#define qtn_wm_title_text "Widget Catalog" - - - -// OPTIONS-MENU MENUITEMS - -// d: Add-menuitem in Options-menu -// d: -// d: -// l: list_single_pane_t1_cp2 -// w: -// r: TB9.2 -// -#define qtn_options_wm_add "Add To Homescreen" - -// d: Launch-menuitem in Options-menu -// d: -// d: -// l: list_single_pane_t1_cp2 -// w: -// r: TB9.2 -// -#define qtn_options_wm_launch_widget "Launch" - -// d: Search-menuitem in Options-menu -// d: -// d: -// l: list_single_pane_t1_cp2 -// w: -// r: TB9.2 -// -#define qtn_options_wm_search "Search" - -// d: Uninstall-menuitem in Options-menu -// d: -// d: -// l: list_single_pane_t1_cp2 -// w: -// r: TB9.2 -// -#define qtn_options_wm_uninstall "Uninstall" - -// d: Open-menuitem in Options-menu -// d: -// d: -// l: list_single_pane_t1_cp2 -// w: -// r: TB9.2 -// -#define qtn_options_wm_open "Open" - -// d: Sort alphabetically-menuitem in Options-menu -// d: -// d: -// l: list_single_pane_t1_cp2 -// w: -// r: TB9.2 -// -#define qtn_options_wm_sort_alpha "Sort alphabetically" - -// d: Details-menuitem in Options-menu -// d: -// d: -// l: list_single_pane_t1_cp2 -// w: -// r: TB9.2 -// -#define qtn_options_wm_show_details "Details" - - - -// MISC - -// d: Text displayed on OVI Store button -// d: -// d: -// l: wgtman_btn_pane_t1 -// w: -// r: TB9.2 -// -#define qtn_wm_ovi_store_title "Ovi Store" - -// d: Info popup to indicate that an item can not be added to home screen -// d: because current view is full -// d: -// l: popup_note_window -// w: -// r: TB9.2 -// -#define qtn_hs_add_widget_no_space_note "Not enough space to add new widget to active page. Remove some content first" - -// d: Info popup to indicate that an item can not be added to home screen -// d: because maximum instance count of current widget would be exceeded -// d: -// l: popup_note_window -// w: -// r: TB9.2 -// -#define qtn_hs_add_widget_max_count_note "Unable to add. Home screen does not allow more instances of this widget" - -// d: widget details dialog left softkey for adding widget to home screen -// d: Note: widgets dialog is not necessarily full screen width, which may affect -// d: string max length! -// l: control_pane_t1/opt7 -// w: -// r: TB9.2 -// -#define qtn_wm_details_add_to_hs "Add" - -// d: widget details dialog - no description -// d: -// d: -// l: listrow_wgtman_pane_t2 -// w: -// r: TB9.2 -// -#define qtn_wm_details_no_description "No description available" - -// d: widget uninstall not allowed -// d: -// d: -// l: popup_note_window -// w: -// r: TB9.2 -// -#define qtn_wm_uninst_not_allowed "%U can not be uninstalled " - diff -r f72a12da539e -r 5315654608de widgetmanager/data/widgetmanagerview.rss --- a/widgetmanager/data/widgetmanagerview.rss Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,235 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -* -*/ - -// INCLUDES -#include -#include -#include -#include -#include -#include - -#include "widgetmanager.hrh" -#include "widgetmanagerview.loc" - -// RESOURCE IDENTIFIER -NAME WIGZ // 4 letter ID - -RESOURCE RSS_SIGNATURE - { - } - -// ---------------------------------------------------- -// MAIN VIEW AND ITS PARTS -// ---------------------------------------------------- - -RESOURCE AVKON_VIEW r_wm_main_container_view - { - cba = R_AVKON_SOFTKEYS_OPTIONS_BACK__SELECT; - menubar = r_wm_main_container_options_menu; - toolbar = 0; - } - -RESOURCE TITLE_PANE r_wm_main_container_title_resource - { - txt = qtn_wm_title_text; - } - -// ---------------------------------------------------- -// MENU -// ---------------------------------------------------- - -RESOURCE MENU_BAR r_wm_main_container_options_menu - { - titles = - { - MENU_TITLE - { - menu_pane = r_wm_main_container_menu_pane; - } - }; - } - -RESOURCE MENU_PANE r_wm_main_container_menu_pane - { - items = - { - MENU_ITEM - { - command = EWmMainContainerViewOpenPortalMenuItemCommand; - txt = qtn_options_wm_open; - flags = EEikMenuItemAction; - }, - MENU_ITEM - { - command = EWmMainContainerViewAddMenuItemCommand; - txt = qtn_options_wm_add; - flags = EEikMenuItemAction; - }, - MENU_ITEM - { - command = EWmMainContainerViewWiddetDetailsMenuItemCommand; - txt = qtn_options_wm_show_details; - flags = EEikMenuItemSpecific; - }, - MENU_ITEM - { - command = EWmMainContainerViewLaunchMenuItemCommand; - txt = qtn_options_wm_launch_widget; - flags = EEikMenuItemSpecific; - }, - MENU_ITEM - { - command = EWmMainContainerViewSearchMenuItemCommand; - txt = qtn_options_wm_search; - }, - MENU_ITEM - { - command = EWmMainContainerViewSortAlphaMenuItemCommand; - txt = qtn_options_wm_sort_alpha; - }, - MENU_ITEM - { - command = EWmMainContainerViewUninstallMenuItemCommand; - txt = qtn_options_wm_uninstall; - flags = EEikMenuItemSpecific; - }, - MENU_ITEM - { - command = EWmMainContainerViewHelpMenuItemCommand; - txt = qtn_options_help; - }, - MENU_ITEM - { - command = EWmMainContainerViewBackMenuItemCommand; - txt = qtn_options_exit; - } - }; - } - -// ---------------------------------------------------- -// OVI STORE BUTTON -// ---------------------------------------------------- - -RESOURCE AVKON_BUTTON r_wm_portal_button - { - flags = 0; - states = - { - AVKON_BUTTON_STATE - { - flags = 0; - txt = qtn_wm_ovi_store_title; - bmpfile = AVKON_BITMAP_FILE; - bmpid = EMbmAvkonQgn_graf_wml_wait_globe_04; - bmpmask = EMbmAvkonQgn_graf_wml_wait_globe_04_mask; - press_bmpid = EMbmAvkonQgn_graf_wml_wait_globe_04; - press_bmpmask = EMbmAvkonQgn_graf_wml_wait_globe_04_mask; - } - }; - } - -RESOURCE TBUF r_qtn_wm_go_to_ovi_store - { - buf = qtn_wm_ovi_store_title; - } - -// ---------------------------------------------------- -// MISCELLANEOUS INFO MESSAGES -// ---------------------------------------------------- - -RESOURCE TBUF r_qtn_hs_add_widget_no_space_note - { - buf = qtn_hs_add_widget_no_space_note; - } - -RESOURCE TBUF r_qtn_hs_add_widget_max_count_note - { - buf = qtn_hs_add_widget_max_count_note; - } - -RESOURCE TBUF r_qtn_wm_details_no_description - { - buf = qtn_wm_details_no_description; - } - -RESOURCE TBUF r_qtn_wm_uninst_not_allowed - { - buf = qtn_wm_uninst_not_allowed; - } - -// ---------------------------------------------------- -// Wm Details dialog -// ---------------------------------------------------- - -STRUCT WMDLGCONTROL - { - STRUCT control; - } - -RESOURCE DIALOG r_wm_details_add_dialog - { - flags = EEikDialogFlagNoDrag | - EEikDialogFlagCbaButtons | - EEikDialogFlagWait | - EEikDialogFlagNoTitleBar; - buttons = r_wm_details_add_close_cba; - } - -RESOURCE CBA r_wm_details_add_close_cba - { - buttons = - { - CBA_BUTTON // add - { - id = ECbaAddToHs; - txt = qtn_wm_details_add_to_hs; - }, - CBA_BUTTON // close - { - id = EAknSoftkeyClose; - txt = text_softkey_close; - } - }; - } - -RESOURCE DIALOG r_wm_details_only_dialog - { - flags = EEikDialogFlagNoDrag | - EEikDialogFlagCbaButtons | - EEikDialogFlagWait | - EEikDialogFlagNoTitleBar; - buttons = r_wm_details_empty_close_cba; - } - -RESOURCE CBA r_wm_details_empty_close_cba - { - buttons = - { - CBA_BUTTON // empty - { - id = 0; - txt = text_softkey_empty; - }, - CBA_BUTTON // close - { - id = EAknSoftkeyClose; - txt = text_softkey_close; - } - }; - } diff -r f72a12da539e -r 5315654608de widgetmanager/gfx/add_widget_button.svg --- a/widgetmanager/gfx/add_widget_button.svg Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff -r f72a12da539e -r 5315654608de widgetmanager/gfx/qgn_menu_hswidget.svg --- a/widgetmanager/gfx/qgn_menu_hswidget.svg Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,79 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff -r f72a12da539e -r 5315654608de widgetmanager/group/bld.inf --- a/widgetmanager/group/bld.inf Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Widget manager build information -* -*/ - -PRJ_PLATFORMS -DEFAULT - -PRJ_EXPORTS -../rom/widgetmanager.iby CORE_APP_LAYER_IBY_EXPORT_PATH(widgetmanager.iby) -../rom/widgetmanager_resources.iby CORE_APP_LAYER_IBY_EXPORT_PATH(widgetmanager_resources.iby) - -../sis/widgetmanager_stub.sis /epoc32/data/z/system/install/widgetmanager_stub.sis - -PRJ_EXTENSIONS -START EXTENSION s60/mifconv -OPTION TARGETFILE widgetmanager.mif -OPTION HEADERFILE widgetmanager.mbg -OPTION SOURCEDIR ../gfx -OPTION SOURCEFILE wmicons.txt -END - -PRJ_MMPFILES - -widgetmanager.mmp - diff -r f72a12da539e -r 5315654608de widgetmanager/group/widgetmanager.mmp --- a/widgetmanager/group/widgetmanager.mmp Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,115 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Widget manager project definition file -* -*/ - -#include -#include - -TARGET widgetmanager.dll -TARGETTYPE PLUGIN - -// ECom Dll recognition UID followed by the unique UID for this dll -UID 0x10009D8D 0x20026F53 - -VENDORID VID_DEFAULT -SECUREID 0x20026F53 - -// SIS installation + IAD support -VERSION 1.1 -paged - -CAPABILITY CAP_ECOM_PLUGIN - -SOURCEPATH ../src -SOURCE wmpluginproxy.cpp -SOURCE wmplugin.cpp -SOURCE wmresourceloader.cpp -SOURCE wmmaincontainer.cpp -SOURCE wmmaincontainerview.cpp -SOURCE wmwidgetdata.cpp -SOURCE wmlistbox.cpp -SOURCE wmimageconverter.cpp -SOURCE wmpersistentwidgetorder.cpp -SOURCE wmeffectmanager.cpp -SOURCE wmiconfileprovider.cpp -SOURCE wmdetailsdlg.cpp -SOURCE wmwidgetloaderao.cpp - -SOURCEPATH ../data -START RESOURCE 20026F53.rss -TARGETPATH ECOM_RESOURCE_DIR -TARGET widgetmanager.rsc -END //RESOURCE - -SOURCEPATH ../data -START RESOURCE widgetmanagerview.rss -HEADER -TARGETPATH RESOURCE_FILES_DIR -LANGUAGE_IDS -END //RESOURCE - -USERINCLUDE . -USERINCLUDE ../inc -USERINCLUDE ../data - -APP_LAYER_SYSTEMINCLUDE -SYSTEMINCLUDE /epoc32/include/ecom - - -LIBRARY euser.lib -LIBRARY cone.lib -LIBRARY avkon.lib -LIBRARY eikcore.lib -LIBRARY estor.lib -LIBRARY eikcoctl.lib -LIBRARY eikctl.lib -LIBRARY eikdlg.lib - -LIBRARY efsrv.lib // RFs -LIBRARY bafl.lib // BaflUtils -LIBRARY apgrfx.lib // RApaLsSession -LIBRARY commonengine.lib // StringLoader - -LIBRARY aknicon.lib // AknIconUtility -LIBRARY imageconversion.lib // CImageDecoder -LIBRARY bitmaptransforms.lib // CBitmapScaler -LIBRARY fbscli.lib // CFbsBitmap -LIBRARY bitgdi.lib // CFbsBitmapDevice -LIBRARY gdi.lib // CFont -LIBRARY egul.lib // TextUtils -LIBRARY ecom.lib // ECom fw -LIBRARY aknskins.lib // AknsDrawUtils -LIBRARY aknskinsrv.lib // AknsDrawUtils -LIBRARY aknswallpaperutils.lib // AknsDrawUtils -LIBRARY hscontentcontrol.lib // CHsContentControlUi -LIBRARY apparc.lib // CApaCommandLine -LIBRARY aknlayout.lib // avkon layout -LIBRARY aknlayout2scalable.lib // scalable avkon layout -LIBRARY swinstcli.lib // widget uninstall -LIBRARY hscontentinfo.lib // CHsContentInfo -LIBRARY platformenv.lib // DriveInfo::GetDefaultDrive -LIBRARY svgengine.lib // CSvgEngineInterfaceImpl -LIBRARY gfxtrans.lib // effect manager -LIBRARY ws32.lib //WindowSession -LIBRARY widgetregistryclient.lib // WidgetRegistryClient -LIBRARY hlplch.lib // HlpLauncher -LIBRARY sysutil.lib // diskspace -LIBRARY featmgr.lib // FeatureManager -LIBRARY etext.lib - - -// End of file diff -r f72a12da539e -r 5315654608de widgetmanager/group/wmicons.txt --- a/widgetmanager/group/wmicons.txt Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3 +0,0 @@ --c32,8 qgn_menu_hswidget --c32,8 add_widget_button - diff -r f72a12da539e -r 5315654608de widgetmanager/inc/widgetmanager.hrh --- a/widgetmanager/inc/widgetmanager.hrh Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,44 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Declares resource ids for widgetmanager application. -* -*/ - - -/** WidgetManger viev uid */ -enum TWidgetManagerViewUids - { - EWmMainContainerViewId = 0x20026F53 - }; - -/** MainContainer View Commands */ -enum TWmMainContainerViewCommands - { - EWmMainContainerViewAddMenuItemCommand = 0x6000, - EWmMainContainerViewLaunchMenuItemCommand, - EWmMainContainerViewSearchMenuItemCommand, - EWmMainContainerViewSortAlphaMenuItemCommand, - EWmMainContainerViewUninstallMenuItemCommand, - EWmMainContainerViewHelpMenuItemCommand, - EWmMainContainerViewOpenPortalMenuItemCommand, - EWmMainContainerViewBackMenuItemCommand, - EWmMainContainerViewWiddetDetailsMenuItemCommand - }; - -enum TWmMenuCmdIDs - { - ECbaAddToHs = 1 - }; - \ No newline at end of file diff -r f72a12da539e -r 5315654608de widgetmanager/inc/widgetmanager.pan --- a/widgetmanager/inc/widgetmanager.pan Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,35 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Declares panic codes for widgetmanager app. -* -*/ - -#ifndef WIDGETMANAGER_PAN_H -#define WIDGETMANAGER_PAN_H - -/** WidgetManager application panic codes */ -enum TWidgetManagerPanics - { - EWidgetManagerUi = 1 - // add further panics here - }; - -inline void Panic(TWidgetManagerPanics aReason) - { - _LIT(applicationName,"WidgetManager"); - User::Panic(applicationName, aReason); - } - -#endif // WIDGETMANAGER_PAN_H diff -r f72a12da539e -r 5315654608de widgetmanager/inc/wmcommon.h --- a/widgetmanager/inc/wmcommon.h Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - -#ifndef WMCOMMON_H -#define WMCOMMON_H - -//includes -#include - -// widgetmanager UID -const TUid KUidWidgetManager = { 0x200255FF }; - -// HsContentInfo types -_LIT8( KContentWidget, "widget" ); -_LIT8( KContentTemplate, "template" ); - -// UI related const -const TInt KWidgetHeight = 90; - -// UI component ID's -enum TWmUiControlIds - { - EOviPortal = 0x1, - ELastPortal, - EWidgetsList, - EFindBox, - EMaximumWidgets = 0xC8 - }; - -#endif //WMCOMMON_H diff -r f72a12da539e -r 5315654608de widgetmanager/inc/wmdetailsdlg.h --- a/widgetmanager/inc/wmdetailsdlg.h Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,147 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Declares widget details dialog for WidgetManager -* -*/ - -#ifndef ___WMDETAILSDLG_H__ -#define ___WMDETAILSDLG_H__ - -// INCLUDES -#include -#include - -// FORWARD DECLARATIONS -class CEikRichTextEditor; -class CAknsBasicBackgroundControlContext; - -// CLASS DECLARATIONS -/** - * CWmDetailsDlg - */ -NONSHARABLE_CLASS( CWmDetailsDlg ): public CAknDialog - { -public: - - /** - * Two-phased constructor. - */ - static CWmDetailsDlg* NewL( - const TDesC& aName, - const TDesC& aDescription, - TBool aCanBeAdded, - const CFbsBitmap* aLogoBmp, - const CFbsBitmap* aLogoMask, - CAknsBasicBackgroundControlContext* aBgContext ); - - /** Destructor. */ - ~CWmDetailsDlg(); - -public: // New functions - /** From CAknDialog Initializes the dialog and calls - CAknDialog's ExecuteLD() */ - TInt ExecuteLD(); - -private: // Functions from base classes - - - /** From CEikDialog Initializes dialog before layout*/ - void PreLayoutDynInitL(); - - /** From CEikDialog Handles button events and looks - if the dialog can be closed */ - TBool OkToExitL(TInt aButtonId); - - /** From CCoeControl Handles key events */ - TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent,TEventCode aType ); - - /** From CEikDialog Called by framework when dialog is activated */ - void ActivateL(); - - /** From CAknDialog called to provide access to the contorols */ - TTypeUid::Ptr MopSupplyObject( TTypeUid aId ); - - /** From CAknDialog */ - void SetSizeAndPosition( const TSize& aSize ); - - /** From CCoeControl */ - void SizeChanged(); - - /** From CCoeControl */ - TInt CountComponentControls() const; - CCoeControl* ComponentControl(TInt aIndex) const; - void Draw( const TRect& aRect ) const; - - /** Desired rect for dialog */ - TRect WmDetailsDialogRect(); - - /** Insert and format content */ - void InsertAndFormatContentL(); - -private: - - /** Constructor for performing 1st stage construction */ - CWmDetailsDlg( TBool aCanBeAdded ); - - /** 2nd phase constructor */ - void ConstructL( - const TDesC& aName, - const TDesC& aDescription, - const CFbsBitmap* aLogoBmp, - const CFbsBitmap* aLogoMask, - CAknsBasicBackgroundControlContext* aBgContext ); - -private: - - /** - * Background context (not owned) - */ - CAknsBasicBackgroundControlContext* iBgContext; - - /** - * Richtext editor - */ - CEikRichTextEditor* iRtEditor; - - /** - * Name of widget - */ - HBufC* iName; - - /** - * Description of widget - */ - HBufC* iDescription; - - /** - * Logo image - */ - CFbsBitmap* iLogoBmp; - - /** - * Logo mask - */ - CFbsBitmap* iLogoMask; - - /** - * ETrue if widget can be added to HS - */ - TBool iCanBeAdded; - - }; - -#endif ___WMDETAILSDLG_H__ - -// End of File diff -r f72a12da539e -r 5315654608de widgetmanager/inc/wmeffectmanager.h --- a/widgetmanager/inc/wmeffectmanager.h Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,111 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* CImageConverter declaration -* -*/ - -#ifndef WMEFFECTMANAGER_H -#define WMEFFECTMANAGER_H - -// INCLUDES -#include - -class CCoeEnv; -// CONSTANTS -// Effects -const TInt KAppStartCommonDefaultStyle = 3; -const TInt KAppExitCommonDefaultStyle = 5; - -/** - * Struct which holds needed info of effect. - */ -NONSHARABLE_STRUCT( TWmEffect ) - { - TInt iState; - TInt iType; - TInt iId; - }; - -/** - * Effect manager. - * Handles starting and ending effects. - * - * @since S60 v5.0 - */ -NONSHARABLE_CLASS( CWmEffectManager ) : public CBase - { -public: - /** - * Two-phased constructor. - * @return new instance of CWmEffectManager. - */ - static CWmEffectManager* NewL( CCoeEnv& aCoeEnv ); - - /** - * Destructor. - */ - ~CWmEffectManager(); - -public: - /** - * Begin handling of fullscreen effect. - * @param aId effect id - */ - void BeginFullscreenEffectL( TInt aId ); - - /** - * When UiRendered is called effect is ended and will be drawn - */ - void UiRendered(); - -private: - /** - * C++ default constructor. - */ - CWmEffectManager( CCoeEnv& aCoeEnv ); - - /** - * By default Symbian 2nd phase constructor is private. - */ - void ConstructL(); - -private: - /** - * Starts fullscreen effect. - * @param aEffect effect data - */ - void DoBeginFullscreenEffect( TWmEffect& aEffect ); - - /** - * Removes and destroys effect from effect list. - * @param aEffect effect data - */ - void RemoveEffect( TWmEffect* aEffect ); - -private: // data - /** - * List of started effects. - */ - RPointerArray iEffects; - - /** - * COE env - */ - CCoeEnv& iCoeEnv; - }; - -#endif // WMEFFECTMANAGER_H - -// End of file diff -r f72a12da539e -r 5315654608de widgetmanager/inc/wmiconfileprovider.h --- a/widgetmanager/inc/wmiconfileprovider.h Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,117 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* CWmIconFileProvider declaration -* -*/ - -#ifndef WMICONFILEPROVIDER_H_ -#define WMICONFILEPROVIDER_H_ - -// INCLUDES -#include -#include - -// CLASS DECLARATIONS - -/** -* CWmIconFileProvider -*/ -NONSHARABLE_CLASS( CWmIconFileProvider ) : public CBase, - public MAknIconFileProvider - { -public: - /** - * Two-phased constructor. - * - * @param aFs A handle to a file server session. - * @return New instance of CWmIconFileProvider. - */ - static CWmIconFileProvider* NewL( RFs& aFs ); - - /** - * Destructor. - */ - ~CWmIconFileProvider(); - - /** - * @return icon file name. - */ - inline const TDesC& IconFileName(); - - /** - * Setter for icon file name. - */ - void SetIconFile( const TDesC& aFileName ); - - -private: - //from MAknIconFileProvider - - /** - * Returns an open file handle to the icon file. - * This method should leave if an icon file with specified type does - * not exist. That may be the case e.g. with MBM file, - * if there are no bitmap icons. - * - * Note! RFs::ShareProtected must be called to the RFs instance used - * for opening the file. - * - * @param aFile Icon file should be opened in this file handle, which - * is an empty file handle, when the AknIcon framework calls this method. - * The AknIcon framework takes care of closing the file handle after - * having used it. - * @param aType Icon file type. - */ - void RetrieveIconFileHandleL( RFile& aFile, const TIconFileType aType ); - - /** - * With this method, AknIcon framework informs that it does not use - * this MAknIconFileProvider instance any more. After this call, - * it is ok to delete the object. This can be implemented simply - * e.g. by deleting self in this callback. - * Normally, this callback is invoked when the icon in question - * is deleted. - * Note, however, that if the same MAknIconFileProvider instance is - * supplied in multiple CreateIcon calls, then it must be accessible - * by AknIcon framework until it has signalled a matching amount - * of these callbacks. - */ - void Finished(); - -private: - /** - * Constructor - * - * @param aFs A handle to a file server session. - */ - CWmIconFileProvider( RFs& aFs ); - - /** 2nd phase constructor */ - void ConstructL(); - -private: // data - - /** the file session */ - RFs& iFs; - - /** A buffer that can contain the name of a file. */ - TFileName iFileName; - - /** used for file session */ - RFile iFile; - }; - -#include "wmiconfileprovider.inl" -#endif // WMICONFILEPROVIDER_H_ diff -r f72a12da539e -r 5315654608de widgetmanager/inc/wmiconfileprovider.inl --- a/widgetmanager/inc/wmiconfileprovider.inl Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,33 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* CWmIconFileProvider declaration -* -*/ - - - -#ifndef WMICONFILEPROVIDER_INL_ -#define WMICONFILEPROVIDER_INL_ - - - /** - * description - * - * @return description - */ - inline const TDesC& CWmIconFileProvider::IconFileName() - { return iFileName; } - -#endif /* WMICONFILEPROVIDER_INL_ */ diff -r f72a12da539e -r 5315654608de widgetmanager/inc/wmimageconverter.h --- a/widgetmanager/inc/wmimageconverter.h Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,239 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* CWmImageConverter declaration -* -*/ - -#ifndef WMIMAGECONVERTER_H -#define WMIMAGECONVERTER_H - -//includes -#include -#include -#include - -// Forward declarations -class CFbsBitmap; -class CBitmapScaler; -class CImageDecoder; -class TAknsItemID; -class CWmUnitTest; -class CWmIconFileProvider; - -// Class declaration -/** - * MConverterObserver - * To notify when image is converted - */ -NONSHARABLE_CLASS( MConverterObserver ) - { - public: - virtual void NotifyCompletion( TInt aError ) = 0; - }; - -// Class declaration -/** - * CWmImageConverter - * Image converter - */ -NONSHARABLE_CLASS ( CWmImageConverter ) : public CActive - { - /** states for this converter */ - enum TState - { - EIdle = 0, - EDecoding, - EScalingBitmap, - EScalingMask - }; - -public: //contructors/destructors - /** - * Two-phased constructor. - * @param aObserver observer - */ - static CWmImageConverter* NewL( MConverterObserver* aObserver ); - - /** Destructor */ - ~CWmImageConverter(); - -public: // interface methods - - /** - * Parses icon string and prepares logo image. - * - * @param aWidth wanted widht - * @param aHeight wanted height - * @param aIconStr str containing logo icon - * Supported values: - * - skin( ):mif( ) - * - mif( ) - * - uid() - * - . - */ - void HandleIconStringL( TInt aWidth, TInt aHeight, const TDesC& aIconStr ); - - /** - * Returns converted bitmap. Caller takes ownership - * - * @return CFbsBitmap - */ - CFbsBitmap* Bitmap(); - - /** - * Returns converted mask. Caller takes ownership - * - * @return CFbsBitmap - */ - CFbsBitmap* Mask(); - - /** - * sets the size for decoding - * @param aSize the logo size - */ - inline void SetLogoSize( const TSize& aSize ); - - /** supported image conversion methods */ - enum TConversionMethod - { - EUnrecognized, // we could not recognise the icon string - EUidIcon, // App.UID-coded icon - ESvgIcon, // Icon from SVG-file - ESkinIcon, // Icon from SKIN id - EMifIcon, // Icon from MIF file, known graphic index - ESkinAndMifIcon, // Icon from SKIN and MIF combination - EImageIcon, // Icon from image file (jpeg or png) - }; - - /** - * The type of currently converted image. - * This method can be used to check if correct conversion was used. - * @return conversion method used for current image - */ - TConversionMethod ConversionMethod(); - -protected: // implementation of CActive - /** - * Implements cancellation of an outstanding request. - * - * @see CActive::DoCancel - */ - void DoCancel(); - - /** - * Handles an active object's request completion event. - * - * @see CActive::RunL - */ - void RunL(); - - /** - * RunError - * - * @see CActive::RunError - */ - TInt RunError(TInt aError); - -private: - CWmImageConverter(); - void ConstructL( MConverterObserver* aObserver ); - -private: - - inline TState EngineState(); - void ScaleBitmap( TInt aWidth, TInt aHeight ); - void ScaleMask( TInt aWidth, TInt aHeight ); - void CreateIconFromUidL( const TUid& aUid ); - void CreateIconFromSvgL( const TDesC& aFileName ); - void CreateIconFromOtherL( const TDesC& aFileName ); - void CreateSkinOrMifIconL( - const TAknsItemID& aItemId, TInt aBitmapId, - TInt aMaskId, const TDesC& aFileName ); - // resolvers - TBool ResolveUid( const TDesC& aPath, TUid& aUid ); - TBool ResolveSkinId( const TDesC& aPath, TAknsItemID& aItemId ); - TBool ResolveMifId( const TDesC& aPath, TInt& aBitmapId, - TInt& aMaskId, TDes& aFileName ); - TBool ResolveSkinIdAndMifId( const TDesC& aPath, TAknsItemID& aItemId, - TInt& aBitmapId, TInt& aMaskId, TDes& aFileName ); - TBool EndsWith( const TDesC& aString, const TDesC& aPattern ); - -private: - /** - * Converter observer (not owned) - */ - MConverterObserver* iObserver; - - /** - * decoded image - */ - CFbsBitmap* iBitmap; - - /** - * decoded image mask - */ - CFbsBitmap* iMask; - - /** - * Icon file provider - */ - CWmIconFileProvider* iIconFileProvider; - - /** - * decoder from ICL API - */ - CImageDecoder* iImageDecoder; - - /** - * bitmap scaler - */ - CBitmapScaler* iScaler; - - /** - * internal state - */ - TState iState; - - /** - * File name to convert - */ - TFileName iFilename; - - /** - * size to convert - */ - TSize iSize; - - /** - * is scaling needed - */ - TBool iScaleNeeded; - - /** - * File handle - */ - RFs iFs; - - /** - * Conversion method for current image - */ - TConversionMethod iConversionMethod; - - }; - -#include "wmimageconverter.inl" -#endif // #ifndef WMIMAGECONVERTER_H - -// end of file diff -r f72a12da539e -r 5315654608de widgetmanager/inc/wmimageconverter.inl --- a/widgetmanager/inc/wmimageconverter.inl Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* CWmImageConverter inline function definitions -* -*/ -#ifndef IMAGECONVERTER_INL_ -#define IMAGECONVERTER_INL_ - -// --------------------------------------------------------------------------- -// Sets logo size -// --------------------------------------------------------------------------- -// -inline void CWmImageConverter::SetLogoSize( const TSize& aSize ) - { - iSize = aSize; - }; - -// --------------------------------------------------------------------------- -// Returns engine state -// --------------------------------------------------------------------------- -// -inline CWmImageConverter::TState CWmImageConverter::EngineState() - { - return iState; - }; - -#endif /* IMAGECONVERTER_INL_ */ diff -r f72a12da539e -r 5315654608de widgetmanager/inc/wmlistbox.h --- a/widgetmanager/inc/wmlistbox.h Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,422 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Declares widget listbox for WidgetManager -* -*/ - -#ifndef ___WMLISTBOX_H__ -#define ___WMLISTBOX_H__ - -// INCLUDES -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include "wmwidgetdataobserver.h" -#include "wmwidgetdata.h" - -// FORWARD DECLARATIONS -class CWmListBox; -class CWmPlugin; -class CListBoxView; -class CFormattedCellListBoxData; -class CAknLongTapDetector; -class CWmListModel; -class CWmWidgetData; -class CAknStylusPopUpMenu; -class MEikMenuObserver; - -// CLASS DECLARATIONS - -/** - * CWmListItemDrawer - */ -NONSHARABLE_CLASS( CWmListItemDrawer ): public CFormattedCellListBoxItemDrawer - { -public: - /** Two-phased constructor. */ - static CWmListItemDrawer* NewL( - CWmPlugin& aWmPlugin, - MTextListBoxModel* aTextListBoxModel, - const CFont* aFont, - CFormattedCellListBoxData* aFormattedCellData, - CWmListBox* aListBox ); - - /** Destructor. */ - ~CWmListItemDrawer(); - - /** Default logo image. */ - const CFbsBitmap* DefaultLogoImage(); - /** Default logo mask. */ - const CFbsBitmap* DefaultLogoMask(); - -public: - - /** - * from CFormattedCellListBoxItemDrawer: - * draws a single list box item - */ - void DrawItem( - TInt aItemIndex, TPoint aItemRectPos, - TBool aItemIsSelected, TBool aItemIsCurrent, - TBool aViewIsEmphasized, TBool aViewIsDimmed ) const; - -private: - /** Constructor for performing 1st stage construction */ - CWmListItemDrawer( - CWmPlugin& aWmPlugin, - MTextListBoxModel* aTextListBoxModel, - const CFont* aFont, - CFormattedCellListBoxData* aFormattedCellData, - CWmListBox* aListBox ); - - /** 2nd phase constructor */ - void ConstructL(); - - /** - * re-calculates all rects, sizes and resizes bitmaps, that are - * stored as members. Called from DrawItem if it is found that the - * draw area size has changed from previous, resulting all stored - * rectangles and bitmaps to invalidate. - * @param aSize requested size of the item being drawn. - */ - void CalculateRectangles( const TSize& aSize); - - /** - * Draws a frame rectangle for an item. - * @param aOutterRect outter rectangle. - * @param aInnerRect inner rectangle. - * @param aID Skin item id. - */ - void DrawFrame( - const TRect& aOutterRect, - const TRect& aInnerRect, - const TAknsItemID& aID, - const TAknsItemID& aCenterID ) const; - - /** - * Draws a rectangle for an item. - * @param aActualItemRect the rectangular area to be drawn. - */ - void DrawItemRect( const TRect& aActualItemRect ) const; - -private: // data members - - /** - * the plugin root (not owned) - */ - CWmPlugin& iWmPlugin; - - /** - * pointer to the list box data (not owned) - */ - CFormattedCellListBoxData* iCellData; - - /** - * pointer to the listbox (not owned) - */ - CWmListBox* iListBox; - - /** - * current font used in drawing (not owned) - */ - const CFont* iFont; - - /** - * item size used in calculating all the rects and bitmaps - */ - TSize iCurrentSize; - - /** - * logo area (relative to item upper left corner) - */ - TRect iRelativeLogoRect; - - /** - * add button area (relative to item upper left corner) - */ - TRect iRelativeAddButtonRect; - - /** - * title area (relative to item upper left corner) - */ - TRect iRelativeTitleRect; - - /** - * add-button bitmap - */ - CFbsBitmap* iAddWidgetBtnImage; - - /** - * add-button mask - */ - CFbsBitmap* iAddWidgetBtnMask; - - /** - * default logo (when widget does not have one) bitmap - */ - CFbsBitmap* iDefaultLogoImage; - - /** - * default logo (when widget does not have one) mask - */ - CFbsBitmap* iDefaultLogoImageMask; - - }; - - - -// CLASS DECLARATIONS -/** - * CWmListBox - */ -NONSHARABLE_CLASS( CWmListBox ): public CAknDouble2LargeStyleListBox, - public MWmWidgetDataObserver - { -public: - - /** - * Two-phased constructor. - */ - static CWmListBox* NewL( - CWmPlugin& aWmPlugin, - const TRect& aRect, - const CCoeControl* aParent, - TInt aFlags = 0 ); - - /** Destructor. */ - ~CWmListBox(); - -public: // API for manipulating list content - - /** Default Logo. */ - const CFbsBitmap* DefaultLogo(); - /** Default Logo mask. */ - const CFbsBitmap* DefaultMask(); - - /** - * Findbox visibility - * - * @param aVisibility sets find pane visibility - */ - inline void SetFindPaneIsVisible( TBool aVisibility ); - - /** - * Currently selected item index - * - * @return return currently selected item - */ - TInt CurrentListBoxItemIndex(); - - /** - * real index for listbox item if findbox is active - * - * @return return index from original list for currently selected item - */ - TInt RealIndex( TInt aIndex ); - - /** - * number of items in the widget data array (also items on the list) - * - * @return count of widget data array - */ - inline TInt WidgetDataCount(); - - /** - * currently selected item - * @return the selected item, or NULL if nothing selected - */ - CWmWidgetData* WidgetData(); - - /** - * gets an item by index - * - * @param aItemIndex index for item to return - */ - CWmWidgetData& WidgetData( TInt aItemIndex ); - - /** - * gets the constant widget data array - */ - inline const RWidgetDataValues& WidgetDataArray(); - - /** - * inserts widget data to the model. Takes ownership of the object. - * The widget data will appear to correct location in natural order: - * - in previously saved position, if it has been viewed before - * (widget data must have a pointer to persistent widget order) - * - in case this is a new widget, it will appear topmost - * - in case there is no persistent widgets order or it is empty, - * the widget is added in alphabetical order - * - * NOTE: caller must call HandleItemAdditionL() for the listbox after - * adding all widget datas to update the listbox correctly! - * - * @param aWidget Data data to add - */ - void AddWidgetDataL( CWmWidgetData* aWidgetData ); - - /** - * removes widget data from given index in the model - * The method reorganises the list model and size. - * Drawing is still needed to update the appearance. - * - * @param aItemIndex index to remove - * */ - void RemoveWidgetData( TInt aItemIndex/*, TBool aRedraw = ETrue*/ ); - - /** - * requests to redraw item in given index position - * - * @param aItemIndex index to redraw - */ - void RedrawItem( TInt aItemIndex ); - - /** sort order of widgets in the list */ - enum TSortOrder - { - /** sort list as it was on last run */ - EStoredOrder, - /** sort alphabetically */ - EAlphabetical, - /** show latest installed first */ - ELatestFirst - }; - - /** - * sets the list sort order - * - * @param aOrder sort order - */ - void SetSortOrderL( TSortOrder aOrder ); - - /** - * Responds to layout switched. - */ - void HandleLayoutChanged(); - - /** - * State of pointer down event - * - * @return ETrue if pointer is down - */ - inline TBool PressedDown(); - - /** - * Returns size of logo - * - * @return Size of logo rect - */ - TSize LogoSize(); - -private: // from CEikTextListBox - /** - * Creates the item drawer. - * - * @see CEikTextListBox::CreateItemDrawerL - */ - void CreateItemDrawerL(); - -protected: // from base class CCoeControl - - /** - * Sets the control's extent, specifying a rectangle. - * - * @see CCoeControl::SizeChanged - */ - void SizeChanged(); - -private: // from base class CCoeControl - - /* - * Draws the control. - * - * @see CCoeControl::Draw - */ - void Draw( const TRect& aRect ) const; - - /** - * Handles pointer events. - * - * @see CCoeControl::HandlePointerEventL - */ - void HandlePointerEventL( const TPointerEvent& aPointerEvent ); - -private: - /** Constructor for performing 1st stage construction */ - CWmListBox( CWmPlugin& aWmPlugin ); - - /** 2nd phase constructor */ - void ConstructL( - const TRect& aRect, - const CCoeControl* aParent, - TInt aFlags ); - - -protected: // from MWmWidgetDataObserver - - /** - * widget needs redrawing - * - * @param aWidgetData item to redraw - */ - void HandleWidgetDataChanged( CWmWidgetData* aWidgetData ); - -private: // own methods - - /** - * linear order for sorting, depending on the sort type being used - */ - TLinearOrder SortOrder( TSortOrder aOrder ); - -private: - - /** - * the plugin root (not owned) - */ - CWmPlugin& iWmPlugin; - - /** - * array of widget data objects (the list model) - */ - RWidgetDataValues iWidgetDatas; - - /** - * the currently active item ADD button's rectangle, for push recognition - */ - TRect iButtonRect; - - /** - * state of list box find pane - */ - TBool iFindPaneIsVisible; - - /** - * state of pointer pressed down and hold - */ - TBool iPressedDown; - - }; -#include "wmlistbox.inl" - -#endif ___WMLISTBOX_H__ - -// End of File diff -r f72a12da539e -r 5315654608de widgetmanager/inc/wmlistbox.inl --- a/widgetmanager/inc/wmlistbox.inl Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,53 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Inline function definitions for CWmListBox -* -*/ - -#ifndef WMLISTBOX_INL_ -#define WMLISTBOX_INL_ - -/** - * Findbox visibility - * - * @param aVisibility sets find pane visibility - */ - inline void CWmListBox::SetFindPaneIsVisible( TBool aVisibility ) - { iFindPaneIsVisible = aVisibility; } - - /** - * number of items in the widget data array (also items on the list) - * - * @return count of widget data array - */ - inline TInt CWmListBox::WidgetDataCount() - { return iWidgetDatas.Count(); } - - /** - * gets the constant widget data array - */ - inline const RWidgetDataValues& CWmListBox::WidgetDataArray() - { return iWidgetDatas; } - -/** - * State of pointer down event - * - * @return ETrue if pointer is down - */ - inline TBool CWmListBox::PressedDown() - { return iPressedDown; } - - -#endif /* WMLISTBOX_INL_ */ diff -r f72a12da539e -r 5315654608de widgetmanager/inc/wmmaincontainer.h --- a/widgetmanager/inc/wmmaincontainer.h Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,398 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Declares main container control for Widget Manager application. -* -*/ - -#ifndef WMMAINCONTAINER_H -#define WMMAINCONTAINER_H - -#include -#include -#include -#include -#include -#include -#include -#include // MEikListBoxObserver - -// FORWARD DECLARATIONS -class CWmPlugin; -class CWmListBox; -class CAknsBasicBackgroundControlContext; -class CAknViewAppUi; -class CAknSearchField; -class CAknButton; -class CCoeControl; -class CAknSearchField; -class CWmWidgetLoaderAo; - -/** - * Container class for WmMainContainer - * - * @class CWmMainContainer WmMainContainer.h - */ -NONSHARABLE_CLASS( CWmMainContainer ) : public CCoeControl, - public MEikListBoxObserver, - public MCoeControlObserver - { -public: // constructors and destructor - - /* - * Two-phased constructor. - * - * @param aRect container rect - * @param aParent control base class - * @param aCommandObserver observers respond to user commands - * @param aWmPlugin wm plugin - */ - static CWmMainContainer* NewL( - const TRect& aRect, - const CCoeControl* aParent, - MEikCommandObserver* aCommandObserver, - CWmPlugin& aWmPlugin ); - - /* - * Two-phased constructor. - * - * @param aRect container rect - * @param aParent control base class - * @param aCommandObserver observers respond to user commands - * @param aWmPlugin wm plugin - */ - static CWmMainContainer* NewLC( - const TRect& aRect, - const CCoeControl* aParent, - MEikCommandObserver* aCommandObserver, - CWmPlugin& aWmPlugin ); - - /** Destructor */ - virtual ~CWmMainContainer(); - -private: - CWmMainContainer( CWmPlugin& aWmPlugin ); - - void ConstructL( - const TRect& aRect, - const CCoeControl* aParent, - MEikCommandObserver* aCommandObserver ); - -public: // new functions - - /** - * @return true, if portal button is currently selected - */ - TBool PortalSelected(); - - /** - * @return true, if a widget in list is currently selected - */ - TBool WidgetSelected(); - - /** - * @return true, ADD command is possible - */ - TBool CanDoAdd(); - - /** - * @return true, if UNINSTALL command is possible - */ - TBool CanDoUninstall(); - - /** - * @return true, if LAUNCH command is possible - */ - TBool CanDoLaunch(); - - /** - * @return true, if FIND command is possible - */ - TBool CanDoFind(); - - /** - * @return true, if SORT command is possible - */ - TBool CanDoSort(); - - /** - * @return true, if DETAILS command is possible - */ - TBool CanDoDetails(); - - /** - * @return true, if HELP command is possible - */ - TBool CanDoHelp(); - - /** - * executes widget details dialog launch - */ - void LaunchDetailsDialogL(); - - /** - * executes widget addition to home screen - */ - void AddWidgetToHomeScreenL(); - - /** - * executes widget launch - */ - void LaunchWidgetL(); - - /** - * executes findbox activation - */ - void ActivateFindPaneL(); - - /** - * executes findbox deactivation - */ - void DeactivateFindPaneL(); - - /** - * sorts the widget list in alphabetical order - */ - void SortListAlphabeticallyL(); - - /** - * executes widget uninstall - */ - void UninstallWidgetL(); - - /** - * opens OVI portal - */ - void OpenOviPortalL(); - - /** - * Selection key (middle soft key) - */ - void SelectL(); - - /** - * Show widget manager help - */ - void ShowHelpL(); - - /** - * handles situation when widget list has changed. - * in practice reloads the widget list from the widgets API - * and redraws the screen. - */ - void HandleWidgetListChanged(); - -public: - - /** - * Handles key events. - * - * @see CCoeControl::OfferKeyEventL - */ - TKeyResponse OfferKeyEventL( - const TKeyEvent& aKeyEvent, - TEventCode aType ); - - /** - * Handles a change to the control's resources - * - * @see CCoeControl::HandleResourceChange - */ - void HandleResourceChange( TInt aType ); - - /** - * Handles pointer events. - * - * @see CCoeControl::HandlePointerEventL - */ - void HandlePointerEventL( const TPointerEvent& aPointerEvent ); - - /** - * returns whether adding of widget was sucessful or not - */ - TInt ExitStatus(); - - /** - * Sets the exit status to denote the failure or sucess of adding - * widget to homescreen - */ - void SetExitStatus( TInt aExitStatus ); - - /** - * Moves focus to the OVI button - */ - void SetFocusToOviButton(); - - /** - * Moves focus to the widgets list, alternatively also setting the currently - * selected item. - * @param aIndex the item in widgets list to highlight during setting focus. - * By default the previously selected item will be highlighted. - */ - void SetFocusToWidgetList( TInt aIndex = KErrUnknown ); - - /* - * Tells if user inputs should be handeled or not. If ret is EFalse wm - * can ignore user inputs. This is becouse closing view is async and user - * might give some inputs before view is closed. - */ - TBool ClosingDown(); - - /* - * To set iClosingDown. See above. - */ - void SetClosingDown( TBool aClosingDown ); - -protected: // from base class CCoeControl - - /** - * Sets the control's extent, specifying a rectangle. - * - * @see CCoeControl::SizeChanged - */ - void SizeChanged(); - -private: // from base class CCoeControl - - /* - * Draws the control. - * - * @see CCoeControl::Draw - */ - void Draw( const TRect& aRect ) const; - - /** - * Suppy Mop object for control context - * @param TTypeUid aId - */ - TTypeUid::Ptr MopSupplyObject(TTypeUid aId); - -private: // from MEikListBoxObserver - - /** - * List box observer interface. - * - * @see MEikListBoxObserver::HandleListBoxEventL - */ - void HandleListBoxEventL( - CEikListBox* aListBox, - TListBoxEvent aEventType); - -private: // from MCoeControlObserver - - /** - * Control observer interface - * - * @see MCoeControlObserver::HandleControlEventL - */ - void HandleControlEventL(CCoeControl* aControl,TCoeEvent aEventType); - -private: // New functions - - void AddControlL( CCoeControl* aControl, TInt aControlId ); - void InitializeControlsL( const TRect& aRect ); - void LayoutControlsL(); - void StartLoadingWidgetsL(); - void RemoveCtrlsFromStack(); - TKeyResponse MoveFocusByKeys( - const TKeyEvent& aKeyEvent, - TEventCode aType ); - void UpdateFocusMode(); - CCoeControl* FindChildControlByPoint( const TPoint& aPoint ); - void HandleFindSizeChanged(); - -private: - - /** - * the plugin root - */ - CWmPlugin& iWmPlugin; - - /** - * parent control - */ - const CCoeControl* iParent; - - /** - * the widgets list - */ - CWmListBox* iWidgetsList; - - /** - * search filed - */ - CAknSearchField* iFindbox; - - /** - * search filed visibility switch - */ - TBool iFindPaneIsVisible; - - /** - * background - */ - CAknsBasicBackgroundControlContext* iBgContext; - - /** - * Ovi portal - */ - CAknButton* iOviPortal; - - /** GUI layout modes */ - enum TWmLayout - { - EPortrait, - ELandscape, - ELandscapeMirrored - }; - - /** - * current widget manager container layout - */ - TWmLayout iLayout; - - /** focus modes */ - enum TWmFocusMode - { - ENowhere, - EOvi, - EList, - EFind - }; - - /** - * current widget manager focus mode - */ - TWmFocusMode iFocusMode; - - /** - * exit variable to denote sucess or failure of adding widget to hs - */ - TInt iExitStatus; - - /** - * AO for loading widgets into the list UI - */ - CWmWidgetLoaderAo* iWidgetLoader; - - /** - * If this is set to ETrue it means wmview is closing and all user inputs - * should be ignored. - */ - TBool iClosingDown; - }; - -#endif // WMMAINCONTAINER_H - -// End of File diff -r f72a12da539e -r 5315654608de widgetmanager/inc/wmmaincontainerview.h --- a/widgetmanager/inc/wmmaincontainerview.h Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,141 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Declares main container view for Widget Manager application. -* -*/ - -#ifndef WMMAINCONTAINERVIEW_H -#define WMMAINCONTAINERVIEW_H - -#include - - -class CWmMainContainer; -class CWmPlugin; - -/** - * Avkon view class for WmMainContainerView. It is register with the view server - * by the AppUi. It owns the container control. - * @class CWmMainContainerView WmMainContainerView.h - */ -NONSHARABLE_CLASS( CWmMainContainerView ) : public CAknView - { - -public: // constructors and destructor - /** - * Two-phased constructor. - * - * @param aWmPlugin wm plugin - */ - static CWmMainContainerView* NewL( CWmPlugin& aWmPlugin ); - - /** - * Two-phased constructor. - * - * @param aWmPlugin wm plugin - */ - static CWmMainContainerView* NewLC( CWmPlugin& aWmPlugin ); - - /** Destructor */ - virtual ~CWmMainContainerView(); - - -public: // from base class CAknView - /** - * Returns views id, intended for overriding by sub classes. - * - * @see CAknView::Id - */ - TUid Id() const; - - /** - * Command handling function intended for overriding by sub classes. - * - * @see CAknView::HandleCommandL - */ - void HandleCommandL( TInt aCommand ); - -public: - /** - * Creates CWmMainContainer - */ - CWmMainContainer* CreateContainerL(); - -private: - CWmMainContainerView( CWmPlugin& aWmPlugin ); - void ConstructL(); - -protected: // from base class CAknView - /** - * Avkon view architecture system. - * - * @see CAknView::DoActivateL - */ - void DoActivateL( - const TVwsViewId& aPrevViewId, - TUid aCustomMessageId, - const TDesC8& aCustomMessage ); - - /** - * View deactivation function intended for overriding by sub classes. - * - * @see CAknView::DoActivateL - */ - void DoDeactivate(); - - /** - * Event handler for status pane size changes. - * - * @see CAknView::HandleStatusPaneSizeChange - */ - void HandleStatusPaneSizeChange(); - -protected: // From MEikMenuObserver - /* - * Menu observer interface. - * - * @see MEikMenuObserver::DynInitMenuPaneL - */ - void DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane); - -private: - - /** menu commands */ - TBool HandleOpenMenuItemSelectedL(); - TBool HandleAddMenuItemSelectedL(); - TBool HandleLaunchMenuItemSelectedL(); - TBool HandleSearchMenuItemSelectedL(); - TBool HandleSortAlphaMenuItemSelectedL(); - TBool HandleUninstallMenuItemSelectedL(); - TBool HandleHelpMenuItemSelectedL(); - TBool HandleDetailsMenuItemSelectedL(); - TBool HandleDeactivateFindPaneL(); - /** setup status pane */ - void SetupStatusPaneL(); - -private: - /** - * the container - */ - CWmMainContainer* iWmMainContainer; - - /** - * the plugin root (not owned) - */ - CWmPlugin& iWmPlugin; - - }; - -#endif // WMMAINCONTAINERVIEW_H diff -r f72a12da539e -r 5315654608de widgetmanager/inc/wmpersistentwidgetorder.h --- a/widgetmanager/inc/wmpersistentwidgetorder.h Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,137 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Defines an ordered list of widget id's with persistence capability -* -*/ - -#ifndef WMPERSISTENTWIDGETORDER_H -#define WMPERSISTENTWIDGETORDER_H - -// INCLUDES -#include -#include "wmwidgetdata.h" - -// FORWARD DECLARATIONS -class RFs; - -// CLASS DECLARATION -/** - * CWmPersistentWidgetOrder - * This class is an ordered list of widget identifiers. The list can be - * serialised and extract from stream and persisted. The list can be used - * in sorting a pointer array of CWmWidgetData. - */ -NONSHARABLE_CLASS( CWmPersistentWidgetOrder ) : public CBase - { - -public: // Constructors and destructor - /** - * static constructor. - */ - static CWmPersistentWidgetOrder* NewL( RFs& aFs ); - - /** Destructor. */ - ~CWmPersistentWidgetOrder(); - -private: // private construction - - /** - * constructor - */ - CWmPersistentWidgetOrder( RFs& aFs ); - - /** - * 2nd phase constructor - */ - void ConstructL(); - - -public: // API - - /** - * Loads the persistent widget list from storage. - * This is typically done once after construction. - */ - void LoadL(); - - /** - * Stores a sorted array of WmWidgetData types as the persistent list. - * The instance can now be used to sort widget data. - * - * @param aArray the array of widget daya types - */ - void StoreL( const RWidgetDataValues& aArray ); - - /** - * Retrieves an index of given widget data object within the list. - * This index can be used to sort and organise. - * - * @param aWidgetData data to seek index of in the sorted order - * @return the index found, or KErrNotFound if widget is new - */ - TInt IndexOf( const CWmWidgetData& aWidgetData ) const; - - /** - * checks if the persistent widget order is empty. In this case it does - * not make any sense to use the object to sort anything. - * Note that before loading the object is always empty. - */ - TBool IsEmpty() const; - -protected: - - /** - * Cleans up the array - */ - void CleanupArray(); - - /** - * build the storage file path and name. The storage file will be located - * in host process private directory. - * @param aPathBuf a buffer to receive the complete file path - */ - void GetStoreFileNameL( TDes& aPathBuf ); - - /** - * Unique tag of a widget - */ - class Tag - { - public: - /** constructs a tag from parameters */ - Tag( TInt32 aUid, HBufC16* aPublisherId ); - - /** compares a tag agains a widget data */ - TBool Matches( const CWmWidgetData& aWidgetData ) const; - - /** widget uid */ - TInt32 iUid; - - /** widget publisher id */ - HBufC16* iPublisherId; - }; - -private: // data members - - /** the file session */ - RFs& iFs; - - /** array of widget tags for sorting */ - RArray iTagArray; - - }; - - -#endif // WMPERSISTENTWIDGETORDER_H diff -r f72a12da539e -r 5315654608de widgetmanager/inc/wmplugin.h --- a/widgetmanager/inc/wmplugin.h Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,162 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* widget manager plugin declaration -* -*/ - -#ifndef __WMPLUGIN_ -#define __WMPLUGIN_ - -// INCLUDES -#include -#include - -#include -#include -#include - -class CAknViewAppUi; -class CWmResourceLoader; -class CWmMainContainerView; -class CWmMainContainer; -class CWmEffectManager; - -/** - * CWmPlugin - */ -NONSHARABLE_CLASS( CWmPlugin ) : public CHsContentControlUi - { -public: - - /** - * Two-phased constructor. - */ - static CWmPlugin* NewL(); - - /** Destructor */ - ~CWmPlugin(); - -public: // From MHsContentControlUi - - /** - * shows the widget manager UI - * - * @see MHsContentControlUi::Activate - */ - void Activate(); - - /** - * Notifies widget list changes - * - * @see MHsContentControlUi::NotifyWidgetListChanged - */ - void NotifyWidgetListChanged(); - -public: // plugin services - - /** - * whether widget manager UI is showing - * - * @return return ETrue if wm UI is showed - */ - TBool IsActive(); - - /** - * hides widget manager UI - */ - void Deactivate(); - - /** - * main view activated. Sets the previous view ID and main container - * - * @param aPreviousViewId - * @param aWmMainContainer - */ - void MainViewActivated( - const TVwsViewId& aPreviousViewId, - CWmMainContainer* aWmMainContainer ); - - /** - * main view was deactivated - */ - void MainViewDeactivated(); - - /** - * the CAknViewAppUi reference - * - * @return returns CAknViewAppUi - */ - inline CAknViewAppUi& ViewAppUi(); - - /** - * the resource loader - * - * @return returns CWmResourceLoader - */ - inline CWmResourceLoader& ResourceLoader(); - - /** - * the content controller ref - * - * @return returns MHsContentController - */ - inline MHsContentController& ContentController(); - - /** - * the shared file server reference - */ - inline RFs& FileServer(); - -private: // Construction - CWmPlugin(); - void ConstructL(); - -private: // data members - - /** - * the host application view app UI (not owned) - */ - CAknViewAppUi* iViewAppUi; - - /** - * main container (not owned) - */ - CWmMainContainer* iWmMainContainer; - - /** - * resource loader - */ - CWmResourceLoader* iResourceLoader; - - /** - * previous view ID (shown when main view closed) - */ - TVwsViewId iPreviousViewUid; - - /** - * Takes care of fancy UI effects - */ - CWmEffectManager* iEffectManager; - - /** - * The file server session - */ - RFs* iFs; - - }; - -#include "wmplugin.inl" -#endif // __WMPLUGIN_ - diff -r f72a12da539e -r 5315654608de widgetmanager/inc/wmplugin.inl --- a/widgetmanager/inc/wmplugin.inl Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,54 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* widget manager plugin inline defintions -* -*/ - -#ifndef WMPLUGIN_INL_ -#define WMPLUGIN_INL_ - - /** - * the CAknViewAppUi reference - * - * @return returns CAknViewAppUi - */ - inline CAknViewAppUi& CWmPlugin::ViewAppUi() - { return *iViewAppUi; } - - /** - * the resource loader - * - * @return returns CWmResourceLoader - */ - inline CWmResourceLoader& CWmPlugin::ResourceLoader() - { return *iResourceLoader; } - - /** - * the content controller ref - * - * @return returns MHsContentController - */ - inline MHsContentController& CWmPlugin::ContentController() - { return *iHsContentController; } - - /** - * the shared file server reference - */ - inline RFs& CWmPlugin::FileServer() - { return *iFs; } - - - -#endif /* WMPLUGIN_INL_ */ diff -r f72a12da539e -r 5315654608de widgetmanager/inc/wmresourceloader.h --- a/widgetmanager/inc/wmresourceloader.h Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,133 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* loads widget manager resources and icons -* -*/ - - -#ifndef WMRESOURCELOADER_H_ -#define WMRESOURCELOADER_H_ - -// INCLUDE FILES -#include - -// FORWARD DECLARATIONS -class CAknStylusPopUpMenu; -class CEikonEnv; -class CAknButton; -class CAknInformationNote; - -/** - * CWmResourceLoader - */ -NONSHARABLE_CLASS( CWmResourceLoader ) : public CBase - { - -public: // construction/destruction - /** - * static constructor - * - * @param aCoeEnv Control environment. - */ - static CWmResourceLoader* NewL( - CEikonEnv& aEnv ); - - /** destructor */ - ~CWmResourceLoader(); - -public: // services - - /** - * Loads a button from the widgetmanager resource file - * using CAknButton::ConstructFromResourceL - * - * @param aResource handle to the empty button instance - * @param aResourceId ID of the resource to use in loading - */ - void LoadButtonL( - CAknButton& aResource, - TInt aResourceId ); - - /** - * shows a simple info popup with OK button - * @param aResourceId the resource id of string to be shown - * @param aString additional string to be replaced into %U - */ - void InfoPopupL( TInt aResourceId, const TDesC& aString ); - - /** - * shows a standard error popup - * @param aErrorCode a system-wide standard error code - */ - void ErrorPopup( TInt aErrorCode ); - - /** icon file path */ - const TDesC& IconFilePath(); - - /** default no description text */ - const TDesC& NoDescriptionText(); - -private: // internal methods - - /** constructor */ - CWmResourceLoader( - CEikonEnv& aEnv ); - - /** 2nd phase constructor */ - void ConstructL(); - - /** load the resource */ - void LoadResourcesL(); - - /** free resources */ - void UnloadResources(); - - /** find icon file path */ - void DetermineIconFilePath(); - -private: // members - - /** - * the environment - */ - CEikonEnv& iEnv; - - /** - * name of this DLL - */ - TFileName iDllName; - - /** - * resource file offset - */ - TInt iResourceFileOffset; - - /** - * ICON file - */ - TFileName iMifFile; - - /** - * info note dialog - */ - CAknInformationNote *iNote; - - /** - * Default description text - */ - HBufC* iDescription; - }; - -#endif // WMRESOURCELOADER_H_ diff -r f72a12da539e -r 5315654608de widgetmanager/inc/wmwidgetdata.h --- a/widgetmanager/inc/wmwidgetdata.h Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,252 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* CWmWidgetData declaration -* -*/ - - -#ifndef WMWIDGETDATA_H -#define WMWIDGETDATA_H - -// INCLUDES -#include -#include -#include -#include -#include - -#include "wmimageconverter.h" - -// FORWARD DECLARATIONS -class CDictionaryFileStore; -class MWmWidgetDataObserver; -class CFbsBitmap; -class CHsContentInfo; -class CWmPersistentWidgetOrder; -class RWidgetRegistryClientSession; - -// CLASS DECLARATION -/** - * CWmWidgetData is a representation of a widget in CWmListBox. it - * stores all data required for drawing the item in a list box, and - * handling the list item. - */ -NONSHARABLE_CLASS( CWmWidgetData ) - : public CBase - , public MConverterObserver - { - -public: // types - - /** widget type */ - enum TWidgetType - { - EUnknown, - ENative, - ECps // wrt widgets included in this category - }; - -public: // construction - /** - * Two-phased constructor. - * @param aHsContentInfo - * @param aRegistryClientSession - */ - static CWmWidgetData* NewL( - CHsContentInfo& aHsContentInfo, - RWidgetRegistryClientSession* aRegistryClientSession ); - - /** - * Two-phased constructor. - * @param aHsContentInfo - * @param aRegistryClientSession - */ - static CWmWidgetData* NewLC( - CHsContentInfo& aHsContentInfo, - RWidgetRegistryClientSession* aRegistryClientSession ); - - /** Destructor. */ - ~CWmWidgetData(); - -private: // private construction - /** Constructor for performing 1st stage construction */ - CWmWidgetData(); - - /** 2nd phase constructor */ - void ConstructL( - CHsContentInfo& aHsContentInfo, - RWidgetRegistryClientSession* aRegistryClientSession ); - -public: // external handles - - /** - * sets an observer for callbacks - * - * @param aObserver notifications when changes occur in widget data - */ - void SetObserver( MWmWidgetDataObserver* aObserver ); - - /** - * persistent widget order handle, which is used in comparing - */ - void SetPersistentWidgetOrder( - const CWmPersistentWidgetOrder* aPersistentWidgetOrder ); - - /** - * set logo rect size - */ - void SetLogoSize( const TSize& aSize ); - - /** - * Init logo re-creation - */ - void ReCreateLogo( const TSize& aSize ); - -public: // comparing / sorting - /** whether this object represents the same widget as aContentInfo */ - TBool EqualsTo( CHsContentInfo& aContentInfo ); - - /** comparator function for sort by name (compare two names)*/ - static TInt CompareByName( - const CWmWidgetData& aDataOne, - const CWmWidgetData& aDataTwo ); - - /** - * comparator function for sorting by stored order - **/ - static TInt CompareByPersistentWidgetOrder( - const CWmWidgetData& aDataOne, - const CWmWidgetData& aDataTwo ); - -public: // methods to read the content - - /** the HsContent info */ - inline CHsContentInfo& HsContentInfo(); - - /** the HsContent info */ - inline const CHsContentInfo& HsContentInfo() const; - - /** widget name */ - inline const TDesC& Name() const; - - /** widget description */ - inline const TDesC& Description() const; - - /** widget uid */ - inline TUid Uid() const; - - /** cps widget publisher id */ - inline const TDesC& PublisherId() const; - - /** cps widget publisher uid */ - TUid PublisherUid(); - - /** widget type */ - inline TWidgetType WidgetType() const; - - /** running install animation index */ - inline TInt InstallAnimationIndex() const; - - /** the logo bitmap */ - inline const CFbsBitmap* LogoImage(); - - /** the logo bitmap */ - inline const CFbsBitmap* LogoImageMask(); - - /** whether the widget data is valid or not */ - inline TBool IsValid(); - - /** sets the widget data validity */ - inline void SetValid( TBool aValid ); - -protected: // from MConverterObserver - - /** image conversin completed */ - void NotifyCompletion( TInt aError ); - -private: // new functions - - /** fetches publisher uid from widget registry*/ - void FetchPublisherUidL( - RWidgetRegistryClientSession* aRegistryClientSession ); - - /** Converts uid to TUid from TDesC8 */ - TUid UidFromString( const TDesC8& aUidString ) const; - - /** Logo icon string handling */ - static TInt HandleAsyncIconString( TAny* aPtr ); - void HandleIconStringL( const TDesC& aIconStr ); - void FireDataChanged(); - -private: // data members - - /* instance of the CIdle class for async iconStr handling*/ - CIdle* iIdle; - - /* the image converter utility */ - CWmImageConverter* iImageConverter; - - /* observes this widget representation (NOT OWNED) */ - MWmWidgetDataObserver* iObserver; - - /* rotating animation index */ - TInt iInstallAnimationIndex; - - /** the widget logo bitmap */ - CFbsBitmap* iLogoImage; - - /** the widget logo mask */ - CFbsBitmap* iLogoImageMask; - - /** The CHsContentInfo that corresponds to this list row */ - CHsContentInfo* iHsContentInfo; - - /** type oif the widget */ - TWidgetType iWidgetType; - - /** persistent order of widgets (used in sorting) */ - const CWmPersistentWidgetOrder* iPersistentWidgetOrder; - - /** wrt widget publisher uid */ - TUid iPublisherUid; - - /** size of logo rect in list item */ - TSize iLogoSize; - - /** validity of the widget - used during list refresh */ - TBool iValid; - - }; - - -/** - * Pointer array of widget data objects. - * Also acts as an adapter to a descriptor array, providing the - * widget names as descriptor array elements. - */ -NONSHARABLE_CLASS( RWidgetDataValues ) : public RPointerArray, - public MDesCArray - { - protected: // from MDesCArray - /** returns number of items in the pointer array */ - inline TInt MdcaCount() const; - - /** returns the pointed widget name */ - inline TPtrC16 MdcaPoint(TInt aIndex) const; - - }; - -#include "wmwidgetdata.inl" -#endif // WMWIDGETDATA_H diff -r f72a12da539e -r 5315654608de widgetmanager/inc/wmwidgetdata.inl --- a/widgetmanager/inc/wmwidgetdata.inl Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,85 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* CWmWidgetData , RWidgetDataValues inline function definitions -* -*/ - -#ifndef WMWIDGETDATA_INL_ -#define WMWIDGETDATA_INL_ - - /** the HsContent info */ - inline CHsContentInfo& CWmWidgetData::HsContentInfo() - { return *iHsContentInfo; } - - /** the HsContent info */ - inline const CHsContentInfo& CWmWidgetData::HsContentInfo() const - { return *iHsContentInfo; } - - /** widget name */ - inline const TDesC& CWmWidgetData::Name() const - { return iHsContentInfo->Name(); } - - /** widget description */ - inline const TDesC& CWmWidgetData::Description() const - { return iHsContentInfo->Description(); } - - /** widget uid */ - inline TUid CWmWidgetData::Uid() const - { return UidFromString( iHsContentInfo->Uid() ); }; - - /** cps widget publisher id */ - inline const TDesC& CWmWidgetData::PublisherId() const - { return iHsContentInfo->PublisherId(); } - - /** widget type */ - inline CWmWidgetData::TWidgetType CWmWidgetData::WidgetType() const - { return iWidgetType; } - - /** running install animation index */ - inline TInt CWmWidgetData::InstallAnimationIndex() const - { return iInstallAnimationIndex; } - - /** the logo bitmap */ - inline const CFbsBitmap* CWmWidgetData::LogoImage() - { return iLogoImage; } - - /** the logo bitmap */ - inline const CFbsBitmap* CWmWidgetData::LogoImageMask() - { return iLogoImageMask; } - - /** whether the widget data is valid or not */ - inline TBool CWmWidgetData::IsValid() - { return iValid; } - - /** sets the widget data validity */ - inline void CWmWidgetData::SetValid( TBool aValid ) - { iValid = aValid; } - - - //From RWidgetDataValues - - /** returns number of items in the pointer array */ - inline TInt RWidgetDataValues::MdcaCount() const - { - return Count(); - } - /** returns the pointed widget name */ - inline TPtrC16 RWidgetDataValues::MdcaPoint(TInt aIndex) const - { - const TPtrC16 ptr( (*this)[aIndex]->Name() ); - return ptr; - } - -#endif /* WMWIDGETDATA_INL_ */ diff -r f72a12da539e -r 5315654608de widgetmanager/inc/wmwidgetdataobserver.h --- a/widgetmanager/inc/wmwidgetdataobserver.h Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Observer for changes in the widget data -* -*/ - - -#ifndef WMWIDGETDATAOBSERVER_H -#define WMWIDGETDATAOBSERVER_H - -// INCLUDES -#include - -// Forward declarations -class CWmWidgetData; - -// CLASS DECLARATION - -/** - * Observer class for receiving notifications - * when changes occur in widget data - */ -NONSHARABLE_CLASS( MWmWidgetDataObserver ) - { - public: - /** - * A single widget data has changed. - * @param aWidgetData pointer to the data where change - * has occurred - */ - virtual void HandleWidgetDataChanged( - CWmWidgetData* aWidgetData ) = 0; - - }; - -#endif // WMWIDGETDATAOBSERVER_H diff -r f72a12da539e -r 5315654608de widgetmanager/inc/wmwidgetloaderao.h --- a/widgetmanager/inc/wmwidgetloaderao.h Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,125 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* CWmIconFileProvider declaration -* -*/ - -#ifndef WMWIDGETLOADERAO_H_ -#define WMWIDGETLOADERAO_H_ - -// INCLUDES -#include - -// FORWARD DECLARATIONS -class CWmPlugin; -class CWmListBox; -class CHsContentInfo; -class CWmWidgetData; -class CWmPersistentWidgetOrder; -class RWidgetRegistryClientSession; - -// CLASS DECLARATIONS - -/** - * CWmWidgetLoaderAo - */ -NONSHARABLE_CLASS( CWmWidgetLoaderAo ) : public CAsyncOneShot - { - -public: - /** - * Static constructor - */ - static CWmWidgetLoaderAo* NewL( - CWmPlugin& aWmPlugin, - CWmListBox& aTargetList ); - - /** - * Destructor. - */ - ~CWmWidgetLoaderAo(); - - /** - * Starts the load process by activating the AO - */ - void StartLoading(); - -private: - - /** - * Constructor - */ - CWmWidgetLoaderAo( - CWmPlugin& aWmPlugin, - CWmListBox& aTargetList ); - - /** - * 2nd phase constructor - */ - void ConstructL(); - -protected: // from CActive - - /** - * AO body - */ - void RunL(); - - /** - * AO error handler - */ - TInt RunError( TInt aError ); - -private: - - /** - * loads widgets into the listbox - */ - void DoLoadWidgetsL(); - - /** - * finds a widget data entry from iWidgetsList that matches - * given content info. returns a pointer to the data found, - * or NULL if not found - */ - CWmWidgetData* FindWidgetData( CHsContentInfo& aContentInfo ); - - /** - * adds a widget data entry to iWidgetsList - */ - void AddWidgetDataL( CHsContentInfo& aContentInfo ); - - /** - * cleanup resources allocated runing one single run - */ - void Cleanup(); - -private: // data - - /** reference to the widget manager root */ - CWmPlugin& iWmPlugin; - - /** target where widgets are to be loaded */ - CWmListBox& iWidgetsList; - - /** widget registry */ - RWidgetRegistryClientSession* iWidgetRegistry; - - /** persistent widget order */ - CWmPersistentWidgetOrder* iWidgetOrder; - - }; - -#endif // WMWIDGETLOADERAO_H_ diff -r f72a12da539e -r 5315654608de widgetmanager/rom/widgetmanager.iby --- a/widgetmanager/rom/widgetmanager.iby Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,31 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* widgetmanager binaries -*/ - -#ifndef WIDGETMANAGER_IBY -#define WIDGETMANAGER_IBY - -// widgetmanager plugin -ECOM_PLUGIN( widgetmanager.dll, widgetmanager.rsc ) - -// widgetmanager icons -data=DATAZ_\resource\apps\widgetmanager.mif \resource\apps\widgetmanager.mif - -// widgetmanager stub sis -data=ZSYSTEM\install\widgetmanager_stub.sis system\install\widgetmanager_stub.sis - -#endif // WIDGETMANAGER_IBY - diff -r f72a12da539e -r 5315654608de widgetmanager/rom/widgetmanager_resources.iby --- a/widgetmanager/rom/widgetmanager_resources.iby Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,25 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* widgetmanager resource binaries -*/ - -#ifndef WIDGETMANAGER_RESOURCES_IBY -#define WIDGETMANAGER_RESOURCES_IBY - -// widgetmanager resources -data=DATAZ_\resource\widgetmanagerview.rsc \resource\widgetmanagerview.rsc - -#endif // WIDGETMANAGER_RESOURCES_IBY - diff -r f72a12da539e -r 5315654608de widgetmanager/sis/Create_update_sisx.bat --- a/widgetmanager/sis/Create_update_sisx.bat Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -rem -rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -rem All rights reserved. -rem This component and the accompanying materials are made available -rem under the terms of "Eclipse Public License v1.0" -rem which accompanies this distribution, and is available -rem at the URL "http://www.eclipse.org/legal/epl-v10.html". -rem -rem Initial Contributors: -rem Nokia Corporation - initial contribution. -rem -rem Contributors: -rem -rem Description: -rem - -rem Change dll versions for IAD update -call elftran.exe -version 1.2 \epoc32\release\armv5\urel\widgetmanager.dll -call elftran.exe -version 1.2 \epoc32\release\armv5\udeb\widgetmanager.dll - -rem Create wm sis&sisx files -makesis widgetmanager_udeb.pkg -signsis widgetmanager_udeb.SIS widgetmanager_udeb.SISX Nokia_RnDCert_02.der Nokia_RnDCert_02.key -makesis widgetmanager_urel.pkg -signsis widgetmanager_urel.SIS widgetmanager_urel.SISX Nokia_RnDCert_02.der Nokia_RnDCert_02.key - -rem Create wm stubsis file -makesis -s widgetmanager_stub.pkg \ No newline at end of file diff -r f72a12da539e -r 5315654608de widgetmanager/sis/Nokia_RnDCert_02.der Binary file widgetmanager/sis/Nokia_RnDCert_02.der has changed diff -r f72a12da539e -r 5315654608de widgetmanager/sis/Nokia_RnDCert_02.key --- a/widgetmanager/sis/Nokia_RnDCert_02.key Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,15 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIICXQIBAAKBgQC/TDP7KKIaf5+uW4OD2iVZuUMC2a+SeQTjf6srlKcOm+CpPNXn -uLNm/8fdEnyOIuRXPRKmqhs1n0JkxEGHynELWMTuKXbQx9SRAGUXzyneGn+IJNnO -vOKHWgKCouX2hfI8rtkdqJpqmO460gGsMgw+lsbeyWyW9lnfLxq+ZC7sqQIDAQAB -AoGBALmUWZE8GBaQ3P4u9WUCSd3DJkkrmXIFSULSZeH/chlwCwDjbbhArHothVzo -REE3hEFFlERvHbplZ+mNouzy7boduvgUzbksGrbGMLJ2qO1GzWWVwV+GzOWKd3ss -/98Gwoy5R8pjnkqUE2wP1iJFw0FjvUTKcYv/z6t3LLJ0CsoBAkEA+c7ixvsviQ3J -s0INytCKU2bf8fqFQJi1VI82ukxNsujGTQ9upVSjuvqPvWyDvvTdrUBHqO+3qPut -sEh01Q8aiQJBAMQKDJPVRu4ud3mwUfEavzL5EjqwG1k9VCNGYsT4FwtrHcxu1oP/ -pk6M3rIZukqomoEEnHWPMwhrK3fhBqi0OSECQQDr40VXege4FnH5OI2Hj4afHMyp -VdQQXGMWFyopnzXblFz0lXb43cTCIiorR9XcMqNFHybLypkWE5o+lRzlt55pAkBQ -P/zeF5Sts//cpL0mgdh7OVKpC6ZmZaCnwAx2rUhhuDu+kDDoYCLoTOps5fNI1LRK -1GRoC3LMo3Jr5IYhUYWBAkBpCpN6k4JU/mszq98EojHerQNxk8sPqvQKUzTutohT -1gLX9yepGayB/TtT2EEJDkWOlnTy/dvN6W3vzbJYz97x ------END RSA PRIVATE KEY----- diff -r f72a12da539e -r 5315654608de widgetmanager/sis/backup_registration.xml --- a/widgetmanager/sis/backup_registration.xml Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ - - - - - diff -r f72a12da539e -r 5315654608de widgetmanager/sis/widgetmanager_stub.pkg --- a/widgetmanager/sis/widgetmanager_stub.pkg Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -; -; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -; All rights reserved. -; This component and the accompanying materials are made available -; under the terms of "Eclipse Public License v1.0" -; which accompanies this distribution, and is available -; at the URL "http://www.eclipse.org/legal/epl-v10.html". -; -; Initial Contributors: -; Nokia Corporation - initial contribution. -; -; Contributors: -; -; Description: widgetmanager_stub.pkg -; - -;Language - standard language definitions -&EN - -; standard SIS file header -#{"Widget Manager"},(0x20026F53),1,0,0,TYPE=SA - -;Localized Vendor name -%{"Nokia"} - -;Unique Vendor name -:"Nokia" - diff -r f72a12da539e -r 5315654608de widgetmanager/sis/widgetmanager_stub.sis Binary file widgetmanager/sis/widgetmanager_stub.sis has changed diff -r f72a12da539e -r 5315654608de widgetmanager/sis/widgetmanager_udeb.pkg --- a/widgetmanager/sis/widgetmanager_udeb.pkg Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ -; -; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -; All rights reserved. -; This component and the accompanying materials are made available -; under the terms of "Eclipse Public License v1.0" -; which accompanies this distribution, and is available -; at the URL "http://www.eclipse.org/legal/epl-v10.html". -; -; Initial Contributors: -; Nokia Corporation - initial contribution. -; -; Contributors: -; -; Description: widgetmanager.pkg -; - -;Language - standard language definitions -&EN - -; standard SIS file header -#{"Widget Manager"},(0x20026F53),1,2,2,TYPE=SA,RU - -;Localised Vendor name -%{"Nokia"} - -;Unique Vendor name -:"Nokia" - -;Supports Series 60 v 5.0 -[0x1028315F], 0, 0, 0, {"S60ProductID"} - -;We need to force update to be installed to c-drive -;becouse we are part of the homescreen. If update was installed to memcard -;homescreen will be closed when memcard is removed. - -; widgetmanager plugin and plugin resource -"\epoc32\release\armv5\udeb\widgetmanager.dll" -"C:\sys\bin\widgetmanager.dll" -"\epoc32\data\z\resource\plugins\widgetmanager.rsc" -"C:\resource\plugins\widgetmanager.rsc" - -; widgetmanager resource file -"\epoc32\data\z\resource\widgetmanagerview.rsc" -"C:\resource\widgetmanagerview.rsc" - -; widgetmanager icons -"\epoc32\data\z\resource\apps\widgetmanager.mif" -"C:\resource\apps\widgetmanager.mif" - diff -r f72a12da539e -r 5315654608de widgetmanager/sis/widgetmanager_urel.pkg --- a/widgetmanager/sis/widgetmanager_urel.pkg Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ -; -; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -; All rights reserved. -; This component and the accompanying materials are made available -; under the terms of "Eclipse Public License v1.0" -; which accompanies this distribution, and is available -; at the URL "http://www.eclipse.org/legal/epl-v10.html". -; -; Initial Contributors: -; Nokia Corporation - initial contribution. -; -; Contributors: -; -; Description: widgetmanager.pkg -; - -;Language - standard language definitions -&EN - -; standard SIS file header -#{"Widget Manager"},(0x20026F53),1,2,2,TYPE=SA,RU - -;Localised Vendor name -%{"Nokia"} - -;Unique Vendor name -:"Nokia" - -;Supports Series 60 v 5.0 -[0x1028315F], 0, 0, 0, {"S60ProductID"} - -;We need to force update to be installed to c-drive -;becouse we are part of the homescreen. If update was installed to memcard -;homescreen will be closed when memcard is removed. - -; widgetmanager plugin and plugin resource -"\epoc32\release\armv5\urel\widgetmanager.dll" -"C:\sys\bin\widgetmanager.dll" -"\epoc32\data\z\resource\plugins\widgetmanager.rsc" -"C:\resource\plugins\widgetmanager.rsc" - -; widgetmanager resource file -"\epoc32\data\z\resource\widgetmanagerview.rsc" -"C:\resource\widgetmanagerview.rsc" - -; widgetmanager icons -"\epoc32\data\z\resource\apps\widgetmanager.mif" -"C:\resource\apps\widgetmanager.mif" - diff -r f72a12da539e -r 5315654608de widgetmanager/src/wmdetailsdlg.cpp --- a/widgetmanager/src/wmdetailsdlg.cpp Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,525 +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: -* Implementation of the widget details dlg for WidgetManager -* -*/ - -// INCLUDE FILES -#include -#include // for CRichTextEditor -#include // for CRichText -#include // for AknUtils -#include // MAknsSkinInstance -#include // AknsDrawUtils -#include //layout -#include -#include -#include -#include - -#include -#include "widgetmanager.hrh" -#include "wmdetailsdlg.h" - - -// CONSTANTS - - -// MEMBER FUNCTIONS - -// --------------------------------------------------------- -// FullScreenRect -// rectangle representing the screen -// --------------------------------------------------------- -// -TRect FullScreenRect() - { - TRect screen; - CCoeEnv* env = CCoeEnv::Static(); - if ( env ) - { - CWsScreenDevice* screenDevice = env->ScreenDevice(); - if ( screenDevice ) - screen.SetRect( TPoint(0,0), screenDevice->SizeInPixels() ); - } - return screen; - } - -// --------------------------------------------------------- -// CWmDetailsDlg::NewL -// --------------------------------------------------------- -// -CWmDetailsDlg* CWmDetailsDlg::NewL( - const TDesC& aName, - const TDesC& aDescription, - TBool aCanBeAdded, - const CFbsBitmap* aLogoBmp, - const CFbsBitmap* aLogoMask, - CAknsBasicBackgroundControlContext* aBgContext ) - { - CWmDetailsDlg* self = new ( ELeave ) CWmDetailsDlg( aCanBeAdded ); - CleanupStack::PushL( self ); - self->ConstructL( aName, aDescription, aLogoBmp, aLogoMask, aBgContext ); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------- -// CWmDetailsDlg::CWmDetailsDlg -// --------------------------------------------------------- -// -CWmDetailsDlg::CWmDetailsDlg( TBool aCanBeAdded ) - : CAknDialog(), - iCanBeAdded( aCanBeAdded ) - { - iBorder = TGulBorder::ERaisedControl; - } - -// --------------------------------------------------------- -// CWmDetailsDlg::~CWmDetailsDlg -// --------------------------------------------------------- -// -CWmDetailsDlg::~CWmDetailsDlg() - { - iEikonEnv->RemoveFromStack( iRtEditor ); - iEikonEnv->RemoveFromStack( this ); - delete iRtEditor; - delete iName; - delete iDescription; - delete iLogoBmp; - delete iLogoMask; - } - -// ----------------------------------------------------------------------------- -// CWmDetailsDlg::ExecuteLD -// ----------------------------------------------------------------------------- -// -TInt CWmDetailsDlg::ExecuteLD() - { - if ( iCanBeAdded ) - { - return CAknDialog::ExecuteLD( R_WM_DETAILS_ADD_DIALOG ); - } - else - { - return CAknDialog::ExecuteLD( R_WM_DETAILS_ONLY_DIALOG ); - } - } - -// --------------------------------------------------------- -// CWmDetailsDlg::ConstructL -// --------------------------------------------------------- -// -void CWmDetailsDlg::ConstructL( - const TDesC& aName, - const TDesC& aDescription, - const CFbsBitmap* aLogoBmp, - const CFbsBitmap* aLogoMask, - CAknsBasicBackgroundControlContext* aBgContext ) - { - if ( !aLogoBmp ) - { - User::Leave( KErrArgument ); - } - - CAknDialog::ConstructL( R_AVKON_DIALOG_EMPTY_MENUBAR ); - - iBgContext = aBgContext; - iName = aName.AllocL(); - iDescription = aDescription.AllocL(); - - // create bitmap and duplicate handle - iLogoBmp = new ( ELeave ) CFbsBitmap; - TSize newSize = TSize( aLogoBmp->SizeInPixels().iWidth , - aLogoBmp->SizeInPixels().iHeight ); - User::LeaveIfError( iLogoBmp->Create( newSize, aLogoBmp->DisplayMode() ) ); - User::LeaveIfError( iLogoBmp->Duplicate( aLogoBmp->Handle() ) ); - - if ( aLogoMask ) - { - iLogoMask = new ( ELeave ) CFbsBitmap; - newSize = TSize( aLogoMask->SizeInPixels().iWidth , - aLogoMask->SizeInPixels().iHeight ); - User::LeaveIfError( iLogoMask->Create( newSize, aLogoMask->DisplayMode() ) ); - User::LeaveIfError( iLogoMask->Duplicate( aLogoMask->Handle() ) ); - } - - iEikonEnv->AddWindowShadow( static_cast(this) ); - } - -// ----------------------------------------------------------------------------- -// CWmDetailsDlg::OkToExitL -// ----------------------------------------------------------------------------- -// -TBool CWmDetailsDlg::OkToExitL( TInt aButtonId ) - { - if ( aButtonId == ECbaAddToHs || - aButtonId == EAknSoftkeyClose ) - { - // Close dlg - return ETrue; - } - return EFalse; - } - -// ----------------------------------------------------------------------------- -// CWmDetailsDlg::PreLayoutDynInitL -// ----------------------------------------------------------------------------- -// -void CWmDetailsDlg::PreLayoutDynInitL() - { - iRtEditor = new(ELeave) CEikRichTextEditor(); - iRtEditor->ConstructL( this, - 0, - 0, - CEikEdwin::EReadOnly | - CEikEdwin::ENoAutoSelection | - CEikEdwin::EAvkonDisableCursor | - CEikEdwin::EDisplayOnly ); - iRtEditor->SetContainerWindowL(*this); - iRtEditor->SetAknEditorFlags( - EAknEditorFlagEnableScrollBars | - EEikEdwinAvkonDisableCursor | - EEikEdwinDisplayOnly | - EEikEdwinReadOnly ); - - iRtEditor->SetSkinBackgroundControlContextL( iBgContext ); - - CEikScrollBarFrame* scrollBarFrame = iRtEditor->CreateScrollBarFrameL(); - scrollBarFrame->SetScrollBarVisibilityL( CEikScrollBarFrame::EOff, - CEikScrollBarFrame::EOff ); - - InsertAndFormatContentL(); - iRtEditor->UpdateScrollBarsL(); - } - -//------------------------------------------------------------------------------ -// CWmDetailsDlg::InsertAndFormatContentL -//------------------------------------------------------------------------------ -// -void CWmDetailsDlg::InsertAndFormatContentL() - { - CRichText* richText = iRtEditor->RichText(); - const TInt KMinTxtLength = 100; - - richText->Reset(); - if ( iDescription->Des().Length() <= KMinTxtLength ) - { - richText->InsertL( richText->DocumentLength(), - CEditableText::ELineBreak ); - } - richText->InsertL( richText->DocumentLength(), *iDescription ); - - // change the color of the text according to the skin color - TRgb color = KRgbBlack; - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - AknsUtils::GetCachedColor(skin, color, KAknsIIDQsnTextColors, - EAknsCIQsnTextColorsCG6 ); - - // Format text - iRtEditor->SetSelectionL( 0, richText->DocumentLength() ); - - // Get a logical font to base my font on: - const CFont* logicalFont = AknLayoutUtils::FontFromId(EAknLogicalFontPrimarySmallFont); - // Extract font information - TFontSpec fontspec = logicalFont->FontSpecInTwips(); - TCharFormat charFormat(fontspec.iTypeface.iName, fontspec.iHeight); - TCharFormatMask charFormatMask; - CParaFormat paraFormat; - TParaFormatMask paraFormatMask; - paraFormat.iHorizontalAlignment = CParaFormat::EJustifiedAlign; - charFormat.iFontPresentation.iTextColor = color; - paraFormatMask.SetAttrib(EAttAlignment); - charFormatMask.SetAttrib(EAttFontTypeface); - charFormatMask.SetAttrib(EAttFontHeight); - charFormatMask.SetAttrib(EAttColor); - iRtEditor->ApplyParaFormatL(¶Format, paraFormatMask); - iRtEditor->ApplyCharFormatL(charFormat, charFormatMask); - iRtEditor->ClearSelectionL(); - } - -//------------------------------------------------------------------------------ -// CWmDetailsDlg::CountComponentControls -//------------------------------------------------------------------------------ -// -TInt CWmDetailsDlg::CountComponentControls() const - { - return iRtEditor ? 1 : 0; - } - -//------------------------------------------------------------------------------ -// CWmDetailsDlg::ComponentControl -//------------------------------------------------------------------------------ -// -CCoeControl* CWmDetailsDlg::ComponentControl(TInt aIndex) const - { - switch (aIndex) - { - case 0: - return iRtEditor; - default: - return NULL; - } - } - -//------------------------------------------------------------------------------ -// CWmDetailsDlg::ActivateL -//------------------------------------------------------------------------------ -// -void CWmDetailsDlg::ActivateL() - { - CAknDialog::ActivateL(); - iEikonEnv->EikAppUi()->AddToStackL( this, ECoeStackPriorityDialog ); - iEikonEnv->EikAppUi()->AddToStackL( iRtEditor ); - iRtEditor->SetFocus( ETrue ); - } - -// ----------------------------------------------------------------------------- -// CWmDetailsDlg::WmDetailsDialogRect -// ----------------------------------------------------------------------------- -// -TRect CWmDetailsDlg::WmDetailsDialogRect() - { - TRect mainPane, dlgRect; - TPoint topLeft; - TInt desiredW, desiredH; - AknLayoutUtils::LayoutMetricsRect( - AknLayoutUtils::EApplicationWindow, mainPane ); - - if ( Layout_Meta_Data::IsLandscapeOrientation() ) - { - desiredW = ( mainPane.Width() - (mainPane.Width()/4) ); - desiredH = ( mainPane.Height() - (mainPane.Height()/5) ); - topLeft.iX = ( ( mainPane.Width() - desiredW ) /2); - topLeft.iY = ( ( mainPane.Height() - desiredH ) /2); - dlgRect.SetRect( topLeft, TSize( desiredW, desiredH ) ); - } - else - { - desiredH = ( mainPane.Height() - (mainPane.Height()/4) ); - desiredW = ( mainPane.Width() - (mainPane.Width()/5) ); - topLeft.iX = ( ( mainPane.Width() - desiredW ) /2); - topLeft.iY = ( ( mainPane.Height() - desiredH ) /2); - dlgRect.SetRect( topLeft, TSize( desiredW, desiredH ) ); - } - return dlgRect; - } - -// ----------------------------------------------------------------------------- -// CWmDetailsDlg::SetSizeAndPosition -// ----------------------------------------------------------------------------- -// -void CWmDetailsDlg::SetSizeAndPosition( const TSize& /*aSize*/ ) - { - SetRect( WmDetailsDialogRect() ); - } - -// ----------------------------------------------------------------------------- -// CWmDetailsDlg::SizeChanged -// ----------------------------------------------------------------------------- -// -void CWmDetailsDlg::SizeChanged() - { - CAknDialog::SizeChanged(); - TRect rect = Rect(); - if ( iBgContext ) { iBgContext->SetRect( FullScreenRect() ); } - if ( iRtEditor ) - { - const TInt offSet = 5; - TRect cbaRect; - AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EControlPane, cbaRect ); - - TInt logoH = iLogoBmp->SizeInPixels().iHeight; - - TInt height, width; - if ( Layout_Meta_Data::IsLandscapeOrientation() ) - { - height = ( (rect.Height() - logoH) - (cbaRect.Height() * 2) - offSet ); - } - else - { - height = ( (rect.Height() - logoH) - (cbaRect.Height() * 1.5) - offSet ); - } - - width = ( rect.Width() - (CEikScrollBar::DefaultScrollBarBreadth() * 4 ) - offSet ); - TPoint point = TPoint( rect.iTl.iX + offSet, rect.iTl.iY + logoH + offSet ); - TSize size = TSize( width, height ); - iRtEditor->SetRect( TRect( point, size ) ); - TRAP_IGNORE( - iRtEditor->SetSkinBackgroundControlContextL( iBgContext ); - InsertAndFormatContentL(); ); - } - } - -// ---------------------------------------------------------------------------- -// CWmDetailsDlg::SupplyMopObject -// ---------------------------------------------------------------------------- -// -TTypeUid::Ptr CWmDetailsDlg::MopSupplyObject( TTypeUid aId ) - { - if ( aId.iUid == MAknsControlContext::ETypeId ) - { - return MAknsControlContext::SupplyMopObject( aId, iBgContext ); - } - return CAknDialog::MopSupplyObject( aId ); - } - -// ---------------------------------------------------------------------------- -// CWmDetailsDlg::OfferKeyEventL -// ---------------------------------------------------------------------------- -// -TKeyResponse CWmDetailsDlg::OfferKeyEventL( const TKeyEvent& aKeyEvent,TEventCode aType ) - { - if (aType == EEventKey) - { - switch (aKeyEvent.iCode) - { - case EKeyEscape: - { - // framework calls this when dialog must shut down - return CAknDialog::OfferKeyEventL( aKeyEvent, aType ); - } - case EKeyDownArrow: - { - if ( iRtEditor ) - { - iRtEditor->MoveCursorL(TCursorPosition::EFPageDown, EFalse); - return EKeyWasConsumed; - } - } - case EKeyUpArrow: - { - if ( iRtEditor ) - { - iRtEditor->MoveCursorL(TCursorPosition::EFPageUp, EFalse); - return EKeyWasConsumed; - } - } - default: - { - if ( iRtEditor ) - { - return iRtEditor->OfferKeyEventL( aKeyEvent, aType ); - } - break; - } - } - } - return CAknDialog::OfferKeyEventL( aKeyEvent, aType); - } - -// ----------------------------------------------------------------------------- -// CWmDetailsDlg::Draw -// ----------------------------------------------------------------------------- -// -void CWmDetailsDlg::Draw( const TRect& /*aRect*/ ) const - { - CWindowGc& gc = SystemGc(); - TRect rect = Rect(); - TRect innerRect( rect ); - TRgb color = KRgbBlack; - const TInt offSet = 5; - - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - MAknsControlContext* cc = AknsDrawUtils::ControlContext( this ); - - // draw background - if ( !AknsDrawUtils::Background( skin, cc, this, gc, innerRect ) ) - { - gc.SetPenStyle( CGraphicsContext::ENullPen ); - gc.SetBrushStyle( CGraphicsContext::ENullBrush ); - gc.SetBrushColor( AKN_LAF_COLOR( 0 ) ); - gc.SetBrushStyle( CGraphicsContext::ESolidBrush ); - gc.DrawRect( innerRect ); - gc.SetBrushStyle( CGraphicsContext::ENullBrush ); - } - - // to fix scrollbar background issue in richtext editor - if ( iRtEditor ) - { - MAknsControlContext* ccRte = AknsDrawUtils::ControlContext( iRtEditor ); - AknsDrawUtils::Background( skin, ccRte, iRtEditor, gc, iRtEditor->Rect() ); - } - - // draw logo - TRect bmpRect( TPoint(0,0), TSize( iLogoBmp->SizeInPixels() ) ); - TPoint point = TPoint( innerRect.iTl.iX + offSet, - innerRect.iTl.iY + offSet ); - - if ( iLogoBmp && iLogoMask ) - { - gc.BitBltMasked( point, iLogoBmp, - bmpRect, iLogoMask, ETrue ); - } - else - { - gc.BitBlt( point, iLogoBmp, bmpRect ); - } - - // draw name - point.iX += (bmpRect.Width() + offSet); - - AknsUtils::GetCachedColor( - skin, color, - KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG6 ); - - // DRAW TEXT - const CFont* font = AknLayoutUtils::FontFromId( EAknLogicalFontPrimaryFont ); - gc.UseFont( font ); - gc.SetPenColor( color ); - gc.SetPenStyle( CGraphicsContext::ESolidPen ); - point.iY += (bmpRect.Height() - (font->HeightInPixels() /2 ) ); - CGraphicsContext::TDrawTextParam param; - - HBufC* buf = iName->Des().Alloc(); - if ( buf ) - { - TPtr bufPtr = buf->Des(); - TextUtils::ClipToFit( bufPtr, *font, (innerRect.Width() - point.iX ) ); - gc.DrawText( bufPtr ,point, param ); - delete buf; - } - else - { - gc.DrawText( *iName ,point, param ); - } - - gc.DiscardFont(); - - // draw the rounded rectangle as border - const TInt KFrameRoundRadius = 3; - 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 ); - } - -// End of File - diff -r f72a12da539e -r 5315654608de widgetmanager/src/wmeffectmanager.cpp --- a/widgetmanager/src/wmeffectmanager.cpp Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,157 +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: Effect manager. -* -*/ - - -// SYSTEM INCLUDE FILES -#include -#include -#include // For transition effects -#include // For transition effects - -// INCLUDE FILES -#include "wmeffectmanager.h" - -// CONSTANTS -const TInt KEffectTypeFullscreen = 1; - -const TInt KWaitForLayout = 1; -const TInt KEffectStarted = 2; - -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// C++ default constructor. -// ----------------------------------------------------------------------------- -// -CWmEffectManager::CWmEffectManager( CCoeEnv& aCoeEnv ): iCoeEnv (aCoeEnv) - { - } - -// ----------------------------------------------------------------------------- -// Symbian 2nd phase constructor. -// ----------------------------------------------------------------------------- -// -void CWmEffectManager::ConstructL() - { - } - -// ----------------------------------------------------------------------------- -// Two-phased constructor. -// ----------------------------------------------------------------------------- -// -CWmEffectManager* CWmEffectManager::NewL( CCoeEnv& aCoeEnv ) - { - CWmEffectManager* self = new (ELeave) CWmEffectManager( aCoeEnv ); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - return self; - } - -// ----------------------------------------------------------------------------- -// Destructor. -// ----------------------------------------------------------------------------- -// -CWmEffectManager::~CWmEffectManager() - { - GfxTransEffect::AbortFullScreen(); - iEffects.ResetAndDestroy(); - } - -// ----------------------------------------------------------------------------- -// CWmEffectManager::BeginFullscreenEffectL -// ----------------------------------------------------------------------------- -// -void CWmEffectManager::BeginFullscreenEffectL( TInt aId ) - { - TWmEffect* effect = new (ELeave) TWmEffect; - CleanupStack::PushL( effect ); - effect->iId = aId; - effect->iType = KEffectTypeFullscreen; - effect->iState = KWaitForLayout; - iEffects.Append( effect ); - - CleanupStack::Pop( effect ); - - DoBeginFullscreenEffect( *effect ); - } - -// ----------------------------------------------------------------------------- -// CWmEffectManager::UiRendered -// ----------------------------------------------------------------------------- -// -void CWmEffectManager::UiRendered() - { - for ( TInt i = 0; i < iEffects.Count(); ) - { - TWmEffect* effect = iEffects[i]; - if ( effect && effect->iState == KEffectStarted ) - { - GfxTransEffect::EndFullScreen(); - RemoveEffect( effect ); - } - else - { - // RemoveEffect() will remove from iEffects array and - // thats why we need to have conter in else - i++; - } - } - } - -// ----------------------------------------------------------------------------- -// CWmEffectManager::DoBeginFullscreenEffect -// ----------------------------------------------------------------------------- -// -void CWmEffectManager::DoBeginFullscreenEffect( TWmEffect& aEffect ) - { - if ( iCoeEnv.WsSession().GetFocusWindowGroup() != - iCoeEnv.RootWin().Identifier() ) - { - // Window group is not focused - RemoveEffect( &aEffect ); - return; - } - - const TInt flags( AknTransEffect::TParameter::EActivateExplicitCancel ); - const TUid targetAppUid( iAvkonAppUi->Application()->AppDllUid() ); - - // Set effect begin point - GfxTransEffect::BeginFullScreen( aEffect.iId , iAvkonAppUi->ClientRect(), - AknTransEffect::EParameterType, AknTransEffect::GfxTransParam( - targetAppUid, flags ) ); - - aEffect.iState = KEffectStarted; - } - -// ----------------------------------------------------------------------------- -// CXnEffectManager::RemoveEffect -// ----------------------------------------------------------------------------- -// -void CWmEffectManager::RemoveEffect( TWmEffect* aEffect ) - { - TInt index = iEffects.Find( aEffect ); - if ( index != KErrNotFound ) - { - TWmEffect* temp = iEffects[index]; - iEffects.Remove( index ); - delete temp; - } - } - -// End fo file - diff -r f72a12da539e -r 5315654608de widgetmanager/src/wmiconfileprovider.cpp --- a/widgetmanager/src/wmiconfileprovider.cpp Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,89 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* CWmIconFileProvider implementation. -* -*/ - -#include "wmcommon.h" -#include "wmiconfileprovider.h" - -// --------------------------------------------------------------------------- -// CWmIconFileProvider::CWmIconFileProvider -// --------------------------------------------------------------------------- -// -CWmIconFileProvider::CWmIconFileProvider( RFs& aFs ) - :iFs( aFs ) - { - } - -// --------------------------------------------------------------------------- -// CWmIconFileProvider::~CWmIconFileProvider -// --------------------------------------------------------------------------- -// -CWmIconFileProvider::~CWmIconFileProvider() - { - } - -// --------------------------------------------------------------------------- -// CWmIconFileProvider::SetIconFile -// --------------------------------------------------------------------------- -// -void CWmIconFileProvider::SetIconFile( const TDesC& aFileName ) - { - iFileName.Copy( aFileName ); - } - -// --------------------------------------------------------------------------- -// CWmIconFileProvider::NewL -// --------------------------------------------------------------------------- -// -CWmIconFileProvider* CWmIconFileProvider::NewL( RFs& aFs ) - { - CWmIconFileProvider* self = new (ELeave) CWmIconFileProvider( aFs ); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(); // self - return self; - } - -// --------------------------------------------------------------------------- -// CWmIconFileProvider::ConstructL -// --------------------------------------------------------------------------- -// -void CWmIconFileProvider::ConstructL() - { - } - -// --------------------------------------------------------------------------- -// CWmIconFileProvider::RetrieveIconFileHandleL -// --------------------------------------------------------------------------- -// -void CWmIconFileProvider::RetrieveIconFileHandleL( - RFile& aFile, - const TIconFileType /*aType*/ ) - { - User::LeaveIfError( aFile.Open( iFs, iFileName, EFileShareAny ) ); - } - -// --------------------------------------------------------------------------- -// CWmIconFileProvider::Finished -// --------------------------------------------------------------------------- -// -void CWmIconFileProvider::Finished() - { - } - -// end of file - diff -r f72a12da539e -r 5315654608de widgetmanager/src/wmimageconverter.cpp --- a/widgetmanager/src/wmimageconverter.cpp Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,874 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* CWmImageConverter implementation -* -*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include // KWidgetUidLowerBound, KWidgetUidUpperBound - -#include "wmiconfileprovider.h" -#include "wmimageconverter.h" - -_LIT( KSkin, "skin" ); -_LIT( KMif, "mif" ); -_LIT( KUid, "uid" ); -_LIT( KColon, ":" ); -_LIT( KSvgExt, ".svg" ); -_LIT( KHexPrefix, "0x" ); -const TUint KLeftParenthesis = '('; - -// --------------------------------------------------------- -// CWmImageConverter::NewL -// --------------------------------------------------------- -// -CWmImageConverter* CWmImageConverter::NewL( MConverterObserver* aObserver ) - { - CWmImageConverter* self = - new(ELeave) CWmImageConverter(); - CleanupStack::PushL( self ); - self->ConstructL( aObserver ); - CleanupStack::Pop(self); - return self; - } - -// --------------------------------------------------------- -// CWmImageConverter::CWmImageConverter -// --------------------------------------------------------- -// -CWmImageConverter::CWmImageConverter() - : CActive( EPriorityStandard ) - { - iState = EIdle; - iBitmap = NULL; - iMask = NULL; - iObserver = NULL; - iConversionMethod = EUnrecognized; - CActiveScheduler::Add( this ); - } - -// --------------------------------------------------------- -// CWmImageConverter::ConstructL -// --------------------------------------------------------- -// -void CWmImageConverter::ConstructL( MConverterObserver* aObserver ) - { - User::LeaveIfError( iFs.Connect() ); - iFs.ShareProtected(); - iIconFileProvider = CWmIconFileProvider::NewL( iFs ); - iScaler = CBitmapScaler::NewL(); - iObserver = aObserver; - } - -// --------------------------------------------------------- -// CWmImageConverter::~CWmImageConverter -// --------------------------------------------------------- -// -CWmImageConverter::~CWmImageConverter() - { - Cancel(); - delete iImageDecoder; - iFs.Close(); - if (iBitmap) - { - delete iBitmap; - iBitmap = NULL; - } - if (iMask) - { - delete iMask; - iMask = NULL; - } - delete iScaler; - delete iIconFileProvider; - } - -// --------------------------------------------------------- -// CWmImageConverter::HandleIconStringL -// --------------------------------------------------------- -// -void CWmImageConverter::HandleIconStringL( - TInt aWidth, TInt aHeight, - const TDesC& aIconStr ) - { - if ( aIconStr.Length() ) - { - TAknsItemID skinItemId; - skinItemId.iMajor = 0; - skinItemId.iMinor = 0; - TInt bitmapId( KErrNotFound ); - TInt maskId( KErrNotFound ); - TUid appUid; - iFilename = KNullDesC; - iScaleNeeded = EFalse; - iSize.SetSize( aWidth, aHeight ); - - if ( ResolveSkinIdAndMifId( - aIconStr, skinItemId, bitmapId, maskId, iFilename ) ) - { - if ( bitmapId >= 0 && skinItemId.iMajor > 0 ) - iConversionMethod = ESkinAndMifIcon; - else if ( bitmapId >= 0 ) - iConversionMethod = EMifIcon; - else - iConversionMethod = ESkinIcon; - CreateSkinOrMifIconL( - skinItemId, bitmapId, maskId, iFilename ); - } - else if ( ResolveUid( aIconStr, appUid ) ) - { - iConversionMethod = EUidIcon; - CreateIconFromUidL( appUid ); - } - else if ( EndsWith( aIconStr, KSvgExt ) ) - { - // filename_with_full_path.svg - iConversionMethod = ESvgIcon; - CreateIconFromSvgL( aIconStr ); - } - else if ( BaflUtils::FileExists( iFs, aIconStr ) ) - { - // filename_with_full_path.png/jpg - iConversionMethod = EImageIcon; - CreateIconFromOtherL( aIconStr ); - } - else - { - iConversionMethod = EUnrecognized; - User::Leave( KErrArgument ); - } - } - } - -// --------------------------------------------------------- -// CWmImageConverter::CreateIconFromUidL -// --------------------------------------------------------- -// -void CWmImageConverter::CreateIconFromUidL( const TUid& aUid ) - { - CFbsBitmap* bitmap = NULL; - CFbsBitmap* mask = NULL; - - if ( aUid.iUid >= KWidgetUidLowerBound && - aUid.iUid < KWidgetUidUpperBound ) - { - // AknsUtils::CreateAppIconLC panics incase of WRT - - RApaLsSession lsSession; - User::LeaveIfError( lsSession.Connect() ); - CleanupClosePushL( lsSession ); - - CArrayFixFlat* sizeArray = new (ELeave) CArrayFixFlat(3); - CleanupStack::PushL( sizeArray ); - User::LeaveIfError( lsSession.GetAppIconSizes( aUid, *sizeArray ) ); - TInt sizeCount = sizeArray->Count(); - TSize size; - if ( sizeCount > 0 ) - { - for( TInt i=0; i < sizeArray->Count(); i++ ) - { - size = (*sizeArray)[i]; - if ( size == iSize ) - { - break; - } - } - } - CApaMaskedBitmap* maskedBmp = CApaMaskedBitmap::NewLC(); - User::LeaveIfError( lsSession.GetAppIcon( aUid, size, *maskedBmp ) ); - iBitmap = static_cast( maskedBmp ); // ownership transfered - - iMask = new ( ELeave ) CFbsBitmap; - User::LeaveIfError( iMask->Create( - maskedBmp->Mask()->SizeInPixels(), - maskedBmp->Mask()->DisplayMode() ) ); - // duplicate mask, origional is owned by maskedBmp - iMask->Duplicate( maskedBmp->Mask()->Handle() ); - CleanupStack::Pop( maskedBmp ); - maskedBmp = NULL; - CleanupStack::PopAndDestroy(sizeArray); - CleanupStack::PopAndDestroy( &lsSession ); - - // scale or notify - if ( size == iSize ) - { - iObserver->NotifyCompletion( KErrNone ); - } - else - { - iScaleNeeded = ETrue; - ScaleBitmap( iSize.iWidth, iSize.iHeight ); - } - } - else if ( aUid.iUid != KNullUid.iUid ) - { - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - TInt err( KErrNone ); - TRAP( err, - { - AknsUtils::CreateAppIconLC( skin, aUid, - EAknsAppIconTypeContext, bitmap, mask ); - CleanupStack::Pop( 2 ); // for trap - } - ); - - if( KErrNone != err ) - { - // If icon is not created, try to create default application icon - AknsUtils::CreateIconLC( skin, - KAknsIIDQgnMenuUnknownLst, bitmap, mask, - AknIconUtils::AvkonIconFileName(), - EMbmAvkonQgn_menu_unknown_lst, - EMbmAvkonQgn_menu_unknown_lst_mask ); - CleanupStack::Pop( 2 ); // for trap - } - - iBitmap = bitmap; - iMask = mask; - - err = AknIconUtils::SetSize( iBitmap , iSize, EAspectRatioNotPreserved ); - if ( KErrNone == err ) - { - err = AknIconUtils::SetSize( iMask , iSize, EAspectRatioNotPreserved ); - } - - // notify observer - iObserver->NotifyCompletion( err ); - } - else - { - User::Leave( KErrArgument ); - } - } - -// --------------------------------------------------------- -// CWmImageConverter::CreateIconFromSvgL -// --------------------------------------------------------- -// -void CWmImageConverter::CreateIconFromSvgL( const TDesC& aFileName ) - { - TInt domHandle; - CFbsBitmap* dummyBitmap = new ( ELeave ) CFbsBitmap; - CleanupStack::PushL( dummyBitmap ); - - dummyBitmap->Create( TSize( 0, 0 ), EGray2 ); - TFontSpec fontSpec; - CSvgEngineInterfaceImpl* svgEngine = - CSvgEngineInterfaceImpl::NewL( dummyBitmap, NULL, fontSpec ); - CleanupStack::PushL( svgEngine ); - - svgEngine->SetBackgroundColor( 0 ); - svgEngine->SetDRMMode( EFalse ); - - User::LeaveIfError( svgEngine->PrepareDom( - aFileName, domHandle )->SystemErrorCode() ); - - iBitmap = new ( ELeave ) CFbsBitmap; - - User::LeaveIfError( iBitmap->Create( iSize, EColor16M ) ); - - iMask = new ( ELeave ) CFbsBitmap; - User::LeaveIfError( iMask->Create( iSize, EGray256 ) ); - - svgEngine->UseDom( domHandle, iBitmap, iMask ); - svgEngine->SetPreserveAspectRatio( NULL, ESvgPreserveAspectRatio_XmidYmid, - ESvgMeetOrSlice_Meet, ETrue ); - svgEngine->SetSvgDimensionToFrameBuffer( - iSize.iWidth, iSize.iHeight ); - - svgEngine->Start(); - - if ( iBitmap->SizeInPixels() != iSize || - svgEngine->ContentDimensions() != iSize ) - { - iScaleNeeded = ETrue; - ScaleBitmap( iSize.iWidth, iSize.iHeight ); - } - else - { - // notify observer - iObserver->NotifyCompletion( KErrNone ); - } - - svgEngine->UseDom( domHandle, NULL, NULL ); - svgEngine->DeleteDom( domHandle ); - - CleanupStack::PopAndDestroy( 2, dummyBitmap ); // dummyBitmap, svgEngine - } - -// --------------------------------------------------------- -// CWmImageConverter::CreateIconFromOtherL -// --------------------------------------------------------- -// -void CWmImageConverter::CreateIconFromOtherL( const TDesC& aFileName ) - { - if ( IsActive() || iState != EIdle ) - { - User::Leave( KErrNotReady ); - } - - if ( iImageDecoder ) delete iImageDecoder; iImageDecoder = NULL; - if (iBitmap) {delete iBitmap; iBitmap = NULL;} - if (iMask) {delete iMask; iMask = NULL;} - - iFilename.Copy( aFileName ); - - // create the decoder - iImageDecoder = CImageDecoder::FileNewL( iFs, iFilename ); - - TSize size = iImageDecoder->FrameInfo().iOverallSizeInPixels; - - // create the destination bitmap - iBitmap = new (ELeave) CFbsBitmap(); - iBitmap->Create( size, - iImageDecoder->FrameInfo().iFrameDisplayMode ); - - iMask = new (ELeave) CFbsBitmap(); - iMask->Create( size, EGray256 ); - - if ( size != iSize ) - { - iScaleNeeded = ETrue; - } - // start conversion to bitmap - iState = EDecoding; - iImageDecoder->Convert( &iStatus, *iBitmap, *iMask ); - SetActive(); - } - -// --------------------------------------------------------- -// CWmImageConverter::DoCancel -// --------------------------------------------------------- -// -void CWmImageConverter::DoCancel() - { - if( iState == EDecoding ) - { - iImageDecoder->Cancel(); - if ( iObserver ) - { - iObserver->NotifyCompletion( KErrCancel ); - } - } - else if( iState == EScalingBitmap || - iState == EScalingMask ) - { - iScaler->Cancel(); - if ( iObserver ) - { - iObserver->NotifyCompletion( KErrCancel ); - } - } - else - { - // State is EIdle, do nothing - } - iState = EIdle; - iScaleNeeded = EFalse; - } - -// --------------------------------------------------------- -// CWmImageConverter::RunL -// --------------------------------------------------------- -// -void CWmImageConverter::RunL() - { - switch( iState ) - { - case EDecoding: - { - if( iStatus.Int() == KErrNone ) - { - if ( iScaleNeeded ) - { - ScaleBitmap( iSize.iWidth, iSize.iHeight ); - } - else - { - iState = EIdle; - if ( iObserver ) - { - iObserver->NotifyCompletion( KErrNone ); - } - } - break; - } - else if( iStatus.Int() == KErrUnderflow ) - { - iImageDecoder->ContinueConvert( &iStatus ); - SetActive(); - break; - } - else if ( iStatus.Int() == KErrCorrupt ) - { - iState = EIdle; - iScaleNeeded = EFalse; - if ( iBitmap ) - { - delete iBitmap; - iBitmap = NULL; - } - if ( iMask ) - { - delete iMask; - iMask = NULL; - } - if ( iObserver ) - { - iObserver->NotifyCompletion( KErrCorrupt ); - } - break; - } - else - { - // Unknown error - iState = EIdle; - iScaleNeeded = EFalse; - if ( iBitmap ) - { - delete iBitmap; - iBitmap = NULL; - } - if ( iMask ) - { - delete iMask; - iMask = NULL; - } - if ( iObserver ) - { - iObserver->NotifyCompletion( iStatus.Int() ); - } - break; - } - } - case EScalingBitmap: - { - if( iStatus.Int() == KErrNone && iMask ) - { - ScaleMask( iSize.iWidth, iSize.iHeight ); - } - else - { - iState = EIdle; - iScaleNeeded = EFalse; - if ( iObserver ) - { - iObserver->NotifyCompletion( iStatus.Int() ); - } - } - break; - } - case EScalingMask: - { - iState = EIdle; - iScaleNeeded = EFalse; - if ( iObserver ) - { - iObserver->NotifyCompletion( iStatus.Int() ); - } - break; - } - default: - break; - } - } - -// --------------------------------------------------------- -// CWmImageConverter::RunError -// --------------------------------------------------------- -// -TInt CWmImageConverter::RunError(TInt /*aError*/) - { - // Our RunL does not contain any method calls that would leave, so this method - // should never be called. - iScaleNeeded = EFalse; - return KErrNone; - } - -// --------------------------------------------------------- -// CWmImageConverter::ScaleBitmap -// --------------------------------------------------------- -// -void CWmImageConverter::ScaleBitmap( TInt aWidth, TInt aHeight ) - { - if ( !IsActive() && - iBitmap && - ( iState == EDecoding || iState == EIdle ) ) - { - // the maintain aspect ratio is by default set to true - iScaler->Scale( &iStatus, *iBitmap, TSize( aWidth,aHeight ), EFalse ); - iState = EScalingBitmap; - SetActive(); - } - } - -// --------------------------------------------------------- -// CWmImageConverter::ScaleMask -// --------------------------------------------------------- -// -void CWmImageConverter::ScaleMask( TInt aWidth, TInt aHeight ) - { - if ( !IsActive() && - iState == EScalingBitmap && - iMask ) - { - // the maintain aspect ratio is by default set to true - iScaler->Scale( &iStatus, *iMask, TSize(aWidth,aHeight), EFalse ); - iState = EScalingMask; - SetActive(); - } - } - -// --------------------------------------------------------- -// CWmImageConverter::Bitmap -// --------------------------------------------------------- -// -CFbsBitmap* CWmImageConverter::Bitmap() - { - CFbsBitmap* bitmap = NULL; - if (iState == EIdle && - iBitmap ) - { - bitmap = iBitmap; // ownership taken - iBitmap = NULL; - } - return bitmap; - } - -// --------------------------------------------------------- -// CWmImageConverter::Mask -// --------------------------------------------------------- -// -CFbsBitmap* CWmImageConverter::Mask() - { - CFbsBitmap* mask = NULL; - if (iState == EIdle && - iMask ) - { - mask = iMask; // ownership taken - iMask = NULL; - } - return mask; - } - -// --------------------------------------------------------- -// CWmImageConverter::EndsWith -// --------------------------------------------------------- -// -TBool CWmImageConverter::EndsWith( const TDesC& aString, - const TDesC& aPattern ) - { - return ( aString.Right( aPattern.Length() ) == aPattern ); - } - -// --------------------------------------------------------------------------- -// CWmImageConverter::ResolveUid -// --------------------------------------------------------------------------- -// -TBool CWmImageConverter::ResolveUid( - const TDesC& aPath, TUid& aUid ) - { - // Syntax: uid(0x12345678) - TInt error = KErrNotFound; - TInt pos = aPath.FindF( KUid ); - if( pos == 0 ) - { - // Skip skin token - pos += KUid().Length(); - - // Initialize lexer - TLex lex( aPath.Mid( pos ) ); - - // Check left parenthesis - if ( lex.Get() == KLeftParenthesis ) - { - lex.SkipSpaceAndMark(); - lex.SkipCharacters(); - - TPtrC mtoken = lex.MarkedToken(); - pos = mtoken.FindF( KHexPrefix ); - if ( pos == 0 ) - { - TLex lex( mtoken.Mid( KHexPrefix().Length() ) ); - TUint id = 0; - error = lex.Val( id, EHex ); - aUid = TUid::Uid( (TInt)id ); - } - else - { - TInt id( 0 ); - error = lex.Val( id ); - aUid.iUid = id; - } - } - } - - return (error == KErrNone ); - } - -// --------------------------------------------------------------------------- -// CWmImageConverter::ResolveSkinId -// --------------------------------------------------------------------------- -// -TBool CWmImageConverter::ResolveSkinId( - const TDesC& aPath, TAknsItemID& aItemId ) - { - // Syntax: skin(major minor) - TInt error = KErrNotFound; - TInt pos = aPath.FindF( KSkin ); - if( pos == 0 ) - { - // Skip skin token - pos += KSkin().Length(); - - // Initialize lexer - TLex lex( aPath.Mid( pos ) ); - - lex.SkipSpaceAndMark(); - // Check left parenthesis - if ( lex.Get() == KLeftParenthesis ) - { - pos++; - TLex lex( aPath.Mid( pos ) ); - lex.SkipSpaceAndMark(); - - TPtrC mtoken = lex.MarkedToken(); - pos = mtoken.FindF( KHexPrefix ); - if ( pos == 0 ) - { - TUint majorId( 0 ); - TUint minorId( 0 ); - lex.Assign( mtoken.Mid( KHexPrefix().Length() ) ); - error = lex.Val( majorId, EHex ); - lex.SkipSpace(); - lex.SkipAndMark( KHexPrefix().Length() ); - error |= lex.Val( minorId, EHex ); - aItemId.Set( majorId, minorId ); - } - else - { - TInt majorId(0); - TInt minorId(0); - error = lex.Val( majorId ); - lex.SkipSpace(); - error |= lex.Val( minorId ); - aItemId.Set( majorId, minorId ); - } - } - } - - return (error == KErrNone ); - } - -// --------------------------------------------------------------------------- -// CWmImageConverter::ResolveMifId -// --------------------------------------------------------------------------- -// -TBool CWmImageConverter::ResolveMifId( - const TDesC& aPath, TInt& aBitmapId, - TInt& aMaskId, TDes& aFileName ) - { - // Syntax: mif(filename bimapId maskId) - TInt error = KErrNotFound; - TInt pos = aPath.FindF( KMif ); - if( pos == 0 ) - { - // Skip mif token - pos += KMif().Length(); - // Initialize lexer - TLex lex( aPath.Mid( pos ) ); - - // Check left parenthesis - if ( lex.Get() == KLeftParenthesis ) - { - lex.SkipSpaceAndMark(); - lex.SkipCharacters(); - // Resolve MifFile name - aFileName.Copy(lex.MarkedToken()); - if( aFileName.Length()!= 0) - { - // Resolve bitmap id - lex.SkipSpace(); - error = lex.Val( aBitmapId ); - - // Resolve mask id - // dont return error if it is not found, that is ok - lex.SkipSpace(); - lex.Val( aMaskId ); - } - else - { - error = KErrNotFound; - } - } - } - return (error == KErrNone ); - } - -// --------------------------------------------------------------------------- -// CWmImageConverter::ResolveSkinIdAndMifId -// --------------------------------------------------------------------------- -// -TBool CWmImageConverter::ResolveSkinIdAndMifId( - const TDesC& aPath, TAknsItemID& aItemId, - TInt& aBitmapId, TInt& aMaskId, TDes& aFileName ) - { - // Syntax: skin(major minor):mif(filename bimapId maskId) - TBool result = ResolveSkinId( aPath, aItemId ); - if ( result ) - { - TInt pos = aPath.FindF( KColon ); - if ( pos != KErrNotFound ) - { - TPtrC ptr = aPath.Mid( pos+1 ); - result = ResolveMifId( ptr, aBitmapId, aMaskId, aFileName ); - } - } - else - { - result = ResolveMifId( aPath, aBitmapId, aMaskId, aFileName ); - } - return result; - } - -// --------------------------------------------------------------------------- -// CWmImageConverter::CreateSkinOrMifIconL -// --------------------------------------------------------------------------- -// -void CWmImageConverter::CreateSkinOrMifIconL( - const TAknsItemID& aItemId, TInt aBitmapId, - TInt aMaskId, const TDesC& aFileName ) - { - iIconFileProvider->SetIconFile( aFileName ); - - CFbsBitmap* bitmap = NULL; - CFbsBitmap* mask = NULL; - - // Load from skin - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - if ( skin && aItemId.iMajor != 0 && aItemId.iMinor != 0 ) - { - TInt err( KErrNone ); - CAknsMaskedBitmapItemData* itemData = NULL; - TRAP( err, itemData = - static_cast( - skin->CreateUncachedItemDataL( aItemId, EAknsITMaskedBitmap ) ); ); - if( itemData && KErrNone == err ) - { - CleanupStack::PushL( itemData ); - // Detach bitmaps - bitmap = itemData->Bitmap(); - itemData->SetBitmap( NULL ); - mask = itemData->Mask(); - itemData->SetMask( NULL ); - CleanupStack::PopAndDestroy( itemData ); - } - else - { - // look in imagetable - CAknsImageTableItemData* iconData = NULL; - TRAP( err, iconData = static_cast( - skin->CreateUncachedItemDataL( aItemId, EAknsITImageTable ) ); ); - if( iconData && KErrNone == err ) - { - CleanupStack::PushL( iconData ); - if( iconData->NumberOfImages() ) - { - TAknsItemID iconIId; - iconIId.Set( iconData->ImageIID(0) ); - TRAP( err, AknsUtils::CreateIconL( - skin, iconIId, bitmap, mask, KNullDesC, -1, -1 ); ); - } - CleanupStack::PopAndDestroy( iconData ); - } - } - - if ( KErrNone == err && bitmap ) - { - TInt err = AknIconUtils::SetSize( bitmap , iSize, EAspectRatioNotPreserved ); - if ( KErrNone == err ) - { - if ( mask ) - { - err = AknIconUtils::SetSize( mask , iSize, EAspectRatioNotPreserved ); - } - iBitmap = bitmap; - iMask = mask; - // notify observer - iObserver->NotifyCompletion( KErrNone ); - return; - } - else - { - if ( bitmap ) { delete bitmap; bitmap = NULL; } - if ( mask ){ delete mask; mask = NULL; } - } - } - } - - if( aBitmapId != KErrNotFound && !bitmap && - aFileName.Length() && BaflUtils::FileExists( iFs, aFileName ) ) - { - if ( aMaskId != KErrNotFound ) - { - // Create icon from Mif filename , bitmap id and mask id - AknIconUtils::CreateIconL( - bitmap, mask, *iIconFileProvider, aBitmapId, aMaskId ); - } - else - { - bitmap = AknIconUtils::CreateIconL( *iIconFileProvider, aBitmapId ); - } - } - else - { - User::Leave( KErrArgument ); - } - - iBitmap = bitmap; - iMask = mask; - - TInt err = AknIconUtils::SetSize( iBitmap , iSize, EAspectRatioNotPreserved ); - if ( KErrNone == err ) - { - err = AknIconUtils::SetSize( iMask , iSize, EAspectRatioNotPreserved ); - } - - // notify observer - iObserver->NotifyCompletion( err ); - } - -// --------------------------------------------------------------------------- -// CWmImageConverter::ConversionMethod() -// --------------------------------------------------------------------------- -// -CWmImageConverter::TConversionMethod CWmImageConverter::ConversionMethod() - { - return iConversionMethod; - } - -// End of file - diff -r f72a12da539e -r 5315654608de widgetmanager/src/wmlistbox.cpp --- a/widgetmanager/src/wmlistbox.cpp Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,678 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Implementation of the widget listbox for WidgetManager -* -*/ - -// INCLUDE FILES -#include -#include -#include -#include -#include -#include - -#include -#include -#include "wmcommon.h" -#include "wmplugin.h" -#include "wmresourceloader.h" -#include "wmlistbox.h" -#include "wmwidgetdata.h" - -// CONSTANTS -const TInt KFrameRoundRadius = 4; -const TInt KFocusFrameWidth = 2; -const TInt KLeftMarginBig = 5; -const TInt KRightMargin = 1; -const TInt KTopTextMargin = 2; -const TInt KRightTextMargin = 3; -const TInt KRightMarginBig = 5; -const TInt KTopMargin = 1; -const TInt KTopMarginBig = 5; -const TInt KBottomMargin = 1; -const TInt KBottomMarginBig = 5; -const TInt KLogoWidth = 55; -const TInt KLogoHeight = 55; - -// MEMBER FUNCTIONS - -// --------------------------------------------------------- -// CWmListItemDrawer::NewL -// --------------------------------------------------------- -// -CWmListItemDrawer* CWmListItemDrawer::NewL( - CWmPlugin& aWmPlugin, - MTextListBoxModel* aTextListBoxModel, - const CFont* aFont, - CFormattedCellListBoxData* aFormattedCellData, - CWmListBox* aListBox ) - { - CWmListItemDrawer* self = new ( ELeave ) CWmListItemDrawer( - aWmPlugin, - aTextListBoxModel, - aFont, - aFormattedCellData, - aListBox ); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } - -// --------------------------------------------------------- -// CWmListItemDrawer::CWmListItemDrawer -// --------------------------------------------------------- -// -CWmListItemDrawer::CWmListItemDrawer( - CWmPlugin& aWmPlugin, - MTextListBoxModel* aTextListBoxModel, - const CFont* aFont, - CFormattedCellListBoxData* aFormattedCellData, - CWmListBox* aListBox ) - : CFormattedCellListBoxItemDrawer( aTextListBoxModel,aFont,aFormattedCellData ), - iWmPlugin( aWmPlugin ) - { - iCellData = aFormattedCellData; - iListBox = aListBox; - iFont = aFont; - } - -// --------------------------------------------------------- -// CWmListItemDrawer::ConstructL -// --------------------------------------------------------- -// -void CWmListItemDrawer::ConstructL() - { - SetSkinEnabledL( ETrue ); - - AknsUtils::CreateIconL( - AknsUtils::SkinInstance(), - KAknsIIDQgnMenuHswidget, - iDefaultLogoImage, - iDefaultLogoImageMask, - iWmPlugin.ResourceLoader().IconFilePath(), - EMbmWidgetmanagerQgn_menu_hswidget, - EMbmWidgetmanagerQgn_menu_hswidget_mask - ); - - AknsUtils::CreateIconL( - AknsUtils::SkinInstance(), - KAknsIIDQgnIndiWmAdd, - iAddWidgetBtnImage, - iAddWidgetBtnMask, - iWmPlugin.ResourceLoader().IconFilePath(), - EMbmWidgetmanagerAdd_widget_button, - EMbmWidgetmanagerAdd_widget_button_mask - ); - } - -// --------------------------------------------------------- -// CWmListItemDrawer::~CWmListItemDrawer -// --------------------------------------------------------- -// -CWmListItemDrawer::~CWmListItemDrawer() - { - iCellData = NULL; - iListBox = NULL; - - // dispose icons - delete iDefaultLogoImage; - delete iDefaultLogoImageMask; - delete iAddWidgetBtnImage; - delete iAddWidgetBtnMask; - } - -// --------------------------------------------------------- -// CWmListItemDrawer::CalculateRectangles -// --------------------------------------------------------- -// -void CWmListItemDrawer::CalculateRectangles( const TSize& aSize ) - { - iCurrentSize = aSize; - - // LOGO RECT - TSize logoSize = iListBox->LogoSize(); - TInt val = ( aSize.iHeight - KBottomMarginBig * 4 ); - TSize newSize( val, val ); - if ( logoSize != newSize || - logoSize.iHeight >= aSize.iHeight ) - { - logoSize = newSize; - } - iRelativeLogoRect.SetRect( - TPoint( KLeftMarginBig, KTopMarginBig ), - TSize( logoSize ) ); - - // ADD BUTTON RECT - TInt btnWidth = ( aSize.iWidth / 7 ); - TInt btnHeight = ( aSize.iHeight / 3 ); - TPoint btnLocation( - ( aSize.iWidth - KRightMarginBig - btnWidth ), - ( aSize.iHeight / 2 - btnHeight / 2 ) ); - iRelativeAddButtonRect.SetRect( btnLocation, TSize( btnWidth, btnHeight ) ); - - // TEXT RECT - iRelativeTitleRect.SetRect( - KLeftMarginBig + logoSize.iWidth + KRightMarginBig, - KTopMargin, - aSize.iWidth - KRightMargin - btnWidth - KRightMargin, - aSize.iHeight - KBottomMargin - KBottomMargin ); - - // RESIZE BITMAPS - AknIconUtils::SetSize( - iDefaultLogoImage, iRelativeLogoRect.Size(), EAspectRatioNotPreserved ); - AknIconUtils::SetSize( - iDefaultLogoImageMask, iRelativeLogoRect.Size(), EAspectRatioNotPreserved ); - AknIconUtils::SetSize( - iAddWidgetBtnImage, iRelativeAddButtonRect.Size(), EAspectRatioNotPreserved ); - AknIconUtils::SetSize( - iAddWidgetBtnMask, iRelativeAddButtonRect.Size(), EAspectRatioNotPreserved ); - } - -// --------------------------------------------------------- -// CWmListItemDrawer::DrawFrame -// --------------------------------------------------------- -// -void CWmListItemDrawer::DrawFrame( - const TRect& aOutterRect, - const TRect& aInnerRect, - const TAknsItemID& aID, - const TAknsItemID& aCenterID ) const - { - CWindowGc& gc = *Gc(); - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - AknsDrawUtils::DrawFrame( skin, gc, aOutterRect, aInnerRect, - aID, aCenterID ); - } - -// --------------------------------------------------------- -// CWmListItemDrawer::DrawItemRect -// --------------------------------------------------------- -// -void CWmListItemDrawer::DrawItemRect( - const TRect& aActualItemRect ) const - { - CWindowGc& gc = *Gc(); - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - MAknsControlContext *cc = AknsDrawUtils::ControlContext( iListBox ); - AknsDrawUtils::Background( skin, cc, iListBox, gc, aActualItemRect ); - } - -// --------------------------------------------------------- -// CWmListItemDrawer::DrawItem -// --------------------------------------------------------- -// -void CWmListItemDrawer::DrawItem( TInt aItemIndex, TPoint aItemRectPos, - TBool /*aItemIsSelected*/, TBool /*aItemIsCurrent*/, - TBool /*aViewIsEmphasized*/, TBool /*aViewIsDimmed*/ ) const - { - TInt w = ItemWidthInPixels( aItemIndex ); - TInt h = iListBox->ItemHeight(); - CWmWidgetData& wData = iListBox->WidgetData( aItemIndex ); - if ( iCurrentSize != TSize(w,h) ) - { - // re-calculate all rects - // note: members are manipulated here, although this method is const! - const_cast(*this).CalculateRectangles( TSize(w,h) ); - wData.SetLogoSize( iRelativeLogoRect.Size() ); - } - - TInt selectedIndex = iListBox->CurrentItemIndex(); - TBool isInFocus = ( selectedIndex == aItemIndex ); - TBool listFocused = iListBox->IsFocused(); - TRect itemRect = TRect( aItemRectPos, TSize( w, h ) ); - TRect fullRect = TRect( aItemRectPos, - TSize( iListBox->Rect().Width(), h ) ); - - DrawItemRect( fullRect ); - - TRect logoRect( iRelativeLogoRect ); - logoRect.Move( aItemRectPos ); - TRect addBtnRect( iRelativeAddButtonRect ); - addBtnRect.Move( aItemRectPos ); - TRect textRect( iRelativeTitleRect ); - textRect.Move( aItemRectPos ); - - if ( isInFocus && listFocused ) - { - TRect innerRect( itemRect ); - const TInt highlightOffset = 5; - innerRect.Shrink( highlightOffset, highlightOffset ); - DrawFrame( itemRect, innerRect, - iListBox->PressedDown() ? - KAknsIIDQsnFrListPressed : KAknsIIDQsnFrList, - KAknsIIDQsnFrListCenter ); - } - - // Get graphics context which is used for drawing. - CWindowGc& gc = *Gc(); - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - - // DRAW LOGO - CFbsBitmap* bitmap = const_cast(wData.LogoImage()); - CFbsBitmap* mask = const_cast(wData.LogoImageMask()); - if ( !bitmap ) - { - TRect bmpRect( TPoint(0,0), TSize( iDefaultLogoImage->SizeInPixels() ) ); - gc.BitBltMasked( logoRect.iTl, iDefaultLogoImage, - bmpRect, iDefaultLogoImageMask, ETrue ); - } - else - { - TRect bmpRect( TPoint(0,0), TSize( bitmap->SizeInPixels() ) ); - if ( bitmap && mask ) - { - gc.BitBltMasked( logoRect.iTl, bitmap, - bmpRect, mask, ETrue ); - } - else - { - gc.BitBlt( logoRect.iTl, bitmap, bmpRect ); - } - } - - TRgb textColor; - TAknsQsnTextColorsIndex index = ( isInFocus && listFocused )? - EAknsCIQsnTextColorsCG10 : EAknsCIQsnTextColorsCG6; - - AknsUtils::GetCachedColor( - skin, textColor, KAknsIIDQsnTextColors, index ); - - // DRAW TEXT - gc.UseFont( iFont ); - gc.SetPenColor( textColor ); - gc.SetPenSize( TSize(2,2) ); - - gc.DrawText( wData.Name(), textRect, - ( KTopTextMargin + iFont->FontMaxHeight() ), - CGraphicsContext::ELeft, KRightTextMargin ); - - if ( wData.HsContentInfo().CanBeAdded() ) - { - // DRAW ADD BUTTON - gc.BitBltMasked( addBtnRect.iTl, iAddWidgetBtnImage, - TRect( TPoint(0,0), iAddWidgetBtnImage->SizeInPixels() ), - iAddWidgetBtnMask, ETrue ); - - // DRAW BUTTON FOCUS - if ( isInFocus && listFocused ) - { - // draw focused frame around button if item is selected - gc.SetPenStyle( CGraphicsContext::ESolidPen ); - gc.SetPenSize( TSize( KFocusFrameWidth, KFocusFrameWidth ) ); - //Draw the rounded rectangle - gc.DrawRoundRect( addBtnRect, TSize( KFrameRoundRadius, KFrameRoundRadius ) ); - gc.SetBrushStyle( CGraphicsContext::ENullBrush ); - gc.SetPenStyle( CGraphicsContext::ENullPen ); - } - } - - gc.SetPenSize(TSize(1,1)); - - // DRAW DESCRIPTION TEXT - HBufC* buf = wData.Description().Alloc(); - if ( buf ) - { - TPtr bufPtr = buf->Des(); - bufPtr.Copy( wData.Description() ); - TextUtils::ClipToFit( bufPtr, *iFont, textRect.Width() ); - gc.DrawText( bufPtr, textRect, - ( iFont->HeightInPixels() + textRect.Height()/2 ), - CGraphicsContext::ELeft, KRightTextMargin ); - delete buf; - } - - gc.DiscardFont(); - } - -// --------------------------------------------------------- -// CWmListItemDrawer::DefaultLogoImage() -// --------------------------------------------------------- -// -const CFbsBitmap* CWmListItemDrawer::DefaultLogoImage() - { - return iDefaultLogoImage; - } - -// --------------------------------------------------------- -// CWmListItemDrawer::DefaultLogoMask() -// --------------------------------------------------------- -// -const CFbsBitmap* CWmListItemDrawer::DefaultLogoMask() - { - return iDefaultLogoImageMask; - } - -// --------------------------------------------------------- -// CWmListBox::NewL -// --------------------------------------------------------- -// -CWmListBox* CWmListBox::NewL( - CWmPlugin& aWmPlugin, - const TRect& aRect, - const CCoeControl* aParent, - TInt aFlags ) - { - CWmListBox* self = new ( ELeave ) CWmListBox( aWmPlugin); - CleanupStack::PushL( self ); - self->ConstructL( aRect, aParent, aFlags ); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------- -// CWmListBox::CWmListBox -// --------------------------------------------------------- -// -CWmListBox::CWmListBox( CWmPlugin& aWmPlugin ): - CAknDouble2LargeStyleListBox(), - iWmPlugin( aWmPlugin ) - { - iFindPaneIsVisible = EFalse; - iPressedDown = EFalse; - } - -// --------------------------------------------------------- -// CWmListBox::~CWmListBox -// --------------------------------------------------------- -// -CWmListBox::~CWmListBox() - { - iWidgetDatas.ResetAndDestroy(); - } - -// --------------------------------------------------------- -// CWmListBox::ConstructL -// --------------------------------------------------------- -// -void CWmListBox::ConstructL( - const TRect& aRect, - const CCoeControl* aParent, - TInt aFlags ) - { - CEikFormattedCellListBox::ConstructL( aParent, aFlags ); - SetContainerWindowL( *aParent ); - - // set model point to the widgets array - Model()->SetItemTextArray( &iWidgetDatas ); - Model()->SetOwnershipType( ELbmDoesNotOwnItemArray ); - - SetRect( aRect ); - } - -// --------------------------------------------------------- -// CWmListBox::WidgetData -// --------------------------------------------------------- -// -CWmWidgetData* CWmListBox::WidgetData() - { - TInt index = CurrentListBoxItemIndex(); - return (index>=0 ? iWidgetDatas[index] : NULL); - } - -// --------------------------------------------------------- -// CWmListBox::WidgetData -// --------------------------------------------------------- -// -CWmWidgetData& CWmListBox::WidgetData( TInt aItemIndex ) - { - return *iWidgetDatas[ RealIndex( aItemIndex ) ]; - } - -// --------------------------------------------------------- -// CWmListBox::AddWidgetDataL -// --------------------------------------------------------- -// -void CWmListBox::AddWidgetDataL( CWmWidgetData* aWidgetData ) - { - aWidgetData->SetObserver( this ); - aWidgetData->SetLogoSize( LogoSize() ); - iWidgetDatas.InsertInOrderAllowRepeatsL( aWidgetData, - SortOrder(EStoredOrder) ); - } - -// --------------------------------------------------------- -// CWmListBox::RemoveWidgetData -// --------------------------------------------------------- -// -void CWmListBox::RemoveWidgetData( TInt aItemIndex ) - { - TInt realIndex = RealIndex( aItemIndex ); - TBool current = ( aItemIndex == CurrentItemIndex() ); - // remove widget data - CWmWidgetData* data = iWidgetDatas[realIndex]; - iWidgetDatas.Remove( realIndex ); - delete data; - - // reorganise - TRAP_IGNORE( - AknListBoxUtils::HandleItemRemovalAndPositionHighlightL( - this, realIndex, current ) ); - } - -// --------------------------------------------------------- -// CWmListBox::RedrawItem -// --------------------------------------------------------- -// -void CWmListBox::RedrawItem( TInt aItemIndex ) - { - View()->DrawItem( aItemIndex ); - } - -// --------------------------------------------------------- -// CWmListBox::SetSortOrderL -// --------------------------------------------------------- -// -void CWmListBox::SetSortOrderL( TSortOrder aOrder ) - { - // now sort the existing data - iWidgetDatas.Sort( SortOrder( aOrder ) ); - DrawNow(); - } - -// --------------------------------------------------------- -// CWmListBox::CreateItemDrawerL -// --------------------------------------------------------- -// -void CWmListBox::CreateItemDrawerL() - { - CFormattedCellListBoxData* cellData = CFormattedCellListBoxData::NewL(); - CleanupStack::PushL( cellData ); - iItemDrawer = CWmListItemDrawer::NewL( - iWmPlugin, - Model(), - iEikonEnv->DenseFont(), - cellData, - this ); - CleanupStack::Pop(); // cellData - } - -// --------------------------------------------------------- -// CWmListBox::HandleLayoutChanged -// --------------------------------------------------------- -// -void CWmListBox::HandleLayoutChanged() - { - TSize ls = LogoSize(); - for ( TInt i=0; iReCreateLogo( ls ); - } - } - -// --------------------------------------------------------- -// CWmListBox::HandleWidgetDataChanged -// --------------------------------------------------------- -// -void CWmListBox::HandleWidgetDataChanged( CWmWidgetData* aWidgetData ) - { - if ( !iFindPaneIsVisible ) - { - // spontaneous change in the model. Cause table to redraw - TInt index = iWidgetDatas.Find( aWidgetData ); - if ( index >= 0 ) - { - // redraw item. - RedrawItem( RealIndex( index ) ); - } - } - } - -// --------------------------------------------------------- -// CWmListBox::SortOrder -// --------------------------------------------------------- -// -TLinearOrder CWmListBox::SortOrder( TSortOrder aOrder ) - { - if ( aOrder == EStoredOrder ) - { - return TLinearOrder( - CWmWidgetData::CompareByPersistentWidgetOrder ); - } - else - { - return TLinearOrder( - CWmWidgetData::CompareByName ); - } - } - -// --------------------------------------------------------- -// CWmListBox::CurrentListBoxItemIndex -// --------------------------------------------------------- -// -TInt CWmListBox::CurrentListBoxItemIndex() - { - TInt index( KErrNotFound ); - if ( Model()->NumberOfItems() > 0 ) - { - index = CurrentItemIndex(); - } - return RealIndex( index ); - } - -// --------------------------------------------------------- -// CWmListBox::RealIndex -// --------------------------------------------------------- -// -TInt CWmListBox::RealIndex( TInt aIndex ) - { - TInt realIndex = aIndex; - if ( iFindPaneIsVisible && aIndex >= 0 ) - { - realIndex = static_cast(Model())->Filter() - ->FilteredItemIndex( aIndex ); - } - return realIndex; - } - -// --------------------------------------------------------- -// CWmListBox::SizeChanged -// --------------------------------------------------------- -// -void CWmListBox::SizeChanged() - { - CAknsListBoxBackgroundControlContext* context = - static_cast( - ItemDrawer()->FormattedCellData()-> - SkinBackgroundContext() ); - if ( context ) context->SetRect( Rect() ); - CAknDouble2LargeStyleListBox::SizeChanged(); - } - -// --------------------------------------------------------- -// CWmListBox::Draw -// --------------------------------------------------------- -// -void CWmListBox::Draw( const TRect& aRect ) const - { - CWindowGc& gc = SystemGc(); - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - MAknsControlContext* cc = AknsDrawUtils::ControlContext( this ); - AknsDrawUtils::Background( skin, cc, this, gc, Rect() ); - CAknDouble2LargeStyleListBox::Draw( aRect ); - } - -// --------------------------------------------------------- -// CWmListBox::HandlePointerEventL -// --------------------------------------------------------- -// -void CWmListBox::HandlePointerEventL( const TPointerEvent& aPointerEvent ) - { - // Check if pointer is down ( needed for drawing correct hightlight frame ) - if ( Rect().Contains( aPointerEvent.iPosition ) ) - { - if ( aPointerEvent.iType == TPointerEvent::EButton1Down ) - { - iPressedDown = ETrue; - RedrawItem( CurrentListBoxItemIndex() ); - } - else if( aPointerEvent.iType == TPointerEvent::EButton1Up ) - { - iPressedDown = EFalse; - RedrawItem( CurrentListBoxItemIndex() ); - } - } - - CAknDouble2LargeStyleListBox::HandlePointerEventL( aPointerEvent ); - } - -// --------------------------------------------------------- -// CWmListBox::LogoSize -// --------------------------------------------------------- -// -TSize CWmListBox::LogoSize() - { - TSize size( KLogoWidth,KLogoHeight ); - TInt val = ( ItemHeight() - KBottomMarginBig * 4 ); - if ( val > 0 ) - { - size.SetSize( val, val ); - } - return size; - } - -// --------------------------------------------------------- -// CWmListBox::DefaultLogo -// --------------------------------------------------------- -// -const CFbsBitmap* CWmListBox::DefaultLogo() - { - CWmListItemDrawer* itemDrawer = - static_cast ( iItemDrawer ); - if ( itemDrawer ) - { - return itemDrawer->DefaultLogoImage(); - } - return NULL; - } - -// --------------------------------------------------------- -// CWmListBox::DefaultMask -// --------------------------------------------------------- -// -const CFbsBitmap* CWmListBox::DefaultMask() - { - CWmListItemDrawer* itemDrawer = - static_cast ( iItemDrawer ); - if ( itemDrawer ) - { - return itemDrawer->DefaultLogoMask(); - } - return NULL; - } - -// End of File - diff -r f72a12da539e -r 5315654608de widgetmanager/src/wmmaincontainer.cpp --- a/widgetmanager/src/wmmaincontainer.cpp Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1323 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Implementation of the container control for WidgetManager application. -* -*/ - -// INCLUDE FILES -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include //installer -#include // widgetreqistry -#include // CAknButton -#include // for starting the OVI client -#include // FeatureManager -#include // HlpLauncher -#include -#include - -#include "wmcommon.h" -#include "wmplugin.h" -#include "wmmaincontainer.h" -#include "wmmaincontainerview.h" -#include "wmresourceloader.h" -#include "widgetmanager.hrh" -#include "wmlistbox.h" -#include "wmpersistentwidgetorder.h" -#include "wmdetailsdlg.h" -#include "wmwidgetloaderao.h" - -// CONSTANTS -const TInt KTextLimit = 40; // Text-limit for find-field -const TInt KMinWidgets = 1; // minimum number of widgets to show findpane -_LIT8( KWrtMime, "application/x-nokia-widget"); - -// --------------------------------------------------------- -// CWmMainContainer::CWmMainContainer() -// --------------------------------------------------------- -// -CWmMainContainer::CWmMainContainer( CWmPlugin& aWmPlugin ) - :iWmPlugin( aWmPlugin ) - { - iWidgetsList = NULL; - iFindbox = NULL; - iFindPaneIsVisible = EFalse; - iBgContext = NULL; - iFocusMode = ENowhere; - iClosingDown = EFalse; - } - -// --------------------------------------------------------- -// CWmMainContainer::~CWmMainContainer() -// --------------------------------------------------------- -// -CWmMainContainer::~CWmMainContainer() - { - RemoveCtrlsFromStack(); - Components().ResetAndDestroy(); - delete iWidgetLoader; - iWidgetsList = NULL; - iOviPortal = NULL; - iFindbox = NULL; - delete iBgContext; - } - -// --------------------------------------------------------- -// CWmMainContainer::NewL -// --------------------------------------------------------- -// -CWmMainContainer* CWmMainContainer::NewL( - const TRect& aRect, - const CCoeControl* aParent, - MEikCommandObserver* aCommandObserver, - CWmPlugin& aWmPlugin ) - { - CWmMainContainer* self = CWmMainContainer::NewLC( - aRect, - aParent, - aCommandObserver, - aWmPlugin ); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------- -// CWmMainContainer::NewLC -// --------------------------------------------------------- -// -CWmMainContainer* CWmMainContainer::NewLC( - const TRect& aRect, - const CCoeControl* aParent, - MEikCommandObserver* aCommandObserver, - CWmPlugin& aWmPlugin ) - { - CWmMainContainer* self = new ( ELeave ) CWmMainContainer( aWmPlugin ); - CleanupStack::PushL( self ); - self->ConstructL( aRect, aParent, aCommandObserver ); - return self; - } - -// --------------------------------------------------------- -// ScreenRect -// rectangle representing the screen -// --------------------------------------------------------- -// -TRect ScreenRect() - { - TRect screen; - CCoeEnv* env = CCoeEnv::Static(); - if ( env ) - { - CWsScreenDevice* screenDevice = env->ScreenDevice(); - if ( screenDevice ) - screen.SetRect( TPoint(0,0), screenDevice->SizeInPixels() ); - } - return screen; - } - -// --------------------------------------------------------- -// CWmMainContainer::ConstructL -// --------------------------------------------------------- -// -void CWmMainContainer::ConstructL( - const TRect& aRect, - const CCoeControl* aParent, - MEikCommandObserver* /*aCommandObserver*/ ) - { - // Initialize control array - InitComponentArrayL(); - Components().SetControlsOwnedExternally( ETrue ); - - // create the UI - if ( aParent == NULL ) - { - CreateWindowL(); - iParent = this; - } - else - { - SetContainerWindowL( *aParent ); - iParent = aParent; - } - - // background context - iBgContext = CAknsBasicBackgroundControlContext::NewL( - KAknsIIDQsnBgScreen, ScreenRect() , ETrue); - - // set up controls - InitializeControlsL( aRect ); - - // set size and activate - SetRect( aRect ); - if ( !aParent ) - { - ActivateL(); - } - - } - -// --------------------------------------------------------- -// CWmMainContainer::SizeChanged -// --------------------------------------------------------- -// -void CWmMainContainer::SizeChanged() - { - CCoeControl::SizeChanged(); - iBgContext->SetRect( ScreenRect() ); - TRAP_IGNORE( LayoutControlsL() ); - } - -// --------------------------------------------------------- -// CWmMainContainer::LayoutControlsL -// --------------------------------------------------------- -// -void CWmMainContainer::LayoutControlsL() - { - TRect rect = Rect(); - TBool landscape = ( rect.Width() > rect.Height() ); - - // calculate layout (different in landscape and portrait) - TRect oviButtonRect; - TRect widgetsListRect; - if ( landscape ) - { - iLayout = ELandscape; - const TInt KOffset = 2; - TInt oviButtonWidth = rect.Width() / 6; - widgetsListRect.SetRect( - TPoint( 0, 0 ), - TPoint( rect.Width() - oviButtonWidth - KOffset, rect.Height() ) ); - oviButtonRect.SetRect( - TPoint( rect.Width() - oviButtonWidth, KOffset ), - TPoint( rect.Width() - KOffset, rect.Height() - KOffset ) ); - } - else - { - iLayout = EPortrait; - const TInt KOffset = 2; - TInt oviButtonHeight = rect.Height() / 8; - oviButtonRect.SetRect( - TPoint( KOffset, KOffset ), - TPoint( rect.Width() - KOffset, oviButtonHeight ) ); - widgetsListRect.SetRect( - TPoint( 0, oviButtonHeight + KOffset ), - TPoint( rect.Width(), rect.Height() ) ); - } - - // Apply layout to child controls - iOviPortal->SetRect( oviButtonRect ); - iOviPortal->SetHighlightRect( oviButtonRect ); - iWidgetsList->SetRect( widgetsListRect ); - if( iFindbox && iFindPaneIsVisible ) - { - // resizes listbox/searchfield - HandleFindSizeChanged(); - } - - // change OVI portal button style - if ( landscape ) - { - // vertical style button - iOviPortal->State()->SetTextL( KNullDesC() ); - TInt iconDimension = oviButtonRect.Width() * 2 / 3; - iOviPortal->SetIconSize( TSize( iconDimension, iconDimension ) ); - iOviPortal->SetTextVerticalAlignment( - CAknButton::ECenter ); - iOviPortal->SetTextAndIconAlignment( - CAknButton::EIconOverText ); - } - else - { - // horizontal style button - HBufC* oviText = StringLoader::LoadLC( R_QTN_WM_GO_TO_OVI_STORE ); - iOviPortal->State()->SetTextL( *oviText ); - CleanupStack::PopAndDestroy( oviText ); - TInt iconDimension = oviButtonRect.Height() * 2 / 3; - iOviPortal->SetIconSize( TSize( iconDimension, iconDimension ) ); - iOviPortal->SetTextHorizontalAlignment( - CGraphicsContext::ECenter ); - iOviPortal->SetTextAndIconAlignment( - CAknButton::EIconBeforeText ); - } - - DrawDeferred(); - } - -// --------------------------------------------------------- -// CWmMainContainer::OfferKeyEventL -// --------------------------------------------------------- -// -TKeyResponse CWmMainContainer::OfferKeyEventL( - const TKeyEvent& aKeyEvent, - TEventCode aType ) - { - TKeyResponse keyResponse( EKeyWasNotConsumed ); - - if ( iFindbox ) - { - // open search field with alpha digit numbers - if ( aType == EEventKeyDown && !iFindPaneIsVisible && - aKeyEvent.iScanCode < EStdKeyF1 && - TChar(aKeyEvent.iScanCode).IsAlphaDigit() ) - { - ActivateFindPaneL(); - - if ( iFindPaneIsVisible ) - { - return EKeyWasConsumed; - } - } - - if ( iFindPaneIsVisible ) - { - // deactive the FindPane when Back has been pressed - if ( aType == EEventKeyDown && - aKeyEvent.iScanCode == EStdKeyBackspace ) - { - TBuf searchText; - iFindbox->GetSearchText( searchText ); - if ( searchText == KNullDesC ) - { - DeactivateFindPaneL(); - return EKeyWasConsumed; - } - } - - // Cancel-selected need to unfocus findbox - // to receive event in ProcessCommand - if ( aType == EEventKeyDown - && aKeyEvent.iScanCode == EStdKeyDevice1 ) - { - iFindbox->SetFocus( EFalse ); - UpdateFocusMode(); - return EKeyWasConsumed; - } - - if ( aKeyEvent.iScanCode == EStdKeyNo || - aKeyEvent.iCode == EKeyNo ) - { - DeactivateFindPaneL(); - return EKeyWasConsumed; - } - - // find items with all event codes (that's the reason why there is EEventKey instead of aType) - TBool needsRefresh( EFalse ); - keyResponse = AknFind::HandleFindOfferKeyEventL( - aKeyEvent, EEventKey, this, - iWidgetsList, iFindbox, ETrue, needsRefresh ); - if ( needsRefresh ) - { - DrawNow(); - } - } - } - - // check special cases for movement between controls - if ( keyResponse == EKeyWasNotConsumed && !iFindPaneIsVisible ) - { - keyResponse = MoveFocusByKeys( aKeyEvent, aType ); - } - - // pass key event except backpace or delete key event to widgets list if focused - if ( keyResponse == EKeyWasNotConsumed && iWidgetsList->IsFocused() ) - { - if ( (aType == EEventKey) && (aKeyEvent.iCode == EKeyBackspace || aKeyEvent.iCode == EKeyDelete)) - { - if( CanDoUninstall() ) - { - UninstallWidgetL(); - } - else - { - CWmWidgetData* data = iWidgetsList->WidgetData(); - if( data != NULL ) - iWmPlugin.ResourceLoader().InfoPopupL( - R_QTN_WM_UNINST_NOT_ALLOWED, data->Name() ); - } - } - else - { - //passing to listbox handler - keyResponse = iWidgetsList->OfferKeyEventL( - aKeyEvent, aType ); - } - } - - // pass key event to OVI portal if focused - if ( keyResponse == EKeyWasNotConsumed && iOviPortal->IsFocused() ) - { - keyResponse = iOviPortal->OfferKeyEventL( - aKeyEvent, aType ); - } - - if ( keyResponse == EKeyWasConsumed ) - DrawDeferred(); - - // Do not let UI framework forward the keys to child controls as - // we have already done that. - return EKeyWasConsumed; - } - - -// --------------------------------------------------------- -// CWmMainContainer::MoveFocusByKeys -// --------------------------------------------------------- -// -TKeyResponse CWmMainContainer::MoveFocusByKeys( - const TKeyEvent& aKeyEvent, - TEventCode aType ) - { - TKeyResponse keyResponse( EKeyWasNotConsumed ); - - if ( iWidgetsList->IsFocused() ) - { - // ------------------------------------ - // focus is in the WIDGETS LIST - // ------------------------------------ - if ( iLayout == EPortrait && - aKeyEvent.iScanCode == EStdKeyUpArrow && - iWidgetsList->CurrentItemIndex() == 0 ) - { - // widget list top -> up -> ovi button (portrait) - if ( aType == EEventKey ) - SetFocusToOviButton(); - keyResponse = EKeyWasConsumed; - } - else if ( iLayout == EPortrait && - aKeyEvent.iScanCode == EStdKeyDownArrow && - iWidgetsList->CurrentItemIndex() == - iWidgetsList->Model()->NumberOfItems() - 1 ) - { - // widget list bottom -> down -> ovi button (portrait) - if ( aType == EEventKey ) - SetFocusToOviButton(); - keyResponse = EKeyWasConsumed; - } - else if ( iLayout == ELandscape && - aKeyEvent.iScanCode == EStdKeyRightArrow ) - { - // widget list -> right -> ovi button (landscape) - if ( aType == EEventKey ) - SetFocusToOviButton(); - keyResponse = EKeyWasConsumed; - } - else if ( iLayout == ELandscapeMirrored && - aKeyEvent.iScanCode == EStdKeyLeftArrow ) - { - // widget list -> left -> ovi button (landscape mirrored) - if ( aType == EEventKey ) - SetFocusToOviButton(); - keyResponse = EKeyWasConsumed; - } - } - else if ( iOviPortal->IsFocused() ) - { - // ------------------------------------ - // focus is in the OVI PORTAL BUTTON - // ------------------------------------ - if ( iLayout == EPortrait && - aKeyEvent.iScanCode == EStdKeyDownArrow ) - { - // ovi button -> down -> widget list top (portrait) - if ( aType == EEventKey ) - SetFocusToWidgetList( 0 ); - keyResponse = EKeyWasConsumed; - } - else if ( iLayout == EPortrait && - aKeyEvent.iScanCode == EStdKeyUpArrow ) - { - // obi button -> up -> widget list bottom (portrait) - if ( aType == EEventKey ) - SetFocusToWidgetList( iWidgetsList->Model()->NumberOfItems()-1 ); - keyResponse = EKeyWasConsumed; - } - else if ( iLayout == ELandscape && - aKeyEvent.iScanCode == EStdKeyLeftArrow ) - { - // ovi button -> left -> widget list (landscape) - if ( aType == EEventKey ) - SetFocusToWidgetList(); - keyResponse = EKeyWasConsumed; - } - else if ( iLayout == ELandscapeMirrored && - aKeyEvent.iScanCode == EStdKeyRightArrow ) - { - // ovi button -> right -> widget list (landscape mirrored) - if ( aType == EEventKey ) - SetFocusToWidgetList(); - keyResponse = EKeyWasConsumed; - } - } - else - { - // ------------------------------------ - // focus is NOWHERE - // ------------------------------------ - if ( aKeyEvent.iScanCode == EStdKeyUpArrow || - aKeyEvent.iScanCode == EStdKeyDownArrow || - aKeyEvent.iScanCode == EStdKeyLeftArrow || - aKeyEvent.iScanCode == EStdKeyRightArrow ) - { - // no focus -> key hit -> focus list - if ( aType == EEventKey ) - SetFocusToWidgetList(); - keyResponse = EKeyWasConsumed; - } - } - - return keyResponse; - } - -// --------------------------------------------------------- -// CWmMainContainer::SetFocusToOviButton -// --------------------------------------------------------- -// -void CWmMainContainer::SetFocusToOviButton() - { - iWidgetsList->SetFocus(EFalse); - iOviPortal->SetFocus(ETrue); - DrawDeferred(); - UpdateFocusMode(); - } - -// --------------------------------------------------------- -// CWmMainContainer::SetFocusToWidgetList -// --------------------------------------------------------- -// -void CWmMainContainer::SetFocusToWidgetList( TInt aIndex ) - { - iOviPortal->SetFocus(EFalse); - iWidgetsList->SetFocus(ETrue); - if ( aIndex >= 0 && aIndex < iWidgetsList->Model()->NumberOfItems() ) - { - iWidgetsList->SetCurrentItemIndex( aIndex ); - } - DrawDeferred(); - UpdateFocusMode(); - } - -// --------------------------------------------------------- -// CWmMainContainer::UpdateFocusMode -// --------------------------------------------------------- -// -void CWmMainContainer::UpdateFocusMode() - { - if ( iOviPortal->IsFocused() ) - { - // OVI BUTTON is focused - iFocusMode = EOvi; - } - else if( ( iFindPaneIsVisible ) && - ( iFindbox->IsFocused() || iWidgetsList->IsFocused() ) ) - { - // FIND MODE - iFocusMode = EFind; - } - else if ( iWidgetsList->IsFocused() ) - { - // WIDGETS LIST is focused - iFocusMode = EList; - } - else - { - // NO focus - iFocusMode = ENowhere; - } - } - -// --------------------------------------------------------- -// CWmMainContainer::FindChildControlByPoint -// --------------------------------------------------------- -// -CCoeControl* CWmMainContainer::FindChildControlByPoint( - const TPoint& aPoint ) - { - CCoeControl* theControl = NULL; - CCoeControlArray::TCursor cursor = Components().Begin(); - CCoeControl* c; - while((c=cursor.Control()) != NULL ) - { - if(c->IsVisible()) - { - if ( c->Rect().Contains( aPoint ) ) theControl = c; - } - cursor.Next(); - } - return theControl; - } - -// --------------------------------------------------------- -// CWmMainContainer::HandlePointerEventL -// --------------------------------------------------------- -// -void CWmMainContainer::HandlePointerEventL( const TPointerEvent& aPointerEvent ) - { - if ( !iClosingDown ) - { - - if (aPointerEvent.iType == TPointerEvent::EButton1Down) - { - // Check if user clicked a child control - CCoeControl* control = FindChildControlByPoint( aPointerEvent.iPosition ); - if ( control && !control->IsFocused() ) - { - // Set focus to the control that was clicked - control->SetFocus( ETrue ); - // remove focus from ALL other child controls. - CCoeControlArray::TCursor cursor = Components().Begin(); - CCoeControl* c; - while ((c=cursor.Control()) != NULL ) - { - if ( c != control && c->IsFocused() ) c->SetFocus( EFalse ); - cursor.Next(); - } - // update focus mode accordingly - UpdateFocusMode(); - // repaint - DrawDeferred(); - } - } - - CCoeControl::HandlePointerEventL( aPointerEvent ); - } - } - -// --------------------------------------------------------- -// CWmMainContainer::InitializeControlsL -// --------------------------------------------------------- -// -void CWmMainContainer::InitializeControlsL( const TRect& /*aRect*/ ) - { - // Create OVI STORE button - iOviPortal = CAknButton::NewL(); - iWmPlugin.ResourceLoader().LoadButtonL( *iOviPortal, - R_WM_PORTAL_BUTTON ); - iOviPortal->SetMopParent( this ); - iOviPortal->SetFocusing( ETrue ); - AddControlL( iOviPortal, EOviPortal ); - iOviPortal->SetContainerWindowL( *this ); - // ToDo : replace 3-10 IID with real one when available (wk46) - iOviPortal->SetFrameAndCenterIds( - KAknsIIDQgnHomeWmButton, - KAknsIIDQgnHomeWmButtonCenter, - KAknsIIDDefault, - KAknsIIDDefault, - KAknsIIDDefault, - KAknsIIDDefault, - KAknsIIDDefault, - KAknsIIDDefault, - KAknsIIDDefault, - KAknsIIDDefault ); - iOviPortal->ActivateL(); - iOviPortal->SetObserver( this ); - - // Create widget list box - iWidgetsList = CWmListBox::NewL( - iWmPlugin, - TRect(), - iParent ); - iWidgetsList->SetMopParent( this ); - AddControlL( iWidgetsList, EWidgetsList ); - iWidgetsList->ActivateL(); - iWidgetsList->SetListBoxObserver( this ); - - // Create scroll bar. - iWidgetsList->CreateScrollBarFrameL( ETrue ); - iWidgetsList->ScrollBarFrame()->SetScrollBarVisibilityL( - CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto ); - iWidgetsList->UpdateScrollBarsL(); - - // search field - iFindbox = CAknSearchField::NewL( *this, - CAknSearchField::EAdaptiveSearch, - 0, KTextLimit ); - AddControlL( iFindbox, EFindBox ); - - UpdateFocusMode(); - StartLoadingWidgetsL(); - } - -// --------------------------------------------------------- -// CWmMainContainer::HandleWidgetListChanged -// --------------------------------------------------------- -// -void CWmMainContainer::HandleWidgetListChanged() - { - TRAP_IGNORE( StartLoadingWidgetsL(); ); - } - -// --------------------------------------------------------- -// CWmMainContainer::StartLoadingWidgetsL -// --------------------------------------------------------- -// -void CWmMainContainer::StartLoadingWidgetsL() - { - if ( !iWidgetLoader ) - { - // create the widget loader AO - iWidgetLoader = CWmWidgetLoaderAo::NewL( iWmPlugin, *iWidgetsList ); - } - iWidgetLoader->StartLoading(); - } - -// --------------------------------------------------------- -// CWmMainContainer::HandleResourceChange -// --------------------------------------------------------- -// -void CWmMainContainer::HandleResourceChange( TInt aType ) - { - CCoeControl::HandleResourceChange( aType ); - - if ( KEikDynamicLayoutVariantSwitch == aType ) - { - TRect rect; - AknLayoutUtils::LayoutMetricsRect( - AknLayoutUtils::EMainPane, rect ); - SetRect( rect ); - - // notify widgetlist - iWidgetsList->HandleLayoutChanged(); - } - } - - -// --------------------------------------------------------- -// CWmMainContainer::MopSupplyObject -// --------------------------------------------------------- -// -TTypeUid::Ptr CWmMainContainer::MopSupplyObject( TTypeUid aId ) - { - if ( aId.iUid == MAknsControlContext::ETypeId ) - { - return MAknsControlContext::SupplyMopObject( - aId, iBgContext ); - } - return CCoeControl::MopSupplyObject( aId ); - } - -// --------------------------------------------------------- -// CWmMainContainer::Draw -// --------------------------------------------------------- -// -void CWmMainContainer::Draw( const TRect& /*aRect*/ ) const - { - CWindowGc& gc = SystemGc(); - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - MAknsControlContext* cc = AknsDrawUtils::ControlContext( this ); - AknsDrawUtils::Background( skin, cc, this, gc, Rect() ); - } - -// --------------------------------------------------------- -// CWmMainContainer::AddControlL -// --------------------------------------------------------- -// -void CWmMainContainer::AddControlL( - CCoeControl* aControl, - TInt aControlId ) - { - Components().AppendLC( aControl, aControlId ); // Ownership transfered - CleanupStack::Pop(aControl); - iWmPlugin.ViewAppUi().AddToStackL( aControl ); - aControl->MakeVisible( ETrue ); - } - -// --------------------------------------------------------- -// CWmMainContainer::PortalSelected -// --------------------------------------------------------- -// -TBool CWmMainContainer::PortalSelected() - { - return ( iFocusMode == EOvi ); - } - -// --------------------------------------------------------- -// CWmMainContainer::WidgetSelected -// --------------------------------------------------------- -// -TBool CWmMainContainer::WidgetSelected() - { - return ( iFocusMode == EList ) || ( iFocusMode == EFind ); - } - -// --------------------------------------------------------- -// CWmMainContainer::CanDoAdd -// --------------------------------------------------------- -// -TBool CWmMainContainer::CanDoAdd() - { - TBool retVal = EFalse; - CWmWidgetData* data = iWidgetsList->WidgetData(); - if ( WidgetSelected() && data ) - { - if ( data->HsContentInfo().CanBeAdded() ) - retVal = ETrue; - } - return retVal; - } - -// --------------------------------------------------------- -// CWmMainContainer::CanDoUninstall -// --------------------------------------------------------- -// -TBool CWmMainContainer::CanDoUninstall() - { - TBool retVal( EFalse ); - CWmWidgetData* data = iWidgetsList->WidgetData(); - if ( WidgetSelected() && data ) - { - if ( data->WidgetType() == CWmWidgetData::ECps && - data->PublisherUid() != KNullUid ) - { - retVal = ETrue; - } - } - return retVal; - } - -// --------------------------------------------------------- -// CWmMainContainer::CanDoLaunch -// --------------------------------------------------------- -// -TBool CWmMainContainer::CanDoLaunch() - { - TBool retVal(EFalse); - if ( WidgetSelected() ) - { - CWmWidgetData* data = iWidgetsList->WidgetData(); - if ( data->WidgetType() == CWmWidgetData::ECps && - data->PublisherUid() != KNullUid ) - { - retVal = ETrue; - } - } - return retVal; - } - -// --------------------------------------------------------- -// CWmMainContainer::CanDoFind -// --------------------------------------------------------- -// -TBool CWmMainContainer::CanDoFind() - { - TBool canDo( !iFindPaneIsVisible ); - if ( canDo ) - { - canDo = ( iFocusMode == EList || iFocusMode == ENowhere ); - } - return canDo; - } - -// --------------------------------------------------------- -// CWmMainContainer::CanDoSort -// --------------------------------------------------------- -// -TBool CWmMainContainer::CanDoSort() - { - return !iFindPaneIsVisible; - } - -// --------------------------------------------------------- -// CWmMainContainer::CanDoDetails -// --------------------------------------------------------- -// -TBool CWmMainContainer::CanDoDetails() - { - return WidgetSelected(); - } - -// --------------------------------------------------------- -// CWmMainContainer::CanDoHelp -// --------------------------------------------------------- -// -TBool CWmMainContainer::CanDoHelp() - { - return FeatureManager::FeatureSupported( KFeatureIdHelp ); - } - -// --------------------------------------------------------------------------- -// CWmMainContainer::AddWidgetToHomeScreenL -// --------------------------------------------------------------------------- -// -void CWmMainContainer::AddWidgetToHomeScreenL() - { - CWmWidgetData* data = iWidgetsList->WidgetData(); - if ( data ) - { - if ( iFindbox && iFindPaneIsVisible ) - { - DeactivateFindPaneL(); - } - - SetExitStatus( iWmPlugin.ContentController().AddWidgetL( - data->HsContentInfo() ) ); - - iWmPlugin.Deactivate(); - } - - } - -// --------------------------------------------------------------------------- -// CWmMainContainer::SetExitStatus -// --------------------------------------------------------------------------- -// -void CWmMainContainer::SetExitStatus( TInt aExitStatus ) - { - iExitStatus = aExitStatus; - } - -// --------------------------------------------------------------------------- -// CWmMainContainer::ExitStatus -// --------------------------------------------------------------------------- -// -TInt CWmMainContainer::ExitStatus( ) - { - return iExitStatus; - } - -// --------------------------------------------------------------------------- -// CWmMainContainer::LaunchWidgetL -// --------------------------------------------------------------------------- -// -void CWmMainContainer::LaunchWidgetL() - { - if ( CanDoLaunch() ) - { - CWmWidgetData* data = iWidgetsList->WidgetData(); - - HBufC* param = KNullDesC().AllocLC(); // launch params - - RApaLsSession appArc; - User::LeaveIfError( appArc.Connect() ); // connect to AppArc server - CleanupClosePushL( appArc ); - TThreadId id; - User::LeaveIfError( appArc.StartDocument( - *param, data->PublisherUid(), id ) ); - - CleanupStack::PopAndDestroy( &appArc ); - CleanupStack::PopAndDestroy( param ); - } - } - -// --------------------------------------------------------------------------- -// CWmMainContainer::ActivateFindPaneL -// --------------------------------------------------------------------------- -// -void CWmMainContainer::ActivateFindPaneL() - { - if ( iFindbox && !iFindPaneIsVisible && - iWidgetsList->Model()->NumberOfItems() > KMinWidgets ) - { - // enable filtering - CAknFilteredTextListBoxModel* m = - static_cast ( iWidgetsList->Model() ); - if ( m ) - { - m->CreateFilterL( iWidgetsList, iFindbox ); - if ( m->Filter() ) - { - m->Filter()->SetParentControl( this ); - } - } - - iFindbox->ActivateL(); - iFindbox->ResetL(); - iFindbox->SetSearchTextL( KNullDesC ); - iFindbox->SetSkinEnabledL( ETrue ); - - iFindPaneIsVisible = ETrue; - iFindbox->MakeVisible( ETrue ); - - // layout listbox and findbox - LayoutControlsL(); - - iFindbox->SetFocus( ETrue ); - iWidgetsList->SetFindPaneIsVisible( ETrue ); - - // set soft key set - CEikButtonGroupContainer* cbaGroup = - CEikButtonGroupContainer::Current(); - cbaGroup->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_CANCEL__SELECT ); - cbaGroup->DrawNow(); - - UpdateFocusMode(); - } - } - -// --------------------------------------------------------------------------- -// CWmMainContainer::DeactivateFindPaneL -// --------------------------------------------------------------------------- -// -void CWmMainContainer::DeactivateFindPaneL() - { - if( iFindbox && iFindPaneIsVisible ) - { - // notify search field we're shutting down - TKeyEvent keyEvent = { EKeyNo, EStdKeyNo, 0, 0 }; - iFindbox->OfferKeyEventL( keyEvent, EEventKey ); - - // reset findbox - iFindbox->ResetL(); - - // reset filter - CAknFilteredTextListBoxModel* m = - static_cast ( iWidgetsList->Model() ); - if ( m && m->Filter() ) - { - m->Filter()->ResetFilteringL(); - m->RemoveFilter(); - } - - iFindbox->MakeVisible( EFalse ); - iFindbox->SetFocus( EFalse ); - iFindPaneIsVisible = EFalse; - iWidgetsList->SetFindPaneIsVisible( EFalse ); - - LayoutControlsL(); - iWidgetsList->SetFocus( ETrue ); - - // set soft key set - CEikButtonGroupContainer* cbaGroup = - CEikButtonGroupContainer::Current(); - cbaGroup->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_BACK__SELECT ); - cbaGroup->DrawNow(); - - UpdateFocusMode(); - DrawNow(); - } - } - -// --------------------------------------------------------------------------- -// CWmMainContainer::SortListAlphabeticallyL -// --------------------------------------------------------------------------- -// -void CWmMainContainer::SortListAlphabeticallyL() - { - if ( iWidgetsList ) - { - iWidgetsList->SetSortOrderL( CWmListBox::EAlphabetical ); - - //store changed list order - CWmPersistentWidgetOrder* widgetOrder = - CWmPersistentWidgetOrder::NewL( iWmPlugin.FileServer() ); - CleanupStack::PushL( widgetOrder ); - widgetOrder->StoreL( iWidgetsList->WidgetDataArray() ); - CleanupStack::PopAndDestroy( widgetOrder ); - - } - } - -// --------------------------------------------------------------------------- -// CWmMainContainer::UninstallWidgetL -// --------------------------------------------------------------------------- -// -void CWmMainContainer::UninstallWidgetL() - { - if ( CanDoUninstall() ) - { - CWmWidgetData* data = iWidgetsList->WidgetData(); - - SwiUI::RSWInstLauncher installer; - User::LeaveIfError( installer.Connect() ); - - installer.Uninstall( data->PublisherUid(), KWrtMime ); - installer.Close(); - } - } - -// --------------------------------------------------------------------------- -// CWmMainContainer::OpenOviPortalL -// --------------------------------------------------------------------------- -// -void CWmMainContainer::OpenOviPortalL() - { - _LIT( KParam, "{\"Parameters\": {\"cmd\": \"channel\", \"id\": \"tag:mosh.nokia.com,2009-04:atom/2.0/channels/10\" }}" ); - _LIT( KHtmlFile, "C:\\private\\102829a0\\com.nokia.ovi.juniper.WRTClient\\Juniper\\Main.html" ); - _LIT( KFileName, "securewidgetui.exe" ); - _LIT( KUrl, "4 https://store.ovi.com/applications/"); - - RApaLsSession appArcSession; - User::LeaveIfError( appArcSession.Connect() ); - CleanupClosePushL( appArcSession ); - - HBufC* param = HBufC::NewLC( KParam().Length() ); - param->Des().Copy(KParam); - - TThreadId id; - CApaCommandLine* cmdLine = CApaCommandLine::NewLC(); - cmdLine->SetCommandL( EApaCommandOpen ); - cmdLine->SetExecutableNameL( KFileName ); - cmdLine->SetDocumentNameL( KHtmlFile ); - HBufC8* buf8 = HBufC8::NewLC( param->Des().Length() ); - buf8->Des().Copy( *param ); - cmdLine->SetOpaqueDataL( *buf8 ); - cmdLine->SetTailEndL( *buf8 ); - - TInt err = appArcSession.StartApp( *cmdLine, id ); - if ( err == KErrNone ) - { - _LIT( KSchemeTemplate, "ecwrtservices:command=launch&app=com.nokia.ovi.juniper.WRTClient&commandLine="); - const TInt KSecureWidgetWebAppSchemeHandlerUid = 0x102829B2; - - // Create scheme url to launch the widget - HBufC* schemeUrl = HBufC::NewLC( KSchemeTemplate().Length() + - param->Des().Length() ); - - schemeUrl->Des().Copy( KSchemeTemplate ); - schemeUrl->Des().Append( *param ); - - // Initialize scheme handler plugin - TUid dtorId; - CSchemeHandler* schemeHandler = reinterpret_cast( - REComSession::CreateImplementationL( - TUid::Uid( KSecureWidgetWebAppSchemeHandlerUid ), - dtorId, schemeUrl ) ); - CleanupStack::PushL( schemeHandler ); - - // Handle the scheme url - schemeHandler->HandleUrlEmbeddedL(); - - CleanupStack::PopAndDestroy( schemeHandler ); - REComSession::FinalClose(); - CleanupStack::PopAndDestroy( schemeUrl ); - } - else - { - // Ovi store not found start browser - const TUid KOSSBrowserUidValue = { 0x10008D39 }; - HBufC* param = HBufC::NewLC( KUrl().Length() ); - param->Des().Copy( KUrl ); - 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( !appArcSession.Handle() ) - { - User::LeaveIfError( appArcSession.Connect() ); - } - TThreadId thread; - User::LeaveIfError(appArcSession.StartDocument(*param, KOSSBrowserUidValue, thread)); - appArcSession.Close(); - } - CleanupStack::PopAndDestroy( param ); - } - - CleanupStack::PopAndDestroy( buf8 ); - CleanupStack::PopAndDestroy( cmdLine ); - CleanupStack::PopAndDestroy( param ); - CleanupStack::PopAndDestroy( &appArcSession ); - - // unfocus OVI button - iOviPortal->SetFocus( EFalse ); - iOviPortal->DrawDeferred(); - UpdateFocusMode(); - } - -// --------------------------------------------------------------------------- -// CWmMainContainer::SelectL -// --------------------------------------------------------------------------- -// -void CWmMainContainer::SelectL() - { - if ( WidgetSelected() ) - AddWidgetToHomeScreenL(); - else if ( PortalSelected() ) - OpenOviPortalL(); - else - SetFocusToWidgetList(); - } - -// --------------------------------------------------------------------------- -// CWmMainContainer::ShowHelpL -// --------------------------------------------------------------------------- -// -void CWmMainContainer::ShowHelpL() - { - TUid fwUid = TUid::Uid( AI_UID3_AIFW_COMMON ); - // retrieve resolve host application help context - CArrayFix* helpContext = - iEikonEnv->EikAppUi()->AppHelpContextL(); - - // add the widget manager entry into the help context - CleanupStack::PushL( helpContext ); - helpContext->InsertL( 0, TCoeHelpContext( - fwUid, KWM_HLP_WIDGET_COLLECTION ) ); - CleanupStack::Pop( helpContext ); - - // launch help - HlpLauncher::LaunchHelpApplicationL( - iEikonEnv->WsSession(), - helpContext ); - helpContext = 0; // HlpLauncher takes ownership of helpContext - } - -// --------------------------------------------------------------------------- -// CWmMainContainer::RemoveCtrlsFromStack -// --------------------------------------------------------------------------- -// -void CWmMainContainer::RemoveCtrlsFromStack() - { - for ( TInt i=0; i < CountComponentControls(); i++ ) - { - CCoeControl* ctl = ComponentControl( i ) ; - if ( ctl ) - { - iWmPlugin.ViewAppUi().RemoveFromStack( ctl ); - } - } - } - -// --------------------------------------------------------------------------- -// CWmMainContainer::HandleListBoxEventL -// --------------------------------------------------------------------------- -// -void CWmMainContainer::HandleListBoxEventL( - CEikListBox* /*aListBox*/, TListBoxEvent aEventType ) - { - if ( !iClosingDown && ( aEventType == EEventEnterKeyPressed || - aEventType == EEventItemSingleClicked ) ) - { - AddWidgetToHomeScreenL(); - } - } - -// --------------------------------------------------------------------------- -// CWmMainContainer::HandleControlEventL -// --------------------------------------------------------------------------- -// -void CWmMainContainer::HandleControlEventL( - CCoeControl* aControl, TCoeEvent aEventType ) - { - if ( !iClosingDown && aControl == iOviPortal && aEventType == EEventStateChanged ) - { - OpenOviPortalL(); - } - } - -// ---------------------------------------------------- -// CWmMainContainer::LaunchDetailsDialogL -// ---------------------------------------------------- -// -void CWmMainContainer::LaunchDetailsDialogL() - { - CWmWidgetData* data = iWidgetsList->WidgetData(); - if ( data ) - { - const CFbsBitmap* logo = ( data->LogoImage() ) ? - data->LogoImage() : iWidgetsList->DefaultLogo(); - const CFbsBitmap* mask = ( data->LogoImageMask() ) ? - data->LogoImageMask() : iWidgetsList->DefaultMask(); - - TPtrC description = ( data->Description().Length() > 0 ) ? - data->Description() : iWmPlugin.ResourceLoader().NoDescriptionText(); - CWmDetailsDlg* dlg = CWmDetailsDlg::NewL( - data->Name(), description, - data->HsContentInfo().CanBeAdded(), - logo, mask, iBgContext ); - - if ( dlg && dlg->ExecuteLD() == ECbaAddToHs ) - { - AddWidgetToHomeScreenL(); - } - } - } - -// ---------------------------------------------------- -// CWmMainContainer::SetClosingDown -// ---------------------------------------------------- -// -void CWmMainContainer::SetClosingDown( TBool aClosingDown ) - { - iClosingDown = aClosingDown; - } - -// ---------------------------------------------------- -// CWmMainContainer::ClosingDown -// ---------------------------------------------------- -// -TBool CWmMainContainer::ClosingDown() - { - return iClosingDown; - } - -// ---------------------------------------------------- -// CWmMainContainer::HandleFindSizeChanged -// ---------------------------------------------------- -// -void CWmMainContainer::HandleFindSizeChanged() - { - TAknWindowLineLayout findPane = - AknLayoutScalable_Avkon::find_pane().LayoutLine(); - - TAknWindowLineLayout listPane; - - TRect listRect = iWidgetsList->Rect(); - listPane.il = listRect.iTl.iX; - listPane.it = listRect.iTl.iY; - listPane.ib = 0; - listPane.iH = TUint16( listRect.Height() - ( findPane.iH - 1 ) ); - listPane.iW = listRect.Width(); - listPane.ir = ELayoutEmpty; - findPane.iW = listPane.iW; - - TRect rect = Rect(); - AknLayoutUtils::LayoutControl( iFindbox, rect, findPane ); - AknLayoutUtils::LayoutControl( iWidgetsList, rect, listPane ); - - iWidgetsList->DrawNow(); - } - - -// End of File - diff -r f72a12da539e -r 5315654608de widgetmanager/src/wmmaincontainerview.cpp --- a/widgetmanager/src/wmmaincontainerview.cpp Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,436 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Implementation of the main container view for WidgetManager application. -* -*/ - -// INCLUDES -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "wmplugin.h" -#include "widgetmanager.hrh" -#include "wmmaincontainerview.h" -#include "wmresourceloader.h" -#include "wmmaincontainer.h" -#include - - -// --------------------------------------------------------- -// CWmMainContainerView::CWmMainContainerView() -// --------------------------------------------------------- -// -CWmMainContainerView::CWmMainContainerView( - CWmPlugin& aWmPlugin ): - iWmPlugin( aWmPlugin ) - { - iWmMainContainer = NULL; - } - -// --------------------------------------------------------- -// CWmMainContainerView::~CWmMainContainerView() -// --------------------------------------------------------- -// -CWmMainContainerView::~CWmMainContainerView() - { - if ( iWmMainContainer != NULL ) - { - AppUi()->RemoveFromViewStack( *this, iWmMainContainer ); - delete iWmMainContainer; - iWmMainContainer = NULL; - } - } - -// --------------------------------------------------------- -// CWmMainContainerView::NewL -// --------------------------------------------------------- -// -CWmMainContainerView* CWmMainContainerView::NewL( - CWmPlugin& aWmPlugin ) - { - CWmMainContainerView* self = CWmMainContainerView::NewLC( - aWmPlugin ); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------- -// CWmMainContainerView::NewLC -// --------------------------------------------------------- -// -CWmMainContainerView* CWmMainContainerView::NewLC( - CWmPlugin& aWmPlugin ) - { - CWmMainContainerView* self = - new ( ELeave ) CWmMainContainerView( aWmPlugin ); - CleanupStack::PushL( self ); - self->ConstructL(); - return self; - } - -// --------------------------------------------------------- -// CWmMainContainerView::ConstructL -// --------------------------------------------------------- -// -void CWmMainContainerView::ConstructL() - { - BaseConstructL( R_WM_MAIN_CONTAINER_VIEW ); - } - -// --------------------------------------------------------- -// CWmMainContainerView::Id -// --------------------------------------------------------- -// -TUid CWmMainContainerView::Id() const - { - return TUid::Uid( EWmMainContainerViewId ); - } - -// --------------------------------------------------------- -// CWmMainContainerView::HandleCommandL -// --------------------------------------------------------- -// -void CWmMainContainerView::HandleCommandL( TInt aCommand ) - { - if ( !iWmMainContainer->ClosingDown() ) - { - switch ( aCommand ) - { - case EWmMainContainerViewOpenPortalMenuItemCommand: - HandleOpenMenuItemSelectedL(); - break; - case EWmMainContainerViewAddMenuItemCommand: - HandleAddMenuItemSelectedL(); - break; - case EWmMainContainerViewLaunchMenuItemCommand: - HandleLaunchMenuItemSelectedL(); - break; - case EWmMainContainerViewSearchMenuItemCommand: // flow through - case EAknSoftkeySearch: - HandleSearchMenuItemSelectedL(); - break; - case EWmMainContainerViewSortAlphaMenuItemCommand: - HandleSortAlphaMenuItemSelectedL(); - break; - case EWmMainContainerViewUninstallMenuItemCommand: - HandleUninstallMenuItemSelectedL(); - break; - case EWmMainContainerViewHelpMenuItemCommand: - HandleHelpMenuItemSelectedL(); - break; - case EWmMainContainerViewBackMenuItemCommand: // flow through - case EAknSoftkeyBack: - iWmPlugin.Deactivate(); - break; - case EWmMainContainerViewWiddetDetailsMenuItemCommand: - HandleDetailsMenuItemSelectedL(); - break; - case EAknSoftkeySelect: - if ( iWmMainContainer ) - iWmMainContainer->SelectL(); - break; - case EAknSoftkeyCancel: // flow through - case EEikCmdCanceled: - { - HandleDeactivateFindPaneL(); - break; - } - default: - break; - } - } - } - -// --------------------------------------------------------- -// CWmMainContainerView::DoActivateL -// --------------------------------------------------------- -// -void CWmMainContainerView::DoActivateL( - const TVwsViewId& aPrevViewId, - TUid /*aCustomMessageId*/, - const TDesC8& /*aCustomMessage*/ ) - { - if ( iWmMainContainer == NULL ) - { - iWmMainContainer = CreateContainerL(); - iWmMainContainer->SetClosingDown( EFalse ); - iWmMainContainer->SetMopParent( this ); - AppUi()->AddToStackL( *this, iWmMainContainer ); - } - - SetupStatusPaneL(); - - iWmMainContainer->SetExitStatus( KErrNone ); - iWmPlugin.MainViewActivated( aPrevViewId, iWmMainContainer ); - StatusPane()->SwitchLayoutL( - R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT ); - StatusPane()->ApplyCurrentSettingsL(); - StatusPane()->DrawNow(); - CEikButtonGroupContainer* bgc( Cba() ); - - CEikCba* cba = static_cast< CEikCba* >( bgc->ButtonGroup() ); - if ( cba ) - { - - bgc->SetBoundingRect( TRect() ); - cba->DrawNow(); - } - } - -// --------------------------------------------------------- -// CWmMainContainerView::DoDeactivate -// --------------------------------------------------------- -// -void CWmMainContainerView::DoDeactivate() - { - TInt exitStatus = KErrNone; - if ( iWmMainContainer != NULL ) - { - exitStatus = iWmMainContainer->ExitStatus(); - AppUi()->RemoveFromViewStack( *this, iWmMainContainer ); - delete iWmMainContainer; - iWmMainContainer = NULL; - } - - // display error, if such exists - if ( exitStatus == KHsErrorViewFull || - exitStatus == KHsErrorDoesNotFit ) - { - TRAP_IGNORE( iWmPlugin.ResourceLoader().InfoPopupL( - R_QTN_HS_ADD_WIDGET_NO_SPACE_NOTE, KNullDesC ) ); - } - else if ( exitStatus == KHsErrorMaxInstanceCountExceeded ) - { - TRAP_IGNORE( iWmPlugin.ResourceLoader().InfoPopupL( - R_QTN_HS_ADD_WIDGET_MAX_COUNT_NOTE, KNullDesC ) ); - } - else if ( exitStatus != KErrNone ) - { - iWmPlugin.ResourceLoader().ErrorPopup( exitStatus ); - } - - 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() ); - } - } - - } - -// --------------------------------------------------------- -// CWmMainContainerView::SetupStatusPaneL -// --------------------------------------------------------- -// -void CWmMainContainerView::SetupStatusPaneL() - { - // setup the title pane - TUid titlePaneUid = TUid::Uid( EEikStatusPaneUidTitle ); - CEikStatusPaneBase::TPaneCapabilities subPaneTitle = - StatusPane()->PaneCapabilities( titlePaneUid ); - if ( subPaneTitle.IsPresent() && subPaneTitle.IsAppOwned() ) - { - CAknTitlePane* title = static_cast< CAknTitlePane* >( - StatusPane()->ControlL( titlePaneUid ) ); - if ( title ) - { - TResourceReader reader; - iEikonEnv->CreateResourceReaderLC( - reader, R_WM_MAIN_CONTAINER_TITLE_RESOURCE ); - title->SetFromResourceL( reader ); - title->DrawDeferred(); - CleanupStack::PopAndDestroy(); // reader internal state - } - } - } - -// --------------------------------------------------------- -// CWmMainContainerView::CreateContainerL -// --------------------------------------------------------- -// -CWmMainContainer* CWmMainContainerView::CreateContainerL() - { - return CWmMainContainer::NewL( ClientRect(), NULL, this, iWmPlugin ); - } - -// --------------------------------------------------------- -// CWmMainContainerView::DynInitMenuPaneL -// --------------------------------------------------------- -// -void CWmMainContainerView::DynInitMenuPaneL( - TInt aResourceId, CEikMenuPane* aMenuPane ) - { - if ( aResourceId == R_WM_MAIN_CONTAINER_MENU_PANE && - iWmMainContainer ) - { - aMenuPane->SetItemDimmed( EWmMainContainerViewAddMenuItemCommand, - !iWmMainContainer->CanDoAdd() ); - aMenuPane->SetItemDimmed( EWmMainContainerViewWiddetDetailsMenuItemCommand, - !iWmMainContainer->CanDoDetails() ); - aMenuPane->SetItemDimmed( EWmMainContainerViewLaunchMenuItemCommand, - !iWmMainContainer->CanDoLaunch() ); - aMenuPane->SetItemDimmed( EWmMainContainerViewSearchMenuItemCommand, - !iWmMainContainer->CanDoFind() ); - aMenuPane->SetItemDimmed( EWmMainContainerViewSortAlphaMenuItemCommand, - !iWmMainContainer->CanDoSort() ); - aMenuPane->SetItemDimmed( EWmMainContainerViewHelpMenuItemCommand, - !iWmMainContainer->CanDoHelp() ); - aMenuPane->SetItemDimmed( EWmMainContainerViewUninstallMenuItemCommand, - !iWmMainContainer->CanDoUninstall() ); - if ( !iWmMainContainer->PortalSelected() ) - aMenuPane->DeleteMenuItem( EWmMainContainerViewOpenPortalMenuItemCommand ); - if ( !iWmMainContainer->WidgetSelected() ) - aMenuPane->DeleteMenuItem( EWmMainContainerViewAddMenuItemCommand ); - } - } - -// --------------------------------------------------------- -// CWmMainContainerView::HandleOpenMenuItemSelectedL -// --------------------------------------------------------- -// -TBool CWmMainContainerView::HandleOpenMenuItemSelectedL() - { - if ( iWmMainContainer && iWmMainContainer->PortalSelected() ) - { - iWmMainContainer->OpenOviPortalL(); - } - return ETrue; - } - -// --------------------------------------------------------- -// CWmMainContainerView::HandleDetailsMenuItemSelectedL -// --------------------------------------------------------- -// -TBool CWmMainContainerView::HandleDetailsMenuItemSelectedL() - { - if ( iWmMainContainer && iWmMainContainer->WidgetSelected() ) - { - iWmMainContainer->LaunchDetailsDialogL(); - } - return ETrue; - } - -// --------------------------------------------------------- -// CWmMainContainerView::HandleAddMenuItemSelectedL -// --------------------------------------------------------- -// -TBool CWmMainContainerView::HandleAddMenuItemSelectedL() - { - if ( iWmMainContainer && iWmMainContainer->WidgetSelected() ) - { - iWmMainContainer->AddWidgetToHomeScreenL(); - } - return ETrue; - } - -// --------------------------------------------------------- -// CWmMainContainerView::HandleLaunchMenuItemSelectedL -// --------------------------------------------------------- -// -TBool CWmMainContainerView::HandleLaunchMenuItemSelectedL() - { - if ( iWmMainContainer && iWmMainContainer->WidgetSelected() ) - { - iWmMainContainer->LaunchWidgetL(); - } - return ETrue; - } - -// --------------------------------------------------------- -// CWmMainContainerView::HandleSearchMenuItemSelectedL -// --------------------------------------------------------- -// -TBool CWmMainContainerView::HandleSearchMenuItemSelectedL() - { - if ( iWmMainContainer ) - { - iWmMainContainer->ActivateFindPaneL(); - } - return ETrue; - } - -// --------------------------------------------------------- -// CWmMainContainerView::HandleSortAlphaMenuItemSelectedL -// --------------------------------------------------------- -// -TBool CWmMainContainerView::HandleSortAlphaMenuItemSelectedL() - { - if ( iWmMainContainer ) - { - iWmMainContainer->SortListAlphabeticallyL(); - } - return ETrue; - } - -// --------------------------------------------------------- -// CWmMainContainerView::HandleUninstallMenuItemSelectedL -// --------------------------------------------------------- -// -TBool CWmMainContainerView::HandleUninstallMenuItemSelectedL() - { - if ( iWmMainContainer ) - { - iWmMainContainer->UninstallWidgetL(); - } - return ETrue; - } - -// --------------------------------------------------------- -// CWmMainContainerView::HandleHelpMenuItemSelectedL -// --------------------------------------------------------- -// -TBool CWmMainContainerView::HandleHelpMenuItemSelectedL() - { - iWmMainContainer->ShowHelpL(); - return ETrue; - } - -// --------------------------------------------------------- -// CWmMainContainerView::HandleDeactivateFindPaneL -// --------------------------------------------------------- -// -TBool CWmMainContainerView::HandleDeactivateFindPaneL() - { - if ( iWmMainContainer ) - { - iWmMainContainer->DeactivateFindPaneL(); - } - return ETrue; - } - -// End of file diff -r f72a12da539e -r 5315654608de widgetmanager/src/wmpersistentwidgetorder.cpp --- a/widgetmanager/src/wmpersistentwidgetorder.cpp Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,244 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Defines an ordered list of widget id's with persistence capability -* -*/ - -// INCLUDES -#include // RFile -#include // streams -#include -#include - -#include "wmwidgetdata.h" -#include "wmpersistentwidgetorder.h" - -// CONSTANTS -_LIT( KStoreFileName, "wmlistorder.dat" ); - - -// --------------------------------------------------------- -// CWmPersistentWidgetOrder::NewL -// --------------------------------------------------------- -// -CWmPersistentWidgetOrder* CWmPersistentWidgetOrder::NewL( RFs& aFs ) - { - CWmPersistentWidgetOrder* self = - new (ELeave) CWmPersistentWidgetOrder( aFs ); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------- -// CWmPersistentWidgetOrder::CWmPersistentWidgetOrder -// --------------------------------------------------------- -// -CWmPersistentWidgetOrder::CWmPersistentWidgetOrder( RFs& aFs ) - : iFs( aFs ) - { - } - -// --------------------------------------------------------- -// CWmPersistentWidgetOrder::ConstructL -// --------------------------------------------------------- -// -void CWmPersistentWidgetOrder::ConstructL() - { - } - -// --------------------------------------------------------- -// CWmPersistentWidgetOrder::~CWmPersistentWidgetOrder -// --------------------------------------------------------- -// -CWmPersistentWidgetOrder::~CWmPersistentWidgetOrder() - { - CleanupArray(); - } - -// --------------------------------------------------------- -// CWmPersistentWidgetOrder::LoadL -// --------------------------------------------------------- -// -void CWmPersistentWidgetOrder::LoadL() - { - // 1. empty the in-mempory storage - CleanupArray(); - // 2. create stream for reading data from a file - TFileName storeFileName; - GetStoreFileNameL( storeFileName ); - CPermanentFileStore* fileStore = NULL; - fileStore = CPermanentFileStore::OpenL( - iFs, storeFileName, EFileRead ); - CleanupStack::PushL( fileStore ); - RStoreReadStream reader; - reader.OpenLC( *fileStore, fileStore->Root() ); - // 3. read all contents from the stream - TInt arrayCount = reader.ReadInt32L(); - while( iTagArray.Count() < arrayCount ) - { - TInt32 uid = reader.ReadInt32L(); - TInt32 publisherIdLen = reader.ReadInt32L(); - HBufC16* publisherId = HBufC16::NewLC(publisherIdLen); - TPtr16 publisherIdPtr = publisherId->Des(); - reader.ReadL( publisherIdPtr, publisherIdLen ); - iTagArray.AppendL( Tag( uid, publisherId ) ); - CleanupStack::Pop( publisherId ); - } - // 4. cleanup - CleanupStack::PopAndDestroy( &reader ); - CleanupStack::PopAndDestroy( fileStore ); - } - -// --------------------------------------------------------- -// CWmPersistentWidgetOrder::StoreL -// --------------------------------------------------------- -// -void CWmPersistentWidgetOrder::StoreL( const RWidgetDataValues& aArray ) - { - // 1. empty the in-mempory storage - CleanupArray(); - // 2. serialize the widget array tags to a local array - for( TInt i=0; iUid().iUid; - HBufC16* publisherId = aArray[i]->HsContentInfo().PublisherId().AllocLC(); - iTagArray.AppendL( Tag( uid, publisherId ) ); - CleanupStack::Pop( publisherId ); - } - // 3. create stream for storing the data to a file - TFileName storeFileName; - GetStoreFileNameL( storeFileName ); - CPermanentFileStore* fileStore = CPermanentFileStore::ReplaceLC( - iFs, storeFileName, EFileWrite ); - fileStore->SetTypeL(KPermanentFileStoreLayoutUid); - RStoreWriteStream writer; - TStreamId id = writer.CreateLC( *fileStore ); - // 4. write all content to the stream - writer.WriteInt32L( iTagArray.Count() ); - for( TInt i=0; iLength() ); - writer.WriteL( *iTagArray[i].iPublisherId, - iTagArray[i].iPublisherId->Length() ); - } - // 5. check available space and commit the stream - TInt streamsize = writer.Sink()->SizeL(); - TBool noSpace = SysUtil::DiskSpaceBelowCriticalLevelL( &iFs, streamsize, - EDriveC ); - if( noSpace ) - { - //do nothing - } - else // there is enough free space - { - writer.CommitL(); - fileStore->SetRootL(id); - fileStore->CommitL(); - } - - // 6. cleanup - CleanupStack::PopAndDestroy( &writer ); - CleanupStack::PopAndDestroy( fileStore ); - } - -// --------------------------------------------------------- -// CWmPersistentWidgetOrder::CleanupArray -// --------------------------------------------------------- -// -void CWmPersistentWidgetOrder::CleanupArray() - { - for( TInt i=0; i -#include -#include - -#include "wmcommon.h" -#include "widgetmanager.hrh" -#include "wmmaincontainer.h" -#include "wmmaincontainerview.h" -#include "wmresourceloader.h" -#include "wmplugin.h" -#include "wmeffectmanager.h" - -// --------------------------------------------------------- -// CWmPlugin::NewL -// --------------------------------------------------------- -// -CWmPlugin* CWmPlugin::NewL() - { - CWmPlugin* self=new(ELeave) CWmPlugin(); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } - -// --------------------------------------------------------- -// CWmPlugin::~CWmPlugin -// --------------------------------------------------------- -// -CWmPlugin::~CWmPlugin() - { - if ( iViewAppUi ) - { - Deactivate(); - iViewAppUi->RemoveView( TUid::Uid( EWmMainContainerViewId ) ); - } - iWmMainContainer = NULL; - delete iResourceLoader; - delete iEffectManager; - } - -// --------------------------------------------------------- -// CWmPlugin::CWmPlugin -// --------------------------------------------------------- -// -CWmPlugin::CWmPlugin() - { - iPreviousViewUid.iViewUid = KNullUid; - } - -// --------------------------------------------------------- -// CWmPlugin::ConstructL -// --------------------------------------------------------- -// -void CWmPlugin::ConstructL() - { - iWmMainContainer = NULL; - - // store static view app ui - CEikonEnv* eikonEnv = CEikonEnv::Static(); - if ( !eikonEnv ) User::Leave( KErrUnknown ); - iViewAppUi = (CAknViewAppUi*)eikonEnv->EikAppUi(); - if ( !iViewAppUi ) User::Leave( KErrUnknown ); - - // create resource loader - iFs = &eikonEnv->FsSession(); - iResourceLoader = CWmResourceLoader::NewL( *eikonEnv ); - iEffectManager = CWmEffectManager::NewL( *eikonEnv ); - - // main view - CWmMainContainerView* mainView = - CWmMainContainerView::NewL( *this ); - CleanupStack::PushL( mainView ); - iViewAppUi->AddViewL( mainView ); - CleanupStack::Pop( mainView ); - } - -// --------------------------------------------------------- -// CWmPlugin::Activate -// --------------------------------------------------------- -// -void CWmPlugin::Activate() - { - if ( !IsActive() && iHsContentController ) - { - TRAP_IGNORE( - iEffectManager->BeginFullscreenEffectL( - KAppStartCommonDefaultStyle ); - iViewAppUi->ActivateLocalViewL( - TUid::Uid( EWmMainContainerViewId ) ); - ); - } - } - -// --------------------------------------------------------- -// CWmPlugin::IsActive -// --------------------------------------------------------- -// -TBool CWmPlugin::IsActive() - { - return ( iPreviousViewUid.iViewUid != KNullUid ); - } - -// --------------------------------------------------------- -// CWmPlugin::Deactivate -// --------------------------------------------------------- -// -void CWmPlugin::Deactivate() - { - if ( IsActive() ) - { - iWmMainContainer->SetClosingDown( ETrue ); - TRAP_IGNORE( - iEffectManager->BeginFullscreenEffectL( - KAppExitCommonDefaultStyle ); - iViewAppUi->ActivateLocalViewL( - iPreviousViewUid.iViewUid ); - ); - } - } - -// --------------------------------------------------------- -// CWmPlugin::MainViewActivated -// --------------------------------------------------------- -// -void CWmPlugin::MainViewActivated( - const TVwsViewId& aViewId, - CWmMainContainer* aWmMainContainer ) - { - iPreviousViewUid = aViewId; - iWmMainContainer = aWmMainContainer; - iEffectManager->UiRendered(); - } - -// --------------------------------------------------------- -// CWmPlugin::MainViewDeactivated -// --------------------------------------------------------- -// -void CWmPlugin::MainViewDeactivated() - { - iPreviousViewUid.iViewUid = KNullUid; - iWmMainContainer = NULL; - iEffectManager->UiRendered(); - } - -// --------------------------------------------------------- -// CWmPlugin::NotifyWidgetListChanged -// --------------------------------------------------------- -// -void CWmPlugin::NotifyWidgetListChanged() - { - if ( iWmMainContainer ) - { - iWmMainContainer->HandleWidgetListChanged(); - } - } - -// End of file diff -r f72a12da539e -r 5315654608de widgetmanager/src/wmpluginproxy.cpp --- a/widgetmanager/src/wmpluginproxy.cpp Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,37 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* widget manager plugin proxy -* -*/ - -#include -#include - -#include "wmplugin.h" - -// Map the interface implementation UIDs to implementation factory functions -const TImplementationProxy ImplementationTable[] = - { - IMPLEMENTATION_PROXY_ENTRY( 0x20026F53, CWmPlugin::NewL ) - }; - - -// Exported proxy for instantiation method resolution. -EXPORT_C const TImplementationProxy* ImplementationGroupProxy( - TInt& aTableCount) - { - aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy); - return ImplementationTable; - } diff -r f72a12da539e -r 5315654608de widgetmanager/src/wmresourceloader.cpp --- a/widgetmanager/src/wmresourceloader.cpp Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,199 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* loads widget manager resources and icons -* -*/ - -// INCLUDE FILES -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "wmresourceloader.h" - -// CONSTANTS -_LIT( KRelativeMifPath, "\\resource\\apps\\widgetmanager.mif" ); -_LIT( KRelativeResourcePathWithWildcard, "\\resource\\widgetmanagerview.r*" ); -_LIT( KRelativeResourcePath, "\\resource\\widgetmanagerview.rsc" ); - - -// --------------------------------------------------------- -// CWmResourceLoader::NewL -// --------------------------------------------------------- -// -CWmResourceLoader* CWmResourceLoader::NewL( - CEikonEnv& aEnv ) - { - CWmResourceLoader* self = new (ELeave) CWmResourceLoader( aEnv ); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------- -// CWmResourceLoader::CWmResourceLoader -// --------------------------------------------------------- -// -CWmResourceLoader::CWmResourceLoader( CEikonEnv& aEnv ) - : iEnv( aEnv ) - { - } - -// --------------------------------------------------------- -// CWmResourceLoader::~CWmResourceLoader -// --------------------------------------------------------- -// -CWmResourceLoader::~CWmResourceLoader() - { - UnloadResources(); - delete iNote; - delete iDescription; - } - -// --------------------------------------------------------- -// CWmResourceLoader::ConstructL -// --------------------------------------------------------- -// -void CWmResourceLoader::ConstructL() - { - Dll::FileName( iDllName ); - - LoadResourcesL(); - DetermineIconFilePath(); - - iDescription = StringLoader::LoadL( - R_QTN_WM_DETAILS_NO_DESCRIPTION, &iEnv ); - } - -// --------------------------------------------------------- -// CWmResourceLoader::LoadResourcesL -// --------------------------------------------------------- -// -void CWmResourceLoader::LoadResourcesL() - { - TFileName resourceFile; - RFs& fs = iEnv.FsSession(); - resourceFile.Copy( iDllName.Left(2) ); - resourceFile.Append( KRelativeResourcePathWithWildcard ); - BaflUtils::NearestLanguageFile( fs, resourceFile ); - if ( !BaflUtils::FileExists( fs, resourceFile ) ) - { - resourceFile.Copy( iDllName.Left(2) ); - resourceFile.Append( KRelativeResourcePath ); - BaflUtils::NearestLanguageFile( fs, resourceFile ); - } - iResourceFileOffset = iEnv.AddResourceFileL( resourceFile ); - } - -// --------------------------------------------------------- -// CWmResourceLoader::UnloadResources -// --------------------------------------------------------- -// -void CWmResourceLoader::UnloadResources() - { - if ( iResourceFileOffset ) - { - iEnv.DeleteResourceFile( iResourceFileOffset ); - } - } - -// --------------------------------------------------------- -// CWmResourceLoader::DetermineIconFilePath -// --------------------------------------------------------- -// -void CWmResourceLoader::DetermineIconFilePath() - { - iMifFile.Copy( iDllName.Left(2) ); - iMifFile.Append( KRelativeMifPath ); - } - -// --------------------------------------------------------- -// CWmResourceLoader::IconFilePath -// --------------------------------------------------------- -// -const TDesC& CWmResourceLoader::IconFilePath() - { - return iMifFile; - } - -// --------------------------------------------------------- -// CWmResourceLoader::LoadButtonL -// --------------------------------------------------------- -void CWmResourceLoader::LoadButtonL( - CAknButton& aResource, - TInt aResourceId ) - { - TResourceReader reader; - iEnv.CreateResourceReaderLC( reader, aResourceId ); - aResource.ConstructFromResourceL( reader ); - CleanupStack::PopAndDestroy(); // reader - } - -// --------------------------------------------------------- -// LoadStringLC -// loads a string from resource. If an additional string is -// given (the length is greater than zero) uses a different -// StringLoader method to load. -// --------------------------------------------------------- -// -HBufC* LoadStringLC( TInt aResourceId, const TDesC& aString, CEikonEnv* aEnv ) - { - if ( aString.Length() > 0 ) - return StringLoader::LoadLC( aResourceId, aString, aEnv ); - else - return StringLoader::LoadLC( aResourceId, aEnv ); - } - -// --------------------------------------------------------- -// CWmResourceLoader::InfoPopupL -// --------------------------------------------------------- -// -void CWmResourceLoader::InfoPopupL( TInt aResourceId, const TDesC& aString ) - { - HBufC* infoMsg = LoadStringLC( aResourceId, aString, &iEnv ); - iNote = new (ELeave) CAknInformationNote( &iNote ); - iNote->SetTimeout( CAknNoteDialog::ELongTimeout ); - iNote->ExecuteLD( *infoMsg ); - CleanupStack::PopAndDestroy( infoMsg ); - } - -// --------------------------------------------------------- -// CWmResourceLoader::ErrorPopup -// --------------------------------------------------------- -// -void CWmResourceLoader::ErrorPopup( TInt aErrorCode ) - { - iEnv.HandleError( aErrorCode ); - } - -// --------------------------------------------------------- -// CWmResourceLoader::NoDescriptionText -// --------------------------------------------------------- -// -const TDesC& CWmResourceLoader::NoDescriptionText() - { - return *iDescription; - } - -// end of file - diff -r f72a12da539e -r 5315654608de widgetmanager/src/wmwidgetdata.cpp --- a/widgetmanager/src/wmwidgetdata.cpp Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,357 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* CWmWidgetData implementation. -* -*/ - - -// INCLUDE FILES -#include -#include -#include -#include -#include // widgetreqistry -#include "wmwidgetdata.h" -#include "wmwidgetdataobserver.h" -#include "wmpersistentwidgetorder.h" -#include "wmcommon.h" - -// --------------------------------------------------------- -// CWmWidgetData::NewL -// --------------------------------------------------------- -// -CWmWidgetData* CWmWidgetData::NewL( - CHsContentInfo& aHsContentInfo, - RWidgetRegistryClientSession* aRegistryClientSession ) - { - CWmWidgetData* self = CWmWidgetData::NewLC( - aHsContentInfo, aRegistryClientSession ); - CleanupStack::Pop(); // self; - return self; - } - -// --------------------------------------------------------- -// CWmWidgetData::NewLC -// --------------------------------------------------------- -// -CWmWidgetData* CWmWidgetData::NewLC( - CHsContentInfo& aHsContentInfo, - RWidgetRegistryClientSession* aRegistryClientSession ) - { - CWmWidgetData* self = new ( ELeave ) CWmWidgetData(); - CleanupStack::PushL(self); - self->ConstructL( aHsContentInfo, aRegistryClientSession ); - return self; - } - -// --------------------------------------------------------- -// CWmWidgetData::CWmWidgetData -// --------------------------------------------------------- -// -CWmWidgetData::CWmWidgetData() - { - iIdle = NULL; - iLogoImage = NULL; - iLogoImageMask = NULL; - iHsContentInfo = NULL; - iWidgetType = CWmWidgetData::EUnknown; - iInstallAnimationIndex = KErrNotFound; - iPublisherUid = KNullUid; - iLogoSize = TSize( 0, 0 ); - } - -// --------------------------------------------------------- -// CWmWidgetData::ConstructL -// --------------------------------------------------------- -// -void CWmWidgetData::ConstructL( - CHsContentInfo& aHsContentInfo, - RWidgetRegistryClientSession* aRegistryClientSession ) - { - // analyse the widget type - if ( aHsContentInfo.Type() == KContentTemplate ) - { - iWidgetType = CWmWidgetData::ECps; // wrt widgets included in this gategory - } - else if ( aHsContentInfo.Type() == KContentWidget ) - { - iWidgetType = CWmWidgetData::ENative; - } - - // duplicate the content info locally - iHsContentInfo = aHsContentInfo.CloneL(); - - iImageConverter = CWmImageConverter::NewL( this ); - - FetchPublisherUidL( aRegistryClientSession ); - - // start decoding the icon - iIdle = CIdle::NewL( CActive::EPriorityLow ); - iIdle->Start( TCallBack( HandleAsyncIconString, this ) ); - } - - -// --------------------------------------------------------- -// CWmWidgetData::~CWmWidgetData -// --------------------------------------------------------- -// -CWmWidgetData::~CWmWidgetData() - { - if ( iIdle && iIdle->IsActive() ) - { - iIdle->Cancel(); - } - delete iIdle; - SetObserver( NULL ); - delete iLogoImage; - delete iLogoImageMask; - delete iImageConverter; - delete iHsContentInfo; - } - -// --------------------------------------------------------- -// CWmWidgetData::SetObserver -// --------------------------------------------------------- -// -void CWmWidgetData::SetObserver( MWmWidgetDataObserver* aObserver ) - { - iObserver = aObserver; - } - -// --------------------------------------------------------- -// CWmWidgetData::SetObserver -// --------------------------------------------------------- -// -void CWmWidgetData::SetPersistentWidgetOrder( - const CWmPersistentWidgetOrder* aPersistentWidgetOrder ) - { - iPersistentWidgetOrder = aPersistentWidgetOrder; - } - -// --------------------------------------------------------- -// CWmWidgetData::EqualsTo -// --------------------------------------------------------- -// -TBool CWmWidgetData::EqualsTo( CHsContentInfo& aContentInfo ) - { - return ( - HsContentInfo().Uid() == aContentInfo.Uid() && - HsContentInfo().PublisherId() == aContentInfo.PublisherId() ); - } - -// --------------------------------------------------------- -// CWmWidgetData::CompareByName -// --------------------------------------------------------- -// -TInt CWmWidgetData::CompareByName( - const CWmWidgetData& aDataOne, const CWmWidgetData& aDataTwo ) - { - // negate the result for ascending alphabetical order - TInt result = aDataOne.Name().CompareC( aDataTwo.Name() ); - return result; - } - -// --------------------------------------------------------- -// CWmWidgetData::CompareByPersistentWidgetOrder -// --------------------------------------------------------- -// -TInt CWmWidgetData::CompareByPersistentWidgetOrder( - const CWmWidgetData& aDataOne, const CWmWidgetData& aDataTwo ) - { - TInt result; - const CWmPersistentWidgetOrder* order = aDataOne.iPersistentWidgetOrder; - if ( order && !order->IsEmpty() ) - { - result = order->IndexOf( aDataOne ) - order->IndexOf( aDataTwo ); - } - else - { - // fallback: if persistent widget order is not available - // or it is empty (this is the case on first start, or if the persistent - // file is corrupted or deleted) -> order widgets by name. - result = CompareByName( aDataOne, aDataTwo ); - } - return result; - } - -// --------------------------------------------------------- -// CWmWidgetData::NotifyCompletion -// --------------------------------------------------------- -// -void CWmWidgetData::NotifyCompletion( TInt aError ) - { - delete iLogoImage; - iLogoImage = NULL; - delete iLogoImageMask; - iLogoImageMask = NULL; - if ( KErrNone != aError ) - { - // no image available. Do nothing. - } - else - { - iLogoImage = iImageConverter->Bitmap(); - iLogoImageMask = iImageConverter->Mask(); - FireDataChanged(); - } - } - -// --------------------------------------------------------- -// CWmWidgetData::HandleIconStringL -// --------------------------------------------------------- -// -void CWmWidgetData::HandleIconStringL( const TDesC& aIconStr ) - { - HBufC* iconStr = NULL; - if ( aIconStr.Length() == 0 && - iPublisherUid != KNullUid ) - { - // workaround for wrt widgets icon - _LIT( KUidTag, "uid(0x%x)" ); - const TInt KLength = 32; - iconStr = HBufC::NewLC( KLength ); - iconStr->Des().Format( KUidTag, iPublisherUid.iUid ); - } - else - { - iconStr = aIconStr.AllocLC(); - } - - TSize size( iLogoSize ); - if ( iLogoImage ) { size = iLogoImage->SizeInPixels(); } - if ( size != iLogoSize && - iLogoSize.iWidth > 0 && iLogoSize.iHeight > 0 ) - { - size = iLogoSize; - } - iImageConverter->HandleIconStringL( - size.iWidth, size.iHeight, *iconStr ); - - CleanupStack::PopAndDestroy( iconStr ); - } - -// --------------------------------------------------------- -// CWmWidgetData::FireDataChanged -// --------------------------------------------------------- -// -void CWmWidgetData::FireDataChanged() - { - if ( iObserver ) - { - iObserver->HandleWidgetDataChanged( this ); - } - } - -// ---------------------------------------------------- -// CWmWidgetData::UidFromString -// ---------------------------------------------------- -// -TUid CWmWidgetData::UidFromString( const TDesC8& aUidString ) const - { - TUid uid( TUid::Null() ); - const TInt KHexPrefixLength = 2; - if ( aUidString.Length() > KHexPrefixLength ) - { - TUint id = 0; - TLex8 lex( aUidString.Mid( KHexPrefixLength ) ); - if ( lex.Val( id, EHex ) == KErrNone ) - { - uid.iUid = (TInt32)id; - } - } - return uid; - } - -// ---------------------------------------------------- -// CWmWidgetData::PublisherUid -// ---------------------------------------------------- -// -TUid CWmWidgetData::PublisherUid() - { - return iPublisherUid; - } - -// ---------------------------------------------------- -// CWmWidgetData::FetchPublisherUidL -// ---------------------------------------------------- -// -void CWmWidgetData::FetchPublisherUidL( - RWidgetRegistryClientSession* aRegistryClientSession ) - { - if ( iPublisherUid == KNullUid && - PublisherId() != KNullDesC && - iWidgetType != CWmWidgetData::ENative && - aRegistryClientSession ) - { - TInt widgetUid = aRegistryClientSession->GetWidgetUidL( PublisherId() ); - iPublisherUid = ( widgetUid != 0 ? TUid::Uid(widgetUid) : KNullUid ); - } - } -// ---------------------------------------------------- -// CWmWidgetData::SetLogoSize -// ---------------------------------------------------- -// -void CWmWidgetData::SetLogoSize( const TSize& aSize ) - { - iLogoSize = aSize; - if ( iImageConverter ) - { - iImageConverter->SetLogoSize( aSize ); - } - } - -// --------------------------------------------------------- -// CWmWidgetData::HandleAsyncIconString -// --------------------------------------------------------- -// -TInt CWmWidgetData::HandleAsyncIconString( TAny* aPtr ) - { - CWmWidgetData* self = static_cast< CWmWidgetData* >( aPtr ); - if ( self->iIdle->IsActive() ) - { - self->iIdle->Cancel(); - } - TRAP_IGNORE( self->HandleIconStringL( - self->HsContentInfo().IconPath() ); ); - return KErrNone; - } - -// --------------------------------------------------------- -// CWmWidgetData::ReCreateLogo -// --------------------------------------------------------- -// -void CWmWidgetData::ReCreateLogo( const TSize& aSize ) - { - TSize imageSize( iLogoSize ); - if ( iLogoImage ) { imageSize = iLogoImage->SizeInPixels(); } - if ( (aSize != iLogoSize) || (imageSize != iLogoSize) ) - { - iLogoSize = aSize; - - delete iLogoImage; - iLogoImage = NULL; - delete iLogoImageMask; - iLogoImageMask = NULL; - - if ( iIdle && !iIdle->IsActive() ) - { - // start decoding the icon - iIdle->Start( TCallBack( HandleAsyncIconString, this ) ); - } - } - } - -// End of file - diff -r f72a12da539e -r 5315654608de widgetmanager/src/wmwidgetloaderao.cpp --- a/widgetmanager/src/wmwidgetloaderao.cpp Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,256 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).. -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Active object to load widgets into list -* -*/ - -// INCLUDE FILES -#include "wmcommon.h" -#include "wmplugin.h" -#include "wmresourceloader.h" -#include "wmpersistentwidgetorder.h" -#include "wmlistbox.h" -#include "wmwidgetloaderao.h" - -#include // content control api -#include // content control api -#include // widget reqistry - - -// --------------------------------------------------------------------------- -// CWmWidgetLoaderAo::NewL -// --------------------------------------------------------------------------- -// -CWmWidgetLoaderAo* CWmWidgetLoaderAo::NewL( - CWmPlugin& aWmPlugin, - CWmListBox& aTargetList ) - { - CWmWidgetLoaderAo* self = new (ELeave) CWmWidgetLoaderAo( - aWmPlugin, aTargetList ); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------------------------- -// CWmWidgetLoaderAo::NewL -// --------------------------------------------------------------------------- -// -CWmWidgetLoaderAo::CWmWidgetLoaderAo( - CWmPlugin& aWmPlugin, - CWmListBox& aTargetList ) - : CAsyncOneShot( EPriorityLow ) - , iWmPlugin( aWmPlugin ) - , iWidgetsList( aTargetList ) - { - iWidgetRegistry = NULL; - iWidgetOrder = NULL; - } - -// --------------------------------------------------------------------------- -// CWmWidgetLoaderAo::ConstructL -// --------------------------------------------------------------------------- -// -void CWmWidgetLoaderAo::ConstructL() - { - } - -// --------------------------------------------------------------------------- -// CWmWidgetLoaderAo::~CWmWidgetLoaderAo -// --------------------------------------------------------------------------- -// -CWmWidgetLoaderAo::~CWmWidgetLoaderAo() - { - // cancel ongoing operation - Cancel(); - - // cleanup run data - Cleanup(); - - } - -// --------------------------------------------------------------------------- -// CWmWidgetLoaderAo::StartLoading -// --------------------------------------------------------------------------- -// -void CWmWidgetLoaderAo::StartLoading() - { - if ( IsActive() ) - { - // cancel ongoing process - Cancel(); - } - Call(); - } - -// --------------------------------------------------------------------------- -// CWmWidgetLoaderAo::RunL -// --------------------------------------------------------------------------- -// -void CWmWidgetLoaderAo::RunL() - { - DoLoadWidgetsL(); - Cleanup(); - } - -// --------------------------------------------------------------------------- -// CWmWidgetLoaderAo::RunError -// --------------------------------------------------------------------------- -// -TInt CWmWidgetLoaderAo::RunError( TInt /*aError*/ ) - { - Cleanup(); - return KErrNone; - } - -// --------------------------------------------------------- -// CWmWidgetLoaderAo::DoLoadWidgetsL -// --------------------------------------------------------- -// -void CWmWidgetLoaderAo::DoLoadWidgetsL() - { - // 1. mark all the existing widgets initially non-valid - for( TInt i=0; iLoadL() ); - - // 4. loop through the content array and compare it against the existing - // widget data. - TInt widgetsAdded = 0; - for ( TInt i=0; i < contentInfoArray->Array().Count(); i++ ) - { - CHsContentInfo* contentInfo = contentInfoArray->Array()[i]; - - // check if this widget exists. - // if it does, keep the existing one - // if it does not, add it - CWmWidgetData* existingData = FindWidgetData( *contentInfo ); - if ( existingData ) - { - // keep the existing one - existingData->SetValid( ETrue ); - } - else - { - // add a new one - AddWidgetDataL( *contentInfo ); - ++widgetsAdded; - } - } - - // if widgets were added, extend the listbox - if ( widgetsAdded ) - iWidgetsList.HandleItemAdditionL(); - - // 5: finally, remove all UI widgets that during the loading process were - // NOT marked as VALID. those widgets do not exist anymore. - TInt widgetsRemoved = 0; - for( TInt i=0; i 0 || widgetsRemoved > 0 ) - { - iWidgetsList.DrawDeferred(); - } - - // 8. store list order if necessary - if ( loadError != KErrNone || widgetsAdded > 0 || widgetsRemoved > 0 ) - { - iWidgetOrder->StoreL( iWidgetsList.WidgetDataArray() ); - } - - } - -// --------------------------------------------------------- -// CWmWidgetLoaderAo::FindWidgetDataL -// --------------------------------------------------------- -// -CWmWidgetData* CWmWidgetLoaderAo::FindWidgetData( - CHsContentInfo& aContentInfo ) - { - CWmWidgetData* data = NULL; - for( TInt i=0; iConnect() ); - } - - CWmWidgetData* widgetData = CWmWidgetData::NewLC( - aContentInfo, iWidgetRegistry ); - widgetData->SetPersistentWidgetOrder( iWidgetOrder ); - widgetData->SetValid( ETrue ); - iWidgetsList.AddWidgetDataL( widgetData ); - CleanupStack::Pop( widgetData ); - } - -// --------------------------------------------------------------------------- -// CWmWidgetLoaderAo::Cleanup -// --------------------------------------------------------------------------- -// -void CWmWidgetLoaderAo::Cleanup() - { - // disconnect widget registry - if ( iWidgetRegistry ) - { - iWidgetRegistry->Disconnect(); - iWidgetRegistry->Close(); - delete iWidgetRegistry; - iWidgetRegistry = NULL; - } - - // delete widget order - delete iWidgetOrder; - iWidgetOrder = NULL; - } - -// end of file - diff -r f72a12da539e -r 5315654608de widgetmanager/tsrc/wmunittest/bwins/wmunittestu.def --- a/widgetmanager/tsrc/wmunittest/bwins/wmunittestu.def Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3 +0,0 @@ -EXPORTS - ?LibEntryL@@YAPAVCScriptBase@@AAVCTestModuleIf@@@Z @ 1 NONAME ; class CScriptBase * LibEntryL(class CTestModuleIf &) - diff -r f72a12da539e -r 5315654608de widgetmanager/tsrc/wmunittest/conf/ui_wmunittest.cfg --- a/widgetmanager/tsrc/wmunittest/conf/ui_wmunittest.cfg Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,776 +0,0 @@ -//------------------------------------------------------------------------------- -// constants -//------------------------------------------------------------------------------- -// -[Define] - -TRUE 1 -FALSE 0 - -OK 0 -FAIL -1 - -MAX_WIDGET_AMOUNT 1000 // non-functional requirement - -EUnrecognized 0 -EUidIcon 1 -ESvgIcon 2 -ESkinIcon 3 -EMifIcon 4 -ESkinAndMifIcon 5 -EImageIcon 6 - -[Enddefine] - -//------------------------------------------------------------------------------- -// Test cases for the plugin -//------------------------------------------------------------------------------- -// - - -// Tests WmPlugin construction -[Test] -title WmPlugin create/delete -create wmunittest test -test HeapSet -test PluginCreate -pause 500 -test PluginDelete -test HeapCheck -delete test -[Endtest] - -// Heap usage logging -[Test] -title WmPlugin memcon test -create wmunittest test -test HeapSet -test LogHeap "before wm" -test PluginCreate -test LogHeap "wm Active" -// -test SetMass 10 -test PluginActivate -pause 500 -test LogHeap "10 widgets" -// -test SetMass 20 -test PluginWidgetsChanged -pause 250 -test LogHeap "20 widgets" -// -test SetMass 30 -test PluginWidgetsChanged -pause 250 -test LogHeap "30 widgets" -// -test SetMass 40 -test PluginWidgetsChanged -pause 250 -test LogHeap "40 widgets" -// -test SetMass 50 -test PluginWidgetsChanged -pause 250 -test LogHeap "50 widgets" -// -test SetMass 60 -test PluginWidgetsChanged -pause 250 -test LogHeap "60 widgets" -// -test SetMass 70 -test PluginWidgetsChanged -pause 250 -test LogHeap "70 widgets" -// -test SetMass 80 -test PluginWidgetsChanged -pause 250 -test LogHeap "80 widgets" -// -test SetMass 90 -test PluginWidgetsChanged -pause 250 -test LogHeap "90 widgets" -// -test SetMass 100 -test PluginWidgetsChanged -pause 250 -test LogHeap "100 widgets" -// -test SetMass 200 -test PluginWidgetsChanged -pause 250 -test LogHeap "200 widgets" -// -test SetMass 300 -test PluginWidgetsChanged -pause 250 -test LogHeap "300 widgets" -// -test SetMass 400 -test PluginWidgetsChanged -pause 250 -test LogHeap "400 widgets" -// -test SetMass 500 -test PluginWidgetsChanged -pause 250 -test LogHeap "500 widgets" -// -test PluginDeactivate -pause 250 -test LogHeap "wm deactive" -// -test PluginDeactivate -pause 500 -test PluginDelete -test HeapCheck -test LogHeap "after wm" -delete test -[Endtest] - -// Tests WmPlugin Activate method -[Test] -title WmPlugin activate/deactivate -create wmunittest test -test HeapSet -test PluginCreate -test SetMass 10 -test PluginActivate -pause 500 -test PluginDeactivate -pause 500 -test PluginDelete -test HeapCheck -delete test -[Endtest] - -// Tests WmPlugin NotifyWidgetListChanged with no change at all -[Test] -title WmPlugin notify nochange -create wmunittest test -test HeapSet -test PluginCreate -test SetMass 10 -test PluginActivate -pause 500 -test SetMass 10 -test PluginWidgetsChanged -pause 500 -test PluginDeactivate -pause 500 -test PluginDelete -test HeapCheck -delete test -[Endtest] - -// Tests WmPlugin NotifyWidgetListChanged 10->11 widgets -[Test] -title WmPlugin notify 10->11 -create wmunittest test -test HeapSet -test PluginCreate -test SetMass 10 -test PluginActivate -pause 500 -test SetMass 11 -test PluginWidgetsChanged -pause 500 -test PluginDeactivate -pause 500 -test PluginDelete -test HeapCheck -delete test -[Endtest] - -// Tests WmPlugin NotifyWidgetListChanged 10->9 widgets -[Test] -title WmPlugin notify 10->9 -create wmunittest test -test HeapSet -test PluginCreate -test SetMass 10 -test PluginActivate -pause 500 -test SetMass 9 -test PluginWidgetsChanged -pause 500 -test PluginDeactivate -pause 500 -test PluginDelete -test HeapCheck -delete test -[Endtest] - -// Tests WmPlugin NotifyWidgetListChanged 0->10 widgets -[Test] -title WmPlugin notify 0->10 -create wmunittest test -test HeapSet -test PluginCreate -test SetMass 0 -test PluginActivate -pause 500 -test SetMass 10 -test PluginWidgetsChanged -pause 500 -test PluginDeactivate -pause 500 -test PluginDelete -test HeapCheck -delete test -[Endtest] - -// Tests WmPlugin NotifyWidgetListChanged 10->0 widgets -[Test] -title WmPlugin notify 10->0 -create wmunittest test -test HeapSet -test PluginCreate -test SetMass 10 -test PluginActivate -pause 500 -test SetMass 0 -test PluginWidgetsChanged -pause 500 -test PluginDeactivate -pause 500 -test PluginDelete -test HeapCheck -delete test -[Endtest] - -// Tests WmPlugin NotifyWidgetListChanged with ridiculous amount of widgets -// testing the OOM error handling -[Test] -title WmPlugin notify OOM -create wmunittest test -test HeapSet -test PluginCreate -test SetMass 10 -test PluginActivate -pause 500 -test SetMass 10000 -test PluginWidgetsChanged -pause 500 -test PluginDeactivate -pause 500 -test PluginDelete -test HeapCheck -delete test -[Endtest] - -// Tests WmPlugin with large data amount -[Test] -title WmPlugin capacity -create wmunittest test -test HeapSet -test PluginCreate -test SetMass MAX_WIDGET_AMOUNT -test PluginActivate -pause 3000 -test PluginDelete -test HeapCheck -delete test -[Endtest] - -// Tests WmPlugin by notifying widget list changed hundreds of times -// with different widget amounts and different timeouts. Target is to -// interrupt the previous update process test that it is cancelled ok -[Test] -title WmPlugin robustness -create wmunittest test -test HeapSet -test PluginCreate -test SetMass 5 -test PluginActivate -pause 500 -loop 100 -test SetMass 10 -test PluginWidgetsChanged -pause 10 -test SetMass 15 -test PluginWidgetsChanged -pause 90 -test SetMass 11 -test PluginWidgetsChanged -pause 50 -test SetMass 16 -test PluginWidgetsChanged -pause 120 -endloop -test PluginDeactivate -pause 500 -test PluginDelete -test HeapCheck -delete test -[Endtest] - -//------------------------------------------------------------------------------- -// Test cases for the persistent widget order -//------------------------------------------------------------------------------- -// - -// Tests persistent widget order NewL method -[Test] -title Widget order create -create wmunittest test -test HeapSet -test WidgetOrderCreate -test WidgetOrderCheckIsEmpty TRUE -test WidgetOrderDelete -test HeapCheck -delete test -[Endtest] - -// Test persistent widget order STORE method -[Test] -title Widget order store -create wmunittest test -test HeapSet -test WidgetOrderCreate -test WidgetOrderCheckIsEmpty TRUE -test SetMass 5 -test WidgetOrderSave -test WidgetOrderCheckIsEmpty FALSE -test WidgetOrderDelete -test HeapCheck -delete test -[Endtest] - -// Test persistent widget order STORE method when storing an empty array -[Test] -title Widget order store empty -create wmunittest test -test HeapSet -test WidgetOrderCreate -test WidgetOrderCheckIsEmpty TRUE -test SetMass 0 -test WidgetOrderSave -test WidgetOrderCheckIsEmpty TRUE -test WidgetOrderDelete -test HeapCheck -delete test -[Endtest] - - -// Tests persistent widget order LOAD method -[Test] -title Widget order load -create wmunittest test -test HeapSet -test WidgetOrderCreate -test SetMass 5 -test WidgetOrderSave -test WidgetOrderCheckIsEmpty 0 -test WidgetOrderDelete -test WidgetOrderCreate -test WidgetOrderLoad -test WidgetOrderCheckIsEmpty 0 -test WidgetOrderDelete -test HeapCheck -delete test -[Endtest] - -// Tests persistent widget order LOAD method when count is ZERO -[Test] -title Widget order load empty -create wmunittest test -test HeapSet -test WidgetOrderCreate -test SetMass 0 -test WidgetOrderSave -test WidgetOrderCheckIsEmpty TRUE -test WidgetOrderDelete -test WidgetOrderCreate -test WidgetOrderLoad -test WidgetOrderCheckIsEmpty TRUE -test WidgetOrderDelete -test HeapCheck -delete test -[Endtest] - -// Tests persistent widget order INDEXOF method -[Test] -title Widget order use -create wmunittest test -test HeapSet -test WidgetOrderCreate -test SetMass 8 -test WidgetOrderSave -test WidgetOrderCheckIsEmpty FALSE -test WidgetOrderUse -test WidgetOrderDelete -test HeapCheck -delete test -[Endtest] - -// Tests persistent widget order INDEXOF method when class is empty -[Test] -title Widget order use empty -create wmunittest test -test HeapSet -test WidgetOrderCreate -test WidgetOrderCheckIsEmpty TRUE -test SetMass 0 -test WidgetOrderUse -test WidgetOrderDelete -test HeapCheck -delete test -[Endtest] - -// Tests persistent widget order with large data amount -[Test] -title Widget order capacity -create wmunittest test -test HeapSet -test WidgetOrderCreate -test SetMass MAX_WIDGET_AMOUNT -test WidgetOrderSave -test WidgetOrderDelete -test WidgetOrderCreate -test WidgetOrderLoad -test SetMass MAX_WIDGET_AMOUNT -test WidgetOrderUse -test WidgetOrderDelete -test HeapCheck -delete test -[Endtest] - -// Tests persistent widget order save & load 100 times in sequence -[Test] -title Widget order robustness -create wmunittest test -test HeapSet -test WidgetOrderCreate -test SetMass 100 -loop 100 -test WidgetOrderSave -endloop -test WidgetOrderDelete -test WidgetOrderCreate -test SetMass 100 -loop 100 -test WidgetOrderLoad -endloop -test WidgetOrderUse -test WidgetOrderDelete -test HeapCheck -delete test -[Endtest] - - -//------------------------------------------------------------------------------- -// Test cases for the image converter -//------------------------------------------------------------------------------- -// - -// Tests image converter NewL method -[Test] -title Image converter create delete -create wmunittest test -test HeapSet -test ImageConverterCreate -test ImageConverterConversionMethod EUnrecognized -test ImageConverterDelete -test HeapCheck -delete test -[Endtest] - -// Tests malformed icon string -[Test] -title malformed image formats -create wmunittest test -test HeapSet -test ImageConverterCreate -test ImageConverterConvert "foo bar" -test ImageConverterWaitResult FAIL -test ImageConverterConvert "*************" -test ImageConverterWaitResult FAIL -test ImageConverterConvert "uid skin mif logo icon jpg jpeg icon" -test ImageConverterWaitResult FAIL -test ImageConverterConvert "girl.jpg" -test ImageConverterWaitResult FAIL -test ImageConverterConvert "dirty_hack.exe" -test ImageConverterWaitResult FAIL -test ImageConverterConvert "c:/testframework/wmunittest/wmlogo/logo.jpg" -test ImageConverterWaitResult FAIL -test ImageConverterConvert "skin (0x10005a26 0x1000 )" -test ImageConverterWaitResult FAIL -test ImageConverterConvert "mif ( c:\testframework\wmunittest\wmlogo\logo.mif 16384 16385)" -test ImageConverterWaitResult FAIL -test ImageConverterConvert "skin( 0x100056c6 0x86 ):mif ( c:\testframework\wmunittest\wmlogo\logo.mif 16384 16385 )" -test ImageConverterWaitResult FAIL -test ImageConverterConvert "skin ( 0x101f84b7 0x1000594D ) : mif ( c:\testframework\wmunittest\wmlogo\logo.mif 16384 16385 )" -test ImageConverterWaitResult FAIL -test ImageConverterConvert " uid(0x10005901 )" -test ImageConverterWaitResult FAIL -test ImageConverterConvert "uid (268458241 )" -test ImageConverterWaitResult FAIL -test ImageConverterConvert "uid (0x10005901)" -test ImageConverterWaitResult FAIL -test ImageConverterDelete -test HeapCheck -delete test -[Endtest] - - -// Tests image converter with skin syntax -[Test] -title Image converter skin -create wmunittest test -test HeapSet -test ImageConverterCreate -test ImageConverterConvert "skin(0x101F86E3 0x100d)" -test ImageConverterWaitResult OK -test ImageConverterConversionMethod ESkinIcon -test ImageConverterDelete -test HeapCheck -delete test -[Endtest] - -// Tests image converter skin method with null skin item ids -[Test] -title Image converter skin (null) -create wmunittest test -test HeapSet -test ImageConverterCreate -test ImageConverterConvert "skin(0 0)" -test ImageConverterWaitResult FAIL -test ImageConverterDelete -test HeapCheck -delete test -[Endtest] - -// Tests image converter with skin/mif syntax -[Test] -title Image converter skin/mif -create wmunittest test -test HeapSet -test ImageConverterCreate -test ImageConverterConvert "skin(270501603 4145):mif(c:\testframework\wmunittest\wmlogo\logo.mif 16384 16385)" -test ImageConverterWaitResult OK -test ImageConverterConversionMethod ESkinAndMifIcon -test ImageConverterDelete -test HeapCheck -delete test -[Endtest] - -// Tests image converter mif method -[Test] -title Image converter mif -create wmunittest test -test HeapSet -test ImageConverterCreate -test ImageConverterConvert "mif(c:\testframework\wmunittest\wmlogo\logo.mif 16384 16385)" -test ImageConverterWaitResult OK -test ImageConverterConversionMethod EMifIcon -test ImageConverterDelete -test HeapCheck -delete test -[Endtest] - -// Tests image converter mif method with invalid path -[Test] -title Image converter mif (invalid path) -create wmunittest test -test HeapSet -test ImageConverterCreate -test ImageConverterConvert "mif(c:\blabla.mif 16384 16385)" -test ImageConverterWaitResult FAIL -test ImageConverterDelete -test HeapCheck -delete test -[Endtest] - -// Tests image converter mif method with invalid bitmap & mask ids -[Test] -title Image converter mif (invalid ids) -create wmunittest test -test HeapSet -test ImageConverterCreate -test ImageConverterConvert "mif(c:\testframework\wmunittest\wmlogo\logo.mif 1 2)" -test ImageConverterWaitResult FAIL -test ImageConverterDelete -test HeapCheck -delete test -[Endtest] - -// Tests image converter uid method -[Test] -title Image converter uid -create wmunittest test -test HeapSet -test ImageConverterCreate -test ImageConverterConvert "uid(0x10005901)" -test ImageConverterWaitResult OK -test ImageConverterConversionMethod EUidIcon -test ImageConverterDelete -test HeapCheck -delete test -[Endtest] - -// Tests image converter uid method with null uid -[Test] -title Image converter uid (null) -create wmunittest test -test HeapSet -test ImageConverterCreate -test ImageConverterConvert "uid(0x0)" -test ImageConverterWaitResult FAIL -test ImageConverterDelete -test HeapCheck -delete test -[Endtest] - -// Tests image converter uid method with wrt widget uid. -[Test] -title Image converter wrt widget -create wmunittest test -test HeapSet -test InstallWrtWidget "c:\testframework\wmunittest\wmlogo\test.wgz" -test ImageConverterCreate -test ImageConverterConvert "uid(0x2000DAD2)" -test ImageConverterWaitResult OK -test ImageConverterConversionMethod EUidIcon -test ImageConverterDelete -test UninstallWrtWidget "0x2000DAD2" -test HeapCheck -delete test -[Endtest] - -// Tests image converter svg method -[Test] -title Image converter svg -create wmunittest test -test HeapSet -test ImageConverterCreate -test ImageConverterConvert "c:\testframework\wmunittest\wmlogo\logo.svg" -test ImageConverterWaitResult OK -test ImageConverterConversionMethod ESvgIcon -test ImageConverterDelete -test HeapCheck -delete test -[Endtest] - -// Tests image converter svg method corrupt file. -[Test] -title Image converter svg (corrupted) -create wmunittest test -test HeapSet -test ImageConverterCreate -test ImageConverterConvert "c:\testframework\wmunittest\wmlogo\logocorrupt.svg" -test ImageConverterWaitResult FAIL -test ImageConverterConversionMethod ESvgIcon -test ImageConverterDelete -test HeapCheck -delete test -[Endtest] - -// Tests image converter png method -[Test] -title Image converter png -create wmunittest test -test HeapSet -test ImageConverterCreate -test ImageConverterConvert "c:\testframework\wmunittest\wmlogo\logo.png" -test ImageConverterWaitResult OK -test ImageConverterConversionMethod EImageIcon -test ImageConverterDelete -test HeapCheck -delete test -[Endtest] - -// Tests image converter png method corrupt file. -[Test] -title Image converter png (corrupted) -create wmunittest test -test HeapSet -test ImageConverterCreate -test ImageConverterConvert "c:\testframework\wmunittest\wmlogo\logocorrupt.png" -test ImageConverterWaitResult FAIL -test ImageConverterDelete -test HeapCheck -delete test -[Endtest] - -// Tests image converter jpeg method -[Test] -title Image converter jpeg -create wmunittest test -test HeapSet -test ImageConverterCreate -test ImageConverterConvert "c:\testframework\wmunittest\wmlogo\logo.jpg" -test ImageConverterWaitResult OK -test ImageConverterConversionMethod EImageIcon -test ImageConverterDelete -test HeapCheck -delete test -[Endtest] - -// Tests image converter jpeg method -[Test] -title Image converter jpeg (corrupted) -create wmunittest test -test HeapSet -test ImageConverterCreate -test ImageConverterConvert "c:\testframework\wmunittest\wmlogo\logocorrupt.jpg" -test ImageConverterWaitResult FAIL -test ImageConverterDelete -test HeapCheck -delete test -[Endtest] - -// Tests image converter cancel -[Test] -title Image converter cancel -create wmunittest test -test HeapSet -test ImageConverterCreate -test ImageConverterConvert "c:\testframework\wmunittest\wmlogo\logo.svg" -test CancelConvert -test ImageConverterWaitResult FAIL -test ImageConverterDelete -test HeapCheck -delete test -[Endtest] - - -//------------------------------------------------------------------------------- -// Misc Test cases -//------------------------------------------------------------------------------- -// - -// Tests error note -[Test] -title Other error note -create wmunittest test -test HeapSet -test PluginCreate -test PluginActivate -test ErrorPopup -pause 3000 -test PluginDelete -test HeapCheck -delete test -[Endtest] - -/* -// Test for heikki to play :) -[Test] -title WmPlugin 1h test -create wmunittest test -test HeapSet -test PluginCreate -test SetMass 500 -test PluginActivate -pause 3600000 -test PluginDelete -test HeapCheck -delete test -[Endtest] -*/ - - diff -r f72a12da539e -r 5315654608de widgetmanager/tsrc/wmunittest/conf/wmunittest.bat --- a/widgetmanager/tsrc/wmunittest/conf/wmunittest.bat Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,19 +0,0 @@ -rem /* -rem * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -rem * All rights reserved. -rem * This component and the accompanying materials are made available -rem * under the terms of "Eclipse Public License v1.0" -rem * which accompanies this distribution, and is available -rem * at the URL "http://www.eclipse.org/legal/epl-v10.html". -rem * -rem * Initial Contributors: -rem * Nokia Corporation - initial contribution. -rem * -rem * Contributors: -rem * -rem * Description: -rem * -rem */ - -ATSInterface.exe -testmodule TestScripter -config c:\testframework\ui_wmunittest.cfg - diff -r f72a12da539e -r 5315654608de widgetmanager/tsrc/wmunittest/conf/wmunittest.ini --- a/widgetmanager/tsrc/wmunittest/conf/wmunittest.ini Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,188 +0,0 @@ -# -# This is STIF initialization file -# Comment lines start with '#'-character. -# See STIF TestFramework users guide.doc for instructions - -# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -# Set following test engine settings: -# - Set Test Reporting mode. TestReportMode's possible values are: -# + 'Summary': Summary of the tested test cases. -# + 'Environment': Hardware and software info. -# + 'TestCases': Test case report. -# + 'FullReport': Set of all above ones. -# + Example 'TestReportMode= Summary TestCases' -# -# - CreateTestReport setting controls report creation mode -# + YES, Test report will created. -# + NO, No Test report. -# -# - File path indicates the base path of the test report. -# - File name indicates the name of the test report. -# -# - File format indicates the type of the test report. -# + TXT, Test report file will be txt type, for example 'TestReport.txt'. -# + HTML, Test report will be html type, for example 'TestReport.html'. -# + XML, Test report will be xml type, for example 'TestReport.xml'. -# Note, that xml format is available only when output is set to FILE. -# -# - File output indicates output source of the test report. -# + FILE, Test report logging to file. -# + RDEBUG, Test report logging to using rdebug. -# -# - File Creation Mode indicates test report overwriting if file exist. -# + OVERWRITE, Overwrites if the Test report file exist. -# + APPEND, Continue logging after the old Test report information if -# report exist. -# - Sets a device reset module's dll name(Reboot). -# + If Nokia specific reset module is not available or it is not correct one -# StifHWResetStub module may use as a template for user specific reset -# module. -# - Sets STIF test measurement disable options. e.g. pluging1 and pluging2 disablation -# DisableMeasurement= stifmeasurementplugin01 stifmeasurementplugin02 -# - -[Engine_Defaults] - -TestReportMode= FullReport # Possible values are: 'Empty', 'Summary', 'Environment', - # 'TestCases' or 'FullReport' - -CreateTestReport= YES # Possible values: YES or NO - -TestReportFilePath= C:\LOGS\TestFramework\ -TestReportFileName= WidgetManager - -TestReportFormat= TXT # Possible values: TXT, HTML or XML -TestReportOutput= FILE # Possible values: FILE or RDEBUG -TestReportFileCreationMode= OVERWRITE # Possible values: OVERWRITE or APPEND - -DeviceResetDllName= StifResetForNokia.dll # e.g. 'StifHWResetStub.dll' for user specific reseting - -DisableMeasurement= stifmeasurementdisablenone # Possible values are: - # 'stifmeasurementdisablenone', 'stifmeasurementdisableall' - # 'stifmeasurementplugin01', 'stifmeasurementplugin02', - # 'stifmeasurementplugin03', 'stifmeasurementplugin04', - # 'stifmeasurementplugin05' or 'stifbappeaprofiler' - -Timeout= 0 # Default timeout value for each test case. In milliseconds -UITestingSupport= YES # Possible values: YES or NO -#SeparateProcesses= YES # Possible values: YES or NO (default: NO) -[End_Defaults] -# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - - - -# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - -# Widget manager unit tests -[New_Module] -ModuleName= testscripter -TestCaseFile= c:\testframework\ui_wmunittest.cfg -[End_Module] - -# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - - - - -# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -# Set STIF logging overwrite parameters for Logger. -# Hardware and emulator environment logging path and styles can -# be configured from here to overwrite the Logger's implemented values. -# -# Settings description: -# - Indicates option for creation log directory/directories. If log directory/directories -# is/are not created by user they will make by software. -# + YES, Create log directory/directories if not allready exist. -# + NO, Log directory/directories not created. Only created one is used. -# -# - Overwrite emulator path setting. -# + Example: If 'EmulatorBasePath= C:\LOGS\TestFramework\' and in code is defined -# Logger's path 'D:\\LOGS\\Module\\' with those definition the path -# will be 'C:\LOGS\TestFramework\LOGS\Module\' -# -# - Overwrite emulator's logging format. -# + TXT, Log file(s) will be txt type(s), for example 'Module.txt'. -# + HTML, Log file(s) will be html type(s), for example 'Module.html'. -# -# - Overwrited emulator logging output source. -# + FILE, Logging to file(s). -# + RDEBUG, Logging to using rdebug(s). -# -# - Overwrite hardware path setting (Same description as above in emulator path). -# - Overwrite hardware's logging format(Same description as above in emulator format). -# - Overwrite hardware's logging output source(Same description as above in emulator output). -# -# - File Creation Mode indicates file overwriting if file exist. -# + OVERWRITE, Overwrites if file(s) exist. -# + APPEND, Continue logging after the old logging information if file(s) exist. -# -# - Will thread id include to the log filename. -# + YES, Thread id to log file(s) name, Example filename 'Module_b9.txt'. -# + NO, No thread id to log file(s), Example filename 'Module.txt'. -# -# - Will time stamps include the to log file. -# + YES, Time stamp added to each line in log file(s). Time stamp is -# for example'12.Nov.2003 115958 LOGGING INFO' -# + NO, No time stamp(s). -# -# - Will line breaks include to the log file. -# + YES, Each logging event includes line break and next log event is in own line. -# + NO, No line break(s). -# -# - Will event ranking include to the log file. -# + YES, Event ranking number added to each line in log file(s). Ranking number -# depends on environment's tics, for example(includes time stamp also) -# '012 12.Nov.2003 115958 LOGGING INFO' -# + NO, No event ranking. -# -# - Will write log file in unicode format. -# + YES, Log file will be written in unicode format -# + NO, Log will be written as normal, not unicode, file. -# - -[Logger_Defaults] - -#NOTE: If you want to set Logger using next setting(s) remove comment(s)'#' -#NOTE: TestEngine and TestServer logging settings cannot change here - -#CreateLogDirectories= YES # Possible values: YES or NO - -#EmulatorBasePath= C:\LOGS\TestFramework\ -#EmulatorFormat= HTML # Possible values: TXT or HTML -#EmulatorOutput= FILE # Possible values: FILE or RDEBUG - -#HardwareBasePath= D:\LOGS\TestFramework\ -#HardwareFormat= HTML # Possible values: TXT or HTML -#HardwareOutput= FILE # Possible values: FILE or RDEBUG - -#FileCreationMode= OVERWRITE # Possible values: OVERWRITE or APPEND - -#ThreadIdToLogFile= YES # Possible values: YES or NO -#WithTimeStamp= YES # Possible values: YES or NO -#WithLineBreak= YES # Possible values: YES or NO -#WithEventRanking= YES # Possible values: YES or NO - -#FileUnicode= YES # Possible values: YES or NO -#AddTestCaseTitle= YES # Possible values: YES or NO -[End_Logger_Defaults] -# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - - - -# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -# Set filters to be used by ConsoleUI. -# If you want to use filter with ConsoleUI, simply remove comments -# from section below and provide valid filter entries. -# Each filter line has to start with "filter= " keyword. -# Filter can contain special wildcard characters: -# * which stands for none or any literal; -# ? which stands for single character. -# Filters are not case-sensitive. - -#[Filters] -#filter= *math* -#filter= *radio* -#[End_Filters] -# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - -# End of file diff -r f72a12da539e -r 5315654608de widgetmanager/tsrc/wmunittest/data/wmlogo/logo.jpg Binary file widgetmanager/tsrc/wmunittest/data/wmlogo/logo.jpg has changed diff -r f72a12da539e -r 5315654608de widgetmanager/tsrc/wmunittest/data/wmlogo/logo.mif Binary file widgetmanager/tsrc/wmunittest/data/wmlogo/logo.mif has changed diff -r f72a12da539e -r 5315654608de widgetmanager/tsrc/wmunittest/data/wmlogo/logo.png Binary file widgetmanager/tsrc/wmunittest/data/wmlogo/logo.png has changed diff -r f72a12da539e -r 5315654608de widgetmanager/tsrc/wmunittest/data/wmlogo/logo.svg --- a/widgetmanager/tsrc/wmunittest/data/wmlogo/logo.svg Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,72 +0,0 @@ - - - - - - - - - - - image/svg+xml - - - - - - - - diff -r f72a12da539e -r 5315654608de widgetmanager/tsrc/wmunittest/data/wmlogo/logocorrupt.jpg --- a/widgetmanager/tsrc/wmunittest/data/wmlogo/logocorrupt.jpg Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,13 +0,0 @@ - JFIF  ` ` 6Exif II*     & JZP `N:ym C%0A -~5;ܬz9բs7(dU =]_.%P 93̧_dPh -l8,2> W9>Mɮ\te ?~jATۍz;桹 YoI, fI]Q,X -)\{S幭*5*| i l #^ʮYC،׍8o@$_ױ>RzY|Tr>)-k$ v~o@GGlnU^O^`l1qsֱ5MrO -S@eViCn󥋩 -ſu9RA b0n{Jʲ Z(W:t(NLW7Q0/͏*ϛZe{}IBi- r ?L~5 Rrwf$(0QE s߄b9#Q{-%[HKv 8?νBj|_RI'/=VCw{c@S{yȺ cosH8o z eˮԔVVrlF-D#׃^TMzO0Bס3WڇNi=_n@m~׿oq3טCiZu4t-)HLKLL R2Pa@LtqTLYYBi5z!#9 }>rs>9=/dd~n^'>ǁﷺI e 06Ecg@[ndqu 9<1w>'l7AO;P ځj>/oߤ1E?ꗁ>fG. [[RS YT]Vá7d⠶"Z-&'hH(|jh~@@EٟM;|o֤O"I,j  "A*7-b$-D+>9.|?~N/i ^_(56}&x %菴l1_~+\}vj4TVVŕ]=7xJhАRVTFĵۛ::;;[:n[OЌA`  śE -@I[I59]<{k7aGddҸ/[6L,3&g3PM{lڭG7ylԼ+,vw oE?-tk!K,q.x_.3܂;LSsj2O`]'݊}VZ ]07o`R7V2b☳W]Q]x7R .r-wgϞ㗽x$]\ZX.955qix0d윙K|=ß=rx1C'#ɓ켜?!G{{Gʥw;0u} -8> [Qb n0Ti_ WsMPhp>Rr+ZdL-ĕkdVZq2j%]8zEeÖX;lЕ.CW: _:b瘥N\쬰NS縬Ԃ>?%-FIZ+N} ́-; {c   #cr4KZMۿik ~ -/!86?)89ieHleEyꚚ⒲¼‚}<}"+I+T[y>vޱ[go`wXSP|=[cƮawjjڡ5vE=M+ -5]+ZsgƎpMZ?]+XsG3§kh=mtm\oƎKu_x>(3$*<:&/0"(_"&z^3<$k֭eU&mmrs S4L{+=9~,p z?=iQ -}?j+?~0xs$<29Oy0l3 d7ϴ#1N5t/ϸ -IPyZIo'lZ{AIZ*Ko^pymO_|sovg8sƹ7޾uSn҅WN\vҵ3_8K\xx܃o!&pڹ7.]uԅӧ.]tmKg/a&laz9D!Y1H" lq}O=5E7$$T&'9 16x%{[{p2EĘ/, _0D -1 p/ro쀈WObc0a8 @ ~ءݫw K -꧿~y - |.(b0t$#3%NvP{Nc#]sc]K]Vv@I?}86s28h Hc8yK&sRəga@7FFnL$HgT3HvcbGiRC{jon!>-kua7*q*WQET-YߥW!JRiwf8A +'5:5 C瀀R?׉*@8KZrA#^2Z8X/*Ē12(B@]~[k"ƋFl2SB {L)d.^JNա"^I3 PM!əG1++O RC09 -> (o-Jf )Ɣ/<,~%@5j269(O@S0*|[҂9@LTnPNjU=M*̀ )viOi}`O9?'h[{ fn}`\2;J'Gg| &4r\49M%94׈|+"ȿ5#gDIK:Q!+מ93}LvgHɸ4'S-_4@^AS\&$8\)se @#~Wd,EZ t~Yz_S\f=Y"΀LԢgr $7)oј5`҂i?6?N]? &XCWo{H SV蟴p 70Š(~] 2٠1 %Z" U?zq*#i?檤zHscbVVLڏ3"KСC9tA/a#L a3fLOtAopG͊CgTQԂC%m}@?D=&4kbR=Ƈ=@TdYt -bU 6+֓H8u%cK@*/ -9 ,Q%8x_IB/+ i`lH| ߒz(T%߼IZhbda1HfKi{G1?ЕGF2Äli -b@o~cI1WMqV1< t9SOG`7$T}i(w)JjPsʲ1}>5"^Ғ% `#ET -5KZ꽂LcL .QtESsV$o!ׂQovϼ\K@ -X<*uXdbwi O=ƤߤSS1x:ȈZ$0@8t"E2Ċ3qR([Xjl'I]$ u*{v~h/UH\> AV0VPapdi&mZ,B  -sĀAD~uWPO[@ηjϯuU;|~ͻ7vhYT. -kLc!Zȇ *8 AEwSS\:?[]_o/_}~ͻ; -m,( xmZu*TH 0Cu$fH@~Su 0@]G -@uOW}vh|:6@@d@ *cx -- Q񙊼k1>~U}a{_-9}~A#@߷/ԧHZrS+%ЂpDiЍ)K3Їh#3|=]z'oח'4@ۿTwQ!A i{pHK Xhl6@s][@k;;`:_>&84*ta ^g - - - rdf:about=""> - image/svg+xml - - - - - - id="image2462" - height="18.19879" - width="31.139833" - sodipodi:absref="Y:\HS_Domain\homescreen\idlehomescreen\data\qhd_tch\shortcut2_2001f484\gfx\shortcut2logo.png" - xlink:href="Y:\HS_Domain\homescreen\idlehomescreen\data\qhd_tch\shortcut2_2001f484\gfx\shortcut2logo.png" - transform="matrix(1,0,2.5955691e-2,0.9996631,0,0)" /> - - diff -r f72a12da539e -r 5315654608de widgetmanager/tsrc/wmunittest/data/wmlogo/test.wgz Binary file widgetmanager/tsrc/wmunittest/data/wmlogo/test.wgz has changed diff -r f72a12da539e -r 5315654608de widgetmanager/tsrc/wmunittest/eabi/wmunittestu.def --- a/widgetmanager/tsrc/wmunittest/eabi/wmunittestu.def Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3 +0,0 @@ -EXPORTS - _Z9LibEntryLR13CTestModuleIf @ 1 NONAME - diff -r f72a12da539e -r 5315654608de widgetmanager/tsrc/wmunittest/group/Create_sisx.bat --- a/widgetmanager/tsrc/wmunittest/group/Create_sisx.bat Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,19 +0,0 @@ -rem -rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -rem All rights reserved. -rem This component and the accompanying materials are made available -rem under the terms of "Eclipse Public License v1.0" -rem which accompanies this distribution, and is available -rem at the URL "http://www.eclipse.org/legal/epl-v10.html". -rem -rem Initial Contributors: -rem Nokia Corporation - initial contribution. -rem -rem Contributors: -rem -rem Description: -rem - -rem Create wm sis&sisx files -makesis wmunittest.pkg -signsis wmunittest.SIS wmunittest.SISX Nokia_RnDCert_02.der Nokia_RnDCert_02.key diff -r f72a12da539e -r 5315654608de widgetmanager/tsrc/wmunittest/group/Nokia_RnDCert_02.der Binary file widgetmanager/tsrc/wmunittest/group/Nokia_RnDCert_02.der has changed diff -r f72a12da539e -r 5315654608de widgetmanager/tsrc/wmunittest/group/Nokia_RnDCert_02.key --- a/widgetmanager/tsrc/wmunittest/group/Nokia_RnDCert_02.key Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,15 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIICXQIBAAKBgQC/TDP7KKIaf5+uW4OD2iVZuUMC2a+SeQTjf6srlKcOm+CpPNXn -uLNm/8fdEnyOIuRXPRKmqhs1n0JkxEGHynELWMTuKXbQx9SRAGUXzyneGn+IJNnO -vOKHWgKCouX2hfI8rtkdqJpqmO460gGsMgw+lsbeyWyW9lnfLxq+ZC7sqQIDAQAB -AoGBALmUWZE8GBaQ3P4u9WUCSd3DJkkrmXIFSULSZeH/chlwCwDjbbhArHothVzo -REE3hEFFlERvHbplZ+mNouzy7boduvgUzbksGrbGMLJ2qO1GzWWVwV+GzOWKd3ss -/98Gwoy5R8pjnkqUE2wP1iJFw0FjvUTKcYv/z6t3LLJ0CsoBAkEA+c7ixvsviQ3J -s0INytCKU2bf8fqFQJi1VI82ukxNsujGTQ9upVSjuvqPvWyDvvTdrUBHqO+3qPut -sEh01Q8aiQJBAMQKDJPVRu4ud3mwUfEavzL5EjqwG1k9VCNGYsT4FwtrHcxu1oP/ -pk6M3rIZukqomoEEnHWPMwhrK3fhBqi0OSECQQDr40VXege4FnH5OI2Hj4afHMyp -VdQQXGMWFyopnzXblFz0lXb43cTCIiorR9XcMqNFHybLypkWE5o+lRzlt55pAkBQ -P/zeF5Sts//cpL0mgdh7OVKpC6ZmZaCnwAx2rUhhuDu+kDDoYCLoTOps5fNI1LRK -1GRoC3LMo3Jr5IYhUYWBAkBpCpN6k4JU/mszq98EojHerQNxk8sPqvQKUzTutohT -1gLX9yepGayB/TtT2EEJDkWOlnTy/dvN6W3vzbJYz97x ------END RSA PRIVATE KEY----- diff -r f72a12da539e -r 5315654608de widgetmanager/tsrc/wmunittest/group/bld.inf --- a/widgetmanager/tsrc/wmunittest/group/bld.inf Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* Widget manager unit tests -*/ - -PRJ_PLATFORMS -DEFAULT - -PRJ_TESTEXPORTS -// test case configuration -../conf/wmunittest.bat /epoc32/winscw/c/wmunittest.bat -../conf/wmunittest.ini /epoc32/winscw/c/testframework/testframework.ini -../conf/ui_wmunittest.cfg /epoc32/winscw/c/testframework/ui_wmunittest.cfg -// test data -../data/wmlogo/logo.jpg /epoc32/winscw/c/testframework/wmunittest/wmlogo/logo.jpg -../data/wmlogo/logo.mif /epoc32/winscw/c/testframework/wmunittest/wmlogo/logo.mif -../data/wmlogo/logo.png /epoc32/winscw/c/testframework/wmunittest/wmlogo/logo.png -../data/wmlogo/logo.svg /epoc32/winscw/c/testframework/wmunittest/wmlogo/logo.svg -../data/wmlogo/logocorrupt.jpg /epoc32/winscw/c/testframework/wmunittest/wmlogo/logocorrupt.jpg -../data/wmlogo/logocorrupt.png /epoc32/winscw/c/testframework/wmunittest/wmlogo/logocorrupt.png -../data/wmlogo/logocorrupt.svg /epoc32/winscw/c/testframework/wmunittest/wmlogo/logocorrupt.svg -../data/wmlogo/test.wgz /epoc32/winscw/c/testframework/wmunittest/wmlogo/test.wgz - -PRJ_TESTMMPFILES -wmunittest.mmp - -// End of File diff -r f72a12da539e -r 5315654608de widgetmanager/tsrc/wmunittest/group/wmunittest.mmp --- a/widgetmanager/tsrc/wmunittest/group/wmunittest.mmp Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,104 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: MMP file for STIF Test Framework's TestScripter -* testclass test module. -* -*/ - -#include -#include -#include - -TARGET wmunittest.dll -TARGETTYPE dll -UID 0x1000008D 0x101FB3E3 - -CAPABILITY ALL -TCB -VENDORID VID_DEFAULT -SECUREID 0x101FB3E3 - -DEFFILE wmunittest.def - -USERINCLUDE ../inc -USERINCLUDE ../../../inc - -APP_LAYER_SYSTEMINCLUDE -SYSTEMINCLUDE /epoc32/include/libc -SYSTEMINCLUDE /epoc32/include/ecom - -SOURCEPATH ../../../src -SOURCE wmplugin.cpp -SOURCE wmresourceloader.cpp -SOURCE wmmaincontainer.cpp -SOURCE wmmaincontainerview.cpp -SOURCE wmwidgetdata.cpp -SOURCE wmlistbox.cpp -SOURCE wmimageconverter.cpp -SOURCE wmiconfileprovider.cpp -SOURCE wmpersistentwidgetorder.cpp -SOURCE wmeffectmanager.cpp -SOURCE wmdetailsdlg.cpp -SOURCE wmwidgetloaderao.cpp - -SOURCEPATH ../src -SOURCE wmunittest.cpp -SOURCE wmunittest_all.cpp -SOURCE wmunittest_plugin.cpp -SOURCE wmunittest_sortorder.cpp -SOURCE wmunittest_converter.cpp - -// same as in widgetmanager.mmp -LIBRARY euser.lib -LIBRARY cone.lib -LIBRARY avkon.lib -LIBRARY eikcore.lib -LIBRARY estor.lib -LIBRARY eikcoctl.lib -LIBRARY eikctl.lib -LIBRARY eikdlg.lib -LIBRARY efsrv.lib // RFs -LIBRARY bafl.lib // BaflUtils -LIBRARY apgrfx.lib // RApaLsSession -LIBRARY commonengine.lib // StringLoader -LIBRARY aknicon.lib // AknIconUtility -LIBRARY imageconversion.lib // CImageDecoder -LIBRARY bitmaptransforms.lib // CBitmapScaler -LIBRARY fbscli.lib // CFbsBitmap -LIBRARY gdi.lib // CFont -LIBRARY egul.lib // TextUtils -LIBRARY ecom.lib // ECom fw -LIBRARY aknskins.lib // AknsDrawUtils -LIBRARY aknskinsrv.lib // AknsDrawUtils -LIBRARY aknswallpaperutils.lib // AknsDrawUtils -LIBRARY hscontentcontrol.lib // CHsContentControlUi -LIBRARY apparc.lib // CApaCommandLine -LIBRARY aknlayout.lib // avkon layout -LIBRARY aknlayout2scalable.lib // scalable avkon layout -LIBRARY swinstcli.lib // widget uninstall -LIBRARY hscontentinfo.lib // CHsContentInfo -LIBRARY platformenv.lib // DriveInfo::GetDefaultDrive -LIBRARY svgengine.lib // CSvgEngineInterfaceImpl -LIBRARY gfxtrans.lib // effect manager -LIBRARY ws32.lib //WindowSession -LIBRARY widgetregistryclient.lib // WidgetRegistryClient -LIBRARY hlplch.lib // HlpLauncher -LIBRARY sysutil.lib // diskspace -LIBRARY featmgr.lib // FeatureManager -LIBRARY etext.lib - - -// libraries needed by the test framework -LIBRARY stiftestinterface.lib - -// End of File diff -r f72a12da539e -r 5315654608de widgetmanager/tsrc/wmunittest/group/wmunittest.pkg --- a/widgetmanager/tsrc/wmunittest/group/wmunittest.pkg Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,51 +0,0 @@ -; -; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -; All rights reserved. -; This component and the accompanying materials are made available -; under the terms of "Eclipse Public License v1.0" -; which accompanies this distribution, and is available -; at the URL "http://www.eclipse.org/legal/epl-v10.html". -; -; Initial Contributors: -; Nokia Corporation - initial contribution. -; -; Contributors: -; -; Description: -; -; Installation file for STIF -; - -; Languages -&EN - -; Provide value for uid -#{"STIF"},(0x101FB3E3),1,1,0,TYPE=SA - -; Series60 product id for S60 3.0 -[0x101F7961], 0, 0, 0, {"Series60ProductID"} - -; Localised Vendor name -%{"Nokia"} - -; Unique Vendor name -:"Nokia" - - -; Install files - -"\epoc32\release\armv5\udeb\wmunittest.dll" - "!:\sys\bin\wmunittest.dll" - -"..\conf\wmunittest.bat" - "!:\wmunittest.bat" -"..\conf\wmunittest.ini" - "!:\testframework\testframework2.ini" -"..\conf\ui_wmunittest.cfg" - "!:\testframework\ui_wmunittest.cfg" - -"..\data\wmlogo\logo.jpg" - "!:\testframework\wmunittest\wmlogo\logo.jpg" -"..\data\wmlogo\logo.mif" - "!:\testframework\wmunittest\wmlogo\logo.mif" -"..\data\wmlogo\logo.png" - "!:\testframework\wmunittest\wmlogo\logo.png" -"..\data\wmlogo\logo.svg" - "!:\testframework\wmunittest\wmlogo\logo.svg" -"..\data\wmlogo\logocorrupt.jpg" - "!:\testframework\wmunittest\wmlogo\logocorrupt.jpg" -"..\data\wmlogo\logocorrupt.png" - "!:\testframework\wmunittest\wmlogo\logocorrupt.png" -"..\data\wmlogo\logocorrupt.svg" - "!:\testframework\wmunittest\wmlogo\logocorrupt.svg" -"..\data\wmlogo\test.wgz" - "!:\testframework\wmunittest\wmlogo\test.wgz" - diff -r f72a12da539e -r 5315654608de widgetmanager/tsrc/wmunittest/inc/wmunittest.h --- a/widgetmanager/tsrc/wmunittest/inc/wmunittest.h Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,205 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: STIF testclass declaration -* -*/ - -#ifndef WMUNITTEST_H -#define WMUNITTEST_H - -// INCLUDES -#include -#include -#include -#include -#include // RFs - -#include "wmimageconverter.h" // MConverterObserver -#include - -// MACROS -#define TEST_CLASS_VERSION_MAJOR 0 -#define TEST_CLASS_VERSION_MINOR 0 -#define TEST_CLASS_VERSION_BUILD 0 - -// MACROS FOR THE TEST CASES -#define _LOG(a) iLog->Log(_L(a)) -#define _RETURN(a, b) iLog->Log(_L("\treturn: %d"),b); \ - iLog->Log(_L(a)); \ - return b; \ - -#define _CLEANUPCHECK_BEGIN \ - CBase* __check = new (ELeave) CBase(); \ - CleanupStack::PushL( __check ); - -#define _CLEANUPCHECK_END \ - CleanupStack::PopAndDestroy( __check ); - - -// Logging path & file -_LIT( KWmUnitTestLogPath, "\\logs\\testframework\\wmunittest\\" ); -_LIT( KWmUnitTestLogFile, "wmunittest.txt" ); - -// FORWARD DECLARATIONS -class CWmPlugin; -class CWmPersistentWidgetOrder; -class CWmImageConverter; -class CHsContentInfo; -class CHsContentInfoArray; -class RWidgetDataValues; - - -// CLASS DECLARATION -/** -* test class for STIF Test Framework TestScripter. -*/ -NONSHARABLE_CLASS(CWmUnitTest) : public CScriptBase, - public MConverterObserver, - public MHsContentController - { - public: // Constructors and destructor - /** static constructor */ - static CWmUnitTest* NewL( CTestModuleIf& aTestModuleIf ); - /** desctructor */ - ~CWmUnitTest(); - - private: // private stuff - /** default constructor */ - CWmUnitTest( CTestModuleIf& aTestModuleIf ); - /** 2nd phase constructor */ - void ConstructL(); - /** version check */ - void SendTestClassVersion(); - - public: // Test run API - - /** From CScriptBase Runs a script line. */ - virtual TInt RunMethodL( CStifItemParser& aItem ); - - public: // from MConverterObserver - - virtual void NotifyCompletion( TInt aError ); - - public: // from MHsContentController - - TInt WidgetListL( CHsContentInfoArray& aArray ); - TInt ViewListL( CHsContentInfoArray& aArray ); - TInt AppListL( CHsContentInfoArray& aArray ); - TInt AddWidgetL( CHsContentInfo& aInfo ); - TInt RemoveWidgetL( CHsContentInfo& aInfo ); - TInt AddViewL( CHsContentInfo& aInfo ); - TInt RemoveViewL( CHsContentInfo& aInfo ); - TInt ActivateViewL( CHsContentInfo& aInfo ); - TInt ActivateAppL( CHsContentInfo& aInfo ); - - private: // Test methods - - // GENERAL - - // sets heap reference value - TInt HeapSetL( CStifItemParser& aItem ); - // Log heap usage to file - TInt LogHeapL( CStifItemParser& aItem ); - // compares heap against reference, logs warning if no match - TInt HeapCheckL( CStifItemParser& aItem ); - // sets the mass of data for next test case - TInt SetMassL( CStifItemParser& aItem ); - // install and uninstall wrt widget for tests - TInt InstallWrtWidgetL( CStifItemParser& aItem ); - TInt UninstallWrtWidgetL( CStifItemParser& aItem ); - // test error note - TInt ErrorPopupL( CStifItemParser& aItem ); - - // TESTING THE PLUGIN - - // creates the WM plugin - TInt PluginCreateL( CStifItemParser& aItem ); - // deletes WM plugin - TInt PluginDeleteL( CStifItemParser& aItem ); - // calls Activate method for WM plugin - TInt PluginActivateL( CStifItemParser& aItem ); - // calls Deactivate method for WM plugin - TInt PluginDeactivateL( CStifItemParser& aItem ); - // calls NotifyWidgetListChanged method for WM plugin - TInt PluginWidgetsChangedL( CStifItemParser& aItem ); - - // TESTING THE WIDGET SORTING AND ORDER - - // creates WM persistent widget order object - TInt WidgetOrderCreateL( CStifItemParser& aItem ); - // deletes WM persistent widget order object - TInt WidgetOrderDeleteL( CStifItemParser& aItem ); - // tests WM persistent widget order's LOAD method - TInt WidgetOrderLoadL( CStifItemParser& aItem ); - // tests WM persistent widget order's SAVE method - TInt WidgetOrderSaveL( CStifItemParser& aItem ); - // tests WM persistent widget order's SAVE method - TInt WidgetOrderCheckIsEmptyL( CStifItemParser& aItem ); - // calls WM persistent widget order's API methods - TInt WidgetOrderUseL( CStifItemParser& aItem ); - - // TESTING IMAGE CONVERSION ROUTINES - - // creates image converter object - TInt ImageConverterCreateL( CStifItemParser& aItem ); - // deletes image converter object - TInt ImageConverterDeleteL( CStifItemParser& aItem ); - // calls image converter's main conversion method - TInt ImageConverterConvertL( CStifItemParser& aItem ); - // checks image converter callback and checks its result - TInt ImageConverterWaitResultL( CStifItemParser& aItem ); - // gets and checks the conversion method from image converter - TInt ImageConverterConversionMethodL( CStifItemParser& aItem ); - // cancel ongoing convert - TInt CancelConvertL( CStifItemParser& aItem ); - - - private: // members used in testing - - void CreateContentInfoArrayL( CHsContentInfoArray& aArray, TInt aCount ); - void CreateWidgetDataArrayL( RWidgetDataValues& aArray, TInt aCount ); - - // file server - RFs iFs; - - // the WM plugin instance - CWmPlugin* iWmPlugin; - - // the WM persistent widget order instance - CWmPersistentWidgetOrder* iWmWidgetOrder; - - // the Image converter instance - CWmImageConverter* iImageConverter; - - // amount of heap allocated in HeapSet - TInt iHeapSize; - - // image converter response ready - TBool iConversionReady; - - // image converter result - TInt iConversionError; - - // switch for active schedular wait - TBool iWaiting; - - // multipurpose test data count - TInt iMass; - - }; - - -#endif // WMUNITTEST_H - -// End of File diff -r f72a12da539e -r 5315654608de widgetmanager/tsrc/wmunittest/src/wmunittest.cpp --- a/widgetmanager/tsrc/wmunittest/src/wmunittest.cpp Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,111 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: This file contains testclass implementation. -* -*/ - -// INCLUDE FILES -#include -#include - -#include "wmunittest.h" - - -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// CWmUnitTest::CWmUnitTest -// ----------------------------------------------------------------------------- -// -CWmUnitTest::CWmUnitTest( - CTestModuleIf& aTestModuleIf ): - CScriptBase( aTestModuleIf ) - { - } - -// ----------------------------------------------------------------------------- -// CWmUnitTest::ConstructL -// ----------------------------------------------------------------------------- -// -void CWmUnitTest::ConstructL() - { - iLog = CStifLogger::NewL( KWmUnitTestLogPath, - KWmUnitTestLogFile, - CStifLogger::ETxt, - CStifLogger::EFile, - EFalse ); - - SendTestClassVersion(); - - User::LeaveIfError( iFs.Connect() ); - } - -// ----------------------------------------------------------------------------- -// CWmUnitTest::NewL -// ----------------------------------------------------------------------------- -// -CWmUnitTest* CWmUnitTest::NewL( - CTestModuleIf& aTestModuleIf ) - { - CWmUnitTest* self = new (ELeave) CWmUnitTest( aTestModuleIf ); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - return self; - } - -// ----------------------------------------------------------------------------- -// CWmUnitTest::~CWmUnitTest -// ----------------------------------------------------------------------------- -// -CWmUnitTest::~CWmUnitTest() - { - // Delete logger - delete iLog; - // close file server - iFs.Close(); - } - -//----------------------------------------------------------------------------- -// CWmDeploymentClientTest::SendTestClassVersion -//----------------------------------------------------------------------------- -// -void CWmUnitTest::SendTestClassVersion() - { - TVersion moduleVersion; - moduleVersion.iMajor = TEST_CLASS_VERSION_MAJOR; - moduleVersion.iMinor = TEST_CLASS_VERSION_MINOR; - moduleVersion.iBuild = TEST_CLASS_VERSION_BUILD; - - TFileName moduleName; - moduleName = _L("wmunittest.dll"); - - TBool newVersionOfMethod = ETrue; - TestModuleIf().SendTestModuleVersion(moduleVersion, moduleName, newVersionOfMethod); - } - -// ========================== OTHER EXPORTED FUNCTIONS ========================= - -// ----------------------------------------------------------------------------- -// LibEntryL() - polymorphic Dll entry point. -// ----------------------------------------------------------------------------- -// -EXPORT_C CScriptBase* LibEntryL( - CTestModuleIf& aTestModuleIf ) // Backpointer to STIF Test Framework - { - return ( CScriptBase* ) CWmUnitTest::NewL( aTestModuleIf ); - } - - -// End of File diff -r f72a12da539e -r 5315654608de widgetmanager/tsrc/wmunittest/src/wmunittest_all.cpp --- a/widgetmanager/tsrc/wmunittest/src/wmunittest_all.cpp Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,249 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: list of all test blocks -* -*/ - -//INCLUDE FILES -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "wmunittest.h" -#include "wmresourceloader.h" - -// CONSTANTS -_LIT( KHexPrefix, "0x" ); -_LIT8( KWrtMime, "application/x-nokia-widget"); - -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// CWmUnitTest::RunMethodL -// ----------------------------------------------------------------------------- -// -TInt CWmUnitTest::RunMethodL( - CStifItemParser& aItem ) - { - static TStifFunctionInfo const KFunctions[] = - { - // general test blocks - ENTRY( "HeapSet", CWmUnitTest::HeapSetL ), - ENTRY( "LogHeap", CWmUnitTest::LogHeapL ), - ENTRY( "HeapCheck", CWmUnitTest::HeapCheckL ), - ENTRY( "SetMass", CWmUnitTest::SetMassL ), - ENTRY( "ErrorPopup", CWmUnitTest::ErrorPopupL ), - - // install/uninstall wrt widget for test - ENTRY( "InstallWrtWidget", CWmUnitTest::InstallWrtWidgetL ), - ENTRY( "UninstallWrtWidget", CWmUnitTest::UninstallWrtWidgetL ), - - // test blocks for the plugin - ENTRY( "PluginCreate", CWmUnitTest::PluginCreateL ), - ENTRY( "PluginDelete", CWmUnitTest::PluginDeleteL ), - ENTRY( "PluginActivate", CWmUnitTest::PluginActivateL ), - ENTRY( "PluginDeactivate", CWmUnitTest::PluginDeactivateL ), - ENTRY( "PluginWidgetsChanged", CWmUnitTest::PluginWidgetsChangedL ), - - // test blocks for the persistent widget order class - ENTRY( "WidgetOrderCreate", CWmUnitTest::WidgetOrderCreateL ), - ENTRY( "WidgetOrderDelete", CWmUnitTest::WidgetOrderDeleteL ), - ENTRY( "WidgetOrderLoad", CWmUnitTest::WidgetOrderLoadL ), - ENTRY( "WidgetOrderSave", CWmUnitTest::WidgetOrderSaveL ), - ENTRY( "WidgetOrderCheckIsEmpty", CWmUnitTest::WidgetOrderCheckIsEmptyL ), - ENTRY( "WidgetOrderUse", CWmUnitTest::WidgetOrderUseL ), - - // test blocks for the image converter - ENTRY( "ImageConverterCreate", CWmUnitTest::ImageConverterCreateL ), - ENTRY( "ImageConverterDelete", CWmUnitTest::ImageConverterDeleteL ), - ENTRY( "ImageConverterConvert", CWmUnitTest::ImageConverterConvertL ), - ENTRY( "ImageConverterWaitResult", CWmUnitTest::ImageConverterWaitResultL ), - ENTRY( "ImageConverterConversionMethod", CWmUnitTest::ImageConverterConversionMethodL ), - ENTRY( "CancelConvert", CWmUnitTest::CancelConvertL ), - - }; - - const TInt count = sizeof( KFunctions ) / - sizeof( TStifFunctionInfo ); - - return RunInternalL( KFunctions, count, aItem ); - } - -// ----------------------------------------------------------------------------- -// CWmUnitTest::HeapSetL -// ----------------------------------------------------------------------------- -// -TInt CWmUnitTest::HeapSetL( CStifItemParser& /*aItem*/ ) - { - User::Heap().AllocSize( iHeapSize ); - _RETURN("HeapSetL End", KErrNone); - } - -// ----------------------------------------------------------------------------- -// CWmUnitTest::LogHeapL -// ----------------------------------------------------------------------------- -// -TInt CWmUnitTest::LogHeapL( CStifItemParser& aItem ) - { - TPtrC inputStr; - aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); - User::LeaveIfError( aItem.GetNextString( inputStr ) ); - - TInt size = 0; - User::Heap().AllocSize( size ); - iLog->Log( _L("Heap usage, %S: %d"), &inputStr, size ); - _RETURN("LogHeapL End", KErrNone); - } - -// ----------------------------------------------------------------------------- -// CWmUnitTest::HeapCheckL -// ----------------------------------------------------------------------------- -// -TInt CWmUnitTest::HeapCheckL( CStifItemParser& /*aItem*/ ) - { - TInt ret = KErrNone; - TInt heapSizeAtCheckpoint; - User::Heap().AllocSize( heapSizeAtCheckpoint ); - if ( iHeapSize != heapSizeAtCheckpoint ) - { - //ret = KErrTooBig; <-- not reliable - _LOG("Warning: potential memory leak detected!!!"); - } - _RETURN("HeapCheckL End", ret); - } - -// ----------------------------------------------------------------------------- -// CWmUnitTest::SetMassL -// ----------------------------------------------------------------------------- -// -TInt CWmUnitTest::SetMassL( CStifItemParser& aItem ) - { - aItem.GetNextInt( iMass ); - _RETURN("SetMassL End", KErrNone); - } - -// ----------------------------------------------------------------------------- -// CWmUnitTest::InstallWrtWidgetL -// ----------------------------------------------------------------------------- -// -TInt CWmUnitTest::InstallWrtWidgetL( CStifItemParser& aItem ) - { - TInt ret = KErrNone; - TPtrC inputStr; - aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); - User::LeaveIfError( aItem.GetNextString( inputStr ) ); - if ( inputStr.Length() == 0 ) User::Leave( KErrArgument ); - - // install widget - SwiUI::RSWInstSilentLauncher installer; - User::LeaveIfError( installer.Connect() ); - CleanupClosePushL( installer ); - - SwiUI::TInstallReqPckg installReqPckg; - SwiUI::TInstallOptions options; - TRequestStatus status = KRequestPending; - - options.iUpgrade = SwiUI::EPolicyAllowed; - options.iOptionalItems = SwiUI::EPolicyAllowed; - options.iOCSP = SwiUI::EPolicyAllowed; - options.iIgnoreOCSPWarnings = SwiUI::EPolicyAllowed; - options.iUntrusted = SwiUI::EPolicyAllowed; - options.iPackageInfo = SwiUI::EPolicyAllowed; - options.iCapabilities = SwiUI::EPolicyAllowed; - options.iKillApp = SwiUI::EPolicyAllowed; - options.iOverwrite = SwiUI::EPolicyAllowed; - options.iDownload = SwiUI::EPolicyAllowed; - options.iDrive = 'C'; - options.iLang = User::Language(); - options.iUsePhoneLang = ETrue; - options.iUpgradeData = SwiUI::EPolicyAllowed; - - SwiUI::TInstallOptionsPckg optionsPkg( options ); - installer.SilentInstall( status , inputStr, optionsPkg ); - User::WaitForRequest( status ); - ret = status.Int(); - CleanupStack::PopAndDestroy( &installer ); - _RETURN("InstallWrtWidgetL End", ret); - } - -// ----------------------------------------------------------------------------- -// CWmUnitTest::UninstallWrtWidgetL -// ----------------------------------------------------------------------------- -// -TInt CWmUnitTest::UninstallWrtWidgetL( CStifItemParser& aItem ) - { - TInt ret = KErrNone; - TPtrC inputStr; - aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); - User::LeaveIfError( aItem.GetNextString( inputStr ) ); - if ( inputStr.Length() == 0 ) User::Leave( KErrArgument ); - - TUid uid; - TLex lex( inputStr ); - lex.SkipSpaceAndMark(); - TPtrC mtoken = lex.MarkedToken(); - TInt pos = mtoken.FindF( KHexPrefix ); - if ( pos == 0 ) - { - TLex lex( mtoken.Mid( KHexPrefix().Length() ) ); - TUint id = 0; - ret = lex.Val( id, EHex ); - uid = TUid::Uid( (TInt)id ); - } - else - { - TInt id( 0 ); - ret = lex.Val( id ); - uid.iUid = id; - } - - if ( ret == KErrNone ) - { - // Uninstall widget - SwiUI::RSWInstSilentLauncher installer; - User::LeaveIfError( installer.Connect() ); - CleanupClosePushL( installer ); - - TRequestStatus status = KRequestPending; - SwiUI::TUninstallOptions optionsUninstall; - optionsUninstall.iBreakDependency = SwiUI::EPolicyAllowed; - optionsUninstall.iKillApp = SwiUI::EPolicyAllowed; - SwiUI::TUninstallOptionsPckg uninstallOptionsPkg( optionsUninstall ); - - installer.SilentUninstall( status, uid, uninstallOptionsPkg, KWrtMime ); - User::WaitForRequest( status ); - CleanupStack::PopAndDestroy( &installer ); - } - - _RETURN("UninstallWrtWidgetL End", ret); - } - -// ----------------------------------------------------------------------------- -// CWmUnitTest::ErrorPopup -// ----------------------------------------------------------------------------- -// -TInt CWmUnitTest::ErrorPopupL( CStifItemParser& /*aItem*/ ) - { - CWmResourceLoader* res = CWmResourceLoader::NewL( *CEikonEnv::Static() ); - res->ErrorPopup(KErrNone); - delete res; - _RETURN("ErrorPopupL End", KErrNone); - } -// End of File diff -r f72a12da539e -r 5315654608de widgetmanager/tsrc/wmunittest/src/wmunittest_converter.cpp --- a/widgetmanager/tsrc/wmunittest/src/wmunittest_converter.cpp Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,164 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: test blocks for CWmImageConverter -* -*/ - -//INCLUDE FILES -#include -#include -#include -#include -#include -#include -#include "wmunittest.h" -// components to test -#include "wmimageconverter.h" - - -// ----------------------------------------------------------------------------- -// CWmUnitTest::ImageConverterCreateL -// ----------------------------------------------------------------------------- -// -TInt CWmUnitTest::ImageConverterCreateL( CStifItemParser& /*aItem*/ ) - { - if ( iImageConverter != 0 ) User::Leave( KErrArgument ); - TInt ret = KErrNone; - _CLEANUPCHECK_BEGIN - iImageConverter = CWmImageConverter::NewL( this ); - _CLEANUPCHECK_END - _RETURN("ImageConverterCreateL End", ret); - } - -// ----------------------------------------------------------------------------- -// CWmUnitTest::ImageConverterDeleteL -// ----------------------------------------------------------------------------- -// -TInt CWmUnitTest::ImageConverterDeleteL( CStifItemParser& /*aItem*/ ) - { - if ( iImageConverter == 0 ) User::Leave( KErrArgument ); - TInt ret = KErrNone; - delete iImageConverter; - iImageConverter = 0; - _RETURN("ImageConverterDeleteL End", ret); - } - -// ----------------------------------------------------------------------------- -// CWmUnitTest::ImageConverterConvertL -// ----------------------------------------------------------------------------- -// -TInt CWmUnitTest::ImageConverterConvertL( CStifItemParser& aItem ) - { - if ( iImageConverter == 0 ) User::Leave( KErrArgument ); - TInt ret = KErrNone; - iConversionReady = EFalse; - TPtrC inputStr; - - aItem.SetParsingType( CStifItemParser::EQuoteStyleParsing ); - User::LeaveIfError( aItem.GetNextString( inputStr ) ); - if ( inputStr.Length() == 0 ) User::Leave( KErrArgument ); - - TRAPD( err, iImageConverter->HandleIconStringL( 40, 40, inputStr ) ); - if ( err != KErrNone ) - { - _LOG("ImageConverterConvertL:HandleIconStringL returns with leave"); - iConversionReady = ETrue; - iConversionError = err; - } - - _RETURN("ImageConverterConvertL End", ret ); - } - -// ----------------------------------------------------------------------------- -// CWmUnitTest::ImageConverterWaitResultL -// ----------------------------------------------------------------------------- -// -TInt CWmUnitTest::ImageConverterWaitResultL( CStifItemParser& aItem ) - { - if ( iImageConverter == 0 ) User::Leave( KErrArgument ); - TInt ret = KErrNone; - TInt expectedResult; - - User::LeaveIfError( aItem.GetNextInt( expectedResult ) ); - - iWaiting = EFalse; - if ( !iConversionReady ) - { - iWaiting = ETrue; - CActiveScheduler::Start(); - iWaiting = EFalse; - } - - // check conversion error - if ( expectedResult == KErrNone && iConversionError != KErrNone ) - { - _LOG("ImageConverterWaitResultL: expected ok, returns error"); - ret = iConversionError; - } - else if ( expectedResult != KErrNone && iConversionError == KErrNone ) - { - _LOG("ImageConverterWaitResultL: expected error, returns ok"); - ret = KErrGeneral; - } - - _RETURN("ImageConverterWaitResultL End", ret); - } - -// ----------------------------------------------------------------------------- -// CWmUnitTest::NotifyCompletion -// ----------------------------------------------------------------------------- -// -void CWmUnitTest::NotifyCompletion( TInt aError ) - { - if ( !iConversionReady ) - { - iConversionReady = ETrue; - iConversionError = aError; - if ( iWaiting ) - { - CActiveScheduler::Stop(); - } - } - } - -// ----------------------------------------------------------------------------- -// CWmUnitTest::ImageConverterConversionMethodL -// ----------------------------------------------------------------------------- -// -TInt CWmUnitTest::ImageConverterConversionMethodL( CStifItemParser& aItem ) - { - if ( iImageConverter == 0 ) User::Leave( KErrArgument ); - TInt ret = KErrNone; - TInt conversionMethod; - - User::LeaveIfError( aItem.GetNextInt( conversionMethod ) ); - - // check conversion method - if ( conversionMethod != iImageConverter->ConversionMethod() ) - ret = KErrGeneral; - - _RETURN("ImageConverterConversionMethodL End", ret); - } - -// ----------------------------------------------------------------------------- -// CWmUnitTest::CancelConvertL -// ----------------------------------------------------------------------------- -// -TInt CWmUnitTest::CancelConvertL( CStifItemParser& aItem ) - { - if ( iImageConverter == 0 ) User::Leave( KErrArgument ); - iImageConverter->Cancel(); - _RETURN("CancelConvertL End", KErrNone); - } -// End of File diff -r f72a12da539e -r 5315654608de widgetmanager/tsrc/wmunittest/src/wmunittest_plugin.cpp --- a/widgetmanager/tsrc/wmunittest/src/wmunittest_plugin.cpp Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,186 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: test blocks for CWmPlugin -* -*/ - -//INCLUDE FILES -#include -#include -#include -#include -#include -#include -#include "wmunittest.h" -// components to test -#include "wmplugin.h" -#include -#include - -// MACROS -#define _LOG(a) iLog->Log(_L(a)) -#define _RETURN(a, b) iLog->Log(_L("\treturn: %d"),b); \ - iLog->Log(_L(a)); \ - return b; \ - -#define _CLEANUPCHECK_BEGIN \ - CBase* __check = new (ELeave) CBase(); \ - CleanupStack::PushL( __check ); - -#define _CLEANUPCHECK_END \ - CleanupStack::PopAndDestroy( __check ); - -// ============================ MEMBER FUNCTIONS =============================== - - -// ----------------------------------------------------------------------------- -// CWmUnitTest::PluginCreateL -// ----------------------------------------------------------------------------- -// -TInt CWmUnitTest::PluginCreateL( CStifItemParser& /*aItem*/ ) - { - if ( iWmPlugin != 0 ) User::Leave( KErrArgument ); - TInt ret = KErrNone; - _CLEANUPCHECK_BEGIN - iWmPlugin = CWmPlugin::NewL(); - iWmPlugin->SetContentController( this ); - _CLEANUPCHECK_END - _RETURN("PluginCreateL End", ret); - } - -// ----------------------------------------------------------------------------- -// CWmUnitTest::PluginDeleteL -// ----------------------------------------------------------------------------- -// -TInt CWmUnitTest::PluginDeleteL( CStifItemParser& /*aItem*/ ) - { - if ( iWmPlugin == 0 ) User::Leave( KErrArgument ); - TInt ret = KErrNone; - delete iWmPlugin; - iWmPlugin = 0; - _RETURN("PluginDeleteL End", ret); - } - -// ----------------------------------------------------------------------------- -// CWmUnitTest::PluginActivateL -// ----------------------------------------------------------------------------- -// -TInt CWmUnitTest::PluginActivateL( CStifItemParser& /*aItem*/ ) - { - if ( iWmPlugin == 0 ) User::Leave( KErrArgument ); - iWmPlugin->Activate(); - _RETURN("PluginActivateL End", KErrNone); - } - -// ----------------------------------------------------------------------------- -// CWmUnitTest::PluginDeactivateL -// ----------------------------------------------------------------------------- -// -TInt CWmUnitTest::PluginDeactivateL( CStifItemParser& /*aItem*/ ) - { - if ( iWmPlugin == 0 ) User::Leave( KErrArgument ); - iWmPlugin->Deactivate(); - _RETURN("PluginActivateL End", KErrNone); - } - -// ----------------------------------------------------------------------------- -// CWmUnitTest::PluginWidgetsChangedL -// ----------------------------------------------------------------------------- -// -TInt CWmUnitTest::PluginWidgetsChangedL( CStifItemParser& /*aItem*/ ) - { - if ( iWmPlugin == 0 ) User::Leave( KErrArgument ); - iWmPlugin->NotifyWidgetListChanged(); - _RETURN("PluginWidgetsChangedL End", KErrNone); - } - -// ============================================================================= -// Methods from MHsContentController -// ============================================================================= - -TInt CWmUnitTest::WidgetListL( CHsContentInfoArray& aArray ) - { - CreateContentInfoArrayL( aArray, iMass ); - return KErrNone; - } - -TInt CWmUnitTest::ViewListL( CHsContentInfoArray& /*aArray*/ ) - { - return KErrNone; - } - -TInt CWmUnitTest::AppListL( CHsContentInfoArray& /*aArray*/ ) - { - return KErrNone; - } - -TInt CWmUnitTest::AddWidgetL( CHsContentInfo& /*aInfo*/ ) - { - return KErrNone; - } - -TInt CWmUnitTest::RemoveWidgetL( CHsContentInfo& /*aInfo*/ ) - { - return KErrNone; - } - -TInt CWmUnitTest::AddViewL( CHsContentInfo& /*aInfo*/ ) - { - return KErrNone; - } - -TInt CWmUnitTest::RemoveViewL( CHsContentInfo& /*aInfo*/ ) - { - return KErrNone; - } - -TInt CWmUnitTest::ActivateViewL( CHsContentInfo& /*aInfo*/ ) - { - return KErrNone; - } - -TInt CWmUnitTest::ActivateAppL( CHsContentInfo& /*aInfo*/ ) - { - return KErrNone; - } - - - - -// ----------------------------------------------------------------------------- -// CWmUnitTest::CreateContentInfoArrayL -// ----------------------------------------------------------------------------- -// -void CWmUnitTest::CreateContentInfoArrayL( CHsContentInfoArray& aArray, TInt aCount ) - { - for( TInt i=0; i name; - name.Format( _L("Widget_%d"), i ); - info->SetNameL( name ); - TBuf8<20> id; - id.Num( i ); - info->SetUidL( id ); - info->SetTypeL( _L8("template") ); - info->SetIconPathL( _L("uid(0x2000DAD2)") ); - info->SetCanBeAdded( ETrue ); - info->SetDescriptionL(_L("Default plaa plaa plaa plaa plaa plaa plaa")); - - aArray.Array().AppendL( info ); - CleanupStack::Pop( info ); - } - } - -// End of File diff -r f72a12da539e -r 5315654608de widgetmanager/tsrc/wmunittest/src/wmunittest_sortorder.cpp --- a/widgetmanager/tsrc/wmunittest/src/wmunittest_sortorder.cpp Thu Dec 17 08:40:49 2009 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,176 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: test blocks for CWmPersistentWidgetorder -* -*/ - -//INCLUDE FILES -#include -#include -#include -#include -#include -#include -#include "wmunittest.h" -// components to test -#include "wmpersistentwidgetorder.h" -#include "wmwidgetdata.h" -#include -#include -#include // widgetreqistry - -// ============================ MEMBER FUNCTIONS =============================== - - -// ----------------------------------------------------------------------------- -// CWmUnitTest::WidgetOrderCreateL -// ----------------------------------------------------------------------------- -// -TInt CWmUnitTest::WidgetOrderCreateL( CStifItemParser& /*aItem*/ ) - { - if ( iWmWidgetOrder != 0 ) User::Leave( KErrArgument ); - TInt ret = KErrNone; - _CLEANUPCHECK_BEGIN - iWmWidgetOrder = CWmPersistentWidgetOrder::NewL( iFs ); - _CLEANUPCHECK_END - _RETURN("WidgetOrderCreateL End", ret); - } - -// ----------------------------------------------------------------------------- -// CWmUnitTest::WidgetOrderDeleteL -// ----------------------------------------------------------------------------- -// -TInt CWmUnitTest::WidgetOrderDeleteL( CStifItemParser& /*aItem*/ ) - { - if ( iWmWidgetOrder == 0 ) User::Leave( KErrArgument ); - TInt ret = KErrNone; - delete iWmWidgetOrder; - iWmWidgetOrder = 0; - _RETURN("WidgetOrderDeleteL End", ret); - } - -// ----------------------------------------------------------------------------- -// CWmUnitTest::WidgetOrderLoadL -// ----------------------------------------------------------------------------- -// -TInt CWmUnitTest::WidgetOrderLoadL( CStifItemParser& /*aItem*/ ) - { - if ( iWmWidgetOrder == 0 ) User::Leave( KErrArgument ); - TInt ret = KErrNone; - _CLEANUPCHECK_BEGIN - iWmWidgetOrder->LoadL(); - _CLEANUPCHECK_END - _RETURN("WidgetOrderLoadL End", ret); - } - - -// ----------------------------------------------------------------------------- -// CWmUnitTest::WidgetOrderSaveL -// ----------------------------------------------------------------------------- -// -TInt CWmUnitTest::WidgetOrderSaveL( CStifItemParser& /*aItem*/ ) - { - if ( iWmWidgetOrder == 0 ) User::Leave( KErrArgument ); - TInt ret = KErrNone; - - _CLEANUPCHECK_BEGIN - RWidgetDataValues array; - CleanupClosePushL( array ); - CreateWidgetDataArrayL( array, iMass ); - iWmWidgetOrder->StoreL( array ); - array.ResetAndDestroy(); - CleanupStack::Pop( &array ); - _CLEANUPCHECK_END - - _RETURN("WidgetOrderSaveL End", ret); - } - -// ----------------------------------------------------------------------------- -// CWmUnitTest::WidgetOrderCheckIsEmptyL -// ----------------------------------------------------------------------------- -// -TInt CWmUnitTest::WidgetOrderCheckIsEmptyL( CStifItemParser& aItem ) - { - if ( iWmWidgetOrder == 0 ) User::Leave( KErrArgument ); - TInt ret = KErrNone; - TInt expectedResult; - aItem.GetNextInt( expectedResult ); - - if ( iWmWidgetOrder->IsEmpty() && !expectedResult ) - ret = KErrGeneral; - if ( !iWmWidgetOrder->IsEmpty() && expectedResult ) - ret = KErrGeneral; - - _RETURN("WidgetOrderCheckIsEmptyL End", ret); - } - -// ----------------------------------------------------------------------------- -// CWmUnitTest::WidgetOrderUseL -// ----------------------------------------------------------------------------- -// -TInt CWmUnitTest::WidgetOrderUseL( CStifItemParser& /*aItem*/ ) - { - if ( iWmWidgetOrder == 0 ) User::Leave( KErrArgument ); - TInt ret = KErrNone; - - _CLEANUPCHECK_BEGIN - // test IndexOf - RWidgetDataValues array; - CreateWidgetDataArrayL( array, iMass ); - for( TInt i=0; iIndexOf( *array[i] ); - if ( index < KErrNotFound || index >= array.Count() ) - ret = KErrUnknown; // illegal index - } - array.ResetAndDestroy(); - _CLEANUPCHECK_END - - _RETURN("WidgetOrderUseL End", ret); - } - - -// ----------------------------------------------------------------------------- -// CWmUnitTest::CreateWidgetDataArrayL -// ----------------------------------------------------------------------------- -// -void CWmUnitTest::CreateWidgetDataArrayL( RWidgetDataValues& aArray, TInt aCount ) - { - // first create an array of content info classes - CHsContentInfoArray* contentArray = CHsContentInfoArray::NewL(); - CleanupStack::PushL( contentArray ); - CreateContentInfoArrayL( *contentArray, aCount ); - // connect to widget registry - RWidgetRegistryClientSession registryClient; - User::LeaveIfError( registryClient.Connect() ); - CleanupClosePushL( registryClient ); - - for( TInt i=0; iArray().Count(); ++i ) - { - CWmWidgetData* data = CWmWidgetData::NewL( - *contentArray->Array()[i], ®istryClient); - CleanupStack::PushL( data ); - aArray.AppendL( data ); - CleanupStack::Pop( data ); - delete contentArray->Array()[i]; - contentArray->Array()[i] = 0; - } - - registryClient.Disconnect(); - CleanupStack::PopAndDestroy( ®istryClient ); - CleanupStack::PopAndDestroy( contentArray ); - } - - -// End of File