aboutsummaryrefslogtreecommitdiff
path: root/src-qt5/core/lumina-desktop/panel-plugins/RotateToolButton.h
diff options
context:
space:
mode:
Diffstat (limited to 'src-qt5/core/lumina-desktop/panel-plugins/RotateToolButton.h')
-rw-r--r--src-qt5/core/lumina-desktop/panel-plugins/RotateToolButton.h58
1 files changed, 58 insertions, 0 deletions
diff --git a/src-qt5/core/lumina-desktop/panel-plugins/RotateToolButton.h b/src-qt5/core/lumina-desktop/panel-plugins/RotateToolButton.h
new file mode 100644
index 00000000..1c8085f6
--- /dev/null
+++ b/src-qt5/core/lumina-desktop/panel-plugins/RotateToolButton.h
@@ -0,0 +1,58 @@
+//===========================================
+// Lumina Desktop source code
+// Copyright (c) 2016, Ken Moore
+// Available under the 3-clause BSD license
+// See the LICENSE file for full details
+//===========================================
+// This is a simple subclass of a QToolButton so it can
+// provice text rotated vertically as needed
+//===========================================
+#ifndef _LUMINA_DESKTOP_ROTATE_TOOLBUTTON_H
+#define _LUMINA_DESKTOP_ROTATE_TOOLBUTTON_H
+
+#include <QStylePainter>
+#include <QStyleOptionToolButton>
+#include <QToolButton>
+#include <QTransform>
+
+class RotateToolButton : public QToolButton{
+ Q_OBJECT
+
+private:
+ int rotate_degrees;
+ void paintEvent(QPaintEvent*){
+ /* NOTE: This is what a standard QToolButton performs (peeked at Qt source code for this tidbit)
+ QStylePainter p(this);
+ QStyleOptionToolButton opt;
+ initStyleOption(&opt);
+ p.drawComplexControl(QStyle::CC_ToolButton, opt);
+ */
+ QStylePainter p(this);
+ QStyleOptionToolButton opt;
+ initStyleOption(&opt);
+ //Apply the rotation matrix to the painter before starting the paint
+ QTransform trans = QTransform( p.transform() ).rotate(rotate_degrees);
+ p.setTransform(trans, false); //merging already taken care of
+ //Now do the normal painting procedure
+ p.drawComplexControl(QStyle::CC_ToolButton, opt);
+ }
+
+public:
+ RotateToolButton(QWidget *parent = Q_NULLPTR) : QToolButton(parent){
+ rotate_degrees = 0; //no rotation initially
+ }
+
+ void setRotation(int degrees){
+ rotate_degrees = degrees;
+ this->update(); //trigger a paint event
+ }
+
+ /*virtual void setText(QString text){
+ this->setText(text);
+ if(rotate_degrees !=0){
+ this->setSizeHint( this->sizeHint()
+ }
+ }*/
+};
+
+#endif
bgstack15