libpurple/purplenotificationlink.c

Thu, 07 Aug 2025 21:32:18 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Thu, 07 Aug 2025 21:32:18 -0500
changeset 43300
0604c6839974
parent 42936
022c7b7102d9
permissions
-rw-r--r--

Clean up and modernize PurpleImage

Testing Done:
Ran the tests under valgrind and called in the turtles.

Reviewed at https://reviews.imfreedom.org/r/4074/

42936
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1 /*
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
2 * Purple - Internet Messaging Library
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
3 * Copyright (C) Pidgin Developers <devel@pidgin.im>
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
4 *
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
5 * Purple is the legal property of its developers, whose names are too numerous
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
6 * to list here. Please refer to the COPYRIGHT file distributed with this
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
7 * source distribution.
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
8 *
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
9 * This library is free software; you can redistribute it and/or modify it
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
10 * under the terms of the GNU General Public License as published by the Free
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
11 * Software Foundation; either version 2 of the License, or (at your option)
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
12 * any later version.
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
13 *
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
14 * This library is distributed in the hope that it will be useful, but WITHOUT
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
15 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
16 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
17 * more details.
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
18 *
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
19 * You should have received a copy of the GNU General Public License along with
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
20 * this library; if not, see <https://www.gnu.org/licenses/>.
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
21 */
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
22
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
23 #include "purplenotificationlink.h"
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
24
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
25 #include "util.h"
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
26
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
27 struct _PurpleNotificationLink {
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
28 PurpleNotification parent;
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
29
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
30 char *link_text;
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
31 char *link_uri;
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
32 };
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
33
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
34 enum {
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
35 PROP_0,
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
36 PROP_LINK_TEXT,
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
37 PROP_LINK_URI,
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
38 N_PROPERTIES,
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
39 };
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
40 static GParamSpec *properties[N_PROPERTIES] = {NULL, };
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
41
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
42 /******************************************************************************
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
43 * Helpers
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
44 *****************************************************************************/
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
45 static void
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
46 purple_notification_link_set_link_text(PurpleNotificationLink *notification,
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
47 const char *link_text)
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
48 {
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
49 g_return_if_fail(PURPLE_IS_NOTIFICATION_LINK(notification));
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
50
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
51 if(g_set_str(&notification->link_text, link_text)) {
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
52 g_object_notify_by_pspec(G_OBJECT(notification),
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
53 properties[PROP_LINK_TEXT]);
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
54 }
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
55 }
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
56
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
57 static void
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
58 purple_notification_link_set_link_uri(PurpleNotificationLink *notification,
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
59 const char *link_uri)
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
60 {
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
61 g_return_if_fail(PURPLE_IS_NOTIFICATION_LINK(notification));
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
62 g_return_if_fail(!purple_strempty(link_uri));
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
63
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
64 if(g_set_str(&notification->link_uri, link_uri)) {
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
65 g_object_notify_by_pspec(G_OBJECT(notification),
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
66 properties[PROP_LINK_URI]);
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
67 }
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
68 }
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
69
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
70 /******************************************************************************
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
71 * GObject Implementation
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
72 *****************************************************************************/
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
73 G_DEFINE_FINAL_TYPE(PurpleNotificationLink, purple_notification_link,
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
74 PURPLE_TYPE_NOTIFICATION)
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
75
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
76 static void
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
77 purple_notification_link_finalize(GObject *obj) {
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
78 PurpleNotificationLink *notification = PURPLE_NOTIFICATION_LINK(obj);
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
79
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
80 g_clear_pointer(&notification->link_text, g_free);
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
81 g_clear_pointer(&notification->link_uri, g_free);
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
82
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
83 G_OBJECT_CLASS(purple_notification_link_parent_class)->finalize(obj);
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
84 }
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
85
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
86 static void
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
87 purple_notification_link_get_property(GObject *obj, guint param_id,
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
88 GValue *value, GParamSpec *pspec)
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
89 {
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
90 PurpleNotificationLink *notification = PURPLE_NOTIFICATION_LINK(obj);
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
91
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
92 switch(param_id) {
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
93 case PROP_LINK_TEXT:
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
94 g_value_set_string(value,
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
95 purple_notification_link_get_link_text(notification));
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
96 break;
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
97 case PROP_LINK_URI:
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
98 g_value_set_string(value,
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
99 purple_notification_link_get_link_uri(notification));
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
100 break;
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
101 default:
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
102 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
103 break;
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
104 }
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
105 }
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
106
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
107 static void
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
108 purple_notification_link_set_property(GObject *obj, guint param_id,
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
109 const GValue *value, GParamSpec *pspec)
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
110 {
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
111 PurpleNotificationLink *notification = PURPLE_NOTIFICATION_LINK(obj);
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
112
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
113 switch(param_id) {
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
114 case PROP_LINK_TEXT:
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
115 purple_notification_link_set_link_text(notification,
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
116 g_value_get_string(value));
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
117 break;
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
118 case PROP_LINK_URI:
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
119 purple_notification_link_set_link_uri(notification,
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
120 g_value_get_string(value));
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
121 break;
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
122 default:
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
123 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
124 break;
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
125 }
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
126 }
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
127
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
128 static void
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
129 purple_notification_link_init(G_GNUC_UNUSED PurpleNotificationLink *notification)
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
130 {
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
131 }
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
132
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
133 static void
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
134 purple_notification_link_class_init(PurpleNotificationLinkClass *klass) {
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
135 GObjectClass *obj_class = G_OBJECT_CLASS(klass);
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
136
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
137 obj_class->finalize = purple_notification_link_finalize;
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
138 obj_class->get_property = purple_notification_link_get_property;
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
139 obj_class->set_property = purple_notification_link_set_property;
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
140
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
141 /**
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
142 * PurpleNotificationLink:link-text:
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
143 *
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
144 * The text to display instead of the URI.
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
145 *
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
146 * If this is not set, the value of [property@NotificationLink:link-uri]
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
147 * will be returned.
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
148 *
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
149 * Since: 3.0
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
150 */
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
151 properties[PROP_LINK_TEXT] = g_param_spec_string(
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
152 "link-text", NULL, NULL,
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
153 NULL,
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
154 G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
155
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
156 /**
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
157 * PurpleNotificationLink:link-uri:
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
158 *
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
159 * The URI for this notification.
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
160 *
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
161 * Since: 3.0
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
162 */
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
163 properties[PROP_LINK_URI] = g_param_spec_string(
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
164 "link-uri", NULL, NULL,
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
165 NULL,
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
166 G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
167
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
168 g_object_class_install_properties(obj_class, N_PROPERTIES, properties);
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
169 }
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
170
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
171 /******************************************************************************
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
172 * Public API
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
173 *****************************************************************************/
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
174 PurpleNotification *
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
175 purple_notification_link_new(const char *id, const char *title,
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
176 const char *link_text, const char *link_uri)
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
177 {
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
178 g_return_val_if_fail(!purple_strempty(title), NULL);
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
179 g_return_val_if_fail(!purple_strempty(link_uri), NULL);
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
180
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
181 return g_object_new(
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
182 PURPLE_TYPE_NOTIFICATION_LINK,
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
183 "id", id,
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
184 "title", title,
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
185 "link-text", link_text,
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
186 "link-uri", link_uri,
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
187 NULL);
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
188 }
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
189
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
190 const char *
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
191 purple_notification_link_get_link_text(PurpleNotificationLink *notification) {
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
192 g_return_val_if_fail(PURPLE_IS_NOTIFICATION_LINK(notification), NULL);
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
193
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
194 if(!purple_strempty(notification->link_text)) {
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
195 return notification->link_text;
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
196 }
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
197
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
198 return notification->link_uri;
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
199 }
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
200
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
201 const char *
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
202 purple_notification_link_get_link_uri(PurpleNotificationLink *notification) {
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
203 g_return_val_if_fail(PURPLE_IS_NOTIFICATION_LINK(notification), NULL);
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
204
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
205 return notification->link_uri;
022c7b7102d9 Add Purple.NotificationLink
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
206 }

mercurial