songsqlmodel working
This commit is contained in:
parent
d647f4442f
commit
641b884901
13 changed files with 342 additions and 33 deletions
|
@ -54,11 +54,11 @@ CMAKE_CXX_COMPILER_AR:FILEPATH=/usr/bin/gcc-ar
|
|||
// for the GCC compiler
|
||||
CMAKE_CXX_COMPILER_RANLIB:FILEPATH=/usr/bin/gcc-ranlib
|
||||
|
||||
//Flags used by the CXX compiler during all build types.
|
||||
CMAKE_CXX_FLAGS:STRING=
|
||||
//No help, variable specified on the command line.
|
||||
CMAKE_CXX_FLAGS:STRING=-DQT_QML_DEBUG
|
||||
|
||||
//Flags used by the CXX compiler during DEBUG builds.
|
||||
CMAKE_CXX_FLAGS_DEBUG:STRING=-g
|
||||
//No help, variable specified on the command line.
|
||||
CMAKE_CXX_FLAGS_DEBUG:STRING=-g -DQT_QML_DEBUG
|
||||
|
||||
//Flags used by the CXX compiler during MINSIZEREL builds.
|
||||
CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
|
||||
|
@ -66,8 +66,8 @@ CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
|
|||
//Flags used by the CXX compiler during RELEASE builds.
|
||||
CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
|
||||
|
||||
//Flags used by the CXX compiler during RELWITHDEBINFO builds.
|
||||
CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
|
||||
//No help, variable specified on the command line.
|
||||
CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG -DQT_QML_DEBUG
|
||||
|
||||
//C compiler
|
||||
CMAKE_C_COMPILER:FILEPATH=/usr/bin/cc
|
||||
|
@ -113,8 +113,8 @@ CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=
|
|||
//Flags used by the linker during RELWITHDEBINFO builds.
|
||||
CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
|
||||
|
||||
//Enable/Disable output of compile commands during generation.
|
||||
CMAKE_EXPORT_COMPILE_COMMANDS:BOOL=
|
||||
//No help, variable specified on the command line.
|
||||
CMAKE_EXPORT_COMPILE_COMMANDS:UNINITIALIZED=1
|
||||
|
||||
//Install path prefix
|
||||
CMAKE_INSTALL_PREFIX:PATH=/usr
|
||||
|
@ -457,6 +457,9 @@ Qt5Test_DIR:PATH=/usr/lib64/cmake/Qt5Test
|
|||
//The directory containing a CMake configuration file for Qt5Widgets.
|
||||
Qt5Widgets_DIR:PATH=/usr/lib64/cmake/Qt5Widgets
|
||||
|
||||
//The directory containing a CMake configuration file for Qt5X11Extras.
|
||||
Qt5X11Extras_DIR:PATH=/usr/lib64/cmake/Qt5X11Extras
|
||||
|
||||
//The directory containing a CMake configuration file for Qt5.
|
||||
Qt5_DIR:PATH=/usr/lib64/cmake/Qt5
|
||||
|
||||
|
@ -630,7 +633,7 @@ CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1
|
|||
//Details about finding Gettext
|
||||
FIND_PACKAGE_MESSAGE_DETAILS_Gettext:INTERNAL=[/usr/bin/msgmerge][/usr/bin/msgfmt][v0.21()]
|
||||
//Details about finding KF5
|
||||
FIND_PACKAGE_MESSAGE_DETAILS_KF5:INTERNAL=[success][cfound components: Kirigami2 I18n CoreAddons ][v5.90.0(5.68.0)]
|
||||
FIND_PACKAGE_MESSAGE_DETAILS_KF5:INTERNAL=[success][cfound components: Kirigami2 I18n CoreAddons ][v5.90.0()]
|
||||
//Details about finding KF5CoreAddons
|
||||
FIND_PACKAGE_MESSAGE_DETAILS_KF5CoreAddons:INTERNAL=[/usr/lib64/cmake/KF5CoreAddons/KF5CoreAddonsConfig.cmake][v5.90.0()]
|
||||
//Details about finding KF5I18n
|
||||
|
|
|
@ -54,7 +54,6 @@ set(CMAKE_MAKEFILE_DEPENDS
|
|||
"/usr/lib64/cmake/Qt5Gui/Qt5Gui_QEvdevTabletPlugin.cmake"
|
||||
"/usr/lib64/cmake/Qt5Gui/Qt5Gui_QEvdevTouchScreenPlugin.cmake"
|
||||
"/usr/lib64/cmake/Qt5Gui/Qt5Gui_QGifPlugin.cmake"
|
||||
"/usr/lib64/cmake/Qt5Gui/Qt5Gui_QGtk2ThemePlugin.cmake"
|
||||
"/usr/lib64/cmake/Qt5Gui/Qt5Gui_QGtk3ThemePlugin.cmake"
|
||||
"/usr/lib64/cmake/Qt5Gui/Qt5Gui_QICNSPlugin.cmake"
|
||||
"/usr/lib64/cmake/Qt5Gui/Qt5Gui_QICOPlugin.cmake"
|
||||
|
@ -74,7 +73,6 @@ set(CMAKE_MAKEFILE_DEPENDS
|
|||
"/usr/lib64/cmake/Qt5Gui/Qt5Gui_QTiffPlugin.cmake"
|
||||
"/usr/lib64/cmake/Qt5Gui/Qt5Gui_QTsLibPlugin.cmake"
|
||||
"/usr/lib64/cmake/Qt5Gui/Qt5Gui_QTuioTouchPlugin.cmake"
|
||||
"/usr/lib64/cmake/Qt5Gui/Qt5Gui_QVirtualKeyboardPlugin.cmake"
|
||||
"/usr/lib64/cmake/Qt5Gui/Qt5Gui_QVncIntegrationPlugin.cmake"
|
||||
"/usr/lib64/cmake/Qt5Gui/Qt5Gui_QWaylandEglPlatformIntegrationPlugin.cmake"
|
||||
"/usr/lib64/cmake/Qt5Gui/Qt5Gui_QWaylandIntegrationPlugin.cmake"
|
||||
|
@ -127,11 +125,8 @@ set(CMAKE_MAKEFILE_DEPENDS
|
|||
"/usr/lib64/cmake/Qt5Widgets/Qt5WidgetsConfigExtras.cmake"
|
||||
"/usr/lib64/cmake/Qt5Widgets/Qt5WidgetsConfigVersion.cmake"
|
||||
"/usr/lib64/cmake/Qt5Widgets/Qt5WidgetsMacros.cmake"
|
||||
"/usr/lib64/cmake/Qt5Widgets/Qt5Widgets_QBB10StylePlugin.cmake"
|
||||
"/usr/lib64/cmake/Qt5Widgets/Qt5Widgets_QCleanlooksStylePlugin.cmake"
|
||||
"/usr/lib64/cmake/Qt5Widgets/Qt5Widgets_QGtk2StylePlugin.cmake"
|
||||
"/usr/lib64/cmake/Qt5Widgets/Qt5Widgets_QMotifStylePlugin.cmake"
|
||||
"/usr/lib64/cmake/Qt5Widgets/Qt5Widgets_QPlastiqueStylePlugin.cmake"
|
||||
"/usr/lib64/cmake/Qt5X11Extras/Qt5X11ExtrasConfig.cmake"
|
||||
"/usr/lib64/cmake/Qt5X11Extras/Qt5X11ExtrasConfigVersion.cmake"
|
||||
"/usr/share/ECM/cmake/ECMConfig.cmake"
|
||||
"/usr/share/ECM/cmake/ECMConfigVersion.cmake"
|
||||
"/usr/share/ECM/find-modules/ECMFindModuleHelpersStub.cmake"
|
||||
|
@ -147,7 +142,10 @@ set(CMAKE_MAKEFILE_DEPENDS
|
|||
"/usr/share/ECM/modules/ECMCoverageOption.cmake"
|
||||
"/usr/share/ECM/modules/ECMEnableSanitizers.cmake"
|
||||
"/usr/share/ECM/modules/ECMFindModuleHelpers.cmake"
|
||||
"/usr/share/ECM/modules/ECMGenerateHeaders.cmake"
|
||||
"/usr/share/ECM/modules/ECMPoQmTools.cmake"
|
||||
"/usr/share/ECM/modules/ECMQueryQmake.cmake"
|
||||
"/usr/share/ECM/modules/ECMSetupVersion.cmake"
|
||||
"/usr/share/ECM/modules/ECMSourceVersionControl.cmake"
|
||||
"/usr/share/ECM/modules/ECMUninstallTarget.cmake"
|
||||
"/usr/share/ECM/modules/ECMUseFindModules.cmake"
|
||||
|
@ -161,6 +159,7 @@ set(CMAKE_MAKEFILE_DEPENDS
|
|||
"/usr/share/cmake/Modules/CMakeGenericSystem.cmake"
|
||||
"/usr/share/cmake/Modules/CMakeInitializeConfigs.cmake"
|
||||
"/usr/share/cmake/Modules/CMakeLanguageInformation.cmake"
|
||||
"/usr/share/cmake/Modules/CMakePackageConfigHelpers.cmake"
|
||||
"/usr/share/cmake/Modules/CMakeParseArguments.cmake"
|
||||
"/usr/share/cmake/Modules/CMakeSystemSpecificInformation.cmake"
|
||||
"/usr/share/cmake/Modules/CMakeSystemSpecificInitialize.cmake"
|
||||
|
@ -183,6 +182,7 @@ set(CMAKE_MAKEFILE_DEPENDS
|
|||
"/usr/share/cmake/Modules/Platform/Linux-GNU.cmake"
|
||||
"/usr/share/cmake/Modules/Platform/Linux.cmake"
|
||||
"/usr/share/cmake/Modules/Platform/UnixPaths.cmake"
|
||||
"/usr/share/cmake/Modules/WriteBasicConfigVersionFile.cmake"
|
||||
)
|
||||
|
||||
# The corresponding makefile is:
|
||||
|
|
|
@ -205,12 +205,12 @@ CMakeFiles/KF5CoreAddons_QCH.dir/clean:
|
|||
src/CMakeFiles/presenter.dir/all: src/CMakeFiles/presenter_autogen.dir/all
|
||||
$(MAKE) $(MAKESILENT) -f src/CMakeFiles/presenter.dir/build.make src/CMakeFiles/presenter.dir/depend
|
||||
$(MAKE) $(MAKESILENT) -f src/CMakeFiles/presenter.dir/build.make src/CMakeFiles/presenter.dir/build
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/chris/dev/church-presenter/build/CMakeFiles --progress-num=3,4,5,6,7,8 "Built target presenter"
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/chris/dev/church-presenter/build/CMakeFiles --progress-num=3,4,5,6,7,8,9,10 "Built target presenter"
|
||||
.PHONY : src/CMakeFiles/presenter.dir/all
|
||||
|
||||
# Build rule for subdir invocation for target.
|
||||
src/CMakeFiles/presenter.dir/rule: cmake_check_build_system
|
||||
$(CMAKE_COMMAND) -E cmake_progress_start /home/chris/dev/church-presenter/build/CMakeFiles 7
|
||||
$(CMAKE_COMMAND) -E cmake_progress_start /home/chris/dev/church-presenter/build/CMakeFiles 9
|
||||
$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 src/CMakeFiles/presenter.dir/all
|
||||
$(CMAKE_COMMAND) -E cmake_progress_start /home/chris/dev/church-presenter/build/CMakeFiles 0
|
||||
.PHONY : src/CMakeFiles/presenter.dir/rule
|
||||
|
@ -231,7 +231,7 @@ src/CMakeFiles/presenter.dir/clean:
|
|||
src/CMakeFiles/presenter_autogen.dir/all:
|
||||
$(MAKE) $(MAKESILENT) -f src/CMakeFiles/presenter_autogen.dir/build.make src/CMakeFiles/presenter_autogen.dir/depend
|
||||
$(MAKE) $(MAKESILENT) -f src/CMakeFiles/presenter_autogen.dir/build.make src/CMakeFiles/presenter_autogen.dir/build
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/chris/dev/church-presenter/build/CMakeFiles --progress-num=9 "Built target presenter_autogen"
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/chris/dev/church-presenter/build/CMakeFiles --progress-num=11 "Built target presenter_autogen"
|
||||
.PHONY : src/CMakeFiles/presenter_autogen.dir/all
|
||||
|
||||
# Build rule for subdir invocation for target.
|
||||
|
|
|
@ -1 +1 @@
|
|||
7
|
||||
9
|
||||
|
|
|
@ -5,5 +5,5 @@
|
|||
# This file includes the relevant testing commands required for
|
||||
# testing this directory and lists subdirectories to be tested as well.
|
||||
add_test(appstreamtest "/usr/bin/cmake" "-DAPPSTREAMCLI=/usr/bin/appstreamcli" "-DINSTALL_FILES=/home/chris/dev/church-presenter/build/install_manifest.txt" "-P" "/usr/share/ECM/kde-modules/appstreamtest.cmake")
|
||||
set_tests_properties(appstreamtest PROPERTIES _BACKTRACE_TRIPLES "/usr/share/ECM/kde-modules/KDECMakeSettings.cmake;161;add_test;/usr/share/ECM/kde-modules/KDECMakeSettings.cmake;179;appstreamtest;/usr/share/ECM/kde-modules/KDECMakeSettings.cmake;0;;/home/chris/dev/church-presenter/CMakeLists.txt;17;include;/home/chris/dev/church-presenter/CMakeLists.txt;0;")
|
||||
set_tests_properties(appstreamtest PROPERTIES _BACKTRACE_TRIPLES "/usr/share/ECM/kde-modules/KDECMakeSettings.cmake;161;add_test;/usr/share/ECM/kde-modules/KDECMakeSettings.cmake;179;appstreamtest;/usr/share/ECM/kde-modules/KDECMakeSettings.cmake;0;;/home/chris/dev/church-presenter/CMakeLists.txt;19;include;/home/chris/dev/church-presenter/CMakeLists.txt;0;")
|
||||
subdirs("src")
|
||||
|
|
|
@ -1 +1 @@
|
|||
7
|
||||
9
|
||||
|
|
|
@ -178,6 +178,30 @@ main.cpp.s:
|
|||
cd /home/chris/dev/church-presenter/build && $(MAKE) $(MAKESILENT) -f src/CMakeFiles/presenter.dir/build.make src/CMakeFiles/presenter.dir/main.cpp.s
|
||||
.PHONY : main.cpp.s
|
||||
|
||||
mpv/mpvobject.o: mpv/mpvobject.cpp.o
|
||||
.PHONY : mpv/mpvobject.o
|
||||
|
||||
# target to build an object file
|
||||
mpv/mpvobject.cpp.o:
|
||||
cd /home/chris/dev/church-presenter/build && $(MAKE) $(MAKESILENT) -f src/CMakeFiles/presenter.dir/build.make src/CMakeFiles/presenter.dir/mpv/mpvobject.cpp.o
|
||||
.PHONY : mpv/mpvobject.cpp.o
|
||||
|
||||
mpv/mpvobject.i: mpv/mpvobject.cpp.i
|
||||
.PHONY : mpv/mpvobject.i
|
||||
|
||||
# target to preprocess a source file
|
||||
mpv/mpvobject.cpp.i:
|
||||
cd /home/chris/dev/church-presenter/build && $(MAKE) $(MAKESILENT) -f src/CMakeFiles/presenter.dir/build.make src/CMakeFiles/presenter.dir/mpv/mpvobject.cpp.i
|
||||
.PHONY : mpv/mpvobject.cpp.i
|
||||
|
||||
mpv/mpvobject.s: mpv/mpvobject.cpp.s
|
||||
.PHONY : mpv/mpvobject.s
|
||||
|
||||
# target to generate assembly for a file
|
||||
mpv/mpvobject.cpp.s:
|
||||
cd /home/chris/dev/church-presenter/build && $(MAKE) $(MAKESILENT) -f src/CMakeFiles/presenter.dir/build.make src/CMakeFiles/presenter.dir/mpv/mpvobject.cpp.s
|
||||
.PHONY : mpv/mpvobject.cpp.s
|
||||
|
||||
presenter_autogen/EWIEGA46WW/qrc_resources.o: presenter_autogen/EWIEGA46WW/qrc_resources.cpp.o
|
||||
.PHONY : presenter_autogen/EWIEGA46WW/qrc_resources.o
|
||||
|
||||
|
@ -250,6 +274,30 @@ songlistmodel.cpp.s:
|
|||
cd /home/chris/dev/church-presenter/build && $(MAKE) $(MAKESILENT) -f src/CMakeFiles/presenter.dir/build.make src/CMakeFiles/presenter.dir/songlistmodel.cpp.s
|
||||
.PHONY : songlistmodel.cpp.s
|
||||
|
||||
songsqlmodel.o: songsqlmodel.cpp.o
|
||||
.PHONY : songsqlmodel.o
|
||||
|
||||
# target to build an object file
|
||||
songsqlmodel.cpp.o:
|
||||
cd /home/chris/dev/church-presenter/build && $(MAKE) $(MAKESILENT) -f src/CMakeFiles/presenter.dir/build.make src/CMakeFiles/presenter.dir/songsqlmodel.cpp.o
|
||||
.PHONY : songsqlmodel.cpp.o
|
||||
|
||||
songsqlmodel.i: songsqlmodel.cpp.i
|
||||
.PHONY : songsqlmodel.i
|
||||
|
||||
# target to preprocess a source file
|
||||
songsqlmodel.cpp.i:
|
||||
cd /home/chris/dev/church-presenter/build && $(MAKE) $(MAKESILENT) -f src/CMakeFiles/presenter.dir/build.make src/CMakeFiles/presenter.dir/songsqlmodel.cpp.i
|
||||
.PHONY : songsqlmodel.cpp.i
|
||||
|
||||
songsqlmodel.s: songsqlmodel.cpp.s
|
||||
.PHONY : songsqlmodel.s
|
||||
|
||||
# target to generate assembly for a file
|
||||
songsqlmodel.cpp.s:
|
||||
cd /home/chris/dev/church-presenter/build && $(MAKE) $(MAKESILENT) -f src/CMakeFiles/presenter.dir/build.make src/CMakeFiles/presenter.dir/songsqlmodel.cpp.s
|
||||
.PHONY : songsqlmodel.cpp.s
|
||||
|
||||
# Help Target
|
||||
help:
|
||||
@echo "The following are some of the valid targets for this Makefile:"
|
||||
|
@ -264,6 +312,9 @@ help:
|
|||
@echo "... main.o"
|
||||
@echo "... main.i"
|
||||
@echo "... main.s"
|
||||
@echo "... mpv/mpvobject.o"
|
||||
@echo "... mpv/mpvobject.i"
|
||||
@echo "... mpv/mpvobject.s"
|
||||
@echo "... presenter_autogen/EWIEGA46WW/qrc_resources.o"
|
||||
@echo "... presenter_autogen/EWIEGA46WW/qrc_resources.i"
|
||||
@echo "... presenter_autogen/EWIEGA46WW/qrc_resources.s"
|
||||
|
@ -273,6 +324,9 @@ help:
|
|||
@echo "... songlistmodel.o"
|
||||
@echo "... songlistmodel.i"
|
||||
@echo "... songlistmodel.s"
|
||||
@echo "... songsqlmodel.o"
|
||||
@echo "... songsqlmodel.i"
|
||||
@echo "... songsqlmodel.s"
|
||||
.PHONY : help
|
||||
|
||||
|
||||
|
|
|
@ -4,6 +4,7 @@ target_sources(presenter
|
|||
PRIVATE
|
||||
main.cpp resources.qrc
|
||||
songlistmodel.cpp songlistmodel.h
|
||||
songsqlmodel.cpp songsqlmodel.h
|
||||
mpv/mpvobject.h mpv/mpvobject.cpp
|
||||
mpv/qthelper.hpp mpv/mpvhelpers.h
|
||||
)
|
||||
|
|
49
src/main.cpp
49
src/main.cpp
|
@ -8,6 +8,9 @@
|
|||
#include <KLocalizedString>
|
||||
#include <iostream>
|
||||
#include <QQmlEngine>
|
||||
#include <QtSql>
|
||||
#include <QSqlDatabase>
|
||||
#include <QSqlTableModel>
|
||||
|
||||
#include <QObject>
|
||||
#include <QtGlobal>
|
||||
|
@ -18,16 +21,50 @@
|
|||
|
||||
#include <QtQuick/QQuickWindow>
|
||||
#include <QtQuick/QQuickView>
|
||||
#include <qdir.h>
|
||||
#include <qglobal.h>
|
||||
#include <qqml.h>
|
||||
#include <qsqldatabase.h>
|
||||
#include <qsqlquery.h>
|
||||
|
||||
#include "songlistmodel.h"
|
||||
#include "mpv/mpvobject.h"
|
||||
#include "songsqlmodel.h"
|
||||
|
||||
static void connectToDatabase() {
|
||||
// let's setup our sql database
|
||||
QSqlDatabase db = QSqlDatabase::database();
|
||||
if (!db.isValid()){
|
||||
db = QSqlDatabase::addDatabase("QSQLITE");
|
||||
if (!db.isValid())
|
||||
qFatal("Cannot add database: %s", qPrintable(db.lastError().text()));
|
||||
}
|
||||
|
||||
const QDir writeDir = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation);
|
||||
|
||||
if (!writeDir.mkpath(".")) {
|
||||
qFatal("Failed to create writable location at %s", qPrintable(writeDir.absolutePath()));
|
||||
}
|
||||
|
||||
const QString dbName = writeDir.absolutePath() + "/library-db.sqlite3";
|
||||
|
||||
db.setHostName("localhost");
|
||||
db.setDatabaseName(dbName);
|
||||
db.setUserName("presenter");
|
||||
db.setPassword("i393jkf782djyr98302j");
|
||||
if (!db.open()) {
|
||||
qFatal("Cannot open database: %s", qPrintable(db.lastError().text()));
|
||||
QFile::remove(dbName);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
|
||||
QApplication app(argc, argv);
|
||||
KLocalizedString::setApplicationDomain("presenter");
|
||||
QCoreApplication::setOrganizationName(QStringLiteral("TFC"));
|
||||
QCoreApplication::setOrganizationName(QStringLiteral("presenter"));
|
||||
QCoreApplication::setOrganizationDomain(QStringLiteral("tfcconnection.org"));
|
||||
QCoreApplication::setApplicationName(QStringLiteral("Church Presenter"));
|
||||
|
||||
|
@ -35,18 +72,22 @@ int main(int argc, char *argv[])
|
|||
std::setlocale(LC_NUMERIC, "C");
|
||||
qmlRegisterType<MpvObject>("mpv", 1, 0, "MpvObject");
|
||||
|
||||
//register our song model from sql
|
||||
qmlRegisterType<SongSqlModel>("org.presenter", 1, 0, "SongSqlModel");
|
||||
|
||||
SongListModel songListModel;
|
||||
|
||||
// path = QQmlEngine::importPathList()
|
||||
qDebug() << "Hello World!";
|
||||
connectToDatabase();
|
||||
|
||||
QQmlApplicationEngine engine;
|
||||
|
||||
|
||||
engine.rootContext()->setContextObject(new KLocalizedContext(&engine));
|
||||
engine.rootContext()->setContextProperty("_songListModel", &songListModel);
|
||||
engine.load(QUrl(QStringLiteral("qrc:qml/main.qml")));
|
||||
|
||||
// QQuickView *view = new QQuickView;
|
||||
// view->setSource(QUrl(QStringLiteral("qrc:qml/main.qml")));
|
||||
// view->show();
|
||||
|
||||
#ifdef STATIC_KIRIGAMI
|
||||
KirigamiPlugin::getInstance().registerTypes();
|
||||
|
|
|
@ -14,7 +14,7 @@ Kirigami.ApplicationWindow {
|
|||
property bool libraryOpen: true
|
||||
property bool presenting: false
|
||||
property bool presentMode: true
|
||||
property var secondScreen: null
|
||||
property var screens
|
||||
|
||||
pageStack.initialPage: mainPage
|
||||
header: Presenter.Header {}
|
||||
|
@ -30,10 +30,16 @@ Kirigami.ApplicationWindow {
|
|||
}
|
||||
|
||||
Component.onCompleted: {
|
||||
print("checking screens")
|
||||
print("Present Mode is " + presentMode)
|
||||
secondScreen = Qt.application.screens[1]
|
||||
print(secondScreen)
|
||||
print("checking screens");
|
||||
print("Present Mode is " + presentMode);
|
||||
screens = Qt.application.screens;
|
||||
for (let i = 0; i < screens.length; i++) {
|
||||
print(screens[i].name);
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@ import QtQuick.Controls 2.0 as Controls
|
|||
import QtQuick.Layouts 1.2
|
||||
import org.kde.kirigami 2.13 as Kirigami
|
||||
import "./" as Presenter
|
||||
import org.presenter 1.0
|
||||
|
||||
Item {
|
||||
id: root
|
||||
|
@ -25,10 +26,20 @@ Item {
|
|||
color: Kirigami.Theme.backgroundColor
|
||||
|
||||
Controls.Label {
|
||||
id: songlable
|
||||
anchors.centerIn: parent
|
||||
text: "Songs"
|
||||
}
|
||||
|
||||
Controls.Label {
|
||||
anchors {left: songlable.right
|
||||
verticalCenter: songlable.verticalCenter
|
||||
leftMargin: 15}
|
||||
text: songsqlmodel.rowCount()
|
||||
font.pixelSize: 15
|
||||
color: Kirigami.Theme.disabledTextColor
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
onClicked: {
|
||||
|
@ -41,15 +52,19 @@ Item {
|
|||
}
|
||||
}
|
||||
|
||||
SongSqlModel {
|
||||
id: songsqlmodel
|
||||
}
|
||||
|
||||
ListView {
|
||||
Layout.fillHeight: true
|
||||
Layout.fillWidth: true
|
||||
id: songLibraryList
|
||||
model: _songListModel
|
||||
model: songsqlmodel
|
||||
delegate: itemDelegate
|
||||
state: "selected"
|
||||
|
||||
Component.onCompleted: print(selectedLibrary)
|
||||
/* Component.onCompleted: print(selectedLibrary) */
|
||||
|
||||
states: [
|
||||
State {
|
||||
|
|
139
src/songsqlmodel.cpp
Normal file
139
src/songsqlmodel.cpp
Normal file
|
@ -0,0 +1,139 @@
|
|||
#include "songsqlmodel.h"
|
||||
|
||||
#include <QDateTime>
|
||||
#include <QDebug>
|
||||
#include <QSqlError>
|
||||
#include <QSqlRecord>
|
||||
#include <QSqlQuery>
|
||||
#include <QSql>
|
||||
#include <QSqlDatabase>
|
||||
|
||||
static const char *songsTableName = "songs";
|
||||
|
||||
static void createTable()
|
||||
{
|
||||
if(QSqlDatabase::database().tables().contains(songsTableName)) {
|
||||
return;
|
||||
}
|
||||
|
||||
QSqlQuery query;
|
||||
if (!query.exec(
|
||||
"CREATE TABLE IF NOT EXISTS 'songs' ("
|
||||
" 'title' TEXT NOT NULL,"
|
||||
" 'lyrics' TEXT,"
|
||||
" 'author' TEXT,"
|
||||
" 'ccli' TEXT,"
|
||||
" 'audio' TEXT,"
|
||||
" PRIMARY KEY(title))"
|
||||
)) {
|
||||
qFatal("Failed to query database: %s", qPrintable(query.lastError().text()));
|
||||
}
|
||||
|
||||
query.exec("INSERT INTO songs VALUES ('10,000 Reasons', '10,000 reasons for my heart to sing', 'Matt Redman', '13470183', '')");
|
||||
query.exec("INSERT INTO songs VALUES ('River', 'Im going down to the river', 'Jordan Feliz', '13470183', '')");
|
||||
query.exec("INSERT INTO songs VALUES ('Marvelous Light', 'Into marvelous light Im running', 'Chris Tomlin', '13470183', '')");
|
||||
|
||||
query.exec("select * from songs");
|
||||
qDebug() << query.lastQuery();
|
||||
}
|
||||
|
||||
SongSqlModel::SongSqlModel(QObject *parent)
|
||||
: QSqlTableModel(parent)
|
||||
{
|
||||
createTable();
|
||||
setTable(songsTableName);
|
||||
setEditStrategy(QSqlTableModel::OnFieldChange);
|
||||
select();
|
||||
}
|
||||
|
||||
QVariant SongSqlModel::data(const QModelIndex &index, int role) const {
|
||||
if (role < Qt::UserRole) {
|
||||
qDebug() << role;
|
||||
return QSqlTableModel::data(index, role);
|
||||
}
|
||||
|
||||
qDebug() << role;
|
||||
const QSqlRecord sqlRecord = record(index.row());
|
||||
return sqlRecord.value(role - Qt::UserRole);
|
||||
}
|
||||
|
||||
QHash<int, QByteArray> SongSqlModel::roleNames() const
|
||||
{
|
||||
QHash<int, QByteArray> names;
|
||||
names[Qt::UserRole] = "title";
|
||||
names[Qt::UserRole + 1] = "lyrics";
|
||||
names[Qt::UserRole + 2] = "author";
|
||||
names[Qt::UserRole + 3] = "ccli";
|
||||
names[Qt::UserRole + 4] = "audio";
|
||||
return names;
|
||||
}
|
||||
|
||||
QString SongSqlModel::title() const {
|
||||
return m_title;
|
||||
}
|
||||
|
||||
void SongSqlModel::setTitle(const QString &title) {
|
||||
if (title == m_title)
|
||||
return;
|
||||
|
||||
m_title = title;
|
||||
|
||||
select();
|
||||
emit titleChanged();
|
||||
}
|
||||
|
||||
QString SongSqlModel::author() const {
|
||||
return m_author;
|
||||
}
|
||||
|
||||
void SongSqlModel::setAuthor(const QString &author) {
|
||||
if (author == m_author)
|
||||
return;
|
||||
|
||||
m_author = author;
|
||||
|
||||
select();
|
||||
emit authorChanged();
|
||||
}
|
||||
|
||||
QString SongSqlModel::lyrics() const {
|
||||
return m_lyrics;
|
||||
}
|
||||
|
||||
void SongSqlModel::setLyrics(const QString &lyrics) {
|
||||
if (lyrics == m_lyrics)
|
||||
return;
|
||||
|
||||
m_lyrics = lyrics;
|
||||
|
||||
select();
|
||||
emit lyricsChanged();
|
||||
}
|
||||
|
||||
QString SongSqlModel::ccli() const {
|
||||
return m_ccli;
|
||||
}
|
||||
|
||||
void SongSqlModel::setCcli(const QString &ccli) {
|
||||
if (ccli == m_ccli)
|
||||
return;
|
||||
|
||||
m_ccli = ccli;
|
||||
|
||||
select();
|
||||
emit ccliChanged();
|
||||
}
|
||||
|
||||
QString SongSqlModel::audio() const {
|
||||
return m_audio;
|
||||
}
|
||||
|
||||
void SongSqlModel::setAudio(const QString &audio) {
|
||||
if (audio == m_audio)
|
||||
return;
|
||||
|
||||
m_audio = audio;
|
||||
|
||||
select();
|
||||
emit audioChanged();
|
||||
}
|
50
src/songsqlmodel.h
Normal file
50
src/songsqlmodel.h
Normal file
|
@ -0,0 +1,50 @@
|
|||
#ifndef SONGSQLMODEL_H
|
||||
#define SONGSQLMODEL_H
|
||||
|
||||
#include <QSqlTableModel>
|
||||
#include <qqml.h>
|
||||
|
||||
class SongSqlModel : public QSqlTableModel
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_PROPERTY(QString title READ title WRITE setTitle NOTIFY titleChanged)
|
||||
Q_PROPERTY(QString lyrics READ lyrics WRITE setLyrics NOTIFY lyricsChanged)
|
||||
Q_PROPERTY(QString author READ author WRITE setAuthor NOTIFY authorChanged)
|
||||
Q_PROPERTY(QString ccli READ ccli WRITE setCcli NOTIFY ccliChanged)
|
||||
Q_PROPERTY(QString audio READ audio WRITE setAudio NOTIFY audioChanged)
|
||||
QML_ELEMENT
|
||||
|
||||
public:
|
||||
SongSqlModel(QObject *parent = 0);
|
||||
|
||||
QString title() const;
|
||||
QString lyrics() const;
|
||||
QString author() const;
|
||||
QString ccli() const;
|
||||
QString audio() const;
|
||||
|
||||
void setTitle(const QString &title);
|
||||
void setLyrics(const QString &lyrics);
|
||||
void setAuthor(const QString &author);
|
||||
void setCcli(const QString &ccli);
|
||||
void setAudio(const QString &audio);
|
||||
|
||||
QVariant data(const QModelIndex &index, int role) const override;
|
||||
QHash<int, QByteArray> roleNames() const override;
|
||||
|
||||
signals:
|
||||
void titleChanged();
|
||||
void lyricsChanged();
|
||||
void authorChanged();
|
||||
void ccliChanged();
|
||||
void audioChanged();
|
||||
|
||||
private:
|
||||
QString m_title;
|
||||
QString m_lyrics;
|
||||
QString m_author;
|
||||
QString m_ccli;
|
||||
QString m_audio;
|
||||
};
|
||||
|
||||
#endif //SONGSQLMODEL_H
|
Loading…
Add table
Add a link
Reference in a new issue