starting to build

This commit is contained in:
Chris Cochrun 2024-09-11 09:30:42 -05:00
parent 61aef5c48f
commit 7b82202c51
6 changed files with 75 additions and 77 deletions

View file

@ -5,7 +5,7 @@ set(APP_NAME ${PROJECT_NAME})
include(FeatureSummary) include(FeatureSummary)
set(QT_MIN_VERSION 6.6.0) 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 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON) 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(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(KDEInstallDirs)
include(KDECMakeSettings) include(KDECMakeSettings)
include(KDECompilerSettings NO_POLICY_SCOPE) 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(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(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) find_package(FFmpeg)
set_package_properties(FFmpeg PROPERTIES TYPE REQUIRED) set_package_properties(FFmpeg PROPERTIES TYPE REQUIRED)
find_package(Libmpv) # find_package(Libmpv)
set_package_properties(Libmpv PROPERTIES TYPE REQUIRED) # set_package_properties(Libmpv PROPERTIES TYPE REQUIRED)
find_package(MpvQt) # find_package(MpvQt)
set_package_properties(MpvQt PROPERTIES TYPE REQUIRED # set_package_properties(MpvQt PROPERTIES TYPE REQUIRED
URL "https://invent.kde.org/libraries/mpvqt") # URL "https://invent.kde.org/libraries/mpvqt")
find_package(YouTubeDl) find_package(YouTubeDl)
set_package_properties(YouTubeDl PROPERTIES TYPE RUNTIME) set_package_properties(YouTubeDl PROPERTIES TYPE RUNTIME)
@ -100,8 +107,9 @@ target_link_libraries(${APP_NAME}_lib INTERFACE
KF6::Kirigami KF6::Kirigami
KF6::I18n KF6::I18n
KF6::CoreAddons KF6::CoreAddons
MpvQt::MpvQt # KF6::FileMetaData
mpv # MpvQt::MpvQt
# mpv
ssl ssl
crypto crypto
) )

View file

@ -36,6 +36,7 @@ mkShell rec {
qt6.qtwebengine qt6.qtwebengine
qt6.qtimageformats qt6.qtimageformats
kdePackages.kirigami kdePackages.kirigami
# kdePackages.kfilemetadata
# libsForQt5.breeze-icons # libsForQt5.breeze-icons
# libsForQt5.breeze-qt5 # libsForQt5.breeze-qt5
kdePackages.qqc2-desktop-style kdePackages.qqc2-desktop-style

View file

@ -14,8 +14,8 @@ target_sources(lumina
# cpp/imagesqlmodel.cpp cpp/imagesqlmodel.h # cpp/imagesqlmodel.cpp cpp/imagesqlmodel.h
# cpp/filemanager.cpp cpp/filemanager.h # cpp/filemanager.cpp cpp/filemanager.h
# cpp/presentationsqlmodel.cpp cpp/presentationsqlmodel.h # cpp/presentationsqlmodel.cpp cpp/presentationsqlmodel.h
cpp/mpv/mpvitem.h cpp/mpv/mpvitem.cpp # cpp/mpv/mpvitem.h cpp/mpv/mpvitem.cpp
cpp/mpv/mpvproperties.h # cpp/mpv/mpvproperties.h
) )
target_compile_options (lumina PUBLIC -fexceptions) target_compile_options (lumina PUBLIC -fexceptions)

View file

@ -23,7 +23,7 @@
#include <QQuickStyle> #include <QQuickStyle>
#include <QSurfaceFormat> #include <QSurfaceFormat>
#include <QtGui/QOpenGLFramebufferObject> // #include <QtGui/QOpenGLFramebufferObject>
#include <QtQuick/QQuickWindow> #include <QtQuick/QQuickWindow>
#include <QtQuick/QQuickView> #include <QtQuick/QQuickView>
@ -38,8 +38,8 @@
#include <qsqlquery.h> #include <qsqlquery.h>
#include <qstringliteral.h> #include <qstringliteral.h>
#include "cpp/mpv/mpvitem.h" // #include "cpp/mpv/mpvitem.h"
#include "cpp/mpv/mpvproperties.h" // #include "cpp/mpv/mpvproperties.h"
// #include "cpp/serviceitemmodel.h" // #include "cpp/serviceitemmodel.h"
// #include "cpp/slidemodel.h" // #include "cpp/slidemodel.h"
// #include "cpp/songsqlmodel.h" // #include "cpp/songsqlmodel.h"
@ -221,8 +221,8 @@ int main(int argc, char *argv[])
// apparently mpv needs this class set // apparently mpv needs this class set
// let's register mpv as well // let's register mpv as well
std::setlocale(LC_NUMERIC, "C"); std::setlocale(LC_NUMERIC, "C");
qmlRegisterType<MpvItem>("mpv", 1, 0, "MpvItem"); // qmlRegisterType<MpvItem>("mpv", 1, 0, "MpvItem");
qmlRegisterSingletonInstance("org.presenter", 1, 0, "MpvProperties", MpvProperties::self()); // qmlRegisterSingletonInstance("org.presenter", 1, 0, "MpvProperties", MpvProperties::self());
//register our models //register our models
// qmlRegisterType<SongProxyModel>("org.presenter", 1, 0, "SongProxyModel"); // qmlRegisterType<SongProxyModel>("org.presenter", 1, 0, "SongProxyModel");

View file

@ -1,10 +1,10 @@
import QtQuick 2.15 import QtQuick
import QtQuick.Dialogs 1.3 /* import QtQuick.Dialogs */
import QtQuick.Controls 2.15 as Controls import QtQuick.Controls as Controls
import Qt.labs.platform 1.1 as Labs import Qt.labs.platform as Labs
import QtQuick.Window 2.15 import QtQuick.Window
import QtQuick.Layouts 1.15 import QtQuick.Layouts
import QtMultimedia 5.15 import QtMultimedia
/* import QtAudioEngine 1.15 */ /* import QtAudioEngine 1.15 */
import org.kde.kirigami 2.13 as Kirigami import org.kde.kirigami 2.13 as Kirigami
import "./presenter" as Presenter import "./presenter" as Presenter
@ -198,11 +198,11 @@ Kirigami.ApplicationWindow {
anchors.fill: parent anchors.fill: parent
} }
FileDialog { Labs.FileDialog {
id: saveFileDialog id: saveFileDialog
title: "Save" title: "Save"
folder: shortcuts.home folder: shortcuts.home
/* fileMode: FileDialog.SaveFile */ /* fileMode: Labs.FileDialog.SaveFile */
defaultSuffix: ".pres" defaultSuffix: ".pres"
selectExisting: false selectExisting: false
onAccepted: { onAccepted: {
@ -218,11 +218,11 @@ Kirigami.ApplicationWindow {
id: fileHelper id: fileHelper
} }
FileDialog { Labs.FileDialog {
id: loadFileDialog id: loadFileDialog
title: "Load" title: "Load"
folder: shortcuts.home folder: shortcuts.home
/* fileMode: FileDialog.SaveFile */ /* fileMode: Labs.FileDialog.SaveFile */
defaultSuffix: ".pres" defaultSuffix: ".pres"
selectExisting: true selectExisting: true
onAccepted: { onAccepted: {
@ -233,11 +233,11 @@ Kirigami.ApplicationWindow {
} }
} }
FileDialog { Labs.FileDialog {
id: soundFileDialog id: soundFileDialog
title: "Pick a Sound Effect" title: "Pick a Sound Effect"
folder: shortcuts.home folder: shortcuts.home
/* fileMode: FileDialog.SaveFile */ /* fileMode: Labs.FileDialog.SaveFile */
selectExisting: true selectExisting: true
onAccepted: { onAccepted: {
soundEffect = loadFileDialog.fileUrl; soundEffect = loadFileDialog.fileUrl;

View file

@ -1,7 +1,7 @@
import QtQuick 2.15 import QtQuick 2.15
import QtQuick.Controls 2.15 as Controls import QtQuick.Controls 2.15 as Controls
import QtQuick.Layouts 1.15 import QtQuick.Layouts 1.15
import QtMultimedia 5.15 import QtMultimedia
/* import QtAudioEngine 1.15 */ /* import QtAudioEngine 1.15 */
import QtWebEngine 1.10 import QtWebEngine 1.10
import QtGraphicalEffects 1.15 import QtGraphicalEffects 1.15
@ -53,27 +53,14 @@ Item {
anchors.fill: parent anchors.fill: parent
color: "black" color: "black"
MpvObject { Video {
id: mpv id: video
/* objectName: "mpv" */ /* objectName: "mpv" */
anchors.fill: parent anchors.fill: parent
useHwdec: true /* useHwdec: true */
enableAudio: !preview muted: preview
Component.onCompleted: mpvLoadingTimer.start() Component.onCompleted: mpvLoadingTimer.start()
onFileLoaded: { loops: itemType == "song" ? MediaPlayer.Infinite : vidLoop ? MediaPlayer.Infinite : 1
/* 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")) */
MouseArea { MouseArea {
id: playArea id: playArea
@ -84,32 +71,32 @@ Item {
} }
} }
Timer { /* Timer { */
id: mpvLoadingTimer /* id: mpvLoadingTimer */
interval: 500 /* interval: 500 */
onTriggered: { /* onTriggered: { */
/* showPassiveNotification("YIPPEEE!") */ /* /\* showPassiveNotification("YIPPEEE!") *\/ */
mpv.stop(); /* mpv.stop(); */
if (vidStartTime > 0 && vidStartTime < vidEndTime) { /* if (vidStartTime > 0 && vidStartTime < vidEndTime) { */
/* mpv.seek(vidStartTime); */ /* /\* mpv.seek(vidStartTime); *\/ */
let start = "+" + vidStartTime; /* let start = "+" + vidStartTime; */
let end = "+" + vidEndTime; /* let end = "+" + vidEndTime; */
mpv.setProperty("start", start); /* mpv.setProperty("start", start); */
mpv.setProperty("end", end); /* mpv.setProperty("end", end); */
Utils.dbg("Setting position to: " + mpv.position); /* Utils.dbg("Setting position to: " + mpv.position); */
} else { /* } else { */
mpv.setProperty("start", "none"); /* mpv.setProperty("start", "none"); */
mpv.setProperty("end", "none"); /* mpv.setProperty("end", "none"); */
} /* } */
mpv.loadFile(videoSource.toString()); /* mpv.loadFile(videoSource.toString()); */
Utils.dbg("Setting position to: " + vidStartTime + " and end is " + vidEndTime); /* Utils.dbg("Setting position to: " + vidStartTime + " and end is " + vidEndTime); */
if (editMode) { /* if (editMode) { */
console.log("WHY AREN'T YOU PASUING!"); /* console.log("WHY AREN'T YOU PASUING!"); */
pauseTimer.restart(); /* pauseTimer.restart(); */
} /* } */
blackTimer.restart(); /* blackTimer.restart(); */
} /* } */
} /* } */
Timer { Timer {
id: pauseTimer id: pauseTimer
@ -132,13 +119,15 @@ Item {
visible: false visible: false
} }
MpvObject { MediaPlayer {
id: audio id: audio
useHwdec: true audioOutput: AudioOutput {}
enableAudio: true /* useHwdec: true */
/* enableAudio: true */
// embeded mpv allows to set commandline propertys using the options/<name> // embeded mpv allows to set commandline propertys using the options/<name>
// syntax. This could be abstracted later, but for now this works. // 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 { Image {