From cde1151099d6138aec23ac1c880d6ed13d1aba33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Alvarez?= Date: Thu, 10 Feb 2011 14:41:47 -0300 Subject: [PATCH 1/4] Merged scratch/mart/plasma-components into subtree plasma/declarativeimports. --- .../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 ++ .../qtextracomponents/CMakeLists.txt | 26 +++++ .../qtextracomponents/qiconitem.cpp | 82 ++++++++++++++ .../qtextracomponents/qiconitem.h | 49 ++++++++ .../qtextracomponents/qimageitem.cpp | 94 +++++++++++++++ .../qtextracomponents/qimageitem.h | 58 ++++++++++ declarativeimports/qtextracomponents/qmldir | 3 + .../qtextracomponents/qpixmapitem.cpp | 94 +++++++++++++++ .../qtextracomponents/qpixmapitem.h | 58 ++++++++++ .../qtextracomponentsplugin.cpp | 41 +++++++ .../qtextracomponentsplugin.h | 38 +++++++ declarativeimports/test/CMakeLists.txt | 29 +++++ declarativeimports/test/gallery.qml | 79 +++++++++++++ declarativeimports/test/test.cpp | 55 +++++++++ declarativeimports/test/testobject_p.h | 49 ++++++++ 22 files changed, 1328 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/qtextracomponents/CMakeLists.txt create mode 100644 declarativeimports/qtextracomponents/qiconitem.cpp create mode 100644 declarativeimports/qtextracomponents/qiconitem.h create mode 100644 declarativeimports/qtextracomponents/qimageitem.cpp create mode 100644 declarativeimports/qtextracomponents/qimageitem.h create mode 100644 declarativeimports/qtextracomponents/qmldir create mode 100644 declarativeimports/qtextracomponents/qpixmapitem.cpp create mode 100644 declarativeimports/qtextracomponents/qpixmapitem.h create mode 100644 declarativeimports/qtextracomponents/qtextracomponentsplugin.cpp create mode 100644 declarativeimports/qtextracomponents/qtextracomponentsplugin.h 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/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/qtextracomponents/CMakeLists.txt b/declarativeimports/qtextracomponents/CMakeLists.txt new file mode 100644 index 000000000..3264ae8e2 --- /dev/null +++ b/declarativeimports/qtextracomponents/CMakeLists.txt @@ -0,0 +1,26 @@ +project(qtextracomponents) + +include(KDE4Defaults) + +set(qtextracomponents_SRCS + qtextracomponentsplugin.cpp + qpixmapitem.cpp + qimageitem.cpp + qiconitem.cpp + ) + +INCLUDE_DIRECTORIES( + ${CMAKE_SOURCE_DIR} + ${CMAKE_BINARY_DIR} + ${KDE4_INCLUDES} +) + +qt4_automoc(${qtextracomponents_SRCS}) + + +add_library(qtextracomponentsplugin SHARED ${qtextracomponents_SRCS}) +target_link_libraries(qtextracomponentsplugin ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY} ${QT_QTDECLARATIVE_LIBRARY}) + +install(TARGETS qtextracomponentsplugin DESTINATION ${IMPORTS_INSTALL_DIR}/org/kde/qtextracomponents) + +install(FILES qmldir DESTINATION ${IMPORTS_INSTALL_DIR}/org/kde/qtextracomponents) diff --git a/declarativeimports/qtextracomponents/qiconitem.cpp b/declarativeimports/qtextracomponents/qiconitem.cpp new file mode 100644 index 000000000..e54c49b33 --- /dev/null +++ b/declarativeimports/qtextracomponents/qiconitem.cpp @@ -0,0 +1,82 @@ +/* + * 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 "qiconitem.h" + +#include + + +QIconItem::QIconItem(QDeclarativeItem *parent) + : QDeclarativeItem(parent), + m_smooth(false) +{ + setFlag(QGraphicsItem::ItemHasNoContents, false); +} + + +QIconItem::~QIconItem() +{ +} + +void QIconItem::setIcon(const QIcon &icon) +{ + m_icon = icon; + update(); +} + +QIcon QIconItem::icon() const +{ + return m_icon; +} + +void QIconItem::setSmooth(const bool smooth) +{ + if (smooth == m_smooth) { + return; + } + m_smooth = smooth; + update(); +} + +bool QIconItem::smooth() const +{ + return m_smooth; +} + +void QIconItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) +{ + Q_UNUSED(option); + Q_UNUSED(widget); + + if (m_icon.isNull()) { + return; + } + //do without painter save, faster and the support can be compiled out + const bool wasAntiAlias = painter->testRenderHint(QPainter::Antialiasing); + const bool wasSmoothTransform = painter->testRenderHint(QPainter::SmoothPixmapTransform); + painter->setRenderHint(QPainter::Antialiasing, m_smooth); + painter->setRenderHint(QPainter::SmoothPixmapTransform, m_smooth); + + m_icon.paint(painter, boundingRect().toRect()); + painter->setRenderHint(QPainter::Antialiasing, wasAntiAlias); + painter->setRenderHint(QPainter::SmoothPixmapTransform, wasSmoothTransform); +} + + +#include "qiconitem.moc" diff --git a/declarativeimports/qtextracomponents/qiconitem.h b/declarativeimports/qtextracomponents/qiconitem.h new file mode 100644 index 000000000..9972a98fe --- /dev/null +++ b/declarativeimports/qtextracomponents/qiconitem.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 General Public License as published by * + * the Free Software Foundation; either version 2 of the License, 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 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 QICONITEM_H +#define QICONITEM_H + +#include +#include + +class QIconItem : public QDeclarativeItem +{ + Q_OBJECT + + Q_PROPERTY(QIcon icon READ icon WRITE setIcon) + Q_PROPERTY(bool smooth READ smooth WRITE setSmooth) + +public: + QIconItem(QDeclarativeItem *parent=0); + ~QIconItem(); + + void setIcon(const QIcon &icon); + QIcon icon() const; + + void setSmooth(const bool smooth); + bool smooth() const; + + void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); + +private: + QIcon m_icon; + bool m_smooth; +}; + +#endif diff --git a/declarativeimports/qtextracomponents/qimageitem.cpp b/declarativeimports/qtextracomponents/qimageitem.cpp new file mode 100644 index 000000000..086449d19 --- /dev/null +++ b/declarativeimports/qtextracomponents/qimageitem.cpp @@ -0,0 +1,94 @@ +/* + * 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 "qimageitem.h" + +#include + + +QImageItem::QImageItem(QDeclarativeItem *parent) + : QDeclarativeItem(parent), + m_smooth(false) +{ + setFlag(QGraphicsItem::ItemHasNoContents, false); +} + + +QImageItem::~QImageItem() +{ +} + +void QImageItem::setImage(const QImage &image) +{ + m_image = image; + update(); + emit nativeWidthChanged(); + emit nativeHeightChanged(); +} + +QImage QImageItem::image() const +{ + return m_image; +} + +void QImageItem::setSmooth(const bool smooth) +{ + if (smooth == m_smooth) { + return; + } + m_smooth = smooth; + update(); +} + +bool QImageItem::smooth() const +{ + return m_smooth; +} + +int QImageItem::nativeWidth() const +{ + return m_image.size().width(); +} + +int QImageItem::nativeHeight() const +{ + return m_image.size().height(); +} + +void QImageItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) +{ + Q_UNUSED(option); + Q_UNUSED(widget); + + if (m_image.isNull()) { + return; + } + //do without painter save, faster and the support can be compiled out + const bool wasAntiAlias = painter->testRenderHint(QPainter::Antialiasing); + const bool wasSmoothTransform = painter->testRenderHint(QPainter::SmoothPixmapTransform); + painter->setRenderHint(QPainter::Antialiasing, m_smooth); + painter->setRenderHint(QPainter::SmoothPixmapTransform, m_smooth); + + painter->drawImage(boundingRect(), m_image, m_image.rect()); + painter->setRenderHint(QPainter::Antialiasing, wasAntiAlias); + painter->setRenderHint(QPainter::SmoothPixmapTransform, wasSmoothTransform); +} + + +#include "qimageitem.moc" diff --git a/declarativeimports/qtextracomponents/qimageitem.h b/declarativeimports/qtextracomponents/qimageitem.h new file mode 100644 index 000000000..a4365b5dc --- /dev/null +++ b/declarativeimports/qtextracomponents/qimageitem.h @@ -0,0 +1,58 @@ +/*************************************************************************** + * Copyright 2011 Marco Martin * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, 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 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 QIMAGEITEM_H +#define QIMAGEITEM_H + +#include +#include + +class QImageItem : public QDeclarativeItem +{ + Q_OBJECT + + Q_PROPERTY(QImage image READ image WRITE setImage) + Q_PROPERTY(bool smooth READ smooth WRITE setSmooth) + Q_PROPERTY(int nativeWidth READ nativeWidth NOTIFY nativeWidthChanged) + Q_PROPERTY(int nativeHeight READ nativeHeight NOTIFY nativeHeightChanged) + +public: + QImageItem(QDeclarativeItem *parent=0); + ~QImageItem(); + + void setImage(const QImage &image); + QImage image() const; + + void setSmooth(const bool smooth); + bool smooth() const; + + int nativeWidth() const; + int nativeHeight() const; + + void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); + +Q_SIGNALS: + void nativeWidthChanged(); + void nativeHeightChanged(); + +private: + QImage m_image; + bool m_smooth; +}; + +#endif diff --git a/declarativeimports/qtextracomponents/qmldir b/declarativeimports/qtextracomponents/qmldir new file mode 100644 index 000000000..b2452e3fc --- /dev/null +++ b/declarativeimports/qtextracomponents/qmldir @@ -0,0 +1,3 @@ +plugin qtextracomponentsplugin + + diff --git a/declarativeimports/qtextracomponents/qpixmapitem.cpp b/declarativeimports/qtextracomponents/qpixmapitem.cpp new file mode 100644 index 000000000..3c09efec1 --- /dev/null +++ b/declarativeimports/qtextracomponents/qpixmapitem.cpp @@ -0,0 +1,94 @@ +/* + * 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 "qpixmapitem.h" + +#include + + +QPixmapItem::QPixmapItem(QDeclarativeItem *parent) + : QDeclarativeItem(parent), + m_smooth(false) +{ + setFlag(QGraphicsItem::ItemHasNoContents, false); +} + + +QPixmapItem::~QPixmapItem() +{ +} + +void QPixmapItem::setPixmap(const QPixmap &pixmap) +{ + m_pixmap = pixmap; + update(); + emit nativeWidthChanged(); + emit nativeHeightChanged(); +} + +QPixmap QPixmapItem::pixmap() const +{ + return m_pixmap; +} + +void QPixmapItem::setSmooth(const bool smooth) +{ + if (smooth == m_smooth) { + return; + } + m_smooth = smooth; + update(); +} + +bool QPixmapItem::smooth() const +{ + return m_smooth; +} + +int QPixmapItem::nativeWidth() const +{ + return m_pixmap.size().width(); +} + +int QPixmapItem::nativeHeight() const +{ + return m_pixmap.size().height(); +} + +void QPixmapItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) +{ + Q_UNUSED(option); + Q_UNUSED(widget); + + if (m_pixmap.isNull()) { + return; + } + //do without painter save, faster and the support can be compiled out + const bool wasAntiAlias = painter->testRenderHint(QPainter::Antialiasing); + const bool wasSmoothTransform = painter->testRenderHint(QPainter::SmoothPixmapTransform); + painter->setRenderHint(QPainter::Antialiasing, m_smooth); + painter->setRenderHint(QPainter::SmoothPixmapTransform, m_smooth); + + painter->drawPixmap(boundingRect(), m_pixmap, m_pixmap.rect()); + painter->setRenderHint(QPainter::Antialiasing, wasAntiAlias); + painter->setRenderHint(QPainter::SmoothPixmapTransform, wasSmoothTransform); +} + + +#include "qpixmapitem.moc" diff --git a/declarativeimports/qtextracomponents/qpixmapitem.h b/declarativeimports/qtextracomponents/qpixmapitem.h new file mode 100644 index 000000000..af2cc9ef0 --- /dev/null +++ b/declarativeimports/qtextracomponents/qpixmapitem.h @@ -0,0 +1,58 @@ +/*************************************************************************** + * Copyright 2011 Marco Martin * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, 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 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 QPIXMAPITEM_H +#define QPIXMAPITEM_H + +#include +#include + +class QPixmapItem : public QDeclarativeItem +{ + Q_OBJECT + + Q_PROPERTY(QPixmap pixmap READ pixmap WRITE setPixmap) + Q_PROPERTY(bool smooth READ smooth WRITE setSmooth) + Q_PROPERTY(int nativeWidth READ nativeWidth NOTIFY nativeWidthChanged) + Q_PROPERTY(int nativeHeight READ nativeHeight NOTIFY nativeHeightChanged) + +public: + QPixmapItem(QDeclarativeItem *parent=0); + ~QPixmapItem(); + + void setPixmap(const QPixmap &pixmap); + QPixmap pixmap() const; + + void setSmooth(const bool smooth); + bool smooth() const; + + int nativeWidth() const; + int nativeHeight() const; + + void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); + +Q_SIGNALS: + void nativeWidthChanged(); + void nativeHeightChanged(); + +private: + QPixmap m_pixmap; + bool m_smooth; +}; + +#endif diff --git a/declarativeimports/qtextracomponents/qtextracomponentsplugin.cpp b/declarativeimports/qtextracomponents/qtextracomponentsplugin.cpp new file mode 100644 index 000000000..7d6b61f82 --- /dev/null +++ b/declarativeimports/qtextracomponents/qtextracomponentsplugin.cpp @@ -0,0 +1,41 @@ +/* + * Copyright 2009 by Alan Alpert + * Copyright 2010 by Ménard Alexis + * Copyright 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. + */ + +#include "qtextracomponentsplugin.h" + +#include + +#include "qpixmapitem.h" +#include "qimageitem.h" +#include "qiconitem.h" + +void QtExtraComponentsPlugin::registerTypes(const char *uri) +{ + Q_ASSERT(uri == QLatin1String("org.kde.qtextracomponents")); + + qmlRegisterType(uri, 0, 1, "QPixmapItem"); + qmlRegisterType(uri, 0, 1, "QImageItem"); + qmlRegisterType(uri, 0, 1, "QIconItem"); +} + + +#include "qtextracomponentsplugin.moc" + diff --git a/declarativeimports/qtextracomponents/qtextracomponentsplugin.h b/declarativeimports/qtextracomponents/qtextracomponentsplugin.h new file mode 100644 index 000000000..8b1353ce7 --- /dev/null +++ b/declarativeimports/qtextracomponents/qtextracomponentsplugin.h @@ -0,0 +1,38 @@ +/* + * Copyright 2009 by Alan Alpert + * Copyright 2010 by Ménard Alexis + * Copyright 2011 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. + */ + +#ifndef QTEXTRACOMPONENTSPLUGIN_H +#define QTEXTRACOMPONENTSPLUGIN_H + +#include + + +class QtExtraComponentsPlugin : public QDeclarativeExtensionPlugin +{ + Q_OBJECT + +public: + void registerTypes(const char *uri); +}; + +Q_EXPORT_PLUGIN2(qtextracomponentsplugin, QtExtraComponentsPlugin); + +#endif 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 From d36d2162ffadbeab07a46a80fde4481094f8461e Mon Sep 17 00:00:00 2001 From: Marco Martin Date: Thu, 10 Feb 2011 19:11:29 +0100 Subject: [PATCH 2/4] build everything --- declarativeimports/CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/declarativeimports/CMakeLists.txt b/declarativeimports/CMakeLists.txt index c113b603f..fad311351 100644 --- a/declarativeimports/CMakeLists.txt +++ b/declarativeimports/CMakeLists.txt @@ -1,4 +1,5 @@ add_subdirectory(core) add_subdirectory(graphicslayouts) add_subdirectory(graphicswidgets) - +add_subdirectory(plasmacomponents) +add_subdirectory(qtextracomponents) From 110f85b3c6b71e0a9122854cae601443705b83ff Mon Sep 17 00:00:00 2001 From: Marco Martin Date: Sat, 5 Mar 2011 18:40:18 +0100 Subject: [PATCH 3/4] actually install the components --- declarativeimports/CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/declarativeimports/CMakeLists.txt b/declarativeimports/CMakeLists.txt index fad311351..5e2e20e2e 100644 --- a/declarativeimports/CMakeLists.txt +++ b/declarativeimports/CMakeLists.txt @@ -1,5 +1,6 @@ add_subdirectory(core) add_subdirectory(graphicslayouts) add_subdirectory(graphicswidgets) -add_subdirectory(plasmacomponents) add_subdirectory(qtextracomponents) + +install(DIRECTORY plasmacomponents/ DESTINATION ${IMPORTS_INSTALL_DIR}/org/kde/plasma/components) \ No newline at end of file From 89c468c7a472929a8672c8935157e912ff8fa0ac Mon Sep 17 00:00:00 2001 From: Marco Martin Date: Thu, 21 Apr 2011 16:57:57 +0200 Subject: [PATCH 4/4] remove what can't still be merged --- 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 deletions(-) delete mode 100644 declarativeimports/plasmacomponents/BusyWidget.qml delete mode 100644 declarativeimports/plasmacomponents/FlashingLabel.qml delete mode 100644 declarativeimports/plasmacomponents/Frame.qml delete mode 100644 declarativeimports/plasmacomponents/IconWidget.qml delete mode 100644 declarativeimports/plasmacomponents/PushButton.qml delete mode 100644 declarativeimports/plasmacomponents/ScrollBar.qml delete mode 100644 declarativeimports/plasmacomponents/ToolButton.qml delete mode 100644 declarativeimports/plasmacomponents/qmldir delete mode 100644 declarativeimports/test/CMakeLists.txt delete mode 100644 declarativeimports/test/gallery.qml delete mode 100644 declarativeimports/test/test.cpp delete mode 100644 declarativeimports/test/testobject_p.h diff --git a/declarativeimports/CMakeLists.txt b/declarativeimports/CMakeLists.txt index 5e2e20e2e..45b732160 100644 --- a/declarativeimports/CMakeLists.txt +++ b/declarativeimports/CMakeLists.txt @@ -3,4 +3,3 @@ 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 deleted file mode 100644 index 3e076dba9..000000000 --- a/declarativeimports/plasmacomponents/BusyWidget.qml +++ /dev/null @@ -1,65 +0,0 @@ -/* -* 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 deleted file mode 100644 index 47e7f4446..000000000 --- a/declarativeimports/plasmacomponents/FlashingLabel.qml +++ /dev/null @@ -1,76 +0,0 @@ -/* - * 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 deleted file mode 100644 index c33558115..000000000 --- a/declarativeimports/plasmacomponents/Frame.qml +++ /dev/null @@ -1,47 +0,0 @@ -/* - * 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 deleted file mode 100644 index ca26ad1de..000000000 --- a/declarativeimports/plasmacomponents/IconWidget.qml +++ /dev/null @@ -1,97 +0,0 @@ -/* -* 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 deleted file mode 100644 index 2452faf4a..000000000 --- a/declarativeimports/plasmacomponents/PushButton.qml +++ /dev/null @@ -1,95 +0,0 @@ -/* -* 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 deleted file mode 100644 index 16084d8b4..000000000 --- a/declarativeimports/plasmacomponents/ScrollBar.qml +++ /dev/null @@ -1,107 +0,0 @@ -/* -* 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 deleted file mode 100644 index 86e51ec8c..000000000 --- a/declarativeimports/plasmacomponents/ToolButton.qml +++ /dev/null @@ -1,79 +0,0 @@ -/* -* 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 deleted file mode 100644 index f2d175092..000000000 --- a/declarativeimports/plasmacomponents/qmldir +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index 7925e2d59..000000000 --- a/declarativeimports/test/CMakeLists.txt +++ /dev/null @@ -1,29 +0,0 @@ -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 deleted file mode 100644 index 19b524b53..000000000 --- a/declarativeimports/test/gallery.qml +++ /dev/null @@ -1,79 +0,0 @@ -/* - * 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 deleted file mode 100644 index 792f4144a..000000000 --- a/declarativeimports/test/test.cpp +++ /dev/null @@ -1,55 +0,0 @@ -/* - * 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 deleted file mode 100644 index 005e10584..000000000 --- a/declarativeimports/test/testobject_p.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * 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