cbs/cbsserver/ServerInc/CCbsTopicList.h
author hgs
Fri, 06 Aug 2010 13:08:23 +0300
changeset 36 7c428525956b
parent 33 8d5d7fcf9b59
permissions -rw-r--r--
201031
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
33
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2003 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:  This file contains the header file of the CCbsTopicList class.
hgs
parents:
diff changeset
    15
*    
hgs
parents:
diff changeset
    16
*                The server-side topic list subsession class.
hgs
parents:
diff changeset
    17
*
hgs
parents:
diff changeset
    18
*/
hgs
parents:
diff changeset
    19
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
#ifndef     CCBSTOPICLIST_H
hgs
parents:
diff changeset
    23
#define     CCBSTOPICLIST_H
hgs
parents:
diff changeset
    24
hgs
parents:
diff changeset
    25
// INCLUDES
hgs
parents:
diff changeset
    26
#include "CCbsObject.h"
hgs
parents:
diff changeset
    27
#include "MCbsDbTopicListObserver.H"
hgs
parents:
diff changeset
    28
hgs
parents:
diff changeset
    29
// FORWARD DECLARATIONS
hgs
parents:
diff changeset
    30
class CCbsSession;
hgs
parents:
diff changeset
    31
class CCbsRecEtel;
hgs
parents:
diff changeset
    32
class CCbsDbImpTopicList;
hgs
parents:
diff changeset
    33
hgs
parents:
diff changeset
    34
//  CLASS DECLARATION 
hgs
parents:
diff changeset
    35
hgs
parents:
diff changeset
    36
/**
hgs
parents:
diff changeset
    37
*   Subsession for managing the topic list.
hgs
parents:
diff changeset
    38
*/
hgs
parents:
diff changeset
    39
class   CCbsTopicList
hgs
parents:
diff changeset
    40
        : public CCbsObject, public MCbsDbTopicListObserver
