version 2.32.0
work with icons - remove unused, organize and update to last oxygen add BusyIcon widget
This commit is contained in:
114
libs/widgets/busy_icon.cpp
Normal file
114
libs/widgets/busy_icon.cpp
Normal file
@@ -0,0 +1,114 @@
|
||||
#include "busy_icon.h"
|
||||
|
||||
#include "qad_types.h"
|
||||
|
||||
#include <QApplication>
|
||||
#include <QPainter>
|
||||
#include <qmath.h>
|
||||
|
||||
|
||||
BusyIcon::BusyIcon(QWidget * parent): QWidget(parent) {}
|
||||
|
||||
|
||||
BusyIcon::~BusyIcon() {}
|
||||
|
||||
|
||||
void BusyIcon::start() {
|
||||
stop();
|
||||
ang = 0;
|
||||
timer = startTimer(25);
|
||||
}
|
||||
|
||||
|
||||
void BusyIcon::stop() {
|
||||
if (timer == 0) return;
|
||||
killTimer(timer);
|
||||
timer = 0;
|
||||
}
|
||||
|
||||
|
||||
QIcon BusyIcon::icon() {
|
||||
return icon_;
|
||||
}
|
||||
|
||||
|
||||
void BusyIcon::setIcon(QIcon i) {
|
||||
icon_ = i;
|
||||
image = i.pixmap(512, 512).toImage();
|
||||
}
|
||||
|
||||
|
||||
void BusyIcon::setIconSize(qreal s) {
|
||||
icon_size = s;
|
||||
updateGeometry();
|
||||
update();
|
||||
}
|
||||
|
||||
|
||||
void BusyIcon::setIconScale(qreal s) {
|
||||
icon_scale = s;
|
||||
updateGeometry();
|
||||
update();
|
||||
}
|
||||
|
||||
|
||||
void BusyIcon::setCircleWidth(qreal s) {
|
||||
circle_width = s;
|
||||
updateGeometry();
|
||||
update();
|
||||
}
|
||||
|
||||
|
||||
QSize BusyIcon::sizeHint() const {
|
||||
return preferredIconSize(icon_size, this);
|
||||
}
|
||||
|
||||
|
||||
void BusyIcon::timerEvent(QTimerEvent *) {
|
||||
if (!isVisible()) return;
|
||||
ang += 1;
|
||||
update();
|
||||
}
|
||||
|
||||
|
||||
QPointF point(qreal r, qreal a) {
|
||||
return QPointF(-r * sin(a), -r * cos(a));
|
||||
}
|
||||
qreal frag(qreal a, qreal f) {
|
||||
int i = (int)(a / f);
|
||||
return a - (i * f);
|
||||
}
|
||||
qreal angle(int a) {
|
||||
return (cos(frag(a / 15., M_PI)) - 1) * M_PI;
|
||||
}
|
||||
|
||||
void BusyIcon::paintEvent(QPaintEvent *) {
|
||||
QPainter p(this);
|
||||
if (rect().isEmpty()) return;
|
||||
qreal w = width(), h = height();
|
||||
p.translate(w / 2., h / 2.);
|
||||
p.scale(qMin(w, h), qMin(w, h));
|
||||
|
||||
float imgsz = icon_scale / 100.f, ioff = circle_width / 200.f;
|
||||
p.setRenderHint(QPainter::SmoothPixmapTransform);
|
||||
p.setRenderHint(QPainter::Antialiasing);
|
||||
p.drawImage(QRectF(-imgsz / 2., -imgsz / 2., imgsz, imgsz), image);
|
||||
p.setPen(Qt::NoPen);
|
||||
p.setBrush(palette().brush(QPalette::Active, QPalette::Highlight));
|
||||
p.setRenderHint(QPainter::Antialiasing);
|
||||
|
||||
qreal sa = angle(ang), ea = angle(ang + 10);
|
||||
if (ea > sa) ea -= M_PI * 2.;
|
||||
qreal rs = 0.5 - ioff, rb = 0.5;
|
||||
int steps = qMin(128, qRound(qAbs(ea - sa) / 0.025));
|
||||
QPolygonF pol;
|
||||
for (int i = 0; i <= steps; ++i) {
|
||||
qreal c = i / (qreal)steps;
|
||||
pol << point(rs, sa * c + ea * (1. - c));
|
||||
}
|
||||
for (int i = 0; i <= steps; ++i) {
|
||||
qreal c = i / (qreal)steps;
|
||||
pol << point(rb, ea * c + sa * (1. - c));
|
||||
}
|
||||
p.drawPolygon(pol);
|
||||
}
|
||||
56
libs/widgets/busy_icon.h
Normal file
56
libs/widgets/busy_icon.h
Normal file
@@ -0,0 +1,56 @@
|
||||
#ifndef busy_icon_H
|
||||
#define busy_icon_H
|
||||
|
||||
#include "qad_widgets_export.h"
|
||||
|
||||
#include <QDebug>
|
||||
#include <QIcon>
|
||||
#include <QWidget>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
class QAD_WIDGETS_EXPORT BusyIcon: public QWidget {
|
||||
Q_OBJECT
|
||||
Q_PROPERTY(QIcon icon READ icon WRITE setIcon)
|
||||
Q_PROPERTY(qreal iconSize READ iconSize WRITE setIconSize)
|
||||
Q_PROPERTY(qreal iconScale READ iconScale WRITE setIconScale)
|
||||
Q_PROPERTY(qreal circleWidth READ circleWidth WRITE setCircleWidth)
|
||||
|
||||
public:
|
||||
explicit BusyIcon(QWidget * parent = 0);
|
||||
~BusyIcon();
|
||||
|
||||
QIcon icon();
|
||||
void setIcon(QIcon i);
|
||||
|
||||
qreal iconSize() { return icon_size; }
|
||||
void setIconSize(qreal s);
|
||||
|
||||
qreal iconScale() { return icon_scale; }
|
||||
void setIconScale(qreal s);
|
||||
|
||||
qreal circleWidth() { return circle_width; }
|
||||
void setCircleWidth(qreal s);
|
||||
|
||||
private:
|
||||
QSize sizeHint() const;
|
||||
void timerEvent(QTimerEvent *);
|
||||
void paintEvent(QPaintEvent *);
|
||||
|
||||
QIcon icon_;
|
||||
QImage image;
|
||||
qreal icon_size = 5.f, icon_scale = 75.f, circle_width = 20.f;
|
||||
int timer = 0, ang = 0;
|
||||
|
||||
private slots:
|
||||
|
||||
public slots:
|
||||
void start();
|
||||
void stop();
|
||||
|
||||
signals:
|
||||
};
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#endif
|
||||
66
libs/widgets/plugin/busy_iconplugin.cpp
Normal file
66
libs/widgets/plugin/busy_iconplugin.cpp
Normal file
@@ -0,0 +1,66 @@
|
||||
#include "busy_iconplugin.h"
|
||||
|
||||
#include "busy_icon.h"
|
||||
|
||||
#include <QtCore/QtPlugin>
|
||||
|
||||
|
||||
BusyIconPlugin::BusyIconPlugin(QObject * parent): QObject(parent) {
|
||||
m_initialized = false;
|
||||
}
|
||||
|
||||
|
||||
void BusyIconPlugin::initialize(QDesignerFormEditorInterface * /* core */) {
|
||||
if (m_initialized) return;
|
||||
m_initialized = true;
|
||||
}
|
||||
|
||||
|
||||
bool BusyIconPlugin::isInitialized() const {
|
||||
return m_initialized;
|
||||
}
|
||||
|
||||
|
||||
QWidget * BusyIconPlugin::createWidget(QWidget * parent) {
|
||||
return new BusyIcon(parent);
|
||||
}
|
||||
|
||||
|
||||
QString BusyIconPlugin::name() const {
|
||||
return QLatin1String("BusyIcon");
|
||||
}
|
||||
|
||||
|
||||
QString BusyIconPlugin::group() const {
|
||||
return QLatin1String("Display Widgets");
|
||||
}
|
||||
|
||||
|
||||
QIcon BusyIconPlugin::icon() const {
|
||||
return QIcon(":/icons/widgets/busy-icon.png");
|
||||
}
|
||||
|
||||
|
||||
QString BusyIconPlugin::toolTip() const {
|
||||
return QLatin1String("Busy indicator");
|
||||
}
|
||||
|
||||
|
||||
QString BusyIconPlugin::whatsThis() const {
|
||||
return QLatin1String("Busy indicator");
|
||||
}
|
||||
|
||||
|
||||
bool BusyIconPlugin::isContainer() const {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
QString BusyIconPlugin::domXml() const {
|
||||
return QLatin1String("<widget class=\"BusyIcon\" name=\"iconBusy\">\n</widget>\n");
|
||||
}
|
||||
|
||||
|
||||
QString BusyIconPlugin::includeFile() const {
|
||||
return QLatin1String("busy_icon.h");
|
||||
}
|
||||
36
libs/widgets/plugin/busy_iconplugin.h
Normal file
36
libs/widgets/plugin/busy_iconplugin.h
Normal file
@@ -0,0 +1,36 @@
|
||||
#ifndef busy_iconplugin_H
|
||||
#define busy_iconplugin_H
|
||||
|
||||
#include <QObject>
|
||||
#if QT_VERSION >= 0x050000
|
||||
# include <QtUiPlugin/QDesignerCustomWidgetInterface>
|
||||
#else
|
||||
# include <QDesignerCustomWidgetInterface>
|
||||
#endif
|
||||
|
||||
class BusyIconPlugin
|
||||
: public QObject
|
||||
, public QDesignerCustomWidgetInterface {
|
||||
Q_OBJECT
|
||||
Q_INTERFACES(QDesignerCustomWidgetInterface)
|
||||
|
||||
public:
|
||||
BusyIconPlugin(QObject * parent = 0);
|
||||
|
||||
bool isContainer() const;
|
||||
bool isInitialized() const;
|
||||
QIcon icon() const;
|
||||
QString domXml() const;
|
||||
QString group() const;
|
||||
QString includeFile() const;
|
||||
QString name() const;
|
||||
QString toolTip() const;
|
||||
QString whatsThis() const;
|
||||
QWidget * createWidget(QWidget * parent);
|
||||
void initialize(QDesignerFormEditorInterface * core);
|
||||
|
||||
private:
|
||||
bool m_initialized;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -40,7 +40,7 @@ QString CircleIndicatorPlugin::group() const {
|
||||
|
||||
|
||||
QIcon CircleIndicatorPlugin::icon() const {
|
||||
return QIcon(":/icons/circle-indicator.png");
|
||||
return QIcon(":/icons/widgets/circle-indicator.png");
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ QString CLineEditPlugin::group() const {
|
||||
|
||||
|
||||
QIcon CLineEditPlugin::icon() const {
|
||||
return QIcon(":/icons/clineedit.png");
|
||||
return QIcon(":/icons/widgets/clineedit.png");
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ QString ColorButtonPlugin::group() const {
|
||||
|
||||
|
||||
QIcon ColorButtonPlugin::icon() const {
|
||||
return QIcon(":/icons/colorbutton.png");
|
||||
return QIcon(":/icons/widgets/colorbutton.png");
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ QString EComboBoxPlugin::group() const {
|
||||
|
||||
|
||||
QIcon EComboBoxPlugin::icon() const {
|
||||
return QIcon(":/icons/ecombobox.png");
|
||||
return QIcon(":/icons/widgets/ecombobox.png");
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ QString EvalSpinBoxPlugin::group() const {
|
||||
|
||||
|
||||
QIcon EvalSpinBoxPlugin::icon() const {
|
||||
return QIcon(":/icons/evalspinbox.png");
|
||||
return QIcon(":/icons/widgets/evalspinbox.png");
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ QString ImageViewPlugin::group() const {
|
||||
|
||||
|
||||
QIcon ImageViewPlugin::icon() const {
|
||||
return QIcon(":/icons/view-preview.png");
|
||||
return QIcon(":/icons/widgets/image-view.png");
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@ QString IconedLabelPlugin::group() const {
|
||||
|
||||
|
||||
QIcon IconedLabelPlugin::icon() const {
|
||||
return QIcon();
|
||||
return QIcon(":/icons/widgets/iconed-label.png");
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#include "qad_widgets.h"
|
||||
|
||||
#include "busy_iconplugin.h"
|
||||
#include "circleindicatorplugin.h"
|
||||
#include "clineeditplugin.h"
|
||||
#include "colorbuttonplugin.h"
|
||||
@@ -42,7 +43,9 @@ QADWidgets::QADWidgets(QObject * parent): QObject(parent) {
|
||||
<< new ScrollSpinBoxPlugin(this)
|
||||
<< new RangeSliderPlugin(this)
|
||||
<< new StateIconPlugin(this)
|
||||
<< new CircleIndicatorPlugin(this);
|
||||
<< new CircleIndicatorPlugin(this)
|
||||
<< new BusyIconPlugin(this)
|
||||
;
|
||||
// clang-format on
|
||||
}
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ QString QCodeEditPlugin::group() const {
|
||||
|
||||
|
||||
QIcon QCodeEditPlugin::icon() const {
|
||||
return QIcon(":/icons/qcodeedit.png");
|
||||
return QIcon(":/icons/widgets/qcodeedit.png");
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ QString QPIConsolePlugin::group() const {
|
||||
|
||||
|
||||
QIcon QPIConsolePlugin::icon() const {
|
||||
return QIcon(":/icons/qpiconsole.png");
|
||||
return QIcon(":/icons/widgets/qpiconsole.png");
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ QString QVariantEditPlugin::group() const {
|
||||
|
||||
|
||||
QIcon QVariantEditPlugin::icon() const {
|
||||
return QIcon(":/icons/qvariantedit.png");
|
||||
return QIcon(":/icons/widgets/qvariantedit.png");
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ QString ScrollSpinBoxPlugin::group() const {
|
||||
|
||||
|
||||
QIcon ScrollSpinBoxPlugin::icon() const {
|
||||
return QIcon(":/icons/scroll_spin.png");
|
||||
return QIcon(":/icons/widgets/scrollspin.png");
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ QString SpinSliderPlugin::group() const {
|
||||
|
||||
|
||||
QIcon SpinSliderPlugin::icon() const {
|
||||
return QIcon(":/icons/spinslider.png");
|
||||
return QIcon(":/icons/widgets/spinslider.png");
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -156,7 +156,7 @@ QString StateIconPlugin::group() const {
|
||||
|
||||
|
||||
QIcon StateIconPlugin::icon() const {
|
||||
return QIcon(":/icons/led_on.png");
|
||||
return QIcon(":/icons/widgets/status-icon.png");
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,46 +1,49 @@
|
||||
<RCC>
|
||||
<qresource prefix="/">
|
||||
<file>../../icons/edit-clear-locationbar-rtl.png</file>
|
||||
<file>../../icons/edit-copy.png</file>
|
||||
<file>../../icons/edit-paste.png</file>
|
||||
<file>../../icons/edit-find.png</file>
|
||||
<file>../../icons/edit-delete.png</file>
|
||||
<file>../../icons/edit-clear.png</file>
|
||||
<file>../../icons/dialog-ok-apply.png</file>
|
||||
<file>../../icons/dialog-warning.png</file>
|
||||
<file>../../icons/tools-wizard.png</file>
|
||||
<file>../../icons/go-next.png</file>
|
||||
<file>../../icons/go-previous.png</file>
|
||||
<file>../../icons/item.png</file>
|
||||
<file>../../icons/item-add.png</file>
|
||||
<file>../../icons/node.png</file>
|
||||
<file>../../icons/node-add.png</file>
|
||||
<file>../../icons/list-add.png</file>
|
||||
<file>../../icons/list-remove.png</file>
|
||||
<file>../../icons/list-edit-apply.png</file>
|
||||
<file>../../icons/document-new.png</file>
|
||||
<file>../../icons/document-edit.png</file>
|
||||
<file>../../icons/document-close.png</file>
|
||||
<file>../../icons/document-save.png</file>
|
||||
<file>../../icons/document-save-as.png</file>
|
||||
<file>../../icons/document-save-all.png</file>
|
||||
<file>../../icons/document-revert.png</file>
|
||||
<file>../../icons/document-open.png</file>
|
||||
<file>../../icons/document-open-recent.png</file>
|
||||
<file>../../icons/alpha.png</file>
|
||||
<file>../../icons/chardialog.png</file>
|
||||
<file>../../icons/clineedit.png</file>
|
||||
<file>../../icons/colorbutton.png</file>
|
||||
<file>../../icons/ecombobox.png</file>
|
||||
<file>../../icons/evalspinbox.png</file>
|
||||
<file>../../icons/qcodeedit.png</file>
|
||||
<file>../../icons/qpiconsole.png</file>
|
||||
<file>../../icons/qvariantedit.png</file>
|
||||
<file>../../icons/spinslider.png</file>
|
||||
<file>../../icons/code-word.png</file>
|
||||
<file>../../icons/f1.png</file>
|
||||
<file>../../icons/scroll_spin.png</file>
|
||||
<file>../../icons/led_on.png</file>
|
||||
<file>../../icons/circle-indicator.png</file>
|
||||
</qresource>
|
||||
<qresource prefix="/">
|
||||
<file>../../icons/edit-clear-locationbar-rtl.png</file>
|
||||
<file>../../icons/edit-copy.png</file>
|
||||
<file>../../icons/edit-paste.png</file>
|
||||
<file>../../icons/edit-find.png</file>
|
||||
<file>../../icons/edit-delete.png</file>
|
||||
<file>../../icons/edit-clear.png</file>
|
||||
<file>../../icons/dialog-ok-apply.png</file>
|
||||
<file>../../icons/dialog-warning.png</file>
|
||||
<file>../../icons/tools-wizard.png</file>
|
||||
<file>../../icons/go-next.png</file>
|
||||
<file>../../icons/go-previous.png</file>
|
||||
<file>../../icons/item.png</file>
|
||||
<file>../../icons/item-add.png</file>
|
||||
<file>../../icons/node.png</file>
|
||||
<file>../../icons/node-add.png</file>
|
||||
<file>../../icons/list-add.png</file>
|
||||
<file>../../icons/list-remove.png</file>
|
||||
<file>../../icons/list-edit-apply.png</file>
|
||||
<file>../../icons/document-new.png</file>
|
||||
<file>../../icons/document-edit.png</file>
|
||||
<file>../../icons/document-close.png</file>
|
||||
<file>../../icons/document-save.png</file>
|
||||
<file>../../icons/document-save-as.png</file>
|
||||
<file>../../icons/document-save-all.png</file>
|
||||
<file>../../icons/document-revert.png</file>
|
||||
<file>../../icons/document-open.png</file>
|
||||
<file>../../icons/document-open-recent.png</file>
|
||||
<file>../../icons/alpha.png</file>
|
||||
<file>../../icons/code-word.png</file>
|
||||
<file>../../icons/f1.png</file>
|
||||
<file>../../icons/widgets/chardialog.png</file>
|
||||
<file>../../icons/widgets/clineedit.png</file>
|
||||
<file>../../icons/widgets/colorbutton.png</file>
|
||||
<file>../../icons/widgets/ecombobox.png</file>
|
||||
<file>../../icons/widgets/evalspinbox.png</file>
|
||||
<file>../../icons/widgets/qcodeedit.png</file>
|
||||
<file>../../icons/widgets/qpiconsole.png</file>
|
||||
<file>../../icons/widgets/qvariantedit.png</file>
|
||||
<file>../../icons/widgets/spinslider.png</file>
|
||||
<file>../../icons/widgets/scrollspin.png</file>
|
||||
<file>../../icons/widgets/circle-indicator.png</file>
|
||||
<file>../../icons/widgets/status-icon.png</file>
|
||||
<file>../../icons/widgets/image-view.png</file>
|
||||
<file>../../icons/widgets/busy-icon.png</file>
|
||||
<file>../../icons/widgets/iconed-label.png</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
||||
Reference in New Issue
Block a user