diff --git a/CMakeLists.txt b/CMakeLists.txt index 8d69256..2f1493f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,7 +5,7 @@ set(APP_NAME ${PROJECT_NAME}) include(FeatureSummary) set(QT_MIN_VERSION 6.6.0) -set(KF_MIN_VERSION 6.00) +set(KF_MIN_VERSION 6.0.0) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) @@ -18,6 +18,9 @@ find_package(ECM ${KF_MIN_VERSION} REQUIRED NO_MODULE) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake) +set(QT_QML_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/qml) +set(QML_IMPORT_PATH ${QT_QML_OUTPUT_DIRECTORY} CACHE PATH "Extra QML import paths to make Qt Creator happy") + include(KDEInstallDirs) include(KDECMakeSettings) include(KDECompilerSettings NO_POLICY_SCOPE) @@ -30,15 +33,19 @@ kde_enable_exceptions() find_package(Qt6 ${QT_MIN_VERSION} REQUIRED NO_MODULE COMPONENTS Core Core5Compat Quick Test Gui Qml QuickControls2 Widgets Sql QmlImportScanner WebEngineQuick) find_package(KF6 ${KF_MIN_VERSION} REQUIRED COMPONENTS Kirigami CoreAddons I18n) +# find_package(KF6FileMetaData ${KF6_MIN_VERSION}) +# set_package_properties(KF6FileMetaData PROPERTIES TYPE REQUIRED +# URL "https://api.kde.org/frameworks/kfilemetadata/html/index.html") + find_package(FFmpeg) set_package_properties(FFmpeg PROPERTIES TYPE REQUIRED) -find_package(Libmpv) -set_package_properties(Libmpv PROPERTIES TYPE REQUIRED) +# find_package(Libmpv) +# set_package_properties(Libmpv PROPERTIES TYPE REQUIRED) -find_package(MpvQt) -set_package_properties(MpvQt PROPERTIES TYPE REQUIRED - URL "https://invent.kde.org/libraries/mpvqt") +# find_package(MpvQt) +# set_package_properties(MpvQt PROPERTIES TYPE REQUIRED +# URL "https://invent.kde.org/libraries/mpvqt") find_package(YouTubeDl) set_package_properties(YouTubeDl PROPERTIES TYPE RUNTIME) @@ -100,8 +107,9 @@ target_link_libraries(${APP_NAME}_lib INTERFACE KF6::Kirigami KF6::I18n KF6::CoreAddons - MpvQt::MpvQt - mpv + # KF6::FileMetaData + # MpvQt::MpvQt + # mpv ssl crypto ) diff --git a/shell.nix b/shell.nix index 81744d0..f3cdec9 100644 --- a/shell.nix +++ b/shell.nix @@ -36,6 +36,7 @@ mkShell rec { qt6.qtwebengine qt6.qtimageformats kdePackages.kirigami + # kdePackages.kfilemetadata # libsForQt5.breeze-icons # libsForQt5.breeze-qt5 kdePackages.qqc2-desktop-style diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e250740..11a45ee 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -14,8 +14,8 @@ target_sources(lumina # cpp/imagesqlmodel.cpp cpp/imagesqlmodel.h # cpp/filemanager.cpp cpp/filemanager.h # cpp/presentationsqlmodel.cpp cpp/presentationsqlmodel.h - cpp/mpv/mpvitem.h cpp/mpv/mpvitem.cpp - cpp/mpv/mpvproperties.h + # cpp/mpv/mpvitem.h cpp/mpv/mpvitem.cpp + # cpp/mpv/mpvproperties.h ) target_compile_options (lumina PUBLIC -fexceptions) diff --git a/src/main.cpp b/src/main.cpp index fe3af43..ab32b5b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -23,7 +23,7 @@ #include #include -#include +// #include #include #include @@ -38,8 +38,8 @@ #include #include -#include "cpp/mpv/mpvitem.h" -#include "cpp/mpv/mpvproperties.h" +// #include "cpp/mpv/mpvitem.h" +// #include "cpp/mpv/mpvproperties.h" // #include "cpp/serviceitemmodel.h" // #include "cpp/slidemodel.h" // #include "cpp/songsqlmodel.h" @@ -221,8 +221,8 @@ int main(int argc, char *argv[]) // apparently mpv needs this class set // let's register mpv as well std::setlocale(LC_NUMERIC, "C"); - qmlRegisterType("mpv", 1, 0, "MpvItem"); - qmlRegisterSingletonInstance("org.presenter", 1, 0, "MpvProperties", MpvProperties::self()); + // qmlRegisterType("mpv", 1, 0, "MpvItem"); + // qmlRegisterSingletonInstance("org.presenter", 1, 0, "MpvProperties", MpvProperties::self()); //register our models // qmlRegisterType("org.presenter", 1, 0, "SongProxyModel"); diff --git a/src/qml/main.qml b/src/qml/main.qml index bd31803..2881210 100644 --- a/src/qml/main.qml +++ b/src/qml/main.qml @@ -1,10 +1,10 @@ -import QtQuick 2.15 -import QtQuick.Dialogs 1.3 -import QtQuick.Controls 2.15 as Controls -import Qt.labs.platform 1.1 as Labs -import QtQuick.Window 2.15 -import QtQuick.Layouts 1.15 -import QtMultimedia 5.15 +import QtQuick +/* import QtQuick.Dialogs */ +import QtQuick.Controls as Controls +import Qt.labs.platform as Labs +import QtQuick.Window +import QtQuick.Layouts +import QtMultimedia /* import QtAudioEngine 1.15 */ import org.kde.kirigami 2.13 as Kirigami import "./presenter" as Presenter @@ -198,11 +198,11 @@ Kirigami.ApplicationWindow { anchors.fill: parent } - FileDialog { + Labs.FileDialog { id: saveFileDialog title: "Save" folder: shortcuts.home - /* fileMode: FileDialog.SaveFile */ + /* fileMode: Labs.FileDialog.SaveFile */ defaultSuffix: ".pres" selectExisting: false onAccepted: { @@ -218,11 +218,11 @@ Kirigami.ApplicationWindow { id: fileHelper } - FileDialog { + Labs.FileDialog { id: loadFileDialog title: "Load" folder: shortcuts.home - /* fileMode: FileDialog.SaveFile */ + /* fileMode: Labs.FileDialog.SaveFile */ defaultSuffix: ".pres" selectExisting: true onAccepted: { @@ -233,11 +233,11 @@ Kirigami.ApplicationWindow { } } - FileDialog { + Labs.FileDialog { id: soundFileDialog title: "Pick a Sound Effect" folder: shortcuts.home - /* fileMode: FileDialog.SaveFile */ + /* fileMode: Labs.FileDialog.SaveFile */ selectExisting: true onAccepted: { soundEffect = loadFileDialog.fileUrl; diff --git a/src/qml/presenter/Slide.qml b/src/qml/presenter/Slide.qml index c103a2a..99c436d 100644 --- a/src/qml/presenter/Slide.qml +++ b/src/qml/presenter/Slide.qml @@ -1,7 +1,7 @@ import QtQuick 2.15 import QtQuick.Controls 2.15 as Controls import QtQuick.Layouts 1.15 -import QtMultimedia 5.15 +import QtMultimedia /* import QtAudioEngine 1.15 */ import QtWebEngine 1.10 import QtGraphicalEffects 1.15 @@ -53,27 +53,14 @@ Item { anchors.fill: parent color: "black" - MpvObject { - id: mpv + Video { + id: video /* objectName: "mpv" */ anchors.fill: parent - useHwdec: true - enableAudio: !preview + /* useHwdec: true */ + muted: preview Component.onCompleted: mpvLoadingTimer.start() - onFileLoaded: { - /* showPassiveNotification(videoSource + " has been loaded"); */ - if (itemType == "song") { - mpv.setProperty("loop", "inf"); - } else if (vidLoop) { - mpv.setProperty("loop", "inf"); - } else { - mpv.setProperty("loop", "no"); - } - /* showPassiveNotification(mpv.getProperty("loop")); */ - mpv.setProperty("sid", "no"); - - } - /* onIsPlayingChanged: showPassiveNotification(mpv.getProperty("pause")) */ + loops: itemType == "song" ? MediaPlayer.Infinite : vidLoop ? MediaPlayer.Infinite : 1 MouseArea { id: playArea @@ -84,32 +71,32 @@ Item { } } - Timer { - id: mpvLoadingTimer - interval: 500 - onTriggered: { - /* showPassiveNotification("YIPPEEE!") */ - mpv.stop(); - if (vidStartTime > 0 && vidStartTime < vidEndTime) { - /* mpv.seek(vidStartTime); */ - let start = "+" + vidStartTime; - let end = "+" + vidEndTime; - mpv.setProperty("start", start); - mpv.setProperty("end", end); - Utils.dbg("Setting position to: " + mpv.position); - } else { - mpv.setProperty("start", "none"); - mpv.setProperty("end", "none"); - } - mpv.loadFile(videoSource.toString()); - Utils.dbg("Setting position to: " + vidStartTime + " and end is " + vidEndTime); - if (editMode) { - console.log("WHY AREN'T YOU PASUING!"); - pauseTimer.restart(); - } - blackTimer.restart(); - } - } + /* Timer { */ + /* id: mpvLoadingTimer */ + /* interval: 500 */ + /* onTriggered: { */ + /* /\* showPassiveNotification("YIPPEEE!") *\/ */ + /* mpv.stop(); */ + /* if (vidStartTime > 0 && vidStartTime < vidEndTime) { */ + /* /\* mpv.seek(vidStartTime); *\/ */ + /* let start = "+" + vidStartTime; */ + /* let end = "+" + vidEndTime; */ + /* mpv.setProperty("start", start); */ + /* mpv.setProperty("end", end); */ + /* Utils.dbg("Setting position to: " + mpv.position); */ + /* } else { */ + /* mpv.setProperty("start", "none"); */ + /* mpv.setProperty("end", "none"); */ + /* } */ + /* mpv.loadFile(videoSource.toString()); */ + /* Utils.dbg("Setting position to: " + vidStartTime + " and end is " + vidEndTime); */ + /* if (editMode) { */ + /* console.log("WHY AREN'T YOU PASUING!"); */ + /* pauseTimer.restart(); */ + /* } */ + /* blackTimer.restart(); */ + /* } */ + /* } */ Timer { id: pauseTimer @@ -132,13 +119,15 @@ Item { visible: false } - MpvObject { + MediaPlayer { id: audio - useHwdec: true - enableAudio: true + audioOutput: AudioOutput {} + /* useHwdec: true */ + /* enableAudio: true */ + // embeded mpv allows to set commandline propertys using the options/ // syntax. This could be abstracted later, but for now this works. - Component.onCompleted: audio.setProperty("options/audio-display", "no"); + /* Component.onCompleted: audio.setProperty("options/audio-display", "no"); */ } Image {