messagingapp/msgui/unifiededitor/inc/msgunieditorscrollarea.h
author hgs
Tue, 19 Oct 2010 11:30:16 +0530
changeset 76 60a8a215b0ec
permissions -rw-r--r--
201041
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
76
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
 * All rights reserved.
hgs
parents:
diff changeset
     4
 * This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
 * under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
 * which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
 *
hgs
parents:
diff changeset
     9
 * Initial Contributors:
hgs
parents:
diff changeset
    10
 * Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
 *
hgs
parents:
diff changeset
    12
 * Contributors:
hgs
parents:
diff changeset
    13
 *
hgs
parents:
diff changeset
    14
 * Description: manages scrollable portion of view.
hgs
parents:
diff changeset
    15
 *
hgs
parents:
diff changeset
    16
 */
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
#ifndef MSGUNIEDITORSCROLLAREA_H_
hgs
parents:
diff changeset
    19
#define MSGUNIEDITORSCROLLAREA_H_
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
#include <HbScrollArea>
hgs
parents:
diff changeset
    22
#include "convergedmessageaddress.h"
hgs
parents:
diff changeset
    23
hgs
parents:
diff changeset
    24
class QGraphicsLinearLayout;
hgs
parents:
diff changeset
    25
class MsgUnifiedEditorAddress;
hgs
parents:
diff changeset
    26
class MsgUnifiedEditorSubject;
hgs
parents:
diff changeset
    27
class MsgUnifiedEditorBody;
hgs
parents:
diff changeset
    28
class MsgUnifiedEditorBaseWidget;
hgs
parents:
diff changeset
    29
class ConvergedMessage;
hgs
parents:
diff changeset
    30
class MsgAttachmentContainer;
hgs
parents:
diff changeset
    31
class MsgUnifiedEditorMonitor;
hgs
parents:
diff changeset
    32
hgs
parents:
diff changeset
    33
