Merge branch 'mart/QtControlsCheckBox'

REVIEW:119846
This commit is contained in:
Marco Martin 2014-08-20 20:46:59 +02:00
commit da70f9e0bf
6 changed files with 184 additions and 115 deletions

View File

@ -1,5 +1,6 @@
/*
* Copyright (C) 2011 by Daker Fernandes Pinheiro <dakerfp@gmail.com>
* Copyright 2014 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
@ -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 {}
}

View File

@ -1,25 +1,27 @@
/*
* Copyright (C) 2011 by Daker Fernandes Pinheiro <dakerfp@gmail.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Library General Public License as
* published by the Free Software Foundation; either version 2, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details
*
* You should have received a copy of the GNU Library General Public
* License along with this program; if not, write to the
* Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 2.010-1301, USA.
*/
* Copyright (C) 2011 by Daker Fernandes Pinheiro <dakerfp@gmail.com>
* Copyright 2014 Marco Martin <mart@kde.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Library General Public License as
* published by the Free Software Foundation; either version 2, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details
*
* You should have received a copy of the GNU Library General Public
* License along with this program; if not, write to the
* Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 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 {}
}

View File

@ -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
}

View File

@ -0,0 +1,77 @@
/*
* Copyright 2014 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.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")
}
}
}

View File

@ -0,0 +1,72 @@
/*
* Copyright 2014 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.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")
}
}
}