/*+ −
* Copyright (c) 2002-2005 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: Processor for Meeting Requests+ −
*+ −
*/+ −
+ −
+ −
+ −
+ −
#ifndef CMRPROCESSOR_H+ −
#define CMRPROCESSOR_H+ −
+ −
// INCLUDES+ −
#include "CMRUtilsInternal.h"+ −
#include "ProcessingStructs.h"+ −
#include "MREntryConsultant.h"+ −
#include "MMRModelInterface.h"+ −
#include <e32base.h>+ −
#include <MAgnEntryUi.h>+ −
#include <caltime.h>+ −
+ −
// FORWARD DECLARATIONS+ −
class CCalEntry;+ −
class CMRMailboxUtils;+ −
+ −
/**+ −
* Role of CMRProcessor is to be a helper class for CMRModelBase and its+ −
* subclasses. Processor should not be directly used by other classes for+ −
* getting/setting data. Processor's main responsibility is to perform entry+ −
* processing and evaluation in initialization phase.+ −
*/+ −
class CMRProcessor : public CBase+ −
{+ −
public:+ −
+ −
struct TScenarioData+ −
{+ −
CCalEntry::TMethod iMethod;+ −
TInt iCallingApp;+ −
TInt iOpenedMailbox;+ −
MMRUtilsTombsExt::TMRUtilsDbResult iUtilsDBResult;+ −
TInt iMethodLevelValidity;+ −
TInt iEditorMode; + −
TInt iMROperation;+ −
};+ −
+ −
enum TOwnerRole+ −
{+ −
ENotFound,+ −
EOrganiser,+ −
ENonRequiredParticipant,+ −
ERequiredParticipant,+ −
EOptionalParticipant+ −
}; + −
+ −
public: // Constructors and destructor+ −
+ −
/**+ −
* Two-phased constructor.+ −
*/+ −
static CMRProcessor* NewL( CMRMailboxUtils& aMRMailboxUtils,+ −
CMRUtilsInternal& aMRUtils,+ −
const MAgnEntryUi::TAgnEntryUiInParams& aParams,+ −
RPointerArray<CCalEntry>& aEntries );+ −
+ −
/**+ −
* Destructor.+ −
*/+ −
virtual ~CMRProcessor();+ −
+ −
protected: //construction+ −
+ −
/**+ −
* Constructor+ −
* @param aEntry Reference to the agenda entry.+ −
*/+ −
CMRProcessor( CMRMailboxUtils& aMRMailboxUtils,+ −
CMRUtilsInternal& aMRUtils, + −
const MAgnEntryUi::TAgnEntryUiInParams& aParams,+ −
RPointerArray<CCalEntry>& aEntries );+ −
+ −
/**+ −
* By default Symbian 2nd phase constructor is private.+ −
*/+ −
void ConstructL();+ −
+ −
public: // API+ −
+ −
/**+ −
* Initialization method which processes the entry array.+ −
* This method includes error handling, so if this method+ −
* leaves situation is severe and nothing can be shown.+ −
*/+ −
void ProcessEntriesL();+ −
+ −
/**+ −
* Get combined entry, always valid after processing succesfully+ −
* performed, but the instance may change so the pointer mustn't be+ −
* persisted by clients.+ −
* @return combined entry pointer, ownership not transferred+ −
*/+ −
CCalEntry* CombinedEntry();+ −
+ −
/**+ −
* Gets scenario data for the processed combined entry.+ −
* @return scenario data+ −
*/+ −
TScenarioData ScenarioData();+ −
+ −
/**+ −
* Refresh combined entry to reflect latest database changes.+ −
*/+ −
void RefreshViewableEntryL();+ −
+ −
/**+ −
* Sets phone owner to entries and iOwnerRole, must be called in+ −
* the beginning of entry processing.+ −
*/+ −
void SetPhoneOwnerL();+ −
+ −
TOwnerRole OwnerRole();+ −
+ −
MMRUtilsTombsExt::TMRUtilsDbResult ProcessingDbResult();+ −
+ −
TInt ProcessingResultOp();+ −
+ −
/**+ −
* Get edit mode.+ −
* @return edit mode+ −
*/ + −
MMRModelInterface::TEditingMode EditingMode() const;+ −
+ −
/**+ −
* Setting of editing mode is allowed only once.+ −
* @param aEditMode+ −
*/+ −
void SetEditingModeL( MMRModelInterface::TEditingMode aEditMode );+ −
+ −
private: // New functions+ −
+ −
void ProcessRequestInCalendarL();+ −
+ −
void ProcessRequestOrCancelArrayL();+ −
+ −
void ProcessResponseArrayL();+ −
+ −
void ProcessErrorL();+ −
+ −
void CreateModForResponseL( const CCalEntry& aResponse,+ −
TScenarioData& aScenarioData ) const;+ −
+ −
CCalEntry* HandleResponseStatusL( const CCalEntry& aResponse,+ −
TScenarioData& aScenarioData ) const;+ −
+ −
TBool ProcessArraySaveIfNeededL();+ −
+ −
/**+ −
* ?member_description.+ −
* @since Series ?XX ?SeriesXX_version+ −
* @param ?arg1 ?description+ −
* @return ?description+ −
*/+ −
void ShowMeetingRequestOnlyOnViewerL( CCalEntry& aEntry );+ −
+ −
/**+ −
* ?member_description.+ −
* @since Series ?XX ?SeriesXX_version+ −
* @param ?arg1 ?description+ −
* @return ?description+ −
*/+ −
void ShowEmptyMeetingRequestViewL( CCalEntry& aEntry );+ −
+ −
/**+ −
* From ?base_class ?member_description.+ −
* @since Series ?XX ?SeriesXX_version+ −
* @param ?arg1 ?description+ −
* @return ?description+ −
*/+ −
TInt EditorMode() const;+ −
+ −
TInt OpenedMailboxL( const CCalEntry& aEntry ) const;+ −
+ −
TBool MatchScenarioAndSaveIfNeededL(+ −
CCalEntry& aCalEntry,+ −
TScenarioData& aScenarioData ) const;+ −
+ −
/**+ −
* Goes through predefined scenarios and picks the first one that+ −
* matches given data criteria, returns operation which corresponds+ −
* the scenario.+ −
*+ −
* @param currentScenario scenario data to match+ −
* @param aEntry entry which is being processed, used for debug purposes+ −
* @return operation corresponding to scenario+ −
*/+ −
TInt MatchScenarioToDataL( TScenarioData currentScenario,+ −
const CCalEntry& aEntry ) const;+ −
+ −
/**+ −
* From ?base_class ?member_description.+ −
* @since Series ?XX ?SeriesXX_version+ −
* @param ?arg1 ?description+ −
* @return ?description+ −
*/+ −
TInt CallingApp() const;+ −
+ −
/**+ −
* From ?base_class ?member_description.+ −
* @since Series ?XX ?SeriesXX_version+ −
* @param ?arg1 ?description+ −
* @return ?description+ −
*/+ −
TInt32 MailboxTypeL( const TMsvId& aID ) const;+ −
+ −
/**+ −
* Finds respondent in corresponding request, and evaluates+ −
* whether response differs from earlier status. NULL is returned+ −
* if attendee is not found.+ −
* @param aResponse received response+ −
* @param aRequest request to search from + −
* @param aStatusChange ETrue if status has changed+ −
* @return attendee or NULL, ownership is not transferred+ −
*/+ −
CCalAttendee* RespondentInRequestL( const CCalEntry& aResponse,+ −
const CCalEntry& aRequest,+ −
TBool& aStatusChange ) const;+ −
+ −
/**+ −
* Reads the entry corresponding to the aSourceEntry from the + −
* database and copies it's contents to aTargetEntry. Note: + −
* CopyFromL seems to work only with fresh, empty target entries!+ −
* @param aSourceEntry determines entry to read from db+ −
* @param aTargetEntry fresh entry that will filled with data+ −
*/+ −
void ReadEntryFromDbL( const CCalEntry& aSourceEntry,+ −
CCalEntry& aTargetEntry ) const;+ −
+ −
/**+ −
* Resets combined entry, takes uid, seq number and method+ −
* from aBase entry (which may also be combined entry).+ −
* @param aBase entry which contains constructor values+ −
* for new reseted combined entry+ −
* @param aInstanceDate, Time::NullTTime() if parent is to be created+ −
*/+ −
void ResetCombinedEntryL( const CCalEntry& aBase, + −
const TCalTime& aInstanceDate );+ −
+ −
/**+ −
* Calculates and sets instance start & end time in aChild.+ −
* @param aChild + −
* @param aParent+ −
* @param aInstaceStart+ −
*/+ −
void SetInstanceStartAndEndL( CCalEntry& aChild,+ −
const CCalEntry& aParent,+ −
const TCalTime& aInstanceStart ) const;+ −
+ −
protected: // Data+ −
+ −
MMRModelInterface::TEditingMode iEditMode;+ −
+ −
TOwnerRole iOwnerRole;+ −
+ −
TScenarioData iCombinedScenData;+ −
+ −
//refd+ −
RPointerArray<CCalEntry>& iArrayOfEntries;+ −
+ −
//refd+ −
const MAgnEntryUi::TAgnEntryUiInParams& iEntryUiInParams;+ −
+ −
//refd, all methods may be utilized even in const methods+ −
mutable CMRUtilsInternal& iMRUtils; + −
mutable CMRMailboxUtils& iMRMailboxUtils;+ −
+ −
//owned+ −
CCalEntry* iCombinedEntry;+ −
};+ −
+ −
#endif+ −