From d8ff18beec091de1db6cba5285ba087507e30fa0 Mon Sep 17 00:00:00 2001 From: GiWoong Kim Date: Mon, 16 Nov 2015 14:38:52 +0900 Subject: [PATCH] skin: empty pressed-image handling Empty image should be considered in HW key related logics. The "pressedImage" element can be empty from XML schema. This element is not a mandatory option for Emulator layout. Change-Id: Idf0e15d0d5cabdcc3b639d400044ca7a8a639c69 Signed-off-by: GiWoong Kim --- .../resource/skins/tv/tv-1920x1080/layout.xml | 1 - tizen/src/ui/skinkeyitem.cpp | 18 ++++++++++++++---- tizen/src/ui/skinkeyitem.h | 4 ++-- tizen/src/ui/skinview.cpp | 7 ++++++- tizen/src/ui/uiinformation.cpp | 5 +++++ 5 files changed, 27 insertions(+), 8 deletions(-) diff --git a/tizen/src/ui/resource/skins/tv/tv-1920x1080/layout.xml b/tizen/src/ui/resource/skins/tv/tv-1920x1080/layout.xml index 86587a114d..d6e748d7f2 100644 --- a/tizen/src/ui/resource/skins/tv/tv-1920x1080/layout.xml +++ b/tizen/src/ui/resource/skins/tv/tv-1920x1080/layout.xml @@ -8,7 +8,6 @@ 0 background.png - background.png diff --git a/tizen/src/ui/skinkeyitem.cpp b/tizen/src/ui/skinkeyitem.cpp index 8d1bded5cf..6ed7a97ede 100644 --- a/tizen/src/ui/skinkeyitem.cpp +++ b/tizen/src/ui/skinkeyitem.cpp @@ -38,17 +38,21 @@ extern "C" { } SkinKeyItem::SkinKeyItem(QGraphicsItem *parent, HardwareKey *hwKey, - QImage pressedImg, bool reMasking, HoverType &hover) : + QImage *pressedImg, bool reMasking, HoverType &hover) : QGraphicsRectItem(hwKey->getRect(), parent) { this->viewer = (SkinView *)scene()->views().at(0); this->bezelParent = (SkinBezelItem *)parent; this->hwKey = hwKey; - this->pressedImg = pressedImg; + this->pressedKeyImg = NULL; this->reMasking = reMasking; this->hoverColor = hover.getColor(); - this->isPressed = false; + + if (pressedImg != NULL) { + pressedKeyImg = new QImage(*pressedImg); + } + hoverPen.setColor(Qt::transparent); longPressTimer = new QTimer(); @@ -170,12 +174,18 @@ void SkinKeyItem::paint(QPainter *painter, } if (isPressed == true) { - painter->drawImage(rect().x(), rect().y(), pressedImg); + if (pressedKeyImg != NULL) { + painter->drawImage(rect().x(), rect().y(), *pressedKeyImg); + } } } SkinKeyItem::~SkinKeyItem() { + if (pressedKeyImg != NULL) { + delete pressedKeyImg; + } + if (longPressTimer) { delete longPressTimer; longPressTimer = NULL; diff --git a/tizen/src/ui/skinkeyitem.h b/tizen/src/ui/skinkeyitem.h index 374677afde..93aee956b2 100644 --- a/tizen/src/ui/skinkeyitem.h +++ b/tizen/src/ui/skinkeyitem.h @@ -46,7 +46,7 @@ class SkinKeyItem : public QObject, public QGraphicsRectItem public: SkinKeyItem(QGraphicsItem *parent, HardwareKey *hwKey, - QImage pressedImg, bool reMasking, HoverType &hover); + QImage *pressedImg, bool reMasking, HoverType &hover); ~SkinKeyItem(); protected: @@ -66,7 +66,7 @@ private: SkinBezelItem *bezelParent; HardwareKey *hwKey; - QImage pressedImg; + QImage *pressedKeyImg; bool reMasking; bool isPressed; QColor hoverColor; diff --git a/tizen/src/ui/skinview.cpp b/tizen/src/ui/skinview.cpp index 4208156653..33d42c426d 100644 --- a/tizen/src/ui/skinview.cpp +++ b/tizen/src/ui/skinview.cpp @@ -57,6 +57,11 @@ SkinKeyItem *SkinView::createKeyItem(QGraphicsItem *parent, { bool reMasking = false; + if (form->skinImg[LayoutForm::pressed].size() == QSize(0, 0)) { + return new SkinKeyItem(parent, hwKey, + NULL, reMasking, form->getHoverType()); + } + QImage normalKeyImg = form->skinImg[LayoutForm::normal].copy(hwKey->getRect()); QImage pressedKeyImg = form->skinImg[LayoutForm::pressed].copy(hwKey->getRect()); QImage normalMask = normalKeyImg.createAlphaMask(); @@ -66,7 +71,7 @@ SkinKeyItem *SkinView::createKeyItem(QGraphicsItem *parent, } return new SkinKeyItem(parent, hwKey, - pressedKeyImg, reMasking, form->getHoverType()); + &pressedKeyImg, reMasking, form->getHoverType()); } SkinView::~SkinView() diff --git a/tizen/src/ui/uiinformation.cpp b/tizen/src/ui/uiinformation.cpp index 1fa31d01e8..ee5a5c2738 100644 --- a/tizen/src/ui/uiinformation.cpp +++ b/tizen/src/ui/uiinformation.cpp @@ -254,6 +254,11 @@ QRegion UiInformation::getConKeyRegion( return QRegion(); } + if (getConForm()->skinImg[type].size() == QSize(0, 0)) { + qWarning("invalid controller image"); + return QRegion(); + } + QRegion baseRegion; QRegion keyRegion; -- 2.34.1