remove private class from meter.cpp and support some properties on it.
The properties are useful to be used in animation. svn path=/trunk/KDE/kdelibs/; revision=1080846
This commit is contained in:
parent
5eb78f23ea
commit
99cd8006e6
74
private/meter_p.h
Normal file
74
private/meter_p.h
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2007 Petri Damsten <damu@iki.fi>
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Library General Public License as
|
||||||
|
* published by the Free Software Foundation; either version 2, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Library General Public
|
||||||
|
* License along with this program; if not, write to the
|
||||||
|
* Free Software Foundation, Inc.,
|
||||||
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef PLASMA_METER_PRIVATE_H
|
||||||
|
#define PLASMA_METER_PRIVATE_H
|
||||||
|
|
||||||
|
#include <QObject>
|
||||||
|
|
||||||
|
class QRectF;
|
||||||
|
class QString;
|
||||||
|
class QPainter;
|
||||||
|
class QPropertyAnimation;
|
||||||
|
|
||||||
|
namespace Plasma {
|
||||||
|
|
||||||
|
class Meter;
|
||||||
|
class FrameSvg;
|
||||||
|
|
||||||
|
class MeterPrivate : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
Q_PROPERTY(int meterValue READ meterValue WRITE setMeterValue)
|
||||||
|
|
||||||
|
public:
|
||||||
|
MeterPrivate(Meter *m);
|
||||||
|
void progressChanged(int progress);
|
||||||
|
void paint(QPainter *p, const QString &elementID);
|
||||||
|
void text(QPainter *p, int index);
|
||||||
|
QRectF barRect();
|
||||||
|
void paintBackground(QPainter *p);
|
||||||
|
void paintBar(QPainter *p, const QString &prefix);
|
||||||
|
void paintForeground(QPainter *p);
|
||||||
|
void setSizePolicyAndPreferredSize();
|
||||||
|
void setMeterValue(int value);
|
||||||
|
int meterValue() const;
|
||||||
|
|
||||||
|
int minimum;
|
||||||
|
int maximum;
|
||||||
|
int value;
|
||||||
|
int targetValue;
|
||||||
|
QStringList labels;
|
||||||
|
QList<Qt::Alignment> alignments;
|
||||||
|
QList<QColor> colors;
|
||||||
|
QList<QFont> fonts;
|
||||||
|
QString svg;
|
||||||
|
Meter::MeterType meterType;
|
||||||
|
Plasma::FrameSvg *image;
|
||||||
|
int minrotate;
|
||||||
|
int maxrotate;
|
||||||
|
Meter *meter;
|
||||||
|
int movementId;
|
||||||
|
QPropertyAnimation *animation;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -18,6 +18,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "meter.h"
|
#include "meter.h"
|
||||||
|
#include "private/meter_p.h"
|
||||||
|
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
|
||||||
@ -34,11 +35,9 @@
|
|||||||
|
|
||||||
namespace Plasma {
|
namespace Plasma {
|
||||||
|
|
||||||
class MeterPrivate
|
MeterPrivate::MeterPrivate(Meter *m)
|
||||||
{
|
: QObject(m),
|
||||||
public:
|
minimum(0),
|
||||||
MeterPrivate(Meter *m)
|
|
||||||
: minimum(0),
|
|
||||||
maximum(100),
|
maximum(100),
|
||||||
value(0),
|
value(0),
|
||||||
targetValue(0),
|
targetValue(0),
|
||||||
@ -50,13 +49,13 @@ public:
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void progressChanged(int progress)
|
void MeterPrivate::progressChanged(int progress)
|
||||||
{
|
{
|
||||||
value = progress;
|
value = progress;
|
||||||
meter->update();
|
meter->update();
|
||||||
}
|
}
|
||||||
|
|
||||||
void paint(QPainter *p, const QString &elementID)
|
void MeterPrivate::paint(QPainter *p, const QString &elementID)
|
||||||
{
|
{
|
||||||
if (image->hasElement(elementID)) {
|
if (image->hasElement(elementID)) {
|
||||||
QRectF elementRect = image->elementRect(elementID);
|
QRectF elementRect = image->elementRect(elementID);
|
||||||
@ -64,7 +63,7 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void text(QPainter *p, int index)
|
void MeterPrivate::text(QPainter *p, int index)
|
||||||
{
|
{
|
||||||
QString elementID = QString("label%1").arg(index);
|
QString elementID = QString("label%1").arg(index);
|
||||||
QString text = labels[index];
|
QString text = labels[index];
|
||||||
@ -100,7 +99,7 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QRectF barRect()
|
QRectF MeterPrivate::barRect()
|
||||||
{
|
{
|
||||||
QRectF elementRect;
|
QRectF elementRect;
|
||||||
|
|
||||||
@ -140,7 +139,7 @@ public:
|
|||||||
return elementRect;
|
return elementRect;
|
||||||
}
|
}
|
||||||
|
|
||||||
void paintBackground(QPainter *p)
|
void MeterPrivate::paintBackground(QPainter *p)
|
||||||
{
|
{
|
||||||
//be retrocompatible with themes for kde <= 4.1
|
//be retrocompatible with themes for kde <= 4.1
|
||||||
if (image->hasElement("background-center")) {
|
if (image->hasElement("background-center")) {
|
||||||
@ -163,7 +162,7 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void paintBar(QPainter *p, const QString &prefix)
|
void MeterPrivate::paintBar(QPainter *p, const QString &prefix)
|
||||||
{
|
{
|
||||||
QRectF elementRect = barRect();
|
QRectF elementRect = barRect();
|
||||||
|
|
||||||
@ -194,7 +193,7 @@ public:
|
|||||||
image->setUsingRenderingCache(true);
|
image->setUsingRenderingCache(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void paintForeground(QPainter *p)
|
void MeterPrivate::paintForeground(QPainter *p)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < labels.count(); ++i) {
|
for (int i = 0; i < labels.count(); ++i) {
|
||||||
text(p, i);
|
text(p, i);
|
||||||
@ -203,7 +202,7 @@ public:
|
|||||||
paint(p, "foreground");
|
paint(p, "foreground");
|
||||||
}
|
}
|
||||||
|
|
||||||
void setSizePolicyAndPreferredSize()
|
void MeterPrivate::setSizePolicyAndPreferredSize()
|
||||||
{
|
{
|
||||||
switch (meterType) {
|
switch (meterType) {
|
||||||
case Meter::BarMeterHorizontal:
|
case Meter::BarMeterHorizontal:
|
||||||
@ -247,31 +246,13 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int minimum;
|
|
||||||
int maximum;
|
|
||||||
int value;
|
|
||||||
int targetValue;
|
|
||||||
QStringList labels;
|
|
||||||
QList<Qt::Alignment> alignments;
|
|
||||||
QList<QColor> colors;
|
|
||||||
QList<QFont> fonts;
|
|
||||||
QString svg;
|
|
||||||
Meter::MeterType meterType;
|
|
||||||
Plasma::FrameSvg *image;
|
|
||||||
int minrotate;
|
|
||||||
int maxrotate;
|
|
||||||
Meter *meter;
|
|
||||||
int movementId;
|
|
||||||
QPropertyAnimation *animation;
|
|
||||||
};
|
|
||||||
|
|
||||||
Meter::Meter(QGraphicsItem *parent) :
|
Meter::Meter(QGraphicsItem *parent) :
|
||||||
QGraphicsWidget(parent),
|
QGraphicsWidget(parent),
|
||||||
d(new MeterPrivate(this))
|
d(new MeterPrivate(this))
|
||||||
{
|
{
|
||||||
d->setSizePolicyAndPreferredSize();
|
d->setSizePolicyAndPreferredSize();
|
||||||
|
|
||||||
d->animation = new QPropertyAnimation(this, "meterValue");
|
d->animation = new QPropertyAnimation(d, "meterValue");
|
||||||
}
|
}
|
||||||
|
|
||||||
Meter::~Meter()
|
Meter::~Meter()
|
||||||
@ -300,6 +281,11 @@ int Meter::minimum() const
|
|||||||
return d->minimum;
|
return d->minimum;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int Meter::value() const
|
||||||
|
{
|
||||||
|
return d->value;
|
||||||
|
}
|
||||||
|
|
||||||
void Meter::setValue(int value)
|
void Meter::setValue(int value)
|
||||||
{
|
{
|
||||||
if (value == d->targetValue) {
|
if (value == d->targetValue) {
|
||||||
@ -325,14 +311,14 @@ void Meter::setValue(int value)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int Meter::value() const
|
int MeterPrivate::meterValue() const
|
||||||
{
|
{
|
||||||
return d->value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Meter::setMeterValue(int value)
|
void MeterPrivate::setMeterValue(int value)
|
||||||
{
|
{
|
||||||
d->progressChanged(value);
|
progressChanged(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Meter::setLabel(int index, const QString &text)
|
void Meter::setLabel(int index, const QString &text)
|
||||||
@ -538,3 +524,4 @@ void Meter::paint(QPainter *p,
|
|||||||
} // End of namepace
|
} // End of namepace
|
||||||
|
|
||||||
#include "meter.moc"
|
#include "meter.moc"
|
||||||
|
#include "../private/meter_p.moc"
|
||||||
|
@ -61,8 +61,6 @@ class PLASMA_EXPORT Meter : public QGraphicsWidget
|
|||||||
Q_PROPERTY(QString svg READ svg WRITE setSvg)
|
Q_PROPERTY(QString svg READ svg WRITE setSvg)
|
||||||
Q_PROPERTY(MeterType meterType READ meterType WRITE setMeterType)
|
Q_PROPERTY(MeterType meterType READ meterType WRITE setMeterType)
|
||||||
|
|
||||||
Q_PROPERTY(int meterValue READ value WRITE setMeterValue)
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
* Meter types enum
|
* Meter types enum
|
||||||
@ -211,9 +209,6 @@ protected:
|
|||||||
const QStyleOptionGraphicsItem *option,
|
const QStyleOptionGraphicsItem *option,
|
||||||
QWidget *widget = 0);
|
QWidget *widget = 0);
|
||||||
|
|
||||||
private:
|
|
||||||
void setMeterValue(int value);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
MeterPrivate *const d;
|
MeterPrivate *const d;
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user