/*
* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:
* CMsgSentItemsObserver declaration file
*
*/
#ifndef MSGSENTITEMSOBSERVER_H
#define MSGSENTITEMSOBSERVER_H
// INCLUDES
#include <e32base.h>
#include <msvapi.h>
#include <cenrepnotifyhandler.h> // link against CenRepNotifHandler.lib
#include "MsgErrorWatcher.h"
// FORWARD DECLARATIONS
class CRepository;
// CLASS DECLARATION
/**
* CMsgSentItemsObserver
*
* @lib msgerrorwatcher.dll
* @since 2.0
*/
class CMsgSentItemsObserver : public CActive,
public MMsvEntryObserver,
public MCenRepNotifyHandlerCallback
{
public: // Constructors and destructor
/**
* Two-phased constructor.
*
* @param aWatcher A pointer to CMsgErrorWatcher
* @param aSession A pointer to CMsvSession
*/
static CMsgSentItemsObserver* NewL(
CMsgErrorWatcher* aWatcher,
CMsvSession* aSession );
/**
* Destructor.
*/
~CMsgSentItemsObserver();
public: // from base classes
/**
* From MMsvEntryObserver
*
* Call back from msg that the sent items folder has changed
* so check if messages need to be deleted.
*/
void HandleEntryEventL(
TMsvEntryEvent aEvent,
TAny* aArg1,
TAny* aArg2,
TAny* aArg3 );
/**
* From MCenRepNotifyHandlerCallback
*
* Notifications from CenRep
*/
void HandleNotifyInt(TUint32 aId, TInt aNewValue);
void HandleNotifyError(TUint32 aId, TInt error, CCenRepNotifyHandler* aHandler);
void HandleNotifyGeneric(TUint32 aId);
private:
enum TCleanupFlags
{
EMsvSessionOpened =0x00000001,
ESentItemsFolderObserverAdded =0x00000002,
EUserSettingsConnected =0x00000004,
EUserSettingsNotifierSet =0x00000010
};
private:
/**
* By default Symbian OS constructor is private.
*/
void ConstructL();
/**
* Private C++ constructor.
*
* @param aWatcher A pointer to CMsgErrorWatcher
* @param aSession A pointer to CMsvSession
*/
CMsgSentItemsObserver(
CMsgErrorWatcher* aWatcher,
CMsvSession* aSession );
/**
* Returns the user setting for use of the sent folder. If there
* is an error then the default value of ON (i.e ETrue) will
* be returned.
*
* @return ETrue, Sent folder is in use
* EFalse, Sent foler is not in use
*/
TBool SentFolderIsBeingUsed();
/**
* Returns the user setting for max limit to the number of messages
* in the sent folder. If there is an error then the default value of
* 15 will be returned
*
* @return Maximum amount of messages in Sent folder
*/
TInt SentFolderUpperLimit();
/**
* If there are more messages in the sent folder than the upper
* limit set by the user then delete the oldest messages.
*/
void DeleteOldMessagesFromSentFolderL();
/**
* Delete the messages specified by aSelection
*
* @param aSelection Enties to be deleted
*/
void DeleteMessagesFromSentFolderL( CMsvEntrySelection* aSelection );
/**
* Delete the messages specified by aSelection
* aSelection is expected to have count 1
* @param aSelection Enties to be deleted
*/
void DeleteSingleEntryL(CMsvEntrySelection* aSelection);
private: //from CActive
/**
* From CActive
*/
void RunL();
/**
* From CActive
*/
void DoCancel();
private: // Data
CMsgErrorWatcher* iWatcher;
CMsvSession* iSession;
CMsvEntry* iSentItemsFolder;
CMsvEntry* iEntry;
CCenRepNotifyHandler* iNotifyHandler;
CRepository* iRepository;
TInt8 iCleanupFlags;
CMsvOperation* iOp;
TUint iRetryCounter;
TInt iMsgStoreDrive;
class CMsvEntrySelection* iQudUPEntryBeingDeleted;
class CMsvEntrySelection* iQueuedUPEntriesToBeDeleted;
TInt iRetryCounterIfEntryDelFailed;
};
#endif // MSGSENTITEMSOBSERVER_H
// End of File