classicui_plat/find_item_ui_api/inc/finditemdialog.h
changeset 0 2f259fa3e83a
child 23 3d340a0166ff
child 30 56e9a0aaad89
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/classicui_plat/find_item_ui_api/inc/finditemdialog.h	Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,524 @@
+/*
+* Copyright (c) 2002-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: 
+*
+*/
+
+
+#ifndef FINDITEMDIALOG_H
+#define FINDITEMDIALOG_H
+
+// INCLUDES
+#include <coecntrl.h>
+#include <coeccntx.h>
+
+#include <eikapp.h>
+#include <eikdoc.h>
+#include <e32std.h>
+#include <eikdialg.h>
+#include <AknForm.h>
+#include <finditemengine.h>
+#include <ConeResLoader.h> // for RConeResourceLoader
+#ifndef RD_VIRTUAL_PHONEBOOK
+#include <RPbkViewResourceFile.h>
+#endif // !RD_VIRTUAL_PHONEBOOK
+#include <eikcapc.h>
+#include <w32std.h>
+#include <AknNaviDecoratorObserver.h>
+
+// AIW
+#include <AiwServiceHandler.h>
+#include <aiwdialdataext.h>
+
+// FORWARD DECLARATIONS
+class CEikRichTextEditor;
+class CEikScrollBarFrame;
+class CAknTitlePane;
+class CAknNavigationControlContainer;
+class CAknNavigationDecorator;
+class CPbkContactEngine;
+class CFindItemController;
+#ifndef RD_VIRTUAL_PHONEBOOK
+class CPbkDataSaveAppUi;
+#endif // !RD_VIRTUAL_PHONEBOOK
+class TCoeHelpContext;
+class CFindItemVoIPExtension;
+class CSchemeHandler;
+class CAknsBasicBackgroundControlContext;
+class CRichTextEditorContainer;
+class CSendUi;
+class CItemFinderExtension;
+
+// CLASS DECLARATION
+
+/*
+*   MFindItemDialogCallBack
+*       Pure virtual callback class to enable a controller to communicate with the dialog
+*/
+class MFindItemDialogCallBack
+    {
+    public:
+        /**
+        * Updates editor's selection.
+        *   Pure virtual method that needs to be overriden
+        *
+        * @param aItem Item that will be selected
+        */
+        virtual void SelectionChangedL( const CFindItemEngine::SFoundItem& aItem ) = 0;
+        /**
+        * Updates editor's selection.
+        *   Pure virtual method that needs to be overriden
+        *
+        * @param aItem Item that will be selected
+        * @param aNext Gives the direction of selections movement
+        *   aNext is ETrue if moving forward
+        */
+        virtual void SelectionChangedL( const CFindItemEngine::SFoundItem& aItem, const TBool aNext ) = 0;
+
+        /**
+        * Returns ETrue if items are in same line
+        *
+        * @param aItem1  First document position to compare
+        * @param aItem2  Second document position to compare
+        */
+        virtual TBool AtSameLine( const TInt& aItem1, const TInt& aItem2 ) = 0;
+    };
+
+// CLASS DECLARATION
+/**
+* CFindItemDialog dialog class
+*   This is an interface class for applications to use FindItem.
+*   Derived from CAknDialog to enable options menu.
+*
+* Usage:
+*   ----------------------- Copy & Paste -------------------------------
+*   CFindItemDialog* dialog = CFindItemDialog::NewL( text, searchCase );
+*   dialog->ExecuteLD();
+*   --------------------------------------------------------------------
+*
+*   Text has to be given to dialog as a descriptor.
+*   If the application's text is an object derived from CEditableText,
+*   like in CEik* editors, there's two possible things that can/need to be
+*   done depending on the type of in-memory buffer used:
+*       If the text is as a flat buffer, a descriptor can be fetched using
+*           TPtrC text = iRichText->Read(0);
+*       otherwise a new descriptor need to be created and e.g. richtext's
+*       Read() method needs to be called as long as the whole text is
+*       inserted to descriptor.
+*
+*   The dialog will be automatically destroyed by ExecuteLD.
+*
+*   Use CFindItemMenu class to insert finditem-menuitems to your
+*       application's menu. See: finditemmenu.h for more info
+*
+*   Note ! NewL stores a reference to the text passed as a parameter and
+*           uses it when the dialog gets executed so it should not be deleted
+*           before the dialog is dismissed.
+*
+*/
+NONSHARABLE_CLASS(CFindItemDialog)
+    : public CAknDialog,
+    public MFindItemDialogCallBack,
+    public MEikScrollBarObserver,
+    public MPointerEventObserver,
+    public MAknNaviDecoratorObserver
+    {
+
+    public: // Constructors and destructor
+        /**
+        * Destructor.
+        */
+        IMPORT_C ~CFindItemDialog();
+        /**
+        * Two-phased constructor.
+        *
+        * @param aPlainText     Text that will be parsed. Stores the
+        *                       reference and uses it when the dialog is
+        *                       executed so it should not be destroyed
+        *                       before the dialog is dismissed.
+        * @param aSearchCase    Identifies what items are we looking for:
+        *                           EFindItemSearchPhoneNumberBin
+        *                           EFindItemSearchMailAddressBin
+        *                           EFindItemSearchURLBin
+        *
+        * @return Pointer to created CFindItemDialog
+        */
+        IMPORT_C static CFindItemDialog* NewL( const TDesC& aPlainText,
+                const CFindItemEngine::TFindItemSearchCase aSearchCase );
+
+    public: // New functions
+        /**
+        * Initializes the dialog and calls CAknDialog's
+        *   ExecuteLD()
+        * This method need to be called to execute the dialog
+        * After exiting the dialog gets automatically destroyed
+        *
+        * @return CAknDialog::ExecuteLD()
+        */
+        IMPORT_C TInt ExecuteLD();
+
+    public: // Functions from base classes
+        /**
+        * From MEikCommandObserver Prosesses menucommands
+        */
+        IMPORT_C void ProcessCommandL( TInt aCommandId );
+        /**
+        * From CCoeControl Handles key events
+        */
+        IMPORT_C TKeyResponse OfferKeyEventL(
+            const TKeyEvent& aKeyEvent,
+            TEventCode aType );
+
+    protected:  // Functions from base classes
+
+        /**
+        * From MFindItemDialogCallBack Updates editor's selection.
+        *
+        * @param aItem Item that will be selected
+        */
+        void SelectionChangedL( const CFindItemEngine::SFoundItem& aItem );
+
+        /**
+        * From MFindItemDialogCallBack Updates editor and selects item
+        *
+        * @param aItem  Item that will be selected
+        * @param aNext  Gives the direction of selections movement
+        *                   aNext is ETrue if moving forward
+        */
+        void SelectionChangedL( const CFindItemEngine::SFoundItem& aItem,
+                                const TBool aNext );
+
+        /**
+        * From MFindItemDialogCallBack Returns whether positions
+        *   are at the same line
+        *
+        * @param aItem1  First document position to compare
+        * @param aItem2  Second document position to compare
+        */
+        TBool AtSameLine( const TInt& aItem1, const TInt& aItem2 );
+
+        /**
+        * From MEikMenuObserver Initializes items on the menu
+        *
+        * @param aMenuId    Current menu's resource Id
+        * @param aMenuPane  Pointer to menupane
+        */
+        IMPORT_C void DynInitMenuPaneL(TInt aMenuId, CEikMenuPane* aMenuPane);
+
+        /**
+        * From CEikDialog Initializes dialog before layout
+        */
+        void PreLayoutDynInitL();
+        /**
+        * From CEikDialog Initializes dialog after layout
+        */
+        void PostLayoutDynInitL();
+
+        /**
+        * From CEikDialog Handles button events and looks if the dialog
+        *   can be closed
+        *
+        * @param aButtonId Id of the 'pressed' button
+        *
+        * @return   EFalse if Options menu was pressed
+        *           ETrue otherwise
+        */
+        TBool OkToExitL( TInt aButtonId );
+
+        /**
+        * From CCoeControl
+        *   This function is called when Help application is launched.
+        *
+        * @param aContext Help context
+        */
+        void GetHelpContext( TCoeHelpContext& aContext) const;
+
+        /**
+        * From CAknDialog
+        *   This function is called when dialog control is created.
+        *
+        * @param aControlType Custom control type
+        *
+        * @return   Control info structure
+        *
+        */
+        SEikControlInfo CreateCustomControlL( TInt aControlType );
+
+        /**
+        * From CAknDialog
+        *   This function is called to provide access to the contorols.
+        *
+        * @param aId Provider object Uid
+        *
+        * @return   Type of object that an object provider is to get.
+        *
+        */
+        TTypeUid::Ptr MopSupplyObject( TTypeUid aId );
+
+        /**
+        * From CAknDialog
+        *   This function is called when dialog focus has changed.
+        *
+        */
+        void FocusChanged(TDrawNow /*aDrawNow*/);
+
+        /**
+        * From CCoeControl
+        *   This function is called when dialog resource has changed.
+        *
+        * @param aType Resource change type
+        */
+        void HandleResourceChange( TInt aType );
+
+        /**
+        * From CCoeControl
+        *   This function is called when dialog size has been changed.
+        *
+        * @param aContext Help context
+        */
+        void SizeChanged();
+
+        /**
+        * From MPointerEventObserver.
+        *  This function handles CEikCaptionedControl pointer events.
+        *
+        * @param aControl Pointer to the control
+        * @param aPointerEvent Pointer event
+        */
+        bool PointerEvent(
+            CEikCaptionedControl *aControl,
+            const TPointerEvent& aPointerEvent );
+
+        /**
+        * From MEikScrollBarObserver.
+        *  This function handles CEikScrollBar events.
+        * @param aScrollBar Pointer to the scrollbar
+        * @param aEventType Event type
+        */
+        void HandleScrollEventL(
+            CEikScrollBar* aScrollBar,
+            TEikScrollEvent aEventType );
+            
+        /**
+        * From MAknNaviDecoratorObserver.
+        *  This function handles the navi decorator events.        
+        * @param aEventID Event id
+        */            
+        void HandleNaviDecoratorEventL( TInt aEventID );
+
+    private:
+        /**
+        * Default C++ constructor.
+        */
+        CFindItemDialog();
+        /**
+        * C++ constructor
+        *
+        * @param aPlainText     Text that will be parsed
+        * @param aSearchCase    Identifies what items we are looking for:
+        *                           EFindItemSearchPhoneNumberBin
+        *                           EFindItemSearchMailAddressBin
+        *                           EFindItemSearchURLBin
+        */
+        CFindItemDialog(
+            const TDesC& aPlainText,
+            const CFindItemEngine::TFindItemSearchCase aSearchCase );
+
+        /**
+        * EPOC constructor
+        */
+        void ConstructL();
+
+        /**
+        * Move into previous row, where found item is
+        */
+        void MoveUpL();
+
+        /**
+        * Move into next row, where found item is
+        */
+        void MoveDownL();
+
+        /**
+        * Copies the selected item to clipboard
+        */
+        void CopyToClipboardL();
+
+        /**
+        * Creates a contact card from selected item
+        *   Calls ContactAddToExistingL or ContactAddToNewL depending on
+        *   whether the user wants to create new contact or add to existing
+        */
+        void CreateContactCardL( TInt aCommandId );
+
+        /**
+        * Creates a contact card from selected item
+        */
+        void ContactAddToExistingL();
+
+        /**
+        * Creates a new contact card from selected item
+        */
+        void ContactAddToNewL();
+
+        /**
+        * Sends message (SMS, MMS or e-mail) to selected item
+        *
+        * @param aMtmUid    MTM UId of the message type
+        */
+        void SendMessageL( const TUid aMtmUid );
+
+        /**
+        * Goes to URL (selected item) using browser
+        *
+        * @param aItemtextPtr Selected item
+        */
+        void GoToUrlL(const TPtr& aItemtextPtr);
+
+        /**
+        * Goes to URI (selected item)
+        *
+        * @return Returns ETrue if Find Item dialog was deleted
+        */
+        TBool LaunchGenericUriL();
+
+        /**
+        * Adds the selected item to bookmarks
+        */
+        void AddToBookmarkL();
+
+        /**
+        * Creates ScrollBarFrame
+        */
+        void CreateScrollBarFrameL();
+
+        /**
+        * Called just before Draw function
+        */
+        void ActivateL();
+
+        /**
+        * Updates ScrollIndicator
+        */
+        void UpdateScrollIndicatorL();
+
+        /**
+        * Updates Navipane
+        */
+        void UpdateNaviPaneL();
+
+        /**
+        * Creates VoIP call
+        * @since 3.0
+        */
+        void CreateInternetCallL();
+
+    private: //data
+        // Pointer to controller which controls engine and dialog
+        CFindItemController* iController;
+        // Plaintext which will be parsed
+        TPtrC iPlainText;
+        // What we are looking for: phone number, mail- or url-address
+        const CFindItemEngine::TFindItemSearchCase iSearchCase;
+        // Richtext editor
+        CEikRichTextEditor* iEdwin;
+        // Titlepane
+        CAknTitlePane* iTitlePane;
+        // Applications title
+        HBufC* iOldTitle;
+
+        // Boolean to display context-sensitive-menu
+        TBool iIsSensitiveMenu;
+
+        // Navipane variables
+        CAknNavigationControlContainer* iNaviPane;
+        CAknNavigationDecorator* iNaviDecorator;
+        // ScrollBarFrame
+        CEikScrollBarFrame* iSBFrame;
+        // Array to enable the scrollbar to know current position.
+        CArrayFixFlat<TInt>* iItemArrayForScrollBar;
+
+        // SendUi
+        CSendUi* iSendUi;
+
+#ifndef RD_VIRTUAL_PHONEBOOK
+        CPbkContactEngine* iPbkEngine;
+        CPbkDataSaveAppUi* iPbkDataSave;
+        RPbkViewResourceFile iPbkResourceFile;
+#endif // !RD_VIRTUAL_PHONEBOOK
+
+        //Resource loader
+        RConeResourceLoader iResLoader;
+
+        CIdle* iIdle;
+
+        // AIW related members
+
+        // Service Handler instance.
+        CAiwServiceHandler* iServiceHandler;
+
+       // DialData.
+        CAiwDialDataExt* iDialData;
+
+        TBool iHideCallMenu;
+        // Contains information of the VoIP profiles.
+        CFindItemVoIPExtension* iFindItemVoIPExtension;
+
+        CSchemeHandler* iSchemeHandler;
+
+        CAknsBasicBackgroundControlContext* iBgContext;
+
+        CRichTextEditorContainer* iEdwinContainer;
+
+        TBool iHelpFeatureSupported;
+
+        // Contains information of MMS support
+        TBool iMMSFeatureSupported;
+
+        // Contains information of Email over SMS support
+        TBool iEmailOverSmsFeatureSupported;
+
+        // Contains information of Email Ui support
+        TBool iEmailUiFeatureSupported;
+
+        // Contains information of Audio Messaging support
+        TBool iAudioMessagingFeatureSupported;
+
+        // Title pane text.
+        HBufC* iTitleText;
+
+        // Tapping offset.
+        TPoint iTappingOffset;
+
+        // Current thumb position in scrollbar.
+        TInt iThumbPos;
+
+        // Rows used in viewer.
+        TInt iRows;
+        
+        CItemFinderExtension*	iExtension;
+
+    public: // new methods
+        void DeleteMeL();
+        static TInt DeleteMe(TAny* aThis);
+
+    private: // new methods
+        void FormatDialDataL( TInt aCommandId );
+        TBool IsSendKeyCallVoIP() const;
+
+};
+
+#endif  // FINDITEMDIALOG_H
+
+// End of File