williamr@2: /* williamr@2: * Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). williamr@2: * All rights reserved. williamr@2: * This component and the accompanying materials are made available williamr@2: * under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members williamr@2: * which accompanies this distribution, and is available williamr@2: * at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". williamr@2: * williamr@2: * Initial Contributors: williamr@2: * Nokia Corporation - initial contribution. williamr@2: * williamr@2: * Contributors: williamr@2: * williamr@2: * Description: williamr@2: * This class extends Symbian Contacts model CContactItemField class capabilities williamr@2: * to better suit Phonebook's needs. williamr@2: * williamr@2: */ williamr@2: williamr@2: williamr@2: #ifndef __TPbkContactItemField_H__ williamr@2: #define __TPbkContactItemField_H__ williamr@2: williamr@2: // INCLUDES williamr@2: #include williamr@2: #include "MPbkFieldData.h" williamr@2: #include // TStorageType williamr@2: #include "PbkIconId.hrh" williamr@2: williamr@2: // These two includes are not needed here anymore williamr@2: // and might be removed in the future williamr@2: #include // CContactItem williamr@2: #include // CContactItemField storage types williamr@2: williamr@2: williamr@2: // FORWARD DECLARATIONS williamr@2: class CPbkFieldInfo; williamr@2: class CContactItemField; williamr@2: class CContactTextField; williamr@2: class CPbkContactItem; williamr@2: class CContactDateField; williamr@2: williamr@2: williamr@2: // CLASS DECLARATION williamr@2: williamr@2: /** williamr@2: * Phonebook Contact item field class. williamr@2: * This class extends Symbian Contacts model CContactItemField class williamr@2: * capabilities to better suit Phonebook's needs. williamr@2: */ williamr@2: class TPbkContactItemField : public MPbkFieldData williamr@2: { williamr@2: public: // Constructors and destructor williamr@2: /** williamr@2: * C++ default constructor. williamr@2: */ williamr@2: IMPORT_C TPbkContactItemField(); williamr@2: williamr@2: /** williamr@2: * C++ constructor. williamr@2: * williamr@2: * @param aField Contacts Model field this object is wrapping. williamr@2: * @param aFieldInfo Phonebook field type of aField. williamr@2: */ williamr@2: IMPORT_C TPbkContactItemField(CContactItemField* aField, williamr@2: CPbkFieldInfo* aFieldInfo); williamr@2: williamr@2: /** williamr@2: * Sets the contents of this object after construction. williamr@2: * @param aField Contacts Model field this object is wrapping williamr@2: * @param aFieldInfo Phonebook field type of aField williamr@2: */ williamr@2: IMPORT_C void Set(CContactItemField* aField, williamr@2: CPbkFieldInfo* aFieldInfo); williamr@2: williamr@2: public: // New functions williamr@2: /** williamr@2: * Returns an Phonebook icon id for this field. williamr@2: * @return The Phonebook icon id for this field. williamr@2: */ williamr@2: IMPORT_C TPbkIconId IconId() const; williamr@2: williamr@2: /** williamr@2: * Returns the Phonebook field info object of this field. williamr@2: * @return Field info for this field. williamr@2: */ williamr@2: IMPORT_C CPbkFieldInfo& FieldInfo() const; williamr@2: williamr@2: /** williamr@2: * Returns this field's textual content. williamr@2: * @return This field's textual content. williamr@2: * @precond StorageType()==KStorageTypeText. williamr@2: */ williamr@2: IMPORT_C TPtrC Text() const; williamr@2: williamr@2: /** williamr@2: * Returns this field's date/time content. williamr@2: * @return This field's date/time content. williamr@2: * @precond StorageType()==KStorageTypeDateTime. williamr@2: */ williamr@2: IMPORT_C TTime Time() const; williamr@2: williamr@2: /** williamr@2: * Fills aText with field's text content. If field is of date williamr@2: * type formats the date as text. williamr@2: * @param aText Fills parameter with field's content. williamr@2: * williamr@2: * @exception KErrOverflow if aText is not big enough for williamr@2: * the text. aText contents will be clipped to aText.MaxLength(). williamr@2: * @exception KErrNotSupported if the field content cannot be williamr@2: * represented as text. williamr@2: */ williamr@2: IMPORT_C void GetTextL(TDes& aText) const; williamr@2: williamr@2: /** williamr@2: * Returns the storage type of this field. williamr@2: * @return The storage type of this field. williamr@2: */ williamr@2: IMPORT_C TStorageType StorageType() const; williamr@2: williamr@2: /** williamr@2: * Returns the embedded contact item field. williamr@2: * @return The embedded contact item field. williamr@2: */ williamr@2: IMPORT_C CContactItemField& ItemField() const; williamr@2: williamr@2: /** williamr@2: * Returns the text storage object of this field. If the storage type is williamr@2: * not KStorageTypeText the function raises a panic. williamr@2: * @return The text storage object of this field. williamr@2: */ williamr@2: IMPORT_C CContactTextField* TextStorage() const; williamr@2: williamr@2: /** williamr@2: * Returns the label text of this field. williamr@2: * @return The label text of this field. williamr@2: */ williamr@2: IMPORT_C TPtrC Label() const; williamr@2: williamr@2: /** williamr@2: * Sets the label text of this field to aLabel. williamr@2: * @param aLabel Text to set as the label of this field. williamr@2: */ williamr@2: IMPORT_C void SetLabelL(const TDesC& aLabel); williamr@2: williamr@2: /** williamr@2: * Marks this field as hidden or unhidden. williamr@2: * @param aHidden ETrue marks as hidden EFalse removes the mark. williamr@2: */ williamr@2: IMPORT_C void SetHidden(TBool aHidden); williamr@2: williamr@2: /** williamr@2: * Check if field is marked hidden. williamr@2: * @return ETrue if this field is hidden, EFalse if not. williamr@2: */ williamr@2: IMPORT_C TBool IsHidden() const; williamr@2: williamr@2: /** williamr@2: * Returns time storage of this field. If the storage type is williamr@2: * not KStorageTypeDateTime the function raises a panic. williamr@2: * @return The time storage object of this field. williamr@2: */ williamr@2: IMPORT_C CContactDateField* DateTimeStorage() const; williamr@2: williamr@2: /** williamr@2: * Returns ETrue if this is the same field as aField. williamr@2: * @return ETrue if this is the same field as aField. williamr@2: */ williamr@2: IMPORT_C TBool IsSame(const TPbkContactItemField& aField) const; williamr@2: williamr@2: /** williamr@2: * Converts this field to a CContactItemField. williamr@2: * @return The embedded CContactItemField object. williamr@2: */ williamr@2: IMPORT_C CContactItemField& ContactItemField(); williamr@2: williamr@2: /** williamr@2: * Converts this field to a const CContactItemField. williamr@2: * @return The embedded CContactItemField object. williamr@2: */ williamr@2: IMPORT_C const CContactItemField& ContactItemField() const; williamr@2: williamr@2: /** williamr@2: * Compares two items against the group ordering. williamr@2: * @param aRhs Contact item field to compare to this field. williamr@2: */ williamr@2: IMPORT_C TInt Compare(const TPbkContactItemField& aRhs) const; williamr@2: williamr@2: /** williamr@2: * Returns an unique id for this field. williamr@2: * NOTE: Returned id is valid only as long as this object is in memory williamr@2: * in other words the id is not persistent! williamr@2: * @return The unique id for this field. williamr@2: */ williamr@2: IMPORT_C TInt UniqueFieldIdentity() const; williamr@2: williamr@2: /** williamr@2: * Returns ETrue if this field's contents is empty. williamr@2: * @return ETrue if this field's contents is empty. williamr@2: */ williamr@2: IMPORT_C TBool IsEmpty() const; williamr@2: williamr@2: /** williamr@2: * Returns ETrue if this field's contents is empty or all spaces. williamr@2: * @return ETrue if this field's contents is empty or all spaces. williamr@2: */ williamr@2: IMPORT_C TBool IsEmptyOrAllSpaces() const; williamr@2: williamr@2: /** williamr@2: * Returns ETrue is this field is a default phone number field. williamr@2: * @see CPbkContactItem::DefaultPhoneNumberField williamr@2: * @see CPbkContactItem::SetDefaultPhoneNumberField williamr@2: * @return ETrue is this field is a default phone number field. williamr@2: */ williamr@2: IMPORT_C TBool DefaultPhoneNumberField() const; williamr@2: williamr@2: /** williamr@2: * Returns ETrue if this field is a default video number field. williamr@2: * @see CPbkContactItem::DefaultVideoNumberField williamr@2: * @see CPbkContactItem::SetDefaultVideoNumberField williamr@2: * @return ETrue if this field is a default video number field. williamr@2: */ williamr@2: IMPORT_C TBool DefaultVideoNumberField() const; williamr@2: williamr@2: /** williamr@2: * Returns ETrue is this field is a default SMS field. williamr@2: * @see CPbkContactItem::DefaultSmsField williamr@2: * @see CPbkContactItem::SetDefaultSmsField williamr@2: * @return ETrue is this field is a default SMS field. williamr@2: */ williamr@2: IMPORT_C TBool DefaultSmsField() const; williamr@2: williamr@2: /** williamr@2: * Returns ETrue is this field is a default SMS With Email field. williamr@2: * @see CPbkContactItem::DefaultEmailOverSmsField williamr@2: * @see CPbkContactItem::SetDefaultEmailOverSmsField williamr@2: * @return ETrue is this field is a default SMS With Email field. williamr@2: */ williamr@2: IMPORT_C TBool DefaultEmailOverSmsField() const; williamr@2: williamr@2: /** williamr@2: * Returns ETrue is this field is a default email field. williamr@2: * @see CPbkContactItem::DefaultEmailField williamr@2: * @see CPbkContactItem::SetDefaultEmailField williamr@2: * @return ETrue is this field is a default email field. williamr@2: */ williamr@2: IMPORT_C TBool DefaultEmailField() const; williamr@2: williamr@2: /** williamr@2: * Returns ETrue is this field is a default MMS field. williamr@2: * @see CPbkContactItem::DefaultMmsField williamr@2: * @see CPbkContactItem::SetDefaultMmsField williamr@2: * @return ETrue is this field is a default MMS field. williamr@2: */ williamr@2: IMPORT_C TBool DefaultMmsField() const; williamr@2: williamr@2: /** williamr@2: * Returns ETrue is this field is a default POC field. williamr@2: * @see CPbkContactItem::DefaultPocField williamr@2: * @see CPbkContactItem::SetDefaultPocField williamr@2: * @return ETrue is this field is a default POC field. williamr@2: */ williamr@2: IMPORT_C TBool DefaultPocField() const; williamr@2: williamr@2: /** williamr@2: * Returns ETrue is this field is a default VOIP field. williamr@2: * @see CPbkContactItem::DefaultVoipField williamr@2: * @see CPbkContactItem::SetDefaultVoipField williamr@2: * @return ETrue is this field is a default VOIP field. williamr@2: */ williamr@2: IMPORT_C TBool DefaultVoipField() const; williamr@2: williamr@2: /** williamr@2: * Returns an array of speed dial indexes assigned to this field, williamr@2: * NULL if none. williamr@2: * @return An array of speed dial indexes assigned to this field, williamr@2: * NULL if none. williamr@2: */ williamr@2: IMPORT_C CArrayFix* SpeedDialIndexesL() const; williamr@2: williamr@2: public: // from MPbkFieldData williamr@2: IMPORT_C TStorageType PbkFieldType() const; williamr@2: IMPORT_C TPbkFieldId PbkFieldId() const; williamr@2: IMPORT_C TPtrC PbkFieldText() const; williamr@2: IMPORT_C TTime PbkFieldTime() const; williamr@2: williamr@2: private: // CPbkContactItem support functions williamr@2: /// CPbkContactItem calls private functions of this class williamr@2: friend class CPbkContactItem; williamr@2: void PrepareForSaveL(); williamr@2: void PrepareAfterLoadL(); williamr@2: TBool HasInvalidDate(); williamr@2: williamr@2: private: // Data williamr@2: /// Ref: Contact item field to be expanded into greater heights williamr@2: CContactItemField* iField; williamr@2: /// Ref: field info object matching iField's type williamr@2: CPbkFieldInfo* iFieldInfo; williamr@2: williamr@2: private: // Friend declarations williamr@2: friend IMPORT_C TBool operator== williamr@2: (const TPbkContactItemField& aLeft, williamr@2: const TPbkContactItemField& aRight); williamr@2: }; williamr@2: williamr@2: williamr@2: // FUNCTION DECLARATIONS williamr@2: williamr@2: /** williamr@2: * Returns ETrue if aLeft has same contents as aRight. williamr@2: * Doesn't compare everything (all field flags etc.) but all the attributes williamr@2: * that could affect how this field looks like in the Phonebook UI. This williamr@2: * function can be used to determine wheter to update this field in the UI. williamr@2: */ williamr@2: IMPORT_C TBool operator== williamr@2: (const TPbkContactItemField& aLeft, williamr@2: const TPbkContactItemField& aRight); williamr@2: williamr@2: /** williamr@2: * Returns !(aLeft==aRight). williamr@2: */ williamr@2: inline TBool operator!= williamr@2: (const TPbkContactItemField& aLeft, williamr@2: const TPbkContactItemField& aRight) williamr@2: { williamr@2: return !(aLeft==aRight); williamr@2: } williamr@2: williamr@2: williamr@2: #endif // __TPbkContactItemField_H__ williamr@2: williamr@2: // End of File