some basic ui pieces
This commit is contained in:
parent
9c73c8c567
commit
8f4c2a4e94
52 changed files with 1251 additions and 1906 deletions
133
src/contents/ui/MainWindow.qml
Normal file
133
src/contents/ui/MainWindow.qml
Normal file
|
@ -0,0 +1,133 @@
|
|||
import QtQuick 2.13
|
||||
import QtQuick.Dialogs 1.0
|
||||
import QtQuick.Controls 2.0 as Controls
|
||||
import QtQuick.Window 2.13
|
||||
import QtQuick.Layouts 1.2
|
||||
import QtMultimedia 5.15
|
||||
import QtAudioEngine 1.15
|
||||
import org.kde.kirigami 2.13 as Kirigami
|
||||
|
||||
Component {
|
||||
id: root
|
||||
Kirigami.ScrollablePage {
|
||||
id: mainPage
|
||||
title: "Presenter"
|
||||
actions {
|
||||
main: Kirigami.Action {
|
||||
icon.name: "fileopen"
|
||||
text: "VideoBG"
|
||||
onTriggered: {
|
||||
print("Action button in buttons page clicked");
|
||||
fileDialog.open()
|
||||
}
|
||||
}
|
||||
right: Kirigami.Action {
|
||||
icon.name: "view-presentation"
|
||||
text: "Go Live"
|
||||
onTriggered: {
|
||||
print("Window is loading")
|
||||
presentLoader.active = true
|
||||
}
|
||||
}
|
||||
}
|
||||
/* Kirigami.OverlaySheet { */
|
||||
/* id: sheet */
|
||||
/* onSheetOpenChanged: page.actions.main.checked = sheetOpen */
|
||||
/* Controls.Label { */
|
||||
/* wrapMode: Text.WordWrap */
|
||||
/* text: "Lorem ipsum dolor sit amet" */
|
||||
/* } */
|
||||
/* } */
|
||||
//Page contents...
|
||||
|
||||
Rectangle {
|
||||
id: bg
|
||||
anchors.fill: parent
|
||||
color: "blue"
|
||||
}
|
||||
|
||||
FileDialog {
|
||||
id: fileDialog
|
||||
title: "Please choose a video"
|
||||
folder: shortcuts.home
|
||||
selectMultiple: false
|
||||
onAccepted: {
|
||||
print("You chose: " + fileDialog.fileUrls)
|
||||
video = fileDialog.fileUrl
|
||||
}
|
||||
onRejected: {
|
||||
print("Canceled")
|
||||
/* Qt.quit() */
|
||||
}
|
||||
}
|
||||
|
||||
Loader {
|
||||
id: presentLoader
|
||||
active: false
|
||||
sourceComponent: Window {
|
||||
id: presentWindow
|
||||
title: "presentation-window"
|
||||
height: maximumHeight
|
||||
width: maximumWidth
|
||||
visible: true
|
||||
onClosing: presentLoader.active = false
|
||||
Component.onCompleted: {
|
||||
presentWindow.showFullScreen();
|
||||
}
|
||||
Item {
|
||||
id: basePresentationLayer
|
||||
anchors.fill: parent
|
||||
Rectangle {
|
||||
id: basePrColor
|
||||
anchors.fill: parent
|
||||
color: "black"
|
||||
|
||||
MediaPlayer {
|
||||
id: videoPlayer
|
||||
source: video
|
||||
loops: MediaPlayer.Infinite
|
||||
autoPlay: true
|
||||
notifyInterval: 100
|
||||
}
|
||||
|
||||
VideoOutput {
|
||||
id: videoOutput
|
||||
anchors.fill: parent
|
||||
source: videoPlayer
|
||||
}
|
||||
MouseArea {
|
||||
id: playArea
|
||||
anchors.fill: parent
|
||||
onPressed: videoPlayer.play();
|
||||
}
|
||||
|
||||
Controls.ProgressBar {
|
||||
id: progressBar
|
||||
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.margins: 100
|
||||
from: 0
|
||||
to: videoPlayer.duraion
|
||||
value: videoPlayer.position/videoPlayer.duration
|
||||
|
||||
height: 30
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
|
||||
onClicked: {
|
||||
if (videoPlayer.seekable) {
|
||||
videoPlayer.seek(videoPlayer.duration * mouse.x/width);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue