messagingapp/msgsettings/msginit/inc/coutboxsendoperation.h
author hgs
Tue, 13 Jul 2010 22:09:22 +0530
changeset 46 b1f0785c289d
permissions -rw-r--r--
201027_03
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
46
b1f0785c289d 201027_03
hgs
parents:
diff changeset
     1
/*
b1f0785c289d 201027_03
hgs
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
b1f0785c289d 201027_03
hgs
parents:
diff changeset
     3
* All rights reserved.
b1f0785c289d 201027_03
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
b1f0785c289d 201027_03
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
b1f0785c289d 201027_03
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
b1f0785c289d 201027_03
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
b1f0785c289d 201027_03
hgs
parents:
diff changeset
     8
*
b1f0785c289d 201027_03
hgs
parents:
diff changeset
     9
* Initial Contributors:
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    11
*
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    12
* Contributors:
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    13
*
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    14
* Description:  
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    15
*       When the phone mode is changed from offline to online mode, this class
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    16
*       sends the messages in outbox, that are in suspended or failed state
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    17
*       because of the offline mode. When phone is changed from online to
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    18
*       offline mode, the currently running sending operation will be
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    19
*       cancelled.
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    20
*
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    21
*/
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    22
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    23
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    24
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    25
#ifndef __COUTBOXSENDOPERATION_H__
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    26
#define __COUTBOXSENDOPERATION_H__
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    27
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    28
//  INCLUDES
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    29
#include <msvapi.h>
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    30
#include <MuiuMsvSingleOpWatcher.h>
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    31
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    32
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    33
// FORWARD DECLARATIONS
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    34
class CMsvEntrySelection;
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    35
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    36
// CLASS DECLARATION
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    37
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    38
/**
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    39
*  Sends messages from Outbox when user selects "Start" in Outbox.
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    40
*/
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    41
class COutboxSendOperation : public CMsvOperation
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    42
    {
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    43
    public: 
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    44
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    45
       /**
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    46
        *   A two-phased constructor.
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    47
        */
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    48
        static COutboxSendOperation* NewL(
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    49
            CMsvSession& aMsvSession, TRequestStatus& aObserverRequestStatus);
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    50
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    51
       /**
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    52
        *   A destructor.
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    53
        */
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    54
        virtual ~COutboxSendOperation();
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    55
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    56
       /**
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    57
        *   Returns the current operation.
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    58
        */
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    59
        virtual const TDesC8& ProgressL();
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    60
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    61
    private:
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    62
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    63
       /**
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    64
        *   A C++ constructor
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    65
        */
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    66
        COutboxSendOperation(
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    67
            CMsvSession& aMsvSession, TRequestStatus& aObserverRequestStatus);
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    68
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    69
       /**
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    70
        *   Creates the sending operation session.
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    71
        */
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    72
        void ConstructL();
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    73
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    74
    private:    // Functions from base classes
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    75
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    76
       /**
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    77
        *   Cancels sending operation.
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    78
        */
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    79
        void DoCancel();
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    80
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    81
       /**
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    82
        *   Keeps the message sending operaion active until all
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    83
        *   messages are sent.
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    84
        */
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    85
        void RunL();
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    86
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    87
       /**
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    88
        *  Handles the runtime error events
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    89
        */
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    90
        TInt RunError( TInt aError );
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    91
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    92
    private:    // New functions
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    93
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    94
       /**
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    95
        *   Starts sending operation for  next selection.
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    96
        */
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    97
        void StartSendingL();
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    98
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    99
       /**
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   100
        *   Sets the selected messages to sending state.
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   101
        */
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   102
        void SendWaitingSMSMessages();
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   103
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   104
       /**
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   105
        *   Sets the selected messages to sending state.
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   106
        */
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   107
        void SendWaitingSMSMessagesL();
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   108
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   109
       /**
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   110
        *   Creates selection of spesified type of messages in outbox
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   111
        */
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   112
        void CreateSelectionL(
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   113
            const TUid& aUidForSel,
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   114
            const TMsvId& aServiceId,
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   115
            CMsvEntrySelection*& aSelection );
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   116
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   117
       /**
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   118
        *   Checks if MTM is available and creates selection
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   119
        */
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   120
        TBool CheckAndCreateSelectionL();
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   121
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   122
       /**
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   123
        * Completes operation and cancels notify
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   124
        */
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   125
        void CompleteObserver( TInt aStatus );
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   126
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   127
       /**
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   128
        * Deletes the selection
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   129
        */
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   130
        void RemoveSelection();
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   131
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   132
        /**
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   133
        * Checks if there is need to continue sending operation
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   134
        */
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   135
        TBool IsSendingNeeded( TUid& aMtm ) const;
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   136
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   137
        /**
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   138
        * Removes the sending flag
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   139
        */
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   140
        void RemoveSendingFlag( const TUid& aMtm );
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   141
        
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   142
        /**
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   143
        * Complete own request
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   144
        */
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   145
        void CompleteSelf( TInt aValue );
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   146
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   147
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   148
    private:    // Data
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   149
        enum
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   150
        {
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   151
            ESupportsSmsSending      = 0x01,
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   152
            ESendSms                 = 0x10,
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   153
        };
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   154
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   155
        // Selection queue
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   156
        CArrayPtrFlat<CMsvEntrySelection> iSelections;
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   157
        // Services selection
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   158
        CMsvEntrySelection      iServices;
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   159
        // Pointer to Msv Operation
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   160
        CMsvOperation*          iOperation;
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   161
        // Entry pointer
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   162
        CMsvEntry*              iEntry;
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   163
        // Supported message types
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   164
        TUint                   iSupportedMsgs;
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   165
    };
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   166
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   167
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   168
#endif // __COUTBOXSENDOPERATION_H__
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   169
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   170
// End of file