1 /* moonshot-identity-management-view.c generated by valac 0.10.4, the Vala compiler
2 * generated from moonshot-identity-management-view.vala, do not modify */
6 #include <glib-object.h>
10 #include <gdk-pixbuf/gdk-pixdata.h>
13 #include <glib/gi18n-lib.h>
14 #include <pango/pango.h>
21 #define TYPE_IDENTITY_MANAGER_VIEW (identity_manager_view_get_type ())
22 #define IDENTITY_MANAGER_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IDENTITY_MANAGER_VIEW, IdentityManagerView))
23 #define IDENTITY_MANAGER_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_IDENTITY_MANAGER_VIEW, IdentityManagerViewClass))
24 #define IS_IDENTITY_MANAGER_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IDENTITY_MANAGER_VIEW))
25 #define IS_IDENTITY_MANAGER_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_IDENTITY_MANAGER_VIEW))
26 #define IDENTITY_MANAGER_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_IDENTITY_MANAGER_VIEW, IdentityManagerViewClass))
28 typedef struct _IdentityManagerView IdentityManagerView;
29 typedef struct _IdentityManagerViewClass IdentityManagerViewClass;
30 typedef struct _IdentityManagerViewPrivate IdentityManagerViewPrivate;
32 #define TYPE_IDENTITY_MANAGER_APP (identity_manager_app_get_type ())
33 #define IDENTITY_MANAGER_APP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IDENTITY_MANAGER_APP, IdentityManagerApp))
34 #define IDENTITY_MANAGER_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_IDENTITY_MANAGER_APP, IdentityManagerAppClass))
35 #define IS_IDENTITY_MANAGER_APP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IDENTITY_MANAGER_APP))
36 #define IS_IDENTITY_MANAGER_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_IDENTITY_MANAGER_APP))
37 #define IDENTITY_MANAGER_APP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_IDENTITY_MANAGER_APP, IdentityManagerAppClass))
39 typedef struct _IdentityManagerApp IdentityManagerApp;
40 typedef struct _IdentityManagerAppClass IdentityManagerAppClass;
42 #define TYPE_IDENTITY_MANAGER_MODEL (identity_manager_model_get_type ())
43 #define IDENTITY_MANAGER_MODEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IDENTITY_MANAGER_MODEL, IdentityManagerModel))
44 #define IDENTITY_MANAGER_MODEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_IDENTITY_MANAGER_MODEL, IdentityManagerModelClass))
45 #define IS_IDENTITY_MANAGER_MODEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IDENTITY_MANAGER_MODEL))
46 #define IS_IDENTITY_MANAGER_MODEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_IDENTITY_MANAGER_MODEL))
47 #define IDENTITY_MANAGER_MODEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_IDENTITY_MANAGER_MODEL, IdentityManagerModelClass))
49 typedef struct _IdentityManagerModel IdentityManagerModel;
50 typedef struct _IdentityManagerModelClass IdentityManagerModelClass;
52 #define TYPE_IDENTITY_REQUEST (identity_request_get_type ())
53 #define IDENTITY_REQUEST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IDENTITY_REQUEST, IdentityRequest))
54 #define IDENTITY_REQUEST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_IDENTITY_REQUEST, IdentityRequestClass))
55 #define IS_IDENTITY_REQUEST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IDENTITY_REQUEST))
56 #define IS_IDENTITY_REQUEST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_IDENTITY_REQUEST))
57 #define IDENTITY_REQUEST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_IDENTITY_REQUEST, IdentityRequestClass))
59 typedef struct _IdentityRequest IdentityRequest;
60 typedef struct _IdentityRequestClass IdentityRequestClass;
62 #define TYPE_CUSTOM_VBOX (custom_vbox_get_type ())
63 #define CUSTOM_VBOX(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CUSTOM_VBOX, CustomVBox))
64 #define CUSTOM_VBOX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_CUSTOM_VBOX, CustomVBoxClass))
65 #define IS_CUSTOM_VBOX(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CUSTOM_VBOX))
66 #define IS_CUSTOM_VBOX_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_CUSTOM_VBOX))
67 #define CUSTOM_VBOX_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CUSTOM_VBOX, CustomVBoxClass))
69 typedef struct _CustomVBox CustomVBox;
70 typedef struct _CustomVBoxClass CustomVBoxClass;
72 #define TYPE_ID_CARD (id_card_get_type ())
73 #define ID_CARD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ID_CARD, IdCard))
74 #define ID_CARD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ID_CARD, IdCardClass))
75 #define IS_ID_CARD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ID_CARD))
76 #define IS_ID_CARD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ID_CARD))
77 #define ID_CARD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ID_CARD, IdCardClass))
79 typedef struct _IdCard IdCard;
80 typedef struct _IdCardClass IdCardClass;
82 #define IDENTITY_MANAGER_VIEW_TYPE_COLUMNS (identity_manager_view_columns_get_type ())
83 #define _identity_manager_app_unref0(var) ((var == NULL) ? NULL : (var = (identity_manager_app_unref (var), NULL)))
84 #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
85 #define __g_slist_free_g_object_unref0(var) ((var == NULL) ? NULL : (var = (_g_slist_free_g_object_unref (var), NULL)))
86 #define _g_queue_free0(var) ((var == NULL) ? NULL : (var = (g_queue_free (var), NULL)))
87 #define _g_hash_table_unref0(var) ((var == NULL) ? NULL : (var = (g_hash_table_unref (var), NULL)))
88 typedef struct _IdentityManagerAppPrivate IdentityManagerAppPrivate;
89 #define _g_free0(var) (var = (g_free (var), NULL))
91 #define TYPE_ID_CARD_WIDGET (id_card_widget_get_type ())
92 #define ID_CARD_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ID_CARD_WIDGET, IdCardWidget))
93 #define ID_CARD_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ID_CARD_WIDGET, IdCardWidgetClass))
94 #define IS_ID_CARD_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ID_CARD_WIDGET))
95 #define IS_ID_CARD_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ID_CARD_WIDGET))
96 #define ID_CARD_WIDGET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ID_CARD_WIDGET, IdCardWidgetClass))
98 typedef struct _IdCardWidget IdCardWidget;
99 typedef struct _IdCardWidgetClass IdCardWidgetClass;
100 #define _g_list_free0(var) ((var == NULL) ? NULL : (var = (g_list_free (var), NULL)))
102 #define TYPE_ADD_IDENTITY_DIALOG (add_identity_dialog_get_type ())
103 #define ADD_IDENTITY_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ADD_IDENTITY_DIALOG, AddIdentityDialog))
104 #define ADD_IDENTITY_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ADD_IDENTITY_DIALOG, AddIdentityDialogClass))
105 #define IS_ADD_IDENTITY_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ADD_IDENTITY_DIALOG))
106 #define IS_ADD_IDENTITY_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ADD_IDENTITY_DIALOG))
107 #define ADD_IDENTITY_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ADD_IDENTITY_DIALOG, AddIdentityDialogClass))
109 typedef struct _AddIdentityDialog AddIdentityDialog;
110 typedef struct _AddIdentityDialogClass AddIdentityDialogClass;
111 typedef struct _IdentityRequestPrivate IdentityRequestPrivate;
112 #define __g_slist_free_g_free0(var) ((var == NULL) ? NULL : (var = (_g_slist_free_g_free (var), NULL)))
114 #define TYPE_RULE (rule_get_type ())
115 typedef struct _Rule Rule;
116 typedef struct _Block1Data Block1Data;
117 #define _g_pattern_spec_free0(var) ((var == NULL) ? NULL : (var = (g_pattern_spec_free (var), NULL)))
119 #define TYPE_ADD_PASSWORD_DIALOG (add_password_dialog_get_type ())
120 #define ADD_PASSWORD_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_ADD_PASSWORD_DIALOG, AddPasswordDialog))
121 #define ADD_PASSWORD_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_ADD_PASSWORD_DIALOG, AddPasswordDialogClass))
122 #define IS_ADD_PASSWORD_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_ADD_PASSWORD_DIALOG))
123 #define IS_ADD_PASSWORD_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_ADD_PASSWORD_DIALOG))
124 #define ADD_PASSWORD_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_ADD_PASSWORD_DIALOG, AddPasswordDialogClass))
126 typedef struct _AddPasswordDialog AddPasswordDialog;
127 typedef struct _AddPasswordDialogClass AddPasswordDialogClass;
128 #define _pango_font_description_free0(var) ((var == NULL) ? NULL : (var = (pango_font_description_free (var), NULL)))
129 #define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
131 struct _IdentityManagerView {
132 GtkWindow parent_instance;
133 IdentityManagerViewPrivate * priv;
134 IdentityManagerApp* parent_app;
135 IdentityManagerModel* identities_manager;
136 GQueue* request_queue;
139 struct _IdentityManagerViewClass {
140 GtkWindowClass parent_class;
143 struct _IdentityManagerViewPrivate {
144 GtkUIManager* ui_manager;
145 GtkEntry* search_entry;
147 CustomVBox* custom_vbox;
148 GtkVBox* services_internal_vbox;
149 GtkEntry* username_entry;
150 GtkEntry* password_entry;
151 GtkListStore* listmodel;
152 GtkTreeModelFilter* filter;
154 IdCard* default_id_card;
155 GHashTable* service_button_map;
159 IDENTITY_MANAGER_VIEW_COLUMNS_IDCARD_COL,
160 IDENTITY_MANAGER_VIEW_COLUMNS_LOGO_COL,
161 IDENTITY_MANAGER_VIEW_COLUMNS_ISSUER_COL,
162 IDENTITY_MANAGER_VIEW_COLUMNS_USERNAME_COL,
163 IDENTITY_MANAGER_VIEW_COLUMNS_PASSWORD_COL,
164 IDENTITY_MANAGER_VIEW_COLUMNS_N_COLUMNS
165 } IdentityManagerViewColumns;
167 struct _IdentityManagerApp {
168 GTypeInstance parent_instance;
169 volatile int ref_count;
170 IdentityManagerAppPrivate * priv;
171 IdentityManagerModel* model;
174 struct _IdentityManagerAppClass {
175 GTypeClass parent_class;
176 void (*finalize) (IdentityManagerApp *self);
179 struct _IdentityRequest {
180 GObject parent_instance;
181 IdentityRequestPrivate * priv;
184 gboolean select_default;
190 struct _IdentityRequestClass {
191 GObjectClass parent_class;
196 char* always_confirm;
201 IdentityManagerView * self;
206 static gpointer identity_manager_view_parent_class = NULL;
208 GType identity_manager_view_get_type (void) G_GNUC_CONST;
209 gpointer identity_manager_app_ref (gpointer instance);
210 void identity_manager_app_unref (gpointer instance);
211 GParamSpec* param_spec_identity_manager_app (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
212 void value_set_identity_manager_app (GValue* value, gpointer v_object);
213 void value_take_identity_manager_app (GValue* value, gpointer v_object);
214 gpointer value_get_identity_manager_app (const GValue* value);
215 GType identity_manager_app_get_type (void) G_GNUC_CONST;
216 GType identity_manager_model_get_type (void) G_GNUC_CONST;
217 GType identity_request_get_type (void) G_GNUC_CONST;
218 GType custom_vbox_get_type (void) G_GNUC_CONST;
219 GType id_card_get_type (void) G_GNUC_CONST;
220 #define IDENTITY_MANAGER_VIEW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_IDENTITY_MANAGER_VIEW, IdentityManagerViewPrivate))
222 IDENTITY_MANAGER_VIEW_DUMMY_PROPERTY
224 static GType identity_manager_view_columns_get_type (void) G_GNUC_UNUSED;
225 static void _g_slist_free_g_object_unref (GSList* self);
226 #define IDENTITY_MANAGER_VIEW_WINDOW_WIDTH 400
227 #define IDENTITY_MANAGER_VIEW_WINDOW_HEIGHT 500
228 #define IDENTITY_MANAGER_VIEW_layout "<menubar name='MenuBar'>" " <menu name='FileMenu' action='FileMenuAction'>" " <menuitem name='AddIdCard' action='AddIdCardAction' />" " <separator />" " <menuitem name='Quit' action='QuitAction' />" " </menu>" "" " <menu name='HelpMenu' action='HelpMenuAction'>" " <menuitem name='About' action='AboutAction' />" " </menu>" "</menubar>"
229 IdentityManagerView* identity_manager_view_new (IdentityManagerApp* app);
230 IdentityManagerView* identity_manager_view_construct (GType object_type, IdentityManagerApp* app);
231 static void identity_manager_view_build_ui (IdentityManagerView* self);
232 static void identity_manager_view_setup_list_model (IdentityManagerView* self);
233 static void identity_manager_view_load_id_cards (IdentityManagerView* self);
234 static void identity_manager_view_connect_signals (IdentityManagerView* self);
235 void identity_manager_view_on_card_list_changed (IdentityManagerView* self);
236 void identity_manager_view_add_candidate (IdentityManagerView* self, IdCard* idcard);
237 static gboolean identity_manager_view_visible_func (IdentityManagerView* self, GtkTreeModel* model, GtkTreeIter* iter);
238 const char* id_card_get_issuer (IdCard* self);
239 const char* id_card_get_display_name (IdCard* self);
240 char** id_card_get_services (IdCard* self, int* result_length1);
241 static gboolean _identity_manager_view_visible_func_gtk_tree_model_filter_visible_func (GtkTreeModel* model, GtkTreeIter* iter, gpointer self);
242 static void identity_manager_view_search_entry_icon_press_cb (IdentityManagerView* self, GtkEntryIconPosition pos, GdkEvent* event);
243 static void identity_manager_view_search_entry_text_changed_cb (IdentityManagerView* self);
244 static void identity_manager_view_redraw_id_card_widgets (IdentityManagerView* self);
245 static gboolean identity_manager_view_search_entry_key_press_event_cb (IdentityManagerView* self, GdkEventKey* e);
246 GType id_card_widget_get_type (void) G_GNUC_CONST;
247 static void identity_manager_view_remove_id_card_widget (IdentityManagerView* self, IdCardWidget* id_card_widget);
248 GeeLinkedList* identity_manager_model_get_card_list (IdentityManagerModel* self);
249 static void identity_manager_view_add_id_card_data (IdentityManagerView* self, IdCard* id_card);
250 static void identity_manager_view_add_id_card_widget (IdentityManagerView* self, IdCard* id_card);
251 static void identity_manager_view_fill_details (IdentityManagerView* self, IdCardWidget* id_card_widget);
252 IdCard* id_card_widget_get_id_card (IdCardWidget* self);
253 const char* id_card_get_username (IdCard* self);
254 const char* id_card_get_password (IdCard* self);
255 static void identity_manager_view_fill_services_vbox (IdentityManagerView* self, IdCard* id_card);
256 static void identity_manager_view_show_details (IdentityManagerView* self, IdCard* id_card);
257 static void identity_manager_view_details_identity_cb (IdentityManagerView* self, IdCardWidget* id_card_widget);
258 GType add_identity_dialog_get_type (void) G_GNUC_CONST;
259 static IdCard* identity_manager_view_get_id_card_data (IdentityManagerView* self, AddIdentityDialog* dialog);
260 IdCard* id_card_new (void);
261 IdCard* id_card_construct (GType object_type);
262 const char* add_identity_dialog_get_display_name (AddIdentityDialog* self);
263 void id_card_set_display_name (IdCard* self, const char* value);
264 const char* add_identity_dialog_get_issuer (AddIdentityDialog* self);
265 void id_card_set_issuer (IdCard* self, const char* value);
266 const char* add_identity_dialog_get_username (AddIdentityDialog* self);
267 void id_card_set_username (IdCard* self, const char* value);
268 const char* add_identity_dialog_get_password (AddIdentityDialog* self);
269 void id_card_set_password (IdCard* self, const char* value);
270 void id_card_set_services (IdCard* self, char** value, int value_length1);
271 GdkPixbuf* find_icon (const char* name, gint size);
272 static void identity_manager_view_remove_id_card_data (IdentityManagerView* self, IdCard* id_card);
273 IdCardWidget* id_card_widget_new (IdCard* id_card);
274 IdCardWidget* id_card_widget_construct (GType object_type, IdCard* id_card);
275 void custom_vbox_add_id_card_widget (CustomVBox* self, IdCardWidget* id_card_widget);
276 static void _identity_manager_view_details_identity_cb_id_card_widget_details_id (IdCardWidget* _sender, gpointer self);
277 static void identity_manager_view_remove_identity_cb (IdentityManagerView* self, IdCardWidget* id_card_widget);
278 static void _identity_manager_view_remove_identity_cb_id_card_widget_remove_id (IdCardWidget* _sender, gpointer self);
279 static void _lambda2_ (IdCardWidget* w, IdentityManagerView* self);
280 void identity_manager_view_send_identity_cb (IdentityManagerView* self, IdCard* identity);
281 static void __lambda2__id_card_widget_send_id (IdCardWidget* _sender, gpointer self);
282 void custom_vbox_receive_expanded_event (CustomVBox* self, IdCardWidget* id_card_widget);
283 static void _custom_vbox_receive_expanded_event_id_card_widget_expanded (IdCardWidget* _sender, gpointer self);
284 static void _identity_manager_view_fill_details_id_card_widget_expanded (IdCardWidget* _sender, gpointer self);
285 gboolean identity_manager_view_display_name_is_valid (IdentityManagerView* self, const char* name, char** candidate);
286 void identity_manager_view_insert_id_card (IdentityManagerView* self, IdCard* id_card);
287 void identity_manager_model_add_card (IdentityManagerModel* self, IdCard* card);
288 gboolean identity_manager_view_add_identity (IdentityManagerView* self, IdCard* id_card);
289 static void identity_manager_view_add_identity_manual_cb (IdentityManagerView* self);
290 AddIdentityDialog* add_identity_dialog_new (void);
291 AddIdentityDialog* add_identity_dialog_construct (GType object_type);
292 void custom_vbox_remove_id_card_widget (CustomVBox* self, IdCardWidget* id_card_widget);
293 static void identity_manager_view_remove_identity (IdentityManagerView* self, IdCardWidget* id_card_widget);
294 void identity_manager_model_remove_card (IdentityManagerModel* self, IdCard* card);
295 void identity_manager_view_select_identity (IdentityManagerView* self, IdentityRequest* request);
296 IdCardWidget* custom_vbox_get_current_idcard (CustomVBox* self);
297 GtkButton* id_card_widget_get_send_button (IdCardWidget* self);
298 const char* id_card_get_nai (IdCard* self);
299 static void _g_slist_free_g_free (GSList* self);
300 GType rule_get_type (void) G_GNUC_CONST;
301 Rule* rule_dup (const Rule* self);
302 void rule_free (Rule* self);
303 void rule_copy (const Rule* self, Rule* dest);
304 void rule_destroy (Rule* self);
305 Rule* id_card_get_rules (IdCard* self, int* result_length1);
306 static gboolean identity_manager_view_match_service_pattern (IdentityManagerView* self, const char* service, const char* pattern);
307 static gboolean _lambda3_ (Block1Data* _data1_);
308 static gboolean __lambda3__gsource_func (gpointer self);
309 static Block1Data* block1_data_ref (Block1Data* _data1_);
310 static void block1_data_unref (Block1Data* _data1_);
311 void identity_manager_model_update_card (IdentityManagerModel* self, IdCard* card);
312 AddPasswordDialog* add_password_dialog_new (void);
313 AddPasswordDialog* add_password_dialog_construct (GType object_type);
314 GType add_password_dialog_get_type (void) G_GNUC_CONST;
315 const char* add_password_dialog_get_password (AddPasswordDialog* self);
316 gboolean add_password_dialog_get_remember (AddPasswordDialog* self);
317 void identity_request_return_identity (IdentityRequest* self, IdCard* id_card);
318 static void identity_manager_view_label_make_bold (IdentityManagerView* self, GtkLabel* label);
319 static void _lambda1_ (GtkButton* remove_button, IdentityManagerView* self);
320 void id_card_widget_update_id_card_label (IdCardWidget* self);
321 static void __lambda1__gtk_button_clicked (GtkButton* _sender, gpointer self);
322 static void identity_manager_view_on_about_action (IdentityManagerView* self);
323 static GtkActionEntry* identity_manager_view_create_actions (IdentityManagerView* self, int* result_length1);
324 static void _vala_array_add1 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value);
325 static void _identity_manager_view_add_identity_manual_cb_gtk_action_callback (GtkAction* action, gpointer self);
326 static void _vala_array_add2 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value);
327 static void _gtk_main_quit_gtk_action_callback (GtkAction* action, gpointer self);
328 static void _vala_array_add3 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value);
329 static void _vala_array_add4 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value);
330 static void _identity_manager_view_on_about_action_gtk_action_callback (GtkAction* action, gpointer self);
331 static void _vala_array_add5 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value);
332 static void identity_manager_view_create_ui_manager (IdentityManagerView* self);
333 static void identity_manager_view_set_atk_name_description (IdentityManagerView* self, GtkWidget* widget, const char* name, const char* description);
334 GdkPixbuf* find_icon_sized (const char* name, GtkIconSize icon_size);
335 static void _identity_manager_view_search_entry_icon_press_cb_gtk_entry_icon_press (GtkEntry* _sender, GtkEntryIconPosition p0, GdkEvent* p1, gpointer self);
336 static void _identity_manager_view_search_entry_text_changed_cb_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self);
337 static gboolean _identity_manager_view_search_entry_key_press_event_cb_gtk_widget_key_press_event (GtkWidget* _sender, GdkEventKey* event, gpointer self);
338 CustomVBox* custom_vbox_new (IdentityManagerView* window, gboolean homogeneous, gint spacing);
339 CustomVBox* custom_vbox_construct (GType object_type, IdentityManagerView* window, gboolean homogeneous, gint spacing);
340 static void _gtk_main_quit_gtk_object_destroy (GtkObject* _sender, gpointer self);
341 static void _identity_manager_view_on_card_list_changed_identity_manager_model_card_list_changed (IdentityManagerModel* _sender, gpointer self);
342 static void identity_manager_view_finalize (GObject* obj);
343 static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func);
344 static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func);
345 static gint _vala_array_length (gpointer array);
346 static int _vala_strcmp0 (const char * str1, const char * str2);
350 static GType identity_manager_view_columns_get_type (void) {
351 static volatile gsize identity_manager_view_columns_type_id__volatile = 0;
352 if (g_once_init_enter (&identity_manager_view_columns_type_id__volatile)) {
353 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}};
354 GType identity_manager_view_columns_type_id;
355 identity_manager_view_columns_type_id = g_enum_register_static ("IdentityManagerViewColumns", values);
356 g_once_init_leave (&identity_manager_view_columns_type_id__volatile, identity_manager_view_columns_type_id);
358 return identity_manager_view_columns_type_id__volatile;
362 static void _g_slist_free_g_object_unref (GSList* self) {
363 g_slist_foreach (self, (GFunc) g_object_unref, NULL);
368 static gpointer _identity_manager_app_ref0 (gpointer self) {
369 return self ? identity_manager_app_ref (self) : NULL;
373 static gpointer _g_object_ref0 (gpointer self) {
374 return self ? g_object_ref (self) : NULL;
378 IdentityManagerView* identity_manager_view_construct (GType object_type, IdentityManagerApp* app) {
379 IdentityManagerView * self;
380 IdentityManagerApp* _tmp0_;
381 IdentityManagerModel* _tmp1_;
384 g_return_val_if_fail (app != NULL, NULL);
385 self = g_object_newv (object_type, 0, NULL);
386 self->parent_app = (_tmp0_ = _identity_manager_app_ref0 (app), _identity_manager_app_unref0 (self->parent_app), _tmp0_);
387 self->identities_manager = (_tmp1_ = _g_object_ref0 (self->parent_app->model), _g_object_unref0 (self->identities_manager), _tmp1_);
388 self->request_queue = (_tmp2_ = g_queue_new (), _g_queue_free0 (self->request_queue), _tmp2_);
389 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_);
390 gtk_window_set_title ((GtkWindow*) self, "Moonshoot");
391 gtk_window_set_position ((GtkWindow*) self, GTK_WIN_POS_CENTER);
392 gtk_window_set_default_size ((GtkWindow*) self, IDENTITY_MANAGER_VIEW_WINDOW_WIDTH, IDENTITY_MANAGER_VIEW_WINDOW_HEIGHT);
393 identity_manager_view_build_ui (self);
394 identity_manager_view_setup_list_model (self);
395 identity_manager_view_load_id_cards (self);
396 identity_manager_view_connect_signals (self);
401 IdentityManagerView* identity_manager_view_new (IdentityManagerApp* app) {
402 return identity_manager_view_construct (TYPE_IDENTITY_MANAGER_VIEW, app);
406 void identity_manager_view_on_card_list_changed (IdentityManagerView* self) {
407 g_return_if_fail (self != NULL);
408 identity_manager_view_load_id_cards (self);
412 void identity_manager_view_add_candidate (IdentityManagerView* self, IdCard* idcard) {
413 g_return_if_fail (self != NULL);
414 g_return_if_fail (idcard != NULL);
415 self->priv->candidates = g_slist_append (self->priv->candidates, _g_object_ref0 (idcard));
419 static gboolean string_contains (const char* self, const char* needle) {
420 gboolean result = FALSE;
421 g_return_val_if_fail (self != NULL, FALSE);
422 g_return_val_if_fail (needle != NULL, FALSE);
423 result = strstr (self, needle) != NULL;
428 static gboolean identity_manager_view_visible_func (IdentityManagerView* self, GtkTreeModel* model, GtkTreeIter* iter) {
429 gboolean result = FALSE;
432 gboolean _tmp0_ = FALSE;
433 g_return_val_if_fail (self != NULL, FALSE);
434 g_return_val_if_fail (model != NULL, FALSE);
436 gtk_tree_model_get (model, iter, IDENTITY_MANAGER_VIEW_COLUMNS_IDCARD_COL, &id_card, -1);
437 if (id_card == NULL) {
439 _g_object_unref0 (id_card);
442 if (self->priv->candidates != NULL) {
443 gboolean is_candidate;
444 is_candidate = FALSE;
446 GSList* candidate_collection;
447 GSList* candidate_it;
448 candidate_collection = self->priv->candidates;
449 for (candidate_it = candidate_collection; candidate_it != NULL; candidate_it = candidate_it->next) {
451 candidate = _g_object_ref0 ((IdCard*) candidate_it->data);
453 if (candidate == id_card) {
456 _g_object_unref0 (candidate);
462 _g_object_unref0 (id_card);
466 entry_text = g_strdup (gtk_entry_get_text (self->priv->search_entry));
467 if (entry_text == NULL) {
470 _tmp0_ = _vala_strcmp0 (entry_text, "") == 0;
474 _g_free0 (entry_text);
475 _g_object_unref0 (id_card);
480 char** search_text_collection;
481 int search_text_collection_length1;
483 search_text_collection = _tmp1_ = g_strsplit (entry_text, " ", 0);
484 search_text_collection_length1 = _vala_array_length (_tmp1_);
485 for (search_text_it = 0; search_text_it < _vala_array_length (_tmp1_); search_text_it = search_text_it + 1) {
487 search_text = g_strdup (search_text_collection[search_text_it]);
489 char* search_text_casefold;
491 if (_vala_strcmp0 (search_text, "") == 0) {
492 _g_free0 (search_text);
495 search_text_casefold = g_utf8_casefold (search_text, -1);
496 if (id_card_get_issuer (id_card) != NULL) {
497 char* issuer_casefold;
498 issuer_casefold = g_strdup (id_card_get_issuer (id_card));
499 if (string_contains (issuer_casefold, search_text_casefold)) {
501 _g_free0 (issuer_casefold);
502 _g_free0 (search_text_casefold);
503 _g_free0 (search_text);
504 search_text_collection = (_vala_array_free (search_text_collection, search_text_collection_length1, (GDestroyNotify) g_free), NULL);
505 _g_free0 (entry_text);
506 _g_object_unref0 (id_card);
509 _g_free0 (issuer_casefold);
511 if (id_card_get_display_name (id_card) != NULL) {
512 char* display_name_casefold;
513 display_name_casefold = g_utf8_casefold (id_card_get_display_name (id_card), -1);
514 if (string_contains (display_name_casefold, search_text_casefold)) {
516 _g_free0 (display_name_casefold);
517 _g_free0 (search_text_casefold);
518 _g_free0 (search_text);
519 search_text_collection = (_vala_array_free (search_text_collection, search_text_collection_length1, (GDestroyNotify) g_free), NULL);
520 _g_free0 (entry_text);
521 _g_object_unref0 (id_card);
524 _g_free0 (display_name_casefold);
529 char** service_collection;
530 int service_collection_length1;
532 service_collection = id_card_get_services (id_card, &_tmp3_);
533 service_collection_length1 = _tmp3_;
534 for (service_it = 0; service_it < _tmp3_; service_it = service_it + 1) {
536 service = g_strdup (service_collection[service_it]);
538 char* service_casefold;
539 service_casefold = g_utf8_casefold (service, -1);
540 if (string_contains (service_casefold, search_text_casefold)) {
542 _g_free0 (service_casefold);
544 _g_free0 (search_text_casefold);
545 _g_free0 (search_text);
546 search_text_collection = (_vala_array_free (search_text_collection, search_text_collection_length1, (GDestroyNotify) g_free), NULL);
547 _g_free0 (entry_text);
548 _g_object_unref0 (id_card);
551 _g_free0 (service_casefold);
557 _g_free0 (search_text_casefold);
558 _g_free0 (search_text);
561 search_text_collection = (_vala_array_free (search_text_collection, search_text_collection_length1, (GDestroyNotify) g_free), NULL);
564 _g_free0 (entry_text);
565 _g_object_unref0 (id_card);
570 static gboolean _identity_manager_view_visible_func_gtk_tree_model_filter_visible_func (GtkTreeModel* model, GtkTreeIter* iter, gpointer self) {
572 result = identity_manager_view_visible_func (self, model, iter);
577 static void identity_manager_view_setup_list_model (IdentityManagerView* self) {
578 GtkTreeModelFilter* _tmp0_;
579 g_return_if_fail (self != NULL);
580 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);
581 self->priv->filter = (_tmp0_ = (GtkTreeModelFilter*) gtk_tree_model_filter_new ((GtkTreeModel*) self->priv->listmodel, NULL), _g_object_unref0 (self->priv->filter), _tmp0_);
582 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);
586 static void identity_manager_view_search_entry_icon_press_cb (IdentityManagerView* self, GtkEntryIconPosition pos, GdkEvent* event) {
587 g_return_if_fail (self != NULL);
588 g_return_if_fail (event != NULL);
589 if (pos == GTK_ENTRY_ICON_PRIMARY) {
590 g_print ("Search entry icon pressed\n");
592 gtk_entry_set_text (self->priv->search_entry, "");
597 static void identity_manager_view_search_entry_text_changed_cb (IdentityManagerView* self) {
599 g_return_if_fail (self != NULL);
600 gtk_tree_model_filter_refilter (self->priv->filter);
601 identity_manager_view_redraw_id_card_widgets (self);
602 has_text = gtk_entry_get_text_length (self->priv->search_entry) > 0;
603 gtk_entry_set_icon_sensitive (self->priv->search_entry, GTK_ENTRY_ICON_PRIMARY, has_text);
604 gtk_entry_set_icon_sensitive (self->priv->search_entry, GTK_ENTRY_ICON_SECONDARY, has_text);
605 gtk_widget_set_visible ((GtkWidget*) self->priv->vbox_right, FALSE);
609 static gboolean identity_manager_view_search_entry_key_press_event_cb (IdentityManagerView* self, GdkEventKey* e) {
610 gboolean result = FALSE;
611 g_return_val_if_fail (self != NULL, FALSE);
612 if (_vala_strcmp0 (gdk_keyval_name ((*e).keyval), "Escape") == 0) {
613 gtk_entry_set_text (self->priv->search_entry, "");
620 static void identity_manager_view_load_id_cards (IdentityManagerView* self) {
623 GeeLinkedList* card_list;
624 g_return_if_fail (self != NULL);
625 children = gtk_container_get_children ((GtkContainer*) self->priv->custom_vbox);
627 GList* id_card_widget_collection;
628 GList* id_card_widget_it;
629 id_card_widget_collection = children;
630 for (id_card_widget_it = id_card_widget_collection; id_card_widget_it != NULL; id_card_widget_it = id_card_widget_it->next) {
631 GtkWidget* id_card_widget;
632 id_card_widget = (GtkWidget*) id_card_widget_it->data;
634 identity_manager_view_remove_id_card_widget (self, ID_CARD_WIDGET (id_card_widget));
638 self->priv->default_id_card = (_tmp0_ = NULL, _g_object_unref0 (self->priv->default_id_card), _tmp0_);
639 card_list = identity_manager_model_get_card_list (self->identities_manager);
640 if (card_list == NULL) {
641 _g_object_unref0 (card_list);
642 _g_list_free0 (children);
646 GeeIterator* _id_card_it;
647 _id_card_it = gee_abstract_collection_iterator ((GeeAbstractCollection*) card_list);
650 if (!gee_iterator_next (_id_card_it)) {
653 id_card = (IdCard*) gee_iterator_get (_id_card_it);
654 identity_manager_view_add_id_card_data (self, id_card);
655 identity_manager_view_add_id_card_widget (self, id_card);
656 _g_object_unref0 (id_card);
658 _g_object_unref0 (_id_card_it);
660 if (gee_collection_get_size ((GeeCollection*) card_list) > 0) {
662 self->priv->default_id_card = (_tmp1_ = (IdCard*) gee_abstract_list_first ((GeeAbstractList*) card_list), _g_object_unref0 (self->priv->default_id_card), _tmp1_);
664 _g_object_unref0 (card_list);
665 _g_list_free0 (children);
669 static void identity_manager_view_fill_details (IdentityManagerView* self, IdCardWidget* id_card_widget) {
673 g_return_if_fail (self != NULL);
674 g_return_if_fail (id_card_widget != NULL);
675 id_card = _g_object_ref0 (id_card_widget_get_id_card (id_card_widget));
676 gtk_entry_set_text (self->priv->username_entry, id_card_get_username (id_card));
677 _tmp0_ = g_strdup (id_card_get_password (id_card));
678 if (_tmp0_ == NULL) {
680 _tmp0_ = (_tmp1_ = g_strdup (""), _g_free0 (_tmp0_), _tmp1_);
682 gtk_entry_set_text (self->priv->password_entry, _tmp0_);
683 children = gtk_container_get_children ((GtkContainer*) self->priv->services_internal_vbox);
685 GList* hbox_collection;
687 hbox_collection = children;
688 for (hbox_it = hbox_collection; hbox_it != NULL; hbox_it = hbox_it->next) {
690 hbox = (GtkWidget*) hbox_it->data;
692 gtk_object_destroy ((GtkObject*) hbox);
696 identity_manager_view_fill_services_vbox (self, id_card_widget_get_id_card (id_card_widget));
697 _g_list_free0 (children);
699 _g_object_unref0 (id_card);
703 static void identity_manager_view_show_details (IdentityManagerView* self, IdCard* id_card) {
704 g_return_if_fail (self != NULL);
705 g_return_if_fail (id_card != NULL);
706 gtk_widget_set_visible ((GtkWidget*) self->priv->vbox_right, !gtk_widget_get_visible ((GtkWidget*) self->priv->vbox_right));
707 if (gtk_widget_get_visible ((GtkWidget*) self->priv->vbox_right) == FALSE) {
708 gtk_window_resize ((GtkWindow*) self, IDENTITY_MANAGER_VIEW_WINDOW_WIDTH, IDENTITY_MANAGER_VIEW_WINDOW_HEIGHT);
713 static void identity_manager_view_details_identity_cb (IdentityManagerView* self, IdCardWidget* id_card_widget) {
714 g_return_if_fail (self != NULL);
715 g_return_if_fail (id_card_widget != NULL);
716 identity_manager_view_fill_details (self, id_card_widget);
717 identity_manager_view_show_details (self, id_card_widget_get_id_card (id_card_widget));
721 static IdCard* identity_manager_view_get_id_card_data (IdentityManagerView* self, AddIdentityDialog* dialog) {
722 IdCard* result = NULL;
724 char** _tmp0_ = NULL;
728 g_return_val_if_fail (self != NULL, NULL);
729 g_return_val_if_fail (dialog != NULL, NULL);
730 id_card = id_card_new ();
731 id_card_set_display_name (id_card, add_identity_dialog_get_display_name (dialog));
732 id_card_set_issuer (id_card, add_identity_dialog_get_issuer (dialog));
733 if (_vala_strcmp0 (id_card_get_issuer (id_card), "") == 0) {
734 id_card_set_issuer (id_card, "Issuer");
736 id_card_set_username (id_card, add_identity_dialog_get_username (dialog));
737 id_card_set_password (id_card, add_identity_dialog_get_password (dialog));
738 _tmp2_ = (_tmp1_ = (_tmp0_ = g_new0 (char*, 0 + 1), _tmp0_), _tmp1__length1 = 0, _tmp1_);
739 id_card_set_services (id_card, _tmp2_, 0);
740 _tmp1_ = (_vala_array_free (_tmp1_, _tmp1__length1, (GDestroyNotify) g_free), NULL);
741 g_object_set_data_full ((GObject*) id_card, "pixbuf", find_icon ("avatar-default", 48), g_object_unref);
747 static void identity_manager_view_add_id_card_data (IdentityManagerView* self, IdCard* id_card) {
748 GtkTreeIter iter = {0};
751 g_return_if_fail (self != NULL);
752 g_return_if_fail (id_card != NULL);
754 gtk_list_store_append (self->priv->listmodel, &iter);
755 pixbuf = (_tmp0_ = _g_object_ref0 ((GdkPixbuf*) g_object_get_data ((GObject*) id_card, "pixbuf")), _g_object_unref0 (pixbuf), _tmp0_);
756 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);
757 _g_object_unref0 (pixbuf);
761 static void identity_manager_view_remove_id_card_data (IdentityManagerView* self, IdCard* id_card) {
762 GtkTreeIter iter = {0};
764 g_return_if_fail (self != NULL);
765 g_return_if_fail (id_card != NULL);
767 if (gtk_tree_model_get_iter_first ((GtkTreeModel*) self->priv->listmodel, &iter)) {
773 if (!gtk_tree_model_iter_next ((GtkTreeModel*) self->priv->listmodel, &iter)) {
778 gtk_tree_model_get ((GtkTreeModel*) self->priv->listmodel, &iter, IDENTITY_MANAGER_VIEW_COLUMNS_ISSUER_COL, &issuer, -1);
779 if (_vala_strcmp0 (id_card_get_issuer (id_card), issuer) == 0) {
780 gtk_list_store_remove (self->priv->listmodel, &iter);
790 static void _identity_manager_view_details_identity_cb_id_card_widget_details_id (IdCardWidget* _sender, gpointer self) {
791 identity_manager_view_details_identity_cb (self, _sender);
795 static void _identity_manager_view_remove_identity_cb_id_card_widget_remove_id (IdCardWidget* _sender, gpointer self) {
796 identity_manager_view_remove_identity_cb (self, _sender);
800 static void _lambda2_ (IdCardWidget* w, IdentityManagerView* self) {
801 g_return_if_fail (w != NULL);
802 identity_manager_view_send_identity_cb (self, id_card_widget_get_id_card (w));
806 static void __lambda2__id_card_widget_send_id (IdCardWidget* _sender, gpointer self) {
807 _lambda2_ (_sender, self);
811 static void _custom_vbox_receive_expanded_event_id_card_widget_expanded (IdCardWidget* _sender, gpointer self) {
812 custom_vbox_receive_expanded_event (self, _sender);
816 static void _identity_manager_view_fill_details_id_card_widget_expanded (IdCardWidget* _sender, gpointer self) {
817 identity_manager_view_fill_details (self, _sender);
821 static void identity_manager_view_add_id_card_widget (IdentityManagerView* self, IdCard* id_card) {
822 IdCardWidget* id_card_widget;
823 g_return_if_fail (self != NULL);
824 g_return_if_fail (id_card != NULL);
825 id_card_widget = g_object_ref_sink (id_card_widget_new (id_card));
826 custom_vbox_add_id_card_widget (self->priv->custom_vbox, id_card_widget);
827 g_signal_connect_object (id_card_widget, "details-id", (GCallback) _identity_manager_view_details_identity_cb_id_card_widget_details_id, self, 0);
828 g_signal_connect_object (id_card_widget, "remove-id", (GCallback) _identity_manager_view_remove_identity_cb_id_card_widget_remove_id, self, 0);
829 g_signal_connect_object (id_card_widget, "send-id", (GCallback) __lambda2__id_card_widget_send_id, self, 0);
830 g_signal_connect_object (id_card_widget, "expanded", (GCallback) _custom_vbox_receive_expanded_event_id_card_widget_expanded, self->priv->custom_vbox, 0);
831 g_signal_connect_object (id_card_widget, "expanded", (GCallback) _identity_manager_view_fill_details_id_card_widget_expanded, self, 0);
832 _g_object_unref0 (id_card_widget);
836 gboolean identity_manager_view_display_name_is_valid (IdentityManagerView* self, const char* name, char** candidate) {
837 gboolean result = FALSE;
838 g_return_val_if_fail (self != NULL, FALSE);
839 g_return_val_if_fail (name != NULL, FALSE);
840 if (candidate != NULL) {
844 GeeLinkedList* _tmp0_;
846 GeeIterator* _id_card_it;
847 _id_card_it = (_tmp1_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) (_tmp0_ = identity_manager_model_get_card_list (self->identities_manager))), _g_object_unref0 (_tmp0_), _tmp1_);
850 if (!gee_iterator_next (_id_card_it)) {
853 id_card = (IdCard*) gee_iterator_get (_id_card_it);
854 if (_vala_strcmp0 (id_card_get_display_name (id_card), name) == 0) {
855 if ((candidate) != NULL) {
871 tmp = g_strdup_printf ("%s %d", name, i);
872 if (identity_manager_view_display_name_is_valid (self, tmp, NULL)) {
874 *candidate = (_tmp3_ = g_strdup (tmp), _g_free0 (*candidate), _tmp3_);
884 _g_object_unref0 (id_card);
885 _g_object_unref0 (_id_card_it);
888 _g_object_unref0 (id_card);
890 _g_object_unref0 (_id_card_it);
897 void identity_manager_view_insert_id_card (IdentityManagerView* self, IdCard* id_card) {
902 g_return_if_fail (self != NULL);
903 g_return_if_fail (id_card != NULL);
905 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_)) {
906 id_card_set_display_name (id_card, candidate);
908 identity_manager_model_add_card (self->identities_manager, id_card);
909 _g_free0 (candidate);
913 gboolean identity_manager_view_add_identity (IdentityManagerView* self, IdCard* id_card) {
914 gboolean result = FALSE;
915 GtkMessageDialog* dialog;
917 g_return_val_if_fail (self != NULL, FALSE);
918 g_return_val_if_fail (id_card != NULL, FALSE);
919 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)));
920 gtk_widget_show_all ((GtkWidget*) dialog);
921 ret = gtk_dialog_run ((GtkDialog*) dialog);
922 gtk_widget_hide ((GtkWidget*) dialog);
923 if (ret == GTK_RESPONSE_YES) {
924 g_object_set_data_full ((GObject*) id_card, "pixbuf", find_icon ("avatar-default", 48), g_object_unref);
925 identity_manager_view_insert_id_card (self, id_card);
927 _g_object_unref0 (dialog);
931 _g_object_unref0 (dialog);
936 static void identity_manager_view_add_identity_manual_cb (IdentityManagerView* self) {
937 AddIdentityDialog* dialog;
939 g_return_if_fail (self != NULL);
940 dialog = g_object_ref_sink (add_identity_dialog_new ());
941 _result_ = gtk_dialog_run ((GtkDialog*) dialog);
943 case GTK_RESPONSE_OK:
946 identity_manager_view_insert_id_card (self, _tmp0_ = identity_manager_view_get_id_card_data (self, dialog));
947 _g_object_unref0 (_tmp0_);
955 gtk_object_destroy ((GtkObject*) dialog);
956 _g_object_unref0 (dialog);
960 static void identity_manager_view_remove_id_card_widget (IdentityManagerView* self, IdCardWidget* id_card_widget) {
961 g_return_if_fail (self != NULL);
962 g_return_if_fail (id_card_widget != NULL);
963 custom_vbox_remove_id_card_widget (self->priv->custom_vbox, id_card_widget);
967 static void identity_manager_view_remove_identity (IdentityManagerView* self, IdCardWidget* id_card_widget) {
969 g_return_if_fail (self != NULL);
970 g_return_if_fail (id_card_widget != NULL);
971 id_card = _g_object_ref0 (id_card_widget_get_id_card (id_card_widget));
972 identity_manager_view_remove_id_card_widget (self, id_card_widget);
973 identity_manager_model_remove_card (self->identities_manager, id_card);
974 _g_object_unref0 (id_card);
978 static void identity_manager_view_redraw_id_card_widgets (IdentityManagerView* self) {
979 GtkTreeIter iter = {0};
982 g_return_if_fail (self != NULL);
984 children = gtk_container_get_children ((GtkContainer*) self->priv->custom_vbox);
986 GList* id_card_widget_collection;
987 GList* id_card_widget_it;
988 id_card_widget_collection = children;
989 for (id_card_widget_it = id_card_widget_collection; id_card_widget_it != NULL; id_card_widget_it = id_card_widget_it->next) {
990 GtkWidget* id_card_widget;
991 id_card_widget = (GtkWidget*) id_card_widget_it->data;
993 gtk_object_destroy ((GtkObject*) id_card_widget);
997 if (gtk_tree_model_get_iter_first ((GtkTreeModel*) self->priv->filter, &iter)) {
1003 if (!gtk_tree_model_iter_next ((GtkTreeModel*) self->priv->filter, &iter)) {
1008 gtk_tree_model_get ((GtkTreeModel*) self->priv->filter, &iter, IDENTITY_MANAGER_VIEW_COLUMNS_IDCARD_COL, &id_card, -1);
1009 identity_manager_view_add_id_card_widget (self, id_card);
1013 _g_list_free0 (children);
1014 _g_object_unref0 (id_card);
1018 static void identity_manager_view_remove_identity_cb (IdentityManagerView* self, IdCardWidget* id_card_widget) {
1020 GtkMessageDialog* dialog;
1022 g_return_if_fail (self != NULL);
1023 g_return_if_fail (id_card_widget != NULL);
1024 id_card = _g_object_ref0 (id_card_widget_get_id_card (id_card_widget));
1025 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)));
1026 _result_ = gtk_dialog_run ((GtkDialog*) dialog);
1028 case GTK_RESPONSE_YES:
1030 identity_manager_view_remove_identity (self, id_card_widget);
1038 gtk_object_destroy ((GtkObject*) dialog);
1039 _g_object_unref0 (dialog);
1040 _g_object_unref0 (id_card);
1044 static void _g_slist_free_g_free (GSList* self) {
1045 g_slist_foreach (self, (GFunc) g_free, NULL);
1046 g_slist_free (self);
1050 static gboolean _lambda3_ (Block1Data* _data1_) {
1051 IdentityManagerView * self;
1052 gboolean result = FALSE;
1053 self = _data1_->self;
1054 identity_manager_view_send_identity_cb (self, _data1_->identity);
1060 static gboolean __lambda3__gsource_func (gpointer self) {
1062 result = _lambda3_ (self);
1067 static Block1Data* block1_data_ref (Block1Data* _data1_) {
1068 g_atomic_int_inc (&_data1_->_ref_count_);
1073 static void block1_data_unref (Block1Data* _data1_) {
1074 if (g_atomic_int_dec_and_test (&_data1_->_ref_count_)) {
1075 _g_object_unref0 (_data1_->self);
1076 _g_object_unref0 (_data1_->identity);
1077 g_slice_free (Block1Data, _data1_);
1082 void identity_manager_view_select_identity (IdentityManagerView* self, IdentityRequest* request) {
1083 Block1Data* _data1_;
1084 gboolean _tmp0_ = FALSE;
1085 g_return_if_fail (self != NULL);
1086 g_return_if_fail (request != NULL);
1087 _data1_ = g_slice_new0 (Block1Data);
1088 _data1_->_ref_count_ = 1;
1089 _data1_->self = g_object_ref (self);
1090 _data1_->identity = NULL;
1091 g_queue_push_tail (self->request_queue, _g_object_ref0 (request));
1092 if (custom_vbox_get_current_idcard (self->priv->custom_vbox) != NULL) {
1093 _tmp0_ = id_card_widget_get_send_button (custom_vbox_get_current_idcard (self->priv->custom_vbox)) != NULL;
1098 gtk_widget_set_sensitive ((GtkWidget*) id_card_widget_get_send_button (custom_vbox_get_current_idcard (self->priv->custom_vbox)), TRUE);
1100 if (request->select_default) {
1102 _data1_->identity = (_tmp1_ = _g_object_ref0 (self->priv->default_id_card), _g_object_unref0 (_data1_->identity), _tmp1_);
1104 if (_data1_->identity == NULL) {
1105 gboolean _tmp2_ = FALSE;
1107 gboolean _tmp3_ = FALSE;
1110 IdCard* nai_provided;
1111 gboolean _tmp9_ = FALSE;
1112 if (request->nai != NULL) {
1113 _tmp2_ = _vala_strcmp0 (request->nai, "") != 0;
1118 if (request->service != NULL) {
1119 _tmp3_ = _vala_strcmp0 (request->service, "") != 0;
1125 nai_provided = NULL;
1127 GeeLinkedList* _tmp4_;
1128 GeeIterator* _tmp5_;
1129 GeeIterator* _id_it;
1130 _id_it = (_tmp5_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) (_tmp4_ = identity_manager_model_get_card_list (self->identities_manager))), _g_object_unref0 (_tmp4_), _tmp5_);
1133 gboolean _tmp6_ = FALSE;
1134 if (!gee_iterator_next (_id_it)) {
1137 id = (IdCard*) gee_iterator_get (_id_it);
1139 _tmp6_ = _vala_strcmp0 (request->nai, id_card_get_nai (id)) == 0;
1145 nai_provided = (_tmp7_ = _g_object_ref0 (id), _g_object_unref0 (nai_provided), _tmp7_);
1146 identity_manager_view_add_candidate (self, id);
1147 _g_object_unref0 (id);
1153 char** srv_collection;
1154 int srv_collection_length1;
1156 srv_collection = id_card_get_services (id, &_tmp8_);
1157 srv_collection_length1 = _tmp8_;
1158 for (srv_it = 0; srv_it < _tmp8_; srv_it = srv_it + 1) {
1160 srv = g_strdup (srv_collection[srv_it]);
1162 if (_vala_strcmp0 (request->service, srv) == 0) {
1163 identity_manager_view_add_candidate (self, id);
1172 _g_object_unref0 (id);
1174 _g_object_unref0 (_id_it);
1177 _tmp9_ = g_slist_length (self->priv->candidates) > 1;
1183 GSList* id_collection;
1185 id_collection = self->priv->candidates;
1186 for (id_it = id_collection; id_it != NULL; id_it = id_it->next) {
1188 id = _g_object_ref0 ((IdCard*) id_it->data);
1191 GSList* services_list;
1192 gboolean has_service;
1193 gint services_length1;
1194 gint _services_size_;
1200 services_list = NULL;
1201 has_service = FALSE;
1204 char** srv_collection;
1205 int srv_collection_length1;
1207 srv_collection = id_card_get_services (id, &_tmp10_);
1208 srv_collection_length1 = _tmp10_;
1209 for (srv_it = 0; srv_it < _tmp10_; srv_it = srv_it + 1) {
1211 srv = g_strdup (srv_collection[srv_it]);
1213 if (_vala_strcmp0 (srv, request->service) == 0) {
1218 services_list = g_slist_append (services_list, g_strdup (srv));
1224 __g_slist_free_g_free0 (services_list);
1225 _g_object_unref0 (id);
1228 if (g_slist_length (services_list) == 0) {
1229 char** _tmp11_ = NULL;
1231 gint _tmp12__length1;
1233 _tmp13_ = (_tmp12_ = (_tmp11_ = g_new0 (char*, 0 + 1), _tmp11_), _tmp12__length1 = 0, _tmp12_);
1234 id_card_set_services (id, _tmp13_, 0);
1235 _tmp12_ = (_vala_array_free (_tmp12_, _tmp12__length1, (GDestroyNotify) g_free), NULL);
1236 __g_slist_free_g_free0 (services_list);
1237 _g_object_unref0 (id);
1240 services = (_tmp15_ = g_new0 (char*, (_tmp14_ = g_slist_length (services_list)) + 1), services_length1 = _tmp14_, _services_size_ = services_length1, _tmp15_);
1242 GSList* srv_collection;
1244 srv_collection = services_list;
1245 for (srv_it = srv_collection; srv_it != NULL; srv_it = srv_it->next) {
1247 srv = g_strdup ((const char*) srv_it->data);
1250 services[i] = (_tmp16_ = g_strdup (srv), _g_free0 (services[i]), _tmp16_);
1257 id_card_set_services (id, _tmp17_, services_length1);
1258 services = (_vala_array_free (services, services_length1, (GDestroyNotify) g_free), NULL);
1259 __g_slist_free_g_free0 (services_list);
1260 _g_object_unref0 (id);
1265 if (g_slist_length (self->priv->candidates) == 0) {
1267 GeeLinkedList* _tmp18_;
1268 GeeIterator* _tmp19_;
1269 GeeIterator* _id_it;
1270 _id_it = (_tmp19_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) (_tmp18_ = identity_manager_model_get_card_list (self->identities_manager))), _g_object_unref0 (_tmp18_), _tmp19_);
1273 if (!gee_iterator_next (_id_it)) {
1276 id = (IdCard*) gee_iterator_get (_id_it);
1279 Rule* rule_collection;
1280 int rule_collection_length1;
1282 rule_collection = id_card_get_rules (id, &_tmp20_);
1283 rule_collection_length1 = _tmp20_;
1284 for (rule_it = 0; rule_it < _tmp20_; rule_it = rule_it + 1) {
1287 rule = (rule_copy (&rule_collection[rule_it], &_tmp21_), _tmp21_);
1289 if (!identity_manager_view_match_service_pattern (self, request->service, rule.pattern)) {
1290 rule_destroy (&rule);
1293 self->priv->candidates = g_slist_append (self->priv->candidates, _g_object_ref0 (id));
1294 if (_vala_strcmp0 (rule.always_confirm, "true") == 0) {
1297 rule_destroy (&rule);
1301 _g_object_unref0 (id);
1303 _g_object_unref0 (_id_it);
1306 if (g_slist_length (self->priv->candidates) > 1) {
1307 gboolean _tmp22_ = FALSE;
1309 _tmp22_ = nai_provided != NULL;
1315 _data1_->identity = (_tmp23_ = _g_object_ref0 (nai_provided), _g_object_unref0 (_data1_->identity), _tmp23_);
1322 _data1_->identity = (_tmp24_ = _g_object_ref0 ((IdCard*) g_slist_nth_data (self->priv->candidates, (guint) 0)), _g_object_unref0 (_data1_->identity), _tmp24_);
1325 gtk_tree_model_filter_refilter (self->priv->filter);
1326 identity_manager_view_redraw_id_card_widgets (self);
1327 gtk_widget_show ((GtkWidget*) self);
1328 _g_object_unref0 (nai_provided);
1329 block1_data_unref (_data1_);
1332 _g_object_unref0 (nai_provided);
1334 g_idle_add_full (G_PRIORITY_DEFAULT_IDLE, __lambda3__gsource_func, block1_data_ref (_data1_), block1_data_unref);
1335 block1_data_unref (_data1_);
1340 static gboolean identity_manager_view_match_service_pattern (IdentityManagerView* self, const char* service, const char* pattern) {
1341 gboolean result = FALSE;
1342 GPatternSpec* pspec;
1343 g_return_val_if_fail (self != NULL, FALSE);
1344 g_return_val_if_fail (service != NULL, FALSE);
1345 g_return_val_if_fail (pattern != NULL, FALSE);
1346 pspec = g_pattern_spec_new (pattern);
1347 result = g_pattern_match_string (pspec, service);
1348 _g_pattern_spec_free0 (pspec);
1353 void identity_manager_view_send_identity_cb (IdentityManagerView* self, IdCard* identity) {
1354 IdentityRequest* request;
1355 gboolean reset_password;
1356 gboolean _tmp0_ = FALSE;
1358 g_return_if_fail (self != NULL);
1359 g_return_if_fail (identity != NULL);
1360 g_return_if_fail (self->request_queue->length > 0);
1361 request = (IdentityRequest*) g_queue_pop_head (self->request_queue);
1362 reset_password = FALSE;
1363 if (request->service != NULL) {
1364 _tmp0_ = _vala_strcmp0 (request->service, "") != 0;
1369 gint services_length1;
1370 gint _services_size_;
1378 services = (_tmp2_ = g_new0 (char*, (_tmp1_ + 1) + 1), services_length1 = _tmp1_ + 1, _services_size_ = services_length1, _tmp2_);
1393 if (!(i < _tmp4_)) {
1396 services[i] = (_tmp6_ = g_strdup (id_card_get_services (identity, &_tmp5_)[i]), _g_free0 (services[i]), _tmp6_);
1400 services[_tmp7_] = (_tmp9_ = g_strdup (request->service), _g_free0 (services[_tmp7_]), _tmp9_);
1402 id_card_set_services (identity, _tmp10_, services_length1);
1403 identity_manager_model_update_card (self->identities_manager, identity);
1404 services = (_vala_array_free (services, services_length1, (GDestroyNotify) g_free), NULL);
1406 if (id_card_get_password (identity) == NULL) {
1407 AddPasswordDialog* dialog;
1409 dialog = g_object_ref_sink (add_password_dialog_new ());
1410 _result_ = gtk_dialog_run ((GtkDialog*) dialog);
1412 case GTK_RESPONSE_OK:
1414 id_card_set_password (identity, add_password_dialog_get_password (dialog));
1415 reset_password = !add_password_dialog_get_remember (dialog);
1424 gtk_object_destroy ((GtkObject*) dialog);
1425 _g_object_unref0 (dialog);
1427 if (g_queue_is_empty (self->request_queue)) {
1430 if (identity != NULL) {
1432 self->priv->default_id_card = (_tmp11_ = _g_object_ref0 (identity), _g_object_unref0 (self->priv->default_id_card), _tmp11_);
1434 identity_request_return_identity (request, identity);
1435 if (reset_password) {
1436 id_card_set_password (identity, NULL);
1438 self->priv->candidates = (_tmp12_ = NULL, __g_slist_free_g_object_unref0 (self->priv->candidates), _tmp12_);
1439 _g_object_unref0 (request);
1443 static void identity_manager_view_label_make_bold (IdentityManagerView* self, GtkLabel* label) {
1444 PangoFontDescription* font_desc;
1445 g_return_if_fail (self != NULL);
1446 g_return_if_fail (label != NULL);
1447 font_desc = pango_font_description_new ();
1448 pango_font_description_set_weight (font_desc, PANGO_WEIGHT_BOLD);
1449 gtk_widget_modify_font ((GtkWidget*) label, font_desc);
1450 _pango_font_description_free0 (font_desc);
1454 static void _lambda1_ (GtkButton* remove_button, IdentityManagerView* self) {
1455 GtkMessageDialog* dialog;
1457 g_return_if_fail (remove_button != NULL);
1458 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 from being used with %s?"), id_card_get_display_name (id_card_widget_get_id_card (custom_vbox_get_current_idcard (self->priv->custom_vbox))), _ ("this service")));
1459 ret = gtk_dialog_run ((GtkDialog*) dialog);
1460 gtk_widget_hide ((GtkWidget*) dialog);
1461 if (ret == GTK_RESPONSE_YES) {
1467 gint _tmp2__length1;
1470 idcard = _g_object_ref0 (id_card_widget_get_id_card (custom_vbox_get_current_idcard (self->priv->custom_vbox)));
1471 candidate = g_strdup ((const char*) g_hash_table_lookup (self->priv->service_button_map, remove_button));
1475 char** srv_collection;
1476 int srv_collection_length1;
1478 srv_collection = id_card_get_services (idcard, &_tmp0_);
1479 srv_collection_length1 = _tmp0_;
1480 for (srv_it = 0; srv_it < _tmp0_; srv_it = srv_it + 1) {
1482 srv = g_strdup (srv_collection[srv_it]);
1484 if (_vala_strcmp0 (srv, candidate) == 0) {
1488 services = g_slist_append (services, g_strdup (srv));
1493 _tmp3_ = (_tmp2_ = g_new0 (char*, (_tmp1_ = g_slist_length (services)) + 1), _tmp2__length1 = _tmp1_, _tmp2_);
1494 id_card_set_services (idcard, _tmp3_, _tmp1_);
1495 _tmp2_ = (_vala_array_free (_tmp2_, _tmp2__length1, (GDestroyNotify) g_free), NULL);
1512 if (!(j < _tmp5_)) {
1515 _tmp8_ = &id_card_get_services (idcard, &_tmp7_)[j];
1516 (*_tmp8_) = (_tmp9_ = g_strdup ((const char*) g_slist_nth_data (services, (guint) j)), _g_free0 ((*_tmp8_)), _tmp9_);
1520 children = gtk_container_get_children ((GtkContainer*) self->priv->services_internal_vbox);
1522 GList* hbox_collection;
1524 hbox_collection = children;
1525 for (hbox_it = hbox_collection; hbox_it != NULL; hbox_it = hbox_it->next) {
1527 hbox = (GtkWidget*) hbox_it->data;
1529 gtk_object_destroy ((GtkObject*) hbox);
1533 identity_manager_view_fill_services_vbox (self, idcard);
1534 id_card_widget_update_id_card_label (custom_vbox_get_current_idcard (self->priv->custom_vbox));
1535 _g_list_free0 (children);
1536 __g_slist_free_g_free0 (services);
1537 _g_free0 (candidate);
1538 _g_object_unref0 (idcard);
1540 _g_object_unref0 (dialog);
1544 static void __lambda1__gtk_button_clicked (GtkButton* _sender, gpointer self) {
1545 _lambda1_ (_sender, self);
1549 static void identity_manager_view_fill_services_vbox (IdentityManagerView* self, IdCard* id_card) {
1553 GtkTable* services_table;
1554 g_return_if_fail (self != NULL);
1555 g_return_if_fail (id_card != NULL);
1558 services_table = g_object_ref_sink ((GtkTable*) gtk_table_new ((guint) n_columns, (guint) 2, FALSE));
1559 gtk_table_set_col_spacings (services_table, (guint) 10);
1560 gtk_table_set_row_spacings (services_table, (guint) 10);
1561 gtk_container_add ((GtkContainer*) self->priv->services_internal_vbox, (GtkWidget*) services_table);
1562 g_hash_table_remove_all (self->priv->service_button_map);
1565 char** service_collection;
1566 int service_collection_length1;
1568 service_collection = id_card_get_services (id_card, &_tmp1_);
1569 service_collection_length1 = _tmp1_;
1570 for (service_it = 0; service_it < _tmp1_; service_it = service_it + 1) {
1572 service = g_strdup (service_collection[service_it]);
1575 GtkButton* remove_button;
1576 label = g_object_ref_sink ((GtkLabel*) gtk_label_new (service));
1577 gtk_misc_set_alignment ((GtkMisc*) label, (float) 0, (float) 0.5);
1578 remove_button = g_object_ref_sink ((GtkButton*) gtk_button_new_from_stock (GTK_STOCK_REMOVE));
1579 g_hash_table_insert (self->priv->service_button_map, _g_object_ref0 (remove_button), g_strdup (service));
1580 g_signal_connect_object (remove_button, "clicked", (GCallback) __lambda1__gtk_button_clicked, self, 0);
1581 gtk_table_attach_defaults (services_table, (GtkWidget*) label, (guint) 0, (guint) 1, (guint) i, (guint) (i + 1));
1582 gtk_table_attach_defaults (services_table, (GtkWidget*) remove_button, (guint) 1, (guint) 2, (guint) i, (guint) (i + 1));
1584 _g_object_unref0 (remove_button);
1585 _g_object_unref0 (label);
1590 gtk_widget_show_all ((GtkWidget*) self->priv->services_internal_vbox);
1591 _g_object_unref0 (services_table);
1595 static void identity_manager_view_on_about_action (IdentityManagerView* self) {
1596 gint authors_length1;
1597 gint _authors_size_;
1599 char** _tmp0_ = NULL;
1603 g_return_if_fail (self != NULL);
1604 authors = (_tmp1_ = (_tmp0_ = g_new0 (char*, 4 + 1), _tmp0_[0] = g_strdup ("Javier Jardón <jjardon@codethink.co.uk>"), _tmp0_[1] = g_strdup ("Sam Thursfield <samthursfield@codethink.co.uk>"), _tmp0_[2] = g_strdup ("Alberto Ruiz <alberto.ruiz@codethink.co.uk>"), _tmp0_[3] = NULL, _tmp0_), authors_length1 = 4, _authors_size_ = authors_length1, _tmp1_);
1605 copyright = g_strdup ("Copyright 2011 JANET");
1606 license = g_strdup ("\n" \
1607 "Copyright (c) 2011, JANET(UK)\n" \
1608 "All rights reserved.\n" \
1610 "Redistribution and use in source and binary forms, with or without\n" \
1611 "modification, are permitted provided that the following conditions\n" \
1614 "1. Redistributions of source code must retain the above copyright\n" \
1615 " notice, this list of conditions and the following disclaimer.\n" \
1617 "2. Redistributions in binary form must reproduce the above copyright\n" \
1618 " notice, this list of conditions and the following disclaimer in the" \
1620 " documentation and/or other materials provided with the distribution" \
1623 "3. Neither the name of JANET(UK) nor the names of its contributors\n" \
1624 " may be used to endorse or promote products derived from this softwa" \
1626 " without specific prior written permission.\n" \
1628 "THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \\" \
1630 "AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, " \
1632 "IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PUR" \
1634 "ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS" \
1636 "FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUEN" \
1638 "DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOOD" \
1640 "OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n" \
1641 "HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, ST" \
1643 "LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY " \
1645 "OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF" \
1648 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);
1650 _g_free0 (copyright);
1651 authors = (_vala_array_free (authors, authors_length1, (GDestroyNotify) g_free), NULL);
1655 static void _vala_array_add1 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value) {
1656 if ((*length) == (*size)) {
1657 *size = (*size) ? (2 * (*size)) : 4;
1658 *array = g_renew (GtkActionEntry, *array, *size);
1660 (*array)[(*length)++] = *value;
1664 static void _identity_manager_view_add_identity_manual_cb_gtk_action_callback (GtkAction* action, gpointer self) {
1665 identity_manager_view_add_identity_manual_cb (self);
1669 static void _vala_array_add2 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value) {
1670 if ((*length) == (*size)) {
1671 *size = (*size) ? (2 * (*size)) : 4;
1672 *array = g_renew (GtkActionEntry, *array, *size);
1674 (*array)[(*length)++] = *value;
1678 static void _gtk_main_quit_gtk_action_callback (GtkAction* action, gpointer self) {
1683 static void _vala_array_add3 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value) {
1684 if ((*length) == (*size)) {
1685 *size = (*size) ? (2 * (*size)) : 4;
1686 *array = g_renew (GtkActionEntry, *array, *size);
1688 (*array)[(*length)++] = *value;
1692 static void _vala_array_add4 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value) {
1693 if ((*length) == (*size)) {
1694 *size = (*size) ? (2 * (*size)) : 4;
1695 *array = g_renew (GtkActionEntry, *array, *size);
1697 (*array)[(*length)++] = *value;
1701 static void _identity_manager_view_on_about_action_gtk_action_callback (GtkAction* action, gpointer self) {
1702 identity_manager_view_on_about_action (self);
1706 static void _vala_array_add5 (GtkActionEntry** array, int* length, int* size, const GtkActionEntry* value) {
1707 if ((*length) == (*size)) {
1708 *size = (*size) ? (2 * (*size)) : 4;
1709 *array = g_renew (GtkActionEntry, *array, *size);
1711 (*array)[(*length)++] = *value;
1715 static GtkActionEntry* identity_manager_view_create_actions (IdentityManagerView* self, int* result_length1) {
1716 GtkActionEntry* result = NULL;
1717 gint actions_length1;
1718 gint _actions_size_;
1719 GtkActionEntry* _tmp0_;
1720 GtkActionEntry* actions;
1721 GtkActionEntry _tmp1_ = {0};
1722 GtkActionEntry filemenu;
1723 GtkActionEntry _tmp2_ = {0};
1725 GtkActionEntry _tmp3_ = {0};
1726 GtkActionEntry quit;
1727 GtkActionEntry _tmp4_ = {0};
1728 GtkActionEntry helpmenu;
1729 GtkActionEntry _tmp5_ = {0};
1730 GtkActionEntry about;
1731 GtkActionEntry* _tmp6_;
1732 g_return_val_if_fail (self != NULL, NULL);
1733 actions = (_tmp0_ = g_new0 (GtkActionEntry, 0), actions_length1 = 0, _actions_size_ = actions_length1, _tmp0_);
1734 filemenu = (_tmp1_.name = "FileMenuAction", _tmp1_.stock_id = NULL, _tmp1_.label = N_ ("_File"), _tmp1_.accelerator = NULL, _tmp1_.tooltip = NULL, _tmp1_.callback = (GCallback) NULL, _tmp1_);
1735 _vala_array_add1 (&actions, &actions_length1, &_actions_size_, &filemenu);
1736 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_);
1737 _vala_array_add2 (&actions, &actions_length1, &_actions_size_, &add);
1738 quit = (_tmp3_.name = "QuitAction", _tmp3_.stock_id = GTK_STOCK_QUIT, _tmp3_.label = N_ ("Quit"), _tmp3_.accelerator = "<control>Q", _tmp3_.tooltip = N_ ("Quit the application"), _tmp3_.callback = (GCallback) _gtk_main_quit_gtk_action_callback, _tmp3_);
1739 _vala_array_add3 (&actions, &actions_length1, &_actions_size_, &quit);
1740 helpmenu = (_tmp4_.name = "HelpMenuAction", _tmp4_.stock_id = NULL, _tmp4_.label = N_ ("_Help"), _tmp4_.accelerator = NULL, _tmp4_.tooltip = NULL, _tmp4_.callback = (GCallback) NULL, _tmp4_);
1741 _vala_array_add4 (&actions, &actions_length1, &_actions_size_, &helpmenu);
1742 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_);
1743 _vala_array_add5 (&actions, &actions_length1, &_actions_size_, &about);
1744 result = (_tmp6_ = actions, *result_length1 = actions_length1, _tmp6_);
1746 actions = (g_free (actions), NULL);
1750 static void identity_manager_view_create_ui_manager (IdentityManagerView* self) {
1751 GtkActionGroup* action_group;
1753 GtkActionEntry* _tmp1_;
1754 gint _tmp1__length1;
1755 GtkActionEntry* _tmp2_;
1756 GError * _inner_error_ = NULL;
1757 g_return_if_fail (self != NULL);
1758 action_group = gtk_action_group_new ("GeneralActionGroup");
1759 _tmp2_ = (_tmp1_ = identity_manager_view_create_actions (self, &_tmp0_), _tmp1__length1 = _tmp0_, _tmp1_);
1760 gtk_action_group_add_actions (action_group, _tmp2_, _tmp0_, self);
1761 _tmp1_ = (g_free (_tmp1_), NULL);
1762 gtk_ui_manager_insert_action_group (self->priv->ui_manager, action_group, 0);
1764 gtk_ui_manager_add_ui_from_string (self->priv->ui_manager, IDENTITY_MANAGER_VIEW_layout, (gssize) (-1), &_inner_error_);
1765 if (_inner_error_ != NULL) {
1766 goto __catch1_g_error;
1774 _inner_error_ = NULL;
1776 fprintf (stderr, "%s\n", e->message);
1781 if (_inner_error_ != NULL) {
1782 _g_object_unref0 (action_group);
1783 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);
1784 g_clear_error (&_inner_error_);
1787 gtk_ui_manager_ensure_update (self->priv->ui_manager);
1788 _g_object_unref0 (action_group);
1792 static void _identity_manager_view_search_entry_icon_press_cb_gtk_entry_icon_press (GtkEntry* _sender, GtkEntryIconPosition p0, GdkEvent* p1, gpointer self) {
1793 identity_manager_view_search_entry_icon_press_cb (self, p0, p1);
1797 static void _identity_manager_view_search_entry_text_changed_cb_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self) {
1798 identity_manager_view_search_entry_text_changed_cb (self);
1802 static gboolean _identity_manager_view_search_entry_key_press_event_cb_gtk_widget_key_press_event (GtkWidget* _sender, GdkEventKey* event, gpointer self) {
1804 result = identity_manager_view_search_entry_key_press_event_cb (self, event);
1809 static void identity_manager_view_build_ui (IdentityManagerView* self) {
1814 GtkViewport* viewport;
1815 GtkScrolledWindow* scroll;
1817 GtkLabel* login_vbox_title;
1818 GtkLabel* username_label;
1820 GtkLabel* password_label;
1822 GtkCheckButton* remember_checkbutton;
1823 GtkTable* login_table;
1824 GtkAlignment* login_vbox_alignment;
1825 GtkVBox* login_vbox;
1826 GtkLabel* services_vbox_title;
1827 GtkAlignment* services_vbox_alignment;
1829 GtkVBox* services_vbox;
1834 g_return_if_fail (self != NULL);
1835 identity_manager_view_create_ui_manager (self);
1836 self->priv->search_entry = (_tmp0_ = g_object_ref_sink ((GtkEntry*) gtk_entry_new ()), _g_object_unref0 (self->priv->search_entry), _tmp0_);
1837 identity_manager_view_set_atk_name_description (self, (GtkWidget*) self->priv->search_entry, _ ("Search entry"), _ ("Search for a specific ID Card"));
1838 gtk_entry_set_icon_from_pixbuf (self->priv->search_entry, GTK_ENTRY_ICON_PRIMARY, _tmp1_ = find_icon_sized ("edit-find", GTK_ICON_SIZE_MENU));
1839 _g_object_unref0 (_tmp1_);
1840 gtk_entry_set_icon_tooltip_text (self->priv->search_entry, GTK_ENTRY_ICON_PRIMARY, _ ("Search identity or service"));
1841 gtk_entry_set_icon_sensitive (self->priv->search_entry, GTK_ENTRY_ICON_PRIMARY, FALSE);
1842 gtk_entry_set_icon_from_pixbuf (self->priv->search_entry, GTK_ENTRY_ICON_SECONDARY, _tmp2_ = find_icon_sized ("process-stop", GTK_ICON_SIZE_MENU));
1843 _g_object_unref0 (_tmp2_);
1844 gtk_entry_set_icon_tooltip_text (self->priv->search_entry, GTK_ENTRY_ICON_SECONDARY, _ ("Clear the current search"));
1845 gtk_entry_set_icon_sensitive (self->priv->search_entry, GTK_ENTRY_ICON_SECONDARY, FALSE);
1846 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);
1847 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);
1848 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);
1849 self->priv->custom_vbox = (_tmp3_ = g_object_ref_sink (custom_vbox_new (self, FALSE, 6)), _g_object_unref0 (self->priv->custom_vbox), _tmp3_);
1850 viewport = g_object_ref_sink ((GtkViewport*) gtk_viewport_new (NULL, NULL));
1851 gtk_container_set_border_width ((GtkContainer*) viewport, (guint) 6);
1852 gtk_viewport_set_shadow_type (viewport, GTK_SHADOW_NONE);
1853 gtk_container_add ((GtkContainer*) viewport, (GtkWidget*) self->priv->custom_vbox);
1854 scroll = g_object_ref_sink ((GtkScrolledWindow*) gtk_scrolled_window_new (NULL, NULL));
1855 gtk_scrolled_window_set_policy (scroll, GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
1856 gtk_scrolled_window_set_shadow_type (scroll, GTK_SHADOW_IN);
1857 gtk_scrolled_window_add_with_viewport (scroll, (GtkWidget*) viewport);
1858 vbox_left = g_object_ref_sink ((GtkVBox*) gtk_vbox_new (FALSE, 0));
1859 gtk_box_pack_start ((GtkBox*) vbox_left, (GtkWidget*) self->priv->search_entry, FALSE, FALSE, (guint) 6);
1860 gtk_box_pack_start ((GtkBox*) vbox_left, (GtkWidget*) scroll, TRUE, TRUE, (guint) 0);
1861 gtk_widget_set_size_request ((GtkWidget*) vbox_left, IDENTITY_MANAGER_VIEW_WINDOW_WIDTH, 0);
1862 login_vbox_title = g_object_ref_sink ((GtkLabel*) gtk_label_new (_ ("Login: ")));
1863 identity_manager_view_label_make_bold (self, login_vbox_title);
1864 gtk_misc_set_alignment ((GtkMisc*) login_vbox_title, (float) 0, (float) 0.5);
1865 username_label = g_object_ref_sink ((GtkLabel*) gtk_label_new (_ ("Username:")));
1866 gtk_misc_set_alignment ((GtkMisc*) username_label, (float) 1, (float) 0.5);
1867 self->priv->username_entry = (_tmp4_ = g_object_ref_sink ((GtkEntry*) gtk_entry_new ()), _g_object_unref0 (self->priv->username_entry), _tmp4_);
1868 password_label = g_object_ref_sink ((GtkLabel*) gtk_label_new (_ ("Password:")));
1869 gtk_misc_set_alignment ((GtkMisc*) password_label, (float) 1, (float) 0.5);
1870 self->priv->password_entry = (_tmp5_ = g_object_ref_sink ((GtkEntry*) gtk_entry_new ()), _g_object_unref0 (self->priv->password_entry), _tmp5_);
1871 gtk_entry_set_invisible_char (self->priv->password_entry, (gunichar) '*');
1872 gtk_entry_set_visibility (self->priv->password_entry, FALSE);
1873 remember_checkbutton = g_object_ref_sink ((GtkCheckButton*) gtk_check_button_new_with_label (_ ("Remember password")));
1874 login_table = g_object_ref_sink ((GtkTable*) gtk_table_new ((guint) 3, (guint) 3, FALSE));
1875 gtk_table_set_col_spacings (login_table, (guint) 10);
1876 gtk_table_set_row_spacings (login_table, (guint) 10);
1877 gtk_table_attach_defaults (login_table, (GtkWidget*) username_label, (guint) 0, (guint) 1, (guint) 0, (guint) 1);
1878 gtk_table_attach_defaults (login_table, (GtkWidget*) self->priv->username_entry, (guint) 1, (guint) 2, (guint) 0, (guint) 1);
1879 gtk_table_attach_defaults (login_table, (GtkWidget*) password_label, (guint) 0, (guint) 1, (guint) 1, (guint) 2);
1880 gtk_table_attach_defaults (login_table, (GtkWidget*) self->priv->password_entry, (guint) 1, (guint) 2, (guint) 1, (guint) 2);
1881 gtk_table_attach_defaults (login_table, (GtkWidget*) remember_checkbutton, (guint) 1, (guint) 2, (guint) 2, (guint) 3);
1882 login_vbox_alignment = g_object_ref_sink ((GtkAlignment*) gtk_alignment_new ((float) 0, (float) 0, (float) 0, (float) 0));
1883 gtk_alignment_set_padding (login_vbox_alignment, (guint) 0, (guint) 0, (guint) 12, (guint) 0);
1884 gtk_container_add ((GtkContainer*) login_vbox_alignment, (GtkWidget*) login_table);
1885 login_vbox = g_object_ref_sink ((GtkVBox*) gtk_vbox_new (FALSE, 6));
1886 gtk_box_pack_start ((GtkBox*) login_vbox, (GtkWidget*) login_vbox_title, FALSE, TRUE, (guint) 0);
1887 gtk_box_pack_start ((GtkBox*) login_vbox, (GtkWidget*) login_vbox_alignment, FALSE, TRUE, (guint) 0);
1888 services_vbox_title = g_object_ref_sink ((GtkLabel*) gtk_label_new (_ ("Services:")));
1889 identity_manager_view_label_make_bold (self, services_vbox_title);
1890 gtk_misc_set_alignment ((GtkMisc*) services_vbox_title, (float) 0, (float) 0.5);
1891 services_vbox_alignment = g_object_ref_sink ((GtkAlignment*) gtk_alignment_new ((float) 0, (float) 0, (float) 0, (float) 0));
1892 gtk_alignment_set_padding (services_vbox_alignment, (guint) 0, (guint) 0, (guint) 12, (guint) 0);
1893 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_);
1894 gtk_container_add ((GtkContainer*) services_vbox_alignment, (GtkWidget*) self->priv->services_internal_vbox);
1895 services_vbox = g_object_ref_sink ((GtkVBox*) gtk_vbox_new (FALSE, 6));
1896 gtk_box_pack_start ((GtkBox*) services_vbox, (GtkWidget*) services_vbox_title, FALSE, TRUE, (guint) 0);
1897 gtk_box_pack_start ((GtkBox*) services_vbox, (GtkWidget*) services_vbox_alignment, FALSE, TRUE, (guint) 0);
1898 self->priv->vbox_right = (_tmp7_ = g_object_ref_sink ((GtkVBox*) gtk_vbox_new (FALSE, 18)), _g_object_unref0 (self->priv->vbox_right), _tmp7_);
1899 gtk_box_pack_start ((GtkBox*) self->priv->vbox_right, (GtkWidget*) login_vbox, FALSE, TRUE, (guint) 0);
1900 gtk_box_pack_start ((GtkBox*) self->priv->vbox_right, (GtkWidget*) services_vbox, FALSE, TRUE, (guint) 0);
1901 hbox = g_object_ref_sink ((GtkHBox*) gtk_hbox_new (FALSE, 12));
1902 gtk_box_pack_start ((GtkBox*) hbox, (GtkWidget*) vbox_left, TRUE, TRUE, (guint) 0);
1903 gtk_box_pack_start ((GtkBox*) hbox, (GtkWidget*) self->priv->vbox_right, FALSE, FALSE, (guint) 0);
1904 main_vbox = g_object_ref_sink ((GtkVBox*) gtk_vbox_new (FALSE, 0));
1905 gtk_container_set_border_width ((GtkContainer*) main_vbox, (guint) 12);
1906 menubar = _g_object_ref0 (gtk_ui_manager_get_widget (self->priv->ui_manager, "/MenuBar"));
1907 gtk_box_pack_start ((GtkBox*) main_vbox, menubar, FALSE, FALSE, (guint) 0);
1908 gtk_box_pack_start ((GtkBox*) main_vbox, (GtkWidget*) hbox, TRUE, TRUE, (guint) 0);
1909 gtk_container_add ((GtkContainer*) self, (GtkWidget*) main_vbox);
1910 gtk_widget_show_all ((GtkWidget*) main_vbox);
1911 gtk_widget_hide ((GtkWidget*) self->priv->vbox_right);
1912 _g_object_unref0 (menubar);
1913 _g_object_unref0 (main_vbox);
1914 _g_object_unref0 (hbox);
1915 _g_object_unref0 (services_vbox);
1916 _g_object_unref0 (services_vbox_alignment);
1917 _g_object_unref0 (services_vbox_title);
1918 _g_object_unref0 (login_vbox);
1919 _g_object_unref0 (login_vbox_alignment);
1920 _g_object_unref0 (login_table);
1921 _g_object_unref0 (remember_checkbutton);
1922 _g_object_unref0 (password_label);
1923 _g_object_unref0 (username_label);
1924 _g_object_unref0 (login_vbox_title);
1925 _g_object_unref0 (vbox_left);
1926 _g_object_unref0 (scroll);
1927 _g_object_unref0 (viewport);
1931 static void identity_manager_view_set_atk_name_description (IdentityManagerView* self, GtkWidget* widget, const char* name, const char* description) {
1932 AtkObject* atk_widget;
1933 g_return_if_fail (self != NULL);
1934 g_return_if_fail (widget != NULL);
1935 g_return_if_fail (name != NULL);
1936 g_return_if_fail (description != NULL);
1937 atk_widget = _g_object_ref0 (gtk_widget_get_accessible (widget));
1938 atk_object_set_name (atk_widget, name);
1939 atk_object_set_description (atk_widget, description);
1940 _g_object_unref0 (atk_widget);
1944 static void _gtk_main_quit_gtk_object_destroy (GtkObject* _sender, gpointer self) {
1949 static void _identity_manager_view_on_card_list_changed_identity_manager_model_card_list_changed (IdentityManagerModel* _sender, gpointer self) {
1950 identity_manager_view_on_card_list_changed (self);
1954 static void identity_manager_view_connect_signals (IdentityManagerView* self) {
1955 g_return_if_fail (self != NULL);
1956 g_signal_connect ((GtkObject*) self, "destroy", (GCallback) _gtk_main_quit_gtk_object_destroy, NULL);
1957 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);
1961 static void identity_manager_view_class_init (IdentityManagerViewClass * klass) {
1962 identity_manager_view_parent_class = g_type_class_peek_parent (klass);
1963 g_type_class_add_private (klass, sizeof (IdentityManagerViewPrivate));
1964 G_OBJECT_CLASS (klass)->finalize = identity_manager_view_finalize;
1968 static void identity_manager_view_instance_init (IdentityManagerView * self) {
1969 self->priv = IDENTITY_MANAGER_VIEW_GET_PRIVATE (self);
1970 self->priv->ui_manager = gtk_ui_manager_new ();
1974 static void identity_manager_view_finalize (GObject* obj) {
1975 IdentityManagerView * self;
1976 self = IDENTITY_MANAGER_VIEW (obj);
1977 _identity_manager_app_unref0 (self->parent_app);
1978 _g_object_unref0 (self->priv->ui_manager);
1979 _g_object_unref0 (self->priv->search_entry);
1980 _g_object_unref0 (self->priv->vbox_right);
1981 _g_object_unref0 (self->priv->custom_vbox);
1982 _g_object_unref0 (self->priv->services_internal_vbox);
1983 _g_object_unref0 (self->priv->username_entry);
1984 _g_object_unref0 (self->priv->password_entry);
1985 _g_object_unref0 (self->priv->filter);
1986 _g_object_unref0 (self->identities_manager);
1987 __g_slist_free_g_object_unref0 (self->priv->candidates);
1988 _g_object_unref0 (self->priv->default_id_card);
1989 _g_queue_free0 (self->request_queue);
1990 _g_hash_table_unref0 (self->priv->service_button_map);
1991 G_OBJECT_CLASS (identity_manager_view_parent_class)->finalize (obj);
1995 GType identity_manager_view_get_type (void) {
1996 static volatile gsize identity_manager_view_type_id__volatile = 0;
1997 if (g_once_init_enter (&identity_manager_view_type_id__volatile)) {
1998 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 };
1999 GType identity_manager_view_type_id;
2000 identity_manager_view_type_id = g_type_register_static (GTK_TYPE_WINDOW, "IdentityManagerView", &g_define_type_info, 0);
2001 g_once_init_leave (&identity_manager_view_type_id__volatile, identity_manager_view_type_id);
2003 return identity_manager_view_type_id__volatile;
2007 static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) {
2008 if ((array != NULL) && (destroy_func != NULL)) {
2010 for (i = 0; i < array_length; i = i + 1) {
2011 if (((gpointer*) array)[i] != NULL) {
2012 destroy_func (((gpointer*) array)[i]);
2019 static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) {
2020 _vala_array_destroy (array, array_length, destroy_func);
2025 static gint _vala_array_length (gpointer array) {
2029 while (((gpointer*) array)[length]) {
2037 static int _vala_strcmp0 (const char * str1, const char * str2) {
2039 return -(str1 != str2);
2042 return str1 != str2;
2044 return strcmp (str1, str2);