From 7ab04d0154b489fd9496a34b00f26e189def2ccb Mon Sep 17 00:00:00 2001 From: Sam Hartman Date: Tue, 17 Jan 2012 18:05:04 -0500 Subject: [PATCH] make dist --- po/moonshot-ui.pot | 113 ++ src/moonshot-custom-vbox.c | 72 +- src/moonshot-id.c | 12 +- src/moonshot-idcard-store.c | 89 ++ src/moonshot-idcard-widget.c | 2 +- src/moonshot-identities-manager.c | 717 ++--------- src/moonshot-identity-management-view.c | 2033 +++++++++++++++++++++++++++++++ src/moonshot-identity-manager-app.c | 273 +++++ src/moonshot-identity-request.c | 102 +- src/moonshot-local-flat-file-store.c | 741 +++++++++++ src/moonshot-server.c | 767 ++++++------ src/moonshot-utils.c | 1 + 12 files changed, 3820 insertions(+), 1102 deletions(-) create mode 100644 po/moonshot-ui.pot create mode 100644 src/moonshot-idcard-store.c create mode 100644 src/moonshot-identity-management-view.c create mode 100644 src/moonshot-identity-manager-app.c create mode 100644 src/moonshot-local-flat-file-store.c diff --git a/po/moonshot-ui.pot b/po/moonshot-ui.pot new file mode 100644 index 0000000..9c4cdb0 --- /dev/null +++ b/po/moonshot-ui.pot @@ -0,0 +1,113 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: moonshot-ui 0.1\n" +"Report-Msgid-Bugs-To: moonshot-community@jiscmail.ac.uk\n" +"POT-Creation-Date: 2012-01-17 22:57+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/moonshot-identity-management-view.vala:356 +#, c-format +msgid "Would you like to add '%s' ID Card to the ID Card Organizer?" +msgstr "" + +#: src/moonshot-identity-management-view.vala:429 +#, c-format +msgid "Are you sure you want to delete %s ID Card?" +msgstr "" + +#: src/moonshot-identity-management-view.vala:679 +#, c-format +msgid "Are you sure you want to stop '%s' ID Card to use %s?" +msgstr "" + +#: src/moonshot-identity-management-view.vala:765 +msgid "Moonshot project UI" +msgstr "" + +#: src/moonshot-identity-management-view.vala:769 +msgid "Visit the Moonshot project web site" +msgstr "" + +#: src/moonshot-identity-management-view.vala:771 +msgid "translator-credits" +msgstr "" + +#: src/moonshot-identity-management-view.vala:781 +msgid "_File" +msgstr "" + +#: src/moonshot-identity-management-view.vala:790 +msgid "Add ID Card" +msgstr "" + +#: src/moonshot-identity-management-view.vala:792 +msgid "Add a new ID Card" +msgstr "" + +#: src/moonshot-identity-management-view.vala:801 +msgid "Quit" +msgstr "" + +#: src/moonshot-identity-management-view.vala:803 +msgid "Quit the application" +msgstr "" + +#: src/moonshot-identity-management-view.vala:809 +msgid "_Help" +msgstr "" + +#: src/moonshot-identity-management-view.vala:818 +msgid "About" +msgstr "" + +#: src/moonshot-identity-management-view.vala:820 +msgid "About this application" +msgstr "" + +#: src/moonshot-identity-management-view.vala:850 +msgid "Search entry" +msgstr "" + +#: src/moonshot-identity-management-view.vala:850 +msgid "Search for a specific ID Card" +msgstr "" + +#: src/moonshot-identity-management-view.vala:855 +msgid "Search identity or service" +msgstr "" + +#: src/moonshot-identity-management-view.vala:862 +msgid "Clear the current search" +msgstr "" + +#: src/moonshot-identity-management-view.vala:886 +msgid "Login: " +msgstr "" + +#: src/moonshot-identity-management-view.vala:889 +msgid "Username:" +msgstr "" + +#: src/moonshot-identity-management-view.vala:892 +msgid "Password:" +msgstr "" + +#: src/moonshot-identity-management-view.vala:897 +msgid "Remember password" +msgstr "" + +#: src/moonshot-identity-management-view.vala:913 +msgid "Services:" +msgstr "" diff --git a/src/moonshot-custom-vbox.c b/src/moonshot-custom-vbox.c index 1575bf9..2b8f5f6 100644 --- a/src/moonshot-custom-vbox.c +++ b/src/moonshot-custom-vbox.c @@ -28,27 +28,37 @@ typedef struct _CustomVBoxPrivate CustomVBoxPrivate; typedef struct _IdCardWidget IdCardWidget; typedef struct _IdCardWidgetClass IdCardWidgetClass; -#define TYPE_MAIN_WINDOW (main_window_get_type ()) -#define MAIN_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MAIN_WINDOW, MainWindow)) -#define MAIN_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MAIN_WINDOW, MainWindowClass)) -#define IS_MAIN_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MAIN_WINDOW)) -#define IS_MAIN_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MAIN_WINDOW)) -#define MAIN_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MAIN_WINDOW, MainWindowClass)) - -typedef struct _MainWindow MainWindow; -typedef struct _MainWindowClass MainWindowClass; +#define TYPE_IDENTITY_MANAGER_VIEW (identity_manager_view_get_type ()) +#define IDENTITY_MANAGER_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IDENTITY_MANAGER_VIEW, IdentityManagerView)) +#define IDENTITY_MANAGER_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_IDENTITY_MANAGER_VIEW, IdentityManagerViewClass)) +#define IS_IDENTITY_MANAGER_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IDENTITY_MANAGER_VIEW)) +#define IS_IDENTITY_MANAGER_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_IDENTITY_MANAGER_VIEW)) +#define IDENTITY_MANAGER_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_IDENTITY_MANAGER_VIEW, IdentityManagerViewClass)) + +typedef struct _IdentityManagerView IdentityManagerView; +typedef struct _IdentityManagerViewClass IdentityManagerViewClass; #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) -typedef struct _MainWindowPrivate MainWindowPrivate; +typedef struct _IdentityManagerViewPrivate IdentityManagerViewPrivate; -#define TYPE_IDENTITIES_MANAGER (identities_manager_get_type ()) -#define IDENTITIES_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IDENTITIES_MANAGER, IdentitiesManager)) -#define IDENTITIES_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_IDENTITIES_MANAGER, IdentitiesManagerClass)) -#define IS_IDENTITIES_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IDENTITIES_MANAGER)) -#define IS_IDENTITIES_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_IDENTITIES_MANAGER)) -#define IDENTITIES_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_IDENTITIES_MANAGER, IdentitiesManagerClass)) +#define TYPE_IDENTITY_MANAGER_APP (identity_manager_app_get_type ()) +#define IDENTITY_MANAGER_APP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IDENTITY_MANAGER_APP, IdentityManagerApp)) +#define IDENTITY_MANAGER_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_IDENTITY_MANAGER_APP, IdentityManagerAppClass)) +#define IS_IDENTITY_MANAGER_APP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IDENTITY_MANAGER_APP)) +#define IS_IDENTITY_MANAGER_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_IDENTITY_MANAGER_APP)) +#define IDENTITY_MANAGER_APP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_IDENTITY_MANAGER_APP, IdentityManagerAppClass)) -typedef struct _IdentitiesManager IdentitiesManager; -typedef struct _IdentitiesManagerClass IdentitiesManagerClass; +typedef struct _IdentityManagerApp IdentityManagerApp; +typedef struct _IdentityManagerAppClass IdentityManagerAppClass; + +#define TYPE_IDENTITY_MANAGER_MODEL (identity_manager_model_get_type ()) +#define IDENTITY_MANAGER_MODEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IDENTITY_MANAGER_MODEL, IdentityManagerModel)) +#define IDENTITY_MANAGER_MODEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_IDENTITY_MANAGER_MODEL, IdentityManagerModelClass)) +#define IS_IDENTITY_MANAGER_MODEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IDENTITY_MANAGER_MODEL)) +#define IS_IDENTITY_MANAGER_MODEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_IDENTITY_MANAGER_MODEL)) +#define IDENTITY_MANAGER_MODEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_IDENTITY_MANAGER_MODEL, IdentityManagerModelClass)) + +typedef struct _IdentityManagerModel IdentityManagerModel; +typedef struct _IdentityManagerModelClass IdentityManagerModelClass; #define TYPE_IDENTITY_REQUEST (identity_request_get_type ()) #define IDENTITY_REQUEST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IDENTITY_REQUEST, IdentityRequest)) @@ -72,17 +82,18 @@ struct _CustomVBoxClass { struct _CustomVBoxPrivate { IdCardWidget* _current_idcard; - MainWindow* main_window; + IdentityManagerView* main_window; }; -struct _MainWindow { +struct _IdentityManagerView { GtkWindow parent_instance; - MainWindowPrivate * priv; - IdentitiesManager* identities_manager; + IdentityManagerViewPrivate * priv; + IdentityManagerApp* parent_app; + IdentityManagerModel* identities_manager; GQueue* request_queue; }; -struct _MainWindowClass { +struct _IdentityManagerViewClass { GtkWindowClass parent_class; }; @@ -91,19 +102,20 @@ static gpointer custom_vbox_parent_class = NULL; GType custom_vbox_get_type (void) G_GNUC_CONST; GType id_card_widget_get_type (void) G_GNUC_CONST; -GType main_window_get_type (void) G_GNUC_CONST; +GType identity_manager_view_get_type (void) G_GNUC_CONST; #define CUSTOM_VBOX_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_CUSTOM_VBOX, CustomVBoxPrivate)) enum { CUSTOM_VBOX_DUMMY_PROPERTY, CUSTOM_VBOX_CURRENT_IDCARD }; -CustomVBox* custom_vbox_new (MainWindow* window, gboolean homogeneous, gint spacing); -CustomVBox* custom_vbox_construct (GType object_type, MainWindow* window, gboolean homogeneous, gint spacing); +CustomVBox* custom_vbox_new (IdentityManagerView* window, gboolean homogeneous, gint spacing); +CustomVBox* custom_vbox_construct (GType object_type, IdentityManagerView* window, gboolean homogeneous, gint spacing); void custom_vbox_receive_expanded_event (CustomVBox* self, IdCardWidget* id_card_widget); void id_card_widget_collapse (IdCardWidget* self); void custom_vbox_set_current_idcard (CustomVBox* self, IdCardWidget* value); IdCardWidget* custom_vbox_get_current_idcard (CustomVBox* self); -GType identities_manager_get_type (void) G_GNUC_CONST; +GType identity_manager_app_get_type (void) G_GNUC_CONST; +GType identity_manager_model_get_type (void) G_GNUC_CONST; GType identity_request_get_type (void) G_GNUC_CONST; GtkButton* id_card_widget_get_send_button (IdCardWidget* self); void custom_vbox_add_id_card_widget (CustomVBox* self, IdCardWidget* id_card_widget); @@ -119,9 +131,9 @@ static gpointer _g_object_ref0 (gpointer self) { } -CustomVBox* custom_vbox_construct (GType object_type, MainWindow* window, gboolean homogeneous, gint spacing) { +CustomVBox* custom_vbox_construct (GType object_type, IdentityManagerView* window, gboolean homogeneous, gint spacing) { CustomVBox * self; - MainWindow* _tmp0_; + IdentityManagerView* _tmp0_; g_return_val_if_fail (window != NULL, NULL); self = g_object_newv (object_type, 0, NULL); self->priv->main_window = (_tmp0_ = _g_object_ref0 (window), _g_object_unref0 (self->priv->main_window), _tmp0_); @@ -131,7 +143,7 @@ CustomVBox* custom_vbox_construct (GType object_type, MainWindow* window, gboole } -CustomVBox* custom_vbox_new (MainWindow* window, gboolean homogeneous, gint spacing) { +CustomVBox* custom_vbox_new (IdentityManagerView* window, gboolean homogeneous, gint spacing) { return custom_vbox_construct (TYPE_CUSTOM_VBOX, window, homogeneous, spacing); } diff --git a/src/moonshot-id.c b/src/moonshot-id.c index 47f3a1f..66b88ae 100644 --- a/src/moonshot-id.c +++ b/src/moonshot-id.c @@ -139,10 +139,10 @@ const char* id_card_get_issuer (IdCard* self); void id_card_set_issuer (IdCard* self, const char* value); Rule* id_card_get_rules (IdCard* self, int* result_length1); void id_card_set_rules (IdCard* self, Rule* value, int value_length1); -static Rule* _vala_array_dup4 (Rule* self, int length); +static Rule* _vala_array_dup2 (Rule* self, int length); char** id_card_get_services (IdCard* self, int* result_length1); void id_card_set_services (IdCard* self, char** value, int value_length1); -static char** _vala_array_dup5 (char** self, int length); +static char** _vala_array_dup3 (char** self, int length); TrustAnchor* id_card_get_trust_anchor (IdCard* self); void id_card_set_trust_anchor (IdCard* self, TrustAnchor* value); GdkPixbuf* id_card_get_pixbuf (IdCard* self); @@ -456,7 +456,7 @@ Rule* id_card_get_rules (IdCard* self, int* result_length1) { } -static Rule* _vala_array_dup4 (Rule* self, int length) { +static Rule* _vala_array_dup2 (Rule* self, int length) { Rule* result; int i; Rule _tmp0_ = {0}; @@ -472,7 +472,7 @@ void id_card_set_rules (IdCard* self, Rule* value, int value_length1) { Rule* _tmp0_; Rule* _tmp1_; g_return_if_fail (self != NULL); - self->priv->_rules = (_tmp1_ = (_tmp0_ = value, (_tmp0_ == NULL) ? ((gpointer) _tmp0_) : _vala_array_dup4 (_tmp0_, value_length1)), self->priv->_rules = (_vala_Rule_array_free (self->priv->_rules, self->priv->_rules_length1), NULL), self->priv->_rules_length1 = value_length1, self->priv->__rules_size_ = self->priv->_rules_length1, _tmp1_); + self->priv->_rules = (_tmp1_ = (_tmp0_ = value, (_tmp0_ == NULL) ? ((gpointer) _tmp0_) : _vala_array_dup2 (_tmp0_, value_length1)), self->priv->_rules = (_vala_Rule_array_free (self->priv->_rules, self->priv->_rules_length1), NULL), self->priv->_rules_length1 = value_length1, self->priv->__rules_size_ = self->priv->_rules_length1, _tmp1_); } @@ -485,7 +485,7 @@ char** id_card_get_services (IdCard* self, int* result_length1) { } -static char** _vala_array_dup5 (char** self, int length) { +static char** _vala_array_dup3 (char** self, int length) { char** result; int i; result = g_new0 (char*, length + 1); @@ -500,7 +500,7 @@ void id_card_set_services (IdCard* self, char** value, int value_length1) { char** _tmp0_; char** _tmp1_; g_return_if_fail (self != NULL); - self->priv->_services = (_tmp1_ = (_tmp0_ = value, (_tmp0_ == NULL) ? ((gpointer) _tmp0_) : _vala_array_dup5 (_tmp0_, value_length1)), self->priv->_services = (_vala_array_free (self->priv->_services, self->priv->_services_length1, (GDestroyNotify) g_free), NULL), self->priv->_services_length1 = value_length1, self->priv->__services_size_ = self->priv->_services_length1, _tmp1_); + self->priv->_services = (_tmp1_ = (_tmp0_ = value, (_tmp0_ == NULL) ? ((gpointer) _tmp0_) : _vala_array_dup3 (_tmp0_, value_length1)), self->priv->_services = (_vala_array_free (self->priv->_services, self->priv->_services_length1, (GDestroyNotify) g_free), NULL), self->priv->_services_length1 = value_length1, self->priv->__services_size_ = self->priv->_services_length1, _tmp1_); g_object_notify ((GObject *) self, "services"); } diff --git a/src/moonshot-idcard-store.c b/src/moonshot-idcard-store.c new file mode 100644 index 0000000..ac36aee --- /dev/null +++ b/src/moonshot-idcard-store.c @@ -0,0 +1,89 @@ +/* moonshot-idcard-store.c generated by valac 0.10.4, the Vala compiler + * generated from moonshot-idcard-store.vala, do not modify */ + + +#include +#include +#include + + +#define TYPE_IIDENTITY_CARD_STORE (iidentity_card_store_get_type ()) +#define IIDENTITY_CARD_STORE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IIDENTITY_CARD_STORE, IIdentityCardStore)) +#define IS_IIDENTITY_CARD_STORE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IIDENTITY_CARD_STORE)) +#define IIDENTITY_CARD_STORE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), TYPE_IIDENTITY_CARD_STORE, IIdentityCardStoreIface)) + +typedef struct _IIdentityCardStore IIdentityCardStore; +typedef struct _IIdentityCardStoreIface IIdentityCardStoreIface; + +#define TYPE_ID_CARD (id_card_get_type ()) +#define ID_CARD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ID_CARD, IdCard)) +#define ID_CARD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ID_CARD, IdCardClass)) +#define IS_ID_CARD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ID_CARD)) +#define IS_ID_CARD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ID_CARD)) +#define ID_CARD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ID_CARD, IdCardClass)) + +typedef struct _IdCard IdCard; +typedef struct _IdCardClass IdCardClass; + +struct _IIdentityCardStoreIface { + GTypeInterface parent_iface; + void (*add_card) (IIdentityCardStore* self, IdCard* card); + void (*remove_card) (IIdentityCardStore* self, IdCard* card); + void (*update_card) (IIdentityCardStore* self, IdCard* card); + GeeLinkedList* (*get_card_list) (IIdentityCardStore* self); +}; + + + +GType id_card_get_type (void) G_GNUC_CONST; +GType iidentity_card_store_get_type (void) G_GNUC_CONST; +void iidentity_card_store_add_card (IIdentityCardStore* self, IdCard* card); +void iidentity_card_store_remove_card (IIdentityCardStore* self, IdCard* card); +void iidentity_card_store_update_card (IIdentityCardStore* self, IdCard* card); +GeeLinkedList* iidentity_card_store_get_card_list (IIdentityCardStore* self); + + + +void iidentity_card_store_add_card (IIdentityCardStore* self, IdCard* card) { + IIDENTITY_CARD_STORE_GET_INTERFACE (self)->add_card (self, card); +} + + +void iidentity_card_store_remove_card (IIdentityCardStore* self, IdCard* card) { + IIDENTITY_CARD_STORE_GET_INTERFACE (self)->remove_card (self, card); +} + + +void iidentity_card_store_update_card (IIdentityCardStore* self, IdCard* card) { + IIDENTITY_CARD_STORE_GET_INTERFACE (self)->update_card (self, card); +} + + +GeeLinkedList* iidentity_card_store_get_card_list (IIdentityCardStore* self) { + return IIDENTITY_CARD_STORE_GET_INTERFACE (self)->get_card_list (self); +} + + +static void iidentity_card_store_base_init (IIdentityCardStoreIface * iface) { + static gboolean initialized = FALSE; + if (!initialized) { + initialized = TRUE; + } +} + + +GType iidentity_card_store_get_type (void) { + static volatile gsize iidentity_card_store_type_id__volatile = 0; + if (g_once_init_enter (&iidentity_card_store_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (IIdentityCardStoreIface), (GBaseInitFunc) iidentity_card_store_base_init, (GBaseFinalizeFunc) NULL, (GClassInitFunc) NULL, (GClassFinalizeFunc) NULL, NULL, 0, 0, (GInstanceInitFunc) NULL, NULL }; + GType iidentity_card_store_type_id; + iidentity_card_store_type_id = g_type_register_static (G_TYPE_INTERFACE, "IIdentityCardStore", &g_define_type_info, 0); + g_type_interface_add_prerequisite (iidentity_card_store_type_id, G_TYPE_OBJECT); + g_once_init_leave (&iidentity_card_store_type_id__volatile, iidentity_card_store_type_id); + } + return iidentity_card_store_type_id__volatile; +} + + + + diff --git a/src/moonshot-idcard-widget.c b/src/moonshot-idcard-widget.c index e05421e..6ea4b63 100644 --- a/src/moonshot-idcard-widget.c +++ b/src/moonshot-idcard-widget.c @@ -166,7 +166,7 @@ void id_card_widget_update_id_card_label (IdCardWidget* self) { char* _tmp9_; g_return_if_fail (self != NULL); services_text = g_strdup (""); - display_name = g_markup_printf_escaped ("%s", id_card_get_display_name (self->priv->_id_card)); + display_name = g_markup_printf_escaped ("%s", id_card_get_display_name (self->priv->_id_card)); { gint i; i = 0; diff --git a/src/moonshot-identities-manager.c b/src/moonshot-identities-manager.c index 39a7d19..0e51985 100644 --- a/src/moonshot-identities-manager.c +++ b/src/moonshot-identities-manager.c @@ -4,24 +4,30 @@ #include #include +#include +#include #include #include -#include -#include -#include -#include -#define TYPE_IDENTITIES_MANAGER (identities_manager_get_type ()) -#define IDENTITIES_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IDENTITIES_MANAGER, IdentitiesManager)) -#define IDENTITIES_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_IDENTITIES_MANAGER, IdentitiesManagerClass)) -#define IS_IDENTITIES_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IDENTITIES_MANAGER)) -#define IS_IDENTITIES_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_IDENTITIES_MANAGER)) -#define IDENTITIES_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_IDENTITIES_MANAGER, IdentitiesManagerClass)) +#define TYPE_IDENTITY_MANAGER_MODEL (identity_manager_model_get_type ()) +#define IDENTITY_MANAGER_MODEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IDENTITY_MANAGER_MODEL, IdentityManagerModel)) +#define IDENTITY_MANAGER_MODEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_IDENTITY_MANAGER_MODEL, IdentityManagerModelClass)) +#define IS_IDENTITY_MANAGER_MODEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IDENTITY_MANAGER_MODEL)) +#define IS_IDENTITY_MANAGER_MODEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_IDENTITY_MANAGER_MODEL)) +#define IDENTITY_MANAGER_MODEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_IDENTITY_MANAGER_MODEL, IdentityManagerModelClass)) -typedef struct _IdentitiesManager IdentitiesManager; -typedef struct _IdentitiesManagerClass IdentitiesManagerClass; -typedef struct _IdentitiesManagerPrivate IdentitiesManagerPrivate; +typedef struct _IdentityManagerModel IdentityManagerModel; +typedef struct _IdentityManagerModelClass IdentityManagerModelClass; +typedef struct _IdentityManagerModelPrivate IdentityManagerModelPrivate; + +#define TYPE_IIDENTITY_CARD_STORE (iidentity_card_store_get_type ()) +#define IIDENTITY_CARD_STORE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IIDENTITY_CARD_STORE, IIdentityCardStore)) +#define IS_IIDENTITY_CARD_STORE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IIDENTITY_CARD_STORE)) +#define IIDENTITY_CARD_STORE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), TYPE_IIDENTITY_CARD_STORE, IIdentityCardStoreIface)) + +typedef struct _IIdentityCardStore IIdentityCardStore; +typedef struct _IIdentityCardStoreIface IIdentityCardStoreIface; #define TYPE_ID_CARD (id_card_get_type ()) #define ID_CARD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ID_CARD, IdCard)) @@ -32,629 +38,164 @@ typedef struct _IdentitiesManagerPrivate IdentitiesManagerPrivate; typedef struct _IdCard IdCard; typedef struct _IdCardClass IdCardClass; -#define __g_slist_free_g_object_unref0(var) ((var == NULL) ? NULL : (var = (_g_slist_free_g_object_unref (var), NULL))) -#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) -#define _g_free0(var) (var = (g_free (var), NULL)) -#define _g_key_file_free0(var) ((var == NULL) ? NULL : (var = (g_key_file_free (var), NULL))) -#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) -#define TYPE_RULE (rule_get_type ()) -typedef struct _Rule Rule; +#define TYPE_IDENTITY_MANAGER_APP (identity_manager_app_get_type ()) +#define IDENTITY_MANAGER_APP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IDENTITY_MANAGER_APP, IdentityManagerApp)) +#define IDENTITY_MANAGER_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_IDENTITY_MANAGER_APP, IdentityManagerAppClass)) +#define IS_IDENTITY_MANAGER_APP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IDENTITY_MANAGER_APP)) +#define IS_IDENTITY_MANAGER_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_IDENTITY_MANAGER_APP)) +#define IDENTITY_MANAGER_APP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_IDENTITY_MANAGER_APP, IdentityManagerAppClass)) -#define TYPE_TRUST_ANCHOR (trust_anchor_get_type ()) -#define TRUST_ANCHOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_TRUST_ANCHOR, TrustAnchor)) -#define TRUST_ANCHOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_TRUST_ANCHOR, TrustAnchorClass)) -#define IS_TRUST_ANCHOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_TRUST_ANCHOR)) -#define IS_TRUST_ANCHOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_TRUST_ANCHOR)) -#define TRUST_ANCHOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_TRUST_ANCHOR, TrustAnchorClass)) +typedef struct _IdentityManagerApp IdentityManagerApp; +typedef struct _IdentityManagerAppClass IdentityManagerAppClass; +#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) + +#define TYPE_LOCAL_FLAT_FILE_STORE (local_flat_file_store_get_type ()) +#define LOCAL_FLAT_FILE_STORE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_LOCAL_FLAT_FILE_STORE, LocalFlatFileStore)) +#define LOCAL_FLAT_FILE_STORE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_LOCAL_FLAT_FILE_STORE, LocalFlatFileStoreClass)) +#define IS_LOCAL_FLAT_FILE_STORE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_LOCAL_FLAT_FILE_STORE)) +#define IS_LOCAL_FLAT_FILE_STORE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_LOCAL_FLAT_FILE_STORE)) +#define LOCAL_FLAT_FILE_STORE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_LOCAL_FLAT_FILE_STORE, LocalFlatFileStoreClass)) -typedef struct _TrustAnchor TrustAnchor; -typedef struct _TrustAnchorClass TrustAnchorClass; +typedef struct _LocalFlatFileStore LocalFlatFileStore; +typedef struct _LocalFlatFileStoreClass LocalFlatFileStoreClass; -struct _IdentitiesManager { +struct _IdentityManagerModel { GObject parent_instance; - IdentitiesManagerPrivate * priv; - GSList* id_card_list; + IdentityManagerModelPrivate * priv; }; -struct _IdentitiesManagerClass { +struct _IdentityManagerModelClass { GObjectClass parent_class; }; -struct _Rule { - char* pattern; - char* always_confirm; +struct _IIdentityCardStoreIface { + GTypeInterface parent_iface; + void (*add_card) (IIdentityCardStore* self, IdCard* card); + void (*remove_card) (IIdentityCardStore* self, IdCard* card); + void (*update_card) (IIdentityCardStore* self, IdCard* card); + GeeLinkedList* (*get_card_list) (IIdentityCardStore* self); }; +struct _IdentityManagerModelPrivate { + IIdentityCardStore* store; + IdentityManagerApp* parent; +}; -static gpointer identities_manager_parent_class = NULL; -GType identities_manager_get_type (void) G_GNUC_CONST; +static gpointer identity_manager_model_parent_class = NULL; + +GType identity_manager_model_get_type (void) G_GNUC_CONST; GType id_card_get_type (void) G_GNUC_CONST; +GType iidentity_card_store_get_type (void) G_GNUC_CONST; +GType identity_manager_app_get_type (void) G_GNUC_CONST; +#define IDENTITY_MANAGER_MODEL_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_IDENTITY_MANAGER_MODEL, IdentityManagerModelPrivate)) enum { - IDENTITIES_MANAGER_DUMMY_PROPERTY + IDENTITY_MANAGER_MODEL_DUMMY_PROPERTY }; -static void _g_slist_free_g_object_unref (GSList* self); -#define IDENTITIES_MANAGER_FILE_NAME "identities.txt" -IdentitiesManager* identities_manager_new (void); -IdentitiesManager* identities_manager_construct (GType object_type); -static char* identities_manager_get_data_dir (IdentitiesManager* self); -IdCard* id_card_new (void); -IdCard* id_card_construct (GType object_type); -void id_card_set_issuer (IdCard* self, const char* value); -void id_card_set_username (IdCard* self, const char* value); -void id_card_set_password (IdCard* self, const char* value); -void id_card_set_services (IdCard* self, char** value, int value_length1); -void id_card_set_display_name (IdCard* self, const char* value); -GdkPixbuf* find_icon (const char* name, gint size); -GType rule_get_type (void) G_GNUC_CONST; -Rule* rule_dup (const Rule* self); -void rule_free (Rule* self); -void rule_copy (const Rule* self, Rule* dest); -void rule_destroy (Rule* self); -void id_card_set_rules (IdCard* self, Rule* value, int value_length1); -static void _vala_Rule_array_free (Rule* array, gint array_length); -GType trust_anchor_get_type (void) G_GNUC_CONST; -TrustAnchor* id_card_get_trust_anchor (IdCard* self); -void trust_anchor_set_ca_cert (TrustAnchor* self, const char* value); -void trust_anchor_set_subject (TrustAnchor* self, const char* value); -void trust_anchor_set_subject_alt (TrustAnchor* self, const char* value); -void trust_anchor_set_server_cert (TrustAnchor* self, const char* value); -void identities_manager_store_id_cards (IdentitiesManager* self); -Rule* id_card_get_rules (IdCard* self, int* result_length1); -const char* id_card_get_issuer (IdCard* self); -const char* id_card_get_display_name (IdCard* self); -const char* id_card_get_username (IdCard* self); -const char* id_card_get_password (IdCard* self); -char** id_card_get_services (IdCard* self, int* result_length1); -static char** _vala_array_dup3 (char** self, int length); -const char* trust_anchor_get_ca_cert (TrustAnchor* self); -const char* trust_anchor_get_subject (TrustAnchor* self); -const char* trust_anchor_get_subject_alt (TrustAnchor* self); -const char* trust_anchor_get_server_cert (TrustAnchor* self); -static void identities_manager_finalize (GObject* obj); -static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func); -static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func); - - - -static void _g_slist_free_g_object_unref (GSList* self) { - g_slist_foreach (self, (GFunc) g_object_unref, NULL); - g_slist_free (self); -} - - -static void _vala_Rule_array_free (Rule* array, gint array_length) { - if (array != NULL) { - int i; - for (i = 0; i < array_length; i = i + 1) { - rule_destroy (&array[i]); - } - } - g_free (array); -} - - -static gpointer _g_object_ref0 (gpointer self) { - return self ? g_object_ref (self) : NULL; -} - - -IdentitiesManager* identities_manager_construct (GType object_type) { - IdentitiesManager * self = NULL; - GSList* _tmp0_; - GKeyFile* key_file; - char* path; - char* filename; - gint identities_uris_length1; - gint _identities_uris_size_; - char** _tmp2_; - gsize _tmp1_; - char** identities_uris; - GError * _inner_error_ = NULL; - self = (IdentitiesManager*) g_object_new (object_type, NULL); - self->id_card_list = (_tmp0_ = NULL, __g_slist_free_g_object_unref0 (self->id_card_list), _tmp0_); - key_file = g_key_file_new (); - path = identities_manager_get_data_dir (self); - filename = g_build_filename (path, IDENTITIES_MANAGER_FILE_NAME, NULL); - { - g_key_file_load_from_file (key_file, filename, G_KEY_FILE_NONE, &_inner_error_); - if (_inner_error_ != NULL) { - goto __catch0_g_error; - } - } - goto __finally0; - __catch0_g_error: - { - GError * e; - e = _inner_error_; - _inner_error_ = NULL; - { - fprintf (stdout, "Error: %s\n", e->message); - _g_error_free0 (e); - _g_free0 (filename); - _g_free0 (path); - _g_key_file_free0 (key_file); - return self; - } - } - __finally0: - if (_inner_error_ != NULL) { - _g_free0 (filename); - _g_free0 (path); - _g_key_file_free0 (key_file); - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); - g_clear_error (&_inner_error_); - return NULL; - } - identities_uris = (_tmp2_ = g_key_file_get_groups (key_file, &_tmp1_), identities_uris_length1 = _tmp1_, _identities_uris_size_ = identities_uris_length1, _tmp2_); - { - char** identity_collection; - int identity_collection_length1; - int identity_it; - identity_collection = identities_uris; - identity_collection_length1 = identities_uris_length1; - for (identity_it = 0; identity_it < identities_uris_length1; identity_it = identity_it + 1) { - char* identity; - identity = g_strdup (identity_collection[identity_it]); - { - { - IdCard* id_card; - char* _tmp3_; - char* _tmp4_; - char* _tmp5_; - char* _tmp6_; - char* _tmp7_; - char* _tmp8_; - gint _tmp10__length1; - gint __tmp10__size_; - char** _tmp11_; - gsize _tmp9_; - char** _tmp10_; - char** _tmp12_; - gint _tmp12__length1; - char** _tmp13_; - char* _tmp14_; - char* _tmp15_; - gboolean _tmp16_ = FALSE; - gboolean _tmp17_; - char* _tmp28_; - char* _tmp29_; - char* _tmp30_; - char* _tmp31_; - char* _tmp32_; - char* _tmp33_; - char* _tmp34_; - char* _tmp35_; - id_card = id_card_new (); - _tmp3_ = g_key_file_get_string (key_file, identity, "Issuer", &_inner_error_); - if (_inner_error_ != NULL) { - _g_object_unref0 (id_card); - goto __catch1_g_error; - } - id_card_set_issuer (id_card, _tmp4_ = _tmp3_); - _g_free0 (_tmp4_); - _tmp5_ = g_key_file_get_string (key_file, identity, "Username", &_inner_error_); - if (_inner_error_ != NULL) { - _g_object_unref0 (id_card); - goto __catch1_g_error; - } - id_card_set_username (id_card, _tmp6_ = _tmp5_); - _g_free0 (_tmp6_); - _tmp7_ = g_key_file_get_string (key_file, identity, "Password", &_inner_error_); - if (_inner_error_ != NULL) { - _g_object_unref0 (id_card); - goto __catch1_g_error; - } - id_card_set_password (id_card, _tmp8_ = _tmp7_); - _g_free0 (_tmp8_); - _tmp10_ = (_tmp11_ = g_key_file_get_string_list (key_file, identity, "Services", &_tmp9_, &_inner_error_), _tmp10__length1 = _tmp9_, __tmp10__size_ = _tmp10__length1, _tmp11_); - if (_inner_error_ != NULL) { - _g_object_unref0 (id_card); - goto __catch1_g_error; - } - _tmp13_ = (_tmp12_ = _tmp10_, _tmp12__length1 = _tmp10__length1, _tmp12_); - id_card_set_services (id_card, _tmp13_, _tmp10__length1); - _tmp12_ = (_vala_array_free (_tmp12_, _tmp12__length1, (GDestroyNotify) g_free), NULL); - _tmp14_ = g_key_file_get_string (key_file, identity, "DisplayName", &_inner_error_); - if (_inner_error_ != NULL) { - _g_object_unref0 (id_card); - goto __catch1_g_error; - } - id_card_set_display_name (id_card, _tmp15_ = _tmp14_); - _g_free0 (_tmp15_); - g_object_set_data_full ((GObject*) id_card, "pixbuf", find_icon ("avatar-default", 48), g_object_unref); - _tmp17_ = g_key_file_has_key (key_file, identity, "Rules-Patterns", &_inner_error_); - if (_inner_error_ != NULL) { - _g_object_unref0 (id_card); - goto __catch1_g_error; - } - if (_tmp17_) { - gboolean _tmp18_; - _tmp18_ = g_key_file_has_key (key_file, identity, "Rules-AlwaysConfirm", &_inner_error_); - if (_inner_error_ != NULL) { - _g_object_unref0 (id_card); - goto __catch1_g_error; - } - _tmp16_ = _tmp18_; - } else { - _tmp16_ = FALSE; - } - if (_tmp16_) { - gint rules_patterns_length1; - gint _rules_patterns_size_; - char** _tmp20_; - gsize _tmp19_; - char** rules_patterns; - gint rules_always_conf_length1; - gint _rules_always_conf_size_; - char** _tmp22_; - gsize _tmp21_; - char** rules_always_conf; - rules_patterns = (_tmp20_ = g_key_file_get_string_list (key_file, identity, "Rules-Patterns", &_tmp19_, &_inner_error_), rules_patterns_length1 = _tmp19_, _rules_patterns_size_ = rules_patterns_length1, _tmp20_); - if (_inner_error_ != NULL) { - _g_object_unref0 (id_card); - goto __catch1_g_error; - } - rules_always_conf = (_tmp22_ = g_key_file_get_string_list (key_file, identity, "Rules-AlwaysConfirm", &_tmp21_, &_inner_error_), rules_always_conf_length1 = _tmp21_, _rules_always_conf_size_ = rules_always_conf_length1, _tmp22_); - if (_inner_error_ != NULL) { - rules_patterns = (_vala_array_free (rules_patterns, rules_patterns_length1, (GDestroyNotify) g_free), NULL); - _g_object_unref0 (id_card); - goto __catch1_g_error; - } - if (rules_patterns_length1 == rules_always_conf_length1) { - gint rules_length1; - gint _rules_size_; - Rule* _tmp23_; - Rule* rules; - Rule* _tmp27_; - rules = (_tmp23_ = g_new0 (Rule, rules_patterns_length1), rules_length1 = rules_patterns_length1, _rules_size_ = rules_length1, _tmp23_); - { - gint i; - i = 0; - { - gboolean _tmp24_; - _tmp24_ = TRUE; - while (TRUE) { - Rule _tmp25_ = {0}; - Rule _tmp26_; - if (!_tmp24_) { - i++; - } - _tmp24_ = FALSE; - if (!(i < rules_patterns_length1)) { - break; - } - rules[i] = (_tmp26_ = (_tmp25_.pattern = g_strdup (rules_patterns[i]), _tmp25_.always_confirm = g_strdup (rules_always_conf[i]), _tmp25_), rule_destroy (&rules[i]), _tmp26_); - } - } - } - _tmp27_ = rules; - id_card_set_rules (id_card, _tmp27_, rules_length1); - rules = (_vala_Rule_array_free (rules, rules_length1), NULL); - } - rules_always_conf = (_vala_array_free (rules_always_conf, rules_always_conf_length1, (GDestroyNotify) g_free), NULL); - rules_patterns = (_vala_array_free (rules_patterns, rules_patterns_length1, (GDestroyNotify) g_free), NULL); - } - _tmp28_ = g_key_file_get_string (key_file, identity, "CA-Cert", &_inner_error_); - if (_inner_error_ != NULL) { - _g_object_unref0 (id_card); - goto __catch1_g_error; - } - trust_anchor_set_ca_cert (id_card_get_trust_anchor (id_card), _tmp29_ = _tmp28_); - _g_free0 (_tmp29_); - _tmp30_ = g_key_file_get_string (key_file, identity, "Subject", &_inner_error_); - if (_inner_error_ != NULL) { - _g_object_unref0 (id_card); - goto __catch1_g_error; - } - trust_anchor_set_subject (id_card_get_trust_anchor (id_card), _tmp31_ = _tmp30_); - _g_free0 (_tmp31_); - _tmp32_ = g_key_file_get_string (key_file, identity, "SubjectAlt", &_inner_error_); - if (_inner_error_ != NULL) { - _g_object_unref0 (id_card); - goto __catch1_g_error; - } - trust_anchor_set_subject_alt (id_card_get_trust_anchor (id_card), _tmp33_ = _tmp32_); - _g_free0 (_tmp33_); - _tmp34_ = g_key_file_get_string (key_file, identity, "ServerCert", &_inner_error_); - if (_inner_error_ != NULL) { - _g_object_unref0 (id_card); - goto __catch1_g_error; - } - trust_anchor_set_server_cert (id_card_get_trust_anchor (id_card), _tmp35_ = _tmp34_); - _g_free0 (_tmp35_); - self->id_card_list = g_slist_prepend (self->id_card_list, _g_object_ref0 (id_card)); - _g_object_unref0 (id_card); - } - goto __finally1; - __catch1_g_error: - { - GError * e; - e = _inner_error_; - _inner_error_ = NULL; - { - fprintf (stdout, "Error: %s\n", e->message); - _g_error_free0 (e); - } - } - __finally1: - if (_inner_error_ != NULL) { - _g_free0 (identity); - identities_uris = (_vala_array_free (identities_uris, identities_uris_length1, (GDestroyNotify) g_free), NULL); - _g_free0 (filename); - _g_free0 (path); - _g_key_file_free0 (key_file); - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); - g_clear_error (&_inner_error_); - return NULL; - } - _g_free0 (identity); - } - } - } - identities_uris = (_vala_array_free (identities_uris, identities_uris_length1, (GDestroyNotify) g_free), NULL); - _g_free0 (filename); - _g_free0 (path); - _g_key_file_free0 (key_file); - return self; +#define IDENTITY_MANAGER_MODEL_FILE_NAME "identities.txt" +GeeLinkedList* identity_manager_model_get_card_list (IdentityManagerModel* self); +GeeLinkedList* iidentity_card_store_get_card_list (IIdentityCardStore* self); +void identity_manager_model_add_card (IdentityManagerModel* self, IdCard* card); +void iidentity_card_store_add_card (IIdentityCardStore* self, IdCard* card); +void identity_manager_model_update_card (IdentityManagerModel* self, IdCard* card); +void iidentity_card_store_update_card (IIdentityCardStore* self, IdCard* card); +void identity_manager_model_remove_card (IdentityManagerModel* self, IdCard* card); +void iidentity_card_store_remove_card (IIdentityCardStore* self, IdCard* card); +IdentityManagerModel* identity_manager_model_new (IdentityManagerApp* parent_app); +IdentityManagerModel* identity_manager_model_construct (GType object_type, IdentityManagerApp* parent_app); +LocalFlatFileStore* local_flat_file_store_new (void); +LocalFlatFileStore* local_flat_file_store_construct (GType object_type); +GType local_flat_file_store_get_type (void) G_GNUC_CONST; +static void identity_manager_model_finalize (GObject* obj); + + + +GeeLinkedList* identity_manager_model_get_card_list (IdentityManagerModel* self) { + GeeLinkedList* result = NULL; + g_return_val_if_fail (self != NULL, NULL); + result = iidentity_card_store_get_card_list (self->priv->store); + return result; } -IdentitiesManager* identities_manager_new (void) { - return identities_manager_construct (TYPE_IDENTITIES_MANAGER); +void identity_manager_model_add_card (IdentityManagerModel* self, IdCard* card) { + g_return_if_fail (self != NULL); + g_return_if_fail (card != NULL); + iidentity_card_store_add_card (self->priv->store, card); + g_signal_emit_by_name (self, "card-list-changed"); } -static char** _vala_array_dup3 (char** self, int length) { - char** result; - int i; - result = g_new0 (char*, length + 1); - for (i = 0; i < length; i++) { - result[i] = g_strdup (self[i]); - } - return result; +void identity_manager_model_update_card (IdentityManagerModel* self, IdCard* card) { + g_return_if_fail (self != NULL); + g_return_if_fail (card != NULL); + iidentity_card_store_update_card (self->priv->store, card); + g_signal_emit_by_name (self, "card-list-changed"); } -void identities_manager_store_id_cards (IdentitiesManager* self) { - GKeyFile* key_file; - char* text; - GError * _inner_error_ = NULL; +void identity_manager_model_remove_card (IdentityManagerModel* self, IdCard* card) { g_return_if_fail (self != NULL); - key_file = g_key_file_new (); - { - GSList* id_card_collection; - GSList* id_card_it; - id_card_collection = self->id_card_list; - for (id_card_it = id_card_collection; id_card_it != NULL; id_card_it = id_card_it->next) { - IdCard* id_card; - id_card = _g_object_ref0 ((IdCard*) id_card_it->data); - { - gint rules_patterns_length1; - gint _rules_patterns_size_; - char** _tmp1_; - gint _tmp0_; - char** rules_patterns; - gint rules_always_conf_length1; - gint _rules_always_conf_size_; - char** _tmp3_; - gint _tmp2_; - char** rules_always_conf; - char* _tmp10_; - char* _tmp12_; - char* _tmp14_; - char* _tmp16_; - gint _tmp20__length1; - gint __tmp20__size_; - char** _tmp21_; - gint _tmp18_; - char** _tmp19_; - char** _tmp20_; - gint _tmp24_; - char* _tmp25_; - char* _tmp27_; - char* _tmp29_; - char* _tmp31_; - rules_patterns = (_tmp1_ = g_new0 (char*, _tmp0_ + 1), rules_patterns_length1 = _tmp0_, _rules_patterns_size_ = rules_patterns_length1, _tmp1_); - rules_always_conf = (_tmp3_ = g_new0 (char*, _tmp2_ + 1), rules_always_conf_length1 = _tmp2_, _rules_always_conf_size_ = rules_always_conf_length1, _tmp3_); - { - gint i; - i = 0; - { - gboolean _tmp4_; - _tmp4_ = TRUE; - while (TRUE) { - gint _tmp5_; - gint _tmp6_; - char* _tmp7_; - gint _tmp8_; - char* _tmp9_; - if (!_tmp4_) { - i++; - } - _tmp4_ = FALSE; - if (!(i < _tmp5_)) { - break; - } - rules_patterns[i] = (_tmp7_ = g_strdup (id_card_get_rules (id_card, &_tmp6_)[i].pattern), _g_free0 (rules_patterns[i]), _tmp7_); - rules_always_conf[i] = (_tmp9_ = g_strdup (id_card_get_rules (id_card, &_tmp8_)[i].always_confirm), _g_free0 (rules_always_conf[i]), _tmp9_); - } - } - } - _tmp10_ = g_strdup (id_card_get_issuer (id_card)); - if (_tmp10_ == NULL) { - char* _tmp11_; - _tmp10_ = (_tmp11_ = g_strdup (""), _g_free0 (_tmp10_), _tmp11_); - } - g_key_file_set_string (key_file, id_card_get_display_name (id_card), "Issuer", _tmp10_); - _tmp12_ = g_strdup (id_card_get_display_name (id_card)); - if (_tmp12_ == NULL) { - char* _tmp13_; - _tmp12_ = (_tmp13_ = g_strdup (""), _g_free0 (_tmp12_), _tmp13_); - } - g_key_file_set_string (key_file, id_card_get_display_name (id_card), "DisplayName", _tmp12_); - _tmp14_ = g_strdup (id_card_get_username (id_card)); - if (_tmp14_ == NULL) { - char* _tmp15_; - _tmp14_ = (_tmp15_ = g_strdup (""), _g_free0 (_tmp14_), _tmp15_); - } - g_key_file_set_string (key_file, id_card_get_display_name (id_card), "Username", _tmp14_); - _tmp16_ = g_strdup (id_card_get_password (id_card)); - if (_tmp16_ == NULL) { - char* _tmp17_; - _tmp16_ = (_tmp17_ = g_strdup (""), _g_free0 (_tmp16_), _tmp17_); - } - g_key_file_set_string (key_file, id_card_get_display_name (id_card), "Password", _tmp16_); - _tmp20_ = (_tmp21_ = (_tmp19_ = id_card_get_services (id_card, &_tmp18_), (_tmp19_ == NULL) ? ((gpointer) _tmp19_) : _vala_array_dup3 (_tmp19_, _tmp18_)), _tmp20__length1 = _tmp18_, __tmp20__size_ = _tmp20__length1, _tmp21_); - if (_tmp20_ == NULL) { - char** _tmp22_ = NULL; - char** _tmp23_; - _tmp20_ = (_tmp23_ = (_tmp22_ = g_new0 (char*, 0 + 1), _tmp22_), _tmp20_ = (_vala_array_free (_tmp20_, _tmp20__length1, (GDestroyNotify) g_free), NULL), _tmp20__length1 = 0, __tmp20__size_ = _tmp20__length1, _tmp23_); - } - g_key_file_set_string_list (key_file, id_card_get_display_name (id_card), "Services", (const gchar* const*) _tmp20_, _tmp20__length1); - if (_tmp24_ > 0) { - g_key_file_set_string_list (key_file, id_card_get_display_name (id_card), "Rules-Patterns", (const gchar* const*) rules_patterns, rules_patterns_length1); - g_key_file_set_string_list (key_file, id_card_get_display_name (id_card), "Rules-AlwaysConfirm", (const gchar* const*) rules_always_conf, rules_always_conf_length1); - } - _tmp25_ = g_strdup (trust_anchor_get_ca_cert (id_card_get_trust_anchor (id_card))); - if (_tmp25_ == NULL) { - char* _tmp26_; - _tmp25_ = (_tmp26_ = g_strdup (""), _g_free0 (_tmp25_), _tmp26_); - } - g_key_file_set_string (key_file, id_card_get_display_name (id_card), "CA-Cert", _tmp25_); - _tmp27_ = g_strdup (trust_anchor_get_subject (id_card_get_trust_anchor (id_card))); - if (_tmp27_ == NULL) { - char* _tmp28_; - _tmp27_ = (_tmp28_ = g_strdup (""), _g_free0 (_tmp27_), _tmp28_); - } - g_key_file_set_string (key_file, id_card_get_display_name (id_card), "Subject", _tmp27_); - _tmp29_ = g_strdup (trust_anchor_get_subject_alt (id_card_get_trust_anchor (id_card))); - if (_tmp29_ == NULL) { - char* _tmp30_; - _tmp29_ = (_tmp30_ = g_strdup (""), _g_free0 (_tmp29_), _tmp30_); - } - g_key_file_set_string (key_file, id_card_get_display_name (id_card), "SubjectAlt", _tmp29_); - _tmp31_ = g_strdup (trust_anchor_get_server_cert (id_card_get_trust_anchor (id_card))); - if (_tmp31_ == NULL) { - char* _tmp32_; - _tmp31_ = (_tmp32_ = g_strdup (""), _g_free0 (_tmp31_), _tmp32_); - } - g_key_file_set_string (key_file, id_card_get_display_name (id_card), "ServerCert", _tmp31_); - _g_free0 (_tmp31_); - _g_free0 (_tmp29_); - _g_free0 (_tmp27_); - _g_free0 (_tmp25_); - _tmp20_ = (_vala_array_free (_tmp20_, _tmp20__length1, (GDestroyNotify) g_free), NULL); - _g_free0 (_tmp16_); - _g_free0 (_tmp14_); - _g_free0 (_tmp12_); - _g_free0 (_tmp10_); - rules_always_conf = (_vala_array_free (rules_always_conf, rules_always_conf_length1, (GDestroyNotify) g_free), NULL); - rules_patterns = (_vala_array_free (rules_patterns, rules_patterns_length1, (GDestroyNotify) g_free), NULL); - _g_object_unref0 (id_card); - } - } - } - text = g_key_file_to_data (key_file, NULL, NULL); - { - char* path; - char* filename; - path = identities_manager_get_data_dir (self); - filename = g_build_filename (path, IDENTITIES_MANAGER_FILE_NAME, NULL); - g_file_set_contents (filename, text, (gssize) (-1), &_inner_error_); - if (_inner_error_ != NULL) { - _g_free0 (filename); - _g_free0 (path); - goto __catch2_g_error; - } - _g_free0 (filename); - _g_free0 (path); - } - goto __finally2; - __catch2_g_error: - { - GError * e; - e = _inner_error_; - _inner_error_ = NULL; - { - fprintf (stdout, "Error: %s\n", e->message); - _g_error_free0 (e); - } - } - __finally2: - if (_inner_error_ != NULL) { - _g_free0 (text); - _g_key_file_free0 (key_file); - g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); - g_clear_error (&_inner_error_); - return; - } - _g_free0 (text); - _g_key_file_free0 (key_file); + g_return_if_fail (card != NULL); + iidentity_card_store_remove_card (self->priv->store, card); + g_signal_emit_by_name (self, "card-list-changed"); } -static char* identities_manager_get_data_dir (IdentitiesManager* self) { - char* result = NULL; - char* path; - char* _tmp0_; - g_return_val_if_fail (self != NULL, NULL); - path = NULL; - path = (_tmp0_ = g_build_filename (g_get_user_data_dir (), PACKAGE_TARNAME, NULL), _g_free0 (path), _tmp0_); - if (!g_file_test (path, G_FILE_TEST_EXISTS)) { - g_mkdir (path, 0700); - } - result = path; - return result; +static gpointer _g_object_ref0 (gpointer self) { + return self ? g_object_ref (self) : NULL; } -static void identities_manager_class_init (IdentitiesManagerClass * klass) { - identities_manager_parent_class = g_type_class_peek_parent (klass); - G_OBJECT_CLASS (klass)->finalize = identities_manager_finalize; +IdentityManagerModel* identity_manager_model_construct (GType object_type, IdentityManagerApp* parent_app) { + IdentityManagerModel * self = NULL; + IdentityManagerApp* _tmp0_; + IIdentityCardStore* _tmp1_; + g_return_val_if_fail (parent_app != NULL, NULL); + self = (IdentityManagerModel*) g_object_new (object_type, NULL); + self->priv->parent = (_tmp0_ = _g_object_ref0 (parent_app), _g_object_unref0 (self->priv->parent), _tmp0_); + self->priv->store = (_tmp1_ = (IIdentityCardStore*) local_flat_file_store_new (), _g_object_unref0 (self->priv->store), _tmp1_); + return self; } -static void identities_manager_instance_init (IdentitiesManager * self) { +IdentityManagerModel* identity_manager_model_new (IdentityManagerApp* parent_app) { + return identity_manager_model_construct (TYPE_IDENTITY_MANAGER_MODEL, parent_app); } -static void identities_manager_finalize (GObject* obj) { - IdentitiesManager * self; - self = IDENTITIES_MANAGER (obj); - __g_slist_free_g_object_unref0 (self->id_card_list); - G_OBJECT_CLASS (identities_manager_parent_class)->finalize (obj); +static void identity_manager_model_class_init (IdentityManagerModelClass * klass) { + identity_manager_model_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (IdentityManagerModelPrivate)); + G_OBJECT_CLASS (klass)->finalize = identity_manager_model_finalize; + g_signal_new ("card_list_changed", TYPE_IDENTITY_MANAGER_MODEL, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); } -GType identities_manager_get_type (void) { - static volatile gsize identities_manager_type_id__volatile = 0; - if (g_once_init_enter (&identities_manager_type_id__volatile)) { - static const GTypeInfo g_define_type_info = { sizeof (IdentitiesManagerClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) identities_manager_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (IdentitiesManager), 0, (GInstanceInitFunc) identities_manager_instance_init, NULL }; - GType identities_manager_type_id; - identities_manager_type_id = g_type_register_static (G_TYPE_OBJECT, "IdentitiesManager", &g_define_type_info, 0); - g_once_init_leave (&identities_manager_type_id__volatile, identities_manager_type_id); - } - return identities_manager_type_id__volatile; +static void identity_manager_model_instance_init (IdentityManagerModel * self) { + self->priv = IDENTITY_MANAGER_MODEL_GET_PRIVATE (self); } -static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) { - if ((array != NULL) && (destroy_func != NULL)) { - int i; - for (i = 0; i < array_length; i = i + 1) { - if (((gpointer*) array)[i] != NULL) { - destroy_func (((gpointer*) array)[i]); - } - } - } +static void identity_manager_model_finalize (GObject* obj) { + IdentityManagerModel * self; + self = IDENTITY_MANAGER_MODEL (obj); + _g_object_unref0 (self->priv->store); + _g_object_unref0 (self->priv->parent); + G_OBJECT_CLASS (identity_manager_model_parent_class)->finalize (obj); } -static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) { - _vala_array_destroy (array, array_length, destroy_func); - g_free (array); +GType identity_manager_model_get_type (void) { + static volatile gsize identity_manager_model_type_id__volatile = 0; + if (g_once_init_enter (&identity_manager_model_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (IdentityManagerModelClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) identity_manager_model_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (IdentityManagerModel), 0, (GInstanceInitFunc) identity_manager_model_instance_init, NULL }; + GType identity_manager_model_type_id; + identity_manager_model_type_id = g_type_register_static (G_TYPE_OBJECT, "IdentityManagerModel", &g_define_type_info, 0); + g_once_init_leave (&identity_manager_model_type_id__volatile, identity_manager_model_type_id); + } + return identity_manager_model_type_id__volatile; } diff --git a/src/moonshot-identity-management-view.c b/src/moonshot-identity-management-view.c new file mode 100644 index 0000000..1ad8600 --- /dev/null +++ b/src/moonshot-identity-management-view.c @@ -0,0 +1,2033 @@ +/* moonshot-identity-management-view.c generated by valac 0.10.4, the Vala compiler + * generated from moonshot-identity-management-view.vala, do not modify */ + + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#define TYPE_IDENTITY_MANAGER_VIEW (identity_manager_view_get_type ()) +#define IDENTITY_MANAGER_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IDENTITY_MANAGER_VIEW, IdentityManagerView)) +#define IDENTITY_MANAGER_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_IDENTITY_MANAGER_VIEW, IdentityManagerViewClass)) +#define IS_IDENTITY_MANAGER_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IDENTITY_MANAGER_VIEW)) +#define IS_IDENTITY_MANAGER_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_IDENTITY_MANAGER_VIEW)) +#define IDENTITY_MANAGER_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_IDENTITY_MANAGER_VIEW, IdentityManagerViewClass)) + +typedef struct _IdentityManagerView IdentityManagerView; +typedef struct _IdentityManagerViewClass IdentityManagerViewClass; +typedef struct _IdentityManagerViewPrivate IdentityManagerViewPrivate; + +#define TYPE_IDENTITY_MANAGER_APP (identity_manager_app_get_type ()) +#define IDENTITY_MANAGER_APP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IDENTITY_MANAGER_APP, IdentityManagerApp)) +#define IDENTITY_MANAGER_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_IDENTITY_MANAGER_APP, IdentityManagerAppClass)) +#define IS_IDENTITY_MANAGER_APP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IDENTITY_MANAGER_APP)) +#define IS_IDENTITY_MANAGER_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_IDENTITY_MANAGER_APP)) +#define IDENTITY_MANAGER_APP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_IDENTITY_MANAGER_APP, IdentityManagerAppClass)) + +typedef struct _IdentityManagerApp IdentityManagerApp; +typedef struct _IdentityManagerAppClass IdentityManagerAppClass; + +#define TYPE_IDENTITY_MANAGER_MODEL (identity_manager_model_get_type ()) +#define IDENTITY_MANAGER_MODEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IDENTITY_MANAGER_MODEL, IdentityManagerModel)) +#define IDENTITY_MANAGER_MODEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_IDENTITY_MANAGER_MODEL, IdentityManagerModelClass)) +#define IS_IDENTITY_MANAGER_MODEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IDENTITY_MANAGER_MODEL)) +#define IS_IDENTITY_MANAGER_MODEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_IDENTITY_MANAGER_MODEL)) +#define IDENTITY_MANAGER_MODEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_IDENTITY_MANAGER_MODEL, IdentityManagerModelClass)) + +typedef struct _IdentityManagerModel IdentityManagerModel; +typedef struct _IdentityManagerModelClass IdentityManagerModelClass; + +#define TYPE_IDENTITY_REQUEST (identity_request_get_type ()) +#define IDENTITY_REQUEST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IDENTITY_REQUEST, IdentityRequest)) +#define IDENTITY_REQUEST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_IDENTITY_REQUEST, IdentityRequestClass)) +#define IS_IDENTITY_REQUEST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IDENTITY_REQUEST)) +#define IS_IDENTITY_REQUEST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_IDENTITY_REQUEST)) +#define IDENTITY_REQUEST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_IDENTITY_REQUEST, IdentityRequestClass)) + +typedef struct _IdentityRequest IdentityRequest; +typedef struct _IdentityRequestClass IdentityRequestClass; + +#define TYPE_CUSTOM_VBOX (custom_vbox_get_type ()) +#define CUSTOM_VBOX(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CUSTOM_VBOX, CustomVBox)) +#define CUSTOM_VBOX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_CUSTOM_VBOX, CustomVBoxClass)) +#define IS_CUSTOM_VBOX(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CUSTOM_VBOX)) +#define IS_CUSTOM_VBOX_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CUSTOM_VBOX)) +#define CUSTOM_VBOX_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CUSTOM_VBOX, CustomVBoxClass)) + +typedef struct _CustomVBox CustomVBox; +typedef struct _CustomVBoxClass CustomVBoxClass; + +#define TYPE_ID_CARD (id_card_get_type ()) +#define ID_CARD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ID_CARD, IdCard)) +#define ID_CARD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ID_CARD, IdCardClass)) +#define IS_ID_CARD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ID_CARD)) +#define IS_ID_CARD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ID_CARD)) +#define ID_CARD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ID_CARD, IdCardClass)) + +typedef struct _IdCard IdCard; +typedef struct _IdCardClass IdCardClass; + +#define IDENTITY_MANAGER_VIEW_TYPE_COLUMNS (identity_manager_view_columns_get_type ()) +#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) +#define __g_slist_free_g_object_unref0(var) ((var == NULL) ? NULL : (var = (_g_slist_free_g_object_unref (var), NULL))) +#define _g_queue_free0(var) ((var == NULL) ? NULL : (var = (g_queue_free (var), NULL))) +#define _g_hash_table_unref0(var) ((var == NULL) ? NULL : (var = (g_hash_table_unref (var), NULL))) +typedef struct _IdentityManagerAppPrivate IdentityManagerAppPrivate; +#define _g_free0(var) (var = (g_free (var), NULL)) + +#define TYPE_ID_CARD_WIDGET (id_card_widget_get_type ()) +#define ID_CARD_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ID_CARD_WIDGET, IdCardWidget)) +#define ID_CARD_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ID_CARD_WIDGET, IdCardWidgetClass)) +#define IS_ID_CARD_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ID_CARD_WIDGET)) +#define IS_ID_CARD_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ID_CARD_WIDGET)) +#define ID_CARD_WIDGET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ID_CARD_WIDGET, IdCardWidgetClass)) + +typedef struct _IdCardWidget IdCardWidget; +typedef struct _IdCardWidgetClass IdCardWidgetClass; +#define _g_list_free0(var) ((var == NULL) ? NULL : (var = (g_list_free (var), NULL))) + +#define TYPE_ADD_IDENTITY_DIALOG (add_identity_dialog_get_type ()) +#define ADD_IDENTITY_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ADD_IDENTITY_DIALOG, AddIdentityDialog)) +#define ADD_IDENTITY_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ADD_IDENTITY_DIALOG, AddIdentityDialogClass)) +#define IS_ADD_IDENTITY_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ADD_IDENTITY_DIALOG)) +#define IS_ADD_IDENTITY_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ADD_IDENTITY_DIALOG)) +#define ADD_IDENTITY_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ADD_IDENTITY_DIALOG, AddIdentityDialogClass)) + +typedef struct _AddIdentityDialog AddIdentityDialog; +typedef struct _AddIdentityDialogClass AddIdentityDialogClass; +typedef struct _IdentityRequestPrivate IdentityRequestPrivate; +#define __g_slist_free_g_free0(var) ((var == NULL) ? NULL : (var = (_g_slist_free_g_free (var), NULL))) + +#define TYPE_RULE (rule_get_type ()) +typedef struct _Rule Rule; +typedef struct _Block1Data Block1Data; +#define _g_pattern_spec_free0(var) ((var == NULL) ? NULL : (var = (g_pattern_spec_free (var), NULL))) + +#define TYPE_ADD_PASSWORD_DIALOG (add_password_dialog_get_type ()) +#define ADD_PASSWORD_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ADD_PASSWORD_DIALOG, AddPasswordDialog)) +#define ADD_PASSWORD_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ADD_PASSWORD_DIALOG, AddPasswordDialogClass)) +#define IS_ADD_PASSWORD_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ADD_PASSWORD_DIALOG)) +#define IS_ADD_PASSWORD_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ADD_PASSWORD_DIALOG)) +#define ADD_PASSWORD_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ADD_PASSWORD_DIALOG, AddPasswordDialogClass)) + +typedef struct _AddPasswordDialog AddPasswordDialog; +typedef struct _AddPasswordDialogClass AddPasswordDialogClass; +#define _pango_font_description_free0(var) ((var == NULL) ? NULL : (var = (pango_font_description_free (var), NULL))) +#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) + +struct _IdentityManagerView { + GtkWindow parent_instance; + IdentityManagerViewPrivate * priv; + IdentityManagerApp* parent_app; + IdentityManagerModel* identities_manager; + GQueue* request_queue; +}; + +struct _IdentityManagerViewClass { + GtkWindowClass parent_class; +}; + +struct _IdentityManagerViewPrivate { + GtkUIManager* ui_manager; + GtkEntry* search_entry; + GtkVBox* vbox_right; + CustomVBox* custom_vbox; + GtkVBox* services_internal_vbox; + GtkEntry* username_entry; + GtkEntry* password_entry; + GtkListStore* listmodel; + GtkTreeModelFilter* filter; + GSList* candidates; + IdCard* default_id_card; + GHashTable* service_button_map; +}; + +typedef enum { + IDENTITY_MANAGER_VIEW_COLUMNS_IDCARD_COL, + IDENTITY_MANAGER_VIEW_COLUMNS_LOGO_COL, + IDENTITY_MANAGER_VIEW_COLUMNS_ISSUER_COL, + IDENTITY_MANAGER_VIEW_COLUMNS_USERNAME_COL, + IDENTITY_MANAGER_VIEW_COLUMNS_PASSWORD_COL, + IDENTITY_MANAGER_VIEW_COLUMNS_N_COLUMNS +} IdentityManagerViewColumns; + +struct _IdentityManagerApp { + GtkWindow parent_instance; + IdentityManagerAppPrivate * priv; + IdentityManagerModel* model; +}; + +struct _IdentityManagerAppClass { + GtkWindowClass parent_class; +}; + +struct _IdentityRequest { + GObject parent_instance; + IdentityRequestPrivate * priv; + IdCard* id_card; + gboolean complete; + gboolean select_default; + char* nai; + char* password; + char* service; +}; + +struct _IdentityRequestClass { + GObjectClass parent_class; +}; + +struct _Rule { + char* pattern; + char* always_confirm; +}; + +struct _Block1Data { + int _ref_count_; + IdentityManagerView * self; + IdCard* identity; +}; + + +static gpointer identity_manager_view_parent_class = NULL; + +GType identity_manager_view_get_type (void) G_GNUC_CONST; +GType identity_manager_app_get_type (void) G_GNUC_CONST; +GType identity_manager_model_get_type (void) G_GNUC_CONST; +GType identity_request_get_type (void) G_GNUC_CONST; +GType custom_vbox_get_type (void) G_GNUC_CONST; +GType id_card_get_type (void) G_GNUC_CONST; +#define IDENTITY_MANAGER_VIEW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_IDENTITY_MANAGER_VIEW, IdentityManagerViewPrivate)) +enum { + IDENTITY_MANAGER_VIEW_DUMMY_PROPERTY +}; +static GType identity_manager_view_columns_get_type (void) G_GNUC_UNUSED; +static void _g_slist_free_g_object_unref (GSList* self); +#define IDENTITY_MANAGER_VIEW_WINDOW_WIDTH 400 +#define IDENTITY_MANAGER_VIEW_WINDOW_HEIGHT 500 +#define IDENTITY_MANAGER_VIEW_layout "" " " " " " " " " " " "" " " " " " " "" +IdentityManagerView* identity_manager_view_new (IdentityManagerApp* app); +IdentityManagerView* identity_manager_view_construct (GType object_type, IdentityManagerApp* app); +static void identity_manager_view_build_ui (IdentityManagerView* self); +static void identity_manager_view_setup_list_model (IdentityManagerView* self); +static void identity_manager_view_load_id_cards (IdentityManagerView* self); +static void identity_manager_view_connect_signals (IdentityManagerView* self); +void identity_manager_view_on_card_list_changed (IdentityManagerView* self); +void identity_manager_view_add_candidate (IdentityManagerView* self, IdCard* idcard); +static gboolean identity_manager_view_visible_func (IdentityManagerView* self, GtkTreeModel* model, GtkTreeIter* iter); +const char* id_card_get_issuer (IdCard* self); +const char* id_card_get_display_name (IdCard* self); +char** id_card_get_services (IdCard* self, int* result_length1); +static gboolean _identity_manager_view_visible_func_gtk_tree_model_filter_visible_func (GtkTreeModel* model, GtkTreeIter* iter, gpointer self); +static void identity_manager_view_search_entry_icon_press_cb (IdentityManagerView* self, GtkEntryIconPosition pos, GdkEvent* event); +static void identity_manager_view_search_entry_text_changed_cb (IdentityManagerView* self); +static void identity_manager_view_redraw_id_card_widgets (IdentityManagerView* self); +static gboolean identity_manager_view_search_entry_key_press_event_cb (IdentityManagerView* self, GdkEventKey* e); +GType id_card_widget_get_type (void) G_GNUC_CONST; +static void identity_manager_view_remove_id_card_widget (IdentityManagerView* self, IdCardWidget* id_card_widget); +GeeLinkedList* identity_manager_model_get_card_list (IdentityManagerModel* self); +static void identity_manager_view_add_id_card_data (IdentityManagerView* self, IdCard* id_card); +static void identity_manager_view_add_id_card_widget (IdentityManagerView* self, IdCard* id_card); +static void identity_manager_view_fill_details (IdentityManagerView* self, IdCardWidget* id_card_widget); +IdCard* id_card_widget_get_id_card (IdCardWidget* self); +const char* id_card_get_username (IdCard* self); +const char* id_card_get_password (IdCard* self); +static void identity_manager_view_fill_services_vbox (IdentityManagerView* self, IdCard* id_card); +static void identity_manager_view_show_details (IdentityManagerView* self, IdCard* id_card); +static void identity_manager_view_details_identity_cb (IdentityManagerView* self, IdCardWidget* id_card_widget); +GType add_identity_dialog_get_type (void) G_GNUC_CONST; +static IdCard* identity_manager_view_get_id_card_data (IdentityManagerView* self, AddIdentityDialog* dialog); +IdCard* id_card_new (void); +IdCard* id_card_construct (GType object_type); +const char* add_identity_dialog_get_display_name (AddIdentityDialog* self); +void id_card_set_display_name (IdCard* self, const char* value); +const char* add_identity_dialog_get_issuer (AddIdentityDialog* self); +void id_card_set_issuer (IdCard* self, const char* value); +const char* add_identity_dialog_get_username (AddIdentityDialog* self); +void id_card_set_username (IdCard* self, const char* value); +const char* add_identity_dialog_get_password (AddIdentityDialog* self); +void id_card_set_password (IdCard* self, const char* value); +void id_card_set_services (IdCard* self, char** value, int value_length1); +GdkPixbuf* find_icon (const char* name, gint size); +static void identity_manager_view_remove_id_card_data (IdentityManagerView* self, IdCard* id_card); +IdCardWidget* id_card_widget_new (IdCard* id_card); +IdCardWidget* id_card_widget_construct (GType object_type, IdCard* id_card); +void custom_vbox_add_id_card_widget (CustomVBox* self, IdCardWidget* id_card_widget); +static void _identity_manager_view_details_identity_cb_id_card_widget_details_id (IdCardWidget* _sender, gpointer self); +static void identity_manager_view_remove_identity_cb (IdentityManagerView* self, IdCardWidget* id_card_widget); +static void _identity_manager_view_remove_identity_cb_id_card_widget_remove_id (IdCardWidget* _sender, gpointer self); +static void _lambda2_ (IdCardWidget* w, IdentityManagerView* self); +void identity_manager_view_send_identity_cb (IdentityManagerView* self, IdCard* identity); +static void __lambda2__id_card_widget_send_id (IdCardWidget* _sender, gpointer self); +void custom_vbox_receive_expanded_event (CustomVBox* self, IdCardWidget* id_card_widget); +static void _custom_vbox_receive_expanded_event_id_card_widget_expanded (IdCardWidget* _sender, gpointer self); +static void _identity_manager_view_fill_details_id_card_widget_expanded (IdCardWidget* _sender, gpointer self); +gboolean identity_manager_view_display_name_is_valid (IdentityManagerView* self, const char* name, char** candidate); +void identity_manager_view_insert_id_card (IdentityManagerView* self, IdCard* id_card); +void identity_manager_model_add_card (IdentityManagerModel* self, IdCard* card); +gboolean identity_manager_view_add_identity (IdentityManagerView* self, IdCard* id_card); +static void identity_manager_view_add_identity_manual_cb (IdentityManagerView* self); +AddIdentityDialog* add_identity_dialog_new (void); +AddIdentityDialog* add_identity_dialog_construct (GType object_type); +void custom_vbox_remove_id_card_widget (CustomVBox* self, IdCardWidget* id_card_widget); +static void identity_manager_view_remove_identity (IdentityManagerView* self, IdCardWidget* id_card_widget); +void identity_manager_model_remove_card (IdentityManagerModel* self, IdCard* card); +void identity_manager_view_select_identity (IdentityManagerView* self, IdentityRequest* request); +IdCardWidget* custom_vbox_get_current_idcard (CustomVBox* self); +GtkButton* id_card_widget_get_send_button (IdCardWidget* self); +const char* id_card_get_nai (IdCard* self); +static void _g_slist_free_g_free (GSList* self); +GType rule_get_type (void) G_GNUC_CONST; +Rule* rule_dup (const Rule* self); +void rule_free (Rule* self); +void rule_copy (const Rule* self, Rule* dest); +void rule_destroy (Rule* self); +Rule* id_card_get_rules (IdCard* self, int* result_length1); +static gboolean identity_manager_view_match_service_pattern (IdentityManagerView* self, const char* service, const char* pattern); +static gboolean _lambda3_ (Block1Data* _data1_); +static gboolean __lambda3__gsource_func (gpointer self); +static Block1Data* block1_data_ref (Block1Data* _data1_); +static void block1_data_unref (Block1Data* _data1_); +AddPasswordDialog* add_password_dialog_new (void); +AddPasswordDialog* add_password_dialog_construct (GType object_type); +GType add_password_dialog_get_type (void) G_GNUC_CONST; +const char* add_password_dialog_get_password (AddPasswordDialog* self); +gboolean add_password_dialog_get_remember (AddPasswordDialog* self); +void identity_request_return_identity (IdentityRequest* self, IdCard* id_card); +static void identity_manager_view_label_make_bold (IdentityManagerView* self, GtkLabel* label); +static void _lambda1_ (GtkButton* remove_button, IdentityManagerView* self); +void id_card_widget_update_id_card_label (IdCardWidget* self); +static void __lambda1__gtk_button_clicked (GtkButton* _sender, gpointer self); +static void identity_manager_view_on_about_action (IdentityManagerView* self); +static GtkActionEntry* identity_manager_view_create_actions (IdentityManagerView* self, int* result_length1); +static void _vala_array_add1 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value); +static void _identity_manager_view_add_identity_manual_cb_gtk_action_callback (GtkAction* action, gpointer self); +static void _vala_array_add2 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value); +static void _gtk_main_quit_gtk_action_callback (GtkAction* action, gpointer self); +static void _vala_array_add3 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value); +static void _vala_array_add4 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value); +static void _identity_manager_view_on_about_action_gtk_action_callback (GtkAction* action, gpointer self); +static void _vala_array_add5 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value); +static void identity_manager_view_create_ui_manager (IdentityManagerView* self); +static void identity_manager_view_set_atk_name_description (IdentityManagerView* self, GtkWidget* widget, const char* name, const char* description); +GdkPixbuf* find_icon_sized (const char* name, GtkIconSize icon_size); +static void _identity_manager_view_search_entry_icon_press_cb_gtk_entry_icon_press (GtkEntry* _sender, GtkEntryIconPosition p0, GdkEvent* p1, gpointer self); +static void _identity_manager_view_search_entry_text_changed_cb_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self); +static gboolean _identity_manager_view_search_entry_key_press_event_cb_gtk_widget_key_press_event (GtkWidget* _sender, GdkEventKey* event, gpointer self); +CustomVBox* custom_vbox_new (IdentityManagerView* window, gboolean homogeneous, gint spacing); +CustomVBox* custom_vbox_construct (GType object_type, IdentityManagerView* window, gboolean homogeneous, gint spacing); +static void _gtk_main_quit_gtk_object_destroy (GtkObject* _sender, gpointer self); +static void _identity_manager_view_on_card_list_changed_identity_manager_model_card_list_changed (IdentityManagerModel* _sender, gpointer self); +static void identity_manager_view_finalize (GObject* obj); +static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func); +static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func); +static gint _vala_array_length (gpointer array); +static int _vala_strcmp0 (const char * str1, const char * str2); + + + +static GType identity_manager_view_columns_get_type (void) { + static volatile gsize identity_manager_view_columns_type_id__volatile = 0; + if (g_once_init_enter (&identity_manager_view_columns_type_id__volatile)) { + static const GEnumValue values[] = {{IDENTITY_MANAGER_VIEW_COLUMNS_IDCARD_COL, "IDENTITY_MANAGER_VIEW_COLUMNS_IDCARD_COL", "idcard-col"}, {IDENTITY_MANAGER_VIEW_COLUMNS_LOGO_COL, "IDENTITY_MANAGER_VIEW_COLUMNS_LOGO_COL", "logo-col"}, {IDENTITY_MANAGER_VIEW_COLUMNS_ISSUER_COL, "IDENTITY_MANAGER_VIEW_COLUMNS_ISSUER_COL", "issuer-col"}, {IDENTITY_MANAGER_VIEW_COLUMNS_USERNAME_COL, "IDENTITY_MANAGER_VIEW_COLUMNS_USERNAME_COL", "username-col"}, {IDENTITY_MANAGER_VIEW_COLUMNS_PASSWORD_COL, "IDENTITY_MANAGER_VIEW_COLUMNS_PASSWORD_COL", "password-col"}, {IDENTITY_MANAGER_VIEW_COLUMNS_N_COLUMNS, "IDENTITY_MANAGER_VIEW_COLUMNS_N_COLUMNS", "n-columns"}, {0, NULL, NULL}}; + GType identity_manager_view_columns_type_id; + identity_manager_view_columns_type_id = g_enum_register_static ("IdentityManagerViewColumns", values); + g_once_init_leave (&identity_manager_view_columns_type_id__volatile, identity_manager_view_columns_type_id); + } + return identity_manager_view_columns_type_id__volatile; +} + + +static void _g_slist_free_g_object_unref (GSList* self) { + g_slist_foreach (self, (GFunc) g_object_unref, NULL); + g_slist_free (self); +} + + +static gpointer _g_object_ref0 (gpointer self) { + return self ? g_object_ref (self) : NULL; +} + + +IdentityManagerView* identity_manager_view_construct (GType object_type, IdentityManagerApp* app) { + IdentityManagerView * self; + IdentityManagerApp* _tmp0_; + IdentityManagerModel* _tmp1_; + GQueue* _tmp2_; + GHashTable* _tmp3_; + g_return_val_if_fail (app != NULL, NULL); + self = g_object_newv (object_type, 0, NULL); + self->parent_app = (_tmp0_ = _g_object_ref0 (app), _g_object_unref0 (self->parent_app), _tmp0_); + self->identities_manager = (_tmp1_ = _g_object_ref0 (self->parent_app->model), _g_object_unref0 (self->identities_manager), _tmp1_); + self->request_queue = (_tmp2_ = g_queue_new (), _g_queue_free0 (self->request_queue), _tmp2_); + self->priv->service_button_map = (_tmp3_ = g_hash_table_new_full (g_direct_hash, g_direct_equal, g_object_unref, g_free), _g_hash_table_unref0 (self->priv->service_button_map), _tmp3_); + gtk_window_set_title ((GtkWindow*) self, "Moonshoot"); + gtk_window_set_position ((GtkWindow*) self, GTK_WIN_POS_CENTER); + gtk_window_set_default_size ((GtkWindow*) self, IDENTITY_MANAGER_VIEW_WINDOW_WIDTH, IDENTITY_MANAGER_VIEW_WINDOW_HEIGHT); + identity_manager_view_build_ui (self); + identity_manager_view_setup_list_model (self); + identity_manager_view_load_id_cards (self); + identity_manager_view_connect_signals (self); + return self; +} + + +IdentityManagerView* identity_manager_view_new (IdentityManagerApp* app) { + return identity_manager_view_construct (TYPE_IDENTITY_MANAGER_VIEW, app); +} + + +void identity_manager_view_on_card_list_changed (IdentityManagerView* self) { + g_return_if_fail (self != NULL); + identity_manager_view_load_id_cards (self); +} + + +void identity_manager_view_add_candidate (IdentityManagerView* self, IdCard* idcard) { + g_return_if_fail (self != NULL); + g_return_if_fail (idcard != NULL); + self->priv->candidates = g_slist_append (self->priv->candidates, _g_object_ref0 (idcard)); +} + + +static gboolean string_contains (const char* self, const char* needle) { + gboolean result = FALSE; + g_return_val_if_fail (self != NULL, FALSE); + g_return_val_if_fail (needle != NULL, FALSE); + result = strstr (self, needle) != NULL; + return result; +} + + +static gboolean identity_manager_view_visible_func (IdentityManagerView* self, GtkTreeModel* model, GtkTreeIter* iter) { + gboolean result = FALSE; + IdCard* id_card; + char* entry_text; + gboolean _tmp0_ = FALSE; + g_return_val_if_fail (self != NULL, FALSE); + g_return_val_if_fail (model != NULL, FALSE); + id_card = NULL; + gtk_tree_model_get (model, iter, IDENTITY_MANAGER_VIEW_COLUMNS_IDCARD_COL, &id_card, -1); + if (id_card == NULL) { + result = FALSE; + _g_object_unref0 (id_card); + return result; + } + if (self->priv->candidates != NULL) { + gboolean is_candidate; + is_candidate = FALSE; + { + GSList* candidate_collection; + GSList* candidate_it; + candidate_collection = self->priv->candidates; + for (candidate_it = candidate_collection; candidate_it != NULL; candidate_it = candidate_it->next) { + IdCard* candidate; + candidate = _g_object_ref0 ((IdCard*) candidate_it->data); + { + if (candidate == id_card) { + is_candidate = TRUE; + } + _g_object_unref0 (candidate); + } + } + } + if (!is_candidate) { + result = FALSE; + _g_object_unref0 (id_card); + return result; + } + } + entry_text = g_strdup (gtk_entry_get_text (self->priv->search_entry)); + if (entry_text == NULL) { + _tmp0_ = TRUE; + } else { + _tmp0_ = _vala_strcmp0 (entry_text, "") == 0; + } + if (_tmp0_) { + result = TRUE; + _g_free0 (entry_text); + _g_object_unref0 (id_card); + return result; + } + { + char** _tmp1_; + char** search_text_collection; + int search_text_collection_length1; + int search_text_it; + search_text_collection = _tmp1_ = g_strsplit (entry_text, " ", 0); + search_text_collection_length1 = _vala_array_length (_tmp1_); + for (search_text_it = 0; search_text_it < _vala_array_length (_tmp1_); search_text_it = search_text_it + 1) { + char* search_text; + search_text = g_strdup (search_text_collection[search_text_it]); + { + char* search_text_casefold; + gint _tmp2_; + if (_vala_strcmp0 (search_text, "") == 0) { + _g_free0 (search_text); + continue; + } + search_text_casefold = g_utf8_casefold (search_text, -1); + if (id_card_get_issuer (id_card) != NULL) { + char* issuer_casefold; + issuer_casefold = g_strdup (id_card_get_issuer (id_card)); + if (string_contains (issuer_casefold, search_text_casefold)) { + result = TRUE; + _g_free0 (issuer_casefold); + _g_free0 (search_text_casefold); + _g_free0 (search_text); + search_text_collection = (_vala_array_free (search_text_collection, search_text_collection_length1, (GDestroyNotify) g_free), NULL); + _g_free0 (entry_text); + _g_object_unref0 (id_card); + return result; + } + _g_free0 (issuer_casefold); + } + if (id_card_get_display_name (id_card) != NULL) { + char* display_name_casefold; + display_name_casefold = g_utf8_casefold (id_card_get_display_name (id_card), -1); + if (string_contains (display_name_casefold, search_text_casefold)) { + result = TRUE; + _g_free0 (display_name_casefold); + _g_free0 (search_text_casefold); + _g_free0 (search_text); + search_text_collection = (_vala_array_free (search_text_collection, search_text_collection_length1, (GDestroyNotify) g_free), NULL); + _g_free0 (entry_text); + _g_object_unref0 (id_card); + return result; + } + _g_free0 (display_name_casefold); + } + if (_tmp2_ > 0) { + { + gint _tmp3_; + char** service_collection; + int service_collection_length1; + int service_it; + service_collection = id_card_get_services (id_card, &_tmp3_); + service_collection_length1 = _tmp3_; + for (service_it = 0; service_it < _tmp3_; service_it = service_it + 1) { + char* service; + service = g_strdup (service_collection[service_it]); + { + char* service_casefold; + service_casefold = g_utf8_casefold (service, -1); + if (string_contains (service_casefold, search_text_casefold)) { + result = TRUE; + _g_free0 (service_casefold); + _g_free0 (service); + _g_free0 (search_text_casefold); + _g_free0 (search_text); + search_text_collection = (_vala_array_free (search_text_collection, search_text_collection_length1, (GDestroyNotify) g_free), NULL); + _g_free0 (entry_text); + _g_object_unref0 (id_card); + return result; + } + _g_free0 (service_casefold); + _g_free0 (service); + } + } + } + } + _g_free0 (search_text_casefold); + _g_free0 (search_text); + } + } + search_text_collection = (_vala_array_free (search_text_collection, search_text_collection_length1, (GDestroyNotify) g_free), NULL); + } + result = FALSE; + _g_free0 (entry_text); + _g_object_unref0 (id_card); + return result; +} + + +static gboolean _identity_manager_view_visible_func_gtk_tree_model_filter_visible_func (GtkTreeModel* model, GtkTreeIter* iter, gpointer self) { + gboolean result; + result = identity_manager_view_visible_func (self, model, iter); + return result; +} + + +static void identity_manager_view_setup_list_model (IdentityManagerView* self) { + GtkTreeModelFilter* _tmp0_; + g_return_if_fail (self != NULL); + self->priv->listmodel = gtk_list_store_new ((gint) IDENTITY_MANAGER_VIEW_COLUMNS_N_COLUMNS, TYPE_ID_CARD, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); + self->priv->filter = (_tmp0_ = (GtkTreeModelFilter*) gtk_tree_model_filter_new ((GtkTreeModel*) self->priv->listmodel, NULL), _g_object_unref0 (self->priv->filter), _tmp0_); + gtk_tree_model_filter_set_visible_func (self->priv->filter, _identity_manager_view_visible_func_gtk_tree_model_filter_visible_func, g_object_ref (self), g_object_unref); +} + + +static void identity_manager_view_search_entry_icon_press_cb (IdentityManagerView* self, GtkEntryIconPosition pos, GdkEvent* event) { + g_return_if_fail (self != NULL); + g_return_if_fail (event != NULL); + if (pos == GTK_ENTRY_ICON_PRIMARY) { + g_print ("Search entry icon pressed\n"); + } else { + gtk_entry_set_text (self->priv->search_entry, ""); + } +} + + +static void identity_manager_view_search_entry_text_changed_cb (IdentityManagerView* self) { + gboolean has_text; + g_return_if_fail (self != NULL); + gtk_tree_model_filter_refilter (self->priv->filter); + identity_manager_view_redraw_id_card_widgets (self); + has_text = gtk_entry_get_text_length (self->priv->search_entry) > 0; + gtk_entry_set_icon_sensitive (self->priv->search_entry, GTK_ENTRY_ICON_PRIMARY, has_text); + gtk_entry_set_icon_sensitive (self->priv->search_entry, GTK_ENTRY_ICON_SECONDARY, has_text); + gtk_widget_set_visible ((GtkWidget*) self->priv->vbox_right, FALSE); +} + + +static gboolean identity_manager_view_search_entry_key_press_event_cb (IdentityManagerView* self, GdkEventKey* e) { + gboolean result = FALSE; + g_return_val_if_fail (self != NULL, FALSE); + if (_vala_strcmp0 (gdk_keyval_name ((*e).keyval), "Escape") == 0) { + gtk_entry_set_text (self->priv->search_entry, ""); + } + result = FALSE; + return result; +} + + +static void identity_manager_view_load_id_cards (IdentityManagerView* self) { + GList* children; + IdCard* _tmp0_; + GeeLinkedList* card_list; + g_return_if_fail (self != NULL); + children = gtk_container_get_children ((GtkContainer*) self->priv->custom_vbox); + { + GList* id_card_widget_collection; + GList* id_card_widget_it; + id_card_widget_collection = children; + for (id_card_widget_it = id_card_widget_collection; id_card_widget_it != NULL; id_card_widget_it = id_card_widget_it->next) { + GtkWidget* id_card_widget; + id_card_widget = (GtkWidget*) id_card_widget_it->data; + { + identity_manager_view_remove_id_card_widget (self, ID_CARD_WIDGET (id_card_widget)); + } + } + } + self->priv->default_id_card = (_tmp0_ = NULL, _g_object_unref0 (self->priv->default_id_card), _tmp0_); + card_list = identity_manager_model_get_card_list (self->identities_manager); + if (card_list == NULL) { + _g_object_unref0 (card_list); + _g_list_free0 (children); + return; + } + { + GeeIterator* _id_card_it; + _id_card_it = gee_abstract_collection_iterator ((GeeAbstractCollection*) card_list); + while (TRUE) { + IdCard* id_card; + if (!gee_iterator_next (_id_card_it)) { + break; + } + id_card = (IdCard*) gee_iterator_get (_id_card_it); + identity_manager_view_add_id_card_data (self, id_card); + identity_manager_view_add_id_card_widget (self, id_card); + _g_object_unref0 (id_card); + } + _g_object_unref0 (_id_card_it); + } + if (gee_collection_get_size ((GeeCollection*) card_list) > 0) { + IdCard* _tmp1_; + self->priv->default_id_card = (_tmp1_ = (IdCard*) gee_abstract_list_first ((GeeAbstractList*) card_list), _g_object_unref0 (self->priv->default_id_card), _tmp1_); + } + _g_object_unref0 (card_list); + _g_list_free0 (children); +} + + +static void identity_manager_view_fill_details (IdentityManagerView* self, IdCardWidget* id_card_widget) { + IdCard* id_card; + char* _tmp0_; + GList* children; + g_return_if_fail (self != NULL); + g_return_if_fail (id_card_widget != NULL); + id_card = _g_object_ref0 (id_card_widget_get_id_card (id_card_widget)); + gtk_entry_set_text (self->priv->username_entry, id_card_get_username (id_card)); + _tmp0_ = g_strdup (id_card_get_password (id_card)); + if (_tmp0_ == NULL) { + char* _tmp1_; + _tmp0_ = (_tmp1_ = g_strdup (""), _g_free0 (_tmp0_), _tmp1_); + } + gtk_entry_set_text (self->priv->password_entry, _tmp0_); + children = gtk_container_get_children ((GtkContainer*) self->priv->services_internal_vbox); + { + GList* hbox_collection; + GList* hbox_it; + hbox_collection = children; + for (hbox_it = hbox_collection; hbox_it != NULL; hbox_it = hbox_it->next) { + GtkWidget* hbox; + hbox = (GtkWidget*) hbox_it->data; + { + gtk_object_destroy ((GtkObject*) hbox); + } + } + } + identity_manager_view_fill_services_vbox (self, id_card_widget_get_id_card (id_card_widget)); + _g_list_free0 (children); + _g_free0 (_tmp0_); + _g_object_unref0 (id_card); +} + + +static void identity_manager_view_show_details (IdentityManagerView* self, IdCard* id_card) { + g_return_if_fail (self != NULL); + g_return_if_fail (id_card != NULL); + gtk_widget_set_visible ((GtkWidget*) self->priv->vbox_right, !gtk_widget_get_visible ((GtkWidget*) self->priv->vbox_right)); + if (gtk_widget_get_visible ((GtkWidget*) self->priv->vbox_right) == FALSE) { + gtk_window_resize ((GtkWindow*) self, IDENTITY_MANAGER_VIEW_WINDOW_WIDTH, IDENTITY_MANAGER_VIEW_WINDOW_HEIGHT); + } +} + + +static void identity_manager_view_details_identity_cb (IdentityManagerView* self, IdCardWidget* id_card_widget) { + g_return_if_fail (self != NULL); + g_return_if_fail (id_card_widget != NULL); + identity_manager_view_fill_details (self, id_card_widget); + identity_manager_view_show_details (self, id_card_widget_get_id_card (id_card_widget)); +} + + +static IdCard* identity_manager_view_get_id_card_data (IdentityManagerView* self, AddIdentityDialog* dialog) { + IdCard* result = NULL; + IdCard* id_card; + char** _tmp0_ = NULL; + char** _tmp1_; + gint _tmp1__length1; + char** _tmp2_; + g_return_val_if_fail (self != NULL, NULL); + g_return_val_if_fail (dialog != NULL, NULL); + id_card = id_card_new (); + id_card_set_display_name (id_card, add_identity_dialog_get_display_name (dialog)); + id_card_set_issuer (id_card, add_identity_dialog_get_issuer (dialog)); + if (_vala_strcmp0 (id_card_get_issuer (id_card), "") == 0) { + id_card_set_issuer (id_card, "Issuer"); + } + id_card_set_username (id_card, add_identity_dialog_get_username (dialog)); + id_card_set_password (id_card, add_identity_dialog_get_password (dialog)); + _tmp2_ = (_tmp1_ = (_tmp0_ = g_new0 (char*, 0 + 1), _tmp0_), _tmp1__length1 = 0, _tmp1_); + id_card_set_services (id_card, _tmp2_, 0); + _tmp1_ = (_vala_array_free (_tmp1_, _tmp1__length1, (GDestroyNotify) g_free), NULL); + g_object_set_data_full ((GObject*) id_card, "pixbuf", find_icon ("avatar-default", 48), g_object_unref); + result = id_card; + return result; +} + + +static void identity_manager_view_add_id_card_data (IdentityManagerView* self, IdCard* id_card) { + GtkTreeIter iter = {0}; + GdkPixbuf* pixbuf; + GdkPixbuf* _tmp0_; + g_return_if_fail (self != NULL); + g_return_if_fail (id_card != NULL); + pixbuf = NULL; + gtk_list_store_append (self->priv->listmodel, &iter); + pixbuf = (_tmp0_ = _g_object_ref0 ((GdkPixbuf*) g_object_get_data ((GObject*) id_card, "pixbuf")), _g_object_unref0 (pixbuf), _tmp0_); + gtk_list_store_set (self->priv->listmodel, &iter, IDENTITY_MANAGER_VIEW_COLUMNS_IDCARD_COL, id_card, IDENTITY_MANAGER_VIEW_COLUMNS_LOGO_COL, pixbuf, IDENTITY_MANAGER_VIEW_COLUMNS_ISSUER_COL, id_card_get_issuer (id_card), IDENTITY_MANAGER_VIEW_COLUMNS_USERNAME_COL, id_card_get_username (id_card), IDENTITY_MANAGER_VIEW_COLUMNS_PASSWORD_COL, id_card_get_password (id_card), -1); + _g_object_unref0 (pixbuf); +} + + +static void identity_manager_view_remove_id_card_data (IdentityManagerView* self, IdCard* id_card) { + GtkTreeIter iter = {0}; + char* issuer; + g_return_if_fail (self != NULL); + g_return_if_fail (id_card != NULL); + issuer = NULL; + if (gtk_tree_model_get_iter_first ((GtkTreeModel*) self->priv->listmodel, &iter)) { + { + gboolean _tmp0_; + _tmp0_ = TRUE; + while (TRUE) { + if (!_tmp0_) { + if (!gtk_tree_model_iter_next ((GtkTreeModel*) self->priv->listmodel, &iter)) { + break; + } + } + _tmp0_ = FALSE; + gtk_tree_model_get ((GtkTreeModel*) self->priv->listmodel, &iter, IDENTITY_MANAGER_VIEW_COLUMNS_ISSUER_COL, &issuer, -1); + if (_vala_strcmp0 (id_card_get_issuer (id_card), issuer) == 0) { + gtk_list_store_remove (self->priv->listmodel, &iter); + break; + } + } + } + } + _g_free0 (issuer); +} + + +static void _identity_manager_view_details_identity_cb_id_card_widget_details_id (IdCardWidget* _sender, gpointer self) { + identity_manager_view_details_identity_cb (self, _sender); +} + + +static void _identity_manager_view_remove_identity_cb_id_card_widget_remove_id (IdCardWidget* _sender, gpointer self) { + identity_manager_view_remove_identity_cb (self, _sender); +} + + +static void _lambda2_ (IdCardWidget* w, IdentityManagerView* self) { + g_return_if_fail (w != NULL); + identity_manager_view_send_identity_cb (self, id_card_widget_get_id_card (w)); +} + + +static void __lambda2__id_card_widget_send_id (IdCardWidget* _sender, gpointer self) { + _lambda2_ (_sender, self); +} + + +static void _custom_vbox_receive_expanded_event_id_card_widget_expanded (IdCardWidget* _sender, gpointer self) { + custom_vbox_receive_expanded_event (self, _sender); +} + + +static void _identity_manager_view_fill_details_id_card_widget_expanded (IdCardWidget* _sender, gpointer self) { + identity_manager_view_fill_details (self, _sender); +} + + +static void identity_manager_view_add_id_card_widget (IdentityManagerView* self, IdCard* id_card) { + IdCardWidget* id_card_widget; + g_return_if_fail (self != NULL); + g_return_if_fail (id_card != NULL); + id_card_widget = g_object_ref_sink (id_card_widget_new (id_card)); + custom_vbox_add_id_card_widget (self->priv->custom_vbox, id_card_widget); + g_signal_connect_object (id_card_widget, "details-id", (GCallback) _identity_manager_view_details_identity_cb_id_card_widget_details_id, self, 0); + g_signal_connect_object (id_card_widget, "remove-id", (GCallback) _identity_manager_view_remove_identity_cb_id_card_widget_remove_id, self, 0); + g_signal_connect_object (id_card_widget, "send-id", (GCallback) __lambda2__id_card_widget_send_id, self, 0); + g_signal_connect_object (id_card_widget, "expanded", (GCallback) _custom_vbox_receive_expanded_event_id_card_widget_expanded, self->priv->custom_vbox, 0); + g_signal_connect_object (id_card_widget, "expanded", (GCallback) _identity_manager_view_fill_details_id_card_widget_expanded, self, 0); + _g_object_unref0 (id_card_widget); +} + + +gboolean identity_manager_view_display_name_is_valid (IdentityManagerView* self, const char* name, char** candidate) { + gboolean result = FALSE; + g_return_val_if_fail (self != NULL, FALSE); + g_return_val_if_fail (name != NULL, FALSE); + if (candidate != NULL) { + *candidate = NULL; + } + { + GeeLinkedList* _tmp0_; + GeeIterator* _tmp1_; + GeeIterator* _id_card_it; + _id_card_it = (_tmp1_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) (_tmp0_ = identity_manager_model_get_card_list (self->identities_manager))), _g_object_unref0 (_tmp0_), _tmp1_); + while (TRUE) { + IdCard* id_card; + if (!gee_iterator_next (_id_card_it)) { + break; + } + id_card = (IdCard*) gee_iterator_get (_id_card_it); + if (_vala_strcmp0 (id_card_get_display_name (id_card), name) == 0) { + if ((candidate) != NULL) { + { + gint i; + i = 0; + { + gboolean _tmp2_; + _tmp2_ = TRUE; + while (TRUE) { + char* tmp; + if (!_tmp2_) { + i++; + } + _tmp2_ = FALSE; + if (!(i < 1000)) { + break; + } + tmp = g_strdup_printf ("%s %d", name, i); + if (identity_manager_view_display_name_is_valid (self, tmp, NULL)) { + char* _tmp3_; + *candidate = (_tmp3_ = g_strdup (tmp), _g_free0 (*candidate), _tmp3_); + _g_free0 (tmp); + break; + } + _g_free0 (tmp); + } + } + } + } + result = FALSE; + _g_object_unref0 (id_card); + _g_object_unref0 (_id_card_it); + return result; + } + _g_object_unref0 (id_card); + } + _g_object_unref0 (_id_card_it); + } + result = TRUE; + return result; +} + + +void identity_manager_view_insert_id_card (IdentityManagerView* self, IdCard* id_card) { + char* candidate; + char* _tmp0_ = NULL; + gboolean _tmp1_; + char* _tmp2_; + g_return_if_fail (self != NULL); + g_return_if_fail (id_card != NULL); + candidate = NULL; + if (!(_tmp1_ = identity_manager_view_display_name_is_valid (self, id_card_get_display_name (id_card), &_tmp0_), candidate = (_tmp2_ = _tmp0_, _g_free0 (candidate), _tmp2_), _tmp1_)) { + id_card_set_display_name (id_card, candidate); + } + identity_manager_model_add_card (self->identities_manager, id_card); + _g_free0 (candidate); +} + + +gboolean identity_manager_view_add_identity (IdentityManagerView* self, IdCard* id_card) { + gboolean result = FALSE; + GtkMessageDialog* dialog; + gint ret; + g_return_val_if_fail (self != NULL, FALSE); + g_return_val_if_fail (id_card != NULL, FALSE); + dialog = g_object_ref_sink ((GtkMessageDialog*) gtk_message_dialog_new ((GtkWindow*) self, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, _ ("Would you like to add '%s' ID Card to the ID Card Organizer?"), id_card_get_display_name (id_card))); + gtk_widget_show_all ((GtkWidget*) dialog); + ret = gtk_dialog_run ((GtkDialog*) dialog); + gtk_widget_hide ((GtkWidget*) dialog); + if (ret == GTK_RESPONSE_YES) { + g_object_set_data_full ((GObject*) id_card, "pixbuf", find_icon ("avatar-default", 48), g_object_unref); + identity_manager_view_insert_id_card (self, id_card); + result = TRUE; + _g_object_unref0 (dialog); + return result; + } + result = FALSE; + _g_object_unref0 (dialog); + return result; +} + + +static void identity_manager_view_add_identity_manual_cb (IdentityManagerView* self) { + AddIdentityDialog* dialog; + gint _result_; + g_return_if_fail (self != NULL); + dialog = g_object_ref_sink (add_identity_dialog_new ()); + _result_ = gtk_dialog_run ((GtkDialog*) dialog); + switch (_result_) { + case GTK_RESPONSE_OK: + { + IdCard* _tmp0_; + identity_manager_view_insert_id_card (self, _tmp0_ = identity_manager_view_get_id_card_data (self, dialog)); + _g_object_unref0 (_tmp0_); + break; + } + default: + { + break; + } + } + gtk_object_destroy ((GtkObject*) dialog); + _g_object_unref0 (dialog); +} + + +static void identity_manager_view_remove_id_card_widget (IdentityManagerView* self, IdCardWidget* id_card_widget) { + g_return_if_fail (self != NULL); + g_return_if_fail (id_card_widget != NULL); + custom_vbox_remove_id_card_widget (self->priv->custom_vbox, id_card_widget); +} + + +static void identity_manager_view_remove_identity (IdentityManagerView* self, IdCardWidget* id_card_widget) { + IdCard* id_card; + g_return_if_fail (self != NULL); + g_return_if_fail (id_card_widget != NULL); + id_card = _g_object_ref0 (id_card_widget_get_id_card (id_card_widget)); + identity_manager_view_remove_id_card_widget (self, id_card_widget); + identity_manager_model_remove_card (self->identities_manager, id_card); + _g_object_unref0 (id_card); +} + + +static void identity_manager_view_redraw_id_card_widgets (IdentityManagerView* self) { + GtkTreeIter iter = {0}; + IdCard* id_card; + GList* children; + g_return_if_fail (self != NULL); + id_card = NULL; + children = gtk_container_get_children ((GtkContainer*) self->priv->custom_vbox); + { + GList* id_card_widget_collection; + GList* id_card_widget_it; + id_card_widget_collection = children; + for (id_card_widget_it = id_card_widget_collection; id_card_widget_it != NULL; id_card_widget_it = id_card_widget_it->next) { + GtkWidget* id_card_widget; + id_card_widget = (GtkWidget*) id_card_widget_it->data; + { + gtk_object_destroy ((GtkObject*) id_card_widget); + } + } + } + if (gtk_tree_model_get_iter_first ((GtkTreeModel*) self->priv->filter, &iter)) { + { + gboolean _tmp0_; + _tmp0_ = TRUE; + while (TRUE) { + if (!_tmp0_) { + if (!gtk_tree_model_iter_next ((GtkTreeModel*) self->priv->filter, &iter)) { + break; + } + } + _tmp0_ = FALSE; + gtk_tree_model_get ((GtkTreeModel*) self->priv->filter, &iter, IDENTITY_MANAGER_VIEW_COLUMNS_IDCARD_COL, &id_card, -1); + identity_manager_view_add_id_card_widget (self, id_card); + } + } + } + _g_list_free0 (children); + _g_object_unref0 (id_card); +} + + +static void identity_manager_view_remove_identity_cb (IdentityManagerView* self, IdCardWidget* id_card_widget) { + IdCard* id_card; + GtkMessageDialog* dialog; + gint _result_; + g_return_if_fail (self != NULL); + g_return_if_fail (id_card_widget != NULL); + id_card = _g_object_ref0 (id_card_widget_get_id_card (id_card_widget)); + dialog = g_object_ref_sink ((GtkMessageDialog*) gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, _ ("Are you sure you want to delete %s ID Card?"), id_card_get_issuer (id_card))); + _result_ = gtk_dialog_run ((GtkDialog*) dialog); + switch (_result_) { + case GTK_RESPONSE_YES: + { + identity_manager_view_remove_identity (self, id_card_widget); + break; + } + default: + { + break; + } + } + gtk_object_destroy ((GtkObject*) dialog); + _g_object_unref0 (dialog); + _g_object_unref0 (id_card); +} + + +static void _g_slist_free_g_free (GSList* self) { + g_slist_foreach (self, (GFunc) g_free, NULL); + g_slist_free (self); +} + + +static gboolean _lambda3_ (Block1Data* _data1_) { + IdentityManagerView * self; + gboolean result = FALSE; + self = _data1_->self; + identity_manager_view_send_identity_cb (self, _data1_->identity); + result = FALSE; + return result; +} + + +static gboolean __lambda3__gsource_func (gpointer self) { + gboolean result; + result = _lambda3_ (self); + return result; +} + + +static Block1Data* block1_data_ref (Block1Data* _data1_) { + g_atomic_int_inc (&_data1_->_ref_count_); + return _data1_; +} + + +static void block1_data_unref (Block1Data* _data1_) { + if (g_atomic_int_dec_and_test (&_data1_->_ref_count_)) { + _g_object_unref0 (_data1_->self); + _g_object_unref0 (_data1_->identity); + g_slice_free (Block1Data, _data1_); + } +} + + +void identity_manager_view_select_identity (IdentityManagerView* self, IdentityRequest* request) { + Block1Data* _data1_; + gboolean _tmp0_ = FALSE; + g_return_if_fail (self != NULL); + g_return_if_fail (request != NULL); + _data1_ = g_slice_new0 (Block1Data); + _data1_->_ref_count_ = 1; + _data1_->self = g_object_ref (self); + _data1_->identity = NULL; + g_queue_push_tail (self->request_queue, _g_object_ref0 (request)); + if (custom_vbox_get_current_idcard (self->priv->custom_vbox) != NULL) { + _tmp0_ = id_card_widget_get_send_button (custom_vbox_get_current_idcard (self->priv->custom_vbox)) != NULL; + } else { + _tmp0_ = FALSE; + } + if (_tmp0_) { + gtk_widget_set_sensitive ((GtkWidget*) id_card_widget_get_send_button (custom_vbox_get_current_idcard (self->priv->custom_vbox)), TRUE); + } + if (request->select_default) { + IdCard* _tmp1_; + _data1_->identity = (_tmp1_ = _g_object_ref0 (self->priv->default_id_card), _g_object_unref0 (_data1_->identity), _tmp1_); + } + if (_data1_->identity == NULL) { + gboolean _tmp2_ = FALSE; + gboolean has_nai; + gboolean _tmp3_ = FALSE; + gboolean has_srv; + gboolean confirm; + IdCard* nai_provided; + gboolean _tmp9_ = FALSE; + if (request->nai != NULL) { + _tmp2_ = _vala_strcmp0 (request->nai, "") != 0; + } else { + _tmp2_ = FALSE; + } + has_nai = _tmp2_; + if (request->service != NULL) { + _tmp3_ = _vala_strcmp0 (request->service, "") != 0; + } else { + _tmp3_ = FALSE; + } + has_srv = _tmp3_; + confirm = FALSE; + nai_provided = NULL; + { + GeeLinkedList* _tmp4_; + GeeIterator* _tmp5_; + GeeIterator* _id_it; + _id_it = (_tmp5_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) (_tmp4_ = identity_manager_model_get_card_list (self->identities_manager))), _g_object_unref0 (_tmp4_), _tmp5_); + while (TRUE) { + IdCard* id; + gboolean _tmp6_ = FALSE; + if (!gee_iterator_next (_id_it)) { + break; + } + id = (IdCard*) gee_iterator_get (_id_it); + if (has_nai) { + _tmp6_ = _vala_strcmp0 (request->nai, id_card_get_nai (id)) == 0; + } else { + _tmp6_ = FALSE; + } + if (_tmp6_) { + IdCard* _tmp7_; + nai_provided = (_tmp7_ = _g_object_ref0 (id), _g_object_unref0 (nai_provided), _tmp7_); + identity_manager_view_add_candidate (self, id); + _g_object_unref0 (id); + continue; + } + if (has_srv) { + { + gint _tmp8_; + char** srv_collection; + int srv_collection_length1; + int srv_it; + srv_collection = id_card_get_services (id, &_tmp8_); + srv_collection_length1 = _tmp8_; + for (srv_it = 0; srv_it < _tmp8_; srv_it = srv_it + 1) { + char* srv; + srv = g_strdup (srv_collection[srv_it]); + { + if (_vala_strcmp0 (request->service, srv) == 0) { + identity_manager_view_add_candidate (self, id); + _g_free0 (srv); + continue; + } + _g_free0 (srv); + } + } + } + } + _g_object_unref0 (id); + } + _g_object_unref0 (_id_it); + } + if (has_srv) { + _tmp9_ = g_slist_length (self->priv->candidates) > 1; + } else { + _tmp9_ = FALSE; + } + if (_tmp9_) { + { + GSList* id_collection; + GSList* id_it; + id_collection = self->priv->candidates; + for (id_it = id_collection; id_it != NULL; id_it = id_it->next) { + IdCard* id; + id = _g_object_ref0 ((IdCard*) id_it->data); + { + gint i; + GSList* services_list; + gboolean has_service; + gint services_length1; + gint _services_size_; + char** _tmp15_; + gint _tmp14_; + char** services; + char** _tmp17_; + i = 0; + services_list = NULL; + has_service = FALSE; + { + gint _tmp10_; + char** srv_collection; + int srv_collection_length1; + int srv_it; + srv_collection = id_card_get_services (id, &_tmp10_); + srv_collection_length1 = _tmp10_; + for (srv_it = 0; srv_it < _tmp10_; srv_it = srv_it + 1) { + char* srv; + srv = g_strdup (srv_collection[srv_it]); + { + if (_vala_strcmp0 (srv, request->service) == 0) { + has_service = TRUE; + _g_free0 (srv); + continue; + } + services_list = g_slist_append (services_list, g_strdup (srv)); + _g_free0 (srv); + } + } + } + if (!has_service) { + __g_slist_free_g_free0 (services_list); + _g_object_unref0 (id); + continue; + } + if (g_slist_length (services_list) == 0) { + char** _tmp11_ = NULL; + char** _tmp12_; + gint _tmp12__length1; + char** _tmp13_; + _tmp13_ = (_tmp12_ = (_tmp11_ = g_new0 (char*, 0 + 1), _tmp11_), _tmp12__length1 = 0, _tmp12_); + id_card_set_services (id, _tmp13_, 0); + _tmp12_ = (_vala_array_free (_tmp12_, _tmp12__length1, (GDestroyNotify) g_free), NULL); + __g_slist_free_g_free0 (services_list); + _g_object_unref0 (id); + continue; + } + services = (_tmp15_ = g_new0 (char*, (_tmp14_ = g_slist_length (services_list)) + 1), services_length1 = _tmp14_, _services_size_ = services_length1, _tmp15_); + { + GSList* srv_collection; + GSList* srv_it; + srv_collection = services_list; + for (srv_it = srv_collection; srv_it != NULL; srv_it = srv_it->next) { + char* srv; + srv = g_strdup ((const char*) srv_it->data); + { + char* _tmp16_; + services[i] = (_tmp16_ = g_strdup (srv), _g_free0 (services[i]), _tmp16_); + i++; + _g_free0 (srv); + } + } + } + _tmp17_ = services; + id_card_set_services (id, _tmp17_, services_length1); + services = (_vala_array_free (services, services_length1, (GDestroyNotify) g_free), NULL); + __g_slist_free_g_free0 (services_list); + _g_object_unref0 (id); + } + } + } + } + if (g_slist_length (self->priv->candidates) == 0) { + { + GeeLinkedList* _tmp18_; + GeeIterator* _tmp19_; + GeeIterator* _id_it; + _id_it = (_tmp19_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) (_tmp18_ = identity_manager_model_get_card_list (self->identities_manager))), _g_object_unref0 (_tmp18_), _tmp19_); + while (TRUE) { + IdCard* id; + if (!gee_iterator_next (_id_it)) { + break; + } + id = (IdCard*) gee_iterator_get (_id_it); + { + gint _tmp20_; + Rule* rule_collection; + int rule_collection_length1; + int rule_it; + rule_collection = id_card_get_rules (id, &_tmp20_); + rule_collection_length1 = _tmp20_; + for (rule_it = 0; rule_it < _tmp20_; rule_it = rule_it + 1) { + Rule _tmp21_ = {0}; + Rule rule; + rule = (rule_copy (&rule_collection[rule_it], &_tmp21_), _tmp21_); + { + if (!identity_manager_view_match_service_pattern (self, request->service, rule.pattern)) { + rule_destroy (&rule); + continue; + } + self->priv->candidates = g_slist_append (self->priv->candidates, _g_object_ref0 (id)); + if (_vala_strcmp0 (rule.always_confirm, "true") == 0) { + confirm = TRUE; + } + rule_destroy (&rule); + } + } + } + _g_object_unref0 (id); + } + _g_object_unref0 (_id_it); + } + } + if (g_slist_length (self->priv->candidates) > 1) { + gboolean _tmp22_ = FALSE; + if (has_nai) { + _tmp22_ = nai_provided != NULL; + } else { + _tmp22_ = FALSE; + } + if (_tmp22_) { + IdCard* _tmp23_; + _data1_->identity = (_tmp23_ = _g_object_ref0 (nai_provided), _g_object_unref0 (_data1_->identity), _tmp23_); + confirm = FALSE; + } else { + confirm = TRUE; + } + } else { + IdCard* _tmp24_; + _data1_->identity = (_tmp24_ = _g_object_ref0 ((IdCard*) g_slist_nth_data (self->priv->candidates, (guint) 0)), _g_object_unref0 (_data1_->identity), _tmp24_); + } + if (confirm) { + gtk_tree_model_filter_refilter (self->priv->filter); + identity_manager_view_redraw_id_card_widgets (self); + gtk_widget_show ((GtkWidget*) self); + _g_object_unref0 (nai_provided); + block1_data_unref (_data1_); + return; + } + _g_object_unref0 (nai_provided); + } + g_idle_add_full (G_PRIORITY_DEFAULT_IDLE, __lambda3__gsource_func, block1_data_ref (_data1_), block1_data_unref); + block1_data_unref (_data1_); + return; +} + + +static gboolean identity_manager_view_match_service_pattern (IdentityManagerView* self, const char* service, const char* pattern) { + gboolean result = FALSE; + GPatternSpec* pspec; + g_return_val_if_fail (self != NULL, FALSE); + g_return_val_if_fail (service != NULL, FALSE); + g_return_val_if_fail (pattern != NULL, FALSE); + pspec = g_pattern_spec_new (pattern); + result = g_pattern_match_string (pspec, service); + _g_pattern_spec_free0 (pspec); + return result; +} + + +void identity_manager_view_send_identity_cb (IdentityManagerView* self, IdCard* identity) { + IdentityRequest* request; + gboolean reset_password; + gboolean _tmp0_ = FALSE; + GSList* _tmp12_; + g_return_if_fail (self != NULL); + g_return_if_fail (identity != NULL); + g_return_if_fail (self->request_queue->length > 0); + request = (IdentityRequest*) g_queue_pop_head (self->request_queue); + reset_password = FALSE; + if (request->service != NULL) { + _tmp0_ = _vala_strcmp0 (request->service, "") != 0; + } else { + _tmp0_ = FALSE; + } + if (_tmp0_) { + gint services_length1; + gint _services_size_; + char** _tmp2_; + gint _tmp1_; + char** services; + gint _tmp7_; + gint _tmp8_; + char* _tmp9_; + char** _tmp10_; + services = (_tmp2_ = g_new0 (char*, (_tmp1_ + 1) + 1), services_length1 = _tmp1_ + 1, _services_size_ = services_length1, _tmp2_); + { + gint i; + i = 0; + { + gboolean _tmp3_; + _tmp3_ = TRUE; + while (TRUE) { + gint _tmp4_; + gint _tmp5_; + char* _tmp6_; + if (!_tmp3_) { + i++; + } + _tmp3_ = FALSE; + if (!(i < _tmp4_)) { + break; + } + services[i] = (_tmp6_ = g_strdup (id_card_get_services (identity, &_tmp5_)[i]), _g_free0 (services[i]), _tmp6_); + } + } + } + services[_tmp7_] = (_tmp9_ = g_strdup (request->service), _g_free0 (services[_tmp7_]), _tmp9_); + _tmp10_ = services; + id_card_set_services (identity, _tmp10_, services_length1); + services = (_vala_array_free (services, services_length1, (GDestroyNotify) g_free), NULL); + } + if (id_card_get_password (identity) == NULL) { + AddPasswordDialog* dialog; + gint _result_; + dialog = g_object_ref_sink (add_password_dialog_new ()); + _result_ = gtk_dialog_run ((GtkDialog*) dialog); + switch (_result_) { + case GTK_RESPONSE_OK: + { + id_card_set_password (identity, add_password_dialog_get_password (dialog)); + reset_password = !add_password_dialog_get_remember (dialog); + break; + } + default: + { + identity = NULL; + break; + } + } + gtk_object_destroy ((GtkObject*) dialog); + _g_object_unref0 (dialog); + } + if (g_queue_is_empty (self->request_queue)) { + gtk_widget_hide ((GtkWidget*) self); + } + if (identity != NULL) { + IdCard* _tmp11_; + self->priv->default_id_card = (_tmp11_ = _g_object_ref0 (identity), _g_object_unref0 (self->priv->default_id_card), _tmp11_); + } + identity_request_return_identity (request, identity); + if (reset_password) { + id_card_set_password (identity, NULL); + } + self->priv->candidates = (_tmp12_ = NULL, __g_slist_free_g_object_unref0 (self->priv->candidates), _tmp12_); + _g_object_unref0 (request); +} + + +static void identity_manager_view_label_make_bold (IdentityManagerView* self, GtkLabel* label) { + PangoFontDescription* font_desc; + g_return_if_fail (self != NULL); + g_return_if_fail (label != NULL); + font_desc = pango_font_description_new (); + pango_font_description_set_weight (font_desc, PANGO_WEIGHT_BOLD); + gtk_widget_modify_font ((GtkWidget*) label, font_desc); + _pango_font_description_free0 (font_desc); +} + + +static void _lambda1_ (GtkButton* remove_button, IdentityManagerView* self) { + GtkMessageDialog* dialog; + gint ret; + g_return_if_fail (remove_button != NULL); + dialog = g_object_ref_sink ((GtkMessageDialog*) gtk_message_dialog_new ((GtkWindow*) self, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, _ ("Are you sure you want to stop '%s' ID Card to use %s?"), id_card_get_display_name (id_card_widget_get_id_card (custom_vbox_get_current_idcard (self->priv->custom_vbox))))); + ret = gtk_dialog_run ((GtkDialog*) dialog); + gtk_widget_hide ((GtkWidget*) dialog); + if (ret == GTK_RESPONSE_YES) { + IdCard* idcard; + char* candidate; + GSList* services; + gint _tmp1_; + char** _tmp2_; + gint _tmp2__length1; + char** _tmp3_; + GList* children; + idcard = _g_object_ref0 (id_card_widget_get_id_card (custom_vbox_get_current_idcard (self->priv->custom_vbox))); + candidate = g_strdup ((const char*) g_hash_table_lookup (self->priv->service_button_map, remove_button)); + services = NULL; + { + gint _tmp0_; + char** srv_collection; + int srv_collection_length1; + int srv_it; + srv_collection = id_card_get_services (idcard, &_tmp0_); + srv_collection_length1 = _tmp0_; + for (srv_it = 0; srv_it < _tmp0_; srv_it = srv_it + 1) { + char* srv; + srv = g_strdup (srv_collection[srv_it]); + { + if (_vala_strcmp0 (srv, candidate) == 0) { + _g_free0 (srv); + continue; + } + services = g_slist_append (services, g_strdup (srv)); + _g_free0 (srv); + } + } + } + _tmp3_ = (_tmp2_ = g_new0 (char*, (_tmp1_ = g_slist_length (services)) + 1), _tmp2__length1 = _tmp1_, _tmp2_); + id_card_set_services (idcard, _tmp3_, _tmp1_); + _tmp2_ = (_vala_array_free (_tmp2_, _tmp2__length1, (GDestroyNotify) g_free), NULL); + { + gint j; + j = 0; + { + gboolean _tmp4_; + _tmp4_ = TRUE; + while (TRUE) { + gint _tmp5_; + gint _tmp6_; + gint _tmp7_; + char* *_tmp8_; + char* _tmp9_; + if (!_tmp4_) { + j++; + } + _tmp4_ = FALSE; + if (!(j < _tmp5_)) { + break; + } + _tmp8_ = &id_card_get_services (idcard, &_tmp7_)[j]; + (*_tmp8_) = (_tmp9_ = g_strdup ((const char*) g_slist_nth_data (services, (guint) j)), _g_free0 ((*_tmp8_)), _tmp9_); + } + } + } + children = gtk_container_get_children ((GtkContainer*) self->priv->services_internal_vbox); + { + GList* hbox_collection; + GList* hbox_it; + hbox_collection = children; + for (hbox_it = hbox_collection; hbox_it != NULL; hbox_it = hbox_it->next) { + GtkWidget* hbox; + hbox = (GtkWidget*) hbox_it->data; + { + gtk_object_destroy ((GtkObject*) hbox); + } + } + } + identity_manager_view_fill_services_vbox (self, idcard); + id_card_widget_update_id_card_label (custom_vbox_get_current_idcard (self->priv->custom_vbox)); + _g_list_free0 (children); + __g_slist_free_g_free0 (services); + _g_free0 (candidate); + _g_object_unref0 (idcard); + } + _g_object_unref0 (dialog); +} + + +static void __lambda1__gtk_button_clicked (GtkButton* _sender, gpointer self) { + _lambda1_ (_sender, self); +} + + +static void identity_manager_view_fill_services_vbox (IdentityManagerView* self, IdCard* id_card) { + gint i; + gint _tmp0_; + gint n_columns; + GtkTable* services_table; + g_return_if_fail (self != NULL); + g_return_if_fail (id_card != NULL); + i = 0; + n_columns = _tmp0_; + services_table = g_object_ref_sink ((GtkTable*) gtk_table_new ((guint) n_columns, (guint) 2, FALSE)); + gtk_table_set_col_spacings (services_table, (guint) 10); + gtk_table_set_row_spacings (services_table, (guint) 10); + gtk_container_add ((GtkContainer*) self->priv->services_internal_vbox, (GtkWidget*) services_table); + g_hash_table_remove_all (self->priv->service_button_map); + { + gint _tmp1_; + char** service_collection; + int service_collection_length1; + int service_it; + service_collection = id_card_get_services (id_card, &_tmp1_); + service_collection_length1 = _tmp1_; + for (service_it = 0; service_it < _tmp1_; service_it = service_it + 1) { + char* service; + service = g_strdup (service_collection[service_it]); + { + GtkLabel* label; + GtkButton* remove_button; + label = g_object_ref_sink ((GtkLabel*) gtk_label_new (service)); + gtk_misc_set_alignment ((GtkMisc*) label, (float) 0, (float) 0.5); + remove_button = g_object_ref_sink ((GtkButton*) gtk_button_new_from_stock (GTK_STOCK_REMOVE)); + g_hash_table_insert (self->priv->service_button_map, _g_object_ref0 (remove_button), g_strdup (service)); + g_signal_connect_object (remove_button, "clicked", (GCallback) __lambda1__gtk_button_clicked, self, 0); + gtk_table_attach_defaults (services_table, (GtkWidget*) label, (guint) 0, (guint) 1, (guint) i, (guint) (i + 1)); + gtk_table_attach_defaults (services_table, (GtkWidget*) remove_button, (guint) 1, (guint) 2, (guint) i, (guint) (i + 1)); + i++; + _g_object_unref0 (remove_button); + _g_object_unref0 (label); + _g_free0 (service); + } + } + } + gtk_widget_show_all ((GtkWidget*) self->priv->services_internal_vbox); + _g_object_unref0 (services_table); +} + + +static void identity_manager_view_on_about_action (IdentityManagerView* self) { + gint authors_length1; + gint _authors_size_; + char** _tmp1_; + char** _tmp0_ = NULL; + char** authors; + char* copyright; + char* license; + g_return_if_fail (self != NULL); + authors = (_tmp1_ = (_tmp0_ = g_new0 (char*, 4 + 1), _tmp0_[0] = g_strdup ("Javier Jardón "), _tmp0_[1] = g_strdup ("Sam Thursfield "), _tmp0_[2] = g_strdup ("Alberto Ruiz "), _tmp0_[3] = NULL, _tmp0_), authors_length1 = 4, _authors_size_ = authors_length1, _tmp1_); + copyright = g_strdup ("Copyright 2011 JANET"); + license = g_strdup ("\n" \ +"Copyright (c) 2011, JANET(UK)\n" \ +"All rights reserved.\n" \ +"\n" \ +"Redistribution and use in source and binary forms, with or without\n" \ +"modification, are permitted provided that the following conditions\n" \ +"are met:\n" \ +"\n" \ +"1. Redistributions of source code must retain the above copyright\n" \ +" notice, this list of conditions and the following disclaimer.\n" \ +"\n" \ +"2. Redistributions in binary form must reproduce the above copyright\n" \ +" notice, this list of conditions and the following disclaimer in the" \ +"\n" \ +" documentation and/or other materials provided with the distribution" \ +".\n" \ +"\n" \ +"3. Neither the name of JANET(UK) nor the names of its contributors\n" \ +" may be used to endorse or promote products derived from this softwa" \ +"re\n" \ +" without specific prior written permission.\n" \ +"\n" \ +"THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \\" \ +"\"AS IS\\\"\n" \ +"AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, " \ +"THE\n" \ +"IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PUR" \ +"POSE\n" \ +"ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS" \ +" BE LIABLE\n" \ +"FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUEN" \ +"TIAL\n" \ +"DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOOD" \ +"S\n" \ +"OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n" \ +"HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, ST" \ +"RICT\n" \ +"LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY " \ +"WAY\n" \ +"OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF" \ +"\n" \ +"SUCH DAMAGE.\n"); + gtk_show_about_dialog ((GtkWindow*) self, "comments", _ ("Moonshot project UI"), "copyright", copyright, "website", "http://www.project-moonshot.org/", "license", license, "website-label", _ ("Visit the Moonshot project web site"), "authors", authors, "translator-credits", _ ("translator-credits"), NULL, NULL); + _g_free0 (license); + _g_free0 (copyright); + authors = (_vala_array_free (authors, authors_length1, (GDestroyNotify) g_free), NULL); +} + + +static void _vala_array_add1 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value) { + if ((*length) == (*size)) { + *size = (*size) ? (2 * (*size)) : 4; + *array = g_renew (GtkActionEntry, *array, *size); + } + (*array)[(*length)++] = *value; +} + + +static void _identity_manager_view_add_identity_manual_cb_gtk_action_callback (GtkAction* action, gpointer self) { + identity_manager_view_add_identity_manual_cb (self); +} + + +static void _vala_array_add2 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value) { + if ((*length) == (*size)) { + *size = (*size) ? (2 * (*size)) : 4; + *array = g_renew (GtkActionEntry, *array, *size); + } + (*array)[(*length)++] = *value; +} + + +static void _gtk_main_quit_gtk_action_callback (GtkAction* action, gpointer self) { + gtk_main_quit (); +} + + +static void _vala_array_add3 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value) { + if ((*length) == (*size)) { + *size = (*size) ? (2 * (*size)) : 4; + *array = g_renew (GtkActionEntry, *array, *size); + } + (*array)[(*length)++] = *value; +} + + +static void _vala_array_add4 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value) { + if ((*length) == (*size)) { + *size = (*size) ? (2 * (*size)) : 4; + *array = g_renew (GtkActionEntry, *array, *size); + } + (*array)[(*length)++] = *value; +} + + +static void _identity_manager_view_on_about_action_gtk_action_callback (GtkAction* action, gpointer self) { + identity_manager_view_on_about_action (self); +} + + +static void _vala_array_add5 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value) { + if ((*length) == (*size)) { + *size = (*size) ? (2 * (*size)) : 4; + *array = g_renew (GtkActionEntry, *array, *size); + } + (*array)[(*length)++] = *value; +} + + +static GtkActionEntry* identity_manager_view_create_actions (IdentityManagerView* self, int* result_length1) { + GtkActionEntry* result = NULL; + gint actions_length1; + gint _actions_size_; + GtkActionEntry* _tmp0_; + GtkActionEntry* actions; + GtkActionEntry _tmp1_ = {0}; + GtkActionEntry filemenu; + GtkActionEntry _tmp2_ = {0}; + GtkActionEntry add; + GtkActionEntry _tmp3_ = {0}; + GtkActionEntry quit; + GtkActionEntry _tmp4_ = {0}; + GtkActionEntry helpmenu; + GtkActionEntry _tmp5_ = {0}; + GtkActionEntry about; + GtkActionEntry* _tmp6_; + g_return_val_if_fail (self != NULL, NULL); + actions = (_tmp0_ = g_new0 (GtkActionEntry, 0), actions_length1 = 0, _actions_size_ = actions_length1, _tmp0_); + filemenu = (_tmp1_.name = "FileMenuAction", _tmp1_.stock_id = NULL, _tmp1_.label = N_ ("_File"), _tmp1_.accelerator = NULL, _tmp1_.tooltip = NULL, _tmp1_.callback = (GCallback) NULL, _tmp1_); + _vala_array_add1 (&actions, &actions_length1, &_actions_size_, &filemenu); + add = (_tmp2_.name = "AddIdCardAction", _tmp2_.stock_id = GTK_STOCK_ADD, _tmp2_.label = N_ ("Add ID Card"), _tmp2_.accelerator = NULL, _tmp2_.tooltip = N_ ("Add a new ID Card"), _tmp2_.callback = (GCallback) _identity_manager_view_add_identity_manual_cb_gtk_action_callback, _tmp2_); + _vala_array_add2 (&actions, &actions_length1, &_actions_size_, &add); + quit = (_tmp3_.name = "QuitAction", _tmp3_.stock_id = GTK_STOCK_QUIT, _tmp3_.label = N_ ("Quit"), _tmp3_.accelerator = "Q", _tmp3_.tooltip = N_ ("Quit the application"), _tmp3_.callback = (GCallback) _gtk_main_quit_gtk_action_callback, _tmp3_); + _vala_array_add3 (&actions, &actions_length1, &_actions_size_, &quit); + helpmenu = (_tmp4_.name = "HelpMenuAction", _tmp4_.stock_id = NULL, _tmp4_.label = N_ ("_Help"), _tmp4_.accelerator = NULL, _tmp4_.tooltip = NULL, _tmp4_.callback = (GCallback) NULL, _tmp4_); + _vala_array_add4 (&actions, &actions_length1, &_actions_size_, &helpmenu); + about = (_tmp5_.name = "AboutAction", _tmp5_.stock_id = GTK_STOCK_ABOUT, _tmp5_.label = N_ ("About"), _tmp5_.accelerator = NULL, _tmp5_.tooltip = N_ ("About this application"), _tmp5_.callback = (GCallback) _identity_manager_view_on_about_action_gtk_action_callback, _tmp5_); + _vala_array_add5 (&actions, &actions_length1, &_actions_size_, &about); + result = (_tmp6_ = actions, *result_length1 = actions_length1, _tmp6_); + return result; + actions = (g_free (actions), NULL); +} + + +static void identity_manager_view_create_ui_manager (IdentityManagerView* self) { + GtkActionGroup* action_group; + gint _tmp0_; + GtkActionEntry* _tmp1_; + gint _tmp1__length1; + GtkActionEntry* _tmp2_; + GError * _inner_error_ = NULL; + g_return_if_fail (self != NULL); + action_group = gtk_action_group_new ("GeneralActionGroup"); + _tmp2_ = (_tmp1_ = identity_manager_view_create_actions (self, &_tmp0_), _tmp1__length1 = _tmp0_, _tmp1_); + gtk_action_group_add_actions (action_group, _tmp2_, _tmp0_, self); + _tmp1_ = (g_free (_tmp1_), NULL); + gtk_ui_manager_insert_action_group (self->priv->ui_manager, action_group, 0); + { + gtk_ui_manager_add_ui_from_string (self->priv->ui_manager, IDENTITY_MANAGER_VIEW_layout, (gssize) (-1), &_inner_error_); + if (_inner_error_ != NULL) { + goto __catch1_g_error; + } + } + goto __finally1; + __catch1_g_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { + fprintf (stderr, "%s\n", e->message); + _g_error_free0 (e); + } + } + __finally1: + if (_inner_error_ != NULL) { + _g_object_unref0 (action_group); + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } + gtk_ui_manager_ensure_update (self->priv->ui_manager); + _g_object_unref0 (action_group); +} + + +static void _identity_manager_view_search_entry_icon_press_cb_gtk_entry_icon_press (GtkEntry* _sender, GtkEntryIconPosition p0, GdkEvent* p1, gpointer self) { + identity_manager_view_search_entry_icon_press_cb (self, p0, p1); +} + + +static void _identity_manager_view_search_entry_text_changed_cb_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self) { + identity_manager_view_search_entry_text_changed_cb (self); +} + + +static gboolean _identity_manager_view_search_entry_key_press_event_cb_gtk_widget_key_press_event (GtkWidget* _sender, GdkEventKey* event, gpointer self) { + gboolean result; + result = identity_manager_view_search_entry_key_press_event_cb (self, event); + return result; +} + + +static void identity_manager_view_build_ui (IdentityManagerView* self) { + GtkEntry* _tmp0_; + GdkPixbuf* _tmp1_; + GdkPixbuf* _tmp2_; + CustomVBox* _tmp3_; + GtkViewport* viewport; + GtkScrolledWindow* scroll; + GtkVBox* vbox_left; + GtkLabel* login_vbox_title; + GtkLabel* username_label; + GtkEntry* _tmp4_; + GtkLabel* password_label; + GtkEntry* _tmp5_; + GtkCheckButton* remember_checkbutton; + GtkTable* login_table; + GtkAlignment* login_vbox_alignment; + GtkVBox* login_vbox; + GtkLabel* services_vbox_title; + GtkAlignment* services_vbox_alignment; + GtkVBox* _tmp6_; + GtkVBox* services_vbox; + GtkVBox* _tmp7_; + GtkHBox* hbox; + GtkVBox* main_vbox; + GtkWidget* menubar; + g_return_if_fail (self != NULL); + identity_manager_view_create_ui_manager (self); + self->priv->search_entry = (_tmp0_ = g_object_ref_sink ((GtkEntry*) gtk_entry_new ()), _g_object_unref0 (self->priv->search_entry), _tmp0_); + identity_manager_view_set_atk_name_description (self, (GtkWidget*) self->priv->search_entry, _ ("Search entry"), _ ("Search for a specific ID Card")); + gtk_entry_set_icon_from_pixbuf (self->priv->search_entry, GTK_ENTRY_ICON_PRIMARY, _tmp1_ = find_icon_sized ("edit-find", GTK_ICON_SIZE_MENU)); + _g_object_unref0 (_tmp1_); + gtk_entry_set_icon_tooltip_text (self->priv->search_entry, GTK_ENTRY_ICON_PRIMARY, _ ("Search identity or service")); + gtk_entry_set_icon_sensitive (self->priv->search_entry, GTK_ENTRY_ICON_PRIMARY, FALSE); + gtk_entry_set_icon_from_pixbuf (self->priv->search_entry, GTK_ENTRY_ICON_SECONDARY, _tmp2_ = find_icon_sized ("process-stop", GTK_ICON_SIZE_MENU)); + _g_object_unref0 (_tmp2_); + gtk_entry_set_icon_tooltip_text (self->priv->search_entry, GTK_ENTRY_ICON_SECONDARY, _ ("Clear the current search")); + gtk_entry_set_icon_sensitive (self->priv->search_entry, GTK_ENTRY_ICON_SECONDARY, FALSE); + g_signal_connect_object (self->priv->search_entry, "icon-press", (GCallback) _identity_manager_view_search_entry_icon_press_cb_gtk_entry_icon_press, self, 0); + g_signal_connect_object ((GObject*) self->priv->search_entry, "notify::text", (GCallback) _identity_manager_view_search_entry_text_changed_cb_g_object_notify, self, 0); + g_signal_connect_object ((GtkWidget*) self->priv->search_entry, "key-press-event", (GCallback) _identity_manager_view_search_entry_key_press_event_cb_gtk_widget_key_press_event, self, 0); + self->priv->custom_vbox = (_tmp3_ = g_object_ref_sink (custom_vbox_new (self, FALSE, 6)), _g_object_unref0 (self->priv->custom_vbox), _tmp3_); + viewport = g_object_ref_sink ((GtkViewport*) gtk_viewport_new (NULL, NULL)); + gtk_container_set_border_width ((GtkContainer*) viewport, (guint) 6); + gtk_viewport_set_shadow_type (viewport, GTK_SHADOW_NONE); + gtk_container_add ((GtkContainer*) viewport, (GtkWidget*) self->priv->custom_vbox); + scroll = g_object_ref_sink ((GtkScrolledWindow*) gtk_scrolled_window_new (NULL, NULL)); + gtk_scrolled_window_set_policy (scroll, GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); + gtk_scrolled_window_set_shadow_type (scroll, GTK_SHADOW_IN); + gtk_scrolled_window_add_with_viewport (scroll, (GtkWidget*) viewport); + vbox_left = g_object_ref_sink ((GtkVBox*) gtk_vbox_new (FALSE, 0)); + gtk_box_pack_start ((GtkBox*) vbox_left, (GtkWidget*) self->priv->search_entry, FALSE, FALSE, (guint) 6); + gtk_box_pack_start ((GtkBox*) vbox_left, (GtkWidget*) scroll, TRUE, TRUE, (guint) 0); + gtk_widget_set_size_request ((GtkWidget*) vbox_left, IDENTITY_MANAGER_VIEW_WINDOW_WIDTH, 0); + login_vbox_title = g_object_ref_sink ((GtkLabel*) gtk_label_new (_ ("Login: "))); + identity_manager_view_label_make_bold (self, login_vbox_title); + gtk_misc_set_alignment ((GtkMisc*) login_vbox_title, (float) 0, (float) 0.5); + username_label = g_object_ref_sink ((GtkLabel*) gtk_label_new (_ ("Username:"))); + gtk_misc_set_alignment ((GtkMisc*) username_label, (float) 1, (float) 0.5); + self->priv->username_entry = (_tmp4_ = g_object_ref_sink ((GtkEntry*) gtk_entry_new ()), _g_object_unref0 (self->priv->username_entry), _tmp4_); + password_label = g_object_ref_sink ((GtkLabel*) gtk_label_new (_ ("Password:"))); + gtk_misc_set_alignment ((GtkMisc*) password_label, (float) 1, (float) 0.5); + self->priv->password_entry = (_tmp5_ = g_object_ref_sink ((GtkEntry*) gtk_entry_new ()), _g_object_unref0 (self->priv->password_entry), _tmp5_); + gtk_entry_set_invisible_char (self->priv->password_entry, (gunichar) '*'); + gtk_entry_set_visibility (self->priv->password_entry, FALSE); + remember_checkbutton = g_object_ref_sink ((GtkCheckButton*) gtk_check_button_new_with_label (_ ("Remember password"))); + login_table = g_object_ref_sink ((GtkTable*) gtk_table_new ((guint) 3, (guint) 3, FALSE)); + gtk_table_set_col_spacings (login_table, (guint) 10); + gtk_table_set_row_spacings (login_table, (guint) 10); + gtk_table_attach_defaults (login_table, (GtkWidget*) username_label, (guint) 0, (guint) 1, (guint) 0, (guint) 1); + gtk_table_attach_defaults (login_table, (GtkWidget*) self->priv->username_entry, (guint) 1, (guint) 2, (guint) 0, (guint) 1); + gtk_table_attach_defaults (login_table, (GtkWidget*) password_label, (guint) 0, (guint) 1, (guint) 1, (guint) 2); + gtk_table_attach_defaults (login_table, (GtkWidget*) self->priv->password_entry, (guint) 1, (guint) 2, (guint) 1, (guint) 2); + gtk_table_attach_defaults (login_table, (GtkWidget*) remember_checkbutton, (guint) 1, (guint) 2, (guint) 2, (guint) 3); + login_vbox_alignment = g_object_ref_sink ((GtkAlignment*) gtk_alignment_new ((float) 0, (float) 0, (float) 0, (float) 0)); + gtk_alignment_set_padding (login_vbox_alignment, (guint) 0, (guint) 0, (guint) 12, (guint) 0); + gtk_container_add ((GtkContainer*) login_vbox_alignment, (GtkWidget*) login_table); + login_vbox = g_object_ref_sink ((GtkVBox*) gtk_vbox_new (FALSE, 6)); + gtk_box_pack_start ((GtkBox*) login_vbox, (GtkWidget*) login_vbox_title, FALSE, TRUE, (guint) 0); + gtk_box_pack_start ((GtkBox*) login_vbox, (GtkWidget*) login_vbox_alignment, FALSE, TRUE, (guint) 0); + services_vbox_title = g_object_ref_sink ((GtkLabel*) gtk_label_new (_ ("Services:"))); + identity_manager_view_label_make_bold (self, services_vbox_title); + gtk_misc_set_alignment ((GtkMisc*) services_vbox_title, (float) 0, (float) 0.5); + services_vbox_alignment = g_object_ref_sink ((GtkAlignment*) gtk_alignment_new ((float) 0, (float) 0, (float) 0, (float) 0)); + gtk_alignment_set_padding (services_vbox_alignment, (guint) 0, (guint) 0, (guint) 12, (guint) 0); + self->priv->services_internal_vbox = (_tmp6_ = g_object_ref_sink ((GtkVBox*) gtk_vbox_new (TRUE, 6)), _g_object_unref0 (self->priv->services_internal_vbox), _tmp6_); + gtk_container_add ((GtkContainer*) services_vbox_alignment, (GtkWidget*) self->priv->services_internal_vbox); + services_vbox = g_object_ref_sink ((GtkVBox*) gtk_vbox_new (FALSE, 6)); + gtk_box_pack_start ((GtkBox*) services_vbox, (GtkWidget*) services_vbox_title, FALSE, TRUE, (guint) 0); + gtk_box_pack_start ((GtkBox*) services_vbox, (GtkWidget*) services_vbox_alignment, FALSE, TRUE, (guint) 0); + self->priv->vbox_right = (_tmp7_ = g_object_ref_sink ((GtkVBox*) gtk_vbox_new (FALSE, 18)), _g_object_unref0 (self->priv->vbox_right), _tmp7_); + gtk_box_pack_start ((GtkBox*) self->priv->vbox_right, (GtkWidget*) login_vbox, FALSE, TRUE, (guint) 0); + gtk_box_pack_start ((GtkBox*) self->priv->vbox_right, (GtkWidget*) services_vbox, FALSE, TRUE, (guint) 0); + hbox = g_object_ref_sink ((GtkHBox*) gtk_hbox_new (FALSE, 12)); + gtk_box_pack_start ((GtkBox*) hbox, (GtkWidget*) vbox_left, TRUE, TRUE, (guint) 0); + gtk_box_pack_start ((GtkBox*) hbox, (GtkWidget*) self->priv->vbox_right, FALSE, FALSE, (guint) 0); + main_vbox = g_object_ref_sink ((GtkVBox*) gtk_vbox_new (FALSE, 0)); + gtk_container_set_border_width ((GtkContainer*) main_vbox, (guint) 12); + menubar = _g_object_ref0 (gtk_ui_manager_get_widget (self->priv->ui_manager, "/MenuBar")); + gtk_box_pack_start ((GtkBox*) main_vbox, menubar, FALSE, FALSE, (guint) 0); + gtk_box_pack_start ((GtkBox*) main_vbox, (GtkWidget*) hbox, TRUE, TRUE, (guint) 0); + gtk_container_add ((GtkContainer*) self, (GtkWidget*) main_vbox); + gtk_widget_show_all ((GtkWidget*) main_vbox); + gtk_widget_hide ((GtkWidget*) self->priv->vbox_right); + _g_object_unref0 (menubar); + _g_object_unref0 (main_vbox); + _g_object_unref0 (hbox); + _g_object_unref0 (services_vbox); + _g_object_unref0 (services_vbox_alignment); + _g_object_unref0 (services_vbox_title); + _g_object_unref0 (login_vbox); + _g_object_unref0 (login_vbox_alignment); + _g_object_unref0 (login_table); + _g_object_unref0 (remember_checkbutton); + _g_object_unref0 (password_label); + _g_object_unref0 (username_label); + _g_object_unref0 (login_vbox_title); + _g_object_unref0 (vbox_left); + _g_object_unref0 (scroll); + _g_object_unref0 (viewport); +} + + +static void identity_manager_view_set_atk_name_description (IdentityManagerView* self, GtkWidget* widget, const char* name, const char* description) { + AtkObject* atk_widget; + g_return_if_fail (self != NULL); + g_return_if_fail (widget != NULL); + g_return_if_fail (name != NULL); + g_return_if_fail (description != NULL); + atk_widget = _g_object_ref0 (gtk_widget_get_accessible (widget)); + atk_object_set_name (atk_widget, name); + atk_object_set_description (atk_widget, description); + _g_object_unref0 (atk_widget); +} + + +static void _gtk_main_quit_gtk_object_destroy (GtkObject* _sender, gpointer self) { + gtk_main_quit (); +} + + +static void _identity_manager_view_on_card_list_changed_identity_manager_model_card_list_changed (IdentityManagerModel* _sender, gpointer self) { + identity_manager_view_on_card_list_changed (self); +} + + +static void identity_manager_view_connect_signals (IdentityManagerView* self) { + g_return_if_fail (self != NULL); + g_signal_connect ((GtkObject*) self, "destroy", (GCallback) _gtk_main_quit_gtk_object_destroy, NULL); + g_signal_connect_object (self->identities_manager, "card-list-changed", (GCallback) _identity_manager_view_on_card_list_changed_identity_manager_model_card_list_changed, self, 0); +} + + +static void identity_manager_view_class_init (IdentityManagerViewClass * klass) { + identity_manager_view_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (IdentityManagerViewPrivate)); + G_OBJECT_CLASS (klass)->finalize = identity_manager_view_finalize; +} + + +static void identity_manager_view_instance_init (IdentityManagerView * self) { + self->priv = IDENTITY_MANAGER_VIEW_GET_PRIVATE (self); + self->priv->ui_manager = gtk_ui_manager_new (); +} + + +static void identity_manager_view_finalize (GObject* obj) { + IdentityManagerView * self; + self = IDENTITY_MANAGER_VIEW (obj); + _g_object_unref0 (self->parent_app); + _g_object_unref0 (self->priv->ui_manager); + _g_object_unref0 (self->priv->search_entry); + _g_object_unref0 (self->priv->vbox_right); + _g_object_unref0 (self->priv->custom_vbox); + _g_object_unref0 (self->priv->services_internal_vbox); + _g_object_unref0 (self->priv->username_entry); + _g_object_unref0 (self->priv->password_entry); + _g_object_unref0 (self->priv->filter); + _g_object_unref0 (self->identities_manager); + __g_slist_free_g_object_unref0 (self->priv->candidates); + _g_object_unref0 (self->priv->default_id_card); + _g_queue_free0 (self->request_queue); + _g_hash_table_unref0 (self->priv->service_button_map); + G_OBJECT_CLASS (identity_manager_view_parent_class)->finalize (obj); +} + + +GType identity_manager_view_get_type (void) { + static volatile gsize identity_manager_view_type_id__volatile = 0; + if (g_once_init_enter (&identity_manager_view_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (IdentityManagerViewClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) identity_manager_view_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (IdentityManagerView), 0, (GInstanceInitFunc) identity_manager_view_instance_init, NULL }; + GType identity_manager_view_type_id; + identity_manager_view_type_id = g_type_register_static (GTK_TYPE_WINDOW, "IdentityManagerView", &g_define_type_info, 0); + g_once_init_leave (&identity_manager_view_type_id__volatile, identity_manager_view_type_id); + } + return identity_manager_view_type_id__volatile; +} + + +static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) { + if ((array != NULL) && (destroy_func != NULL)) { + int i; + for (i = 0; i < array_length; i = i + 1) { + if (((gpointer*) array)[i] != NULL) { + destroy_func (((gpointer*) array)[i]); + } + } + } +} + + +static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) { + _vala_array_destroy (array, array_length, destroy_func); + g_free (array); +} + + +static gint _vala_array_length (gpointer array) { + int length; + length = 0; + if (array) { + while (((gpointer*) array)[length]) { + length++; + } + } + return length; +} + + +static int _vala_strcmp0 (const char * str1, const char * str2) { + if (str1 == NULL) { + return -(str1 != str2); + } + if (str2 == NULL) { + return str1 != str2; + } + return strcmp (str1, str2); +} + + + + diff --git a/src/moonshot-identity-manager-app.c b/src/moonshot-identity-manager-app.c new file mode 100644 index 0000000..aeb3c9b --- /dev/null +++ b/src/moonshot-identity-manager-app.c @@ -0,0 +1,273 @@ +/* moonshot-identity-manager-app.c generated by valac 0.10.4, the Vala compiler + * generated from moonshot-identity-manager-app.vala, do not modify */ + + +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#define TYPE_IDENTITY_MANAGER_APP (identity_manager_app_get_type ()) +#define IDENTITY_MANAGER_APP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IDENTITY_MANAGER_APP, IdentityManagerApp)) +#define IDENTITY_MANAGER_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_IDENTITY_MANAGER_APP, IdentityManagerAppClass)) +#define IS_IDENTITY_MANAGER_APP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IDENTITY_MANAGER_APP)) +#define IS_IDENTITY_MANAGER_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_IDENTITY_MANAGER_APP)) +#define IDENTITY_MANAGER_APP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_IDENTITY_MANAGER_APP, IdentityManagerAppClass)) + +typedef struct _IdentityManagerApp IdentityManagerApp; +typedef struct _IdentityManagerAppClass IdentityManagerAppClass; +typedef struct _IdentityManagerAppPrivate IdentityManagerAppPrivate; + +#define TYPE_IDENTITY_MANAGER_MODEL (identity_manager_model_get_type ()) +#define IDENTITY_MANAGER_MODEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IDENTITY_MANAGER_MODEL, IdentityManagerModel)) +#define IDENTITY_MANAGER_MODEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_IDENTITY_MANAGER_MODEL, IdentityManagerModelClass)) +#define IS_IDENTITY_MANAGER_MODEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IDENTITY_MANAGER_MODEL)) +#define IS_IDENTITY_MANAGER_MODEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_IDENTITY_MANAGER_MODEL)) +#define IDENTITY_MANAGER_MODEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_IDENTITY_MANAGER_MODEL, IdentityManagerModelClass)) + +typedef struct _IdentityManagerModel IdentityManagerModel; +typedef struct _IdentityManagerModelClass IdentityManagerModelClass; + +#define TYPE_IDENTITY_MANAGER_VIEW (identity_manager_view_get_type ()) +#define IDENTITY_MANAGER_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IDENTITY_MANAGER_VIEW, IdentityManagerView)) +#define IDENTITY_MANAGER_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_IDENTITY_MANAGER_VIEW, IdentityManagerViewClass)) +#define IS_IDENTITY_MANAGER_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IDENTITY_MANAGER_VIEW)) +#define IS_IDENTITY_MANAGER_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_IDENTITY_MANAGER_VIEW)) +#define IDENTITY_MANAGER_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_IDENTITY_MANAGER_VIEW, IdentityManagerViewClass)) + +typedef struct _IdentityManagerView IdentityManagerView; +typedef struct _IdentityManagerViewClass IdentityManagerViewClass; + +#define TYPE_MOONSHOT_SERVER (moonshot_server_get_type ()) +#define MOONSHOT_SERVER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MOONSHOT_SERVER, MoonshotServer)) +#define MOONSHOT_SERVER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MOONSHOT_SERVER, MoonshotServerClass)) +#define IS_MOONSHOT_SERVER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MOONSHOT_SERVER)) +#define IS_MOONSHOT_SERVER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MOONSHOT_SERVER)) +#define MOONSHOT_SERVER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MOONSHOT_SERVER, MoonshotServerClass)) + +typedef struct _MoonshotServer MoonshotServer; +typedef struct _MoonshotServerClass MoonshotServerClass; +#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) +#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) +#define _g_free0(var) (var = (g_free (var), NULL)) + +struct _IdentityManagerApp { + GtkWindow parent_instance; + IdentityManagerAppPrivate * priv; + IdentityManagerModel* model; +}; + +struct _IdentityManagerAppClass { + GtkWindowClass parent_class; +}; + +struct _IdentityManagerAppPrivate { + IdentityManagerView* view; + MoonshotServer* ipc_server; +}; + + +static gpointer identity_manager_app_parent_class = NULL; + +GType identity_manager_app_get_type (void) G_GNUC_CONST; +GType identity_manager_model_get_type (void) G_GNUC_CONST; +GType identity_manager_view_get_type (void) G_GNUC_CONST; +GType moonshot_server_get_type (void) G_GNUC_CONST; +guint moonshot_server_register_object (void* object, GDBusConnection* connection, const gchar* path, GError** error); +#define IDENTITY_MANAGER_APP_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_IDENTITY_MANAGER_APP, IdentityManagerAppPrivate)) +enum { + IDENTITY_MANAGER_APP_DUMMY_PROPERTY +}; +#define IDENTITY_MANAGER_APP_WINDOW_WIDTH 400 +#define IDENTITY_MANAGER_APP_WINDOW_HEIGHT 500 +void identity_manager_app_show (IdentityManagerApp* self); +IdentityManagerApp* identity_manager_app_new (void); +IdentityManagerApp* identity_manager_app_construct (GType object_type); +IdentityManagerModel* identity_manager_model_new (IdentityManagerApp* parent_app); +IdentityManagerModel* identity_manager_model_construct (GType object_type, IdentityManagerApp* parent_app); +IdentityManagerView* identity_manager_view_new (IdentityManagerApp* app); +IdentityManagerView* identity_manager_view_construct (GType object_type, IdentityManagerApp* app); +static void identity_manager_app_init_ipc_server (IdentityManagerApp* self); +static void identity_manager_app_bus_acquired_cb (IdentityManagerApp* self, GDBusConnection* conn); +MoonshotServer* moonshot_server_new (GtkWindow* window); +MoonshotServer* moonshot_server_construct (GType object_type, GtkWindow* window); +static void _identity_manager_app_bus_acquired_cb_gbus_acquired_callback (GDBusConnection* connection, const char* name, gpointer self); +static void _lambda6_ (GDBusConnection* conn, const char* name, IdentityManagerApp* self); +static void __lambda6__gbus_name_acquired_callback (GDBusConnection* connection, const char* name, gpointer self); +static void _lambda7_ (GDBusConnection* conn, const char* name, IdentityManagerApp* self); +static void __lambda7__gbus_name_lost_callback (GDBusConnection* connection, const char* name, gpointer self); +static void identity_manager_app_finalize (GObject* obj); +gint _vala_main (char** args, int args_length1); + + + +void identity_manager_app_show (IdentityManagerApp* self) { + g_return_if_fail (self != NULL); + gtk_widget_show ((GtkWidget*) self->priv->view); +} + + +IdentityManagerApp* identity_manager_app_construct (GType object_type) { + IdentityManagerApp * self; + IdentityManagerModel* _tmp0_; + IdentityManagerView* _tmp1_; + self = g_object_newv (object_type, 0, NULL); + self->model = (_tmp0_ = identity_manager_model_new (self), _g_object_unref0 (self->model), _tmp0_); + self->priv->view = (_tmp1_ = g_object_ref_sink (identity_manager_view_new (self)), _g_object_unref0 (self->priv->view), _tmp1_); + identity_manager_app_init_ipc_server (self); + gtk_widget_show ((GtkWidget*) self->priv->view); + return self; +} + + +IdentityManagerApp* identity_manager_app_new (void) { + return identity_manager_app_construct (TYPE_IDENTITY_MANAGER_APP); +} + + +static void identity_manager_app_bus_acquired_cb (IdentityManagerApp* self, GDBusConnection* conn) { + GError * _inner_error_ = NULL; + g_return_if_fail (self != NULL); + g_return_if_fail (conn != NULL); + { + moonshot_server_register_object (self->priv->ipc_server, conn, "/org/janet/moonshot", &_inner_error_); + if (_inner_error_ != NULL) { + goto __catch0_g_error; + } + } + goto __finally0; + __catch0_g_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { + fprintf (stderr, "%s\n", e->message); + _g_error_free0 (e); + } + } + __finally0: + if (_inner_error_ != NULL) { + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } +} + + +static void _identity_manager_app_bus_acquired_cb_gbus_acquired_callback (GDBusConnection* connection, const char* name, gpointer self) { + identity_manager_app_bus_acquired_cb (self, connection); +} + + +static void _lambda6_ (GDBusConnection* conn, const char* name, IdentityManagerApp* self) { + g_return_if_fail (conn != NULL); + g_return_if_fail (name != NULL); +} + + +static void __lambda6__gbus_name_acquired_callback (GDBusConnection* connection, const char* name, gpointer self) { + _lambda6_ (connection, name, self); +} + + +static void _lambda7_ (GDBusConnection* conn, const char* name, IdentityManagerApp* self) { + g_return_if_fail (conn != NULL); + g_return_if_fail (name != NULL); + g_error ("moonshot-identity-manager-app.vala:78: Couldn't own name %s on DBus.", name); +} + + +static void __lambda7__gbus_name_lost_callback (GDBusConnection* connection, const char* name, gpointer self) { + _lambda7_ (connection, name, self); +} + + +static void identity_manager_app_init_ipc_server (IdentityManagerApp* self) { + MoonshotServer* _tmp0_; + g_return_if_fail (self != NULL); + self->priv->ipc_server = (_tmp0_ = moonshot_server_new ((GtkWindow*) self->priv->view), _g_object_unref0 (self->priv->ipc_server), _tmp0_); + g_bus_own_name_with_closures (G_BUS_TYPE_SESSION, "org.janet.Moonshot", G_BUS_NAME_OWNER_FLAGS_NONE, (GClosure*) g_cclosure_new ((GCallback) _identity_manager_app_bus_acquired_cb_gbus_acquired_callback, g_object_ref (self), g_object_unref), (GClosure*) g_cclosure_new ((GCallback) __lambda6__gbus_name_acquired_callback, g_object_ref (self), g_object_unref), (GClosure*) g_cclosure_new ((GCallback) __lambda7__gbus_name_lost_callback, g_object_ref (self), g_object_unref)); +} + + +static void identity_manager_app_class_init (IdentityManagerAppClass * klass) { + identity_manager_app_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (IdentityManagerAppPrivate)); + G_OBJECT_CLASS (klass)->finalize = identity_manager_app_finalize; +} + + +static void identity_manager_app_instance_init (IdentityManagerApp * self) { + self->priv = IDENTITY_MANAGER_APP_GET_PRIVATE (self); +} + + +static void identity_manager_app_finalize (GObject* obj) { + IdentityManagerApp * self; + self = IDENTITY_MANAGER_APP (obj); + _g_object_unref0 (self->model); + _g_object_unref0 (self->priv->view); + _g_object_unref0 (self->priv->ipc_server); + G_OBJECT_CLASS (identity_manager_app_parent_class)->finalize (obj); +} + + +GType identity_manager_app_get_type (void) { + static volatile gsize identity_manager_app_type_id__volatile = 0; + if (g_once_init_enter (&identity_manager_app_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (IdentityManagerAppClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) identity_manager_app_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (IdentityManagerApp), 0, (GInstanceInitFunc) identity_manager_app_instance_init, NULL }; + GType identity_manager_app_type_id; + identity_manager_app_type_id = g_type_register_static (GTK_TYPE_WINDOW, "IdentityManagerApp", &g_define_type_info, 0); + g_once_init_leave (&identity_manager_app_type_id__volatile, identity_manager_app_type_id); + } + return identity_manager_app_type_id__volatile; +} + + +gint _vala_main (char** args, int args_length1) { + gint result = 0; + IdentityManagerApp* app; + gtk_init (&args_length1, &args); + fprintf (stdout, "Hello\n"); + { + char** arg_collection; + int arg_collection_length1; + int arg_it; + arg_collection = args; + arg_collection_length1 = args_length1; + for (arg_it = 0; arg_it < args_length1; arg_it = arg_it + 1) { + char* arg; + arg = g_strdup (arg_collection[arg_it]); + { + fprintf (stdout, "arg %s\n", arg); + _g_free0 (arg); + } + } + } + bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); + bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); + textdomain (GETTEXT_PACKAGE); + app = g_object_ref_sink (identity_manager_app_new ()); + identity_manager_app_show (app); + gtk_main (); + result = 0; + _g_object_unref0 (app); + return result; +} + + +int main (int argc, char ** argv) { + g_type_init (); + return _vala_main (argv, argc); +} + + + + diff --git a/src/moonshot-identity-request.c b/src/moonshot-identity-request.c index 9e8c57c..aab4a26 100644 --- a/src/moonshot-identity-request.c +++ b/src/moonshot-identity-request.c @@ -30,18 +30,18 @@ typedef struct _IdentityRequestPrivate IdentityRequestPrivate; typedef struct _IdCard IdCard; typedef struct _IdCardClass IdCardClass; -#define TYPE_MAIN_WINDOW (main_window_get_type ()) -#define MAIN_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MAIN_WINDOW, MainWindow)) -#define MAIN_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MAIN_WINDOW, MainWindowClass)) -#define IS_MAIN_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MAIN_WINDOW)) -#define IS_MAIN_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MAIN_WINDOW)) -#define MAIN_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MAIN_WINDOW, MainWindowClass)) - -typedef struct _MainWindow MainWindow; -typedef struct _MainWindowClass MainWindowClass; +#define TYPE_IDENTITY_MANAGER_VIEW (identity_manager_view_get_type ()) +#define IDENTITY_MANAGER_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IDENTITY_MANAGER_VIEW, IdentityManagerView)) +#define IDENTITY_MANAGER_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_IDENTITY_MANAGER_VIEW, IdentityManagerViewClass)) +#define IS_IDENTITY_MANAGER_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IDENTITY_MANAGER_VIEW)) +#define IS_IDENTITY_MANAGER_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_IDENTITY_MANAGER_VIEW)) +#define IDENTITY_MANAGER_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_IDENTITY_MANAGER_VIEW, IdentityManagerViewClass)) + +typedef struct _IdentityManagerView IdentityManagerView; +typedef struct _IdentityManagerViewClass IdentityManagerViewClass; #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) #define _g_free0(var) (var = (g_free (var), NULL)) -typedef struct _Block1Data Block1Data; +typedef struct _Block2Data Block2Data; typedef void (*ReturnIdentityCallback) (IdentityRequest* request, void* user_data); struct _IdentityRequest { @@ -60,13 +60,13 @@ struct _IdentityRequestClass { }; struct _IdentityRequestPrivate { - MainWindow* main_window; + IdentityManagerView* main_window; ReturnIdentityCallback callback; gpointer callback_target; GDestroyNotify callback_target_destroy_notify; }; -struct _Block1Data { +struct _Block2Data { int _ref_count_; IdentityRequest * self; ReturnIdentityCallback cb; @@ -79,22 +79,22 @@ static gpointer identity_request_parent_class = NULL; GType identity_request_get_type (void) G_GNUC_CONST; GType id_card_get_type (void) G_GNUC_CONST; -GType main_window_get_type (void) G_GNUC_CONST; +GType identity_manager_view_get_type (void) G_GNUC_CONST; #define IDENTITY_REQUEST_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_IDENTITY_REQUEST, IdentityRequestPrivate)) enum { IDENTITY_REQUEST_DUMMY_PROPERTY }; -IdentityRequest* identity_request_new (MainWindow* main_window, const char* nai, const char* password, const char* service); -IdentityRequest* identity_request_construct (GType object_type, MainWindow* main_window, const char* nai, const char* password, const char* service); -IdentityRequest* identity_request_new_default (MainWindow* main_window); -IdentityRequest* identity_request_construct_default (GType object_type, MainWindow* main_window); +IdentityRequest* identity_request_new (IdentityManagerView* main_window, const char* nai, const char* password, const char* service); +IdentityRequest* identity_request_construct (GType object_type, IdentityManagerView* main_window, const char* nai, const char* password, const char* service); +IdentityRequest* identity_request_new_default (IdentityManagerView* main_window); +IdentityRequest* identity_request_construct_default (GType object_type, IdentityManagerView* main_window); void identity_request_set_callback (IdentityRequest* self, ReturnIdentityCallback cb, void* cb_target, GDestroyNotify cb_target_destroy_notify); -static void _lambda0_ (IdentityRequest* IdCard, Block1Data* _data1_); +static void _lambda0_ (IdentityRequest* IdCard, Block2Data* _data2_); static void __lambda0__return_identity_callback (IdentityRequest* request, gpointer self); -static Block1Data* block1_data_ref (Block1Data* _data1_); -static void block1_data_unref (Block1Data* _data1_); +static Block2Data* block2_data_ref (Block2Data* _data2_); +static void block2_data_unref (Block2Data* _data2_); gboolean identity_request_execute (IdentityRequest* self); -void main_window_select_identity (MainWindow* self, IdentityRequest* request); +void identity_manager_view_select_identity (IdentityManagerView* self, IdentityRequest* request); void identity_request_return_identity (IdentityRequest* self, IdCard* id_card); static void identity_request_finalize (GObject* obj); @@ -105,9 +105,9 @@ static gpointer _g_object_ref0 (gpointer self) { } -IdentityRequest* identity_request_construct (GType object_type, MainWindow* main_window, const char* nai, const char* password, const char* service) { +IdentityRequest* identity_request_construct (GType object_type, IdentityManagerView* main_window, const char* nai, const char* password, const char* service) { IdentityRequest * self = NULL; - MainWindow* _tmp0_; + IdentityManagerView* _tmp0_; char* _tmp1_; char* _tmp2_; char* _tmp3_; @@ -124,14 +124,14 @@ IdentityRequest* identity_request_construct (GType object_type, MainWindow* main } -IdentityRequest* identity_request_new (MainWindow* main_window, const char* nai, const char* password, const char* service) { +IdentityRequest* identity_request_new (IdentityManagerView* main_window, const char* nai, const char* password, const char* service) { return identity_request_construct (TYPE_IDENTITY_REQUEST, main_window, nai, password, service); } -IdentityRequest* identity_request_construct_default (GType object_type, MainWindow* main_window) { +IdentityRequest* identity_request_construct_default (GType object_type, IdentityManagerView* main_window) { IdentityRequest * self = NULL; - MainWindow* _tmp0_; + IdentityManagerView* _tmp0_; g_return_val_if_fail (main_window != NULL, NULL); self = (IdentityRequest*) g_object_new (object_type, NULL); self->priv->main_window = (_tmp0_ = _g_object_ref0 (main_window), _g_object_unref0 (self->priv->main_window), _tmp0_); @@ -140,16 +140,16 @@ IdentityRequest* identity_request_construct_default (GType object_type, MainWind } -IdentityRequest* identity_request_new_default (MainWindow* main_window) { +IdentityRequest* identity_request_new_default (IdentityManagerView* main_window) { return identity_request_construct_default (TYPE_IDENTITY_REQUEST, main_window); } -static void _lambda0_ (IdentityRequest* IdCard, Block1Data* _data1_) { +static void _lambda0_ (IdentityRequest* IdCard, Block2Data* _data2_) { IdentityRequest * self; - self = _data1_->self; + self = _data2_->self; g_return_if_fail (IdCard != NULL); - _data1_->cb (IdCard, _data1_->cb_target); + _data2_->cb (IdCard, _data2_->cb_target); } @@ -158,43 +158,43 @@ static void __lambda0__return_identity_callback (IdentityRequest* request, gpoin } -static Block1Data* block1_data_ref (Block1Data* _data1_) { - g_atomic_int_inc (&_data1_->_ref_count_); - return _data1_; +static Block2Data* block2_data_ref (Block2Data* _data2_) { + g_atomic_int_inc (&_data2_->_ref_count_); + return _data2_; } -static void block1_data_unref (Block1Data* _data1_) { - if (g_atomic_int_dec_and_test (&_data1_->_ref_count_)) { - _g_object_unref0 (_data1_->self); - (_data1_->cb_target_destroy_notify == NULL) ? NULL : (_data1_->cb_target_destroy_notify (_data1_->cb_target), NULL); - _data1_->cb = NULL; - _data1_->cb_target = NULL; - _data1_->cb_target_destroy_notify = NULL; - g_slice_free (Block1Data, _data1_); +static void block2_data_unref (Block2Data* _data2_) { + if (g_atomic_int_dec_and_test (&_data2_->_ref_count_)) { + _g_object_unref0 (_data2_->self); + (_data2_->cb_target_destroy_notify == NULL) ? NULL : (_data2_->cb_target_destroy_notify (_data2_->cb_target), NULL); + _data2_->cb = NULL; + _data2_->cb_target = NULL; + _data2_->cb_target_destroy_notify = NULL; + g_slice_free (Block2Data, _data2_); } } void identity_request_set_callback (IdentityRequest* self, ReturnIdentityCallback cb, void* cb_target, GDestroyNotify cb_target_destroy_notify) { - Block1Data* _data1_; + Block2Data* _data2_; ReturnIdentityCallback _tmp0_; g_return_if_fail (self != NULL); - _data1_ = g_slice_new0 (Block1Data); - _data1_->_ref_count_ = 1; - _data1_->self = g_object_ref (self); - _data1_->cb = cb; - _data1_->cb_target = cb_target; - _data1_->cb_target_destroy_notify = cb_target_destroy_notify; - self->priv->callback = (_tmp0_ = __lambda0__return_identity_callback, ((self->priv->callback_target_destroy_notify == NULL) ? NULL : (self->priv->callback_target_destroy_notify (self->priv->callback_target), NULL), self->priv->callback = NULL, self->priv->callback_target = NULL, self->priv->callback_target_destroy_notify = NULL), self->priv->callback_target = block1_data_ref (_data1_), self->priv->callback_target_destroy_notify = block1_data_unref, _tmp0_); - block1_data_unref (_data1_); + _data2_ = g_slice_new0 (Block2Data); + _data2_->_ref_count_ = 1; + _data2_->self = g_object_ref (self); + _data2_->cb = cb; + _data2_->cb_target = cb_target; + _data2_->cb_target_destroy_notify = cb_target_destroy_notify; + self->priv->callback = (_tmp0_ = __lambda0__return_identity_callback, ((self->priv->callback_target_destroy_notify == NULL) ? NULL : (self->priv->callback_target_destroy_notify (self->priv->callback_target), NULL), self->priv->callback = NULL, self->priv->callback_target = NULL, self->priv->callback_target_destroy_notify = NULL), self->priv->callback_target = block2_data_ref (_data2_), self->priv->callback_target_destroy_notify = block2_data_unref, _tmp0_); + block2_data_unref (_data2_); } gboolean identity_request_execute (IdentityRequest* self) { gboolean result = FALSE; g_return_val_if_fail (self != NULL, FALSE); - main_window_select_identity (self->priv->main_window, self); + identity_manager_view_select_identity (self->priv->main_window, self); result = FALSE; return result; } diff --git a/src/moonshot-local-flat-file-store.c b/src/moonshot-local-flat-file-store.c new file mode 100644 index 0000000..839d8b9 --- /dev/null +++ b/src/moonshot-local-flat-file-store.c @@ -0,0 +1,741 @@ +/* moonshot-local-flat-file-store.c generated by valac 0.10.4, the Vala compiler + * generated from moonshot-local-flat-file-store.vala, do not modify */ + + +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#define TYPE_IIDENTITY_CARD_STORE (iidentity_card_store_get_type ()) +#define IIDENTITY_CARD_STORE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IIDENTITY_CARD_STORE, IIdentityCardStore)) +#define IS_IIDENTITY_CARD_STORE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IIDENTITY_CARD_STORE)) +#define IIDENTITY_CARD_STORE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), TYPE_IIDENTITY_CARD_STORE, IIdentityCardStoreIface)) + +typedef struct _IIdentityCardStore IIdentityCardStore; +typedef struct _IIdentityCardStoreIface IIdentityCardStoreIface; + +#define TYPE_ID_CARD (id_card_get_type ()) +#define ID_CARD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ID_CARD, IdCard)) +#define ID_CARD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ID_CARD, IdCardClass)) +#define IS_ID_CARD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ID_CARD)) +#define IS_ID_CARD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ID_CARD)) +#define ID_CARD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ID_CARD, IdCardClass)) + +typedef struct _IdCard IdCard; +typedef struct _IdCardClass IdCardClass; + +#define TYPE_LOCAL_FLAT_FILE_STORE (local_flat_file_store_get_type ()) +#define LOCAL_FLAT_FILE_STORE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_LOCAL_FLAT_FILE_STORE, LocalFlatFileStore)) +#define LOCAL_FLAT_FILE_STORE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_LOCAL_FLAT_FILE_STORE, LocalFlatFileStoreClass)) +#define IS_LOCAL_FLAT_FILE_STORE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_LOCAL_FLAT_FILE_STORE)) +#define IS_LOCAL_FLAT_FILE_STORE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_LOCAL_FLAT_FILE_STORE)) +#define LOCAL_FLAT_FILE_STORE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_LOCAL_FLAT_FILE_STORE, LocalFlatFileStoreClass)) + +typedef struct _LocalFlatFileStore LocalFlatFileStore; +typedef struct _LocalFlatFileStoreClass LocalFlatFileStoreClass; +typedef struct _LocalFlatFileStorePrivate LocalFlatFileStorePrivate; +#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) +#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) +#define _g_free0(var) (var = (g_free (var), NULL)) +#define _g_key_file_free0(var) ((var == NULL) ? NULL : (var = (g_key_file_free (var), NULL))) + +#define TYPE_RULE (rule_get_type ()) +typedef struct _Rule Rule; + +#define TYPE_TRUST_ANCHOR (trust_anchor_get_type ()) +#define TRUST_ANCHOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_TRUST_ANCHOR, TrustAnchor)) +#define TRUST_ANCHOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_TRUST_ANCHOR, TrustAnchorClass)) +#define IS_TRUST_ANCHOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_TRUST_ANCHOR)) +#define IS_TRUST_ANCHOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_TRUST_ANCHOR)) +#define TRUST_ANCHOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_TRUST_ANCHOR, TrustAnchorClass)) + +typedef struct _TrustAnchor TrustAnchor; +typedef struct _TrustAnchorClass TrustAnchorClass; + +struct _IIdentityCardStoreIface { + GTypeInterface parent_iface; + void (*add_card) (IIdentityCardStore* self, IdCard* card); + void (*remove_card) (IIdentityCardStore* self, IdCard* card); + void (*update_card) (IIdentityCardStore* self, IdCard* card); + GeeLinkedList* (*get_card_list) (IIdentityCardStore* self); +}; + +struct _LocalFlatFileStore { + GObject parent_instance; + LocalFlatFileStorePrivate * priv; +}; + +struct _LocalFlatFileStoreClass { + GObjectClass parent_class; +}; + +struct _LocalFlatFileStorePrivate { + GeeLinkedList* id_card_list; +}; + +struct _Rule { + char* pattern; + char* always_confirm; +}; + + +static gpointer local_flat_file_store_parent_class = NULL; +static IIdentityCardStoreIface* local_flat_file_store_iidentity_card_store_parent_iface = NULL; + +GType id_card_get_type (void) G_GNUC_CONST; +GType iidentity_card_store_get_type (void) G_GNUC_CONST; +GType local_flat_file_store_get_type (void) G_GNUC_CONST; +#define LOCAL_FLAT_FILE_STORE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_LOCAL_FLAT_FILE_STORE, LocalFlatFileStorePrivate)) +enum { + LOCAL_FLAT_FILE_STORE_DUMMY_PROPERTY +}; +#define LOCAL_FLAT_FILE_STORE_FILE_NAME "identities.txt" +static void local_flat_file_store_real_add_card (IIdentityCardStore* base, IdCard* card); +void local_flat_file_store_store_id_cards (LocalFlatFileStore* self); +static void local_flat_file_store_real_update_card (IIdentityCardStore* base, IdCard* card); +static void local_flat_file_store_real_remove_card (IIdentityCardStore* base, IdCard* card); +static GeeLinkedList* local_flat_file_store_real_get_card_list (IIdentityCardStore* base); +static void local_flat_file_store_load_id_cards (LocalFlatFileStore* self); +static char* local_flat_file_store_get_data_dir (LocalFlatFileStore* self); +IdCard* id_card_new (void); +IdCard* id_card_construct (GType object_type); +void id_card_set_issuer (IdCard* self, const char* value); +void id_card_set_username (IdCard* self, const char* value); +void id_card_set_password (IdCard* self, const char* value); +void id_card_set_services (IdCard* self, char** value, int value_length1); +void id_card_set_display_name (IdCard* self, const char* value); +GdkPixbuf* find_icon (const char* name, gint size); +GType rule_get_type (void) G_GNUC_CONST; +Rule* rule_dup (const Rule* self); +void rule_free (Rule* self); +void rule_copy (const Rule* self, Rule* dest); +void rule_destroy (Rule* self); +void id_card_set_rules (IdCard* self, Rule* value, int value_length1); +static void _vala_Rule_array_free (Rule* array, gint array_length); +GType trust_anchor_get_type (void) G_GNUC_CONST; +TrustAnchor* id_card_get_trust_anchor (IdCard* self); +void trust_anchor_set_ca_cert (TrustAnchor* self, const char* value); +void trust_anchor_set_subject (TrustAnchor* self, const char* value); +void trust_anchor_set_subject_alt (TrustAnchor* self, const char* value); +void trust_anchor_set_server_cert (TrustAnchor* self, const char* value); +Rule* id_card_get_rules (IdCard* self, int* result_length1); +const char* id_card_get_issuer (IdCard* self); +const char* id_card_get_display_name (IdCard* self); +const char* id_card_get_username (IdCard* self); +const char* id_card_get_password (IdCard* self); +char** id_card_get_services (IdCard* self, int* result_length1); +static char** _vala_array_dup1 (char** self, int length); +const char* trust_anchor_get_ca_cert (TrustAnchor* self); +const char* trust_anchor_get_subject (TrustAnchor* self); +const char* trust_anchor_get_subject_alt (TrustAnchor* self); +const char* trust_anchor_get_server_cert (TrustAnchor* self); +LocalFlatFileStore* local_flat_file_store_new (void); +LocalFlatFileStore* local_flat_file_store_construct (GType object_type); +static void local_flat_file_store_finalize (GObject* obj); +static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func); +static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func); + + + +static void local_flat_file_store_real_add_card (IIdentityCardStore* base, IdCard* card) { + LocalFlatFileStore * self; + self = (LocalFlatFileStore*) base; + g_return_if_fail (card != NULL); + gee_abstract_collection_add ((GeeAbstractCollection*) self->priv->id_card_list, card); + local_flat_file_store_store_id_cards (self); +} + + +static void local_flat_file_store_real_update_card (IIdentityCardStore* base, IdCard* card) { + LocalFlatFileStore * self; + self = (LocalFlatFileStore*) base; + g_return_if_fail (card != NULL); + gee_abstract_collection_remove ((GeeAbstractCollection*) self->priv->id_card_list, card); + gee_abstract_collection_add ((GeeAbstractCollection*) self->priv->id_card_list, card); + local_flat_file_store_store_id_cards (self); +} + + +static void local_flat_file_store_real_remove_card (IIdentityCardStore* base, IdCard* card) { + LocalFlatFileStore * self; + self = (LocalFlatFileStore*) base; + g_return_if_fail (card != NULL); + gee_abstract_collection_remove ((GeeAbstractCollection*) self->priv->id_card_list, card); + local_flat_file_store_store_id_cards (self); +} + + +static gpointer _g_object_ref0 (gpointer self) { + return self ? g_object_ref (self) : NULL; +} + + +static GeeLinkedList* local_flat_file_store_real_get_card_list (IIdentityCardStore* base) { + LocalFlatFileStore * self; + GeeLinkedList* result = NULL; + self = (LocalFlatFileStore*) base; + result = _g_object_ref0 (self->priv->id_card_list); + return result; +} + + +static void _vala_Rule_array_free (Rule* array, gint array_length) { + if (array != NULL) { + int i; + for (i = 0; i < array_length; i = i + 1) { + rule_destroy (&array[i]); + } + } + g_free (array); +} + + +static void local_flat_file_store_load_id_cards (LocalFlatFileStore* self) { + GKeyFile* key_file; + char* path; + char* filename; + gint identities_uris_length1; + gint _identities_uris_size_; + char** _tmp1_; + gsize _tmp0_; + char** identities_uris; + GError * _inner_error_ = NULL; + g_return_if_fail (self != NULL); + gee_abstract_collection_clear ((GeeAbstractCollection*) self->priv->id_card_list); + key_file = g_key_file_new (); + path = local_flat_file_store_get_data_dir (self); + filename = g_build_filename (path, LOCAL_FLAT_FILE_STORE_FILE_NAME, NULL); + { + g_key_file_load_from_file (key_file, filename, G_KEY_FILE_NONE, &_inner_error_); + if (_inner_error_ != NULL) { + goto __catch2_g_error; + } + } + goto __finally2; + __catch2_g_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { + fprintf (stdout, "Error: %s\n", e->message); + _g_error_free0 (e); + _g_free0 (filename); + _g_free0 (path); + _g_key_file_free0 (key_file); + return; + } + } + __finally2: + if (_inner_error_ != NULL) { + _g_free0 (filename); + _g_free0 (path); + _g_key_file_free0 (key_file); + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } + identities_uris = (_tmp1_ = g_key_file_get_groups (key_file, &_tmp0_), identities_uris_length1 = _tmp0_, _identities_uris_size_ = identities_uris_length1, _tmp1_); + { + char** identity_collection; + int identity_collection_length1; + int identity_it; + identity_collection = identities_uris; + identity_collection_length1 = identities_uris_length1; + for (identity_it = 0; identity_it < identities_uris_length1; identity_it = identity_it + 1) { + char* identity; + identity = g_strdup (identity_collection[identity_it]); + { + { + IdCard* id_card; + char* _tmp2_; + char* _tmp3_; + char* _tmp4_; + char* _tmp5_; + char* _tmp6_; + char* _tmp7_; + gint _tmp9__length1; + gint __tmp9__size_; + char** _tmp10_; + gsize _tmp8_; + char** _tmp9_; + char** _tmp11_; + gint _tmp11__length1; + char** _tmp12_; + char* _tmp13_; + char* _tmp14_; + gboolean _tmp15_ = FALSE; + gboolean _tmp16_; + char* _tmp27_; + char* _tmp28_; + char* _tmp29_; + char* _tmp30_; + char* _tmp31_; + char* _tmp32_; + char* _tmp33_; + char* _tmp34_; + id_card = id_card_new (); + _tmp2_ = g_key_file_get_string (key_file, identity, "Issuer", &_inner_error_); + if (_inner_error_ != NULL) { + _g_object_unref0 (id_card); + goto __catch3_g_error; + } + id_card_set_issuer (id_card, _tmp3_ = _tmp2_); + _g_free0 (_tmp3_); + _tmp4_ = g_key_file_get_string (key_file, identity, "Username", &_inner_error_); + if (_inner_error_ != NULL) { + _g_object_unref0 (id_card); + goto __catch3_g_error; + } + id_card_set_username (id_card, _tmp5_ = _tmp4_); + _g_free0 (_tmp5_); + _tmp6_ = g_key_file_get_string (key_file, identity, "Password", &_inner_error_); + if (_inner_error_ != NULL) { + _g_object_unref0 (id_card); + goto __catch3_g_error; + } + id_card_set_password (id_card, _tmp7_ = _tmp6_); + _g_free0 (_tmp7_); + _tmp9_ = (_tmp10_ = g_key_file_get_string_list (key_file, identity, "Services", &_tmp8_, &_inner_error_), _tmp9__length1 = _tmp8_, __tmp9__size_ = _tmp9__length1, _tmp10_); + if (_inner_error_ != NULL) { + _g_object_unref0 (id_card); + goto __catch3_g_error; + } + _tmp12_ = (_tmp11_ = _tmp9_, _tmp11__length1 = _tmp9__length1, _tmp11_); + id_card_set_services (id_card, _tmp12_, _tmp9__length1); + _tmp11_ = (_vala_array_free (_tmp11_, _tmp11__length1, (GDestroyNotify) g_free), NULL); + _tmp13_ = g_key_file_get_string (key_file, identity, "DisplayName", &_inner_error_); + if (_inner_error_ != NULL) { + _g_object_unref0 (id_card); + goto __catch3_g_error; + } + id_card_set_display_name (id_card, _tmp14_ = _tmp13_); + _g_free0 (_tmp14_); + g_object_set_data_full ((GObject*) id_card, "pixbuf", find_icon ("avatar-default", 48), g_object_unref); + _tmp16_ = g_key_file_has_key (key_file, identity, "Rules-Patterns", &_inner_error_); + if (_inner_error_ != NULL) { + _g_object_unref0 (id_card); + goto __catch3_g_error; + } + if (_tmp16_) { + gboolean _tmp17_; + _tmp17_ = g_key_file_has_key (key_file, identity, "Rules-AlwaysConfirm", &_inner_error_); + if (_inner_error_ != NULL) { + _g_object_unref0 (id_card); + goto __catch3_g_error; + } + _tmp15_ = _tmp17_; + } else { + _tmp15_ = FALSE; + } + if (_tmp15_) { + gint rules_patterns_length1; + gint _rules_patterns_size_; + char** _tmp19_; + gsize _tmp18_; + char** rules_patterns; + gint rules_always_conf_length1; + gint _rules_always_conf_size_; + char** _tmp21_; + gsize _tmp20_; + char** rules_always_conf; + rules_patterns = (_tmp19_ = g_key_file_get_string_list (key_file, identity, "Rules-Patterns", &_tmp18_, &_inner_error_), rules_patterns_length1 = _tmp18_, _rules_patterns_size_ = rules_patterns_length1, _tmp19_); + if (_inner_error_ != NULL) { + _g_object_unref0 (id_card); + goto __catch3_g_error; + } + rules_always_conf = (_tmp21_ = g_key_file_get_string_list (key_file, identity, "Rules-AlwaysConfirm", &_tmp20_, &_inner_error_), rules_always_conf_length1 = _tmp20_, _rules_always_conf_size_ = rules_always_conf_length1, _tmp21_); + if (_inner_error_ != NULL) { + rules_patterns = (_vala_array_free (rules_patterns, rules_patterns_length1, (GDestroyNotify) g_free), NULL); + _g_object_unref0 (id_card); + goto __catch3_g_error; + } + if (rules_patterns_length1 == rules_always_conf_length1) { + gint rules_length1; + gint _rules_size_; + Rule* _tmp22_; + Rule* rules; + Rule* _tmp26_; + rules = (_tmp22_ = g_new0 (Rule, rules_patterns_length1), rules_length1 = rules_patterns_length1, _rules_size_ = rules_length1, _tmp22_); + { + gint i; + i = 0; + { + gboolean _tmp23_; + _tmp23_ = TRUE; + while (TRUE) { + Rule _tmp24_ = {0}; + Rule _tmp25_; + if (!_tmp23_) { + i++; + } + _tmp23_ = FALSE; + if (!(i < rules_patterns_length1)) { + break; + } + rules[i] = (_tmp25_ = (_tmp24_.pattern = g_strdup (rules_patterns[i]), _tmp24_.always_confirm = g_strdup (rules_always_conf[i]), _tmp24_), rule_destroy (&rules[i]), _tmp25_); + } + } + } + _tmp26_ = rules; + id_card_set_rules (id_card, _tmp26_, rules_length1); + rules = (_vala_Rule_array_free (rules, rules_length1), NULL); + } + rules_always_conf = (_vala_array_free (rules_always_conf, rules_always_conf_length1, (GDestroyNotify) g_free), NULL); + rules_patterns = (_vala_array_free (rules_patterns, rules_patterns_length1, (GDestroyNotify) g_free), NULL); + } + _tmp27_ = g_key_file_get_string (key_file, identity, "CA-Cert", &_inner_error_); + if (_inner_error_ != NULL) { + _g_object_unref0 (id_card); + goto __catch3_g_error; + } + trust_anchor_set_ca_cert (id_card_get_trust_anchor (id_card), _tmp28_ = _tmp27_); + _g_free0 (_tmp28_); + _tmp29_ = g_key_file_get_string (key_file, identity, "Subject", &_inner_error_); + if (_inner_error_ != NULL) { + _g_object_unref0 (id_card); + goto __catch3_g_error; + } + trust_anchor_set_subject (id_card_get_trust_anchor (id_card), _tmp30_ = _tmp29_); + _g_free0 (_tmp30_); + _tmp31_ = g_key_file_get_string (key_file, identity, "SubjectAlt", &_inner_error_); + if (_inner_error_ != NULL) { + _g_object_unref0 (id_card); + goto __catch3_g_error; + } + trust_anchor_set_subject_alt (id_card_get_trust_anchor (id_card), _tmp32_ = _tmp31_); + _g_free0 (_tmp32_); + _tmp33_ = g_key_file_get_string (key_file, identity, "ServerCert", &_inner_error_); + if (_inner_error_ != NULL) { + _g_object_unref0 (id_card); + goto __catch3_g_error; + } + trust_anchor_set_server_cert (id_card_get_trust_anchor (id_card), _tmp34_ = _tmp33_); + _g_free0 (_tmp34_); + gee_abstract_collection_add ((GeeAbstractCollection*) self->priv->id_card_list, id_card); + _g_object_unref0 (id_card); + } + goto __finally3; + __catch3_g_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { + fprintf (stdout, "Error: %s\n", e->message); + _g_error_free0 (e); + } + } + __finally3: + if (_inner_error_ != NULL) { + _g_free0 (identity); + identities_uris = (_vala_array_free (identities_uris, identities_uris_length1, (GDestroyNotify) g_free), NULL); + _g_free0 (filename); + _g_free0 (path); + _g_key_file_free0 (key_file); + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } + _g_free0 (identity); + } + } + } + identities_uris = (_vala_array_free (identities_uris, identities_uris_length1, (GDestroyNotify) g_free), NULL); + _g_free0 (filename); + _g_free0 (path); + _g_key_file_free0 (key_file); +} + + +static char* local_flat_file_store_get_data_dir (LocalFlatFileStore* self) { + char* result = NULL; + char* path; + char* _tmp0_; + g_return_val_if_fail (self != NULL, NULL); + path = NULL; + path = (_tmp0_ = g_build_filename (g_get_user_data_dir (), PACKAGE_TARNAME, NULL), _g_free0 (path), _tmp0_); + if (!g_file_test (path, G_FILE_TEST_EXISTS)) { + g_mkdir_with_parents (path, 0700); + } + result = path; + return result; +} + + +static char** _vala_array_dup1 (char** self, int length) { + char** result; + int i; + result = g_new0 (char*, length + 1); + for (i = 0; i < length; i++) { + result[i] = g_strdup (self[i]); + } + return result; +} + + +void local_flat_file_store_store_id_cards (LocalFlatFileStore* self) { + GKeyFile* key_file; + char* text; + GError * _inner_error_ = NULL; + g_return_if_fail (self != NULL); + key_file = g_key_file_new (); + { + GeeIterator* _id_card_it; + _id_card_it = gee_abstract_collection_iterator ((GeeAbstractCollection*) self->priv->id_card_list); + while (TRUE) { + IdCard* id_card; + gint rules_patterns_length1; + gint _rules_patterns_size_; + char** _tmp1_; + gint _tmp0_; + char** rules_patterns; + gint rules_always_conf_length1; + gint _rules_always_conf_size_; + char** _tmp3_; + gint _tmp2_; + char** rules_always_conf; + char* _tmp10_; + char* _tmp12_; + char* _tmp14_; + char* _tmp16_; + gint _tmp20__length1; + gint __tmp20__size_; + char** _tmp21_; + gint _tmp18_; + char** _tmp19_; + char** _tmp20_; + gint _tmp24_; + char* _tmp25_; + char* _tmp27_; + char* _tmp29_; + char* _tmp31_; + if (!gee_iterator_next (_id_card_it)) { + break; + } + id_card = (IdCard*) gee_iterator_get (_id_card_it); + rules_patterns = (_tmp1_ = g_new0 (char*, _tmp0_ + 1), rules_patterns_length1 = _tmp0_, _rules_patterns_size_ = rules_patterns_length1, _tmp1_); + rules_always_conf = (_tmp3_ = g_new0 (char*, _tmp2_ + 1), rules_always_conf_length1 = _tmp2_, _rules_always_conf_size_ = rules_always_conf_length1, _tmp3_); + { + gint i; + i = 0; + { + gboolean _tmp4_; + _tmp4_ = TRUE; + while (TRUE) { + gint _tmp5_; + gint _tmp6_; + char* _tmp7_; + gint _tmp8_; + char* _tmp9_; + if (!_tmp4_) { + i++; + } + _tmp4_ = FALSE; + if (!(i < _tmp5_)) { + break; + } + rules_patterns[i] = (_tmp7_ = g_strdup (id_card_get_rules (id_card, &_tmp6_)[i].pattern), _g_free0 (rules_patterns[i]), _tmp7_); + rules_always_conf[i] = (_tmp9_ = g_strdup (id_card_get_rules (id_card, &_tmp8_)[i].always_confirm), _g_free0 (rules_always_conf[i]), _tmp9_); + } + } + } + _tmp10_ = g_strdup (id_card_get_issuer (id_card)); + if (_tmp10_ == NULL) { + char* _tmp11_; + _tmp10_ = (_tmp11_ = g_strdup (""), _g_free0 (_tmp10_), _tmp11_); + } + g_key_file_set_string (key_file, id_card_get_display_name (id_card), "Issuer", _tmp10_); + _tmp12_ = g_strdup (id_card_get_display_name (id_card)); + if (_tmp12_ == NULL) { + char* _tmp13_; + _tmp12_ = (_tmp13_ = g_strdup (""), _g_free0 (_tmp12_), _tmp13_); + } + g_key_file_set_string (key_file, id_card_get_display_name (id_card), "DisplayName", _tmp12_); + _tmp14_ = g_strdup (id_card_get_username (id_card)); + if (_tmp14_ == NULL) { + char* _tmp15_; + _tmp14_ = (_tmp15_ = g_strdup (""), _g_free0 (_tmp14_), _tmp15_); + } + g_key_file_set_string (key_file, id_card_get_display_name (id_card), "Username", _tmp14_); + _tmp16_ = g_strdup (id_card_get_password (id_card)); + if (_tmp16_ == NULL) { + char* _tmp17_; + _tmp16_ = (_tmp17_ = g_strdup (""), _g_free0 (_tmp16_), _tmp17_); + } + g_key_file_set_string (key_file, id_card_get_display_name (id_card), "Password", _tmp16_); + _tmp20_ = (_tmp21_ = (_tmp19_ = id_card_get_services (id_card, &_tmp18_), (_tmp19_ == NULL) ? ((gpointer) _tmp19_) : _vala_array_dup1 (_tmp19_, _tmp18_)), _tmp20__length1 = _tmp18_, __tmp20__size_ = _tmp20__length1, _tmp21_); + if (_tmp20_ == NULL) { + char** _tmp22_ = NULL; + char** _tmp23_; + _tmp20_ = (_tmp23_ = (_tmp22_ = g_new0 (char*, 0 + 1), _tmp22_), _tmp20_ = (_vala_array_free (_tmp20_, _tmp20__length1, (GDestroyNotify) g_free), NULL), _tmp20__length1 = 0, __tmp20__size_ = _tmp20__length1, _tmp23_); + } + g_key_file_set_string_list (key_file, id_card_get_display_name (id_card), "Services", (const gchar* const*) _tmp20_, _tmp20__length1); + if (_tmp24_ > 0) { + g_key_file_set_string_list (key_file, id_card_get_display_name (id_card), "Rules-Patterns", (const gchar* const*) rules_patterns, rules_patterns_length1); + g_key_file_set_string_list (key_file, id_card_get_display_name (id_card), "Rules-AlwaysConfirm", (const gchar* const*) rules_always_conf, rules_always_conf_length1); + } + _tmp25_ = g_strdup (trust_anchor_get_ca_cert (id_card_get_trust_anchor (id_card))); + if (_tmp25_ == NULL) { + char* _tmp26_; + _tmp25_ = (_tmp26_ = g_strdup (""), _g_free0 (_tmp25_), _tmp26_); + } + g_key_file_set_string (key_file, id_card_get_display_name (id_card), "CA-Cert", _tmp25_); + _tmp27_ = g_strdup (trust_anchor_get_subject (id_card_get_trust_anchor (id_card))); + if (_tmp27_ == NULL) { + char* _tmp28_; + _tmp27_ = (_tmp28_ = g_strdup (""), _g_free0 (_tmp27_), _tmp28_); + } + g_key_file_set_string (key_file, id_card_get_display_name (id_card), "Subject", _tmp27_); + _tmp29_ = g_strdup (trust_anchor_get_subject_alt (id_card_get_trust_anchor (id_card))); + if (_tmp29_ == NULL) { + char* _tmp30_; + _tmp29_ = (_tmp30_ = g_strdup (""), _g_free0 (_tmp29_), _tmp30_); + } + g_key_file_set_string (key_file, id_card_get_display_name (id_card), "SubjectAlt", _tmp29_); + _tmp31_ = g_strdup (trust_anchor_get_server_cert (id_card_get_trust_anchor (id_card))); + if (_tmp31_ == NULL) { + char* _tmp32_; + _tmp31_ = (_tmp32_ = g_strdup (""), _g_free0 (_tmp31_), _tmp32_); + } + g_key_file_set_string (key_file, id_card_get_display_name (id_card), "ServerCert", _tmp31_); + _g_free0 (_tmp31_); + _g_free0 (_tmp29_); + _g_free0 (_tmp27_); + _g_free0 (_tmp25_); + _tmp20_ = (_vala_array_free (_tmp20_, _tmp20__length1, (GDestroyNotify) g_free), NULL); + _g_free0 (_tmp16_); + _g_free0 (_tmp14_); + _g_free0 (_tmp12_); + _g_free0 (_tmp10_); + rules_always_conf = (_vala_array_free (rules_always_conf, rules_always_conf_length1, (GDestroyNotify) g_free), NULL); + rules_patterns = (_vala_array_free (rules_patterns, rules_patterns_length1, (GDestroyNotify) g_free), NULL); + _g_object_unref0 (id_card); + } + _g_object_unref0 (_id_card_it); + } + text = g_key_file_to_data (key_file, NULL, NULL); + { + char* path; + char* filename; + path = local_flat_file_store_get_data_dir (self); + filename = g_build_filename (path, LOCAL_FLAT_FILE_STORE_FILE_NAME, NULL); + g_file_set_contents (filename, text, (gssize) (-1), &_inner_error_); + if (_inner_error_ != NULL) { + _g_free0 (filename); + _g_free0 (path); + goto __catch4_g_error; + } + _g_free0 (filename); + _g_free0 (path); + } + goto __finally4; + __catch4_g_error: + { + GError * e; + e = _inner_error_; + _inner_error_ = NULL; + { + fprintf (stdout, "Error: %s\n", e->message); + _g_error_free0 (e); + } + } + __finally4: + if (_inner_error_ != NULL) { + _g_free0 (text); + _g_key_file_free0 (key_file); + g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code); + g_clear_error (&_inner_error_); + return; + } + local_flat_file_store_load_id_cards (self); + _g_free0 (text); + _g_key_file_free0 (key_file); +} + + +LocalFlatFileStore* local_flat_file_store_construct (GType object_type) { + LocalFlatFileStore * self = NULL; + GeeLinkedList* _tmp0_; + self = (LocalFlatFileStore*) g_object_new (object_type, NULL); + self->priv->id_card_list = (_tmp0_ = gee_linked_list_new (TYPE_ID_CARD, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL), _g_object_unref0 (self->priv->id_card_list), _tmp0_); + local_flat_file_store_load_id_cards (self); + return self; +} + + +LocalFlatFileStore* local_flat_file_store_new (void) { + return local_flat_file_store_construct (TYPE_LOCAL_FLAT_FILE_STORE); +} + + +static void local_flat_file_store_class_init (LocalFlatFileStoreClass * klass) { + local_flat_file_store_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (LocalFlatFileStorePrivate)); + G_OBJECT_CLASS (klass)->finalize = local_flat_file_store_finalize; +} + + +static void local_flat_file_store_iidentity_card_store_interface_init (IIdentityCardStoreIface * iface) { + local_flat_file_store_iidentity_card_store_parent_iface = g_type_interface_peek_parent (iface); + iface->add_card = local_flat_file_store_real_add_card; + iface->update_card = local_flat_file_store_real_update_card; + iface->remove_card = local_flat_file_store_real_remove_card; + iface->get_card_list = local_flat_file_store_real_get_card_list; +} + + +static void local_flat_file_store_instance_init (LocalFlatFileStore * self) { + self->priv = LOCAL_FLAT_FILE_STORE_GET_PRIVATE (self); +} + + +static void local_flat_file_store_finalize (GObject* obj) { + LocalFlatFileStore * self; + self = LOCAL_FLAT_FILE_STORE (obj); + _g_object_unref0 (self->priv->id_card_list); + G_OBJECT_CLASS (local_flat_file_store_parent_class)->finalize (obj); +} + + +GType local_flat_file_store_get_type (void) { + static volatile gsize local_flat_file_store_type_id__volatile = 0; + if (g_once_init_enter (&local_flat_file_store_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (LocalFlatFileStoreClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) local_flat_file_store_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (LocalFlatFileStore), 0, (GInstanceInitFunc) local_flat_file_store_instance_init, NULL }; + static const GInterfaceInfo iidentity_card_store_info = { (GInterfaceInitFunc) local_flat_file_store_iidentity_card_store_interface_init, (GInterfaceFinalizeFunc) NULL, NULL}; + GType local_flat_file_store_type_id; + local_flat_file_store_type_id = g_type_register_static (G_TYPE_OBJECT, "LocalFlatFileStore", &g_define_type_info, 0); + g_type_add_interface_static (local_flat_file_store_type_id, TYPE_IIDENTITY_CARD_STORE, &iidentity_card_store_info); + g_once_init_leave (&local_flat_file_store_type_id__volatile, local_flat_file_store_type_id); + } + return local_flat_file_store_type_id__volatile; +} + + +static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) { + if ((array != NULL) && (destroy_func != NULL)) { + int i; + for (i = 0; i < array_length; i = i + 1) { + if (((gpointer*) array)[i] != NULL) { + destroy_func (((gpointer*) array)[i]); + } + } + } +} + + +static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) { + _vala_array_destroy (array, array_length, destroy_func); + g_free (array); +} + + + + diff --git a/src/moonshot-server.c b/src/moonshot-server.c index 7e51274..ab78820 100644 --- a/src/moonshot-server.c +++ b/src/moonshot-server.c @@ -8,9 +8,6 @@ #include #include #include -#include -#include -#include #define TYPE_MOONSHOT_SERVER (moonshot_server_get_type ()) @@ -24,15 +21,15 @@ typedef struct _MoonshotServer MoonshotServer; typedef struct _MoonshotServerClass MoonshotServerClass; typedef struct _MoonshotServerPrivate MoonshotServerPrivate; -#define TYPE_MAIN_WINDOW (main_window_get_type ()) -#define MAIN_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_MAIN_WINDOW, MainWindow)) -#define MAIN_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_MAIN_WINDOW, MainWindowClass)) -#define IS_MAIN_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_MAIN_WINDOW)) -#define IS_MAIN_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_MAIN_WINDOW)) -#define MAIN_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_MAIN_WINDOW, MainWindowClass)) +#define TYPE_IDENTITY_MANAGER_VIEW (identity_manager_view_get_type ()) +#define IDENTITY_MANAGER_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IDENTITY_MANAGER_VIEW, IdentityManagerView)) +#define IDENTITY_MANAGER_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_IDENTITY_MANAGER_VIEW, IdentityManagerViewClass)) +#define IS_IDENTITY_MANAGER_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IDENTITY_MANAGER_VIEW)) +#define IS_IDENTITY_MANAGER_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_IDENTITY_MANAGER_VIEW)) +#define IDENTITY_MANAGER_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_IDENTITY_MANAGER_VIEW, IdentityManagerViewClass)) -typedef struct _MainWindow MainWindow; -typedef struct _MainWindowClass MainWindowClass; +typedef struct _IdentityManagerView IdentityManagerView; +typedef struct _IdentityManagerViewClass IdentityManagerViewClass; #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) #define _g_free0(var) (var = (g_free (var), NULL)) @@ -66,14 +63,13 @@ typedef struct _IdCardClass IdCardClass; typedef struct _TrustAnchor TrustAnchor; typedef struct _TrustAnchorClass TrustAnchorClass; -typedef struct _Block2Data Block2Data; -typedef struct _MoonshotServerGetIdentityData MoonshotServerGetIdentityData; typedef struct _Block3Data Block3Data; +typedef struct _MoonshotServerGetIdentityData MoonshotServerGetIdentityData; +typedef struct _Block4Data Block4Data; typedef struct _MoonshotServerGetDefaultIdentityData MoonshotServerGetDefaultIdentityData; #define TYPE_RULE (rule_get_type ()) typedef struct _Rule Rule; -typedef struct _DBusObjectVTable _DBusObjectVTable; struct _MoonshotServer { GObject parent_instance; @@ -85,7 +81,7 @@ struct _MoonshotServerClass { }; struct _MoonshotServerPrivate { - MainWindow* main_window; + IdentityManagerView* main_window; }; typedef void (*ReturnIdentityCallback) (IdentityRequest* request, void* user_data); @@ -104,7 +100,7 @@ struct _IdentityRequestClass { GObjectClass parent_class; }; -struct _Block2Data { +struct _Block3Data { int _ref_count_; MoonshotServer * self; gpointer _async_data_; @@ -145,10 +141,10 @@ struct _MoonshotServerGetIdentityData { char* _tmp15_; char* _tmp16_; char* _tmp17_; - Block2Data* _data2_; + Block3Data* _data3_; }; -struct _Block3Data { +struct _Block4Data { int _ref_count_; MoonshotServer * self; gpointer _async_data_; @@ -185,7 +181,7 @@ struct _MoonshotServerGetDefaultIdentityData { char* _tmp15_; char* _tmp16_; char* _tmp17_; - Block3Data* _data3_; + Block4Data* _data4_; }; struct _Rule { @@ -193,15 +189,12 @@ struct _Rule { char* always_confirm; }; -struct _DBusObjectVTable { - void (*register_object) (DBusConnection*, const char*, void*); -}; - static gpointer moonshot_server_parent_class = NULL; GType moonshot_server_get_type (void) G_GNUC_CONST; -GType main_window_get_type (void) G_GNUC_CONST; +guint moonshot_server_register_object (void* object, GDBusConnection* connection, const gchar* path, GError** error); +GType identity_manager_view_get_type (void) G_GNUC_CONST; #define MOONSHOT_SERVER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_MOONSHOT_SERVER, MoonshotServerPrivate)) enum { MOONSHOT_SERVER_DUMMY_PROPERTY @@ -213,11 +206,11 @@ static void moonshot_server_get_identity_ready (GObject* source_object, GAsyncRe void moonshot_server_get_identity (MoonshotServer* self, const char* nai, const char* password, const char* service, GAsyncReadyCallback _callback_, gpointer _user_data_); gboolean moonshot_server_get_identity_finish (MoonshotServer* self, GAsyncResult* _res_, char** nai_out, char** password_out, char** server_certificate_hash, char** ca_certificate, char** subject_name_constraint, char** subject_alt_name_constraint); static gboolean moonshot_server_get_identity_co (MoonshotServerGetIdentityData* data); -IdentityRequest* identity_request_new (MainWindow* main_window, const char* nai, const char* password, const char* service); -IdentityRequest* identity_request_construct (GType object_type, MainWindow* main_window, const char* nai, const char* password, const char* service); +IdentityRequest* identity_request_new (IdentityManagerView* main_window, const char* nai, const char* password, const char* service); +IdentityRequest* identity_request_construct (GType object_type, IdentityManagerView* main_window, const char* nai, const char* password, const char* service); GType identity_request_get_type (void) G_GNUC_CONST; void identity_request_set_callback (IdentityRequest* self, ReturnIdentityCallback cb, void* cb_target, GDestroyNotify cb_target_destroy_notify); -static void _lambda4_ (IdentityRequest* IdentityRequest, Block2Data* _data2_); +static void _lambda4_ (IdentityRequest* IdentityRequest, Block3Data* _data3_); static void __lambda4__return_identity_callback (IdentityRequest* request, gpointer self); gboolean identity_request_execute (IdentityRequest* self); GType id_card_get_type (void) G_GNUC_CONST; @@ -229,19 +222,19 @@ const char* trust_anchor_get_server_cert (TrustAnchor* self); const char* trust_anchor_get_ca_cert (TrustAnchor* self); const char* trust_anchor_get_subject (TrustAnchor* self); const char* trust_anchor_get_subject_alt (TrustAnchor* self); -static Block2Data* block2_data_ref (Block2Data* _data2_); -static void block2_data_unref (Block2Data* _data2_); +static Block3Data* block3_data_ref (Block3Data* _data3_); +static void block3_data_unref (Block3Data* _data3_); static void moonshot_server_get_default_identity_data_free (gpointer _data); static void moonshot_server_get_default_identity_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_); void moonshot_server_get_default_identity (MoonshotServer* self, GAsyncReadyCallback _callback_, gpointer _user_data_); gboolean moonshot_server_get_default_identity_finish (MoonshotServer* self, GAsyncResult* _res_, char** nai_out, char** password_out, char** server_certificate_hash, char** ca_certificate, char** subject_name_constraint, char** subject_alt_name_constraint); static gboolean moonshot_server_get_default_identity_co (MoonshotServerGetDefaultIdentityData* data); -IdentityRequest* identity_request_new_default (MainWindow* main_window); -IdentityRequest* identity_request_construct_default (GType object_type, MainWindow* main_window); -static void _lambda5_ (IdentityRequest* IdentityRequest, Block3Data* _data3_); +IdentityRequest* identity_request_new_default (IdentityManagerView* main_window); +IdentityRequest* identity_request_construct_default (GType object_type, IdentityManagerView* main_window); +static void _lambda5_ (IdentityRequest* IdentityRequest, Block4Data* _data4_); static void __lambda5__return_identity_callback (IdentityRequest* request, gpointer self); -static Block3Data* block3_data_ref (Block3Data* _data3_); -static void block3_data_unref (Block3Data* _data3_); +static Block4Data* block4_data_ref (Block4Data* _data4_); +static void block4_data_unref (Block4Data* _data4_); gboolean moonshot_server_install_id_card (MoonshotServer* self, const char* display_name, const char* user_name, const char* password, const char* realm, char** rules_patterns, int rules_patterns_length1, char** rules_always_confirm, int rules_always_confirm_length1, char** services, int services_length1, const char* ca_cert, const char* subject, const char* subject_alt, const char* server_cert); IdCard* id_card_new (void); IdCard* id_card_construct (GType object_type); @@ -262,25 +255,63 @@ void rule_destroy (Rule* self); void id_card_set_rules (IdCard* self, Rule* value, int value_length1); static void _vala_Rule_array_free (Rule* array, gint array_length); Rule* id_card_get_rules (IdCard* self, int* result_length1); -gboolean main_window_add_identity (MainWindow* self, IdCard* id_card); -static void _vala_dbus_register_object (DBusConnection* connection, const char* path, void* object); -static void _vala_dbus_unregister_object (gpointer connection, GObject* object); -void moonshot_server_dbus_register_object (DBusConnection* connection, const char* path, void* object); -void _moonshot_server_dbus_unregister (DBusConnection* connection, void* _user_data_); -DBusHandlerResult moonshot_server_dbus_message (DBusConnection* connection, DBusMessage* message, void* object); -static DBusHandlerResult _dbus_moonshot_server_introspect (MoonshotServer* self, DBusConnection* connection, DBusMessage* message); -static DBusHandlerResult _dbus_moonshot_server_property_get_all (MoonshotServer* self, DBusConnection* connection, DBusMessage* message); -static DBusHandlerResult _dbus_moonshot_server_get_identity (MoonshotServer* self, DBusConnection* connection, DBusMessage* message); +gboolean identity_manager_view_add_identity (IdentityManagerView* self, IdCard* id_card); +static void moonshot_server_finalize (GObject* obj); +static void moonshot_server_dbus_interface_method_call (GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* method_name, GVariant* parameters, GDBusMethodInvocation* invocation, gpointer user_data); +static void _dbus_moonshot_server_get_identity (MoonshotServer* self, GVariant* parameters, GDBusMethodInvocation* invocation); static void _dbus_moonshot_server_get_identity_ready (GObject * source_object, GAsyncResult * _res_, gpointer * _user_data_); -static DBusHandlerResult _dbus_moonshot_server_get_default_identity (MoonshotServer* self, DBusConnection* connection, DBusMessage* message); +static void _dbus_moonshot_server_get_default_identity (MoonshotServer* self, GVariant* parameters, GDBusMethodInvocation* invocation); static void _dbus_moonshot_server_get_default_identity_ready (GObject * source_object, GAsyncResult * _res_, gpointer * _user_data_); -static DBusHandlerResult _dbus_moonshot_server_install_id_card (MoonshotServer* self, DBusConnection* connection, DBusMessage* message); -static void moonshot_server_finalize (GObject* obj); +static void _dbus_moonshot_server_install_id_card (MoonshotServer* self, GVariant* parameters, GDBusMethodInvocation* invocation); +static GVariant* moonshot_server_dbus_interface_get_property (GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* property_name, GError** error, gpointer user_data); +static gboolean moonshot_server_dbus_interface_set_property (GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* property_name, GVariant* value, GError** error, gpointer user_data); +static void _moonshot_server_unregister_object (gpointer user_data); static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func); static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func); -static const DBusObjectPathVTable _moonshot_server_dbus_path_vtable = {_moonshot_server_dbus_unregister, moonshot_server_dbus_message}; -static const _DBusObjectVTable _moonshot_server_dbus_vtable = {moonshot_server_dbus_register_object}; +static const GDBusArgInfo _moonshot_server_dbus_arg_info_get_identity_nai = {-1, "nai", "s"}; +static const GDBusArgInfo _moonshot_server_dbus_arg_info_get_identity_password = {-1, "password", "s"}; +static const GDBusArgInfo _moonshot_server_dbus_arg_info_get_identity_service = {-1, "service", "s"}; +static const GDBusArgInfo _moonshot_server_dbus_arg_info_get_identity_nai_out = {-1, "nai_out", "s"}; +static const GDBusArgInfo _moonshot_server_dbus_arg_info_get_identity_password_out = {-1, "password_out", "s"}; +static const GDBusArgInfo _moonshot_server_dbus_arg_info_get_identity_server_certificate_hash = {-1, "server_certificate_hash", "s"}; +static const GDBusArgInfo _moonshot_server_dbus_arg_info_get_identity_ca_certificate = {-1, "ca_certificate", "s"}; +static const GDBusArgInfo _moonshot_server_dbus_arg_info_get_identity_subject_name_constraint = {-1, "subject_name_constraint", "s"}; +static const GDBusArgInfo _moonshot_server_dbus_arg_info_get_identity_subject_alt_name_constraint = {-1, "subject_alt_name_constraint", "s"}; +static const GDBusArgInfo _moonshot_server_dbus_arg_info_get_identity_result = {-1, "result", "b"}; +static const GDBusArgInfo * const _moonshot_server_dbus_arg_info_get_identity_in[] = {&_moonshot_server_dbus_arg_info_get_identity_nai, &_moonshot_server_dbus_arg_info_get_identity_password, &_moonshot_server_dbus_arg_info_get_identity_service, NULL}; +static const GDBusArgInfo * const _moonshot_server_dbus_arg_info_get_identity_out[] = {&_moonshot_server_dbus_arg_info_get_identity_nai_out, &_moonshot_server_dbus_arg_info_get_identity_password_out, &_moonshot_server_dbus_arg_info_get_identity_server_certificate_hash, &_moonshot_server_dbus_arg_info_get_identity_ca_certificate, &_moonshot_server_dbus_arg_info_get_identity_subject_name_constraint, &_moonshot_server_dbus_arg_info_get_identity_subject_alt_name_constraint, &_moonshot_server_dbus_arg_info_get_identity_result, NULL}; +static const GDBusMethodInfo _moonshot_server_dbus_method_info_get_identity = {-1, "GetIdentity", (GDBusArgInfo **) (&_moonshot_server_dbus_arg_info_get_identity_in), (GDBusArgInfo **) (&_moonshot_server_dbus_arg_info_get_identity_out)}; +static const GDBusArgInfo _moonshot_server_dbus_arg_info_get_default_identity_nai_out = {-1, "nai_out", "s"}; +static const GDBusArgInfo _moonshot_server_dbus_arg_info_get_default_identity_password_out = {-1, "password_out", "s"}; +static const GDBusArgInfo _moonshot_server_dbus_arg_info_get_default_identity_server_certificate_hash = {-1, "server_certificate_hash", "s"}; +static const GDBusArgInfo _moonshot_server_dbus_arg_info_get_default_identity_ca_certificate = {-1, "ca_certificate", "s"}; +static const GDBusArgInfo _moonshot_server_dbus_arg_info_get_default_identity_subject_name_constraint = {-1, "subject_name_constraint", "s"}; +static const GDBusArgInfo _moonshot_server_dbus_arg_info_get_default_identity_subject_alt_name_constraint = {-1, "subject_alt_name_constraint", "s"}; +static const GDBusArgInfo _moonshot_server_dbus_arg_info_get_default_identity_result = {-1, "result", "b"}; +static const GDBusArgInfo * const _moonshot_server_dbus_arg_info_get_default_identity_in[] = {NULL}; +static const GDBusArgInfo * const _moonshot_server_dbus_arg_info_get_default_identity_out[] = {&_moonshot_server_dbus_arg_info_get_default_identity_nai_out, &_moonshot_server_dbus_arg_info_get_default_identity_password_out, &_moonshot_server_dbus_arg_info_get_default_identity_server_certificate_hash, &_moonshot_server_dbus_arg_info_get_default_identity_ca_certificate, &_moonshot_server_dbus_arg_info_get_default_identity_subject_name_constraint, &_moonshot_server_dbus_arg_info_get_default_identity_subject_alt_name_constraint, &_moonshot_server_dbus_arg_info_get_default_identity_result, NULL}; +static const GDBusMethodInfo _moonshot_server_dbus_method_info_get_default_identity = {-1, "GetDefaultIdentity", (GDBusArgInfo **) (&_moonshot_server_dbus_arg_info_get_default_identity_in), (GDBusArgInfo **) (&_moonshot_server_dbus_arg_info_get_default_identity_out)}; +static const GDBusArgInfo _moonshot_server_dbus_arg_info_install_id_card_display_name = {-1, "display_name", "s"}; +static const GDBusArgInfo _moonshot_server_dbus_arg_info_install_id_card_user_name = {-1, "user_name", "s"}; +static const GDBusArgInfo _moonshot_server_dbus_arg_info_install_id_card_password = {-1, "password", "s"}; +static const GDBusArgInfo _moonshot_server_dbus_arg_info_install_id_card_realm = {-1, "realm", "s"}; +static const GDBusArgInfo _moonshot_server_dbus_arg_info_install_id_card_rules_patterns = {-1, "rules_patterns", "as"}; +static const GDBusArgInfo _moonshot_server_dbus_arg_info_install_id_card_rules_always_confirm = {-1, "rules_always_confirm", "as"}; +static const GDBusArgInfo _moonshot_server_dbus_arg_info_install_id_card_services = {-1, "services", "as"}; +static const GDBusArgInfo _moonshot_server_dbus_arg_info_install_id_card_ca_cert = {-1, "ca_cert", "s"}; +static const GDBusArgInfo _moonshot_server_dbus_arg_info_install_id_card_subject = {-1, "subject", "s"}; +static const GDBusArgInfo _moonshot_server_dbus_arg_info_install_id_card_subject_alt = {-1, "subject_alt", "s"}; +static const GDBusArgInfo _moonshot_server_dbus_arg_info_install_id_card_server_cert = {-1, "server_cert", "s"}; +static const GDBusArgInfo _moonshot_server_dbus_arg_info_install_id_card_result = {-1, "result", "b"}; +static const GDBusArgInfo * const _moonshot_server_dbus_arg_info_install_id_card_in[] = {&_moonshot_server_dbus_arg_info_install_id_card_display_name, &_moonshot_server_dbus_arg_info_install_id_card_user_name, &_moonshot_server_dbus_arg_info_install_id_card_password, &_moonshot_server_dbus_arg_info_install_id_card_realm, &_moonshot_server_dbus_arg_info_install_id_card_rules_patterns, &_moonshot_server_dbus_arg_info_install_id_card_rules_always_confirm, &_moonshot_server_dbus_arg_info_install_id_card_services, &_moonshot_server_dbus_arg_info_install_id_card_ca_cert, &_moonshot_server_dbus_arg_info_install_id_card_subject, &_moonshot_server_dbus_arg_info_install_id_card_subject_alt, &_moonshot_server_dbus_arg_info_install_id_card_server_cert, NULL}; +static const GDBusArgInfo * const _moonshot_server_dbus_arg_info_install_id_card_out[] = {&_moonshot_server_dbus_arg_info_install_id_card_result, NULL}; +static const GDBusMethodInfo _moonshot_server_dbus_method_info_install_id_card = {-1, "InstallIdCard", (GDBusArgInfo **) (&_moonshot_server_dbus_arg_info_install_id_card_in), (GDBusArgInfo **) (&_moonshot_server_dbus_arg_info_install_id_card_out)}; +static const GDBusMethodInfo * const _moonshot_server_dbus_method_info[] = {&_moonshot_server_dbus_method_info_get_identity, &_moonshot_server_dbus_method_info_get_default_identity, &_moonshot_server_dbus_method_info_install_id_card, NULL}; +static const GDBusSignalInfo * const _moonshot_server_dbus_signal_info[] = {NULL}; +static const GDBusPropertyInfo * const _moonshot_server_dbus_property_info[] = {NULL}; +static const GDBusInterfaceInfo _moonshot_server_dbus_interface_info = {-1, "org.janet.Moonshot", (GDBusMethodInfo **) (&_moonshot_server_dbus_method_info), (GDBusSignalInfo **) (&_moonshot_server_dbus_signal_info), (GDBusPropertyInfo **) (&_moonshot_server_dbus_property_info)}; +static const GDBusInterfaceVTable _moonshot_server_dbus_interface_vtable = {moonshot_server_dbus_interface_method_call, moonshot_server_dbus_interface_get_property, moonshot_server_dbus_interface_set_property}; static gpointer _g_object_ref0 (gpointer self) { @@ -290,10 +321,10 @@ static gpointer _g_object_ref0 (gpointer self) { MoonshotServer* moonshot_server_construct (GType object_type, GtkWindow* window) { MoonshotServer * self = NULL; - MainWindow* _tmp0_; + IdentityManagerView* _tmp0_; g_return_val_if_fail (window != NULL, NULL); self = (MoonshotServer*) g_object_new (object_type, NULL); - self->priv->main_window = (_tmp0_ = _g_object_ref0 (MAIN_WINDOW (window)), _g_object_unref0 (self->priv->main_window), _tmp0_); + self->priv->main_window = (_tmp0_ = _g_object_ref0 (IDENTITY_MANAGER_VIEW (window)), _g_object_unref0 (self->priv->main_window), _tmp0_); return self; } @@ -356,11 +387,11 @@ static void moonshot_server_get_identity_ready (GObject* source_object, GAsyncRe } -static void _lambda4_ (IdentityRequest* IdentityRequest, Block2Data* _data2_) { +static void _lambda4_ (IdentityRequest* IdentityRequest, Block3Data* _data3_) { MoonshotServer * self; - self = _data2_->self; + self = _data3_->self; g_return_if_fail (IdentityRequest != NULL); - moonshot_server_get_identity_co (_data2_->_async_data_); + moonshot_server_get_identity_co (_data3_->_async_data_); } @@ -369,16 +400,16 @@ static void __lambda4__return_identity_callback (IdentityRequest* request, gpoin } -static Block2Data* block2_data_ref (Block2Data* _data2_) { - g_atomic_int_inc (&_data2_->_ref_count_); - return _data2_; +static Block3Data* block3_data_ref (Block3Data* _data3_) { + g_atomic_int_inc (&_data3_->_ref_count_); + return _data3_; } -static void block2_data_unref (Block2Data* _data2_) { - if (g_atomic_int_dec_and_test (&_data2_->_ref_count_)) { - _g_object_unref0 (_data2_->self); - g_slice_free (Block2Data, _data2_); +static void block3_data_unref (Block3Data* _data3_) { + if (g_atomic_int_dec_and_test (&_data3_->_ref_count_)) { + _g_object_unref0 (_data3_->self); + g_slice_free (Block3Data, _data3_); } } @@ -393,12 +424,12 @@ static gboolean moonshot_server_get_identity_co (MoonshotServerGetIdentityData* goto _state_1; } _state_0: - data->_data2_ = g_slice_new0 (Block2Data); - data->_data2_->_ref_count_ = 1; - data->_data2_->self = g_object_ref (data->self); - data->_data2_->_async_data_ = data; + data->_data3_ = g_slice_new0 (Block3Data); + data->_data3_->_ref_count_ = 1; + data->_data3_->self = g_object_ref (data->self); + data->_data3_->_async_data_ = data; data->request = identity_request_new (data->self->priv->main_window, data->nai, data->password, data->service); - identity_request_set_callback (data->request, __lambda4__return_identity_callback, block2_data_ref (data->_data2_), block2_data_unref); + identity_request_set_callback (data->request, __lambda4__return_identity_callback, block3_data_ref (data->_data3_), block3_data_unref); identity_request_execute (data->request); data->_state_ = 1; return FALSE; @@ -439,7 +470,7 @@ static gboolean moonshot_server_get_identity_co (MoonshotServerGetIdentityData* data->result = TRUE; _g_object_unref0 (data->id_card); _g_object_unref0 (data->request); - block2_data_unref (data->_data2_); + block3_data_unref (data->_data3_); { if (data->_state_ == 0) { g_simple_async_result_complete_in_idle (data->_async_result); @@ -453,7 +484,7 @@ static gboolean moonshot_server_get_identity_co (MoonshotServerGetIdentityData* data->result = FALSE; _g_object_unref0 (data->id_card); _g_object_unref0 (data->request); - block2_data_unref (data->_data2_); + block3_data_unref (data->_data3_); { if (data->_state_ == 0) { g_simple_async_result_complete_in_idle (data->_async_result); @@ -465,7 +496,7 @@ static gboolean moonshot_server_get_identity_co (MoonshotServerGetIdentityData* } _g_object_unref0 (data->id_card); _g_object_unref0 (data->request); - block2_data_unref (data->_data2_); + block3_data_unref (data->_data3_); { if (data->_state_ == 0) { g_simple_async_result_complete_in_idle (data->_async_result); @@ -525,11 +556,11 @@ static void moonshot_server_get_default_identity_ready (GObject* source_object, } -static void _lambda5_ (IdentityRequest* IdentityRequest, Block3Data* _data3_) { +static void _lambda5_ (IdentityRequest* IdentityRequest, Block4Data* _data4_) { MoonshotServer * self; - self = _data3_->self; + self = _data4_->self; g_return_if_fail (IdentityRequest != NULL); - moonshot_server_get_default_identity_co (_data3_->_async_data_); + moonshot_server_get_default_identity_co (_data4_->_async_data_); } @@ -538,16 +569,16 @@ static void __lambda5__return_identity_callback (IdentityRequest* request, gpoin } -static Block3Data* block3_data_ref (Block3Data* _data3_) { - g_atomic_int_inc (&_data3_->_ref_count_); - return _data3_; +static Block4Data* block4_data_ref (Block4Data* _data4_) { + g_atomic_int_inc (&_data4_->_ref_count_); + return _data4_; } -static void block3_data_unref (Block3Data* _data3_) { - if (g_atomic_int_dec_and_test (&_data3_->_ref_count_)) { - _g_object_unref0 (_data3_->self); - g_slice_free (Block3Data, _data3_); +static void block4_data_unref (Block4Data* _data4_) { + if (g_atomic_int_dec_and_test (&_data4_->_ref_count_)) { + _g_object_unref0 (_data4_->self); + g_slice_free (Block4Data, _data4_); } } @@ -562,12 +593,12 @@ static gboolean moonshot_server_get_default_identity_co (MoonshotServerGetDefaul goto _state_2; } _state_0: - data->_data3_ = g_slice_new0 (Block3Data); - data->_data3_->_ref_count_ = 1; - data->_data3_->self = g_object_ref (data->self); - data->_data3_->_async_data_ = data; + data->_data4_ = g_slice_new0 (Block4Data); + data->_data4_->_ref_count_ = 1; + data->_data4_->self = g_object_ref (data->self); + data->_data4_->_async_data_ = data; data->request = identity_request_new_default (data->self->priv->main_window); - identity_request_set_callback (data->request, __lambda5__return_identity_callback, block3_data_ref (data->_data3_), block3_data_unref); + identity_request_set_callback (data->request, __lambda5__return_identity_callback, block4_data_ref (data->_data4_), block4_data_unref); identity_request_execute (data->request); data->_state_ = 2; return FALSE; @@ -606,7 +637,7 @@ static gboolean moonshot_server_get_default_identity_co (MoonshotServerGetDefaul } data->result = TRUE; _g_object_unref0 (data->request); - block3_data_unref (data->_data3_); + block4_data_unref (data->_data4_); { if (data->_state_ == 0) { g_simple_async_result_complete_in_idle (data->_async_result); @@ -619,7 +650,7 @@ static gboolean moonshot_server_get_default_identity_co (MoonshotServerGetDefaul } data->result = FALSE; _g_object_unref0 (data->request); - block3_data_unref (data->_data3_); + block4_data_unref (data->_data4_); { if (data->_state_ == 0) { g_simple_async_result_complete_in_idle (data->_async_result); @@ -630,7 +661,7 @@ static gboolean moonshot_server_get_default_identity_co (MoonshotServerGetDefaul return FALSE; } _g_object_unref0 (data->request); - block3_data_unref (data->_data3_); + block4_data_unref (data->_data4_); { if (data->_state_ == 0) { g_simple_async_result_complete_in_idle (data->_async_result); @@ -714,132 +745,71 @@ gboolean moonshot_server_install_id_card (MoonshotServer* self, const char* disp } } } - result = main_window_add_identity (self->priv->main_window, idcard); + result = identity_manager_view_add_identity (self->priv->main_window, idcard); _g_object_unref0 (idcard); return result; } -static void _vala_dbus_register_object (DBusConnection* connection, const char* path, void* object) { - const _DBusObjectVTable * vtable; - vtable = g_type_get_qdata (G_TYPE_FROM_INSTANCE (object), g_quark_from_static_string ("DBusObjectVTable")); - if (vtable) { - vtable->register_object (connection, path, object); - } else { - g_warning ("Object does not implement any D-Bus interface"); - } -} - - -static void _vala_dbus_unregister_object (gpointer connection, GObject* object) { - char* path; - path = g_object_steal_data ((GObject*) object, "dbus_object_path"); - dbus_connection_unregister_object_path (connection, path); - g_free (path); +static void moonshot_server_class_init (MoonshotServerClass * klass) { + moonshot_server_parent_class = g_type_class_peek_parent (klass); + g_type_class_add_private (klass, sizeof (MoonshotServerPrivate)); + G_OBJECT_CLASS (klass)->finalize = moonshot_server_finalize; } -void _moonshot_server_dbus_unregister (DBusConnection* connection, void* _user_data_) { +static void moonshot_server_instance_init (MoonshotServer * self) { + self->priv = MOONSHOT_SERVER_GET_PRIVATE (self); } -static DBusHandlerResult _dbus_moonshot_server_introspect (MoonshotServer* self, DBusConnection* connection, DBusMessage* message) { - DBusMessage* reply; - DBusMessageIter iter; - GString* xml_data; - char** children; - int i; - reply = dbus_message_new_method_return (message); - dbus_message_iter_init_append (reply, &iter); - xml_data = g_string_new ("\n"); - g_string_append (xml_data, "\n\n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n"); - dbus_connection_list_registered (connection, g_object_get_data ((GObject *) self, "dbus_object_path"), &children); - for (i = 0; children[i]; i++) { - g_string_append_printf (xml_data, "\n", children[i]); - } - dbus_free_string_array (children); - g_string_append (xml_data, "\n"); - dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &xml_data->str); - g_string_free (xml_data, TRUE); - if (reply) { - dbus_connection_send (connection, reply, NULL); - dbus_message_unref (reply); - return DBUS_HANDLER_RESULT_HANDLED; - } else { - return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; - } +static void moonshot_server_finalize (GObject* obj) { + MoonshotServer * self; + self = MOONSHOT_SERVER (obj); + _g_object_unref0 (self->priv->main_window); + G_OBJECT_CLASS (moonshot_server_parent_class)->finalize (obj); } -static DBusHandlerResult _dbus_moonshot_server_property_get_all (MoonshotServer* self, DBusConnection* connection, DBusMessage* message) { - DBusMessage* reply; - DBusMessageIter iter, reply_iter, subiter; - char* interface_name; - const char* _tmp0_; - if (strcmp (dbus_message_get_signature (message), "s")) { - return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; - } - dbus_message_iter_init (message, &iter); - reply = dbus_message_new_method_return (message); - dbus_message_iter_init_append (reply, &reply_iter); - dbus_message_iter_get_basic (&iter, &_tmp0_); - dbus_message_iter_next (&iter); - interface_name = g_strdup (_tmp0_); - if (strcmp (interface_name, "org.janet.Moonshot") == 0) { - dbus_message_iter_open_container (&reply_iter, DBUS_TYPE_ARRAY, "{sv}", &subiter); - dbus_message_iter_close_container (&reply_iter, &subiter); - } else { - dbus_message_unref (reply); - reply = NULL; - } - g_free (interface_name); - if (reply) { - dbus_connection_send (connection, reply, NULL); - dbus_message_unref (reply); - return DBUS_HANDLER_RESULT_HANDLED; - } else { - return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; +GType moonshot_server_get_type (void) { + static volatile gsize moonshot_server_type_id__volatile = 0; + if (g_once_init_enter (&moonshot_server_type_id__volatile)) { + static const GTypeInfo g_define_type_info = { sizeof (MoonshotServerClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) moonshot_server_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (MoonshotServer), 0, (GInstanceInitFunc) moonshot_server_instance_init, NULL }; + GType moonshot_server_type_id; + moonshot_server_type_id = g_type_register_static (G_TYPE_OBJECT, "MoonshotServer", &g_define_type_info, 0); + g_once_init_leave (&moonshot_server_type_id__volatile, moonshot_server_type_id); } + return moonshot_server_type_id__volatile; } -static DBusHandlerResult _dbus_moonshot_server_get_identity (MoonshotServer* self, DBusConnection* connection, DBusMessage* message) { - DBusMessageIter iter; +static void _dbus_moonshot_server_get_identity (MoonshotServer* self, GVariant* parameters, GDBusMethodInvocation* invocation) { char* nai = NULL; - const char* _tmp1_; + GVariant* _tmp0_; char* password = NULL; - const char* _tmp2_; + GVariant* _tmp1_; char* service = NULL; - const char* _tmp3_; - gpointer * _user_data_; - if (strcmp (dbus_message_get_signature (message), "sss")) { - return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; - } - dbus_message_iter_init (message, &iter); - dbus_message_iter_get_basic (&iter, &_tmp1_); - dbus_message_iter_next (&iter); - nai = g_strdup (_tmp1_); - dbus_message_iter_get_basic (&iter, &_tmp2_); - dbus_message_iter_next (&iter); - password = g_strdup (_tmp2_); - dbus_message_iter_get_basic (&iter, &_tmp3_); - dbus_message_iter_next (&iter); - service = g_strdup (_tmp3_); - _user_data_ = g_new0 (gpointer, 2); - _user_data_[0] = dbus_connection_ref (connection); - _user_data_[1] = dbus_message_ref (message); - moonshot_server_get_identity (self, nai, password, service, (GAsyncReadyCallback) _dbus_moonshot_server_get_identity_ready, _user_data_); + GVariant* _tmp2_; + GVariantIter _arguments_iter; + g_variant_iter_init (&_arguments_iter, parameters); + _tmp0_ = g_variant_iter_next_value (&_arguments_iter); + nai = g_variant_dup_string (_tmp0_, NULL); + g_variant_unref (_tmp0_); + _tmp1_ = g_variant_iter_next_value (&_arguments_iter); + password = g_variant_dup_string (_tmp1_, NULL); + g_variant_unref (_tmp1_); + _tmp2_ = g_variant_iter_next_value (&_arguments_iter); + service = g_variant_dup_string (_tmp2_, NULL); + g_variant_unref (_tmp2_); + moonshot_server_get_identity (self, nai, password, service, (GAsyncReadyCallback) _dbus_moonshot_server_get_identity_ready, g_object_ref (invocation)); _g_free0 (nai); _g_free0 (password); _g_free0 (service); - return DBUS_HANDLER_RESULT_HANDLED; } static void _dbus_moonshot_server_get_identity_ready (GObject * source_object, GAsyncResult * _res_, gpointer * _user_data_) { - DBusConnection * connection; - DBusMessage * message; - DBusMessageIter iter; + GDBusMethodInvocation * invocation; GError* error; char* nai_out = NULL; char* password_out = NULL; @@ -848,67 +818,41 @@ static void _dbus_moonshot_server_get_identity_ready (GObject * source_object, G char* subject_name_constraint = NULL; char* subject_alt_name_constraint = NULL; gboolean result; - DBusMessage* reply; - const char* _tmp4_; - const char* _tmp5_; - const char* _tmp6_; - const char* _tmp7_; - const char* _tmp8_; - const char* _tmp9_; - dbus_bool_t _tmp10_; - connection = _user_data_[0]; - message = _user_data_[1]; + GVariant* _reply; + GVariantBuilder _reply_builder; + invocation = _user_data_; error = NULL; result = moonshot_server_get_identity_finish ((MoonshotServer*) source_object, _res_, &nai_out, &password_out, &server_certificate_hash, &ca_certificate, &subject_name_constraint, &subject_alt_name_constraint); - reply = dbus_message_new_method_return (message); - dbus_message_iter_init_append (reply, &iter); - _tmp4_ = nai_out; - dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &_tmp4_); + g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE); + g_variant_builder_add_value (&_reply_builder, g_variant_new_string (nai_out)); _g_free0 (nai_out); - _tmp5_ = password_out; - dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &_tmp5_); + g_variant_builder_add_value (&_reply_builder, g_variant_new_string (password_out)); _g_free0 (password_out); - _tmp6_ = server_certificate_hash; - dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &_tmp6_); + g_variant_builder_add_value (&_reply_builder, g_variant_new_string (server_certificate_hash)); _g_free0 (server_certificate_hash); - _tmp7_ = ca_certificate; - dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &_tmp7_); + g_variant_builder_add_value (&_reply_builder, g_variant_new_string (ca_certificate)); _g_free0 (ca_certificate); - _tmp8_ = subject_name_constraint; - dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &_tmp8_); + g_variant_builder_add_value (&_reply_builder, g_variant_new_string (subject_name_constraint)); _g_free0 (subject_name_constraint); - _tmp9_ = subject_alt_name_constraint; - dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &_tmp9_); + g_variant_builder_add_value (&_reply_builder, g_variant_new_string (subject_alt_name_constraint)); _g_free0 (subject_alt_name_constraint); - _tmp10_ = result; - dbus_message_iter_append_basic (&iter, DBUS_TYPE_BOOLEAN, &_tmp10_); - dbus_connection_send (connection, reply, NULL); - dbus_message_unref (reply); - dbus_connection_unref (connection); - dbus_message_unref (message); - g_free (_user_data_); + g_variant_builder_add_value (&_reply_builder, g_variant_new_boolean (result)); + _reply = g_variant_builder_end (&_reply_builder); + g_dbus_method_invocation_return_value (invocation, _reply); + g_object_unref (invocation); + g_variant_unref (_reply); } -static DBusHandlerResult _dbus_moonshot_server_get_default_identity (MoonshotServer* self, DBusConnection* connection, DBusMessage* message) { - DBusMessageIter iter; - gpointer * _user_data_; - if (strcmp (dbus_message_get_signature (message), "")) { - return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; - } - dbus_message_iter_init (message, &iter); - _user_data_ = g_new0 (gpointer, 2); - _user_data_[0] = dbus_connection_ref (connection); - _user_data_[1] = dbus_message_ref (message); - moonshot_server_get_default_identity (self, (GAsyncReadyCallback) _dbus_moonshot_server_get_default_identity_ready, _user_data_); - return DBUS_HANDLER_RESULT_HANDLED; +static void _dbus_moonshot_server_get_default_identity (MoonshotServer* self, GVariant* parameters, GDBusMethodInvocation* invocation) { + GVariantIter _arguments_iter; + g_variant_iter_init (&_arguments_iter, parameters); + moonshot_server_get_default_identity (self, (GAsyncReadyCallback) _dbus_moonshot_server_get_default_identity_ready, g_object_ref (invocation)); } static void _dbus_moonshot_server_get_default_identity_ready (GObject * source_object, GAsyncResult * _res_, gpointer * _user_data_) { - DBusConnection * connection; - DBusMessage * message; - DBusMessageIter iter; + GDBusMethodInvocation * invocation; GError* error; char* nai_out = NULL; char* password_out = NULL; @@ -917,183 +861,166 @@ static void _dbus_moonshot_server_get_default_identity_ready (GObject * source_o char* subject_name_constraint = NULL; char* subject_alt_name_constraint = NULL; gboolean result; - DBusMessage* reply; - const char* _tmp11_; - const char* _tmp12_; - const char* _tmp13_; - const char* _tmp14_; - const char* _tmp15_; - const char* _tmp16_; - dbus_bool_t _tmp17_; - connection = _user_data_[0]; - message = _user_data_[1]; + GVariant* _reply; + GVariantBuilder _reply_builder; + invocation = _user_data_; error = NULL; result = moonshot_server_get_default_identity_finish ((MoonshotServer*) source_object, _res_, &nai_out, &password_out, &server_certificate_hash, &ca_certificate, &subject_name_constraint, &subject_alt_name_constraint); - reply = dbus_message_new_method_return (message); - dbus_message_iter_init_append (reply, &iter); - _tmp11_ = nai_out; - dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &_tmp11_); + g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE); + g_variant_builder_add_value (&_reply_builder, g_variant_new_string (nai_out)); _g_free0 (nai_out); - _tmp12_ = password_out; - dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &_tmp12_); + g_variant_builder_add_value (&_reply_builder, g_variant_new_string (password_out)); _g_free0 (password_out); - _tmp13_ = server_certificate_hash; - dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &_tmp13_); + g_variant_builder_add_value (&_reply_builder, g_variant_new_string (server_certificate_hash)); _g_free0 (server_certificate_hash); - _tmp14_ = ca_certificate; - dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &_tmp14_); + g_variant_builder_add_value (&_reply_builder, g_variant_new_string (ca_certificate)); _g_free0 (ca_certificate); - _tmp15_ = subject_name_constraint; - dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &_tmp15_); + g_variant_builder_add_value (&_reply_builder, g_variant_new_string (subject_name_constraint)); _g_free0 (subject_name_constraint); - _tmp16_ = subject_alt_name_constraint; - dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &_tmp16_); + g_variant_builder_add_value (&_reply_builder, g_variant_new_string (subject_alt_name_constraint)); _g_free0 (subject_alt_name_constraint); - _tmp17_ = result; - dbus_message_iter_append_basic (&iter, DBUS_TYPE_BOOLEAN, &_tmp17_); - dbus_connection_send (connection, reply, NULL); - dbus_message_unref (reply); - dbus_connection_unref (connection); - dbus_message_unref (message); - g_free (_user_data_); + g_variant_builder_add_value (&_reply_builder, g_variant_new_boolean (result)); + _reply = g_variant_builder_end (&_reply_builder); + g_dbus_method_invocation_return_value (invocation, _reply); + g_object_unref (invocation); + g_variant_unref (_reply); } -static DBusHandlerResult _dbus_moonshot_server_install_id_card (MoonshotServer* self, DBusConnection* connection, DBusMessage* message) { - DBusMessageIter iter; +static void _dbus_moonshot_server_install_id_card (MoonshotServer* self, GVariant* parameters, GDBusMethodInvocation* invocation) { GError* error; char* display_name = NULL; - const char* _tmp18_; + GVariant* _tmp3_; char* user_name = NULL; - const char* _tmp19_; + GVariant* _tmp4_; char* password = NULL; - const char* _tmp20_; + GVariant* _tmp5_; char* realm = NULL; - const char* _tmp21_; + GVariant* _tmp6_; char** rules_patterns = NULL; int rules_patterns_length1; - char** _tmp22_; - int _tmp22__length; - int _tmp22__size; - int _tmp22__length1; - DBusMessageIter _tmp23_; + GVariant* _tmp7_; + char** _tmp8_; + int _tmp8__length; + int _tmp8__size; + int _tmp8__length1; + GVariantIter _tmp9_; + GVariant* _tmp10_; char** rules_always_confirm = NULL; int rules_always_confirm_length1; - char** _tmp25_; - int _tmp25__length; - int _tmp25__size; - int _tmp25__length1; - DBusMessageIter _tmp26_; + GVariant* _tmp11_; + char** _tmp12_; + int _tmp12__length; + int _tmp12__size; + int _tmp12__length1; + GVariantIter _tmp13_; + GVariant* _tmp14_; char** services = NULL; int services_length1; - char** _tmp28_; - int _tmp28__length; - int _tmp28__size; - int _tmp28__length1; - DBusMessageIter _tmp29_; + GVariant* _tmp15_; + char** _tmp16_; + int _tmp16__length; + int _tmp16__size; + int _tmp16__length1; + GVariantIter _tmp17_; + GVariant* _tmp18_; char* ca_cert = NULL; - const char* _tmp31_; + GVariant* _tmp19_; char* subject = NULL; - const char* _tmp32_; + GVariant* _tmp20_; char* subject_alt = NULL; - const char* _tmp33_; + GVariant* _tmp21_; char* server_cert = NULL; - const char* _tmp34_; + GVariant* _tmp22_; gboolean result; - DBusMessage* reply; - dbus_bool_t _tmp35_; + GVariantIter _arguments_iter; + GVariant* _reply; + GVariantBuilder _reply_builder; error = NULL; - if (strcmp (dbus_message_get_signature (message), "ssssasasasssss")) { - return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; - } - dbus_message_iter_init (message, &iter); - dbus_message_iter_get_basic (&iter, &_tmp18_); - dbus_message_iter_next (&iter); - display_name = g_strdup (_tmp18_); - dbus_message_iter_get_basic (&iter, &_tmp19_); - dbus_message_iter_next (&iter); - user_name = g_strdup (_tmp19_); - dbus_message_iter_get_basic (&iter, &_tmp20_); - dbus_message_iter_next (&iter); - password = g_strdup (_tmp20_); - dbus_message_iter_get_basic (&iter, &_tmp21_); - dbus_message_iter_next (&iter); - realm = g_strdup (_tmp21_); + g_variant_iter_init (&_arguments_iter, parameters); + _tmp3_ = g_variant_iter_next_value (&_arguments_iter); + display_name = g_variant_dup_string (_tmp3_, NULL); + g_variant_unref (_tmp3_); + _tmp4_ = g_variant_iter_next_value (&_arguments_iter); + user_name = g_variant_dup_string (_tmp4_, NULL); + g_variant_unref (_tmp4_); + _tmp5_ = g_variant_iter_next_value (&_arguments_iter); + password = g_variant_dup_string (_tmp5_, NULL); + g_variant_unref (_tmp5_); + _tmp6_ = g_variant_iter_next_value (&_arguments_iter); + realm = g_variant_dup_string (_tmp6_, NULL); + g_variant_unref (_tmp6_); rules_patterns_length1 = 0; - _tmp22_ = g_new (char*, 5); - _tmp22__length = 0; - _tmp22__size = 4; - _tmp22__length1 = 0; - dbus_message_iter_recurse (&iter, &_tmp23_); - for (; dbus_message_iter_get_arg_type (&_tmp23_); _tmp22__length1++) { - const char* _tmp24_; - if (_tmp22__size == _tmp22__length) { - _tmp22__size = 2 * _tmp22__size; - _tmp22_ = g_renew (char*, _tmp22_, _tmp22__size + 1); + _tmp7_ = g_variant_iter_next_value (&_arguments_iter); + _tmp8_ = g_new (char*, 5); + _tmp8__length = 0; + _tmp8__size = 4; + _tmp8__length1 = 0; + g_variant_iter_init (&_tmp9_, _tmp7_); + for (; _tmp10_ = g_variant_iter_next_value (&_tmp9_); _tmp8__length1++) { + if (_tmp8__size == _tmp8__length) { + _tmp8__size = 2 * _tmp8__size; + _tmp8_ = g_renew (char*, _tmp8_, _tmp8__size + 1); } - dbus_message_iter_get_basic (&_tmp23_, &_tmp24_); - dbus_message_iter_next (&_tmp23_); - _tmp22_[_tmp22__length++] = g_strdup (_tmp24_); + _tmp8_[_tmp8__length++] = g_variant_dup_string (_tmp10_, NULL); + g_variant_unref (_tmp10_); } - rules_patterns_length1 = _tmp22__length1; - _tmp22_[_tmp22__length] = NULL; - dbus_message_iter_next (&iter); - rules_patterns = _tmp22_; + rules_patterns_length1 = _tmp8__length1; + _tmp8_[_tmp8__length] = NULL; + rules_patterns = _tmp8_; + g_variant_unref (_tmp7_); rules_always_confirm_length1 = 0; - _tmp25_ = g_new (char*, 5); - _tmp25__length = 0; - _tmp25__size = 4; - _tmp25__length1 = 0; - dbus_message_iter_recurse (&iter, &_tmp26_); - for (; dbus_message_iter_get_arg_type (&_tmp26_); _tmp25__length1++) { - const char* _tmp27_; - if (_tmp25__size == _tmp25__length) { - _tmp25__size = 2 * _tmp25__size; - _tmp25_ = g_renew (char*, _tmp25_, _tmp25__size + 1); + _tmp11_ = g_variant_iter_next_value (&_arguments_iter); + _tmp12_ = g_new (char*, 5); + _tmp12__length = 0; + _tmp12__size = 4; + _tmp12__length1 = 0; + g_variant_iter_init (&_tmp13_, _tmp11_); + for (; _tmp14_ = g_variant_iter_next_value (&_tmp13_); _tmp12__length1++) { + if (_tmp12__size == _tmp12__length) { + _tmp12__size = 2 * _tmp12__size; + _tmp12_ = g_renew (char*, _tmp12_, _tmp12__size + 1); } - dbus_message_iter_get_basic (&_tmp26_, &_tmp27_); - dbus_message_iter_next (&_tmp26_); - _tmp25_[_tmp25__length++] = g_strdup (_tmp27_); + _tmp12_[_tmp12__length++] = g_variant_dup_string (_tmp14_, NULL); + g_variant_unref (_tmp14_); } - rules_always_confirm_length1 = _tmp25__length1; - _tmp25_[_tmp25__length] = NULL; - dbus_message_iter_next (&iter); - rules_always_confirm = _tmp25_; + rules_always_confirm_length1 = _tmp12__length1; + _tmp12_[_tmp12__length] = NULL; + rules_always_confirm = _tmp12_; + g_variant_unref (_tmp11_); services_length1 = 0; - _tmp28_ = g_new (char*, 5); - _tmp28__length = 0; - _tmp28__size = 4; - _tmp28__length1 = 0; - dbus_message_iter_recurse (&iter, &_tmp29_); - for (; dbus_message_iter_get_arg_type (&_tmp29_); _tmp28__length1++) { - const char* _tmp30_; - if (_tmp28__size == _tmp28__length) { - _tmp28__size = 2 * _tmp28__size; - _tmp28_ = g_renew (char*, _tmp28_, _tmp28__size + 1); + _tmp15_ = g_variant_iter_next_value (&_arguments_iter); + _tmp16_ = g_new (char*, 5); + _tmp16__length = 0; + _tmp16__size = 4; + _tmp16__length1 = 0; + g_variant_iter_init (&_tmp17_, _tmp15_); + for (; _tmp18_ = g_variant_iter_next_value (&_tmp17_); _tmp16__length1++) { + if (_tmp16__size == _tmp16__length) { + _tmp16__size = 2 * _tmp16__size; + _tmp16_ = g_renew (char*, _tmp16_, _tmp16__size + 1); } - dbus_message_iter_get_basic (&_tmp29_, &_tmp30_); - dbus_message_iter_next (&_tmp29_); - _tmp28_[_tmp28__length++] = g_strdup (_tmp30_); + _tmp16_[_tmp16__length++] = g_variant_dup_string (_tmp18_, NULL); + g_variant_unref (_tmp18_); } - services_length1 = _tmp28__length1; - _tmp28_[_tmp28__length] = NULL; - dbus_message_iter_next (&iter); - services = _tmp28_; - dbus_message_iter_get_basic (&iter, &_tmp31_); - dbus_message_iter_next (&iter); - ca_cert = g_strdup (_tmp31_); - dbus_message_iter_get_basic (&iter, &_tmp32_); - dbus_message_iter_next (&iter); - subject = g_strdup (_tmp32_); - dbus_message_iter_get_basic (&iter, &_tmp33_); - dbus_message_iter_next (&iter); - subject_alt = g_strdup (_tmp33_); - dbus_message_iter_get_basic (&iter, &_tmp34_); - dbus_message_iter_next (&iter); - server_cert = g_strdup (_tmp34_); + services_length1 = _tmp16__length1; + _tmp16_[_tmp16__length] = NULL; + services = _tmp16_; + g_variant_unref (_tmp15_); + _tmp19_ = g_variant_iter_next_value (&_arguments_iter); + ca_cert = g_variant_dup_string (_tmp19_, NULL); + g_variant_unref (_tmp19_); + _tmp20_ = g_variant_iter_next_value (&_arguments_iter); + subject = g_variant_dup_string (_tmp20_, NULL); + g_variant_unref (_tmp20_); + _tmp21_ = g_variant_iter_next_value (&_arguments_iter); + subject_alt = g_variant_dup_string (_tmp21_, NULL); + g_variant_unref (_tmp21_); + _tmp22_ = g_variant_iter_next_value (&_arguments_iter); + server_cert = g_variant_dup_string (_tmp22_, NULL); + g_variant_unref (_tmp22_); result = moonshot_server_install_id_card (self, display_name, user_name, password, realm, rules_patterns, rules_patterns_length1, rules_always_confirm, rules_always_confirm_length1, services, services_length1, ca_cert, subject, subject_alt, server_cert); - reply = dbus_message_new_method_return (message); - dbus_message_iter_init_append (reply, &iter); + g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE); _g_free0 (display_name); _g_free0 (user_name); _g_free0 (password); @@ -1105,79 +1032,67 @@ static DBusHandlerResult _dbus_moonshot_server_install_id_card (MoonshotServer* _g_free0 (subject); _g_free0 (subject_alt); _g_free0 (server_cert); - _tmp35_ = result; - dbus_message_iter_append_basic (&iter, DBUS_TYPE_BOOLEAN, &_tmp35_); - if (reply) { - dbus_connection_send (connection, reply, NULL); - dbus_message_unref (reply); - return DBUS_HANDLER_RESULT_HANDLED; - } else { - return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; - } + g_variant_builder_add_value (&_reply_builder, g_variant_new_boolean (result)); + _reply = g_variant_builder_end (&_reply_builder); + g_dbus_method_invocation_return_value (invocation, _reply); } -DBusHandlerResult moonshot_server_dbus_message (DBusConnection* connection, DBusMessage* message, void* object) { - DBusHandlerResult result; - result = DBUS_HANDLER_RESULT_NOT_YET_HANDLED; - if (dbus_message_is_method_call (message, "org.freedesktop.DBus.Introspectable", "Introspect")) { - result = _dbus_moonshot_server_introspect (object, connection, message); - } else if (dbus_message_is_method_call (message, "org.freedesktop.DBus.Properties", "GetAll")) { - result = _dbus_moonshot_server_property_get_all (object, connection, message); - } else if (dbus_message_is_method_call (message, "org.janet.Moonshot", "GetIdentity")) { - result = _dbus_moonshot_server_get_identity (object, connection, message); - } else if (dbus_message_is_method_call (message, "org.janet.Moonshot", "GetDefaultIdentity")) { - result = _dbus_moonshot_server_get_default_identity (object, connection, message); - } else if (dbus_message_is_method_call (message, "org.janet.Moonshot", "InstallIdCard")) { - result = _dbus_moonshot_server_install_id_card (object, connection, message); - } - if (result == DBUS_HANDLER_RESULT_HANDLED) { - return result; - } else { - return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; +static void moonshot_server_dbus_interface_method_call (GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* method_name, GVariant* parameters, GDBusMethodInvocation* invocation, gpointer user_data) { + gpointer* data; + gpointer object; + data = user_data; + object = data[0]; + if (strcmp (method_name, "GetIdentity") == 0) { + _dbus_moonshot_server_get_identity (object, parameters, invocation); + } else if (strcmp (method_name, "GetDefaultIdentity") == 0) { + _dbus_moonshot_server_get_default_identity (object, parameters, invocation); + } else if (strcmp (method_name, "InstallIdCard") == 0) { + _dbus_moonshot_server_install_id_card (object, parameters, invocation); } } -void moonshot_server_dbus_register_object (DBusConnection* connection, const char* path, void* object) { - if (!g_object_get_data (object, "dbus_object_path")) { - g_object_set_data (object, "dbus_object_path", g_strdup (path)); - dbus_connection_register_object_path (connection, path, &_moonshot_server_dbus_path_vtable, object); - g_object_weak_ref (object, _vala_dbus_unregister_object, connection); - } +static GVariant* moonshot_server_dbus_interface_get_property (GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* property_name, GError** error, gpointer user_data) { + gpointer* data; + gpointer object; + data = user_data; + object = data[0]; + return NULL; } -static void moonshot_server_class_init (MoonshotServerClass * klass) { - moonshot_server_parent_class = g_type_class_peek_parent (klass); - g_type_class_add_private (klass, sizeof (MoonshotServerPrivate)); - G_OBJECT_CLASS (klass)->finalize = moonshot_server_finalize; - g_type_set_qdata (TYPE_MOONSHOT_SERVER, g_quark_from_static_string ("DBusObjectVTable"), (void*) (&_moonshot_server_dbus_vtable)); -} - - -static void moonshot_server_instance_init (MoonshotServer * self) { - self->priv = MOONSHOT_SERVER_GET_PRIVATE (self); +static gboolean moonshot_server_dbus_interface_set_property (GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* property_name, GVariant* value, GError** error, gpointer user_data) { + gpointer* data; + gpointer object; + data = user_data; + object = data[0]; + return FALSE; } -static void moonshot_server_finalize (GObject* obj) { - MoonshotServer * self; - self = MOONSHOT_SERVER (obj); - _g_object_unref0 (self->priv->main_window); - G_OBJECT_CLASS (moonshot_server_parent_class)->finalize (obj); +guint moonshot_server_register_object (gpointer object, GDBusConnection* connection, const gchar* path, GError** error) { + guint result; + gpointer *data; + data = g_new (gpointer, 3); + data[0] = g_object_ref (object); + data[1] = g_object_ref (connection); + data[2] = g_strdup (path); + result = g_dbus_connection_register_object (connection, path, &_moonshot_server_dbus_interface_info, &_moonshot_server_dbus_interface_vtable, data, _moonshot_server_unregister_object, error); + if (!result) { + return 0; + } + return result; } -GType moonshot_server_get_type (void) { - static volatile gsize moonshot_server_type_id__volatile = 0; - if (g_once_init_enter (&moonshot_server_type_id__volatile)) { - static const GTypeInfo g_define_type_info = { sizeof (MoonshotServerClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) moonshot_server_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (MoonshotServer), 0, (GInstanceInitFunc) moonshot_server_instance_init, NULL }; - GType moonshot_server_type_id; - moonshot_server_type_id = g_type_register_static (G_TYPE_OBJECT, "MoonshotServer", &g_define_type_info, 0); - g_once_init_leave (&moonshot_server_type_id__volatile, moonshot_server_type_id); - } - return moonshot_server_type_id__volatile; +static void _moonshot_server_unregister_object (gpointer user_data) { + gpointer* data; + data = user_data; + g_object_unref (data[0]); + g_object_unref (data[1]); + g_free (data[2]); + g_free (data); } diff --git a/src/moonshot-utils.c b/src/moonshot-utils.c index 702ee4f..ad430e7 100644 --- a/src/moonshot-utils.c +++ b/src/moonshot-utils.c @@ -43,6 +43,7 @@ GdkPixbuf* find_icon (const char* name, gint size) { { GtkIconTheme* icon_theme; GdkPixbuf* _tmp0_; + g_print ("Linux\n"); icon_theme = _g_object_ref0 (gtk_icon_theme_get_default ()); _tmp0_ = gtk_icon_theme_load_icon (icon_theme, name, size, GTK_ICON_LOOKUP_FORCE_SIZE, &_inner_error_); if (_inner_error_ != NULL) { -- 2.1.4