Licensing: Re-import GPLv2.1 slideshow
Re-import presentation code (commercial, LGPLv2.1 or GPLv3), with licensing info. Calamares chooses LGPLv2.1 for the QML "library" code. - Digia LGPL Exception obtained from: Repo: https://raw.githubusercontent.com/meta-qt5/meta-qt5/master/licenses/Digia-Qt-LGPL-Exception-1.1 Rev: 48ebff679e5dc084d395b861a1fc4cb21790d51b - Presentation QML obtained from: Repo: https://github.com/qt-labs/qml-presentation-system Rev: 4071343a4dffffc4b05d777faa9c5cf54f2b4f08
This commit is contained in:
parent
a4a05acc61
commit
420f135628
83
LICENSES/LGPLv2.1-Presentation
Normal file
83
LICENSES/LGPLv2.1-Presentation
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** This file is part of the QML Presentation System.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:LGPL$
|
||||||
|
** 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.
|
||||||
|
**
|
||||||
|
** 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.
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2016 The Qt Company Ltd.
|
||||||
|
** Contact: https://www.qt.io/licensing/
|
||||||
|
**
|
||||||
|
** This file is part of the QML Presentation System.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:LGPL$
|
||||||
|
** 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.
|
||||||
|
**
|
||||||
|
** 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.
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
|
22
LICENSES/LGPLv2.1-Presentation-Exception
Normal file
22
LICENSES/LGPLv2.1-Presentation-Exception
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
Digia Qt LGPL Exception version 1.1
|
||||||
|
|
||||||
|
As an additional permission to the GNU Lesser General Public License version
|
||||||
|
2.1, the object code form of a "work that uses the Library" may incorporate
|
||||||
|
material from a header file that is part of the Library. You may distribute
|
||||||
|
such object code under terms of your choice, provided that:
|
||||||
|
(i) the header files of the Library have not been modified; and
|
||||||
|
(ii) the incorporated material is limited to numerical parameters, data
|
||||||
|
structure layouts, accessors, macros, inline functions and
|
||||||
|
templates; and
|
||||||
|
(iii) you comply with the terms of Section 6 of the GNU Lesser General
|
||||||
|
Public License version 2.1.
|
||||||
|
|
||||||
|
Moreover, you may apply this exception to a modified version of the Library,
|
||||||
|
provided that such modification does not involve copying material from the
|
||||||
|
Library into the modified Library's header files unless such material is
|
||||||
|
limited to (i) numerical parameters; (ii) data structure layouts;
|
||||||
|
(iii) accessors; and (iv) small macros, templates and inline functions of
|
||||||
|
five lines or less in length.
|
||||||
|
|
||||||
|
Furthermore, you are not required to apply this additional permission to a
|
||||||
|
modified version of the Library.
|
@ -1,29 +1,7 @@
|
|||||||
/* === This file is part of Calamares - <http://github.com/calamares> ===
|
|
||||||
*
|
|
||||||
* Copyright 2015, Teo Mrnjavac <teo@kde.org>
|
|
||||||
*
|
|
||||||
* Based on the QML Presentation System.
|
|
||||||
* Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
|
|
||||||
* Header reproduced verbatim below.
|
|
||||||
*
|
|
||||||
* Calamares is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* Calamares 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 General Public License
|
|
||||||
* along with Calamares. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
**
|
**
|
||||||
** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
|
** Copyright (C) 2016 The Qt Company Ltd.
|
||||||
** Contact: http://www.qt-project.org/legal
|
** Contact: https://www.qt.io/licensing/
|
||||||
**
|
**
|
||||||
** This file is part of the QML Presentation System.
|
** This file is part of the QML Presentation System.
|
||||||
**
|
**
|
||||||
@ -62,18 +40,20 @@
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
import QtQuick 2.0
|
import QtQuick 2.5
|
||||||
import QtQuick.Window 2.0
|
import QtQuick.Window 2.0
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
id: root
|
id: root
|
||||||
|
|
||||||
property variant slides: []
|
property variant slides: []
|
||||||
property int currentSlide;
|
property int currentSlide: 0
|
||||||
|
|
||||||
property bool showNotes: false;
|
property bool showNotes: false;
|
||||||
property bool allowDelay: true;
|
property bool allowDelay: true;
|
||||||
property bool loop: true;
|
property alias mouseNavigation: mouseArea.enabled
|
||||||
|
property bool arrowNavigation: true
|
||||||
|
property bool keyShortcutsEnabled: true
|
||||||
|
|
||||||
property color titleColor: textColor;
|
property color titleColor: textColor;
|
||||||
property color textColor: "black"
|
property color textColor: "black"
|
||||||
@ -83,6 +63,7 @@ Item {
|
|||||||
// Private API
|
// Private API
|
||||||
property bool _faded: false
|
property bool _faded: false
|
||||||
property int _userNum;
|
property int _userNum;
|
||||||
|
property int _lastShownSlide: 0
|
||||||
|
|
||||||
Component.onCompleted: {
|
Component.onCompleted: {
|
||||||
var slideCount = 0;
|
var slideCount = 0;
|
||||||
@ -98,10 +79,8 @@ Item {
|
|||||||
root._userNum = 0;
|
root._userNum = 0;
|
||||||
|
|
||||||
// Make first slide visible...
|
// Make first slide visible...
|
||||||
if (root.slides.length > 0) {
|
if (root.slides.length > 0)
|
||||||
root.currentSlide = 0;
|
|
||||||
root.slides[root.currentSlide].visible = true;
|
root.slides[root.currentSlide].visible = true;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function switchSlides(from, to, forward) {
|
function switchSlides(from, to, forward) {
|
||||||
@ -110,6 +89,11 @@ Item {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onCurrentSlideChanged: {
|
||||||
|
switchSlides(root.slides[_lastShownSlide], root.slides[currentSlide], currentSlide > _lastShownSlide)
|
||||||
|
_lastShownSlide = currentSlide
|
||||||
|
}
|
||||||
|
|
||||||
function goToNextSlide() {
|
function goToNextSlide() {
|
||||||
root._userNum = 0
|
root._userNum = 0
|
||||||
if (_faded)
|
if (_faded)
|
||||||
@ -118,38 +102,16 @@ Item {
|
|||||||
if (root.slides[currentSlide]._advance())
|
if (root.slides[currentSlide]._advance())
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (root.currentSlide + 1 < root.slides.length) {
|
if (currentSlide + 1 < root.slides.length)
|
||||||
var from = slides[currentSlide]
|
++currentSlide;
|
||||||
var to = slides[currentSlide + 1]
|
|
||||||
if (switchSlides(from, to, true)) {
|
|
||||||
currentSlide = currentSlide + 1;
|
|
||||||
root.focus = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (root.loop) {
|
|
||||||
var from = slides[currentSlide]
|
|
||||||
var to = slides[0]
|
|
||||||
if (switchSlides(from, to, true)) {
|
|
||||||
currentSlide = 0;
|
|
||||||
root.focus = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function goToPreviousSlide() {
|
function goToPreviousSlide() {
|
||||||
root._userNum = 0
|
root._userNum = 0
|
||||||
if (root._faded)
|
if (root._faded)
|
||||||
return
|
return
|
||||||
if (root.currentSlide - 1 >= 0) {
|
if (currentSlide - 1 >= 0)
|
||||||
var from = slides[currentSlide]
|
--currentSlide;
|
||||||
var to = slides[currentSlide - 1]
|
|
||||||
if (switchSlides(from, to, false)) {
|
|
||||||
currentSlide = currentSlide - 1;
|
|
||||||
root.focus = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function goToUserSlide() {
|
function goToUserSlide() {
|
||||||
@ -158,38 +120,38 @@ Item {
|
|||||||
return
|
return
|
||||||
if (_userNum < 0)
|
if (_userNum < 0)
|
||||||
goToNextSlide()
|
goToNextSlide()
|
||||||
else if (root.currentSlide != _userNum) {
|
else {
|
||||||
var from = slides[currentSlide]
|
currentSlide = _userNum;
|
||||||
var to = slides[_userNum]
|
root.focus = true;
|
||||||
if (switchSlides(from, to, _userNum > currentSlide)) {
|
|
||||||
currentSlide = _userNum;
|
|
||||||
root.focus = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
focus: true
|
// directly type in the slide number: depends on root having focus
|
||||||
|
|
||||||
Keys.onSpacePressed: goToNextSlide()
|
|
||||||
Keys.onRightPressed: goToNextSlide()
|
|
||||||
Keys.onDownPressed: goToNextSlide()
|
|
||||||
Keys.onLeftPressed: goToPreviousSlide()
|
|
||||||
Keys.onUpPressed: goToPreviousSlide()
|
|
||||||
Keys.onEscapePressed: Qt.quit()
|
|
||||||
Keys.onPressed: {
|
Keys.onPressed: {
|
||||||
if (event.key >= Qt.Key_0 && event.key <= Qt.Key_9)
|
if (event.key >= Qt.Key_0 && event.key <= Qt.Key_9)
|
||||||
_userNum = 10 * _userNum + (event.key - Qt.Key_0)
|
_userNum = 10 * _userNum + (event.key - Qt.Key_0)
|
||||||
else {
|
else {
|
||||||
if (event.key == Qt.Key_Return || event.key == Qt.Key_Enter)
|
if (event.key == Qt.Key_Return || event.key == Qt.Key_Enter)
|
||||||
goToUserSlide();
|
goToUserSlide();
|
||||||
else if (event.key == Qt.Key_Backspace)
|
|
||||||
goToPreviousSlide();
|
|
||||||
else if (event.key == Qt.Key_C)
|
|
||||||
root._faded = !root._faded;
|
|
||||||
_userNum = 0;
|
_userNum = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// navigate with arrow keys
|
||||||
|
Shortcut { sequence: StandardKey.MoveToNextLine; enabled: root.arrowNavigation; onActivated: goToNextSlide() }
|
||||||
|
Shortcut { sequence: StandardKey.MoveToPreviousLine; enabled: root.arrowNavigation; onActivated: goToPreviousSlide() }
|
||||||
|
Shortcut { sequence: StandardKey.MoveToNextChar; enabled: root.arrowNavigation; onActivated: goToNextSlide() }
|
||||||
|
Shortcut { sequence: StandardKey.MoveToPreviousChar; enabled: root.arrowNavigation; onActivated: goToPreviousSlide() }
|
||||||
|
|
||||||
|
// presentation-specific single-key shortcuts (which interfere with normal typing)
|
||||||
|
Shortcut { sequence: " "; enabled: root.keyShortcutsEnabled; onActivated: goToNextSlide() }
|
||||||
|
Shortcut { sequence: "c"; enabled: root.keyShortcutsEnabled; onActivated: root._faded = !root._faded }
|
||||||
|
|
||||||
|
// standard shortcuts
|
||||||
|
Shortcut { sequence: StandardKey.MoveToNextPage; onActivated: goToNextSlide() }
|
||||||
|
Shortcut { sequence: StandardKey.MoveToPreviousPage; onActivated: goToPreviousSlide() }
|
||||||
|
Shortcut { sequence: StandardKey.Quit; onActivated: Qt.quit() }
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
z: 1000
|
z: 1000
|
||||||
color: "black"
|
color: "black"
|
||||||
@ -219,16 +181,61 @@ Item {
|
|||||||
title: "QML Presentation: Notes"
|
title: "QML Presentation: Notes"
|
||||||
visible: root.showNotes
|
visible: root.showNotes
|
||||||
|
|
||||||
Text {
|
Flickable {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
anchors.margins: parent.height * 0.1;
|
contentWidth: parent.width
|
||||||
|
contentHeight: textContainer.height
|
||||||
|
|
||||||
font.pixelSize: 16
|
Item {
|
||||||
wrapMode: Text.WordWrap
|
id: textContainer
|
||||||
|
width: parent.width
|
||||||
|
height: notesText.height + 2 * notesText.padding
|
||||||
|
|
||||||
property string notes: root.slides[root.currentSlide].notes;
|
Text {
|
||||||
text: notes == "" ? "Slide has no notes..." : notes;
|
id: notesText
|
||||||
font.italic: notes == "";
|
|
||||||
|
property real padding: 16;
|
||||||
|
|
||||||
|
x: padding
|
||||||
|
y: padding
|
||||||
|
width: parent.width - 2 * padding
|
||||||
|
|
||||||
|
|
||||||
|
font.pixelSize: 16
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
|
||||||
|
property string notes: root.slides[root.currentSlide].notes;
|
||||||
|
|
||||||
|
onNotesChanged: {
|
||||||
|
var result = "";
|
||||||
|
|
||||||
|
var lines = notes.split("\n");
|
||||||
|
var beginNewLine = false
|
||||||
|
for (var i=0; i<lines.length; ++i) {
|
||||||
|
var line = lines[i].trim();
|
||||||
|
if (line.length == 0) {
|
||||||
|
beginNewLine = true;
|
||||||
|
} else {
|
||||||
|
if (beginNewLine && result.length) {
|
||||||
|
result += "\n\n"
|
||||||
|
beginNewLine = false
|
||||||
|
}
|
||||||
|
if (result.length > 0)
|
||||||
|
result += " ";
|
||||||
|
result += line;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (result.length == 0) {
|
||||||
|
font.italic = true;
|
||||||
|
text = "no notes.."
|
||||||
|
} else {
|
||||||
|
font.italic = false;
|
||||||
|
text = result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -167,20 +167,19 @@ Item {
|
|||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
id: dot
|
id: dot
|
||||||
y: baseFontSize * row.indentFactor / 2
|
anchors.baseline: text.baseline
|
||||||
width: baseFontSize / 4
|
anchors.baselineOffset: -text.font.pixelSize / 2
|
||||||
height: baseFontSize / 4
|
width: text.font.pixelSize / 3
|
||||||
|
height: text.font.pixelSize / 3
|
||||||
color: slide.textColor
|
color: slide.textColor
|
||||||
radius: width / 2
|
radius: width / 2
|
||||||
smooth: true
|
|
||||||
opacity: text.text.length == 0 ? 0 : 1
|
opacity: text.text.length == 0 ? 0 : 1
|
||||||
}
|
}
|
||||||
|
|
||||||
Rectangle {
|
Item {
|
||||||
id: space
|
id: space
|
||||||
width: dot.width * 2
|
width: dot.width * 1.5
|
||||||
height: 1
|
height: 1
|
||||||
color: "#00ffffff"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Text {
|
Text {
|
||||||
|
Loading…
Reference in New Issue
Block a user