idlehomescreen/widgetmanager/src/wmlistbox.cpp
branchRCL_3
changeset 15 ff572dfe6d86
parent 9 f966699dea19
child 16 9674c1a575e9
--- a/idlehomescreen/widgetmanager/src/wmlistbox.cpp	Fri Feb 19 22:42:37 2010 +0200
+++ b/idlehomescreen/widgetmanager/src/wmlistbox.cpp	Fri Mar 12 15:41:49 2010 +0200
@@ -30,11 +30,13 @@
 #include <gulicon.h>
 #include <widgetmanagerview.rsg>
 #include <widgetmanager.mbg>
+
 #include "wmcommon.h"
 #include "wmplugin.h"
 #include "wmresourceloader.h"
 #include "wmlistbox.h"
 #include "wmwidgetdata.h"
+#include "wmwidgetorderdata.h"
 
 // CONSTANTS
 
@@ -98,30 +100,6 @@
             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 );
     
     // This is temporary fix for ou1cimx1#228810
     // Can be removed when avkon provides real fix for this error.
@@ -165,10 +143,6 @@
     // dispose icons
     delete iDefaultLogoImage;
     delete iDefaultLogoImageMask;
-    delete iAddWidgetBtnImage;
-    delete iAddWidgetBtnMask;
-    delete iAddWidgetBtnHighlightImage;
-    delete iAddWidgetBtnHighlightMask;
 	}
 
 // ---------------------------------------------------------
@@ -179,8 +153,7 @@
     {
 	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 );
@@ -191,18 +164,6 @@
         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 );
     }
 	
 // ---------------------------------------------------------
@@ -239,7 +200,6 @@
                                   innerRect,
                                   KAknsIIDQsnFrList,
                                   KAknsIIDQsnFrListCenter );
-    
         }
     
     // DRAW LOGO
@@ -258,6 +218,7 @@
         logoLayout.DrawImage( gc, bitmap, mask );
         }
 
+    // DRAW NAME
     TRgb textColor;
     TAknsQsnTextColorsIndex index =
         ( aItemIsCurrent && listFocused && highlightEnabled )? 
@@ -265,9 +226,6 @@
 
     AknsUtils::GetCachedColor( 
                     skin, textColor, KAknsIIDQsnTextColors, index );
-
-    // DRAW TEXT
-
     TAknTextLineLayout titleTextLayout = 
               AknLayoutScalable_Apps::listrow_wgtman_pane_t1().LayoutLine();
 
@@ -275,38 +233,9 @@
     textLayoutTitle.LayoutText( itemRect, titleTextLayout );
     textLayoutTitle.DrawText( gc, wData.Name(), ETrue, textColor );
     
-    if ( !wData.IsUninstalling() &&
-        wData.HsContentInfo().CanBeAdded() )
+    if ( wData.IsUninstalling() )
         {
-        // DRAW ADD BUTTON
-        TAknLayoutRect addButtonLayout;
-        addButtonLayout.LayoutRect( itemRect,
-                AknLayoutScalable_Apps::listrow_wgtman_pane_g2().LayoutLine() );
-        if ( aItemIsCurrent && listFocused && highlightEnabled )
-            {
-            addButtonLayout.DrawImage( gc,                    
-                    iAddWidgetBtnHighlightImage, iAddWidgetBtnHighlightMask );
-            }
-        else
-            {
-            addButtonLayout.DrawImage( gc, 
-                    iAddWidgetBtnImage, iAddWidgetBtnMask );
-            }        
-        }
-
-    if ( !wData.IsUninstalling() )
-        {
-        TAknTextLineLayout descTextLayout =
-            AknLayoutScalable_Apps::listrow_wgtman_pane_t2().LayoutLine();
-        gc.SetPenSize(TSize(1,1));
-        // DRAW DESCRIPTION TEXT
-        TAknLayoutText textLayoutDes;
-        textLayoutDes.LayoutText( itemRect, descTextLayout );
-        textLayoutDes.DrawText( gc, wData.Description(), ETrue, textColor );
-        }
-    else
-        {
-        // draw animation
+        // DRAW UNINSTALL ANIMATION
         TAknLayoutRect animationLayout;
         animationLayout.LayoutRect( itemRect,
              AknLayoutScalable_Apps::wait_bar_pane_cp09().LayoutLine() );
@@ -346,65 +275,7 @@
 //
 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();
-        }
+    ResizeDefaultBitmaps();
     }
 
 // ---------------------------------------------------------
@@ -442,7 +313,8 @@
 //
 CWmListBox::~CWmListBox()
     {
-    iWidgetDatas.ResetAndDestroy();
+    iVisibleWidgetArray.ResetAndDestroy();
+    iOrderDataArray.ResetAndDestroy();
     }
 
 // ---------------------------------------------------------
@@ -458,7 +330,7 @@
     SetContainerWindowL( *aParent );    
 
     // set model point to the widgets array
