diff --git a/CMakeLists.txt b/CMakeLists.txt index 92eeabbbd..13b82b369 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -62,6 +62,7 @@ set(plasma_LIB_SRCS widgets/checkbox.cpp widgets/combobox.cpp widgets/flash.cpp + widgets/groupbox.cpp widgets/icon.cpp widgets/label.cpp widgets/lineedit.cpp @@ -150,6 +151,7 @@ install(FILES widgets/checkbox.h widgets/combobox.h widgets/flash.h + widgets/groupbox.h widgets/icon.h widgets/label.h widgets/lineedit.h diff --git a/includes/GroupBox b/includes/GroupBox new file mode 100644 index 000000000..8e35f2118 --- /dev/null +++ b/includes/GroupBox @@ -0,0 +1 @@ +#include "../../plasma/groupbox.h" diff --git a/widgets/groupbox.cpp b/widgets/groupbox.cpp new file mode 100644 index 000000000..d4d52c5c4 --- /dev/null +++ b/widgets/groupbox.cpp @@ -0,0 +1,92 @@ +/* + * Copyright 2008 Aaron Seigo + * + * 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. + */ + +#include "groupbox.h" + +#include +#include + +#include + +#include "theme.h" +#include "svg.h" + +namespace Plasma +{ + +class GroupBox::Private +{ +public: + Private() + { + } + + ~Private() + { + } +}; + +GroupBox::GroupBox(QGraphicsWidget *parent) + : QGraphicsProxyWidget(parent), + d(new Private) +{ + QGroupBox* native = new QGroupBox; + setWidget(native); + native->setAttribute(Qt::WA_NoSystemBackground); +} + +GroupBox::~GroupBox() +{ + delete d; +} + +void GroupBox::setText(const QString &text) +{ + static_cast(widget())->setTitle(text); +} + +QString GroupBox::text() const +{ + return static_cast(widget())->title(); +} + +void GroupBox::setStylesheet(const QString &stylesheet) +{ + widget()->setStyleSheet(stylesheet); +} + +QString GroupBox::stylesheet() +{ + return widget()->styleSheet(); +} + +QGroupBox* GroupBox::nativeWidget() const +{ + return static_cast(widget()); +} + +void GroupBox::resizeEvent(QGraphicsSceneResizeEvent *event) +{ + QGraphicsProxyWidget::resizeEvent(event); +} + +} // namespace Plasma + +#include + diff --git a/widgets/groupbox.h b/widgets/groupbox.h new file mode 100644 index 000000000..b89ab1ec5 --- /dev/null +++ b/widgets/groupbox.h @@ -0,0 +1,85 @@ +/* + * Copyright 2008 Aaron Seigo + * + * 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__H +#define PLASMA__H + +#include + +class QGroupBox; + +namespace Plasma +{ + +class GroupBox : public QGraphicsProxyWidget +{ + Q_OBJECT + + Q_PROPERTY(QGraphicsWidget* parentWidget READ parentWidget) + Q_PROPERTY(QString text READ text WRITE setText) + Q_PROPERTY(QString stylesheet READ stylesheet WRITE setStylesheet) + Q_PROPERTY(QGroupBox* nativeWidget READ nativeWidget) + +public: + explicit GroupBox(QGraphicsWidget *parent = 0); + ~GroupBox(); + + /** + * Sets the display text for this GroupBox + * + * @arg text the text to display; should be translated. + */ + void setText(const QString &text); + + /** + * @return the display text + */ + QString text() const; + + /** + * Sets the style sheet used to control the visual display of this GroupBox + * + * @arg stylehseet a CSS string + */ + void setStylesheet(const QString &stylesheet); + + /** + * @return the stylesheet currently used with this widget + */ + QString stylesheet(); + + /** + * @return the native widget wrapped by this GroupBox + */ + QGroupBox* nativeWidget() const; + +Q_SIGNALS: + +protected: + void resizeEvent(QGraphicsSceneResizeEvent *event); + +private: + class Private; + Private * const d; +}; + +} // namespace Plasma + +#endif // multiple inclusion guard