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:
parent
9bb36b0c8e
commit
1423874007
5 changed files with 131 additions and 2 deletions
58
utils/themeeditor/graphics/rbtoucharea.cpp
Normal file
58
utils/themeeditor/graphics/rbtoucharea.cpp
Normal 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);
|
||||
}
|
||||
}
|
48
utils/themeeditor/graphics/rbtoucharea.h
Normal file
48
utils/themeeditor/graphics/rbtoucharea.h
Normal 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
|
|
@ -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])
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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 \
|
||||
|
|
Loading…
Reference in a new issue