summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobert Bieber <robby@bieberphoto.com>2010-07-10 06:43:50 +0000
committerRobert Bieber <robby@bieberphoto.com>2010-07-10 06:43:50 +0000
commit14238740074945d8f61e445c5d6211e1c7a50566 (patch)
tree51414e1d00751020d4975c14b607a603a1dc3379
parent9bb36b0c8efb27dc7c4932d1d7643d50a4b8a2f9 (diff)
downloadrockbox-14238740074945d8f61e445c5d6211e1c7a50566.tar.gz
rockbox-14238740074945d8f61e445c5d6211e1c7a50566.zip
Theme Editor: Added RBTouchArea class. Touch areas on a theme can now be displayed, but they're not clickable yet
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27369 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--utils/themeeditor/graphics/rbtoucharea.cpp58
-rw-r--r--utils/themeeditor/graphics/rbtoucharea.h48
-rw-r--r--utils/themeeditor/models/parsetreenode.cpp20
-rw-r--r--utils/themeeditor/resources/deviceoptions1
-rw-r--r--utils/themeeditor/themeeditor.pro6
5 files changed, 131 insertions, 2 deletions
diff --git a/utils/themeeditor/graphics/rbtoucharea.cpp b/utils/themeeditor/graphics/rbtoucharea.cpp
new file mode 100644
index 0000000000..20d30d813f
--- /dev/null
+++ b/utils/themeeditor/graphics/rbtoucharea.cpp
@@ -0,0 +1,58 @@
+/***************************************************************************
+ * __________ __ ___.
+ * Open \______ \ ____ ____ | | _\_ |__ _______ ___
+ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+ * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+ * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+ * \/ \/ \/ \/ \/
+ * $Id$
+ *
+ * Copyright (C) 2010 Robert Bieber
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ****************************************************************************/
+
+#include "rbtoucharea.h"
+#include "rbscreen.h"
+#include "devicestate.h"
+
+#include <QPainter>
+
+RBTouchArea::RBTouchArea(int width, int height, QString action,
+ const RBRenderInfo& info)
+ : QGraphicsItem(info.screen()),
+ size(QRectF(0, 0, width, height)), action(action)
+{
+ debug = info.device()->data("showtouch").toBool();
+ setZValue(5);
+}
+
+RBTouchArea::~RBTouchArea()
+{
+}
+
+QRectF RBTouchArea::boundingRect() const
+{
+ return size;
+}
+
+void RBTouchArea::paint(QPainter *painter,
+ const QStyleOptionGraphicsItem *option,
+ QWidget *widget)
+{
+ if(debug)
+ {
+ QColor fill = Qt::green;
+ fill.setAlpha(50);
+ painter->setBrush(fill);
+ painter->setPen(Qt::NoPen);
+ painter->drawRect(size);
+ }
+}
diff --git a/utils/themeeditor/graphics/rbtoucharea.h b/utils/themeeditor/graphics/rbtoucharea.h
new file mode 100644
index 0000000000..eb25d83261
--- /dev/null
+++ b/utils/themeeditor/graphics/rbtoucharea.h
@@ -0,0 +1,48 @@
+/***************************************************************************
+ * __________ __ ___.
+ * Open \______ \ ____ ____ | | _\_ |__ _______ ___
+ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+ * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+ * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+ * \/ \/ \/ \/ \/
+ * $Id$
+ *
+ * Copyright (C) 2010 Robert Bieber
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ****************************************************************************/
+
+#ifndef RBTOUCHAREA_H
+#define RBTOUCHAREA_H
+
+#include <QGraphicsItem>
+
+#include "rbrenderinfo.h"
+
+class RBTouchArea : public QGraphicsItem
+{
+public:
+ RBTouchArea(int width, int height, QString action,
+ const RBRenderInfo& info);
+ virtual ~RBTouchArea();
+
+ QRectF boundingRect() const;
+ void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
+ QWidget *widget);
+
+
+private:
+ QRectF size;
+ QString action;
+ RBScreen* screen;
+ bool debug;
+};
+
+#endif // RBTOUCHAREA_H
diff --git a/utils/themeeditor/models/parsetreenode.cpp b/utils/themeeditor/models/parsetreenode.cpp
index 3ccf6c0063..973ceb598b 100644
--- a/utils/themeeditor/models/parsetreenode.cpp
+++ b/utils/themeeditor/models/parsetreenode.cpp
@@ -27,6 +27,7 @@
#include "rbimage.h"
#include "rbprogressbar.h"
+#include "rbtoucharea.h"
#include <iostream>
#include <cmath>
@@ -803,6 +804,25 @@ bool ParseTreeNode::execTag(const RBRenderInfo& info, RBViewport* viewport)
return false;
+ case 'T':
+ switch(element->tag->name[1])
+ {
+ case '\0':
+ /* %T */
+ if(element->params_count < 5)
+ return false;
+ int x = element->params[0].data.numeric;
+ int y = element->params[1].data.numeric;
+ int width = element->params[2].data.numeric;
+ int height = element->params[3].data.numeric;
+ QString action(element->params[4].data.text);
+ RBTouchArea* temp = new RBTouchArea(width, height, action, info);
+ temp->setPos(x, y);
+ return true;
+ }
+
+ return false;
+
case 'V':
switch(element->tag->name[1])
diff --git a/utils/themeeditor/resources/deviceoptions b/utils/themeeditor/resources/deviceoptions
index 3d1a92cfa8..771229a453 100644
--- a/utils/themeeditor/resources/deviceoptions
+++ b/utils/themeeditor/resources/deviceoptions
@@ -37,6 +37,7 @@ remotewidth ; Remote Width ; spin(0,800) ; 100
remoteheight ; Remote Height ; spin(0,800); 50
simtime ; Simulation Time ; fspin(0, 100000) ; 60.0
showviewports ; Show Viewports ; check ; false
+showtouch ; Show Touch Areas ; check ; true
rendersbs ; Render SBS If Available ; check ; true
rtl ; Right-To-Left Language ; check ; false
diff --git a/utils/themeeditor/themeeditor.pro b/utils/themeeditor/themeeditor.pro
index 49e1be953a..0805890db1 100644
--- a/utils/themeeditor/themeeditor.pro
+++ b/utils/themeeditor/themeeditor.pro
@@ -53,7 +53,8 @@ HEADERS += models/parsetreemodel.h \
graphics/rbtext.h \
graphics/rbfontcache.h \
graphics/rbtextcache.h \
- gui/skintimer.h
+ gui/skintimer.h \
+ graphics/rbtoucharea.h
SOURCES += main.cpp \
models/parsetreemodel.cpp \
models/parsetreenode.cpp \
@@ -77,7 +78,8 @@ SOURCES += main.cpp \
graphics/rbtext.cpp \
graphics/rbfontcache.cpp \
graphics/rbtextcache.cpp \
- gui/skintimer.cpp
+ gui/skintimer.cpp \
+ graphics/rbtoucharea.cpp
OTHER_FILES += README \
resources/windowicon.png \
resources/appicon.xcf \