messagingapp/msgui/unifiededitor/inc/msgunieditormonitor.h
author hgs
Fri, 25 Jun 2010 15:47:40 +0530
changeset 37 518b245aa84c
child 76 60a8a215b0ec
permissions -rw-r--r--
201025
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
37
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: Helper class to monitor msg construction in unified editor
hgs
parents:
diff changeset
    15
 *
hgs
parents:
diff changeset
    16
 */
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
#ifndef MSG_UNIFIED_EDITOR_MONITOR_H
hgs
parents:
diff changeset
    19
#define MSG_UNIFIED_EDITOR_MONITOR_H
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
#include <QObject>
hgs
parents:
diff changeset
    22
#include "convergedmessage.h"
hgs
parents:
diff changeset
    23
class MsgUnifiedEditorView;
hgs
parents:
diff changeset
    24
class HbWidget;
hgs
parents:
diff changeset
    25
class UniEditorGenUtils;
hgs
parents:
diff changeset
    26
hgs
parents:
diff changeset
    27
/**
hgs
parents:
diff changeset
    28
 * Helper class to monitor message's contruction in unified editor.
hgs
parents:
diff changeset
    29
 * This class is for only reading editor's content to run its logic.
hgs
parents:
diff changeset
    30
 * This class is NOT a place for content editing inside editor.
hgs
parents:
diff changeset
    31
 */
hgs
parents:
diff changeset
    32
