*/
#include "assetreader.hpp"
-#include <libsigrok/libsigrok.h>
+
#include <memory>
+
#include <QtCore/QDebug>
#include <QtCore/QFile>
+#include <QtCore/QStandardPaths>
+
+#include <libsigrok/libsigrok.h>
using namespace pv;
-AndroidAssetReader::~AndroidAssetReader()
-{}
+using std::string;
+using std::unique_ptr;
-void AndroidAssetReader::open(struct sr_resource *res, std::string name)
+void AndroidAssetReader::open(struct sr_resource *res, string name)
{
if (res->type == SR_RESOURCE_FIRMWARE) {
- const auto path = QString::fromStdString("assets:/sigrok-firmware/" + name);
- std::unique_ptr<QFile> file {new QFile{path}};
+ auto path = QStandardPaths::locate(QStandardPaths::GenericDataLocation,
+ QString::fromStdString("sigrok-firmware/" + name));
+ if (path.isEmpty())
+ path = QString::fromStdString("assets:/sigrok-firmware/" + name);
+
+ unique_ptr<QFile> file {new QFile{path}};
if (!file->open(QIODevice::ReadOnly))
throw sigrok::Error{SR_ERR};
qCritical("AndroidAssetReader: Invalid handle");
throw sigrok::Error{SR_ERR_ARG};
}
- const std::unique_ptr<QFile> file {static_cast<QFile*>(res->handle)};
+ const unique_ptr<QFile> file {static_cast<QFile*>(res->handle)};
res->handle = nullptr;
file->close();