Work on settings menu.
This commit is contained in:
parent
2f5a451c10
commit
ada2899ead
161
src/qml/Dialogs/SettingsDialog.qml
Normal file
161
src/qml/Dialogs/SettingsDialog.qml
Normal file
|
@ -0,0 +1,161 @@
|
||||||
|
import QtQuick 2.0
|
||||||
|
import QtQuick.Controls 2.3
|
||||||
|
import QtQuick.Dialogs 1.3
|
||||||
|
import QtQuick.Layouts 1.14
|
||||||
|
import QtQuick.Window 2.2
|
||||||
|
import player 1.0
|
||||||
|
|
||||||
|
Dialog {
|
||||||
|
id: settingsDialog
|
||||||
|
title: translate.getTranslation("SETTINGS", i18n.language)
|
||||||
|
height: Math.max(480, childrenRect.height)
|
||||||
|
width: 720
|
||||||
|
modality: Qt.NonModal
|
||||||
|
ScrollView {
|
||||||
|
id: content
|
||||||
|
height: parent.height
|
||||||
|
width: parent.width
|
||||||
|
clip: true
|
||||||
|
ScrollBar.vertical.policy: ScrollBar.AlwaysOn
|
||||||
|
Item {
|
||||||
|
id: settingsContent
|
||||||
|
implicitHeight: childrenRect.height
|
||||||
|
implicitWidth: childrenRect.width
|
||||||
|
ColumnLayout {
|
||||||
|
Text {
|
||||||
|
height: 30
|
||||||
|
text: translate.getTranslation("LANGUAGE", i18n.language)
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
}
|
||||||
|
LanguageSettings { Layout.leftMargin: 30 }
|
||||||
|
Text {
|
||||||
|
height: 30
|
||||||
|
text: translate.getTranslation("APPEARANCE", i18n.language)
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
}
|
||||||
|
CheckBox {
|
||||||
|
checked: appearance.titleOnlyOnFullscreen
|
||||||
|
onClicked: appearance.titleOnlyOnFullscreen = !appearance.titleOnlyOnFullscreen
|
||||||
|
text: translate.getTranslation("TITLE_ONLY_ON_FULLSCREEN", i18n.language)
|
||||||
|
Layout.leftMargin: 30
|
||||||
|
}
|
||||||
|
CheckBox {
|
||||||
|
checked: appearance.clickToPause
|
||||||
|
onClicked: appearance.clickToPause = !appearance.clickToPause
|
||||||
|
text: translate.getTranslation("CLICK_TO_PAUSE", i18n.language)
|
||||||
|
Layout.leftMargin: 30
|
||||||
|
}
|
||||||
|
CheckBox {
|
||||||
|
checked: appearance.doubleTapToSeek
|
||||||
|
onClicked: appearance.doubleTapToSeek = !appearance.doubleTapToSeek
|
||||||
|
text: translate.getTranslation("DOUBLE_TAP_TO_SEEK", i18n.language)
|
||||||
|
Layout.leftMargin: 30
|
||||||
|
}
|
||||||
|
Item {
|
||||||
|
Layout.leftMargin: 30
|
||||||
|
Layout.bottomMargin: 10
|
||||||
|
height: 30
|
||||||
|
Text {
|
||||||
|
id: seekByLabel
|
||||||
|
height: 30
|
||||||
|
text: translate.getTranslation("DOUBLE_TAP_TO_SEEK_BY", i18n.language)
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
}
|
||||||
|
TextField {
|
||||||
|
id: seekBy
|
||||||
|
anchors.left: seekByLabel.right
|
||||||
|
anchors.leftMargin: 10
|
||||||
|
validator: IntValidator {}
|
||||||
|
inputMethodHints: Qt.ImhFormattedNumbersOnly
|
||||||
|
text: appearance.doubleTapToSeekBy
|
||||||
|
function setSeekBy() {
|
||||||
|
appearance.doubleTapToSeekBy = parseInt(seekBy.text)
|
||||||
|
}
|
||||||
|
onEditingFinished: setSeekBy()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Item {
|
||||||
|
height: 30
|
||||||
|
Layout.bottomMargin: 10
|
||||||
|
Layout.leftMargin: 30
|
||||||
|
Text {
|
||||||
|
id: fontLabel
|
||||||
|
height: 30
|
||||||
|
text: translate.getTranslation("FONT", i18n.language)
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
}
|
||||||
|
TextField {
|
||||||
|
id: fontInput
|
||||||
|
anchors.left: fontLabel.right
|
||||||
|
anchors.leftMargin: 10
|
||||||
|
text: appearance.fontName
|
||||||
|
function setFont() {
|
||||||
|
appearance.fontName = fontInput.text
|
||||||
|
}
|
||||||
|
onEditingFinished: setFont()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Item {
|
||||||
|
Layout.leftMargin: 30
|
||||||
|
Layout.bottomMargin: 10
|
||||||
|
height: 30
|
||||||
|
Text {
|
||||||
|
id: subtitlesFontSizeLabel
|
||||||
|
height: 30
|
||||||
|
text: translate.getTranslation("SUBTITLES_FONT_SIZE", i18n.language)
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
}
|
||||||
|
TextField {
|
||||||
|
id: subtitlesFontSizeInput
|
||||||
|
anchors.left: subtitlesFontSizeLabel.right
|
||||||
|
anchors.leftMargin: 10
|
||||||
|
validator: IntValidator {}
|
||||||
|
inputMethodHints: Qt.ImhFormattedNumbersOnly
|
||||||
|
text: appearance.subtitlesFontSize
|
||||||
|
function setSubtitlesFontSize() {
|
||||||
|
appearance.subtitlesFontSize = parseInt(subtitlesFontSizeInput.text)
|
||||||
|
}
|
||||||
|
onEditingFinished: setSubtitlesFontSize()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Item {
|
||||||
|
Layout.leftMargin: 30
|
||||||
|
Layout.bottomMargin: 10
|
||||||
|
height: 30
|
||||||
|
Text {
|
||||||
|
id: uiFadeTimeLabel
|
||||||
|
height: 30
|
||||||
|
text: translate.getTranslation("UI_FADE_TIME", i18n.language)
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
}
|
||||||
|
TextField {
|
||||||
|
id: uiFadeTimeInput
|
||||||
|
anchors.left: uiFadeTimeLabel.right
|
||||||
|
anchors.leftMargin: 10
|
||||||
|
validator: IntValidator { bottom: 0 }
|
||||||
|
inputMethodHints: Qt.ImhFormattedNumbersOnly
|
||||||
|
text: appearance.uiFadeTimer
|
||||||
|
function setUIFadeTime() {
|
||||||
|
appearance.uiFadeTimer = parseInt(uiFadeTimeInput.text)
|
||||||
|
}
|
||||||
|
onEditingFinished: setUIFadeTime()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Component.onCompleted: {
|
||||||
|
settingsDialog.open()
|
||||||
|
}
|
||||||
|
Connections {
|
||||||
|
target: settingsDialog
|
||||||
|
onAccepted: {
|
||||||
|
seekBy.setSeekBy()
|
||||||
|
fontInput.setFont()
|
||||||
|
subtitlesFontSizeInput.setSubtitlesFontSize()
|
||||||
|
uiFadeTimeInput.setUIFadeTime()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
30
src/qml/Dialogs/SettingsItems/LanguageSettings.qml
Normal file
30
src/qml/Dialogs/SettingsItems/LanguageSettings.qml
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
import QtQuick 2.0
|
||||||
|
import QtQuick.Controls 2.3
|
||||||
|
import "translations.js" as Translations
|
||||||
|
|
||||||
|
ComboBox {
|
||||||
|
id: languageSelector
|
||||||
|
height: 30
|
||||||
|
editable: false
|
||||||
|
pressed: true
|
||||||
|
model: Object.values(Translations.languages)
|
||||||
|
delegate: ItemDelegate {
|
||||||
|
height: 25
|
||||||
|
width: languageSelector.width
|
||||||
|
contentItem: Text {
|
||||||
|
text: modelData
|
||||||
|
color: "#21be2b"
|
||||||
|
font: languageSelector.font
|
||||||
|
elide: Text.ElideRight
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
}
|
||||||
|
highlighted: languageSelector.highlightedIndex === index
|
||||||
|
}
|
||||||
|
onActivated: {
|
||||||
|
console.warn(currentText)
|
||||||
|
i18n.language = Object.keys(Translations.languages).find(key => Translations.languages[key] === currentText)
|
||||||
|
}
|
||||||
|
Component.onCompleted: {
|
||||||
|
currentIndex = languageSelector.indexOfValue(Translations.languages[i18n.language])
|
||||||
|
}
|
||||||
|
}
|
|
@ -116,6 +116,10 @@ MenuBar {
|
||||||
id: playlistDialog
|
id: playlistDialog
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SettingsDialog {
|
||||||
|
id: settingsDialog
|
||||||
|
}
|
||||||
|
|
||||||
delegate: MenuBarItem {
|
delegate: MenuBarItem {
|
||||||
id: menuBarItem
|
id: menuBarItem
|
||||||
|
|
||||||
|
@ -469,6 +473,13 @@ MenuBar {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Action {
|
Action {
|
||||||
|
text: translate.getTranslation("SETTINGS", i18n.language)
|
||||||
|
onTriggered: {
|
||||||
|
settingsDialog.open()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Action {
|
||||||
|
// Pretty sure for legal reasons this is needed unless I buy a Qt License
|
||||||
text: translate.getTranslation("ABOUT_QT", i18n.language)
|
text: translate.getTranslation("ABOUT_QT", i18n.language)
|
||||||
onTriggered: {
|
onTriggered: {
|
||||||
utils.launchAboutQt()
|
utils.launchAboutQt()
|
||||||
|
|
|
@ -9,6 +9,9 @@ Item {
|
||||||
return "TranslationNotFound"
|
return "TranslationNotFound"
|
||||||
}
|
}
|
||||||
var text = String(Translations.translations[i18n.language][code])
|
var text = String(Translations.translations[i18n.language][code])
|
||||||
|
if (text == "undefined"){
|
||||||
|
console.warn(code, "missing for language", language)
|
||||||
|
}
|
||||||
var args = Array.prototype.slice.call(arguments, 1)
|
var args = Array.prototype.slice.call(arguments, 1)
|
||||||
var i = 0
|
var i = 0
|
||||||
return text.replace(/%s/g, function () {
|
return text.replace(/%s/g, function () {
|
||||||
|
|
|
@ -1,13 +1,19 @@
|
||||||
|
var languages = {
|
||||||
|
"english": "English",
|
||||||
|
"spanish": "Español",
|
||||||
|
"german": "Deutsch",
|
||||||
|
"french": "Française",
|
||||||
|
"italian": "Italiano",
|
||||||
|
"russian": "Русский",
|
||||||
|
"norwegian": "Norwegian",
|
||||||
|
}
|
||||||
|
|
||||||
var translations = {
|
var translations = {
|
||||||
english: {
|
english: {
|
||||||
SAVE_SCREENSHOT: "Save screenshot to",
|
|
||||||
OPEN_FILE: "Open file",
|
OPEN_FILE: "Open file",
|
||||||
URL_FILE_PATH: "URL / File Path",
|
URL_FILE_PATH: "URL / File Path",
|
||||||
FILE_MENU: "File",
|
FILE_MENU: "File",
|
||||||
OPEN_URL: "Open URL",
|
OPEN_URL: "Open URL",
|
||||||
SCREENSHOT: "Screenshot",
|
|
||||||
SCREENSHOT_WITHOUT_SUBTITLES: "Screenshot w/o Subtitles",
|
|
||||||
FULL_SCREENSHOT: "Full Screenshot",
|
|
||||||
EXIT: "Exit",
|
EXIT: "Exit",
|
||||||
PLAYBACK: "Playback",
|
PLAYBACK: "Playback",
|
||||||
PLAY_PAUSE: "Play/Pause",
|
PLAY_PAUSE: "Play/Pause",
|
||||||
|
@ -42,19 +48,24 @@ var translations = {
|
||||||
TOGGLE_ALWAYS_ON_TOP: "Toggle Always On Top",
|
TOGGLE_ALWAYS_ON_TOP: "Toggle Always On Top",
|
||||||
DISABLE_TRACK: "Disable Track",
|
DISABLE_TRACK: "Disable Track",
|
||||||
AUDIO_DEVICES: "Audio Devices",
|
AUDIO_DEVICES: "Audio Devices",
|
||||||
UPDATE: "Update",
|
|
||||||
PLAYLIST_MENU: "Playlist Menu",
|
PLAYLIST_MENU: "Playlist Menu",
|
||||||
THEME: "Theme"
|
THEME: "Theme",
|
||||||
|
SETTINGS: "Settings",
|
||||||
|
LANGUAGE: "Language",
|
||||||
|
APPEARANCE: "Appearance",
|
||||||
|
TITLE_ONLY_ON_FULLSCREEN: "Show title when only in fullscreen",
|
||||||
|
CLICK_TO_PAUSE: "Tap/Click to pause",
|
||||||
|
DOUBLE_TAP_TO_SEEK: "Double Tap/Click to seek",
|
||||||
|
DOUBLE_TAP_TO_SEEK_BY: "Seek by",
|
||||||
|
FONT: "Font",
|
||||||
|
SUBTITLES_FONT_SIZE: "Subtitles Font Size",
|
||||||
|
UI_FADE_TIME: "UI Fade Time (ms)"
|
||||||
},
|
},
|
||||||
spanish: {
|
spanish: {
|
||||||
SAVE_SCREENSHOT: "Guardar captura en",
|
|
||||||
OPEN_FILE: "Abrir archivo",
|
OPEN_FILE: "Abrir archivo",
|
||||||
URL_FILE_PATH: "URL / Dirección de archivo",
|
URL_FILE_PATH: "URL / Dirección de archivo",
|
||||||
FILE_MENU: "Archivo",
|
FILE_MENU: "Archivo",
|
||||||
OPEN_URL: "Abrir URL",
|
OPEN_URL: "Abrir URL",
|
||||||
SCREENSHOT: "Captura",
|
|
||||||
SCREENSHOT_WITHOUT_SUBTITLES: "Captura sin subtítulos",
|
|
||||||
FULL_SCREENSHOT: "Captura a pantalla completa",
|
|
||||||
EXIT: "Salir",
|
EXIT: "Salir",
|
||||||
PLAYBACK: "Volver a reproducir",
|
PLAYBACK: "Volver a reproducir",
|
||||||
PLAY_PAUSE: "Reproducir/Pausar",
|
PLAY_PAUSE: "Reproducir/Pausar",
|
||||||
|
@ -90,14 +101,10 @@ var translations = {
|
||||||
DISABLE_TRACK: "Eliminar pista"
|
DISABLE_TRACK: "Eliminar pista"
|
||||||
},
|
},
|
||||||
german: {
|
german: {
|
||||||
SAVE_SCREENSHOT: "Bildschirmfoto speichern nach",
|
|
||||||
OPEN_FILE: "Datei öffnen",
|
OPEN_FILE: "Datei öffnen",
|
||||||
URL_FILE_PATH: "URL / Datei Pfad",
|
URL_FILE_PATH: "URL / Datei Pfad",
|
||||||
FILE_MENU: "Datei",
|
FILE_MENU: "Datei",
|
||||||
OPEN_URL: "URL öffnen",
|
OPEN_URL: "URL öffnen",
|
||||||
SCREENSHOT: "Bildschirmfoto",
|
|
||||||
SCREENSHOT_WITHOUT_SUBTITLES: "Bildschirmfoto ohne Untertitel",
|
|
||||||
FULL_SCREENSHOT: "Voll Bildschirmfoto",
|
|
||||||
EXIT: "Beenden",
|
EXIT: "Beenden",
|
||||||
PLAYBACK: "Wiedergabe",
|
PLAYBACK: "Wiedergabe",
|
||||||
PLAY_PAUSE: "Wiedergabe/Pause",
|
PLAY_PAUSE: "Wiedergabe/Pause",
|
||||||
|
@ -133,14 +140,10 @@ var translations = {
|
||||||
DISABLE_TRACK: "Spur deaktivieren"
|
DISABLE_TRACK: "Spur deaktivieren"
|
||||||
},
|
},
|
||||||
french: {
|
french: {
|
||||||
SAVE_SCREENSHOT: "Enregistrer la capture d'écran dans",
|
|
||||||
OPEN_FILE: "Ouvrir le fichier",
|
OPEN_FILE: "Ouvrir le fichier",
|
||||||
URL_FILE_PATH: "URL / Chemin du fichier",
|
URL_FILE_PATH: "URL / Chemin du fichier",
|
||||||
FILE_MENU: "Fichier",
|
FILE_MENU: "Fichier",
|
||||||
OPEN_URL: "Ouvrir l'URL",
|
OPEN_URL: "Ouvrir l'URL",
|
||||||
SCREENSHOT: "Captude d'écran",
|
|
||||||
SCREENSHOT_WITHOUT_SUBTITLES: "Capture d'écran sans sous-titres",
|
|
||||||
FULL_SCREENSHOT: "Capture d'écran complète",
|
|
||||||
EXIT: "Fermer",
|
EXIT: "Fermer",
|
||||||
PLAYBACK: "Lecture",
|
PLAYBACK: "Lecture",
|
||||||
PLAY_PAUSE: "Jouer/Mettre en pause",
|
PLAY_PAUSE: "Jouer/Mettre en pause",
|
||||||
|
@ -174,17 +177,15 @@ var translations = {
|
||||||
TITLE: "Titre",
|
TITLE: "Titre",
|
||||||
TOGGLE_ALWAYS_ON_TOP: "Toujours au-dessu",
|
TOGGLE_ALWAYS_ON_TOP: "Toujours au-dessu",
|
||||||
DISABLE_TRACK: "Désactiver la piste",
|
DISABLE_TRACK: "Désactiver la piste",
|
||||||
AUDIO_DEVICES: "Périphériques audio"
|
AUDIO_DEVICES: "Périphériques audio",
|
||||||
|
PLAYLIST_MENU: "Menu de la liste de lecture",
|
||||||
|
THEME: "Thème"
|
||||||
},
|
},
|
||||||
italian: {
|
italian: {
|
||||||
SAVE_SCREENSHOT: "Salva schermata",
|
|
||||||
OPEN_FILE: "Apri file",
|
OPEN_FILE: "Apri file",
|
||||||
URL_FILE_PATH: "URL / Percorso file",
|
URL_FILE_PATH: "URL / Percorso file",
|
||||||
FILE_MENU: "File",
|
FILE_MENU: "File",
|
||||||
OPEN_URL: "Apri URL",
|
OPEN_URL: "Apri URL",
|
||||||
SCREENSHOT: "Cattura schermata",
|
|
||||||
SCREENSHOT_WITHOUT_SUBTITLES: "Cattura schermata senza Sottotitoli",
|
|
||||||
FULL_SCREENSHOT: "Cattura schermata completa",
|
|
||||||
EXIT: "Esci",
|
EXIT: "Esci",
|
||||||
PLAYBACK: "Riproduzione",
|
PLAYBACK: "Riproduzione",
|
||||||
PLAY_PAUSE: "Play/Pausa",
|
PLAY_PAUSE: "Play/Pausa",
|
||||||
|
@ -221,14 +222,10 @@ var translations = {
|
||||||
AUDIO_DEVICES: "Dispositivi audio"
|
AUDIO_DEVICES: "Dispositivi audio"
|
||||||
},
|
},
|
||||||
russian: {
|
russian: {
|
||||||
SAVE_SCREENSHOT: "Сохранить снимок экрана...",
|
|
||||||
OPEN_FILE: "Открыть...",
|
OPEN_FILE: "Открыть...",
|
||||||
URL_FILE_PATH: "Ввести URL / путь к файлу...",
|
URL_FILE_PATH: "Ввести URL / путь к файлу...",
|
||||||
FILE_MENU: "Файл",
|
FILE_MENU: "Файл",
|
||||||
OPEN_URL: "Открыть URL...",
|
OPEN_URL: "Открыть URL...",
|
||||||
SCREENSHOT: "Сделать снимок экрана...",
|
|
||||||
SCREENSHOT_WITHOUT_SUBTITLES: "Сделать снимок экрана без субтитров...",
|
|
||||||
FULL_SCREENSHOT: "Сделать полный скриншот окна",
|
|
||||||
EXIT: "Выход",
|
EXIT: "Выход",
|
||||||
PLAYBACK: "Воспроизведение",
|
PLAYBACK: "Воспроизведение",
|
||||||
PLAY_PAUSE: "Воспроизвести/Остановить",
|
PLAY_PAUSE: "Воспроизвести/Остановить",
|
||||||
|
@ -259,17 +256,14 @@ var translations = {
|
||||||
TOGGLE_NYAN_CAT: "Нян-кот",
|
TOGGLE_NYAN_CAT: "Нян-кот",
|
||||||
ABOUT: "О программе",
|
ABOUT: "О программе",
|
||||||
ABOUT_QT: "О используемой версии Qt...",
|
ABOUT_QT: "О используемой версии Qt...",
|
||||||
TITLE: "Заголовок"
|
TITLE: "Заголовок",
|
||||||
|
SETTINGS: "Настройки"
|
||||||
},
|
},
|
||||||
norwegian: {
|
norwegian: {
|
||||||
SAVE_SCREENSHOT: "Lagre Skjermdump Til",
|
|
||||||
OPEN_FILE: "Åpne Fil",
|
OPEN_FILE: "Åpne Fil",
|
||||||
URL_FILE_PATH: "Lenke / Filbane",
|
URL_FILE_PATH: "Lenke / Filbane",
|
||||||
FILE_MENU: "Fil",
|
FILE_MENU: "Fil",
|
||||||
OPEN_URL: "Åpne lenke",
|
OPEN_URL: "Åpne lenke",
|
||||||
SCREENSHOT: "Skjermdump",
|
|
||||||
SCREENSHOT_WITHOUT_SUBTITLES: "Skjermdump Uten Undertekster",
|
|
||||||
FULL_SCREENSHOT: "Full Skjermdump",
|
|
||||||
EXIT: "Avslutt",
|
EXIT: "Avslutt",
|
||||||
PLAYBACK: "Avspilling",
|
PLAYBACK: "Avspilling",
|
||||||
PLAY_PAUSE: "Spill/Pause",
|
PLAY_PAUSE: "Spill/Pause",
|
||||||
|
|
|
@ -8,8 +8,8 @@ Window {
|
||||||
id: mainWindow
|
id: mainWindow
|
||||||
title: "KittehPlayer"
|
title: "KittehPlayer"
|
||||||
visible: true
|
visible: true
|
||||||
width: 720
|
width: Math.min(720, Screen.width)
|
||||||
height: 480
|
height: Math.min(480, Screen.height)
|
||||||
property int virtualHeight: Screen.height * appearance.scaleFactor
|
property int virtualHeight: Screen.height * appearance.scaleFactor
|
||||||
property int virtualWidth: Screen.width * appearance.scaleFactor
|
property int virtualWidth: Screen.width * appearance.scaleFactor
|
||||||
property bool onTop: false
|
property bool onTop: false
|
||||||
|
|
|
@ -33,6 +33,8 @@
|
||||||
<file alias="ThumbnailProcess.qml">Items/ThumbnailProcess.qml</file>
|
<file alias="ThumbnailProcess.qml">Items/ThumbnailProcess.qml</file>
|
||||||
<file alias="TitleProcess.qml">Items/TitleProcess.qml</file>
|
<file alias="TitleProcess.qml">Items/TitleProcess.qml</file>
|
||||||
<file alias="CustomMenuItem.qml">Items/CustomMenuItem.qml</file>
|
<file alias="CustomMenuItem.qml">Items/CustomMenuItem.qml</file>
|
||||||
|
<file alias="SettingsDialog.qml">Dialogs/SettingsDialog.qml</file>
|
||||||
|
<file alias="LanguageSettings.qml">Dialogs/SettingsItems/LanguageSettings.qml</file>
|
||||||
<file alias="PlaylistDialog.qml">Dialogs/PlaylistDialog.qml</file>
|
<file alias="PlaylistDialog.qml">Dialogs/PlaylistDialog.qml</file>
|
||||||
<file>icons/YouTube/play.svg</file>
|
<file>icons/YouTube/play.svg</file>
|
||||||
<file>icons/YouTube/pause.svg</file>
|
<file>icons/YouTube/pause.svg</file>
|
||||||
|
|
Loading…
Reference in a new issue