pidgin/pidginpresenceicon.c

Wed, 01 Jan 2025 15:37:20 -0600

author
Gary Kramlich <grim@reaperworld.com>
date
Wed, 01 Jan 2025 15:37:20 -0600
changeset 43121
3d448c75d39a
parent 43072
a59a119b74f5
child 43285
acde304cf24c
permissions
-rw-r--r--

Added tag v2.90.1 for changeset a7fd7e06c486

40601
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1 /*
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
2 * Pidgin - Internet Messenger
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
3 * Copyright (C) Pidgin Developers <devel@pidgin.im>
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
4 *
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
5 * Pidgin is the legal property of its developers, whose names are too numerous
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
6 * to list here. Please refer to the COPYRIGHT file distributed with this
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
7 * source distribution.
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
8 *
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
9 * This program is free software; you can redistribute it and/or modify
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
10 * it under the terms of the GNU General Public License as published by
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
11 * the Free Software Foundation; either version 2 of the License, or
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
12 * (at your option) any later version.
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
13 *
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
14 * This program is distributed in the hope that it will be useful,
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
17 * GNU General Public License for more details.
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
18 *
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
19 * You should have received a copy of the GNU General Public License
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
20 * along with this program; if not, see <https://www.gnu.org/licenses/>.
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
21 */
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
22
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
23 #include "pidgin/pidginpresenceicon.h"
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
24
41027
aa0e688f2f46 Add a bunch of icon name utility functions
Gary Kramlich <grim@reaperworld.com>
parents: 40652
diff changeset
25 #include "pidgin/pidginiconname.h"
40652
0006f8158d6e Extract pidgin_presence_get_icon_name from PidginPresenceIcon so others can use it.
Gary Kramlich <grim@reaperworld.com>
parents: 40604
diff changeset
26
40601
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
27 struct _PidginPresenceIcon {
41355
cb48a8dd1bfc Re-subclass PidginPresenceIcon onto GtkBox as GtkImage is final in Gtk4
Gary Kramlich <grim@reaperworld.com>
parents: 41027
diff changeset
28 GtkBox parent;
cb48a8dd1bfc Re-subclass PidginPresenceIcon onto GtkBox as GtkImage is final in Gtk4
Gary Kramlich <grim@reaperworld.com>
parents: 41027
diff changeset
29
cb48a8dd1bfc Re-subclass PidginPresenceIcon onto GtkBox as GtkImage is final in Gtk4
Gary Kramlich <grim@reaperworld.com>
parents: 41027
diff changeset
30 GtkWidget *icon;
40601
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
31
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
32 PurplePresence *presence;
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
33 gchar *fallback;
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
34 };
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
35
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
36 enum {
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
37 PROP_0,
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
38 PROP_PRESENCE,
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
39 PROP_FALLBACK,
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
40 PROP_ICON_SIZE,
42584
687260353985 Make signal and property enums and initializers consistent
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
41 N_PROPERTIES,
40601
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
42 };
42584
687260353985 Make signal and property enums and initializers consistent
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42575
diff changeset
43 static GParamSpec *properties[N_PROPERTIES] = {NULL, };
40601
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
44
42575
580339aa47cc Make sure all of the final types in pidgin are defined as such
Gary Kramlich <grim@reaperworld.com>
parents: 42537
diff changeset
45 G_DEFINE_FINAL_TYPE(PidginPresenceIcon, pidgin_presence_icon, GTK_TYPE_BOX)
40601
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
46
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
47 /******************************************************************************
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
48 * Implementation
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
49 *****************************************************************************/
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
50 static void
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
51 pidgin_presence_icon_update(PidginPresenceIcon *icon) {
40652
0006f8158d6e Extract pidgin_presence_get_icon_name from PidginPresenceIcon so others can use it.
Gary Kramlich <grim@reaperworld.com>
parents: 40604
diff changeset
52 const gchar *icon_name = NULL;
40601
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
53
41027
aa0e688f2f46 Add a bunch of icon name utility functions
Gary Kramlich <grim@reaperworld.com>
parents: 40652
diff changeset
54 icon_name = pidgin_icon_name_from_presence(icon->presence, icon->fallback);
40601
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
55
41545
b02de51a738e Update PidginPresenceIcon for GTK4
Gary Kramlich <grim@reaperworld.com>
parents: 41479
diff changeset
56 gtk_image_set_from_icon_name(GTK_IMAGE(icon->icon), icon_name);
40601
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
57 }
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
58
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
59 static void
41947
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41545
diff changeset
60 pidgin_presence_icon_active_status_changed_cb(G_GNUC_UNUSED GObject *obj,
7b3312d0760c Bump C standard to C99 for Pidgin files and fix warnings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41545
diff changeset
61 G_GNUC_UNUSED GParamSpec *pspec,
40601
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
62 gpointer data)
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
63 {
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
64 pidgin_presence_icon_update(PIDGIN_PRESENCE_ICON(data));
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
65 }
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
66
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
67 /******************************************************************************
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
68 * GObject Implementation
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
69 *****************************************************************************/
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
70 static void
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
71 pidgin_presence_icon_get_property(GObject *obj, guint param_id, GValue *value,
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
72 GParamSpec *pspec)
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
73 {
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
74 PidginPresenceIcon *icon = PIDGIN_PRESENCE_ICON(obj);
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
75
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
76 switch(param_id) {
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
77 case PROP_PRESENCE:
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
78 g_value_set_object(value, pidgin_presence_icon_get_presence(icon));
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
79 break;
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
80 case PROP_FALLBACK:
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
81 g_value_set_string(value, pidgin_presence_icon_get_fallback(icon));
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
82 break;
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
83 case PROP_ICON_SIZE:
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
84 g_value_set_enum(value, pidgin_presence_icon_get_icon_size(icon));
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
85 break;
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
86 default:
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
87 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
88 break;
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
89 }
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
90 }
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
91
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
92 static void
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
93 pidgin_presence_icon_set_property(GObject *obj, guint param_id,
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
94 const GValue *value, GParamSpec *pspec)
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
95 {
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
96 PidginPresenceIcon *icon = PIDGIN_PRESENCE_ICON(obj);
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
97
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
98 switch(param_id) {
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
99 case PROP_PRESENCE:
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
100 pidgin_presence_icon_set_presence(icon, g_value_get_object(value));
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
101 break;
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
102 case PROP_FALLBACK:
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
103 pidgin_presence_icon_set_fallback(icon, g_value_get_string(value));
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
104 break;
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
105 case PROP_ICON_SIZE:
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
106 pidgin_presence_icon_set_icon_size(icon, g_value_get_enum(value));
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
107 break;
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
108 default:
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
109 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
110 break;
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
111 }
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
112 }
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
113
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
114 static void
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
115 pidgin_presence_icon_finalize(GObject *obj) {
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
116 PidginPresenceIcon *icon = PIDGIN_PRESENCE_ICON(obj);
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
117
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
118 g_clear_object(&icon->presence);
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
119 g_clear_pointer(&icon->fallback, g_free);
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
120
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
121 G_OBJECT_CLASS(pidgin_presence_icon_parent_class)->finalize(obj);
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
122 }
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
123
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
124 static void
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
125 pidgin_presence_icon_init(PidginPresenceIcon *presenceicon) {
41355
cb48a8dd1bfc Re-subclass PidginPresenceIcon onto GtkBox as GtkImage is final in Gtk4
Gary Kramlich <grim@reaperworld.com>
parents: 41027
diff changeset
126 gtk_widget_init_template(GTK_WIDGET(presenceicon));
40601
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
127 }
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
128
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
129 static void
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
130 pidgin_presence_icon_class_init(PidginPresenceIconClass *klass) {
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
131 GObjectClass *obj_class = G_OBJECT_CLASS(klass);
41355
cb48a8dd1bfc Re-subclass PidginPresenceIcon onto GtkBox as GtkImage is final in Gtk4
Gary Kramlich <grim@reaperworld.com>
parents: 41027
diff changeset
132 GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
40601
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
133
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
134 obj_class->finalize = pidgin_presence_icon_finalize;
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
135 obj_class->get_property = pidgin_presence_icon_get_property;
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
136 obj_class->set_property = pidgin_presence_icon_set_property;
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
137
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
138 /**
41479
3d2e114380f6 Add source files to GObject introspection
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41355
diff changeset
139 * PidginPresenceIcon:presence:
40601
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
140 *
41479
3d2e114380f6 Add source files to GObject introspection
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41355
diff changeset
141 * The presence that this icon will be representing.
40601
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
142 */
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
143 properties[PROP_PRESENCE] = g_param_spec_object(
43072
a59a119b74f5 Remove nick and blurb from Pidgin properties
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42767
diff changeset
144 "presence", NULL, NULL,
40601
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
145 PURPLE_TYPE_PRESENCE,
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
146 G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS);
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
147
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
148 /**
41479
3d2e114380f6 Add source files to GObject introspection
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41355
diff changeset
149 * PidginPresenceIcon:fallback:
40601
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
150 *
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
151 * The name of the icon to use as a fallback when no presence is set.
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
152 */
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
153 properties[PROP_FALLBACK] = g_param_spec_string(
43072
a59a119b74f5 Remove nick and blurb from Pidgin properties
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42767
diff changeset
154 "fallback", NULL, NULL,
42537
323123b137f4 Fix the default fallback icon name for PidginPresenceIcon
Gary Kramlich <grim@reaperworld.com>
parents: 41947
diff changeset
155 "pidgin-user-invisible",
40601
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
156 G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS);
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
157
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
158 /**
41479
3d2e114380f6 Add source files to GObject introspection
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41355
diff changeset
159 * PidginPresenceIcon:icon-size:
40601
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
160 *
41479
3d2e114380f6 Add source files to GObject introspection
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41355
diff changeset
161 * The size of the icon that should be used.
40601
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
162 */
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
163 properties[PROP_ICON_SIZE] = g_param_spec_enum(
43072
a59a119b74f5 Remove nick and blurb from Pidgin properties
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42767
diff changeset
164 "icon-size", NULL, NULL,
40601
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
165 GTK_TYPE_ICON_SIZE,
41545
b02de51a738e Update PidginPresenceIcon for GTK4
Gary Kramlich <grim@reaperworld.com>
parents: 41479
diff changeset
166 GTK_ICON_SIZE_NORMAL,
40601
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
167 G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS);
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
168
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
169 g_object_class_install_properties(obj_class, N_PROPERTIES, properties);
41355
cb48a8dd1bfc Re-subclass PidginPresenceIcon onto GtkBox as GtkImage is final in Gtk4
Gary Kramlich <grim@reaperworld.com>
parents: 41027
diff changeset
170
cb48a8dd1bfc Re-subclass PidginPresenceIcon onto GtkBox as GtkImage is final in Gtk4
Gary Kramlich <grim@reaperworld.com>
parents: 41027
diff changeset
171 gtk_widget_class_set_template_from_resource(
cb48a8dd1bfc Re-subclass PidginPresenceIcon onto GtkBox as GtkImage is final in Gtk4
Gary Kramlich <grim@reaperworld.com>
parents: 41027
diff changeset
172 widget_class,
cb48a8dd1bfc Re-subclass PidginPresenceIcon onto GtkBox as GtkImage is final in Gtk4
Gary Kramlich <grim@reaperworld.com>
parents: 41027
diff changeset
173 "/im/pidgin/Pidgin3/presenceicon.ui"
cb48a8dd1bfc Re-subclass PidginPresenceIcon onto GtkBox as GtkImage is final in Gtk4
Gary Kramlich <grim@reaperworld.com>
parents: 41027
diff changeset
174 );
cb48a8dd1bfc Re-subclass PidginPresenceIcon onto GtkBox as GtkImage is final in Gtk4
Gary Kramlich <grim@reaperworld.com>
parents: 41027
diff changeset
175
cb48a8dd1bfc Re-subclass PidginPresenceIcon onto GtkBox as GtkImage is final in Gtk4
Gary Kramlich <grim@reaperworld.com>
parents: 41027
diff changeset
176 gtk_widget_class_bind_template_child(widget_class, PidginPresenceIcon,
cb48a8dd1bfc Re-subclass PidginPresenceIcon onto GtkBox as GtkImage is final in Gtk4
Gary Kramlich <grim@reaperworld.com>
parents: 41027
diff changeset
177 icon);
40601
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
178 }
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
179
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
180 /******************************************************************************
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
181 * Public API
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
182 *****************************************************************************/
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
183 GtkWidget *
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
184 pidgin_presence_icon_new(PurplePresence *presence, const gchar *fallback,
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
185 GtkIconSize icon_size)
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
186 {
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
187 return g_object_new(
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
188 PIDGIN_TYPE_PRESENCE_ICON,
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
189 "presence", presence,
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
190 "fallback", fallback,
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
191 "icon_size", icon_size,
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
192 NULL);
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
193 }
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
194
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
195 PurplePresence *
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
196 pidgin_presence_icon_get_presence(PidginPresenceIcon *icon) {
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
197 g_return_val_if_fail(PIDGIN_IS_PRESENCE_ICON(icon), NULL);
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
198
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
199 return icon->presence;
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
200 }
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
201
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
202 void
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
203 pidgin_presence_icon_set_presence(PidginPresenceIcon *icon,
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
204 PurplePresence *presence)
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
205 {
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
206 PurplePresence *old = NULL;
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
207
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
208 g_return_if_fail(PIDGIN_IS_PRESENCE_ICON(icon));
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
209
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
210 /* We only want to disconnect signal handlers if the presence was changed,
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
211 * but to do that, we need to keep a reference to the old presence.
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
212 */
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
213 if(PURPLE_IS_PRESENCE(icon->presence)) {
40604
cd55d0fc0f81 Fix some more new warnings.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 40601
diff changeset
214 old = g_object_ref(icon->presence);
40601
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
215 }
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
216
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
217 if(g_set_object(&icon->presence, presence)) {
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
218 if(G_IS_OBJECT(old)) {
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
219 /* If we previously had a presence, disconnect our signal handlers.
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
220 */
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
221 g_signal_handlers_disconnect_by_data(old, icon);
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
222 }
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
223
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
224 if(PURPLE_IS_PRESENCE(icon->presence)) {
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
225 g_signal_connect(icon->presence, "notify::active-status",
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
226 G_CALLBACK(pidgin_presence_icon_active_status_changed_cb),
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
227 icon);
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
228 }
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
229
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
230 g_object_freeze_notify(G_OBJECT(icon));
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
231
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
232 pidgin_presence_icon_update(icon);
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
233
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
234 g_object_notify_by_pspec(G_OBJECT(icon), properties[PROP_PRESENCE]);
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
235
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
236 g_object_thaw_notify(G_OBJECT(icon));
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
237 }
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
238
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
239 g_clear_object(&old);
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
240 }
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
241
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
242 const gchar *
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
243 pidgin_presence_icon_get_fallback(PidginPresenceIcon *icon) {
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
244 g_return_val_if_fail(PIDGIN_IS_PRESENCE_ICON(icon), NULL);
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
245
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
246 return icon->fallback;
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
247 }
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
248
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
249 void
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
250 pidgin_presence_icon_set_fallback(PidginPresenceIcon *icon,
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
251 const gchar *fallback)
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
252 {
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
253 g_return_if_fail(PIDGIN_IS_PRESENCE_ICON(icon));
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
254 g_return_if_fail(fallback != NULL);
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
255
42767
8cf1d11b59c1 Use g_set_str everywhere
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42584
diff changeset
256 if(g_set_str(&icon->fallback, fallback)) {
8cf1d11b59c1 Use g_set_str everywhere
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42584
diff changeset
257 g_object_freeze_notify(G_OBJECT(icon));
40601
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
258
42767
8cf1d11b59c1 Use g_set_str everywhere
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42584
diff changeset
259 pidgin_presence_icon_update(icon);
40601
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
260
42767
8cf1d11b59c1 Use g_set_str everywhere
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42584
diff changeset
261 g_object_notify_by_pspec(G_OBJECT(icon), properties[PROP_FALLBACK]);
40601
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
262
42767
8cf1d11b59c1 Use g_set_str everywhere
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42584
diff changeset
263 g_object_thaw_notify(G_OBJECT(icon));
8cf1d11b59c1 Use g_set_str everywhere
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42584
diff changeset
264 }
40601
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
265 }
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
266
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
267 GtkIconSize
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
268 pidgin_presence_icon_get_icon_size(PidginPresenceIcon *icon) {
41545
b02de51a738e Update PidginPresenceIcon for GTK4
Gary Kramlich <grim@reaperworld.com>
parents: 41479
diff changeset
269 g_return_val_if_fail(PIDGIN_IS_PRESENCE_ICON(icon), GTK_ICON_SIZE_INHERIT);
40601
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
270
41545
b02de51a738e Update PidginPresenceIcon for GTK4
Gary Kramlich <grim@reaperworld.com>
parents: 41479
diff changeset
271 return gtk_image_get_icon_size(GTK_IMAGE(icon->icon));
40601
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
272 }
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
273
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
274 void
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
275 pidgin_presence_icon_set_icon_size(PidginPresenceIcon *icon,
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
276 GtkIconSize icon_size)
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
277 {
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
278 g_return_if_fail(PIDGIN_IS_PRESENCE_ICON(icon));
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
279
41545
b02de51a738e Update PidginPresenceIcon for GTK4
Gary Kramlich <grim@reaperworld.com>
parents: 41479
diff changeset
280 gtk_image_set_icon_size(GTK_IMAGE(icon->icon), icon_size);
40601
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
281
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
282 g_object_freeze_notify(G_OBJECT(icon));
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
283
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
284 pidgin_presence_icon_update(icon);
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
285
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
286 g_object_notify_by_pspec(G_OBJECT(icon), properties[PROP_ICON_SIZE]);
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
287
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
288 g_object_thaw_notify(G_OBJECT(icon));
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
289 }

mercurial