calendarui/views/inc/calenpreviewentry.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 09 Jun 2010 09:40:23 +0300
branchRCL_3
changeset 20 9c5b1510919f
parent 0 f979ecb2b13e
permissions -rw-r--r--
Revision: 201021 Kit: 2010123

/*
* 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:  Data storage for single lines of preview data.
 *
*/


#ifndef CALENPREVIEWENTRY_H
#define CALENPREVIEWENTRY_H

#include "CalendarVariant.hrh"

//  INCLUDES
#include <calentry.h> // For CCalEntry::TType
#include <AknUtils.h>
#include <eiklabel.h>
#include <e32base.h>
#include <caleninstanceid.h>            // TCalenInstanceId

#include "calenpreviewlabelobserver.h"
#include "calenpreviewentryobserver.h"

// FORWARD DECLARATIONS
class TCalenInstanceId;
class CCalenPreviewLabel;
class MCalenPreviewLabelObserver;
class MCalenPreviewEntryObserver;
class CCalenPreviewLayoutManager;
class CCalenCommonUI;

// CLASS DECLARATION

/**
 * CCalenPreviewEntry is a storage class for single line of popup.
 * @lib Calendar.exe
 * @since 5.0
 */
NONSHARABLE_CLASS( CCalenPreviewEntry ) :
    public MCalenPreviewLabelObserver
    {
    public:
    enum TPreviewEntryType
        {
        ECalenPreviewEntryNormal,
        ECalenPreviewEntryPlugin,
        ECalenPreviewEntryEmpty
        };
    /**
     * Copy constructor
     */
    static CCalenPreviewEntry* NewL(CCalInstance* aInstance,
                                    CCalenPreviewLayoutManager* aLayoutManager,
                                    const TTime& aDay,
                                    TInt aMaxRows,
                                    TUint32 aColor);

    static CCalenPreviewEntry* NewL(CCalenPreviewLayoutManager* aLayoutManager,
                                    TPreviewEntryType aType,
                                    TUint32 aColor);

    /**
     * Destructor
     */
    virtual ~CCalenPreviewEntry();

    public:
    // From MCalenPreviewLabelObserver
    void HandleLabelPointerEventL(const TPointerEvent& aPointerEvent);

    // New functions
    CCalEntry::TType EventType() const;
    TPreviewEntryType EntryType() const;
    void SetEntryObserver(MCalenPreviewEntryObserver* aObserver);
    void FormatTextL(TBool aShortLine);
    void AddObservedLabelL(CCalenPreviewLabel *aLabel);
    TPtrC GetLine(TInt aIndex);
    TBool RemoveLine();
    TBool Contains(TPoint aPoint);
    TInt LineCount();

    private:
    CCalenPreviewEntry();
    void ConstructL(CCalInstance* aInstance,
                    CCalenPreviewLayoutManager* aLayoutManager,
                    const TTime& aDay,
                    TInt aMaxRows,
                    TUint32 aColor);

    void ConstructL(CCalenPreviewLayoutManager* aLayoutManager,
                    TPreviewEntryType aType,
                    TUint32 aColor);

    TInt CalculateTextLengthL();

    void DoLineUsageL(TInt aMaxRows);
    void SetLineCount(TInt aLineCount);
    void SetHyphenL();

    HBufC* FullTextL();

    void FormatTimeL(CCalInstance* aInstance,
                     const TTime& aDay,
                     TInt& aMaxLen);

    void FormatSummaryL(CCalInstance* aInstance,
                        TInt& aMaxLen);
    void FormatLocationL(CCalInstance* aInstance,
                         TInt& aMaxLen);
    void FormatDescriptionL(CCalInstance* aInstance,
                            TInt& aMaxLen);

    void FormatEmptyTextL();
    
    public:
    TUint32 iColor;

    private:

    HBufC* iStart;
    HBufC* iHyphen;
    HBufC* iEnd;
    HBufC* iSummary;
    HBufC* iLocation;
    HBufC* iDescription;

    // Data
    CCalenPreviewLayoutManager* iLayoutManager;
    RPointerArray<CCalenPreviewLabel> iLabels;
    MCalenPreviewEntryObserver* iObserver;
    HBufC* iText;
    CArrayFixFlat<TPtrC>* iTextLines;
    TInt iLines;
    TCalenInstanceId iInstanceId;
    CCalEntry::TType iEventType;
    TPreviewEntryType iEntryType;
    };

#endif // CALENPREVIEWENTRY_H