calendarui/views/dayview/src/calendayeventspane.cpp
author hgs
Wed, 25 Aug 2010 14:02:13 +0530
changeset 63 a3cb48f6c889
parent 55 2c54b51f39c4
permissions -rw-r--r--
201033
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
45
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2010 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:  Day view control of calendar
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
// System includes
hgs
parents:
diff changeset
    18
#include <QPainter>
63
hgs
parents: 55
diff changeset
    19
#include <HbColorScheme>
45
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
// User includes
63
hgs
parents: 55
diff changeset
    22
#include "calendayeventspane.h"
hgs
parents: 55
diff changeset
    23
#include "calendaycommonheaders.h"
45
hgs
parents:
diff changeset
    24
hgs
parents:
diff changeset
    25
/*!
hgs
parents:
diff changeset
    26
 \class CalenDayEventsPane
hgs
parents:
diff changeset
    27
 \brief Events pane draws timelines in content view.
hgs
parents:
diff changeset
    28
 */
hgs
parents:
diff changeset
    29
hgs
parents:
diff changeset
    30
/*!
hgs
parents:
diff changeset
    31
 \brief Constructor
hgs
parents:
diff changeset
    32
 
hgs
parents:
diff changeset
    33
 \param parent The parent of widget
hgs
parents:
diff changeset
    34
 */
hgs
parents:
diff changeset
    35
CalenDayEventsPane::CalenDayEventsPane(HbWidget *parent) : HbWidget(parent),
hgs
parents:
diff changeset
    36
    mDrawTopLine(false)
hgs
parents:
diff changeset
    37
{
hgs
parents:
diff changeset
    38
    // Necessary when widget implements own paint method
hgs
parents:
diff changeset
    39
    setFlag(QGraphicsItem::ItemHasNoContents, false);
hgs
parents:
diff changeset
    40
hgs
parents:
diff changeset
    41
    HbDeviceProfile deviceProfile;
hgs
parents:
diff changeset
    42
    mUnitInPixels = deviceProfile.unitValue();
63
hgs
parents: 55
diff changeset
    43
    mHourLineColor = HbColorScheme::color(KCalenHourLineColor);
45
hgs
parents:
diff changeset
    44
    
hgs
parents:
diff changeset
    45
    // Set custom dashed pen
63
hgs
parents: 55
diff changeset
    46
    mCustomDashedPen.setWidth(KCalenHourLineThickness);
45
hgs
parents:
diff changeset
    47
    QVector<qreal> dashes;
63
hgs
parents: 55
diff changeset
    48
    dashes << KCalenHalfHourLineDashWidth * mUnitInPixels 
hgs
parents: 55
diff changeset
    49
        << KCalenHalfHourLineDashWidth * mUnitInPixels;
45
hgs
parents:
diff changeset
    50
    mCustomDashedPen.setDashPattern(dashes);
hgs
parents:
diff changeset
    51
    mCustomDashedPen.setCapStyle(Qt::FlatCap);
hgs
parents:
diff changeset
    52
    mCustomDashedPen.setColor(mHourLineColor);
hgs
parents:
diff changeset
    53
}
hgs
parents:
diff changeset
    54
hgs
parents:
diff changeset
    55
/*!
hgs
parents:
diff changeset
    56
 \brief Destructor
hgs
parents:
diff changeset
    57
 */
hgs
parents:
diff changeset
    58
CalenDayEventsPane::~CalenDayEventsPane()
hgs
parents:
diff changeset
    59
{
hgs
parents:
diff changeset
    60
}
hgs
parents:
diff changeset
    61
hgs
parents:
diff changeset
    62
/*!
hgs
parents:
diff changeset
    63
 \brief Shows/hides a line at top of event pane.
hgs
parents:
diff changeset
    64
 
hgs
parents:
diff changeset
    65
 \param drawTopLine Flag to be set if top line should be drawn.
hgs
parents:
diff changeset
    66
 */
