diff --git a/src/declarativeimports/plasmacomponents/qml/CheckBox.qml b/src/declarativeimports/plasmacomponents/qml/CheckBox.qml index 5e98d1176..8a66df226 100644 --- a/src/declarativeimports/plasmacomponents/qml/CheckBox.qml +++ b/src/declarativeimports/plasmacomponents/qml/CheckBox.qml @@ -1,5 +1,6 @@ /* * Copyright (C) 2011 by Daker Fernandes Pinheiro +* Copyright 2014 Marco Martin * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as @@ -18,8 +19,9 @@ */ import QtQuick 2.1 +import QtQuick.Controls 1.2 as QtControls import org.kde.plasma.core 2.0 as PlasmaCore -import "private" as Private +import "styles" as Styles /** * A check box is a component that can be switched on (checked) or off @@ -32,37 +34,10 @@ import "private" as Private * Qt.Key_Select, Qt.Key_Return, and Qt.Key_Enter hardware keys that send the * clicked signal. * - * All elements of this component are defined in DualStateButton, its base component. + * @inherit QtQuick.Controls.CheckBox */ -Private.DualStateButton { +QtControls.CheckBox { id: checkBox - view: PlasmaCore.FrameSvgItem { - imagePath: "widgets/button" - prefix: "normal" - width: theme.mSize(theme.defaultFont).height + margins.left - height: theme.mSize(theme.defaultFont).height + margins.top - PlasmaCore.SvgItem { - svg: PlasmaCore.Svg { - id: checkmarkSvg - imagePath: "widgets/checkmarks" - } - elementId: "checkbox" - opacity: checked ? 1 : 0 - anchors { - fill: parent - margins: parent.margins.left/2 - } - Behavior on opacity { - NumberAnimation { - duration: units.longDuration - easing.type: Easing.InOutQuad - } - } - } - } - - activeFocusOnTab: true - - shadow: Private.ButtonShadow {} + style: Styles.CheckBoxStyle {} } diff --git a/src/declarativeimports/plasmacomponents/qml/RadioButton.qml b/src/declarativeimports/plasmacomponents/qml/RadioButton.qml index 00a1bbf46..57202089f 100644 --- a/src/declarativeimports/plasmacomponents/qml/RadioButton.qml +++ b/src/declarativeimports/plasmacomponents/qml/RadioButton.qml @@ -1,25 +1,27 @@ /* -* Copyright (C) 2011 by Daker Fernandes Pinheiro -* -* This program is free software; you can redistribute it and/or modify -* it under the terms of the GNU Library General Public License as -* published by the Free Software Foundation; either version 2, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details -* -* You should have received a copy of the GNU Library General Public -* License along with this program; if not, write to the -* Free Software Foundation, Inc., -* 51 Franklin Street, Fifth Floor, Boston, MA 2.010-1301, USA. -*/ + * Copyright (C) 2011 by Daker Fernandes Pinheiro + * Copyright 2014 Marco Martin + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library General Public License as + * published by the Free Software Foundation; either version 2, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details + * + * You should have received a copy of the GNU Library General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 2.010-1301, USA. + */ import QtQuick 2.1 +import QtQuick.Controls 1.2 as QtControls import org.kde.plasma.core 2.0 as PlasmaCore -import "private" as Private +import "styles" as Styles /** * A radio button component consists of a radio button and a line of text. Only @@ -28,41 +30,14 @@ import "private" as Private * be set at the list creation. If not set, the list is shown without a * selection. * - * All elements of this component are defined in DualStateButton, its base component. + * When a check box has the focus, its state can be toggled using the + * Qt.Key_Select, Qt.Key_Return, and Qt.Key_Enter hardware keys that send the + * clicked signal. * + * @inherit QtQuick.Controls.RadioButton */ -//FIXME: this should be round, DualStateButton shouldn't draw the shadow -Private.DualStateButton { +QtControls.RadioButton { id: radioButton - view: PlasmaCore.SvgItem { - svg: PlasmaCore.Svg { - id: buttonSvg - imagePath: "widgets/actionbutton" - } - elementId: "normal" - width: theme.mSize(theme.defaultFont).height + 6 - height: width - PlasmaCore.SvgItem { - svg: PlasmaCore.Svg { - id: checkmarkSvg - imagePath: "widgets/checkmarks" - } - elementId: "radiobutton" - opacity: checked ? 1 : 0 - anchors { - fill: parent - } - Behavior on opacity { - NumberAnimation { - duration: units.longDuration - easing.type: Easing.InOutQuad - } - } - } - } - activeFocusOnTab: true - - shadow: Private.RoundShadow {} - Accessible.role: Accessible.RadioButton + style: Styles.RadioButtonStyle {} } diff --git a/src/declarativeimports/plasmacomponents/qml/Switch.qml b/src/declarativeimports/plasmacomponents/qml/Switch.qml index d0608f927..0ba43c4d5 100644 --- a/src/declarativeimports/plasmacomponents/qml/Switch.qml +++ b/src/declarativeimports/plasmacomponents/qml/Switch.qml @@ -18,8 +18,6 @@ */ import QtQuick 2.1 -import org.kde.plasma.core 2.0 as PlasmaCore -import "private" as Private /** * A check box is a component that can be switched on (checked) or off @@ -32,37 +30,9 @@ import "private" as Private * Qt.Key_Select, Qt.Key_Return, and Qt.Key_Enter hardware keys that send the * clicked signal. * - * All elements of this component are defined in DualStateButton, its base component. + * @inherit QtQuick.Controls.CheckBox * */ -Private.DualStateButton { - id: checkBox - view: PlasmaCore.FrameSvgItem { - imagePath: "widgets/button" - prefix: "normal" - width: theme.mSize(theme.defaultFont).height + margins.left - height: theme.mSize(theme.defaultFont).height + margins.top - - PlasmaCore.SvgItem { - svg: PlasmaCore.Svg { - id: checkmarkSvg - imagePath: "widgets/checkmarks" - } - elementId: "checkbox" - opacity: checked ? 1 : 0 - anchors { - fill: parent - margins: parent.margins.left/2 - } - Behavior on opacity { - NumberAnimation { - duration: units.longDuration - easing.type: Easing.InOutQuad - } - } - } - } - - shadow: Private.ButtonShadow {} - Accessible.role: Accessible.CheckBox +CheckBox { + id: checkbox } diff --git a/src/declarativeimports/plasmacomponents/qml/styles/CheckBoxStyle.qml b/src/declarativeimports/plasmacomponents/qml/styles/CheckBoxStyle.qml new file mode 100644 index 000000000..d9dc9fd92 --- /dev/null +++ b/src/declarativeimports/plasmacomponents/qml/styles/CheckBoxStyle.qml @@ -0,0 +1,77 @@ +/* + * Copyright 2014 Marco Martin + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library General Public License as + * published by the Free Software Foundation; either version 2, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU 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.0 +import QtQuick.Controls.Styles 1.1 as QtQuickControlStyle + +import org.kde.plasma.core 2.0 as PlasmaCore +import org.kde.plasma.components 2.0 as PlasmaComponents +import "../private" as Private + +QtQuickControlStyle.CheckBoxStyle { + id: checkboxStyle + + label: PlasmaComponents.Label { + text: control.text + } + background: Item {} + + spacing: units.smallSpacing + + indicator: PlasmaCore.FrameSvgItem { + imagePath: "widgets/button" + prefix: "normal" + width: units.gridUnit + height: units.gridUnit + opacity: control.enabled ? 1 : 0.6 + + PlasmaCore.SvgItem { + svg: PlasmaCore.Svg { + id: checkmarkSvg + imagePath: "widgets/checkmarks" + } + elementId: "checkbox" + opacity: { + switch (control.checkedState) { + case Qt.Checked: + return 1; + case Qt.PartiallyChecked: + return 0.5; + default: + return 0; + } + } + anchors { + fill: parent + margins: parent.margins.left/2 + } + 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") + } + } +} diff --git a/src/declarativeimports/plasmacomponents/qml/styles/RadioButtonStyle.qml b/src/declarativeimports/plasmacomponents/qml/styles/RadioButtonStyle.qml new file mode 100644 index 000000000..6d06f01c5 --- /dev/null +++ b/src/declarativeimports/plasmacomponents/qml/styles/RadioButtonStyle.qml @@ -0,0 +1,72 @@ +/* + * Copyright 2014 Marco Martin + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library General Public License as + * published by the Free Software Foundation; either version 2, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU 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.0 +import QtQuick.Controls.Styles 1.1 as QtQuickControlStyle + +import org.kde.plasma.core 2.0 as PlasmaCore +import org.kde.plasma.components 2.0 as PlasmaComponents +import "../private" as Private + +QtQuickControlStyle.RadioButtonStyle { + id: radiobuttonStyle + + label: PlasmaComponents.Label { + text: control.text + } + //Not needed? + background: Item {} + + spacing: units.smallSpacing + + indicator: PlasmaCore.SvgItem { + svg: PlasmaCore.Svg { + id: buttonSvg + imagePath: "widgets/actionbutton" + } + elementId: "normal" + + width: units.gridUnit + height: width + + 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") + } + } +} diff --git a/src/desktoptheme/breeze/widgets/actionbutton.svgz b/src/desktoptheme/breeze/widgets/actionbutton.svgz index 25aacc8b4..fda4a9b7b 100644 Binary files a/src/desktoptheme/breeze/widgets/actionbutton.svgz and b/src/desktoptheme/breeze/widgets/actionbutton.svgz differ