libpurple/purpleconversation.c

changeset 43064
ac5311a8f11e
parent 43056
49358391e695
child 43071
071588186662
equal deleted inserted replaced
43063:45e4e7e39d7f 43064:ac5311a8f11e
70 guint typing_state_source; 70 guint typing_state_source;
71 GDateTime *last_typing; 71 GDateTime *last_typing;
72 72
73 gboolean logging; 73 gboolean logging;
74 gboolean drafting; 74 gboolean drafting;
75
76 GError *error;
75 }; 77 };
76 78
77 enum { 79 enum {
78 PROP_0, 80 PROP_0,
79 PROP_ID, 81 PROP_ID,
102 PROP_MESSAGES, 104 PROP_MESSAGES,
103 PROP_NEEDS_ATTENTION, 105 PROP_NEEDS_ATTENTION,
104 PROP_TYPING_STATE, 106 PROP_TYPING_STATE,
105 PROP_LOGGING, 107 PROP_LOGGING,
106 PROP_DRAFTING, 108 PROP_DRAFTING,
109 PROP_ERROR,
107 N_PROPERTIES, 110 N_PROPERTIES,
108 }; 111 };
109 static GParamSpec *properties[N_PROPERTIES] = {NULL, }; 112 static GParamSpec *properties[N_PROPERTIES] = {NULL, };
110 113
111 enum { 114 enum {
575 break; 578 break;
576 case PROP_DRAFTING: 579 case PROP_DRAFTING:
577 purple_conversation_set_drafting(conversation, 580 purple_conversation_set_drafting(conversation,
578 g_value_get_boolean(value)); 581 g_value_get_boolean(value));
579 break; 582 break;
583 case PROP_ERROR:
584 purple_conversation_set_error(conversation, g_value_get_boxed(value));
585 break;
580 default: 586 default:
581 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec); 587 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
582 break; 588 break;
583 } 589 }
584 } 590 }
693 purple_conversation_get_logging(conversation)); 699 purple_conversation_get_logging(conversation));
694 break; 700 break;
695 case PROP_DRAFTING: 701 case PROP_DRAFTING:
696 g_value_set_boolean(value, 702 g_value_set_boolean(value,
697 purple_conversation_get_drafting(conversation)); 703 purple_conversation_get_drafting(conversation));
704 break;
705 case PROP_ERROR:
706 g_value_set_boxed(value, purple_conversation_get_error(conversation));
698 break; 707 break;
699 default: 708 default:
700 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec); 709 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
701 break; 710 break;
702 } 711 }
774 g_clear_object(&conversation->messages); 783 g_clear_object(&conversation->messages);
775 784
776 g_clear_handle_id(&conversation->typing_state_source, g_source_remove); 785 g_clear_handle_id(&conversation->typing_state_source, g_source_remove);
777 g_clear_pointer(&conversation->last_typing, g_date_time_unref); 786 g_clear_pointer(&conversation->last_typing, g_date_time_unref);
778 787
788 g_clear_error(&conversation->error);
789
779 G_OBJECT_CLASS(purple_conversation_parent_class)->finalize(object); 790 G_OBJECT_CLASS(purple_conversation_parent_class)->finalize(object);
780 } 791 }
781 792
782 static void 793 static void
783 purple_conversation_class_init(PurpleConversationClass *klass) { 794 purple_conversation_class_init(PurpleConversationClass *klass) {
1235 * Since: 3.0 1246 * Since: 3.0
1236 */ 1247 */
1237 properties[PROP_DRAFTING] = g_param_spec_boolean( 1248 properties[PROP_DRAFTING] = g_param_spec_boolean(
1238 "drafting", NULL, NULL, 1249 "drafting", NULL, NULL,
1239 FALSE, 1250 FALSE,
1251 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
1252
1253 /**
1254 * PurpleConversation:error:
1255 *
1256 * An error that was encountered in this conversation. For example, this could
1257 * be a channel connection error or a kick message.
1258 *
1259 * Since: 3.0
1260 */
1261 properties[PROP_ERROR] = g_param_spec_boxed(
1262 "error", NULL, NULL,
1263 G_TYPE_ERROR,
1240 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); 1264 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
1241 1265
1242 g_object_class_install_properties(obj_class, N_PROPERTIES, properties); 1266 g_object_class_install_properties(obj_class, N_PROPERTIES, properties);
1243 1267
1244 /** 1268 /**
2065 2089
2066 g_object_notify_by_pspec(G_OBJECT(conversation), 2090 g_object_notify_by_pspec(G_OBJECT(conversation),
2067 properties[PROP_DRAFTING]); 2091 properties[PROP_DRAFTING]);
2068 } 2092 }
2069 } 2093 }
2094
2095 GError *
2096 purple_conversation_get_error(PurpleConversation *conversation) {
2097 g_return_val_if_fail(PURPLE_IS_CONVERSATION(conversation), NULL);
2098
2099 return conversation->error;
2100 }
2101
2102 void
2103 purple_conversation_set_error(PurpleConversation *conversation,
2104 GError *error)
2105 {
2106 g_return_if_fail(PURPLE_IS_CONVERSATION(conversation));
2107
2108 g_clear_error(&conversation->error);
2109 if(error != NULL) {
2110 conversation->error = g_error_copy(error);
2111 }
2112
2113 g_object_notify_by_pspec(G_OBJECT(conversation), properties[PROP_ERROR]);
2114 }

mercurial