From 50889239d6e9785c1182839e3d4645c524cc9fc9 Mon Sep 17 00:00:00 2001 From: Chani Armitage Date: Mon, 19 May 2008 19:10:58 +0000 Subject: [PATCH] add combobox svn path=/trunk/KDE/kdebase/workspace/libs/plasma/; revision=809932 --- CMakeLists.txt | 2 + includes/ComboBox | 1 + widgets/combobox.cpp | 98 ++++++++++++++++++++++++++++++++++++++++++++ widgets/combobox.h | 88 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 189 insertions(+) create mode 100644 includes/ComboBox create mode 100644 widgets/combobox.cpp create mode 100644 widgets/combobox.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 0e9f3b86d..92eeabbbd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -60,6 +60,7 @@ set(plasma_LIB_SRCS uiloader.cpp view.cpp widgets/checkbox.cpp + widgets/combobox.cpp widgets/flash.cpp widgets/icon.cpp widgets/label.cpp @@ -147,6 +148,7 @@ install(FILES install(FILES widgets/checkbox.h + widgets/combobox.h widgets/flash.h widgets/icon.h widgets/label.h diff --git a/includes/ComboBox b/includes/ComboBox new file mode 100644 index 000000000..b7c6fa784 --- /dev/null +++ b/includes/ComboBox @@ -0,0 +1 @@ +#include "../../plasma/combobox.h" diff --git a/widgets/combobox.cpp b/widgets/combobox.cpp new file mode 100644 index 000000000..d75b742d4 --- /dev/null +++ b/widgets/combobox.cpp @@ -0,0 +1,98 @@ +/* + * 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 "combobox.h" + +#include +#include + +#include + +#include "theme.h" +#include "svg.h" + +namespace Plasma +{ + +class ComboBox::Private +{ +public: + Private() + { + } + + ~Private() + { + } +}; + +ComboBox::ComboBox(QGraphicsWidget *parent) + : QGraphicsProxyWidget(parent), + d(new Private) +{ + QComboBox* native = new QComboBox; + connect(native, SIGNAL(activated(const QString &)), this, SIGNAL(activated(const QString &))); + setWidget(native); + native->setAttribute(Qt::WA_NoSystemBackground); +} + +ComboBox::~ComboBox() +{ + delete d; +} + +QString ComboBox::text() const +{ + return static_cast(widget())->currentText(); +} + +void ComboBox::setStylesheet(const QString &stylesheet) +{ + widget()->setStyleSheet(stylesheet); +} + +QString ComboBox::stylesheet() +{ + return widget()->styleSheet(); +} + +QComboBox* ComboBox::nativeWidget() const +{ + return static_cast(widget()); +} + +void ComboBox::addItem(const QString &text) +{ + static_cast(widget())->addItem(text); +} + +void ComboBox::clear() +{ + static_cast(widget())->clear(); +} + +void ComboBox::resizeEvent(QGraphicsSceneResizeEvent *event) +{ + QGraphicsProxyWidget::resizeEvent(event); +} + +} // namespace Plasma + +#include + diff --git a/widgets/combobox.h b/widgets/combobox.h new file mode 100644 index 000000000..15b63d6a3 --- /dev/null +++ b/widgets/combobox.h @@ -0,0 +1,88 @@ +/* + * 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 QComboBox; + +namespace Plasma +{ + +class ComboBox : public QGraphicsProxyWidget +{ + Q_OBJECT + + Q_PROPERTY(QGraphicsWidget* parentWidget READ parentWidget) + Q_PROPERTY(QString text READ text) + Q_PROPERTY(QString stylesheet READ stylesheet WRITE setStylesheet) + Q_PROPERTY(QComboBox* nativeWidget READ nativeWidget) + +public: + explicit ComboBox(QGraphicsWidget *parent = 0); + ~ComboBox(); + + /** + * @return the display text + */ + QString text() const; + + /** + * Sets the style sheet used to control the visual display of this ComboBox + * + * @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 ComboBox + */ + QComboBox* nativeWidget() const; + + /** + * Adds an item to the combobox with the given text. The + * item is appended to the list of existing items. + */ + void addItem(const QString &text); + +public Q_SLOTS: + void clear(); + +Q_SIGNALS: + void activated(const QString & text); + +protected: + void resizeEvent(QGraphicsSceneResizeEvent *event); + +private: + class Private; + Private * const d; +}; + +} // namespace Plasma + +#endif // multiple inclusion guard