diff options
Diffstat (limited to 'basicsuite/qt5-launchpresentation/presentation/CodeSlide.qml')
-rw-r--r-- | basicsuite/qt5-launchpresentation/presentation/CodeSlide.qml | 162 |
1 files changed, 162 insertions, 0 deletions
diff --git a/basicsuite/qt5-launchpresentation/presentation/CodeSlide.qml b/basicsuite/qt5-launchpresentation/presentation/CodeSlide.qml new file mode 100644 index 0000000..ba8626b --- /dev/null +++ b/basicsuite/qt5-launchpresentation/presentation/CodeSlide.qml @@ -0,0 +1,162 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the QML Presentation System. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** 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. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Digia. +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +import QtQuick 2.0 + +Slide { + id: slide; + + property string codeFontFamily: parent.codeFontFamily; + property string code; + property real codeFontSize: baseFontSize * 0.6; + + + + Rectangle { + id: background + anchors.fill: parent + radius: height / 10; + gradient: Gradient { + GradientStop { position: 0; color: Qt.rgba(0.8, 0.8, 0.8, 0.5); } + GradientStop { position: 1; color: Qt.rgba(0.2, 0.2, 0.2, 0.5); } + } + border.color: slide.textColor; + border.width: height / 250; + antialiasing: true + } + + onCodeChanged: { + listModel.clear(); + var codeLines = slide.code.split("\n"); + for (var i=0; i<codeLines.length; ++i) { + listModel.append({ + line: i, + code: codeLines[i] + }); + } + } + + + + ListModel { + id: listModel + } + + + onVisibleChanged: { + listView.focus = slide.visible; + listView.currentIndex = -1; + } + + ListView { + id: listView; + + anchors.fill: parent; + anchors.margins: background.radius / 2 + clip: true + + model: listModel; + focus: true; + + MouseArea { + anchors.fill: parent + onClicked: { + listView.focus = true; + listView.currentIndex = listView.indexAt(mouse.x, mouse.y + listView.contentY); + } + + } + + delegate: Item { + + id: itemDelegate + + height: lineLabel.height + width: parent.width + + Rectangle { + id: lineLabelBackground + width: lineLabel.height * 3; + height: lineLabel.height; + color: slide.textColor; + opacity: 0.1; + } + + Text { + id: lineLabel + anchors.right: lineLabelBackground.right; + text: (line+1) + ":" + color: slide.textColor; + font.family: slide.codeFontFamily + font.pixelSize: slide.codeFontSize + font.bold: itemDelegate.ListView.isCurrentItem; + opacity: itemDelegate.ListView.isCurrentItem ? 1 : 0.9; + + } + + Rectangle { + id: lineContentBackground + anchors.fill: lineContent; + anchors.leftMargin: -height / 2; + color: slide.textColor + opacity: 0.2 + visible: itemDelegate.ListView.isCurrentItem; + } + + Text { + id: lineContent + anchors.left: lineLabelBackground.right + anchors.leftMargin: lineContent.height; + anchors.right: parent.right; + color: slide.textColor; + text: code; + font.family: slide.codeFontFamily + font.pixelSize: slide.codeFontSize + font.bold: itemDelegate.ListView.isCurrentItem; + opacity: itemDelegate.ListView.isCurrentItem ? 1 : 0.9; + } + } + } + + + +} |