src/hbwidgets/itemviews/hbtumbleview.cpp
changeset 30 80e4d18b72f5
parent 21 4633027730f5
equal deleted inserted replaced
28:b7da29130b0e 30:80e4d18b72f5
    25 
    25 
    26 #include "hblistview_p.h"
    26 #include "hblistview_p.h"
    27 #include "hblistitemcontainer_p.h"
    27 #include "hblistitemcontainer_p.h"
    28 #include "hblistitemcontainer_p_p.h"
    28 #include "hblistitemcontainer_p_p.h"
    29 #include "hbmodeliterator.h"
    29 #include "hbmodeliterator.h"
       
    30 #include "hbstyleprimitivedata.h"
    30 
    31 
    31 #include <hbtumbleview.h>
    32 #include <hbtumbleview.h>
    32 #include <hbtumbleviewitem.h>
    33 #include <hbtumbleviewitem.h>
    33 #include <hbevent.h>
    34 #include <hbevent.h>
    34 #include <hbstyleoption_p.h>
    35 #include <hbstyleoption_p.h>
       
    36 #include <hbstyleframeprimitivedata.h>
    35 
    37 
    36 #include <QGraphicsSceneMouseEvent>
    38 #include <QGraphicsSceneMouseEvent>
    37 #include <QStringListModel>
    39 #include <QStringListModel>
    38 #include <QItemSelectionModel>
    40 #include <QItemSelectionModel>
    39 #include <QTapGesture>
    41 #include <QTapGesture>
       
    42 
    40 
    43 
    41 #define HB_TUMBLE_ITEM_ANIMATION_TIME 500
    44 #define HB_TUMBLE_ITEM_ANIMATION_TIME 500
    42 #define HB_TUMBLE_PREFERRED_ITEMS 3
    45 #define HB_TUMBLE_PREFERRED_ITEMS 3
    43 
    46 
    44 //#define HBTUMBLE_DEBUG
    47 //#define HBTUMBLE_DEBUG
   111 
   114 
   112     QModelIndex mDelayedSelectIndex;
   115     QModelIndex mDelayedSelectIndex;
   113     QTimer mDelayedSelectTimer;
   116     QTimer mDelayedSelectTimer;
   114 
   117 
   115     //primitives
   118     //primitives
   116     QGraphicsItem   *mBackground;
   119     QGraphicsObject   *mBackground;
   117     QGraphicsItem   *mFrame;//overlay
   120     QGraphicsObject   *mFrame;//overlay
   118     QGraphicsItem   *mHighlight;
   121     QGraphicsObject   *mHighlight;
       
   122     QGraphicsObject   *mDivider;
   119     int             mSelected;
   123     int             mSelected;
   120     bool mNeedScrolling;
   124     bool mNeedScrolling;
   121     QGraphicsItem   *mDivider;
   125     
   122 };
   126 };
   123 
   127 
   124 
   128 
   125 HbTumbleViewItemContainer::HbTumbleViewItemContainer(QGraphicsItem* parent )
   129 HbTumbleViewItemContainer::HbTumbleViewItemContainer(QGraphicsItem* parent )
   126     :HbListItemContainer(*(new HbTumbleViewItemContainerPrivate),parent)
   130     :HbListItemContainer(*(new HbTumbleViewItemContainerPrivate),parent)
   392     ,mDelayedSelectIndex()
   396     ,mDelayedSelectIndex()
   393     ,mDelayedSelectTimer(0)
   397     ,mDelayedSelectTimer(0)
   394     ,mBackground(0)
   398     ,mBackground(0)
   395     ,mFrame(0)
   399     ,mFrame(0)
   396     ,mHighlight(0)
   400     ,mHighlight(0)
       
   401     ,mDivider(0)
   397     ,mSelected(-1)
   402     ,mSelected(-1)
   398     ,mNeedScrolling(true)
   403     ,mNeedScrolling(true) 
   399     ,mDivider(0)
       
   400 {
   404 {
   401 }
   405 }
   402 
   406 
   403 qreal HbTumbleViewPrivate::topBoundary()
   407 qreal HbTumbleViewPrivate::topBoundary()
   404 {
   408 {
   570 void HbTumbleViewPrivate::createPrimitives()
   574 void HbTumbleViewPrivate::createPrimitives()
   571 {
   575 {
   572     Q_Q(HbTumbleView);
   576     Q_Q(HbTumbleView);
   573 
   577 
   574     //this is the highlight which is placed at center
   578     //this is the highlight which is placed at center
       
   579     
   575     if(!mHighlight) {
   580     if(!mHighlight) {
   576         mHighlight = HbStylePrivate::createPrimitive(HbStylePrivate::P_TumbleView_highlight,q);
   581         mHighlight = q->style()->createPrimitive(HbStyle::PT_FrameItem,"highlight",q);
   577         HbStyle::setItemName(mHighlight,"highlight");
   582         }
   578     }
   583     if(!mDivider) {
   579     if(!mDivider){
   584         mDivider = q->style()->createPrimitive(HbStyle::PT_FrameItem,"separator",q);
   580         mDivider = HbStylePrivate::createPrimitive(HbStylePrivate::P_DateTimePicker_separator,q);
       
   581         HbStyle::setItemName(mDivider,"separator");
       
   582         mDivider->hide();
   585         mDivider->hide();
   583     }
   586         }
   584 
   587     if(!mFrame) {
       
   588         mFrame = q->style()->createPrimitive(HbStyle::PT_FrameItem,"frame",q);
       
   589         }
       
   590     if(!mBackground) {
       
   591         mBackground = q->style()->createPrimitive(HbStyle::PT_FrameItem,"background",q);
       
   592         }
   585 }
   593 }
   586 
   594 
   587 
   595 
   588 void HbTumbleViewPrivate::calculateItemHeight()
   596 void HbTumbleViewPrivate::calculateItemHeight()
   589 {
   597 {
   804             d->setPressedState(item);
   812             d->setPressedState(item);
   805         } 
   813         } 
   806     }
   814     }
   807 }
   815 }
   808 
   816 
       
   817 void HbTumbleView::initPrimitiveData(HbStylePrimitiveData *primitiveData, const QGraphicsObject *primitive)
       
   818 {
       
   819     HbWidget::initPrimitiveData(primitiveData, primitive);
       
   820     QString itemName = HbStyle::itemName(primitive);
       
   821         
       
   822     if(itemName == QLatin1String("separator")) {
       
   823         HbStyleFramePrimitiveData *frameItem  = hbstyleprimitivedata_cast<HbStyleFramePrimitiveData*>(primitiveData);
       
   824         frameItem->frameGraphicsName= QLatin1String("qtg_graf_tumbler_divider");
       
   825         frameItem->frameType = HbFrameDrawer::OnePiece;
       
   826         (const_cast<QGraphicsObject *> (primitive))->setZValue(2);
       
   827         }
       
   828         
       
   829     if(itemName == QLatin1String("highlight")) {
       
   830        HbStyleFramePrimitiveData *frameItem  = hbstyleprimitivedata_cast<HbStyleFramePrimitiveData*>(primitiveData);
       
   831        frameItem->frameGraphicsName= QLatin1String("qtg_fr_tumbler_highlight_pri");
       
   832        frameItem->frameType = HbFrameDrawer::ThreePiecesHorizontal;
       
   833        (const_cast<QGraphicsObject *> (primitive))->setZValue(-1);
       
   834        }
       
   835 
       
   836     if (itemName == QLatin1String("frame")) {
       
   837         HbStyleFramePrimitiveData *frameItem  = hbstyleprimitivedata_cast<HbStyleFramePrimitiveData*>(primitiveData);
       
   838         frameItem->frameGraphicsName= QLatin1String("qtg_fr_tumbler_overlay");
       
   839         frameItem->frameType = HbFrameDrawer::NinePieces;
       
   840         (const_cast<QGraphicsObject *> (primitive))->setZValue(-4);
       
   841         }
       
   842 
       
   843     if (itemName == QLatin1String("background")) {
       
   844         HbStyleFramePrimitiveData *frameItem  = hbstyleprimitivedata_cast<HbStyleFramePrimitiveData*>(primitiveData);
       
   845         frameItem->frameGraphicsName= QLatin1String("qtg_fr_tumbler_bg");
       
   846         frameItem->frameType = HbFrameDrawer::NinePieces;
       
   847         (const_cast<QGraphicsObject *> (primitive))->setZValue(-5);
       
   848         }
       
   849 }
       
   850 
   809 /*!
   851 /*!
   810     \reimp
   852     \reimp
   811 */
   853 */
   812 void HbTumbleView::updatePrimitives()
   854 void HbTumbleView::updatePrimitives()
   813 {                   
   855 {                   
   814     Q_D(HbTumbleView);
   856     Q_D(HbTumbleView);
   815 
   857     HbListView::updatePrimitives();
   816     HbStyleOption opt;
   858     if(d->mBackground){
   817     initStyleOption(&opt);
   859         HbStyleFramePrimitiveData data;
   818 
   860         initPrimitiveData(&data,d->mBackground);
   819     if(d->mBackground) {
   861         style()->updatePrimitive(d->mBackground,&data,this);
   820         HbStylePrivate::updatePrimitive(d->mBackground,HbStylePrivate::P_TumbleView_background,&opt);
   862        }
   821     }
   863 
   822     if(d->mFrame) {
   864     if(d->mFrame) {
   823         HbStylePrivate::updatePrimitive(d->mFrame,HbStylePrivate::P_TumbleView_frame,&opt);
   865         HbStyleFramePrimitiveData data;
   824     } 
   866         initPrimitiveData(&data,d->mFrame);
       
   867         style()->updatePrimitive(d->mFrame,&data,this);
       
   868        }
       
   869 
   825     if(d->mHighlight) {
   870     if(d->mHighlight) {
   826         HbStylePrivate::updatePrimitive(d->mHighlight,HbStylePrivate::P_TumbleView_highlight,&opt);
   871         HbStyleFramePrimitiveData data;
   827     }
   872         initPrimitiveData (&data,d->mHighlight);
   828     if(d->mDivider){
   873         style()->updatePrimitive(d->mHighlight,&data,this);
   829         HbStylePrivate::updatePrimitive(d->mDivider, HbStylePrivate::P_DateTimePicker_separator, &opt);
   874        }
   830     }
   875 
   831     HbListView::updatePrimitives();
   876     if (d->mDivider) {
       
   877         HbStyleFramePrimitiveData data;
       
   878         initPrimitiveData (&data,d->mDivider);
       
   879         style()->updatePrimitive(d->mDivider,&data,this);
       
   880         }
   832 
   881 
   833 }
   882 }
   834 
   883 
   835 /*!
   884 /*!
   836    \reimp
   885    \reimp