/* contacts-app.c generated by valac 0.38.8, the Vala compiler
 * generated from contacts-app.vala, do not modify */

/*
 * Copyright (C) 2011 Alexander Larsson <alexl@redhat.com>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#include <glib.h>
#include <glib-object.h>
#include <gtk/gtk.h>
#include <gio/gio.h>
#include <stdlib.h>
#include <string.h>
#include <glib/gi18n-lib.h>
#include <folks/folks.h>
#include <folks/folks-eds.h>
#include <contacts-esd-setup.h>
#include <libedataserver/libedataserver.h>
#include <config.h>
#include <gdk/gdk.h>


#define CONTACTS_TYPE_APP (contacts_app_get_type ())
#define CONTACTS_APP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_APP, ContactsApp))
#define CONTACTS_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_APP, ContactsAppClass))
#define CONTACTS_IS_APP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_APP))
#define CONTACTS_IS_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_APP))
#define CONTACTS_APP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_APP, ContactsAppClass))

typedef struct _ContactsApp ContactsApp;
typedef struct _ContactsAppClass ContactsAppClass;
typedef struct _ContactsAppPrivate ContactsAppPrivate;

#define CONTACTS_TYPE_SETTINGS (contacts_settings_get_type ())
#define CONTACTS_SETTINGS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_SETTINGS, ContactsSettings))
#define CONTACTS_SETTINGS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_SETTINGS, ContactsSettingsClass))
#define CONTACTS_IS_SETTINGS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_SETTINGS))
#define CONTACTS_IS_SETTINGS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_SETTINGS))
#define CONTACTS_SETTINGS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_SETTINGS, ContactsSettingsClass))

typedef struct _ContactsSettings ContactsSettings;
typedef struct _ContactsSettingsClass ContactsSettingsClass;

#define CONTACTS_TYPE_STORE (contacts_store_get_type ())
#define CONTACTS_STORE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_STORE, ContactsStore))
#define CONTACTS_STORE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_STORE, ContactsStoreClass))
#define CONTACTS_IS_STORE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_STORE))
#define CONTACTS_IS_STORE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_STORE))
#define CONTACTS_STORE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_STORE, ContactsStoreClass))

typedef struct _ContactsStore ContactsStore;
typedef struct _ContactsStoreClass ContactsStoreClass;

#define CONTACTS_TYPE_WINDOW (contacts_window_get_type ())
#define CONTACTS_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_WINDOW, ContactsWindow))
#define CONTACTS_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_WINDOW, ContactsWindowClass))
#define CONTACTS_IS_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_WINDOW))
#define CONTACTS_IS_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_WINDOW))
#define CONTACTS_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_WINDOW, ContactsWindowClass))

typedef struct _ContactsWindow ContactsWindow;
typedef struct _ContactsWindowClass ContactsWindowClass;
enum  {
	CONTACTS_APP_0_PROPERTY,
	CONTACTS_APP_NUM_PROPERTIES
};
static GParamSpec* contacts_app_properties[CONTACTS_APP_NUM_PROPERTIES];
#define _contacts_settings_unref0(var) ((var == NULL) ? NULL : (var = (contacts_settings_unref (var), NULL)))
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))

#define CONTACTS_TYPE_CONTACT (contacts_contact_get_type ())
#define CONTACTS_CONTACT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_CONTACT, ContactsContact))
#define CONTACTS_CONTACT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_CONTACT, ContactsContactClass))
#define CONTACTS_IS_CONTACT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_CONTACT))
#define CONTACTS_IS_CONTACT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_CONTACT))
#define CONTACTS_CONTACT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_CONTACT, ContactsContactClass))

typedef struct _ContactsContact ContactsContact;
typedef struct _ContactsContactClass ContactsContactClass;
#define _g_free0(var) (var = (g_free (var), NULL))
typedef struct _Block1Data Block1Data;
typedef struct _ContactsContactPrivate ContactsContactPrivate;
typedef struct _Block2Data Block2Data;
typedef struct _ContactsAppShowIndividualData ContactsAppShowIndividualData;

#define CONTACTS_TYPE_ACCOUNTS_LIST (contacts_accounts_list_get_type ())
#define CONTACTS_ACCOUNTS_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CONTACTS_TYPE_ACCOUNTS_LIST, ContactsAccountsList))
#define CONTACTS_ACCOUNTS_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CONTACTS_TYPE_ACCOUNTS_LIST, ContactsAccountsListClass))
#define CONTACTS_IS_ACCOUNTS_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CONTACTS_TYPE_ACCOUNTS_LIST))
#define CONTACTS_IS_ACCOUNTS_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CONTACTS_TYPE_ACCOUNTS_LIST))
#define CONTACTS_ACCOUNTS_LIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CONTACTS_TYPE_ACCOUNTS_LIST, ContactsAccountsListClass))

typedef struct _ContactsAccountsList ContactsAccountsList;
typedef struct _ContactsAccountsListClass ContactsAccountsListClass;
typedef struct _Block3Data Block3Data;
typedef struct _ContactsAccountsListPrivate ContactsAccountsListPrivate;
#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
typedef struct _Block4Data Block4Data;
typedef struct _Block5Data Block5Data;
typedef struct _ContactsAppShowByEmailData ContactsAppShowByEmailData;
typedef struct _Block6Data Block6Data;
typedef struct _Block7Data Block7Data;
typedef struct _Block8Data Block8Data;
#define _g_option_context_free0(var) ((var == NULL) ? NULL : (var = (g_option_context_free (var), NULL)))

struct _ContactsApp {
	GtkApplication parent_instance;
	ContactsAppPrivate * priv;
};

struct _ContactsAppClass {
	GtkApplicationClass parent_class;
};

struct _ContactsAppPrivate {
	ContactsSettings* settings;
	ContactsStore* contacts_store;
	ContactsWindow* window;
	gboolean is_prepare_scheluded;
	gboolean is_quiescent_scheduled;
};

struct _Block1Data {
	int _ref_count_;
	ContactsApp* self;
	gchar* id;
	gpointer _async_data_;
};

typedef gboolean (*ContactsStoreContactMatcher) (ContactsContact* c, void* user_data);
struct _ContactsContact {
	GObject parent_instance;
	ContactsContactPrivate * priv;
	ContactsStore* store;
	gboolean is_main;
	FolksIndividual* individual;
	FolksPersona* fake_persona;
};

struct _ContactsContactClass {
	GObjectClass parent_class;
};

struct _Block2Data {
	int _ref_count_;
	Block1Data * _data1_;
	GtkMessageDialog* dialog;
};

struct _ContactsAppShowIndividualData {
	int _state_;
	GObject* _source_object_;
	GAsyncResult* _res_;
	GTask* _async_result;
	ContactsApp* self;
	gchar* id;
	Block1Data* _data1_;
	const gchar* _tmp0_;
	ContactsContact* contact;
	ContactsStore* _tmp1_;
	ContactsContact* _tmp2_;
	ContactsContact* _tmp3_;
	ContactsContact* _tmp4_;
	Block2Data* _data2_;
	ContactsWindow* _tmp5_;
	const gchar* _tmp6_;
	GtkMessageDialog* _tmp7_;
	GtkMessageDialog* _tmp8_;
	GtkMessageDialog* _tmp9_;
	GtkMessageDialog* _tmp10_;
};

struct _Block3Data {
	int _ref_count_;
	ContactsApp* self;
	GtkDialog* dialog;
	GtkWidget* ok_button;
	ContactsAccountsList* acc;
	gulong active_button_once;
	gulong stores_changed_id;
};

struct _ContactsAccountsList {
	GtkBox parent_instance;
	ContactsAccountsListPrivate * priv;
	FolksPersonaStore* selected_store;
};

struct _ContactsAccountsListClass {
	GtkBoxClass parent_class;
};

struct _Block4Data {
	int _ref_count_;
	ContactsApp* self;
	gchar* email_address;
	gpointer _async_data_;
};

struct _Block5Data {
	int _ref_count_;
	Block4Data * _data4_;
	GtkMessageDialog* dialog;
};

struct _ContactsAppShowByEmailData {
	int _state_;
	GObject* _source_object_;
	GAsyncResult* _res_;
	GTask* _async_result;
	ContactsApp* self;
	gchar* email_address;
	Block4Data* _data4_;
	const gchar* _tmp0_;
	ContactsContact* contact;
	ContactsStore* _tmp1_;
	ContactsContact* _tmp2_;
	ContactsContact* _tmp3_;
	ContactsContact* _tmp4_;
	Block5Data* _data5_;
	ContactsWindow* _tmp5_;
	const gchar* _tmp6_;
	GtkMessageDialog* _tmp7_;
	GtkMessageDialog* _tmp8_;
	GtkMessageDialog* _tmp9_;
	GtkMessageDialog* _tmp10_;
};

struct _Block6Data {
	int _ref_count_;
	ContactsApp* self;
	gchar* query;
};

struct _Block7Data {
	int _ref_count_;
	ContactsApp* self;
	gulong id;
	guint id2;
};

struct _Block8Data {
	int _ref_count_;
	ContactsApp* self;
	gulong id;
	guint id2;
};


static gpointer contacts_app_parent_class = NULL;
static gchar* contacts_app_individual_id;
static gchar* contacts_app_individual_id = NULL;
static gchar* contacts_app_email_address;
static gchar* contacts_app_email_address = NULL;
static gchar* contacts_app_search_terms;
static gchar* contacts_app_search_terms = NULL;

GType contacts_app_get_type (void) G_GNUC_CONST;
gpointer contacts_settings_ref (gpointer instance);
void contacts_settings_unref (gpointer instance);
GParamSpec* contacts_param_spec_settings (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void contacts_value_set_settings (GValue* value, gpointer v_object);
void contacts_value_take_settings (GValue* value, gpointer v_object);
gpointer contacts_value_get_settings (const GValue* value);
GType contacts_settings_get_type (void) G_GNUC_CONST;
GType contacts_store_get_type (void) G_GNUC_CONST;
GType contacts_window_get_type (void) G_GNUC_CONST;
#define CONTACTS_APP_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), CONTACTS_TYPE_APP, ContactsAppPrivate))
static void _g_application_quit_gsimple_action_activate_callback (GSimpleAction* action, GVariant* parameter, gpointer self);
void contacts_app_show_help (ContactsApp* self);
static void _contacts_app_show_help_gsimple_action_activate_callback (GSimpleAction* action, GVariant* parameter, gpointer self);
void contacts_app_show_about (ContactsApp* self);
static void _contacts_app_show_about_gsimple_action_activate_callback (GSimpleAction* action, GVariant* parameter, gpointer self);
void contacts_app_change_address_book (ContactsApp* self);
static void _contacts_app_change_address_book_gsimple_action_activate_callback (GSimpleAction* action, GVariant* parameter, gpointer self);
void contacts_app_new_contact (ContactsApp* self);
static void _contacts_app_new_contact_gsimple_action_activate_callback (GSimpleAction* action, GVariant* parameter, gpointer self);
GType contacts_contact_get_type (void) G_GNUC_CONST;
void contacts_app_show_contact (ContactsApp* self, ContactsContact* contact);
void contacts_window_set_shown_contact (ContactsWindow* self, ContactsContact* c);
static void contacts_app_show_individual_data_free (gpointer _data);
void contacts_app_show_individual (ContactsApp* self, const gchar* id, GAsyncReadyCallback _callback_, gpointer _user_data_);
void contacts_app_show_individual_finish (ContactsApp* self, GAsyncResult* _res_);
static gboolean contacts_app_show_individual_co (ContactsAppShowIndividualData* _data_);
static Block1Data* block1_data_ref (Block1Data* _data1_);
static void block1_data_unref (void * _userdata_);
void contacts_store_find_contact (ContactsStore* self, ContactsStoreContactMatcher matcher, void* matcher_target, GAsyncReadyCallback _callback_, gpointer _user_data_);
ContactsContact* contacts_store_find_contact_finish (ContactsStore* self, GAsyncResult* _res_);
static gboolean __lambda92_ (Block1Data* _data1_, ContactsContact* c);
static gboolean ___lambda92__contacts_store_contact_matcher (ContactsContact* c, gpointer self);
static void contacts_app_show_individual_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_);
static Block2Data* block2_data_ref (Block2Data* _data2_);
static void block2_data_unref (void * _userdata_);
static void ___lambda93_ (Block2Data* _data2_, gint id);
static void ____lambda93__gtk_dialog_response (GtkDialog* _sender, gint response_id, gpointer self);
GType contacts_accounts_list_get_type (void) G_GNUC_CONST;
static Block3Data* block3_data_ref (Block3Data* _data3_);
static void block3_data_unref (void * _userdata_);
ContactsAccountsList* contacts_accounts_list_new (ContactsStore* contacts_store);
ContactsAccountsList* contacts_accounts_list_construct (GType object_type, ContactsStore* contacts_store);
void contacts_accounts_list_update_contents (ContactsAccountsList* self, gboolean select_active);
static void __lambda89_ (Block3Data* _data3_);
static void ___lambda89__contacts_accounts_list_account_selected (ContactsAccountsList* _sender, gpointer self);
static void __lambda90_ (Block3Data* _data3_);
static void ___lambda90__contacts_store_eds_persona_store_changed (ContactsStore* _sender, gpointer self);
static void __lambda91_ (Block3Data* _data3_, gint response);
void contacts_store_refresh (ContactsStore* self);
static void ___lambda91__gtk_dialog_response (GtkDialog* _sender, gint response_id, gpointer self);
static void contacts_app_show_by_email_data_free (gpointer _data);
void contacts_app_show_by_email (ContactsApp* self, const gchar* email_address, GAsyncReadyCallback _callback_, gpointer _user_data_);
void contacts_app_show_by_email_finish (ContactsApp* self, GAsyncResult* _res_);
static gboolean contacts_app_show_by_email_co (ContactsAppShowByEmailData* _data_);
static Block4Data* block4_data_ref (Block4Data* _data4_);
static void block4_data_unref (void * _userdata_);
static gboolean __lambda94_ (Block4Data* _data4_, ContactsContact* c);
gboolean contacts_contact_has_email (ContactsContact* self, const gchar* email_address);
static gboolean ___lambda94__contacts_store_contact_matcher (ContactsContact* c, gpointer self);
static void contacts_app_show_by_email_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_);
static Block5Data* block5_data_ref (Block5Data* _data5_);
static void block5_data_unref (void * _userdata_);
static void ___lambda95_ (Block5Data* _data5_, gint id);
static void ____lambda95__gtk_dialog_response (GtkDialog* _sender, gint response_id, gpointer self);
void contacts_app_show_search (ContactsApp* self, const gchar* query);
static Block6Data* block6_data_ref (Block6Data* _data6_);
static void block6_data_unref (void * _userdata_);
gboolean contacts_store_get_is_quiescent (ContactsStore* self);
void contacts_window_show_search (ContactsWindow* self, const gchar* query);
static void ___lambda96_ (Block6Data* _data6_);
static void ____lambda96__contacts_store_quiescent (ContactsStore* _sender, gpointer self);
static void contacts_app_create_app_menu (ContactsApp* self);
GtkBuilder* contacts_load_ui (const gchar* ui);
static void contacts_app_create_window (ContactsApp* self);
ContactsWindow* contacts_window_new (ContactsApp* app, ContactsStore* contacts_store, ContactsSettings* settings);
ContactsWindow* contacts_window_construct (GType object_type, ContactsApp* app, ContactsStore* contacts_store, ContactsSettings* settings);
static void contacts_app_schedule_window_creation (ContactsApp* self);
static Block7Data* block7_data_ref (Block7Data* _data7_);
static void block7_data_unref (void * _userdata_);
static void __lambda97_ (Block7Data* _data7_);
static void contacts_app_schedule_window_finish_ui (ContactsApp* self);
static void ___lambda97__contacts_store_prepared (ContactsStore* _sender, gpointer self);
static gboolean __lambda100_ (Block7Data* _data7_);
static gboolean ___lambda100__gsource_func (gpointer self);
static Block8Data* block8_data_ref (Block8Data* _data8_);
static void block8_data_unref (void * _userdata_);
static void __lambda98_ (Block8Data* _data8_);
void contacts_window_set_list_pane (ContactsWindow* self);
static void ___lambda98__contacts_store_quiescent (ContactsStore* _sender, gpointer self);
static gboolean __lambda99_ (Block8Data* _data8_);
static gboolean ___lambda99__gsource_func (gpointer self);
static void contacts_app_real_startup (GApplication* base);
ContactsStore* contacts_store_new (void);
ContactsStore* contacts_store_construct (GType object_type);
GtkCssProvider* contacts_load_css (const gchar* css);
static void contacts_app_real_activate (GApplication* base);
gboolean contacts_store_get_is_prepared (ContactsStore* self);
void contacts_window_new_contact (ContactsWindow* self);
static gint contacts_app_real_command_line (GApplication* base, GApplicationCommandLine* command_line);
ContactsApp* contacts_app_new (void);
ContactsApp* contacts_app_construct (GType object_type);
ContactsSettings* contacts_settings_new (ContactsApp* app);
ContactsSettings* contacts_settings_construct (GType object_type, ContactsApp* app);
static void contacts_app_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 const GActionEntry CONTACTS_APP_action_entries[5] = {{"quit", _g_application_quit_gsimple_action_activate_callback}, {"help", _contacts_app_show_help_gsimple_action_activate_callback}, {"about", _contacts_app_show_about_gsimple_action_activate_callback}, {"change-book", _contacts_app_change_address_book_gsimple_action_activate_callback}, {"new-contact", _contacts_app_new_contact_gsimple_action_activate_callback}};
static const GOptionEntry CONTACTS_APP_options[4] = {{"individual", 'i', 0, G_OPTION_ARG_STRING, &contacts_app_individual_id, N_ ("Show contact with this individual id"), NULL}, {"email", 'e', 0, G_OPTION_ARG_STRING, &contacts_app_email_address, N_ ("Show contact with this email address"), NULL}, {"search", 's', 0, G_OPTION_ARG_STRING, &contacts_app_search_terms, NULL, NULL}, {NULL}};

static void _g_application_quit_gsimple_action_activate_callback (GSimpleAction* action, GVariant* parameter, gpointer self) {
	g_application_quit ((GApplication*) self);
}


static void _contacts_app_show_help_gsimple_action_activate_callback (GSimpleAction* action, GVariant* parameter, gpointer self) {
	contacts_app_show_help ((ContactsApp*) self);
}


static void _contacts_app_show_about_gsimple_action_activate_callback (GSimpleAction* action, GVariant* parameter, gpointer self) {
	contacts_app_show_about ((ContactsApp*) self);
}


static void _contacts_app_change_address_book_gsimple_action_activate_callback (GSimpleAction* action, GVariant* parameter, gpointer self) {
	contacts_app_change_address_book ((ContactsApp*) self);
}


static void _contacts_app_new_contact_gsimple_action_activate_callback (GSimpleAction* action, GVariant* parameter, gpointer self) {
	contacts_app_new_contact ((ContactsApp*) self);
}


void contacts_app_show_contact (ContactsApp* self, ContactsContact* contact) {
	ContactsWindow* _tmp0_;
	ContactsContact* _tmp1_;
	g_return_if_fail (self != NULL);
	_tmp0_ = self->priv->window;
	_tmp1_ = contact;
	contacts_window_set_shown_contact (_tmp0_, _tmp1_);
}


static void contacts_app_show_individual_data_free (gpointer _data) {
	ContactsAppShowIndividualData* _data_;
	_data_ = _data;
	_g_object_unref0 (_data_->self);
	g_slice_free (ContactsAppShowIndividualData, _data_);
}


static gpointer _g_object_ref0 (gpointer self) {
	return self ? g_object_ref (self) : NULL;
}


void contacts_app_show_individual (ContactsApp* self, const gchar* id, GAsyncReadyCallback _callback_, gpointer _user_data_) {
	ContactsAppShowIndividualData* _data_;
	ContactsApp* _tmp0_;
	const gchar* _tmp1_;
	gchar* _tmp2_;
	_data_ = g_slice_new0 (ContactsAppShowIndividualData);
	_data_->_async_result = g_task_new (G_OBJECT (self), NULL, _callback_, _user_data_);
	g_task_set_task_data (_data_->_async_result, _data_, contacts_app_show_individual_data_free);
	_tmp0_ = _g_object_ref0 (self);
	_data_->self = _tmp0_;
	_tmp1_ = id;
	_tmp2_ = g_strdup (_tmp1_);
	_g_free0 (_data_->id);
	_data_->id = _tmp2_;
	contacts_app_show_individual_co (_data_);
}


void contacts_app_show_individual_finish (ContactsApp* self, GAsyncResult* _res_) {
	ContactsAppShowIndividualData* _data_;
	_data_ = g_task_propagate_pointer (G_TASK (_res_), NULL);
}


static Block1Data* block1_data_ref (Block1Data* _data1_) {
	g_atomic_int_inc (&_data1_->_ref_count_);
	return _data1_;
}


static void block1_data_unref (void * _userdata_) {
	Block1Data* _data1_;
	_data1_ = (Block1Data*) _userdata_;
	if (g_atomic_int_dec_and_test (&_data1_->_ref_count_)) {
		ContactsApp* self;
		self = _data1_->self;
		_g_free0 (_data1_->id);
		_g_object_unref0 (self);
		g_slice_free (Block1Data, _data1_);
	}
}


static gboolean __lambda92_ (Block1Data* _data1_, ContactsContact* c) {
	ContactsApp* self;
	gboolean result = FALSE;
	ContactsContact* _tmp0_;
	FolksIndividual* _tmp1_;
	const gchar* _tmp2_;
	const gchar* _tmp3_;
	const gchar* _tmp4_;
	self = _data1_->self;
	g_return_val_if_fail (c != NULL, FALSE);
	_tmp0_ = c;
	_tmp1_ = _tmp0_->individual;
	_tmp2_ = folks_individual_get_id (_tmp1_);
	_tmp3_ = _tmp2_;
	_tmp4_ = _data1_->id;
	result = g_strcmp0 (_tmp3_, _tmp4_) == 0;
	return result;
}


static gboolean ___lambda92__contacts_store_contact_matcher (ContactsContact* c, gpointer self) {
	gboolean result;
	result = __lambda92_ (self, c);
	return result;
}


static void contacts_app_show_individual_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_) {
	ContactsAppShowIndividualData* _data_;
	_data_ = _user_data_;
	_data_->_source_object_ = source_object;
	_data_->_res_ = _res_;
	contacts_app_show_individual_co (_data_);
}


static Block2Data* block2_data_ref (Block2Data* _data2_) {
	g_atomic_int_inc (&_data2_->_ref_count_);
	return _data2_;
}


static void block2_data_unref (void * _userdata_) {
	Block2Data* _data2_;
	_data2_ = (Block2Data*) _userdata_;
	if (g_atomic_int_dec_and_test (&_data2_->_ref_count_)) {
		ContactsApp* self;
		self = _data2_->_data1_->self;
		_g_object_unref0 (_data2_->dialog);
		block1_data_unref (_data2_->_data1_);
		_data2_->_data1_ = NULL;
		g_slice_free (Block2Data, _data2_);
	}
}


static void ___lambda93_ (Block2Data* _data2_, gint id) {
	Block1Data* _data1_;
	ContactsApp* self;
	GtkMessageDialog* _tmp0_;
	_data1_ = _data2_->_data1_;
	self = _data1_->self;
	_tmp0_ = _data2_->dialog;
	gtk_widget_destroy ((GtkWidget*) _tmp0_);
}


static void ____lambda93__gtk_dialog_response (GtkDialog* _sender, gint response_id, gpointer self) {
	___lambda93_ (self, response_id);
}


static gboolean contacts_app_show_individual_co (ContactsAppShowIndividualData* _data_) {
	switch (_data_->_state_) {
		case 0:
		goto _state_0;
		case 1:
		goto _state_1;
		default:
		g_assert_not_reached ();
	}
	_state_0:
	_data_->_data1_ = g_slice_new0 (Block1Data);
	_data_->_data1_->_ref_count_ = 1;
	_data_->_data1_->self = g_object_ref (_data_->self);
	_data_->_tmp0_ = _data_->id;
	_g_free0 (_data_->_data1_->id);
	_data_->_data1_->id = _data_->_tmp0_;
	_data_->_data1_->_async_data_ = _data_;
	_data_->_tmp1_ = _data_->self->priv->contacts_store;
	_data_->_state_ = 1;
	contacts_store_find_contact (_data_->_tmp1_, ___lambda92__contacts_store_contact_matcher, _data_->_data1_, contacts_app_show_individual_ready, _data_);
	return FALSE;
	_state_1:
	_data_->_tmp2_ = contacts_store_find_contact_finish (_data_->_tmp1_, _data_->_res_);
	_data_->contact = _data_->_tmp2_;
	_data_->_tmp3_ = _data_->contact;
	if (_data_->_tmp3_ != NULL) {
		_data_->_tmp4_ = _data_->contact;
		contacts_app_show_contact (_data_->self, _data_->_tmp4_);
	} else {
		_data_->_data2_ = g_slice_new0 (Block2Data);
		_data_->_data2_->_ref_count_ = 1;
		_data_->_data2_->_data1_ = block1_data_ref (_data_->_data1_);
		_data_->_tmp5_ = _data_->self->priv->window;
		_data_->_tmp6_ = _data_->_data1_->id;
		_data_->_tmp7_ = (GtkMessageDialog*) gtk_message_dialog_new ((GtkWindow*) _data_->_tmp5_, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, _ ("No contact with id %s found"), _data_->_tmp6_);
		g_object_ref_sink (_data_->_tmp7_);
		_data_->_data2_->dialog = _data_->_tmp7_;
		_data_->_tmp8_ = _data_->_data2_->dialog;
		gtk_window_set_title ((GtkWindow*) _data_->_tmp8_, _ ("Contact not found"));
		_data_->_tmp9_ = _data_->_data2_->dialog;
		gtk_widget_show ((GtkWidget*) _data_->_tmp9_);
		_data_->_tmp10_ = _data_->_data2_->dialog;
		g_signal_connect_data ((GtkDialog*) _data_->_tmp10_, "response", (GCallback) ____lambda93__gtk_dialog_response, block2_data_ref (_data_->_data2_), (GClosureNotify) block2_data_unref, 0);
		block2_data_unref (_data_->_data2_);
		_data_->_data2_ = NULL;
	}
	_g_object_unref0 (_data_->contact);
	block1_data_unref (_data_->_data1_);
	_data_->_data1_ = NULL;
	g_task_return_pointer (_data_->_async_result, _data_, NULL);
	if (_data_->_state_ != 0) {
		while (g_task_get_completed (_data_->_async_result) != TRUE) {
			g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
		}
	}
	g_object_unref (_data_->_async_result);
	return FALSE;
}


static Block3Data* block3_data_ref (Block3Data* _data3_) {
	g_atomic_int_inc (&_data3_->_ref_count_);
	return _data3_;
}


static void block3_data_unref (void * _userdata_) {
	Block3Data* _data3_;
	_data3_ = (Block3Data*) _userdata_;
	if (g_atomic_int_dec_and_test (&_data3_->_ref_count_)) {
		ContactsApp* self;
		self = _data3_->self;
		_g_object_unref0 (_data3_->acc);
		_g_object_unref0 (_data3_->ok_button);
		_g_object_unref0 (_data3_->dialog);
		_g_object_unref0 (self);
		g_slice_free (Block3Data, _data3_);
	}
}


static void __lambda89_ (Block3Data* _data3_) {
	ContactsApp* self;
	gulong _tmp0_;
	self = _data3_->self;
	gtk_widget_set_sensitive (_data3_->ok_button, TRUE);
	_tmp0_ = _data3_->active_button_once;
	g_signal_handler_disconnect ((GObject*) _data3_->acc, _tmp0_);
}


static void ___lambda89__contacts_accounts_list_account_selected (ContactsAccountsList* _sender, gpointer self) {
	__lambda89_ (self);
}


static void __lambda90_ (Block3Data* _data3_) {
	ContactsApp* self;
	self = _data3_->self;
	contacts_accounts_list_update_contents (_data3_->acc, TRUE);
}


static void ___lambda90__contacts_store_eds_persona_store_changed (ContactsStore* _sender, gpointer self) {
	__lambda90_ (self);
}


static void __lambda91_ (Block3Data* _data3_, gint response) {
	ContactsApp* self;
	gint _tmp0_;
	ContactsStore* _tmp16_;
	self = _data3_->self;
	_tmp0_ = response;
	if (_tmp0_ == ((gint) GTK_RESPONSE_OK)) {
		EdsfPersonaStore* e_store = NULL;
		FolksPersonaStore* _tmp1_;
		EdsfPersonaStore* _tmp2_;
		EdsfPersonaStore* _tmp3_;
		_tmp1_ = _data3_->acc->selected_store;
		_tmp2_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, EDSF_TYPE_PERSONA_STORE) ? ((EdsfPersonaStore*) _tmp1_) : NULL);
		e_store = _tmp2_;
		_tmp3_ = e_store;
		if (_tmp3_ != NULL) {
			ESourceRegistry* _tmp4_;
			EdsfPersonaStore* _tmp5_;
			ESource* _tmp6_;
			ESource* _tmp7_;
			GSettings* settings = NULL;
			GSettings* _tmp8_;
			GSettings* _tmp9_;
			EdsfPersonaStore* _tmp10_;
			const gchar* _tmp11_;
			const gchar* _tmp12_;
			gchar* _tmp13_;
			gchar* _tmp14_;
			ContactsStore* _tmp15_;
			_tmp4_ = eds_source_registry;
			_tmp5_ = e_store;
			_tmp6_ = edsf_persona_store_get_source (_tmp5_);
			_tmp7_ = _tmp6_;
			e_source_registry_set_default_address_book (_tmp4_, _tmp7_);
			_tmp8_ = g_settings_new ("org.freedesktop.folks");
			settings = _tmp8_;
			_tmp9_ = settings;
			_tmp10_ = e_store;
			_tmp11_ = folks_persona_store_get_id ((FolksPersonaStore*) _tmp10_);
			_tmp12_ = _tmp11_;
			_tmp13_ = g_strdup_printf ("eds:%s", _tmp12_);
			_tmp14_ = _tmp13_;
			g_settings_set_string (_tmp9_, "primary-store", _tmp14_);
			_g_free0 (_tmp14_);
			_tmp15_ = self->priv->contacts_store;
			contacts_store_refresh (_tmp15_);
			_g_object_unref0 (settings);
		}
		_g_object_unref0 (e_store);
	}
	_tmp16_ = self->priv->contacts_store;
	g_signal_handler_disconnect ((GObject*) _tmp16_, _data3_->stores_changed_id);
	gtk_widget_destroy ((GtkWidget*) _data3_->dialog);
}


static void ___lambda91__gtk_dialog_response (GtkDialog* _sender, gint response_id, gpointer self) {
	__lambda91_ (self, response_id);
}


void contacts_app_change_address_book (ContactsApp* self) {
	Block3Data* _data3_;
	ContactsWindow* _tmp0_;
	GtkDialog* _tmp1_;
	GtkWidget* _tmp2_;
	GtkWidget* _tmp3_;
	GtkStyleContext* _tmp4_;
	GtkLabel* explanation_label = NULL;
	GtkLabel* _tmp5_;
	GtkBox* _tmp6_;
	GtkBox* _tmp7_;
	ContactsStore* _tmp8_;
	ContactsAccountsList* _tmp9_;
	gulong _tmp10_;
	ContactsStore* _tmp11_;
	gulong _tmp12_;
	GtkBox* _tmp13_;
	g_return_if_fail (self != NULL);
	_data3_ = g_slice_new0 (Block3Data);
	_data3_->_ref_count_ = 1;
	_data3_->self = g_object_ref (self);
	_tmp0_ = self->priv->window;
	_tmp1_ = (GtkDialog*) gtk_dialog_new_with_buttons (_ ("Change Address Book"), (GtkWindow*) G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, CONTACTS_TYPE_WINDOW, ContactsWindow), (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT) | GTK_DIALOG_USE_HEADER_BAR, _ ("Change"), GTK_RESPONSE_OK, _ ("Cancel"), GTK_RESPONSE_CANCEL, NULL, NULL);
	g_object_ref_sink (_tmp1_);
	_data3_->dialog = _tmp1_;
	_tmp2_ = gtk_dialog_get_widget_for_response (_data3_->dialog, (gint) GTK_RESPONSE_OK);
	_tmp3_ = _g_object_ref0 (_tmp2_);
	_data3_->ok_button = _tmp3_;
	gtk_widget_set_sensitive (_data3_->ok_button, FALSE);
	_tmp4_ = gtk_widget_get_style_context (_data3_->ok_button);
	gtk_style_context_add_class (_tmp4_, "suggested-action");
	gtk_window_set_resizable ((GtkWindow*) _data3_->dialog, FALSE);
	gtk_container_set_border_width ((GtkContainer*) _data3_->dialog, (guint) 12);
	_tmp5_ = (GtkLabel*) gtk_label_new (_ ("New contacts will be added to the selected address book.\n" \
"You are able to view and edit contacts from other address books."));
	g_object_ref_sink (_tmp5_);
	explanation_label = _tmp5_;
	_tmp6_ = (GtkBox*) gtk_dialog_get_content_area (_data3_->dialog);
	gtk_container_add ((GtkContainer*) (G_TYPE_CHECK_INSTANCE_TYPE (_tmp6_, gtk_box_get_type ()) ? ((GtkBox*) _tmp6_) : NULL), (GtkWidget*) explanation_label);
	_tmp7_ = (GtkBox*) gtk_dialog_get_content_area (_data3_->dialog);
	gtk_box_set_spacing (G_TYPE_CHECK_INSTANCE_TYPE (_tmp7_, gtk_box_get_type ()) ? ((GtkBox*) _tmp7_) : NULL, 12);
	_tmp8_ = self->priv->contacts_store;
	_tmp9_ = contacts_accounts_list_new (_tmp8_);
	g_object_ref_sink (_tmp9_);
	_data3_->acc = _tmp9_;
	contacts_accounts_list_update_contents (_data3_->acc, TRUE);
	_data3_->active_button_once = (gulong) 0;
	_tmp10_ = g_signal_connect_data (_data3_->acc, "account-selected", (GCallback) ___lambda89__contacts_accounts_list_account_selected, block3_data_ref (_data3_), (GClosureNotify) block3_data_unref, 0);
	_data3_->active_button_once = _tmp10_;
	_tmp11_ = self->priv->contacts_store;
	_tmp12_ = g_signal_connect_data (_tmp11_, "eds-persona-store-changed", (GCallback) ___lambda90__contacts_store_eds_persona_store_changed, block3_data_ref (_data3_), (GClosureNotify) block3_data_unref, 0);
	_data3_->stores_changed_id = _tmp12_;
	_tmp13_ = (GtkBox*) gtk_dialog_get_content_area (_data3_->dialog);
	gtk_container_add ((GtkContainer*) (G_TYPE_CHECK_INSTANCE_TYPE (_tmp13_, gtk_box_get_type ()) ? ((GtkBox*) _tmp13_) : NULL), (GtkWidget*) _data3_->acc);
	gtk_widget_show_all ((GtkWidget*) _data3_->dialog);
	g_signal_connect_data (_data3_->dialog, "response", (GCallback) ___lambda91__gtk_dialog_response, block3_data_ref (_data3_), (GClosureNotify) block3_data_unref, 0);
	_g_object_unref0 (explanation_label);
	block3_data_unref (_data3_);
	_data3_ = NULL;
}


void contacts_app_show_help (ContactsApp* self) {
	GError * _inner_error_ = NULL;
	g_return_if_fail (self != NULL);
	{
		ContactsWindow* _tmp0_;
		guint32 _tmp1_;
		_tmp0_ = self->priv->window;
		_tmp1_ = gtk_get_current_event_time ();
		gtk_show_uri_on_window ((GtkWindow*) _tmp0_, "help:gnome-help/contacts", _tmp1_, &_inner_error_);
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			goto __catch0_g_error;
		}
	}
	goto __finally0;
	__catch0_g_error:
	{
		GError* e1 = NULL;
		GError* _tmp2_;
		const gchar* _tmp3_;
		e1 = _inner_error_;
		_inner_error_ = NULL;
		_tmp2_ = e1;
		_tmp3_ = _tmp2_->message;
		g_warning ("contacts-app.vala:116: Error showing help: %s", _tmp3_);
		_g_error_free0 (e1);
	}
	__finally0:
	if (G_UNLIKELY (_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;
	}
}


void contacts_app_show_about (ContactsApp* self) {
	gchar** authors = NULL;
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	gchar** _tmp3_;
	gint authors_length1;
	gint _authors_size_;
	gchar** artists = NULL;
	gchar* _tmp4_;
	gchar** _tmp5_;
	gint artists_length1;
	gint _artists_size_;
	ContactsWindow* _tmp6_;
	g_return_if_fail (self != NULL);
	_tmp0_ = g_strdup ("Alexander Larsson <alexl@redhat.com>");
	_tmp1_ = g_strdup ("Erick Pérez Castellanos <erick.red@gmail.com>");
	_tmp2_ = g_strdup ("Niels De Graef <nielsdegraef@gmail.com>");
	_tmp3_ = g_new0 (gchar*, 3 + 1);
	_tmp3_[0] = _tmp0_;
	_tmp3_[1] = _tmp1_;
	_tmp3_[2] = _tmp2_;
	authors = _tmp3_;
	authors_length1 = 3;
	_authors_size_ = authors_length1;
	_tmp4_ = g_strdup ("Allan Day <allanpday@gmail.com>");
	_tmp5_ = g_new0 (gchar*, 1 + 1);
	_tmp5_[0] = _tmp4_;
	artists = _tmp5_;
	artists_length1 = 1;
	_artists_size_ = artists_length1;
	_tmp6_ = self->priv->window;
	gtk_show_about_dialog ((GtkWindow*) _tmp6_, "artists", artists, "authors", authors, "translator-credits", _ ("translator-credits"), "program-name", _ ("GNOME Contacts"), "title", _ ("About GNOME Contacts"), "comments", _ ("Contact Management Application"), "copyright", "Copyright 2011 Red Hat, Inc.\nCopyright 2014 The Contacts Developers", "license-type", GTK_LICENSE_GPL_2_0, "logo-icon-name", "gnome-contacts", "version", PACKAGE_VERSION, "website", "https://wiki.gnome.org/Apps/Contacts", "wrap-license", TRUE, NULL);
	artists = (_vala_array_free (artists, artists_length1, (GDestroyNotify) g_free), NULL);
	authors = (_vala_array_free (authors, authors_length1, (GDestroyNotify) g_free), NULL);
}


static void contacts_app_show_by_email_data_free (gpointer _data) {
	ContactsAppShowByEmailData* _data_;
	_data_ = _data;
	_g_object_unref0 (_data_->self);
	g_slice_free (ContactsAppShowByEmailData, _data_);
}


void contacts_app_show_by_email (ContactsApp* self, const gchar* email_address, GAsyncReadyCallback _callback_, gpointer _user_data_) {
	ContactsAppShowByEmailData* _data_;
	ContactsApp* _tmp0_;
	const gchar* _tmp1_;
	gchar* _tmp2_;
	_data_ = g_slice_new0 (ContactsAppShowByEmailData);
	_data_->_async_result = g_task_new (G_OBJECT (self), NULL, _callback_, _user_data_);
	g_task_set_task_data (_data_->_async_result, _data_, contacts_app_show_by_email_data_free);
	_tmp0_ = _g_object_ref0 (self);
	_data_->self = _tmp0_;
	_tmp1_ = email_address;
	_tmp2_ = g_strdup (_tmp1_);
	_g_free0 (_data_->email_address);
	_data_->email_address = _tmp2_;
	contacts_app_show_by_email_co (_data_);
}


void contacts_app_show_by_email_finish (ContactsApp* self, GAsyncResult* _res_) {
	ContactsAppShowByEmailData* _data_;
	_data_ = g_task_propagate_pointer (G_TASK (_res_), NULL);
}


static Block4Data* block4_data_ref (Block4Data* _data4_) {
	g_atomic_int_inc (&_data4_->_ref_count_);
	return _data4_;
}


static void block4_data_unref (void * _userdata_) {
	Block4Data* _data4_;
	_data4_ = (Block4Data*) _userdata_;
	if (g_atomic_int_dec_and_test (&_data4_->_ref_count_)) {
		ContactsApp* self;
		self = _data4_->self;
		_g_free0 (_data4_->email_address);
		_g_object_unref0 (self);
		g_slice_free (Block4Data, _data4_);
	}
}


static gboolean __lambda94_ (Block4Data* _data4_, ContactsContact* c) {
	ContactsApp* self;
	gboolean result = FALSE;
	ContactsContact* _tmp0_;
	const gchar* _tmp1_;
	gboolean _tmp2_;
	self = _data4_->self;
	g_return_val_if_fail (c != NULL, FALSE);
	_tmp0_ = c;
	_tmp1_ = _data4_->email_address;
	_tmp2_ = contacts_contact_has_email (_tmp0_, _tmp1_);
	result = _tmp2_;
	return result;
}


static gboolean ___lambda94__contacts_store_contact_matcher (ContactsContact* c, gpointer self) {
	gboolean result;
	result = __lambda94_ (self, c);
	return result;
}


static void contacts_app_show_by_email_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_) {
	ContactsAppShowByEmailData* _data_;
	_data_ = _user_data_;
	_data_->_source_object_ = source_object;
	_data_->_res_ = _res_;
	contacts_app_show_by_email_co (_data_);
}


static Block5Data* block5_data_ref (Block5Data* _data5_) {
	g_atomic_int_inc (&_data5_->_ref_count_);
	return _data5_;
}


static void block5_data_unref (void * _userdata_) {
	Block5Data* _data5_;
	_data5_ = (Block5Data*) _userdata_;
	if (g_atomic_int_dec_and_test (&_data5_->_ref_count_)) {
		ContactsApp* self;
		self = _data5_->_data4_->self;
		_g_object_unref0 (_data5_->dialog);
		block4_data_unref (_data5_->_data4_);
		_data5_->_data4_ = NULL;
		g_slice_free (Block5Data, _data5_);
	}
}


static void ___lambda95_ (Block5Data* _data5_, gint id) {
	Block4Data* _data4_;
	ContactsApp* self;
	GtkMessageDialog* _tmp0_;
	_data4_ = _data5_->_data4_;
	self = _data4_->self;
	_tmp0_ = _data5_->dialog;
	gtk_widget_destroy ((GtkWidget*) _tmp0_);
}


static void ____lambda95__gtk_dialog_response (GtkDialog* _sender, gint response_id, gpointer self) {
	___lambda95_ (self, response_id);
}


static gboolean contacts_app_show_by_email_co (ContactsAppShowByEmailData* _data_) {
	switch (_data_->_state_) {
		case 0:
		goto _state_0;
		case 1:
		goto _state_1;
		default:
		g_assert_not_reached ();
	}
	_state_0:
	_data_->_data4_ = g_slice_new0 (Block4Data);
	_data_->_data4_->_ref_count_ = 1;
	_data_->_data4_->self = g_object_ref (_data_->self);
	_data_->_tmp0_ = _data_->email_address;
	_g_free0 (_data_->_data4_->email_address);
	_data_->_data4_->email_address = _data_->_tmp0_;
	_data_->_data4_->_async_data_ = _data_;
	_data_->_tmp1_ = _data_->self->priv->contacts_store;
	_data_->_state_ = 1;
	contacts_store_find_contact (_data_->_tmp1_, ___lambda94__contacts_store_contact_matcher, _data_->_data4_, contacts_app_show_by_email_ready, _data_);
	return FALSE;
	_state_1:
	_data_->_tmp2_ = contacts_store_find_contact_finish (_data_->_tmp1_, _data_->_res_);
	_data_->contact = _data_->_tmp2_;
	_data_->_tmp3_ = _data_->contact;
	if (_data_->_tmp3_ != NULL) {
		_data_->_tmp4_ = _data_->contact;
		contacts_app_show_contact (_data_->self, _data_->_tmp4_);
	} else {
		_data_->_data5_ = g_slice_new0 (Block5Data);
		_data_->_data5_->_ref_count_ = 1;
		_data_->_data5_->_data4_ = block4_data_ref (_data_->_data4_);
		_data_->_tmp5_ = _data_->self->priv->window;
		_data_->_tmp6_ = _data_->_data4_->email_address;
		_data_->_tmp7_ = (GtkMessageDialog*) gtk_message_dialog_new ((GtkWindow*) _data_->_tmp5_, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, _ ("No contact with email address %s found"), _data_->_tmp6_);
		g_object_ref_sink (_data_->_tmp7_);
		_data_->_data5_->dialog = _data_->_tmp7_;
		_data_->_tmp8_ = _data_->_data5_->dialog;
		gtk_window_set_title ((GtkWindow*) _data_->_tmp8_, _ ("Contact not found"));
		_data_->_tmp9_ = _data_->_data5_->dialog;
		gtk_widget_show ((GtkWidget*) _data_->_tmp9_);
		_data_->_tmp10_ = _data_->_data5_->dialog;
		g_signal_connect_data ((GtkDialog*) _data_->_tmp10_, "response", (GCallback) ____lambda95__gtk_dialog_response, block5_data_ref (_data_->_data5_), (GClosureNotify) block5_data_unref, 0);
		block5_data_unref (_data_->_data5_);
		_data_->_data5_ = NULL;
	}
	_g_object_unref0 (_data_->contact);
	block4_data_unref (_data_->_data4_);
	_data_->_data4_ = NULL;
	g_task_return_pointer (_data_->_async_result, _data_, NULL);
	if (_data_->_state_ != 0) {
		while (g_task_get_completed (_data_->_async_result) != TRUE) {
			g_main_context_iteration (g_task_get_context (_data_->_async_result), TRUE);
		}
	}
	g_object_unref (_data_->_async_result);
	return FALSE;
}


static Block6Data* block6_data_ref (Block6Data* _data6_) {
	g_atomic_int_inc (&_data6_->_ref_count_);
	return _data6_;
}


static void block6_data_unref (void * _userdata_) {
	Block6Data* _data6_;
	_data6_ = (Block6Data*) _userdata_;
	if (g_atomic_int_dec_and_test (&_data6_->_ref_count_)) {
		ContactsApp* self;
		self = _data6_->self;
		_g_free0 (_data6_->query);
		_g_object_unref0 (self);
		g_slice_free (Block6Data, _data6_);
	}
}


static void ___lambda96_ (Block6Data* _data6_) {
	ContactsApp* self;
	ContactsWindow* _tmp0_;
	const gchar* _tmp1_;
	self = _data6_->self;
	_tmp0_ = self->priv->window;
	_tmp1_ = _data6_->query;
	contacts_window_show_search (_tmp0_, _tmp1_);
}


static void ____lambda96__contacts_store_quiescent (ContactsStore* _sender, gpointer self) {
	___lambda96_ (self);
}


void contacts_app_show_search (ContactsApp* self, const gchar* query) {
	Block6Data* _data6_;
	const gchar* _tmp0_;
	gchar* _tmp1_;
	ContactsStore* _tmp2_;
	gboolean _tmp3_;
	gboolean _tmp4_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (query != NULL);
	_data6_ = g_slice_new0 (Block6Data);
	_data6_->_ref_count_ = 1;
	_data6_->self = g_object_ref (self);
	_tmp0_ = query;
	_tmp1_ = g_strdup (_tmp0_);
	_g_free0 (_data6_->query);
	_data6_->query = _tmp1_;
	_tmp2_ = self->priv->contacts_store;
	_tmp3_ = contacts_store_get_is_quiescent (_tmp2_);
	_tmp4_ = _tmp3_;
	if (_tmp4_) {
		ContactsWindow* _tmp5_;
		const gchar* _tmp6_;
		_tmp5_ = self->priv->window;
		_tmp6_ = _data6_->query;
		contacts_window_show_search (_tmp5_, _tmp6_);
	} else {
		ContactsStore* _tmp7_;
		_tmp7_ = self->priv->contacts_store;
		g_signal_connect_data (_tmp7_, "quiescent", (GCallback) ____lambda96__contacts_store_quiescent, block6_data_ref (_data6_), (GClosureNotify) block6_data_unref, G_CONNECT_AFTER);
	}
	block6_data_unref (_data6_);
	_data6_ = NULL;
}


static void contacts_app_create_app_menu (ContactsApp* self) {
	gchar* _tmp0_;
	gchar** _tmp1_;
	gchar** _tmp2_;
	gint _tmp2__length1;
	gchar* _tmp3_;
	gchar** _tmp4_;
	gchar** _tmp5_;
	gint _tmp5__length1;
	GtkBuilder* builder = NULL;
	GtkBuilder* _tmp6_;
	GObject* _tmp7_;
	g_return_if_fail (self != NULL);
	g_action_map_add_action_entries ((GActionMap*) self, CONTACTS_APP_action_entries, G_N_ELEMENTS (CONTACTS_APP_action_entries), self);
	_tmp0_ = g_strdup ("F1");
	_tmp1_ = g_new0 (gchar*, 1 + 1);
	_tmp1_[0] = _tmp0_;
	_tmp2_ = _tmp1_;
	_tmp2__length1 = 1;
	gtk_application_set_accels_for_action ((GtkApplication*) self, "app.help", _tmp2_);
	_tmp2_ = (_vala_array_free (_tmp2_, _tmp2__length1, (GDestroyNotify) g_free), NULL);
	_tmp3_ = g_strdup ("<Primary>n");
	_tmp4_ = g_new0 (gchar*, 1 + 1);
	_tmp4_[0] = _tmp3_;
	_tmp5_ = _tmp4_;
	_tmp5__length1 = 1;
	gtk_application_set_accels_for_action ((GtkApplication*) self, "app.new-contact", _tmp5_);
	_tmp5_ = (_vala_array_free (_tmp5_, _tmp5__length1, (GDestroyNotify) g_free), NULL);
	_tmp6_ = contacts_load_ui ("app-menu.ui");
	builder = _tmp6_;
	_tmp7_ = gtk_builder_get_object (builder, "app-menu");
	gtk_application_set_app_menu ((GtkApplication*) self, G_TYPE_CHECK_INSTANCE_CAST (_tmp7_, g_menu_model_get_type (), GMenuModel));
	_g_object_unref0 (builder);
}


static void contacts_app_create_window (ContactsApp* self) {
	ContactsStore* _tmp0_;
	ContactsSettings* _tmp1_;
	ContactsWindow* _tmp2_;
	g_return_if_fail (self != NULL);
	_tmp0_ = self->priv->contacts_store;
	_tmp1_ = self->priv->settings;
	_tmp2_ = contacts_window_new (self, _tmp0_, _tmp1_);
	g_object_ref_sink (_tmp2_);
	_g_object_unref0 (self->priv->window);
	self->priv->window = _tmp2_;
}


static Block7Data* block7_data_ref (Block7Data* _data7_) {
	g_atomic_int_inc (&_data7_->_ref_count_);
	return _data7_;
}


static void block7_data_unref (void * _userdata_) {
	Block7Data* _data7_;
	_data7_ = (Block7Data*) _userdata_;
	if (g_atomic_int_dec_and_test (&_data7_->_ref_count_)) {
		ContactsApp* self;
		self = _data7_->self;
		_g_object_unref0 (self);
		g_slice_free (Block7Data, _data7_);
	}
}


static void __lambda97_ (Block7Data* _data7_) {
	ContactsApp* self;
	ContactsStore* _tmp0_;
	gulong _tmp1_;
	guint _tmp2_;
	ContactsWindow* _tmp3_;
	self = _data7_->self;
	_tmp0_ = self->priv->contacts_store;
	_tmp1_ = _data7_->id;
	g_signal_handler_disconnect ((GObject*) _tmp0_, _tmp1_);
	_tmp2_ = _data7_->id2;
	g_source_remove (_tmp2_);
	contacts_app_create_app_menu (self);
	contacts_app_create_window (self);
	_tmp3_ = self->priv->window;
	gtk_widget_show ((GtkWidget*) _tmp3_);
	contacts_app_schedule_window_finish_ui (self);
	g_application_release ((GApplication*) self);
}


static void ___lambda97__contacts_store_prepared (ContactsStore* _sender, gpointer self) {
	__lambda97_ (self);
}


static gboolean __lambda100_ (Block7Data* _data7_) {
	ContactsApp* self;
	gboolean result = FALSE;
	ContactsStore* _tmp0_;
	gulong _tmp1_;
	ContactsWindow* _tmp2_;
	self = _data7_->self;
	_tmp0_ = self->priv->contacts_store;
	_tmp1_ = _data7_->id;
	g_signal_handler_disconnect ((GObject*) _tmp0_, _tmp1_);
	contacts_app_create_app_menu (self);
	contacts_app_create_window (self);
	_tmp2_ = self->priv->window;
	gtk_widget_show ((GtkWidget*) _tmp2_);
	contacts_app_schedule_window_finish_ui (self);
	g_application_release ((GApplication*) self);
	result = FALSE;
	return result;
}


static gboolean ___lambda100__gsource_func (gpointer self) {
	gboolean result;
	result = __lambda100_ (self);
	return result;
}


static void contacts_app_schedule_window_creation (ContactsApp* self) {
	Block7Data* _data7_;
	ContactsStore* _tmp0_;
	gulong _tmp1_;
	guint _tmp2_;
	g_return_if_fail (self != NULL);
	_data7_ = g_slice_new0 (Block7Data);
	_data7_->_ref_count_ = 1;
	_data7_->self = g_object_ref (self);
	g_application_hold ((GApplication*) self);
	_data7_->id = (gulong) 0;
	_data7_->id2 = (guint) 0;
	_tmp0_ = self->priv->contacts_store;
	_tmp1_ = g_signal_connect_data (_tmp0_, "prepared", (GCallback) ___lambda97__contacts_store_prepared, block7_data_ref (_data7_), (GClosureNotify) block7_data_unref, 0);
	_data7_->id = _tmp1_;
	_tmp2_ = g_timeout_add_full (G_PRIORITY_DEFAULT, (guint) 500, ___lambda100__gsource_func, block7_data_ref (_data7_), block7_data_unref);
	_data7_->id2 = _tmp2_;
	self->priv->is_prepare_scheluded = TRUE;
	block7_data_unref (_data7_);
	_data7_ = NULL;
}


static Block8Data* block8_data_ref (Block8Data* _data8_) {
	g_atomic_int_inc (&_data8_->_ref_count_);
	return _data8_;
}


static void block8_data_unref (void * _userdata_) {
	Block8Data* _data8_;
	_data8_ = (Block8Data*) _userdata_;
	if (g_atomic_int_dec_and_test (&_data8_->_ref_count_)) {
		ContactsApp* self;
		self = _data8_->self;
		_g_object_unref0 (self);
		g_slice_free (Block8Data, _data8_);
	}
}


static void __lambda98_ (Block8Data* _data8_) {
	ContactsApp* self;
	guint _tmp0_;
	ContactsStore* _tmp1_;
	gulong _tmp2_;
	ContactsWindow* _tmp3_;
	self = _data8_->self;
	_tmp0_ = _data8_->id2;
	g_source_remove (_tmp0_);
	_tmp1_ = self->priv->contacts_store;
	_tmp2_ = _data8_->id;
	g_signal_handler_disconnect ((GObject*) _tmp1_, _tmp2_);
	g_debug ("contacts-app.vala:228: callign set_list_pane from quiescent.connect");
	_tmp3_ = self->priv->window;
	contacts_window_set_list_pane (_tmp3_);
}


static void ___lambda98__contacts_store_quiescent (ContactsStore* _sender, gpointer self) {
	__lambda98_ (self);
}


static gboolean __lambda99_ (Block8Data* _data8_) {
	ContactsApp* self;
	gboolean result = FALSE;
	ContactsStore* _tmp0_;
	gulong _tmp1_;
	ContactsWindow* _tmp2_;
	self = _data8_->self;
	_tmp0_ = self->priv->contacts_store;
	_tmp1_ = _data8_->id;
	g_signal_handler_disconnect ((GObject*) _tmp0_, _tmp1_);
	g_debug ("contacts-app.vala:235: callign set_list_pane from 500.timeout");
	_tmp2_ = self->priv->window;
	contacts_window_set_list_pane (_tmp2_);
	result = FALSE;
	return result;
}


static gboolean ___lambda99__gsource_func (gpointer self) {
	gboolean result;
	result = __lambda99_ (self);
	return result;
}


static void contacts_app_schedule_window_finish_ui (ContactsApp* self) {
	Block8Data* _data8_;
	ContactsStore* _tmp0_;
	gulong _tmp1_;
	guint _tmp2_;
	g_return_if_fail (self != NULL);
	_data8_ = g_slice_new0 (Block8Data);
	_data8_->_ref_count_ = 1;
	_data8_->self = g_object_ref (self);
	_data8_->id = (gulong) 0;
	_data8_->id2 = (guint) 0;
	_tmp0_ = self->priv->contacts_store;
	_tmp1_ = g_signal_connect_data (_tmp0_, "quiescent", (GCallback) ___lambda98__contacts_store_quiescent, block8_data_ref (_data8_), (GClosureNotify) block8_data_unref, 0);
	_data8_->id = _tmp1_;
	_tmp2_ = g_timeout_add_full (G_PRIORITY_DEFAULT, (guint) 500, ___lambda99__gsource_func, block8_data_ref (_data8_), block8_data_unref);
	_data8_->id2 = _tmp2_;
	self->priv->is_quiescent_scheduled = TRUE;
	block8_data_unref (_data8_);
	_data8_ = NULL;
}


static void contacts_app_real_startup (GApplication* base) {
	ContactsApp * self;
	gboolean _tmp0_;
	ContactsStore* _tmp1_;
	GtkCssProvider* css_provider = NULL;
	GtkCssProvider* _tmp2_;
	GdkScreen* _tmp3_;
	self = (ContactsApp*) base;
	_tmp0_ = contacts_ensure_eds_accounts (TRUE);
	if (!_tmp0_) {
		g_application_quit ((GApplication*) self);
	}
	_tmp1_ = contacts_store_new ();
	_g_object_unref0 (self->priv->contacts_store);
	self->priv->contacts_store = _tmp1_;
	G_APPLICATION_CLASS (contacts_app_parent_class)->startup ((GApplication*) G_TYPE_CHECK_INSTANCE_CAST (self, gtk_application_get_type (), GtkApplication));
	_tmp2_ = contacts_load_css ("style.css");
	css_provider = _tmp2_;
	_tmp3_ = gdk_screen_get_default ();
	gtk_style_context_add_provider_for_screen (_tmp3_, (GtkStyleProvider*) css_provider, (guint) GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
	_g_object_unref0 (css_provider);
}


static void contacts_app_real_activate (GApplication* base) {
	ContactsApp * self;
	ContactsWindow* _tmp0_;
	ContactsStore* _tmp6_;
	gboolean _tmp7_;
	gboolean _tmp8_;
	ContactsWindow* _tmp11_;
	self = (ContactsApp*) base;
	_tmp0_ = self->priv->window;
	if (_tmp0_ == NULL) {
		ContactsStore* _tmp1_;
		gboolean _tmp2_;
		gboolean _tmp3_;
		ContactsWindow* _tmp5_;
		_tmp1_ = self->priv->contacts_store;
		_tmp2_ = contacts_store_get_is_prepared (_tmp1_);
		_tmp3_ = _tmp2_;
		if (!_tmp3_) {
			gboolean _tmp4_;
			_tmp4_ = self->priv->is_prepare_scheluded;
			if (!_tmp4_) {
				contacts_app_schedule_window_creation (self);
				return;
			}
		}
		contacts_app_create_app_menu (self);
		contacts_app_create_window (self);
		_tmp5_ = self->priv->window;
		gtk_widget_show ((GtkWidget*) _tmp5_);
	}
	_tmp6_ = self->priv->contacts_store;
	_tmp7_ = contacts_store_get_is_quiescent (_tmp6_);
	_tmp8_ = _tmp7_;
	if (_tmp8_) {
		ContactsWindow* _tmp9_;
		g_debug ("contacts-app.vala:273: callign set_list_pane cause store is already qu" \
"iescent");
		_tmp9_ = self->priv->window;
		contacts_window_set_list_pane (_tmp9_);
	} else {
		gboolean _tmp10_;
		_tmp10_ = self->priv->is_quiescent_scheduled;
		if (!_tmp10_) {
			contacts_app_schedule_window_finish_ui (self);
		}
	}
	_tmp11_ = self->priv->window;
	if (_tmp11_ != NULL) {
		ContactsWindow* _tmp12_;
		_tmp12_ = self->priv->window;
		gtk_window_present ((GtkWindow*) _tmp12_);
	}
}


void contacts_app_new_contact (ContactsApp* self) {
	ContactsWindow* _tmp0_;
	g_return_if_fail (self != NULL);
	_tmp0_ = self->priv->window;
	contacts_window_new_contact (_tmp0_);
}


static gint contacts_app_real_command_line (GApplication* base, GApplicationCommandLine* command_line) {
	ContactsApp * self;
	gint result = 0;
	gchar** args = NULL;
	GApplicationCommandLine* _tmp0_;
	gint _tmp1_;
	gchar** _tmp2_;
	gint args_length1;
	gint _args_size_;
	gchar** _args = NULL;
	gchar** _tmp3_;
	gint _tmp3__length1;
	gint _args_length1;
	gint __args_size_;
	GOptionContext* context = NULL;
	GOptionContext* _tmp4_;
	GOptionContext* _tmp5_;
	GOptionContext* _tmp6_;
	GOptionContext* _tmp7_;
	GOptionGroup* _tmp8_;
	const gchar* _tmp13_;
	const gchar* _tmp15_;
	const gchar* _tmp17_;
	GError * _inner_error_ = NULL;
	self = (ContactsApp*) base;
	g_return_val_if_fail (command_line != NULL, 0);
	_tmp0_ = command_line;
	_tmp2_ = g_application_command_line_get_arguments (_tmp0_, &_tmp1_);
	args = _tmp2_;
	args_length1 = _tmp1_;
	_args_size_ = args_length1;
	_tmp3_ = args;
	_tmp3__length1 = args_length1;
	_args = _tmp3_;
	_args_length1 = _tmp3__length1;
	__args_size_ = _args_length1;
	_tmp4_ = g_option_context_new (N_ ("— contact management"));
	context = _tmp4_;
	_tmp5_ = context;
	g_option_context_add_main_entries (_tmp5_, CONTACTS_APP_options, GETTEXT_PACKAGE);
	_tmp6_ = context;
	g_option_context_set_translation_domain (_tmp6_, GETTEXT_PACKAGE);
	_tmp7_ = context;
	_tmp8_ = gtk_get_option_group (TRUE);
	g_option_context_add_group (_tmp7_, _tmp8_);
	_g_free0 (contacts_app_individual_id);
	contacts_app_individual_id = NULL;
	_g_free0 (contacts_app_email_address);
	contacts_app_email_address = NULL;
	_g_free0 (contacts_app_search_terms);
	contacts_app_search_terms = NULL;
	{
		GOptionContext* _tmp9_;
		_tmp9_ = context;
		g_option_context_parse (_tmp9_, &_args_length1, &_args, &_inner_error_);
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			goto __catch1_g_error;
		}
	}
	goto __finally1;
	__catch1_g_error:
	{
		GError* e = NULL;
		GError* _tmp10_;
		const gchar* _tmp11_;
		e = _inner_error_;
		_inner_error_ = NULL;
		_tmp10_ = e;
		_tmp11_ = _tmp10_->message;
		g_printerr ("Unable to parse: %s\n", _tmp11_);
		result = 1;
		_g_error_free0 (e);
		_g_option_context_free0 (context);
		args = (_vala_array_free (args, args_length1, (GDestroyNotify) g_free), NULL);
		return result;
	}
	__finally1:
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		gint _tmp12_ = 0;
		_g_option_context_free0 (context);
		args = (_vala_array_free (args, args_length1, (GDestroyNotify) g_free), 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 _tmp12_;
	}
	g_application_activate ((GApplication*) self);
	_tmp13_ = contacts_app_individual_id;
	if (_tmp13_ != NULL) {
		const gchar* _tmp14_;
		_tmp14_ = contacts_app_individual_id;
		contacts_app_show_individual (self, _tmp14_, NULL, NULL);
	}
	_tmp15_ = contacts_app_email_address;
	if (_tmp15_ != NULL) {
		const gchar* _tmp16_;
		_tmp16_ = contacts_app_email_address;
		contacts_app_show_by_email (self, _tmp16_, NULL, NULL);
	}
	_tmp17_ = contacts_app_search_terms;
	if (_tmp17_ != NULL) {
		const gchar* _tmp18_;
		_tmp18_ = contacts_app_search_terms;
		contacts_app_show_search (self, _tmp18_);
	}
	result = 0;
	_g_option_context_free0 (context);
	args = (_vala_array_free (args, args_length1, (GDestroyNotify) g_free), NULL);
	return result;
}


ContactsApp* contacts_app_construct (GType object_type) {
	ContactsApp * self = NULL;
	ContactsSettings* _tmp0_;
	self = (ContactsApp*) g_object_new (object_type, "application-id", "org.gnome.Contacts", "flags", G_APPLICATION_HANDLES_COMMAND_LINE, NULL);
	_tmp0_ = contacts_settings_new (self);
	_contacts_settings_unref0 (self->priv->settings);
	self->priv->settings = _tmp0_;
	return self;
}


ContactsApp* contacts_app_new (void) {
	return contacts_app_construct (CONTACTS_TYPE_APP);
}


static void contacts_app_class_init (ContactsAppClass * klass) {
	contacts_app_parent_class = g_type_class_peek_parent (klass);
	g_type_class_add_private (klass, sizeof (ContactsAppPrivate));
	((GApplicationClass *) klass)->startup = (void (*) (GApplication *)) contacts_app_real_startup;
	((GApplicationClass *) klass)->activate = (void (*) (GApplication *)) contacts_app_real_activate;
	((GApplicationClass *) klass)->command_line = (gint (*) (GApplication *, GApplicationCommandLine*)) contacts_app_real_command_line;
	G_OBJECT_CLASS (klass)->finalize = contacts_app_finalize;
}


static void contacts_app_instance_init (ContactsApp * self) {
	self->priv = CONTACTS_APP_GET_PRIVATE (self);
	self->priv->is_prepare_scheluded = FALSE;
	self->priv->is_quiescent_scheduled = FALSE;
}


static void contacts_app_finalize (GObject * obj) {
	ContactsApp * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, CONTACTS_TYPE_APP, ContactsApp);
	_contacts_settings_unref0 (self->priv->settings);
	_g_object_unref0 (self->priv->contacts_store);
	_g_object_unref0 (self->priv->window);
	G_OBJECT_CLASS (contacts_app_parent_class)->finalize (obj);
}


GType contacts_app_get_type (void) {
	static volatile gsize contacts_app_type_id__volatile = 0;
	if (g_once_init_enter (&contacts_app_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (ContactsAppClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) contacts_app_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ContactsApp), 0, (GInstanceInitFunc) contacts_app_instance_init, NULL };
		GType contacts_app_type_id;
		contacts_app_type_id = g_type_register_static (gtk_application_get_type (), "ContactsApp", &g_define_type_info, 0);
		g_once_init_leave (&contacts_app_type_id__volatile, contacts_app_type_id);
	}
	return contacts_app_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);
}