55
hgs
parents: 45
diff changeset
    67
void CalenDayEventsPane::setDrawTopLine(bool drawTopLine)
45
hgs
parents:
diff changeset
    68
{
hgs
parents:
diff changeset
    69
    mDrawTopLine = drawTopLine;
hgs
parents:
diff changeset
    70
}
hgs
parents:
diff changeset
    71
hgs
parents:
diff changeset
    72
/*!
55
hgs
parents: 45
diff changeset
    73
   \brief It return if top line is drawed.
hgs
parents: 45
diff changeset
    74
 */
hgs
parents: 45
diff changeset
    75
bool CalenDayEventsPane::isTopLineDrawed() const
hgs
parents: 45
diff changeset
    76
{
hgs
parents: 45
diff changeset
    77
    return mDrawTopLine;
hgs
parents: 45
diff changeset
    78
}
hgs
parents: 45
diff changeset
    79
hgs
parents: 45
diff changeset
    80
/*!
45
hgs
parents:
diff changeset
    81
 \brief Paints the item with given painter.
hgs
parents:
diff changeset
    82
 
hgs
parents:
diff changeset
    83
 \param painter
hgs
parents:
diff changeset
    84
 \param option
hgs
parents:
diff changeset
    85
 \param widget
hgs
parents:
diff changeset
    86
 */
hgs
parents:
diff changeset
    87
void CalenDayEventsPane::paint(QPainter *painter, 
hgs
parents:
diff changeset
    88
    const QStyleOptionGraphicsItem *option, QWidget *widget)
hgs
parents:
diff changeset
    89
{
hgs
parents:
diff changeset
    90
    Q_UNUSED(widget)
hgs
parents:
diff changeset
    91
    
hgs
parents:
diff changeset
    92
    QRectF drawArea = option->rect;
hgs
parents:
diff changeset
    93
    
63
hgs
parents: 55
diff changeset
    94
    const qreal hourLineThickness = KCalenHourLineThickness;
45
hgs
parents:
diff changeset
    95
hgs
parents:
diff changeset
    96
    painter->save();
hgs
parents:
diff changeset
    97
    
hgs
parents:
diff changeset
    98
    // Draw full hour line
hgs
parents:
diff changeset
    99
    QPen linePen = QPen(mHourLineColor, hourLineThickness * mUnitInPixels);
hgs
parents:
diff changeset
   100
    painter->setPen(linePen);
hgs
parents:
diff changeset
   101
    QLineF fullHourLine(drawArea.bottomLeft(), drawArea.bottomRight());
hgs
parents:
diff changeset
   102
    painter->drawLine(fullHourLine);
hgs
parents:
diff changeset
   103
    
hgs
parents:
diff changeset
   104
    // Draw extra line on top if needed
hgs
parents:
diff changeset
   105
    if (mDrawTopLine) {
hgs
parents:
diff changeset
   106
        fullHourLine = QLineF(drawArea.topLeft(), drawArea.topRight());
hgs
parents:
diff changeset
   107
        painter->drawLine(fullHourLine);
hgs
parents:
diff changeset
   108
    }
hgs
parents:
diff changeset
   109
hgs
parents:
diff changeset
   110
    // Draw half hour line
hgs
parents:
diff changeset
   111
    painter->setPen(mCustomDashedPen);
hgs
parents:
diff changeset
   112
    qreal halfHourYPos = drawArea.height() / 2;
hgs
parents:
diff changeset
   113
    QLineF halfHourLine(drawArea.left(), halfHourYPos, drawArea.right(), halfHourYPos);
hgs
parents:
diff changeset
   114
    painter->drawLine(halfHourLine);
hgs
parents:
diff changeset
   115
    
hgs
parents:
diff changeset
   116
    painter->restore();
hgs
parents:
diff changeset
   117
}
hgs
parents:
diff changeset
   118