browserutilities/browserdialogsprovider/Src/BrowserSelectElementDlg.cpp
changeset 11 c8a366e56285
parent 10 a359256acfc6
child 28 d39add9822e2
--- a/browserutilities/browserdialogsprovider/Src/BrowserSelectElementDlg.cpp	Thu Aug 27 07:44:59 2009 +0300
+++ b/browserutilities/browserdialogsprovider/Src/BrowserSelectElementDlg.cpp	Thu Sep 24 12:53:48 2009 +0300
@@ -79,9 +79,16 @@
     {
     // Create the active object for this object
     iAsyncExit = CBrowserDialogsProviderAsyncExit::NewL( *this );
-
     // Resource
-    TInt resource = R_AVKON_SOFTKEYS_OK_CANCEL__MARK;
+    iResource = R_AVKON_SOFTKEYS_OK_CANCEL__MARK;
+    // Enable find pane
+    TBool bIsFindPaneEnabled = (iBrCtlSelectOptionType & 0x100) ? ETrue : EFalse ;
+    
+    if(bIsFindPaneEnabled)
+        {
+        iBrCtlSelectOptionType = (TBrCtlSelectOptionType )(iBrCtlSelectOptionType & 0xEFF) ;
+        }
+    
     if (iBrCtlSelectOptionType == ESelectTypeSingle )
         {
         // It was decided that Radio Buttons add little value and unnecessary 
@@ -90,7 +97,7 @@
         }
     else if ( iBrCtlSelectOptionType == ESelectTypeOkOnly ) 
         {
-        resource = R_AVKON_SOFTKEYS_OK_EMPTY__OK;
+        iResource = R_AVKON_SOFTKEYS_OK_EMPTY__OK;
         }
 
     // Construct listbox and popup
@@ -100,7 +107,7 @@
             new ( ELeave ) CBrowserSelectElementListBox(
                                                     iBrCtlSelectOptionType, 
                                                     iOptionsOrg );
-        CAknPopupList::ConstructL( iListBox, resource, 
+        CAknPopupList::ConstructL( iListBox, iResource, 
                                                 AknPopupLayouts::EMenuWindow );
         iListBox->ConstructL( *this );
         iListBox->ItemDrawer()->ColumnData()->EnableMarqueeL( ETrue );
@@ -120,6 +127,7 @@
                         new ( ELeave ) CDesCArrayFlat ( KGranularityMedium );
 
         CleanupStack::PushL(items);
+        iResource = R_AVKON_SOFTKEYS_SELECT_CANCEL__SELECT;
         for ( TInt i = 0; i<iOptionsOrg.Count(); i++ )
             {
             items->AppendL( iOptionsOrg.At(i).Text() );
@@ -129,12 +137,8 @@
         iHistoryList = new ( ELeave ) CAknSinglePopupMenuStyleListBox;
 
         // create popup
-        CAknPopupList::ConstructL( iHistoryList, 
-                                            R_AVKON_SOFTKEYS_SELECT_CANCEL__SELECT, 
-                                            AknPopupLayouts::EMenuWindow );
-        
-        
-        
+        CAknPopupList::ConstructL( iHistoryList, iResource, AknPopupLayouts::EMenuWindow );
+                        
         iHistoryList->ConstructL( this, EAknListBoxSelectionList );
         iHistoryList->ItemDrawer()->ColumnData()->EnableMarqueeL( ETrue );
         iHistoryList->CreateScrollBarFrameL( ETrue );
@@ -142,7 +146,7 @@
                     ( CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto );
         
         CTextListBoxModel* model = iHistoryList->Model();
-    TBool hasItems = iOptionsOrg.Count();
+        TBool hasItems = iOptionsOrg.Count();
         if ( hasItems  ) 
             {
             model->SetItemTextArray( items );
@@ -160,8 +164,14 @@
           iHistoryList->SetCurrentItemIndex( 0 );
           }
         SetTitleL( aTitle );
-        EnableFind();
-        }    
+        if (bIsFindPaneEnabled)
+          {
+          EnableFind();
+          STATIC_CAST( CAknFilteredTextListBoxModel*,
+                    ListBox()->Model())->Filter()->SetObserver( this );
+          }        
+        }  
+    
     }
 
 //-----------------------------------------------------------------------------
@@ -202,14 +212,29 @@
                     aEventType == MCoeControlObserver::EEventRequestCancel ) )
         {
         AttemptExitL( EFalse );
-        }
-    //Some text has been written to findbox, in filtered selectioncase 
-    //highlight selectable item.
+        }   
     else if ( aControl == ((CCoeControl*)FindBox()) && 
-        aEventType == MCoeControlObserver::EEventStateChanged)
-        {
-        STATIC_CAST ( CBrowserSelectElementListBox*,
+        aEventType == MCoeControlObserver::EEventStateChanged )
+        {        
+        CEikButtonGroupContainer * cbaGroup = CEikButtonGroupContainer::Current();
+        /*Some text has been written to findbox, in filtered selectioncase 
+          highlight selectable item. */ 
+        if ( iBrCtlSelectOptionType != ESelectTypeNone)
+            {
+            STATIC_CAST ( CBrowserSelectElementListBox*,
                                         ListBox() )->HighlightSelectableItem();
+            }
+        if ( iBrCtlSelectOptionType == ESelectTypeOkOnly ) return;            
+        if ( STATIC_CAST( CAknFilteredTextListBoxModel*, ListBox()->Model())->Filter()->FilteredNumberOfItems() == 0 ) 
+            {
+            cbaGroup->SetCommandSetL(R_AVKON_SOFTKEYS_CANCEL); 
+            cbaGroup->DrawNow();             
+            } 
+        else  
+            {
+            cbaGroup->SetCommandSetL(iResource); 
+            cbaGroup->DrawNow(); 
+            }        
         }
     }