[UI] Moved PlaylistDialog into it's own file.
This commit is contained in:
parent
afba6a63d2
commit
37158fbcad
5
format-code.sh
Executable file
5
format-code.sh
Executable file
|
@ -0,0 +1,5 @@
|
|||
SOURCE_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
|
||||
pushd $SOURCE_DIR
|
||||
qmlfmt -w src/qml/*.qml
|
||||
clang-format -style mozilla -i src/*
|
||||
popd
|
|
@ -435,7 +435,8 @@ DirectMpvPlayerBackend::playerCommand(const Enums::Commands& cmd,
|
|||
|
||||
case Enums::Commands::SetPlaylistPos: {
|
||||
|
||||
command(QVariantList() << "set" << "playlist-pos" << args);
|
||||
command(QVariantList() << "set"
|
||||
<< "playlist-pos" << args);
|
||||
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -425,7 +425,8 @@ MpvPlayerBackend::playerCommand(const Enums::Commands& cmd,
|
|||
|
||||
case Enums::Commands::SetPlaylistPos: {
|
||||
|
||||
command(QVariantList() << "set" << "playlist-pos" << args);
|
||||
command(QVariantList() << "set"
|
||||
<< "playlist-pos" << args);
|
||||
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -66,7 +66,6 @@ signals:
|
|||
void audioDevicesChanged();
|
||||
void playlistChanged();
|
||||
|
||||
|
||||
private slots:
|
||||
void doUpdate();
|
||||
void on_mpv_events();
|
||||
|
|
|
@ -68,7 +68,7 @@ Item {
|
|||
height: subsContainer.childrenRect.height
|
||||
}
|
||||
Component.onCompleted: {
|
||||
player.subtitlesChanged.connect(function(subtitles) {
|
||||
player.subtitlesChanged.connect(function (subtitles) {
|
||||
text = subtitles
|
||||
})
|
||||
}
|
||||
|
@ -79,7 +79,9 @@ Item {
|
|||
|
||||
Rectangle {
|
||||
id: controlsBackground
|
||||
height: controlsBar.visible ? controlsBar.height + (fun.nyanCat ? progressBackground.height * 0.3: progressBackground.height * 2) : 0
|
||||
height: controlsBar.visible ? controlsBar.height
|
||||
+ (fun.nyanCat ? progressBackground.height
|
||||
* 0.3 : progressBackground.height * 2) : 0
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
|
@ -111,13 +113,15 @@ Item {
|
|||
anchors.topMargin: progressBackground.height
|
||||
bottomPadding: 0
|
||||
Component.onCompleted: {
|
||||
player.positionChanged.connect(function(position) {
|
||||
if (! pressed) {progressBar.value = position}
|
||||
player.positionChanged.connect(function (position) {
|
||||
if (!pressed) {
|
||||
progressBar.value = position
|
||||
}
|
||||
})
|
||||
player.durationChanged.connect(function(duration) {
|
||||
player.durationChanged.connect(function (duration) {
|
||||
progressBar.to = duration
|
||||
})
|
||||
player.cachedDurationChanged.connect(function(duration) {
|
||||
player.cachedDurationChanged.connect(function (duration) {
|
||||
cachedLength.value = progressBar.value + duration
|
||||
})
|
||||
}
|
||||
|
@ -153,7 +157,8 @@ Item {
|
|||
color: appearance.progressBackgroundColor
|
||||
ProgressBar {
|
||||
id: cachedLength
|
||||
background: Item {}
|
||||
background: Item {
|
||||
}
|
||||
contentItem: Item {
|
||||
Rectangle {
|
||||
width: cachedLength.visualPosition * parent.width
|
||||
|
@ -174,10 +179,12 @@ Item {
|
|||
value: progressBar.value
|
||||
opacity: 1
|
||||
anchors.leftMargin: 0
|
||||
background: Item {}
|
||||
background: Item {
|
||||
}
|
||||
contentItem: Item {
|
||||
Rectangle {
|
||||
width: progressLength.visualPosition * parent.width + progressBar.handle.width / 2
|
||||
width: progressLength.visualPosition * parent.width
|
||||
+ progressBar.handle.width / 2
|
||||
height: parent.height
|
||||
color: appearance.progressSliderColor
|
||||
Image {
|
||||
|
@ -217,186 +224,193 @@ Item {
|
|||
}
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
id: layout
|
||||
anchors.fill: parent
|
||||
spacing: 2
|
||||
RowLayout {
|
||||
id: layout
|
||||
anchors.fill: parent
|
||||
spacing: 2
|
||||
|
||||
|
||||
Button {
|
||||
id: playlistPrevButton
|
||||
objectName: "playlistPrevButton"
|
||||
icon.source: "icons/prev.svg"
|
||||
icon.color: appearance.buttonColor
|
||||
display: AbstractButton.IconOnly
|
||||
visible: false
|
||||
width: visible ? playPauseButton.width : 0
|
||||
onClicked: {
|
||||
player.playerCommand(Enums.Commands.PreviousPlaylistItem)
|
||||
Button {
|
||||
id: playlistPrevButton
|
||||
objectName: "playlistPrevButton"
|
||||
icon.source: "icons/prev.svg"
|
||||
icon.color: appearance.buttonColor
|
||||
display: AbstractButton.IconOnly
|
||||
visible: false
|
||||
width: visible ? playPauseButton.width : 0
|
||||
onClicked: {
|
||||
player.playerCommand(Enums.Commands.PreviousPlaylistItem)
|
||||
}
|
||||
background: Item {
|
||||
}
|
||||
Component.onCompleted: {
|
||||
player.playlistPositionChanged.connect(function (position) {
|
||||
if (position != 0) {
|
||||
visible = true
|
||||
} else {
|
||||
visible = false
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
background: Item {}
|
||||
Component.onCompleted: {
|
||||
player.playlistPositionChanged.connect(function(position) {
|
||||
if (position != 0 ) {
|
||||
visible = true
|
||||
} else {
|
||||
visible = false
|
||||
|
||||
Button {
|
||||
id: playPauseButton
|
||||
icon.source: "icons/pause.svg"
|
||||
icon.color: appearance.buttonColor
|
||||
display: AbstractButton.IconOnly
|
||||
onClicked: {
|
||||
player.playerCommand(Enums.Commands.TogglePlayPause)
|
||||
}
|
||||
background: Item {
|
||||
}
|
||||
Component.onCompleted: {
|
||||
player.playStatusChanged.connect(function (status) {
|
||||
if (status == Enums.PlayStatus.Playing) {
|
||||
icon.source = "qrc:/player/icons/pause.svg"
|
||||
} else if (status == Enums.PlayStatus.Paused) {
|
||||
icon.source = "qrc:/player/icons/play.svg"
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Button {
|
||||
id: playlistNextButton
|
||||
//icon.name: "next"
|
||||
icon.source: "icons/next.svg"
|
||||
icon.color: appearance.buttonColor
|
||||
display: AbstractButton.IconOnly
|
||||
onClicked: {
|
||||
player.playerCommand(Enums.Commands.NextPlaylistItem)
|
||||
}
|
||||
background: Item {
|
||||
}
|
||||
}
|
||||
|
||||
Button {
|
||||
id: volumeButton
|
||||
objectName: "volumeButton"
|
||||
icon.source: "icons/volume-up.svg"
|
||||
icon.color: appearance.buttonColor
|
||||
display: AbstractButton.IconOnly
|
||||
onClicked: {
|
||||
player.playerCommand(Enums.Commands.ToggleMute)
|
||||
}
|
||||
background: Item {
|
||||
}
|
||||
Component.onCompleted: {
|
||||
player.volumeStatusChanged.connect(function (status) {
|
||||
if (status == Enums.VolumeStatus.Muted) {
|
||||
volumeButton.icon.source = "qrc:/player/icons/volume-mute.svg"
|
||||
} else if (status == Enums.VolumeStatus.Low) {
|
||||
volumeButton.icon.source = "qrc:/player/icons/volume-down.svg"
|
||||
} else if (status == Enums.VolumeStatus.Normal) {
|
||||
volumeButton.icon.source = "qrc:/player/icons/volume-up.svg"
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Slider {
|
||||
id: volumeBar
|
||||
to: 100
|
||||
value: 100
|
||||
palette.dark: "#f00"
|
||||
|
||||
implicitWidth: Math.max(
|
||||
background ? background.implicitWidth : 0,
|
||||
(handle ? handle.implicitWidth : 0)
|
||||
+ leftPadding + rightPadding)
|
||||
implicitHeight: Math.max(
|
||||
background ? background.implicitHeight : 0,
|
||||
(handle ? handle.implicitHeight : 0)
|
||||
+ topPadding + bottomPadding)
|
||||
onMoved: {
|
||||
player.playerCommand(Enums.Commands.SetVolume,
|
||||
Math.round(volumeBar.value).toString())
|
||||
}
|
||||
Component.onCompleted: {
|
||||
player.volumeChanged.connect(function (volume) {
|
||||
volumeBar.value = volume
|
||||
})
|
||||
}
|
||||
handle: Rectangle {
|
||||
x: volumeBar.leftPadding + volumeBar.visualPosition
|
||||
* (volumeBar.availableWidth - width)
|
||||
y: volumeBar.topPadding + volumeBar.availableHeight / 2 - height / 2
|
||||
implicitWidth: 12
|
||||
implicitHeight: 12
|
||||
radius: 12
|
||||
color: "#f6f6f6"
|
||||
border.color: "#f6f6f6"
|
||||
}
|
||||
|
||||
background: Rectangle {
|
||||
x: volumeBar.leftPadding
|
||||
y: volumeBar.topPadding + volumeBar.availableHeight / 2 - height / 2
|
||||
implicitWidth: 60
|
||||
implicitHeight: 3
|
||||
width: volumeBar.availableWidth
|
||||
height: implicitHeight
|
||||
color: "#33333311"
|
||||
Rectangle {
|
||||
width: volumeBar.visualPosition * parent.width
|
||||
height: parent.height
|
||||
color: "white"
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Button {
|
||||
id: playPauseButton
|
||||
icon.source: "icons/pause.svg"
|
||||
icon.color: appearance.buttonColor
|
||||
display: AbstractButton.IconOnly
|
||||
onClicked: {
|
||||
player.playerCommand(Enums.Commands.TogglePlayPause)
|
||||
}
|
||||
background: Item {}
|
||||
Component.onCompleted: {
|
||||
player.playStatusChanged.connect(function(status) {
|
||||
if (status == Enums.PlayStatus.Playing) {
|
||||
icon.source = "qrc:/player/icons/pause.svg"
|
||||
} else if (status == Enums.PlayStatus.Paused) {
|
||||
icon.source = "qrc:/player/icons/play.svg"
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Button {
|
||||
id: playlistNextButton
|
||||
//icon.name: "next"
|
||||
icon.source: "icons/next.svg"
|
||||
icon.color: appearance.buttonColor
|
||||
display: AbstractButton.IconOnly
|
||||
onClicked: {
|
||||
player.playerCommand(Enums.Commands.NextPlaylistItem)
|
||||
}
|
||||
background: Item {}
|
||||
}
|
||||
|
||||
Button {
|
||||
id: volumeButton
|
||||
objectName: "volumeButton"
|
||||
icon.source: "icons/volume-up.svg"
|
||||
icon.color: appearance.buttonColor
|
||||
display: AbstractButton.IconOnly
|
||||
onClicked: {
|
||||
player.playerCommand(Enums.Commands.ToggleMute)
|
||||
}
|
||||
background: Item {}
|
||||
Component.onCompleted: {
|
||||
player.volumeStatusChanged.connect(function(status) {
|
||||
if (status == Enums.VolumeStatus.Muted) {
|
||||
volumeButton.icon.source = "qrc:/player/icons/volume-mute.svg"
|
||||
} else if (status == Enums.VolumeStatus.Low) {
|
||||
volumeButton.icon.source = "qrc:/player/icons/volume-down.svg"
|
||||
} else if (status == Enums.VolumeStatus.Normal) {
|
||||
volumeButton.icon.source = "qrc:/player/icons/volume-up.svg"
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Slider {
|
||||
id: volumeBar
|
||||
to: 100
|
||||
value: 100
|
||||
palette.dark: "#f00"
|
||||
|
||||
implicitWidth: Math.max(
|
||||
background ? background.implicitWidth : 0,
|
||||
(handle ? handle.implicitWidth : 0)
|
||||
+ leftPadding + rightPadding)
|
||||
implicitHeight: Math.max(
|
||||
background ? background.implicitHeight : 0,
|
||||
(handle ? handle.implicitHeight : 0)
|
||||
+ topPadding + bottomPadding)
|
||||
onMoved: {
|
||||
player.playerCommand(Enums.Commands.SetVolume, Math.round(volumeBar.value).toString())
|
||||
}
|
||||
Component.onCompleted: {
|
||||
player.volumeChanged.connect(function(volume) {
|
||||
volumeBar.value = volume
|
||||
})
|
||||
}
|
||||
handle: Rectangle {
|
||||
x: volumeBar.leftPadding + volumeBar.visualPosition
|
||||
* (volumeBar.availableWidth - width)
|
||||
y: volumeBar.topPadding + volumeBar.availableHeight / 2 - height / 2
|
||||
implicitWidth: 12
|
||||
implicitHeight: 12
|
||||
radius: 12
|
||||
color: "#f6f6f6"
|
||||
border.color: "#f6f6f6"
|
||||
}
|
||||
}
|
||||
|
||||
background: Rectangle {
|
||||
x: volumeBar.leftPadding
|
||||
y: volumeBar.topPadding + volumeBar.availableHeight / 2 - height / 2
|
||||
implicitWidth: 60
|
||||
implicitHeight: 3
|
||||
width: volumeBar.availableWidth
|
||||
height: implicitHeight
|
||||
color: "#33333311"
|
||||
Rectangle {
|
||||
width: volumeBar.visualPosition * parent.width
|
||||
height: parent.height
|
||||
color: "white"
|
||||
Text {
|
||||
id: timeLabel
|
||||
objectName: "timeLabel"
|
||||
text: "0:00 / 0:00"
|
||||
color: "white"
|
||||
padding: 2
|
||||
font.family: appearance.fontName
|
||||
font.pixelSize: 14
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
renderType: Text.NativeRendering
|
||||
Component.onCompleted: {
|
||||
player.durationStringChanged.connect(
|
||||
function (durationString) {
|
||||
text = durationString
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Item {
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
|
||||
Button {
|
||||
id: settingsButton
|
||||
//icon.name: "settings"
|
||||
icon.source: "icons/settings.svg"
|
||||
icon.color: appearance.buttonColor
|
||||
Layout.alignment: Qt.AlignVCenter | Qt.AlignRight
|
||||
display: AbstractButton.IconOnly
|
||||
onClicked: {
|
||||
console.log("Settings Menu Not Yet Implemented.")
|
||||
}
|
||||
background: Item {
|
||||
}
|
||||
}
|
||||
|
||||
Button {
|
||||
id: fullscreenButton
|
||||
//icon.name: "fullscreen"
|
||||
icon.source: "icons/fullscreen.svg"
|
||||
icon.color: appearance.buttonColor
|
||||
Layout.alignment: Qt.AlignVCenter | Qt.AlignRight
|
||||
|
||||
display: AbstractButton.IconOnly
|
||||
onClicked: {
|
||||
toggleFullscreen()
|
||||
}
|
||||
|
||||
background: Item {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Text {
|
||||
id: timeLabel
|
||||
objectName: "timeLabel"
|
||||
text: "0:00 / 0:00"
|
||||
color: "white"
|
||||
padding: 2
|
||||
font.family: appearance.fontName
|
||||
font.pixelSize: 14
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
renderType: Text.NativeRendering
|
||||
Component.onCompleted: {
|
||||
player.durationStringChanged.connect(function(durationString) {
|
||||
text = durationString
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Item {
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
|
||||
Button {
|
||||
id: settingsButton
|
||||
//icon.name: "settings"
|
||||
icon.source: "icons/settings.svg"
|
||||
icon.color: appearance.buttonColor
|
||||
Layout.alignment: Qt.AlignVCenter | Qt.AlignRight
|
||||
display: AbstractButton.IconOnly
|
||||
onClicked: {
|
||||
console.log("Settings Menu Not Yet Implemented.")
|
||||
}
|
||||
background: Item {}
|
||||
}
|
||||
|
||||
Button {
|
||||
id: fullscreenButton
|
||||
//icon.name: "fullscreen"
|
||||
icon.source: "icons/fullscreen.svg"
|
||||
icon.color: appearance.buttonColor
|
||||
Layout.alignment: Qt.AlignVCenter | Qt.AlignRight
|
||||
|
||||
display: AbstractButton.IconOnly
|
||||
onClicked: {
|
||||
toggleFullscreen()
|
||||
}
|
||||
|
||||
background: Item {}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -14,7 +14,9 @@ MenuBar {
|
|||
height: Screen.height / 32
|
||||
function anythingOpen() {
|
||||
for (var i = 0, len = menuBar.count; i < len; i++) {
|
||||
if (menuBar.menuAt(i).opened) { return true }
|
||||
if (menuBar.menuAt(i).opened) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -101,7 +103,8 @@ MenuBar {
|
|||
title: translate.getTranslation("OPEN_FILE", i18n.language)
|
||||
nameFilters: ["All files (*)"]
|
||||
onAccepted: {
|
||||
player.playerCommand(Enums.Commands.LoadFile, String(fileDialog.file))
|
||||
player.playerCommand(Enums.Commands.LoadFile,
|
||||
String(fileDialog.file))
|
||||
fileDialog.close()
|
||||
}
|
||||
onRejected: {
|
||||
|
@ -124,87 +127,8 @@ MenuBar {
|
|||
}
|
||||
}
|
||||
|
||||
Dialog {
|
||||
PlaylistDialog {
|
||||
id: playlistDialog
|
||||
title: "Playlist"
|
||||
height: 480
|
||||
width: 720
|
||||
modality: Qt.NonModal
|
||||
|
||||
onAccepted: {
|
||||
console.log("ok")
|
||||
}
|
||||
Component.onCompleted: {
|
||||
player.titleChanged.connect(updatePlaylistMenu)
|
||||
player.playlistChanged.connect(updatePlaylistMenu)
|
||||
}
|
||||
function updatePlaylistMenu() {
|
||||
var playlist = player.playerCommand(Enums.Commands.GetPlaylist)
|
||||
playlistModel.clear()
|
||||
for (var thing in playlist) {
|
||||
var item = playlist[thing]
|
||||
playlistModel.append({
|
||||
"playlistItemTitle": item["title"],
|
||||
"playlistItemFilename": item["filename"],
|
||||
"current": item["current"],
|
||||
"playlistPos": thing
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Component {
|
||||
id: playlistDelegate
|
||||
Item {
|
||||
id: playlistItem
|
||||
width: playlistDialog.width; height: 0
|
||||
Button {
|
||||
height: parent.height
|
||||
id: playlistItemButton
|
||||
font.pixelSize: 12
|
||||
contentItem: Text {
|
||||
id: playlistItemText
|
||||
font: parent.font
|
||||
color: "white"
|
||||
text: playlistItemButton.text
|
||||
height: parent.height
|
||||
horizontalAlignment: Text.AlignLeft
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
elide: Text.ElideRight
|
||||
}
|
||||
|
||||
onClicked: {
|
||||
player.playerCommand(Enums.Commands.SetPlaylistPos, playlistPos)
|
||||
}
|
||||
background: Rectangle { color: current ? "orange" : "transparent" }
|
||||
}
|
||||
|
||||
|
||||
Component.onCompleted: {
|
||||
var itemText = ""
|
||||
if (typeof playlistItemTitle !== "undefined") {
|
||||
itemText += '<b>Title:</b> ' + playlistItemTitle + "<br>"
|
||||
playlistItem.height += 30
|
||||
}
|
||||
if (typeof playlistItemFilename !== "undefined") {
|
||||
itemText += '<b>Filename:</b> ' + playlistItemFilename + "<br>"
|
||||
playlistItem.height += 30
|
||||
}
|
||||
playlistItemText.text = itemText
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ListView {
|
||||
id: playlistListView
|
||||
anchors.fill: parent
|
||||
model: ListModel { id: playlistModel }
|
||||
delegate: playlistDelegate
|
||||
highlight: Item {}
|
||||
focus: true
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
delegate: MenuBarItem {
|
||||
|
@ -423,7 +347,8 @@ MenuBar {
|
|||
player.audioDevicesChanged.connect(updateAudioDevices)
|
||||
}
|
||||
function updateAudioDevices() {
|
||||
var audioDevices = player.playerCommand(Enums.Commands.GetAudioDevices)
|
||||
var audioDevices = player.playerCommand(
|
||||
Enums.Commands.GetAudioDevices)
|
||||
|
||||
for (var i = 0, len = audioDeviceMenu.count; i < len; i++) {
|
||||
audioDeviceMenu.takeAction(0)
|
||||
|
@ -564,8 +489,7 @@ MenuBar {
|
|||
}
|
||||
}
|
||||
Action {
|
||||
text: translate.getTranslation("PLAYLIST_MENU",
|
||||
i18n.language)
|
||||
text: translate.getTranslation("PLAYLIST_MENU", i18n.language)
|
||||
onTriggered: {
|
||||
playlistDialog.open()
|
||||
}
|
||||
|
|
91
src/qml/PlaylistDialog.qml
Normal file
91
src/qml/PlaylistDialog.qml
Normal file
|
@ -0,0 +1,91 @@
|
|||
import QtQuick 2.11
|
||||
import QtQuick.Controls 2.4
|
||||
import QtQuick.Dialogs 1.3
|
||||
import QtQuick.Window 2.11
|
||||
import Qt.labs.settings 1.0
|
||||
import Qt.labs.platform 1.0 as LabsPlatform
|
||||
import player 1.0
|
||||
|
||||
Dialog {
|
||||
id: playlistDialog
|
||||
title: "Playlist"
|
||||
height: Math.max(480, childrenRect.height * playlistListView.count)
|
||||
width: 720
|
||||
modality: Qt.NonModal
|
||||
Component.onCompleted: {
|
||||
player.titleChanged.connect(updatePlaylistMenu)
|
||||
player.playlistChanged.connect(updatePlaylistMenu)
|
||||
}
|
||||
function updatePlaylistMenu() {
|
||||
var playlist = player.playerCommand(Enums.Commands.GetPlaylist)
|
||||
playlistModel.clear()
|
||||
for (var thing in playlist) {
|
||||
var item = playlist[thing]
|
||||
playlistModel.append({
|
||||
playlistItemTitle: item["title"],
|
||||
playlistItemFilename: item["filename"],
|
||||
current: item["current"],
|
||||
playlistPos: thing
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Component {
|
||||
id: playlistDelegate
|
||||
Item {
|
||||
id: playlistItem
|
||||
width: playlistDialog.width
|
||||
height: childrenRect.height
|
||||
Button {
|
||||
width: parent.width
|
||||
id: playlistItemButton
|
||||
font.pixelSize: 12
|
||||
padding: 0
|
||||
bottomPadding: 0
|
||||
contentItem: Text {
|
||||
id: playlistItemText
|
||||
font: parent.font
|
||||
bottomPadding: 0
|
||||
color: "white"
|
||||
text: playlistItemButton.text
|
||||
height: parent.height
|
||||
horizontalAlignment: Text.AlignLeft
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
elide: Text.ElideRight
|
||||
wrapMode: Text.Wrap
|
||||
}
|
||||
|
||||
onClicked: {
|
||||
player.playerCommand(Enums.Commands.SetPlaylistPos,
|
||||
playlistPos)
|
||||
}
|
||||
background: Rectangle {
|
||||
color: current ? "orange" : "transparent"
|
||||
}
|
||||
}
|
||||
|
||||
Component.onCompleted: {
|
||||
var itemText = ""
|
||||
if (typeof playlistItemTitle !== "undefined") {
|
||||
itemText += '<b>Title:</b> ' + playlistItemTitle + "<br>"
|
||||
}
|
||||
if (typeof playlistItemFilename !== "undefined") {
|
||||
itemText += '<b>Filename:</b> ' + playlistItemFilename
|
||||
}
|
||||
playlistItemText.text = itemText
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ListView {
|
||||
id: playlistListView
|
||||
anchors.fill: parent
|
||||
model: ListModel {
|
||||
id: playlistModel
|
||||
}
|
||||
delegate: playlistDelegate
|
||||
highlight: Item {
|
||||
}
|
||||
focus: true
|
||||
}
|
||||
}
|
198
src/qml/main.qml
198
src/qml/main.qml
|
@ -19,85 +19,84 @@ ApplicationWindow {
|
|||
id: translate
|
||||
}
|
||||
|
||||
Settings {
|
||||
id: appearance
|
||||
category: "Appearance"
|
||||
property bool titleOnlyOnFullscreen: true
|
||||
property bool clickToPause: true
|
||||
property bool useMpvSubs: false
|
||||
property string fontName: "Roboto"
|
||||
property string mainBackground: "#9C000000"
|
||||
property string progressBackgroundColor: "#3CFFFFFF"
|
||||
property string progressCachedColor: "white"
|
||||
property string buttonColor: "white"
|
||||
property string progressSliderColor: "red"
|
||||
}
|
||||
Settings {
|
||||
id: i18n
|
||||
category: "I18N"
|
||||
property string language: "english"
|
||||
}
|
||||
Settings {
|
||||
id: appearance
|
||||
category: "Appearance"
|
||||
property bool titleOnlyOnFullscreen: true
|
||||
property bool clickToPause: true
|
||||
property bool useMpvSubs: false
|
||||
property string fontName: "Roboto"
|
||||
property string mainBackground: "#9C000000"
|
||||
property string progressBackgroundColor: "#3CFFFFFF"
|
||||
property string progressCachedColor: "white"
|
||||
property string buttonColor: "white"
|
||||
property string progressSliderColor: "red"
|
||||
}
|
||||
Settings {
|
||||
id: i18n
|
||||
category: "I18N"
|
||||
property string language: "english"
|
||||
}
|
||||
|
||||
Settings {
|
||||
id: fun
|
||||
category: "Fun"
|
||||
property bool nyanCat: false
|
||||
}
|
||||
|
||||
Settings {
|
||||
id: keybinds
|
||||
category: "Keybinds"
|
||||
property string playPause: "K"
|
||||
property string forward10: "L"
|
||||
property string rewind10: "J"
|
||||
property string forward5: "Right"
|
||||
property string rewind5: "Left"
|
||||
property string openFile: "Ctrl+O"
|
||||
property string openURI: "Ctrl+Shift+O"
|
||||
property string quit: "Ctrl+Q"
|
||||
property string fullscreen: "F"
|
||||
property string tracks: "Ctrl+T"
|
||||
property string statsForNerds: "I"
|
||||
property string forwardFrame: "."
|
||||
property string backwardFrame: ","
|
||||
property string cycleSub: "Alt+S"
|
||||
property string cycleSubBackwards: "Alt+Shift+S"
|
||||
property string cycleAudio: "A"
|
||||
property string cycleVideo: "V"
|
||||
property string cycleVideoAspect: "Shift+A"
|
||||
property string screenshot: "S"
|
||||
property string screenshotWithoutSubtitles: "Shift+S"
|
||||
property string fullScreenshot: "Ctrl+S"
|
||||
property string nyanCat: "Ctrl+N"
|
||||
property string decreaseSpeedByPointOne: "["
|
||||
property string increaseSpeedByPointOne: "]"
|
||||
property string halveSpeed: "{"
|
||||
property string doubleSpeed: "}"
|
||||
property string increaseVolume: "*"
|
||||
property string decreaseVolume: "/"
|
||||
property string mute: "m"
|
||||
property string customKeybind0: ""
|
||||
property string customKeybind0Command: ""
|
||||
property string customKeybind1: ""
|
||||
property string customKeybind1Command: ""
|
||||
property string customKeybind2: ""
|
||||
property string customKeybind2Command: ""
|
||||
property string customKeybind3: ""
|
||||
property string customKeybind3Command: ""
|
||||
property string customKeybind4: ""
|
||||
property string customKeybind4Command: ""
|
||||
property string customKeybind5: ""
|
||||
property string customKeybind5Command: ""
|
||||
property string customKeybind6: ""
|
||||
property string customKeybind6Command: ""
|
||||
property string customKeybind7: ""
|
||||
property string customKeybind7Command: ""
|
||||
property string customKeybind8: ""
|
||||
property string customKeybind8Command: ""
|
||||
property string customKeybind9: ""
|
||||
property string customKeybind9Command: ""
|
||||
}
|
||||
Settings {
|
||||
id: fun
|
||||
category: "Fun"
|
||||
property bool nyanCat: false
|
||||
}
|
||||
|
||||
Settings {
|
||||
id: keybinds
|
||||
category: "Keybinds"
|
||||
property string playPause: "K"
|
||||
property string forward10: "L"
|
||||
property string rewind10: "J"
|
||||
property string forward5: "Right"
|
||||
property string rewind5: "Left"
|
||||
property string openFile: "Ctrl+O"
|
||||
property string openURI: "Ctrl+Shift+O"
|
||||
property string quit: "Ctrl+Q"
|
||||
property string fullscreen: "F"
|
||||
property string tracks: "Ctrl+T"
|
||||
property string statsForNerds: "I"
|
||||
property string forwardFrame: "."
|
||||
property string backwardFrame: ","
|
||||
property string cycleSub: "Alt+S"
|
||||
property string cycleSubBackwards: "Alt+Shift+S"
|
||||
property string cycleAudio: "A"
|
||||
property string cycleVideo: "V"
|
||||
property string cycleVideoAspect: "Shift+A"
|
||||
property string screenshot: "S"
|
||||
property string screenshotWithoutSubtitles: "Shift+S"
|
||||
property string fullScreenshot: "Ctrl+S"
|
||||
property string nyanCat: "Ctrl+N"
|
||||
property string decreaseSpeedByPointOne: "["
|
||||
property string increaseSpeedByPointOne: "]"
|
||||
property string halveSpeed: "{"
|
||||
property string doubleSpeed: "}"
|
||||
property string increaseVolume: "*"
|
||||
property string decreaseVolume: "/"
|
||||
property string mute: "m"
|
||||
property string customKeybind0: ""
|
||||
property string customKeybind0Command: ""
|
||||
property string customKeybind1: ""
|
||||
property string customKeybind1Command: ""
|
||||
property string customKeybind2: ""
|
||||
property string customKeybind2Command: ""
|
||||
property string customKeybind3: ""
|
||||
property string customKeybind3Command: ""
|
||||
property string customKeybind4: ""
|
||||
property string customKeybind4Command: ""
|
||||
property string customKeybind5: ""
|
||||
property string customKeybind5Command: ""
|
||||
property string customKeybind6: ""
|
||||
property string customKeybind6Command: ""
|
||||
property string customKeybind7: ""
|
||||
property string customKeybind7Command: ""
|
||||
property string customKeybind8: ""
|
||||
property string customKeybind8Command: ""
|
||||
property string customKeybind9: ""
|
||||
property string customKeybind9Command: ""
|
||||
}
|
||||
|
||||
property int lastScreenVisibility
|
||||
|
||||
|
@ -120,7 +119,7 @@ ApplicationWindow {
|
|||
|
||||
function startPlayer() {
|
||||
console.log(player)
|
||||
console.log(typeof(player))
|
||||
console.log(typeof (player))
|
||||
var args = Qt.application.arguments
|
||||
var len = Qt.application.arguments.length
|
||||
var argNo = 0
|
||||
|
@ -149,18 +148,24 @@ ApplicationWindow {
|
|||
argument = argument.substr(2)
|
||||
if (argument.length > 0) {
|
||||
var splitArg = argument.split(/=(.+)/)
|
||||
if (splitArg[0] == "screen" || splitArg[0] == "fs-screen") {
|
||||
if (splitArg[0] == "screen"
|
||||
|| splitArg[0] == "fs-screen") {
|
||||
for (var i = 0, len = Qt.application.screens.length; i < len; i++) {
|
||||
var screen = Qt.application.screens[i];
|
||||
console.log("Screen Name: " + screen["name"] + " Screen Number: " + String(i))
|
||||
if (screen["name"] == splitArg[1] || String(i) == splitArg[1] ) {
|
||||
var screen = Qt.application.screens[i]
|
||||
console.log("Screen Name: " + screen["name"]
|
||||
+ " Screen Number: " + String(
|
||||
i))
|
||||
if (screen["name"] == splitArg[1] || String(
|
||||
i) == splitArg[1]) {
|
||||
console.log("Switching to screen: " + screen["name"])
|
||||
mainWindow.screen = screen
|
||||
mainWindow.width = mainWindow.screen.width / 2
|
||||
mainWindow.height = mainWindow.screen.height / 2
|
||||
mainWindow.x = mainWindow.screen.virtualX + mainWindow.width / 2
|
||||
mainWindow.y = mainWindow.screen.virtualY + mainWindow.height / 2
|
||||
if (splitArg[0] == "fs-screen" ) {
|
||||
mainWindow.x = mainWindow.screen.virtualX
|
||||
+ mainWindow.width / 2
|
||||
mainWindow.y = mainWindow.screen.virtualY
|
||||
+ mainWindow.height / 2
|
||||
if (splitArg[0] == "fs-screen") {
|
||||
toggleFullscreen()
|
||||
}
|
||||
continue
|
||||
|
@ -170,16 +175,17 @@ ApplicationWindow {
|
|||
}
|
||||
if (splitArg[0] == "fullscreen") {
|
||||
toggleFullscreen()
|
||||
continue;
|
||||
continue
|
||||
}
|
||||
if (splitArg[1] == undefined || splitArg[1].length == 0) {
|
||||
if (splitArg[1] == undefined
|
||||
|| splitArg[1].length == 0) {
|
||||
splitArg[1] = "yes"
|
||||
}
|
||||
player.setOption(splitArg[0], splitArg[1])
|
||||
|
||||
}
|
||||
} else {
|
||||
player.playerCommand(Enums.Commands.AppendFile, argument)
|
||||
player.playerCommand(Enums.Commands.AppendFile,
|
||||
argument)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -198,7 +204,6 @@ ApplicationWindow {
|
|||
mouseAreaPlayer.cursorShape = Qt.ArrowCursor
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Item {
|
||||
anchors.centerIn: player
|
||||
|
@ -239,7 +244,9 @@ ApplicationWindow {
|
|||
}
|
||||
Action {
|
||||
onTriggered: {
|
||||
if (mainWindow.visibility == Window.FullScreen) {toggleFullscreen()}
|
||||
if (mainWindow.visibility == Window.FullScreen) {
|
||||
toggleFullscreen()
|
||||
}
|
||||
}
|
||||
shortcut: "Esc"
|
||||
}
|
||||
|
@ -259,7 +266,7 @@ ApplicationWindow {
|
|||
}
|
||||
Timer {
|
||||
id: mouseAreaPlayerTimer
|
||||
interval: 2000
|
||||
interval: 1000
|
||||
running: true
|
||||
repeat: false
|
||||
onTriggered: {
|
||||
|
@ -272,7 +279,6 @@ ApplicationWindow {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
MainMenu {
|
||||
id: menuBar
|
||||
visible: player.controlsShowing
|
||||
|
@ -305,9 +311,11 @@ ApplicationWindow {
|
|||
font.pixelSize: 14
|
||||
font.bold: true
|
||||
opacity: 1
|
||||
visible: player.controlsShowing && ((!appearance.titleOnlyOnFullscreen) || (mainWindow.visibility == Window.FullScreen) )
|
||||
visible: player.controlsShowing
|
||||
&& ((!appearance.titleOnlyOnFullscreen)
|
||||
|| (mainWindow.visibility == Window.FullScreen))
|
||||
Component.onCompleted: {
|
||||
player.titleChanged.connect(function(title) {
|
||||
player.titleChanged.connect(function (title) {
|
||||
text = title
|
||||
})
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<RCC>
|
||||
<qresource prefix="/player">
|
||||
<file>main.qml</file>
|
||||
<file>PlaylistDialog.qml</file>
|
||||
<file>CustomComboBox.qml</file>
|
||||
<file>CustomMenuItem.qml</file>
|
||||
<file>CustomMenu.qml</file>
|
||||
|
|
Loading…
Reference in a new issue