diff --git a/src/main.cpp b/src/main.cpp index c04453f..d60cbd3 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -16,6 +16,7 @@ #include #include #include +#include #include @@ -23,9 +24,11 @@ #include #include #include +#include #include #include #include +#include #include "songlistmodel.h" #include "mpv/mpvobject.h" @@ -62,12 +65,20 @@ static void connectToDatabase() { int main(int argc, char *argv[]) { QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling); - QApplication app(argc, argv); + QGuiApplication app(argc, argv); KLocalizedString::setApplicationDomain("presenter"); QCoreApplication::setOrganizationName(QStringLiteral("presenter")); QCoreApplication::setOrganizationDomain(QStringLiteral("tfcconnection.org")); QCoreApplication::setApplicationName(QStringLiteral("Church Presenter")); +#ifdef Q_OS_WINDOWS + QIcon::setFallbackThemeName("breeze"); + QQuickStyle::setStyle(QStringLiteral("org.kde.breeze")); +#else + QQuickStyle::setStyle(QStringLiteral("org.kde.desktop")); +#endif + + QGuiApplication::setWindowIcon(QIcon::fromTheme(QStringLiteral("system-config-display"))); // apparently mpv needs this class set std::setlocale(LC_NUMERIC, "C"); qmlRegisterType("mpv", 1, 0, "MpvObject"); diff --git a/src/qml/main.qml b/src/qml/main.qml index ddba728..35694e3 100644 --- a/src/qml/main.qml +++ b/src/qml/main.qml @@ -88,6 +88,11 @@ Kirigami.ApplicationWindow { libraryOpen = !libraryOpen } + function togglePresenting() { + presenting = !presenting + mainPage.present(presenting); + } + function openSettings() { settingsSheet.open() } @@ -96,12 +101,15 @@ Kirigami.ApplicationWindow { /* showPassiveNotification(Kirigami.Settings.style); */ /* Kirigami.Settings.style = "Plasma"; */ /* showPassiveNotification(Kirigami.Settings.style); */ - print(Qt.platform.os); - print("checking screens"); + print("OS is: " + Qt.platform.os); + /* print("checking screens"); */ print("Present Mode is " + presenting); + /* print(Qt.application.state); */ screens = Qt.application.screens; + presentationScreen = screens[1] for (let i = 0; i < screens.length; i++) { - print(screens[i].name); + /* print(screens[i]); */ + /* print(screens[i].name); */ screenModel.append({ "name": screens[i].name, "width": (screens[i].width * screens[i].devicePixelRatio), @@ -109,19 +117,23 @@ Kirigami.ApplicationWindow { "pixeldensity": screens[i].pixelDensity, "pixelratio": screens[i].devicePixelRatio }) - print("width of screen: " + (screens[i].width * screens[i].devicePixelRatio)); - print("height of screen: " + (screens[i].height * screens[i].devicePixelRatio)); - print("pixeldensity of screen: " + screens[i].pixelDensity); - print("pixelratio of screen: " + screens[i].devicePixelRatio); + /* print("width of screen: " + (screens[i].width * screens[i].devicePixelRatio)); */ + /* print("height of screen: " + (screens[i].height * screens[i].devicePixelRatio)); */ + /* print("pixeldensity of screen: " + screens[i].pixelDensity); */ + /* print("pixelratio of screen: " + screens[i].devicePixelRatio); */ + if (i == 0) + print("Current Screens available: "); + print(screenModel.get(i).name); } } - Presenter.Settings { - id: settingsSheet - model: screenModel - } - ListModel { id: screenModel } + + Presenter.Settings { + id: settingsSheet + theModel: screenModel + } + } diff --git a/src/qml/presenter/Header.qml b/src/qml/presenter/Header.qml index 892ce06..1d4337e 100644 --- a/src/qml/presenter/Header.qml +++ b/src/qml/presenter/Header.qml @@ -39,8 +39,8 @@ Kirigami.ActionToolBar { icon.name: "view-presentation" text: presenting ? "Presenting" : "Go Live" onTriggered: { - print("Window is loading") - presenting = true + print("Window is loading"); + togglePresenting(); } }, diff --git a/src/qml/presenter/LeftDock.qml b/src/qml/presenter/LeftDock.qml index acc1d1b..6c6d5e1 100644 --- a/src/qml/presenter/LeftDock.qml +++ b/src/qml/presenter/LeftDock.qml @@ -161,8 +161,11 @@ ColumnLayout { background: "file:/home/chris/nextcloud/tfc/openlp/videos/test.mp4" } ListElement { - name: "Marvelous Light" - type: "song" + name: "facebook" + type: "video" + text: "" + backgroundType: "video" + background: "file:/home/chris/nextcloud/tfc/videos/facebook-ukraine-vid.mkv" } ListElement { name: "10,000 Reason" diff --git a/src/qml/presenter/MainWindow.qml b/src/qml/presenter/MainWindow.qml index d9b4260..3fcf9e6 100644 --- a/src/qml/presenter/MainWindow.qml +++ b/src/qml/presenter/MainWindow.qml @@ -28,12 +28,6 @@ Controls.Page { property var song property var draggedLibraryItem - signal songLyricsUpdated(string lyrics) - - Component.onCompleted: { - mainPage.songLyricsUpdated.connect(library.updateSongLyrics); - } - Item { id: mainItem anchors.fill: parent @@ -97,12 +91,13 @@ Controls.Page { title: "presentation-window" height: maximumHeight width: maximumWidth - screen: screens[0] + screen: presentationScreen + flags: Qt.X11BypassWindowManagerHint onClosing: presenting = false Component.onCompleted: { presentationWindow.showFullScreen(); - print(screens[1].name) + print(screen.name); } Presenter.Slide { @@ -110,14 +105,14 @@ Controls.Page { anchors.fill: parent imageSource: imageBackground videoSource: videoBackground - text: "good" + text: "" Component.onCompleted: slideItem = presentationSlide } } - } + FileDialog { id: videoFileDialog title: "Please choose a background" @@ -205,6 +200,13 @@ Controls.Page { mainPageArea.pop(Controls.StackView.Immediate) } + function present(present) { + if (present) + presentationWindow.showFullScreen(); + else + presentationWindow.close(); + } + function updateLyrics(lyrics) { songsqlmodel.updateLyrics(song, lyrics); } diff --git a/src/qml/presenter/Settings.qml b/src/qml/presenter/Settings.qml index c39c16c..4000efe 100644 --- a/src/qml/presenter/Settings.qml +++ b/src/qml/presenter/Settings.qml @@ -8,19 +8,26 @@ import org.presenter 1.0 Kirigami.OverlaySheet { - property ListModel model + property ListModel theModel id: root header: Kirigami.Heading { text: "Settings" } + + /* Component.onCompleted: { */ + /* showPassiveNotification(screenModel.get(1).name) */ + /* } */ + Kirigami.FormLayout { Controls.ComboBox { id: screenSelectionField - Kirigami.FormData.label: i18nc("@label:textbox", "Screen:") - model: model - textRole: name - onAccepted: descriptionField.forceActiveFocus() + Kirigami.FormData.label: i18nc("@label:textbox", "Presentation Screen:") + model: screens + textRole: "name" + onActivated: { + presentationScreen = screens[currentIndex]; + } } Controls.TextField { id: descriptionField