From f80433ebe507d3cd69ec8fd155a5787444a6c529 Mon Sep 17 00:00:00 2001 From: Aurelien Vaillant Date: Mon, 12 Aug 2024 15:14:19 +0200 Subject: [PATCH] Base jellyfin freebox application --- .gitignore | 72 ++++++++++++++++++++++++++++++++++++++++++++ Jellyfin.fbxproject | 27 +++++++++++++++++ Jellyfin.qml | 36 ++++++++++++++++++++++ TestUi.qml | 31 +++++++++++++++++++ icon.png | Bin 0 -> 10049 bytes manifest.json | 12 ++++++++ 6 files changed, 178 insertions(+) create mode 100644 .gitignore create mode 100644 Jellyfin.fbxproject create mode 100644 Jellyfin.qml create mode 100644 TestUi.qml create mode 100644 icon.png create mode 100644 manifest.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7b8dd04 --- /dev/null +++ b/.gitignore @@ -0,0 +1,72 @@ +# This file is used to ignore files which are generated +# ---------------------------------------------------------------------------- + +*~ +*.autosave +*.a +*.core +*.moc +*.o +*.obj +*.orig +*.rej +*.so +*.so.* +*_pch.h.cpp +*_resource.rc +*.qm +.#* +*.*# +core +!core/ +tags +.DS_Store +*.debug +Makefile* +*.prl +*.app +moc_*.cpp +ui_*.h +qrc_*.cpp +Thumbs.db +*.res +*.rc +/.qmake.cache +/.qmake.stash + +# qtcreator generated files +*.pro.user* + +# xemacs temporary files +*.flc + +# Vim temporary files +.*.swp + +# Visual Studio generated files +*.ib_pdb_index +*.idb +*.ilk +*.pdb +*.sln +*.suo +*.vcproj +*vcproj.*.*.user +*.ncb +*.sdf +*.opensdf +*.vcxproj +*vcxproj.* + +# MinGW generated files +*.Debug +*.Release + +# Python byte code +*.pyc + +# Binaries +# -------- +*.dll +*.exe + diff --git a/Jellyfin.fbxproject b/Jellyfin.fbxproject new file mode 100644 index 0000000..e3fa21d --- /dev/null +++ b/Jellyfin.fbxproject @@ -0,0 +1,27 @@ +import QmlProject 1.1 + +Project { + mainFile: "Jellyfin.qml" + + /* Include QML, JS, images, fonts from current directory and subdirectories */ + QmlFiles { + directory: "." + } + JavaScriptFiles { + directory: "." + } + ImageFiles { + directory: "." + } + Files { + filter: "qmldir;*.ttf;*.otf;*.woff" + directory: "." + recursive: true + } + Files { + filter: "manifest.json" + } + + /* List of plugin directories passed to QML runtime */ + // importPaths: [ "../libfbxqml" ] +} diff --git a/Jellyfin.qml b/Jellyfin.qml new file mode 100644 index 0000000..b8a8059 --- /dev/null +++ b/Jellyfin.qml @@ -0,0 +1,36 @@ +import QtQuick 2.5 +import fbx.application 1.0 + +Application { + Text { + id: title + focus: true + anchors.centerIn: parent + text: "Launch Jellyfin" + color: "white" + font.pixelSize: 50 + states: [ + State { + name: "rouge"; + PropertyChanges {target: title; color: "red" } + }, + State { + name: "bleu"; + PropertyChanges {target: title; color: "blue" } + } + ] + transitions: Transition { + SequentialAnimation { + ColorAnimation { duration: 500 } + } + } + Keys.onPressed: { + if(event.key == Qt.Key_Up) + title.state = "rouge" + else if(event.key == Qt.Key_Down) + title.state = "bleu" + else if(event.key == Qt.Key_Return) + title.color = "purple" + } + } +} diff --git a/TestUi.qml b/TestUi.qml new file mode 100644 index 0000000..67de712 --- /dev/null +++ b/TestUi.qml @@ -0,0 +1,31 @@ +import QtQuick 2.15 +import QtQuick.Controls 2.15 + +Application { + Column { + anchors.centerIn: parent + spacing: 20 + + TextField { + id: loginField + placeholderText: "Enter username" + width: parent.width * 0.8 + } + + PasswordField { + id: passwordField + placeholderText: "Enter password" + width: parent.width * 0.8 + } + + Button { + text: "Login" + width: parent.width * 0.8 + onClicked: { + // Action à effectuer lors du clic sur le bouton + console.log("Login: " + loginField.text) + console.log("Password: " + passwordField.text) + } + } + } +} diff --git a/icon.png b/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1135355da47ec0780f9b5e386a0fb8ce9927f81c GIT binary patch literal 10049 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 literal 0 HcmV?d00001 diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..6779215 --- /dev/null +++ b/manifest.json @@ -0,0 +1,12 @@ +{ + "name": "Jellyfin", + "identifier": "com.stilobique.jellyfin", + "description": "Jellyfin for Freebox", + "icon": "icon.png", + "entryPoints": { + "main": { + "file": "Jellyfin.qml", + "default": true + } + } +}