[gnome-software] trivial: Move the plugin types out to a new file



commit 05f1272e72f929a9d3905a32f821aebb145376fc
Author: Richard Hughes <richard hughsie com>
Date:   Wed Oct 26 14:06:06 2016 +0100

    trivial: Move the plugin types out to a new file
    
    This prevents circular deps with GsPlugin and GsPluginEvent.

 src/Makefile.am       |    2 +
 src/gs-plugin-event.h |    2 +-
 src/gs-plugin-types.h |  307 +++++++++++++++++++++++++++++++++++++++++++++++++
 src/gs-plugin.h       |  280 +-------------------------------------------
 4 files changed, 315 insertions(+), 276 deletions(-)
---
diff --git a/src/Makefile.am b/src/Makefile.am
index d0e8e13..2a2f3d3 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -36,6 +36,7 @@ gnomesoftware_include_HEADERS =                               \
        gs-os-release.h                                 \
        gs-plugin.h                                     \
        gs-plugin-event.h                               \
+       gs-plugin-types.h                               \
        gs-plugin-vfuncs.h                              \
        gs-utils.h
 
@@ -203,6 +204,7 @@ gnome_software_SOURCES =                            \
        gs-plugin-event.c                               \
        gs-plugin-event.h                               \
        gs-plugin-private.h                             \
+       gs-plugin-types.h                               \
        gs-plugin-vfuncs.h                              \
        gs-progress-button.c                            \
        gs-progress-button.h                            \
diff --git a/src/gs-plugin-event.h b/src/gs-plugin-event.h
index bd0eb5e..20d0926 100644
--- a/src/gs-plugin-event.h
+++ b/src/gs-plugin-event.h
@@ -25,7 +25,7 @@
 #include <glib-object.h>
 
 #include "gs-app.h"
-#include "gs-plugin-private.h"
+#include "gs-plugin-types.h"
 
 G_BEGIN_DECLS
 
