diff --git a/CMakeLists.txt b/CMakeLists.txt index 826f12314..de876d0ee 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -123,6 +123,7 @@ set(plasma_LIB_SRCS widgets/toolbutton.cpp widgets/busywidget.cpp widgets/scrollwidget.cpp + widgets/separator.cpp widgets/svgwidget.cpp widgets/tabbar.cpp widgets/textbrowser.cpp @@ -262,6 +263,7 @@ install(FILES widgets/slider.h widgets/spinbox.h widgets/busywidget.h + widgets/separator.h widgets/svgwidget.h widgets/scrollwidget.h widgets/tabbar.h diff --git a/widgets/separator.cpp b/widgets/separator.cpp new file mode 100644 index 000000000..c787b90f2 --- /dev/null +++ b/widgets/separator.cpp @@ -0,0 +1,78 @@ +/* + * Copyright 2009 by Davide Bettio + * + * 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 "separator.h" + +#include +#include + +#include "svg.h" + +namespace Plasma +{ +class SeparatorPrivate +{ + public: + Svg *svg; + Qt::Orientation orientation; +}; + +Separator::Separator(QGraphicsItem *parent, Qt::WindowFlags wFlags) + : QGraphicsWidget(parent, wFlags), + d(new SeparatorPrivate()) +{ + d->svg = new Svg(); + d->svg->setImagePath("widgets/line"); + d->svg->setContainsMultipleImages(true); + + setMaximumHeight(3); +} + +Separator::~Separator() +{ + delete d; +} + +void Separator::setOrientation(Qt::Orientation orientation) +{ + d->orientation = orientation; +} + +Qt::Orientation Separator::orientation() +{ + return d->orientation; +} + +void Separator::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) +{ + Q_UNUSED(option); + Q_UNUSED(widget); + + if (d->svg){ + if (d->orientation == Qt::Horizontal){ + d->svg->paint(painter, boundingRect(), "horizontal-line"); + }else{ + d->svg->paint(painter, boundingRect(), "vertical-line"); + } + } +} + +} // Plasma namespace + +#include "separator.moc" diff --git a/widgets/separator.h b/widgets/separator.h new file mode 100644 index 000000000..1c723402f --- /dev/null +++ b/widgets/separator.h @@ -0,0 +1,59 @@ +/* + * Copyright 2009 by Davide Bettio + * + * 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_SEPARATOR_H +#define PLASMA_SEPARATOR_H + +#include + +#include + +#include + +namespace Plasma +{ + +class SeparatorPrivate; + +/** + * @since 4.4 + */ +class PLASMA_EXPORT Separator : public QGraphicsWidget +{ + Q_OBJECT + + Q_PROPERTY(Qt::Orientation orientation READ orientation WRITE setOrientation) + + public: + explicit Separator(QGraphicsItem *parent = 0, Qt::WindowFlags wFlags = 0); + virtual ~Separator(); + + void setOrientation(Qt::Orientation orientation); + Qt::Orientation orientation(); + + protected: + void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); + + private: + SeparatorPrivate * const d; +}; + +} // Plasma namespace + +#endif // multiple inclusion guard