Started with some initial animation on the Touchscreen-interface
This commit is contained in:
parent
bc623ef529
commit
11e57c3bdc
7 changed files with 187 additions and 3 deletions
|
@ -7,6 +7,11 @@ TARGET = TouchInterface
|
||||||
TEMPLATE = lib
|
TEMPLATE = lib
|
||||||
CONFIG += plugin
|
CONFIG += plugin
|
||||||
DESTDIR = ../../TelldusCenter/plugins
|
DESTDIR = ../../TelldusCenter/plugins
|
||||||
SOURCES += touchplugin.cpp
|
SOURCES += touchplugin.cpp \
|
||||||
HEADERS += touchplugin.h
|
panel.cpp \
|
||||||
|
button.cpp
|
||||||
|
HEADERS += touchplugin.h \
|
||||||
|
panel.h \
|
||||||
|
button.h
|
||||||
RESOURCES += TouchInterface.qrc
|
RESOURCES += TouchInterface.qrc
|
||||||
|
contains(QT_CONFIG, opengl):QT += opengl
|
||||||
|
|
23
telldus-gui/Plugins/TouchInterface/button.cpp
Normal file
23
telldus-gui/Plugins/TouchInterface/button.cpp
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
#include "button.h"
|
||||||
|
#include <QPainter>
|
||||||
|
#include <QDebug>
|
||||||
|
|
||||||
|
Button::Button(const QRectF &rect, const QBrush &brush, QObject *parent)
|
||||||
|
: QObject(parent),
|
||||||
|
QGraphicsRectItem(rect)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void Button::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *) {
|
||||||
|
painter->setPen(Qt::NoPen);
|
||||||
|
painter->setBrush(QColor(0, 0, 0, 64));
|
||||||
|
painter->drawRoundRect(rect().translated(2, 2));
|
||||||
|
|
||||||
|
painter->setBrush(Qt::black);
|
||||||
|
painter->setPen(Qt::black);
|
||||||
|
painter->drawText( rect().adjusted( 10, 10, -10, -10 ), "Hej");
|
||||||
|
}
|
||||||
|
|
||||||
|
void Button::mousePressEvent(QGraphicsSceneMouseEvent * ) {
|
||||||
|
emit clicked();
|
||||||
|
}
|
20
telldus-gui/Plugins/TouchInterface/button.h
Normal file
20
telldus-gui/Plugins/TouchInterface/button.h
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
#ifndef BUTTON_H
|
||||||
|
#define BUTTON_H
|
||||||
|
|
||||||
|
#include <QGraphicsRectItem>
|
||||||
|
|
||||||
|
class Button : public QObject, public QGraphicsRectItem
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
Button(const QRectF &rect, const QBrush &brush, QObject *parent = 0);
|
||||||
|
|
||||||
|
void paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *);
|
||||||
|
|
||||||
|
virtual void mousePressEvent(QGraphicsSceneMouseEvent * );
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void clicked();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // BUTTON_H
|
98
telldus-gui/Plugins/TouchInterface/panel.cpp
Normal file
98
telldus-gui/Plugins/TouchInterface/panel.cpp
Normal file
|
@ -0,0 +1,98 @@
|
||||||
|
#include "panel.h"
|
||||||
|
#include "button.h"
|
||||||
|
|
||||||
|
#ifndef QT_NO_OPENGL
|
||||||
|
#include <QtOpenGL/QtOpenGL>
|
||||||
|
#endif
|
||||||
|
#include <QTimeLine>
|
||||||
|
#include <QVector>
|
||||||
|
#include <QDebug>
|
||||||
|
|
||||||
|
class PanelPrivate {
|
||||||
|
public:
|
||||||
|
QVector<Button*> buttons;
|
||||||
|
Button *animatedButton;
|
||||||
|
QRectF from, to;
|
||||||
|
QTimeLine *timer;
|
||||||
|
};
|
||||||
|
|
||||||
|
Panel::Panel(QWidget *parent)
|
||||||
|
:QGraphicsView(parent),
|
||||||
|
d( new PanelPrivate )
|
||||||
|
{
|
||||||
|
setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
|
||||||
|
setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
|
||||||
|
setFrameStyle(0);
|
||||||
|
setBackgroundBrush( Qt::blue );
|
||||||
|
|
||||||
|
#ifndef QT_NO_OPENGL
|
||||||
|
setViewport(new QGLWidget(QGLFormat(QGL::SampleBuffers)));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
QRectF bounds(0, 0, 200, 200);
|
||||||
|
|
||||||
|
setScene(new QGraphicsScene(bounds, this));
|
||||||
|
|
||||||
|
Button *button = new Button(QRectF(-25, -25, 50, 50), Qt::red);
|
||||||
|
button->setPos(50, 150);
|
||||||
|
scene()->addItem(button);
|
||||||
|
connect(button, SIGNAL(clicked()), this, SLOT(click()));
|
||||||
|
d->buttons.append(button);
|
||||||
|
|
||||||
|
button = new Button(QRectF(-25, -25, 50, 50), Qt::red);
|
||||||
|
button->setPos(125, 150);
|
||||||
|
scene()->addItem(button);
|
||||||
|
connect(button, SIGNAL(clicked()), this, SLOT(click()));
|
||||||
|
d->buttons.append(button);
|
||||||
|
|
||||||
|
d->timer = new QTimeLine(400, this);
|
||||||
|
d->timer->setFrameRange(0, 100);
|
||||||
|
connect(d->timer, SIGNAL(frameChanged(int)), this, SLOT(tick(int)));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Panel::~Panel() {
|
||||||
|
delete d;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Panel::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *) {
|
||||||
|
painter->setPen(Qt::NoPen);
|
||||||
|
painter->setBrush(QColor(0, 0, 0, 64));
|
||||||
|
painter->drawRoundRect(rect().translated(2, 2));
|
||||||
|
}
|
||||||
|
|
||||||
|
void Panel::resizeEvent(QResizeEvent *event)
|
||||||
|
{
|
||||||
|
QGraphicsView::resizeEvent(event);
|
||||||
|
fitInView(scene()->sceneRect(), Qt::KeepAspectRatio);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Panel::tick( int frame) {
|
||||||
|
if (!d->animatedButton) {
|
||||||
|
d->timer->stop();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
float percent = (frame/100.0);
|
||||||
|
QPointF from = d->from.topLeft(), to = d->to.topLeft();
|
||||||
|
QPointF rect = from - percent * (from - to);
|
||||||
|
d->animatedButton->setPos( rect );
|
||||||
|
|
||||||
|
QTransform trans;
|
||||||
|
trans = trans.rotate(180 * percent, Qt::YAxis);
|
||||||
|
|
||||||
|
trans = trans.scale(percent * d->to.width() / d->animatedButton->rect().width() + 1, percent * d->to.height() / d->animatedButton->rect().height() + 1);
|
||||||
|
|
||||||
|
d->animatedButton->setTransform( trans );
|
||||||
|
}
|
||||||
|
|
||||||
|
void Panel::click() {
|
||||||
|
d->animatedButton = qobject_cast<Button *>(sender());
|
||||||
|
if (d->animatedButton) {
|
||||||
|
QPointF pos = d->animatedButton->pos();
|
||||||
|
QRectF rect = d->animatedButton->rect();
|
||||||
|
d->from = QRectF(pos, rect.size());
|
||||||
|
d->to = QRectF(100, 100, 125, 125);
|
||||||
|
d->timer->start();
|
||||||
|
}
|
||||||
|
}
|
28
telldus-gui/Plugins/TouchInterface/panel.h
Normal file
28
telldus-gui/Plugins/TouchInterface/panel.h
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
#ifndef PANEL_H
|
||||||
|
#define PANEL_H
|
||||||
|
|
||||||
|
#include <QGraphicsView>
|
||||||
|
|
||||||
|
class PanelPrivate;
|
||||||
|
|
||||||
|
class Panel : public QGraphicsView
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
Panel(QWidget *parent = 0);
|
||||||
|
~Panel();
|
||||||
|
|
||||||
|
void paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void resizeEvent(QResizeEvent *event);
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void tick(int frame);
|
||||||
|
void click();
|
||||||
|
|
||||||
|
private:
|
||||||
|
PanelPrivate *d;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // PANEL_H
|
|
@ -1,17 +1,23 @@
|
||||||
#include <QtCore>
|
#include <QtCore>
|
||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
#include "touchplugin.h"
|
#include "touchplugin.h"
|
||||||
|
#include "panel.h"
|
||||||
|
|
||||||
QIcon TouchPlugin::iconForPage( const QString &page ) const {
|
QIcon TouchPlugin::iconForPage( const QString &page ) const {
|
||||||
|
Q_UNUSED(page);
|
||||||
return QIcon(":/images/touchinterface.png");
|
return QIcon(":/images/touchinterface.png");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TouchPlugin::init() {
|
||||||
|
}
|
||||||
|
|
||||||
QString TouchPlugin::pluginName() const {
|
QString TouchPlugin::pluginName() const {
|
||||||
return "TouchInterface";
|
return "TouchInterface";
|
||||||
}
|
}
|
||||||
|
|
||||||
QWidget *TouchPlugin::widget( const QString &page, QWidget *parent ) const {
|
QWidget *TouchPlugin::widget( const QString &page, QWidget *parent ) const {
|
||||||
return new QLabel("Hello world", parent);
|
Q_UNUSED(page)
|
||||||
|
return new Panel(parent);
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList TouchPlugin::widgets() const {
|
QStringList TouchPlugin::widgets() const {
|
||||||
|
|
|
@ -11,11 +11,15 @@ class TouchPlugin : public QObject, public TelldusCenterPlugin
|
||||||
Q_INTERFACES(TelldusCenterPlugin)
|
Q_INTERFACES(TelldusCenterPlugin)
|
||||||
public:
|
public:
|
||||||
virtual QIcon iconForPage( const QString &page ) const;
|
virtual QIcon iconForPage( const QString &page ) const;
|
||||||
|
virtual void init();
|
||||||
virtual QString pluginName() const;
|
virtual QString pluginName() const;
|
||||||
|
|
||||||
virtual QWidget *widget( const QString &page, QWidget *parent ) const;
|
virtual QWidget *widget( const QString &page, QWidget *parent ) const;
|
||||||
virtual QStringList widgets() const;
|
virtual QStringList widgets() const;
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void hej();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // TOUCHPLUGIN_H
|
#endif // TOUCHPLUGIN_H
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue