From: GiWoong Kim Date: Wed, 2 Mar 2016 08:18:52 +0000 (+0900) Subject: hwkey: add XML schema for color-filled hover X-Git-Tag: Tizen_Studio_1.3_Release_p2.3.2~58 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9c97bdb58eb8c7eea3e4e96e70ba566f7d729df2;p=sdk%2Femulator%2Fqemu.git hwkey: add XML schema for color-filled hover
...
Change-Id: I1de124cdb6f82c84294364872136d01e0a6c9b3f Signed-off-by: GiWoong Kim --- diff --git a/tizen/src/ui/layout/hovertype.cpp b/tizen/src/ui/layout/hovertype.cpp index a20be556f3..d0d3411068 100644 --- a/tizen/src/ui/layout/hovertype.cpp +++ b/tizen/src/ui/layout/hovertype.cpp @@ -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 */ diff --git a/tizen/src/ui/layout/hovertype.h b/tizen/src/ui/layout/hovertype.h index 2714126c9a..aad4e06ba7 100644 --- a/tizen/src/ui/layout/hovertype.h +++ b/tizen/src/ui/layout/hovertype.h @@ -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 diff --git a/tizen/src/ui/skinkeyitem.cpp b/tizen/src/ui/skinkeyitem.cpp index 8710e6849c..1c89e491a3 100644 --- a/tizen/src/ui/skinkeyitem.cpp +++ b/tizen/src/ui/skinkeyitem.cpp @@ -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); } diff --git a/tizen/src/ui/skinkeyitem.h b/tizen/src/ui/skinkeyitem.h index 93aee956b2..29859e503e 100644 --- a/tizen/src/ui/skinkeyitem.h +++ b/tizen/src/ui/skinkeyitem.h @@ -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 diff --git a/tizen/src/ui/xmllayoutkeyword.h b/tizen/src/ui/xmllayoutkeyword.h index f8d2e10713..1abb0485a4 100644 --- a/tizen/src/ui/xmllayoutkeyword.h +++ b/tizen/src/ui/xmllayoutkeyword.h @@ -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" diff --git a/tizen/src/ui/xmllayoutparser.cpp b/tizen/src/ui/xmllayoutparser.cpp index 224b9fba1a..4daed9b70a 100644 --- a/tizen/src/ui/xmllayoutparser.cpp +++ b/tizen/src/ui/xmllayoutparser.cpp @@ -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)