messagingappbase/mce/inc/MceMessageListView.h
author hgs
Thu, 04 Nov 2010 02:02:03 +0530
changeset 81 2043ea884c04
parent 79 2981cb3aa489
permissions -rw-r--r--
201044_03
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
79
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2002 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:  
hgs
parents:
diff changeset
    15
*     This view is created when user opens folder.
hgs
parents:
diff changeset
    16
*
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
#ifndef MCEMESSAGELISTVIEW_H
hgs
parents:
diff changeset
    22
#define MCEMESSAGELISTVIEW_H
hgs
parents:
diff changeset
    23
hgs
parents:
diff changeset
    24
//  INCLUDES
hgs
parents:
diff changeset
    25
//#include "MceBaseListView.h"
hgs
parents:
diff changeset
    26
#include <aknview.h>
hgs
parents:
diff changeset
    27
#include <msvapi.h>
hgs
parents:
diff changeset
    28
#include <AiwServiceHandler.h>
hgs
parents:
diff changeset
    29
#include <coemain.h>
hgs
parents:
diff changeset
    30
#include <eiklbo.h>
hgs
parents:
diff changeset
    31
hgs
parents:
diff changeset
    32
#include "MceMessageListContainer.h" 
hgs
parents:
diff changeset
    33
hgs
parents:
diff changeset
    34
#include "mcetemplate.h"
hgs
parents:
diff changeset
    35
#include "MceFolderItem.h"
hgs
parents:
diff changeset
    36
#include "MceListboxTypeObserver.h"
hgs
parents:
diff changeset
    37
hgs
parents:
diff changeset
    38
#include <bldvariant.hrh>
hgs
parents:
diff changeset
    39
hgs
parents:
diff changeset
    40
#include <AiwServiceHandler.h>
hgs
parents:
diff changeset
    41
hgs
parents:
diff changeset
    42
// CONSTANTS
hgs
parents:
diff changeset
    43
hgs
parents:
diff changeset
    44
#define TDRVIEWID TVwsViewId( \
hgs
parents:
diff changeset
    45
    TUid::Uid( KMceApplicationUidValue ), \
hgs
parents:
diff changeset
    46
    TUid::Uid( KMceDeliveryReportViewIdValue ) )
hgs
parents:
diff changeset
    47
hgs
parents:
diff changeset
    48
enum TMessageFolderMessageStatus
hgs
parents:
diff changeset
    49
    {
hgs
parents:
diff changeset
    50
    MessageFolderAllRead,
hgs
parents:
diff changeset
    51
    MessageFolderAllUnread,
hgs
parents:
diff changeset
    52
    MessageFolderReadUnread
hgs
parents:
diff changeset
    53
    };
hgs
parents:
diff changeset
    54
hgs
parents:
diff changeset
    55
enum TMessageFolderDeleteMessageStatus
hgs
parents:
diff changeset
    56
    {
hgs
parents:
diff changeset
    57
    MessageFolderAllDelete,
hgs
parents:
diff changeset
    58
    MessageFolderAllUnDelete,
hgs
parents:
diff changeset
    59
    MessageFolderDeleteUnDelete
hgs
parents:
diff changeset
    60
    };
hgs
parents:
diff changeset
    61
hgs
parents:
diff changeset
    62
enum TMceTemplatesDialogStatus
hgs
parents:
diff changeset
    63
    {
hgs
parents:
diff changeset
    64
    MceTemplatesDialogClose,
hgs
parents:
diff changeset
    65
    MceTemplatesDialogOpen
hgs
parents:
diff changeset
    66
    };
hgs
parents:
diff changeset
    67
// DATA TYPES
hgs
parents:
diff changeset
    68
typedef CArrayFixFlat<TMceFolderItem> CMceFolderItemArray;
hgs
parents:
diff changeset
    69
hgs
parents:
diff changeset
    70
// FORWARD DECLARATIONS
hgs
parents:
diff changeset
    71
class CMsvSession;
hgs
parents:
diff changeset
    72
class CMceBitmapResolver;
hgs
parents:
diff changeset
    73
class CMceMainViewListView;
hgs
parents:
diff changeset
    74
class CAknLocalScreenClearer;
hgs
parents:
diff changeset
    75
class CMceSessionHolder;
hgs
parents:
diff changeset
    76
class CMceUi;
hgs
parents:
diff changeset
    77
class CMceMessageListContainer;
hgs
parents:
diff changeset
    78
class CMceMessageListContainerBase;
hgs
parents:
diff changeset
    79
class CEnvironmentChangeNotifier;
hgs
parents:
diff changeset
    80
hgs
parents:
diff changeset
    81
class CMceListboxTypeObserver;
hgs
parents:
diff changeset
    82
hgs
parents:
diff changeset
    83
// CLASS DECLARATION
hgs
parents:
diff changeset
    84
hgs
parents:
diff changeset
    85
/**
hgs
parents:
diff changeset
    86
*  This view is created when user opens folder.
hgs
parents:
diff changeset
    87
*/
hgs
parents:
diff changeset
    88
class CMceMessageListView :
hgs
parents:
diff changeset
    89
    public CAknView,
hgs
parents:
diff changeset
    90
    public MEikListBoxObserver,
hgs
parents:
diff changeset
    91
    public MMsvSessionObserver,    
hgs
parents:
diff changeset
    92
    public MMceListboxTypeObserver