-    Model()->SetItemTextArray( &iWidgetDatas );
+    Model()->SetItemTextArray( &iVisibleWidgetArray );
     Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
 
     // set empty-text to null
@@ -474,7 +346,7 @@
 CWmWidgetData* CWmListBox::WidgetData()
     {
     TInt index = CurrentListBoxItemIndex();
-    return (index>=0 ? iWidgetDatas[index] : NULL);
+    return (index>=0 ? iVisibleWidgetArray[index] : NULL);
     }
 
 // ---------------------------------------------------------
@@ -483,7 +355,7 @@
 //
 CWmWidgetData& CWmListBox::WidgetData( TInt aItemIndex )
     {
-    return *iWidgetDatas[ RealIndex( aItemIndex ) ];
+    return *iVisibleWidgetArray[ RealIndex( aItemIndex ) ];
     }
 
 // ---------------------------------------------------------
@@ -496,7 +368,7 @@
     if ( aWidgetData )
         {
         aWidgetData->SetObserver( this );
-        iWidgetDatas.InsertInOrderAllowRepeatsL( aWidgetData,
+        iVisibleWidgetArray.InsertInOrderAllowRepeatsL( aWidgetData,
             SortOrder(EStoredOrder) );
         if ( aRedraw ) { HandleItemAdditionL(); }
         }
@@ -511,12 +383,25 @@
     TInt realIndex = RealIndex( aItemIndex );
     TBool current = ( aItemIndex == CurrentItemIndex() );
     // remove widget data
-    CWmWidgetData* data = iWidgetDatas[realIndex];
-    iWidgetDatas.Remove( realIndex );
+    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++ )
+        {
+        CWmWidgetOrderData* order = iOrderDataArray[i];
+        if ( order->EqualsTo( data->Uid(), data->PublisherId() ) )
+            {
+            iOrderDataArray.Remove( i );
+            delete order;
+            order = NULL;
+            break;
+            }
+        }
     
     // delete now
     delete data;
@@ -540,10 +425,10 @@
 // CWmListBox::SetSortOrderL
 // ---------------------------------------------------------
 //
-void CWmListBox::SetSortOrderL( TSortOrder aOrder )
+void CWmListBox::DoSortToVisibleArray( TSortOrder aOrder )
     {
     // now sort the existing data
-    iWidgetDatas.Sort( SortOrder( aOrder ) );
+    iVisibleWidgetArray.Sort( SortOrder( aOrder ) );
     DrawNow();
     }
 
@@ -572,9 +457,9 @@
     {
     iLogoSize = TSize( 0, 0);
 	iLogoSize = LogoSize();
-    for ( TInt i=0; i<iWidgetDatas.Count(); i++)
+    for ( TInt i=0; i<iVisibleWidgetArray.Count(); i++)
         {
-        iWidgetDatas[i]->ReCreateLogo( iLogoSize );
+        iVisibleWidgetArray[i]->ReCreateLogo( iLogoSize );
         }
     }
 
@@ -601,7 +486,7 @@
     if ( !iFindPaneIsVisible )
         {
         // spontaneous change in the model. Cause table to redraw
-        TInt index = iWidgetDatas.Find( aWidgetData );
+        TInt index = iVisibleWidgetArray.Find( aWidgetData );
         if ( index >= 0 )
             {
             // redraw item.
@@ -763,5 +648,53 @@
     return NULL;
     }
 
+// ---------------------------------------------------------
+// CWmListBox::SortOrderToOrderData
+// ---------------------------------------------------------
+//
+TLinearOrder<CWmWidgetOrderData> CWmListBox::SortOrderToOrderData( TSortOrder aOrder )
+    {
+    if ( aOrder == EStoredOrder )
+        {
+        return TLinearOrder<CWmWidgetOrderData>(
+                CWmWidgetOrderData::CompareByPersistentWidgetOrder );
+        }
+    else
+        {
+        return TLinearOrder<CWmWidgetOrderData>(
+                CWmWidgetOrderData::CompareByName );
+        }
+    }
+
+// ---------------------------------------------------------
+// CWmListBox::SetSortOrderToOrderDataL
+// ---------------------------------------------------------
+//
+void CWmListBox::DoSortToOrderData( TSortOrder aOrder )
+    {
+    iOrderDataArray.Sort( SortOrderToOrderData( aOrder ) );
+    }
+
+// ---------------------------------------------------------
+// CWmListBox::AddWidgetDataL
+// ---------------------------------------------------------
+//
+void CWmListBox::AddOrderDataL( CWmWidgetOrderData* aOrderData )
+    {
+    if ( aOrderData )
+        {
+        iOrderDataArray.InsertInOrderAllowRepeatsL( aOrderData,
+                SortOrderToOrderData( EStoredOrder ) );
+        }
+    }
+
+// ---------------------------------------------------------
+// CWmListBox::OrderData
+// ---------------------------------------------------------
+//
+CWmWidgetOrderData* CWmListBox::OrderData( TInt aItemIndex )
+    {
+    return iOrderDataArray[ aItemIndex ];
+    }
 // End of File