messagingapp/msgui/conversationview/inc/msgconversationview.h
changeset 31 ebfee66fde93
child 34 84197e66a4bd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingapp/msgui/conversationview/inc/msgconversationview.h	Fri Jun 04 10:25:39 2010 +0100
@@ -0,0 +1,431 @@
+/*
+ * Copyright (c) 2009 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:Message chat View for the messaging application.
+ *
+ */
+
+#ifndef MSG_CONVERSATION_VIEW_H
+#define MSG_CONVERSATION_VIEW_H
+
+// INCLUDES
+#include "msgbaseview.h"
+#include "convergedmessage.h"
+
+//Forward declarations
+class HbListView;
+class HbAbstractViewItem;
+class MsgSendUtil;
+class QStandardItemModel;
+class MsgEditorWidget;
+class MsgContactCardWidget;
+class MsgConversationViewItem;
+class HbStaticVkbHost;
+class QGraphicsLinearLayout;
+class HbAction;
+//Defines
+#define INVALID_MSG_ID -1
+
+/**
+ * This class provides the message chat view for the messaging application.
+ * Data source for this view is the conversation model.
+ */
+class MsgConversationView : public MsgBaseView
+{
+Q_OBJECT
+
+public:
+
+    /**
+     * Constructor
+     */
+    MsgConversationView(MsgContactCardWidget *contactCardWidget,
+        QGraphicsItem *parent = 0);
+
+    /**
+     * Destructor
+     */
+    ~MsgConversationView();
+
+
+    /**
+     * Clear editors
+     * clear message and address editors
+     */
+    void clearEditors();
+
+    /**
+     * Save the content inside editor to drafts
+     * @return true if save is success else false.
+     */
+    bool saveContentToDrafts();
+
+private slots:
+
+    /**
+     * Slot is called when menu is about to be shown.
+     * Populates the menu with relevant actions.
+     */
+    void menuAboutToShow();
+    
+	/**
+     * This slot is called when settings dialog is launched.
+     * @param action selected action (yes or no).
+     */
+    void onDialogSettingsLaunch(HbAction* action);
+    
+	/**
+     * This slot is called when delete message centre dialog is launched.
+     * @param action selected action (yes or no).
+     */	
+    void onDialogdeleteMsg(HbAction* action);
+	
+	/**
+     * This slot is called when download message centre dialog is launched.
+     * @param action selected action (yes or no).
+     */	    
+    void onDialogDownLoadMsg(HbAction* action);
+	
+	/**
+     * This slot is called when save tone dialog is launched.
+     * @param action selected action (yes or no).
+     */	
+    void onDialogSaveTone(HbAction* action);
+
+private:
+
+    /**
+     * View initialization function.
+     */
+    void setupView();
+
+    /**
+     * Setup view menu items.
+     */
+    void setupMenu();
+
+    /**
+     * Populates ConvergedMessage for sending.
+     * @param ConvergedMessage to be populated
+     * @see ConvergedMessage::MessageType
+     */
+    void populateForSending(ConvergedMessage &message);
+    
+    /**
+     * Adds context menu entries to context menu
+     * @param HbMenu context menu
+     * @param int sendingstate.
+     * @see ConvergedMessage::MessageType
+     */
+    void setContextMenu(MsgConversationViewItem* item, HbMenu* contextMenu, int sendingState);
+	
+    /**
+     * Adds context menu entry to context menu for saving items
+     * @param MsgConversationViewItem* item whose information is needed.
+     * @param HbMenu context menu
+     * @param int sendingstate.
+     * @see ConvergedMessage::MessageType
+     */    
+    void addSaveItemToContextMenu(MsgConversationViewItem* item, HbMenu* contextMenu, int sendingState);
+    
+    /**
+     * Adds context menu entry to context menu for Opening items
+	 * @param MsgConversationViewItem* item whose information is needed.
+     * @param HbMenu context menu
+     * @param int sendingstate.
+     * @see ConvergedMessage::MessageType
+     */
+    void addOpenItemToContextMenu(MsgConversationViewItem* item, HbMenu* contextMenu, int sendingState);
+
+    /**
+     * Adds context menu entry to context menu for Resending items
+     * @param MsgConversationViewItem* item whose information is needed.
+     * @param HbMenu context menu
+     * @param int sendingstate.
+     * @see ConvergedMessage::MessageType
+     */  
+    void addResendItemToContextMenu(MsgConversationViewItem* item, HbMenu* contextMenu, int sendingState);
+
+    /**
+     * Adds context menu entry to context menu for Forwarding items
+	 * @param MsgConversationViewItem* item whose information is needed.
+     * @param HbMenu context menu
+     * @param int sendingstate.
+     * @see ConvergedMessage::MessageType
+     */
+    void addForwardItemToContextMenu(MsgConversationViewItem* item, HbMenu* contextMenu, int sendingState);
+
+    /**
+     * Adds context menu entry to context menu for Deleting items
+	 * @param MsgConversationViewItem* item whose information is needed.
+     * @param HbMenu context menu
+     * @param int sendingstate.
+     * @see ConvergedMessage::MessageType
+     */
+    void addDeleteItemToContextMenu(MsgConversationViewItem* item, HbMenu* contextMenu, int sendingState);
+
+    /**
+     * Adds context menu entry to context menu for Downloading items
+     * @param MsgConversationViewItem* item whose information is needed.
+     * @param HbMenu context menu    
+     * @see ConvergedMessage::MessageType
+     */
+    void addDownloadItemToContextMenu(MsgConversationViewItem* item, HbMenu* contextMenu);
+    
+    /**
+     * Validates if message can be forwarded
+     * @param messageType
+     * @param messageId
+     * @return true if message can be forwarded
+     *         false if message cant be forwarded
+     */
+    bool validateMsgForForward(int &messageType,qint32 &messageId);
+
+    /**
+     * Launches the BT message display service.
+     * @param index Index of the item activated/touched
+     */
+    void launchBtDisplayService(const QModelIndex & index);
+
+public slots:
+    /**
+     * Refreshes all widgets in the conversation view according to latest model
+     * data
+     */
+    void refreshView();
+    
+private slots:
+
+    /**
+     * Utility method to scroll the list to show the bottom most item
+     */
+    void scrollToBottom();
+
+    /**
+     * Handler for long tap of a list item.
+     * @param viewItem  Long tapped view item
+     * @param point X and Y co-ordinates of long tap
+     */
+    void longPressed(HbAbstractViewItem* viewItem, const QPointF& point);
+
+    /**
+     * Handler for short tap/direct touch of a list item.
+     * @param index index of the item activated/touched
+     */
+    void openItem(const QModelIndex & index);
+
+    /**
+     * Sends the message
+     */
+    void send();
+
+    // ----------------------------- View Specific Menu Slots--------------------//
+
+   
+    /**
+     * Fetch images 
+     */
+    void fetchImages();
+
+    /**
+     * Fectch conatcts
+     */
+    void fetchContacts();
+
+    /**
+     * Fectch audio
+     */
+    void fetchAudio();
+
+    /*
+     * Get the photos and launch editor
+     */
+    void imagesFetched(const QVariant& result );
+    
+    /**
+     * slot to receive fetched contacts for addition
+     */
+    void contactsFetched(const QVariant& value);
+
+    /*
+     * Get audio files from audio-fetcher and launch editor
+     */
+    void audiosFetched(const QVariant& result );
+    
+    /**
+     * slot to receive fetched contacts for vcard addition
+     */
+    void contactsFetchedForVCards(const QVariant& value);
+    
+    /*
+     * Adds subject file to editor.
+     */
+    void addSubject();
+
+
+    //----------------------Item Specific menu slots ---------------------//
+
+    /**
+     * Forwards the message
+     */
+    void forwardMessage();
+
+    /**
+     * Deletes the item
+     */
+    void deleteItem();
+    
+    /**
+     * Resends the item. This is only valid in the failed message case.
+     */
+    void resendMessage();
+
+    /**
+     * Download the specified message
+     */
+    void downloadMessage();
+
+    /**
+     * Open the item
+     */
+    void openItem();
+
+    /**
+     * Set model to the view 
+     */    
+    void populateConversationsView();
+
+    /**
+     * Save ringing tone
+     */
+    void saveRingingTone();   
+    
+    /**
+     * Launch Editor since sms character limit reached
+     */
+    void handleSmsCharLimitReached();   
+    
+signals:
+    /**
+     * Signal emitted to inform close the conversation view.
+     * When Conversation view has opened in send mode, after sending
+     * the message, this signal is emitted.
+     */
+    void closeConversationView();
+
+    /**
+     * Emitted when editor is tapped to reply.
+     */
+    void replyStarted();
+    
+	/**
+	* This signal is emitted when vkb is open.
+	*/
+    void hideChrome(bool);
+
+private slots:
+    /**
+     * Resizes the view when VKB is opened.
+     * This slot is triggered when user taps on the CV editor
+     */
+    void vkbOpened();
+
+    /**
+     * Resizes the view when VKB is closed.
+     * This slot is triggered when VKB focus is lost.
+     */
+    void vkbClosed();
+    
+private:
+    /**
+     * launch editor when attachment is inserted
+     * @params data used for launching editor with pre-populated content
+     */
+    void launchUniEditor(const QVariantList& data);
+    
+    /**
+     * Signal emitted when an error is generated.
+     * @param errorCode Error code.
+     * @param errorMessage Error description.
+     */
+    void serviceRequestError(int errorCode, const QString& errorMessage);
+    
+    /**
+     * Activate Input Blocker
+     */
+    void activateInputBlocker();
+
+    /**
+     * Deactivate Input Blocker
+     */
+    void deactivateInputBlocker();
+    
+    /**
+     * Handle provisioning message
+     * @param msgId message id
+     */
+    void handleProvisoningMsg(int msgId);
+
+private:
+
+    /**
+     * List to hold the conversations
+     * Owned
+     */
+    HbListView *mConversationList;
+
+    /**
+     * Model to facilitate filtering and sorting
+     * Owned
+     */
+    QStandardItemModel *mMessageModel;
+
+    /**
+     * Instance of messaged editor widget.
+     */
+    MsgEditorWidget *mEditorWidget;
+
+    /**
+     * Instance of Contact Card widget.
+     */
+    MsgContactCardWidget* mContactCardWidget;
+    
+    /**
+     * Send utils instance
+     */
+    MsgSendUtil *mSendUtil;
+ 
+    /**
+     * Instance of the main layout.
+     */
+    QGraphicsLinearLayout *mMainLayout;
+
+	/**
+	 * Flag to track if item has been long pressed.
+	 * TODO: Remove it, once unique longpress and click event signal released in week16
+	 */
+    bool mItemLongPressed;
+    /*
+     * Instance of VKB 
+     */
+    HbStaticVkbHost* mVkbHost;
+    
+    /**
+     * Flag to check it vkb is open.
+     */
+    bool mVkbopened;
+
+};
+
+#endif // MSG_CONVERSATION_VIEW_H
+// EOF