--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mobilemessaging/postcard/postcardinc/PostcardAddressForm.h Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,331 @@
+/*
+* Copyright (c) 2005 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:
+* Postcard application address dialog
+*
+*/
+
+
+
+#ifndef __POSTCARDADDRESSFORM_H__
+#define __POSTCARDADDRESSFORM_H__
+
+// INCLUDES
+#include <AknForm.h> // CAknForm
+#include <ConeResLoader.h>
+#include <coecntrl.h>
+
+#include <eikrted.h>
+#include <eikedwin.h>
+#include <eikedwob.h>
+
+#include "PostcardContact.h"
+#include "Postcard.hrh"
+
+// FORWARD DECLARATIONS
+class CAknNavigationDecorator;
+class CContactCard;
+class CContactItem;
+class CEikMenuPane;
+class CPostcardAppUi;
+class CPostcardDocument;
+
+/**
+ * Postcard Address Form.
+ */
+class CPostcardAddressForm : public CAknForm,
+ public MEikEdwinObserver
+ {
+ public: // Constants
+ enum
+ {
+ // Name, info, street, zip, city, state, country
+ ENumAddrFields = 7
+ };
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ * param IN aAppUi reference to AppUi object
+ * param IN aDocument reference to document object
+ * param IN aContactItem the item to be edited
+ * param OUT aRetValue if for example Send was pressed in the dialog it's returned here
+ * param IN aFirstActive the field that should be activated first
+ * param IN aKeyEvent possible keyevent to simulate when dialog opened
+ * @return pointer to created CPostcardAddressForm
+ */
+ static CPostcardAddressForm* NewL( CPostcardAppUi& aAppUi,
+ CPostcardDocument& aDocument,
+ CContactCard& aContactItem,
+ TInt& aRetValue,
+ TInt aFirstActive = -1,
+ TKeyEvent aKeyEvent = TKeyEvent() );
+
+ /**
+ * Destructor.
+ */
+ ~CPostcardAddressForm();
+
+ public:
+
+ /**
+ * @return CAknDialog::RunLD()
+ */
+ TInt ExecLD( );
+
+ public: // Functions from base classes
+
+ /**
+ * From MEikCommandObserver Prosesses menucommands
+ * @param aCommandId - id of the command
+ */
+ void ProcessCommandL( TInt aCommandId );
+
+ /**
+ * From CCoeControl Handles key events
+ * @param aKeyEvent - keyevent to be handled
+ * @param aType - keyeventtype to be handled
+ */
+ TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent,
+ TEventCode aType );
+
+ /**
+ * HandleResourceChange
+ */
+ void HandleResourceChange(TInt aType);
+
+ /**
+ * from CEikDialog
+ */
+ void PreLayoutDynInitL();
+
+ /**
+ * from CEikDialog
+ * Fills the fields.
+ */
+ void PostLayoutDynInitL();
+
+ /**
+ * from MCoeControlObserver
+ * Updates the length indicator and checks if the field is too long
+ */
+ void HandleControlEventL(CCoeControl* aControl,TCoeEvent aEventType);
+
+ protected: // Functions from base classes
+
+ /**
+ * From MEikMenuObserver Initializes items on the menu
+ *
+ * @param aMenuId Current menu's resource Id
+ * @param aMenuPane Pointer to menupane
+ */
+ void DynInitMenuPaneL(TInt aMenuId, CEikMenuPane* aMenuPane);
+
+ /**
+ * From CEikDialog Handles button events and looks if the dialog
+ * can be closed. First calls CAknDialog::OkToExitL. If that returns
+ * true, and aButtonId is either EAknSoftkeyBack, EAknSoftkeyExit,
+ * EAknSoftkeyDone, EAknCmdExit, EEikCmdExit or EPostcardCmdSend,
+ * If a message is not yet sent, then recipient is added to the message
+ * and ETrue is returned.
+ * Otherwise returns false;
+ * @param aButtonId Id of the 'pressed' button
+ *
+ * @return ETrue if it's OK to exit
+ * EFalse otherwise
+ */
+ TBool OkToExitL( TInt aButtonId );
+
+ /**
+ * If aEventType is EEventTextUpdate -> Updates navipane and checks the length of the field
+ */
+ void HandleEdwinEventL( CEikEdwin* aEdwin, TEdwinEvent aEventType );
+
+ /**
+ * Changes the edwin event observer and updates navipane
+ */
+ void LineChangedL(TInt aControlId);
+
+ protected: // New functions
+
+ /**
+ * DynInitMainMenuL Initializes items on the menu
+ *
+ * @param aMenuPane Pointer to menupane
+ */
+ void DynInitMainMenuL(CEikMenuPane* aMenuPane);
+
+ /**
+ * DynInitInsertSubMenuL Initializes items on the menu
+ *
+ * @param aMenuPane Pointer to menupane
+ */
+ void DynInitInsertSubMenuL(CEikMenuPane* aMenuPane);
+
+ /**
+ * DynInitContextMenuL Initializes items on the menu
+ *
+ * @param aMenuPane Pointer to menupane
+ */
+ void DynInitContextMenuL(CEikMenuPane* aMenuPane);
+
+ /**
+ * IsMainMenuOptionInvisible
+ * Returns true if menuoption aMenuOptionId is visible in Mainmenu
+ * @param aMenuOptionId menu option to be checked
+ * @return TBool True if option is invisible
+ */
+ TBool IsMainMenuOptionInvisible( TInt aMenuOptionId );
+
+ /**
+ * LaunchHelpL
+ * This function is called when Help application is launched.
+ */
+ void LaunchHelpL( );
+
+ private: // From CAknForm
+
+ /**
+ * Calls CAknForm::SetInitialCurrentLine() if it's not been called yet
+ */
+ void SetInitialCurrentLine();
+
+ /**
+ * Does nothing at the moment
+ */
+ void HandleControlStateChangeL(TInt aControlId);
+
+ private: // Own ones
+
+ /**
+ * Opens the add recipient dialog
+ */
+ void DoSelectionKeyL( );
+
+ /**
+ * Changes the value of iRetVal and tries to exit the dialog
+ */
+ void SendL( );
+
+ /**
+ * Changes the value of iRetVal and tries to exit the dialog
+ */
+ void ForwardMessageL( );
+
+ /**
+ * Updates current TMsvEntry and calls AppUi's DoShowMessageInfoL
+ */
+ void MessageInfoL( );
+
+ /**
+ * Checks the length of current text field and shows an info note if necessary
+ */
+ void CheckTextExceedingL( );
+
+ /**
+ * Uses CPostcardContact to show the recipient fetch dialog
+ * Uses CPostcardRecipientWrapper to fetch the right detail of the contact item
+ * Adds the value of the contact item into the address fields
+ */
+ void DoAddRecipientL( );
+
+ /**
+ * Updates recipient to entry.
+ */
+ void UpdateRecipientToEntryL();
+
+ /**
+ * Adds the right fields of aContact to right fields of the dialog
+ */
+ void UpdateFieldsL( CContactItem& aContact );
+
+ /**
+ * Add the aLocation fields of aContact to right fields of the dialog
+ */
+ void UpdateFieldsL( CPostcardContact::TLocation aLocation );
+
+ /**
+ * Returns true if none of the fields have any text
+ */
+ TBool IsEmpty( );
+
+ /**
+ * Cleans navipane.
+ */
+ void CleanNavipane();
+
+ /**
+ * Forces all visible lines to be redrawn on the screen
+ */
+ void RefreshDisplay( );
+
+ /**
+ * Set middle softkey according to the mode (viewer / edit)
+ * and whether address is empty or not
+ */
+ void SetMiddleSoftkeyL();
+
+ protected: // Constructors
+ CPostcardAddressForm( CPostcardAppUi& aAppUi,
+ CPostcardDocument& aDocument,
+ CContactCard& aContactItem,
+ TInt& aRetValue,
+ TInt aFirstActive,
+ TKeyEvent aKeyEvent );
+
+ /**
+ * EPOC constructor
+ */
+ void ConstructL();
+
+ /**
+ * Goes thru the fields. Hides the hidden ones.
+ * Shows error note of an empty field if necessary.
+ * Changes the focused field to the right one.
+ * Updates navipane. Simulate keys if necessary.
+ */
+ void ActivateL();
+
+ protected: // data
+ /// Ref: Contact item under editing
+ CContactCard& iContactItem;
+
+ private: // Data
+
+ enum PostcardAddressFlags
+ {
+ EPostcardAddressHelpSupported = 1,
+ EPostcardAddressTextExceeded = 2
+ };
+
+ CPostcardAppUi& iAppUi;
+ CPostcardDocument& iDocument;
+
+ CAknNavigationDecorator* iNaviDecorator;
+
+ TKeyEvent iKeyEvent;
+ TInt& iRetValue;
+ TInt iAddrFlags;
+ TInt iMaxLen;
+ TInt iPreviousControl;
+ TInt iFirstActive;
+
+ CPostcardContact* iContact; // interface to contact database
+
+ TInt iMskResource; // current middle softkey resource ID
+ };
+
+#endif // __CPbkContactEditorDlg_H__
+
+// End of File