hwkey: add XML schema for color-filled hover
authorGiWoong Kim <giwoong.kim@samsung.com>
Wed, 2 Mar 2016 08:18:52 +0000 (17:18 +0900)
committerSeokYeon Hwang <syeon.hwang@samsung.com>
Tue, 8 Mar 2016 06:06:02 +0000 (15:06 +0900)
<form>
 ...
    <hover fill="true">
        <color R="255" G="255" B="255"/>
    </hover>
</form>

Change-Id: I1de124cdb6f82c84294364872136d01e0a6c9b3f
Signed-off-by: GiWoong Kim <giwoong.kim@samsung.com>
tizen/src/ui/layout/hovertype.cpp
tizen/src/ui/layout/hovertype.h
tizen/src/ui/skinkeyitem.cpp
tizen/src/ui/skinkeyitem.h
tizen/src/ui/xmllayoutkeyword.h
tizen/src/ui/xmllayoutparser.cpp

index a20be556f3bbebe196ede31a72fe75cf99fb4159..d0d34110682bbba6b4d105f31e049f75297d46f3 100644 (file)
@@ -41,11 +41,22 @@ HoverType::HoverType(const QColor &color)
     this->fill = false;
 }
 
+HoverType::HoverType(const QColor &color, bool fill)
+{
+    this->color = color;
+    this->fill = fill;
+}
+
 QColor HoverType::getColor()
 {
     return color;
 }
 
+bool HoverType::getFill()
+{
+    return fill;
+}
+
 HoverType::~HoverType()
 {
     /* do nothing */
index 2714126c9ae69192bb24ccedfdceb78a99adda19..aad4e06ba79901152d2c24238abb8720b5301eed 100644 (file)
@@ -37,13 +37,15 @@ class HoverType
 public:
     HoverType();
     HoverType(const QColor &color);
+    HoverType(const QColor &color, bool fill);
     ~HoverType();
 
     QColor getColor();
+    bool getFill();
 
 private:
     QColor color;
-    bool fill; //TODO:
+    bool fill;
 };
 
 #endif // HOVERTYPE_H
