blob: b96193307aec96994f98341fd54efdf5569cf605 [file] [log] [blame]
/****************************************************************************
**
** Copyright (C) 2018 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the test suite of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:GPL-EXCEPT$
** 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 The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 as published by the Free Software
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
import QtQuick 2.1
import QtQml.Models 2.12
Rectangle {
height: 360; width: 640
property int intmax: 2147483647
Connections { target: pointvalue; onReset: { texteditelement.font.pointSize = 12 } }
Item {
id: textpanel
height: 360
width: 440
TextEdit {
id: texteditelement
height: parent.height - 20; width: parent.width - 20
anchors.centerIn: parent
text: { textvalue.model.get(textvalue.currentIndex).value }
textFormat: { formatvalue.model.get(formatvalue.currentIndex).value }
color: { colorvalue.model.get(colorvalue.currentIndex).value }
font.bold: { boldvalue.model.get(boldvalue.currentIndex).value }
font.italic: { italicsvalue.model.get(italicsvalue.currentIndex).value }
font.capitalization: { capsvalue.model.get(capsvalue.currentIndex).value }
font.family: { familyvalue.model.get(familyvalue.currentIndex).value }
font.strikeout: strikeoutvalue.currentIndex
font.underline: underlinevalue.currentIndex
font.letterSpacing: { lspacingvalue.model.get(lspacingvalue.currentIndex).value }
font.wordSpacing: { wspacingvalue.model.get(wspacingvalue.currentIndex).value }
font.weight: { weightvalue.model.get(weightvalue.currentIndex).value }
font.pointSize: { pointvalue.model.get(pointvalue.currentIndex).value }
font.pixelSize: { pixelvalue.model.get(pixelvalue.currentIndex).value }
horizontalAlignment: { halignvalue.model.get(halignvalue.currentIndex).value }
verticalAlignment: { valignvalue.model.get(valignvalue.currentIndex).value }
wrapMode: { wrapvalue.model.get(wrapvalue.currentIndex).value }
smooth: { smoothvalue.model.get(smoothvalue.currentIndex).value }
selectByMouse: { mousevalue.model.get(mousevalue.currentIndex).value }
selectByKeyboard: { keyboardvalue.model.get(keyboardvalue.currentIndex).value }
onLinkActivated: { bordercolor.border.color = "red" }
Rectangle { id: bordercolor; color: "transparent"; border.color: "green"; anchors.fill: parent }
}
Text {
id: infopanel
anchors { left: parent.left; leftMargin: 10; bottom: parent.bottom }
height: 150; color: "black"; width: 150
text:
"LineCount: "+texteditelement.lineCount+
"\nPaintedHeight/Width: "+texteditelement.paintedHeight+"/"+texteditelement.paintedWidth+
"\nPointSize: "+texteditelement.font.pointSize+"\nPixelSize: "+texteditelement.font.pixelSize+
"\nCan Paste: "+texteditelement.canPaste
}
Row {
id: selectionbuttons
height:40
width: 300
anchors.right: texteditelement.right; anchors.bottom: texteditelement.bottom
Button { buttontext: "Select Word"; width: parent.width/3; onClicked: { texteditelement.selectWord() } }
Button { buttontext: "Select All"; width: parent.width/3; onClicked: { texteditelement.selectAll() } }
Button { buttontext: "Select None"; width: parent.width/3; onClicked: { texteditelement.deselect() } }
}
Row {
height:40
width: 300
anchors.right: texteditelement.right; anchors.bottom: selectionbuttons.top
Button { buttontext: "Cut"; width: parent.width/3; onClicked: { texteditelement.cut() } }
Button { buttontext: "Copy"; width: parent.width/3; onClicked: { texteditelement.copy() } }
Button { buttontext: "Paste"; width: parent.width/3; onClicked: { texteditelement.paste() } }
}
}
Item {
id: controlpanel
width: 200; height: parent.height
anchors.right: parent.right
Rectangle { anchors.fill: parent; color: "transparent"; border.color: "black" }
ListView { id: controls; model: controlsmodel; anchors.fill: parent; clip: true; cacheBuffer: 500 }
ObjectModel {
id: controlsmodel
ControlView {
id: textvalue
controlname: "Text"
model: textmodel
ListModel { id: textmodel }
Component.onCompleted: {
textmodel.append({ "name": "Basic",
"value": "Qt Quick is a collection of technologies that are designed to help developers create the kind of intuitive, "+
"modern, fluid user interfaces that are increasingly used on mobile phones, media players, set-top boxes and other "+
"portable devices."+texteditelement.newline+
"Qt Quick consists of a rich set of user interface elements, a language for describing user interfaces "+
"and a language runtime.\n"+
"A collection of C++ APIs is used to integrate these high level features with classic Qt applications."});
textmodel.append({ "name": "Short",
"value": "Hello World"});
textmodel.append({ "name": "Long",
"value": "QtQuickisacollectionoftechnologiesthataredesignedtohelpdeveloperscreatethekindofintuitive,"+
"modern,fluiduserinterfacesthatareincreasinglyusedonmobilephones,mediaplayers,set-topboxesandother"+
"portabledevices."});
textmodel.append({ "name": "Rich",
"value": "<b>Qt Quick</b> is a collection of technologies that are designed to help developers create the kind of <i>intuitive, "+
"modern, fluid</i> user interfaces that are increasingly used on mobile phones, media players, set-top boxes and other "+
"portable devices.<br>"+
"Qt Quick consists of a rich set of user interface elements, a language for describing user interfaces "+
"and a language runtime. "+
"A collection of C++ APIs is used to integrate these high level features with classic Qt applications."});
textmodel.append({ "name": "Links",
"value": "This is a link - <a href=\"http://doc.qt.io/\">Qt Docs</a>"});
}
}
ControlView {
id: formatvalue
controlname: "Format"
model: ListModel { ListElement { name: "Auto"; value: Text.AutoText } ListElement { name: "Plain"; value: Text.PlainText }
ListElement { name: "Rich"; value: Text.RichText } ListElement { name: "Styled"; value: Text.StyledText } } }
ControlView {
id: colorvalue
controlname: "Color"
model: ListModel { ListElement { name: "Red"; value: "red" }
ListElement { name: "Green"; value: "green" } ListElement { name: "Blue"; value: "blue" } }
}
ControlView {
id: boldvalue
controlname: "Bold"
model: ListModel { ListElement { name: "Off"; value: false } ListElement { name: "On"; value: true } }
}
ControlView {
id: italicsvalue
controlname: "Italic"
model: ListModel { ListElement { name: "Off"; value: false } ListElement { name: "On"; value: true } }
}
ControlView {
id: capsvalue
controlname: "Cap10n"
model: ListModel {
ListElement { name: "Mixed"; value: Font.MixedCase } ListElement { name: "Upper"; value: Font.AllUppercase }
ListElement { name: "Lower"; value: Font.AllLowercase } ListElement { name: "SmallCaps"; value: Font.SmallCaps }
ListElement { name: "Capitals"; value: Font.Capitalize }
}
}
ControlView {
id: familyvalue
controlname: "Font"
property variant fontfamilies
function setModel() {
familiesmodel.clear();
for (var i = 0; i < fontfamilies.length; ++i) {
familiesmodel.append({ "name": fontfamilies[i], "value": fontfamilies[i] });
}
familyvalue.currentIndex = 0;
}
model: familiesmodel
ListModel { id: familiesmodel }
Component.onCompleted: { fontfamilies = Qt.fontFamilies(); setModel(); }
}
ControlView {
id: lspacingvalue
controlname: "LSpacing"
model: ListModel { ListElement { name: "0"; value: 0 } ListElement { name: "1"; value: 1 } ListElement { name: "2.5"; value: 2.5 } } }
ControlView {
id: wspacingvalue
controlname: "WSpacing"
model: ListModel { ListElement { name: "-1"; value: -1 } ListElement { name: "8"; value: 8 } ListElement { name: "20"; value: 20 } } }
ControlView {
id: pixelvalue
controlname: "Pixel"
model: ListModel { ListElement { name: "-1"; value: -1 } ListElement { name: "8"; value: 8 } ListElement { name: "20"; value: 20 } } }
ControlView {
id: pointvalue
controlname: "Point"
model: ListModel { ListElement { name: "-1"; value: -1 } ListElement { name: "8"; value: 8 } ListElement { name: "20"; value: 20 } } }
ControlView {
id: strikeoutvalue
controlname: "Strike"
model: ListModel { ListElement { name: "Off"; value: false } ListElement { name: "On"; value: true } } }
ControlView {
id: underlinevalue
controlname: "U_line"
model: ListModel { ListElement { name: "Off"; value: false } ListElement { name: "On"; value: true } } }
ControlView {
id: weightvalue
controlname: "Weight"
model: ListModel { ListElement { name: "Light"; value: Font.Light } ListElement { name: "Normal"; value: Font.Normal }
ListElement { name: "DemiBold"; value: Font.DemiBold } ListElement { name: "Bold"; value: Font.Bold }
ListElement { name: "Black"; value: Font.Black } }
Component.onCompleted: { currentIndex = 1 } // set to default
}
ControlView {
id: mousevalue
controlname: "Mouse"
model: ListModel { ListElement { name: "Off"; value: false } ListElement { name: "On"; value: true } } }
ControlView {
id: keyboardvalue
controlname: "Keyboard"
model: ListModel { ListElement { name: "Off"; value: false } ListElement { name: "On"; value: true } } }
ControlView {
id: halignvalue
controlname: "HAlign"
model: ListModel { ListElement { name: "Left"; value: Text.AlignLeft } ListElement { name: "Right"; value: Text.AlignRight }
ListElement { name: "Center"; value: Text.AlignHCenter } ListElement { name: "Justify"; value: Text.AlignJustify } } }
ControlView {
id: valignvalue
controlname: "VAlign"
model: ListModel { ListElement { name: "Top"; value: Text.AlignTop } ListElement { name: "Bottom"; value: Text.AlignBottom }
ListElement { name: "Center"; value: Text.AlignVCenter } } }
ControlView {
id: smoothvalue
controlname: "Smooth"
model: ListModel { ListElement { name: "Off"; value: false } ListElement { name: "On"; value: true } } }
ControlView {
id: wrapvalue
controlname: "Wrap"
model: ListModel { ListElement { name: "None"; value: Text.NoWrap } ListElement { name: "Word"; value: Text.WordWrap }
ListElement { name: "Anywhere"; value: Text.WrapAnywhere } ListElement { name: "Wrap"; value: Text.Wrap } } }
}
}
}