static void show_account (GoaProvider *provider, GoaClient *client, GoaObject *object, GtkBox *vbox, GtkGrid *left, GtkGrid *right) { /* Chain up */ GOA_PROVIDER_CLASS (goa_exchange_provider_parent_class)->show_account (provider, client, object, vbox, left, right); goa_util_add_row_switch_from_keyfile_with_blurb (left, right, object, _("Use for"), "mail-disabled", _("_Mail")); goa_util_add_row_switch_from_keyfile_with_blurb (left, right, object, NULL, "calendar-disabled", _("Cale_ndar")); goa_util_add_row_switch_from_keyfile_with_blurb (left, right, object, NULL, "contacts-disabled", _("_Contacts")); }
static void show_account (GoaProvider *provider, GoaClient *client, GoaObject *object, GtkBox *vbox, GtkTable *table) { /* Chain up */ GOA_PROVIDER_CLASS (goa_flickr_provider_parent_class)->show_account (provider, client, object, vbox, table); goa_util_add_row_editable_label_from_keyfile (table, object, _("User Name"), "PresentationIdentity", FALSE); }
static void goa_telepathy_provider_class_init (GoaTelepathyProviderClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GoaProviderClass *provider_class = GOA_PROVIDER_CLASS (klass); goa_utils_initialize_client_factory (); object_class->constructed = goa_telepathy_provider_constructed; object_class->finalize = goa_telepathy_provider_finalize; object_class->get_property = goa_telepathy_provider_get_property; object_class->set_property = goa_telepathy_provider_set_property; provider_class->get_provider_type = get_provider_type; provider_class->get_provider_name = get_provider_name; provider_class->get_provider_icon = get_provider_icon; provider_class->get_provider_group = get_provider_group; provider_class->get_provider_features = get_provider_features; provider_class->initialize = initialize; provider_class->add_account = add_account; provider_class->refresh_account = refresh_account; provider_class->build_object = build_object; provider_class->remove_account = remove_account; provider_class->remove_account_finish = remove_account_finish; provider_class->show_account = show_account; g_type_class_add_private (object_class, sizeof (GoaTelepathyProviderPrivate)); /** * GoaTelepathyProvider:protocol * * A #TpawProtocol associated to this provider (or NULL). */ properties[PROP_PROTOCOL] = g_param_spec_object ("protocol", "Protocol", "A #TpawProtocol associated to the provider (or NULL)", TPAW_TYPE_PROTOCOL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS); /** * GoaTelepathyProvider:protocol-name * * The name of the protocol associated to the provider. */ properties[PROP_PROTOCOL_NAME] = g_param_spec_string ("protocol-name", "Protocol name", "The name of the protocol associated to the provider", NULL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS); g_object_class_install_properties (object_class, NUM_PROPERTIES, properties); }
static void goa_exchange_provider_class_init (GoaExchangeProviderClass *klass) { GoaProviderClass *provider_class; provider_class = GOA_PROVIDER_CLASS (klass); provider_class->get_provider_type = get_provider_type; provider_class->get_provider_name = get_provider_name; provider_class->add_account = add_account; provider_class->refresh_account = refresh_account; provider_class->build_object = build_object; provider_class->show_account = show_account; provider_class->ensure_credentials_sync = ensure_credentials_sync; }
static gboolean build_object (GoaProvider *provider, GoaObjectSkeleton *object, GKeyFile *key_file, const gchar *group, GDBusConnection *connection, gboolean just_added, GError **error) { GoaAccount *account; gboolean chat_enabled; gboolean ret; account = NULL; ret = FALSE; /* Chain up */ if (!GOA_PROVIDER_CLASS (goa_telepathy_provider_parent_class)->build_object (provider, object, key_file, group, connection, just_added, error)) goto out; account = goa_object_get_account (GOA_OBJECT (object)); /* Chat */ chat_enabled = g_key_file_get_boolean (key_file, group, "ChatEnabled", NULL); goa_object_skeleton_attach_chat (object, chat_enabled); if (just_added) { goa_account_set_chat_disabled (account, !chat_enabled); g_signal_connect (account, "notify::chat-disabled", G_CALLBACK (goa_util_account_notify_property_cb), "ChatEnabled"); } ret = TRUE; out: g_clear_object (&account); return ret; }
static void show_account (GoaProvider *provider, GoaClient *client, GoaObject *object, GtkBox *vbox, GtkGrid *grid, G_GNUC_UNUSED GtkGrid *dummy) { EditData *data = NULL; GtkWidget *params_button = NULL; GtkWidget *details_button = NULL; GtkWidget *button_box = NULL; GOA_PROVIDER_CLASS (goa_telepathy_provider_parent_class)->show_account (provider, client, object, vbox, grid, dummy); data = edit_data_new (object, tpaw_get_toplevel_window (GTK_WIDGET (vbox))); /* Connection Settings button */ params_button = gtk_button_new_with_mnemonic (_("_Connection Settings")); edit_data_handle_button (data, params_button, G_CALLBACK (edit_parameters_clicked_cb)); /* Edit Personal Information button */ details_button = gtk_button_new_with_mnemonic (_("_Personal Details")); edit_data_handle_button (data, details_button, G_CALLBACK (edit_personal_details_clicked_cb)); /* Box containing the buttons */ button_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_box_pack_start (GTK_BOX (button_box), params_button, FALSE, FALSE, 12); gtk_box_pack_start (GTK_BOX (button_box), details_button, FALSE, FALSE, 0); goa_util_add_row_widget (grid, 2, NULL, button_box); edit_data_unref (data); }
static void goa_flickr_provider_class_init (GoaFlickrProviderClass *klass) { GoaProviderClass *provider_class; GoaOAuthProviderClass *oauth_class; provider_class = GOA_PROVIDER_CLASS (klass); provider_class->get_provider_type = get_provider_type; provider_class->get_provider_name = get_provider_name; provider_class->build_object = build_object; provider_class->show_account = show_account; oauth_class = GOA_OAUTH_PROVIDER_CLASS (klass); oauth_class->get_identity_sync = get_identity_sync; oauth_class->get_consumer_key = get_consumer_key; oauth_class->get_consumer_secret = get_consumer_secret; oauth_class->get_request_uri = get_request_uri; oauth_class->get_authorization_uri = get_authorization_uri; oauth_class->get_token_uri = get_token_uri; oauth_class->get_callback_uri = get_callback_uri; oauth_class->get_use_external_browser = get_use_external_browser; oauth_class->build_authorization_uri = build_authorization_uri; }
static gboolean build_object (GoaProvider *provider, GoaObjectSkeleton *object, GKeyFile *key_file, const gchar *group, GError **error) { gboolean ret; ret = FALSE; /* Chain up */ if (!GOA_PROVIDER_CLASS (goa_flickr_provider_parent_class)->build_object (provider, object, key_file, group, error)) goto out; ret = TRUE; out: return ret; }
static gboolean build_object (GoaProvider *provider, GoaObjectSkeleton *object, GKeyFile *key_file, const gchar *group, GDBusConnection *connection, gboolean just_added, GError **error) { GoaAccount *account; GoaCalendar *calendar; GoaContacts *contacts; GoaExchange *exchange; GoaMail *mail; GoaPasswordBased *password_based; gboolean calendar_enabled; gboolean contacts_enabled; gboolean mail_enabled; gboolean ret; account = NULL; calendar = NULL; contacts = NULL; exchange = NULL; mail = NULL; password_based = NULL; ret = FALSE; /* Chain up */ if (!GOA_PROVIDER_CLASS (goa_exchange_provider_parent_class)->build_object (provider, object, key_file, group, connection, just_added, error)) goto out; password_based = goa_object_get_password_based (GOA_OBJECT (object)); if (password_based == NULL) { password_based = goa_password_based_skeleton_new (); /* Ensure D-Bus method invocations run in their own thread */ g_dbus_interface_skeleton_set_flags (G_DBUS_INTERFACE_SKELETON (password_based), G_DBUS_INTERFACE_SKELETON_FLAGS_HANDLE_METHOD_INVOCATIONS_IN_THREAD); goa_object_skeleton_set_password_based (object, password_based); g_signal_connect (password_based, "handle-get-password", G_CALLBACK (on_handle_get_password), NULL); } account = goa_object_get_account (GOA_OBJECT (object)); /* Email */ mail = goa_object_get_mail (GOA_OBJECT (object)); mail_enabled = g_key_file_get_boolean (key_file, group, "MailEnabled", NULL); if (mail_enabled) { if (mail == NULL) { const gchar *email_address; email_address = goa_account_get_presentation_identity (account); mail = goa_mail_skeleton_new (); g_object_set (G_OBJECT (mail), "email-address", email_address, NULL); goa_object_skeleton_set_mail (object, mail); } } else { if (mail != NULL) goa_object_skeleton_set_mail (object, NULL); } /* Calendar */ calendar = goa_object_get_calendar (GOA_OBJECT (object)); calendar_enabled = g_key_file_get_boolean (key_file, group, "CalendarEnabled", NULL); if (calendar_enabled) { if (calendar == NULL) { calendar = goa_calendar_skeleton_new (); goa_object_skeleton_set_calendar (object, calendar); } } else { if (calendar != NULL) goa_object_skeleton_set_calendar (object, NULL); } /* Contacts */ contacts = goa_object_get_contacts (GOA_OBJECT (object)); contacts_enabled = g_key_file_get_boolean (key_file, group, "ContactsEnabled", NULL); if (contacts_enabled) { if (contacts == NULL) { contacts = goa_contacts_skeleton_new (); goa_object_skeleton_set_contacts (object, contacts); } } else { if (contacts != NULL) goa_object_skeleton_set_contacts (object, NULL); } /* Exchange */ exchange = goa_object_get_exchange (GOA_OBJECT (object)); if (exchange == NULL) { gchar *host; host = g_key_file_get_string (key_file, group, "Host", NULL); exchange = goa_exchange_skeleton_new (); g_object_set (G_OBJECT (exchange), "host", host, NULL); goa_object_skeleton_set_exchange (object, exchange); g_free (host); } if (just_added) { goa_account_set_mail_disabled (account, !mail_enabled); goa_account_set_calendar_disabled (account, !calendar_enabled); goa_account_set_contacts_disabled (account, !contacts_enabled); g_signal_connect (account, "notify::mail-disabled", G_CALLBACK (goa_util_account_notify_property_cb), "MailEnabled"); g_signal_connect (account, "notify::calendar-disabled", G_CALLBACK (goa_util_account_notify_property_cb), "CalendarEnabled"); g_signal_connect (account, "notify::contacts-disabled", G_CALLBACK (goa_util_account_notify_property_cb), "ContactsEnabled"); } ret = TRUE; out: if (exchange != NULL) g_object_unref (exchange); if (contacts != NULL) g_object_unref (contacts); if (calendar != NULL) g_object_unref (calendar); if (mail != NULL) g_object_unref (mail); if (password_based != NULL) g_object_unref (password_based); return ret; }