Wed, 07 Aug 2024 01:42:18 -0500
Add a system property to PurpleMessage
Testing Done:
Ran the turtles.
Reviewed at https://reviews.imfreedom.org/r/3359/
--- a/libpurple/purplemessage.c Wed Aug 07 01:39:59 2024 -0500 +++ b/libpurple/purplemessage.c Wed Aug 07 01:42:18 2024 -0500 @@ -36,9 +36,11 @@ char *author_alias; char *contents; - gboolean action; - gboolean event; - gboolean notice; + + guint action : 1; + guint event : 1; + guint notice : 1; + guint system : 1; GDateTime *timestamp; PurpleMessageFlags flags; @@ -68,6 +70,7 @@ PROP_FLAGS, PROP_ID, PROP_NOTICE, + PROP_SYSTEM, PROP_TIMESTAMP, N_PROPERTIES, }; @@ -144,6 +147,9 @@ case PROP_NOTICE: g_value_set_boolean(value, purple_message_get_notice(message)); break; + case PROP_SYSTEM: + g_value_set_boolean(value, purple_message_get_system(message)); + break; case PROP_TIMESTAMP: g_value_set_boxed(value, purple_message_get_timestamp(message)); break; @@ -204,6 +210,9 @@ case PROP_NOTICE: purple_message_set_notice(message, g_value_get_boolean(value)); break; + case PROP_SYSTEM: + purple_message_set_system(message, g_value_get_boolean(value)); + break; case PROP_TIMESTAMP: purple_message_set_timestamp(message, g_value_get_boxed(value)); break; @@ -454,6 +463,20 @@ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); /** + * PurpleMessage:system: + * + * Whether or not this is a system message. + * + * System messages are used to present errors and warnings to the user. + * + * Since: 3.0 + */ + properties[PROP_SYSTEM] = g_param_spec_boolean( + "system", NULL, NULL, + FALSE, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + + /** * PurpleMessage:timestamp: * * The timestamp of the message. @@ -565,6 +588,7 @@ "contents", contents, "timestamp", dt, "flags", flags, + "system", TRUE, NULL); g_date_time_unref(dt); @@ -842,6 +866,24 @@ } } +gboolean +purple_message_get_system(PurpleMessage *message) { + g_return_val_if_fail(PURPLE_IS_MESSAGE(message), FALSE); + + return message->system; +} + +void +purple_message_set_system(PurpleMessage *message, gboolean system) { + g_return_if_fail(PURPLE_IS_MESSAGE(message)); + + if(message->system != system) { + message->system = system; + + g_object_notify_by_pspec(G_OBJECT(message), properties[PROP_SYSTEM]); + } +} + GDateTime * purple_message_get_timestamp(PurpleMessage *message) { g_return_val_if_fail(PURPLE_IS_MESSAGE(message), 0);
--- a/libpurple/purplemessage.h Wed Aug 07 01:39:59 2024 -0500 +++ b/libpurple/purplemessage.h Wed Aug 07 01:42:18 2024 -0500 @@ -557,6 +557,31 @@ void purple_message_set_notice(PurpleMessage *message, gboolean notice); /** + * purple_message_get_system: + * @message: The instance. + * + * Gets whether or not @message is a system message. + * + * Returns: %TRUE if @message is a system message, otherwise %FALSE. + * + * Since: 3.0 + */ +PURPLE_AVAILABLE_IN_3_0 +gboolean purple_message_get_system(PurpleMessage *message); + +/** + * purple_message_set_system: + * @message: The instance. + * @system: %TRUE to mark @message as a system message. + * + * Sets whether or not @message is a system message. + * + * Since: 3.0 + */ +PURPLE_AVAILABLE_IN_3_0 +void purple_message_set_system(PurpleMessage *message, gboolean system); + +/** * purple_message_get_timestamp: * @message: The message. *
--- a/libpurple/tests/test_message.c Wed Aug 07 01:39:59 2024 -0500 +++ b/libpurple/tests/test_message.c Wed Aug 07 01:42:18 2024 -0500 @@ -56,6 +56,7 @@ gboolean edited = FALSE; gboolean event = FALSE; gboolean notice = FALSE; + gboolean system = FALSE; timestamp = g_date_time_new_from_unix_utc(911347200); error = g_error_new(g_quark_from_static_string("test-message"), 0, @@ -79,6 +80,7 @@ "flags", PURPLE_MESSAGE_SYSTEM, "id", "id", "notice", TRUE, + "system", TRUE, "timestamp", timestamp, NULL); @@ -98,6 +100,7 @@ "flags", &flags, "id", &id, "notice", ¬ice, + "system", &system, "timestamp", ×tamp1, NULL); @@ -136,6 +139,8 @@ g_assert_true(notice); + g_assert_true(system); + g_assert_true(g_date_time_equal(timestamp1, timestamp)); g_clear_pointer(×tamp, g_date_time_unref); g_clear_pointer(×tamp1, g_date_time_unref);