File indexing completed on 2024-04-14 15:46:43

0001 /*  This file is part of inqludeclient
0002  *  Copyright 2014  David Faure  <faure@kde.org>
0003  *
0004  *  This library is free software; you can redistribute it and/or modify
0005  *  it under the terms of the GNU Lesser General Public License as published by
0006  *  the Free Software Foundation; either version 2 of the License or ( at
0007  *  your option ) version 3 or, at the discretion of KDE e.V. ( which shall
0008  *  act as a proxy as in section 14 of the GPLv3 ), any later version.
0009  *
0010  *  This library is distributed in the hope that it will be useful,
0011  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
0012  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
0013  *  Library General Public License for more details.
0014  *
0015  *  You should have received a copy of the GNU Lesser General Public License
0016  *  along with this library; see the file COPYING.LIB.  If not, write to
0017  *  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
0018  *  Boston, MA 02110-1301, USA.
0019  */
0020 
0021 #include "filedataprovider.h"
0022 #include <QFile>
0023 #include <QJsonDocument>
0024 #include <QDebug>
0025 
0026 FileDataProvider::FileDataProvider(const QString &filePath)
0027     : m_filePath(filePath)
0028 {
0029 }
0030 
0031 void FileDataProvider::ensureDataAvailable()
0032 {
0033     QMetaObject::invokeMethod(this, "loadFile", Qt::QueuedConnection);
0034 }
0035 
0036 void FileDataProvider::loadFile()
0037 {
0038     QFile file(m_filePath);
0039     if (!file.open(QIODevice::ReadOnly)) {
0040         emit error();
0041         return;
0042     }
0043     const QByteArray data = file.readAll(); // QJsonDocument can't read from a QIODevice !
0044     const QJsonDocument doc = QJsonDocument::fromJson(data);
0045     if (doc.isNull()) {
0046         emit error();
0047         return;
0048     }
0049     emit dataAvailable(doc);
0050 }