class MsgUnifiedEditorMonitor : public QObject
hgs
parents:
diff changeset
    33
    {
hgs
parents:
diff changeset
    34
    Q_OBJECT
hgs
parents:
diff changeset
    35
hgs
parents:
diff changeset
    36
public:
hgs
parents:
diff changeset
    37
    /**
hgs
parents:
diff changeset
    38
     * Constructor
hgs
parents:
diff changeset
    39
     */
hgs
parents:
diff changeset
    40
    MsgUnifiedEditorMonitor(QObject* parent=0);
hgs
parents:
diff changeset
    41
hgs
parents:
diff changeset
    42
    /**
hgs
parents:
diff changeset
    43
     * Destructor
hgs
parents:
diff changeset
    44
     */
hgs
parents:
diff changeset
    45
    ~MsgUnifiedEditorMonitor();
hgs
parents:
diff changeset
    46
hgs
parents:
diff changeset
    47
    /**
hgs
parents:
diff changeset
    48
     * Set to skip showing note for first time
hgs
parents:
diff changeset
    49
     * @param skip true/false
hgs
parents:
diff changeset
    50
     */
hgs
parents:
diff changeset
    51
    inline void setSkipNote(bool skip = true);
hgs
parents:
diff changeset
    52
    
hgs
parents:
diff changeset
    53
    /**
hgs
parents:
diff changeset
    54
     * Seeker method to access current message type
hgs
parents:
diff changeset
    55
     */
hgs
parents:
diff changeset
    56
    static inline ConvergedMessage::MessageType messageType();
hgs
parents:
diff changeset
    57
hgs
parents:
diff changeset
    58
    /**
hgs
parents:
diff changeset
    59
     * seeker function to get current msg size in bytes
hgs
parents:
diff changeset
    60
     */
hgs
parents:
diff changeset
    61
    static inline int messageSize();
hgs
parents:
diff changeset
    62
hgs
parents:
diff changeset
    63
    /**
hgs
parents:
diff changeset
    64
     * seeker function to get current msg's body size 
hgs
parents:
diff changeset
    65
     * in bytes
hgs
parents:
diff changeset
    66
     */
hgs
parents:
diff changeset
    67
    static inline int bodySize();
hgs
parents:
diff changeset
    68
hgs
parents:
diff changeset
    69
    /**
hgs
parents:
diff changeset
    70
     * seeker function to get current msg's attachment
hgs
parents:
diff changeset
    71
     * container size in bytes
hgs
parents:
diff changeset
    72
     */
hgs
parents:
diff changeset
    73
    static inline int containerSize();
hgs
parents:
diff changeset
    74
hgs
parents:
diff changeset
    75
    /**
hgs
parents:
diff changeset
    76
     * seeker function to get current msg's subject
hgs
parents:
diff changeset
    77
     * size in bytes
hgs
parents:
diff changeset
    78
     */
hgs
parents:
diff changeset
    79
    static inline int subjectSize();
hgs
parents:
diff changeset
    80
hgs
parents:
diff changeset
    81
    /**
hgs
parents:
diff changeset
    82
     * seeker function to get max possible mms size
hgs
parents:
diff changeset
    83
     * in bytes
hgs
parents:
diff changeset
    84
     */
hgs
parents:
diff changeset
    85
    static inline int maxMmsSize();
hgs
parents:
diff changeset
    86
    
hgs
parents:
diff changeset
    87
    /**
hgs
parents:
diff changeset
    88
     * seeker funtion to get max recipient count for sms
hgs
parents:
diff changeset
    89
     */
hgs
parents:
diff changeset
    90
    static inline int maxSmsRecipients();
hgs
parents:
diff changeset
    91
hgs
parents:
diff changeset
    92
    /**
hgs
parents:
diff changeset
    93
     * seeker funtion to get max recipient count for mms
hgs
parents:
diff changeset
    94
     */
hgs
parents:
diff changeset
    95
    static inline int maxMmsRecipients();
hgs
parents:
diff changeset
    96
    
hgs
parents:
diff changeset
    97
    /**
hgs
parents:
diff changeset
    98
     * get total address count in To, Cc & Bcc fields
hgs
parents:
diff changeset
    99
     */
hgs
parents:
diff changeset
   100
    static inline int msgAddressCount();
hgs
parents:
diff changeset
   101
hgs
parents:
diff changeset
   102
public slots:
hgs
parents:
diff changeset
   103
    /**
hgs
parents:
diff changeset
   104
     * slot to handle content change in any editor component
hgs
parents:
diff changeset
   105
     */
hgs
parents:
diff changeset
   106
    void handleContentChange();
hgs
parents:
diff changeset
   107
hgs
parents:
diff changeset
   108
signals:
hgs
parents:
diff changeset
   109
    /**
hgs
parents:
diff changeset
   110
     * Emitted when composed message can be sent.
hgs
parents:
diff changeset
   111
     * @param enable true if send is possible else false.
hgs
parents:
diff changeset
   112
     */
hgs
parents:
diff changeset
   113
    void enableSend(bool enable);
hgs
parents:
diff changeset
   114
hgs
parents:
diff changeset
   115
private:
hgs
parents:
diff changeset
   116
    /**
hgs
parents:
diff changeset
   117
     * setter method to initialize content
hgs
parents:
diff changeset
   118
     */
hgs
parents:
diff changeset
   119
    void init();
hgs
parents:
diff changeset
   120
hgs
parents:
diff changeset
   121
    /**
hgs
parents:
diff changeset
   122
     * Determine the projected msg type due to change in editor content
hgs
parents:
diff changeset
   123
     */
hgs
parents:
diff changeset
   124
    ConvergedMessage::MessageType projectedMsgType();
hgs
parents:
diff changeset
   125
hgs
parents:
diff changeset
   126
    /**
hgs
parents:
diff changeset
   127
     * update various msg info changes during editing
hgs
parents:
diff changeset
   128
     * @param senderWidget, Editor widget which triggered 
hgs
parents:
diff changeset
   129
     * content change slot
hgs
parents:
diff changeset
   130
     */
hgs
parents:
diff changeset
   131
    void updateMsgInfo(HbWidget* senderWidget);
hgs
parents:
diff changeset
   132
    
hgs
parents:
diff changeset
   133
    /**
hgs
parents:
diff changeset
   134
     * show type change discreet note
hgs
parents:
diff changeset
   135
     */
hgs
parents:
diff changeset
   136
    void showPopup(const QString& text);
hgs
parents:
diff changeset
   137
    
hgs
parents:
diff changeset
   138
    /**
hgs
parents:
diff changeset
   139
     * accessor for view
hgs
parents:
diff changeset
   140
     */
hgs
parents:
diff changeset
   141
    MsgUnifiedEditorView* view();
hgs
parents:
diff changeset
   142
    
hgs
parents:
diff changeset
   143
    /**
hgs
parents:
diff changeset
   144
     * check editor body for MMS content
hgs
parents:
diff changeset
   145
     * @return true if MMS content is present
hgs
parents:
diff changeset
   146
     */
hgs
parents:
diff changeset
   147
    bool bodyHasMMSContent();
hgs
parents:
diff changeset
   148
    
hgs
parents:
diff changeset
   149
    /**
hgs
parents:
diff changeset
   150
     * check editor subject for MMS content
hgs
parents:
diff changeset
   151
     * @return true if MMS content is present
hgs
parents:
diff changeset
   152
     */
hgs
parents:
diff changeset
   153
    bool subjectHasMMSContent();
hgs
parents:
diff changeset
   154
    
hgs
parents:
diff changeset
   155
    /**
hgs
parents:
diff changeset
   156
     * check editor attachment container for MMS content
hgs
parents:
diff changeset
   157
     * @return true if MMS content is present
hgs
parents:
diff changeset
   158
     */
hgs
parents:
diff changeset
   159
    bool containerHasMMSContent();
hgs
parents:
diff changeset
   160
    
hgs
parents:
diff changeset
   161
    /**
hgs
parents:
diff changeset
   162
     * check for other MMS content criteria
hgs
parents:
diff changeset
   163
     * @return true if MMS criteria is met
hgs
parents:
diff changeset
   164
     */
hgs
parents:
diff changeset
   165
    bool otherMMSCriteriaMet();
hgs
parents:
diff changeset
   166
hgs
parents:
diff changeset
   167
    /**
hgs
parents:
diff changeset
   168
     * Checks if composed message can be sent and emits a signal.
hgs
parents:
diff changeset
   169
     */
hgs
parents:
diff changeset
   170
    void updateSend();
hgs
parents:
diff changeset
   171
hgs
parents:
diff changeset
   172
private:
hgs
parents:
diff changeset
   173
hgs
parents:
diff changeset
   174
    /**
hgs
parents:
diff changeset
   175
     * Flag to skip showing the type change popup.
hgs
parents:
diff changeset
   176
     * Note need to be skipped when an mms is opened from draft.
hgs
parents:
diff changeset
   177
     */
hgs
parents:
diff changeset
   178
    bool mSkipNote;
hgs
parents:
diff changeset
   179
hgs
parents:
diff changeset
   180
    /**
hgs
parents:
diff changeset
   181
     * Type of msg under composition in the editor 
hgs
parents:
diff changeset
   182
     */
hgs
parents:
diff changeset
   183
    static ConvergedMessage::MessageType mMessageType;
hgs
parents:
diff changeset
   184
    
hgs
parents:
diff changeset
   185
    /**
hgs
parents:
diff changeset
   186
     * msg body size in bytes
hgs
parents:
diff changeset
   187
     */
hgs
parents:
diff changeset
   188
    static int mBodySize;
hgs
parents:
diff changeset
   189
    
hgs
parents:
diff changeset
   190
    /**
hgs
parents:
diff changeset
   191
     * msg container size in bytes
hgs
parents:
diff changeset
   192
     */
hgs
parents:
diff changeset
   193
    static int mContainerSize;
hgs
parents:
diff changeset
   194
    
hgs
parents:
diff changeset
   195
    /**
hgs
parents:
diff changeset
   196
     * msg subject size in bytes
hgs
parents:
diff changeset
   197
     */
hgs
parents:
diff changeset
   198
    static int mSubjectSize;
hgs
parents:
diff changeset
   199
hgs
parents:
diff changeset
   200
    /**
hgs
parents:
diff changeset
   201
     * max mms size in bytes
hgs
parents:
diff changeset
   202
     */
hgs
parents:
diff changeset
   203
    static int mMaxMmsSize;
hgs
parents:
diff changeset
   204
    
hgs
parents:
diff changeset
   205
    /**
hgs
parents:
diff changeset
   206
     * max recipient count in an sms
hgs
parents:
diff changeset
   207
     */
hgs
parents:
diff changeset
   208
    static int mMaxSmsRecipients;
hgs
parents:
diff changeset
   209
hgs
parents:
diff changeset
   210
    /**
hgs
parents:
diff changeset
   211
     * max recipient count in an sms
hgs
parents:
diff changeset
   212
     */
hgs
parents:
diff changeset
   213
    static int mMaxMmsRecipients;
hgs
parents:
diff changeset
   214
    
hgs
parents:
diff changeset
   215
    /**
hgs
parents:
diff changeset
   216
     * current msg address count (to + cc + bcc)
hgs
parents:
diff changeset
   217
     */
hgs
parents:
diff changeset
   218
    static int mMsgCurrAddressCount;
hgs
parents:
diff changeset
   219
hgs
parents:
diff changeset
   220
    /**
hgs
parents:
diff changeset
   221
     * UniEditorGenUtils object
hgs
parents:
diff changeset
   222
     * Owned
hgs
parents:
diff changeset
   223
     */
hgs
parents:
diff changeset
   224
    UniEditorGenUtils* mUniEditorGenUtils;
hgs
parents:
diff changeset
   225
    };
hgs
parents:
diff changeset
   226
hgs
parents:
diff changeset
   227
#include "msgunieditormonitor.inl"
hgs
parents:
diff changeset
   228
hgs
parents:
diff changeset
   229
#endif //MSG_UNIFIED_EDITOR_MONITOR_H