diff --git a/src/gs-plugin-types.h b/src/gs-plugin-types.h
new file mode 100644
index 0000000..b4f6d42
--- /dev/null
+++ b/src/gs-plugin-types.h
@@ -0,0 +1,307 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2012-2016 Richard Hughes <richard hughsie com>
+ *
+ * Licensed under the GNU General Public License Version 2
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifndef __GS_PLUGIN_TYPES_H
+#define __GS_PLUGIN_TYPES_H
+
+#include <glib-object.h>
+
+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 ststus 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,
+       /*< private >*/
+       GS_PLUGIN_STATUS_LAST
+} GsPluginStatus;
+
+/**
+ * GsPluginFlags:
+ * @GS_PLUGIN_FLAGS_NONE:              No flags set
+ * @GS_PLUGIN_FLAGS_RUNNING_SELF:      The plugin is running
+ * @GS_PLUGIN_FLAGS_RUNNING_OTHER:     Another plugin is running
+ * @GS_PLUGIN_FLAGS_EXCLUSIVE:         An exclusive action is running
+ * @GS_PLUGIN_FLAGS_RECENT:            This plugin recently ran
+ * @GS_PLUGIN_FLAGS_GLOBAL_CACHE:      Use the global app cache
+ *
+ * The flags for the plugin at this point in time.
+ **/
+#define GS_PLUGIN_FLAGS_NONE           (0u)
+#define GS_PLUGIN_FLAGS_RUNNING_SELF   (1u << 0)
+#define GS_PLUGIN_FLAGS_RUNNING_OTHER  (1u << 1)
+#define GS_PLUGIN_FLAGS_EXCLUSIVE      (1u << 2)
+#define GS_PLUGIN_FLAGS_RECENT         (1u << 3)
+#define GS_PLUGIN_FLAGS_GLOBAL_CACHE   (1u << 4)
+typedef guint64 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_PIN_REQUIRED:              PIN required for authentication
+ * @GS_PLUGIN_ERROR_ACCOUNT_SUSPENDED:         User account has been suspended
+ * @GS_PLUGIN_ERROR_ACCOUNT_DEACTIVATED:       User account has been deactivated
+ * @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
+ *
+ * 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_PIN_REQUIRED,
+       GS_PLUGIN_ERROR_ACCOUNT_SUSPENDED,
+       GS_PLUGIN_ERROR_ACCOUNT_DEACTIVATED,
+       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,
+       /*< private >*/
+       GS_PLUGIN_ERROR_LAST
+} GsPluginError;
+
+/**
+ * GsPluginRefineFlags:
+ * @GS_PLUGIN_REFINE_FLAGS_DEFAULT:                    No explicit flags set
+ * @GS_PLUGIN_REFINE_FLAGS_USE_HISTORY:                        Get the historical view
+ * @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_MENU_PATH:          Require the menu path
+ * @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_REQUIRE_KEY_COLORS:         Require the key colors
+ * @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
+ *
+ * The refine flags.
+ **/
+#define GS_PLUGIN_REFINE_FLAGS_DEFAULT                 (0u)
+#define GS_PLUGIN_REFINE_FLAGS_USE_HISTORY             (1u << 0)
+#define GS_PLUGIN_REFINE_FLAGS_REQUIRE_LICENSE         (1u << 1)
+#define GS_PLUGIN_REFINE_FLAGS_REQUIRE_URL             (1u << 2)
+#define GS_PLUGIN_REFINE_FLAGS_REQUIRE_DESCRIPTION     (1u << 3)
+#define GS_PLUGIN_REFINE_FLAGS_REQUIRE_SIZE            (1u << 4)
+#define GS_PLUGIN_REFINE_FLAGS_REQUIRE_RATING          (1u << 5)
+#define GS_PLUGIN_REFINE_FLAGS_REQUIRE_VERSION         (1u << 6)
+#define GS_PLUGIN_REFINE_FLAGS_REQUIRE_HISTORY         (1u << 7)
+#define GS_PLUGIN_REFINE_FLAGS_REQUIRE_SETUP_ACTION    (1u << 8)
+#define GS_PLUGIN_REFINE_FLAGS_REQUIRE_UPDATE_DETAILS  (1u << 9)
+#define GS_PLUGIN_REFINE_FLAGS_REQUIRE_ORIGIN          (1u << 10)
+#define GS_PLUGIN_REFINE_FLAGS_REQUIRE_RELATED         (1u << 11)
+#define GS_PLUGIN_REFINE_FLAGS_REQUIRE_MENU_PATH       (1u << 12)
+#define GS_PLUGIN_REFINE_FLAGS_REQUIRE_ADDONS          (1u << 13)
+#define GS_PLUGIN_REFINE_FLAGS_ALLOW_PACKAGES          (1u << 14)
+#define GS_PLUGIN_REFINE_FLAGS_REQUIRE_UPDATE_SEVERITY (1u << 15)
+#define GS_PLUGIN_REFINE_FLAGS_REQUIRE_UPGRADE_REMOVED (1u << 16)
+#define GS_PLUGIN_REFINE_FLAGS_REQUIRE_PROVENANCE      (1u << 17)
+#define GS_PLUGIN_REFINE_FLAGS_REQUIRE_REVIEWS         (1u << 18)
+#define GS_PLUGIN_REFINE_FLAGS_REQUIRE_REVIEW_RATINGS  (1u << 19)
+#define GS_PLUGIN_REFINE_FLAGS_REQUIRE_KEY_COLORS      (1u << 20)
+#define GS_PLUGIN_REFINE_FLAGS_REQUIRE_ICON            (1u << 21)
+#define GS_PLUGIN_REFINE_FLAGS_REQUIRE_PERMISSIONS     (1u << 22)
+#define GS_PLUGIN_REFINE_FLAGS_REQUIRE_ORIGIN_HOSTNAME (1u << 23)
+#define GS_PLUGIN_REFINE_FLAGS_REQUIRE_ORIGIN_UI       (1u << 24)
+typedef guint64 GsPluginRefineFlags;
+
+/**
+ * GsPluginRefreshFlags:
+ * @GS_PLUGIN_REFRESH_FLAGS_NONE:      Generate new metadata if possible
+ * @GS_PLUGIN_REFRESH_FLAGS_METADATA:  Download new metadata
+ * @GS_PLUGIN_REFRESH_FLAGS_PAYLOAD:   Download any pending payload
+ * @GS_PLUGIN_REFRESH_FLAGS_INTERACTIVE: Running by user request
+ *
+ * The flags used for refresh. Regeneration and downloading is only
+ * done if the cache is older than the %cache_age.
+ *
+ * The %GS_PLUGIN_REFRESH_FLAGS_METADATA can be used to make sure
+ * there's enough metadata to start the application.
+ * The %GS_PLUGIN_REFRESH_FLAGS_PAYLOAD flag should only be used when
+ * the session is idle and bandwidth is unmetered as the amount of data
+ * and IO may be large.
+ **/
+typedef enum {
+       GS_PLUGIN_REFRESH_FLAGS_NONE                    = 0,
+       GS_PLUGIN_REFRESH_FLAGS_METADATA                = 1 << 0,
+       GS_PLUGIN_REFRESH_FLAGS_PAYLOAD                 = 1 << 1,
+       GS_PLUGIN_REFRESH_FLAGS_INTERACTIVE             = 1 << 2,
+       /*< private >*/
+       GS_PLUGIN_REFRESH_FLAGS_LAST
+} GsPluginRefreshFlags;
+
+/**
+ * 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 gs_plugin_initialize().
+ **/
+typedef enum {
+       GS_PLUGIN_RULE_CONFLICTS,
+       GS_PLUGIN_RULE_RUN_AFTER,
+       GS_PLUGIN_RULE_RUN_BEFORE,
+       GS_PLUGIN_RULE_BETTER_THAN,
+       /*< private >*/
+       GS_PLUGIN_RULE_LAST
+} GsPluginRule;
+
+/**
+ * GsPluginAction:
+ * @GS_PLUGIN_ACTION_UNKNOWN:                  Action is unknown
+ * @GS_PLUGIN_ACTION_SETUP:                    Plugin setup (internal)
+ * @GS_PLUGIN_ACTION_INSTALL:                  Install an application
+ * @GS_PLUGIN_ACTION_REMOVE:                   Remove an application
+ * @GS_PLUGIN_ACTION_UPDATE:                   Update an application
+ * @GS_PLUGIN_ACTION_SET_RATING:               Set rating on 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_ADD_SHORTCUT:             Add a shortcut to an application
+ * @GS_PLUGIN_ACTION_REMOVE_SHORTCUT:          Remove a shortcut to an application
+ * @GS_PLUGIN_ACTION_REVIEW_SUBMIT:            Submit a new review
+ * @GS_PLUGIN_ACTION_REVIEW_UPVOTE:            Upvote an existing review
+ * @GS_PLUGIN_ACTION_REVIEW_DOWNVOTE:          Downvote an existing review
+ * @GS_PLUGIN_ACTION_REVIEW_REPORT:            Report an existing review
+ * @GS_PLUGIN_ACTION_REVIEW_REMOVE:            Remove a review written by the user
+ * @GS_PLUGIN_ACTION_REVIEW_DISMISS:           Dismiss (ignore) a review when moderating
+ * @GS_PLUGIN_ACTION_GET_UPDATES:              Get the list of updates
+ * @GS_PLUGIN_ACTION_GET_DISTRO_UPDATES:       Get the list of distro updates
+ * @GS_PLUGIN_ACTION_GET_UNVOTED_REVIEWS:      Get the list of moderatable reviews
+ * @GS_PLUGIN_ACTION_GET_SOURCES:              Get the list of sources
+ * @GS_PLUGIN_ACTION_GET_INSTALLED:            Get the list of installed applications
+ * @GS_PLUGIN_ACTION_GET_POPULAR:              Get the list of popular applications
+ * @GS_PLUGIN_ACTION_GET_FEATURED:             Get the list of featured applications
+ * @GS_PLUGIN_ACTION_SEARCH:                   Get the search results for a query
+ * @GS_PLUGIN_ACTION_SEARCH_FILES:             Get the search results for a file query
+ * @GS_PLUGIN_ACTION_SEARCH_PROVIDES:          Get the search results for a provide query
+ * @GS_PLUGIN_ACTION_GET_CATEGORIES:           Get the list of categories
+ * @GS_PLUGIN_ACTION_GET_CATEGORY_APPS:                Get the apps for a specific category
+ * @GS_PLUGIN_ACTION_REFINE:                   Refine the application
+ * @GS_PLUGIN_ACTION_REFRESH:                  Refresh all the sources
+ * @GS_PLUGIN_ACTION_FILE_TO_APP:              Convert the file to an application
+ * @GS_PLUGIN_ACTION_AUTH_LOGIN:               Authentication login action
+ * @GS_PLUGIN_ACTION_AUTH_LOGOUT:              Authentication logout action
+ * @GS_PLUGIN_ACTION_AUTH_REGISTER:            Authentication register action
+ * @GS_PLUGIN_ACTION_AUTH_LOST_PASSWORD:       Authentication lost password action
+ *
+ * The plugin action.
+ **/
+typedef enum {
+       GS_PLUGIN_ACTION_UNKNOWN,
+       GS_PLUGIN_ACTION_SETUP,
+       GS_PLUGIN_ACTION_INSTALL,
+       GS_PLUGIN_ACTION_REMOVE,
+       GS_PLUGIN_ACTION_UPDATE,
+       GS_PLUGIN_ACTION_SET_RATING,
+       GS_PLUGIN_ACTION_UPGRADE_DOWNLOAD,
+       GS_PLUGIN_ACTION_UPGRADE_TRIGGER,
+       GS_PLUGIN_ACTION_LAUNCH,
+       GS_PLUGIN_ACTION_UPDATE_CANCEL,
+       GS_PLUGIN_ACTION_ADD_SHORTCUT,
+       GS_PLUGIN_ACTION_REMOVE_SHORTCUT,
+       GS_PLUGIN_ACTION_REVIEW_SUBMIT,
+       GS_PLUGIN_ACTION_REVIEW_UPVOTE,
+       GS_PLUGIN_ACTION_REVIEW_DOWNVOTE,
+       GS_PLUGIN_ACTION_REVIEW_REPORT,
+       GS_PLUGIN_ACTION_REVIEW_REMOVE,
+       GS_PLUGIN_ACTION_REVIEW_DISMISS,
+       GS_PLUGIN_ACTION_GET_UPDATES,
+       GS_PLUGIN_ACTION_GET_DISTRO_UPDATES,
+       GS_PLUGIN_ACTION_GET_UNVOTED_REVIEWS,
+       GS_PLUGIN_ACTION_GET_SOURCES,
+       GS_PLUGIN_ACTION_GET_INSTALLED,
+       GS_PLUGIN_ACTION_GET_POPULAR,
+       GS_PLUGIN_ACTION_GET_FEATURED,
+       GS_PLUGIN_ACTION_SEARCH,
+       GS_PLUGIN_ACTION_SEARCH_FILES,
+       GS_PLUGIN_ACTION_SEARCH_PROVIDES,
+       GS_PLUGIN_ACTION_GET_CATEGORIES,
+       GS_PLUGIN_ACTION_GET_CATEGORY_APPS,
+       GS_PLUGIN_ACTION_REFINE,
+       GS_PLUGIN_ACTION_REFRESH,
+       GS_PLUGIN_ACTION_FILE_TO_APP,
+       GS_PLUGIN_ACTION_AUTH_LOGIN,
+       GS_PLUGIN_ACTION_AUTH_LOGOUT,
+       GS_PLUGIN_ACTION_AUTH_REGISTER,
+       GS_PLUGIN_ACTION_AUTH_LOST_PASSWORD,
+       /*< private >*/
+       GS_PLUGIN_ACTION_LAST
+} GsPluginAction;
+
+G_END_DECLS
+
+#endif /* __GS_PLUGIN_TYPES_H */
+
+/* vim: set noexpandtab: */
diff --git a/src/gs-plugin.h b/src/gs-plugin.h
index 8a9b9f2..4f60470 100644
--- a/src/gs-plugin.h
+++ b/src/gs-plugin.h
@@ -32,6 +32,8 @@
 #include "gs-app-list.h"
 #include "gs-auth.h"
 #include "gs-category.h"