hgs
parents:
diff changeset
    41
    {
hgs
parents:
diff changeset
    42
    public:     // New functions
hgs
parents:
diff changeset
    43
        /**
hgs
parents:
diff changeset
    44
        *   Creates a new instance of the class.
hgs
parents:
diff changeset
    45
        *
hgs
parents:
diff changeset
    46
        *   @param  aSession        Session
hgs
parents:
diff changeset
    47
        *   @param  aTopicList      Topic list
hgs
parents:
diff changeset
    48
        *   @param  aReceiver       Receiver.
hgs
parents:
diff changeset
    49
        *   @return                 The new instance of CCbsSettings.
hgs
parents:
diff changeset
    50
        */
hgs
parents:
diff changeset
    51
        static CCbsTopicList* NewL( CCbsSession& aSession, 
hgs
parents:
diff changeset
    52
                                    CCbsDbImpTopicList& aTopicList, 
hgs
parents:
diff changeset
    53
                                    CCbsRecEtel& aReceiver );
hgs
parents:
diff changeset
    54
hgs
parents:
diff changeset
    55
        /**
hgs
parents:
diff changeset
    56
        *   Destructor.
hgs
parents:
diff changeset
    57
        */
hgs
parents:
diff changeset
    58
        ~CCbsTopicList();
hgs
parents:
diff changeset
    59
hgs
parents:
diff changeset
    60
    public:     // From CCbsObject
hgs
parents:
diff changeset
    61
hgs
parents:
diff changeset
    62
        /**
hgs
parents:
diff changeset
    63
        *   Handle the requests for the object. 
hgs
parents:
diff changeset
    64
        *
hgs
parents:
diff changeset
    65
        *   @param  aMessage        The message to be handled
hgs
parents:
diff changeset
    66
        *   @return                 ETrue, if the request was handled here
hgs
parents:
diff changeset
    67
        */
hgs
parents:
diff changeset
    68
        TBool HandleRequestsL( const RMessage2& aMessage );
hgs
parents:
diff changeset
    69
hgs
parents:
diff changeset
    70
    private:    // From MCbsDbTopicListObserver
hgs
parents:
diff changeset
    71
hgs
parents:
diff changeset
    72
        /**
hgs
parents:
diff changeset
    73
        *   Called when the topic list is initialized.
hgs
parents:
diff changeset
    74
        */
hgs
parents:
diff changeset
    75
        void TopicListInitializedIndL();
hgs
parents:
diff changeset
    76
hgs
parents:
diff changeset
    77
        /**
hgs
parents:
diff changeset
    78
        *   Called whenever a topic is created. If necessary, 
hgs
parents:
diff changeset
    79
        *   the client will be notified.
hgs
parents:
diff changeset
    80
        *
hgs
parents:
diff changeset
    81
        *   @param  aHandle         A handle to the topic.    
hgs
parents:
diff changeset
    82
        */
hgs
parents:
diff changeset
    83
        void TopicAddedIndL( const TCbsDbTopicNumber& aNumber );
hgs
parents:
diff changeset
    84
hgs
parents:
diff changeset
    85
        /**
hgs
parents:
diff changeset
    86
        *   Called whenever a topic is deleted. If necessary, 
hgs
parents:
diff changeset
    87
        *   the client will be notified.
hgs
parents:
diff changeset
    88
        *
hgs
parents:
diff changeset
    89
        *   @param  aHandle         A handle to the topic.
hgs
parents:
diff changeset
    90
        */
hgs
parents:
diff changeset
    91
        void TopicDeletedIndL( const TCbsDbTopicNumber& aNumber );
hgs
parents:
diff changeset
    92
hgs
parents:
diff changeset
    93
        /**
hgs
parents:
diff changeset
    94
        *   Called whenever a topic is modified. If necessary, 
hgs
parents:
diff changeset
    95
        *   the client will be notified.
hgs
parents:
diff changeset
    96
        *
hgs
parents:
diff changeset
    97
        *   @param  aHandle         A handle to the topic.
hgs
parents:
diff changeset
    98
        */
hgs
parents:
diff changeset
    99
        void TopicModifiedIndL( const TCbsDbTopicNumber& aNumber );
hgs
parents:
diff changeset
   100
hgs
parents:
diff changeset
   101
        /**
hgs
parents:
diff changeset
   102
        *   Called whenever a new message has been received. 
hgs
parents:
diff changeset
   103
        *   If necessary, the client will be notified.
hgs
parents:
diff changeset
   104
        *
hgs
parents:
diff changeset
   105
        *   @param  aHandle         A handle to the topic.
hgs
parents:
diff changeset
   106
        */
hgs
parents:
diff changeset
   107
        void TopicNewMessageReceivedIndL( const TCbsDbMessageHandle& aHandle );
hgs
parents:
diff changeset
   108
hgs
parents:
diff changeset
   109
    private:
hgs
parents:
diff changeset
   110
        /**
hgs
parents:
diff changeset
   111
        *   Constructor.
hgs
parents:
diff changeset
   112
        *
hgs
parents:
diff changeset
   113
        *   @param  aSession        Session
hgs
parents:
diff changeset
   114
        *   @param  aTopicList      Topic list manager
hgs
parents:
diff changeset
   115
        *   @param  aReceiver       Receiver
hgs
parents:
diff changeset
   116
        */
hgs
parents:
diff changeset
   117
        CCbsTopicList( CCbsSession& aSession, 
hgs
parents:
diff changeset
   118
                       CCbsDbImpTopicList& aTopicList, 
hgs
parents:
diff changeset
   119
                       CCbsRecEtel& aReceiver );
hgs
parents:
diff changeset
   120
hgs
parents:
diff changeset
   121
        /**
hgs
parents:
diff changeset
   122
        *   Finalizes construction.
hgs
parents:
diff changeset
   123
        */
hgs
parents:
diff changeset
   124
        void ConstructL();
hgs
parents:
diff changeset
   125
        
hgs
parents:
diff changeset
   126
        /**
hgs
parents:
diff changeset
   127
        *   Closes and destroys the subsession.
hgs
parents:
diff changeset
   128
        *
hgs
parents:
diff changeset
   129
        *   Note that after the call has completed, the object is no longer
hgs
parents:
diff changeset
   130
        *   valid. It is also left for the callee's task to complete 
hgs
parents:
diff changeset
   131
        *   the request.
hgs
parents:
diff changeset
   132
        */
hgs
parents:
diff changeset
   133
        void CloseTopicList();
hgs
parents:
diff changeset
   134
hgs
parents:
diff changeset
   135
        /**
hgs
parents:
diff changeset
   136
        *   Returns the total number of topics to the client.
hgs
parents:
diff changeset
   137
        */
hgs
parents:
diff changeset
   138
        void GetTopicCountL();
hgs
parents:
diff changeset
   139
hgs
parents:
diff changeset
   140
        /**
hgs
parents:
diff changeset
   141
        *   Returns the requested topic to the client.
hgs
parents:
diff changeset
   142
        */
hgs
parents:
diff changeset
   143
        void GetTopicL();
hgs
parents:
diff changeset
   144
hgs
parents:
diff changeset
   145
        /**
hgs
parents:
diff changeset
   146
        *   Finds a topic by number and returns it to the client.
hgs
parents:
diff changeset
   147
        */
hgs
parents:
diff changeset
   148
        void FindTopicByNumberL();
hgs
parents:
diff changeset
   149
hgs
parents:
diff changeset
   150
        /**
hgs
parents:
diff changeset
   151
        *   Deletes a topic by its number and returns it to the client.
hgs
parents:
diff changeset
   152
        */
hgs
parents:
diff changeset
   153
        void DeleteTopicL();
hgs
parents:
diff changeset
   154
hgs
parents:
diff changeset
   155
        /**
hgs
parents:
diff changeset
   156
        *   Changes a topic name and number.
hgs
parents:
diff changeset
   157
        */
hgs
parents:
diff changeset
   158
        void ChangeTopicNameAndNumberL();
hgs
parents:
diff changeset
   159
        
hgs
parents:
diff changeset
   160
        /**
hgs
parents:
diff changeset
   161
        *   Changes topic subscription status.
hgs
parents:
diff changeset
   162
        */
hgs
parents:
diff changeset
   163
        void ChangeTopicSubscriptionStatusL();
hgs
parents:
diff changeset
   164
            
hgs
parents:
diff changeset
   165
        /**
hgs
parents:
diff changeset
   166
        *   Changes topic hotmark status.
hgs
parents:
diff changeset
   167
        */
hgs
parents:
diff changeset
   168
        void ChangeTopicHotmarkStatusL();
hgs
parents:
diff changeset
   169
hgs
parents:
diff changeset
   170
        /**
hgs
parents:
diff changeset
   171
        *   Adds a topic to the list.
hgs
parents:
diff changeset
   172
        */
hgs
parents:
diff changeset
   173
        void AddTopicL();
hgs
parents:
diff changeset
   174
hgs
parents:
diff changeset
   175
        /**
hgs
parents:
diff changeset
   176
        *   Sets up a pending notification request.
hgs
parents:
diff changeset
   177
        */
hgs
parents:
diff changeset
   178
        void NotifyOnEvent();
hgs
parents:
diff changeset
   179
hgs
parents:
diff changeset
   180
        /**
hgs
parents:
diff changeset
   181
        *   Cancels a pending notification request.
hgs
parents:
diff changeset
   182
        */
hgs
parents:
diff changeset
   183
        void NotifyOnEventCancel();
hgs
parents:
diff changeset
   184
hgs
parents:
diff changeset
   185
        /**
hgs
parents:
diff changeset
   186
        *   Returns the number of "new" topics to the client.
hgs
parents:
diff changeset
   187
        *
hgs
parents:
diff changeset
   188
        *   By new it is referred to topics that are created because of 
hgs
parents:
diff changeset
   189
        *   topic detection since last power on.
hgs
parents:
diff changeset
   190
        */
hgs
parents:
diff changeset
   191
        void GetNewTopicsCountL();
hgs
parents:
diff changeset
   192
hgs
parents:
diff changeset
   193
        /**
hgs
parents:
diff changeset
   194
        *   Retrieves the number of the topic that was added
hgs
parents:
diff changeset
   195
        *   last to the topic list.
hgs
parents:
diff changeset
   196
        */
hgs
parents:
diff changeset
   197
        void GetLatestTopicNumberL();
hgs
parents:
diff changeset
   198
hgs
parents:
diff changeset
   199
        /**
hgs
parents:
diff changeset
   200
        *   Returns the total amount of unread messages.
hgs
parents:
diff changeset
   201
        */
hgs
parents:
diff changeset
   202
        void GetUnreadMessageCountL();
hgs
parents:
diff changeset
   203
hgs
parents:
diff changeset
   204
        /**
hgs
parents:
diff changeset
   205
        *   Returns a handle to the latest (that is not yet taken) 
hgs
parents:
diff changeset
   206
        *   hotmarked message handle.
hgs
parents:
diff changeset
   207
        */
hgs
parents:
diff changeset
   208
        void GetHotmarkedMessageHandleL();
hgs
parents:
diff changeset
   209
hgs
parents:
diff changeset
   210
        /**
hgs
parents:
diff changeset
   211
        *   Returns the number of hotmarked, unread messages.
hgs
parents:
diff changeset
   212
        */
hgs
parents:
diff changeset
   213
        void GetUnreadHotmarkedMessageCountL();
hgs
parents:
diff changeset
   214
hgs
parents:
diff changeset
   215
        /**
hgs
parents:
diff changeset
   216
        *   Deletes all topics.
hgs
parents:
diff changeset
   217
        */
hgs
parents:
diff changeset
   218
        void DeleteAllL();
hgs
parents:
diff changeset
   219
hgs
parents:
diff changeset
   220
        /**
hgs
parents:
diff changeset
   221
        *   If there is a pending notify request, notifies 
hgs
parents:
diff changeset
   222
        *   the client.
hgs
parents:
diff changeset
   223
        *
hgs
parents:
diff changeset
   224
        *   @param  aEvent          The type of event
hgs
parents:
diff changeset
   225
        *   @param  aNumber         The topic which was affected
hgs
parents:
diff changeset
   226
        */
hgs
parents:
diff changeset
   227
        void NotifyClientL( TCbsTopicListEvent aEvent, 
hgs
parents:
diff changeset
   228
            TCbsTopicNumber aNumber );
hgs
parents:
diff changeset
   229
hgs
parents:
diff changeset
   230
        /**
hgs
parents:
diff changeset
   231
        *   Retrieves and returns the numbers of topics that
hgs
parents:
diff changeset
   232
        *   precede and succeed the given topic in topic list.
hgs
parents:
diff changeset
   233
        *   
hgs
parents:
diff changeset
   234
        *   Also returns two flags indicating whether the
hgs
parents:
diff changeset
   235
        *   given topic is the first and/or the last topic in list.
hgs
parents:
diff changeset
   236
        */
hgs
parents:
diff changeset
   237
        void GetNextAndPrevTopicNumberL();
hgs
parents:
diff changeset
   238
hgs
parents:
diff changeset
   239
    private:    // Prohibited operators and functions
hgs
parents:
diff changeset
   240
hgs
parents:
diff changeset
   241
        // Copy constructor
hgs
parents:
diff changeset
   242
        CCbsTopicList( const CCbsTopicList& );
hgs
parents:
diff changeset
   243
hgs
parents:
diff changeset
   244
        // Assignment operator
hgs
parents:
diff changeset
   245
        CCbsTopicList& operator=( const CCbsTopicList& );
hgs
parents:
diff changeset
   246
hgs
parents:
diff changeset
   247
    private:    // Data
hgs
parents:
diff changeset
   248
hgs
parents:
diff changeset
   249
        // Referebce to the topic list db.
hgs
parents:
diff changeset
   250
        CCbsDbImpTopicList& iTopicList;
hgs
parents:
diff changeset
   251
hgs
parents:
diff changeset
   252
        // Reference to the receiver.
hgs
parents:
diff changeset
   253
        CCbsRecEtel& iReceiver;
hgs
parents:
diff changeset
   254
hgs
parents:
diff changeset
   255
        // Indicates whether there is an active notify request.
hgs
parents:
diff changeset
   256
        TBool iIsMessage;
hgs
parents:
diff changeset
   257
hgs
parents:
diff changeset
   258
        // The message for pending notify request.
hgs
parents:
diff changeset
   259
        RMessage2 iMessage;
hgs
parents:
diff changeset
   260
        
hgs
parents:
diff changeset
   261
    };
hgs
parents:
diff changeset
   262
hgs
parents:
diff changeset
   263
#endif      //  CCBSTOPICLIST_H   
hgs
parents:
diff changeset
   264
            
hgs
parents:
diff changeset
   265
// End of File
hgs
parents:
diff changeset
   266
hgs
parents:
diff changeset
   267