diff -r 000000000000 -r 72b543305e3a mobilemessaging/postcard/postcardinc/PostcardTextDialog.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mobilemessaging/postcard/postcardinc/PostcardTextDialog.h Thu Dec 17 08:44:11 2009 +0200 @@ -0,0 +1,315 @@ +/* +* 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: PostcardTextDialog declaration +* +*/ + + + +#ifndef POSTCARDTEXTDIALOG_H +#define POSTCARDTEXTDIALOG_H + +// INCLUDES +#include // for CAknDialog +#include +#include +#include +#include +#include +#include + +#include "Postcard.hrh" + +// FORWARD DECLARATIONS +class CPostcardTextDialogCustomDraw; +class CPostcardAppUi; +class CPostcardDocument; +struct TKeyEvent; + +// CLASS DECLARATION +/** +* CPostcardTextDialog dialog class +* The dialog will be automatically destroyed by ExecuteLD. +*/ +class CPostcardTextDialog : public CAknDialog, + public MEikEdwinObserver + { + + public: // Constructors and destructor + + /** + * Two-phased constructor. + * @return pointer to created CPostcardTextDialog + */ + static CPostcardTextDialog* NewL( CPostcardAppUi& aAppUi, + CPostcardDocument& aDocument, + CPlainText& aText, + TInt& aRetValue, + TKeyEvent aKeyEvent = TKeyEvent() ); + + /** + * Destructor. + * Removes the dialog from EikonEnv Stack. Closes + * the resource loader. Changes the title back to + * the original. Deletes presentation controller + * and wrapper. + */ + ~CPostcardTextDialog(); + + public: + + /** + * @return CAknDialog::RunLD() + */ + TInt ExecLD( ); + + /** + * UpdateNavipaneL + */ + void UpdateNavipaneL( TBool aForce ); + + /** + * SetCharParaFormat Set character and paragraph formats + */ + void SetCharParaFormat(); + + 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 + * If aType is dynamic layout change -> rereads the size of the text field from LAF + */ + void HandleResourceChange(TInt aType); + + /** + * from CEikDialog + * Constructs Text Editor. + * Reads the font from LAF. + * Creates scrollbar and updates navipane. + */ + void PreLayoutDynInitL(); + + /** + * from CEikDialog + * Sets the position of the cursor in the end of the text. + * Set the editor as readonly if necessary. + */ + void PostLayoutDynInitL(); + + /** + * from MCoeControlObserver + */ + void HandleControlEventL(CCoeControl* aControl,TCoeEvent aEventType); + + protected: // Functions from base classes + + /** + * From CCoeControl + */ + void FocusChanged(TDrawNow aDrawNow); + + /** + * 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 + * Checks if it ok to exit with aButtonId + * If it is, takes the text from the text editor + * and passes it to AppUi object. + * @param aButtonId Id of the 'pressed' button + * @return ETrue if it's OK to exit + * EFalse otherwise + */ + TBool OkToExitL( TInt aButtonId ); + + /** + * From CCoeControl + * Draws skin background if available or just clears the background. + */ + void Draw(const TRect &aRect) const; + + /** + * If aEventType is EEventTextUpdate, checks the length of the text field + * and updates navipane. + */ + void HandleEdwinEventL(CEikEdwin* aEdwin,TEdwinEvent aEventType); + + 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 invisible in Mainmenu + * @param aMenuOptionId menu option to be checked + * @return TBool True if option is invisible + */ + TBool IsMainMenuOptionInvisible( TInt aMenuOptionId ); + + /** + * LaunchHelpL + * Calls AppUi object's LaunchHelpL with right context id. + */ + void LaunchHelpL( ); + + + private: + + /** + * Default C++ constructor. + */ + CPostcardTextDialog( CPostcardAppUi& aAppUi, + CPostcardDocument& aDocument, + CPlainText& aText, + TInt& aRetValue, + TKeyEvent aKeyEvent ); + + /** + * EPOC constructor + */ + void ConstructL(); + + /** + * Focuses itself. Sets cursor visible if necessary. + * Adds edwin observer. Activates base class (CCoeControl). + * Sets the position of the cursor in the end of the text. + * Updates navipane. Simulates a keyevent if such an event + * was passed as a parameter in the construction phase. + */ + void ActivateL(); + + /** + * From CoeControl. + * Returns 1 or 2. + */ + TInt CountComponentControls() const; + + /** + * From CCoeControl. + * 1 is text editor. + * 2 is possible scrollbar. + */ + CCoeControl* ComponentControl(TInt aIndex) const; + + + private: //New functions + + /** + * Panic + * @param aReason - the reason of the panic + */ + void Panic(TInt aReason); + + /** + * Sets the return parameter iRetValue as Send + * and tries to exit the dialog. + */ + void SendL( ); + + /** + * Sets the return parameter iRetValue as Forward + * and tries to exit the dialog. + */ + void ForwardMessageL( ); + + /** + * Updates the current TMsvEntry and + * calls AppUi object's ShowMessageInfoL method. + */ + void MessageInfoL( ); + + /** + * Calls NotePad's Fetch-API to fetch a note or template and inserts + * it in the position of the cursor. If there's currently + * highlighted text, inserts the text in the place of the text. + * @param aNote - If ETrue, fetches note, if EFalse, fetches template + */ + void InsertFromL( TBool aNote ); + + /** + * Checks if the text is exceeded by 1 or more characters + * and shows an information note. + */ + void CheckTextExceedingL( ); + + /** + * Sets middle softkey either to empty or to context menu. Empty in viewer + * mode and when maximum amount characters inserted. + */ + void SetMiddleSoftkeyL(); + + private: //data + + enum PostcardTextFlags + { + EPostcardTextHelpSupported = 1, + EPostcardTextExceeded = 2 + }; + + CPostcardAppUi& iAppUi; + CPostcardDocument& iDocument; + CPlainText& iOrigText; + + CEikRichTextEditor* iTextEditor; // Richtext editor + CPostcardTextDialogCustomDraw* iCustomDraw; // For drawing lines to editor + CAknNavigationDecorator* iNaviDecorator; + + TKeyEvent iKeyEvent; + + TInt& iRetValue; + TInt iTextFlags; + TInt iMaxLen; + + TInt iMskResource; + + }; + +#endif // POSTCARDTEXTDIALOG_H + +// End of File