+#include "gs-plugin-event.h"
+#include "gs-plugin-types.h"
 
 G_BEGIN_DECLS
 
@@ -47,285 +49,13 @@ struct _GsPluginClass
                                                         GsApp          *app,
                                                         guint           status);
        void                    (*reload)               (GsPlugin       *plugin);
-       gpointer                 padding[28];
+       void                    (*report_event)         (GsPlugin       *plugin,
+                                                        GsPluginEvent  *event);
+       gpointer                 padding[27];
 };
 
 typedef struct GsPluginData    GsPluginData;
 
-/**
- * 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 ststus 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,
-       /*< private >*/
-       GS_PLUGIN_STATUS_LAST
-} GsPluginStatus;
-
-/**
- * GsPluginFlags:
- * @GS_PLUGIN_FLAGS_NONE:              No flags set
- * @GS_PLUGIN_FLAGS_RUNNING_SELF:      The plugin is running
- * @GS_PLUGIN_FLAGS_RUNNING_OTHER:     Another plugin is running
- * @GS_PLUGIN_FLAGS_EXCLUSIVE:         An exclusive action is running
- * @GS_PLUGIN_FLAGS_RECENT:            This plugin recently ran
- * @GS_PLUGIN_FLAGS_GLOBAL_CACHE:      Use the global app cache
- *
- * The flags for the plugin at this point in time.
- **/
-#define GS_PLUGIN_FLAGS_NONE           (0u)
-#define GS_PLUGIN_FLAGS_RUNNING_SELF   (1u << 0)
-#define GS_PLUGIN_FLAGS_RUNNING_OTHER  (1u << 1)
-#define GS_PLUGIN_FLAGS_EXCLUSIVE      (1u << 2)
-#define GS_PLUGIN_FLAGS_RECENT         (1u << 3)
-#define GS_PLUGIN_FLAGS_GLOBAL_CACHE   (1u << 4)
-typedef guint64 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_PIN_REQUIRED:              PIN required for authentication
- * @GS_PLUGIN_ERROR_ACCOUNT_SUSPENDED:         User account has been suspended
- * @GS_PLUGIN_ERROR_ACCOUNT_DEACTIVATED:       User account has been deactivated
- * @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
- *
- * 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_PIN_REQUIRED,
-       GS_PLUGIN_ERROR_ACCOUNT_SUSPENDED,
-       GS_PLUGIN_ERROR_ACCOUNT_DEACTIVATED,
-       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,
-       /*< private >*/
-       GS_PLUGIN_ERROR_LAST
-} GsPluginError;
-
-/**
- * GsPluginRefineFlags:
- * @GS_PLUGIN_REFINE_FLAGS_DEFAULT:                    No explicit flags set
- * @GS_PLUGIN_REFINE_FLAGS_USE_HISTORY:                        Get the historical view
- * @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_MENU_PATH:          Require the menu path
- * @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_REQUIRE_KEY_COLORS:         Require the key colors
- * @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
- *
- * The refine flags.
- **/
-#define GS_PLUGIN_REFINE_FLAGS_DEFAULT                 (0u)
-#define GS_PLUGIN_REFINE_FLAGS_USE_HISTORY             (1u << 0)
-#define GS_PLUGIN_REFINE_FLAGS_REQUIRE_LICENSE         (1u << 1)
-#define GS_PLUGIN_REFINE_FLAGS_REQUIRE_URL             (1u << 2)
-#define GS_PLUGIN_REFINE_FLAGS_REQUIRE_DESCRIPTION     (1u << 3)
-#define GS_PLUGIN_REFINE_FLAGS_REQUIRE_SIZE            (1u << 4)
-#define GS_PLUGIN_REFINE_FLAGS_REQUIRE_RATING          (1u << 5)
-#define GS_PLUGIN_REFINE_FLAGS_REQUIRE_VERSION         (1u << 6)
-#define GS_PLUGIN_REFINE_FLAGS_REQUIRE_HISTORY         (1u << 7)
-#define GS_PLUGIN_REFINE_FLAGS_REQUIRE_SETUP_ACTION    (1u << 8)
-#define GS_PLUGIN_REFINE_FLAGS_REQUIRE_UPDATE_DETAILS  (1u << 9)
-#define GS_PLUGIN_REFINE_FLAGS_REQUIRE_ORIGIN          (1u << 10)
-#define GS_PLUGIN_REFINE_FLAGS_REQUIRE_RELATED         (1u << 11)
-#define GS_PLUGIN_REFINE_FLAGS_REQUIRE_MENU_PATH       (1u << 12)
-#define GS_PLUGIN_REFINE_FLAGS_REQUIRE_ADDONS          (1u << 13)
-#define GS_PLUGIN_REFINE_FLAGS_ALLOW_PACKAGES          (1u << 14)
-#define GS_PLUGIN_REFINE_FLAGS_REQUIRE_UPDATE_SEVERITY (1u << 15)
-#define GS_PLUGIN_REFINE_FLAGS_REQUIRE_UPGRADE_REMOVED (1u << 16)
-#define GS_PLUGIN_REFINE_FLAGS_REQUIRE_PROVENANCE      (1u << 17)
-#define GS_PLUGIN_REFINE_FLAGS_REQUIRE_REVIEWS         (1u << 18)
-#define GS_PLUGIN_REFINE_FLAGS_REQUIRE_REVIEW_RATINGS  (1u << 19)
-#define GS_PLUGIN_REFINE_FLAGS_REQUIRE_KEY_COLORS      (1u << 20)
-#define GS_PLUGIN_REFINE_FLAGS_REQUIRE_ICON            (1u << 21)
-#define GS_PLUGIN_REFINE_FLAGS_REQUIRE_PERMISSIONS     (1u << 22)
-#define GS_PLUGIN_REFINE_FLAGS_REQUIRE_ORIGIN_HOSTNAME (1u << 23)
-#define GS_PLUGIN_REFINE_FLAGS_REQUIRE_ORIGIN_UI       (1u << 24)
-typedef guint64 GsPluginRefineFlags;
-
-/**
- * GsPluginRefreshFlags:
- * @GS_PLUGIN_REFRESH_FLAGS_NONE:      Generate new metadata if possible
- * @GS_PLUGIN_REFRESH_FLAGS_METADATA:  Download new metadata
- * @GS_PLUGIN_REFRESH_FLAGS_PAYLOAD:   Download any pending payload
- * @GS_PLUGIN_REFRESH_FLAGS_INTERACTIVE: Running by user request
- *
- * The flags used for refresh. Regeneration and downloading is only
- * done if the cache is older than the %cache_age.
- *
- * The %GS_PLUGIN_REFRESH_FLAGS_METADATA can be used to make sure
- * there's enough metadata to start the application.
- * The %GS_PLUGIN_REFRESH_FLAGS_PAYLOAD flag should only be used when
- * the session is idle and bandwidth is unmetered as the amount of data
- * and IO may be large.
- **/
-typedef enum {
-       GS_PLUGIN_REFRESH_FLAGS_NONE                    = 0,
-       GS_PLUGIN_REFRESH_FLAGS_METADATA                = 1 << 0,
-       GS_PLUGIN_REFRESH_FLAGS_PAYLOAD                 = 1 << 1,
-       GS_PLUGIN_REFRESH_FLAGS_INTERACTIVE             = 1 << 2,
-       /*< private >*/
-       GS_PLUGIN_REFRESH_FLAGS_LAST
-} GsPluginRefreshFlags;
-
-/**
- * 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 gs_plugin_initialize().
- **/
-typedef enum {
-       GS_PLUGIN_RULE_CONFLICTS,
-       GS_PLUGIN_RULE_RUN_AFTER,
-       GS_PLUGIN_RULE_RUN_BEFORE,
-       GS_PLUGIN_RULE_BETTER_THAN,
-       /*< private >*/
-       GS_PLUGIN_RULE_LAST
-} GsPluginRule;
-
-/**
- * GsPluginAction:
- * @GS_PLUGIN_ACTION_UNKNOWN:                  Action is unknown
- * @GS_PLUGIN_ACTION_SETUP:                    Plugin setup (internal)
- * @GS_PLUGIN_ACTION_INSTALL:                  Install an application
- * @GS_PLUGIN_ACTION_REMOVE:                   Remove an application
- * @GS_PLUGIN_ACTION_UPDATE:                   Update an application
- * @GS_PLUGIN_ACTION_SET_RATING:               Set rating on 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_ADD_SHORTCUT:             Add a shortcut to an application
- * @GS_PLUGIN_ACTION_REMOVE_SHORTCUT:          Remove a shortcut to an application
- * @GS_PLUGIN_ACTION_REVIEW_SUBMIT:            Submit a new review
- * @GS_PLUGIN_ACTION_REVIEW_UPVOTE:            Upvote an existing review
- * @GS_PLUGIN_ACTION_REVIEW_DOWNVOTE:          Downvote an existing review
- * @GS_PLUGIN_ACTION_REVIEW_REPORT:            Report an existing review
- * @GS_PLUGIN_ACTION_REVIEW_REMOVE:            Remove a review written by the user
- * @GS_PLUGIN_ACTION_REVIEW_DISMISS:           Dismiss (ignore) a review when moderating
- * @GS_PLUGIN_ACTION_GET_UPDATES:              Get the list of updates
- * @GS_PLUGIN_ACTION_GET_DISTRO_UPDATES:       Get the list of distro updates
- * @GS_PLUGIN_ACTION_GET_UNVOTED_REVIEWS:      Get the list of moderatable reviews
- * @GS_PLUGIN_ACTION_GET_SOURCES:              Get the list of sources
- * @GS_PLUGIN_ACTION_GET_INSTALLED:            Get the list of installed applications
- * @GS_PLUGIN_ACTION_GET_POPULAR:              Get the list of popular applications
- * @GS_PLUGIN_ACTION_GET_FEATURED:             Get the list of featured applications
- * @GS_PLUGIN_ACTION_SEARCH:                   Get the search results for a query
- * @GS_PLUGIN_ACTION_SEARCH_FILES:             Get the search results for a file query
- * @GS_PLUGIN_ACTION_SEARCH_PROVIDES:          Get the search results for a provide query
- * @GS_PLUGIN_ACTION_GET_CATEGORIES:           Get the list of categories
- * @GS_PLUGIN_ACTION_GET_CATEGORY_APPS:                Get the apps for a specific category
- * @GS_PLUGIN_ACTION_REFINE:                   Refine the application
- * @GS_PLUGIN_ACTION_REFRESH:                  Refresh all the sources
- * @GS_PLUGIN_ACTION_FILE_TO_APP:              Convert the file to an application
- * @GS_PLUGIN_ACTION_AUTH_LOGIN:               Authentication login action
- * @GS_PLUGIN_ACTION_AUTH_LOGOUT:              Authentication logout action
- * @GS_PLUGIN_ACTION_AUTH_REGISTER:            Authentication register action
- * @GS_PLUGIN_ACTION_AUTH_LOST_PASSWORD:       Authentication lost password action
- *
- * The plugin action.
- **/
-typedef enum {
-       GS_PLUGIN_ACTION_UNKNOWN,
-       GS_PLUGIN_ACTION_SETUP,
-       GS_PLUGIN_ACTION_INSTALL,
-       GS_PLUGIN_ACTION_REMOVE,
-       GS_PLUGIN_ACTION_UPDATE,
-       GS_PLUGIN_ACTION_SET_RATING,
-       GS_PLUGIN_ACTION_UPGRADE_DOWNLOAD,
-       GS_PLUGIN_ACTION_UPGRADE_TRIGGER,
-       GS_PLUGIN_ACTION_LAUNCH,
-       GS_PLUGIN_ACTION_UPDATE_CANCEL,
-       GS_PLUGIN_ACTION_ADD_SHORTCUT,
-       GS_PLUGIN_ACTION_REMOVE_SHORTCUT,
-       GS_PLUGIN_ACTION_REVIEW_SUBMIT,
-       GS_PLUGIN_ACTION_REVIEW_UPVOTE,
-       GS_PLUGIN_ACTION_REVIEW_DOWNVOTE,
-       GS_PLUGIN_ACTION_REVIEW_REPORT,
-       GS_PLUGIN_ACTION_REVIEW_REMOVE,
-       GS_PLUGIN_ACTION_REVIEW_DISMISS,
-       GS_PLUGIN_ACTION_GET_UPDATES,
-       GS_PLUGIN_ACTION_GET_DISTRO_UPDATES,
-       GS_PLUGIN_ACTION_GET_UNVOTED_REVIEWS,
-       GS_PLUGIN_ACTION_GET_SOURCES,
-       GS_PLUGIN_ACTION_GET_INSTALLED,
-       GS_PLUGIN_ACTION_GET_POPULAR,
-       GS_PLUGIN_ACTION_GET_FEATURED,
-       GS_PLUGIN_ACTION_SEARCH,
-       GS_PLUGIN_ACTION_SEARCH_FILES,
-       GS_PLUGIN_ACTION_SEARCH_PROVIDES,
-       GS_PLUGIN_ACTION_GET_CATEGORIES,
-       GS_PLUGIN_ACTION_GET_CATEGORY_APPS,
-       GS_PLUGIN_ACTION_REFINE,
-       GS_PLUGIN_ACTION_REFRESH,
-       GS_PLUGIN_ACTION_FILE_TO_APP,
-       GS_PLUGIN_ACTION_AUTH_LOGIN,
-       GS_PLUGIN_ACTION_AUTH_LOGOUT,
-       GS_PLUGIN_ACTION_AUTH_REGISTER,
-       GS_PLUGIN_ACTION_AUTH_LOST_PASSWORD,
-       /*< private >*/
-       GS_PLUGIN_ACTION_LAST
-} GsPluginAction;
-
 /* helpers */
 #define        GS_PLUGIN_ERROR                                 gs_plugin_error_quark ()
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]