Prepare dedicated QML files for all supported message content types
This commit is contained in:
parent
ab879f8db3
commit
282ab1d2b9
15 changed files with 259 additions and 182 deletions
|
@ -1,125 +0,0 @@
|
|||
/*
|
||||
Copyright (C) 2020 Sebastian J. Wolf and other contributors
|
||||
|
||||
This file is part of Fernschreiber.
|
||||
|
||||
Fernschreiber 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.
|
||||
|
||||
Fernschreiber 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 Fernschreiber. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
import QtQuick 2.6
|
||||
import Sailfish.Silica 1.0
|
||||
import WerkWolf.Fernschreiber 1.0
|
||||
import "../js/functions.js" as Functions
|
||||
import "../js/twemoji.js" as Emoji
|
||||
|
||||
Column {
|
||||
id: gamePreviewItem
|
||||
|
||||
property ListItem messageListItem
|
||||
property MessageOverlayFlickable overlayFlickable
|
||||
property var rawMessage: messageListItem ? messageListItem.myMessage : overlayFlickable.overlayMessage
|
||||
property bool highlighted
|
||||
|
||||
width: parent.width
|
||||
height: childrenRect.height
|
||||
|
||||
|
||||
Label {
|
||||
width: parent.width
|
||||
font.bold: true
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
text: Emoji.emojify(rawMessage.content.game.title || "", font.pixelSize)
|
||||
truncationMode: TruncationMode.Fade
|
||||
textFormat: Text.StyledText
|
||||
wrapMode: Text.Wrap
|
||||
}
|
||||
Label {
|
||||
width: parent.width
|
||||
font.pixelSize: Theme.fontSizeExtraSmall
|
||||
text: Emoji.emojify(rawMessage.content.game.description || "", font.pixelSize)
|
||||
truncationMode: TruncationMode.Fade
|
||||
textFormat: Text.StyledText
|
||||
wrapMode: Text.Wrap
|
||||
}
|
||||
Label {
|
||||
width: parent.width
|
||||
font.pixelSize: Theme.fontSizeExtraSmall
|
||||
text: Emoji.emojify(Functions.enhanceMessageText(rawMessage.content.game.text) || "", font.pixelSize)
|
||||
truncationMode: TruncationMode.Fade
|
||||
wrapMode: Text.Wrap
|
||||
textFormat: Text.StyledText
|
||||
onLinkActivated: {
|
||||
var chatCommand = Functions.handleLink(link);
|
||||
if(chatCommand) {
|
||||
tdLibWrapper.sendTextMessage(chatInformation.id, chatCommand);
|
||||
}
|
||||
}
|
||||
}
|
||||
Item {
|
||||
width: parent.width
|
||||
height: Theme.paddingLarge
|
||||
}
|
||||
|
||||
Image {
|
||||
id: thumbnail
|
||||
source: thumbnailFile.isDownloadingCompleted ? thumbnailFile.path : ""
|
||||
fillMode: Image.PreserveAspectCrop
|
||||
asynchronous: true
|
||||
visible: opacity > 0
|
||||
opacity: status === Image.Ready ? 1.0 : 0.0
|
||||
|
||||
Behavior on opacity { FadeAnimation {} }
|
||||
layer.enabled: queryResultItem.pressed
|
||||
layer.effect: PressEffect { source: thumbnail }
|
||||
|
||||
TDLibFile {
|
||||
id: thumbnailFile
|
||||
tdlib: tdLibWrapper
|
||||
autoLoad: true
|
||||
}
|
||||
Rectangle {
|
||||
width: Theme.iconSizeMedium
|
||||
height: width
|
||||
anchors {
|
||||
top: parent.top
|
||||
topMargin: Theme.paddingSmall
|
||||
left: parent.left
|
||||
leftMargin: Theme.paddingSmall
|
||||
}
|
||||
|
||||
color: Theme.rgba(Theme.overlayBackgroundColor, 0.2)
|
||||
radius: Theme.paddingSmall
|
||||
Icon {
|
||||
id: icon
|
||||
source: "image://theme/icon-m-game-controller"
|
||||
asynchronous: true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Component.onCompleted: {
|
||||
if (rawMessage.content.game.photo) {
|
||||
// Check first which size fits best...
|
||||
var photo
|
||||
for (var i = 0; i < rawMessage.content.game.photo.sizes.length; i++) {
|
||||
photo = rawMessage.content.game.photo.sizes[i].photo
|
||||
if (rawMessage.content.game.photo.sizes[i].width >= gamePreviewItem.width) {
|
||||
break
|
||||
}
|
||||
}
|
||||
if (photo) {
|
||||
thumbnailFile.fileInformation = photo
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
21
qml/components/messageContent/MessageAnimation.qml
Normal file
21
qml/components/messageContent/MessageAnimation.qml
Normal file
|
@ -0,0 +1,21 @@
|
|||
/*
|
||||
Copyright (C) 2020 Sebastian J. Wolf and other contributors
|
||||
|
||||
This file is part of Fernschreiber.
|
||||
|
||||
Fernschreiber 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.
|
||||
|
||||
Fernschreiber 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 Fernschreiber. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
import QtQuick 2.6
|
||||
|
||||
MessageVideo {}
|
|
@ -19,27 +19,21 @@
|
|||
import QtQuick 2.6
|
||||
import Sailfish.Silica 1.0
|
||||
import QtMultimedia 5.6
|
||||
import "../js/functions.js" as Functions
|
||||
import "../js/debug.js" as Debug
|
||||
import "../"
|
||||
import "../../js/functions.js" as Functions
|
||||
import "../../js/debug.js" as Debug
|
||||
|
||||
|
||||
Item {
|
||||
MessageContentBase {
|
||||
id: audioMessageComponent
|
||||
|
||||
property ListItem messageListItem
|
||||
property MessageOverlayFlickable overlayFlickable
|
||||
property var rawMessage: messageListItem ? messageListItem.myMessage : overlayFlickable.overlayMessage
|
||||
|
||||
property var audioData: ( rawMessage.content['@type'] === "messageVoiceNote" ) ? rawMessage.content.voice_note : ( ( rawMessage.content['@type'] === "messageAudio" ) ? rawMessage.content.audio : "");
|
||||
property string audioUrl;
|
||||
property int previewFileId;
|
||||
property int audioFileId;
|
||||
property bool onScreen: messageListItem ? messageListItem.page.status === PageStatus.Active : true
|
||||
property string audioType : "voiceNote";
|
||||
property bool highlighted;
|
||||
signal clicked();
|
||||
|
||||
width: parent.width
|
||||
height: width / 2
|
||||
|
||||
function getTimeString(rawSeconds) {
|
32
qml/components/messageContent/MessageContentBase.qml
Normal file
32
qml/components/messageContent/MessageContentBase.qml
Normal file
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
Copyright (C) 2020 Sebastian J. Wolf and other contributors
|
||||
|
||||
This file is part of Fernschreiber.
|
||||
|
||||
Fernschreiber 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.
|
||||
|
||||
Fernschreiber 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 Fernschreiber. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
import QtQuick 2.6
|
||||
import Sailfish.Silica 1.0
|
||||
import QtMultimedia 5.6
|
||||
import "../"
|
||||
import "../../js/functions.js" as Functions
|
||||
import "../../js/debug.js" as Debug
|
||||
|
||||
Item {
|
||||
property ListItem messageListItem
|
||||
property MessageOverlayFlickable overlayFlickable
|
||||
property var rawMessage: messageListItem ? messageListItem.myMessage : overlayFlickable.overlayMessage
|
||||
property bool highlighted
|
||||
signal clicked()
|
||||
}
|
|
@ -19,19 +19,13 @@
|
|||
import QtQuick 2.6
|
||||
import Sailfish.Silica 1.0
|
||||
|
||||
Item {
|
||||
MessageContentBase {
|
||||
|
||||
id: documentPreviewItem
|
||||
width: parent.width
|
||||
height: Theme.itemSizeLarge
|
||||
|
||||
property ListItem messageListItem
|
||||
property MessageOverlayFlickable overlayFlickable
|
||||
property var rawMessage: messageListItem ? messageListItem.myMessage : overlayFlickable.overlayMessage
|
||||
|
||||
property var documentData: rawMessage.content.document
|
||||
property bool openRequested: false;
|
||||
property bool highlighted;
|
||||
|
||||
Component.onCompleted: {
|
||||
updateDocument();
|
||||
|
@ -128,7 +122,4 @@ Item {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
126
qml/components/messageContent/MessageGame.qml
Normal file
126
qml/components/messageContent/MessageGame.qml
Normal file
|
@ -0,0 +1,126 @@
|
|||
/*
|
||||
Copyright (C) 2020 Sebastian J. Wolf and other contributors
|
||||
|
||||
This file is part of Fernschreiber.
|
||||
|
||||
Fernschreiber 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.
|
||||
|
||||
Fernschreiber 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 Fernschreiber. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
import QtQuick 2.6
|
||||
import Sailfish.Silica 1.0
|
||||
import WerkWolf.Fernschreiber 1.0
|
||||
import "../../js/functions.js" as Functions
|
||||
import "../../js/twemoji.js" as Emoji
|
||||
|
||||
|
||||
MessageContentBase {
|
||||
id: messageContent
|
||||
height: gamePreviewItem.height
|
||||
|
||||
Column {
|
||||
id: gamePreviewItem
|
||||
width: parent.width
|
||||
height: childrenRect.height
|
||||
|
||||
|
||||
Label {
|
||||
width: parent.width
|
||||
font.bold: true
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
text: Emoji.emojify(rawMessage.content.game.title || "", font.pixelSize)
|
||||
truncationMode: TruncationMode.Fade
|
||||
textFormat: Text.StyledText
|
||||
wrapMode: Text.Wrap
|
||||
}
|
||||
Label {
|
||||
width: parent.width
|
||||
font.pixelSize: Theme.fontSizeExtraSmall
|
||||
text: Emoji.emojify(rawMessage.content.game.description || "", font.pixelSize)
|
||||
truncationMode: TruncationMode.Fade
|
||||
textFormat: Text.StyledText
|
||||
wrapMode: Text.Wrap
|
||||
}
|
||||
Label {
|
||||
width: parent.width
|
||||
font.pixelSize: Theme.fontSizeExtraSmall
|
||||
text: Emoji.emojify(Functions.enhanceMessageText(rawMessage.content.game.text) || "", font.pixelSize)
|
||||
truncationMode: TruncationMode.Fade
|
||||
wrapMode: Text.Wrap
|
||||
textFormat: Text.StyledText
|
||||
onLinkActivated: {
|
||||
var chatCommand = Functions.handleLink(link);
|
||||
if(chatCommand) {
|
||||
tdLibWrapper.sendTextMessage(chatInformation.id, chatCommand);
|
||||
}
|
||||
}
|
||||
}
|
||||
Item {
|
||||
width: parent.width
|
||||
height: Theme.paddingLarge
|
||||
}
|
||||
|
||||
Image {
|
||||
id: thumbnail
|
||||
source: thumbnailFile.isDownloadingCompleted ? thumbnailFile.path : ""
|
||||
fillMode: Image.PreserveAspectCrop
|
||||
asynchronous: true
|
||||
visible: opacity > 0
|
||||
opacity: status === Image.Ready ? 1.0 : 0.0
|
||||
|
||||
Behavior on opacity { FadeAnimation {} }
|
||||
layer.enabled: messageContent.highlighted
|
||||
layer.effect: PressEffect { source: thumbnail }
|
||||
|
||||
TDLibFile {
|
||||
id: thumbnailFile
|
||||
tdlib: tdLibWrapper
|
||||
autoLoad: true
|
||||
}
|
||||
Rectangle {
|
||||
width: Theme.iconSizeMedium
|
||||
height: width
|
||||
anchors {
|
||||
top: parent.top
|
||||
topMargin: Theme.paddingSmall
|
||||
left: parent.left
|
||||
leftMargin: Theme.paddingSmall
|
||||
}
|
||||
|
||||
color: Theme.rgba(Theme.overlayBackgroundColor, 0.2)
|
||||
radius: Theme.paddingSmall
|
||||
Icon {
|
||||
id: icon
|
||||
source: "image://theme/icon-m-game-controller"
|
||||
asynchronous: true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Component.onCompleted: {
|
||||
if (rawMessage.content.game.photo) {
|
||||
// Check first which size fits best...
|
||||
var photo
|
||||
for (var i = 0; i < rawMessage.content.game.photo.sizes.length; i++) {
|
||||
photo = rawMessage.content.game.photo.sizes[i].photo
|
||||
if (rawMessage.content.game.photo.sizes[i].width >= gamePreviewItem.width) {
|
||||
break
|
||||
}
|
||||
}
|
||||
if (photo) {
|
||||
thumbnailFile.fileInformation = photo
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -19,28 +19,23 @@
|
|||
import QtQuick 2.6
|
||||
import QtGraphicalEffects 1.0
|
||||
import Sailfish.Silica 1.0
|
||||
import "../"
|
||||
|
||||
Item {
|
||||
MessageContentBase {
|
||||
|
||||
id: imagePreviewItem
|
||||
|
||||
property ListItem messageListItem
|
||||
property MessageOverlayFlickable overlayFlickable
|
||||
property var rawMessage: messageListItem ? messageListItem.myMessage : overlayFlickable.overlayMessage
|
||||
property bool highlighted
|
||||
|
||||
property var locationData : ( rawMessage.content['@type'] === "messageLocation" ) ? rawMessage.content.location : ( ( rawMessage.content['@type'] === "messageVenue" ) ? rawMessage.content.venue.location : "" )
|
||||
|
||||
property string chatId: rawMessage.chat_id
|
||||
property var pictureFileInformation;
|
||||
width: parent.width
|
||||
height: width / 2
|
||||
property string fileExtra
|
||||
|
||||
Component.onCompleted: {
|
||||
updatePicture();
|
||||
}
|
||||
function clicked(){
|
||||
onClicked: {
|
||||
if(!processLauncher.launchProgram('harbour-pure-maps', ["geo:"+locationData.latitude+","+locationData.longitude])) {
|
||||
imageNotification.show(qsTr("Install Pure Maps to inspect this location."));
|
||||
}
|
|
@ -19,20 +19,16 @@
|
|||
import QtQuick 2.6
|
||||
import Sailfish.Silica 1.0
|
||||
import WerkWolf.Fernschreiber 1.0
|
||||
import "../"
|
||||
|
||||
Item {
|
||||
MessageContentBase {
|
||||
id: imagePreviewItem
|
||||
|
||||
property ListItem messageListItem
|
||||
property MessageOverlayFlickable overlayFlickable
|
||||
property var rawMessage: messageListItem ? messageListItem.myMessage : overlayFlickable.overlayMessage
|
||||
readonly property int defaultHeight: Math.round(width * 2 / 3)
|
||||
property bool highlighted
|
||||
|
||||
width: parent.width
|
||||
height: singleImage.visible ? Math.min(defaultHeight, singleImage.bestHeight + Theme.paddingSmall) : defaultHeight
|
||||
|
||||
function clicked() {
|
||||
onClicked: {
|
||||
pageStack.push(Qt.resolvedUrl("../pages/ImagePage.qml"), {
|
||||
"photoData" : imagePreviewItem.rawMessage.content.photo
|
||||
})
|
|
@ -21,15 +21,13 @@ import QtQuick 2.6
|
|||
import Sailfish.Silica 1.0
|
||||
import WerkWolf.Fernschreiber 1.0
|
||||
|
||||
import "../js/functions.js" as Functions
|
||||
import "../js/twemoji.js" as Emoji
|
||||
import "../../js/functions.js" as Functions
|
||||
import "../../js/twemoji.js" as Emoji
|
||||
|
||||
Item {
|
||||
MessageContentBase {
|
||||
id: pollMessageComponent
|
||||
height: pollColumn.height
|
||||
|
||||
property ListItem messageListItem
|
||||
property MessageOverlayFlickable overlayFlickable
|
||||
readonly property var rawMessage: messageListItem ? messageListItem.myMessage : overlayFlickable.overlayMessage
|
||||
readonly property string chatId: rawMessage.chat_id
|
||||
readonly property bool isOwnMessage: messageListItem ? messageListItem.isOwnMessage : overlayFlickable.isOwnMessage
|
||||
readonly property string messageId: rawMessage.id
|
||||
|
@ -44,9 +42,6 @@ Item {
|
|||
}
|
||||
readonly property bool canAnswer: !hasAnswered && !pollData.is_closed
|
||||
readonly property bool isQuiz: pollData.type['@type'] === "pollTypeQuiz"
|
||||
property bool highlighted
|
||||
width: parent.width
|
||||
height: pollColumn.height
|
||||
property list<NamedAction> extraContextMenuItems: [
|
||||
NamedAction {
|
||||
visible: !pollData.is_closed && pollMessageComponent.canEdit
|
|
@ -20,17 +20,13 @@ import QtQuick 2.6
|
|||
import Sailfish.Silica 1.0
|
||||
import WerkWolf.Fernschreiber 1.0
|
||||
|
||||
Item {
|
||||
property ListItem messageListItem
|
||||
property MessageOverlayFlickable overlayFlickable
|
||||
|
||||
MessageContentBase {
|
||||
readonly property var stickerData: messageListItem ? messageListItem.myMessage.content.sticker : overlayFlickable.overlayMessage.content.sticker;
|
||||
readonly property bool animated: stickerData.is_animated && appSettings.animateStickers
|
||||
readonly property bool stickerVisible: staticStickerLoader.item ? staticStickerLoader.item.visible :
|
||||
animatedStickerLoader.item ? animatedStickerLoader.item.visible : false
|
||||
readonly property bool isOwnSticker : messageListItem ? messageListItem.isOwnMessage : overlayFlickable.isOwnMessage
|
||||
property real aspectRatio: stickerData.width / stickerData.height
|
||||
property bool highlighted
|
||||
|
||||
implicitWidth: stickerData.width
|
||||
implicitHeight: stickerData.height
|
21
qml/components/messageContent/MessageVenue.qml
Normal file
21
qml/components/messageContent/MessageVenue.qml
Normal file
|
@ -0,0 +1,21 @@
|
|||
/*
|
||||
Copyright (C) 2020 Sebastian J. Wolf and other contributors
|
||||
|
||||
This file is part of Fernschreiber.
|
||||
|
||||
Fernschreiber 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.
|
||||
|
||||
Fernschreiber 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 Fernschreiber. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
import QtQuick 2.6
|
||||
|
||||
MessageLocation {}
|
|
@ -22,13 +22,9 @@ import QtMultimedia 5.6
|
|||
import "../js/functions.js" as Functions
|
||||
import "../js/debug.js" as Debug
|
||||
|
||||
Item {
|
||||
MessageContentBase {
|
||||
id: videoMessageComponent
|
||||
|
||||
property ListItem messageListItem
|
||||
property MessageOverlayFlickable overlayFlickable
|
||||
property var rawMessage: messageListItem ? messageListItem.myMessage : ( overlayFlickable ? overlayFlickable.overlayMessage : undefined )
|
||||
|
||||
property var videoData: ( rawMessage.content['@type'] === "messageVideo" ) ? rawMessage.content.video : ( ( rawMessage.content['@type'] === "messageAnimation" ) ? rawMessage.content.animation : rawMessage.content.video_note )
|
||||
property string videoUrl;
|
||||
property int previewFileId;
|
||||
|
@ -38,10 +34,7 @@ Item {
|
|||
property bool onScreen: messageListItem ? messageListItem.page.status === PageStatus.Active : true;
|
||||
property string videoType : "video";
|
||||
property bool playRequested: false;
|
||||
property bool highlighted;
|
||||
signal clicked();
|
||||
|
||||
width: parent.width
|
||||
height: videoMessageComponent.isVideoNote ? width : Functions.getVideoHeight(width, videoData)
|
||||
|
||||
Timer {
|
21
qml/components/messageContent/MessageVoiceNote.qml
Normal file
21
qml/components/messageContent/MessageVoiceNote.qml
Normal file
|
@ -0,0 +1,21 @@
|
|||
/*
|
||||
Copyright (C) 2020 Sebastian J. Wolf and other contributors
|
||||
|
||||
This file is part of Fernschreiber.
|
||||
|
||||
Fernschreiber 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.
|
||||
|
||||
Fernschreiber 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 Fernschreiber. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
import QtQuick 2.6
|
||||
|
||||
MessageAudio {}
|
21
qml/components/messageContent/VideoNote.qml
Normal file
21
qml/components/messageContent/VideoNote.qml
Normal file
|
@ -0,0 +1,21 @@
|
|||
/*
|
||||
Copyright (C) 2020 Sebastian J. Wolf and other contributors
|
||||
|
||||
This file is part of Fernschreiber.
|
||||
|
||||
Fernschreiber 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.
|
||||
|
||||
Fernschreiber 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 Fernschreiber. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
import QtQuick 2.6
|
||||
|
||||
MessageVideo {}
|
Loading…
Reference in a new issue