index 8710e6849cef775e37408b82d4c8b79eb8aaab3f..1c89e491a3003d917e9aec2a3aea578c77139386 100644 (file)
@@ -48,20 +48,25 @@ SkinKeyItem::SkinKeyItem(QGraphicsItem *parent, HardwareKey *hwKey,
     this->hwKey = hwKey;
     this->pressedKeyImg = NULL;
     this->reMasking = reMasking;
-    this->hoverColor = hover.getColor();
     this->isPressed = false;
+    this->isHovered = false;
 
     if (pressedImg != NULL) {
         pressedKeyImg = new QImage(*pressedImg);
     }
 
-    hoverPen.setColor(Qt::transparent);
-
     longPressTimer = new QTimer();
     longPressTimer->setInterval(LONG_PRESS_TIME);
     longPressTimer->setSingleShot(true);
     connect(longPressTimer, SIGNAL(timeout()), this, SLOT(longPressHook()));
 
+    hoverOutline.setColor(hover.getColor());
+    if (hover.getFill() == true) {
+        QColor fill = hoverOutline.color();
+        fill.setAlpha(128);
+        hoverFill = QBrush(fill);
+    }
+
     setToolTip(hwKey->getTooltip());
 
     setAcceptHoverEvents(true);
@@ -72,7 +77,7 @@ void SkinKeyItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
 {
     bezelParent->setHWKeyHandling(isPressed = true);
 
-    hoverPen.setColor(Qt::transparent);
+    isHovered = false;
     update();
 
     if (reMasking == true && viewer != NULL) {
@@ -94,7 +99,7 @@ void SkinKeyItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
         } else { /* dual keycode key */
             qDebug() << "dual key pressed";
 
-            /* do nothig */
+            /* do nothing */
             return;
         }
     }
@@ -169,7 +174,7 @@ void SkinKeyItem::longPressHook()
 /* override */
 void SkinKeyItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
 {
-    hoverPen.setColor(hoverColor);
+    isHovered = true;
 
     /* default implementation calls update() */
     QGraphicsRectItem::hoverEnterEvent(event);
@@ -178,7 +183,7 @@ void SkinKeyItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
 /* override */
 void SkinKeyItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
 {
-    hoverPen.setColor(Qt::transparent);
+    isHovered = false;
 
     /* default implementation calls update() */
     QGraphicsRectItem::hoverLeaveEvent(event);
@@ -191,13 +196,14 @@ void SkinKeyItem::paint(QPainter *painter,
     Q_UNUSED(option)
     Q_UNUSED(widget)
 
-    if (hoverPen.color() != Qt::transparent) {
-        painter->setPen(hoverPen);
+    if (isHovered == true) {
+        /* draw hover rectangle */
+        painter->setPen(hoverOutline);
+        painter->setBrush(hoverFill);
+
         painter->drawRect(rect().x(), rect().y(),
             rect().width() - 1, rect().height() - 1);
-    }
-
-    if (isPressed == true) {
+    } else if (isPressed == true) {
         if (pressedKeyImg != NULL) {
             painter->drawImage(rect().x(), rect().y(), *pressedKeyImg);
         }
index 93aee956b247e3805309ae0d1220faf7a8299954..29859e503eacb336ff48a48581fdd9074909c7b1 100644 (file)
@@ -69,10 +69,10 @@ private:
     QImage *pressedKeyImg;
     bool reMasking;
     bool isPressed;
-    QColor hoverColor;
-    QPen hoverPen;
-    QBrush brush;
     QTimer *longPressTimer;
+    bool isHovered;
+    QPen hoverOutline;
+    QBrush hoverFill;
 };
 
 #endif // SKINKEYITEM_H
index f8d2e1071353cfe2969c48e5d1db92b95fb374f3..1abb0485a4fe33d65c286757def6b267932d75de 100644 (file)
@@ -41,6 +41,7 @@
 #define REGION_WIDTH_ATTR_KEYWORD "width"
 #define REGION_HEIGHT_ATTR_KEYWORD "height"
 #define KEYCODE_LONGPRESS_ATTR_KEYWORD "longPress"
+#define HOVER_FILL_ATTR_KEYWORD "fill"
 
 #define EMULATOR_UI_KEYWORD "EmulatorUI"
 #define CONTROLLER_UI_KEYWORD "ControllerUI"
index 224b9fba1a813491bc96eceb0458ffaf151cef55..4daed9b70ae3b75e5470cbbc43c0cdab219a0d5d 100644 (file)
@@ -107,9 +107,13 @@ QColor XmlLayoutParser::parseColor(QXmlStreamReader &xml, const int depth)
 HoverType XmlLayoutParser::parseHover(QXmlStreamReader &xml, const int depth)
 {
     QColor color(255, 255, 255);
+    bool fill = false;
 
     QDEBUG_INDENT(depth) << HOVER_KEYWORD << " {";
 
+    fill = xml.attributes().value(HOVER_FILL_ATTR_KEYWORD).compare("true") == 0;
+    QDEBUG_INDENT(depth + 1) << HOVER_FILL_ATTR_KEYWORD << ": " << fill;
+
     QXmlStreamReader::TokenType token = xml.readNext();
 
     while (xml.atEnd() == false && (xml.name() == HOVER_KEYWORD &&
@@ -130,7 +134,7 @@ HoverType XmlLayoutParser::parseHover(QXmlStreamReader &xml, const int depth)
 
     QDEBUG_INDENT(depth) << "}";
 
-    return HoverType(color);
+    return HoverType(color, fill);
 }
 
 QRect XmlLayoutParser::parseRegion(QXmlStreamReader &xml, const int depth)