uiservicetab/vimpstui/src/cvimpstuisearchfieldarray.cpp
changeset 0 5e5d6b214f4f
child 14 9fdee5e1da30
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uiservicetab/vimpstui/src/cvimpstuisearchfieldarray.cpp	Tue Feb 02 10:12:18 2010 +0200
@@ -0,0 +1,362 @@
+/*
+* Copyright (c) 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:  search fields array implementation.
+*
+*/
+
+
+#include "cvimpstuisearchfieldaray.h"
+
+#include "mvimpstsearchuibuilder.h"
+#include "cvimpstuisearchfield.h"
+
+// System includes
+#include <barsread.h>
+#include <coemain.h>
+#include <eikcapc.h>
+#include <eikedwin.h>
+#include <AknUtils.h>
+
+// --------------------------------------------------------------------------
+// CVIMPSTUiSearchFieldArray::CVIMPSTUiSearchFieldArray
+// --------------------------------------------------------------------------
+//
+inline CVIMPSTUiSearchFieldArray::CVIMPSTUiSearchFieldArray():
+	 iSelectedSearchType( EIMBasicSearch )
+    {
+    }
+
+// --------------------------------------------------------------------------
+// CVIMPSTUiSearchFieldArray::~CVIMPSTUiSearchFieldArray
+// --------------------------------------------------------------------------
+//
+CVIMPSTUiSearchFieldArray::~CVIMPSTUiSearchFieldArray()
+    {
+    iFieldArray.ResetAndDestroy();
+    }
+
+// --------------------------------------------------------------------------
+// CVIMPSTUiSearchFieldArray::NewL
+// --------------------------------------------------------------------------
+//
+CVIMPSTUiSearchFieldArray* CVIMPSTUiSearchFieldArray::NewL()
+    {
+    CVIMPSTUiSearchFieldArray* self = 
+        new ( ELeave ) CVIMPSTUiSearchFieldArray( );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// --------------------------------------------------------------------------
+// CVIMPSTUiSearchFieldArray::ConstructL
+// --------------------------------------------------------------------------
+//
+inline void CVIMPSTUiSearchFieldArray::ConstructL()
+    {
+    
+    }
+    
+// --------------------------------------------------------------------------
+// CVIMPSTUiSearchFieldArray::CreateFieldsFromContactL
+// --------------------------------------------------------------------------
+//
+TInt CVIMPSTUiSearchFieldArray::CreateFieldsL( const TDesC& aLebal, 
+											TVIMPSTSearchDataFieldType aFieldDataType ,
+											TIMPSTSearchFieldTypes aFieldType /*= EIMAdvancedSearch*/, 
+											TVIMPSTEnums::TVIMPSTSearchKey aSearchKey/* = EVIMPSTSearchKeyUknown*/  )
+    {
+    MVIMPSTUiSearchField* newField = CVIMPSTUiSearchField::NewL( aLebal, aFieldDataType, aFieldType , aSearchKey);
+    
+    iFieldArray.Append( newField ); // ownership to array
+    
+	return newField->ControlId();
+    }
+
+// --------------------------------------------------------------------------
+// CVIMPSTUiSearchFieldArray::InsertFieldsL
+// --------------------------------------------------------------------------
+//
+TInt CVIMPSTUiSearchFieldArray::InsertFieldsL(TInt aIndex, const TDesC& aLebal, 
+											TVIMPSTSearchDataFieldType aFieldDataType ,
+											TIMPSTSearchFieldTypes aFieldType /*= EIMAdvancedSearch*/, 
+											TVIMPSTEnums::TVIMPSTSearchKey aSearchKey/* = EVIMPSTSearchKeyUknown*/ )
+    {
+    MVIMPSTUiSearchField* newField = CVIMPSTUiSearchField::NewL( aLebal, aFieldDataType, aFieldType, aSearchKey );
+    
+    iFieldArray.InsertL( newField ,aIndex); // ownership to array
+    
+	return newField->ControlId();
+    }
+// --------------------------------------------------------------------------
+// CVIMPSTUiSearchFieldArray::AreAllUiFieldsEmpty
+// --------------------------------------------------------------------------
+//
+TBool CVIMPSTUiSearchFieldArray::AreAllUiFieldsEmpty() const
+    {
+    const TInt count = iFieldArray.Count();
+    
+    for(TInt i = 0; i < count; ++i)
+        {        
+        TPtrC text = iFieldArray[i]->FieldData() ;
+        if ( text.Length() > 0)
+            {
+            return EFalse;
+            }
+        
+        }
+    return ETrue;
+    }
+
+// --------------------------------------------------------------------------
+// CVIMPSTUiSearchFieldArray::AreAllUiControlsEmptyL
+// --------------------------------------------------------------------------
+//
+TBool CVIMPSTUiSearchFieldArray::AreAllUiControlsEmptyL() const
+    {
+    const TInt count = iFieldArray.Count();
+    
+    for(TInt i = 0; i < count; ++i)
+        {        
+        HBufC* text = iFieldArray[i]->ControlTextL() ;
+        if ( text && text->Length() )
+            {
+            return EFalse;
+            }
+        
+        }
+    return ETrue;
+    }
+
+// --------------------------------------------------------------------------
+// CVIMPSTUiSearchFieldArray::ResetFieldData
+// --------------------------------------------------------------------------
+//
+void CVIMPSTUiSearchFieldArray::ResetFieldData() 
+    {
+    const TInt count = iFieldArray.Count();
+   
+    for(TInt i = 0; i < count; ++i)
+        {        
+        TInt len = iFieldArray[i]->FieldData().Length() ;
+        if ( len > 0)
+            {
+            iFieldArray[i]->ResetFieldData();
+            }
+        
+        }
+    
+    }
+
+// --------------------------------------------------------------------------
+// CVIMPSTUiSearchFieldArray::CreateUiFieldsFromArrayL
+// --------------------------------------------------------------------------
+//
+void CVIMPSTUiSearchFieldArray::CreateUiFieldsFromArrayL(MVIMPSTSearchUiBuilder& aUiBuilder )
+	{
+	iUiBuilder = NULL; 
+	iUiBuilder = &aUiBuilder;
+	
+	TInt count = Count();
+	
+	for( TInt i = 0 ; i< count; i++ )
+		{
+		MVIMPSTUiSearchField* field = iFieldArray[i];
+	
+		CreateUiFieldsL( *field );
+
+		}
+	}
+// --------------------------------------------------------------------------
+// CVIMPSTUiSearchFieldArray::CreateUiFieldsFromArrayL
+// --------------------------------------------------------------------------
+//
+void CVIMPSTUiSearchFieldArray::CreateUiFieldsL(MVIMPSTUiSearchField& aField )
+	{
+	switch( aField.FieldDataType() )
+		{
+
+		case EVIMPSTEdwinNumber :
+			{
+			// if number field
+			break;
+			}
+		case EVIMPSTEdwinEmail :
+			{
+			// if email field
+			break;
+			}
+			
+		case EVIMPSTEdwinMobile:
+			{
+			// if mobile field
+			break;
+			}
+		case EVIMPSTEdwinText :
+		default:
+			{
+			// default field type is text 
+			// Create and insert a line in the dialog
+			iControl = NULL;
+			iCaptionedCtrl = NULL;
+			
+			iControl = static_cast<CEikEdwin*>(iUiBuilder->CreateLineL( aField.FieldLabel(), aField.ControlId(), EEikCtEdwin) );
+
+			// Control is now owned by the dialog
+			TInt maxFieldLength = 100 ;
+			AknEditUtils::ConstructEditingL(iControl, maxFieldLength,
+			maxFieldLength, EAknEditorTextCase | EAknEditorCharactersUpperCase
+			| EAknEditorCharactersLowerCase, EAknEditorAlignLeft,
+			ETrue, ETrue, EFalse);
+			
+			iControl->SetAknEditorCase(EAknEditorTextCase);
+		
+			// Place cursor to the end of the line
+			iControl->AddFlagToUserFlags(CEikEdwin::EJustAutoCurEnd);
+			
+			HBufC* previousdata = aField.FieldData().AllocLC();
+			iControl->SetTextL( previousdata );
+			CleanupStack::PopAndDestroy();// previousdata
+			aField.ResetFieldData();
+		
+			
+			// CreateTextViewL() is flagged as deprecated but if it is not 
+			// called here the ActivateL() below crashes sometimes.
+			iControl->CreateTextViewL();
+			iCaptionedCtrl = iUiBuilder->LineControl( aField.ControlId() );
+			iCaptionedCtrl->SetTakesEnterKey(ETrue);
+			aField.SetControl( iControl, iCaptionedCtrl ); // onerhip transferd here to field
+		
+			aField.ActivateL();
+			break;	
+			}
+		}
+	}
+
+// -----------------------------------------------------------------------------
+// CVIMPSTUiSearchFieldArray::SetFocusL
+// -----------------------------------------------------------------------------
+//
+void CVIMPSTUiSearchFieldArray::SetFocusL(TInt aFieldIndex )
+    {
+    if (aFieldIndex >= 0 && aFieldIndex < iFieldArray.Count() && iUiBuilder )
+        {
+        MVIMPSTUiSearchField& field = At( aFieldIndex);
+        
+        iUiBuilder->TryChangeFocusL( field.ControlId() );
+        }
+        
+    }   
+
+// -----------------------------------------------------------------------------
+// CVIMPSTUiSearchFieldArray::GetFirstEnteredFieldDataL
+// -----------------------------------------------------------------------------
+//
+TPtrC CVIMPSTUiSearchFieldArray::GetFirstEnteredFieldDataL()
+    {
+    const TInt count = iFieldArray.Count();
+    
+    for(TInt i = 0; i < count; ++i)
+        {        
+        TPtrC text = iFieldArray[i]->FieldData() ;
+        if ( text.Length() > 0)
+            {
+            return iFieldArray[i]->FieldData();
+            }
+        
+        }
+    return KNullDesC();
+    }   
+
+
+// -----------------------------------------------------------------------------
+// CVIMPSTUiSearchFieldArray::GetSearchKeyDataL
+// -----------------------------------------------------------------------------
+//
+void CVIMPSTUiSearchFieldArray::GetSearchKeyDataL(RArray<TVIMPSTSearchKeyData>& aKeyDataArray )
+    {
+    const TInt count = iFieldArray.Count();
+    TPtrC dataPtr(KNullDesC );
+    for(TInt i = 0; i < count; ++i)
+        {    
+        MVIMPSTUiSearchField*  field = iFieldArray[i] ;
+        TPtrC text = field->FieldData() ;
+        if ( text.Length() > 0)
+            {
+			if(field->GetSearchKey() != TVIMPSTEnums::EVIMPSTSearchKeyUknown )
+				{
+				 TVIMPSTSearchKeyData data = 	{
+								field->GetSearchKey(),
+								KNullDesC(),
+								text	
+								};
+				 
+				aKeyDataArray.Append(data);	
+				}
+			else
+				{
+				TPtrC label = field->FieldLabel() ;
+				TVIMPSTSearchKeyData data =	{
+								field->GetSearchKey(),
+								label,
+								text	
+								};
+			 	 aKeyDataArray.Append(data );
+			 				
+				}
+            }
+        
+        }
+    
+    }   
+ 
+  // -----------------------------------------------------------------------------
+// CVIMPSTUiSearchFieldArray::RemoveField
+// -----------------------------------------------------------------------------
+//
+void CVIMPSTUiSearchFieldArray::RemoveField(TInt aIndex )
+    {
+   	iFieldArray.Remove(aIndex);
+   	iFieldArray.Compress();
+    }     
+ 
+ // -----------------------------------------------------------------------------
+// CVIMPSTUiSearchFieldArray::InsertField
+// -----------------------------------------------------------------------------
+//
+void CVIMPSTUiSearchFieldArray::InsertField(MVIMPSTUiSearchField*  aField , TInt aIndex )
+    {
+   	iFieldArray.Insert(aField ,aIndex);
+    }     
+  
+// -----------------------------------------------------------------------------
+// CVIMPSTUiSearchFieldArray::GetSearchType
+// -----------------------------------------------------------------------------
+//
+TIMPSTSearchFieldTypes CVIMPSTUiSearchFieldArray::GetSearchType()
+	{
+	return iSelectedSearchType;
+	}
+
+// -----------------------------------------------------------------------------
+// CVIMPSTUiSearchFieldArray::SetSearchType
+// -----------------------------------------------------------------------------
+//
+void CVIMPSTUiSearchFieldArray::SetSearchType(TIMPSTSearchFieldTypes aType)
+	{
+	iSelectedSearchType = aType;
+	}
+  
+//  End of File