homescreen/widgetplugins/hsbookmarkwidgetplugin/src/hsbookmarkwidget.cpp
changeset 16 3c88a81ff781
parent 12 afcd8e6d025b
equal deleted inserted replaced
14:6aeb7a756187 16:3c88a81ff781
    20 #include <HbStyleLoader>
    20 #include <HbStyleLoader>
    21 #include <HbFrameItem>
    21 #include <HbFrameItem>
    22 #include <HbFrameDrawer>
    22 #include <HbFrameDrawer>
    23 #include <HbIconItem>
    23 #include <HbIconItem>
    24 #include <HbTextItem>
    24 #include <HbTextItem>
    25 #include <HbTouchArea>
    25 #include <HbTapGesture>
    26 #include <HbInstantFeedback>
    26 #include <HbInstantFeedback>
    27 
    27 
    28 #include <QDir>
    28 #include <QDir>
    29 #include <qdesktopservices.h>
    29 #include <qdesktopservices.h>
    30 #include <qurl.h>
    30 #include <qurl.h>
    43 /*!
    43 /*!
    44     Constructs a widget which is a child of \a parent, with widget flags set to \a flags.
    44     Constructs a widget which is a child of \a parent, with widget flags set to \a flags.
    45 */
    45 */
    46 HsBookmarkWidget::HsBookmarkWidget(QGraphicsItem* parent, Qt::WindowFlags flags)
    46 HsBookmarkWidget::HsBookmarkWidget(QGraphicsItem* parent, Qt::WindowFlags flags)
    47     : HbWidget(parent, flags),
    47     : HbWidget(parent, flags),
    48     	mBackground(0), mIcon(0), mText(0), mTouchArea(0)
    48     	mBackground(0), mIcon(0), mText(0)
    49 {
    49 {
       
    50     grabGesture(Qt::TapGesture);
       
    51 
    50     HbStyleLoader::registerFilePath(":/hsbookmarkwidget.widgetml");
    52     HbStyleLoader::registerFilePath(":/hsbookmarkwidget.widgetml");
    51     HbStyleLoader::registerFilePath(":/hsbookmarkwidget.css");
    53     HbStyleLoader::registerFilePath(":/hsbookmarkwidget.css");
    52     	
    54     	
    53     createPrimitives();
    55     createPrimitives();
    54 }
    56 }
   143 { 
   145 { 
   144     return mFaviconPath; 
   146     return mFaviconPath; 
   145 }
   147 }
   146 
   148 
   147 /*!
   149 /*!
   148     Filters touch area events.
   150     Process gesture events.
   149 */
   151 */
   150 bool HsBookmarkWidget::eventFilter(QObject *watched, QEvent *event)
   152 void HsBookmarkWidget::gestureEvent(QGestureEvent *event)
   151 {
   153 {
   152     Q_UNUSED(watched)
   154     HbTapGesture *gesture = qobject_cast<HbTapGesture *>(event->gesture(Qt::TapGesture));
   153 
   155     if (gesture) {
   154     switch (event->type()) {
   156         switch (gesture->state()) {
   155         case QEvent::GraphicsSceneMousePress:
   157             case Qt::GestureStarted:
   156             handleMousePressEvent(static_cast<QGraphicsSceneMouseEvent *>(event));
   158                 setBackgroundToPressed();
   157             return true;
   159                 break;            
   158         case QEvent::GraphicsSceneMouseMove:
   160             case Qt::GestureCanceled:
   159             handleMouseMoveEvent(static_cast<QGraphicsSceneMouseEvent *>(event));
   161                 setBackgroundToNormal();
   160             return true;
   162                 break;
   161         case QEvent::GraphicsSceneMouseRelease:
   163             case Qt::GestureFinished:
   162             handleMouseReleaseEvent(static_cast<QGraphicsSceneMouseEvent *>(event));
   164                 setBackgroundToNormal();
   163             return true;
   165                 if (gesture->tapStyleHint() == HbTapGesture::Tap) {
   164         case QEvent::UngrabMouse:
   166                     launch();
   165             setBackgroundToNormal();
   167                 }
   166             return true;
   168                 break;
   167         default:
   169             default:
   168             break;
   170                 break;
   169     }
   171         }
   170 
   172     }
   171     return false;
       
   172 }
   173 }
   173 
   174 
   174 void HsBookmarkWidget::onInitialize()
   175 void HsBookmarkWidget::onInitialize()
   175 {
   176 {
   176     if (mFaviconFileName.isNull())
   177     if (mFaviconFileName.isNull())
   212 
   213 
   213 void HsBookmarkWidget::onHide()
   214 void HsBookmarkWidget::onHide()
   214 {
   215 {
   215 }
   216 }
   216 
   217 
   217 /*!
   218 
   218     \internal
   219 
   219 */
   220 /*!
   220 void HsBookmarkWidget::handleMousePressEvent(QGraphicsSceneMouseEvent *event)
   221     \internal
   221 {
   222 */
   222     Q_UNUSED(event)
   223 void HsBookmarkWidget::launch()
   223     setBackgroundToPressed();
   224 {
   224 }
       
   225 
       
   226 /*!
       
   227     \internal
       
   228 */
       
   229 void HsBookmarkWidget::handleMouseMoveEvent(QGraphicsSceneMouseEvent *event)
       
   230 {
       
   231     if (contains(event->pos())) {
       
   232         setBackgroundToPressed();
       
   233     } else {
       
   234         setBackgroundToNormal();
       
   235     }
       
   236 }
       
   237 
       
   238 /*!
       
   239     \internal
       
   240 */
       
   241 void HsBookmarkWidget::handleMouseReleaseEvent(QGraphicsSceneMouseEvent *event)
       
   242 {
       
   243     setBackgroundToNormal();
       
   244 
       
   245     if (!contains(event->pos())) {
       
   246         return;
       
   247     }
       
   248 
       
   249     //HbInstantFeedback::play(HSCONFIGURATION_GET(bookmarkWidgetTapFeedbackEffect));
   225     //HbInstantFeedback::play(HSCONFIGURATION_GET(bookmarkWidgetTapFeedbackEffect));
   250     
   226     
   251     QUrl url = QUrl(mBookmarkUrl);
   227     QUrl url = QUrl(mBookmarkUrl);
   252     qDebug() << "hsBookmarkWidget - opening url - " << url << ", " << stat;
   228     qDebug() << "hsBookmarkWidget - opening url - " << url << ", " << stat;
   253     bool stat = QDesktopServices::openUrl(url);
   229     bool stat = QDesktopServices::openUrl(url);
   276     // Text
   252     // Text
   277     if (!mText) {
   253     if (!mText) {
   278         mText = new HbTextItem(this);
   254         mText = new HbTextItem(this);
   279         HbStyle::setItemName(mText, QLatin1String("text"));
   255         HbStyle::setItemName(mText, QLatin1String("text"));
   280     }
   256     }
   281                
       
   282     // Touch AreaOK
       
   283     if (!mTouchArea) {
       
   284         mTouchArea = new HbTouchArea(this);
       
   285         mTouchArea->installEventFilter(this);
       
   286         HbStyle::setItemName(mTouchArea, QLatin1String("toucharea"));
       
   287     }
       
   288 }
   257 }
   289 
   258 
   290 /*!
   259 /*!
   291     \internal
   260     \internal
   292 */
   261 */