diff -r 6a20128ce557 -r ebfee66fde93 messagingapp/msgui/conversationview/inc/msgconversationview.h --- /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