skin: empty pressed-image handling
authorGiWoong Kim <giwoong.kim@samsung.com>
Mon, 16 Nov 2015 05:38:52 +0000 (14:38 +0900)
committerGiWoong Kim <giwoong.kim@samsung.com>
Mon, 16 Nov 2015 07:12:24 +0000 (16:12 +0900)
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 <giwoong.kim@samsung.com>
tizen/src/ui/resource/skins/tv/tv-1920x1080/layout.xml
tizen/src/ui/skinkeyitem.cpp
tizen/src/ui/skinkeyitem.h
tizen/src/ui/skinview.cpp
tizen/src/ui/uiinformation.cpp

index 86587a114d4a3fa7924d4c3b6555c959a7d85764..d6e748d7f2eb0261c60df18cf754e2c47942e798 100644 (file)
@@ -8,7 +8,6 @@
                 <angle>0</angle>
             </display>
             <normalImage>background.png</normalImage>
-            <pressedImage>background.png</pressedImage>
         </form>
     </formList>
 
index 8d1bded5cfc313cf5df341463c7c1203dfbcff08..6ed7a97ede890e580e9f8aa08e70b0498cca3ba2 100644 (file)
@@ -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;
index 374677afde5df6f52d2dc605b6bdd2cf9de3caac..93aee956b247e3805309ae0d1220faf7a8299954 100644 (file)
@@ -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;
index 4208156653bd33520ddde48dd165c1e54c24edb6..33d42c426da05deb35a739ddca092859a5c75db5 100644 (file)
@@ -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()
index 1fa31d01e8ab6e4e817640872a223f83380621a4..ee5a5c27380d82afb62a8c9388b2ea6188e8f058 100644 (file)
@@ -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;