# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1277123231 -10800 # Node ID d721605b30d0d0bebf750649d31e52252b1e98b4 # Parent 1b758917cafc00c8ac67c5f432e4c172ecaadfc6 Revision: 201023 Kit: 2010125 diff -r 1b758917cafc -r d721605b30d0 idlehomescreen/data/qhd_tch/templateview_20026f50/loc/templateview.loc --- a/idlehomescreen/data/qhd_tch/templateview_20026f50/loc/templateview.loc Wed Jun 09 09:29:04 2010 +0300 +++ b/idlehomescreen/data/qhd_tch/templateview_20026f50/loc/templateview.loc Mon Jun 21 15:27:11 2010 +0300 @@ -27,8 +27,8 @@ // r: TB9.2 #define qtn_msk_open "Open" -// d: Options -// l: control_pane_t1/opt7 +// d: Done +// l: nhd_control_pane_t2/opt7 // w: // r: TB9.2 #define text_softkey_done "Done" @@ -40,7 +40,7 @@ #define qtn_options_open "Open" // d: Back -// l: control_pane_t1/opt7 +// l: nhd_control_pane_t2/opt7 // w: // r: TB9.2 #define text_softkey_back "Back" @@ -76,13 +76,13 @@ #define qtn_hs_widget_catalog "Widget catalog" // d: Search -// l: control_pane_t1/opt7 +// l: nhd_control_pane_t2/opt7 // w: // r: TB9.2 #define text_softkey_search "Search" // d: Options -// l: control_pane_t1/opt7 +// l: nhd_control_pane_t2/opt7 // w: // r: TB9.2 #define text_softkey_options "Options" @@ -172,13 +172,13 @@ #define qtn_set_right_idle_softkey "Right selection key" // d: Select -// l: control_pane_t1/opt7 +// l: nhd_control_pane_t2/opt7 // w: // r: TB9.2 #define text_softkey_select "Select" // d: Cancel -// l: control_pane_t1/opt7 +// l: nhd_control_pane_t2/opt7 // w: // r: TB9.2 #define text_softkey_cancel "Cancel" @@ -250,7 +250,7 @@ #define qtn_hs_title_editing_view "Editing view" // d: Call -// l: control_pane_t1/opt7 +// l: nhd_control_pane_t2/opt7 // w: // r: TB9.2 #define text_softkey_call "Call" @@ -266,3 +266,45 @@ // w: // r: TB9.2 #define qtn_hs_page_edit_options_delete "Delete page" + +// d: Done +// l: nhd_control_pane_t2/opt7 +// w: +// r: TB9.2 +#define qtn_hs_text_softkey_done "Done" + +// d: Search +// l: nhd_control_pane_t2/opt7 +// w: +// r: TB9.2 +#define qtn_hs_text_softkey_search "Search" + +// d: Options +// l: nhd_control_pane_t2/opt7 +// w: +// r: TB9.2 +#define qtn_hs_text_softkey_options "Options" + +// d: Back +// l: nhd_control_pane_t2/opt7 +// w: +// r: TB9.2 +#define qtn_hs_text_softkey_back "Back" + +// d: Select +// l: nhd_control_pane_t2/opt7 +// w: +// r: TB9.2 +#define qtn_hs_text_softkey_select "Select" + +// d: Cancel +// l: nhd_control_pane_t2/opt7 +// w: +// r: TB9.2 +#define qtn_hs_text_softkey_cancel "Cancel" + +// d: Call +// l: nhd_control_pane_t2/opt7 +// w: +// r: TB9.2 +#define qtn_hs_text_softkey_call "Call" diff -r 1b758917cafc -r d721605b30d0 idlehomescreen/data/qhd_tch/templateview_20026f50/xuikon/00/view.dtd --- a/idlehomescreen/data/qhd_tch/templateview_20026f50/xuikon/00/view.dtd Wed Jun 09 09:29:04 2010 +0300 +++ b/idlehomescreen/data/qhd_tch/templateview_20026f50/xuikon/00/view.dtd Mon Jun 21 15:27:11 2010 +0300 @@ -42,7 +42,7 @@ + + + + + + + + + + + + + + + + + + + + + diff -r 1b758917cafc -r d721605b30d0 idlehomescreen/data/qhd_tch/view_2001f48b/loc/View.loc --- a/idlehomescreen/data/qhd_tch/view_2001f48b/loc/View.loc Wed Jun 09 09:29:04 2010 +0300 +++ b/idlehomescreen/data/qhd_tch/view_2001f48b/loc/View.loc Mon Jun 21 15:27:11 2010 +0300 @@ -27,8 +27,8 @@ // r: TB9.2 #define qtn_msk_open "Open" -// d: Options -// l: control_pane_t1/opt7 +// d: Done +// l: nhd_control_pane_t2/opt7 // w: // r: TB9.2 #define text_softkey_done "Done" @@ -40,7 +40,7 @@ #define qtn_options_open "Open" // d: Back -// l: control_pane_t1/opt7 +// l: nhd_control_pane_t2/opt7 // w: // r: TB9.2 #define text_softkey_back "Back" @@ -76,13 +76,13 @@ #define qtn_hs_widget_catalog "Widget catalog" // d: Search -// l: control_pane_t1/opt7 +// l: nhd_control_pane_t2/opt7 // w: // r: TB9.2 #define text_softkey_search "Search" // d: Options -// l: control_pane_t1/opt7 +// l: nhd_control_pane_t2/opt7 // w: // r: TB9.2 #define text_softkey_options "Options" @@ -172,13 +172,13 @@ #define qtn_set_right_idle_softkey "Right selection key" // d: Select -// l: control_pane_t1/opt7 +// l: nhd_control_pane_t2/opt7 // w: // r: TB9.2 #define text_softkey_select "Select" // d: Cancel -// l: control_pane_t1/opt7 +// l: nhd_control_pane_t2/opt7 // w: // r: TB9.2 #define text_softkey_cancel "Cancel" @@ -250,7 +250,7 @@ #define qtn_hs_title_editing_view "Editing view" // d: Call -// l: control_pane_t1/opt7 +// l: nhd_control_pane_t2/opt7 // w: // r: TB9.2 #define text_softkey_call "Call" @@ -266,3 +266,45 @@ // w: // r: TB9.2 #define qtn_hs_page_edit_options_delete "Delete page" + +// d: Done +// l: nhd_control_pane_t2/opt7 +// w: +// r: TB9.2 +#define qtn_hs_text_softkey_done "Done" + +// d: Search +// l: nhd_control_pane_t2/opt7 +// w: +// r: TB9.2 +#define qtn_hs_text_softkey_search "Search" + +// d: Options +// l: nhd_control_pane_t2/opt7 +// w: +// r: TB9.2 +#define qtn_hs_text_softkey_options "Options" + +// d: Back +// l: nhd_control_pane_t2/opt7 +// w: +// r: TB9.2 +#define qtn_hs_text_softkey_back "Back" + +// d: Select +// l: nhd_control_pane_t2/opt7 +// w: +// r: TB9.2 +#define qtn_hs_text_softkey_select "Select" + +// d: Cancel +// l: nhd_control_pane_t2/opt7 +// w: +// r: TB9.2 +#define qtn_hs_text_softkey_cancel "Cancel" + +// d: Call +// l: nhd_control_pane_t2/opt7 +// w: +// r: TB9.2 +#define qtn_hs_text_softkey_call "Call" diff -r 1b758917cafc -r d721605b30d0 idlehomescreen/data/qhd_tch/view_2001f48b/xuikon/00/View.dtd --- a/idlehomescreen/data/qhd_tch/view_2001f48b/xuikon/00/View.dtd Wed Jun 09 09:29:04 2010 +0300 +++ b/idlehomescreen/data/qhd_tch/view_2001f48b/xuikon/00/View.dtd Mon Jun 21 15:27:11 2010 +0300 @@ -42,7 +42,7 @@ + + + + + + + + + + + + + + + + + + + + + diff -r 1b758917cafc -r d721605b30d0 idlehomescreen/data/qhd_tch/view_200286e4/loc/View.loc --- a/idlehomescreen/data/qhd_tch/view_200286e4/loc/View.loc Wed Jun 09 09:29:04 2010 +0300 +++ b/idlehomescreen/data/qhd_tch/view_200286e4/loc/View.loc Mon Jun 21 15:27:11 2010 +0300 @@ -27,8 +27,8 @@ // r: TB9.2 #define qtn_msk_open "Open" -// d: Options -// l: control_pane_t1/opt7 +// d: Done +// l: nhd_control_pane_t2/opt7 // w: // r: TB9.2 #define text_softkey_done "Done" @@ -40,7 +40,7 @@ #define qtn_options_open "Open" // d: Back -// l: control_pane_t1/opt7 +// l: nhd_control_pane_t2/opt7 // w: // r: TB9.2 #define text_softkey_back "Back" @@ -76,13 +76,13 @@ #define qtn_hs_widget_catalog "Widget catalog" // d: Search -// l: control_pane_t1/opt7 +// l: nhd_control_pane_t2/opt7 // w: // r: TB9.2 #define text_softkey_search "Search" // d: Options -// l: control_pane_t1/opt7 +// l: nhd_control_pane_t2/opt7 // w: // r: TB9.2 #define text_softkey_options "Options" @@ -172,13 +172,13 @@ #define qtn_set_right_idle_softkey "Right selection key" // d: Select -// l: control_pane_t1/opt7 +// l: nhd_control_pane_t2/opt7 // w: // r: TB9.2 #define text_softkey_select "Select" // d: Cancel -// l: control_pane_t1/opt7 +// l: nhd_control_pane_t2/opt7 // w: // r: TB9.2 #define text_softkey_cancel "Cancel" @@ -250,7 +250,7 @@ #define qtn_hs_title_editing_view "Editing view" // d: Call -// l: control_pane_t1/opt7 +// l: nhd_control_pane_t2/opt7 // w: // r: TB9.2 #define text_softkey_call "Call" @@ -266,3 +266,45 @@ // w: // r: TB9.2 #define qtn_hs_page_edit_options_delete "Delete page" + +// d: Done +// l: nhd_control_pane_t2/opt7 +// w: +// r: TB9.2 +#define qtn_hs_text_softkey_done "Done" + +// d: Search +// l: nhd_control_pane_t2/opt7 +// w: +// r: TB9.2 +#define qtn_hs_text_softkey_search "Search" + +// d: Options +// l: nhd_control_pane_t2/opt7 +// w: +// r: TB9.2 +#define qtn_hs_text_softkey_options "Options" + +// d: Back +// l: nhd_control_pane_t2/opt7 +// w: +// r: TB9.2 +#define qtn_hs_text_softkey_back "Back" + +// d: Select +// l: nhd_control_pane_t2/opt7 +// w: +// r: TB9.2 +#define qtn_hs_text_softkey_select "Select" + +// d: Cancel +// l: nhd_control_pane_t2/opt7 +// w: +// r: TB9.2 +#define qtn_hs_text_softkey_cancel "Cancel" + +// d: Call +// l: nhd_control_pane_t2/opt7 +// w: +// r: TB9.2 +#define qtn_hs_text_softkey_call "Call" diff -r 1b758917cafc -r d721605b30d0 idlehomescreen/data/qhd_tch/view_200286e4/xuikon/00/View.dtd --- a/idlehomescreen/data/qhd_tch/view_200286e4/xuikon/00/View.dtd Wed Jun 09 09:29:04 2010 +0300 +++ b/idlehomescreen/data/qhd_tch/view_200286e4/xuikon/00/View.dtd Mon Jun 21 15:27:11 2010 +0300 @@ -42,7 +42,7 @@ + + + + + + + + + + + + + + + + + + + + + diff -r 1b758917cafc -r d721605b30d0 idlehomescreen/data/qhd_tch/view_200286e5/loc/View.loc --- a/idlehomescreen/data/qhd_tch/view_200286e5/loc/View.loc Wed Jun 09 09:29:04 2010 +0300 +++ b/idlehomescreen/data/qhd_tch/view_200286e5/loc/View.loc Mon Jun 21 15:27:11 2010 +0300 @@ -27,8 +27,8 @@ // r: TB9.2 #define qtn_msk_open "Open" -// d: Options -// l: control_pane_t1/opt7 +// d: Done +// l: nhd_control_pane_t2/opt7 // w: // r: TB9.2 #define text_softkey_done "Done" @@ -40,7 +40,7 @@ #define qtn_options_open "Open" // d: Back -// l: control_pane_t1/opt7 +// l: nhd_control_pane_t2/opt7 // w: // r: TB9.2 #define text_softkey_back "Back" @@ -76,13 +76,13 @@ #define qtn_hs_widget_catalog "Widget catalog" // d: Search -// l: control_pane_t1/opt7 +// l: nhd_control_pane_t2/opt7 // w: // r: TB9.2 #define text_softkey_search "Search" // d: Options -// l: control_pane_t1/opt7 +// l: nhd_control_pane_t2/opt7 // w: // r: TB9.2 #define text_softkey_options "Options" @@ -172,13 +172,13 @@ #define qtn_set_right_idle_softkey "Right selection key" // d: Select -// l: control_pane_t1/opt7 +// l: nhd_control_pane_t2/opt7 // w: // r: TB9.2 #define text_softkey_select "Select" // d: Cancel -// l: control_pane_t1/opt7 +// l: nhd_control_pane_t2/opt7 // w: // r: TB9.2 #define text_softkey_cancel "Cancel" @@ -250,7 +250,7 @@ #define qtn_hs_title_editing_view "Editing view" // d: Call -// l: control_pane_t1/opt7 +// l: nhd_control_pane_t2/opt7 // w: // r: TB9.2 #define text_softkey_call "Call" @@ -266,3 +266,45 @@ // w: // r: TB9.2 #define qtn_hs_page_edit_options_delete "Delete page" + +// d: Done +// l: nhd_control_pane_t2/opt7 +// w: +// r: TB9.2 +#define qtn_hs_text_softkey_done "Done" + +// d: Search +// l: nhd_control_pane_t2/opt7 +// w: +// r: TB9.2 +#define qtn_hs_text_softkey_search "Search" + +// d: Options +// l: nhd_control_pane_t2/opt7 +// w: +// r: TB9.2 +#define qtn_hs_text_softkey_options "Options" + +// d: Back +// l: nhd_control_pane_t2/opt7 +// w: +// r: TB9.2 +#define qtn_hs_text_softkey_back "Back" + +// d: Select +// l: nhd_control_pane_t2/opt7 +// w: +// r: TB9.2 +#define qtn_hs_text_softkey_select "Select" + +// d: Cancel +// l: nhd_control_pane_t2/opt7 +// w: +// r: TB9.2 +#define qtn_hs_text_softkey_cancel "Cancel" + +// d: Call +// l: nhd_control_pane_t2/opt7 +// w: +// r: TB9.2 +#define qtn_hs_text_softkey_call "Call" diff -r 1b758917cafc -r d721605b30d0 idlehomescreen/data/qhd_tch/view_200286e5/xuikon/00/View.dtd --- a/idlehomescreen/data/qhd_tch/view_200286e5/xuikon/00/View.dtd Wed Jun 09 09:29:04 2010 +0300 +++ b/idlehomescreen/data/qhd_tch/view_200286e5/xuikon/00/View.dtd Mon Jun 21 15:27:11 2010 +0300 @@ -42,7 +42,7 @@ + + + + + + + + + + + + + + + + + + + + + diff -r 1b758917cafc -r d721605b30d0 idlehomescreen/data/vga_tch/view1_2001fdb9/loc/view.loc --- a/idlehomescreen/data/vga_tch/view1_2001fdb9/loc/view.loc Wed Jun 09 09:29:04 2010 +0300 +++ b/idlehomescreen/data/vga_tch/view1_2001fdb9/loc/view.loc Mon Jun 21 15:27:11 2010 +0300 @@ -27,8 +27,8 @@ // r: TB9.2 #define qtn_msk_open "Open" -// d: Options -// l: control_pane_t1/opt7 +// d: Done +// l: nhd_control_pane_t2/opt7 // w: // r: TB9.2 #define text_softkey_done "Done" @@ -40,7 +40,7 @@ #define qtn_options_open "Open" // d: Back -// l: control_pane_t1/opt7 +// l: nhd_control_pane_t2/opt7 // w: // r: TB9.2 #define text_softkey_back "Back" @@ -76,13 +76,13 @@ #define qtn_hs_widget_catalog "Widget catalog" // d: Search -// l: control_pane_t1/opt7 +// l: nhd_control_pane_t2/opt7 // w: // r: TB9.2 #define text_softkey_search "Search" // d: Options -// l: control_pane_t1/opt7 +// l: nhd_control_pane_t2/opt7 // w: // r: TB9.2 #define text_softkey_options "Options" @@ -172,13 +172,13 @@ #define qtn_set_right_idle_softkey "Right selection key" // d: Select -// l: control_pane_t1/opt7 +// l: nhd_control_pane_t2/opt7 // w: // r: TB9.2 #define text_softkey_select "Select" // d: Cancel -// l: control_pane_t1/opt7 +// l: nhd_control_pane_t2/opt7 // w: // r: TB9.2 #define text_softkey_cancel "Cancel" @@ -250,7 +250,7 @@ #define qtn_hs_title_editing_view "Editing view" // d: Call -// l: control_pane_t1/opt7 +// l: nhd_control_pane_t2/opt7 // w: // r: TB9.2 #define text_softkey_call "Call" @@ -266,3 +266,45 @@ // w: // r: TB9.2 #define qtn_hs_page_edit_options_delete "Delete page" + +// d: Done +// l: nhd_control_pane_t2/opt7 +// w: +// r: TB9.2 +#define qtn_hs_text_softkey_done "Done" + +// d: Search +// l: nhd_control_pane_t2/opt7 +// w: +// r: TB9.2 +#define qtn_hs_text_softkey_search "Search" + +// d: Options +// l: nhd_control_pane_t2/opt7 +// w: +// r: TB9.2 +#define qtn_hs_text_softkey_options "Options" + +// d: Back +// l: nhd_control_pane_t2/opt7 +// w: +// r: TB9.2 +#define qtn_hs_text_softkey_back "Back" + +// d: Select +// l: nhd_control_pane_t2/opt7 +// w: +// r: TB9.2 +#define qtn_hs_text_softkey_select "Select" + +// d: Cancel +// l: nhd_control_pane_t2/opt7 +// w: +// r: TB9.2 +#define qtn_hs_text_softkey_cancel "Cancel" + +// d: Call +// l: nhd_control_pane_t2/opt7 +// w: +// r: TB9.2 +#define qtn_hs_text_softkey_call "Call" diff -r 1b758917cafc -r d721605b30d0 idlehomescreen/data/vga_tch/view1_2001fdb9/xuikon/00/view.dtd --- a/idlehomescreen/data/vga_tch/view1_2001fdb9/xuikon/00/view.dtd Wed Jun 09 09:29:04 2010 +0300 +++ b/idlehomescreen/data/vga_tch/view1_2001fdb9/xuikon/00/view.dtd Mon Jun 21 15:27:11 2010 +0300 @@ -42,7 +42,7 @@ + + + + + + + + + + + + + + + + + + + + + diff -r 1b758917cafc -r d721605b30d0 idlehomescreen/inc/xnviewmanager.h --- a/idlehomescreen/inc/xnviewmanager.h Wed Jun 09 09:29:04 2010 +0300 +++ b/idlehomescreen/inc/xnviewmanager.h Mon Jun 21 15:27:11 2010 +0300 @@ -75,6 +75,10 @@ virtual void NotifyViewAdditionL( const CXnPluginData& aPluginData ) = 0; virtual void NotifyViewRemovalL( const CXnPluginData& aPluginData ) = 0; + + virtual void NotifyAllViewsLoadedL() = 0; + + virtual void NotifyContainerActivatedL( const CXnViewData& aViewData ) = 0; }; /** @@ -206,6 +210,8 @@ void PublishersReadyL( CXnViewData& aViewData, TInt aResult ); + void NotifyAllViewsLoadedL(); + private: // new functions @@ -227,6 +233,8 @@ void NotifyWidgetRemovalL( const CXnPluginData& aPluginData ); + void NotifyContainerActivatedL( const CXnViewData& aViewData ); + CXnViewData* ViewData( CXnNode& aNode ) const; CXnViewData& PreviousViewData() const; diff -r 1b758917cafc -r d721605b30d0 idlehomescreen/loc/activeidle3.loc --- a/idlehomescreen/loc/activeidle3.loc Wed Jun 09 09:29:04 2010 +0300 +++ b/idlehomescreen/loc/activeidle3.loc Mon Jun 21 15:27:11 2010 +0300 @@ -88,7 +88,7 @@ #define qtn_idle_navi_tapped_all_prof "Show all profiles" // d: Back text for SK2 -// l: control_pane_t1/opt7 +// l: nhd_control_pane_t2/opt7 // w: // r: 3.2 // @@ -316,3 +316,10 @@ // w: // r: TB9.2 #define qtn_hs_backup_use_prevented "Home screen is not in use during backup or restore operation. Wait to finish." + +// d: Back text for SK2 +// l: nhd_control_pane_t2/opt7 +// w: +// r: 3.2 +// +#define qtn_hs_text_softkey_back "Back" diff -r 1b758917cafc -r d721605b30d0 idlehomescreen/widgetmanager/inc/wmlistbox.h --- a/idlehomescreen/widgetmanager/inc/wmlistbox.h Wed Jun 09 09:29:04 2010 +0300 +++ b/idlehomescreen/widgetmanager/inc/wmlistbox.h Mon Jun 21 15:27:11 2010 +0300 @@ -52,10 +52,10 @@ * CWmListItemDrawer */ NONSHARABLE_CLASS( CWmListItemDrawer ): public CFormattedCellListBoxItemDrawer - { + { public: /** Two-phased constructor. */ - static CWmListItemDrawer* NewL( + static CWmListItemDrawer* NewL( CWmPlugin& aWmPlugin, MTextListBoxModel* aTextListBoxModel, const CFont* aFont, @@ -123,7 +123,7 @@ */ CFbsBitmap* iDefaultLogoImageMask; - }; + }; // CLASS DECLARATIONS @@ -132,14 +132,14 @@ */ NONSHARABLE_CLASS( CWmListBox ): public CEikFormattedCellListBox, public MWmWidgetDataObserver - { + { public: /** * Two-phased constructor. */ - static CWmListBox* NewL( - CWmPlugin& aWmPlugin, + static CWmListBox* NewL( + CWmPlugin& aWmPlugin, const TRect& aRect, const CCoeControl* aParent, TInt aFlags = 0 ); @@ -173,7 +173,7 @@ * * @return return index from original list for currently selected item */ - TInt RealIndex( TInt aIndex ); + TInt RealIndex( TInt aIndex, TBool aIgnoreSearchIndex = EFalse ); /** * number of items in the widget data array (also items on the list) @@ -192,8 +192,11 @@ * gets an item by index * * @param aItemIndex index for item to return + * @param aIgnoreSearchIndex if true will get widget from full list + * even when search is open */ - CWmWidgetData& WidgetData( TInt aItemIndex ); + CWmWidgetData& WidgetData( TInt aItemIndex, + TBool aIgnoreSearchIndex = EFalse ); /** * gets the constant widget data array @@ -224,7 +227,7 @@ * * @param aItemIndex index to remove * */ - void RemoveWidgetData( TInt aItemIndex/*, TBool aRedraw = ETrue*/ ); + void RemoveWidgetData( TInt aItemIndex, TBool aIgnoreSearchIndex = EFalse ); /** * requests to redraw item in given index position @@ -280,18 +283,23 @@ */ void AddOrderDataL( CWmWidgetOrderData* aOrderData ); - /* + /** * Returns orderdata object by index */ CWmWidgetOrderData* OrderData( TInt aItemIndex ); + /** + * Returns true if findpane is in use + */ + TBool IsFindPaneIsVisible(); + private: // from CEikTextListBox /** * Creates the item drawer. * * @see CEikTextListBox::CreateItemDrawerL */ - void CreateItemDrawerL(); + void CreateItemDrawerL(); protected: // from base class CCoeControl @@ -310,9 +318,9 @@ * @see CCoeControl::Draw */ void Draw( const TRect& aRect ) const; - + private: - /** Constructor for performing 1st stage construction */ + /** Constructor for performing 1st stage construction */ CWmListBox( CWmPlugin& aWmPlugin ); /** 2nd phase constructor */ @@ -362,7 +370,7 @@ * state of list box find pane */ TBool iFindPaneIsVisible; - + /** size of logo rect in list item */ TSize iLogoSize; @@ -370,7 +378,7 @@ * array of widget order objects */ ROrderArray iOrderDataArray; - }; + }; #include "wmlistbox.inl" #endif ___WMLISTBOX_H__ diff -r 1b758917cafc -r d721605b30d0 idlehomescreen/widgetmanager/inc/wmlistbox.inl --- a/idlehomescreen/widgetmanager/inc/wmlistbox.inl Wed Jun 09 09:29:04 2010 +0300 +++ b/idlehomescreen/widgetmanager/inc/wmlistbox.inl Mon Jun 21 15:27:11 2010 +0300 @@ -27,6 +27,12 @@ inline void CWmListBox::SetFindPaneIsVisible( TBool aVisibility ) { iFindPaneIsVisible = aVisibility; } +/** + * Returns true if findpane is in use + */ + inline TBool CWmListBox::IsFindPaneIsVisible() + { return iFindPaneIsVisible; } + /** * number of items in the widget data array (also items on the list) * diff -r 1b758917cafc -r d721605b30d0 idlehomescreen/widgetmanager/inc/wmmaincontainer.h --- a/idlehomescreen/widgetmanager/inc/wmmaincontainer.h Wed Jun 09 09:29:04 2010 +0300 +++ b/idlehomescreen/widgetmanager/inc/wmmaincontainer.h Mon Jun 21 15:27:11 2010 +0300 @@ -28,6 +28,7 @@ #include #include // MEikListBoxObserver #include // MAdaptiveSearchTextObserver +#include "wmwidgetloaderao.h" // FORWARD DECLARATIONS class CWmPlugin; @@ -38,30 +39,30 @@ class CCoeControl; class CAknSearchField; class CWmPortalButton; -class CWmWidgetLoaderAo; class CWmMainContainerView; class CWmConfiguration; /** * Container class for WmMainContainer * - * @class CWmMainContainer WmMainContainer.h + * @class CWmMainContainer WmMainContainer.h */ NONSHARABLE_CLASS( CWmMainContainer ) : public CCoeControl, public MEikListBoxObserver, - public MAdaptiveSearchTextObserver - { + public MAdaptiveSearchTextObserver, + public MWmWidgetloaderObserver + { public: // constructors and destructor - + /* * Two-phased constructor. * * @param aRect container rect * @param aWmPlugin wm plugin */ - static CWmMainContainer* NewL( - const TRect& aRect, - CWmPlugin& aWmPlugin ); + static CWmMainContainer* NewL( + const TRect& aRect, + CWmPlugin& aWmPlugin ); /* * Two-phased constructor. @@ -69,23 +70,23 @@ * @param aRect container rect * @param aWmPlugin wm plugin */ - static CWmMainContainer* NewLC( - const TRect& aRect, - CWmPlugin& aWmPlugin ); + static CWmMainContainer* NewLC( + const TRect& aRect, + CWmPlugin& aWmPlugin ); - /** Destructor */ - virtual ~CWmMainContainer(); - + /** Destructor */ + virtual ~CWmMainContainer(); + private: /** constructor */ - CWmMainContainer( - CWmPlugin& aWmPlugin ); + CWmMainContainer( + CWmPlugin& aWmPlugin ); /** 2nd phase constructor */ void ConstructL( const TRect& aRect ); -public: // new functions +public: // new functions /** * @return true, if widgets loading operation is ongoing. @@ -143,34 +144,34 @@ void LaunchDetailsDialogL(); /** - * executes widget addition to home screen - */ - void AddWidgetToHomeScreenL(); - - /** - * executes widget launch - */ - void LaunchWidgetL(); - - /** - * executes findbox activation - */ - void ActivateFindPaneL( TBool aActivateAdaptive = EFalse ); + * executes widget addition to home screen + */ + void AddWidgetToHomeScreenL(); + + /** + * executes widget launch + */ + void LaunchWidgetL(); + + /** + * executes findbox activation + */ + void ActivateFindPaneL( TBool aActivateAdaptive = EFalse ); /** - * executes findbox deactivation - */ + * executes findbox deactivation + */ void DeactivateFindPaneL(TBool aLayout = ETrue); - + /** * sorts the widget list in alphabetical order */ void SortListAlphabeticallyL(); - /** - * executes widget uninstall - */ - void UninstallWidgetL(); + /** + * executes widget uninstall + */ + void UninstallWidgetL(); /** * opens currently selected portal @@ -192,44 +193,44 @@ * in practice reloads the widget list from the widgets API * and redraws the screen. */ - void HandleWidgetListChanged(); + void HandleWidgetListChanged(); public: - /** + /** * Handles focus changed events. * * @see CCoeControl::FocusChanged */ void FocusChanged( TDrawNow aDrawNow ); - + /** * 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 - * @param aIndex 0=first button, 1=second (if it exists) - */ + 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 + * @param aIndex 0=first button, 1=second (if it exists) + */ void SetFocusToPortalButton( TInt aIndex ); /** @@ -336,6 +337,9 @@ TEventCode aType ); TInt OperatorButtonHigherPriority( TInt aIndex ); +public: // from MWmWidgetloaderObserver + void LoadDoneL( TBool aWidgetListChanged ); + private: /** @@ -349,14 +353,14 @@ CWmListBox* iWidgetsList; /** - * search filed - */ - CAknSearchField* iFindbox; + * search filed + */ + CAknSearchField* iFindbox; /** - * search filed visibility switch - */ - TBool iFindPaneIsVisible; + * search filed visibility switch + */ + TBool iFindPaneIsVisible; /** * background diff -r 1b758917cafc -r d721605b30d0 idlehomescreen/widgetmanager/inc/wmwidgetloaderao.h --- a/idlehomescreen/widgetmanager/inc/wmwidgetloaderao.h Wed Jun 09 09:29:04 2010 +0300 +++ b/idlehomescreen/widgetmanager/inc/wmwidgetloaderao.h Mon Jun 21 15:27:11 2010 +0300 @@ -32,6 +32,17 @@ // CLASS DECLARATIONS +class MWmWidgetloaderObserver + { +public: + /** + * Notifies client when widget list is succesfully loaded + * + * @param aWidgetListChanged true if widget list changed + */ + virtual void LoadDoneL( TBool aWidgetListChanged ) = 0; + }; + /** * Active object to load widgets into list */ @@ -39,17 +50,17 @@ { public: - /** + /** * Static constructor */ - static CWmWidgetLoaderAo* NewL( - CWmPlugin& aWmPlugin, - CWmListBox& aTargetList ); - + static CWmWidgetLoaderAo* NewL( + CWmPlugin& aWmPlugin, + CWmListBox& aTargetList ); + /** * Destructor. */ - ~CWmWidgetLoaderAo(); + ~CWmWidgetLoaderAo(); /** * Starts the load process by activating the AO @@ -61,6 +72,10 @@ */ TBool IsLoading(); + /** + * Set MWmWidgetloaderObserver observer + */ + void SetObserver( MWmWidgetloaderObserver* aObserver ); private: /** @@ -150,11 +165,17 @@ /** persistent widget order */ CWmPersistentWidgetOrder* iWidgetOrder; - /** uid of currently unistalled widget */ + /** uid of currently unistalled widget */ TUid iUninstallUid; /** switch for loading operation */ TBool iLoading; + + /** Notifies client when widget list is fully loaded */ + MWmWidgetloaderObserver* iObserver; + + /** tells if widgetlist has changed */ + TBool iWidgetListChanged; }; #endif // WMWIDGETLOADERAO_H_ diff -r 1b758917cafc -r d721605b30d0 idlehomescreen/widgetmanager/src/wmlistbox.cpp --- a/idlehomescreen/widgetmanager/src/wmlistbox.cpp Wed Jun 09 09:29:04 2010 +0300 +++ b/idlehomescreen/widgetmanager/src/wmlistbox.cpp Mon Jun 21 15:27:11 2010 +0300 @@ -77,10 +77,10 @@ CWmListBox* aListBox ) : CFormattedCellListBoxItemDrawer( aTextListBoxModel,aFont,aFormattedCellData ), iWmPlugin( aWmPlugin ) - { + { iCellData = aFormattedCellData; iListBox = aListBox; - } + } // --------------------------------------------------------- // CWmListItemDrawer::ConstructL @@ -136,14 +136,14 @@ // --------------------------------------------------------- // CWmListItemDrawer::~CWmListItemDrawer() - { + { iCellData = NULL; iListBox = NULL; // dispose icons delete iDefaultLogoImage; delete iDefaultLogoImageMask; - } + } // --------------------------------------------------------- // CWmListItemDrawer::UpdateItemHeight @@ -156,6 +156,7 @@ ::list_wgtman_pane().LayoutLine(); TAknLayoutRect listPaneRect; listPaneRect.LayoutRect( iListBox->Rect(), listPane ); + TAknWindowLineLayout listRowPane = AknLayoutScalable_Apps ::listrow_wgtman_pane().LayoutLine(); TAknLayoutRect listRowPaneRect; @@ -163,6 +164,9 @@ TRect itemRect = listRowPaneRect.Rect(); TRAP_IGNORE( iListBox->SetItemHeightL( itemRect.Height() ); ); iListBox->View()->ItemDrawer()->SetItemCellSize( itemRect.Size() ); + + // update view rect according to layout ( ou1cimx1#402776 ) + iListBox->View()->SetViewRect( listPaneRect.Rect() ); } // --------------------------------------------------------- @@ -190,9 +194,9 @@ if ( aItemIsCurrent && listFocused && highlightEnabled ) { TRect innerRect( itemRect ); - const TInt highlightOffset = 2; + const TInt highlightOffset = 5; innerRect.Shrink( highlightOffset, highlightOffset ); - + AknsDrawUtils::DrawFrame( skin, gc, itemRect, @@ -323,7 +327,7 @@ iWmPlugin( aWmPlugin ) { iFindPaneIsVisible = EFalse; - iLogoSize = TSize( 0, 0); + iLogoSize = TSize( 0, 0); } // --------------------------------------------------------- @@ -372,9 +376,9 @@ // CWmListBox::WidgetData // --------------------------------------------------------- // -CWmWidgetData& CWmListBox::WidgetData( TInt aItemIndex ) +CWmWidgetData& CWmListBox::WidgetData( TInt aItemIndex, TBool aIgnoreSearchIndex ) { - return *iVisibleWidgetArray[ RealIndex( aItemIndex ) ]; + return *iVisibleWidgetArray[ RealIndex( aItemIndex, aIgnoreSearchIndex ) ]; } // --------------------------------------------------------- @@ -397,17 +401,14 @@ // CWmListBox::RemoveWidgetData // --------------------------------------------------------- // -void CWmListBox::RemoveWidgetData( TInt aItemIndex ) +void CWmListBox::RemoveWidgetData( TInt aItemIndex, TBool aIgnoreSearchIndex ) { - TInt realIndex = RealIndex( aItemIndex ); + TInt realIndex = RealIndex( aItemIndex, aIgnoreSearchIndex ); TBool current = ( aItemIndex == CurrentItemIndex() ); // remove widget data CWmWidgetData* data = iVisibleWidgetArray[realIndex]; iVisibleWidgetArray.Remove( realIndex ); - // reorganise - TRAP_IGNORE( - AknListBoxUtils::HandleItemRemovalAndPositionHighlightL( - this, realIndex, current ) ); + // Remove item from order array for ( TInt i = 0; i < iOrderDataArray.Count(); i++ ) @@ -422,6 +423,14 @@ } } + if ( aIgnoreSearchIndex ) + { + // reorganise + TRAP_IGNORE( + AknListBoxUtils::HandleItemRemovalAndPositionHighlightL( + this, realIndex, current ) ); + + } // delete now delete data; data = NULL; @@ -475,7 +484,7 @@ void CWmListBox::HandleLayoutChanged() { iLogoSize = TSize( 0, 0); - iLogoSize = LogoSize(); + iLogoSize = LogoSize(); for ( TInt i=0; iUpdateLogo( iLogoSize, EFalse ); @@ -541,10 +550,10 @@ // CWmListBox::RealIndex // --------------------------------------------------------- // -TInt CWmListBox::RealIndex( TInt aIndex ) +TInt CWmListBox::RealIndex( TInt aIndex, TBool aIgnoreSearchIndex ) { TInt realIndex = aIndex; - if ( iFindPaneIsVisible && aIndex >= 0 ) + if ( ( iFindPaneIsVisible && aIndex >= 0 ) && !aIgnoreSearchIndex ) { realIndex = static_cast(Model())->Filter() ->FilteredItemIndex( aIndex ); diff -r 1b758917cafc -r d721605b30d0 idlehomescreen/widgetmanager/src/wmmaincontainer.cpp --- a/idlehomescreen/widgetmanager/src/wmmaincontainer.cpp Wed Jun 09 09:29:04 2010 +0300 +++ b/idlehomescreen/widgetmanager/src/wmmaincontainer.cpp Mon Jun 21 15:27:11 2010 +0300 @@ -81,24 +81,28 @@ // CWmMainContainer::CWmMainContainer( CWmPlugin& aWmPlugin ) : iWmPlugin( aWmPlugin ) - { + { iWidgetsList = NULL; iFindbox = NULL; iFindPaneIsVisible = EFalse; iBgContext = NULL; iFocusMode = ENowhere; iClosingDown = ETrue; - } + } // --------------------------------------------------------- // CWmMainContainer::~CWmMainContainer() // --------------------------------------------------------- // CWmMainContainer::~CWmMainContainer() - { + { TRAP_IGNORE(DeactivateFindPaneL(EFalse)); - delete iWidgetLoader; + if ( iWidgetLoader ) + { + iWidgetLoader->SetObserver( NULL ); + delete iWidgetLoader; + } RemoveCtrlsFromStack(); Components().ResetAndDestroy(); @@ -107,9 +111,9 @@ iPortalButtonOne = NULL; iPortalButtonTwo = NULL; iFindbox = NULL; - delete iBgContext; - delete iConfiguration; - } + delete iBgContext; + delete iConfiguration; + } // --------------------------------------------------------- // CWmMainContainer::NewL @@ -118,13 +122,13 @@ CWmMainContainer* CWmMainContainer::NewL( const TRect& aRect, CWmPlugin& aWmPlugin ) - { - CWmMainContainer* self = CWmMainContainer::NewLC( + { + CWmMainContainer* self = CWmMainContainer::NewLC( aRect, aWmPlugin ); - CleanupStack::Pop( self ); - return self; - } + CleanupStack::Pop( self ); + return self; + } // --------------------------------------------------------- // CWmMainContainer::NewLC @@ -133,12 +137,12 @@ CWmMainContainer* CWmMainContainer::NewLC( const TRect& aRect, CWmPlugin& aWmPlugin ) - { - CWmMainContainer* self = new (ELeave) CWmMainContainer( aWmPlugin ); - CleanupStack::PushL( self ); - self->ConstructL( aRect ); - return self; - } + { + CWmMainContainer* self = new (ELeave) CWmMainContainer( aWmPlugin ); + CleanupStack::PushL( self ); + self->ConstructL( aRect ); + return self; + } // --------------------------------------------------------- // ScreenRect @@ -163,48 +167,48 @@ // --------------------------------------------------------- // void CWmMainContainer::ConstructL( - const TRect& aRect ) - { + const TRect& aRect ) + { // Initialize control array - InitComponentArrayL(); - Components().SetControlsOwnedExternally( ETrue ); + InitComponentArrayL(); + Components().SetControlsOwnedExternally( ETrue ); // create the UI CreateWindowL(); - // background context - iBgContext = CAknsBasicBackgroundControlContext::NewL( - KAknsIIDQsnBgScreen, ScreenRect() , ETrue); + // background context + iBgContext = CAknsBasicBackgroundControlContext::NewL( + KAknsIIDQsnBgScreen, ScreenRect() , ETrue); // load configuration iConfiguration = CWmConfiguration::NewL( iWmPlugin.ResourceLoader() ); - // set up controls - InitializeControlsL( aRect ); + // set up controls + InitializeControlsL( aRect ); - // set size and activate - SetRect( aRect ); + // set size and activate + SetRect( aRect ); ActivateL(); - - } + + } // --------------------------------------------------------- // CWmMainContainer::SizeChanged // --------------------------------------------------------- // void CWmMainContainer::SizeChanged() - { - CCoeControl::SizeChanged(); + { + CCoeControl::SizeChanged(); iBgContext->SetRect( ScreenRect() ); - LayoutControls(); - } + LayoutControls(); + } // --------------------------------------------------------- // CWmMainContainer::LayoutControls // --------------------------------------------------------- // void CWmMainContainer::LayoutControls() - { + { TRect rect( Rect() ); // determine layout type @@ -212,16 +216,16 @@ iMirrored = Layout_Meta_Data::IsMirrored(); // layout iPortalButtons - if ( iConfiguration->PortalButtonCount() == 1 ) - { - // one button - TAknWindowLineLayout btnPane = AknLayoutScalable_Apps - ::wgtman_btn_pane( iLandscape ? 1 : 0 ).LayoutLine(); - AknLayoutUtils::LayoutControl( iPortalButtonOne, rect, btnPane ); - } - else - { - // two buttons + if ( iConfiguration->PortalButtonCount() == 1 ) + { + // one button + TAknWindowLineLayout btnPane = AknLayoutScalable_Apps + ::wgtman_btn_pane( iLandscape ? 1 : 0 ).LayoutLine(); + AknLayoutUtils::LayoutControl( iPortalButtonOne, rect, btnPane ); + } + else + { + // two buttons TInt variety = (iLandscape ? 3 : 2); TAknWindowLineLayout oviBtnLayout = AknLayoutScalable_Apps ::wgtman_btn_pane( variety ).LayoutLine(); @@ -239,16 +243,16 @@ AknLayoutUtils::LayoutControl( iPortalButtonOne, rect, oviBtnLayout ); AknLayoutUtils::LayoutControl( iPortalButtonTwo, rect, operatorBtnLayout ); } - } + } - // layout iWidgetsList + // layout iWidgetsList TAknWindowLineLayout listPane = AknLayoutScalable_Apps ::listscroll_wgtman_pane( iLandscape ? 1 : 0 ).LayoutLine(); if( iFindbox && iFindPaneIsVisible ) { - TAknLayoutRect layoutRect; + TAknLayoutRect layoutRect; layoutRect.LayoutRect( rect, listPane ); - iWidgetsList->SetRect( layoutRect.Rect() ); + iWidgetsList->SetRect( layoutRect.Rect() ); HandleFindSizeChanged(); } else @@ -257,7 +261,7 @@ } DrawDeferred(); - } + } // --------------------------------------------------------- // CWmMainContainer::OfferKeyEventL @@ -836,60 +840,60 @@ TBool eatEvent( EFalse ); TPointerEvent event( aPointerEvent ); - if (aPointerEvent.iType == TPointerEvent::EButton1Down) - { - // Check if user clicked a child control - CCoeControl* control = FindChildControlByPoint( aPointerEvent.iPosition ); - if ( control && !control->IsFocused() ) - { - // 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(); - } - - // Set focus to the control that was clicked - control->SetFocus( ETrue ); - - // update focus mode accordingly - UpdateFocusMode(); - // repaint - DrawDeferred(); - } - - // stylus popup should not be opened when uninstalling. - // ou1cimx1#302973 - if ( control == iWidgetsList && iWidgetsList->IsFocused() ) - { - TInt itemIndex = iWidgetsList->CurrentListBoxItemIndex(); - TBool itemPointed = iWidgetsList->View()->XYPosToItemIndex( - aPointerEvent.iPosition, - itemIndex ); - if ( itemIndex >= 0 && itemPointed ) - { - CWmWidgetData& data = iWidgetsList->WidgetData( itemIndex ); - if ( &data && data.IsUninstalling() ) - { + if (aPointerEvent.iType == TPointerEvent::EButton1Down) + { + // Check if user clicked a child control + CCoeControl* control = FindChildControlByPoint( aPointerEvent.iPosition ); + if ( control && !control->IsFocused() ) + { + // 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(); + } + + // Set focus to the control that was clicked + control->SetFocus( ETrue ); + + // update focus mode accordingly + UpdateFocusMode(); + // repaint + DrawDeferred(); + } + + // stylus popup should not be opened when uninstalling. + // ou1cimx1#302973 + if ( control == iWidgetsList && iWidgetsList->IsFocused() ) + { + TInt itemIndex = iWidgetsList->CurrentListBoxItemIndex(); + TBool itemPointed = iWidgetsList->View()->XYPosToItemIndex( + aPointerEvent.iPosition, + itemIndex ); + if ( itemIndex >= 0 && itemPointed ) + { + CWmWidgetData& data = iWidgetsList->WidgetData( itemIndex ); + if ( &data && data.IsUninstalling() ) + { event.iType = TPointerEvent::EButton1Up; - eatEvent = ETrue; - } - } - } - - } - - // set downkey event to base class - CCoeControl::HandlePointerEventL( aPointerEvent ); - - // send key up event if selected widget is being uninstalled. - // stylus popup shouldn't be displayed for this item. - if ( eatEvent ) - { + eatEvent = ETrue; + } + } + } + + } + + // set downkey event to base class + CCoeControl::HandlePointerEventL( aPointerEvent ); + + // send key up event if selected widget is being uninstalled. + // stylus popup shouldn't be displayed for this item. + if ( eatEvent ) + { CCoeControl::HandlePointerEventL( event ); - } + } } } @@ -898,8 +902,8 @@ // --------------------------------------------------------- // void CWmMainContainer::InitializeControlsL( const TRect& /*aRect*/ ) - { - // Create portal buttons + { + // Create portal buttons iPortalButtonOne = CWmPortalButton::NewL( this, 0 ); iPortalButtonOne->SetMopParent( this ); AddControlL( iPortalButtonOne, EPortalOne ); @@ -917,7 +921,7 @@ this ); iWidgetsList->SetMopParent( this ); AddControlL( iWidgetsList, EWidgetsList ); - iWidgetsList->ActivateL(); + iWidgetsList->ActivateL(); iWidgetsList->SetListBoxObserver( this ); // Create scroll bar. @@ -952,22 +956,11 @@ // void CWmMainContainer::StartLoadingWidgetsL() { - if ( iFindbox && iFindPaneIsVisible ) - { - iFindbox->ResetL(); - CAknFilteredTextListBoxModel* m = - static_cast ( iWidgetsList->Model() ); - if ( m && m->Filter() ) - { - m->Filter()->ResetFilteringL(); - } - iFindbox->SetSearchTextL( KNullDesC ); - iFindbox->DrawNow(); - } if ( !iWidgetLoader ) { // create the widget loader AO iWidgetLoader = CWmWidgetLoaderAo::NewL( iWmPlugin, *iWidgetsList ); + iWidgetLoader->SetObserver( this ); } iWidgetLoader->StartLoading(); } @@ -977,9 +970,9 @@ // --------------------------------------------------------- // void CWmMainContainer::HandleResourceChange( TInt aType ) - { + { CCoeControl::HandleResourceChange( aType ); - + if ( KEikDynamicLayoutVariantSwitch == aType ) { TRect rect; @@ -990,7 +983,7 @@ // notify widgetlist iWidgetsList->HandleLayoutChanged(); } - } + } // --------------------------------------------------------- @@ -1012,12 +1005,12 @@ // --------------------------------------------------------- // void CWmMainContainer::Draw( const TRect& aRect ) const - { - CWindowGc& gc = SystemGc(); + { + CWindowGc& gc = SystemGc(); MAknsSkinInstance* skin = AknsUtils::SkinInstance(); MAknsControlContext* cc = AknsDrawUtils::ControlContext( this ); AknsDrawUtils::Background( skin, cc, this, gc, aRect ); - } + } // --------------------------------------------------------- // CWmMainContainer::AddControlL @@ -1032,13 +1025,13 @@ CAknView* view = iWmPlugin.ViewAppUi().View( TUid::Uid(EWmMainContainerViewId) ); if ( view ) - { + { iWmPlugin.ViewAppUi().AddToStackL( *view, aControl ); - } - else - { + } + else + { iWmPlugin.ViewAppUi().AddToStackL( aControl ); - } + } aControl->MakeVisible( ETrue ); } @@ -1357,7 +1350,7 @@ CWmPersistentWidgetOrder::NewL( iWmPlugin.FileServer() ); CleanupStack::PushL( widgetOrder ); widgetOrder->StoreL( iWidgetsList->OrderDataArray() ); - + CleanupStack::PopAndDestroy( widgetOrder ); } } @@ -1593,7 +1586,7 @@ else if ( aForeground ) { // set init state when wm comes to foreground. - // remove focus from all controls when activating view. + // remove focus from all controls when activating view. ResetFocus( EDrawNow ); } } @@ -1648,13 +1641,30 @@ // CWmMainContainer::AdaptiveSearchTextChanged // ---------------------------------------------------- // -void CWmMainContainer::AdaptiveSearchTextChanged( - CAknSearchField* aSearchField ) +void CWmMainContainer::AdaptiveSearchTextChanged( CAknSearchField* /*aSearchField*/ ) { // fix for ou1cimx1#376818. aknfind will call drawDeferred for lisbox. // We need to be sure that button area is also drawn. DrawDeferred(); } + +// ---------------------------------------------------- +// CWmMainContainer::LoadDone +// ---------------------------------------------------- +// +void CWmMainContainer::LoadDoneL( TBool aWidgetListChanged ) + { + if ( aWidgetListChanged && iFindbox && iFindPaneIsVisible ) + { + CAknFilteredTextListBoxModel* m = + static_cast ( iWidgetsList->Model() ); + if ( m && m->Filter() ) + { + m->Filter()->HandleItemArrayChangeL(); + } + } + } + // End of File diff -r 1b758917cafc -r d721605b30d0 idlehomescreen/widgetmanager/src/wmplugin.cpp --- a/idlehomescreen/widgetmanager/src/wmplugin.cpp Wed Jun 09 09:29:04 2010 +0300 +++ b/idlehomescreen/widgetmanager/src/wmplugin.cpp Mon Jun 21 15:27:11 2010 +0300 @@ -118,7 +118,7 @@ CleanupStack::Pop( mainView ); // laucher for adding widgets. - iLauncher = CPeriodic::NewL( CActive::EPriorityIdle ); + iLauncher = CPeriodic::NewL( CActive::EPriorityUserInput + 1 ); } // --------------------------------------------------------- @@ -127,23 +127,27 @@ // void CWmPlugin::Activate() { - CWmMainContainerView* view = static_cast( - iViewAppUi->View( TUid::Uid(EWmMainContainerViewId) ) ); - if ( !IsActive() && view && iHsContentController ) + // prevents opening wm if adding widget is ongoing. + if ( !iLauncher->IsActive() ) { - // stop displaying menubar before starting fullscreen effects - CEikMenuBar* menuBar = CEikonEnv::Static()->AppUiFactory()->MenuBar(); - if ( menuBar && menuBar->IsDisplayed() ) + CWmMainContainerView* view = static_cast( + iViewAppUi->View( TUid::Uid(EWmMainContainerViewId) ) ); + if ( !IsActive() && view && iHsContentController ) { - menuBar->StopDisplayingMenuBar(); + // stop displaying menubar before starting fullscreen effects + CEikMenuBar* menuBar = CEikonEnv::Static()->AppUiFactory()->MenuBar(); + if ( menuBar && menuBar->IsDisplayed() ) + { + menuBar->StopDisplayingMenuBar(); + } + + TRAP_IGNORE( + iEffectManager->BeginFullscreenEffectL( + KAppStartEffectStyle ); + iViewAppUi->ActivateLocalViewL( + TUid::Uid( EWmMainContainerViewId ) ); + ); } - - TRAP_IGNORE( - iEffectManager->BeginFullscreenEffectL( - KAppStartEffectStyle ); - iViewAppUi->ActivateLocalViewL( - TUid::Uid( EWmMainContainerViewId ) ); - ); } } @@ -262,8 +266,11 @@ if ( !iEffectManager->IsEffectActive() ) { // launch effect without delay - iExecutionCount = KMaxCmdExecutionCount; - iLauncher->Start( 0, 0, TCallBack( ExecuteCommand, this ) ); + if ( !iLauncher->IsActive() ) + { + iExecutionCount = KMaxCmdExecutionCount; + iLauncher->Start( 0, 0, TCallBack( ExecuteCommand, this ) ); + } } else { diff -r 1b758917cafc -r d721605b30d0 idlehomescreen/widgetmanager/src/wmwidgetloaderao.cpp --- a/idlehomescreen/widgetmanager/src/wmwidgetloaderao.cpp Wed Jun 09 09:29:04 2010 +0300 +++ b/idlehomescreen/widgetmanager/src/wmwidgetloaderao.cpp Mon Jun 21 15:27:11 2010 +0300 @@ -114,6 +114,10 @@ DoLoadWidgetsL(); Cleanup(); CloseSession(); + if ( iObserver ) + { + iObserver->LoadDoneL( iWidgetListChanged ); + } } // --------------------------------------------------------------------------- @@ -141,8 +145,9 @@ // void CWmWidgetLoaderAo::DoLoadWidgetsL() { + iWidgetListChanged = EFalse; // Check if unistallation is ongoing for for some widget - // iUninstallUid is null no uninstallation is ongoing + // iUninstallUid is null no uninstallation is ongoing iUninstallUid = iWmPlugin.WmInstaller().UninstallUid(); // connect to widget registry @@ -162,8 +167,8 @@ // 3. prepare the widget data array & sort order array for( TInt i=0; i 0 ) + if ( widgetsAdded > 0 && !iWidgetsList.IsFindPaneIsVisible() ) { iWidgetsList.HandleItemAdditionL(); } @@ -232,9 +237,12 @@ if ( widgetsRemoved > 0 || widgetsAdded > 0 || widgetsChanged > 0 ) { - iWidgetsList.DrawDeferred(); + if ( !iWidgetsList.IsFindPaneIsVisible() ) + { + iWidgetsList.DrawDeferred(); + } + iWidgetListChanged = ETrue; } - // 6: cleanup CleanupStack::PopAndDestroy( contentInfoArray ); @@ -267,9 +275,9 @@ CWmWidgetData* data = NULL; for( TInt i=0; iDisableExitChecks( ETrue ); + + TRAPD( err, DoConstructL() ); + + if ( err ) + { + __TICK( "CAppUi::ConstructL - failed" ); + + // HandleUiShutdown must be called here + // to free all control environment dependent framework objects + iUiCtl.FwEventHandler()->HandleUiShutdown( iUiCtl ); + } + + User::LeaveIfError( err ); + + __TICK( "CAppUi::ConstructL - done" ); + } + +// ---------------------------------------------------------------------------- +// CAppUi::DoConstructL() +// ---------------------------------------------------------------------------- +// +void CAppUi::DoConstructL() + { iUiCtl.NotifyAppEnvReadyL(); // Always reset the phoneforward P&S key on startup just in case RProperty::Set( KPSUidAiInformation, KActiveIdleForwardNumericKeysToPhone, EPSAiForwardNumericKeysToPhone ); - - iEditModeTitle = StringLoader::LoadL( R_QTN_HS_TITLE_EDITMODE ); - + // Initialize with empty title pane so it's not shown on startup. __HEAP("XML UI: Init - Construct App UI") @@ -101,13 +123,11 @@ CAknAppUiBase::SetKeyEventFlags( CAknAppUiBase::EDisableSendKeyShort | CAknAppUiBase::EDisableSendKeyLong ); + iEditModeTitle = StringLoader::LoadL( R_QTN_HS_TITLE_EDITMODE ); + // Register for XML UI view activation & deactivation AddViewActivationObserverL( this ); - - // Disable CCoeEnv exit checks. - // Active Idle Framework will perform the checks. - iCoeEnv->DisableExitChecks( ETrue ); - + __TIME("XML UI: Construct Content Renderer", iContentRenderer = CContentRenderer::NewL( *this ); ) @@ -167,24 +187,6 @@ // void CAppUi::ActivateUi() { - __PRINTS( "*** CAppUi::ActivateUi" ); - - if ( iDeviceStatusInfo.Uid() == TUid::Null() ) - { - __PRINTS( "*** CAppUi::ActivateUI - Loading DeviceStatus plugin" ); - - _LIT8( KNs, "namespace" ); - - // Load device status plugin here because it is always needed - iDeviceStatusInfo = THsPublisherInfo( KDeviceStatusPluginUid, - KDeviceStatusPluginName, KNs ); - - TAiFwPublisherInfo info( iDeviceStatusInfo, - TAiFwCallback(), EAiFwSystemStartup ); - - iUiCtl.FwStateHandler()->LoadPlugin( info ); - } - __PRINTS( "*** CAppUi::ActivateUi - done" ); } diff -r 1b758917cafc -r d721605b30d0 idlehomescreen/xmluicontroller/src/onlineofflinehelper.cpp --- a/idlehomescreen/xmluicontroller/src/onlineofflinehelper.cpp Wed Jun 09 09:29:04 2010 +0300 +++ b/idlehomescreen/xmluicontroller/src/onlineofflinehelper.cpp Mon Jun 21 15:27:11 2010 +0300 @@ -443,11 +443,11 @@ // void COnlineOfflineHelper::HandleConnectionQueryL( const TDesC& aConnection) { - if ( aConnection == KDisConnected() ) + if ( aConnection == KDisConnected() && ShowOfflineItem() ) { ShowGlobalQueryL(R_QTN_HS_DISABLE_NETWORK, EFalse ); } - else if ( aConnection == KConnected() ) + else if ( aConnection == KConnected() && ShowOnlineItem() ) { ShowGlobalQueryL(R_QTN_HS_SWITCH_ONLINE, ETrue ); } diff -r 1b758917cafc -r d721605b30d0 idlehomescreen/xmluirendering/renderingplugins/xntexteditorfactory/inc/xntexteditoradapter.h --- a/idlehomescreen/xmluirendering/renderingplugins/xntexteditorfactory/inc/xntexteditoradapter.h Wed Jun 09 09:29:04 2010 +0300 +++ b/idlehomescreen/xmluirendering/renderingplugins/xntexteditorfactory/inc/xntexteditoradapter.h Mon Jun 21 15:27:11 2010 +0300 @@ -124,6 +124,11 @@ * See CCoeControl documentation */ void HandleResourceChange( TInt aType ); + + /** + * See CCoeControl documentation + */ + void HandlePointerEventL(const TPointerEvent& aPointerEvent); /** * See CCoeAppUiBase. diff -r 1b758917cafc -r d721605b30d0 idlehomescreen/xmluirendering/renderingplugins/xntexteditorfactory/src/xntexteditoradapter.cpp --- a/idlehomescreen/xmluirendering/renderingplugins/xntexteditorfactory/src/xntexteditoradapter.cpp Wed Jun 09 09:29:04 2010 +0300 +++ b/idlehomescreen/xmluirendering/renderingplugins/xntexteditorfactory/src/xntexteditoradapter.cpp Mon Jun 21 15:27:11 2010 +0300 @@ -472,6 +472,42 @@ } // ----------------------------------------------------------------------------- +// CXnTextEditorAdapter::HandlePointerEventL +// +// ----------------------------------------------------------------------------- +// +void CXnTextEditorAdapter::HandlePointerEventL( const TPointerEvent& aPointerEvent ) + { + TPointerEvent pointerEvent( aPointerEvent ); + TRect rect( iEditor->TextView()->ViewRect() ); + TPoint point( aPointerEvent.iPosition ); + + // this opens partial screen also when margin is tapped + if( !IsFlagSet( iSplitInputFlags, ESplitInputOpen ) ) + { + if( point.iX < rect.iTl.iX ) + { + pointerEvent.iPosition.iX = rect.iTl.iX; + } + else if( point.iX > rect.iBr.iX ) + { + pointerEvent.iPosition.iX = rect.iBr.iX; + } + + if( point.iY < rect.iTl.iY ) + { + pointerEvent.iPosition.iY = rect.iTl.iY; + } + else if( point.iY > rect.iBr.iY ) + { + pointerEvent.iPosition.iY = rect.iBr.iY; + } + } + + CXnControlAdapter::HandlePointerEventL( pointerEvent ); + } + +// ----------------------------------------------------------------------------- // CXnTextEditorAdapter::HandleScreenDeviceChangedL // // ----------------------------------------------------------------------------- diff -r 1b758917cafc -r d721605b30d0 idlehomescreen/xmluirendering/uiengine/inc/xneditor.h --- a/idlehomescreen/xmluirendering/uiengine/inc/xneditor.h Wed Jun 09 09:29:04 2010 +0300 +++ b/idlehomescreen/xmluirendering/uiengine/inc/xneditor.h Mon Jun 21 15:27:11 2010 +0300 @@ -311,9 +311,22 @@ */ TBool IsViewFull( CXnViewData& aViewData ); + /* + * Notifies observers that widget list is changed + */ + void NotifyWidgetListChanged(); + /** callback for notify widget launcher */ static TInt WidgetListChangedCallBack( TAny* aSelf ); + + /* + * Notifies observers that view list is changed + */ + void NotifyViewListChanged(); + /** callback for notify view launcher */ + static TInt ViewListChangedCallBack( TAny* aSelf ); + private: // from MXnViewObserver @@ -331,6 +344,10 @@ void NotifyViewAdditionL( const CXnPluginData& /*aPluginData*/ ); void NotifyViewRemovalL( const CXnPluginData& /*aPluginData*/ ); + + void NotifyAllViewsLoadedL(); + + void NotifyContainerActivatedL( const CXnViewData& aViewData ); private: // from MCpsWrapperObserver @@ -371,8 +388,10 @@ RPointerArray< hspswrapper::CPluginInfo > iPluginConfigurations; /** Oom handler, owned. */ CXnOomSysHandler* iOomSysHandler; - /** Launcher for notifying widget updates */ - CPeriodic* iNotifyWidgetUpdate; + /** Launcher for notifying widget list changes */ + CPeriodic* iNotifyWidgetListChanged; + /** Launcher for notifying view list changes */ + CPeriodic* iNotifyViewListChanged; }; #endif // C_XNEDITOR_H diff -r 1b758917cafc -r d721605b30d0 idlehomescreen/xmluirendering/uiengine/inc/xnitemactivator.h --- a/idlehomescreen/xmluirendering/uiengine/inc/xnitemactivator.h Wed Jun 09 09:29:04 2010 +0300 +++ b/idlehomescreen/xmluirendering/uiengine/inc/xnitemactivator.h Mon Jun 21 15:27:11 2010 +0300 @@ -96,7 +96,7 @@ * @since S60 5.2 * @param aItemToActivate Item to activate */ - void Activate( CXnNode* aItemToActivate ); + void ActivateL( CXnNode* aItemToActivate ); private: // data diff -r 1b758917cafc -r d721605b30d0 idlehomescreen/xmluirendering/uiengine/inc/xnkeyeventdispatcher.h --- a/idlehomescreen/xmluirendering/uiengine/inc/xnkeyeventdispatcher.h Wed Jun 09 09:29:04 2010 +0300 +++ b/idlehomescreen/xmluirendering/uiengine/inc/xnkeyeventdispatcher.h Mon Jun 21 15:27:11 2010 +0300 @@ -210,6 +210,8 @@ void NotifyWidgetRemovalL( const CXnPluginData& aPluginData ); void NotifyViewAdditionL( const CXnPluginData& /*aPluginData*/ ){}; void NotifyViewRemovalL( const CXnPluginData& /*aPluginData*/ ){}; + void NotifyAllViewsLoadedL(){}; + void NotifyContainerActivatedL( const CXnViewData& /*aViewData*/ ){}; private: // Data diff -r 1b758917cafc -r d721605b30d0 idlehomescreen/xmluirendering/uiengine/inc/xnrootdata.h --- a/idlehomescreen/xmluirendering/uiengine/inc/xnrootdata.h Wed Jun 09 09:29:04 2010 +0300 +++ b/idlehomescreen/xmluirendering/uiengine/inc/xnrootdata.h Mon Jun 21 15:27:11 2010 +0300 @@ -169,13 +169,19 @@ * @return number of pages allowed */ TInt32 MaxPages(); - + + /** + * Returns ETrue, if all views are loaded + */ + TBool AllViewsLoaded() const; + + /** + * Returns ETrue, if all views are destoyed + */ + TBool AllViewsDestroyed() const; + private: // New functions - - TBool AllViewsLoaded() const; - TBool AllViewsDestroyed() const; - static TInt RunLoadL( TAny* aAny ); static TInt RunDestroyL( TAny *aAny ); diff -r 1b758917cafc -r d721605b30d0 idlehomescreen/xmluirendering/uiengine/inc/xnuiengineimpl.h --- a/idlehomescreen/xmluirendering/uiengine/inc/xnuiengineimpl.h Wed Jun 09 09:29:04 2010 +0300 +++ b/idlehomescreen/xmluirendering/uiengine/inc/xnuiengineimpl.h Mon Jun 21 15:27:11 2010 +0300 @@ -653,17 +653,27 @@ /** * from MXnViewObserver */ - void NotifyWidgetRemovalL( const CXnPluginData& /*aPluginData*/ ); + void NotifyWidgetRemovalL( const CXnPluginData& /*aPluginData*/ ); + + /** + * from MXnViewObserver + */ + void NotifyViewAdditionL( const CXnPluginData& /*aPluginData*/ ){}; - /** - * from MXnViewObserver - */ - void NotifyViewAdditionL( const CXnPluginData& /*aPluginData*/ ){}; + /** + * from MXnViewObserver + */ + void NotifyViewRemovalL( const CXnPluginData& /*aPluginData*/ ){}; - /** - * from MXnViewObserver - */ - void NotifyViewRemovalL( const CXnPluginData& /*aPluginData*/ ){}; + /** + * from MXnViewObserver + */ + void NotifyAllViewsLoadedL(){}; + + /** + * from MXnViewObserver + */ + void NotifyContainerActivatedL( const CXnViewData& /*aViewData*/ ){}; private: // from MXnMenuObserver diff -r 1b758917cafc -r d721605b30d0 idlehomescreen/xmluirendering/uiengine/inc/xnwidgetextensionadapter.h --- a/idlehomescreen/xmluirendering/uiengine/inc/xnwidgetextensionadapter.h Wed Jun 09 09:29:04 2010 +0300 +++ b/idlehomescreen/xmluirendering/uiengine/inc/xnwidgetextensionadapter.h Mon Jun 21 15:27:11 2010 +0300 @@ -89,9 +89,10 @@ void Draw( const TRect& aRect ) const; /** - * @see CXnControlAdapter - */ - void DoHandlePropertyChangeL( CXnProperty* aProperty = NULL ); + * From CCoeControl. + * Size change notification + */ + void SizeChanged(); private: // from MXnUiStateObserver diff -r 1b758917cafc -r d721605b30d0 idlehomescreen/xmluirendering/uiengine/src/xnbackgroundmanager.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xnbackgroundmanager.cpp Wed Jun 09 09:29:04 2010 +0300 +++ b/idlehomescreen/xmluirendering/uiengine/src/xnbackgroundmanager.cpp Mon Jun 21 15:27:11 2010 +0300 @@ -44,7 +44,7 @@ #include #include #include -#include +#include #include #include diff -r 1b758917cafc -r d721605b30d0 idlehomescreen/xmluirendering/uiengine/src/xncomposer.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xncomposer.cpp Wed Jun 09 09:29:04 2010 +0300 +++ b/idlehomescreen/xmluirendering/uiengine/src/xncomposer.cpp Mon Jun 21 15:27:11 2010 +0300 @@ -17,7 +17,7 @@ // System includes #include -#include +#include // User includes #include "xncomposer.h" diff -r 1b758917cafc -r d721605b30d0 idlehomescreen/xmluirendering/uiengine/src/xneditor.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xneditor.cpp Wed Jun 09 09:29:04 2010 +0300 +++ b/idlehomescreen/xmluirendering/uiengine/src/xneditor.cpp Mon Jun 21 15:27:11 2010 +0300 @@ -93,7 +93,8 @@ ECanBeRemoved }; -const TInt KNotifyWidgetUpdateDelay( 1000000 ); //1sec +const TInt KNotifyWidgetListChangedDelay( 1000000 ); //1sec +const TInt KNotifyViewListChangedDelay( 1000000 ); //1sec // ====================== LOCAL FUNTION PROTOTYPES ============================ static void DeletePluginInfos( TAny* aObject ); @@ -312,7 +313,8 @@ iHspsWrapper = CHspsWrapper::NewL( aUid, this ); iRepository= CRepository::NewL( TUid::Uid( KCRUidActiveIdleLV ) ); iOomSysHandler = CXnOomSysHandler::NewL(); - iNotifyWidgetUpdate = CPeriodic::New( CActive::EPriorityIdle ); + iNotifyWidgetListChanged = CPeriodic::New( CActive::EPriorityIdle ); + iNotifyViewListChanged = CPeriodic::New( CActive::EPriorityIdle ); } // --------------------------------------------------------------------------- @@ -321,12 +323,18 @@ // CXnEditor::~CXnEditor() { - if ( iNotifyWidgetUpdate->IsActive() ) + if ( iNotifyWidgetListChanged->IsActive() ) { - iNotifyWidgetUpdate->Cancel(); + iNotifyWidgetListChanged->Cancel(); } - delete iNotifyWidgetUpdate; - + delete iNotifyWidgetListChanged; + + if ( iNotifyViewListChanged->IsActive() ) + { + iNotifyViewListChanged->Cancel(); + } + delete iNotifyViewListChanged; + iViewManager.RemoveObserver( *this ); if( iPluginConfigurations.Count() ) { @@ -610,7 +618,7 @@ return; } - TBuf8 oPaqDataStr; + TBuf8 oPaqDataStr = KNullDesC8(); MHsContentControlUi* ui( NULL ); if ( IdFromCrep ( oPaqDataStr ) == KErrNone ) @@ -1240,7 +1248,7 @@ node->SetDirtyL( XnDirtyLevel::ELayoutAndRenderSiblings ); - WidgetListChanged(); + NotifyWidgetListChanged(); } // --------------------------------------------------------------------------- @@ -1322,7 +1330,7 @@ } } - WidgetListChanged(); + NotifyWidgetListChanged(); } // --------------------------------------------------------------------------- @@ -1331,7 +1339,7 @@ // void CXnEditor::NotifyViewAdditionL( const CXnPluginData& /*aPluginData*/ ) { - ViewListChanged(); + NotifyViewListChanged(); } // --------------------------------------------------------------------------- @@ -1340,7 +1348,7 @@ // void CXnEditor::NotifyViewRemovalL( const CXnPluginData& /*aPluginData*/ ) { - ViewListChanged(); + NotifyViewListChanged(); } // --------------------------------------------------------------------------- @@ -1351,7 +1359,7 @@ { ResetPluginsAndPublishers(); RemoveUnRegisteredWidgetL( aPublisher ); - WidgetListChanged(); + NotifyWidgetListChanged(); } // --------------------------------------------------------------------------- @@ -1361,7 +1369,7 @@ void CXnEditor::NotifyWidgetRegisteredL() { ResetPluginsAndPublishers(); - WidgetListChanged(); + NotifyWidgetListChanged(); } // --------------------------------------------------------------------------- @@ -1370,17 +1378,49 @@ // void CXnEditor::NotifyWidgetUpdatedL() { - if ( iNotifyWidgetUpdate->IsActive() ) + NotifyWidgetListChanged(); + } + +// --------------------------------------------------------------------------- +// CXnEditor::NotifyAllViewsLoadedL +// --------------------------------------------------------------------------- +// +void CXnEditor::NotifyAllViewsLoadedL() + { + NotifyViewListChanged(); + NotifyWidgetListChanged(); + } + +// ----------------------------------------------------------------------------- +// CXnEditor::NotifyContainerActivatedL +// ----------------------------------------------------------------------------- +// +void CXnEditor::NotifyContainerActivatedL( const CXnViewData& /* aViewData */ ) + { + if ( iViewManager.ActiveAppData().AllViewsLoaded() ) { - iNotifyWidgetUpdate->Cancel(); + NotifyWidgetListChanged(); } - // start waiting for widget updates (wait time is 1sec). - // if no new updates, notify views about changes. otherwise - // start waiting for new updates again. - iNotifyWidgetUpdate->Start( - KNotifyWidgetUpdateDelay, - KNotifyWidgetUpdateDelay, + } + +// --------------------------------------------------------------------------- +// CXnEditor::NotifyWidgetListChanged +// --------------------------------------------------------------------------- +// +void CXnEditor::NotifyWidgetListChanged() + { + if ( iNotifyWidgetListChanged->IsActive() ) + { + iNotifyWidgetListChanged->Cancel(); + } + // start waiting for widget list changes (wait time is 1sec). + // if no new changes, notify observers about changes. otherwise + // start waiting for new updates again. + iNotifyWidgetListChanged->Start( + KNotifyWidgetListChangedDelay, + KNotifyWidgetListChangedDelay, TCallBack( WidgetListChangedCallBack, this ) ); + } // --------------------------------------------------------------------------- @@ -1390,16 +1430,52 @@ TInt CXnEditor::WidgetListChangedCallBack( TAny* aSelf ) { CXnEditor* editor = static_cast( aSelf ); - if ( editor && editor->iNotifyWidgetUpdate->IsActive() ) + if ( editor && editor->iNotifyWidgetListChanged->IsActive() ) { // prevent multiple events - editor->iNotifyWidgetUpdate->Cancel(); + editor->iNotifyWidgetListChanged->Cancel(); editor->WidgetListChanged(); } return KErrNone; } // --------------------------------------------------------------------------- +// CXnEditor::NotifyViewListChanged +// --------------------------------------------------------------------------- +// +void CXnEditor::NotifyViewListChanged() + { + if ( iNotifyViewListChanged->IsActive() ) + { + iNotifyViewListChanged->Cancel(); + } + // start waiting for widget list changes (wait time is 1sec). + // if no new changes, notify observer about changes. otherwise + // start waiting for new changes again. + iNotifyViewListChanged->Start( + KNotifyViewListChangedDelay, + KNotifyViewListChangedDelay, + TCallBack( ViewListChangedCallBack, this ) ); + + } + +// --------------------------------------------------------------------------- +// CXnEditor::ViewListChangedCallBack +// --------------------------------------------------------------------------- +// +TInt CXnEditor::ViewListChangedCallBack( TAny* aSelf ) + { + CXnEditor* editor = static_cast( aSelf ); + if ( editor && editor->iNotifyViewListChanged->IsActive() ) + { + // prevent multiple events + editor->iNotifyViewListChanged->Cancel(); + editor->ViewListChanged(); + } + return KErrNone; + } + +// --------------------------------------------------------------------------- // CXnEditor::NotifyViewDeactivatedL // --------------------------------------------------------------------------- // @@ -1468,7 +1544,7 @@ info->SetPluginIdL( aPluginId ); RemoveUnInstalledWidgetL( *info ); - WidgetListChanged(); + NotifyWidgetListChanged(); CleanupStack::PopAndDestroy( info ); } @@ -1480,7 +1556,7 @@ { ResetPluginsAndPublishers(); - WidgetListChanged(); + NotifyWidgetListChanged(); } else if ( aEvent == KEventPluginUpdated ) { @@ -1496,7 +1572,7 @@ ReplaceWidgetL( *info ); CleanupStack::PopAndDestroy( info ); } - WidgetListChanged(); + NotifyWidgetListChanged(); } return KErrNone; @@ -1508,7 +1584,7 @@ // void CXnEditor::WidgetListChanged() { - TBuf8 oPaqDataStr; + TBuf8 oPaqDataStr = KNullDesC8(); MHsContentControlUi* ui( NULL ); if ( IdFromCrep ( oPaqDataStr ) == KErrNone ) @@ -1532,7 +1608,7 @@ // void CXnEditor::ViewListChanged() { - TBuf8 oPaqDataStr; + TBuf8 oPaqDataStr = KNullDesC8(); MHsContentControlUi* ui( NULL ); if ( IdFromCrep ( oPaqDataStr ) == KErrNone ) @@ -1850,23 +1926,12 @@ const TDesC8& type( aInfo.Type() ); if ( ( type != KKeyWidget && type != KKeyTemplate ) || - aInfo.Uid() == KNullDesC8 ) + aInfo.Uid() == KNullDesC8 || !aInfo.CanBeAdded() ) { // malformed content info return KErrArgument; } - // the widget can not be added. Return proper error code - if ( IsCurrentViewFull() ) - { - return KHsErrorViewFull; - } - else if ( !aInfo.CanBeAdded() ) - { - return KHsErrorMaxInstanceCountExceeded; - } - - CXnPluginData* plugin( NULL ); if( iTargetPlugin ) @@ -1880,9 +1945,27 @@ iTargetPlugin = NULL; - if ( !plugin ) + // the widget can not be added. Return proper error code + if ( IsCurrentViewFull() || !plugin ) + { + return KHsErrorViewFull; + } + else { - return KErrGeneral; + TInt result; + if ( aInfo.Type() != KKeyTemplate() ) + { + result = NonTemplateWidgetCanBeAddedRemovedL( aInfo ); + } + else + { + result = TemplateWidgetCanBeAddedRemovedL( aInfo ); + } + + if ( !( result & ECanBeAdded ) ) + { + return KHsErrorMaxInstanceCountExceeded; + } } ret = iViewManager.LoadWidgetToPluginL( aInfo, *plugin ); diff -r 1b758917cafc -r d721605b30d0 idlehomescreen/xmluirendering/uiengine/src/xnitemactivator.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xnitemactivator.cpp Wed Jun 09 09:29:04 2010 +0300 +++ b/idlehomescreen/xmluirendering/uiengine/src/xnitemactivator.cpp Mon Jun 21 15:27:11 2010 +0300 @@ -170,10 +170,9 @@ // // ----------------------------------------------------------------------------- // -TInt CXnItemActivator::RunError( TInt /*aError*/ ) - { - // Ignore - return KErrNone; +TInt CXnItemActivator::RunError( TInt aError ) + { + return aError; } // ----------------------------------------------------------------------------- @@ -187,11 +186,11 @@ } // ----------------------------------------------------------------------------- -// CXnItemActivator::Activate() +// CXnItemActivator::ActivateL() // // ----------------------------------------------------------------------------- // -void CXnItemActivator::Activate( CXnNode* aItemToActivate ) +void CXnItemActivator::ActivateL( CXnNode* aItemToActivate ) { if ( aItemToActivate ) { @@ -201,7 +200,7 @@ if ( IsMenuItem( *aItemToActivate ) ) { - TRAP_IGNORE( RunL() ); + RunL(); } else { diff -r 1b758917cafc -r d721605b30d0 idlehomescreen/xmluirendering/uiengine/src/xnnodeimpl.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xnnodeimpl.cpp Wed Jun 09 09:29:04 2010 +0300 +++ b/idlehomescreen/xmluirendering/uiengine/src/xnnodeimpl.cpp Mon Jun 21 15:27:11 2010 +0300 @@ -3979,7 +3979,7 @@ if ( focusedNode ) { - aEngine.AppUiAdapter().ItemActivator().Activate( focusedNode ); + aEngine.AppUiAdapter().ItemActivator().ActivateL( focusedNode ); } return ETrue; @@ -7632,7 +7632,7 @@ if ( activated ) { - iUiEngine->AppUiAdapter().ItemActivator().Activate( iNode ); + iUiEngine->AppUiAdapter().ItemActivator().ActivateL( iNode ); } if ( stateChanged ) diff -r 1b758917cafc -r d721605b30d0 idlehomescreen/xmluirendering/uiengine/src/xnrootdata.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xnrootdata.cpp Wed Jun 09 09:29:04 2010 +0300 +++ b/idlehomescreen/xmluirendering/uiengine/src/xnrootdata.cpp Mon Jun 21 15:27:11 2010 +0300 @@ -252,15 +252,22 @@ // void CXnRootData::LoadRemainingViews() { - if ( iFlags.IsClear( EIsDispose ) && !AllViewsLoaded() ) + if ( iFlags.IsClear( EIsDispose ) ) { - iLoadForward = ETrue; - - iLoadTimer->Cancel(); - - iLoadTimer->Start( TTimeIntervalMicroSeconds32( KScheduleInterval ), - TTimeIntervalMicroSeconds32( KScheduleInterval ), - TCallBack( RunLoadL, this ) ); + if ( !AllViewsLoaded() ) + { + iLoadForward = ETrue; + + iLoadTimer->Cancel(); + + iLoadTimer->Start( TTimeIntervalMicroSeconds32( KScheduleInterval ), + TTimeIntervalMicroSeconds32( KScheduleInterval ), + TCallBack( RunLoadL, this ) ); + } + else + { + iManager.NotifyAllViewsLoadedL(); + } } } @@ -546,7 +553,8 @@ if ( self->AllViewsLoaded() ) { - self->iLoadTimer->Cancel(); + self->iLoadTimer->Cancel(); + self->iManager.NotifyAllViewsLoadedL(); } } diff -r 1b758917cafc -r d721605b30d0 idlehomescreen/xmluirendering/uiengine/src/xnuiengineimpl.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xnuiengineimpl.cpp Wed Jun 09 09:29:04 2010 +0300 +++ b/idlehomescreen/xmluirendering/uiengine/src/xnuiengineimpl.cpp Mon Jun 21 15:27:11 2010 +0300 @@ -8284,13 +8284,7 @@ rect = node->BorderRect(); } - // popup calculates its position based on _s60-position-hint property - // This needs to be done even if popup's rect has not been changed - if( node->Type()->Type() == KPopUpNodeName ) - { - adapter->DoHandlePropertyChangeL(); - } - else if ( adapter->Rect() != rect ) + if ( adapter->Rect() != rect ) { AddToRedrawListL( node, rect ); diff -r 1b758917cafc -r d721605b30d0 idlehomescreen/xmluirendering/uiengine/src/xnviewadapter.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xnviewadapter.cpp Wed Jun 09 09:29:04 2010 +0300 +++ b/idlehomescreen/xmluirendering/uiengine/src/xnviewadapter.cpp Mon Jun 21 15:27:11 2010 +0300 @@ -322,6 +322,7 @@ void CXnViewAdapter::PrepareToExit() { iAppUiAdapter.RemoveFromStack( iEventDispatcher ); + delete iEventDispatcher; iEventDispatcher = NULL; @@ -388,16 +389,16 @@ __TICK( "CXnViewAdapter::DoActivateL" ); __TIME_MARK( time ); + + TBool wasActive( iFlags.IsSet( EIsActivated ) ); iFlags.Set( EIsActivated ); - // State must be cleared before adding to stack iEventDispatcher->ClearStateL(); + + iAppUiAdapter.RemoveFromStack( iEventDispatcher ); iAppUiAdapter.AddToStackL( *this, iEventDispatcher ); - // enable statuspane transparancy - CEikStatusPane* sp( iAppUiAdapter.StatusPane() ); - CEikButtonGroupContainer* bgc( iAppUiAdapter.Cba() ); if ( bgc ) @@ -408,30 +409,37 @@ iAppUiAdapter.RemoveFromStack( cba ); } - + iBgManager->MakeVisible( ETrue ); - - // Set status pane layout + CXnViewData& viewData( iAppUiAdapter.ViewManager().ActiveViewData() ); - CXnProperty* prop( viewData.Node()->LayoutNode()->GetPropertyL( - XnPropertyNames::view::KStatusPaneLayout ) ); - - // Is there status pane declaration available - TInt spane( DetermineStatusPaneLayout( prop ) ); - - if ( spane != KErrNotFound ) + + if ( !wasActive ) { - if ( sp && sp->CurrentLayoutResId() != spane ) + // Set status pane layout + CXnProperty* prop( viewData.Node()->LayoutNode()->GetPropertyL( + XnPropertyNames::view::KStatusPaneLayout ) ); + + CEikStatusPane* sp( iAppUiAdapter.StatusPane() ); + + // Is there status pane declaration available + TInt spane( DetermineStatusPaneLayout( prop ) ); + + if ( spane != KErrNotFound ) { - sp->SwitchLayoutL( spane ); - sp->ApplyCurrentSettingsL(); - } - } - - if ( sp && !sp->IsTransparent() ) - { - sp->EnableTransparent( ETrue ); - sp->DrawNow(); + if ( sp && sp->CurrentLayoutResId() != spane ) + { + sp->SwitchLayoutL( spane ); + sp->ApplyCurrentSettingsL(); + } + } + + // enable statuspane transparancy + if ( sp && !sp->IsTransparent() ) + { + sp->EnableTransparent( ETrue ); + sp->DrawNow(); + } } if ( aCustomMessage == KSetWallpaper ) diff -r 1b758917cafc -r d721605b30d0 idlehomescreen/xmluirendering/uiengine/src/xnviewdata.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xnviewdata.cpp Wed Jun 09 09:29:04 2010 +0300 +++ b/idlehomescreen/xmluirendering/uiengine/src/xnviewdata.cpp Mon Jun 21 15:27:11 2010 +0300 @@ -19,6 +19,7 @@ // User includes #include +#include #include "xnappuiadapter.h" #include "xncomposer.h" #include "xnodtparser.h" @@ -29,12 +30,14 @@ #include "xndomnode.h" #include "xnnode.h" #include "xnoomsyshandler.h" +#include "ainativeuiplugins.h" #include "xnpanic.h" #include "debug.h" // Constants - +_LIT8( KNs, "namespace" ); + // ============================ LOCAL FUNCTIONS ================================ // ============================ MEMBER FUNCTIONS =============================== @@ -118,6 +121,21 @@ { if ( aActive ) { + if ( iFlags.IsSet( EIsInitial ) ) + { + // Load device status plugin here because it is always needed + THsPublisherInfo devstat( KDeviceStatusPluginUid, + KDeviceStatusPluginName, KNs ); + + TAiFwPublisherInfo publisher( devstat, + TAiFwCallback(), EAiFwSystemStartup ); + + CXnAppUiAdapter* appui = + static_cast< CXnAppUiAdapter* >( iAvkonAppUi ); + + appui->LoadPublisher( publisher ); + } + iFlags.Set( EIsActive ); iFlags.Clear( EIsInitial ); diff -r 1b758917cafc -r d721605b30d0 idlehomescreen/xmluirendering/uiengine/src/xnviewmanager.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xnviewmanager.cpp Wed Jun 09 09:29:04 2010 +0300 +++ b/idlehomescreen/xmluirendering/uiengine/src/xnviewmanager.cpp Mon Jun 21 15:27:11 2010 +0300 @@ -352,8 +352,8 @@ CleanupStack::PopAndDestroy(); // DisableRenderUiLC(); - // Load initial view publishers - ActiveViewData().LoadPublishers( EAiFwSystemStartup ); + // Load initial view publishers + ActiveViewData().SetActive( ETrue ); } // ----------------------------------------------------------------------------- @@ -378,6 +378,16 @@ delete iWidgetAmountTrigger; iWidgetAmountTrigger = NULL; + // Destroy all publishers + RPointerArray< CXnPluginData >& views( iRootData->PluginData() ); + + for ( TInt i = 0; i < views.Count(); i++ ) + { + CXnViewData* view = static_cast< CXnViewData* >( views[i] ); + + view->DestroyPublishers( EAiFwSystemShutdown ); + } + // Destroy active view data ActiveViewData().Destroy(); @@ -387,6 +397,8 @@ User::Heap().Compress(); + iUiReady = EFalse; + LoadUiL(); // Activate first view from the new configuration @@ -1405,6 +1417,19 @@ } // ----------------------------------------------------------------------------- +// CXnViewManager::NotifyAllViewsLoadedL() +// Notifies that all views included in root configuration are loaded +// ----------------------------------------------------------------------------- +// +void CXnViewManager::NotifyAllViewsLoadedL() + { + for ( TInt i = 0; i < iObservers.Count(); i++ ) + { + iObservers[i]->NotifyAllViewsLoadedL(); + } + } + +// ----------------------------------------------------------------------------- // CXnViewManager::PublishersReadyL() // Notifies that aViewData activation is complete // ----------------------------------------------------------------------------- @@ -1456,6 +1481,8 @@ CXnBackgroundManager& bg( self->iAppUiAdapter.ViewAdapter().BgManager() ); TRAP_IGNORE( bg.StoreWallpaperL() ); + + self->NotifyContainerActivatedL( active ); return KErrNone; } @@ -1564,6 +1591,19 @@ } // ----------------------------------------------------------------------------- +// CXnViewManager::NotifyContainerActivatedL() +// Notifies view container is activated +// ----------------------------------------------------------------------------- +// +void CXnViewManager::NotifyContainerActivatedL( const CXnViewData& aViewData ) + { + for ( TInt i = 0; i < iObservers.Count(); i++ ) + { + iObservers[i]->NotifyContainerActivatedL( aViewData ); + } + } + +// ----------------------------------------------------------------------------- // CXnViewManager::UpdateCachesL() // // ----------------------------------------------------------------------------- diff -r 1b758917cafc -r d721605b30d0 idlehomescreen/xmluirendering/uiengine/src/xnwidgetextensionadapter.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xnwidgetextensionadapter.cpp Wed Jun 09 09:29:04 2010 +0300 +++ b/idlehomescreen/xmluirendering/uiengine/src/xnwidgetextensionadapter.cpp Mon Jun 21 15:27:11 2010 +0300 @@ -112,7 +112,7 @@ // ----------------------------------------------------------------------------- // CXnWidgetExtensionAdapter::CXnWidgetExtensionAdapter( CXnNodePluginIf& aNode ) - : iNode( aNode ), iPositionHint( ENone ) + : iNode( aNode ), iPositionHint( EAboveLeft ) { } @@ -349,16 +349,14 @@ } // ----------------------------------------------------------------------------- -// CXnWidgetExtensionAdapter::DoHandlePropertyChangeL +// CXnWidgetExtensionAdapter::SizeChanged // // ----------------------------------------------------------------------------- // -void CXnWidgetExtensionAdapter::DoHandlePropertyChangeL( CXnProperty* /*aProperty*/ ) +void CXnWidgetExtensionAdapter::SizeChanged() { - if( iNode.Node().IsLaidOut() && IsVisible() ) - { - ChangePopupPosition(); - } + ChangePopupPosition(); + CXnControlAdapter::SizeChanged(); } // ----------------------------------------------------------------------------- @@ -639,7 +637,8 @@ rect.Move( contentRect.iBr.iX - rect.iBr.iX, 0 ); } - this->SetRect( rect ); + SetPosition( rect.iTl ); + SetSizeWithoutNotification( rect.Size() ); } diff -r 1b758917cafc -r d721605b30d0 menufw/menufwui/matrixmenu/src/mmappui.cpp --- a/menufw/menufwui/matrixmenu/src/mmappui.cpp Wed Jun 09 09:29:04 2010 +0300 +++ b/menufw/menufwui/matrixmenu/src/mmappui.cpp Mon Jun 21 15:27:11 2010 +0300 @@ -12,8 +12,8 @@ * Contributors: * * Description: Application UI class -* Version : %version: MM_176.1.28.1.82 % << Don't touch! Updated by Synergy at check-out. -* Version : %version: MM_176.1.28.1.82 % << Don't touch! Updated by Synergy at check-out. +* Version : %version: MM_176.1.28.1.83 % << Don't touch! Updated by Synergy at check-out. +* Version : %version: MM_176.1.28.1.83 % << Don't touch! Updated by Synergy at check-out. * */ @@ -1229,13 +1229,13 @@ // --------------------------------------------------------------------------- // void CMmAppUi::HandleLongTapEventL( const TPoint& aPenEventLocation ) - { + { TBool popupMenuDisplayed(EFalse); - if (iPopupMenu) - { - delete iPopupMenu; - iPopupMenu = NULL; - } + if (iPopupMenu) + { + delete iPopupMenu; + iPopupMenu = NULL; + } iPopupMenu = CAknStylusPopUpMenu::NewL(this,aPenEventLocation); if ( AknLayoutUtils::LayoutMirrored() ) @@ -1250,70 +1250,69 @@ } if( iCurrentSuiteModel == iHNInterface->GetLastSuiteModelL() - && iCurrentContainer->IsHighlightVisible() - && iCurrentContainer->GetSuiteModelL()->GetItemModelsCount() > 1 ) - { - MMPERF(("CMmAppUi::DynInitMenuPaneL - START")); - //fill the main menu structure, look for cascade menus - //reset the helper hash map - iCascadeMenuMap.Close(); + && iCurrentContainer->IsHighlightVisible() + && iCurrentContainer->GetSuiteModelL()->GetItemModelsCount() > 1 ) + { + MMPERF(("CMmAppUi::DynInitMenuPaneL - START")); + //fill the main menu structure, look for cascade menus + //reset the helper hash map + iCascadeMenuMap.Close(); - MHnMenuItemModelIterator* menuIterator = - iCurrentSuiteModel->GetMenuStructureL( - iCurrentSuiteModel->IdByIndex( - iCurrentContainer->GetHighlight() ) ); + MHnMenuItemModelIterator* menuIterator = + iCurrentSuiteModel->GetMenuStructureL( + iCurrentSuiteModel->IdByIndex( + iCurrentContainer->GetHighlight() ) ); - // check if there is a menu structure available - // for the specified item - if ( menuIterator ) - { - //create item sorting helper objects - RArray positionArray; - CleanupClosePushL( positionArray ); - RHashMap menuItemMap; - CleanupClosePushL( menuItemMap ); + // check if there is a menu structure available + // for the specified item + if ( menuIterator ) + { + //create item sorting helper objects + RArray positionArray; + CleanupClosePushL( positionArray ); + RHashMap menuItemMap; + CleanupClosePushL( menuItemMap ); - while ( menuIterator->HasNextSpecific() ) - { - CHnMenuItemModel* childItem = menuIterator->GetNextSpecific(); - CEikMenuPaneItem::SData childData; - childData.iCommandId = childItem->Command(); - childData.iText = childItem->NameL(). - Left( CEikMenuPaneItem::SData::ENominalTextLength ); - childData.iFlags = 0; - childData.iCascadeId = 0; + while ( menuIterator->HasNextSpecific() ) + { + CHnMenuItemModel* childItem = menuIterator->GetNextSpecific(); + CEikMenuPaneItem::SData childData; + childData.iCommandId = childItem->Command(); + childData.iText = childItem->NameL(). + Left( CEikMenuPaneItem::SData::ENominalTextLength ); + childData.iFlags = 0; + childData.iCascadeId = 0; - positionArray.AppendL( childItem->Position() ); - menuItemMap.InsertL( childItem->Position(), childData ); - } + positionArray.AppendL( childItem->Position() ); + menuItemMap.InsertL( childItem->Position(), childData ); + } - positionArray.Sort(); + positionArray.Sort(); - //add items in correct order - for ( TInt i = 0; i < positionArray.Count(); ++i ) - { - iPopupMenu-> - AddMenuItemL( - menuItemMap.FindL( positionArray[i] ).iText, - menuItemMap.FindL( positionArray[i] ).iCommandId ); - } + //add items in correct order + for ( TInt i = 0; i < positionArray.Count(); ++i ) + { + iPopupMenu->AddMenuItemL( + menuItemMap.FindL( positionArray[i] ).iText, + menuItemMap.FindL( positionArray[i] ).iCommandId ); + } - if (positionArray.Count()>0) - { - iPopupMenu->ShowMenu(); - popupMenuDisplayed = ETrue; + if (positionArray.Count()>0) + { + iPopupMenu->ShowMenu(); + popupMenuDisplayed = ETrue; + } + CleanupStack::PopAndDestroy( &menuItemMap ); + CleanupStack::PopAndDestroy( &positionArray ); + } + MMPERF(("CMmAppUi::DynInitMenuPaneL - STOP")); } - CleanupStack::PopAndDestroy( &menuItemMap ); - CleanupStack::PopAndDestroy( &positionArray ); - } - MMPERF(("CMmAppUi::DynInitMenuPaneL - STOP")); - } if ( !popupMenuDisplayed && iCurrentContainer ) { iCurrentContainer->EndLongTapL( ETrue ); HandleHighlightItemSingleClickedL( - iCurrentContainer->Widget()->CurrentItemIndex() ); + iCurrentContainer->Widget()->CurrentItemIndex() ); } } diff -r 1b758917cafc -r d721605b30d0 menufw/menufwui/mmwidgets/inc/mmlistboxview.h --- a/menufw/menufwui/mmwidgets/inc/mmlistboxview.h Wed Jun 09 09:29:04 2010 +0300 +++ b/menufw/menufwui/mmwidgets/inc/mmlistboxview.h Mon Jun 21 15:27:11 2010 +0300 @@ -12,7 +12,7 @@ * Contributors: * * Description: -* Version : %version: MM_12.1.8 % << Don't touch! Updated by Synergy at check-out. +* Version : %version: MM_12.1.9 % << Don't touch! Updated by Synergy at check-out. * */ @@ -228,11 +228,6 @@ private: /** - * Scrollbar visibility flag. - */ - TBool iScrollbarIsVisible; - - /** * iCurrentItemIndex */ TInt iPreviouslyDrawnCurrentItemIndex; diff -r 1b758917cafc -r d721605b30d0 menufw/menufwui/mmwidgets/src/mmdraweranimator.cpp --- a/menufw/menufwui/mmwidgets/src/mmdraweranimator.cpp Wed Jun 09 09:29:04 2010 +0300 +++ b/menufw/menufwui/mmwidgets/src/mmdraweranimator.cpp Mon Jun 21 15:27:11 2010 +0300 @@ -12,7 +12,7 @@ * Contributors: * * Description: - * Version : %version: MM_43 % << Don't touch! Updated by Synergy at check-out. + * Version : %version: MM_44 % << Don't touch! Updated by Synergy at check-out. * */ @@ -180,9 +180,6 @@ iDrawer.Widget()->View()->Draw( &refreshRect ); } } - - iLastRedrawTime.HomeTime(); - } if( iDrawer.GetFloatingItemCount() > 0 ) diff -r 1b758917cafc -r d721605b30d0 menufw/menufwui/mmwidgets/src/mmlistboxitemdrawer.cpp --- a/menufw/menufwui/mmwidgets/src/mmlistboxitemdrawer.cpp Wed Jun 09 09:29:04 2010 +0300 +++ b/menufw/menufwui/mmwidgets/src/mmlistboxitemdrawer.cpp Mon Jun 21 15:27:11 2010 +0300 @@ -307,7 +307,13 @@ { TInt drawnItemIndex = iFloatingItems[i].GetDrawnItemIndex(); TSize size = iWidget->View()->ItemSize( drawnItemIndex ); - TRect rect( iFloatingItems[i].GetItemPosition(), iFloatingItems[i].GetItemPosition() + size); + if ( iWidgetType == EListbox + && TemplateLibrary()->GetScrollbarVisibility()) + { + size.iWidth -= TemplateLibrary()->ScrollbarWidth(); + } + TRect rect( iFloatingItems[i].GetItemPosition(), + iFloatingItems[i].GetItemPosition() + size); if( rect.Intersects( currentlyDrawnRect ) ) { @@ -998,16 +1004,17 @@ void CMmListBoxItemDrawer::SetDraggedIndexL( TInt aDraggedItemIndex, TPoint aPoint ) { - TInt dragFloatingItem = KErrNotFound; + TInt dragStartFloatingItem( KErrNotFound ); + TInt dragFloatingItem( KErrNotFound ); do { - dragFloatingItem = GetFloatingItemIndex( EDragStart ); - if( dragFloatingItem == KErrNotFound ) - dragFloatingItem = GetFloatingItemIndex( EDrag ); - if( dragFloatingItem != KErrNotFound ) + dragStartFloatingItem = GetFloatingItemIndex( EDragStart ); + dragFloatingItem = GetFloatingItemIndex( EDrag ); + if( dragStartFloatingItem == KErrNotFound ) + dragStartFloatingItem = dragFloatingItem; + if( dragStartFloatingItem != KErrNotFound ) { - TMmFloatingItem & item = GetFloatingItemAtIndex( dragFloatingItem ); - + TMmFloatingItem & item = GetFloatingItemAtIndex( dragStartFloatingItem ); TMmFloatingItem postDragRefresh( item.GetDrawnItemIndex(), item.GetItemPosition(), EPostDragRefreshItem, MmEffects::KNoAnimationFramesCount, iWidget->View() ); @@ -1015,12 +1022,11 @@ if( postDragRefresh.GetItemPosition() != aPoint ) { iFloatingItems.Append( postDragRefresh ); - } - if( item.GetFloatingItemType() == EDrag ) - RemoveFloatingItem( dragFloatingItem ); + } } + RemoveFloatingItem( dragFloatingItem ); } - while( GetFloatingItemIndex( EDrag ) != KErrNotFound ); + while( dragFloatingItem != KErrNotFound ); if( aDraggedItemIndex != KErrNotFound ) { diff -r 1b758917cafc -r d721605b30d0 menufw/menufwui/mmwidgets/src/mmlistboxview.cpp --- a/menufw/menufwui/mmwidgets/src/mmlistboxview.cpp Wed Jun 09 09:29:04 2010 +0300 +++ b/menufw/menufwui/mmwidgets/src/mmlistboxview.cpp Mon Jun 21 15:27:11 2010 +0300 @@ -12,7 +12,7 @@ * Contributors: * * Description: - * Version : %version: MM_54 % << Don't touch! Updated by Synergy at check-out. + * Version : %version: MM_55 % << Don't touch! Updated by Synergy at check-out. * */ @@ -80,7 +80,6 @@ // void CMmListBoxView::ConstructL () { - iScrollbarIsVisible = ETrue; iPreviouslyDrawnCurrentItemIndex = KErrNotFound; } diff -r 1b758917cafc -r d721605b30d0 taskswitcher/contextengine/tsfswserver/server/group/tsfswserver.mmp --- a/taskswitcher/contextengine/tsfswserver/server/group/tsfswserver.mmp Wed Jun 09 09:29:04 2010 +0300 +++ b/taskswitcher/contextengine/tsfswserver/server/group/tsfswserver.mmp Mon Jun 21 15:27:11 2010 +0300 @@ -21,6 +21,7 @@ TARGET tsfswserver.exe TARGETTYPE EXE UID 0x0 0x2001CBE1 +EPOCSTACKSIZE 0x3000 // 12KB // AllFiles cap needed to get icon for wrt widgets CAPABILITY CAP_SERVER AllFiles diff -r 1b758917cafc -r d721605b30d0 taskswitcher/taskswitcherui/taskswitcherapp/inc/tsappui.h --- a/taskswitcher/taskswitcherui/taskswitcherapp/inc/tsappui.h Wed Jun 09 09:29:04 2010 +0300 +++ b/taskswitcher/taskswitcherui/taskswitcherapp/inc/tsappui.h Mon Jun 21 15:27:11 2010 +0300 @@ -111,6 +111,13 @@ */ TBool IsForeground() const; + /** + * Checks if delayed foreground launch is taking place. + * + * @return ETrue if delayed foreground launch is in progress + */ + TBool DelayedForegroundLaunched(); + public: /** * From MTsCenrepChangeObserver @@ -176,6 +183,7 @@ TInt WgIdOfUnderlyingAppL( TBool aIgnoreParentChild ); static TInt GoToBackgroundTimerCallback( TAny* aParam ); + static TInt DelayedForegroundCallback( TAny* aParam ); /* * Returns id of top parent window group for embeded window group. @@ -198,6 +206,14 @@ * @return camera's window group id. */ TInt CheckForUnderlyingHiddenAppsL(); + + /** + * Checks if underlying application is multimedia application. + * + * @return ETrue if aplication on top of the app stack is multimedia application. + * Currently it recognises only camera app as multimedia app. + */ + TBool IsUnderlyingAppMultimediaL(); private: @@ -221,6 +237,11 @@ CPeriodic* iGoToBackgroundTimer; + // Delayed launch handling variables + CPeriodic* iForegroundDelayTimer; + TBool iForegroundDelayed; + TBool iDelayedForegroundInProgress; + TBool iEffectsEnabled; /** diff -r 1b758917cafc -r d721605b30d0 taskswitcher/taskswitcherui/taskswitcherapp/src/tsappui.cpp --- a/taskswitcher/taskswitcherui/taskswitcherapp/src/tsappui.cpp Wed Jun 09 09:29:04 2010 +0300 +++ b/taskswitcher/taskswitcherui/taskswitcherapp/src/tsappui.cpp Mon Jun 21 15:27:11 2010 +0300 @@ -68,6 +68,8 @@ const TUid KTsCameraUid = { 0x101F857a }; const TUid KTsTelephoneUid = { 0x100058b3 }; +const TInt KTsMultimediaAppActivationDelay = 1500000; + // ----------------------------------------------------------------------------- // CTsAppUi::ConstructL() // ConstructL is called by the application framework @@ -117,6 +119,7 @@ // Create timer iGoToBackgroundTimer = CPeriodic::NewL( CActive::EPriorityStandard ); + iForegroundDelayTimer = CPeriodic::NewL( CActive::EPriorityStandard ); // Create commonly used instances (device state only?) iDeviceState = CTsDeviceState::NewL(); @@ -169,6 +172,9 @@ iEikonEnv->WsSession().ComputeMode(RWsSession::EPriorityControlDisabled); RProcess().SetPriority(EPriorityHigh); + iForegroundDelayed = EFalse; + iDelayedForegroundInProgress = EFalse; + TSLOG_OUT(); } @@ -198,6 +204,7 @@ GfxTransEffect::SetTransitionObserver(0); delete iGoToBackgroundTimer; + delete iForegroundDelayTimer; delete iPropListener; delete iLayoutListener; @@ -548,6 +555,27 @@ } // ----------------------------------------------------------------------------- +// CTsAppUi::DelayedForegroundCallback +// ----------------------------------------------------------------------------- +// +TInt CTsAppUi::DelayedForegroundCallback( TAny* aParam ) + { + CTsAppUi* self = static_cast( aParam ); + self->iDelayedForegroundInProgress = ETrue; + + if ( self->iForegroundDelayTimer ) + { + self->iForegroundDelayTimer->Cancel(); + } + self->iForegroundDelayed = EFalse; + self->HandleSwitchToForegroundEvent(); + + self->iDelayedForegroundInProgress = EFalse; + + return 0; + } + +// ----------------------------------------------------------------------------- // CTsAppUi::MoveAppToForeground() // ----------------------------------------------------------------------------- // @@ -563,7 +591,21 @@ iApplicationTask.BringToForeground(); // Notify - HandleSwitchToForegroundEvent(); + TBool delayForeground(EFalse); + TRAP_IGNORE( delayForeground = IsUnderlyingAppMultimediaL() ); + if ( delayForeground ) + { + iForegroundDelayed = ETrue; + iForegroundDelayTimer->Cancel(); + iForegroundDelayTimer->Start( + KTsMultimediaAppActivationDelay, + 0, + TCallBack( DelayedForegroundCallback, this ) ); + } + else + { + HandleSwitchToForegroundEvent(); + } TSLOG_OUT(); } @@ -589,6 +631,8 @@ iAppView->HandleSwitchToBackgroundEvent(); iWg.SetOrdinalPosition(-1, ECoeWinPriorityNormal); + + iForegroundDelayed = EFalse; } TSLOG_OUT(); @@ -604,7 +648,7 @@ TSLOG_IN(); // must not do anything if iForeground is already up-to-date - if ( !iForeground ) + if ( !iForeground && !iForegroundDelayed ) { TInt freeRamMemory; HAL::Get( HALData::EMemoryRAMFree, freeRamMemory ); @@ -884,4 +928,37 @@ return wgId; } +// ----------------------------------------------------------------------------- +// CTsAppUi::IsUnderlyingAppMultimediaL +// ----------------------------------------------------------------------------- +// +TBool CTsAppUi::IsUnderlyingAppMultimediaL() + { + TBool retVal(EFalse); + + TApaTaskList taskList( iEikonEnv->WsSession() ); + TInt underlyingWg = taskList.FindByPos(0).WgId(); + + CApaWindowGroupName* windowName = + CApaWindowGroupName::NewLC( iEikonEnv->WsSession(), underlyingWg ); + TUid appUid = windowName->AppUid(); + CleanupStack::PopAndDestroy( windowName ); + if ( appUid == KTsCameraUid ) + { + retVal = ETrue; + } + + return retVal; + } + + +// ----------------------------------------------------------------------------- +// CTsAppUi::DelayedForegroundLaunched +// ----------------------------------------------------------------------------- +// +TBool CTsAppUi::DelayedForegroundLaunched() + { + return iDelayedForegroundInProgress; + } + // End of file diff -r 1b758917cafc -r d721605b30d0 taskswitcher/taskswitcherui/taskswitcherapp/src/tsfastswaparea.cpp --- a/taskswitcher/taskswitcherui/taskswitcherapp/src/tsfastswaparea.cpp Wed Jun 09 09:29:04 2010 +0300 +++ b/taskswitcher/taskswitcherui/taskswitcherapp/src/tsfastswaparea.cpp Mon Jun 21 15:27:11 2010 +0300 @@ -353,6 +353,12 @@ iGrid->ItemDrawer()->ColumnData()->SetDrawBackground(ETrue); static_cast(&iParent)->EnableDragEvents(EFalse); } + + // Update scrollbar frame + if( iGrid->ScrollBarFrame() ) + { + iGrid->SetScrollBarFrame(NULL,CEikListBox::EOwnedExternally); + } } @@ -424,7 +430,8 @@ TInt selIdx = SelectedIndex(); TRAPD(err, LayoutGridL(); - LayoutGridViewL( iArray.Count() ) + LayoutGridViewL( iArray.Count() ); + iEvtHandler.ReInitPhysicsL( GridWorldSize(), ViewSize(), ETrue ); ); if ( err != KErrNone ) @@ -900,7 +907,10 @@ iPrevAppCount = iArray.Count(); - iGrid->MakeVisible(ETrue); + if ( !appUi->DelayedForegroundLaunched() ) + { + iGrid->MakeVisible(ETrue); + } TSLOG_OUT(); } @@ -1182,6 +1192,7 @@ } else if(aSource == iRedrawTimer) { + iGrid->MakeVisible(ETrue); static_cast(&iParent)->OrderFullWindowRedraw(); } else if( aSource == iUpdateGridTimer )