fep/aknfep/src/aknfepuserdbdlg.cpp
changeset 36 a7632c26d895
parent 35 0f326f2e628e
child 42 b3eaa440ab06
--- a/fep/aknfep/src/aknfepuserdbdlg.cpp	Fri Jul 23 16:49:01 2010 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1089 +0,0 @@
-/*
-* Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0""
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:            Implement method in dialog for user DB management
-*
-*/
-
-
-
-
-
-
-
-
-
-
-
-
-#include <aknlists.h> // CAknSingleStyleListBox
-#include <barsread.h> // TResource Reader
-#include <eikclbd.h> // CColumnListBoxData
-#include <aknsfld.h> //CAknSearchField
-#include <AknQueryDialog.h> //CAknTextQueryDialog
-#include <AknUtils.h> //AknSelectionService , CAknFilteredTextListBoxModel
-#include <StringLoader.h> //StringLoader 
-#include <aknnotewrappers.h> //CAknWarningNote 
-#include <AknProgressDialog.h> //CAknProgressDialog
-#include <AknDialog.h> //CAknDialog
-#include <akncontext.h> //CAknContextPane 
-#include <AknWaitDialog.h> //CAknWaitDialog 
-#include <AknProgressDialog.h> //CAknProgressDialog
-#include <eikprogi.h> //CEikProgressInfo 
-#include <eikbtgpc.h> //CEikButtonGroupContainer 
-#include <eikmenub.h> 
-#include <charconv.h> //CCnvCharacterSetConverter
-#include <f32file.h> //RFs
-#include <eikedwin.h> //CEikEdwin 
-#include <akntitle.h> //CAknTitlePane 
-#include <aknfep.rsg>
-#include "AknFep.hrh"
-#include "aknfepuserdbdlg.h"
-#include "dbmanagement.h"
-#include "AknFepManagerUIInterface.h"
-#include "AknFepManager.h"  
-#include "aknfepuserdbquerydlg.h"
-
-const TInt KListBoxItemMaxLength = 8;
-const TInt KErrMsgMaxLength = 60;
-const TInt KFindBoxInputMaxLength = 7;
-const TInt KCDesCArraySize = 1;
-_LIT( KItemStart, "\t" );
-_LIT( KSearchTextEmpty, "" );
-
-CAknFepUserdbDlg::CAknFepUserdbDlg( 
-    TInt &aValue, CArrayFix< TInt> *aSelectedItems, MDesCArray *aArray,
-    CPtiEngine* aPtiEngine, CAknFepManager* aOwner, MEikCommandObserver *aObserver) :
-    CAknMarkableListDialog( aValue, aSelectedItems, aArray, aObserver ),
-    iPtiEngine( aPtiEngine ),
-    iOwner( aOwner ),
-    iOldIndex( 0 ),
-    iOldLanguage( 0 ),
-    iOldCbaRes( 0 )
-    {
-    // No implementation required
-    }
-
-CAknFepUserdbDlg::~CAknFepUserdbDlg()
-    {
-    delete iDBEngine;
-    iDBEngine = NULL;
-    iPtiEngine = NULL;
-    iOwner = NULL;  
-    iQueryDlg = NULL;
-    if ( iEikonEnv && iContextMenuBar )
-        {
-        iEikonEnv->EikAppUi()->RemoveFromStack( iContextMenuBar );
-        delete iContextMenuBar;
-        }
-    }
-
-CAknFepUserdbDlg* CAknFepUserdbDlg::NewL(
-    TInt &aOpenedItem, CArrayFix< TInt> *aSelectedItems, MDesCArray *aArray,
-    TInt aMenuBarResourceId, CPtiEngine* aPtiEngine, CAknFepManager* aOwner,
-    MEikCommandObserver *aObserver )
-    {
-    CAknFepUserdbDlg* self = new( ELeave ) CAknFepUserdbDlg( aOpenedItem, 
-        aSelectedItems, aArray, aPtiEngine, aOwner, aObserver );
-    CleanupStack::PushL( self );
-    self->ConstructL( aMenuBarResourceId );
-    CleanupStack::Pop( self ); // self;
-    return self;
-    }
-	
-void CAknFepUserdbDlg::ConstructL( TInt aMenuBarResourceId )
-    {
-    CAknSelectionListDialog::ConstructL( aMenuBarResourceId );
-    this->PrepareLC( R_AKNFEP_LISTDLG_DIALOG );
-    HBufC* message = StringLoader::LoadLC( R_AKNFEP_USER_DB_LIST_NO_ITEM_TEXT );
-    ListBox()->View()->SetListEmptyTextL( *message );
-    ConstructContextMenuL();
-    
-    //the DB engine init
-    iDBEngine = CDBManagement::NewL( iOwner );
-    CleanupStack::PopAndDestroy( message ); //message
-    }
-
-TBool CAknFepUserdbDlg::InitListBoxItemL()
-    {
-    iItems = new( ELeave ) CDesCArrayFlat( KCDesCArraySize );
-    
-    TBuf<KErrMsgMaxLength> errMsg;
-    
-    //get the phrases from the DB
-    if ( !iDBEngine->GetPhraseFromDBL( *iItems ) )
-        {
-        iDBEngine->GetErrMsg( errMsg );
-        //note fot err message
-        CAknWarningNote* note = new( ELeave ) CAknWarningNote();
-        note->SetTone( CAknNoteDialog::EWarningTone );
-        note->ExecuteLD( errMsg );  
-        }
-    else
-        {
-        InsertIconL( iItems );
-        }  
-    CAknSingleStyleListBox* listBox=
-                static_cast<CAknSingleStyleListBox*>( Control( ESelectionListControl ) );
-    CTextListBoxModel* model = listBox->Model(); 
-    if ( iItems && iItems->Count() != 0 )
-        {
-        model->SetItemTextArray( iItems );
-        model->SetOwnershipType( ELbmOwnsItemArray );
-        ListBox()->HandleItemAdditionL();
-        return ETrue;
-        }
-    else
-        {
-        model->SetItemTextArray( iItems );
-        model->SetOwnershipType( ELbmOwnsItemArray );
-        return EFalse;
-        }
-    }
-
-void CAknFepUserdbDlg::AddItemL()
-    {
-    CAknSingleStyleListBox* listbox =
-        static_cast<CAknSingleStyleListBox*>( Control( ESelectionListControl ) );
-    // New item text
-    TBuf<KListBoxItemMaxLength> itemText;
-    TBuf<KErrMsgMaxLength> errMsg;     
-    if ( FindBox()->TextLength() != 0 )
-        {
-        FindBox()->GetSearchText( itemText );
-        }
-    FindBox()->SetFocus( EFalse );
-    HBufC* prompt = StringLoader::LoadLC( R_AKNFEP_USER_DB_LIST_ADD_ITEM_TEXT );
-    CAknFepUserDBQueryDlg* dialog = 
-        CAknFepUserDBQueryDlg::NewL( iDBEngine, itemText, *prompt );
-    iQueryDlg = dialog;
-    CleanupStack::PopAndDestroy( prompt );   
-    //Execute dialog, 
-    //In the dialog it will check input and show waring not
-    if ( dialog->ExecuteLD( R_AKNFEP_LISTBOX_DATA_QUERY_DIALOG ) )
-        {
-        TInt currentIndex = 0;
-        CAknFilteredTextListBoxModel* model = 
-            static_cast<CAknFilteredTextListBoxModel*>( ListBox()->Model() );
-        CDesCArray* itemArray =
-                static_cast<CDesC16ArrayFlat*>( model->ItemTextArray() );
-        
-        //Add '\t' at the beginning of itemText for find
-        itemText.Insert( 0, KItemStart() );
-        //
-        TInt ret = itemArray->Find( itemText, currentIndex, ECmpCollated);
-        if ( ret != 0 )
-            {
-            //add the phrase to db
-            itemText.Trim();
-            if ( !iDBEngine->AddPhraseToDB(  itemText ) )
-            	{
-            	iDBEngine->GetErrMsg( errMsg );
-                //note fot err message
-                CAknWarningNote* note = new( ELeave ) CAknWarningNote();
-                note->SetTone( CAknNoteDialog::EWarningTone );
-                note->ExecuteLD( errMsg );  
-                // add by chen  
-            	return;
-            	}
-            // Add '\t' in front of text
-            itemText.Insert( 0, KItemStart() );
-            // Insert item to the item array 
-            if ( itemArray->Count() > 0 )
-                {
-                itemArray->InsertL( currentIndex, itemText );
-                }
-            else
-                {
-                itemArray->InsertL( 0, itemText );
-                }        
-            // Update the listbox
-            listbox->HandleItemAdditionL();
-            itemArray->Sort(ECmpCollated);
-            
-            FindBox()->SetSearchTextL( KSearchTextEmpty );
-            ResetSearchFieldL();
-            model->Filter()->HandleItemArrayChangeL();
-            
-            //Highlight the item you have just edited
-            itemArray->Find( itemText, currentIndex, ECmpCollated );
-            listbox->SetCurrentItemIndexAndDraw( currentIndex );
-
-            }
-        else
-            {
-            FindBox()->SetSearchTextL( KSearchTextEmpty );
-            ResetSearchFieldL();
-            listbox->SetCurrentItemIndexAndDraw( currentIndex );
-            }
-        
-        model->Filter()->UpdateCachedDataL();
-        UpdateListBoxL();
-        }
-    }
-
-void CAknFepUserdbDlg::RemoveItemL()
-    {       
-    //error message
-    TBuf<KErrMsgMaxLength> errMsg;
-    TBuf<KListBoxItemMaxLength> removePhrase; 
-    TInt oldIndex = ListBox()->View()->CurrentItemIndex();    
-    CAknFilteredTextListBoxModel* model = 
-        static_cast<CAknFilteredTextListBoxModel*>( ListBox()->Model() );
-    CDesCArrayFlat* item =
-        static_cast<CDesCArrayFlat*>( model->ItemTextArray() );
-    model->Filter()->UpdateSelectionIndexesL();
-    TInt markItems = model->Filter()->SelectionIndexes()->Count();    
-    if ( markItems )
-        {       
-        HBufC * message = StringLoader::LoadLC(
-            R_AKNFEP_DELETE_CONFIRMATION_TEXT, markItems,
-            iEikonEnv ); //message
-        CAknQueryDialog* delsomenote =
-            CAknQueryDialog::NewL( CAknQueryDialog::EConfirmationTone );       
-        delsomenote->SetPromptL( *message );
-        if ( delsomenote->ExecuteLD( R_AKNFEP_DELETE_QUERY_DIALOG ) )
-            {  
-            iProgressDialog = new (ELeave) CAknProgressDialog(
-                ( REINTERPRET_CAST( CEikDialog**, &iProgressDialog ) ), ETrue );
-            iProgressDialog->PrepareLC( R_AKNFEP_WAIT_DIALOG );
-            iProgressInfo = iProgressDialog->GetProgressInfoL();
-            iProgressInfo->SetFinalValue( markItems ); 
-            iProgressDialog->RunLD();           
-            CArrayFix<TInt>* selectionArray = new( ELeave ) CArrayFixFlat<TInt>( markItems );
-            CleanupStack::PushL( selectionArray ); //message, selectionArray          
-            //loop for copy selection index
-            for ( TInt idx = markItems; idx > 0; idx-- )
-                {
-                selectionArray->AppendL( model->Filter()->SelectionIndexes()->At( idx-1 ) );
-                }           
-            TKeyArrayFix* key= new (ELeave) TKeyArrayFix(0, ECmpTInt);
-            CleanupStack::PushL( key ); //message, selectionArray, key        
-            //sort selection array
-            selectionArray->Sort( *key );           
-            CleanupStack::PopAndDestroy( key ); //message, selectionArray 
-            // loop throught the selected item indexes, and delete items
-            for ( TInt idx = markItems; idx > 0; idx-- )
-                {
-                // get the index of the selected item
-                TInt itemIndex = selectionArray->At( idx-1 );
-                //romve the phrase form the db
-	            removePhrase.Copy( item->MdcaPoint( itemIndex ) );
-	            removePhrase.Trim();
-	            if( !iDBEngine->RemovePhraseFromDB(  removePhrase ) )
-	            	{
-                    iDBEngine->GetErrMsg( errMsg );
-                    iProgressDialog->ProcessFinishedL();
-                    iProgressDialog = NULL;  
-	                CleanupStack::PopAndDestroy( selectionArray ); //message    
-	                CleanupStack::PopAndDestroy( message );//
-	                //note fot err message
-	                CAknWarningNote* errnote = new( ELeave ) CAknWarningNote();
-	                errnote->SetTone( CAknNoteDialog::EWarningTone );
-	                errnote->ExecuteLD( errMsg );
-	            	return;
-	            	}
-                iProgressInfo->IncrementAndDraw(1);    
-                //delte the item
-                item->Delete( itemIndex );
-                }            
-            CleanupStack::PopAndDestroy( selectionArray ); //message            
-            iProgressDialog->ProcessFinishedL();
-            iProgressDialog = NULL;              
-
-            // Update the listbox
-            ResetSearchFieldL();
-            ListBox()->HandleItemRemovalL();
-            model->Filter()->HandleItemArrayChangeL();
-            model->Filter()->SelectionIndexes()->Reset();
-            ListBox()->View()->ClearSelection();
-            }
-        CleanupStack::PopAndDestroy( message );//
-        }
-    else
-        {
-        HBufC * message = StringLoader::LoadLC(
-            R_AKNFEP_DELETE_CONFIRMATION_TEXT, 1, 
-            iEikonEnv );
-        CAknQueryDialog* delonenote =
-            CAknQueryDialog::NewL( CAknQueryDialog::EConfirmationTone );
-        delonenote->SetPromptL( *message );        
-        if ( delonenote->ExecuteLD( R_AKNFEP_DELETE_QUERY_DIALOG ) )
-            {    
-            //remove from db
-            removePhrase.Copy( model->ItemText( ListBox()->CurrentItemIndex() ) );
-            removePhrase.Delete( 0, 1 );
-            if( !iDBEngine->RemovePhraseFromDB( removePhrase ) )
-                {
-                iDBEngine->GetErrMsg( errMsg );
-                //note fot err message
-                CAknWarningNote* errnote = new( ELeave ) CAknWarningNote();
-                errnote->ExecuteLD( errMsg );   
-                CleanupStack::PopAndDestroy( message );
-                return;
-                }            
-            TInt itemIndex = ListBox()->View()->CurrentItemIndex();           
-            //get the actual index of list
-            TInt actualIndex = FindActualIndex( itemIndex );            
-            // Remove highlighted item from the listbox.
-            item->Delete( actualIndex );  
-            // Update the listbox
-            ResetSearchFieldL();
-            }
-        CleanupStack::PopAndDestroy( message );
-        }
-    // If focused item is out of range, bring it forth
-    if ( ( ( item->Count()-1 ) >= 0 ) && FindBox()->TextLength() == 0 )
-        {
-        if ( ( oldIndex > ( item->Count()-1 ) ))
-            {
-            ListBox()->SetCurrentItemIndexAndDraw( item->Count()-1 );
-            }
-        else
-            {
-            ListBox()->SetCurrentItemIndexAndDraw( oldIndex );
-            }
-        } 
-    UpdateListBoxL();
-    }
-
-void CAknFepUserdbDlg::EditItemL()
-    {
-    CAknSingleStyleListBox* listbox = 
-        static_cast<CAknSingleStyleListBox*>( Control( ESelectionListControl ) );        
-       
-    // If we don't have items, do nothing and return
-    if ( listbox->Model()->NumberOfItems() < 1 )
-        {
-        return;
-        }
-    CTextListBoxModel* model = listbox->Model();
-    // New item text
-    TBuf<KListBoxItemMaxLength> itemText;
-    TBuf<KErrMsgMaxLength> errMsg;
-    TBuf<KListBoxItemMaxLength> itemOldText;
-    itemText.Copy( model->ItemText(listbox->CurrentItemIndex () ) );
-    itemText.Trim();
-    itemOldText.Copy( model->ItemText( listbox->CurrentItemIndex() ) );
-    itemOldText.Trim();    
-    HBufC* prompt = StringLoader::LoadLC( R_AKNFEP_USER_DB_LIST_EDIT_ITEM_TEXT );
-    CAknFepUserDBQueryDlg* dialog = 
-        CAknFepUserDBQueryDlg::NewL( iDBEngine, itemText, *prompt );
-    iQueryDlg = dialog;
-    CleanupStack::PopAndDestroy( prompt );
-    // Execute dialog
-    if ( dialog->ExecuteLD( R_AKNFEP_LISTBOX_DATA_QUERY_DIALOG ) )
-        {
-        TInt currentIndex = 0;
-        CDesCArray* itemArray = 
-            static_cast<CDesC16ArrayFlat*>( model->ItemTextArray() );
-        
-        // Add '\t' in front of text for find
-        itemText.Insert( 0, KItemStart() );
-        //Find if the text is exist
-        TInt ret = itemArray->Find( itemText, currentIndex, ECmpCollated );
-        if ( ret != 0 )
-            {
-            //edit the phrase from db
-            itemText.Trim();
-            if(!iDBEngine->EditPhraseFromDB(  itemOldText, itemText ) )
-            	{
-            	iDBEngine->GetErrMsg( errMsg );
-            
-                //note fot err message
-                CAknWarningNote* note = new( ELeave ) CAknWarningNote();
-                note->ExecuteLD( errMsg );            	                	
-                return;
-                }
-            currentIndex = ListBox()->CurrentItemIndex();
-            //get the actual index of list
-            TInt actualIndex = FindActualIndex( currentIndex );
-            
-            // Remove highlighted item from the listbox.
-            itemArray->Delete( actualIndex );
-
-            // Add '\t' in front of text
-            itemText.Insert( 0, KItemStart() );
-            
-            // Insert item to the item array
-            itemArray->InsertL( actualIndex, itemText );
-            
-            // Update the listbox
-            listbox->HandleItemAdditionL();
-            itemArray->Sort(ECmpCollated);
-            
-            if ( FindBox()->TextLength() != 0 )
-                {
-                FindBox()->SetSearchTextL( KSearchTextEmpty );
-                ResetSearchFieldL();
-                }
-                        
-            ListBox()->View()->ClearSelection();
-            CAknFilteredTextListBoxModel* filterModel = 
-                static_cast<CAknFilteredTextListBoxModel*>( ListBox()->Model() );
-            filterModel->Filter()->HandleItemArrayChangeL();
-            filterModel->Filter()->UpdateCachedDataL();
-            
-            //SetHightlight
-            itemArray->Find( itemText, currentIndex, ECmpCollated );
-            ListBox()->SetCurrentItemIndexAndDraw( currentIndex );
-            }
-        else
-            {
-            //get the actual index of list
-            TInt actualIndex = FindActualIndex( listbox->CurrentItemIndex() );
-            if ( currentIndex != actualIndex )
-                {
-                itemOldText.Copy( model->ItemText( listbox->CurrentItemIndex() ) );
-                itemOldText.Trim();
-                //Here need user db engine
-                if( !iDBEngine->RemovePhraseFromDB( itemOldText ) )
-                    {
-                    iDBEngine->GetErrMsg( errMsg );
-                
-                    //note fot err message
-                    CAknWarningNote* note = new( ELeave ) CAknWarningNote();
-                    note->ExecuteLD( errMsg );                    
-                    return;
-                    }
-                 
-                currentIndex = ListBox()->CurrentItemIndex();
-                
-                //get the actual index of list
-                actualIndex = FindActualIndex( currentIndex );
-                
-                // Remove highlighted item from the listbox.
-                itemArray->Delete( actualIndex );
-                
-                listbox->HandleItemRemovalL();
-                itemArray->Sort(ECmpCollated);
-                
-                if ( FindBox()->TextLength() != 0 )
-                    {
-                    FindBox()->SetSearchTextL( KSearchTextEmpty );
-                    ResetSearchFieldL();
-                    }
-                
-                ListBox()->View()->ClearSelection();
-                CAknFilteredTextListBoxModel* filterModel = 
-                    static_cast<CAknFilteredTextListBoxModel*>( ListBox()->Model() );
-                filterModel->Filter()->HandleItemArrayChangeL();
-                filterModel->Filter()->UpdateCachedDataL();
-
-                //SetHightlight
-                itemArray->Find( itemText, currentIndex, ECmpCollated );
-                ListBox()->SetCurrentItemIndexAndDraw( currentIndex );
-                }
-            }
-        UpdateListBoxL();
-        }
-    }
-
-void CAknFepUserdbDlg::CmdMarkL( TInt aItemIndex, TBool aMark )
-    {
-    CAknSingleStyleListBox* listbox = 
-        static_cast<CAknSingleStyleListBox*>( Control( ESelectionListControl ) );
-    CTextListBoxModel* model = listbox->Model();
-    TInt itemCount = model->NumberOfItems();
-    CListBoxView* listBoxView = listbox->View();
-    if ( aMark )
-        {
-        for ( TInt i = 0; i < itemCount; i++ )
-            if ( aItemIndex == -1 || aItemIndex == i )
-                listBoxView->SelectItemL( i );
-        }
-    else
-        {
-        for ( TInt i = 0; i < itemCount; i++ )
-            {
-            if ( aItemIndex == -1 || aItemIndex == i )
-                {
-                listBoxView->DeselectItem( i );
-                }
-            }
-        }
-    CAknFilteredTextListBoxModel* filterModel = 
-        static_cast<CAknFilteredTextListBoxModel*>( ListBox()->Model() );
-    filterModel->Filter()->UpdateCachedDataL();
-    }
-
-void CAknFepUserdbDlg::ChangeCurrentCbaL ( TInt aCbaResourceId )
-    {
-    if ( iOwner->IsEntryPhrase() || iOldCbaRes == aCbaResourceId )
-        {
-        return;
-        }
-    CEikButtonGroupContainer& cba = ButtonGroupContainer();
-    cba.SetCommandSetL( aCbaResourceId );
-    cba.AddCommandSetToStackL( aCbaResourceId );
-    iOldCbaRes = aCbaResourceId;
-    cba.DrawNow();
-    }
-
-void CAknFepUserdbDlg::ProcessCommandL( TInt aCommandId )
-    {   
-    HideMenu();
-    
-    iContextMenuBar->StopDisplayingMenuBar();
-    
-    switch ( aCommandId )
-        {
-        case EAknCmdUserDBAdd:
-            {
-            AddItemL();
-            }
-            break;
-        case EAknCmdUserDBEdit:
-            {
-            EditItemL();
-            }
-            break;
-        case EAknCmdUserDBDelete:
-            {
-            RemoveItemL();
-            }
-            break;
-        case EAknCmdMark:
-        case EAknMarkAll:
-        case EAknCmdUnmark: 
-        case EAknUnmarkAll:
-            {
-            AknSelectionService::HandleMarkableListProcessCommandL( aCommandId, ListBox() );
-            UpdateListBoxL( aCommandId );
-            }
-            break;
-        default:
-            {
-            break;
-            }
-        }
-    }
-
-TBool CAknFepUserdbDlg::OkToExitL( TInt aButtonId )
-    {
-    switch ( aButtonId )
-        {
-        case EAknSoftkeyOptions:
-            {
-            CAknSelectionListDialog::DisplayMenuL(); // display the menu
-            }
-            break;
-        case EAknCmdUserDBAdd:
-            {
-            ProcessCommandL(EAknCmdUserDBAdd);
-            }
-            break;
-        case EAknSoftkeyMark:
-            {
-            TInt ItemCount = ListBox()->Model()->NumberOfItems(); 
-            TInt selectedItem = ListBox()->SelectionIndexes()->Count();
-            if ( selectedItem < 1 && ItemCount > 0 )
-                {
-                //Show options-context-exit cba
-                ChangeCurrentCbaL ( R_AKNFEP_SOFTKEYS_LIST_OPTIONS_EXIT_CONTEXT );
-                }
-            }
-            break;
-        case EAknSoftkeyUnmark:
-            {
-            TInt ItemCount = ListBox()->Model()->NumberOfItems(); 
-            TInt selectedItem = ListBox()->SelectionIndexes()->Count();
-            if ( selectedItem == 0 && ItemCount > 0 )
-                {
-                //Show options-context-exit cba
-                ChangeCurrentCbaL ( R_AKNFEP_SOFTKEYS_LIST_OPTIONS_EXIT_CONTEXT );
-                }
-            }
-            break;
-        case EAknSoftkeyContextOptions:
-            {
-            TInt items = ListBox()->Model()->NumberOfItems();
-            if ( items )
-                {
-                ShowContextMenuL();
-                }
-            }
-            break;
-        case EAknCmdMark:
-        case EAknMarkAll:
-        case EAknCmdUnmark: 
-        case EAknUnmarkAll:
-            {
-            ProcessCommandL( aButtonId );
-            }
-            break;
-        case EAknSoftkeyExit:
-            {
-            return ETrue;
-            }
-        default:
-            {
-            break;
-            }
-        }
-    
-    return EFalse;
-    }
-
-void CAknFepUserdbDlg::FocusChanged(TDrawNow aDrawNow)
-	{
-	if ( aDrawNow == EDrawNow )
-		{
-	    if ( ( FindBox()->IsVisible() && !iOwner->IsEntryPhrase()) )
-	        {
-	        FindBox()->SetFocus( ETrue );
-	        }
-		}
-	}
-
-void CAknFepUserdbDlg::DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane )
-    {  
-    if ( aResourceId == R_AKNFEP_USERDB_DLG_MENU )
-        {
-        const CArrayFix<TInt>* itemArray = ListBox()->SelectionIndexes();
-        if ( itemArray->Count() != 0 )
-            {
-            aMenuPane->SetItemDimmed( EAknCmdUserDBAdd, ETrue );
-            aMenuPane->SetItemDimmed( EAknCmdUserDBEdit, ETrue );
-            }
-        else
-            {
-            aMenuPane->SetItemDimmed( EAknCmdUserDBAdd, EFalse );
-            aMenuPane->SetItemDimmed( EAknCmdUserDBEdit, EFalse );
-            }
-        }        
-    if ( aResourceId == R_AKNFEP_MARK_UNMARK_MENUPANE )
-        {
-        TInt currentIndex = ListBox()->CurrentItemIndex();
-        TInt selectedItem = ListBox()->SelectionIndexes()->Count();
-        TInt listItems = ListBox()->Model()->NumberOfItems();
-    
-        // Display mark, mark all
-        if ( selectedItem == 0 )
-            {
-            aMenuPane->SetItemDimmed( EAknCmdUnmark, ETrue );
-            aMenuPane->SetItemDimmed( EAknUnmarkAll, ETrue );
-            return;
-            }
-        // Display unmark, unmark all
-        if ( selectedItem == listItems )
-            {
-            aMenuPane->SetItemDimmed( EAknCmdMark, ETrue );
-            aMenuPane->SetItemDimmed( EAknMarkAll, ETrue );
-            return;
-            }
-        TBool isMarked = EFalse;
-        
-        for ( TInt i = 0; i < selectedItem; i++ )
-            {
-            TInt selectedId = ListBox()->SelectionIndexes()->At( i );
-            if ( selectedId == currentIndex )
-                {
-                isMarked = ETrue;
-                }
-            }
-
-        if ( isMarked )
-            {
-            aMenuPane->SetItemDimmed( EAknCmdMark, ETrue );
-            }
-        else
-            {
-            aMenuPane->SetItemDimmed( EAknCmdUnmark, ETrue );
-            }
-        }
-    }
-
-TKeyResponse CAknFepUserdbDlg::OfferKeyEventL( const TKeyEvent& aKeyEvent, 
-                                               TEventCode aType )
-    {   
-    TKeyResponse ret(EKeyWasNotConsumed);
-    
-    CAknFilteredTextListBoxModel* filterModel = 
-        static_cast<CAknFilteredTextListBoxModel*>( ListBox()->Model() );
-    
-    TInt ItemCount = ListBox()->Model()->NumberOfItems();  
-    
-    ListBoxItemsChanged( ListBox() );
-    
-    if ( ret != EKeyWasConsumed && aKeyEvent.iCode == EKeyPhoneEnd )
-        {
-        TryExitL( EAknSoftkeyExit );
-        return EKeyWasConsumed;
-        }
-    
-    TBool claerKeyPressed = ( aType == EEventKey ) && ( aKeyEvent.iCode ==  EKeyBackspace );
-    if( claerKeyPressed && ItemCount > 0 && FindBox()->TextLength() == 0 )
-        {
-        ProcessCommandL(EAknCmdUserDBDelete);
-        UpdateListBoxL();
-        ret =  EKeyWasConsumed;
-        }
-    else
-        {
-        if ( FindBox()->IsVisible() )
-            {
-            ret = CAknMarkableListDialog::OfferKeyEventL( aKeyEvent, aType );
-            }
-        else
-            {
-            ret =  ListBox()->OfferKeyEventL( aKeyEvent, aType );
-            }
-        }
-       
-    if ( ret != EKeyWasConsumed && aType == EEventKey &&
-         aKeyEvent.iCode == EKeyOK )
-        {
-        iContextMenuBar->TryDisplayMenuBarL();
-        ret = EKeyWasConsumed;
-        }
-            
-    return ret;
-    }
-
-void CAknFepUserdbDlg::PostLayoutDynInitL()
-    {
-    CAknMarkableListDialog::PostLayoutDynInitL();
-    FindBox()->Editor().SetMaxLength( KFindBoxInputMaxLength );
-    ListBox()->SetObserver( this );
-    ListBox()->AddItemChangeObserverL( this );
-    
-    InitListBoxItemL();
-    UpdateListBoxL();
-
-    return;
-    }
-
-void CAknFepUserdbDlg::ConstructContextMenuL()
-    {
-    CEikMenuBar* newMenuBar = new ( ELeave ) CEikMenuBar();
-    CleanupStack::PushL( newMenuBar );
-    newMenuBar->ConstructL
-        ( this, NULL, R_AKNFEP_USERDB_DLG_CONTEXT_MENUBAR );
-    iEikonEnv->EikAppUi()->AddToStackL( newMenuBar, ECoeStackPriorityMenu,
-        ECoeStackFlagRefusesFocus );
-    iContextMenuBar = newMenuBar;
-    CleanupStack::Pop( newMenuBar );
-    }
-
-void CAknFepUserdbDlg::HandleListBoxEventL(CEikListBox* /*aListBox*/, TListBoxEvent aEventType)
-    {
-    CTextListBoxModel* model = static_cast<CTextListBoxModel*>( ListBox()->Model() );
-    CDesCArrayFlat* itemArray =
-            static_cast<CDesCArrayFlat*>( model->ItemTextArray() );
-    TInt listItems = itemArray->Count();
-    
-    if ( !listItems )
-        {
-        return;
-        }
-    
-    CAknSelectionListDialog::HandleListBoxEventL( ListBox(), aEventType );
-    
-    switch ( aEventType )
-        {
-        case EEventItemDoubleClicked:
-            {
-            TInt selectItems = ListBox()->SelectionIndexes()->Count();
-            if ( selectItems )
-                {
-                iOldIndex = ListBox()->CurrentItemIndex();
-                MarkOrUnmarkItemL();
-                }
-            else
-                {
-                ShowContextMenuL();
-                }
-            }
-            break;
-        default:
-            break;
-        }
-    }
-
-
-void CAknFepUserdbDlg::ResetSearchFieldL()
-    {
-    CAknFilteredTextListBoxModel* selectmodel = 
-        static_cast<CAknFilteredTextListBoxModel*>( ListBox()->Model() );
-    selectmodel->Filter()->HandleItemArrayChangeL(); 
-    }
-
-TInt CAknFepUserdbDlg::FindActualIndex( const TInt aItemIndex )
-    {
-    TInt itemIndex;
-    CTextListBoxModel* model = 
-        static_cast<CTextListBoxModel*>( ListBox()->Model() );
-    CDesCArrayFlat* itemArray =
-        static_cast<CDesCArrayFlat*>( model->ItemTextArray() );
-    //get the real index of list
-    TBuf<KListBoxItemMaxLength> itemText;
-    itemText.Copy( model->ItemText(aItemIndex) );
-    itemArray->Find( itemText, itemIndex, ECmpCollated );
-    return itemIndex;
-    }
-
-void CAknFepUserdbDlg::ShowContextMenuL()
-    {
-    iContextMenuBar->SetMenuTitleResourceId( R_AKNFEP_USERDB_DLG_CONTEXT_MENUBAR );
-    iContextMenuBar->SetMenuType( CEikMenuBar::EMenuContext );
-    iContextMenuBar->StopDisplayingMenuBar();
-    iContextMenuBar->TryDisplayMenuBarL();
-    iContextMenuBar->SetMenuTitleResourceId( R_AKNFEP_USERDB_DLG_MENUBAR );
-    iContextMenuBar->SetMenuType( CEikMenuBar::EMenuOptions );
-    }
-
-void CAknFepUserdbDlg::MarkOrUnmarkItemL()
-    {
-    TInt selectIndex = 0;
-    TKeyArrayFix* key= new (ELeave) TKeyArrayFix( 0, ECmpTInt32 );
-    CleanupStack::PushL( key );
-    TInt index = ListBox()->CurrentItemIndex();
-    const CArrayFix<TInt>* selectitemArray = ListBox()->SelectionIndexes();
-    TInt ret = selectitemArray->Find( index, *key, selectIndex );
-    if ( ret == 0)
-        {
-        ProcessCommandL( EAknCmdUnmark );
-        }
-    else
-        {
-        ProcessCommandL( EAknCmdMark );
-        }
-    CleanupStack::PopAndDestroy( key );
-    }
-
-void CAknFepUserdbDlg::InsertIconL( CDesC16Array* aDataArray )
-    {
-    TBuf<KListBoxItemMaxLength> itemText;
-    for ( TInt i = 0; i < aDataArray->Count(); i++ )
-        {
-        itemText = aDataArray->MdcaPoint( i );
-        itemText.Insert( 0, KItemStart );
-        aDataArray->Delete( i );
-        aDataArray->InsertL( i, itemText );
-        }
-    aDataArray->Sort( ECmpCollated );
-    }
-
-void CAknFepUserdbDlg::OnChangeLanguageL( TInt aInputLanguage )
-    {
-    if ( aInputLanguage != ELangPrcChinese &&
-    	 aInputLanguage != ELangTaiwanChinese &&
-    	 aInputLanguage != ELangHongKongChinese )
-    	{
-    	if ( iQueryDlg && iQueryDlg->IsVisible() )
-    		{
-    		delete iQueryDlg;
-    		iQueryDlg = NULL;
-    		}
-    	this->TryExitL( EAknSoftkeyExit );
-    	return;
-    	}
-    if ( iOldLanguage == aInputLanguage )
-        {
-        return;
-        }
-    iOldLanguage = aInputLanguage;
-    
-    CAknFilteredTextListBoxModel* model = 
-        static_cast<CAknFilteredTextListBoxModel*>( ListBox()->Model() );
-    CDesCArrayFlat* itemArray =
-            static_cast<CDesCArrayFlat*>( model->ItemTextArray() );
-    TBuf<KErrMsgMaxLength> errMsg;   
-
-    AknSelectionService::HandleMarkableListProcessCommandL( EAknUnmarkAll, ListBox() );
-    itemArray->Reset();
-    
-    //get the phrases from the DB
-    if ( !iDBEngine->GetPhraseFromDBL( *itemArray ) )
-        {
-        iDBEngine->GetErrMsg( errMsg );
-        //note fot err message
-        CAknWarningNote* note = new( ELeave ) CAknWarningNote();
-        note->SetTone( CAknNoteDialog::EWarningTone );
-        note->ExecuteLD( errMsg );  
-        }
-    else
-        {
-        InsertIconL( itemArray ); 
-        ListBox()->HandleItemAdditionL();
-        ListBox()->ClearSelection();
-        FindBox()->SetFocus( ETrue );
-        FindBox()->SetFocusing( ETrue );
-        FindBox()->MakeVisible( ETrue );
-        }
-    if ( itemArray->Count() == 0 )
-        {
-        FindBox()->SetSearchTextL( KSearchTextEmpty );
-        FindBox()->SetFocus( EFalse );
-        FindBox()->SetFocusing( EFalse );
-        FindBox()->MakeVisible( EFalse );
-        ListBox()->SetRect( Rect() );
-        ListBox()->View()->DrawEmptyList( Rect() );
-    
-        //Show add-add-exit cba 
-        ChangeCurrentCbaL( R_AKNFEP_SOFTKEYS_LIST_ADD_EXIT );
-        }
-    else
-        {
-        ListBox()->SetCurrentItemIndex( 0 );
-        }
-    }
-
-void CAknFepUserdbDlg::ListBoxItemsChanged( CEikListBox* aListBox )
-    {
-    CAknFilteredTextListBoxModel* filterModel = 
-        static_cast<CAknFilteredTextListBoxModel*>( aListBox->Model() );
-    CDesCArrayFlat* itemArray =
-            static_cast<CDesCArrayFlat*>( filterModel->ItemTextArray() );
-    
-    TInt ItemCount = aListBox->Model()->NumberOfItems(); 
-    TInt selectedItem = filterModel->Filter()->SelectionIndexes()->Count();
-    if ( ItemCount > 0 && selectedItem < 1 )
-        {
-        //Show options-context-exit cba
-        TRAP_IGNORE ( ChangeCurrentCbaL( R_AKNFEP_SOFTKEYS_LIST_OPTIONS_EXIT_CONTEXT ) );
-        }
-    else
-        {
-        if ( ItemCount == 0)
-            {
-            //Show add-add-exit cba
-            TRAP_IGNORE ( ChangeCurrentCbaL( R_AKNFEP_SOFTKEYS_LIST_ADD_EXIT ) );
-            if ( itemArray->Count() == 0 && FindBox()->TextLength() == 0 )
-                {
-                FindBox()->SetFocus( EFalse );
-                FindBox()->MakeVisible( EFalse );
-                }
-            
-            if ( FindBox()->TextLength() == 0 )
-                {
-                ListBox()->SetRect( Rect() );
-                ListBox()->View()->DrawEmptyList( Rect() );
-                }
-            }
-        }
-    }
-
-void CAknFepUserdbDlg::UpdateListBoxL( TInt aCommandId )
-	{
-    // Update the listbox
-    CAknFilteredTextListBoxModel* filterModel = 
-        static_cast<CAknFilteredTextListBoxModel*>( ListBox()->Model() );
-    filterModel->Filter()->UpdateCachedDataL();
-    
-    TInt selectedItem = ListBox()->SelectionIndexes()->Count();
-    
-    
-    CAknFilteredTextListBoxModel* model = 
-        static_cast<CAknFilteredTextListBoxModel*>( ListBox()->Model() );
-    CDesCArrayFlat* itemArray =
-            static_cast<CDesCArrayFlat*>( model->ItemTextArray() );
-    TInt listItems = model->NumberOfItems();
-    
-    if ( listItems != 0 && selectedItem != 0)
-        {
-        TInt CurrentItemIndex = ListBox()->CurrentItemIndex();          
-        if( ( aCommandId == EAknCmdMark || aCommandId == EAknMarkAll ) && 
-        	 ListBox()->View()->ItemIsSelected(CurrentItemIndex))
-        	{
-        	//Show options-unmark-exit menu
-        	ChangeCurrentCbaL( R_AKNFEP_SOFTKEYS_LIST_OPTIONS_EXIT_MARK );
-        	}      
-        if( ( aCommandId == EAknCmdUnmark || aCommandId == EAknUnmarkAll ) && 
-             !ListBox()->View()->ItemIsSelected(CurrentItemIndex))
-            {
-             //Show options-mark-exit menu
-            ChangeCurrentCbaL( R_AKNFEP_SOFTKEYS_LIST_OPTIONS_EXIT_UNMARK );      
-            }
-        }
-    
-    if ( listItems == 0 )
-        {
-        //Show add-add-exit cba       
-        ChangeCurrentCbaL( R_AKNFEP_SOFTKEYS_LIST_ADD_EXIT ); 
-        if ( itemArray->Count() == 0 && FindBox()->TextLength() == 0 )
-            {
-            FindBox()->SetFocus( EFalse );
-            FindBox()->MakeVisible( EFalse );
-            }
-        
-        if ( FindBox()->TextLength() == 0 )
-            {
-            ListBox()->SetRect( Rect() );
-            ListBox()->View()->DrawEmptyList( Rect() );
-            }
-        }
-    if( selectedItem == 0 && listItems != 0 )
-        {
-        FindBox()->MakeVisible( ETrue );
-        FindBox()->SetFocus( ETrue );
-        FindBox()->DrawNow();
-        TRect findpaneRect(FindBox()->Rect());
-        TRect clientRect = Rect();
-        TSize size = TSize(clientRect.Width(),
-            clientRect.Height() - findpaneRect.Height());
-        ListBox()->SetRect( TRect(clientRect.iTl, size) );
-        ListBox()->View()->Draw();
-        //Show options-context-exit cba
-        ChangeCurrentCbaL( R_AKNFEP_SOFTKEYS_LIST_OPTIONS_EXIT_CONTEXT );
-        }
-    
-    if ( FindBox()->IsVisible() )
-        {
-        FindBox()->SetFocus( ETrue );
-        FindBox()->MakeVisible( ETrue );
-        }
-	}
-
-CCoeControl* CAknFepUserdbDlg::ComponentControl(TInt aIndex) const 
-    { 
-    if ( aIndex == CAknMarkableListDialog::CountComponentControls() ) 
-        { 
-        return ListBox(); 
-        } 
-    else 
-        { 
-        return CAknMarkableListDialog::ComponentControl(aIndex); 
-        } 
-    } 
-
-TInt CAknFepUserdbDlg::CountComponentControls() const 
-    { 
-    if ( ListBox() )
-	    {
-	    return CAknMarkableListDialog::CountComponentControls() + 1; 
-		}
-    else
-	    {
-        return CAknMarkableListDialog::CountComponentControls();
-        }
-    }
-
-
-
-void CAknFepUserdbDlg::SizeChanged()
-    {
-    //Change title text
-    CEikStatusPane* statusPane = CEikonEnv::Static()->AppUiFactory()->StatusPane();
-    CAknTitlePane* title = NULL;
-    TRAP_IGNORE( title = static_cast< CAknTitlePane* >(
-        statusPane->ControlL( TUid::Uid( EEikStatusPaneUidTitle) ) ) );
-
-    //Load the new title text
-    HBufC* titletext = StringLoader::LoadLC( R_AKNFEP_USER_DB_MANAGEMENT_TITLE );
-    //Set title to the new text
-    TRAP_IGNORE( title->SetTextL( *titletext ));
-    CleanupStack::PopAndDestroy( titletext );
-    }
-// End of file