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) |
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 |