hgs
parents:
diff changeset
    93
    {
hgs
parents:
diff changeset
    94
    public:  // Constructors and destructor
hgs
parents:
diff changeset
    95
hgs
parents:
diff changeset
    96
        /**
hgs
parents:
diff changeset
    97
        * Two-phased constructor.
hgs
parents:
diff changeset
    98
        */
hgs
parents:
diff changeset
    99
        static CMceMessageListView* NewL(
hgs
parents:
diff changeset
   100
            CMsvSessionPtr aSession,
hgs
parents:
diff changeset
   101
            TMsvId aFolderId,
hgs
parents:
diff changeset
   102
            CMceSessionHolder& aSessionHolder,
hgs
parents:
diff changeset
   103
            CMceBitmapResolver& aBitmapResolver,
hgs
parents:
diff changeset
   104
            CMceMainViewListView& aMainView );
hgs
parents:
diff changeset
   105
hgs
parents:
diff changeset
   106
        /**
hgs
parents:
diff changeset
   107
        * Destructor.
hgs
parents:
diff changeset
   108
        */
hgs
parents:
diff changeset
   109
        virtual ~CMceMessageListView();
hgs
parents:
diff changeset
   110
hgs
parents:
diff changeset
   111
    public: // New functions
hgs
parents:
diff changeset
   112
    
hgs
parents:
diff changeset
   113
    
hgs
parents:
diff changeset
   114
        /**
hgs
parents:
diff changeset
   115
        * Sets folder to be watched
hgs
parents:
diff changeset
   116
        * @param aFolderId: folder id
hgs
parents:
diff changeset
   117
        */
hgs
parents:
diff changeset
   118
        void SetFolderL( TMsvId aFolderId );
hgs
parents:
diff changeset
   119
hgs
parents:
diff changeset
   120
        /**
hgs
parents:
diff changeset
   121
        * Returns listbox type of the current folder.
hgs
parents:
diff changeset
   122
        * @return Folder listbox type
hgs
parents:
diff changeset
   123
        */
hgs
parents:
diff changeset
   124
        TInt GetFolderListBoxType();
hgs
parents:
diff changeset
   125
hgs
parents:
diff changeset
   126
hgs
parents:
diff changeset
   127
        /**
hgs
parents:
diff changeset
   128
        * Returns pointer to list container.
hgs
parents:
diff changeset
   129
        * @return Pointer to list container
hgs
parents:
diff changeset
   130
        */
hgs
parents:
diff changeset
   131
        CMceMessageListContainerBase* ListContainer() const;
hgs
parents:
diff changeset
   132
hgs
parents:
diff changeset
   133
        /**
hgs
parents:
diff changeset
   134
        * Should be called by mce after message server startup.
hgs
parents:
diff changeset
   135
        * This adds view to session observer list and creates needed CMsvEntries.
hgs
parents:
diff changeset
   136
        */
hgs
parents:
diff changeset
   137
        virtual void HandleMsgServerStartupL();
hgs
parents:
diff changeset
   138
        
hgs
parents:
diff changeset
   139
        /**
hgs
parents:
diff changeset
   140
        * Checks if there are unread messages in the given folder
hgs
parents:
diff changeset
   141
        */
hgs
parents:
diff changeset
   142
        TBool HasUnreadMessagesL();
hgs
parents:
diff changeset
   143
hgs
parents:
diff changeset
   144
        /**
hgs
parents:
diff changeset
   145
         * Cancels remote mailbox timer.
hgs
parents:
diff changeset
   146
         */
hgs
parents:
diff changeset
   147
        void CancelMailboxTimer() const;
hgs
parents:
diff changeset
   148
hgs
parents:
diff changeset
   149
        /**
hgs
parents:
diff changeset
   150
         * Checks if folder aName already exists
hgs
parents:
diff changeset
   151
         * @param aName folder name to be searched.
hgs
parents:
diff changeset
   152
         * @param aId id of the folder. Should be set when renaming.
hgs
parents:
diff changeset
   153
         * @return ETrue if name used.
hgs
parents:
diff changeset
   154
         */
hgs
parents:
diff changeset
   155
        TBool IsFolderNameUsedL(const TDesC& aName, TMsvId aId = KErrNotFound) const;
hgs
parents:
diff changeset
   156
hgs
parents:
diff changeset
   157
        /**
hgs
parents:
diff changeset
   158
         * Changes currently opened folder and redraws the list.
hgs
parents:
diff changeset
   159
         * @param aNewFolderId: id of the folder name to be opened
hgs
parents:
diff changeset
   160
         */
hgs
parents:
diff changeset
   161
        void ChangeFolderAndRefreshListboxL( TMsvId aNewFolderId );
hgs
parents:
diff changeset
   162
hgs
parents:
diff changeset
   163
        /**
hgs
parents:
diff changeset
   164
        * Finds and selects message entry
hgs
parents:
diff changeset
   165
        * @param aMatchString: the matched string
hgs
parents:
diff changeset
   166
        */
hgs
parents:
diff changeset
   167
        void FindAndSelectEntryL( const TDesC& aMatchString ) const;
hgs
parents:
diff changeset
   168
hgs
parents:
diff changeset
   169
        /**
hgs
parents:
diff changeset
   170
        * Checks, if SyncMl folder
hgs
parents:
diff changeset
   171
        * Returns ETrue, if SyncMl folder              
hgs
parents:
diff changeset
   172
        */
hgs
parents:
diff changeset
   173
        TBool IsSyncMl() const;
hgs
parents:
diff changeset
   174
hgs
parents:
diff changeset
   175
        /**
hgs
parents:
diff changeset
   176
        * Checks, if SyncMl Outbox or Inbox folder
hgs
parents:
diff changeset
   177
        * Returns ETrue, if SyncMl Outbox or Inbox folder
hgs
parents:
diff changeset
   178
        * @param aFolder: id of the folder        
hgs
parents:
diff changeset
   179
        */
hgs
parents:
diff changeset
   180
        TBool SyncMlOutboxInbox( TMsvId aFolder ) const;
hgs
parents:
diff changeset
   181
hgs
parents:
diff changeset
   182
        /**
hgs
parents:
diff changeset
   183
        * Checks, if MMS notification can be opened using selection key         
hgs
parents:
diff changeset
   184
        */
hgs
parents:
diff changeset
   185
        TBool CheckMMSNotificationOpenL( ) const;
hgs
parents:
diff changeset
   186
hgs
parents:
diff changeset
   187
        /**
hgs
parents:
diff changeset
   188
        * Opens remote mailbox settings              
hgs
parents:
diff changeset
   189
        */
hgs
parents:
diff changeset
   190
        void OpenMailboxSettingsL();
hgs
parents:
diff changeset
   191
hgs
parents:
diff changeset
   192
        /**
hgs
parents:
diff changeset
   193
        * Is IMAP folder open        
hgs
parents:
diff changeset
   194
        */
hgs
parents:
diff changeset
   195
        TBool IsImapFolderOpenL( ) const;
hgs
parents:
diff changeset
   196
hgs
parents:
diff changeset
   197
        /**
hgs
parents:
diff changeset
   198
        * From CAknView: Sets the new size of Rect
hgs
parents:
diff changeset
   199
        */
hgs
parents:
diff changeset
   200
        void HandleStatusPaneSizeChange();
hgs
parents:
diff changeset
   201
hgs
parents:
diff changeset
   202
        inline void UpdateViewL();
hgs
parents:
diff changeset
   203
hgs
parents:
diff changeset
   204
    public: // Functions from base classes
hgs
parents:
diff changeset
   205
hgs
parents:
diff changeset
   206
        /**
hgs
parents:
diff changeset
   207
        * From CAknView
hgs
parents:
diff changeset
   208
        */
hgs
parents:
diff changeset
   209
        TUid Id() const;
hgs
parents:
diff changeset
   210
hgs
parents:
diff changeset
   211
        /**
hgs
parents:
diff changeset
   212
        * From CAknView
hgs
parents:
diff changeset
   213
        */
hgs
parents:
diff changeset
   214
        void DoActivateL(
hgs
parents:
diff changeset
   215
            const TVwsViewId& aPrevViewId,
hgs
parents:
diff changeset
   216
            TUid aCustomMessageId,
hgs
parents:
diff changeset
   217
            const TDesC8& aCustomMessage );
hgs
parents:
diff changeset
   218
hgs
parents:
diff changeset
   219
        /**
hgs
parents:
diff changeset
   220
        * From CAknView
hgs
parents:
diff changeset
   221
        */
hgs
parents:
diff changeset
   222
        void DoDeactivate();
hgs
parents:
diff changeset
   223
hgs
parents:
diff changeset
   224
        /**
hgs
parents:
diff changeset
   225
        * From CAknView
hgs
parents:
diff changeset
   226
        */
hgs
parents:
diff changeset
   227
        void DynInitMenuPaneL(
hgs
parents:
diff changeset
   228
            TInt aResourceId,
hgs
parents:
diff changeset
   229
            CEikMenuPane* aMenuPane );
hgs
parents:
diff changeset
   230
hgs
parents:
diff changeset
   231
        /**
hgs
parents:
diff changeset
   232
        * From MEikCommandObserver
hgs
parents:
diff changeset
   233
        */
hgs
parents:
diff changeset
   234
        void HandleCommandL( TInt aCommand );
hgs
parents:
diff changeset
   235
hgs
parents:
diff changeset
   236
        /**
hgs
parents:
diff changeset
   237
        * From MMsvSessionObserver
hgs
parents:
diff changeset
   238
        */
hgs
parents:
diff changeset
   239
        virtual void HandleSessionEventL(
hgs
parents:
diff changeset
   240
            TMsvSessionEvent aEvent,
hgs
parents:
diff changeset
   241
            TAny* aArg1,
hgs
parents:
diff changeset
   242
            TAny* aArg2,
hgs
parents:
diff changeset
   243
            TAny* aArg3 );
hgs
parents:
diff changeset
   244
hgs
parents:
diff changeset
   245
        /**
hgs
parents:
diff changeset
   246
        * From MEikCommandObserver
hgs
parents:
diff changeset
   247
        */
hgs
parents:
diff changeset
   248
        virtual void ProcessCommandL(TInt aCommand);
hgs
parents:
diff changeset
   249
        
hgs
parents:
diff changeset
   250
        /**
hgs
parents:
diff changeset
   251
        * From CAknView ?member_description
hgs
parents:
diff changeset
   252
        */
hgs
parents:
diff changeset
   253
        void HandleClientRectChange();        
hgs
parents:
diff changeset
   254
hgs
parents:
diff changeset
   255
        /**
hgs
parents:
diff changeset
   256
        * Sets the label for the middle soft key in the folder view
hgs
parents:
diff changeset
   257
        * @since S60 3.1
hgs
parents:
diff changeset
   258
        */
hgs
parents:
diff changeset
   259
        void SetMSKButtonL();
hgs
parents:
diff changeset
   260
        
hgs
parents:
diff changeset
   261
        /**
hgs
parents:
diff changeset
   262
        * Checks if current folder is emailmailbox for the middle soft key.
hgs
parents:
diff changeset
   263
        * @since S60 3.1
hgs
parents:
diff changeset
   264
        * @return Etrue if mailbox
hgs
parents:
diff changeset
   265
        */
hgs
parents:
diff changeset
   266
        TBool IsMSKMailBox();  
hgs
parents:
diff changeset
   267
        
hgs
parents:
diff changeset
   268
        /**
hgs
parents:
diff changeset
   269
        * Checks if current folder is syncMLmailbox for the middle soft key.
hgs
parents:
diff changeset
   270
        * @since S60 3.2
hgs
parents:
diff changeset
   271
        * @return Etrue if syncMLmailbox
hgs
parents:
diff changeset
   272
        */
hgs
parents:
diff changeset
   273
        TBool IsMSKSyncMlMailBox();
hgs
parents:
diff changeset
   274
        
hgs
parents:
diff changeset
   275
        /**
hgs
parents:
diff changeset
   276
        * Store current item id for mailbox focus
hgs
parents:
diff changeset
   277
        * @since S60 3.0
hgs
parents:
diff changeset
   278
        */
hgs
parents:
diff changeset
   279
        void SetCurrentItemId();
hgs
parents:
diff changeset
   280
hgs
parents:
diff changeset
   281
        /**
hgs
parents:
diff changeset
   282
        * Should be called by container when selection button is pressed so that
hgs
parents:
diff changeset
   283
        * exit command is not showed in context sensitive menu. iHideExitCommand set
hgs
parents:
diff changeset
   284
        * EFalse at the end of DynInitMenuPaneL function.
hgs
parents:
diff changeset
   285
        * @param aHideExitCommand: ETrue if exit not shown next time option menu displayed
hgs
parents:
diff changeset
   286
        */
hgs
parents:
diff changeset
   287
        void SetHideExitCommand( TBool aHideExitCommand );
hgs
parents:
diff changeset
   288
        
hgs
parents:
diff changeset
   289
        /**
hgs
parents:
diff changeset
   290
        * Check if the item is Unread
hgs
parents:
diff changeset
   291
        * @para aId: the item id
hgs
parents:
diff changeset
   292
        * @return ETrue if the item is unread, return EFalse if the item is read
hgs
parents:
diff changeset
   293
        * @since Taco
hgs
parents:
diff changeset
   294
        */
hgs
parents:
diff changeset
   295
       TBool IsItemUnread( TMsvId aId ); 
hgs
parents:
diff changeset
   296
hgs
parents:
diff changeset
   297
        /**
hgs
parents:
diff changeset
   298
        * Handle call by sendkey in email list 
hgs
parents:
diff changeset
   299
        * @para aEntryId: current entry id
hgs
parents:
diff changeset
   300
        * @Since S60 5.0
hgs
parents:
diff changeset
   301
        */
hgs
parents:
diff changeset
   302
        void HandleSendkeyInMailboxL( TMsvId aEntryId );
hgs
parents:
diff changeset
   303
hgs
parents:
diff changeset
   304
        /**
hgs
parents:
diff changeset
   305
        * Call-back function for CEnvironmentChangeNotifier class.
hgs
parents:
diff changeset
   306
        * @param object of CMceMessageListView.
hgs
parents:
diff changeset
   307
        */        
hgs
parents:
diff changeset
   308
        static TInt EnvironmentChanged( TAny* aObj );
hgs
parents:
diff changeset
   309
        
hgs
parents:
diff changeset
   310
        /**
hgs
parents:
diff changeset
   311
        * From MMceListboxTypeObserver
hgs
parents:
diff changeset
   312
        */
hgs
parents:
diff changeset
   313
        virtual void ListboxTypeChangedL();
hgs
parents:
diff changeset
   314
		
hgs
parents:
diff changeset
   315
		/**
hgs
parents:
diff changeset
   316
        * For setting the ContextCommandFlag when clicked to get the context menu
hgs
parents:
diff changeset
   317
        */
hgs
parents:
diff changeset
   318
        void SetContextCommandFlag(TBool aContextCommandFlag);
hgs
parents:
diff changeset
   319
hgs
parents:
diff changeset
   320
    protected:  // Functions from base classes
hgs
parents:
diff changeset
   321
hgs
parents:
diff changeset
   322
        /**
hgs
parents:
diff changeset
   323
        * From MEikListBoxObserver
hgs
parents:
diff changeset
   324
        */
hgs
parents:
diff changeset
   325
        void HandleListBoxEventL(
hgs
parents:
diff changeset
   326
            CEikListBox* aListBox,
hgs
parents:
diff changeset
   327
            TListBoxEvent aEventType );
hgs
parents:
diff changeset
   328
hgs
parents:
diff changeset
   329
    private:
hgs
parents:
diff changeset
   330
hgs
parents:
diff changeset
   331
        /**
hgs
parents:
diff changeset
   332
        * Constructor is private.
hgs
parents:
diff changeset
   333
        */
hgs
parents:
diff changeset
   334
        CMceMessageListView(
hgs
parents:
diff changeset
   335
            CMsvSessionPtr aSession,
hgs
parents:
diff changeset
   336
            TMsvId aFolderId,
hgs
parents:
diff changeset
   337
            CMceSessionHolder& aSessionHolder,
hgs
parents:
diff changeset
   338
            CMceBitmapResolver& aBitmapResolver,
hgs
parents:
diff changeset
   339
            CMceMainViewListView& aMainView );
hgs
parents:
diff changeset
   340
hgs
parents:
diff changeset
   341
        /**
hgs
parents:
diff changeset
   342
        * Symbian OS constructor
hgs
parents:
diff changeset
   343
        */
hgs
parents:
diff changeset
   344
        void ConstructL();
hgs
parents:
diff changeset
   345
hgs
parents:
diff changeset
   346
        /**
hgs
parents:
diff changeset
   347
        * Handles different 'open's: Open folder or open message
hgs
parents:
diff changeset
   348
        */
hgs
parents:
diff changeset
   349
        void HandleOpenL();
hgs
parents:
diff changeset
   350
hgs
parents:
diff changeset
   351
        /**
hgs
parents:
diff changeset
   352
        * Called when user pressed Back and main view should be opened
hgs
parents:
diff changeset
   353
        */
hgs
parents:
diff changeset
   354
        void HandleCloseL();
hgs
parents:
diff changeset
   355
hgs
parents:
diff changeset
   356
        /**
hgs
parents:
diff changeset
   357
        * Changes currently opened folder.
hgs
parents:
diff changeset
   358
        * @param aOpenParent: ETrue if "CD .." wanted.
hgs
parents:
diff changeset
   359
        */
hgs
parents:
diff changeset
   360
        void ChangeFolderL( TBool aOpenParent = EFalse );
hgs
parents:
diff changeset
   361
hgs
parents:
diff changeset
   362
        /**
hgs
parents:
diff changeset
   363
        * User wants to open message and this call's Ui's EditMtmEntry function.
hgs
parents:
diff changeset
   364
        */
hgs
parents:
diff changeset
   365
        void EditEntryL();
hgs
parents:
diff changeset
   366
hgs
parents:
diff changeset
   367
        /**
hgs
parents:
diff changeset
   368
        * Called by DynInitMenuPaneL to delete unneccessary menu items.
hgs
parents:
diff changeset
   369
        * @param aMenuPane menu pane
hgs
parents:
diff changeset
   370
        */
hgs
parents:
diff changeset
   371
        void FetchMenuL( CEikMenuPane* aMenuPane ) const;
hgs
parents:
diff changeset
   372
hgs
parents:
diff changeset
   373
        /**
hgs
parents:
diff changeset
   374
        * Called by DynInitMenuPaneL to delete unneccessary menu items.
hgs
parents:
diff changeset
   375
        * @param aMenuPane menu pane
hgs
parents:
diff changeset
   376
        */
hgs
parents:
diff changeset
   377
        void FolderMenuL( CEikMenuPane* aMenuPane );
hgs
parents:
diff changeset
   378
hgs
parents:
diff changeset
   379
        /**
hgs
parents:
diff changeset
   380
        * Called by FolderMenuL to delete unneccessary menu items.
hgs
parents:
diff changeset
   381
        * @param aMenuPane menu pane
hgs
parents:
diff changeset
   382
        */
hgs
parents:
diff changeset
   383
        void FolderMenuNoItemsL( CEikMenuPane* aMenuPane ) const;
hgs
parents:
diff changeset
   384
        /**
hgs
parents:
diff changeset
   385
        * Called by FolderMenuL to delete unneccessary menu items.
hgs
parents:
diff changeset
   386
        * @param aMenuPane menu pane
hgs
parents:
diff changeset
   387
        */
hgs
parents:
diff changeset
   388
        void FolderMenuOneItemL( 
hgs
parents:
diff changeset
   389
            CEikMenuPane* aMenuPane, 
hgs
parents:
diff changeset
   390
            TBool aRemoteMailboxOpened,
hgs
parents:
diff changeset
   391
            TBool aThirdPartEmail  );
hgs
parents:
diff changeset
   392
        /**
hgs
parents:
diff changeset
   393
        * Called by FolderMenuL to delete unneccessary menu items.
hgs
parents:
diff changeset
   394
        * @param aMenuPane menu pane
hgs
parents:
diff changeset
   395
        */
hgs
parents:
diff changeset
   396
        void FolderMenuManyItemsL(
hgs
parents:
diff changeset
   397
            CEikMenuPane* aMenuPane, 
hgs
parents:
diff changeset
   398
            TBool aRemoteMailboxOpened,
hgs
parents:
diff changeset
   399
            TBool aThirdPartEmail,
hgs
parents:
diff changeset
   400
            TBool aSetRead = EFalse );
hgs
parents:
diff changeset
   401
hgs
parents:
diff changeset
   402
        /**
hgs
parents:
diff changeset
   403
        * Called by FolderMenuL to delete unneccessary menu items.
hgs
parents:
diff changeset
   404
        * @param aMenuPane menu pane, SyncML folder
hgs
parents:
diff changeset
   405
        */
hgs
parents:
diff changeset
   406
		void FolderMenuSyncMLMain( CEikMenuPane *aMenuPane );
hgs
parents:
diff changeset
   407
hgs
parents:
diff changeset
   408
        /**
hgs
parents:
diff changeset
   409
        * Called by FolderMenuL to delete unneccessary menu items.
hgs
parents:
diff changeset
   410
        * @param aMenuPane menu pane, SyncML folder
hgs
parents:
diff changeset
   411
        */
hgs
parents:
diff changeset
   412
		void FolderMenuSyncMLFolderL( CEikMenuPane *aMenuPane );
hgs
parents:
diff changeset
   413
hgs
parents:
diff changeset
   414
        /**
hgs
parents:
diff changeset
   415
        * Called by DynInitMenuPaneL to delete unneccessary menu items.
hgs
parents:
diff changeset
   416
        * @param aMenuPane menu pane
hgs
parents:
diff changeset
   417
        */
hgs
parents:
diff changeset
   418
        void EditMenuL( CEikMenuPane* aMenuPane ) const;
hgs
parents:
diff changeset
   419
hgs
parents:
diff changeset
   420
        /**
hgs
parents:
diff changeset
   421
        * Called by DynInitMenuPaneL to delete unneccessary menu items.
hgs
parents:
diff changeset
   422
        * @param aMenuPane menu pane
hgs
parents:
diff changeset
   423
        */
hgs
parents:
diff changeset
   424
        void OrganizeMenuL( CEikMenuPane* aMenuPane );
hgs
parents:
diff changeset
   425
hgs
parents:
diff changeset
   426
        /**
hgs
parents:
diff changeset
   427
        * Returns ETrue if folder is opened by this view and
hgs
parents:
diff changeset
   428
        * back does not return to main view.
hgs
parents:
diff changeset
   429
        * If EFalse returned then this view needs to be closed
hgs
parents:
diff changeset
   430
        * and main view is activated.
hgs
parents:
diff changeset
   431
        */
hgs
parents:
diff changeset
   432
        TBool FolderOpenedL();
hgs
parents:
diff changeset
   433
hgs
parents:
diff changeset
   434
        /**
hgs
parents:
diff changeset
   435
        * Returns folder count in currently opened folder
hgs
parents:
diff changeset
   436
        */
hgs
parents:
diff changeset
   437
        TInt SubfolderCount() const;
hgs
parents:
diff changeset
   438
hgs
parents:
diff changeset
   439
        /**
hgs
parents:
diff changeset
   440
         * Checks how many unread messages folder has. If only one then asks
hgs
parents:
diff changeset
   441
         * MceUi to open it. If more than one, select first unread. If none select first
hgs
parents:
diff changeset
   442
         * item of the folder
hgs
parents:
diff changeset
   443
         * @return ETrue if there is one message in inbox/mailbox folder and trying to open it,
hgs
parents:
diff changeset
   444
         * EFalse when just opening inbox/mailbox folder
hgs
parents:
diff changeset
   445
         * @param aId: message id
hgs
parents:
diff changeset
   446
         */
hgs
parents:
diff changeset
   447
        TBool FindUnreadMessageAndOpenItL( const TMsvId aId );
hgs
parents:
diff changeset
   448
hgs
parents:
diff changeset
   449
        /**
hgs
parents:
diff changeset
   450
         * Finds folder called 'Inbox' from current (IMAP4 remote mailbox) folder and opens it.
hgs
parents:
diff changeset
   451
         * Do not confuse with local service inbox!
hgs
parents:
diff changeset
   452
         */
hgs
parents:
diff changeset
   453
        void FindInboxAndOpenItL();
hgs
parents:
diff changeset
   454
hgs
parents:
diff changeset
   455
        /**
hgs
parents:
diff changeset
   456
        * Sets empty text of the list box.
hgs
parents:
diff changeset
   457
        * Empty text is different in Remote mailboxes than other folders.
hgs
parents:
diff changeset
   458
        */
hgs
parents:
diff changeset
   459
        void SetEmptyTextL() const;
hgs
parents:
diff changeset
   460
hgs
parents:
diff changeset
   461
        /**
hgs
parents:
diff changeset
   462
        * Function for the CIdle class to be called, calls LaunchMceViewer.
hgs
parents:
diff changeset
   463
        * @param aSelf: pointer to CMceMessageListView object.
hgs
parents:
diff changeset
   464
        * @return see LaunchMceViewer.
hgs
parents:
diff changeset
   465
        */
hgs
parents:
diff changeset
   466
        static TInt LaunchViewer( TAny* aSelf );
hgs
parents:
diff changeset
   467
hgs
parents:
diff changeset
   468
        /**
hgs
parents:
diff changeset
   469
        * Tries to launch viewer (by calling Mce's EditMtmEntryL)
hgs
parents:
diff changeset
   470
        * for the unread message if there is only one unread
hgs
parents:
diff changeset
   471
        * message in the folder. Otherwise does not do nothing
hgs
parents:
diff changeset
   472
        * @return KErrNone if launch ok
hgs
parents:
diff changeset
   473
        */
hgs
parents:
diff changeset
   474
        TInt LaunchMceViewer( );
hgs
parents:
diff changeset
   475
hgs
parents:
diff changeset
   476
        /**
hgs
parents:
diff changeset
   477
        * Checks if selected entry can be opened and dims 'send via' menu if it can
hgs
parents:
diff changeset
   478
        * @param aEntryId: currently selected entry
hgs
parents:
diff changeset
   479
        * @param aMenuPane: menupane
hgs
parents:
diff changeset
   480
        */
hgs
parents:
diff changeset
   481
        void HandleSendViaMenuItemL( TMsvId aEntryId, CEikMenuPane* aMenuPane ) const;
hgs
parents:
diff changeset
   482
hgs
parents:
diff changeset
   483
        /**
hgs
parents:
diff changeset
   484
        * Called by HandleSessionEventL if entries created or changed.
hgs
parents:
diff changeset
   485
        * @param aParentId: id of the parent
hgs
parents:
diff changeset
   486
        * @param aSelection: pointer to selection of messages changed.
hgs
parents:
diff changeset
   487
        */
hgs
parents:
diff changeset
   488
        void MessageViewHandleEntriesCreatedOrChangedL(
hgs
parents:
diff changeset
   489
            TMsvId aParentId,
hgs
parents:
diff changeset
   490
            CMsvEntrySelection* aSelection );
hgs
parents:
diff changeset
   491
hgs
parents:
diff changeset
   492
        /**
hgs
parents:
diff changeset
   493
        * Handles EMceCmdSortByDate,EMceCmdSortBySubject and EMceCmdSortBySender
hgs
parents:
diff changeset
   494
        * @param aCommand: id of the command
hgs
parents:
diff changeset
   495
        */
hgs
parents:
diff changeset
   496
        void HandleSortCommandL( const TInt aCommand );
hgs
parents:
diff changeset
   497
hgs
parents:
diff changeset
   498
        /**
hgs
parents:
diff changeset
   499
        * Open SyncMl Inbox folder               
hgs
parents:
diff changeset
   500
        */
hgs
parents:
diff changeset
   501
        void SyncMlFindInboxAndOpenItL();   
hgs
parents:
diff changeset
   502
        
hgs
parents:
diff changeset
   503
        /**
hgs
parents:
diff changeset
   504
        *
hgs
parents:
diff changeset
   505
        */
hgs
parents:
diff changeset
   506
        TInt GetSetRead( const CMsvEntrySelection& aEntries );
hgs
parents:
diff changeset
   507
        
hgs
parents:
diff changeset
   508
        /**
hgs
parents:
diff changeset
   509
        * Checks are the selected messages deleted or undeleted
hgs
parents:
diff changeset
   510
        * @since 3.2
hgs
parents:
diff changeset
   511
        * @return Index of the selected message deletetion status
hgs
parents:
diff changeset
   512
        * otherwise KErrNotFound
hgs
parents:
diff changeset
   513
        */
hgs
parents:
diff changeset
   514
        TInt GetDeleteFlagStatusL( const CMsvEntrySelection* aEntries );
hgs
parents:
diff changeset
   515
        
hgs
parents:
diff changeset
   516
        /**
hgs
parents:
diff changeset
   517
        * Checks if there is only one unread message in current folder
hgs
parents:
diff changeset
   518
        * and starts viewer for it
hgs
parents:
diff changeset
   519
        * @since 3.2
hgs
parents:
diff changeset
   520
        * @param aMsgMtmUid: filled with Message MTM Uid
hgs
parents:
diff changeset
   521
        * @return Index of the message if only one unread, 
hgs
parents:
diff changeset
   522
        * otherwise KErrNotFound
hgs
parents:
diff changeset
   523
        */
hgs
parents:
diff changeset
   524
        TInt LaunchViewerWhenOneUnreadL( TInt &aMsgMtmUid );
hgs
parents:
diff changeset
   525
        
hgs
parents:
diff changeset
   526
        /**
hgs
parents:
diff changeset
   527
        * registers MceMessageListContainer to Msk observer
hgs
parents:
diff changeset
   528
        * @param aObserver: True if set MskObserver and False to remove it.
hgs
parents:
diff changeset
   529
        * @since 3.2
hgs
parents:
diff changeset
   530
        */
hgs
parents:
diff changeset
   531
        void SetMskObserver( TBool aObserver );
hgs
parents:
diff changeset
   532
hgs
parents:
diff changeset
   533
hgs
parents:
diff changeset
   534
		/**
hgs
parents:
diff changeset
   535
		* Input parameter list for AIW plugin
hgs
parents:
diff changeset
   536
		*/
hgs
parents:
diff changeset
   537
		CAiwGenericParamList* AiwSyncParamListLC(TInt aId, const TDesC& aText);
hgs
parents:
diff changeset
   538
hgs
parents:
diff changeset
   539
        /**
hgs
parents:
diff changeset
   540
        *
hgs
parents:
diff changeset
   541
        */
hgs
parents:
diff changeset
   542
        void HandleEntriesCreatedChangedL( const CMsvEntrySelection* aSelection );
hgs
parents:
diff changeset
   543
hgs
parents:
diff changeset
   544
        /**
hgs
parents:
diff changeset
   545
        *
hgs
parents:
diff changeset
   546
        */
hgs
parents:
diff changeset
   547
        void HandleEntriesDeletedL( );
hgs
parents:
diff changeset
   548
hgs
parents:
diff changeset
   549
        /**
hgs
parents:
diff changeset
   550
        *
hgs
parents:
diff changeset
   551
        */
hgs
parents:
diff changeset
   552
        void HandleEntriesMovedL( TMsvId aSourceFolderId, TMsvId aTargetFolderId );
hgs
parents:
diff changeset
   553
        
hgs
parents:
diff changeset
   554
        
hgs
parents:
diff changeset
   555
        /**
hgs
parents:
diff changeset
   556
        * Creates either one row or two row listbox and sets it to iMsgListContainer
hgs
parents:
diff changeset
   557
        */
hgs
parents:
diff changeset
   558
        void CreateListboxL();
hgs
parents:
diff changeset
   559
hgs
parents:
diff changeset
   560
        /**
hgs
parents:
diff changeset
   561
        * Find all read messages and mark 
hgs
parents:
diff changeset
   562
        * 
hgs
parents:
diff changeset
   563
        * @since Taco
hgs
parents:
diff changeset
   564
        */
hgs
parents:
diff changeset
   565
        void FindAllReadMsgAndMarkL();
hgs
parents:
diff changeset
   566
        
hgs
parents:
diff changeset
   567
        /**
hgs
parents:
diff changeset
   568
        * Check if there is any selected item visible in current view 
hgs
parents:
diff changeset
   569
        * @ msgIndexArray: the array of the index of selected item
hgs
parents:
diff changeset
   570
        * @since S60 5.0
hgs
parents:
diff changeset
   571
        */
hgs
parents:
diff changeset
   572
        TBool AnySelectedItemsVisible( CArrayFixFlat<TInt>* msgIndexArray );
hgs
parents:
diff changeset
   573
hgs
parents:
diff changeset
   574
        /**
hgs
parents:
diff changeset
   575
        * Check if it is in Inbox, Documents and user's own foldermark, 
hgs
parents:
diff changeset
   576
        * if it is, enable mark read msg option from menu
hgs
parents:
diff changeset
   577
        * @currentEntry: current entry
hgs
parents:
diff changeset
   578
        * @currentfolderId: current Folder Id
hgs
parents:
diff changeset
   579
        * @aMenuPane: Menu pane to show the mark all read command
hgs
parents:
diff changeset
   580
        * @since S60 5.0
hgs
parents:
diff changeset
   581
        */
hgs
parents:
diff changeset
   582
        void EnableMarkAllReadMsgInInboxAndDocument( 
hgs
parents:
diff changeset
   583
            TMsvEntry currentEntry, 
hgs
parents:
diff changeset
   584
            TMsvId currentFolderId, 
hgs
parents:
diff changeset
   585
            CEikMenuPane* aMenuPane );
hgs
parents:
diff changeset
   586
            
hgs
parents:
diff changeset
   587
            
hgs
parents:
diff changeset
   588
        /**
hgs
parents:
diff changeset
   589
        * Set correct menu items for expand/collapse options
hgs
parents:
diff changeset
   590
        * @param aMenuPane: 
hgs
parents:
diff changeset
   591
        * @since S60 5.0
hgs
parents:
diff changeset
   592
        */    
hgs
parents:
diff changeset
   593
        void HandleContainerOptionsMenuL( CEikMenuPane* aMenuPane );  
hgs
parents:
diff changeset
   594
        
hgs
parents:
diff changeset
   595
        /**
hgs
parents:
diff changeset
   596
        *
hgs
parents:
diff changeset
   597
        */
hgs
parents:
diff changeset
   598
        void HandleContainerOptionsCommandL( TInt aCommand );
hgs
parents:
diff changeset
   599
        
hgs
parents:
diff changeset
   600
        /**
hgs
parents:
diff changeset
   601
        * called from EnvironmentChanged.
hgs
parents:
diff changeset
   602
        */
hgs
parents:
diff changeset
   603
        TInt HandleEnvironmentChanged();
hgs
parents:
diff changeset
   604
         
hgs
parents:
diff changeset
   605
        /*
hgs
parents:
diff changeset
   606
        * Check and Set Forward command for the selected item
hgs
parents:
diff changeset
   607
        * Forward is currently only available in Sent Item folder
hgs
parents:
diff changeset
   608
        * Since 5.0
hgs
parents:
diff changeset
   609
        */
hgs
parents:
diff changeset
   610
        void SetForwardMenuL( CEikMenuPane* aMenuPane, TMsvEntry& aEntry );            
hgs
parents:
diff changeset
   611
         
hgs
parents:
diff changeset
   612
        /*
hgs
parents:
diff changeset
   613
        * Dim Read/Unread command from options menu, prepare for further settings
hgs
parents:
diff changeset
   614
        * Since 5.0 
hgs
parents:
diff changeset
   615
        */
hgs
parents:
diff changeset
   616
        void DimReadUnreadOptionsMenu( CEikMenuPane *aMenuPane );
hgs
parents:
diff changeset
   617
        
hgs
parents:
diff changeset
   618
        /*
hgs
parents:
diff changeset
   619
        * Set Read/Unread command for options menu, when multiple msg/emails are selected
hgs
parents:
diff changeset
   620
        * Since 5.0
hgs
parents:
diff changeset
   621
        */
hgs
parents:
diff changeset
   622
        void SetReadUnreadOptionsMenu( CEikMenuPane *aMenuPane, TBool aIsEmail, TBool aSetRead );
hgs
parents:
diff changeset
   623
public:
hgs
parents:
diff changeset
   624
        /**
hgs
parents:
diff changeset
   625
        * Set the iReadUnread variable if Mark as read/unread appears twice
hgs
parents:
diff changeset
   626
        * if it is, enable mark read msg option from menu
hgs
parents:
diff changeset
   627
        * @aValue: The value to be set to iReadUnread variable
hgs
parents:
diff changeset
   628
        * Since 3.2
hgs
parents:
diff changeset
   629
        */
hgs
parents:
diff changeset
   630
        void SetMarkReadUnread( TBool aValue );
hgs
parents:
diff changeset
   631
		
hgs
parents:
diff changeset
   632
        /**
hgs
parents:
diff changeset
   633
         *  This function sets aClearer to iLocalScreenClearer which contains Inbox view
hgs
parents:
diff changeset
   634
         *  screen. aClearer is used in CMceUi::HandleGainingForeground() when returning from viewers.
hgs
parents:
diff changeset
   635
         */
hgs
parents:
diff changeset
   636
        void  GetLocalScreenClearer( CAknLocalScreenClearer** &aClearer );
hgs
parents:
diff changeset
   637
        /**
hgs
parents:
diff changeset
   638
        * Set the iMarkingModeOn variable if MarkingMode is switched on
hgs
parents:
diff changeset
   639
        * @aValue: The value to be set to iMarkingModeOn variable
hgs
parents:
diff changeset
   640
        * Since 9.2
hgs
parents:
diff changeset
   641
        */
hgs
parents:
diff changeset
   642
        void SetMarkingMode( TBool aMarkingModeOn );
hgs
parents:
diff changeset
   643
		/**
hgs
parents:
diff changeset
   644
        * Get the iMarkingModeOn variable
hgs
parents:
diff changeset
   645
        * @return: the value of iMarkingModeOn
hgs
parents:
diff changeset
   646
        * Since 9.2
hgs
parents:
diff changeset
   647
        */
hgs
parents:
diff changeset
   648
        TBool MarkingMode() const;
hgs
parents:
diff changeset
   649
		/**
hgs
parents:
diff changeset
   650
        * Get iMsgListContainer->MessageCount() variable
hgs
parents:
diff changeset
   651
        * @return: The value of MessageCount()
hgs
parents:
diff changeset
   652
        * Since 9.2
hgs
parents:
diff changeset
   653
        */
hgs
parents:
diff changeset
   654
        TInt MessageCount() const;
hgs
parents:
diff changeset
   655
		/**
hgs
parents:
diff changeset
   656
        * Set the MarkingMode off and inform the same to container
hgs
parents:
diff changeset
   657
        * Since 9.2
hgs
parents:
diff changeset
   658
        */
hgs
parents:
diff changeset
   659
		void SetMarkingModeOff();
hgs
parents:
diff changeset
   660
            
hgs
parents:
diff changeset
   661
    private:    // Data
hgs
parents:
diff changeset
   662
hgs
parents:
diff changeset
   663
        CMceUi*                 iMceUi;
hgs
parents:
diff changeset
   664
        CMceMessageListContainerBase*  iMsgListContainer;
hgs
parents:
diff changeset
   665
        
hgs
parents:
diff changeset
   666
        TInt                    iCurrentListboxId;
hgs
parents:
diff changeset
   667
        CMsvSessionPtr          iSession;
hgs
parents:
diff changeset
   668
        TMsvId                  iFolderId;
hgs
parents:
diff changeset
   669
        CMceSessionHolder&      iSessionHolder;
hgs
parents:
diff changeset
   670
        CMceBitmapResolver&     iBitmapResolver;
hgs
parents:
diff changeset
   671
        TBool                   iMceViewActivated;
hgs
parents:
diff changeset
   672
        TBool                   iMsvSessionReady;
hgs
parents:
diff changeset
   673
        CAiwServiceHandler*		iAiwServiceHandler;
hgs
parents:
diff changeset
   674
        TMceFlags               iListViewFlags;
hgs
parents:
diff changeset
   675
        TMsvId 					iCurrentItemId;
hgs
parents:
diff changeset
   676
hgs
parents:
diff changeset
   677
        TInt    iSelectedIndex; // index of the cursor when deactivated
hgs
parents:
diff changeset
   678
   
hgs
parents:
diff changeset
   679
        HBufC*  iInboxName;
hgs
parents:
diff changeset
   680
        HBufC*  iRemoteMailboxEmptyText;
hgs
parents:
diff changeset
   681
        HBufC*  iEmptyText;
hgs
parents:
diff changeset
   682
        CMceMainViewListView& iMainViewListView;
hgs
parents:
diff changeset
   683
        TBool   iHideExitCommand;
hgs
parents:
diff changeset
   684
        TBool   iFetchMenuSelectionKeyPressed;
hgs
parents:
diff changeset
   685
        CPeriodic*  iMessageViewerLauncher;        
hgs
parents:
diff changeset
   686
        CAknLocalScreenClearer* iLocalScreenClearer;
hgs
parents:
diff changeset
   687
        TInt    iLaunchViewerCounter;
hgs
parents:
diff changeset
   688
        CMceFolderItemArray* iFolderItemArray;
hgs
parents:
diff changeset
   689
        TBool   iConnectionNote;
hgs
parents:
diff changeset
   690
hgs
parents:
diff changeset
   691
        TInt    iSortOrder;
hgs
parents:
diff changeset
   692
        TBool   iOrdering;        
hgs
parents:
diff changeset
   693
        TBool   iRunningEditFunction;
hgs
parents:
diff changeset
   694
        TBool   iIsUnread;
hgs
parents:
diff changeset
   695
        
hgs
parents:
diff changeset
   696
        TInt                     iCurrentListType;
hgs
parents:
diff changeset
   697
        CMceListboxTypeObserver* iListboxMailTypeObserver;
hgs
parents:
diff changeset
   698
        CMceListboxTypeObserver* iListboxInboxTypeObserver;
hgs
parents:
diff changeset
   699
        
hgs
parents:
diff changeset
   700
        CEnvironmentChangeNotifier* iDateTimeNotifier;
hgs
parents:
diff changeset
   701
        //Variable that get set when Mark as read/unread appears twice
hgs
parents:
diff changeset
   702
		TBool 						iReadUnread; 
hgs
parents:
diff changeset
   703
		//Variable for context command
hgs
parents:
diff changeset
   704
		TBool                       iContextCommand;
hgs
parents:
diff changeset
   705
		//To indicate if marking mode is on/off
hgs
parents:
diff changeset
   706
		TBool                       iMarkingModeOn;
hgs
parents:
diff changeset
   707
    };
hgs
parents:
diff changeset
   708
hgs
parents:
diff changeset
   709
inline void CMceMessageListView::UpdateViewL()
hgs
parents:
diff changeset
   710
	{
hgs
parents:
diff changeset
   711
	if ( iMsgListContainer )
hgs
parents:
diff changeset
   712
	    {
hgs
parents:
diff changeset
   713
        iMsgListContainer->SetAnchorItemIdL(
hgs
parents:
diff changeset
   714
            CMceMessageListContainerBase::EMessageListOperationCompleted );
hgs
parents:
diff changeset
   715
        iMsgListContainer->RefreshListbox();
hgs
parents:
diff changeset
   716
	    }
hgs
parents:
diff changeset
   717
	}
hgs
parents:
diff changeset
   718
hgs
parents:
diff changeset
   719
hgs
parents:
diff changeset
   720
hgs
parents:
diff changeset
   721
#endif
hgs
parents:
diff changeset
   722
hgs
parents:
diff changeset
   723
// End of file