diff options
author | Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com> | 2013-05-29 16:24:12 +0200 |
---|---|---|
committer | Eskil Abrahamsen-Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com> | 2013-05-30 13:02:01 +0300 |
commit | 792602c8aaf387556c0035fc894493a20699c7e8 (patch) | |
tree | 9ac1744e06c861e5f08e1673f4e8fe37f6e720da /experimental/qt5-intro-android/presentation/CodeSlide.qml | |
parent | 8b56d4f90dd63abf90817b3f54b1fcbbf62bb3c5 (diff) |
Experimental android version of Qt 5 intro
Change-Id: I48041fc2abcf7d46943b5362cf84545e49d8889c
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
Diffstat (limited to 'experimental/qt5-intro-android/presentation/CodeSlide.qml')
-rw-r--r-- | experimental/qt5-intro-android/presentation/CodeSlide.qml | 162 |
1 files changed, 162 insertions, 0 deletions
diff --git a/experimental/qt5-intro-android/presentation/CodeSlide.qml b/experimental/qt5-intro-android/presentation/CodeSlide.qml new file mode 100644 index 0000000..ba8626b --- /dev/null +++ b/experimental/qt5-intro-android/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; + } + } + } + + + +} |