diff --git a/src/app/reservationmanager.h b/src/app/reservationmanager.h --- a/src/app/reservationmanager.h +++ b/src/app/reservationmanager.h @@ -22,6 +22,7 @@ #include #include +#include class PkPassManager; @@ -41,6 +42,7 @@ QVariant reservation(const QString &id) const; Q_INVOKABLE void importReservation(const QUrl &filename); + Q_INVOKABLE void addReservation(const QVariant &res); void removeReservation(const QString &id); signals: diff --git a/src/app/reservationmanager.cpp b/src/app/reservationmanager.cpp --- a/src/app/reservationmanager.cpp +++ b/src/app/reservationmanager.cpp @@ -24,7 +24,6 @@ #include #include #include -#include #include #include @@ -37,6 +36,7 @@ #include #include + using namespace KItinerary; ReservationManager::ReservationManager(QObject* parent) @@ -164,6 +164,23 @@ } } +void ReservationManager::addReservation(const QVariant &res) +{ + QString resId = QUuid::createUuid().toString(); + const auto basePath = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation) + QStringLiteral("/reservations/"); + QDir::root().mkpath(basePath); + const QString path = basePath + resId + QLatin1String(".jsonld"); + QFile f(path); + if (!f.open(QFile::WriteOnly)) { + qCWarning(Log) << "Unable to create file:" << f.errorString(); + return; + } + f.write(QJsonDocument(JsonLdDocument::toJson({res})).toJson()); + m_reservations.insert(resId, res); + emit reservationAdded(resId); + +} + void ReservationManager::removeReservation(const QString& id) { const auto basePath = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation) + QStringLiteral("/reservations/");