calendarui/views/dayview/src/calendayhourscrollarea.cpp
changeset 57 bb2d3e476f29
parent 55 2c54b51f39c4
child 81 ce92091cbd61
equal deleted inserted replaced
55:2c54b51f39c4 57:bb2d3e476f29
    37  Gets the width of device.
    37  Gets the width of device.
    38  
    38  
    39  \param parent The parent of scroll area widget
    39  \param parent The parent of scroll area widget
    40  */
    40  */
    41 CalenDayHourScrollArea::CalenDayHourScrollArea(QGraphicsItem *parent) :
    41 CalenDayHourScrollArea::CalenDayHourScrollArea(QGraphicsItem *parent) :
    42     HbScrollArea(parent),
    42     HbScrollArea(parent), mDateTime(QDateTime())
    43     mDateTime(QDateTime())
       
    44 {
    43 {
       
    44     // Grab pan gestures
    45     grabGesture(Qt::PanGesture);
    45     grabGesture(Qt::PanGesture);
    46     
       
    47     // Get width of hour elements and fix its size
       
    48     qreal hourElementWidth = CalenDayUtils::instance()->hourElementWidth();
       
    49 
    46 
    50     // Create widget for hour elements
    47     // Create widget for hour elements
    51     HbWidget *hourWidget = new HbWidget();
    48     HbWidget *hourWidget = new HbWidget();
    52 
    49 
    53     // Create and insert hour elements into vertical layout
    50     // Create and insert hour elements into vertical layout
    54     QGraphicsLinearLayout* hourLayout = new QGraphicsLinearLayout(Qt::Vertical,
    51     QGraphicsLinearLayout* hourLayout = new QGraphicsLinearLayout(Qt::Vertical,
    55         NULL);
    52         NULL);
    56     for (int i = 0; i < 24; i++) {
    53     for (int i = 0; i < KCalenHoursInDay; i++) {
    57         CalenDayHourElement* element = new CalenDayHourElement(QTime(i, 0),
    54         CalenDayHourElement* element = new CalenDayHourElement(QTime(i, 0),
    58             this);
    55             this);
    59         hourLayout->addItem(element);
    56         hourLayout->addItem(element);
    60         mHourElements.append(element);
    57         mHourElements.append(element);
    61     }
    58     }
    62     hourLayout->setContentsMargins(0.0, 0.0, 0.0, 0.0);
    59     hourLayout->setContentsMargins(0.0, 0.0, 0.0, 0.0);
    63     hourLayout->setSpacing(0.0);
    60     hourLayout->setSpacing(0.0);
    64     
       
    65     // Fix the size of scroll area
       
    66     setMinimumWidth(hourElementWidth);
       
    67     setMaximumWidth(hourElementWidth);
       
    68 
    61 
    69     // Apply hour layout for new widget and set content widget to scroll area
    62     // Apply hour layout for new widget and set content widget to scroll area
    70     hourWidget->setLayout(hourLayout);
    63     hourWidget->setLayout(hourLayout);
    71     setContentWidget(hourWidget);
    64     setContentWidget(hourWidget);
    72 }
    65 }
   111 }
   104 }
   112 
   105 
   113 /*!
   106 /*!
   114  \brief Scroll view to given hour.
   107  \brief Scroll view to given hour.
   115  
   108  
   116   \param  An hour In 24 hour format (0 - 23)
   109  \param  An hour in 24 hour format (0 - 23)
   117 */
   110 */
   118 void CalenDayHourScrollArea::scrollToHour(int hour)
   111 void CalenDayHourScrollArea::scrollToHour(int hour)
   119 {
   112 {
       
   113     Q_ASSERT((hour > -1) && (hour < KCalenHoursInDay));
       
   114     
   120     CalenDayHourElement *hourElement = mHourElements.at(hour); 
   115     CalenDayHourElement *hourElement = mHourElements.at(hour); 
   121     QRectF hourElementRect = hourElement->rect();
   116     QRectF hourElementRect = hourElement->rect();
   122     hourElementRect = hourElement->mapRectToParent(hourElementRect);
   117     hourElementRect = hourElement->mapRectToParent(hourElementRect);
   123     QPointF newPos = hourElementRect.topLeft();
   118     QPointF newPos = hourElementRect.topLeft();
   124     
   119     
   125     //Ensure that we won't scroll out of bound
   120     // Ensure that we won't scroll out of bound
   126     CalenDayHourElement *lastElement = mHourElements.last();
   121     CalenDayHourElement *lastElement = mHourElements.last();
   127     qreal bottomEdge = lastElement->mapRectToParent(lastElement->rect()).bottom();
   122     qreal bottomEdge = lastElement->mapRectToParent(lastElement->rect()).bottom();
   128     qreal viewHeight = rect().height();
   123     qreal viewHeight = rect().height();
   129 
   124 
   130     if(bottomEdge - newPos.y() < viewHeight){
   125     if (bottomEdge - newPos.y() < viewHeight) {
   131         newPos.setY(bottomEdge - viewHeight);
   126         newPos.setY(bottomEdge - viewHeight);
   132     }
   127     }
   133     
   128     
   134     scrollContentsTo(newPos);
   129     scrollContentsTo(newPos);
   135 }
   130 }