From 24f673a0146f4d70128df2766a6945e462e17946 Mon Sep 17 00:00:00 2001 From: Marco Martin Date: Thu, 21 Apr 2011 17:01:42 +0200 Subject: [PATCH] Revert "remove what can't still be merged" This reverts commit 21dfef4f330bbee22d5154cadeb6c92fb46e1c51. to resume the plasmacompoents directory that still need to be indipendent --- declarativeimports/CMakeLists.txt | 1 + .../plasmacomponents/BusyWidget.qml | 65 +++++++++++ .../plasmacomponents/FlashingLabel.qml | 76 +++++++++++++ declarativeimports/plasmacomponents/Frame.qml | 47 ++++++++ .../plasmacomponents/IconWidget.qml | 97 ++++++++++++++++ .../plasmacomponents/PushButton.qml | 95 ++++++++++++++++ .../plasmacomponents/ScrollBar.qml | 107 ++++++++++++++++++ .../plasmacomponents/ToolButton.qml | 79 +++++++++++++ declarativeimports/plasmacomponents/qmldir | 7 ++ declarativeimports/test/CMakeLists.txt | 29 +++++ declarativeimports/test/gallery.qml | 79 +++++++++++++ declarativeimports/test/test.cpp | 55 +++++++++ declarativeimports/test/testobject_p.h | 49 ++++++++ 13 files changed, 786 insertions(+) create mode 100644 declarativeimports/plasmacomponents/BusyWidget.qml create mode 100644 declarativeimports/plasmacomponents/FlashingLabel.qml create mode 100644 declarativeimports/plasmacomponents/Frame.qml create mode 100644 declarativeimports/plasmacomponents/IconWidget.qml create mode 100644 declarativeimports/plasmacomponents/PushButton.qml create mode 100644 declarativeimports/plasmacomponents/ScrollBar.qml create mode 100644 declarativeimports/plasmacomponents/ToolButton.qml create mode 100644 declarativeimports/plasmacomponents/qmldir create mode 100644 declarativeimports/test/CMakeLists.txt create mode 100644 declarativeimports/test/gallery.qml create mode 100644 declarativeimports/test/test.cpp create mode 100644 declarativeimports/test/testobject_p.h diff --git a/declarativeimports/CMakeLists.txt b/declarativeimports/CMakeLists.txt index 45b732160..5e2e20e2e 100644 --- a/declarativeimports/CMakeLists.txt +++ b/declarativeimports/CMakeLists.txt @@ -3,3 +3,4 @@ add_subdirectory(graphicslayouts) add_subdirectory(graphicswidgets) add_subdirectory(qtextracomponents) +install(DIRECTORY plasmacomponents/ DESTINATION ${IMPORTS_INSTALL_DIR}/org/kde/plasma/components) \ No newline at end of file diff --git a/declarativeimports/plasmacomponents/BusyWidget.qml b/declarativeimports/plasmacomponents/BusyWidget.qml new file mode 100644 index 000000000..3e076dba9 --- /dev/null +++ b/declarativeimports/plasmacomponents/BusyWidget.qml @@ -0,0 +1,65 @@ +/* +* Copyright (C) 2010 by Artur Duque de Souza +* +* 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. +*/ + +import Qt 4.7 +import org.kde.plasma.core 0.1 as PlasmaCore + +Item { + id: root + width: 100; height: 100 + + property bool running: true + property string label: "" + + PlasmaCore.Theme { + id: theme + } + + PlasmaCore.SvgItem { + id: widget + width: root.width + height: root.height + anchors.horizontalCenter: root.horizontalCenter + smooth: true + svg: PlasmaCore.Svg { imagePath: ("widgets/busywidget") } + + RotationAnimation on rotation { + from: 0 + to: 360 + target: widget + duration: 1500 + running: root.running + loops: Animation.Infinite + } + + // if you need to do anything while repainting + // do it inside this slot + function update() { + } + } + + Text { + id: label + text: root.label + color: theme.textColor + anchors.verticalCenter: root.verticalCenter + anchors.horizontalCenter: root.horizontalCenter + } + +} diff --git a/declarativeimports/plasmacomponents/FlashingLabel.qml b/declarativeimports/plasmacomponents/FlashingLabel.qml new file mode 100644 index 000000000..47e7f4446 --- /dev/null +++ b/declarativeimports/plasmacomponents/FlashingLabel.qml @@ -0,0 +1,76 @@ +/* + * Copyright (C) 2010 by Anselmo Lacerda Silveira de Melo + * + * 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. + */ + +import Qt 4.7 +import org.kde.plasma.core 0.1 as PlasmaCore + +Item { + id: root + width: 200 + height: 100 + + //API + property bool autohide: false + //### get font from theme when available + //### deal with QFont stuff in a proper way + property string font: "Arial" + property string color: theme.textColor + property int duration: 3000 + + /*### actually the FlashingLabel in C++ doesn't have + this as part of its API, either text or pixmap is + set only when flash is called.*/ + property string text: "" + + //### + PlasmaCore.Theme { + id: theme + } + + Text { + id: label + text: root.text + color: root.color + font.family: root.font + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + anchors.verticalCenter: root.verticalCenter + anchors.horizontalCenter: root.horizontalCenter + } + + PropertyAnimation { + id: fade + target: label; + property: "opacity"; + duration: root.duration; + to: 0 + } + + function flash(text, duration, alignment) { + if (text) + root.text = text + if (duration) + root.duration = duration + if (alignment) + label.horizontalAlignment = alignment + fade.start() + } + + //###TODO: flash pixmap +} diff --git a/declarativeimports/plasmacomponents/Frame.qml b/declarativeimports/plasmacomponents/Frame.qml new file mode 100644 index 000000000..c33558115 --- /dev/null +++ b/declarativeimports/plasmacomponents/Frame.qml @@ -0,0 +1,47 @@ +/* + * Copyright 2010 Marco Martin + * + * 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. + */ +import Qt 4.7 +import org.kde.plasma.core 0.1 as PlasmaCore + +PlasmaCore.FrameSvgItem { + id : background + imagePath: "widgets/frame" + prefix: "plain" + + width: childrenRect.width + height: childrenRect.height + + property alias padding: paddingRectangle; + signal clicked; + + Item { + id: paddingRectangle + anchors.fill: parent + anchors.leftMargin: background.margins.left + anchors.topMargin: background.margins.top + anchors.rightMargin: background.margins.right + anchors.bottomMargin: background.margins.bottom + } + + MouseArea { + id: itemMouse + anchors.fill: background + onClicked: background.clicked() + } +} diff --git a/declarativeimports/plasmacomponents/IconWidget.qml b/declarativeimports/plasmacomponents/IconWidget.qml new file mode 100644 index 000000000..ca26ad1de --- /dev/null +++ b/declarativeimports/plasmacomponents/IconWidget.qml @@ -0,0 +1,97 @@ +/* +* Copyright (C) 2010 by Artur Duque de Souza +* +* 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. +*/ + +import Qt 4.7 +import org.kde.plasma.core 0.1 as PlasmaCore + +Item { + id: root + width: 100; height: 100 + + property string text: "" + property string infoText: "" + + property string svg: "" + property string icon: "" + + property bool drawBackground: true + property int numDisplayLines: 1 + //property QColor textBackgroundColor: "" + + signal pressed(bool down) + signal clicked() + signal doubleClicked() + signal activated() + signal changed() + + PlasmaCore.Theme { + id: theme + } + + PlasmaCore.FrameSvgItem { + id: background + visible: root.drawBackground + anchors.fill: root + + imagePath: "widgets/viewitem" + prefix: mainMouseArea.pressed == true ? "selected" : "hover" + } + + + PlasmaCore.SvgItem { + id: svg + visible: root.svg != "" + width: root.width - label.height + height: root.height - label.height + anchors.horizontalCenter: root.horizontalCenter + svg: PlasmaCore.Svg { imagePath: root.svg } + + // if you need to do anything while repainting + // do it inside this slot + function update() { + } + } + + Image { + id: icon + visible: root.icon != "" + width: root.width - label.height + height: root.height - label.height + } + + Text { + id: label + text: root.text + color: theme.textColor + anchors.top: icon.bottom + anchors.horizontalCenter: root.horizontalCenter + } + + MouseArea { + id: mainMouseArea + hoverEnabled: true + anchors.fill: parent + + onEntered: { + } + + onExited: { + } + } +} diff --git a/declarativeimports/plasmacomponents/PushButton.qml b/declarativeimports/plasmacomponents/PushButton.qml new file mode 100644 index 000000000..2452faf4a --- /dev/null +++ b/declarativeimports/plasmacomponents/PushButton.qml @@ -0,0 +1,95 @@ +/* +* Copyright (C) 2010 by Marco Martin +* +* 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. +*/ + +import Qt 4.7 +import org.kde.plasma.core 0.1 as PlasmaCore + +Item { + width: 50 + height:20 + + property string text + signal clicked + + id: button + PlasmaCore.FrameSvgItem { + id: hover + anchors.fill: parent + opacity: 0 + anchors.leftMargin: -margins.left + anchors.topMargin: -margins.top + anchors.rightMargin: -margins.right + anchors.bottomMargin: -margins.bottom + imagePath: "widgets/button" + prefix: "hover" + Behavior on opacity { + PropertyAnimation { duration: 250 } + } + } + PlasmaCore.FrameSvgItem { + id: shadow + anchors.fill: parent + anchors.leftMargin: -margins.left + anchors.topMargin: -margins.top + anchors.rightMargin: -margins.right + anchors.bottomMargin: -margins.bottom + imagePath: "widgets/button" + prefix: "shadow" + Behavior on opacity { + PropertyAnimation { duration: 250 } + } + } + + PlasmaCore.FrameSvgItem { + id: surface + anchors.fill: parent + imagePath: "widgets/button" + prefix: "normal" + } + + Text { + text: button.text + anchors.fill: parent + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + } + + MouseArea { + anchors.fill: parent + hoverEnabled: true + + onPressed: { + surface.prefix = "pressed" + } + onReleased: { + surface.prefix = "normal" + button.clicked() + } + onEntered: { + shadow.opacity = 0 + hover.opacity = 1 + } + onExited: { + shadow.opacity = 1 + hover.opacity = 0 + } + } + +} + diff --git a/declarativeimports/plasmacomponents/ScrollBar.qml b/declarativeimports/plasmacomponents/ScrollBar.qml new file mode 100644 index 000000000..16084d8b4 --- /dev/null +++ b/declarativeimports/plasmacomponents/ScrollBar.qml @@ -0,0 +1,107 @@ +/* +* Copyright (C) 2010 by Marco Martin +* +* 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. +*/ + +import Qt 4.7 +import org.kde.plasma.core 0.1 as PlasmaCore + + +PlasmaCore.FrameSvgItem { + id: scrollBar + width: orientation==Qt.Horizontal?200:22 + height: orientation==Qt.Horizontal?22:200 + + property int minimum: 0 + property int maximum: 100 + property int value: 0 + property string orientation: Qt.Horizontal + + onValueChanged: { + if (drag.state != "dragging") { + if (orientation == Qt.Horizontal) { + drag.x = (value/(maximum-minimum))*(scrollBar.width - drag.width) + } else { + drag.y = (value/(maximum-minimum))*(scrollBar.height - drag.height) + } + } + } + + imagePath: "widgets/scrollbar" + prefix: orientation==Qt.Horizontal?"background-horizontal":"background-vertical" + + PlasmaCore.FrameSvgItem { + id: drag + anchors.top: orientation==Qt.Horizontal?parent.top:null + anchors.bottom: orientation==Qt.Horizontal?parent.bottom:null + anchors.left: orientation==Qt.Horizontal?null:parent.left + anchors.right: orientation==Qt.Horizontal?null:parent.right + state: "normal" + width: (orientation == Qt.Horizontal)?Math.max(12, (parent.width*1/(scrollBar.maximum-scrollBar.minimum))):0 + height: (orientation != Qt.Horizontal)?Math.max(12, (parent.height*1/(scrollBar.maximum-scrollBar.minimum))):0 + x: 0 + y: 0 + onXChanged: { + if (orientation == Qt.Horizontal && state == "dragging") { + value = (maximum - minimum)*(x/(scrollBar.width-width)) + } + } + onYChanged: { + if (orientation != Qt.Horizontal && state == "dragging") { + value = (maximum - minimum)*(x/(scrollBar.height-height)) + } + } + + Behavior on x { + NumberAnimation { + duration: 200 + } + } + Behavior on y { + NumberAnimation { + duration: 200 + } + } + + imagePath: "widgets/scrollbar" + prefix: "slider" + MouseArea { + anchors.fill: parent + hoverEnabled: true + + drag.target: parent; + drag.axis: orientation == Qt.Horizontal?"XAxis":"YAxis" + drag.minimumX: 0; + drag.maximumX: scrollBar.width-drag.width; + drag.minimumY: 0; + drag.maximumY: scrollBar.height-drag.height; + + onEntered: drag.prefix = "mouseover-slider" + onExited: drag.prefix = "slider" + onPressed: { + drag.prefix = "sunken-slider" + drag.state = "dragging" + } + onReleased: { + containsMouse?drag.prefix = "mouseover-slider":drag.prefix = "slider" + drag.state = "normal" + } + } + } +} + + diff --git a/declarativeimports/plasmacomponents/ToolButton.qml b/declarativeimports/plasmacomponents/ToolButton.qml new file mode 100644 index 000000000..86e51ec8c --- /dev/null +++ b/declarativeimports/plasmacomponents/ToolButton.qml @@ -0,0 +1,79 @@ +/* +* Copyright (C) 2010 by Marco Martin +* +* 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. +*/ + +import Qt 4.7 +import org.kde.plasma.core 0.1 as PlasmaCore + +Item { + width: 50 + height:20 + + property string text + property bool down: false + signal clicked + + id: button + + PlasmaCore.FrameSvgItem { + id: surface + anchors.fill: parent + imagePath: "widgets/button" + prefix: down?"pressed":"normal" + opacity: down?1:0 + Behavior on opacity { + PropertyAnimation { duration: 250 } + } + } + + Text { + text: button.text + anchors.fill: parent + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + } + + MouseArea { + anchors.fill: parent + hoverEnabled: true + + onPressed: { + if (!down) { + surface.prefix = "pressed" + } + } + onReleased: { + if (!down) { + surface.prefix = "normal" + } + button.clicked() + } + onEntered: { + if (!down) { + surface.opacity = 1 + } + } + onExited: { + if (!down) { + surface.opacity = 0 + } + } + } + +} + diff --git a/declarativeimports/plasmacomponents/qmldir b/declarativeimports/plasmacomponents/qmldir new file mode 100644 index 000000000..f2d175092 --- /dev/null +++ b/declarativeimports/plasmacomponents/qmldir @@ -0,0 +1,7 @@ +BusyWidget 0.1 BusyWidget.qml +FlashingLabel 0.1 FlashingLabel.qml +Frame 0.1 Frame.qml +IconWidget 0.1 IconWidget.qml +PushButton 0.1 PushButton.qml +ScrollBar 0.1 ScrollBar.qml +ToolButton 0.1 ToolButton.qml diff --git a/declarativeimports/test/CMakeLists.txt b/declarativeimports/test/CMakeLists.txt new file mode 100644 index 000000000..7925e2d59 --- /dev/null +++ b/declarativeimports/test/CMakeLists.txt @@ -0,0 +1,29 @@ +project(components_test) + +find_package(KDE4 REQUIRED) + +include(KDE4Defaults) + +add_definitions (${QT_DEFINITIONS} ${KDE4_DEFINITIONS}) + +include_directories( + ${CMAKE_SOURCE_DIR} + ${CMAKE_BINARY_DIR} + ${KDE4_INCLUDES} + ) + + +set(components_test_TEST_SRCS + test.cpp) + +kde4_add_executable(components_test ${components_test_TEST_SRCS}) + +target_link_libraries(components_test kdeclarative ${KDE4_KDECORE_LIBS} ${QT_QTDECLARATIVE_LIBRARY}) + +## install + + +install(TARGETS components_test EXPORT kdelibsLibraryTargets ${INSTALL_TARGETS_DEFAULT_ARGS}) + + +install(FILES "gallery.qml" DESTINATION ${CMAKE_BINARY_DIR}/widgets/components) \ No newline at end of file diff --git a/declarativeimports/test/gallery.qml b/declarativeimports/test/gallery.qml new file mode 100644 index 000000000..19b524b53 --- /dev/null +++ b/declarativeimports/test/gallery.qml @@ -0,0 +1,79 @@ +/* + * Copyright (C) 2010 by Anselmo Lacerda Silveira de Melo + * + * 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. + */ + +import Qt 4.7 +import org.kde.plasma.components 0.1 as PlasmaComponents +import org.kde.plasma.core 0.1 as PlasmaCore +import org.kde.qtextracomponents 0.1 as QtExtraComponents + +Rectangle { + id: test + width: 400 + height: 500 + color: "tomato" + + Column { + x: 10 + anchors.fill: parent + spacing: 5 + + PlasmaComponents.FlashingLabel { + id: label + font: "Times" + } + + Row { + id: busyRow + + Repeater { + model: 8 + PlasmaComponents.BusyWidget { + width: 50 + height: 50 + } + } + } + + PlasmaComponents.PushButton { + text: "Ok" + onClicked: {print("Clicked!"); scrollBar.value=35} + } + PlasmaComponents.ScrollBar { + id: scrollBar + } + PlasmaComponents.ScrollBar { + id: scrollBarV + orientation: Qt.Vertical + } + QtExtraComponents.QPixmapItem { + width:200 + height:100 + id: pixmapTest + } + } + + PlasmaCore.Svg { + id: svgTest + imagePath: "widgets/clock" + } + Component.onCompleted: { + label.flash("I am a FlashingLabel!!!"); + pixmapTest.pixmap = svgTest.pixmap(); + } +} diff --git a/declarativeimports/test/test.cpp b/declarativeimports/test/test.cpp new file mode 100644 index 000000000..792f4144a --- /dev/null +++ b/declarativeimports/test/test.cpp @@ -0,0 +1,55 @@ +/* + * Copyright 2011 Marco Martin + * + * 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 +#include +#include +#include + +#include + + +int main(int argc, char *argv[]) +{ + QApplication app(argc, argv); + + QDeclarativeView view; + QDeclarativeContext *context = view.rootContext(); + context->setContextProperty("backgroundColor", + QColor(Qt::yellow)); + + KDeclarative kdeclarative; + kdeclarative.setDeclarativeEngine(view.engine()); + kdeclarative.initialize(); + //binds things like kconfig and icons + kdeclarative.setupBindings(); + + //If all gone well, the QScriptEngine has been extracted + QScriptEngine *scriptEngine = kdeclarative.scriptEngine(); + Q_ASSERT(scriptEngine); + + QScriptValue global = scriptEngine->globalObject(); + + view.setSource(QUrl::fromLocalFile("gallery.qml")); + view.show(); + + return app.exec(); +} + +#include "testobject_p.moc" diff --git a/declarativeimports/test/testobject_p.h b/declarativeimports/test/testobject_p.h new file mode 100644 index 000000000..005e10584 --- /dev/null +++ b/declarativeimports/test/testobject_p.h @@ -0,0 +1,49 @@ +/* + * Copyright 2011 Marco Martin + * + * 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 TESTOBJECT_P_H +#define TESTOBJECT_P_H + +#include + +class TestObject : public QObject +{ + Q_OBJECT + Q_PROPERTY(QString prop READ prop WRITE setProp NOTIFY propChanged) + +public: + void setProp(const QString &prop) + { + m_prop = prop; + emit propChanged(); + } + + QString prop() const + { + return m_prop; + } + +Q_SIGNALS: + void propChanged(); + +private: + QString m_prop; +}; + +#endif