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
This commit is contained in:
Robert Bieber 2010-07-10 06:43:50 +00:00
parent 9bb36b0c8e
commit 1423874007
5 changed files with 131 additions and 2 deletions

View file

@ -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);
}
}

View file

@ -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

View file

@ -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])

View file

@ -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

View file

@ -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 \