homescreenapp/widgetplugins/hsclockwidgetplugin/src/hsdigitalclockwidget.cpp
changeset 69 87476091b3f5
parent 62 341166945d65
equal deleted inserted replaced
67:474929a40a0f 69:87476091b3f5
    20 
    20 
    21 #include <HbStyleLoader>
    21 #include <HbStyleLoader>
    22 #include <HbIconItem>
    22 #include <HbIconItem>
    23 #include <HbFrameItem>
    23 #include <HbFrameItem>
    24 #include <HbFrameDrawer>
    24 #include <HbFrameDrawer>
    25 #include <HbTouchArea>
    25 #include <HbTapGesture>
    26 #include <HbInstantFeedback>
    26 #include <HbInstantFeedback>
    27 
    27 
    28 #include "hsdigitalclockwidget.h"
    28 #include "hsdigitalclockwidget.h"
       
    29 #include "hsconfiguration.h"
    29 
    30 
    30 /*!
    31 /*!
    31     \class HsDigitalClockWidget
    32     \class HsDigitalClockWidget
    32     \ingroup group_hsclockwidgetplugin
    33     \ingroup group_hsclockwidgetplugin
    33     \brief Homescreen themable digital clock widget.
    34     \brief Homescreen themable digital clock widget.
    39 HsDigitalClockWidget::HsDigitalClockWidget(bool useAmPm, QGraphicsItem *parent)
    40 HsDigitalClockWidget::HsDigitalClockWidget(bool useAmPm, QGraphicsItem *parent)
    40   : HbWidget(parent),
    41   : HbWidget(parent),
    41     mBackground(0),
    42     mBackground(0),
    42     mDigit1(0), mDigit2(0), mDigit3(0),
    43     mDigit1(0), mDigit2(0), mDigit3(0),
    43     mDigit4(0), mDigit5(0), mDigit6(0),
    44     mDigit4(0), mDigit5(0), mDigit6(0),
    44     mAmPm(0), mTouchArea(0), mUseAmPm(useAmPm)
    45     mAmPm(0), mUseAmPm(useAmPm)
    45 {
    46 {
    46     HbStyleLoader::registerFilePath(":/hsdigitalclockwidget.widgetml");
    47     HbStyleLoader::registerFilePath(":/hsdigitalclockwidget.widgetml");
    47     HbStyleLoader::registerFilePath(":/hsdigitalclockwidget.css");
    48     HbStyleLoader::registerFilePath(":/hsdigitalclockwidget.css");
    48 /*
    49 /*
    49     mDigitMap.insert(QChar('0'), QString("clock_widget_zero"));
    50     mDigitMap.insert(QChar('0'), QString("clock_widget_zero"));
    67     mDigitMap.insert(QChar('7'), QString(":/clock_widget_seven.svg"));
    68     mDigitMap.insert(QChar('7'), QString(":/clock_widget_seven.svg"));
    68     mDigitMap.insert(QChar('8'), QString(":/clock_widget_eight.svg"));
    69     mDigitMap.insert(QChar('8'), QString(":/clock_widget_eight.svg"));
    69     mDigitMap.insert(QChar('9'), QString(":/clock_widget_nine.svg"));
    70     mDigitMap.insert(QChar('9'), QString(":/clock_widget_nine.svg"));
    70 
    71 
    71     createPrimitives();
    72     createPrimitives();
       
    73     grabGesture(Qt::TapGesture);
    72 }
    74 }
    73 
    75 
    74 /*!
    76 /*!
    75     Destructor.
    77     Destructor.
    76 */
    78 */
    77 HsDigitalClockWidget::~HsDigitalClockWidget()
    79 HsDigitalClockWidget::~HsDigitalClockWidget()
    78 {
    80 {
    79     HbStyleLoader::unregisterFilePath(":/hsdigitalclockwidget.widgetml");
    81     HbStyleLoader::unregisterFilePath(":/hsdigitalclockwidget.widgetml");
    80     HbStyleLoader::unregisterFilePath(":/hsdigitalclockwidget.css");
    82     HbStyleLoader::unregisterFilePath(":/hsdigitalclockwidget.css");
    81     mTouchArea->removeEventFilter(this);
    83 }
    82 }
    84 
    83 
    85 #ifdef COVERAGE_MEASUREMENT
    84 /*!
    86 #pragma CTC SKIP
    85     Filters touch area events.
    87 #endif //COVERAGE_MEASUREMENT
    86 */
    88 void HsDigitalClockWidget::gestureEvent(QGestureEvent *event)
    87 bool HsDigitalClockWidget::eventFilter(QObject *watched, QEvent *event)
    89 {
    88 {
    90     HbTapGesture *gesture = qobject_cast<HbTapGesture *>(event->gesture(Qt::TapGesture));
    89     Q_UNUSED(watched)
    91     if (gesture) {
    90 
    92         if (gesture->state() == Qt::GestureFinished) {
    91     switch (event->type()) {
    93             if (gesture->tapStyleHint() == HbTapGesture::Tap) {
    92         case QEvent::GraphicsSceneMousePress:
    94                     HbInstantFeedback::play(HSCONFIGURATION_GET(clockWidgetTapFeedbackEffect));
    93             return true;
    95                     emit clockTapped();                
    94         case QEvent::GraphicsSceneMouseRelease:
    96             }
    95             handleMouseReleaseEvent(static_cast<QGraphicsSceneMouseEvent *>(event));
    97         }
    96             return true;
    98     }
    97         default:
    99 }
    98             break;
   100 #ifdef COVERAGE_MEASUREMENT
    99     }
   101 #pragma CTC ENDSKIP
   100 
   102 #endif //COVERAGE_MEASUREMENT
   101     return false;
       
   102 }
       
   103 
   103 
   104 /*!
   104 /*!
   105     Return shape
   105     Return shape
   106 */
   106 */
   107 QPainterPath HsDigitalClockWidget::shape() const
   107 QPainterPath HsDigitalClockWidget::shape() const
   200 
   200 
   201     if (mUseAmPm) {
   201     if (mUseAmPm) {
   202         mAmPm = new HbIconItem(QLatin1String(":/clock_widget_am.svg"), this);
   202         mAmPm = new HbIconItem(QLatin1String(":/clock_widget_am.svg"), this);
   203         HbStyle::setItemName(mAmPm, QLatin1String("ampm"));
   203         HbStyle::setItemName(mAmPm, QLatin1String("ampm"));
   204     }
   204     }
   205 
       
   206     mTouchArea = new HbTouchArea(this);
       
   207     mTouchArea->installEventFilter(this);
       
   208     HbStyle::setItemName(mTouchArea, QLatin1String("toucharea"));
       
   209 }
   205 }
   210 
   206 
   211 /*!
   207 /*!
   212     @copydoc HbWidget::updatePrimitives()
   208     @copydoc HbWidget::updatePrimitives()
   213  */
   209  */
   246             //mAmPm->setIconName("clock_widget_pm");
   242             //mAmPm->setIconName("clock_widget_pm");
   247             mAmPm->setIconName(":/clock_widget_pm.svg");
   243             mAmPm->setIconName(":/clock_widget_pm.svg");
   248         }
   244         }
   249     }
   245     }
   250 }
   246 }
   251 
       
   252 /*!
       
   253     \internal
       
   254 */
       
   255 void HsDigitalClockWidget::handleMouseReleaseEvent(QGraphicsSceneMouseEvent *event)
       
   256 {
       
   257     if (!contains(event->pos())) {
       
   258         return;
       
   259     }
       
   260 
       
   261     HbInstantFeedback::play(HbFeedback::BasicItem);
       
   262 
       
   263     emit clockTapped();
       
   264 }