summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDominik Holland <dominik.holland@pelagicore.com>2019-04-02 16:01:08 +0200
committerDominik Holland <dominik.holland@pelagicore.com>2019-05-07 11:47:42 +0000
commit569268fd6c0fce70348695c9fe8949b17bb69924 (patch)
tree65a4cbbd1d730882b0f1ab22bda657514516754c /src
parent421885da2039420786815fc7732103a86a624c38 (diff)
downloadqtivi-569268fd6c0fce70348695c9fe8949b17bb69924.tar.gz
Split the media_simulator.pro up into a plugin.pro and a generic pri file
Also move the database handling from the plugin into a helper header. This makes it possible to reuse the actual simulation classes later in a a simulation server. Change-Id: I064d11597ab2c0b0fcab8e17dddac6b314fa63c7 Reviewed-by: Robert Griebl <robert.griebl@pelagicore.com>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/ivimedia/media_simulator/database_helper.h113
-rw-r--r--src/plugins/ivimedia/media_simulator/media_simulator.pri29
-rw-r--r--src/plugins/ivimedia/media_simulator/media_simulator.pro25
-rw-r--r--src/plugins/ivimedia/media_simulator/mediaplugin.cpp61
-rw-r--r--src/plugins/ivimedia/media_simulator/mediaplugin.h3
5 files changed, 150 insertions, 81 deletions
diff --git a/src/plugins/ivimedia/media_simulator/database_helper.h b/src/plugins/ivimedia/media_simulator/database_helper.h
new file mode 100644
index 0000000..6902e38
--- /dev/null
+++ b/src/plugins/ivimedia/media_simulator/database_helper.h
@@ -0,0 +1,113 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 Luxoft Sweden AB
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtIvi module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL-QTAS$
+** Commercial License Usage
+** Licensees holding valid commercial Qt Automotive Suite licenses may use
+** this file in accordance with the commercial license agreement provided
+** with the Software or, alternatively, in accordance with the terms
+** contained in a written agreement between you and The Qt Company. For
+** licensing terms and conditions see https://www.qt.io/terms-conditions.
+** For further information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+** SPDX-License-Identifier: LGPL-3.0
+**
+****************************************************************************/
+
+#ifndef DATABASE_HELPER_H
+#define DATABASE_HELPER_H
+
+#include <QByteArray>
+#include <QString>
+#include <QDir>
+#include <QFileInfo>
+#include <QSqlError>
+#include <QSqlQuery>
+#include <QStandardPaths>
+#include <QTemporaryFile>
+#include <QCoreApplication>
+
+#include "logging.h"
+
+QString mediaDatabaseFile()
+{
+ QString dbFile;
+ const QByteArray database = qgetenv("QTIVIMEDIA_SIMULATOR_DATABASE");
+ if (qEnvironmentVariableIsSet("QTIVIMEDIA_TEMPORARY_DATABASE")) {
+ auto *tempFile = new QTemporaryFile(qApp);
+ tempFile->open();
+ dbFile = tempFile->fileName();
+ qCInfo(media) << "QTIVIMEDIA_TEMPORARY_DATABASE environment variable is set.\n"
+ << "Using the temporary database: " << tempFile->fileName();
+ } else if (!database.isEmpty()) {
+ dbFile = QFile::decodeName(database);
+ if (!QFileInfo(dbFile).isAbsolute())
+ qCInfo(media) << "Please set an valid absolute path for QTIVIMEDIA_SIMULATOR_DATABASE. Current path:" << dbFile;
+ } else {
+ const QDir cacheLocation = QStandardPaths::writableLocation(QStandardPaths::CacheLocation);
+ if (!cacheLocation.exists())
+ cacheLocation.mkpath(QStringLiteral("."));
+ dbFile = cacheLocation.absoluteFilePath(QStringLiteral("ivimedia.db"));
+ qCInfo(media) << "Used media database:" << dbFile;
+ }
+ return dbFile;
+}
+
+QSqlDatabase createDatabaseConnection(const QString &connectionName, const QString &dbFile)
+{
+ QSqlDatabase db = QSqlDatabase::addDatabase(QStringLiteral("QSQLITE"), connectionName);
+ db.setDatabaseName(dbFile);
+ if (!db.open())
+ qFatal("Couldn't couldn't open database: %s", qPrintable(db.lastError().text()));
+ return db;
+}
+
+void createMediaDatabase(const QString &dbFile)
+{
+ QSqlDatabase db = createDatabaseConnection(QStringLiteral("main"), dbFile);
+ QSqlQuery query = db.exec(QStringLiteral("CREATE TABLE IF NOT EXISTS \"queue\" (\"id\" INTEGER PRIMARY KEY, \"qindex\" INTEGER, \"track_index\" INTEGER)"));
+ if (query.lastError().isValid())
+ qFatal("Couldn't create Database Tables: %s", qPrintable(query.lastError().text()));
+
+ query = db.exec("CREATE TABLE IF NOT EXISTS track "
+ "(id integer primary key, "
+ "trackName varchar(200), "
+ "albumName varchar(200), "
+ "artistName varchar(200), "
+ "genre varchar(200), "
+ "number integer,"
+ "file varchar(200),"
+ "coverArtUrl varchar(200),"
+ "UNIQUE(file))");
+
+ if (query.lastError().isValid())
+ qFatal("Couldn't create Database Tables: %s", qPrintable(query.lastError().text()));
+ db.commit();
+}
+
+#endif // DATABASE_HELPER_H
diff --git a/src/plugins/ivimedia/media_simulator/media_simulator.pri b/src/plugins/ivimedia/media_simulator/media_simulator.pri
new file mode 100644
index 0000000..a99cb8b
--- /dev/null
+++ b/src/plugins/ivimedia/media_simulator/media_simulator.pri
@@ -0,0 +1,29 @@
+QT_FOR_CONFIG += ivimedia-private
+QT += core ivicore ivimedia sql multimedia
+
+INCLUDEPATH += $$PWD
+
+qtConfig(system-taglib) {
+ QMAKE_USE += taglib
+} else:qtConfig(taglib) {
+ include($$PWD/../../../3rdparty/taglib/taglib.pri)
+}
+
+HEADERS += \
+ $$PWD/mediaplayerbackend.h \
+ $$PWD/searchandbrowsebackend.h \
+ $$PWD/mediadiscoverybackend.h \
+ $$PWD/usbdevice.h \
+ $$PWD/usbbrowsebackend.h \
+ $$PWD/mediaindexerbackend.h \
+ $$PWD/logging.h \
+ $$PWD/database_helper.h
+
+SOURCES += \
+ $$PWD/mediaplayerbackend.cpp \
+ $$PWD/searchandbrowsebackend.cpp \
+ $$PWD/mediadiscoverybackend.cpp \
+ $$PWD/usbdevice.cpp \
+ $$PWD/usbbrowsebackend.cpp \
+ $$PWD/mediaindexerbackend.cpp \
+ $$PWD/logging.cpp
diff --git a/src/plugins/ivimedia/media_simulator/media_simulator.pro b/src/plugins/ivimedia/media_simulator/media_simulator.pro
index 1fa1f1c..27084f4 100644
--- a/src/plugins/ivimedia/media_simulator/media_simulator.pro
+++ b/src/plugins/ivimedia/media_simulator/media_simulator.pro
@@ -1,38 +1,17 @@
TARGET = media_simulator
-QT_FOR_CONFIG += ivimedia-private
+
+include(media_simulator.pri)
PLUGIN_TYPE = qtivi
PLUGIN_EXTENDS = ivimedia
PLUGIN_CLASS_NAME = MediaPlugin
-QT += core ivicore ivimedia sql multimedia
-
load(qt_plugin)
-qtConfig(system-taglib) {
- QMAKE_USE += taglib
-} else:qtConfig(taglib) {
- include($$PWD/../../../3rdparty/taglib/taglib.pri)
-}
-
DISTFILES += media_simulator.json
HEADERS += \
mediaplugin.h \
- mediaplayerbackend.h \
- searchandbrowsebackend.h \
- mediadiscoverybackend.h \
- usbdevice.h \
- usbbrowsebackend.h \
- mediaindexerbackend.h \
- logging.h
SOURCES += \
mediaplugin.cpp \
- mediaplayerbackend.cpp \
- searchandbrowsebackend.cpp \
- mediadiscoverybackend.cpp \
- usbdevice.cpp \
- usbbrowsebackend.cpp \
- mediaindexerbackend.cpp \
- logging.cpp
diff --git a/src/plugins/ivimedia/media_simulator/mediaplugin.cpp b/src/plugins/ivimedia/media_simulator/mediaplugin.cpp
index f1b5270..1fb7969 100644
--- a/src/plugins/ivimedia/media_simulator/mediaplugin.cpp
+++ b/src/plugins/ivimedia/media_simulator/mediaplugin.cpp
@@ -46,66 +46,26 @@
#include "mediaplayerbackend.h"
#include "mediaplugin.h"
#include "searchandbrowsebackend.h"
+#include "database_helper.h"
#include <QtIviCore/QIviSearchAndBrowseModel>
#include <QtIviMedia/QIviMediaPlayer>
#include <QCoreApplication>
-#include <QDir>
-#include <QFileInfo>
-#include <QSqlError>
-#include <QSqlQuery>
-#include <QStandardPaths>
#include <QStringList>
-#include <QTemporaryFile>
#include <QtDebug>
MediaPlugin::MediaPlugin(QObject *parent)
: QObject(parent)
, m_discovery(new MediaDiscoveryBackend(this))
{
- const QByteArray database = qgetenv("QTIVIMEDIA_SIMULATOR_DATABASE");
- if (qEnvironmentVariableIsSet("QTIVIMEDIA_TEMPORARY_DATABASE")) {
- auto *tempFile = new QTemporaryFile(qApp);
- tempFile->open();
- m_dbFile = tempFile->fileName();
- qCInfo(media) << "QTIVIMEDIA_TEMPORARY_DATABASE environment variable is set.\n"
- << "Using the temporary database: " << tempFile->fileName();
- } else if (!database.isEmpty()) {
- m_dbFile = QFile::decodeName(database);
- if (!QFileInfo(m_dbFile).isAbsolute())
- qCInfo(media) << "Please set an valid absolute path for QTIVIMEDIA_SIMULATOR_DATABASE. Current path:" << m_dbFile;
- } else {
- const QDir cacheLocation = QStandardPaths::writableLocation(QStandardPaths::CacheLocation);
- if (!cacheLocation.exists())
- cacheLocation.mkpath(QStringLiteral("."));
- m_dbFile = cacheLocation.absoluteFilePath(QStringLiteral("ivimedia.db"));
- qCInfo(media) << "Used media database:" << m_dbFile;
- }
+ QString dbFile = mediaDatabaseFile();
- QSqlDatabase db = createDatabaseConnection(QStringLiteral("main"));
- QSqlQuery query = db.exec(QStringLiteral("CREATE TABLE IF NOT EXISTS \"queue\" (\"id\" INTEGER PRIMARY KEY, \"qindex\" INTEGER, \"track_index\" INTEGER)"));
- if (query.lastError().isValid())
- qFatal("Couldn't create Database Tables: %s", qPrintable(query.lastError().text()));
+ createMediaDatabase(dbFile);
- query = db.exec("CREATE TABLE IF NOT EXISTS track "
- "(id integer primary key, "
- "trackName varchar(200), "
- "albumName varchar(200), "
- "artistName varchar(200), "
- "genre varchar(200), "
- "number integer,"
- "file varchar(200),"
- "coverArtUrl varchar(200),"
- "UNIQUE(file))");
-
- if (query.lastError().isValid())
- qFatal("Couldn't create Database Tables: %s", qPrintable(query.lastError().text()));
- db.commit();
-
- m_player = new MediaPlayerBackend(createDatabaseConnection(QStringLiteral("player")), this);
- m_browse = new SearchAndBrowseBackend(createDatabaseConnection(QStringLiteral("model")), this);
- m_indexer = new MediaIndexerBackend(createDatabaseConnection(QStringLiteral("indexer")), this);
+ m_player = new MediaPlayerBackend(createDatabaseConnection(QStringLiteral("player"), dbFile), this);
+ m_browse = new SearchAndBrowseBackend(createDatabaseConnection(QStringLiteral("model"), dbFile), this);
+ m_indexer = new MediaIndexerBackend(createDatabaseConnection(QStringLiteral("indexer"), dbFile), this);
connect(m_discovery, &MediaDiscoveryBackend::mediaDirectoryAdded,
m_indexer, &MediaIndexerBackend::addMediaFolder);
@@ -136,12 +96,3 @@ QIviFeatureInterface *MediaPlugin::interfaceInstance(const QString &interface) c
return nullptr;
}
-
-QSqlDatabase MediaPlugin::createDatabaseConnection(const QString &connectionName)
-{
- QSqlDatabase db = QSqlDatabase::addDatabase(QStringLiteral("QSQLITE"), connectionName);
- db.setDatabaseName(m_dbFile);
- if (!db.open())
- qFatal("Couldn't couldn't open database: %s", qPrintable(db.lastError().text()));
- return db;
-}
diff --git a/src/plugins/ivimedia/media_simulator/mediaplugin.h b/src/plugins/ivimedia/media_simulator/mediaplugin.h
index a009b0b..23f42d6 100644
--- a/src/plugins/ivimedia/media_simulator/mediaplugin.h
+++ b/src/plugins/ivimedia/media_simulator/mediaplugin.h
@@ -67,14 +67,11 @@ public:
QIviFeatureInterface *interfaceInstance(const QString &interface) const override;
private:
- QSqlDatabase createDatabaseConnection(const QString &connectionName);
MediaPlayerBackend *m_player;
SearchAndBrowseBackend *m_browse;
MediaDiscoveryBackend *m_discovery;
MediaIndexerBackend *m_indexer;
- AmFmTunerBackend *m_amfmtuner;
- QString m_dbFile;
};
#endif // MEDIAPLUGIN_H