Plasma controls based on QtQuickControls2
Summary: This is a basic styling of a QtQuickControls2 series based on Plasma theme. it has the main controls available in Qt 5.7 it installs them as a separate import (org.kde.plasma.controls 3.0) for use restricted to plasmoids, is probably needed to be still installed as a style as well Test Plan: tried with minimal QML files, a more comprehensive gallery may be needed. pending considerations: * some of the classes, like Drawer, the dialogs and ApplicationWindow *don't* make sense in plasmoids * it will probably still need to be installed also as a qqc2 style, as this should be used in Plasma mobile * probably only some of the controls should be installed as a separate import, the whole set as a style strictly for Plasma Mobile use. the same qml files would be used, so no maintainance overhead Reviewers: #plasma, davidedmundson Reviewed By: #plasma, davidedmundson Subscribers: davidedmundson, broulik, plasma-devel, #frameworks Tags: #plasma, #frameworks Differential Revision: https://phabricator.kde.org/D4508
This commit is contained in:
parent
a9161892b1
commit
76af5399dd
@ -6,3 +6,40 @@ add_subdirectory(platformcomponents)
|
|||||||
add_subdirectory(calendar)
|
add_subdirectory(calendar)
|
||||||
|
|
||||||
install(DIRECTORY plasmastyle/ DESTINATION ${KDE_INSTALL_QMLDIR}/QtQuick/Controls/Styles/Plasma)
|
install(DIRECTORY plasmastyle/ DESTINATION ${KDE_INSTALL_QMLDIR}/QtQuick/Controls/Styles/Plasma)
|
||||||
|
|
||||||
|
|
||||||
|
#install the components as a QQC2 Style, as style for applications (mainly for Plasma Mobile)
|
||||||
|
install(DIRECTORY plasmacomponents3/ DESTINATION ${KDE_INSTALL_QMLDIR}/QtQuick/Controls.2/Plasma PATTERN qmldir EXCLUDE)
|
||||||
|
|
||||||
|
#install some of the componets as a separate import, to be used in plasmoids (some of them like ApplicationWindow are of no use for plasmoids)
|
||||||
|
install(FILES plasmacomponents3/BusyIndicator.qml
|
||||||
|
plasmacomponents3/Button.qml
|
||||||
|
plasmacomponents3/CheckBox.qml
|
||||||
|
plasmacomponents3/CheckDelegate.qml
|
||||||
|
plasmacomponents3/CheckIndicator.qml
|
||||||
|
#combobox is not in a new window, but maybe better already than the broken qqc1 combobox?
|
||||||
|
plasmacomponents3/ComboBox.qml
|
||||||
|
plasmacomponents3/Container.qml
|
||||||
|
plasmacomponents3/Control.qml
|
||||||
|
plasmacomponents3/Dial.qml
|
||||||
|
plasmacomponents3/Frame.qml
|
||||||
|
plasmacomponents3/GroupBox.qml
|
||||||
|
plasmacomponents3/ItemDelegate.qml
|
||||||
|
plasmacomponents3/Label.qml
|
||||||
|
|
||||||
|
plasmacomponents3/ProgressBar.qml
|
||||||
|
plasmacomponents3/RadioButton.qml
|
||||||
|
plasmacomponents3/RadioDelegate.qml
|
||||||
|
plasmacomponents3/RadioIndicator.qml
|
||||||
|
plasmacomponents3/RangeSlider.qml
|
||||||
|
plasmacomponents3/ScrollBar.qml
|
||||||
|
plasmacomponents3/Slider.qml
|
||||||
|
plasmacomponents3/SpinBox.qml
|
||||||
|
plasmacomponents3/TabBar.qml
|
||||||
|
plasmacomponents3/TabButton.qml
|
||||||
|
plasmacomponents3/TextArea.qml
|
||||||
|
plasmacomponents3/TextField.qml
|
||||||
|
plasmacomponents3/ToolBar.qml
|
||||||
|
plasmacomponents3/ToolButton.qml
|
||||||
|
|
||||||
|
DESTINATION ${KDE_INSTALL_QMLDIR}/org/kde/plasma/components.3)
|
||||||
|
61
src/declarativeimports/plasmacomponents3/BusyIndicator.qml
Normal file
61
src/declarativeimports/plasmacomponents3/BusyIndicator.qml
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2014 Kai Uwe Broulik <kde@privat.broulik.de>
|
||||||
|
* Copyright 2016 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 2.010-1301, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import QtQuick 2.2
|
||||||
|
import QtQuick.Templates 2.0 as T
|
||||||
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||||
|
|
||||||
|
T.BusyIndicator {
|
||||||
|
id: control
|
||||||
|
|
||||||
|
implicitWidth: contentItem.implicitWidth + leftPadding + rightPadding
|
||||||
|
implicitHeight: contentItem.implicitHeight + topPadding + bottomPadding
|
||||||
|
|
||||||
|
padding: units.smallSpacing
|
||||||
|
|
||||||
|
contentItem: PlasmaCore.SvgItem {
|
||||||
|
id: indicatorItem
|
||||||
|
svg: PlasmaCore.Svg {
|
||||||
|
imagePath: "widgets/busywidget"
|
||||||
|
colorGroup: PlasmaCore.ColorScope.colorGroup
|
||||||
|
}
|
||||||
|
elementId: "busywidget"
|
||||||
|
|
||||||
|
implicitWidth: units.gridUnit * 2
|
||||||
|
implicitHeight: width
|
||||||
|
|
||||||
|
Connections {
|
||||||
|
target: control
|
||||||
|
onRunningChanged: {
|
||||||
|
rotationAnimator.from = rotation
|
||||||
|
rotationAnimator.to = rotation + 360
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
RotationAnimator on rotation {
|
||||||
|
id: rotationAnimator
|
||||||
|
from: 0
|
||||||
|
to: 360
|
||||||
|
duration: 1500
|
||||||
|
running: control.running && indicatorItem.visible && indicatorItem.opacity > 0;
|
||||||
|
loops: Animation.Infinite
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
93
src/declarativeimports/plasmacomponents3/Button.qml
Normal file
93
src/declarativeimports/plasmacomponents3/Button.qml
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2016 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 2.6
|
||||||
|
import QtQuick.Templates 2.0 as T
|
||||||
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||||
|
import "private" as Private
|
||||||
|
|
||||||
|
T.Button {
|
||||||
|
id: control
|
||||||
|
|
||||||
|
implicitWidth: Math.max(background.implicitWidth,
|
||||||
|
contentItem.implicitWidth + leftPadding + rightPadding)
|
||||||
|
implicitHeight: Math.max(background.implicitHeight, contentItem.implicitHeight + topPadding + bottomPadding)
|
||||||
|
|
||||||
|
leftPadding: surfaceNormal.margins.left
|
||||||
|
topPadding: surfaceNormal.margins.top
|
||||||
|
rightPadding: surfaceNormal.margins.right
|
||||||
|
bottomPadding: surfaceNormal.margins.bottom
|
||||||
|
|
||||||
|
hoverEnabled: true //Qt.styleHints.useHoverEffects TODO: how to make this work in 5.7?
|
||||||
|
|
||||||
|
contentItem: Label {
|
||||||
|
text: control.text
|
||||||
|
font: control.font
|
||||||
|
opacity: enabled || control.highlighted || control.checked ? 1 : 0.4
|
||||||
|
color: theme.buttonTextColor
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
elide: Text.ElideRight
|
||||||
|
}
|
||||||
|
|
||||||
|
background: Item {
|
||||||
|
//retrocompatibility with old controls
|
||||||
|
implicitWidth: units.gridUnit * 6
|
||||||
|
implicitHeight: units.gridUnit * 1.6
|
||||||
|
Private.ButtonShadow {
|
||||||
|
anchors.fill: parent
|
||||||
|
state: {
|
||||||
|
if (control.pressed) {
|
||||||
|
return "hidden"
|
||||||
|
} else if (control.hovered) {
|
||||||
|
return "hover"
|
||||||
|
} else if (control.activeFocus) {
|
||||||
|
return "focus"
|
||||||
|
} else {
|
||||||
|
return "shadow"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
PlasmaCore.FrameSvgItem {
|
||||||
|
id: surfaceNormal
|
||||||
|
anchors.fill: parent
|
||||||
|
imagePath: "widgets/button"
|
||||||
|
prefix: "normal"
|
||||||
|
opacity: control.checked || control.pressed ? 0 : 1
|
||||||
|
Behavior on opacity {
|
||||||
|
OpacityAnimator {
|
||||||
|
duration: units.longDuration
|
||||||
|
easing.type: Easing.InOutQuad
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
PlasmaCore.FrameSvgItem {
|
||||||
|
anchors.fill: parent
|
||||||
|
imagePath: "widgets/button"
|
||||||
|
prefix: "pressed"
|
||||||
|
opacity: control.checked || control.pressed ? 1 : 0
|
||||||
|
Behavior on opacity {
|
||||||
|
OpacityAnimator {
|
||||||
|
duration: units.longDuration
|
||||||
|
easing.type: Easing.InOutQuad
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
62
src/declarativeimports/plasmacomponents3/CheckBox.qml
Normal file
62
src/declarativeimports/plasmacomponents3/CheckBox.qml
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2016 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 2.6
|
||||||
|
import QtQuick.Templates 2.0 as T
|
||||||
|
import QtQuick.Controls 2.0
|
||||||
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||||
|
|
||||||
|
T.CheckBox {
|
||||||
|
id: control
|
||||||
|
|
||||||
|
implicitWidth: Math.max(background ? background.implicitWidth : 0,
|
||||||
|
contentItem.implicitWidth + leftPadding + rightPadding)
|
||||||
|
implicitHeight: Math.max(background ? background.implicitHeight : 0,
|
||||||
|
Math.max(contentItem.implicitHeight,
|
||||||
|
indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding)
|
||||||
|
baselineOffset: contentItem.y + contentItem.baselineOffset
|
||||||
|
|
||||||
|
padding: 1
|
||||||
|
spacing: Math.round(units.gridUnit / 8)
|
||||||
|
|
||||||
|
hoverEnabled: true
|
||||||
|
|
||||||
|
indicator: CheckIndicator {
|
||||||
|
LayoutMirroring.enabled: control.mirrored
|
||||||
|
LayoutMirroring.childrenInherit: true
|
||||||
|
anchors {
|
||||||
|
left: parent.left
|
||||||
|
verticalCenter: parent.verticalCenter
|
||||||
|
}
|
||||||
|
control: control
|
||||||
|
}
|
||||||
|
|
||||||
|
contentItem: Label {
|
||||||
|
leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0
|
||||||
|
rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0
|
||||||
|
opacity: control.enabled ? 1 : 0.6
|
||||||
|
text: control.text
|
||||||
|
font: control.font
|
||||||
|
color: PlasmaCore.ColorScope.textColor
|
||||||
|
elide: Text.ElideRight
|
||||||
|
visible: control.text
|
||||||
|
horizontalAlignment: Text.AlignLeft
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
}
|
||||||
|
}
|
60
src/declarativeimports/plasmacomponents3/CheckDelegate.qml
Normal file
60
src/declarativeimports/plasmacomponents3/CheckDelegate.qml
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2016 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 2.5
|
||||||
|
import QtQuick.Templates 2.0 as T
|
||||||
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||||
|
import "private"
|
||||||
|
|
||||||
|
T.CheckDelegate {
|
||||||
|
id: control
|
||||||
|
|
||||||
|
implicitWidth: contentItem.implicitWidth + leftPadding + rightPadding
|
||||||
|
implicitHeight: Math.max(contentItem.implicitHeight,
|
||||||
|
indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding
|
||||||
|
hoverEnabled: true
|
||||||
|
|
||||||
|
topPadding: background.margins.top
|
||||||
|
bottomPadding: background.margins.bottom
|
||||||
|
leftPadding: background.margins.left
|
||||||
|
rightPadding: background.margins.right
|
||||||
|
spacing: units.smallSpacing
|
||||||
|
|
||||||
|
contentItem: Label {
|
||||||
|
leftPadding: control.mirrored ? (control.indicator ? control.indicator.width : 0) + control.spacing : 0
|
||||||
|
rightPadding: !control.mirrored ? (control.indicator ? control.indicator.width : 0) + control.spacing : 0
|
||||||
|
|
||||||
|
text: control.text
|
||||||
|
font: control.font
|
||||||
|
color: theme.viewTextColor
|
||||||
|
elide: Text.ElideRight
|
||||||
|
visible: control.text
|
||||||
|
horizontalAlignment: Text.AlignLeft
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
}
|
||||||
|
|
||||||
|
indicator: CheckIndicator {
|
||||||
|
x: control.mirrored ? control.leftPadding : control.width - width - control.rightPadding
|
||||||
|
y: control.topPadding + (control.availableHeight - height) / 2
|
||||||
|
|
||||||
|
control: control
|
||||||
|
}
|
||||||
|
|
||||||
|
background: DefaultListItemBackground {}
|
||||||
|
}
|
64
src/declarativeimports/plasmacomponents3/CheckIndicator.qml
Normal file
64
src/declarativeimports/plasmacomponents3/CheckIndicator.qml
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2016 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 2.6
|
||||||
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||||
|
import "private" as Private
|
||||||
|
|
||||||
|
PlasmaCore.FrameSvgItem {
|
||||||
|
id: root
|
||||||
|
property Item control
|
||||||
|
imagePath: "widgets/button"
|
||||||
|
prefix: "normal"
|
||||||
|
implicitWidth: units.gridUnit
|
||||||
|
implicitHeight: units.gridUnit
|
||||||
|
opacity: control.enabled ? 1 : 0.6
|
||||||
|
|
||||||
|
PlasmaCore.SvgItem {
|
||||||
|
svg: PlasmaCore.Svg {
|
||||||
|
id: checkmarkSvg
|
||||||
|
imagePath: "widgets/checkmarks"
|
||||||
|
}
|
||||||
|
elementId: "checkbox"
|
||||||
|
opacity: {
|
||||||
|
switch (control.checkState) {
|
||||||
|
case Qt.Checked:
|
||||||
|
return 1;
|
||||||
|
case Qt.PartiallyChecked:
|
||||||
|
return 0.5;
|
||||||
|
default:
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
anchors {
|
||||||
|
fill: parent
|
||||||
|
}
|
||||||
|
Behavior on opacity {
|
||||||
|
NumberAnimation {
|
||||||
|
duration: units.longDuration
|
||||||
|
easing.type: Easing.InOutQuad
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Private.ButtonShadow {
|
||||||
|
z: -1
|
||||||
|
anchors.fill: parent
|
||||||
|
state: control.activeFocus ? "focus" : (control.hovered ? "hover" : "shadow")
|
||||||
|
}
|
||||||
|
}
|
133
src/declarativeimports/plasmacomponents3/ComboBox.qml
Normal file
133
src/declarativeimports/plasmacomponents3/ComboBox.qml
Normal file
@ -0,0 +1,133 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2016 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 2.6
|
||||||
|
import QtQuick.Window 2.2
|
||||||
|
import QtQuick.Templates 2.0 as T
|
||||||
|
import QtQuick.Controls 2.0 as Controls
|
||||||
|
import QtGraphicalEffects 1.0
|
||||||
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||||
|
import "private" as Private
|
||||||
|
|
||||||
|
T.ComboBox {
|
||||||
|
id: control
|
||||||
|
|
||||||
|
implicitWidth: Math.max(background ? background.implicitWidth : 0,
|
||||||
|
contentItem.implicitWidth + leftPadding + rightPadding) + indicator.implicitWidth + rightPadding
|
||||||
|
implicitHeight: units.gridUnit * 1.6
|
||||||
|
baselineOffset: contentItem.y + contentItem.baselineOffset
|
||||||
|
|
||||||
|
hoverEnabled: true
|
||||||
|
topPadding: surfaceNormal.margins.top
|
||||||
|
leftPadding: surfaceNormal.margins.left
|
||||||
|
rightPadding: surfaceNormal.margins.right
|
||||||
|
bottomPadding: surfaceNormal.margins.bottom
|
||||||
|
|
||||||
|
delegate: ItemDelegate {
|
||||||
|
width: control.popup.width
|
||||||
|
text: control.textRole ? (Array.isArray(control.model) ? modelData[control.textRole] : model[control.textRole]) : modelData
|
||||||
|
highlighted: control.highlightedIndex == index
|
||||||
|
property bool separatorVisible: false
|
||||||
|
}
|
||||||
|
|
||||||
|
indicator: PlasmaCore.SvgItem {
|
||||||
|
implicitWidth: units.iconSizes.small
|
||||||
|
implicitHeight: implicitWidth
|
||||||
|
anchors {
|
||||||
|
right: parent.right
|
||||||
|
rightMargin: surfaceNormal.margins.right
|
||||||
|
verticalCenter: parent.verticalCenter
|
||||||
|
}
|
||||||
|
svg: PlasmaCore.Svg {
|
||||||
|
imagePath: "widgets/arrows"
|
||||||
|
colorGroup: PlasmaCore.Theme.ButtonColorGroup
|
||||||
|
}
|
||||||
|
elementId: "down-arrow"
|
||||||
|
}
|
||||||
|
|
||||||
|
contentItem: Label {
|
||||||
|
text: control.displayText
|
||||||
|
font: control.font
|
||||||
|
color: theme.buttonTextColor
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
elide: Text.ElideRight
|
||||||
|
}
|
||||||
|
|
||||||
|
background: PlasmaCore.FrameSvgItem {
|
||||||
|
id: surfaceNormal
|
||||||
|
//retrocompatibility with old controls
|
||||||
|
implicitWidth: units.gridUnit * 6
|
||||||
|
anchors.fill: parent
|
||||||
|
imagePath: "widgets/button"
|
||||||
|
prefix: control.pressed ? "pressed" : "normal"
|
||||||
|
Private.ButtonShadow {
|
||||||
|
z: -1
|
||||||
|
anchors.fill: parent
|
||||||
|
state: {
|
||||||
|
if (control.pressed) {
|
||||||
|
return "hidden"
|
||||||
|
} else if (control.hovered) {
|
||||||
|
return "hover"
|
||||||
|
} else if (control.activeFocus) {
|
||||||
|
return "focus"
|
||||||
|
} else {
|
||||||
|
return "shadow"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
popup: T.Popup {
|
||||||
|
y: control.height
|
||||||
|
width: Math.max(control.width, 150)
|
||||||
|
implicitHeight: contentItem.implicitHeight
|
||||||
|
topMargin: 6
|
||||||
|
bottomMargin: 6
|
||||||
|
|
||||||
|
contentItem: ListView {
|
||||||
|
id: listview
|
||||||
|
clip: true
|
||||||
|
implicitHeight: contentHeight
|
||||||
|
model: control.popup.visible ? control.delegateModel : null
|
||||||
|
currentIndex: control.highlightedIndex
|
||||||
|
highlightRangeMode: ListView.ApplyRange
|
||||||
|
highlightMoveDuration: 0
|
||||||
|
T.ScrollBar.vertical: Controls.ScrollBar { }
|
||||||
|
}
|
||||||
|
background: Rectangle {
|
||||||
|
anchors {
|
||||||
|
fill: parent
|
||||||
|
margins: -1
|
||||||
|
}
|
||||||
|
radius: 2
|
||||||
|
color: theme.viewBackgroundColor
|
||||||
|
border.color: Qt.rgba(theme.textColor.r, theme.textColor.g, theme.textColor.b, 0.3)
|
||||||
|
layer.enabled: true
|
||||||
|
|
||||||
|
layer.effect: DropShadow {
|
||||||
|
transparentBorder: true
|
||||||
|
radius: 4
|
||||||
|
samples: 8
|
||||||
|
horizontalOffset: 2
|
||||||
|
verticalOffset: 2
|
||||||
|
color: Qt.rgba(0, 0, 0, 0.3)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
30
src/declarativeimports/plasmacomponents3/Container.qml
Normal file
30
src/declarativeimports/plasmacomponents3/Container.qml
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2016 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 2.6
|
||||||
|
import QtQuick.Templates 2.0 as T
|
||||||
|
|
||||||
|
T.Container {
|
||||||
|
id: control
|
||||||
|
|
||||||
|
implicitWidth: Math.max(background ? background.implicitWidth : 0,
|
||||||
|
(contentItem ? contentItem.implicitWidth : 0) + leftPadding + rightPadding)
|
||||||
|
implicitHeight: Math.max(background ? background.implicitHeight : 0,
|
||||||
|
(contentItem ? contentItem.implicitHeight : 0) + topPadding + bottomPadding)
|
||||||
|
}
|
30
src/declarativeimports/plasmacomponents3/Control.qml
Normal file
30
src/declarativeimports/plasmacomponents3/Control.qml
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2016 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 2.6
|
||||||
|
import QtQuick.Templates 2.0 as T
|
||||||
|
|
||||||
|
T.Control {
|
||||||
|
id: control
|
||||||
|
|
||||||
|
implicitWidth: Math.max(background ? background.implicitWidth : 0,
|
||||||
|
(contentItem ? contentItem.implicitWidth : 0) + leftPadding + rightPadding)
|
||||||
|
implicitHeight: Math.max(background ? background.implicitHeight : 0,
|
||||||
|
(contentItem ? contentItem.implicitHeight : 0) + topPadding + bottomPadding)
|
||||||
|
}
|
83
src/declarativeimports/plasmacomponents3/Dial.qml
Normal file
83
src/declarativeimports/plasmacomponents3/Dial.qml
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2016 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 2.6
|
||||||
|
import QtQuick.Templates 2.0 as T
|
||||||
|
import QtQuick.Controls.impl 2.0
|
||||||
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||||
|
import "private" as Private
|
||||||
|
|
||||||
|
T.Dial {
|
||||||
|
id: control
|
||||||
|
|
||||||
|
implicitWidth: units.gridUnit * 5
|
||||||
|
implicitHeight: implicitWidth
|
||||||
|
hoverEnabled: true
|
||||||
|
|
||||||
|
background: DialRing {
|
||||||
|
width: control.availableWidth
|
||||||
|
height: control.availableHeight
|
||||||
|
color: control.visualFocus ? theme.highlightColor : theme.textColor
|
||||||
|
progress: control.position
|
||||||
|
opacity: control.enabled ? 0.5 : 0.3
|
||||||
|
}
|
||||||
|
|
||||||
|
PlasmaCore.Svg {
|
||||||
|
id: grooveSvg
|
||||||
|
imagePath: "widgets/slider"
|
||||||
|
colorGroup: PlasmaCore.ColorScope.colorGroup
|
||||||
|
}
|
||||||
|
handle: Item {
|
||||||
|
x: (control.width/2) + Math.cos((-(control.angle-90)*Math.PI)/180) * (control.width/2-width/2) - width/2
|
||||||
|
y: (control.height/2) + Math.sin(((control.angle-90)*Math.PI)/180) * (control.height/2-height/2) - height/2
|
||||||
|
|
||||||
|
implicitHeight: Math.floor(units.gridUnit*1.6)
|
||||||
|
implicitWidth: implicitHeight
|
||||||
|
|
||||||
|
Private.RoundShadow {
|
||||||
|
id: roundShadow
|
||||||
|
anchors.fill: parent
|
||||||
|
state: {
|
||||||
|
if (control.pressed) {
|
||||||
|
return "hidden"
|
||||||
|
} else if (control.hovered) {
|
||||||
|
return "hover"
|
||||||
|
} else if (control.activeFocus) {
|
||||||
|
return "focus"
|
||||||
|
} else {
|
||||||
|
return "shadow"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
PlasmaCore.SvgItem {
|
||||||
|
svg: PlasmaCore.Svg {
|
||||||
|
id: buttonSvg
|
||||||
|
imagePath: "widgets/actionbutton"
|
||||||
|
}
|
||||||
|
elementId: control.pressed? "pressed" : "normal"
|
||||||
|
width: Math.floor(parent.height/2) * 2
|
||||||
|
height: width
|
||||||
|
anchors.centerIn: parent
|
||||||
|
Behavior on opacity {
|
||||||
|
NumberAnimation { duration: units.longDuration }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
70
src/declarativeimports/plasmacomponents3/Dialog.qml
Normal file
70
src/declarativeimports/plasmacomponents3/Dialog.qml
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2016 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 2.6
|
||||||
|
import QtQuick.Templates 2.1 as T
|
||||||
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||||
|
|
||||||
|
T.Dialog {
|
||||||
|
id: control
|
||||||
|
|
||||||
|
implicitWidth: Math.max(background ? background.implicitWidth : 0,
|
||||||
|
contentWidth > 0 ? contentWidth + leftPadding + rightPadding : 0)
|
||||||
|
implicitHeight: Math.max(background ? background.implicitHeight : 0,
|
||||||
|
contentWidth > 0 ? contentHeight + topPadding + bottomPadding : 0)
|
||||||
|
|
||||||
|
contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0)
|
||||||
|
contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0)
|
||||||
|
|
||||||
|
leftPadding: background.margins.left
|
||||||
|
topPadding: background.margins.top
|
||||||
|
rightPadding: background.margins.right
|
||||||
|
bottomPadding: background.margins.bottom
|
||||||
|
|
||||||
|
enter: Transition {
|
||||||
|
NumberAnimation {
|
||||||
|
property: "opacity"
|
||||||
|
from: 0
|
||||||
|
to: 1
|
||||||
|
easing.type: Easing.InOutQuad
|
||||||
|
duration: 250
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exit: Transition {
|
||||||
|
NumberAnimation {
|
||||||
|
property: "opacity"
|
||||||
|
from: 1
|
||||||
|
to: 0
|
||||||
|
easing.type: Easing.InOutQuad
|
||||||
|
duration: 250
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
contentItem: Item { }
|
||||||
|
|
||||||
|
background: PlasmaCore.FrameSvgItem {
|
||||||
|
implicitWidth: units.gridUnit * 12
|
||||||
|
imagePath: "widgets/background"
|
||||||
|
}
|
||||||
|
|
||||||
|
footer: DialogButtonBox {
|
||||||
|
position: DialogButtonBox.Footer
|
||||||
|
}
|
||||||
|
}
|
53
src/declarativeimports/plasmacomponents3/DialogButtonBox.qml
Normal file
53
src/declarativeimports/plasmacomponents3/DialogButtonBox.qml
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2016 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 2.6
|
||||||
|
import QtQuick.Templates 2.1 as T
|
||||||
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||||
|
|
||||||
|
T.DialogButtonBox {
|
||||||
|
id: control
|
||||||
|
|
||||||
|
implicitWidth: contentItem.implicitWidth + leftPadding + rightPadding
|
||||||
|
implicitHeight: contentItem.implicitHeight + topPadding + bottomPadding
|
||||||
|
|
||||||
|
spacing: units.smallSpacing
|
||||||
|
leftPadding: parent.leftPadding
|
||||||
|
topPadding: parent.topPadding
|
||||||
|
rightPadding: parent.rightPadding
|
||||||
|
bottomPadding: parent.bottomPadding
|
||||||
|
alignment: Qt.AlignRight
|
||||||
|
|
||||||
|
delegate: Button {
|
||||||
|
width: Math.min(implicitWidth, control.width / control.count - control.rightPadding - control.spacing * (control.count-1))
|
||||||
|
}
|
||||||
|
|
||||||
|
contentItem: ListView {
|
||||||
|
implicitWidth: contentWidth
|
||||||
|
implicitHeight: units.gridUnit * 1.6
|
||||||
|
|
||||||
|
model: control.contentModel
|
||||||
|
spacing: control.spacing
|
||||||
|
orientation: ListView.Horizontal
|
||||||
|
boundsBehavior: Flickable.StopAtBounds
|
||||||
|
snapMode: ListView.SnapToItem
|
||||||
|
}
|
||||||
|
|
||||||
|
background: Item {}
|
||||||
|
}
|
75
src/declarativeimports/plasmacomponents3/Drawer.qml
Normal file
75
src/declarativeimports/plasmacomponents3/Drawer.qml
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2016 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 2.6
|
||||||
|
import QtQuick.Templates 2.0 as T
|
||||||
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||||
|
|
||||||
|
T.Drawer {
|
||||||
|
id: control
|
||||||
|
|
||||||
|
parent: T.ApplicationWindow.overlay
|
||||||
|
|
||||||
|
implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding)
|
||||||
|
implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding)
|
||||||
|
|
||||||
|
contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0)
|
||||||
|
contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0)
|
||||||
|
|
||||||
|
topPadding: control.edge === Qt.BottomEdge ? Math.round(units.devicePixelRatio) : 0
|
||||||
|
leftPadding: control.edge === Qt.RightEdge ? Math.round(units.devicePixelRatio) : 0
|
||||||
|
rightPadding: control.edge === Qt.LeftEdge ? Math.round(units.devicePixelRatio) : 0
|
||||||
|
bottomPadding: control.edge === Qt.TopEdge ? Math.round(units.devicePixelRatio) : 0
|
||||||
|
|
||||||
|
background: PlasmaCore.FrameSvgItem {
|
||||||
|
anchors {
|
||||||
|
fill: parent
|
||||||
|
leftMargin: -margins.left
|
||||||
|
topMargin: -margins.top
|
||||||
|
rightMargin: -margins.right
|
||||||
|
bottomMargin: -margins.bottom
|
||||||
|
}
|
||||||
|
implicitWidth: units.gridUnit * 12
|
||||||
|
imagePath: "widgets/background"
|
||||||
|
enabledBorders: {
|
||||||
|
switch (control.edge) {
|
||||||
|
case Qt.BottomEdge:
|
||||||
|
return PlasmaCore.FrameSvgItem.TopBorder;
|
||||||
|
case Qt.RightEdge:
|
||||||
|
return PlasmaCore.FrameSvgItem.LeftBorder;
|
||||||
|
case Qt.TopEdge:
|
||||||
|
return PlasmaCore.FrameSvgItem.BottomBorder;
|
||||||
|
case Qt.LeftEdge:
|
||||||
|
default:
|
||||||
|
return PlasmaCore.FrameSvgItem.RightBorder;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
enter: Transition {
|
||||||
|
SmoothedAnimation {
|
||||||
|
velocity: 5
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exit: Transition {
|
||||||
|
SmoothedAnimation {
|
||||||
|
velocity: 5
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
40
src/declarativeimports/plasmacomponents3/Frame.qml
Normal file
40
src/declarativeimports/plasmacomponents3/Frame.qml
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2016 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 2.6
|
||||||
|
import QtQuick.Controls 2.0
|
||||||
|
import QtQuick.Templates 2.0 as T
|
||||||
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||||
|
|
||||||
|
T.Frame {
|
||||||
|
id: control
|
||||||
|
|
||||||
|
implicitWidth: contentWidth + leftPadding + rightPadding
|
||||||
|
implicitHeight: contentHeight + topPadding + bottomPadding
|
||||||
|
|
||||||
|
contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0)
|
||||||
|
contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0)
|
||||||
|
|
||||||
|
padding: units.smallSpacing
|
||||||
|
|
||||||
|
background: PlasmaCore.FrameSvgItem {
|
||||||
|
imagePath: "widgets/frame"
|
||||||
|
prefix: "plain"
|
||||||
|
}
|
||||||
|
}
|
53
src/declarativeimports/plasmacomponents3/GroupBox.qml
Normal file
53
src/declarativeimports/plasmacomponents3/GroupBox.qml
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2016 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 2.6
|
||||||
|
import QtQuick.Controls 2.0
|
||||||
|
import QtQuick.Templates 2.0 as T
|
||||||
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||||
|
|
||||||
|
T.GroupBox {
|
||||||
|
id: control
|
||||||
|
|
||||||
|
implicitWidth: contentWidth + leftPadding + rightPadding
|
||||||
|
implicitHeight: contentHeight + topPadding + bottomPadding
|
||||||
|
|
||||||
|
contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0)
|
||||||
|
contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0)
|
||||||
|
|
||||||
|
padding: 6
|
||||||
|
topPadding: padding + (label && label.implicitWidth > 0 ? label.implicitHeight + spacing : 0)
|
||||||
|
|
||||||
|
label: Label {
|
||||||
|
x: control.leftPadding
|
||||||
|
width: control.availableWidth
|
||||||
|
|
||||||
|
text: control.title
|
||||||
|
font: control.font
|
||||||
|
color: SystemPaletteSingleton.text(control.enabled)
|
||||||
|
elide: Text.ElideRight
|
||||||
|
horizontalAlignment: Text.AlignLeft
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
}
|
||||||
|
|
||||||
|
background: PlasmaCore.FrameSvgItem {
|
||||||
|
imagePath: "widgets/frame"
|
||||||
|
prefix: "plain"
|
||||||
|
}
|
||||||
|
}
|
53
src/declarativeimports/plasmacomponents3/ItemDelegate.qml
Normal file
53
src/declarativeimports/plasmacomponents3/ItemDelegate.qml
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2016 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 2.5
|
||||||
|
import QtQuick.Templates 2.0 as T
|
||||||
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||||
|
import "private"
|
||||||
|
|
||||||
|
T.CheckDelegate {
|
||||||
|
id: control
|
||||||
|
|
||||||
|
implicitWidth: contentItem.implicitWidth + leftPadding + rightPadding
|
||||||
|
implicitHeight: Math.max(contentItem.implicitHeight,
|
||||||
|
indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding
|
||||||
|
hoverEnabled: true
|
||||||
|
|
||||||
|
topPadding: background.margins.top
|
||||||
|
bottomPadding: background.margins.bottom
|
||||||
|
leftPadding: background.margins.left
|
||||||
|
rightPadding: background.margins.right
|
||||||
|
spacing: units.smallSpacing
|
||||||
|
|
||||||
|
contentItem: Label {
|
||||||
|
leftPadding: control.mirrored ? (control.indicator ? control.indicator.width : 0) + control.spacing : 0
|
||||||
|
rightPadding: !control.mirrored ? (control.indicator ? control.indicator.width : 0) + control.spacing : 0
|
||||||
|
|
||||||
|
text: control.text
|
||||||
|
font: control.font
|
||||||
|
color: theme.viewTextColor
|
||||||
|
elide: Text.ElideRight
|
||||||
|
visible: control.text
|
||||||
|
horizontalAlignment: Text.AlignLeft
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
}
|
||||||
|
|
||||||
|
background: DefaultListItemBackground {}
|
||||||
|
}
|
41
src/declarativeimports/plasmacomponents3/Label.qml
Normal file
41
src/declarativeimports/plasmacomponents3/Label.qml
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2016 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 2.1
|
||||||
|
import QtQuick.Templates 2.0 as T
|
||||||
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||||
|
|
||||||
|
T.Label {
|
||||||
|
id: control
|
||||||
|
|
||||||
|
verticalAlignment: lineCount > 1 ? Text.AlignTop : Text.AlignVCenter
|
||||||
|
|
||||||
|
activeFocusOnTab: false
|
||||||
|
renderType: Text.NativeRendering
|
||||||
|
|
||||||
|
//font data is the system one by default
|
||||||
|
//TODO: from theme singleton?
|
||||||
|
color: PlasmaCore.ColorScope.textColor
|
||||||
|
linkColor: theme.linkColor
|
||||||
|
|
||||||
|
opacity: enabled? 1 : 0.6
|
||||||
|
|
||||||
|
Accessible.role: Accessible.StaticText
|
||||||
|
Accessible.name: text
|
||||||
|
}
|
74
src/declarativeimports/plasmacomponents3/Menu.qml
Normal file
74
src/declarativeimports/plasmacomponents3/Menu.qml
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2016 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 2.6
|
||||||
|
import QtQuick.Controls 2.0
|
||||||
|
import QtQuick.Templates 2.0 as T
|
||||||
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||||
|
|
||||||
|
T.Menu {
|
||||||
|
id: control
|
||||||
|
|
||||||
|
implicitWidth: Math.max(background ? background.implicitWidth : 0,
|
||||||
|
contentItem ? contentItem.implicitWidth + leftPadding + rightPadding : 0)
|
||||||
|
implicitHeight: Math.max(background ? background.implicitHeight : 0,
|
||||||
|
contentItem ? contentItem.implicitHeight : 0) + topPadding + bottomPadding
|
||||||
|
|
||||||
|
margins: 0
|
||||||
|
leftPadding: background.margins.left
|
||||||
|
topPadding: background.margins.top
|
||||||
|
rightPadding: background.margins.right
|
||||||
|
bottomPadding: background.margins.bottom
|
||||||
|
|
||||||
|
contentItem: ListView {
|
||||||
|
implicitHeight: contentHeight
|
||||||
|
model: control.contentModel
|
||||||
|
clip: true
|
||||||
|
keyNavigationWraps: false
|
||||||
|
currentIndex: -1
|
||||||
|
|
||||||
|
T.ScrollBar.vertical: ScrollBar {}
|
||||||
|
}
|
||||||
|
|
||||||
|
enter: Transition {
|
||||||
|
NumberAnimation {
|
||||||
|
property: "opacity"
|
||||||
|
from: 0
|
||||||
|
to: 1
|
||||||
|
easing.type: Easing.InOutQuad
|
||||||
|
duration: 150
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exit: Transition {
|
||||||
|
NumberAnimation {
|
||||||
|
property: "opacity"
|
||||||
|
from: 1
|
||||||
|
to: 0
|
||||||
|
easing.type: Easing.InOutQuad
|
||||||
|
duration: 150
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
background: PlasmaCore.FrameSvgItem {
|
||||||
|
imagePath: "widgets/background"
|
||||||
|
implicitWidth: units.gridUnit * 8
|
||||||
|
implicitHeight: units.gridUnit * 2
|
||||||
|
}
|
||||||
|
}
|
79
src/declarativeimports/plasmacomponents3/MenuItem.qml
Normal file
79
src/declarativeimports/plasmacomponents3/MenuItem.qml
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2016 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 2.6
|
||||||
|
import QtQuick.Templates 2.0 as T
|
||||||
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||||
|
|
||||||
|
T.MenuItem {
|
||||||
|
id: control
|
||||||
|
|
||||||
|
implicitWidth: Math.max(background ? background.implicitWidth : 0,
|
||||||
|
contentItem.implicitWidth + leftPadding + rightPadding)
|
||||||
|
implicitHeight: Math.max(background ? background.implicitHeight : 0,
|
||||||
|
Math.max(contentItem.implicitHeight,
|
||||||
|
indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding)
|
||||||
|
baselineOffset: contentItem.y + contentItem.baselineOffset
|
||||||
|
|
||||||
|
leftPadding: highlight.margins.left
|
||||||
|
topPadding: highlight.margins.top
|
||||||
|
rightPadding: highlight.margins.right
|
||||||
|
bottomPadding: highlight.margins.bottom
|
||||||
|
spacing: units.smallSpacing
|
||||||
|
hoverEnabled: true
|
||||||
|
|
||||||
|
contentItem: Label {
|
||||||
|
leftPadding: !control.mirrored ? (control.indicator ? control.indicator.width : 0) + control.spacing : 0
|
||||||
|
rightPadding: control.mirrored ? (control.indicator ? control.indicator.width : 0) + control.spacing : 0
|
||||||
|
|
||||||
|
text: control.text
|
||||||
|
font: control.font
|
||||||
|
color: theme.textColor
|
||||||
|
elide: Text.ElideRight
|
||||||
|
visible: control.text
|
||||||
|
horizontalAlignment: Text.AlignLeft
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
}
|
||||||
|
|
||||||
|
indicator: CheckIndicator {
|
||||||
|
x: control.mirrored ? control.width - width - control.rightPadding : control.leftPadding
|
||||||
|
y: control.topPadding + (control.availableHeight - height) / 2
|
||||||
|
|
||||||
|
visible: control.checkable
|
||||||
|
checkState: control.checked ? Qt.Checked : 0
|
||||||
|
}
|
||||||
|
|
||||||
|
background: Item {
|
||||||
|
implicitWidth: units.gridUnit * 8
|
||||||
|
|
||||||
|
PlasmaCore.FrameSvgItem {
|
||||||
|
id: highlight
|
||||||
|
imagePath: "widgets/viewitem"
|
||||||
|
prefix: "hover"
|
||||||
|
colorGroup: PlasmaCore.ColorScope.colorGroup
|
||||||
|
anchors.fill: parent
|
||||||
|
opacity: control.hovered && !control.pressed ? 1 : 0
|
||||||
|
Behavior on opacity {
|
||||||
|
NumberAnimation {
|
||||||
|
duration: units.longDuration
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
66
src/declarativeimports/plasmacomponents3/Popup.qml
Normal file
66
src/declarativeimports/plasmacomponents3/Popup.qml
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2016 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 2.6
|
||||||
|
import QtQuick.Templates 2.1 as T
|
||||||
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||||
|
|
||||||
|
T.Popup {
|
||||||
|
id: control
|
||||||
|
|
||||||
|
implicitWidth: Math.max(background ? background.implicitWidth : 0,
|
||||||
|
contentWidth > 0 ? contentWidth + leftPadding + rightPadding : 0)
|
||||||
|
implicitHeight: Math.max(background ? background.implicitHeight : 0,
|
||||||
|
contentWidth > 0 ? contentHeight + topPadding + bottomPadding : 0)
|
||||||
|
|
||||||
|
contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0)
|
||||||
|
contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0)
|
||||||
|
|
||||||
|
leftPadding: background.margins.left
|
||||||
|
topPadding: background.margins.top
|
||||||
|
rightPadding: background.margins.right
|
||||||
|
bottomPadding: background.margins.bottom
|
||||||
|
|
||||||
|
enter: Transition {
|
||||||
|
NumberAnimation {
|
||||||
|
property: "opacity"
|
||||||
|
from: 0
|
||||||
|
to: 1
|
||||||
|
easing.type: Easing.InOutQuad
|
||||||
|
duration: 250
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exit: Transition {
|
||||||
|
NumberAnimation {
|
||||||
|
property: "opacity"
|
||||||
|
from: 1
|
||||||
|
to: 0
|
||||||
|
easing.type: Easing.InOutQuad
|
||||||
|
duration: 250
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
contentItem: Item { }
|
||||||
|
|
||||||
|
background: PlasmaCore.FrameSvgItem {
|
||||||
|
implicitWidth: units.gridUnit * 12
|
||||||
|
imagePath: "widgets/background"
|
||||||
|
}
|
||||||
|
}
|
79
src/declarativeimports/plasmacomponents3/ProgressBar.qml
Normal file
79
src/declarativeimports/plasmacomponents3/ProgressBar.qml
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2016 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 2.6
|
||||||
|
import QtQuick.Templates 2.0 as T
|
||||||
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||||
|
|
||||||
|
T.ProgressBar {
|
||||||
|
id: control
|
||||||
|
|
||||||
|
implicitWidth: units.gridUnit * 8
|
||||||
|
implicitHeight: background.implicitHeight
|
||||||
|
|
||||||
|
hoverEnabled: true
|
||||||
|
|
||||||
|
contentItem: Item {
|
||||||
|
PlasmaCore.FrameSvgItem {
|
||||||
|
id: indicator
|
||||||
|
height: parent.height
|
||||||
|
width: control.indeterminate ? units.gridUnit * 2 : parent.width * control.visualPosition
|
||||||
|
imagePath: "widgets/bar_meter_horizontal"
|
||||||
|
prefix: "bar-active"
|
||||||
|
colorGroup: PlasmaCore.ColorScope.colorGroup
|
||||||
|
}
|
||||||
|
SequentialAnimation {
|
||||||
|
id: anim
|
||||||
|
loops: Animation.Infinite
|
||||||
|
|
||||||
|
running: control.indeterminate && control.visible
|
||||||
|
|
||||||
|
PropertyAnimation {
|
||||||
|
target: indicator
|
||||||
|
property: "x"
|
||||||
|
duration: 800
|
||||||
|
to: control.width - indicator.width
|
||||||
|
onToChanged: {
|
||||||
|
//the animation won't update the boundaries automatically
|
||||||
|
if (anim.running) {
|
||||||
|
anim.restart();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
PropertyAnimation {
|
||||||
|
target: indicator
|
||||||
|
property: "x"
|
||||||
|
duration: 800
|
||||||
|
to: 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
background: PlasmaCore.FrameSvgItem {
|
||||||
|
imagePath: "widgets/bar_meter_horizontal"
|
||||||
|
prefix: "bar-inactive"
|
||||||
|
colorGroup: PlasmaCore.ColorScope.colorGroup
|
||||||
|
onRepaintNeeded: {
|
||||||
|
implicitHeight = barSvg.elementSize("hint-bar-size").height
|
||||||
|
if (implicitHeight == 0) {
|
||||||
|
implicitHeight = barSvg.elementSize("bar-inactive-top").height + barSvg.elementSize("bar-inactive-bottom").height
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
60
src/declarativeimports/plasmacomponents3/RadioButton.qml
Normal file
60
src/declarativeimports/plasmacomponents3/RadioButton.qml
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2016 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 2.6
|
||||||
|
import QtQuick.Templates 2.0 as T
|
||||||
|
import QtQuick.Controls 2.0
|
||||||
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||||
|
|
||||||
|
T.RadioButton {
|
||||||
|
id: control
|
||||||
|
|
||||||
|
implicitWidth: Math.max(background ? background.implicitWidth : 0,
|
||||||
|
contentItem.implicitWidth + leftPadding + rightPadding)
|
||||||
|
implicitHeight: units.gridUnit * 1.6
|
||||||
|
baselineOffset: contentItem.y + contentItem.baselineOffset
|
||||||
|
|
||||||
|
padding: 1
|
||||||
|
spacing: Math.round(units.gridUnit / 8)
|
||||||
|
|
||||||
|
hoverEnabled: true
|
||||||
|
|
||||||
|
indicator: RadioIndicator {
|
||||||
|
LayoutMirroring.enabled: control.mirrored
|
||||||
|
LayoutMirroring.childrenInherit: true
|
||||||
|
anchors {
|
||||||
|
left: parent.left
|
||||||
|
verticalCenter: parent.verticalCenter
|
||||||
|
}
|
||||||
|
control: control
|
||||||
|
}
|
||||||
|
|
||||||
|
contentItem: Label {
|
||||||
|
leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0
|
||||||
|
rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0
|
||||||
|
opacity: control.enabled ? 1 : 0.6
|
||||||
|
text: control.text
|
||||||
|
font: control.font
|
||||||
|
color: PlasmaCore.ColorScope.textColor
|
||||||
|
elide: Text.ElideRight
|
||||||
|
visible: control.text
|
||||||
|
horizontalAlignment: Text.AlignLeft
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
}
|
||||||
|
}
|
60
src/declarativeimports/plasmacomponents3/RadioDelegate.qml
Normal file
60
src/declarativeimports/plasmacomponents3/RadioDelegate.qml
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2016 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 2.5
|
||||||
|
import QtQuick.Templates 2.0 as T
|
||||||
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||||
|
import "private"
|
||||||
|
|
||||||
|
T.RadioDelegate {
|
||||||
|
id: control
|
||||||
|
|
||||||
|
implicitWidth: contentItem.implicitWidth + leftPadding + rightPadding
|
||||||
|
implicitHeight: Math.max(contentItem.implicitHeight,
|
||||||
|
indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding
|
||||||
|
hoverEnabled: true
|
||||||
|
|
||||||
|
topPadding: background.margins.top
|
||||||
|
bottomPadding: background.margins.bottom
|
||||||
|
leftPadding: background.margins.left
|
||||||
|
rightPadding: background.margins.right
|
||||||
|
spacing: units.smallSpacing
|
||||||
|
|
||||||
|
contentItem: Label {
|
||||||
|
leftPadding: control.mirrored ? (control.indicator ? control.indicator.width : 0) + control.spacing : 0
|
||||||
|
rightPadding: !control.mirrored ? (control.indicator ? control.indicator.width : 0) + control.spacing : 0
|
||||||
|
|
||||||
|
text: control.text
|
||||||
|
font: control.font
|
||||||
|
color: theme.viewTextColor
|
||||||
|
elide: Text.ElideRight
|
||||||
|
visible: control.text
|
||||||
|
horizontalAlignment: Text.AlignLeft
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
}
|
||||||
|
|
||||||
|
indicator: RadioIndicator {
|
||||||
|
x: control.mirrored ? control.leftPadding : control.width - width - control.rightPadding
|
||||||
|
y: control.topPadding + (control.availableHeight - height) / 2
|
||||||
|
|
||||||
|
control: control
|
||||||
|
}
|
||||||
|
|
||||||
|
background: DefaultListItemBackground {}
|
||||||
|
}
|
59
src/declarativeimports/plasmacomponents3/RadioIndicator.qml
Normal file
59
src/declarativeimports/plasmacomponents3/RadioIndicator.qml
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2016 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 2.6
|
||||||
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||||
|
import "private" as Private
|
||||||
|
|
||||||
|
PlasmaCore.SvgItem {
|
||||||
|
property Item control
|
||||||
|
svg: PlasmaCore.Svg {
|
||||||
|
id: buttonSvg
|
||||||
|
imagePath: "widgets/actionbutton"
|
||||||
|
}
|
||||||
|
elementId: "normal"
|
||||||
|
opacity: control.enabled ? 1 : 0.6
|
||||||
|
|
||||||
|
implicitWidth: implicitHeight
|
||||||
|
implicitHeight: units.gridUnit
|
||||||
|
|
||||||
|
PlasmaCore.SvgItem {
|
||||||
|
id: checkmark
|
||||||
|
svg: PlasmaCore.Svg {
|
||||||
|
id: checkmarkSvg
|
||||||
|
imagePath: "widgets/checkmarks"
|
||||||
|
}
|
||||||
|
elementId: "radiobutton"
|
||||||
|
opacity: control.checked ? 1 : 0
|
||||||
|
anchors {
|
||||||
|
fill: parent
|
||||||
|
}
|
||||||
|
Behavior on opacity {
|
||||||
|
NumberAnimation {
|
||||||
|
duration: units.longDuration
|
||||||
|
easing.type: Easing.InOutQuad
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Private.RoundShadow {
|
||||||
|
anchors.fill: parent
|
||||||
|
z: -1
|
||||||
|
state: control.activeFocus ? "focus" : (control.hovered ? "hover" : "shadow")
|
||||||
|
}
|
||||||
|
}
|
108
src/declarativeimports/plasmacomponents3/RangeSlider.qml
Normal file
108
src/declarativeimports/plasmacomponents3/RangeSlider.qml
Normal file
@ -0,0 +1,108 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2016 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 2.6
|
||||||
|
import QtQuick.Templates 2.0 as T
|
||||||
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||||
|
import "private" as Private
|
||||||
|
|
||||||
|
T.RangeSlider {
|
||||||
|
id: control
|
||||||
|
|
||||||
|
implicitWidth: Math.max(background ? background.implicitWidth : 0,
|
||||||
|
Math.max(first.handle ? first.handle.implicitWidth : 0,
|
||||||
|
second.handle ? second.handle.implicitWidth : 0) + leftPadding + rightPadding)
|
||||||
|
implicitHeight: Math.max(background ? background.implicitHeight : 0,
|
||||||
|
Math.max(first.handle ? first.handle.implicitHeight : 0,
|
||||||
|
second.handle ? second.handle.implicitHeight : 0) + topPadding + bottomPadding)
|
||||||
|
|
||||||
|
padding: units.gridUnit
|
||||||
|
|
||||||
|
PlasmaCore.Svg {
|
||||||
|
id: grooveSvg
|
||||||
|
imagePath: "widgets/slider"
|
||||||
|
colorGroup: PlasmaCore.ColorScope.colorGroup
|
||||||
|
|
||||||
|
}
|
||||||
|
first.handle: Item {
|
||||||
|
property bool horizontal: control.orientation === Qt.Horizontal
|
||||||
|
x: control.leftPadding + (horizontal ? control.first.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2)
|
||||||
|
y: control.topPadding + (horizontal ? (control.availableHeight - height) / 2 : control.first.visualPosition * (control.availableHeight - height))
|
||||||
|
|
||||||
|
width: firstHandle.naturalSize.width
|
||||||
|
height: firstHandle.naturalSize.height
|
||||||
|
Private.RoundShadow {
|
||||||
|
anchors.fill: parent
|
||||||
|
imagePath: "widgets/slider"
|
||||||
|
focusElement: parent.horizontal ? "horizontal-slider-focus" : "vertical-slider-focus"
|
||||||
|
hoverElement: parent.horizontal ? "horizontal-slider-hover" : "vertical-slider-hover"
|
||||||
|
shadowElement: parent.horizontal ? "horizontal-slider-shadow" : "vertical-slider-shadow"
|
||||||
|
state: control.activeFocus ? "focus" : (control.hovered ? "hover" : "shadow")
|
||||||
|
}
|
||||||
|
PlasmaCore.SvgItem {
|
||||||
|
id: firstHandle
|
||||||
|
anchors.fill: parent
|
||||||
|
svg: grooveSvg
|
||||||
|
elementId: parent.horizontal ? "horizontal-slider-handle" : "vertical-slider-handle"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
second.handle: Item {
|
||||||
|
property bool horizontal: control.orientation === Qt.Horizontal
|
||||||
|
x: control.leftPadding + (horizontal ? control.second.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2)
|
||||||
|
y: control.topPadding + (horizontal ? (control.availableHeight - height) / 2 : control.second.visualPosition * (control.availableHeight - height))
|
||||||
|
|
||||||
|
width: secondHandle.naturalSize.width
|
||||||
|
height: secondHandle.naturalSize.height
|
||||||
|
Private.RoundShadow {
|
||||||
|
anchors.fill: parent
|
||||||
|
imagePath: "widgets/slider"
|
||||||
|
focusElement: parent.horizontal ? "horizontal-slider-focus" : "vertical-slider-focus"
|
||||||
|
hoverElement: parent.horizontal ? "horizontal-slider-hover" : "vertical-slider-hover"
|
||||||
|
shadowElement: parent.horizontal ? "horizontal-slider-shadow" : "vertical-slider-shadow"
|
||||||
|
state: control.activeFocus ? "focus" : (control.hovered ? "hover" : "shadow")
|
||||||
|
}
|
||||||
|
PlasmaCore.SvgItem {
|
||||||
|
id: secondHandle
|
||||||
|
anchors.fill: parent
|
||||||
|
svg: grooveSvg
|
||||||
|
elementId: parent.horizontal ? "horizontal-slider-handle" : "vertical-slider-handle"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
background: PlasmaCore.FrameSvgItem {
|
||||||
|
imagePath: "widgets/slider"
|
||||||
|
prefix: "groove"
|
||||||
|
readonly property bool horizontal: control.orientation === Qt.Horizontal
|
||||||
|
implicitWidth: horizontal ? units.gridUnit * 8 : margins.left + margins.right
|
||||||
|
implicitHeight: horizontal ? margins.top + margins.bottom : units.gridUnit * 8
|
||||||
|
width: horizontal ? control.availableWidth : implicitWidth
|
||||||
|
height: horizontal ? implicitHeight : control.availableHeight
|
||||||
|
anchors.centerIn: parent
|
||||||
|
|
||||||
|
PlasmaCore.FrameSvgItem {
|
||||||
|
imagePath: "widgets/slider"
|
||||||
|
prefix: "groove-highlight"
|
||||||
|
x: parent.horizontal ? control.first.position * parent.width : 0
|
||||||
|
y: parent.horizontal ? 0 : control.second.visualPosition * parent.height
|
||||||
|
width: parent.horizontal ? control.second.position * parent.width - control.first.position * parent.width : parent.width
|
||||||
|
height: parent.horizontal ? parent.height : control.second.position * parent.height - control.first.position * parent.height
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
67
src/declarativeimports/plasmacomponents3/ScrollBar.qml
Normal file
67
src/declarativeimports/plasmacomponents3/ScrollBar.qml
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2016 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 2.6
|
||||||
|
import QtQuick.Templates 2.0 as T
|
||||||
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||||
|
|
||||||
|
|
||||||
|
T.ScrollBar {
|
||||||
|
id: control
|
||||||
|
|
||||||
|
implicitWidth: background.implicitWidth
|
||||||
|
implicitHeight: background.implicitHeight
|
||||||
|
|
||||||
|
hoverEnabled: true
|
||||||
|
|
||||||
|
visible: control.size < 1.0
|
||||||
|
|
||||||
|
background: PlasmaCore.FrameSvgItem {
|
||||||
|
imagePath:"widgets/scrollbar"
|
||||||
|
implicitWidth: scrollbarSvg.elementSize("hint-scrollbar-size").width
|
||||||
|
implicitHeight: implicitWidth
|
||||||
|
colorGroup: PlasmaCore.ColorScope.colorGroup
|
||||||
|
|
||||||
|
prefix: control.horizontal ? "background-horizontal" : "background-vertical"
|
||||||
|
opacity: control.hovered ? 1 : 0
|
||||||
|
Behavior on opacity {
|
||||||
|
OpacityAnimator {
|
||||||
|
duration: 250
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
contentItem: PlasmaCore.FrameSvgItem {
|
||||||
|
imagePath:"widgets/scrollbar"
|
||||||
|
implicitWidth: scrollbarSvg.elementSize("hint-scrollbar-size").width
|
||||||
|
implicitHeight: implicitWidth
|
||||||
|
colorGroup: PlasmaCore.ColorScope.colorGroup
|
||||||
|
|
||||||
|
prefix: control.hovered ? "mouseover-slider" : "slider"
|
||||||
|
}
|
||||||
|
|
||||||
|
PlasmaCore.Svg {
|
||||||
|
id: scrollbarSvg
|
||||||
|
imagePath: "widgets/scrollbar"
|
||||||
|
//TODO: support arrows?
|
||||||
|
property bool arrowPresent: scrollbarSvg.hasElement("arrow-up")
|
||||||
|
//new theme may be different
|
||||||
|
onRepaintNeeded: arrowPresent = scrollbarSvg.hasElement("arrow-up")
|
||||||
|
}
|
||||||
|
}
|
100
src/declarativeimports/plasmacomponents3/Slider.qml
Normal file
100
src/declarativeimports/plasmacomponents3/Slider.qml
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2016 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 2.6
|
||||||
|
import QtQuick.Templates 2.0 as T
|
||||||
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||||
|
import "private" as Private
|
||||||
|
|
||||||
|
T.Slider {
|
||||||
|
id: control
|
||||||
|
|
||||||
|
implicitWidth: Math.max(background ? background.implicitWidth : 0,
|
||||||
|
Math.max(handle ? handle.implicitWidth : 0,
|
||||||
|
handle ? handle.implicitWidth : 0) + leftPadding + rightPadding)
|
||||||
|
implicitHeight: Math.max(background ? background.implicitHeight : 0,
|
||||||
|
Math.max(handle ? handle.implicitHeight : 0,
|
||||||
|
handle ? handle.implicitHeight : 0) + topPadding + bottomPadding)
|
||||||
|
|
||||||
|
padding: units.gridUnit
|
||||||
|
snapMode: T.Slider.SnapOnRelease
|
||||||
|
|
||||||
|
PlasmaCore.Svg {
|
||||||
|
id: grooveSvg
|
||||||
|
imagePath: "widgets/slider"
|
||||||
|
colorGroup: PlasmaCore.ColorScope.colorGroup
|
||||||
|
|
||||||
|
}
|
||||||
|
handle: Item {
|
||||||
|
property bool horizontal: control.orientation === Qt.Horizontal
|
||||||
|
x: control.leftPadding + (horizontal ? control.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2)
|
||||||
|
y: control.topPadding + (horizontal ? (control.availableHeight - height) / 2 : control.visualPosition * (control.availableHeight - height))
|
||||||
|
|
||||||
|
width: firstHandle.naturalSize.width
|
||||||
|
height: firstHandle.naturalSize.height
|
||||||
|
Private.RoundShadow {
|
||||||
|
anchors.fill: parent
|
||||||
|
imagePath: "widgets/slider"
|
||||||
|
focusElement: parent.horizontal ? "horizontal-slider-focus" : "vertical-slider-focus"
|
||||||
|
hoverElement: parent.horizontal ? "horizontal-slider-hover" : "vertical-slider-hover"
|
||||||
|
shadowElement: parent.horizontal ? "horizontal-slider-shadow" : "vertical-slider-shadow"
|
||||||
|
state: control.activeFocus ? "focus" : (control.hovered ? "hover" : "shadow")
|
||||||
|
}
|
||||||
|
PlasmaCore.SvgItem {
|
||||||
|
id: firstHandle
|
||||||
|
anchors.fill: parent
|
||||||
|
svg: grooveSvg
|
||||||
|
elementId: parent.horizontal ? "horizontal-slider-handle" : "vertical-slider-handle"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
background: PlasmaCore.FrameSvgItem {
|
||||||
|
imagePath: "widgets/slider"
|
||||||
|
prefix: "groove"
|
||||||
|
readonly property bool horizontal: control.orientation === Qt.Horizontal
|
||||||
|
implicitWidth: horizontal ? units.gridUnit * 8 : margins.left + margins.right
|
||||||
|
implicitHeight: horizontal ? margins.top + margins.bottom : units.gridUnit * 8
|
||||||
|
width: horizontal ? control.availableWidth : implicitWidth
|
||||||
|
height: horizontal ? implicitHeight : control.availableHeight
|
||||||
|
anchors.centerIn: parent
|
||||||
|
|
||||||
|
PlasmaCore.FrameSvgItem {
|
||||||
|
imagePath: "widgets/slider"
|
||||||
|
prefix: "groove-highlight"
|
||||||
|
x: parent.horizontal ? 0 : (parent.width - width) / 2
|
||||||
|
y: parent.horizontal ? (parent.height - height) / 2 : control.visualPosition * parent.height
|
||||||
|
width: parent.horizontal ? control.position * parent.width : parent.width
|
||||||
|
height: parent.horizontal ? parent.height : control.position * parent.height
|
||||||
|
}
|
||||||
|
|
||||||
|
Repeater {
|
||||||
|
id: repeater
|
||||||
|
model: control.stepSize > 0 ? 1 + (control.to - control.from) / control.stepSize : 0
|
||||||
|
anchors.fill: parent
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
color: PlasmaCore.ColorScope.textColor
|
||||||
|
width: background.horizontal ? units.devicePixelRatio : units.gridUnit/2
|
||||||
|
height: background.horizontal ? units.gridUnit/2 : units.devicePixelRatio
|
||||||
|
y: background.horizontal ? background.height : handle.height / 2 + index * ((repeater.height - handle.height) / (repeater.count > 1 ? repeater.count - 1 : 1))
|
||||||
|
x: background.horizontal ? handle.width / 2 + index * ((repeater.width - handle.width) / (repeater.count > 1 ? repeater.count - 1 : 1)) : background.width
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
89
src/declarativeimports/plasmacomponents3/SpinBox.qml
Normal file
89
src/declarativeimports/plasmacomponents3/SpinBox.qml
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
|
||||||
|
|
||||||
|
import QtQuick 2.6
|
||||||
|
import QtQuick.Controls 2.0
|
||||||
|
import QtQuick.Templates 2.0 as T
|
||||||
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||||
|
import "private" as Private
|
||||||
|
|
||||||
|
T.SpinBox {
|
||||||
|
id: control
|
||||||
|
|
||||||
|
implicitWidth: Math.max(units.gridUnit * 6, contentItem.implicitWidth + 2 * padding + up.indicator.implicitWidth + down.indicator.implicitWidth)
|
||||||
|
implicitHeight: units.gridUnit * 1.6
|
||||||
|
|
||||||
|
padding: 6
|
||||||
|
leftPadding: padding + height
|
||||||
|
rightPadding: padding + height
|
||||||
|
|
||||||
|
validator: IntValidator {
|
||||||
|
locale: control.locale.name
|
||||||
|
bottom: Math.min(control.from, control.to)
|
||||||
|
top: Math.max(control.from, control.to)
|
||||||
|
}
|
||||||
|
|
||||||
|
contentItem: TextInput {
|
||||||
|
text: control.textFromValue(control.value, control.locale)
|
||||||
|
opacity: control.enabled ? 1 : 0.6
|
||||||
|
|
||||||
|
font: control.font
|
||||||
|
color: theme.viewTextColor
|
||||||
|
selectionColor: theme.highlightColor
|
||||||
|
selectedTextColor: theme.selectedTextColor
|
||||||
|
horizontalAlignment: Qt.AlignHCenter
|
||||||
|
verticalAlignment: Qt.AlignVCenter
|
||||||
|
|
||||||
|
readOnly: !control.editable
|
||||||
|
validator: control.validator
|
||||||
|
inputMethodHints: Qt.ImhFormattedNumbersOnly
|
||||||
|
}
|
||||||
|
|
||||||
|
up.indicator: Item {
|
||||||
|
x: control.mirrored ? 0 : parent.width - width
|
||||||
|
implicitHeight: parent.height
|
||||||
|
implicitWidth: implicitHeight
|
||||||
|
PlasmaCore.FrameSvgItem {
|
||||||
|
anchors {
|
||||||
|
fill: parent
|
||||||
|
margins: base.margins.right
|
||||||
|
}
|
||||||
|
imagePath: "widgets/button"
|
||||||
|
prefix: up.pressed ? "pressed" : "normal"
|
||||||
|
Label {
|
||||||
|
anchors.centerIn: parent
|
||||||
|
text: "+"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
down.indicator:Item {
|
||||||
|
x: control.mirrored ? parent.width - width : 0
|
||||||
|
implicitHeight: parent.height
|
||||||
|
implicitWidth: implicitHeight
|
||||||
|
PlasmaCore.FrameSvgItem {
|
||||||
|
anchors {
|
||||||
|
fill: parent
|
||||||
|
margins: base.margins.left
|
||||||
|
}
|
||||||
|
imagePath: "widgets/button"
|
||||||
|
prefix: down.pressed ? "pressed" : "normal"
|
||||||
|
Label {
|
||||||
|
anchors.centerIn: parent
|
||||||
|
text: "-"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
background: Item {
|
||||||
|
Private.TextFieldFocus {
|
||||||
|
state: control.activeFocus ? "focus" : (control.hovered ? "hover" : "hidden")
|
||||||
|
anchors.fill: parent
|
||||||
|
}
|
||||||
|
PlasmaCore.FrameSvgItem {
|
||||||
|
id: base
|
||||||
|
anchors.fill: parent
|
||||||
|
imagePath: "widgets/lineedit"
|
||||||
|
prefix: "base"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
60
src/declarativeimports/plasmacomponents3/Switch.qml
Normal file
60
src/declarativeimports/plasmacomponents3/Switch.qml
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2016 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 2.6
|
||||||
|
import QtQuick.Templates 2.0 as T
|
||||||
|
import QtQuick.Controls 2.0
|
||||||
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||||
|
|
||||||
|
T.Switch {
|
||||||
|
id: control
|
||||||
|
|
||||||
|
implicitWidth: Math.max(background ? background.implicitWidth : 0,
|
||||||
|
contentItem.implicitWidth + leftPadding + rightPadding)
|
||||||
|
implicitHeight: units.gridUnit * 1.6
|
||||||
|
baselineOffset: contentItem.y + contentItem.baselineOffset
|
||||||
|
|
||||||
|
padding: 1
|
||||||
|
spacing: Math.round(units.gridUnit / 8)
|
||||||
|
|
||||||
|
hoverEnabled: true
|
||||||
|
|
||||||
|
indicator: SwitchIndicator {
|
||||||
|
LayoutMirroring.enabled: control.mirrored
|
||||||
|
LayoutMirroring.childrenInherit: true
|
||||||
|
anchors {
|
||||||
|
left: parent.left
|
||||||
|
verticalCenter: parent.verticalCenter
|
||||||
|
}
|
||||||
|
control: control
|
||||||
|
}
|
||||||
|
|
||||||
|
contentItem: Label {
|
||||||
|
leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0
|
||||||
|
rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0
|
||||||
|
opacity: control.enabled ? 1 : 0.6
|
||||||
|
text: control.text
|
||||||
|
font: control.font
|
||||||
|
color: PlasmaCore.ColorScope.textColor
|
||||||
|
elide: Text.ElideRight
|
||||||
|
visible: control.text
|
||||||
|
horizontalAlignment: Text.AlignLeft
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
}
|
||||||
|
}
|
60
src/declarativeimports/plasmacomponents3/SwitchDelegate.qml
Normal file
60
src/declarativeimports/plasmacomponents3/SwitchDelegate.qml
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2016 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 2.5
|
||||||
|
import QtQuick.Templates 2.0 as T
|
||||||
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||||
|
import "private"
|
||||||
|
|
||||||
|
T.SwitchDelegate {
|
||||||
|
id: control
|
||||||
|
|
||||||
|
implicitWidth: contentItem.implicitWidth + leftPadding + rightPadding
|
||||||
|
implicitHeight: Math.max(contentItem.implicitHeight,
|
||||||
|
indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding
|
||||||
|
hoverEnabled: true
|
||||||
|
|
||||||
|
topPadding: background.margins.top
|
||||||
|
bottomPadding: background.margins.bottom
|
||||||
|
leftPadding: background.margins.left
|
||||||
|
rightPadding: background.margins.right
|
||||||
|
spacing: units.smallSpacing
|
||||||
|
|
||||||
|
contentItem: Label {
|
||||||
|
leftPadding: control.mirrored ? (control.indicator ? control.indicator.width : 0) + control.spacing : 0
|
||||||
|
rightPadding: !control.mirrored ? (control.indicator ? control.indicator.width : 0) + control.spacing : 0
|
||||||
|
|
||||||
|
text: control.text
|
||||||
|
font: control.font
|
||||||
|
color: theme.viewTextColor
|
||||||
|
elide: Text.ElideRight
|
||||||
|
visible: control.text
|
||||||
|
horizontalAlignment: Text.AlignLeft
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
}
|
||||||
|
|
||||||
|
indicator: SwitchIndicator {
|
||||||
|
x: control.mirrored ? control.leftPadding : control.width - width - control.rightPadding
|
||||||
|
y: control.topPadding + (control.availableHeight - height) / 2
|
||||||
|
|
||||||
|
control: control
|
||||||
|
}
|
||||||
|
|
||||||
|
background: DefaultListItemBackground {}
|
||||||
|
}
|
81
src/declarativeimports/plasmacomponents3/SwitchIndicator.qml
Normal file
81
src/declarativeimports/plasmacomponents3/SwitchIndicator.qml
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2016 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 2.6
|
||||||
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||||
|
import "private" as Private
|
||||||
|
|
||||||
|
Item {
|
||||||
|
property Item control
|
||||||
|
implicitWidth: Math.round(units.gridUnit * 1.5)
|
||||||
|
implicitHeight : units.gridUnit
|
||||||
|
|
||||||
|
opacity: control.enabled ? 1 : 0.6
|
||||||
|
|
||||||
|
PlasmaCore.FrameSvgItem {
|
||||||
|
anchors {
|
||||||
|
left: parent.left
|
||||||
|
right: parent.right
|
||||||
|
verticalCenter: parent.verticalCenter
|
||||||
|
}
|
||||||
|
imagePath: "widgets/bar_meter_horizontal"
|
||||||
|
prefix: "bar-inactive"
|
||||||
|
}
|
||||||
|
PlasmaCore.FrameSvgItem {
|
||||||
|
anchors {
|
||||||
|
left: parent.left
|
||||||
|
right: parent.right
|
||||||
|
verticalCenter: parent.verticalCenter
|
||||||
|
}
|
||||||
|
imagePath: "widgets/bar_meter_horizontal"
|
||||||
|
prefix: "bar-active"
|
||||||
|
opacity: control.checked ? 1 : 0
|
||||||
|
Behavior on opacity {
|
||||||
|
OpacityAnimator {
|
||||||
|
duration: units.longDuration
|
||||||
|
easing.type: Easing.InOutQuad
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
PlasmaCore.SvgItem {
|
||||||
|
x: control.mirrored ? (control.checked ? 0 : parent.width - width) : (control.checked ? parent.width - width : 0)
|
||||||
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
svg: PlasmaCore.Svg {
|
||||||
|
id: buttonSvg
|
||||||
|
imagePath: "widgets/actionbutton"
|
||||||
|
}
|
||||||
|
elementId: "normal"
|
||||||
|
|
||||||
|
implicitWidth: implicitHeight
|
||||||
|
implicitHeight: units.gridUnit
|
||||||
|
|
||||||
|
Private.RoundShadow {
|
||||||
|
anchors.fill: parent
|
||||||
|
z: -1
|
||||||
|
state: control.activeFocus ? "focus" : (control.hovered ? "hover" : "shadow")
|
||||||
|
}
|
||||||
|
Behavior on x {
|
||||||
|
XAnimator {
|
||||||
|
duration: units.longDuration
|
||||||
|
easing.type: Easing.InOutQuad
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
59
src/declarativeimports/plasmacomponents3/TabBar.qml
Normal file
59
src/declarativeimports/plasmacomponents3/TabBar.qml
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2016 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 2.6
|
||||||
|
import QtQuick.Templates 2.0 as T
|
||||||
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||||
|
|
||||||
|
T.TabBar {
|
||||||
|
id: control
|
||||||
|
|
||||||
|
implicitWidth: contentItem.implicitWidth
|
||||||
|
implicitHeight: contentItem.implicitHeight
|
||||||
|
|
||||||
|
spacing: 0
|
||||||
|
|
||||||
|
contentItem: ListView {
|
||||||
|
implicitWidth: control.contentModel.get(0).implicitWidth * count
|
||||||
|
implicitHeight: control.contentModel.get(0).height
|
||||||
|
|
||||||
|
model: control.contentModel
|
||||||
|
currentIndex: control.currentIndex
|
||||||
|
|
||||||
|
spacing: 0
|
||||||
|
orientation: ListView.Horizontal
|
||||||
|
boundsBehavior: Flickable.StopAtBounds
|
||||||
|
flickableDirection: Flickable.AutoFlickIfNeeded
|
||||||
|
snapMode: ListView.SnapToItem
|
||||||
|
|
||||||
|
highlightMoveDuration: units.longDuration
|
||||||
|
highlightRangeMode: ListView.ApplyRange
|
||||||
|
preferredHighlightBegin: 40
|
||||||
|
preferredHighlightEnd: width - 40
|
||||||
|
highlight: PlasmaCore.FrameSvgItem {
|
||||||
|
imagePath: "widgets/tabbar"
|
||||||
|
prefix: control.position == T.TabBar.Header ? "north-active-tab" : "south-active-tab"
|
||||||
|
colorGroup: PlasmaCore.ColorScope.colorGroup
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
background: Item {}
|
||||||
|
}
|
48
src/declarativeimports/plasmacomponents3/TabButton.qml
Normal file
48
src/declarativeimports/plasmacomponents3/TabButton.qml
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2016 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 2.6
|
||||||
|
import QtQuick.Controls 2.0
|
||||||
|
import QtQml.Models 2.1
|
||||||
|
import QtQuick.Templates 2.0 as T
|
||||||
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||||
|
|
||||||
|
T.TabButton {
|
||||||
|
id: control
|
||||||
|
|
||||||
|
implicitWidth: contentItem.implicitWidth + leftPadding + rightPadding
|
||||||
|
implicitHeight: contentItem.implicitHeight + topPadding + bottomPadding
|
||||||
|
baselineOffset: contentItem.y + contentItem.baselineOffset
|
||||||
|
|
||||||
|
padding: units.smallSpacing
|
||||||
|
|
||||||
|
hoverEnabled: true
|
||||||
|
|
||||||
|
contentItem: Label {
|
||||||
|
text: control.text
|
||||||
|
font: control.font
|
||||||
|
elide: Text.ElideRight
|
||||||
|
opacity: enabled ? 1 : 0.3
|
||||||
|
color: theme.textColor
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
}
|
||||||
|
|
||||||
|
background: Item {}
|
||||||
|
}
|
74
src/declarativeimports/plasmacomponents3/TextArea.qml
Normal file
74
src/declarativeimports/plasmacomponents3/TextArea.qml
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2016 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 2.6
|
||||||
|
import QtQuick.Controls 2.0
|
||||||
|
import QtQuick.Templates 2.0 as T
|
||||||
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||||
|
import "private" as Private
|
||||||
|
|
||||||
|
T.TextArea {
|
||||||
|
id: control
|
||||||
|
|
||||||
|
implicitWidth: Math.max(contentWidth + leftPadding + rightPadding,
|
||||||
|
background ? background.implicitWidth : 0,
|
||||||
|
placeholder.implicitWidth + leftPadding + rightPadding)
|
||||||
|
implicitHeight: Math.max(contentHeight + topPadding + bottomPadding,
|
||||||
|
background ? background.implicitHeight : 0,
|
||||||
|
placeholder.implicitHeight + topPadding + bottomPadding)
|
||||||
|
|
||||||
|
padding: 6
|
||||||
|
|
||||||
|
color: theme.viewTextColor
|
||||||
|
selectionColor: theme.highlightColor
|
||||||
|
selectedTextColor: theme.highlightedTextColor
|
||||||
|
opacity: control.enabled ? 1 : 0.6
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
verticalAlignment: TextEdit.AlignTop
|
||||||
|
renderType: Text.NativeRendering
|
||||||
|
|
||||||
|
Label {
|
||||||
|
id: placeholder
|
||||||
|
x: control.leftPadding
|
||||||
|
y: control.topPadding
|
||||||
|
width: control.width - (control.leftPadding + control.rightPadding)
|
||||||
|
height: control.height - (control.topPadding + control.bottomPadding)
|
||||||
|
|
||||||
|
text: control.placeholderText
|
||||||
|
font: control.font
|
||||||
|
color: theme.viewTextColor
|
||||||
|
horizontalAlignment: control.horizontalAlignment
|
||||||
|
verticalAlignment: control.verticalAlignment
|
||||||
|
visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter)
|
||||||
|
elide: Text.ElideRight
|
||||||
|
}
|
||||||
|
|
||||||
|
background: Item {
|
||||||
|
Private.TextFieldFocus {
|
||||||
|
state: control.activeFocus ? "focus" : (control.hovered ? "hover" : "hidden")
|
||||||
|
anchors.fill: parent
|
||||||
|
}
|
||||||
|
PlasmaCore.FrameSvgItem {
|
||||||
|
id: base
|
||||||
|
anchors.fill: parent
|
||||||
|
imagePath: "widgets/lineedit"
|
||||||
|
prefix: "base"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
72
src/declarativeimports/plasmacomponents3/TextField.qml
Normal file
72
src/declarativeimports/plasmacomponents3/TextField.qml
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2016 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 2.6
|
||||||
|
import QtQuick.Controls 2.0
|
||||||
|
import QtQuick.Templates 2.0 as T
|
||||||
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||||
|
import "private" as Private
|
||||||
|
|
||||||
|
|
||||||
|
T.TextField {
|
||||||
|
id: control
|
||||||
|
|
||||||
|
implicitWidth: Math.max(units.gridUnit * 8,
|
||||||
|
placeholderText ? placeholder.implicitWidth + leftPadding + rightPadding : 0)
|
||||||
|
|| contentWidth + leftPadding + rightPadding
|
||||||
|
implicitHeight: units.gridUnit * 1.6
|
||||||
|
|
||||||
|
padding: 6
|
||||||
|
|
||||||
|
color: theme.viewTextColor
|
||||||
|
selectionColor: theme.highlightColor
|
||||||
|
selectedTextColor: theme.highlightedTextColor
|
||||||
|
verticalAlignment: TextInput.AlignVCenter
|
||||||
|
opacity: control.enabled ? 1 : 0.6
|
||||||
|
renderType: Text.NativeRendering
|
||||||
|
|
||||||
|
Label {
|
||||||
|
id: placeholder
|
||||||
|
x: control.leftPadding
|
||||||
|
y: control.topPadding
|
||||||
|
width: control.width - (control.leftPadding + control.rightPadding)
|
||||||
|
height: control.height - (control.topPadding + control.bottomPadding)
|
||||||
|
|
||||||
|
text: control.placeholderText
|
||||||
|
font: control.font
|
||||||
|
color: theme.viewTextColor
|
||||||
|
horizontalAlignment: control.horizontalAlignment
|
||||||
|
verticalAlignment: control.verticalAlignment
|
||||||
|
visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter)
|
||||||
|
elide: Text.ElideRight
|
||||||
|
}
|
||||||
|
|
||||||
|
background: Item {
|
||||||
|
Private.TextFieldFocus {
|
||||||
|
state: control.activeFocus ? "focus" : (control.hovered ? "hover" : "hidden")
|
||||||
|
anchors.fill: parent
|
||||||
|
}
|
||||||
|
PlasmaCore.FrameSvgItem {
|
||||||
|
id: base
|
||||||
|
anchors.fill: parent
|
||||||
|
imagePath: "widgets/lineedit"
|
||||||
|
prefix: "base"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
40
src/declarativeimports/plasmacomponents3/ToolBar.qml
Normal file
40
src/declarativeimports/plasmacomponents3/ToolBar.qml
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2016 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 2.6
|
||||||
|
import QtQuick.Templates 2.0 as T
|
||||||
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||||
|
|
||||||
|
T.ToolBar {
|
||||||
|
id: control
|
||||||
|
|
||||||
|
implicitWidth: contentWidth + leftPadding + rightPadding
|
||||||
|
implicitHeight: contentHeight + topPadding + bottomPadding
|
||||||
|
|
||||||
|
contentWidth: contentChildren[0].implicitWidth
|
||||||
|
contentHeight: contentChildren[0].implicitHeight
|
||||||
|
|
||||||
|
contentItem: Item { }
|
||||||
|
|
||||||
|
background: PlasmaCore.FrameSvgItem {
|
||||||
|
imagePath: "widgets/toolbar"
|
||||||
|
colorGroup: PlasmaCore.ColorScope.colorGroup
|
||||||
|
enabledBorders: control.position == T.ToolBar.Header ? PlasmaCore.FrameSvgItem.BottomBorder : PlasmaCore.FrameSvgItem.TopBorder
|
||||||
|
}
|
||||||
|
}
|
96
src/declarativeimports/plasmacomponents3/ToolButton.qml
Normal file
96
src/declarativeimports/plasmacomponents3/ToolButton.qml
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2016 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 2.6
|
||||||
|
import QtQuick.Templates 2.0 as T
|
||||||
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||||
|
import "private" as Private
|
||||||
|
|
||||||
|
T.ToolButton {
|
||||||
|
id: control
|
||||||
|
|
||||||
|
implicitWidth: Math.max(background.implicitWidth,
|
||||||
|
contentItem.implicitWidth + leftPadding + rightPadding)
|
||||||
|
implicitHeight: Math.max(background.implicitHeight, contentItem.implicitHeight + topPadding + bottomPadding)
|
||||||
|
|
||||||
|
leftPadding: surfaceNormal.margins.left
|
||||||
|
topPadding: surfaceNormal.margins.top
|
||||||
|
rightPadding: surfaceNormal.margins.right
|
||||||
|
bottomPadding: surfaceNormal.margins.bottom
|
||||||
|
|
||||||
|
hoverEnabled: true //Qt.styleHints.useHoverEffects TODO: how to make this work in 5.7?
|
||||||
|
|
||||||
|
flat: true
|
||||||
|
|
||||||
|
contentItem: Label {
|
||||||
|
text: control.text
|
||||||
|
font: control.font
|
||||||
|
opacity: enabled || control.highlighted || control.checked ? 1 : 0.4
|
||||||
|
color: theme.buttonTextColor
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
elide: Text.ElideRight
|
||||||
|
}
|
||||||
|
|
||||||
|
background: Item {
|
||||||
|
//retrocompatibility with old controls
|
||||||
|
implicitWidth: units.gridUnit * 6
|
||||||
|
implicitHeight: units.gridUnit * 1.6
|
||||||
|
Private.ButtonShadow {
|
||||||
|
anchors.fill: parent
|
||||||
|
visible: (!control.flat || control.hovered) && (!control.pressed || !control.checked)
|
||||||
|
state: {
|
||||||
|
if (control.pressed) {
|
||||||
|
return "hidden"
|
||||||
|
} else if (control.hovered) {
|
||||||
|
return "hover"
|
||||||
|
} else if (control.activeFocus) {
|
||||||
|
return "focus"
|
||||||
|
} else {
|
||||||
|
return "shadow"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
PlasmaCore.FrameSvgItem {
|
||||||
|
id: surfaceNormal
|
||||||
|
anchors.fill: parent
|
||||||
|
imagePath: "widgets/button"
|
||||||
|
prefix: "normal"
|
||||||
|
opacity: (!control.flat || control.hovered) && (!control.pressed || !control.checked) ? 1 : 0
|
||||||
|
Behavior on opacity {
|
||||||
|
OpacityAnimator {
|
||||||
|
duration: units.longDuration
|
||||||
|
easing.type: Easing.InOutQuad
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
PlasmaCore.FrameSvgItem {
|
||||||
|
anchors.fill: parent
|
||||||
|
imagePath: "widgets/button"
|
||||||
|
prefix: "pressed"
|
||||||
|
opacity: control.checked || control.pressed ? 1 : 0
|
||||||
|
Behavior on opacity {
|
||||||
|
OpacityAnimator {
|
||||||
|
duration: units.longDuration
|
||||||
|
easing.type: Easing.InOutQuad
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
51
src/declarativeimports/plasmacomponents3/ToolTip.qml
Normal file
51
src/declarativeimports/plasmacomponents3/ToolTip.qml
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2016 Marco Martin <mart@kde.org>
|
||||||
|
* Copyright (C) 2016 The Qt Company Ltd.
|
||||||
|
*
|
||||||
|
* 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 2.6
|
||||||
|
import QtQuick.Templates 2.0 as T
|
||||||
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||||
|
|
||||||
|
T.ToolTip {
|
||||||
|
id: control
|
||||||
|
|
||||||
|
x: parent ? (parent.width - implicitWidth) / 2 : 0
|
||||||
|
y: -implicitHeight - 3
|
||||||
|
|
||||||
|
implicitWidth: contentItem.implicitWidth + leftPadding + rightPadding
|
||||||
|
implicitHeight: contentItem.implicitHeight + topPadding + bottomPadding
|
||||||
|
|
||||||
|
margins: units.gridUnit
|
||||||
|
leftPadding: background.margins.left
|
||||||
|
topPadding: background.margins.top
|
||||||
|
rightPadding: background.margins.right
|
||||||
|
bottomPadding: background.margins.bottom
|
||||||
|
|
||||||
|
closePolicy: T.Popup.CloseOnEscape | T.Popup.CloseOnPressOutsideParent | T.Popup.CloseOnReleaseOutsideParent
|
||||||
|
|
||||||
|
contentItem: Label {
|
||||||
|
text: control.text
|
||||||
|
font: control.font
|
||||||
|
color: PlasmaCore.ColorScope.textColor
|
||||||
|
}
|
||||||
|
|
||||||
|
background: PlasmaCore.FrameSvgItem {
|
||||||
|
imagePath: "widgets/background"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,135 @@
|
|||||||
|
/*
|
||||||
|
* 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 2.010-1301, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**Documented API
|
||||||
|
Inherits:
|
||||||
|
Item
|
||||||
|
|
||||||
|
Imports:
|
||||||
|
QtQuick 2.1
|
||||||
|
org.kde.plasma.core
|
||||||
|
|
||||||
|
Description:
|
||||||
|
TODO i need more info here
|
||||||
|
|
||||||
|
|
||||||
|
Properties:
|
||||||
|
**/
|
||||||
|
|
||||||
|
import QtQuick 2.1
|
||||||
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||||
|
|
||||||
|
Item {
|
||||||
|
id: main
|
||||||
|
state: parent.state
|
||||||
|
//used to tell apart this implementation with the touch components one
|
||||||
|
property bool hasOverState: true
|
||||||
|
property alias enabledBorders: shadow.enabledBorders
|
||||||
|
|
||||||
|
PlasmaCore.FrameSvgItem {
|
||||||
|
id: hover
|
||||||
|
|
||||||
|
anchors {
|
||||||
|
fill: parent
|
||||||
|
leftMargin: -margins.left
|
||||||
|
topMargin: -margins.top
|
||||||
|
rightMargin: -margins.right
|
||||||
|
bottomMargin: -margins.bottom
|
||||||
|
}
|
||||||
|
opacity: 0
|
||||||
|
imagePath: "widgets/button"
|
||||||
|
prefix: "hover"
|
||||||
|
}
|
||||||
|
|
||||||
|
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
|
||||||
|
}
|
||||||
|
PropertyChanges {
|
||||||
|
target: hover
|
||||||
|
opacity: 0
|
||||||
|
prefix: "hover"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "hover"
|
||||||
|
PropertyChanges {
|
||||||
|
target: shadow
|
||||||
|
opacity: 0
|
||||||
|
}
|
||||||
|
PropertyChanges {
|
||||||
|
target: hover
|
||||||
|
opacity: 1
|
||||||
|
prefix: "hover"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "focus"
|
||||||
|
PropertyChanges {
|
||||||
|
target: shadow
|
||||||
|
opacity: 0
|
||||||
|
}
|
||||||
|
PropertyChanges {
|
||||||
|
target: hover
|
||||||
|
opacity: 1
|
||||||
|
prefix: "focus"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "hidden"
|
||||||
|
PropertyChanges {
|
||||||
|
target: shadow
|
||||||
|
opacity: 0
|
||||||
|
}
|
||||||
|
PropertyChanges {
|
||||||
|
target: hover
|
||||||
|
opacity: 0
|
||||||
|
prefix: "hover"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
transitions: [
|
||||||
|
Transition {
|
||||||
|
PropertyAnimation {
|
||||||
|
properties: "opacity"
|
||||||
|
duration: units.longDuration
|
||||||
|
easing.type: Easing.OutQuad
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,56 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2016 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 2.1
|
||||||
|
//for Settings
|
||||||
|
import QtQuick.Controls 1.0 as Controls
|
||||||
|
import QtQuick.Controls.Private 1.0
|
||||||
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||||
|
|
||||||
|
PlasmaCore.FrameSvgItem {
|
||||||
|
id: background
|
||||||
|
|
||||||
|
property bool separatorVisible: false
|
||||||
|
imagePath: "widgets/listitem"
|
||||||
|
prefix: control.highlighted || control.pressed ? "pressed" : "normal"
|
||||||
|
|
||||||
|
visible: control.ListView.view ? control.ListView.view.highlight === null : true
|
||||||
|
|
||||||
|
PlasmaCore.FrameSvgItem {
|
||||||
|
imagePath: "widgets/listitem"
|
||||||
|
visible: !Settings.isMobile
|
||||||
|
prefix: "hover"
|
||||||
|
anchors.fill: parent
|
||||||
|
opacity: control.hovered && !control.pressed ? 1 : 0
|
||||||
|
Behavior on opacity { NumberAnimation { duration: units.longDuration } }
|
||||||
|
}
|
||||||
|
|
||||||
|
PlasmaCore.SvgItem {
|
||||||
|
svg: PlasmaCore.Svg {imagePath: "widgets/listitem"}
|
||||||
|
elementId: "separator"
|
||||||
|
anchors {
|
||||||
|
left: parent.left
|
||||||
|
right: parent.right
|
||||||
|
top: parent.top
|
||||||
|
}
|
||||||
|
height: naturalSize.height
|
||||||
|
visible: separatorVisible && (listItem.sectionDelegate || (typeof(index) != "undefined" && index > 0 && !listItem.checked && !itemMouse.pressed))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
134
src/declarativeimports/plasmacomponents3/private/RoundShadow.qml
Normal file
134
src/declarativeimports/plasmacomponents3/private/RoundShadow.qml
Normal file
@ -0,0 +1,134 @@
|
|||||||
|
/*
|
||||||
|
* 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 2.010-1301, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**Documented API
|
||||||
|
Inherits:
|
||||||
|
Item
|
||||||
|
|
||||||
|
Imports:
|
||||||
|
QtQuick 2.1
|
||||||
|
org.kde.plasma.core
|
||||||
|
|
||||||
|
Description:
|
||||||
|
It is a simple Radio button which is using the plasma theme.
|
||||||
|
TODO Do we need more info?
|
||||||
|
|
||||||
|
Properties:
|
||||||
|
TODO needs more info??
|
||||||
|
**/
|
||||||
|
|
||||||
|
import QtQuick 2.1
|
||||||
|
import org.kde.plasma.core 2.0 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
|
||||||
|
|
||||||
|
//used to tell apart this implementation with the touch components one
|
||||||
|
property bool hasOverState: true
|
||||||
|
|
||||||
|
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: "hover"
|
||||||
|
PropertyChanges {
|
||||||
|
target: shadow
|
||||||
|
opacity: 0
|
||||||
|
}
|
||||||
|
PropertyChanges {
|
||||||
|
target: hover
|
||||||
|
opacity: 1
|
||||||
|
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: units.longDuration
|
||||||
|
easing.type: Easing.OutQuad
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,98 @@
|
|||||||
|
/*
|
||||||
|
* 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 2.010-1301, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import QtQuick 2.1
|
||||||
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||||
|
|
||||||
|
Item {
|
||||||
|
id: main
|
||||||
|
state: parent.state
|
||||||
|
|
||||||
|
PlasmaCore.Svg {
|
||||||
|
id: lineEditSvg
|
||||||
|
imagePath: "widgets/lineedit"
|
||||||
|
onRepaintNeeded: {
|
||||||
|
if (lineEditSvg.hasElement("hint-focus-over-base")) {
|
||||||
|
main.z = 800
|
||||||
|
} else {
|
||||||
|
main.z = 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Component.onCompleted: {
|
||||||
|
if (lineEditSvg.hasElement("hint-focus-over-base")) {
|
||||||
|
main.z = 800
|
||||||
|
} else {
|
||||||
|
main.z = 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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: "hover"
|
||||||
|
PropertyChanges {
|
||||||
|
target: hover
|
||||||
|
opacity: 1
|
||||||
|
prefix: "hover"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
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: units.longDuration
|
||||||
|
easing.type: Easing.OutQuad
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
34
src/declarativeimports/plasmacomponents3/qmldir
Normal file
34
src/declarativeimports/plasmacomponents3/qmldir
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
module org.kde.plasma.components
|
||||||
|
|
||||||
|
BusyIndicator 3.0 BusyIndicator.qml
|
||||||
|
Button 3.0 Button.qml
|
||||||
|
CheckBox 3.0 CheckBox.qml
|
||||||
|
CheckDelegate 3.0 CheckDelegate.qml
|
||||||
|
ComboBox 3.0 ComboBox.qml
|
||||||
|
Container 3.0 Container.qml
|
||||||
|
Control 3.0 Control.qml
|
||||||
|
Dial 3.0 Dial.qml
|
||||||
|
Drawer 3.0 Drawer.qml
|
||||||
|
Frame 3.0 Frame.qml
|
||||||
|
GroupBox 3.0 GroupBox.qml
|
||||||
|
ItemDelegate 3.0 ItemDelegate.qml
|
||||||
|
Label 3.0 Label.qml
|
||||||
|
MenuItem 3.0 MenuItem.qml
|
||||||
|
Menu 3.0 Menu.qml
|
||||||
|
Popup 3.0 Popup.qml
|
||||||
|
ProgressBar 3.0 ProgressBar.qml
|
||||||
|
RadioButton 3.0 RadioButton.qml
|
||||||
|
RadioDelegate 3.0 RadioDelegate.qml
|
||||||
|
RangeSlider 3.0 RangeSlider.qml
|
||||||
|
ScrollBar 3.0 ScrollBar.qml
|
||||||
|
Slider 3.0 Slider.qml
|
||||||
|
SpinBox 3.0 SpinBox.qml
|
||||||
|
SwitchDelegate 3.0 SwitchDelegate.qml
|
||||||
|
Switch 3.0 Switch.qml
|
||||||
|
TabBar 3.0 TabBar.qml
|
||||||
|
TabButton 3.0 TabButton.qml
|
||||||
|
TextArea 3.0 TextArea.qml
|
||||||
|
TextField 3.0 TextField.qml
|
||||||
|
ToolBar 3.0 ToolBar.qml
|
||||||
|
ToolButton 3.0 ToolButton.qml
|
||||||
|
ToolTip 3.0 ToolTip.qml
|
Loading…
x
Reference in New Issue
Block a user