install(DIRECTORY qml/ DESTINATION ${IMPORTS_INSTALL_DIR}/org/kde/plasma/components)
-
-
-#The platform specific stuff, overwrites a copy of the desktop one
-#it does install some files on top of the old ones, has to be done file by file since if some component from the generic set is more recent than the specifc ones, it wouldn't be overwritten
-
-install(TARGETS plasmacomponentsplugin DESTINATION ${PLUGIN_INSTALL_DIR}/platformimports/touch/org/kde/plasma/components)
-
-install(FILES qml/BusyIndicator.qml DESTINATION ${PLUGIN_INSTALL_DIR}/platformimports/touch/org/kde/plasma/components)
-install(FILES qml/ButtonColumn.qml DESTINATION ${PLUGIN_INSTALL_DIR}/platformimports/touch/org/kde/plasma/components)
-install(FILES qml/ButtonGroup.js DESTINATION ${PLUGIN_INSTALL_DIR}/platformimports/touch/org/kde/plasma/components)
-install(FILES qml/Button.qml DESTINATION ${PLUGIN_INSTALL_DIR}/platformimports/touch/org/kde/plasma/components)
-install(FILES qml/ButtonRow.qml DESTINATION ${PLUGIN_INSTALL_DIR}/platformimports/touch/org/kde/plasma/components)
-install(FILES qml/CheckBox.qml DESTINATION ${PLUGIN_INSTALL_DIR}/platformimports/touch/org/kde/plasma/components)
-install(FILES qml/CommonDialog.qml DESTINATION ${PLUGIN_INSTALL_DIR}/platformimports/touch/org/kde/plasma/components)
-install(FILES qml/Dialog.qml DESTINATION ${PLUGIN_INSTALL_DIR}/platformimports/touch/org/kde/plasma/components)
-install(FILES qml/Highlight.qml DESTINATION ${PLUGIN_INSTALL_DIR}/platformimports/touch/org/kde/plasma/components)
-install(FILES qml/Label.qml DESTINATION ${PLUGIN_INSTALL_DIR}/platformimports/touch/org/kde/plasma/components)
-install(FILES qml/ListItem.qml DESTINATION ${PLUGIN_INSTALL_DIR}/platformimports/touch/org/kde/plasma/components)
-install(FILES qml/Page.qml DESTINATION ${PLUGIN_INSTALL_DIR}/platformimports/touch/org/kde/plasma/components)
-install(FILES qml/PageStack.qml DESTINATION ${PLUGIN_INSTALL_DIR}/platformimports/touch/org/kde/plasma/components)
-install(FILES qml/ProgressBar.qml DESTINATION ${PLUGIN_INSTALL_DIR}/platformimports/touch/org/kde/plasma/components)
-install(FILES qml/QueryDialog.qml DESTINATION ${PLUGIN_INSTALL_DIR}/platformimports/touch/org/kde/plasma/components)
-install(FILES qml/RadioButton.qml DESTINATION ${PLUGIN_INSTALL_DIR}/platformimports/touch/org/kde/plasma/components)
-install(FILES qml/SelectionDialog.qml DESTINATION ${PLUGIN_INSTALL_DIR}/platformimports/touch/org/kde/plasma/components)
-install(FILES qml/Slider.qml DESTINATION ${PLUGIN_INSTALL_DIR}/platformimports/touch/org/kde/plasma/components)
-install(FILES qml/TabBar.qml DESTINATION ${PLUGIN_INSTALL_DIR}/platformimports/touch/org/kde/plasma/components)
-install(FILES qml/TabButton.qml DESTINATION ${PLUGIN_INSTALL_DIR}/platformimports/touch/org/kde/plasma/components)
-install(FILES qml/TabGroup.qml DESTINATION ${PLUGIN_INSTALL_DIR}/platformimports/touch/org/kde/plasma/components)
-#install(FILES qml/TextArea.qml DESTINATION ${PLUGIN_INSTALL_DIR}/platformimports/touch/org/kde/plasma/components)
-#install(FILES qml/TextField.qml DESTINATION ${PLUGIN_INSTALL_DIR}/platformimports/touch/org/kde/plasma/components)
-install(FILES qml/ToolBarLayout.qml DESTINATION ${PLUGIN_INSTALL_DIR}/platformimports/touch/org/kde/plasma/components)
-install(FILES qml/ToolBar.qml DESTINATION ${PLUGIN_INSTALL_DIR}/platformimports/touch/org/kde/plasma/components)
-install(FILES qml/ToolButton.qml DESTINATION ${PLUGIN_INSTALL_DIR}/platformimports/touch/org/kde/plasma/components)
-
-
-#Now install the private stuff!
-install(FILES qml/private/DualStateButton.qml DESTINATION ${PLUGIN_INSTALL_DIR}/platformimports/touch/org/kde/plasma/components/private)
-install(FILES qml/private/InlineDialog.qml DESTINATION ${PLUGIN_INSTALL_DIR}/platformimports/touch/org/kde/plasma/components/private)
-install(FILES qml/private/PageStack.js DESTINATION ${PLUGIN_INSTALL_DIR}/platformimports/touch/org/kde/plasma/components/private)
-install(FILES qml/private/TabGroup.js DESTINATION ${PLUGIN_INSTALL_DIR}/platformimports/touch/org/kde/plasma/components/private)
-install(FILES qml/private/ScrollBarDelegate.qml DESTINATION ${PLUGIN_INSTALL_DIR}/platformimports/touch/org/kde/plasma/components/private)
-install(FILES qml/private/ScrollDecoratorDelegate.qml DESTINATION ${PLUGIN_INSTALL_DIR}/platformimports/touch/org/kde/plasma/components/private)
-install(FILES qml/private/SectionScroller.js DESTINATION ${PLUGIN_INSTALL_DIR}/platformimports/touch/org/kde/plasma/components/private)
-install(FILES qml/private/AppManager.js DESTINATION ${PLUGIN_INSTALL_DIR}/platformimports/touch/org/kde/plasma/components/private)
-install(FILES qml/private/TabBarLayout.qml DESTINATION ${PLUGIN_INSTALL_DIR}/platformimports/touch/org/kde/plasma/components/private)
-install(FILES qml/private/TextFieldFocus.qml DESTINATION ${PLUGIN_INSTALL_DIR}/platformimports/touch/org/kde/plasma/components/private)
-
-#install platform overrides
-install(DIRECTORY platformcomponents/touch/ DESTINATION ${PLUGIN_INSTALL_DIR}/platformimports/touch/org/kde/plasma/components)
+++ /dev/null
-function placeEditBubble(mouse) {
- // Find the root item, then map our cursor position to it
- // in order to check if the edit bubble could end up off-screen
- var rootItem = parent;
- while (rootItem.parent) {
- rootItem = rootItem.parent;
- }
- var distanceToTop = mouseEventListener.mapToItem(rootItem, mouse.x, mouse.y);
- //print( " distanceToTop: " + distanceToTop.x);
- if (distanceToTop.x < editBubble.width/2) {
- // hitting the left edge
- //editBubble.x = mouse.x
-
- } else {
- editBubble.x = mouse.x-(editBubble.width/2)
- }
- if (distanceToTop.y > editBubble.height) {
- editBubble.y = mouse.y-editBubble.height-8
- } else {
- //editBubble.y = mouse.y-(editBubble.width/2)
- }
-
-}
+++ /dev/null
-/*
-* Copyright 2011 by Sebastian Kügler <sebas@kde.org>
-*
-* 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 QtQuick 1.1
-import org.kde.plasma.core 0.1 as PlasmaCore
-import org.kde.qtextracomponents 0.1
-
-PlasmaCore.FrameSvgItem {
- id: editBubble
- objectName: "editBubble"
- property int iconSize: 32;
-
- imagePath: "dialogs/background"
- width: 4*iconSize
- height: 2*iconSize
- z: 100000
- //anchors { top: parent.bottom; right: parent.right; topMargin: -(iconSize/4); }
-
- // fully dynamic show / hide
- //state: (textInput.activeFocus && (textInput.selectedText != "" || textInput.canPaste)) ? "expanded" : "collapsed";
- // state controlled externally
- state: "collapsed"
-
- Row {
- id: buttonRow
- spacing: iconSize
- anchors { horizontalCenter: parent.horizontalCenter; verticalCenter: parent.verticalCenter; margins: 8; }
- height: editBubble.iconSize
- QIconItem {
- id: copyIcon
- icon: QIcon("edit-copy")
- width: editBubble.iconSize
- height: editBubble.iconSize
- enabled: textInput.selectedText != ""
- MouseArea {
- anchors.centerIn: parent
- width: 2*parent.width
- height: 2*parent.height
- onClicked: { textField.copy(); editBubble.state = "collapsed"; }
- onPressed: PropertyAnimation { target: copyIcon; properties: "scale";
- from: 1.0; to: 0.9;
- duration: 175; easing.type: Easing.OutExpo; }
- onReleased: PropertyAnimation { target: copyIcon; properties: "scale";
- from: 0.9; to: 1.0;
- duration: 175; easing.type: Easing.OutExpo; }
- }
- }
- QIconItem {
- id: pasteIcon
- icon: QIcon("edit-paste")
- width: editBubble.iconSize
- height: editBubble.iconSize
- enabled: textInput.canPaste
- MouseArea {
- anchors.centerIn: parent;
- width: 2*parent.width
- height: 2*parent.height
- onClicked: { textField.paste(); editBubble.state = "collapsed"; }
- onPressed: PropertyAnimation { target: pasteIcon; properties: "scale";
- from: 1.0; to: 0.9;
- duration: 175; easing.type: Easing.OutExpo; }
- onReleased: PropertyAnimation { target: pasteIcon; properties: "scale";
- from: 0.9; to: 1.0;
- duration: 175; easing.type: Easing.OutExpo; }
- }
- }
- }
- states: [
- State {
- id: expanded
- name: "expanded";
- PropertyChanges { target: editBubble; opacity: 1.0; scale: 1.0 }
- },
- State {
- id: collapsed
- name: "collapsed";
- PropertyChanges { target: editBubble; opacity: 0; scale: 0.9 }
- }
- ]
-
- transitions: [
- Transition {
- from: "collapsed"; to: "expanded"
- ParallelAnimation {
- PropertyAnimation { properties: "opacity"; duration: 175; easing.type: Easing.InExpo; }
- PropertyAnimation { properties: "scale"; duration: 175; easing.type: Easing.InExpo; }
- }
- },
- Transition {
- from: "expanded"; to: "collapsed"
- ParallelAnimation {
- PropertyAnimation { properties: "opacity"; duration: 175; easing.type: Easing.OutExpo; }
- PropertyAnimation { properties: "scale"; duration: 100; easing.type: Easing.OutExpo; }
- }
- }
- ]
-}
+++ /dev/null
-/*
-* Copyright (C) 2011 by Marco Martin <mart@kde.org>
-*
-* 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 Library 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 QtQuick 1.0
-import org.kde.plasma.core 0.1 as PlasmaCore
-import "." 0.1
-
-Item {
- id: root
-
- default property alias content: menuColumn.children
- property Item visualParent
- property int status: DialogStatus.Closed
-
- onVisualParentChanged: {
- //if is a menuitem move to menuColumn
- if (visualParent.separator !== undefined) {
- var obj = arrowComponent.createObject(visualParent)
- }
- }
-
- Component {
- id: arrowComponent
- PlasmaCore.SvgItem {
- svg: PlasmaCore.Svg {imagePath: "widgets/arrows"}
- elementId: "right-arrow"
- width: naturalSize.width
- height: naturalSize.height
- anchors {
- right: parent.right
- verticalCenter: parent.verticalCenter
- }
- }
- }
- function open()
- {
- var parent = root.visualParent ? root.visualParent : root.parent
- var pos = dialog.popupPosition(parent, Qt.AlignCenter)
- dialog.x = pos.x
- dialog.y = pos.y
-
- dialog.visible = true
- dialog.activateWindow()
- }
-
- function close()
- {
- dialog.visible = false
- }
-
- function addMenuItem(item)
- {
- item.parent = menuColumn
- }
-
- onChildrenChanged: {
- for (var i = 0; i < children.length; ++i) {
- var item = children[i]
- //if is a menuitem move to menuColumn
- if (item.separator !== undefined) {
- item.parent = menuColumn
- }
- }
- }
-
- visible: false
-
- PlasmaCore.Dialog {
- id: dialog
- visible: false
- windowFlags: Qt.Popup
- onVisibleChanged: {
- if (visible) {
- status = DialogStatus.Open
- } else {
- status = DialogStatus.Closed
- }
- }
-
- mainItem: Item {
- id: contentItem
-
- width: Math.max(menuColumn.width, theme.defaultFont.mSize.width * 12)
- height: Math.min(menuColumn.height, theme.defaultFont.mSize.height * 25)
-
-
-
- Flickable {
- id: listView
- anchors.fill: parent
-
- clip: true
-
- Column {
- id: menuColumn
- spacing: 4
- onChildrenChanged: {
- for (var i = 0; i < children.length; ++i) {
- if (children[i].clicked != undefined)
- children[i].clicked.connect(root.close)
- }
- }
- }
- }
-
- ScrollBar {
- id: scrollBar
- flickableItem: listView
- visible: listView.contentHeight > contentItem.height
- //platformInverted: root.platformInverted
- anchors { top: listView.top; right: listView.right }
- }
- }
- }
-
-
- onStatusChanged: {
- if (status == DialogStatus.Opening) {
- if (listView.currentItem != null) {
- listView.currentItem.focus = false
- }
- listView.currentIndex = -1
- listView.positionViewAtIndex(0, ListView.Beginning)
- }
- else if (status == DialogStatus.Open) {
- listView.focus = true
- }
- }
-}
+++ /dev/null
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the Qt Components project.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
-** the names of its contributors may be used to endorse or promote
-** products derived from this software without specific prior written
-** permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick 1.1
-import org.kde.plasma.core 0.1 as PlasmaCore
-
-Item {
- id: root
-
- property alias text: textArea.text
-
- signal clicked
-
- property bool checkable: false
- property alias font: textArea.font
-
- implicitWidth: textArea.paintedWidth + iconItem.width*2 + 6
- implicitHeight: Math.max(theme.smallIconSize, textArea.paintedHeight + 6)
- width: Math.max(implicitWidth, parent.width)
-
- property bool separator: false
- onSeparatorChanged: {
- if (separator) {
- internal.separatorItem = separatorComponent.createObject(root)
- } else {
- internal.separatorItem.destroy()
- }
- }
- property alias icon: iconItem.source
-
- enabled: !separator
-
- PlasmaCore.IconItem {
- id: iconItem
- width: parent.height
- anchors {
- verticalCenter: parent.verticalCenter
- left: parent.left
- top: parent.top
- bottom: parent.bottom
- }
- }
- Label {
- id: textArea
- anchors.centerIn: parent
-
- horizontalAlignment: Text.AlignHCenter
- elide: Text.ElideRight
- }
-
- QtObject {
- id: internal
- property Item separatorItem
- }
- Component {
- id: separatorComponent
- PlasmaCore.FrameSvgItem {
- imagePath: "widgets/viewitem"
- prefix: "normal"
- height: text ? parent.height : margins.top+margins.bottom
- anchors {
- right: parent.right
- left: parent.left
- verticalCenter: parent.verticalCenter
- }
- }
- }
-
- MouseArea {
- id: mouseArea
-
- property bool canceled: false
-
- anchors.fill: parent
-
- onPressed: {
- canceled = false
- }
- onClicked: {
- if (!canceled)
- root.clicked()
- }
- onExited: canceled = true
- }
-
- Keys.onPressed: {
- event.accepted = true
- switch (event.key) {
- case Qt.Key_Select:
- case Qt.Key_Enter:
- case Qt.Key_Return: {
- if (!event.isAutoRepeat) {
- root.clicked()
- }
- break
- }
-
- case Qt.Key_Up: {
- if (ListView.view != null)
- ListView.view.decrementCurrentIndex()
- else
- event.accepted = false
- break
- }
-
- case Qt.Key_Down: {
- if (ListView.view != null)
- ListView.view.incrementCurrentIndex()
- else
- event.accepted = false
- break
- }
- default: {
- event.accepted = false
- break
- }
- }
- }
-}
+++ /dev/null
-/*
-* Copyright (C) 2011 by Daker Fernandes Pinheiro <dakerfp@gmail.com>
-* Copyright (C) 2011 Marco Martin <mart@kde.org>
-*
-* 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 QtQuick 1.1
-import org.kde.plasma.core 0.1 as PlasmaCore
-import "private" as Private
-
-
-/**
- * A generic ScrollBar/ScrollDecorator component:
- * Always prefer this to ScrollDecorator that is not available on desktop.
- * By default, this component will look and behave like a scroll decorator on touchscreens
- */
-// TODO: add support mouse wheel events
-Item {
- id: scrollbar
-
- // Common API
- property Flickable flickableItem: null
- property int orientation: Qt.Vertical
- property bool interactive: false
-
- // Plasma API
- property bool inverted: false
- property alias stepSize: range.stepSize
- property bool pressed: internalLoader.item.mouseArea?internalLoader.item.mouseArea.pressed:false
- property real scrollButtonInterval: 50
-
- implicitWidth: internalLoader.isVertical ? (interactive ? 22 : 12) : 200
- implicitHeight: internalLoader.isVertical ? 200 : (interactive ? 22 : 12)
- // TODO: needs to define if there will be specific graphics for
- // disabled scroll bars
- opacity: enabled ? 1.0 : 0.5
-
- visible: flickableItem && internalLoader.handleEnabled
-
- anchors {
- right: internalLoader.anchorableWithFlickable ? flickableItem.right : undefined
- left: (orientation == Qt.Vertical) ? undefined : (internalLoader.anchorableWithFlickable ? flickableItem.left : undefined)
- top: (orientation == Qt.Vertical) ? (internalLoader.anchorableWithFlickable ? flickableItem.top : undefined) : undefined
- bottom: internalLoader.anchorableWithFlickable ? flickableItem.bottom : undefined
- }
-
- Loader {
- id: internalLoader
- anchors.fill: parent
- //property bool handleEnabled: internalLoader.isVertical ? item.handle.height < item.contents.height : item.handle.width < item.contents.width
- property bool handleEnabled: internalLoader.isVertical ? flickableItem.contentHeight > flickableItem.height : flickableItem.contentWidth > flickableItem.width
- property bool isVertical: orientation == Qt.Vertical
- property bool anchorableWithFlickable: scrollbar.parent == flickableItem || scrollbar.parent == flickableItem.parent
-
- function incrementValue(increment)
- {
- if (!flickableItem)
- return;
-
- if (internalLoader.isVertical) {
- flickableItem.contentY = Math.max(0, Math.min(flickableItem.contentHeight,
- flickableItem.contentY + increment))
- } else {
- flickableItem.contentX = Math.max(0, Math.min(flickableItem.contentWidth,
- flickableItem.contentX + increment))
- }
- }
-
- RangeModel {
- id: range
-
- minimumValue: 0
- maximumValue: {
- var diff;
- if (internalLoader.isVertical) {
- diff = flickableItem.contentHeight - flickableItem.height
- } else {
- diff = flickableItem.contentWidth - flickableItem.width
- }
-
- return Math.max(0, diff)
- }
-
- stepSize: 10
- inverted: scrollbar.inverted
- positionAtMinimum: 0
- positionAtMaximum: {
- if (internalLoader.isVertical) {
- internalLoader.item.contents.height - internalLoader.item.handle.height
- } else {
- internalLoader.item.contents.width - internalLoader.item.handle.width
- }
- }
- value: internalLoader.isVertical ? flickableItem.contentY : flickableItem.contentX
- onValueChanged: {
- if (flickableItem.moving) {
- return
- }
-
- if (internalLoader.isVertical) {
- flickableItem.contentY = value
- } else {
- flickableItem.contentX = value
- }
- }
-
- position: internalLoader.isVertical ? internalLoader.item.handle.y : internalLoader.item.handle.x
-
- onPositionChanged: {
- if (internalLoader.item.mouseArea && internalLoader.item.mouseArea.pressed) {
- return
- }
-
- if (internalLoader.isVertical) {
- internalLoader.item.handle.y = position
- } else {
- internalLoader.item.handle.x = position
- }
- }
- }
-
- source: interactive ? "private/ScrollBarDelegate.qml" : "private/ScrollDecoratorDelegate.qml"
- }
-}
+++ /dev/null
-/*
-* Copyright (C) 2011 Marco Martin <mart@kde.org>
-*
-* 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 QtQuick 1.0
-
-/**
- * Just provided for compatibility
- * Use ScrollBar instead. will behave like a ScrollDecorator on touchscreens
- */
-ScrollBar {
- interactive: false
-}
+++ /dev/null
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the Qt Components project.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
-** the names of its contributors may be used to endorse or promote
-** products derived from this software without specific prior written
-** permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick 1.1
-import "private/SectionScroller.js" as Sections
-import org.kde.plasma.core 0.1 as PlasmaCore
-
-/**
- * It's similar to a ScrollBar or a ScrollDecorator.
- * It's interactive and works on ListViews that have section.property set,
- * so its contents are categorized.
- * An indicator will say to what category the user scrolled to.
- *
- * Useful for things like address books or things sorted by date.
- * Don't use with models too big (thousands of items) because implies
- * loading all the items to memory, as well loses precision.
- */
-Item {
- id: root
-
- /**
- * The listview this scroll indicator will work on
- */
- property ListView listView
-
- onListViewChanged: {
- if (listView && listView.model)
- internal.initDirtyObserver();
- }
-
- Connections {
- target: listView
- onModelChanged: {
- if (listView && listView.model) {
- internal.initDirtyObserver()
- }
- }
- onMovementStarted: root.opacity = 1
- onMovementEnded: {
- if (!dragArea.pressed) {
- fadeTimer.restart()
- }
- }
- }
-
- width: 48
- opacity: 0
- Behavior on opacity {
- NumberAnimation {
- duration: 250
- }
- }
-
- anchors {
- right: listView.right
- top: listView.top
- bottom: listView.bottom
- }
-
- Timer {
- id: fadeTimer
- interval: 4000
- repeat: false
- running: false
- onTriggered: {
- root.opacity = 0
- }
- }
-
- RangeModel {
- id: range
-
- minimumValue: 0
- maximumValue: Math.max(0, listView.contentHeight - listView.height)
- stepSize: 0
- //inverted: true
- positionAtMinimum: handle.height / 2
- positionAtMaximum: root.height - handle.height - handle.height / 2
- value: listView.contentY
- onValueChanged: {
- if (listView.moving) {
- return
- } else {
- listView.contentY = value
- }
- }
- //position: handle.y
- onPositionChanged: {
- if (!dragArea.pressed) {
- handle.y = position
- }
- }
- }
-
- Rectangle {
- anchors.fill: parent
- color: Qt.rgba(0,0,0,0.3)
- }
-
- Rectangle {
- id: handle
- width: 6
- height: 6
- color: theme.textColor
- opacity: 0.7
- anchors.horizontalCenter: parent.horizontalCenter
- border {
- width: 1
- color: theme.backgroundColor
- }
- onYChanged: {
- if (dragArea.pressed) {
- range.position = y
- }
- sectionLabel.text = Sections.closestSection(y/listView.height)
- }
- }
- PlasmaCore.FrameSvgItem {
- id: tooltip
- imagePath: "widgets/tooltip"
- width: sectionLabel.paintedWidth + margins.left + margins.right
- height: sectionLabel.paintedHeight + margins.top + margins.bottom
- Label {
- id: sectionLabel
- font.pointSize: theme.defaultFont.pointSize * 1.5
- x: parent.margins.left
- y: parent.margins.top
- }
- y: Math.min(root.height-height, Math.max(0, handle.y - height/2))
- anchors {
- //verticalCenter: handle.verticalCenter
- right: parent.left
- }
- opacity: dragArea.pressed?1:0
- Behavior on opacity {
- NumberAnimation {
- duration: 250
- }
- }
- }
-
- MouseArea {
- id: dragArea
- anchors.fill: parent
- //enabled: scrollbar.enabled
- drag {
- target: handle
- axis: Drag.YAxis
- minimumY: range.positionAtMinimum
- maximumY: range.positionAtMaximum
- }
- onPressed: {
- mouse.accepted = true
- handle.y = mouse.y
- fadeTimer.running = false
- }
- onReleased: fadeTimer.restart()
-
- }
-
- Timer {
- id: dirtyTimer
- interval: 250
- onTriggered: {
- Sections.initSectionData(listView);
- internal.modelDirty = false;
- tooltip.visible = Sections._sections.length > 1
- }
- }
- QtObject {
- id: internal
-
- property bool modelDirty: false
- function initDirtyObserver() {
- Sections.initSectionData(listView);
- tooltip.visible = Sections._sections.length > 1
- function dirtyObserver() {
- if (!internal.modelDirty) {
- internal.modelDirty = true;
- dirtyTimer.running = true;
- }
- }
-
- if (listView.model.countChanged)
- listView.model.countChanged.connect(dirtyObserver);
-
- if (listView.model.itemsChanged)
- listView.model.itemsChanged.connect(dirtyObserver);
-
- if (listView.model.itemsInserted)
- listView.model.itemsInserted.connect(dirtyObserver);
-
- if (listView.model.itemsMoved)
- listView.model.itemsMoved.connect(dirtyObserver);
-
- if (listView.model.itemsRemoved)
- listView.model.itemsRemoved.connect(dirtyObserver);
- }
- }
-}
+++ /dev/null
-/****************************************************************************
-**
-** Copyright (C) 2011 Marco Martin <mart@kde.org>
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the Qt Components project.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
-** the names of its contributors may be used to endorse or promote
-** products derived from this software without specific prior written
-** permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick 1.0
-import org.kde.plasma.core 0.1 as PlasmaCore
-import "private/AppManager.js" as Utils
-import "." 0.1
-
-/**Documented API
-Inherits:
- Item
-
-Imports:
- QtQuick 1.0
- org.kde.plasma.core
-
-Description:
- Provides a top-level window for short-term tasks and brief interaction with the user.
- Is intended to be for interaction more complex and bigger in size then Dialog. On the desktop its looks is almost identical to Dialog, on touch interfaces is an almost fullscreen sliding Sheet. It is provided mostly for compatibility with mobile implementations
-
-Properties:
- list<Item> content:
- A list of items in the dialog's content area. You can use any component that is based on Item. For example, you can use ListView, so that the user can select from a list of names.
-
- int status:
- Indicates the dialog's phase in its life cycle. The values are as follows:
- - DialogStatus.Opening - the dialog is opening
- - DialogStatus.Open - the dialog is open and visible to the user
- - DialogStatus.Closing - the dialog is closing
- - DialogStatus.Closed - the dialog is closed and not visible to the user
- The dialog's initial status is DialogStatus.Closed.
-
- string title:
- The title text of this Sheet.
-
- Item acceptButton:
- button that when pressed will close the dialog, representing the user accepting it, accepted() will be called
-
- Item rejectButton:
- button that when pressed will close the dialog, representing the user rejecting it, rejected() will be called
-
- string acceptButtonText:
- Text of the accept button
-
- string rejectButtonText:
- Text of the reject button
-
- Item visualParent:
- The item that is dimmed when the dialog opens. By default the root parent object is visualParent.
-
-Signals:
- accepted():
- This signal is emitted when the user accepts the dialog's request or the accept() method is called.
- See also rejected().
-
- clickedOutside(): This signal is emitted when the user taps in the area that is inside the dialog's visual parent area but outside the dialog's area. Normally the visual parent is the root object. In that case this signal is emitted if the user taps anywhere outside the dialog's area.
- See also visualParent.
-
- rejected():
- This signal is emitted when the user rejects the dialog's request or the reject() method is called.
- See also accepted().
-
-Methods:
- void accept():
- Accepts the dialog's request without any user interaction. The method emits the accepted() signal and closes the dialog.
- See also reject().
-
- void close():
- Closes the dialog without any user interaction.
-
- void open():
- Shows the dialog to the user.
-
- void reject():
- Rejects the dialog's request without any user interaction. The method emits the rejected() signal and closes the dialog.
- See also accept().
-**/
-
-Item {
- id: root
- width: 800
- height: 600
- onHeightChanged:print(height)
-
- property alias title: titleLabel.text
- property alias content: contentItem.children
-// property alias visualParent: dialog.visualParent
- property int status: DialogStatus.Closed
- property alias acceptButtonText: acceptButton.text
- property alias rejectButtonText: rejectButton.text
- property alias acceptButton: acceptButton
- property alias rejectButton: rejectButton
-
-
- property alias privateTitleHeight: titleBar.height
-
- signal accepted
- signal rejected
- signal clickedOutside
-
- function open()
- {
- status = DialogStatus.Opening
- delayOpenTimer.restart()
- }
-
- function accept()
- {
- if (status == DialogStatus.Open) {
- status = DialogStatus.Closing
- accepted()
- dialog.state = "closed"
- }
- }
-
- function reject()
- {
- if (status == DialogStatus.Open) {
- status = DialogStatus.Closing
- dialog.state = "closed"
- rejected()
- }
- }
-
- function close()
- {
- dialog.state = "closed"
- }
-
-
- MouseArea {
- anchors.fill: parent
- onClicked: {
- clickedOutside()
- close()
- }
- }
- Timer {
- id: delayOpenTimer
- running: false
- interval: 100
- onTriggered: dialog.state = ""
- }
-
- PlasmaCore.FrameSvgItem {
- id: dialog
- anchors {
- fill: parent
- leftMargin: 50
- topMargin: 50
- rightMargin: 50
- bottomMargin: 0
- }
- imagePath: "dialogs/background"
- enabledBorders: "LeftBorder|TopBorder|RightBorder"
-
- state: "closed"
-
- //state: "Hidden"
-
- MouseArea {
- id: mainItem
- x: dialog.margins.left
- y: dialog.margins.top
- width: parent.width - dialog.margins.left - dialog.margins.right
- height: parent.height - dialog.margins.top - dialog.margins.bottom
-
- onClicked: mouse.accepted = true
-
- // Consume all key events that are not processed by children
- Keys.onPressed: event.accepted = true
- Keys.onReleased: event.accepted = true
-
- PlasmaCore.FrameSvgItem {
- id: titleBar
- imagePath: "widgets/extender-dragger"
- prefix: "root"
- anchors.left: parent.left
- anchors.right: parent.right
- //FIXME: +5 because of Plasma::Dialog margins
- height: Math.max(titleLabel.paintedHeight, acceptButton.height) + margins.top + margins.bottom
-
- Item {
- id: titleLayoutHelper
-
- anchors {
- right: parent.right
- left: parent.left
- top: parent.top
- bottom: parent.bottom
- leftMargin: parent.margins.left
- rightMargin: parent.margins.right
- topMargin: parent.margins.top
- bottomMargin: parent.margins.bottom
- }
-
- Button {
- id: acceptButton
- onClicked: accept()
- visible: text !== ""
- anchors {
- left: parent.left
- verticalCenter: parent.verticalCenter
- }
- }
- Label {
- id: titleLabel
- elide: Text.ElideRight
- height: paintedHeight
- font.pointSize: theme.defaultFont.pointSize * 1.1
- font.weight: Font.Bold
- style: Text.Raised
- styleColor: Qt.rgba(1,1,1,0.8)
- anchors {
- left: acceptButton.visible ? acceptButton.right : parent.left
- //still depends from acceptButton to make text more centered
- right: acceptButton.visible ? rejectButton.left : parent.right
- verticalCenter: parent.verticalCenter
- }
- horizontalAlignment: Text.AlignHCenter
- verticalAlignment: Text.AlignVCenter
- }
- Button {
- id: rejectButton
- onClicked: reject()
- visible: text !== ""
- anchors {
- right: parent.right
- verticalCenter: parent.verticalCenter
- }
- }
- }
- }
-
- Item {
- id: contentItem
-
- clip: true
- onChildrenRectChanged: mainItem.width = childrenRect.width
- anchors {
- top: titleBar.bottom
- left: parent.left
- right: parent.right
- bottom: parent.bottom
- }
- }
-
- }
-
- states: [
- State {
- name: "closed"
- PropertyChanges {
- target: root
- status: DialogStatus.Closed
- }
- },
- State {
- name: ""
- PropertyChanges {
- target: root
- status: DialogStatus.Open
- }
- }
- ]
-
- }
-}
+++ /dev/null
-/*
-* Copyright (C) 2011 by Daker Fernandes Pinheiro <dakerfp@gmail.com>
-*
-* 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 QtQuick 1.0
-import org.kde.plasma.core 0.1 as PlasmaCore
-import "private" as Private
-
-/**
- * A boolean toggle button with the visual representation of a "realistic"
- * switch with a movable toggle showing the state of the Switch. Generally
- * easier to use on touch devices than a CheckBox due to the larger surface
- * space and more evident state visualization.
- *
- * You can bind the Switch component, for example, to a feature that the
- * application has to enable or disable depending on the user's input.
- *
- * All elements of this component are defined in DualStateButton, its base component.
- */
-Private.DualStateButton {
- id: switchItem
-
- view: PlasmaCore.FrameSvgItem {
- imagePath: "widgets/slider"
- prefix: "groove"
- width: height * 2
- height: Math.max(theme.defaultFont.mSize.height + margins.top + margins.bottom,
- button.margins.top + button.margins.bottom)
-
- PlasmaCore.FrameSvgItem {
- id: highlight
- imagePath: "widgets/slider"
- prefix: "groove-highlight"
- anchors.fill: parent
-
- opacity: checked ? 1 : 0
- Behavior on opacity {
- PropertyAnimation { duration: 100 }
- }
- }
-
- PlasmaCore.FrameSvgItem {
- imagePath: "widgets/button"
- prefix: "shadow"
- anchors {
- fill: button
- leftMargin: -margins.left
- topMargin: -margins.top
- rightMargin: -margins.right
- bottomMargin: -margins.bottom
- }
- }
-
- PlasmaCore.FrameSvgItem {
- id: button
- imagePath: "widgets/button"
- prefix: "normal"
- anchors {
- top: parent.top
- bottom: parent.bottom
- }
- width: height
- x: checked ? width : 0
- Behavior on x {
- PropertyAnimation { duration: 100 }
- }
- }
- }
-}
-
+++ /dev/null
-/*
-* Copyright (C) 2011 by Daker Fernandes Pinheiro <dakerfp@gmail.com>
-*
-* 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 QtQuick 1.1
-import org.kde.plasma.core 0.1 as PlasmaCore
-import org.kde.qtextracomponents 0.1
-import "EditBubble.js" as EditBubbleHelper
-
-Item {
- id: textArea
-
- // Common API
- property alias font: textEdit.font // alias to textEdit.font
- property int inputMethodHints
- property bool errorHighlight
- property alias cursorPosition: textEdit.cursorPosition
- property alias horizontalAlignment: textEdit.horizontalAlignment
- property alias verticalAlignment: textEdit.verticalAlignment
- property alias readOnly: textEdit.readOnly
- property alias selectedText: textEdit.selectedText // read-only
- property alias selectionEnd: textEdit.selectionEnd // read-only
- property alias selectionStart: textEdit.selectionStart // read-only
- property alias text: textEdit.text
- property alias textFormat: textEdit.textFormat // enumeration
- property alias wrapMode: textEdit.wrapMode // enumeration
- property string placeholderText
-
- property alias textField: textArea
-
- // functions
- function copy() {
- textEdit.copy();
- }
-
- function paste() {
- textEdit.paste();
- }
-
- function cut() {
- textEdit.cut();
- }
-
- function select(start, end) {
- textEdit.select(start, end);
- }
-
- function selectAll() {
- textEdit.selectAll();
- }
-
- function selectWord() {
- textEdit.selectWord();
- }
-
- function positionAt(pos) {
- textEdit.positionAt(pos);
- }
-
- function positionToRectangle(pos) {
- textEdit.positionToRectangle(pos);
- }
-
- // Plasma API
- property alias interactive: flickArea.interactive
- property alias contentMaxWidth: textEdit.width
- property alias contentMaxHeight: textEdit.height
- property alias textInput: textEdit
-
- // Set active focus to it's internal textInput.
- // Overriding QtQuick.Item forceActiveFocus function.
- function forceActiveFocus() {
- textEdit.forceActiveFocus();
- }
-
- // Overriding QtQuick.Item activeFocus property.
- property alias activeFocus: textEdit.activeFocus
-
- opacity: enabled ? 1.0 : 0.5
-
- TextFieldFocus {
- id: hover
- state: textArea.activeFocus ? "focus" : (mouseWatcher.containsMouse ? "hover" : "hidden")
- anchors.fill: base
- }
-
- MouseArea {
- id: mouseWatcher
- anchors.fill: hover
- hoverEnabled: true
- }
-
- PlasmaCore.FrameSvgItem {
- id: base
-
- // TODO: see what is the best policy for margins
- anchors {
- fill: parent
- }
- imagePath: "widgets/lineedit"
- prefix: "base"
- }
-
- Flickable {
- id: flickArea
- anchors {
- fill: parent
- leftMargin: 2 * base.margins.left
- rightMargin: 2 * base.margins.right + (verticalScroll.visible ? verticalScroll.width : 0)
- topMargin: 2 * base.margins.top
- bottomMargin: 2 * base.margins.bottom + (horizontalScroll.visible ? verticalScroll.width : 0)
- }
- interactive: !verticalScroll.interactive //textArea.activeFocus
- contentWidth: {
- if (textEdit.wrapMode == TextEdit.NoWrap)
- return textEdit.paintedWidth;
-
- return Math.min(textEdit.paintedWidth, textEdit.width);
- }
- contentHeight: Math.min(textEdit.paintedHeight, textEdit.height)
- clip: true
- MouseEventListener {
- id: mouseEventListener
- //anchors.fill: parent
- onPressed: forceActiveFocus();
- //onPressed: print(" MouseEventListener Pressed");
- onPressAndHold: {
- print(" *** MouseEventListener PressAndHold");
- //forceActiveFocus();
- EditBubbleHelper.placeEditBubble(mouse);
- editBubble.state = (textInput.activeFocus && (textInput.selectedText != "" || textInput.canPaste)) ? "expanded" : "collapsed";
- }
- onPositionChanged: {
- EditBubbleHelper.placeEditBubble(mouse);
- }
- }
-
- TextEdit {
- id: textEdit
- parent: mouseEventListener
- width: flickArea.width
- height: flickArea.height
- clip: true
- wrapMode: TextEdit.Wrap
- enabled: textArea.enabled
- font.capitalization: theme.defaultFont.capitalization
- font.family: theme.defaultFont.family
- font.italic: theme.defaultFont.italic
- font.letterSpacing: theme.defaultFont.letterSpacing
- font.pointSize: theme.defaultFont.pointSize
- font.strikeout: theme.defaultFont.strikeout
- font.underline: theme.defaultFont.underline
- font.weight: theme.defaultFont.weight
- font.wordSpacing: theme.defaultFont.wordSpacing
- color: theme.buttonTextColor
- selectByMouse: verticalScroll.interactive
-
- onCursorPositionChanged: {
- if (cursorRectangle.x < flickArea.contentX) {
- flickArea.contentX = cursorRectangle.x;
- return;
- }
-
- if (cursorRectangle.x > flickArea.contentX +
- flickArea.width - cursorRectangle.width) {
- flickArea.contentX = cursorRectangle.x -
- cursorRectangle.width;
- return;
- }
-
- if (cursorRectangle.y < flickArea.contentY) {
- flickArea.contentY = cursorRectangle.y;
- return;
- }
-
- if (cursorRectangle.y > flickArea.contentY +
- flickArea.height - cursorRectangle.height) {
- flickArea.contentY = cursorRectangle.y -
- cursorRectangle.height;
- return;
- }
- }
-
- // Proxying keys events is not required by the
- // common API but is desired in the plasma API.
- Keys.onPressed: textArea.Keys.pressed(event);
- Keys.onReleased: textArea.Keys.released(event);
-
- Text {
- anchors.fill: parent
- text: textArea.placeholderText
- visible: textEdit.text == "" && !textArea.activeFocus
- opacity: 0.5
- color: theme.buttonTextColor
- }
- }
- }
-
- ScrollBar {
- id: horizontalScroll
- anchors {
- bottom: parent.bottom
- left: parent.left
- right: flickArea.right
- }
- enabled: parent.enabled
- flickableItem: flickArea
- orientation: Qt.Horizontal
- stepSize: textEdit.font.pixelSize
- }
-
- ScrollBar {
- id: verticalScroll
- anchors {
- right: parent.right
- top: parent.top
- bottom: flickArea.bottom
- }
- enabled: parent.enabled
- flickableItem: flickArea
- orientation: Qt.Vertical
- stepSize: textEdit.font.pixelSize
- }
-
- EditBubble { id: editBubble; iconSize: 32; }
-
- onActiveFocusChanged: {
- if (!activeFocus) {
- editBubble.state = "collapsed";
- //print("Hiding...");
- }
- }
-}
+++ /dev/null
-/*
-* Copyright (C) 2011 by Daker Fernandes Pinheiro <dakerfp@gmail.com>
-*
-* 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 QtQuick 1.1
-import org.kde.plasma.core 0.1 as PlasmaCore
-import org.kde.qtextracomponents 0.1
-import "EditBubble.js" as EditBubbleHelper
-
-Item {
- id: textField
-
- // Common API
- property bool errorHighlight: false // TODO
- property string placeholderText
- property alias inputMethodHints: textInput.inputMethodHints
- property alias font: textInput.font
-
- property alias cursorPosition: textInput.cursorPosition
- property alias readOnly: textInput.readOnly
- property alias echoMode: textInput.echoMode // Supports TextInput.Normal,TextInput.Password, TextInput.NoEcho, TextInput.PasswordEchoOnEdit
- property alias passwordCharacter: textInput.passwordCharacter
-
- property alias acceptableInput: textInput.acceptableInput // read-only
- property alias inputMask: textInput.inputMask
- property alias validator: textInput.validator
- property alias selectedText: textInput.selectedText // read-only
- property alias selectionEnd: textInput.selectionEnd // read-only
- property alias selectionStart: textInput.selectionStart // read-only
- property alias text: textInput.text
- property alias maximumLength: textInput.maximumLength
-
- //Plasma api
- property bool clearButtonShown: false
-
- function copy() {
- textInput.copy();
- }
-
- function paste() {
- textInput.paste();
- }
-
- function cut() {
- textInput.cut();
- }
-
- function select(start, end) {
- textInput.select(start, end);
- }
-
- function selectAll() {
- textInput.selectAll();
- }
-
- function selectWord() {
- textInput.selectWord();
- }
-
- function positionAt(pos) {
- textInput.positionAt(pos);
- }
-
- function positionToRectangle(pos) {
- textInput.positionToRectangle(pos);
- }
-
-
- // Set active focus to it's internal textInput.
- // Overriding QtQuick.Item forceActiveFocus function.
- function forceActiveFocus() {
- textInput.forceActiveFocus();
- }
-
- // Overriding QtQuick.Item activeFocus property.
- property alias activeFocus: textInput.activeFocus
-
- // TODO: fix default size
- implicitWidth: theme.defaultFont.mSize.width*12
- implicitHeight: theme.defaultFont.mSize.height*1.6
- // TODO: needs to define if there will be specific graphics for
- // disabled text fields
- opacity: enabled ? 1.0 : 0.5
-
- PlasmaCore.FrameSvgItem {
- id: base
-
- // TODO: see what is the correct policy for margins
- anchors.fill: parent
- imagePath: "widgets/lineedit"
- prefix: "base"
- }
-
- TextFieldFocus {
- id: hover
- state: textInput.activeFocus ? "focus" : (mouseWatcher.containsMouse ? "hover" : "hidden")
- anchors.fill: base
- }
-
- MouseArea {
- id: mouseWatcher
- anchors.fill: hover
- hoverEnabled: false
- }
-
- Text {
- anchors {
- left: parent.left
- right: parent.right
- verticalCenter: parent.verticalCenter
- leftMargin: 2 * base.margins.left
- rightMargin: 2 * base.margins.right
- }
- text: placeholderText
- visible: textInput.text == "" && !textField.activeFocus
- // XXX: using textColor and low opacity for theming placeholderText
- color: theme.buttonTextColor
- opacity: 0.5
- elide: Text.ElideRight
- clip: true
- font.capitalization: theme.defaultFont.capitalization
- font.family: theme.defaultFont.family
- font.italic: theme.defaultFont.italic
- font.letterSpacing: theme.defaultFont.letterSpacing
- font.pointSize: theme.defaultFont.pointSize
- font.strikeout: theme.defaultFont.strikeout
- font.underline: theme.defaultFont.underline
- font.weight: theme.defaultFont.weight
- font.wordSpacing: theme.defaultFont.wordSpacing
-
- }
-
- EditBubble { id: editBubble; iconSize: 32 }
-
- TextInput {
- id: textInput
- parent: mouseEventListener
-
- anchors {
- left: parent.left
- right: parent.right
- verticalCenter: parent.verticalCenter
- // TODO: see what is the correct policy for margins
- leftMargin: 2 * base.margins.left
- rightMargin: 2 * base.margins.right
- }
- selectByMouse: true
- passwordCharacter: "•"
- color: theme.buttonTextColor
- enabled: textField.enabled
- clip: true
-
- // Proxying keys events is not required by the
- // common API but is desired in the plasma API.
- Keys.forwardTo: textField
- }
-
-
- PlasmaCore.IconItem {
- parent: mouseEventListener // reparent to the MouseFilter for MouseArea to work
- id: clearButton
- source: "edit-clear-locationbar-rtl"
- height: Math.max(textInput.height, theme.mediumIconSize)
- width: height
- opacity: (textInput.text != "" && clearButtonShown) ? 1 : 0
-
- Behavior on opacity {
- NumberAnimation {
- duration: 250
- easing.type: Easing.InOutQuad
- }
- }
- anchors {
- right: parent.right
- rightMargin: y
- verticalCenter: textInput.verticalCenter
- }
- MouseArea {
- anchors {
- fill: parent
- margins: -5
- }
- onClicked: {
- textInput.text = ""
- textInput.forceActiveFocus()
- }
- }
- }
-
- MouseEventListener {
- id: mouseEventListener
- anchors.fill: parent
- onPressAndHold: {
- EditBubbleHelper.placeEditBubble(mouse);
- editBubble.state = (textInput.activeFocus && (textInput.selectedText != "" || textInput.canPaste)) ? "expanded" : "collapsed";
- }
- onPositionChanged: {
- EditBubbleHelper.placeEditBubble(mouse);
- }
- }
-
- onActiveFocusChanged: {
- if (!activeFocus) {
- editBubble.state = "collapsed";
- }
- }
-}
+++ /dev/null
-/*
- * Copyright (C) 2011 by Daker Fernandes Pinheiro <dakerfp@gmail.com>
- * Copyright (C) 2011 by Marco Martin <mart@kde.org>
- *
- * 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 Library 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 QtQuick 1.0
-import org.kde.plasma.core 0.1 as PlasmaCore
-
-Item {
- id: main
- state: parent.state
-
- PlasmaCore.FrameSvgItem {
- id: hover
-
- anchors {
- fill: parent
- leftMargin: -margins.left
- topMargin: -margins.top
- rightMargin: -margins.right
- bottomMargin: -margins.bottom
- }
- opacity: 0
- imagePath: "widgets/lineedit"
- prefix: "hover"
- }
-
- states: [
- State {
- name: "focus"
- PropertyChanges {
- target: hover
- opacity: 1
- prefix: "focus"
- }
- },
- State {
- name: "hidden"
- PropertyChanges {
- target: hover
- opacity: 0
- prefix: "hover"
- }
- }
- ]
-
- transitions: [
- Transition {
- PropertyAnimation {
- properties: "opacity"
- duration: 250
- easing.type: Easing.OutQuad
- }
- }
- ]
-}
+++ /dev/null
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the Qt Components project.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
-** the names of its contributors may be used to endorse or promote
-** products derived from this software without specific prior written
-** permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick 1.0
-
-Item {
- id: root
-
- property bool inPortrait: height > width
- signal orientationChangeAboutToStart
- signal orientationChangeStarted
- signal orientationChangeFinished
-
- width: 800
- height: 480
-
- Connections {
- target: root
- onInPortraitChanged: {
- root.orientationChangeFinished()
- }
- }
-}
+++ /dev/null
-/*
- * Copyright (C) 2011 by Daker Fernandes Pinheiro <dakerfp@gmail.com>
- * Copyright (C) 2011 by Marco Martin <mart@kde.org>
- *
- * 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 Library 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 QtQuick 1.0
-import org.kde.plasma.core 0.1 as PlasmaCore
-
-Item {
- id: main
- state: parent.state
- property bool hasOverState: false
-
- PlasmaCore.FrameSvgItem {
- id: shadow
-
- anchors {
- fill: parent
- leftMargin: -margins.left
- topMargin: -margins.top
- rightMargin: -margins.right
- bottomMargin: -margins.bottom
- }
- imagePath: "widgets/button"
- prefix: "shadow"
- }
-
- states: [
- State {
- name: "shadow"
- PropertyChanges {
- target: shadow
- opacity: 1
- }
- },
- State {
- name: "hidden"
- PropertyChanges {
- target: shadow
- opacity: 0
- }
- }
- ]
-
- transitions: [
- Transition {
- PropertyAnimation {
- properties: "opacity"
- duration: 250
- easing.type: Easing.OutQuad
- }
- }
- ]
-}
+++ /dev/null
-/*
-* Copyright (C) 2012 Marco Martin <mart@kde.org>
-*
-* 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 Library 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.
-*/
-
-var mouseOverEnabled = false
+++ /dev/null
-/*
- * Copyright (C) 2011 by Daker Fernandes Pinheiro <dakerfp@gmail.com>
- * Copyright (C) 2011 by Marco Martin <mart@kde.org>
- *
- * 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 Library 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 QtQuick 1.0
-import org.kde.plasma.core 0.1 as PlasmaCore
-
-Item {
- id: main
- state: parent.state
- property alias imagePath: shadowSvg.imagePath
- property string hoverElement: "hover"
- property string focusElement: "focus"
- property alias shadowElement: shadow.elementId
- property bool hasOverState: false
-
- PlasmaCore.Svg {
- id: shadowSvg
- imagePath: "widgets/actionbutton"
- }
-
- PlasmaCore.SvgItem {
- id: hover
- svg: shadowSvg
- elementId: "hover"
-
- anchors.fill: parent
-
- opacity: 0
- }
-
- PlasmaCore.SvgItem {
- id: shadow
- svg: shadowSvg
- elementId: "shadow"
-
- anchors.fill: parent
- }
-
- states: [
- State {
- name: "shadow"
- PropertyChanges {
- target: shadow
- opacity: 1
- }
- PropertyChanges {
- target: hover
- opacity: 0
- elementId: hoverElement
- }
- },
- State {
- name: "focus"
- PropertyChanges {
- target: shadow
- opacity: 0
- }
- PropertyChanges {
- target: hover
- opacity: 1
- elementId: focusElement
- }
- },
- State {
- name: "hidden"
- PropertyChanges {
- target: shadow
- opacity: 0
- }
- PropertyChanges {
- target: hover
- opacity: 0
- elementId: hoverElement
- }
- }
- ]
-
- transitions: [
- Transition {
- PropertyAnimation {
- properties: "opacity"
- duration: 250
- easing.type: Easing.OutQuad
- }
- }
- ]
-}
+++ /dev/null
-plugin plasmacomponentsplugin
-
-BusyIndicator 0.1 BusyIndicator.qml
-Button 0.1 Button.qml
-ButtonColumn 0.1 ButtonColumn.qml
-ButtonGroup 0.1 ButtonGroup.js
-ButtonRow 0.1 ButtonRow.qml
-CheckBox 0.1 CheckBox.qml
-CommonDialog 0.1 CommonDialog.qml
-ContextMenu 0.1 Menu.qml
-Dialog 0.1 Dialog.qml
-Highlight 0.1 Highlight.qml
-Label 0.1 Label.qml
-ListItem 0.1 ListItem.qml
-Menu 0.1 Menu.qml
-MenuItem 0.1 MenuItem.qml
-Page 0.1 Page.qml
-PageStack 0.1 PageStack.qml
-ProgressBar 0.1 ProgressBar.qml
-QueryDialog 0.1 QueryDialog.qml
-RadioButton 0.1 RadioButton.qml
-ScrollBar 0.1 ScrollBar.qml
-ScrollDecorator 0.1 ScrollDecorator.qml
-SectionScroller 0.1 SectionScroller.qml
-SelectionDialog 0.1 SelectionDialog.qml
-Slider 0.1 Slider.qml
-Switch 0.1 Switch.qml
-TabBar 0.1 TabBar.qml
-TabButton 0.1 TabButton.qml
-TabGroup 0.1 TabGroup.qml
-TextArea 0.1 TextArea.qml
-TextField 0.1 TextField.qml
-ToolBar 0.1 ToolBar.qml
-ToolBarLayout 0.1 ToolBarLayout.qml
-ToolButton 0.1 ToolButton.qml
-Window 0.1 Window.qml
install(TARGETS plasmaextracomponentsplugin DESTINATION ${IMPORTS_INSTALL_DIR}/org/kde/plasma/extras)
install(DIRECTORY qml/ DESTINATION ${IMPORTS_INSTALL_DIR}/org/kde/plasma/extras)
-
-
-# The platform specific stuff, overwrites a copy of the desktop one
-# it does install some files on top of the old ones, has to be done
-# file by file since if some component from the generic set is more
-# recent than the specifc ones, it wouldn't be overwritten
-
-#install(TARGETS plasmaextracomponentsplugin DESTINATION ${PLUGIN_INSTALL_DIR}/platformimports/touch/org/kde/plasma/extras)
-#install(FILES qml/qmldir DESTINATION ${PLUGIN_INSTALL_DIR}/platformimports/touch/org/kde/plasma/extras)
-
-# install(FILES qml/App.qml DESTINATION ${PLUGIN_INSTALL_DIR}/platformimports/touch/org/kde/plasma/extras)
-# install(FILES qml/Heading.qml DESTINATION ${PLUGIN_INSTALL_DIR}/platformimports/touch/org/kde/plasma/extras)
-# install(FILES qml/Paragraph.qml DESTINATION ${PLUGIN_INSTALL_DIR}/platformimports/touch/org/kde/plasma/extras)
-# install(FILES qml/Title.qml DESTINATION ${PLUGIN_INSTALL_DIR}/platformimports/touch/org/kde/plasma/extras)
-# install(DIRECTORY qml/animations/ DESTINATION ${PLUGIN_INSTALL_DIR}/platformimports/touch/org/kde/plasma/extras)
-
-#install(DIRECTORY qml/animations/ DESTINATION ${IMPORTS_INSTALL_DIR}/org/kde/plasma/extras)
-
-#install platform overrides -- enable as we use this feature for plasmaextras
-#install(DIRECTORY platformcomponents/touch/ DESTINATION ${PLUGIN_INSTALL_DIR}/platformimports/touch/org/kde/plasma/extras)