kde-extraapps/kdeplasma-addons/applets/bubblemon/src/bubble.h
Ivailo Monev e166af4e02 generic: replace forward declarations with headers inclusions
Signed-off-by: Ivailo Monev <xakepa10@laimg.moc>
2019-05-23 00:08:45 +00:00

103 lines
3.1 KiB
C++

/*
* Copyright 2009 by Trever Fischer <wm161@wm161.net>
*
* 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 BUBBLE_H
#define BUBBLE_H
#include <Plasma/Applet>
#include <Plasma/DataEngine>
#include "ui_settings.h"
#include <QTimeLine>
#include <QGraphicsSceneResizeEvent>
#include <QTimer>
#include <QStandardItemModel>
#include <QPropertyAnimation>
namespace Plasma {
class Svg;
}
class Bubble : public Plasma::Applet {
Q_OBJECT
Q_PROPERTY(qreal labelTransparency READ labelTransparency WRITE setLabelTransparency)
public:
Bubble(QObject *parent, const QVariantList &args);
~Bubble();
void paintInterface(QPainter *painter, const QStyleOptionGraphicsItem *option, const QRect &contentsRect);
void init();
void createConfigurationInterface(KConfigDialog *parent);
QString icon() const;
void setLabelTransparency(qreal);
qreal labelTransparency() const;
public slots:
void dataUpdated(QString name, Plasma::DataEngine::Data data);
void configChanged();
protected:
QPainterPath shape() const;
void constraintsEvent(Plasma::Constraints constraints);
void resizeEvent(QGraphicsSceneResizeEvent *evt);
protected slots:
void hoverEnterEvent(QGraphicsSceneHoverEvent *event);
void hoverLeaveEvent(QGraphicsSceneHoverEvent *event);
private slots:
void writeConfig();
void moveBubbles();
void showLabel(bool);
void interpolateValue();
void connectSensor();
void reconnectSensor();
void disconnectSensor();
void reloadTheme();
void repaintNeeded();
private:
void drawLabel(QPainter *painter, const QStyleOptionGraphicsItem *option, const QRectF &contentsRect);
Ui::Settings ui;
bool m_showText;
bool m_animated;
int m_val;
int m_max;
int m_speed;
QVector<QPoint> m_bubbles;
int m_bubbleCount;
qreal m_labelTransparency;
float m_bubbleSpeed;
QSizeF m_bubbleRect;
QString m_sensor;
Plasma::Svg *m_svg;
QString m_label;
QTimer *m_animator;
QTimeLine *m_interpolator;
Plasma::DataEngine *m_engine;
QStandardItemModel *m_sensorModel;
QPropertyAnimation *m_animation;
QRectF m_clip;
QPainterPath m_bubbleClip;
bool m_rebuildClip;
};
#endif