src/hbwidgets/editors/hbselectioncontrol_p.cpp
branchGCC_SURGE
changeset 15 f378acbc9cfb
parent 7 923ff622b8b9
child 21 4633027730f5
child 34 ed14f46c0e55
equal deleted inserted replaced
9:730c025d4b77 15:f378acbc9cfb
    89     void panGestureStarted (HbPanGesture *gesture);
    89     void panGestureStarted (HbPanGesture *gesture);
    90     void panGestureUpdated (HbPanGesture *gesture);
    90     void panGestureUpdated (HbPanGesture *gesture);
    91     void panGestureFinished (HbPanGesture *gesture);
    91     void panGestureFinished (HbPanGesture *gesture);
    92     void show();
    92     void show();
    93     void _q_aboutToChangeView();
    93     void _q_aboutToChangeView();
       
    94     void detachEditor(bool updateAtthachedEditorState);
    94 
    95 
    95 public:
    96 public:
    96 
    97 
    97     HbAbstractEdit *mEdit;
    98     HbAbstractEdit *mEdit;
    98     QGraphicsItem *mTopLevelAncestor;
    99     QGraphicsItem *mTopLevelAncestor;
   124 {
   125 {
   125     Q_Q(HbSelectionControl);
   126     Q_Q(HbSelectionControl);
   126     createPrimitives();
   127     createPrimitives();
   127 
   128 
   128     q->setVisible(false);
   129     q->setVisible(false);
   129     q->setFlag(QGraphicsItem::ItemIsFocusable,false);
   130     QGraphicsItem::GraphicsItemFlags itemFlags = q->flags();
   130     q->setFlag(QGraphicsItem::ItemIsPanel,true);
   131 #if QT_VERSION >= 0x040600
       
   132     itemFlags |=  QGraphicsItem::ItemSendsGeometryChanges;
       
   133 #endif
       
   134     itemFlags &= ~QGraphicsItem::ItemIsFocusable;
       
   135     itemFlags |=  QGraphicsItem::ItemIsPanel;
       
   136     q->setFlags(itemFlags);
   131     q->setFocusPolicy(Qt::NoFocus);
   137     q->setFocusPolicy(Qt::NoFocus);
   132     q->setActive(false);
   138     q->setActive(false);
   133 
   139 
   134     // Control will handle all events going to different handlers.
   140     // Control will handle all events going to different handlers.
   135     q->setHandlesChildEvents(true);
   141     q->setHandlesChildEvents(true);
   464     if (mEdit && q->isVisible()) {
   470     if (mEdit && q->isVisible()) {
   465         mEdit->deselect();
   471         mEdit->deselect();
   466     }
   472     }
   467 }
   473 }
   468 
   474 
       
   475 void HbSelectionControlPrivate::detachEditor(bool updateAtthachedEditorState)
       
   476 {
       
   477     Q_Q(HbSelectionControl);
       
   478     if (mEdit) {
       
   479         q->hideHandles();
       
   480         reparentHandles(q);
       
   481         if (updateAtthachedEditorState) {
       
   482             mEdit->disconnect(q);
       
   483             mEdit->d_func()->selectionControl = 0;
       
   484             mEdit->deselect();
       
   485         }
       
   486         mEdit = 0;
       
   487         mTopLevelAncestor = 0;
       
   488     }
       
   489 }
   469 
   490 
   470 HbSelectionControl::HbSelectionControl() : HbWidget(*new HbSelectionControlPrivate(),0)
   491 HbSelectionControl::HbSelectionControl() : HbWidget(*new HbSelectionControlPrivate(),0)
   471 
   492 
   472 {
   493 {
   473     Q_D(HbSelectionControl);
   494     Q_D(HbSelectionControl);
   508 }
   529 }
   509 
   530 
   510 void HbSelectionControl::detachEditor()
   531 void HbSelectionControl::detachEditor()
   511 {
   532 {
   512     Q_D(HbSelectionControl);
   533     Q_D(HbSelectionControl);
   513     if (d->mEdit) {
   534     d->detachEditor(true);
   514         hideHandles();
   535 }
   515         d->reparentHandles(this);
   536 
   516         d->mEdit->disconnect(this);
   537 void HbSelectionControl::detachEditorFromDestructor()
   517         d->mEdit->d_func()->selectionControl = 0;        
   538 {
   518         d->mEdit->deselect();
   539     Q_D(HbSelectionControl);
   519         d->mEdit = 0;
   540     d->detachEditor(false);
   520         d->mTopLevelAncestor = 0;
   541 }
   521     }
       
   522 }
       
   523 
       
   524 
   542 
   525 void HbSelectionControl::hideHandles()
   543 void HbSelectionControl::hideHandles()
   526 {
   544 {
   527     Q_D(HbSelectionControl);
   545     Q_D(HbSelectionControl);
   528     if (isVisible() && d->mEdit) {
   546     if (isVisible() && d->mEdit) {
   595     if(HbTapGesture *tap = qobject_cast<HbTapGesture*>(event->gesture(Qt::TapGesture))) {
   613     if(HbTapGesture *tap = qobject_cast<HbTapGesture*>(event->gesture(Qt::TapGesture))) {
   596         QPointF pos = event->mapToGraphicsScene(tap->position());
   614         QPointF pos = event->mapToGraphicsScene(tap->position());
   597         switch(tap->state()) {
   615         switch(tap->state()) {
   598         case Qt::GestureStarted:
   616         case Qt::GestureStarted:
   599             if (d->mEdit) {
   617             if (d->mEdit) {
   600                 HbWidgetFeedback::triggered(d->mEdit, Hb::InstantPressed);
   618                 HbWidgetFeedback::triggered(this, Hb::InstantPressed);
   601             }
   619             }
   602             break;
   620             break;
   603         case Qt::GestureUpdated:
   621         case Qt::GestureUpdated:
   604             break;
   622             break;
   605       case Qt::GestureFinished:
   623       case Qt::GestureFinished:
   606             if (d->mEdit) {
   624             if (d->mEdit) {
   607                 d->tapGestureFinished(pos);
   625                 d->tapGestureFinished(pos);
   608                 HbWidgetFeedback::triggered(d->mEdit, Hb::InstantReleased);
   626                 HbWidgetFeedback::triggered(this, Hb::InstantReleased);
   609             }
   627             }
   610             break;
   628             break;
   611       case Qt::GestureCanceled:
   629       case Qt::GestureCanceled:
   612             break;
   630             break;
   613       default:
   631       default:
   628             }
   646             }
   629             break;
   647             break;
   630         case Qt::GestureFinished:
   648         case Qt::GestureFinished:
   631             if (d->mEdit) {
   649             if (d->mEdit) {
   632                 d->panGestureFinished(pan);
   650                 d->panGestureFinished(pan);
   633                 HbWidgetFeedback::triggered(d->mEdit, Hb::InstantReleased);
   651                 HbWidgetFeedback::triggered(this, Hb::InstantReleased);
   634             }
   652             }
   635             break;
   653             break;
   636       case Qt::GestureCanceled:
   654       case Qt::GestureCanceled:
   637             break;
   655             break;
   638       default:
   656       default: