/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- * vi:set noexpandtab tabstop=8 shiftwidth=8: * * Copyright (C) 2012-2018 Richard Hughes * * SPDX-License-Identifier: GPL-2.0+ */ #pragma once #include G_BEGIN_DECLS /** * GsPluginStatus: * @GS_PLUGIN_STATUS_UNKNOWN: Unknown status * @GS_PLUGIN_STATUS_WAITING: Waiting * @GS_PLUGIN_STATUS_FINISHED: Finished * @GS_PLUGIN_STATUS_SETUP: Setup in progress * @GS_PLUGIN_STATUS_DOWNLOADING: Downloading in progress * @GS_PLUGIN_STATUS_QUERYING: Querying in progress * @GS_PLUGIN_STATUS_INSTALLING: Installing in progress * @GS_PLUGIN_STATUS_REMOVING: Removing in progress * * The status of the plugin. **/ typedef enum { GS_PLUGIN_STATUS_UNKNOWN, GS_PLUGIN_STATUS_WAITING, GS_PLUGIN_STATUS_FINISHED, GS_PLUGIN_STATUS_SETUP, GS_PLUGIN_STATUS_DOWNLOADING, GS_PLUGIN_STATUS_QUERYING, GS_PLUGIN_STATUS_INSTALLING, GS_PLUGIN_STATUS_REMOVING, GS_PLUGIN_STATUS_LAST /*< skip >*/ } GsPluginStatus; /** * GsPluginFlags: * @GS_PLUGIN_FLAGS_NONE: No flags set * @GS_PLUGIN_FLAGS_INTERACTIVE: User initiated the job * * The flags for the plugin at this point in time. **/ typedef enum { GS_PLUGIN_FLAGS_NONE = 0, GS_PLUGIN_FLAGS_INTERACTIVE = 1 << 4, } GsPluginFlags; /** * GsPluginError: * @GS_PLUGIN_ERROR_FAILED: Generic failure * @GS_PLUGIN_ERROR_NOT_SUPPORTED: Action not supported * @GS_PLUGIN_ERROR_CANCELLED: Action was cancelled * @GS_PLUGIN_ERROR_NO_NETWORK: No network connection available * @GS_PLUGIN_ERROR_NO_SECURITY: Security policy forbid action * @GS_PLUGIN_ERROR_NO_SPACE: No disk space to allow action * @GS_PLUGIN_ERROR_AUTH_REQUIRED: Authentication was required * @GS_PLUGIN_ERROR_AUTH_INVALID: Provided authentication was invalid * @GS_PLUGIN_ERROR_PLUGIN_DEPSOLVE_FAILED: The plugins installed are incompatible * @GS_PLUGIN_ERROR_DOWNLOAD_FAILED: The download action failed * @GS_PLUGIN_ERROR_WRITE_FAILED: The save-to-disk failed * @GS_PLUGIN_ERROR_INVALID_FORMAT: The data format is invalid * @GS_PLUGIN_ERROR_DELETE_FAILED: The delete action failed * @GS_PLUGIN_ERROR_RESTART_REQUIRED: A restart is required * @GS_PLUGIN_ERROR_AC_POWER_REQUIRED: AC power is required * @GS_PLUGIN_ERROR_TIMED_OUT: The job timed out * @GS_PLUGIN_ERROR_BATTERY_LEVEL_TOO_LOW: The system battery level is too low * * The failure error types. **/ typedef enum { GS_PLUGIN_ERROR_FAILED, GS_PLUGIN_ERROR_NOT_SUPPORTED, GS_PLUGIN_ERROR_CANCELLED, GS_PLUGIN_ERROR_NO_NETWORK, GS_PLUGIN_ERROR_NO_SECURITY, GS_PLUGIN_ERROR_NO_SPACE, GS_PLUGIN_ERROR_AUTH_REQUIRED, GS_PLUGIN_ERROR_AUTH_INVALID, GS_PLUGIN_ERROR_PLUGIN_DEPSOLVE_FAILED, GS_PLUGIN_ERROR_DOWNLOAD_FAILED, GS_PLUGIN_ERROR_WRITE_FAILED, GS_PLUGIN_ERROR_INVALID_FORMAT, GS_PLUGIN_ERROR_DELETE_FAILED, GS_PLUGIN_ERROR_RESTART_REQUIRED, GS_PLUGIN_ERROR_AC_POWER_REQUIRED, GS_PLUGIN_ERROR_TIMED_OUT, GS_PLUGIN_ERROR_BATTERY_LEVEL_TOO_LOW, GS_PLUGIN_ERROR_LAST /*< skip >*/ } GsPluginError; /** * GsPluginRefineFlags: * @GS_PLUGIN_REFINE_FLAGS_NONE: No explicit flags set * @GS_PLUGIN_REFINE_FLAGS_REQUIRE_ID: Require the app’s ID; this is the minimum possible requirement * @GS_PLUGIN_REFINE_FLAGS_REQUIRE_LICENSE: Require the license * @GS_PLUGIN_REFINE_FLAGS_REQUIRE_URL: Require the URL * @GS_PLUGIN_REFINE_FLAGS_REQUIRE_DESCRIPTION: Require the long description * @GS_PLUGIN_REFINE_FLAGS_REQUIRE_SIZE: Require the installed and download sizes * @GS_PLUGIN_REFINE_FLAGS_REQUIRE_RATING: Require the rating * @GS_PLUGIN_REFINE_FLAGS_REQUIRE_VERSION: Require the version * @GS_PLUGIN_REFINE_FLAGS_REQUIRE_HISTORY: Require the history * @GS_PLUGIN_REFINE_FLAGS_REQUIRE_SETUP_ACTION: Require enough to install or remove the package * @GS_PLUGIN_REFINE_FLAGS_REQUIRE_UPDATE_DETAILS: Require update details * @GS_PLUGIN_REFINE_FLAGS_REQUIRE_ORIGIN: Require the origin * @GS_PLUGIN_REFINE_FLAGS_REQUIRE_RELATED: Require related packages * @GS_PLUGIN_REFINE_FLAGS_REQUIRE_ADDONS: Require available addons * @GS_PLUGIN_REFINE_FLAGS_ALLOW_PACKAGES: Allow packages to be returned * @GS_PLUGIN_REFINE_FLAGS_REQUIRE_UPDATE_SEVERITY: Require update severity * @GS_PLUGIN_REFINE_FLAGS_REQUIRE_UPGRADE_REMOVED: Require distro upgrades * @GS_PLUGIN_REFINE_FLAGS_REQUIRE_PROVENANCE: Require the provenance * @GS_PLUGIN_REFINE_FLAGS_REQUIRE_REVIEWS: Require user-reviews * @GS_PLUGIN_REFINE_FLAGS_REQUIRE_REVIEW_RATINGS: Require user-ratings * @GS_PLUGIN_REFINE_FLAGS_DISABLE_FILTERING: Normally the results of a refine are * filtered to remove non-valid apps; if this flag is set, that won’t happen. * This is intended to be used by internal #GsPluginLoader code. (Since: 42) * @GS_PLUGIN_REFINE_FLAGS_REQUIRE_ICON: Require the icon to be loaded * @GS_PLUGIN_REFINE_FLAGS_REQUIRE_PERMISSIONS: Require the needed permissions * @GS_PLUGIN_REFINE_FLAGS_REQUIRE_ORIGIN_HOSTNAME: Require the origin hostname * @GS_PLUGIN_REFINE_FLAGS_REQUIRE_ORIGIN_UI: Require the origin for UI * @GS_PLUGIN_REFINE_FLAGS_REQUIRE_RUNTIME: Require the runtime * @GS_PLUGIN_REFINE_FLAGS_REQUIRE_SCREENSHOTS: Require screenshot information * @GS_PLUGIN_REFINE_FLAGS_REQUIRE_CATEGORIES: Require categories * @GS_PLUGIN_REFINE_FLAGS_REQUIRE_PROJECT_GROUP: Require project group * @GS_PLUGIN_REFINE_FLAGS_REQUIRE_DEVELOPER_NAME: Require developer name * @GS_PLUGIN_REFINE_FLAGS_REQUIRE_KUDOS: Require kudos * @GS_PLUGIN_REFINE_FLAGS_REQUIRE_CONTENT_RATING: Require content rating * @GS_PLUGIN_REFINE_FLAGS_REQUIRE_SIZE_DATA: Require user and cache data sizes (Since: 41) * @GS_PLUGIN_REFINE_FLAGS_MASK: All flags (Since: 40) * * The refine flags. **/ typedef enum { GS_PLUGIN_REFINE_FLAGS_NONE = 0, GS_PLUGIN_REFINE_FLAGS_REQUIRE_ID = 1 << 0, GS_PLUGIN_REFINE_FLAGS_REQUIRE_LICENSE = 1 << 1, GS_PLUGIN_REFINE_FLAGS_REQUIRE_URL = 1 << 2, GS_PLUGIN_REFINE_FLAGS_REQUIRE_DESCRIPTION = 1 << 3, GS_PLUGIN_REFINE_FLAGS_REQUIRE_SIZE = 1 << 4, GS_PLUGIN_REFINE_FLAGS_REQUIRE_RATING = 1 << 5, GS_PLUGIN_REFINE_FLAGS_REQUIRE_VERSION = 1 << 6, GS_PLUGIN_REFINE_FLAGS_REQUIRE_HISTORY = 1 << 7, GS_PLUGIN_REFINE_FLAGS_REQUIRE_SETUP_ACTION = 1 << 8, GS_PLUGIN_REFINE_FLAGS_REQUIRE_UPDATE_DETAILS = 1 << 9, GS_PLUGIN_REFINE_FLAGS_REQUIRE_ORIGIN = 1 << 10, GS_PLUGIN_REFINE_FLAGS_REQUIRE_RELATED = 1 << 11, GS_PLUGIN_REFINE_FLAGS_REQUIRE_SIZE_DATA = 1 << 12, GS_PLUGIN_REFINE_FLAGS_REQUIRE_ADDONS = 1 << 13, GS_PLUGIN_REFINE_FLAGS_ALLOW_PACKAGES = 1 << 14, /* TODO: move to request */ GS_PLUGIN_REFINE_FLAGS_REQUIRE_UPDATE_SEVERITY = 1 << 15, GS_PLUGIN_REFINE_FLAGS_REQUIRE_UPGRADE_REMOVED = 1 << 16, GS_PLUGIN_REFINE_FLAGS_REQUIRE_PROVENANCE = 1 << 17, GS_PLUGIN_REFINE_FLAGS_REQUIRE_REVIEWS = 1 << 18, GS_PLUGIN_REFINE_FLAGS_REQUIRE_REVIEW_RATINGS = 1 << 19, GS_PLUGIN_REFINE_FLAGS_DISABLE_FILTERING = 1 << 20, GS_PLUGIN_REFINE_FLAGS_REQUIRE_ICON = 1 << 21, GS_PLUGIN_REFINE_FLAGS_REQUIRE_PERMISSIONS = 1 << 22, GS_PLUGIN_REFINE_FLAGS_REQUIRE_ORIGIN_HOSTNAME = 1 << 23, GS_PLUGIN_REFINE_FLAGS_REQUIRE_ORIGIN_UI = 1 << 24, GS_PLUGIN_REFINE_FLAGS_REQUIRE_RUNTIME = 1 << 25, GS_PLUGIN_REFINE_FLAGS_REQUIRE_SCREENSHOTS = 1 << 26, GS_PLUGIN_REFINE_FLAGS_REQUIRE_CATEGORIES = 1 << 27, GS_PLUGIN_REFINE_FLAGS_REQUIRE_PROJECT_GROUP = 1 << 28, GS_PLUGIN_REFINE_FLAGS_REQUIRE_DEVELOPER_NAME = 1 << 29, GS_PLUGIN_REFINE_FLAGS_REQUIRE_KUDOS = 1 << 30, GS_PLUGIN_REFINE_FLAGS_REQUIRE_CONTENT_RATING = 1 << 31, GS_PLUGIN_REFINE_FLAGS_MASK = ~0, } GsPluginRefineFlags; /** * GsPluginListAppsFlags: * @GS_PLUGIN_LIST_APPS_FLAGS_NONE: No flags set. * @GS_PLUGIN_LIST_APPS_FLAGS_INTERACTIVE: User initiated the job. * * Flags for an operation to list apps matching a given query. * * Since: 43 */ typedef enum { GS_PLUGIN_LIST_APPS_FLAGS_NONE = 0, GS_PLUGIN_LIST_APPS_FLAGS_INTERACTIVE = 1 << 0, } GsPluginListAppsFlags; /** * GsPluginRefineCategoriesFlags: * @GS_PLUGIN_REFINE_CATEGORIES_FLAGS_NONE: No flags set. * @GS_PLUGIN_REFINE_CATEGORIES_FLAGS_INTERACTIVE: User initiated the job. * @GS_PLUGIN_REFINE_CATEGORIES_FLAGS_SIZE: Work out the number of apps in each category. * * Flags for an operation to refine categories. * * Since: 43 */ typedef enum { GS_PLUGIN_REFINE_CATEGORIES_FLAGS_NONE = 0, GS_PLUGIN_REFINE_CATEGORIES_FLAGS_INTERACTIVE = 1 << 0, GS_PLUGIN_REFINE_CATEGORIES_FLAGS_SIZE = 1 << 1, } GsPluginRefineCategoriesFlags; /** * GsPluginRefreshMetadataFlags: * @GS_PLUGIN_REFRESH_METADATA_FLAGS_NONE: No flags set. * @GS_PLUGIN_REFRESH_METADATA_FLAGS_INTERACTIVE: User initiated the job. * * Flags for an operation to refresh metadata. * * Since: 42 */ typedef enum { GS_PLUGIN_REFRESH_METADATA_FLAGS_NONE = 0, GS_PLUGIN_REFRESH_METADATA_FLAGS_INTERACTIVE = 1 << 0, } GsPluginRefreshMetadataFlags; /** * GsPluginListDistroUpgradesFlags: * @GS_PLUGIN_LIST_DISTRO_UPGRADES_FLAGS_NONE: No flags set. * @GS_PLUGIN_LIST_DISTRO_UPGRADES_FLAGS_INTERACTIVE: User initiated the job. * * Flags for an operation to list available distro upgrades. * * Since: 42 */ typedef enum { GS_PLUGIN_LIST_DISTRO_UPGRADES_FLAGS_NONE = 0, GS_PLUGIN_LIST_DISTRO_UPGRADES_FLAGS_INTERACTIVE = 1 << 0, } GsPluginListDistroUpgradesFlags; /** * GsPluginManageRepositoryFlags: * @GS_PLUGIN_MANAGE_REPOSITORY_FLAGS_NONE: No flags set. * @GS_PLUGIN_MANAGE_REPOSITORY_FLAGS_INTERACTIVE: User initiated the job. * @GS_PLUGIN_MANAGE_REPOSITORY_FLAGS_INSTALL: Install the repository. * @GS_PLUGIN_MANAGE_REPOSITORY_FLAGS_REMOVE: Remove the repository. * @GS_PLUGIN_MANAGE_REPOSITORY_FLAGS_ENABLE: Enable the repository. * @GS_PLUGIN_MANAGE_REPOSITORY_FLAGS_DISABLE: Disable the repository. * * Flags for an operation on a repository. * * Since: 42 */ typedef enum { GS_PLUGIN_MANAGE_REPOSITORY_FLAGS_NONE = 0, GS_PLUGIN_MANAGE_REPOSITORY_FLAGS_INTERACTIVE = 1 << 0, GS_PLUGIN_MANAGE_REPOSITORY_FLAGS_INSTALL = 1 << 1, GS_PLUGIN_MANAGE_REPOSITORY_FLAGS_REMOVE = 1 << 2, GS_PLUGIN_MANAGE_REPOSITORY_FLAGS_ENABLE = 1 << 3, GS_PLUGIN_MANAGE_REPOSITORY_FLAGS_DISABLE = 1 << 4, } GsPluginManageRepositoryFlags; /** * GsPluginRule: * @GS_PLUGIN_RULE_CONFLICTS: The plugin conflicts with another * @GS_PLUGIN_RULE_RUN_AFTER: Order the plugin after another * @GS_PLUGIN_RULE_RUN_BEFORE: Order the plugin before another * @GS_PLUGIN_RULE_BETTER_THAN: Results are better than another * * The rules used for ordering plugins. * Plugins are expected to add rules in the init function for their #GsPlugin * subclass. **/ typedef enum { GS_PLUGIN_RULE_CONFLICTS, GS_PLUGIN_RULE_RUN_AFTER, GS_PLUGIN_RULE_RUN_BEFORE, GS_PLUGIN_RULE_BETTER_THAN, GS_PLUGIN_RULE_LAST /*< skip >*/ } GsPluginRule; /** * GsPluginAction: * @GS_PLUGIN_ACTION_UNKNOWN: Action is unknown * @GS_PLUGIN_ACTION_INSTALL: Install an application * @GS_PLUGIN_ACTION_REMOVE: Remove an application * @GS_PLUGIN_ACTION_UPDATE: Update an application * @GS_PLUGIN_ACTION_UPGRADE_DOWNLOAD: Download a distro upgrade * @GS_PLUGIN_ACTION_UPGRADE_TRIGGER: Trigger a distro upgrade * @GS_PLUGIN_ACTION_LAUNCH: Launch an application * @GS_PLUGIN_ACTION_UPDATE_CANCEL: Cancel the update * @GS_PLUGIN_ACTION_GET_UPDATES: Get the list of updates * @GS_PLUGIN_ACTION_GET_SOURCES: Get the list of sources * @GS_PLUGIN_ACTION_FILE_TO_APP: Convert the file to an application * @GS_PLUGIN_ACTION_URL_TO_APP: Convert the URI to an application * @GS_PLUGIN_ACTION_GET_UPDATES_HISTORICAL: Get the list of historical updates * @GS_PLUGIN_ACTION_DOWNLOAD: Download an application * @GS_PLUGIN_ACTION_GET_LANGPACKS: Get appropriate language pack * @GS_PLUGIN_ACTION_INSTALL_REPO: Install a repository (Since: 41) * @GS_PLUGIN_ACTION_REMOVE_REPO: Remove a repository (Since: 41) * @GS_PLUGIN_ACTION_ENABLE_REPO: Enable a repository (Since: 41) * @GS_PLUGIN_ACTION_DISABLE_REPO: Disable a repository (Since: 41) * * The plugin action. **/ typedef enum { GS_PLUGIN_ACTION_UNKNOWN, GS_PLUGIN_ACTION_INSTALL, GS_PLUGIN_ACTION_REMOVE, GS_PLUGIN_ACTION_UPDATE, GS_PLUGIN_ACTION_UPGRADE_DOWNLOAD, GS_PLUGIN_ACTION_UPGRADE_TRIGGER, GS_PLUGIN_ACTION_LAUNCH, GS_PLUGIN_ACTION_UPDATE_CANCEL, GS_PLUGIN_ACTION_GET_UPDATES, GS_PLUGIN_ACTION_GET_SOURCES, GS_PLUGIN_ACTION_FILE_TO_APP, GS_PLUGIN_ACTION_URL_TO_APP, GS_PLUGIN_ACTION_GET_UPDATES_HISTORICAL, GS_PLUGIN_ACTION_DOWNLOAD, GS_PLUGIN_ACTION_GET_LANGPACKS, GS_PLUGIN_ACTION_INSTALL_REPO, GS_PLUGIN_ACTION_REMOVE_REPO, GS_PLUGIN_ACTION_ENABLE_REPO, GS_PLUGIN_ACTION_DISABLE_REPO, GS_PLUGIN_ACTION_LAST /*< skip >*/ } GsPluginAction; G_END_DECLS