emailuis/uicomponents/src/fsfastaddressinglist.cpp
changeset 0 8466d47a6819
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/emailuis/uicomponents/src/fsfastaddressinglist.cpp	Thu Dec 17 08:39:21 2009 +0200
@@ -0,0 +1,560 @@
+/*
+* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Implementation of CFsFastAddressingList class
+*
+*/
+
+
+//<cmail> removed __FS_ALFRED_SUPPORT flag (other places in this file not tagged!)
+/*#include <fsconfig.h>
+#ifdef __FS_ALFRED_SUPPORT*/
+#include "emailtrace.h"
+#include <alf/alfevent.h>
+/*#else // !__FS_ALFRED_SUPPORT
+#include <hitchcock.h>
+#endif // __FS_ALFRED_SUPPORT*/
+//<cmail> removed __FS_ALFRED_SUPPORT flag (other places in this file not tagged!)
+#include <txtrich.h>
+
+#include "fsfastaddressinglist.h"
+#include "fsfastaddressinglistobserver.h"
+#include "fstreelist.h"
+#include "fstreevisualizerbase.h"
+#include "fstextinputfield.h"
+#include "fsfastaddressingvisualizer.h"
+#include "fstreeplainonelineitemdata.h"
+#include "fstreeplainonelineitemvisualizer.h"
+#include "fstreeitemdata.h"
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+CFsFastAddressingList::CFsFastAddressingList( CAlfEnv& /*aEnv*/,
+    MFsFastAddressingListObserver& aObserver ) :
+    iObserver( aObserver )
+    {
+    FUNC_LOG;
+    //No implementation nedeed
+    }
+
+
+// ---------------------------------------------------------------------------
+// Two phased constructor
+// ---------------------------------------------------------------------------
+//
+void CFsFastAddressingList::ConstructL( CAlfEnv& aEnv )
+    {
+    FUNC_LOG;
+    CAlfControl::ConstructL( aEnv );
+    iTextInputField = CFsTextInputField::NewL( *this );
+    iTextInputField->ActivateL();
+    iVisualizer = CFsFastAddressingVisualizer::NewL( *this, *iTextInputField );
+/*
+    iTreeVisualizer = CFsTreeVisualizerBase::NewL( this,
+                                  *iVisualizer->GetMainLayout() );
+
+    iTreeList = CFsTreeList::NewL( *iTreeVisualizer,
+                                   Env() );
+*/
+//    iTreeList->SetLooping( ETrue );
+
+    iTextInputField->SetFocus( ETrue );
+    iVisualizer->SetTextFieldVisible( ETrue );
+    iTextInputField->MakeVisible( ETrue );
+    }
+
+// ---------------------------------------------------------------------------
+// Two phased constructor
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CFsFastAddressingList* CFsFastAddressingList::NewL( CAlfEnv& aEnv,
+    MFsFastAddressingListObserver& aObserver )
+    {
+    FUNC_LOG;
+    CFsFastAddressingList* self =
+             new ( ELeave ) CFsFastAddressingList( aEnv, aObserver );
+    CleanupStack::PushL( self );
+    self->ConstructL( aEnv );
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------------------------
+//
+CFsFastAddressingList::~CFsFastAddressingList()
+    {
+    FUNC_LOG;
+    delete iVisualizer;
+    delete iTreeList;
+    delete iTextInputField;
+
+    iPlainItemDataArr.ResetAndDestroy();
+    iPlainItemDataArr.Close();
+    iPlainItemVisualizerArr.ResetAndDestroy();
+    iPlainItemVisualizerArr.Close();
+    }
+
+// ---------------------------------------------------------------------------
+// Loads image from file and sets texture for icon
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CFsFastAddressingList::SetIconL( const TIconID aIconID,
+    const TDesC& aFilename )
+    {
+    FUNC_LOG;
+    if ( aIconID == EIconA )
+        {
+#pragma message( "Unigue number needed" )
+        const TInt KFsUniqueId = 12345; // Number should be unique inside the application.
+        iIconA.SetTexture( Env().TextureManager().LoadTextureL( 
+            aFilename, TSize( 0, 0 ),  EAlfTextureFlagDefault, KFsUniqueId ) );
+        iVisualizer->SetIcon( aIconID, iIconA );
+        }
+    else if ( aIconID == EIconB )
+        {
+#pragma message( "Unigue number needed" )
+        const TInt KFsUniqueId = 123456; // Number should be unique inside the application.
+        iIconB.SetTexture( Env().TextureManager().LoadTextureL( 
+            aFilename, TSize( 0, 0 ),  EAlfTextureFlagDefault, KFsUniqueId ) );
+        iVisualizer->SetIcon( aIconID, iIconB );
+        }
+    }
+
+
+// ---------------------------------------------------------------------------
+// Creates texture from bitmap and sets icon.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CFsFastAddressingList::SetIconL( const TIconID aIconID,
+    const CFbsBitmap* aBitmap )
+    {
+    FUNC_LOG;
+    if (aIconID == EIconA)
+        {
+        CAlfTexture& texture = Env().TextureManager().BlankTexture();
+#pragma message( "Investigation needed" )
+        //texture.UploadL( *aBitmap );
+        iIconA.SetTexture( texture );
+        iVisualizer->SetIcon( aIconID, iIconA );
+        }
+    else if ( aIconID == EIconB )
+        {
+        CAlfTexture& texture = Env().TextureManager().BlankTexture();
+#pragma message( "Investigation needed" )
+        //texture.UploadL( *aBitmap );
+        iIconB.SetTexture( texture );
+        iVisualizer->SetIcon( aIconID, iIconB );
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// Controls visibility of the icon
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CFsFastAddressingList::SetIconVisible( const TIconID aIconID,
+    const TBool aVisible )
+    {
+    FUNC_LOG;
+    iVisualizer->SetIconVisible( aIconID, aVisible );
+    }
+
+// ---------------------------------------------------------------------------
+// Returns visibility of the icon
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TBool CFsFastAddressingList::IconVisible(
+    const TIconID /*aIconID */) const
+    {
+    FUNC_LOG;
+   
+    return ETrue;
+    }
+
+// ---------------------------------------------------------------------------
+// Controls atomic mode of text input field.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CFsFastAddressingList::SetTextInputFieldAtomic(
+    const TBool aAtomic)
+    {
+    FUNC_LOG;
+    if (aAtomic)
+        {
+        iTextInputField->SetTextInputMode(
+            CFsTextInputField::EAtomicInput );
+        }
+    else
+        {
+        iTextInputField->SetTextInputMode(
+            CFsTextInputField::ENotAtomicInput );
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// Resturns state of atomic mode of the text input field.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TBool CFsFastAddressingList::TextInputFieldAtomic() const
+    {
+    FUNC_LOG;
+    return (iTextInputField->TextInputMode() ==
+        CFsTextInputField::EAtomicInput);
+    }
+
+// ---------------------------------------------------------------------------
+// Controls read only mode of text input field.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CFsFastAddressingList::SetTextInputFieldReadOnly(
+    const TBool aReadOnly)
+    {
+    FUNC_LOG;
+    iTextInputField->SetReadOnly( aReadOnly );
+    }
+
+// ---------------------------------------------------------------------------
+// Returns status of the read only mode of the text input field
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TBool CFsFastAddressingList::TextInputFieldReadOnly() const
+    {
+    FUNC_LOG;
+    return iTextInputField->IsReadOnly();
+    }
+
+// ---------------------------------------------------------------------------
+// Sets content of the text input field
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CFsFastAddressingList::SetTextFieldContentsL(
+    const TDesC& aText )
+    {
+    FUNC_LOG;
+    iTextInputField->SetCursorPosL(
+     0, EFalse );
+    iTextInputField->SetTextL( &aText );
+    iTextInputField->SetCursorPosL(
+     aText.Length(), EFalse );
+    }
+
+// ---------------------------------------------------------------------------
+// Returns content of the text input field
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CFsFastAddressingList::TextFieldContents( TDes& aText ) const
+    {
+    FUNC_LOG;
+    iTextInputField->GetText( aText );
+    }
+
+// ---------------------------------------------------------------------------
+// Controls visibility of the text input field
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CFsFastAddressingList::SetTextFieldVisibile(
+    const TBool aVisibility )
+    {
+    FUNC_LOG;
+    iVisualizer->SetTextFieldVisible( aVisibility );
+    iTextInputField->MakeVisible( aVisibility );
+    }
+
+// ---------------------------------------------------------------------------
+// Returns status of the visibility of the text input field.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TBool CFsFastAddressingList::IsTextFieldVisible() const
+    {
+    FUNC_LOG;
+    return iVisualizer->IsTextFieldVisible();
+    }
+
+// ---------------------------------------------------------------------------
+// Controls visility of the tree list
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CFsFastAddressingList::SetListVisibility(
+    const TBool /*aVisible*/)
+    {
+    FUNC_LOG;
+    
+    }
+
+// ---------------------------------------------------------------------------
+// Returns visibility status of the tree list
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TBool CFsFastAddressingList::ListVisibile() const
+    {
+    FUNC_LOG;
+    
+    return ETrue;
+    }
+
+// ---------------------------------------------------------------------------
+// Copies items from array to the list. Previous itemset of the list is
+// cleared
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CFsFastAddressingList::SetListItemsL(
+    const RPointerArray<HBufC>& aItemTexts)
+    {
+    FUNC_LOG;
+    //====== Uncomment these lines when the method RemoveAll
+    //             will be implemented
+    //iTreeList->RemoveAll();
+    //iPlainItemDataArr.ResetAndDestroy();
+    //iPlainItemVisualizerArr.ResetAndDestroy();
+    for ( TInt item = 0 ; item < aItemTexts.Count() ; item++ )
+        {
+        CFsTreePlainOneLineItemData* plainItemData;
+        MFsTreeItemVisualizer* plainItemVisualizer;
+        plainItemData = CFsTreePlainOneLineItemData::NewL( );
+        plainItemData->SetDataL( *aItemTexts[item] );
+        plainItemVisualizer = CFsTreePlainOneLineItemVisualizer::NewL(
+            *iTreeList->TreeControl() );
+        iTreeList->InsertItemL( *plainItemData,
+                                *plainItemVisualizer,
+                                KFsTreeRootID );
+        iPlainItemDataArr.AppendL( plainItemData );
+        iPlainItemVisualizerArr.AppendL( plainItemVisualizer );
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// Add passed item to the List.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CFsFastAddressingList::AddListItemL( const TDesC& aItemText )
+    {
+    FUNC_LOG;
+    CFsTreePlainOneLineItemData* plainItemData;
+    MFsTreeItemVisualizer* plainItemVisualizer;
+    plainItemData = CFsTreePlainOneLineItemData::NewL( );
+    plainItemData->SetDataL( aItemText );
+    plainItemVisualizer = CFsTreePlainOneLineItemVisualizer::NewL(
+        *iTreeList->TreeControl() );
+    iTreeList->InsertItemL( *plainItemData,
+                            *plainItemVisualizer,
+                            KFsTreeRootID );
+    iPlainItemDataArr.AppendL( plainItemData );
+    iPlainItemVisualizerArr.AppendL( plainItemVisualizer );
+    }
+
+// ---------------------------------------------------------------------------
+// Finds the passed text in itemset and highlight it
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CFsFastAddressingList::HighlightText( const TDesC& /*aText*/)
+    {
+    FUNC_LOG;
+    
+    }
+
+// ---------------------------------------------------------------------------
+// Controls position of the list (above the text input field or below)
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CFsFastAddressingList::SetListPosition( TFsListPosition aPos )
+    {
+    FUNC_LOG;
+    iVisualizer->SetListPosition( aPos );
+    }
+
+// ---------------------------------------------------------------------------
+// Returns the list position (above the text input field or below)
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CFsFastAddressingList::TFsListPosition
+    CFsFastAddressingList::ListPosition() const
+    {
+    FUNC_LOG;
+    return iVisualizer->ListPosition();
+    }
+
+// ---------------------------------------------------------------------------
+// Controls the visibility of the scrollbar
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CFsFastAddressingList::SetScrollbarVisibility(
+    const TBool /*aVisible */)
+    {
+    FUNC_LOG;
+ 
+    }
+
+// ---------------------------------------------------------------------------
+// Returns status of the visibility of the scrollbar
+// ---------------------------------------------------------------------------
+//
+EXPORT_C TBool CFsFastAddressingList::ScrollbarVisibility() const
+    {
+    FUNC_LOG;
+
+    return ETrue;
+    }
+
+// ---------------------------------------------------------------------------
+// Returns the reference to the tree list component.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CFsTreeList& CFsFastAddressingList::List() const
+    {
+    FUNC_LOG;
+    return *iTreeList;
+    }
+
+// ---------------------------------------------------------------------------
+// From class CHuiControl
+// Handling of the key events and passing to the text input field.
+// ---------------------------------------------------------------------------
+//
+TBool CFsFastAddressingList::OfferEventL( const TAlfEvent &aEvent )
+    {
+    FUNC_LOG;
+    TBool keyHandled( EFalse );
+
+    if ( ( aEvent.IsKeyEvent() ) && ( aEvent.Code() ==  EEventKeyDown ) )
+        {
+        switch ( aEvent.KeyEvent().iScanCode )
+            {
+            case EStdKeyLeftArrow:
+                {
+                iTextInputField->MoveCursorL( TCursorPosition::EFLeft,
+                                              EFalse );
+                keyHandled = ETrue;
+                break;
+                }
+
+            case EStdKeyRightArrow:
+                {
+                iTextInputField->MoveCursorL( TCursorPosition::EFRight,
+                                              EFalse );
+                keyHandled = ETrue;
+                break;
+                }
+
+            default:
+                {
+                keyHandled = ( EKeyWasConsumed ==
+                             iTextInputField->OfferKeyEventL( aEvent.KeyEvent(),
+                                                              aEvent.Code() ) );
+                break;
+                }
+            }
+        }
+     else
+        {
+        keyHandled = ( EKeyWasConsumed ==
+                         iTextInputField->OfferKeyEventL( aEvent.KeyEvent(),
+                                                          aEvent.Code() ) );
+        }
+
+    return keyHandled;
+    }
+
+// ---------------------------------------------------------------------------
+// From class CHuiControl
+// Invoked when layouts are updated
+// ---------------------------------------------------------------------------
+//
+void CFsFastAddressingList::VisualLayoutUpdated( CAlfVisual& /*aVisual */)
+    {
+    FUNC_LOG;
+    
+    }
+
+// ---------------------------------------------------------------------------
+// From class CHuiControl
+// Invoked when visibility of the control is changing
+// ---------------------------------------------------------------------------
+//
+void CFsFastAddressingList::NotifyControlVisibility( TBool /*aIsVisible*/,
+        CAlfDisplay& /*aDisplay */)
+    {
+    FUNC_LOG;
+    }
+
+// ---------------------------------------------------------------------------
+// From class MFsTextInputFieldObserver
+// From text input field observer. Invoked when changes in the text are made
+// ---------------------------------------------------------------------------
+//
+void CFsFastAddressingList::HandleTextInputEventL(
+    CFsTextInputField* aTextInputField,
+    MFsTextInputFieldObserver::TFsTextInputEventType /*aEventType */)
+    {
+    FUNC_LOG;
+    HBufC16* text = HBufC16::NewL(
+        aTextInputField->RichText()->DocumentLength() );
+    TPtr16 ptr = text->Des();
+    aTextInputField->RichText()->Extract( ptr );
+    iObserver.TextInputFieldUpdated( ptr );
+    delete text;
+    }
+
+// ---------------------------------------------------------------------------
+// Copies highlighted text to the text input field
+// ---------------------------------------------------------------------------
+//
+void CFsFastAddressingList::MakeSelection()
+    {
+    FUNC_LOG;
+    
+    }
+
+// ---------------------------------------------------------------------------
+// Highlights next item in the tree list
+// ---------------------------------------------------------------------------
+//
+void CFsFastAddressingList::MoveSelectionDown()
+    {
+    FUNC_LOG;
+  
+    }
+
+// ---------------------------------------------------------------------------
+// Highlights previous item in the tree list
+// ---------------------------------------------------------------------------
+//
+void CFsFastAddressingList::MoveSelectionUp()
+    {
+    FUNC_LOG;
+ 
+    }
+
+// ---------------------------------------------------------------------------
+// Controls text input mode
+// ---------------------------------------------------------------------------
+//
+void CFsFastAddressingList::SetTextInputMode()
+    {
+    FUNC_LOG;
+  
+    }
+
+// ---------------------------------------------------------------------------
+// Invoked when text has been modified.
+// ---------------------------------------------------------------------------
+//
+void CFsFastAddressingList::TextInputFieldModified()
+    {
+    FUNC_LOG;
+
+    }
+