libpurple/purpleconversation.c

changeset 43234
85be702275e6
parent 43137
8d1d2ab65c87
child 43301
0e43dc8462e8
equal deleted inserted replaced
43233:9a9dd3407402 43234:85be702275e6
79 79
80 gboolean logging; 80 gboolean logging;
81 gboolean drafting; 81 gboolean drafting;
82 82
83 GError *error; 83 GError *error;
84
85 char *url;
84 }; 86 };
85 87
86 enum { 88 enum {
87 PROP_0, 89 PROP_0,
88 PROP_ID, 90 PROP_ID,
115 PROP_NEEDS_ATTENTION, 117 PROP_NEEDS_ATTENTION,
116 PROP_TYPING_STATE, 118 PROP_TYPING_STATE,
117 PROP_LOGGING, 119 PROP_LOGGING,
118 PROP_DRAFTING, 120 PROP_DRAFTING,
119 PROP_ERROR, 121 PROP_ERROR,
122 PROP_URL,
120 N_PROPERTIES, 123 N_PROPERTIES,
121 }; 124 };
122 static GParamSpec *properties[N_PROPERTIES] = {NULL, }; 125 static GParamSpec *properties[N_PROPERTIES] = {NULL, };
123 126
124 enum { 127 enum {
601 break; 604 break;
602 case PROP_DRAFTING: 605 case PROP_DRAFTING:
603 purple_conversation_set_drafting(conversation, 606 purple_conversation_set_drafting(conversation,
604 g_value_get_boolean(value)); 607 g_value_get_boolean(value));
605 break; 608 break;
609 case PROP_URL:
610 purple_conversation_set_url(conversation, g_value_get_string(value));
611 break;
606 case PROP_ERROR: 612 case PROP_ERROR:
607 purple_conversation_set_error(conversation, g_value_get_boxed(value)); 613 purple_conversation_set_error(conversation, g_value_get_boxed(value));
608 break; 614 break;
609 default: 615 default:
610 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec); 616 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
738 g_value_set_boolean(value, 744 g_value_set_boolean(value,
739 purple_conversation_get_drafting(conversation)); 745 purple_conversation_get_drafting(conversation));
740 break; 746 break;
741 case PROP_ERROR: 747 case PROP_ERROR:
742 g_value_set_boxed(value, purple_conversation_get_error(conversation)); 748 g_value_set_boxed(value, purple_conversation_get_error(conversation));
749 break;
750 case PROP_URL:
751 g_value_set_string(value, purple_conversation_get_url(conversation));
743 break; 752 break;
744 default: 753 default:
745 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec); 754 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
746 break; 755 break;
747 } 756 }
815 g_clear_handle_id(&conversation->typing_state_source, g_source_remove); 824 g_clear_handle_id(&conversation->typing_state_source, g_source_remove);
816 g_clear_pointer(&conversation->last_typing, g_date_time_unref); 825 g_clear_pointer(&conversation->last_typing, g_date_time_unref);
817 826
818 g_clear_error(&conversation->error); 827 g_clear_error(&conversation->error);
819 828
829 g_clear_pointer(&conversation->url, g_free);
830
820 G_OBJECT_CLASS(purple_conversation_parent_class)->finalize(object); 831 G_OBJECT_CLASS(purple_conversation_parent_class)->finalize(object);
821 } 832 }
822 833
823 static void 834 static void
824 purple_conversation_class_init(PurpleConversationClass *klass) { 835 purple_conversation_class_init(PurpleConversationClass *klass) {
1331 * Since: 3.0 1342 * Since: 3.0
1332 */ 1343 */
1333 properties[PROP_ERROR] = g_param_spec_boxed( 1344 properties[PROP_ERROR] = g_param_spec_boxed(
1334 "error", NULL, NULL, 1345 "error", NULL, NULL,
1335 G_TYPE_ERROR, 1346 G_TYPE_ERROR,
1347 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
1348
1349 /**
1350 * PurpleConversation:url:
1351 *
1352 * A URL related to the conversation.
1353 *
1354 * Some networks, notably IRC, allow you to associate a URL with a
1355 * conversation. In that case, it is generally a URL to get more
1356 * information about the conversation and not a URL to the conversation
1357 * itself.
1358 *
1359 * Since: 3.0
1360 */
1361 properties[PROP_URL] = g_param_spec_string(
1362 "url", NULL, NULL,
1363 NULL,
1336 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); 1364 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
1337 1365
1338 g_object_class_install_properties(obj_class, N_PROPERTIES, properties); 1366 g_object_class_install_properties(obj_class, N_PROPERTIES, properties);
1339 1367
1340 /** 1368 /**
2264 message); 2292 message);
2265 } 2293 }
2266 2294
2267 return member; 2295 return member;
2268 } 2296 }
2297
2298 const char *
2299 purple_conversation_get_url(PurpleConversation *conversation) {
2300 g_return_val_if_fail(PURPLE_IS_CONVERSATION(conversation), NULL);
2301
2302 return conversation->url;
2303 }
2304
2305 void
2306 purple_conversation_set_url(PurpleConversation *conversation, const char *url)
2307 {
2308 g_return_if_fail(PURPLE_IS_CONVERSATION(conversation));
2309
2310 if(g_set_str(&conversation->url, url)) {
2311 g_object_notify_by_pspec(G_OBJECT(conversation), properties[PROP_URL]);
2312 }
2313 }

mercurial