Commit ec436a6d authored by Thomas Hartmann's avatar Thomas Hartmann

QmlDesigner.PropertyEditor: initial prototype for QtQuick 2

Change-Id: I85eac02934cd5f7f2f4664b9642c55bb3a23aa1e
Reviewed-by: default avatarMarco Bubke <marco.bubke@digia.com>
parent d7674e45
/****************************************************************************
**
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the Qt Quick Controls module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:BSD$
** You may use this file under the terms of the BSD license as follows:
**
** "Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions are
** met:
** * Redistributions of source code must retain the above copyright
** notice, this list of conditions and the following disclaimer.
** * Redistributions in binary form must reproduce the above copyright
** notice, this list of conditions and the following disclaimer in
** the documentation and/or other materials provided with the
** distribution.
** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
** of its contributors may be used to endorse or promote products derived
** from this software without specific prior written permission.
**
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
**
** $QT_END_LICENSE$
**
****************************************************************************/
import QtQuick 2.1
import HelperWidgets 2.0
ButtonRow {
id: buttonRow
ButtonRowButton {
iconSource: "images/anchor-top.png"
property bool topAnchored: anchorBackend.topAnchored
onTopAnchoredChanged: {
checked = topAnchored
}
onClicked: {
if (checked) {
anchorBackend.verticalCentered = false;
anchorBackend.topAnchored = true;
} else {
anchorBackend.topAnchored = false;
}
}
}
ButtonRowButton {
iconSource: "images/anchor-bottom.png"
property bool bottomAnchored: anchorBackend.bottomAnchored
onBottomAnchoredChanged: {
checked = bottomAnchored
}
onClicked: {
if (checked) {
anchorBackend.verticalCentered = false;
anchorBackend.bottomAnchored = true;
} else {
anchorBackend.bottomAnchored = false;
}
}
}
ButtonRowButton {
iconSource: "images/anchor-left.png"
property bool leftAnchored: anchorBackend.leftAnchored
onLeftAnchoredChanged: {
checked = leftAnchored
}
onClicked: {
if (checked) {
anchorBackend.verticalCentered = false;
anchorBackend.rightAnchored = true;
} else {
anchorBackend.rightAnchored = false;
}
}
}
ButtonRowButton {
iconSource: "images/anchor-right.png"
property bool rightAnchored: anchorBackend.rightAnchored
onRightAnchoredChanged: {
checked = rightAnchored
}
onClicked: {
if (checked) {
anchorBackend.verticalCentered = false;
anchorBackend.rightAnchored = true;
} else {
anchorBackend.rightAnchored = false;
}
}
}
ButtonRowButton {
enabled: false
}
ButtonRowButton {
iconSource: "images/anchor-fill.png"
property bool isFilled: anchorBackend.isFilled
onIsFilledChanged: {
checked = isFilled
}
onClicked: {
if (checked) {
anchorBackend.fill();
} else {
anchorBackend.resetLayout();
}
}
}
ButtonRowButton {
enabled: false
}
ButtonRowButton {
iconSource: "images/anchor-vertical.png"
property bool verticalCentered: anchorBackend.verticalCentered;
onVerticalCenteredChanged: {
checked = verticalCentered
}
onClicked: {
if (checked) {
anchorBackend.leftAnchored = false;
anchorBackend.rightAnchored = false;
anchorBackend.topAnchored = false;
anchorBackend.bottomAnchored = false;
anchorBackend.verticalCentered = true;
} else {
anchorBackend.verticalCentered = false;
}
}
}
ButtonRowButton {
iconSource: "images/anchor-horizontal.png"
property bool horizontalCentered: anchorBackend.horizontalCentered;
onHorizontalCenteredChanged: {
checked = horizontalCentered
}
onClicked: {
if (checked) {
anchorBackend.leftAnchored = false;
anchorBackend.rightAnchored = false;
anchorBackend.horizontalCentered = true;
} else {
anchorBackend.horizontalCentered = false;
}
}
}
}
/****************************************************************************
**
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the Qt Quick Controls module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:BSD$
** You may use this file under the terms of the BSD license as follows:
**
** "Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions are
** met:
** * Redistributions of source code must retain the above copyright
** notice, this list of conditions and the following disclaimer.
** * Redistributions in binary form must reproduce the above copyright
** notice, this list of conditions and the following disclaimer in
** the documentation and/or other materials provided with the
** distribution.
** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
** of its contributors may be used to endorse or promote products derived
** from this software without specific prior written permission.
**
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
**
** $QT_END_LICENSE$
**
****************************************************************************/
import QtQuick 2.1
import HelperWidgets 2.0
ButtonRowButton {
id: boolButtonRowButton
property variant backendValue
property bool isHighlighted: false
property string standardIconSource
property string highlightedIconSource
leftPadding: 18
iconSource: isHighlighted ? highlightedIconSource : standardIconSource
QtObject {
id: innerObject
function evaluate() {
if (innerObject.baseStateFlag) {
if (boolButtonRowButton.backendValue !== null
&& innerObject.isInModel) {
isHighlighted = true
} else {
isHighlighted = false
}
} else {
if (boolButtonRowButton.backendValue !== null
&& innerObject.isInSubState) {
isHighlighted = true
} else {
isHighlighted = false
}
}
}
property bool baseStateFlag: isBaseState
onBaseStateFlagChanged: evaluate()
property bool isInModel: boolButtonRowButton.backendValue.isInModel
onIsInModelChanged: evaluate()
property bool isInSubState: boolButtonRowButton.backendValue.isInSubState
onIsInSubStateChanged: evaluate()
property variant theValue: boolButtonRowButton.backendValue.value
onTheValueChanged: {
evaluate()
boolButtonRowButton.checked = innerObject.theValue
}
}
onCheckedChanged: {
boolButtonRowButton.backendValue.value = checked
}
ExtendedFunctionButton {
backendValue: boolButtonRowButton.backendValue
x: 0
y: 2
}
}
import QtQuick 2.1
import QtQuick.Controls 1.0 as Controls
Controls.Button {
}
\ No newline at end of file
/****************************************************************************
**
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of Qt Creator.
**
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Digia. For licensing terms and
** conditions see http://qt.digia.com/licensing. For further information
** use the contact form at http://qt.digia.com/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Digia gives you certain additional
** rights. These rights are described in the Digia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
****************************************************************************/
import QtQuick 2.1
import QtQuick.Controls 1.0 as Controls
import QtQuick.Layouts 1.0
Row {
id: buttonRow
property bool exclusive: false
property int initalChecked: 0
property int checkedIndex: -1
signal toggled (int index, bool checked)
Component.onCompleted: {
if (exclusive) {
checkedIndex = initalChecked
__checkButton(checkedIndex)
}
}
function __checkButton(index) {
if (buttonRow.exclusive) {
for (var i = 0; i < buttonRow.children.length; i++) {
if (i !== index) {
if (buttonRow.children[i].checked) {
buttonRow.children[i].checked = false
}
}
}
buttonRow.children[index].checked = true
buttonRow.checkedIndex = index
} else {
buttonRow.children[index].checked = true
}
}
function __unCheckButton(index) {
if (buttonRow.exclusive) {
//nothing
} else {
buttonRow.children[index].checked = false
}
}
}
/****************************************************************************
**
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of Qt Creator.
**
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Digia. For licensing terms and
** conditions see http://qt.digia.com/licensing. For further information
** use the contact form at http://qt.digia.com/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Digia gives you certain additional
** rights. These rights are described in the Digia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
****************************************************************************/
import QtQuick 2.1
import QtQuick.Controls 1.0 as Controls
import QtQuick.Layouts 1.0
Row {
id: buttonRow
property bool exclusive: false
property int initalChecked: 0
property int checkedIndex: 0
signal toggled (int index, bool checked)
Component.onCompleted: {
}
}
/****************************************************************************
**
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of Qt Creator.
**
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Digia. For licensing terms and
** conditions see http://qt.digia.com/licensing. For further information
** use the contact form at http://qt.digia.com/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Digia gives you certain additional
** rights. These rights are described in the Digia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
****************************************************************************/
import QtQuick 2.1
import QtQuick.Controls 1.0 as Controls
import QtQuick.Layouts 1.0
Item {
id: buttonRowButton
property bool checked: false
property alias iconSource: image.source
signal clicked()
width: 20 + leftPadding
height: 20
property int leftPadding: 0
function index() {
for (var i = 0; i < parent.children.length; i++) {
if (parent.children[i] === buttonRowButton)
return i;
}
return -1;
}
Rectangle {
color: checked ? "black" : "gray"
anchors.fill: parent
}
Image {
id: image
//source: iconSource
anchors.centerIn: parent
anchors.leftMargin: leftPadding
}
MouseArea {
anchors.fill: parent
anchors.leftMargin: leftPadding
onClicked: {
if (buttonRowButton.checked) {
buttonRowButton.parent.__unCheckButton(index())
} else {
buttonRowButton.parent.__checkButton(index())
}
buttonRowButton.clicked()
}
}
}
/****************************************************************************
**
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of Qt Creator.
**
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Digia. For licensing terms and
** conditions see http://qt.digia.com/licensing. For further information
** use the contact form at http://qt.digia.com/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Digia gives you certain additional
** rights. These rights are described in the Digia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
****************************************************************************/
import QtQuick 2.1
import QtQuick.Controls 1.0 as Controls
Controls.CheckBox {
id: checkBox
onTextChanged: {
if (text.charAt(0) !== " ")
text = " " + text
}
property variant backendValue
ExtendedFunctionButton {
x: 14
y: 2
backendValue: checkBox.backendValue
visible: spinBox.enabled
}
QtObject {
property int valueFromBackend: checkBox.backendValue.value;
onValueFromBackendChanged: {
print("blah");
checkBox.checked = valueFromBackend;
}
}
onCheckedChanged: {
if (backendValue.value !== checkBox.checked)
backendValue.value = checkBox.checked;
}
onFocusChanged: {