gboolean gs_plugin_refresh (GsPlugin *plugin, guint cache_age, GsPluginRefreshFlags flags, GCancellable *cancellable, GError **error) { g_autoptr(LiManager) mgr = NULL; GError *error_local = NULL; /* not us */ if ((flags & GS_PLUGIN_REFRESH_FLAGS_METADATA) == 0) return TRUE; mgr = li_manager_new (); li_manager_refresh_cache (mgr, &error_local); if (error_local != NULL) { g_set_error (error, GS_PLUGIN_ERROR, GS_PLUGIN_ERROR_FAILED, "Failed to refresh Limba metadata: %s", error_local->message); return FALSE; } return TRUE; }
/** * gs_plugin_initialize: */ void gs_plugin_initialize (GsPlugin *plugin) { /* create private area */ plugin->priv = GS_PLUGIN_GET_PRIVATE (GsPluginPrivate); plugin->priv->mgr = li_manager_new (); }
void gs_plugin_initialize (GsPlugin *plugin) { GsPluginData *priv = gs_plugin_alloc_data (plugin, sizeof(GsPluginData)); priv->mgr = li_manager_new (); /* need help from appstream */ gs_plugin_add_rule (plugin, GS_PLUGIN_RULE_RUN_AFTER, "appstream"); gs_plugin_add_rule (plugin, GS_PLUGIN_RULE_RUN_AFTER, "packagekit"); }
gboolean gs_plugin_app_remove (GsPlugin *plugin, GsApp *app, GCancellable *cancellable, GError **error) { g_autoptr(LiManager) mgr = NULL; GsPluginHelper helper; g_autoptr(GError) error_local = NULL; /* not us */ if (g_strcmp0 (gs_app_get_management_plugin (app), gs_plugin_get_name (plugin)) != 0) return TRUE; mgr = li_manager_new (); /* set up progress forwarding */ helper.app = app; helper.plugin = plugin; g_signal_connect (mgr, "progress", G_CALLBACK (gs_plugin_manager_progress_cb), &helper); gs_app_set_state (app, AS_APP_STATE_REMOVING); li_manager_remove_software (mgr, gs_app_get_source_default (app), &error_local); if (error_local != NULL) { gs_app_set_state (app, AS_APP_STATE_INSTALLED); g_set_error (error, GS_PLUGIN_ERROR, GS_PLUGIN_ERROR_FAILED, "Failed to remove software: %s", error_local->message); return FALSE; } gs_app_set_state (app, AS_APP_STATE_AVAILABLE); return TRUE; }
gboolean gs_plugin_update_app (GsPlugin *plugin, GsApp *app, GCancellable *cancellable, GError **error) { GsPluginHelper helper; g_autoptr(LiManager) mgr = NULL; LiUpdateItem *uitem; g_autoptr(GError) error_local = NULL; /* sanity check */ if (gs_app_get_source_default (app) == NULL) { g_set_error (error, GS_PLUGIN_ERROR, GS_PLUGIN_ERROR_FAILED, "Failed to run update: Default source was NULL."); return FALSE; } mgr = li_manager_new (); /* set up progress forwarding */ helper.app = app; helper.plugin = plugin; g_signal_connect (mgr, "progress", G_CALLBACK (gs_plugin_manager_progress_cb), &helper); /* find update which matches the ID we have */ uitem = li_manager_get_update_for_id (mgr, gs_app_get_source_default (app), &error_local); if (error_local != NULL) { g_set_error (error, GS_PLUGIN_ERROR, GS_PLUGIN_ERROR_FAILED, "Failed to find update: %s", error_local->message); return FALSE; } if (uitem == NULL) { g_set_error (error, GS_PLUGIN_ERROR, GS_PLUGIN_ERROR_FAILED, "Could not find update for '%s'.", gs_app_get_source_default (app)); return FALSE; } gs_app_set_state (app, AS_APP_STATE_INSTALLING); li_manager_update (mgr, uitem, &error_local); if (error_local != NULL) { g_set_error (error, GS_PLUGIN_ERROR, GS_PLUGIN_ERROR_FAILED, "Software update failed: %s", error_local->message); gs_app_set_state (app, AS_APP_STATE_UPDATABLE_LIVE); return FALSE; } gs_app_set_state (app, AS_APP_STATE_INSTALLED); return TRUE; }