346
void Interface::get_manifests(std::function<void(ManifestList, ManifestError)> callback)
346
void Interface::get_manifests(std::function<void(ManifestList, InterfaceError)> callback)
348
348
std::string command = "click list --manifest";
349
349
qDebug() << "Running command:" << command.c_str();
350
run_process(command, [callback](int code, const std::string& stdout_data, const std::string&) {
350
run_process(command, [callback](int code, const std::string& stdout_data, const std::string& stderr_data) {
353
353
ManifestList manifests = manifest_list_from_json(stdout_data);
354
callback(manifests, ManifestError::NoError);
354
callback(manifests, InterfaceError::NoError);
356
callback(ManifestList(), ManifestError::ParseError);
356
qWarning() << "Can't parse 'click list --manifest' output: " << QString::fromStdString(stdout_data);
357
callback(ManifestList(), InterfaceError::ParseError);
359
callback(ManifestList(), ManifestError::CallError);
360
qWarning() << "Error" << code << "running 'click list --manifest': " << QString::fromStdString(stderr_data);
361
callback(ManifestList(), InterfaceError::CallError);
364
366
void Interface::get_manifest_for_app(const std::string &app_id,
365
std::function<void(Manifest, ManifestError)> callback)
367
std::function<void(Manifest, InterfaceError)> callback)
367
369
std::string command = "click info " + app_id;
368
370
qDebug() << "Running command:" << command.c_str();
372
374
Manifest manifest = manifest_from_json(stdout_data);
373
callback(manifest, ManifestError::NoError);
375
callback(manifest, InterfaceError::NoError);
375
callback(Manifest(), ManifestError::ParseError);
377
callback(Manifest(), InterfaceError::ParseError);
378
callback(Manifest(), ManifestError::CallError);
380
callback(Manifest(), InterfaceError::CallError);
383
385
void Interface::get_dotdesktop_filename(const std::string &app_id,
384
std::function<void(std::string, ManifestError)> callback)
386
std::function<void(std::string, InterfaceError)> callback)
386
get_manifest_for_app(app_id, [app_id, callback] (Manifest manifest, ManifestError error) {
388
get_manifest_for_app(app_id, [app_id, callback] (Manifest manifest, InterfaceError error) {
387
389
qDebug() << "in get_dotdesktop_filename callback";
389
if (error != ManifestError::NoError){
391
if (error != InterfaceError::NoError){
390
392
callback(std::string("Internal Error"), error);
395
397
if (!manifest.name.empty()) {
396
398
std::string ddstr = manifest.name + "_" + manifest.first_app_name + "_" + manifest.version + ".desktop";
397
callback(ddstr, ManifestError::NoError);
399
callback(ddstr, InterfaceError::NoError);
399
401
qCritical() << "Warning: no manifest found for " << app_id.c_str();
400
callback(std::string("Not found"), ManifestError::CallError);
402
callback(std::string("Not found"), InterfaceError::CallError);