class MsgUnifiedEditorScrollArea : public HbScrollArea
hgs
parents:
diff changeset
    34
{
hgs
parents:
diff changeset
    35
    Q_OBJECT
hgs
parents:
diff changeset
    36
    
hgs
parents:
diff changeset
    37
public:
hgs
parents:
diff changeset
    38
    MsgUnifiedEditorScrollArea(MsgUnifiedEditorMonitor* msgMonitor,QGraphicsItem *parent = 0);
hgs
parents:
diff changeset
    39
    ~MsgUnifiedEditorScrollArea();
hgs
parents:
diff changeset
    40
    
hgs
parents:
diff changeset
    41
    /**
hgs
parents:
diff changeset
    42
     * Tells if contacts in "To" "Cc" , "Bcc" field are valid or not
hgs
parents:
diff changeset
    43
     */
hgs
parents:
diff changeset
    44
    bool contactsValid();
hgs
parents:
diff changeset
    45
hgs
parents:
diff changeset
    46
    /**
hgs
parents:
diff changeset
    47
     * First address of "To" field.
hgs
parents:
diff changeset
    48
     */
hgs
parents:
diff changeset
    49
    ConvergedMessageAddress* currentAddress();
hgs
parents:
diff changeset
    50
    
hgs
parents:
diff changeset
    51
    /**
hgs
parents:
diff changeset
    52
     * Packs the content inside editor into converged message
hgs
parents:
diff changeset
    53
     * @param [OUT]msg, converged message to hold editor data
hgs
parents:
diff changeset
    54
     * @param isSave, flag to indicate that msg needs to be packed
hgs
parents:
diff changeset
    55
     * for saving to draft or not
hgs
parents:
diff changeset
    56
     * @return returns error if something fails
hgs
parents:
diff changeset
    57
     */
hgs
parents:
diff changeset
    58
    int packMessage(ConvergedMessage &msg, bool isSave);
hgs
parents:
diff changeset
    59
    
hgs
parents:
diff changeset
    60
    /**
hgs
parents:
diff changeset
    61
     * add attachments to the editor
hgs
parents:
diff changeset
    62
     * @param files list of file paths
hgs
parents:
diff changeset
    63
     */
hgs
parents:
diff changeset
    64
    void addAttachments(const QStringList files);
hgs
parents:
diff changeset
    65
    
hgs
parents:
diff changeset
    66
    /**
hgs
parents:
diff changeset
    67
     * Checks if vcf file name is already in use or not.
hgs
parents:
diff changeset
    68
     */
hgs
parents:
diff changeset
    69
    bool fileNameInUse(const QString& fileName);
hgs
parents:
diff changeset
    70
    
hgs
parents:
diff changeset
    71
    /**
hgs
parents:
diff changeset
    72
     * Enables/Disables scrolling based on parameter passed.
hgs
parents:
diff changeset
    73
     */
hgs
parents:
diff changeset
    74
    void enableScrolling(bool enable);
hgs
parents:
diff changeset
    75
    
hgs
parents:
diff changeset
    76
    /**
hgs
parents:
diff changeset
    77
     * Populate data into various fields from ConvergedMessage.
hgs
parents:
diff changeset
    78
     * @param msg, ConvergedMessage object.
hgs
parents:
diff changeset
    79
     * @param draftMessage, true if message is opened from drafts.
hgs
parents:
diff changeset
    80
     */
hgs
parents:
diff changeset
    81
    void populateContent(const ConvergedMessage& msg, bool draftMessage, bool checkForInline);
hgs
parents:
diff changeset
    82
    
hgs
parents:
diff changeset
    83
protected:
hgs
parents:
diff changeset
    84
    /**
hgs
parents:
diff changeset
    85
     * Reimplemented from base class.
hgs
parents:
diff changeset
    86
     */
hgs
parents:
diff changeset
    87
    virtual bool scrollByAmount(const QPointF &delta);
hgs
parents:
diff changeset
    88
    
hgs
parents:
diff changeset
    89
hgs
parents:
diff changeset
    90
    
hgs
parents:
diff changeset
    91
private:
hgs
parents:
diff changeset
    92
    void init();
hgs
parents:
diff changeset
    93
    void setFocus(MsgUnifiedEditorBaseWidget* item);
hgs
parents:
diff changeset
    94
    void formatAddresses(ConvergedMessageAddressList& addresses);
hgs
parents:
diff changeset
    95
    
hgs
parents:
diff changeset
    96
signals:
hgs
parents:
diff changeset
    97
    //emitted to enable or disable attach submenu options.
hgs
parents:
diff changeset
    98
    void enableMenuAction(int action, bool enable);
hgs
parents:
diff changeset
    99
    
hgs
parents:
diff changeset
   100
public slots:
hgs
parents:
diff changeset
   101
hgs
parents:
diff changeset
   102
    /**
hgs
parents:
diff changeset
   103
     * Posts event to launch key pad.
hgs
parents:
diff changeset
   104
     */
hgs
parents:
diff changeset
   105
    void postInputPanelEvent();
hgs
parents:
diff changeset
   106
    
hgs
parents:
diff changeset
   107
    /**
hgs
parents:
diff changeset
   108
     * slot to add Cc,Bcc field.
hgs
parents:
diff changeset
   109
     */
hgs
parents:
diff changeset
   110
    void addCcBcc(bool needFocus = false);
hgs
parents:
diff changeset
   111
    
hgs
parents:
diff changeset
   112
    /**
hgs
parents:
diff changeset
   113
     * slot to add subject field.
hgs
parents:
diff changeset
   114
     */
hgs
parents:
diff changeset
   115
    void addSubject(bool needFocus = false);
hgs
parents:
diff changeset
   116
    
hgs
parents:
diff changeset
   117
    /**
hgs
parents:
diff changeset
   118
     * slot to change priority.
hgs
parents:
diff changeset
   119
     */
hgs
parents:
diff changeset
   120
    void changePriority();
hgs
parents:
diff changeset
   121
    
hgs
parents:
diff changeset
   122
    void setImage(const QString& path, bool draftMessage = false);
hgs
parents:
diff changeset
   123
    
hgs
parents:
diff changeset
   124
    void setAudio(const QString& filePath);
hgs
parents:
diff changeset
   125
    
hgs
parents:
diff changeset
   126
private slots:
hgs
parents:
diff changeset
   127
hgs
parents:
diff changeset
   128
    /**
hgs
parents:
diff changeset
   129
     * slot to handle Cc, Bcc group-box's toggle action
hgs
parents:
diff changeset
   130
     */
hgs
parents:
diff changeset
   131
    void updateOtherRecipientCount(bool state);
hgs
parents:
diff changeset
   132
    
hgs
parents:
diff changeset
   133
    /**
hgs
parents:
diff changeset
   134
     * slot to tell view to remove the attachment's container
hgs
parents:
diff changeset
   135
     */
hgs
parents:
diff changeset
   136
    void removeAttachmentContainer();
hgs
parents:
diff changeset
   137
hgs
parents:
diff changeset
   138
    /**
hgs
parents:
diff changeset
   139
     * add an attachment to the editor
hgs
parents:
diff changeset
   140
     * @return addition operation status
hgs
parents:
diff changeset
   141
     */
hgs
parents:
diff changeset
   142
    int addAttachment(const QString& filepath);
hgs
parents:
diff changeset
   143
hgs
parents:
diff changeset
   144
hgs
parents:
diff changeset
   145
private:
hgs
parents:
diff changeset
   146
hgs
parents:
diff changeset
   147
    MsgUnifiedEditorMonitor* mMsgMonitor;
hgs
parents:
diff changeset
   148
    QGraphicsLinearLayout* mMainLayout;
hgs
parents:
diff changeset
   149
    MsgUnifiedEditorAddress* mToField;
hgs
parents:
diff changeset
   150
    MsgUnifiedEditorAddress* mCcField;
hgs
parents:
diff changeset
   151
    MsgUnifiedEditorAddress* mBccField;
hgs
parents:
diff changeset
   152
    MsgUnifiedEditorSubject* mSubjectField;
hgs
parents:
diff changeset
   153
    MsgUnifiedEditorBody* mBody;    
hgs
parents:
diff changeset
   154
    MsgAttachmentContainer* mAttachmentContainer;
hgs
parents:
diff changeset
   155
    
hgs
parents:
diff changeset
   156
    bool mEnableScrolling;
hgs
parents:
diff changeset
   157
#ifdef UNIEDITOR_UNIT_TEST
hgs
parents:
diff changeset
   158
    friend class TestMsgUnifiedEditorScrollArea;
hgs
parents:
diff changeset
   159
#endif
hgs
parents:
diff changeset
   160
};
hgs
parents:
diff changeset
   161
hgs
parents:
diff changeset
   162
#endif /* MSGUNIEDITORSCROLLAREA_H_ */