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