From c1f0e87056f4955008629aaad4cc2aaa21c69224 Mon Sep 17 00:00:00 2001 From: Chris Cochrun Date: Tue, 4 Oct 2022 15:20:26 -0500 Subject: [PATCH] basic function of getting all items from servicelist to save it --- src/qml/main.qml | 23 +++++++++++++++++++---- src/qml/presenter/MainWindow.qml | 2 +- src/serviceitemmodel.cpp | 22 ++++++++++++++++++++++ src/serviceitemmodel.h | 1 + 4 files changed, 43 insertions(+), 5 deletions(-) diff --git a/src/qml/main.qml b/src/qml/main.qml index 5220e66..d034b09 100644 --- a/src/qml/main.qml +++ b/src/qml/main.qml @@ -69,7 +69,7 @@ Kirigami.ApplicationWindow { Labs.MenuItem { text: qsTr("Save") shortcut: "Ctrl+S" - onTriggered: save() + onTriggered: saveFileDialog.open() } Labs.MenuItem { text: qsTr("Save As...") @@ -101,6 +101,21 @@ Kirigami.ApplicationWindow { id: mainPage } + FileDialog { + id: saveFileDialog + title: "Save" + folder: shortcuts.home + /* fileMode: FileDialog.SaveFile */ + defaultSuffix: ".pres" + selectExisting: false + onAccepted: { + save(saveFileDialog.fileUrl + ".pres"); + } + onRejected: { + print("Canceled") + } + } + function toggleEditMode() { editMode = !editMode; mainPage.editSwitch(); @@ -119,9 +134,9 @@ Kirigami.ApplicationWindow { settingsSheet.open() } - function save() { - const saved = FileManager.save("/home/chris/blah.pres", mainPage.serviceList); - saved ? showPassiveNotification("SAVED!") : showPassiveNotification("FAILED!"); + function save(file) { + const saved = FileManager.save(file, mainPage.serviceItems.getItems()); + saved ? showPassiveNotification("SAVED! " + file) : showPassiveNotification("FAILED!"); } function saveAs() { diff --git a/src/qml/presenter/MainWindow.qml b/src/qml/presenter/MainWindow.qml index e870d4c..3d62312 100644 --- a/src/qml/presenter/MainWindow.qml +++ b/src/qml/presenter/MainWindow.qml @@ -37,7 +37,7 @@ Controls.Page { property var song property var draggedLibraryItem - property var serviceList: ["testing", "data"] + property var serviceItems: serviceItemModel property bool songDragged: false diff --git a/src/serviceitemmodel.cpp b/src/serviceitemmodel.cpp index 81b8877..209c2f2 100644 --- a/src/serviceitemmodel.cpp +++ b/src/serviceitemmodel.cpp @@ -372,6 +372,28 @@ QVariantMap ServiceItemModel::getItem(int index) const { return data; } +QVariantList ServiceItemModel::getItems() { + QVariantList data; + ServiceItem * item; + foreach (item, m_items) { + qDebug() << item->name(); + QVariantMap itm; + itm["name"] = item->name(); + itm["type"] = item->type(); + itm["background"] = item->background(); + itm["backgroundType"] = item->backgroundType(); + itm["text"] = item->text(); + itm["audio"] = item->audio(); + itm["font"] = item->font(); + itm["fontSize"] = item->fontSize(); + data.append(itm); + } + qDebug() << "$$$$$$$$$$$$$$$$$$$$$$$$$$$"; + qDebug() << data; + qDebug() << "$$$$$$$$$$$$$$$$$$$$$$$$$$$"; + return data; +} + bool ServiceItemModel::select(int id) { for (int i = 0; i < m_items.length(); i++) { QModelIndex idx = index(i); diff --git a/src/serviceitemmodel.h b/src/serviceitemmodel.h index a2c4fac..82aca1d 100644 --- a/src/serviceitemmodel.h +++ b/src/serviceitemmodel.h @@ -88,6 +88,7 @@ public: Q_INVOKABLE bool select(int id); Q_INVOKABLE bool activate(int id); Q_INVOKABLE QVariantMap getItem(int index) const; + Q_INVOKABLE QVariantList getItems(); private: QList m_items;