--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mobilemessaging/unieditor/utils/inc/UniAddressHandler.h Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,296 @@
+/*
+* Copyright (c) 2005-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: Unified Message Editor Address Handler.
+*
+*/
+
+
+
+#ifndef C_UNIADDRESSHANDLER_H
+#define C_UNIADDRESSHANDLER_H
+
+// ========== INCLUDE FILES ================================
+
+#include <e32base.h>
+#include <MsgCheckNames.h>
+#include <cmsvrecipientlist.h>
+#include <ConeResLoader.h>
+
+// ========== CONSTANTS ====================================
+
+// ========== MACROS =======================================
+
+// ========== FUNCTION PROTOTYPES ==========================
+
+// ========== FORWARD DECLARATIONS =========================
+
+class CCoeEnv;
+class CBaseMtm;
+class CMsgAddressControl;
+class CMsgEditorAppUi;
+class MObjectProvider;
+
+// ========== DATA TYPES ===================================
+
+// ========== CLASS DECLARATION ============================
+
+/**
+* Unified Editor Address Handler class declaration.
+* Class provides services for address handling.
+*
+* @lib UniUtils.lib
+*
+* @since S60 3.2
+*/
+NONSHARABLE_CLASS( CUniAddressHandler ) : public CBase
+ {
+ public:
+
+ /**
+ * Allocates and constructs a CUniAddressHandler object.
+ *
+ * @param aMtm Client MTM
+ * @param aControl Address control to which this handler is connected
+ * @param aCoeEnv Handle to control environment
+ *
+ * @return Pointer to the new CUniAddressHandler object
+ */
+ IMPORT_C static CUniAddressHandler* NewL( CBaseMtm& aMtm,
+ CMsgAddressControl& aControl,
+ CCoeEnv& aCoeEnv );
+ /**
+ * Destructor
+ */
+ virtual ~CUniAddressHandler();
+
+ /**
+ * Clears given type addresses from MTM.
+ *
+ * @since S60 3.2
+ *
+ * @param aRecipientType Determines the address type to be cleared
+ */
+ IMPORT_C void RemoveAddressesFromMtmL( TMsvRecipientTypeValues aRecipientType );
+
+ /**
+ * Clears given type old addresses from MTM and copies new from address control to MTM.
+ *
+ * @since S60 3.2
+ *
+ * @param aRecipientType Determines the address type to be copied
+ */
+ IMPORT_C void CopyAddressesToMtmL( TMsvRecipientTypeValues aRecipientType );
+
+ /**
+ * Appends given type addresses from address control to MTM.
+ * Note! Old addresses are not cleared from MTM
+ *
+ * @since S60 3.2
+ *
+ * @param aRecipientType Determines the address type to be appended
+ */
+ IMPORT_C void AppendAddressesToMtmL( TMsvRecipientTypeValues aRecipientType );
+
+ /**
+ * Copies addresses from MTM to address control.
+ *
+ * @since S60 3.2
+ *
+ * @param aRecipientType Determines the address type to be appended
+ * @param aAddInvalid Specifies whether invalid contacts are added to address control
+ * or stored for later use when client calls ShowInvalidRecipientInfoNotesL
+ *
+ */
+ IMPORT_C void CopyAddressesFromMtmL( TMsvRecipientTypeValues aRecipientType,
+ TBool aAddInvalid );
+
+ /**
+ * Verifies addresses in address control.
+ *
+ * @since S60 3.2
+ *
+ * @param aModified
+ *
+ * @return ETrue, if verify successful,
+ * EFalse otherwise
+ */
+ IMPORT_C TBool VerifyAddressesL( TBool& aModified );
+
+ /**
+ * Removes duplicate addresses from recipients at send time.
+ * Removes duplicates from every address control at a time.
+ *
+ * @since S60 3.2
+ *
+ * @param aAppUi Pointer to editor appui
+ * @param aAddressControls Array of address controls
+ *
+ * @return ETrue if something was removed,
+ * EFalse otherwise
+ */
+ IMPORT_C static TBool RemoveDuplicateAddressesL(
+ CArrayPtrFlat<CMsgAddressControl>& aAddressControls );
+
+ /**
+ * Add recipient.
+ *
+ * @since S60 3.2
+ *
+ * @param aInvalid OUT ETrue if invalid addresses found
+ * EFalse otherwise
+ * @return ETrue if something was added,
+ * EFalse otherwise
+ */
+ IMPORT_C TBool AddRecipientL( TBool& aInvalid );
+
+ /**
+ * Checks address.
+ *
+ * @since S60 3.2
+ *
+ * @param aAddress, phonenumber or email
+ * @return ETrue if address is valid, EFalse otherwise
+ */
+ IMPORT_C TBool CheckSingleAddressL( const TDesC& aAddress );
+
+ /**
+ * Creates a string to be set as entry iDetails.
+ * Places addresses one after other separated by ";".
+ *
+ * @since S60 3.2
+ *
+ * @param IN/OUT aDetails
+ */
+ IMPORT_C void MakeDetailsL( TDes& aDetails );
+
+ /**
+ * Shows address information notes for invalid contacts detected when
+ * copying addresses from MTM.Allows UI to
+ * determine correct timing for showing this information to user.
+ *
+ * @since S60 3.2
+ *
+ */
+ IMPORT_C void ShowInvalidRecipientInfoNotesL();
+
+ /**
+ * Sets valid address type for the address handler.
+ *
+ * @since S60 3.2
+ */
+ inline void SetValidAddressType( CMsgCheckNames::TMsgAddressSelectType aValidAddressType );
+
+ /**
+ * Returns currently valid address type.
+ *
+ * @since S60 3.2
+ */
+ inline CMsgCheckNames::TMsgAddressSelectType ValidAddressType() const;
+
+ private:
+
+ /**
+ * Default C++ constructor.
+ */
+ CUniAddressHandler();
+
+ /**
+ * Constructor.
+ */
+ CUniAddressHandler( CBaseMtm& aMtm,
+ CMsgAddressControl& aControl,
+ CCoeEnv& aCoeEnv );
+
+ /**
+ * By default Symbian OS constructor is private.
+ */
+ void ConstructL();
+
+ /**
+ * Shows address info (error) note
+ *
+ * @param aAddress
+ * @param aAlias
+ */
+ void ShowAddressInfoNoteL( const TDesC& aAddress, const TDesC& aAlias );
+
+ /**
+ * Removes characters from string that confuses address
+ * control or clientMtm. Note that function does not make diffrence
+ * whether string is phone number or email address.
+ *
+ * @param aString
+ * @return ETrue, chars were removed, EFalse otherwise
+ */
+ static TBool RemoveIllegalChars( TDes& aString );
+
+ /**
+ * Check that character is not something that confuses address
+ * control or clientMtm.
+ *
+ * @param aChar
+ * @return ETrue, char is legal, EFalse otherwise
+ */
+ static TBool IsValidChar( const TChar& aChar );
+
+ /**
+ * Converts number-strings to/from arabic-indic <-> western
+ * NOTE : Leaves string to CleanupStack
+ * @param aOrigNumber contains the number to be converted
+ * @param aDirection EFalse -> western, ETrue -> arabic-indic if needed
+ * @return HBufC* buffer contains converted string
+ */
+ static HBufC* NumberConversionLC( const TDesC& aOrigNumber, TBool aDirection );
+
+ /**
+ * Performs proper recipient array cleanup.
+ *
+ * @param aArray CMsgRecipientArray pointer.
+ */
+ static void CleanupRecipientArray( TAny* aArray );
+
+ private:
+
+ struct TRecipientsInfo
+ {
+ CMsgRecipientArray* iRecipients;
+ TInt iOriginalCount;
+ TBool iModified;
+ };
+
+ //
+ CBaseMtm& iMtm;
+
+ //
+ CMsgAddressControl& iControl;
+
+ //
+ CCoeEnv& iCoeEnv;
+
+ CMsgCheckNames* iCheckNames;
+
+ // List for invalid recipients.
+ CMsgRecipientList* iInvalidRecipients;
+
+ // Valid address type.
+ CMsgCheckNames::TMsgAddressSelectType iValidAddressType;
+
+ RConeResourceLoader iResourceLoader;
+ };
+
+#include <uniaddresshandler.inl>
+
+#endif // C_UNIADDRESSHANDLER_H
+
+// End of File