pidgin/pidginpresenceicon.c

Fri, 16 Sep 2022 01:54:11 -0500

author
Elliott Sales de Andrade <quantum.analyst@gmail.com>
date
Fri, 16 Sep 2022 01:54:11 -0500
changeset 41694
83e6692c76a3
parent 41545
b02de51a738e
child 41947
7b3312d0760c
permissions
-rw-r--r--

Change the credential provider row active indicator to a CheckButton

Because I noticed that Adw has a style that is for this sort of thing.

Testing Done:
Opened Credential prefs, and changed selected provider. Also checked that clicking the check button didn't accidentally change its state without changing the row, and that it could not be selected by keyboard separately from the row.

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

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,
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
41 N_PROPERTIES
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
42 };
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
43 static GParamSpec *properties[N_PROPERTIES] = { NULL, };
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
44
41355
cb48a8dd1bfc Re-subclass PidginPresenceIcon onto GtkBox as GtkImage is final in Gtk4
Gary Kramlich <grim@reaperworld.com>
parents: 41027
diff changeset
45 G_DEFINE_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
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
60 pidgin_presence_icon_active_status_changed_cb(GObject *obj, GParamSpec *pspec,
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
61 gpointer data)
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
62 {
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
63 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
64 }
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 * GObject Implementation
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
68 *****************************************************************************/
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
69 static void
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
70 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
71 GParamSpec *pspec)
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
72 {
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
73 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
74
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
75 switch(param_id) {
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
76 case PROP_PRESENCE:
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
77 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
78 break;
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
79 case PROP_FALLBACK:
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
80 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
81 break;
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
82 case PROP_ICON_SIZE:
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
83 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
84 break;
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
85 default:
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
86 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
87 break;
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
88 }
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 static void
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
92 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
93 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
94 {
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
95 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
96
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
97 switch(param_id) {
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
98 case PROP_PRESENCE:
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
99 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
100 break;
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
101 case PROP_FALLBACK:
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
102 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
103 break;
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
104 case PROP_ICON_SIZE:
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
105 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
106 break;
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
107 default:
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
108 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
109 break;
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
110 }
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 static void
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
114 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
115 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
116
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
117 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
118 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
119
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
120 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
121 }
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 static void
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
124 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
125 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
126 }
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 static void
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
129 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
130 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
131 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
132
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
133 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
134 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
135 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
136
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
137 /**
41479
3d2e114380f6 Add source files to GObject introspection
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41355
diff changeset
138 * PidginPresenceIcon:presence:
40601
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
139 *
41479
3d2e114380f6 Add source files to GObject introspection
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41355
diff changeset
140 * 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
141 */
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
142 properties[PROP_PRESENCE] = g_param_spec_object(
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
143 "presence", "presence",
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
144 "The presence that this icon is representing",
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(
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
154 "fallback", "fallback",
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
155 "The name of the icon to use as a fallback",
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
156 "user-invisible",
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
157 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
158
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
159 /**
41479
3d2e114380f6 Add source files to GObject introspection
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41355
diff changeset
160 * PidginPresenceIcon:icon-size:
40601
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
161 *
41479
3d2e114380f6 Add source files to GObject introspection
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41355
diff changeset
162 * 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
163 */
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
164 properties[PROP_ICON_SIZE] = g_param_spec_enum(
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
165 "icon-size", "icon-size",
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
166 "The GtkIconSize to use",
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
167 GTK_TYPE_ICON_SIZE,
41545
b02de51a738e Update PidginPresenceIcon for GTK4
Gary Kramlich <grim@reaperworld.com>
parents: 41479
diff changeset
168 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
169 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
170
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
171 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
172
cb48a8dd1bfc Re-subclass PidginPresenceIcon onto GtkBox as GtkImage is final in Gtk4
Gary Kramlich <grim@reaperworld.com>
parents: 41027
diff changeset
173 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
174 widget_class,
cb48a8dd1bfc Re-subclass PidginPresenceIcon onto GtkBox as GtkImage is final in Gtk4
Gary Kramlich <grim@reaperworld.com>
parents: 41027
diff changeset
175 "/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
176 );
cb48a8dd1bfc Re-subclass PidginPresenceIcon onto GtkBox as GtkImage is final in Gtk4
Gary Kramlich <grim@reaperworld.com>
parents: 41027
diff changeset
177
cb48a8dd1bfc Re-subclass PidginPresenceIcon onto GtkBox as GtkImage is final in Gtk4
Gary Kramlich <grim@reaperworld.com>
parents: 41027
diff changeset
178 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
179 icon);
40601
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
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 * Public API
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
184 *****************************************************************************/
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
185 GtkWidget *
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
186 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
187 GtkIconSize icon_size)
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
188 {
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
189 return g_object_new(
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
190 PIDGIN_TYPE_PRESENCE_ICON,
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
191 "presence", presence,
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
192 "fallback", fallback,
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
193 "icon_size", icon_size,
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
194 NULL);
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
195 }
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
196
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
197 PurplePresence *
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
198 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
199 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
200
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
201 return icon->presence;
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
202 }
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
203
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
204 void
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
205 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
206 PurplePresence *presence)
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 PurplePresence *old = NULL;
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 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
211
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
212 /* 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
213 * 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
214 */
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
215 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
216 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
217 }
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
218
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
219 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
220 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
221 /* 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
222 */
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
223 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
224 }
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
225
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
226 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
227 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
228 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
229 icon);
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
230 }
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 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
233
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
234 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
235
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
236 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
237
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
238 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
239 }
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 g_clear_object(&old);
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
242 }
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
243
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
244 const gchar *
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
245 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
246 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
247
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
248 return icon->fallback;
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
249 }
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
250
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
251 void
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
252 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
253 const gchar *fallback)
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
254 {
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
255 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
256 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
257
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
258 g_free(icon->fallback);
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
259 icon->fallback = g_strdup(fallback);
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
260
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
261 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
262
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
263 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
264
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
265 g_object_notify_by_pspec(G_OBJECT(icon), properties[PROP_FALLBACK]);
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 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
268 }
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
269
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
270 GtkIconSize
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
271 pidgin_presence_icon_get_icon_size(PidginPresenceIcon *icon) {
41545
b02de51a738e Update PidginPresenceIcon for GTK4
Gary Kramlich <grim@reaperworld.com>
parents: 41479
diff changeset
272 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
273
41545
b02de51a738e Update PidginPresenceIcon for GTK4
Gary Kramlich <grim@reaperworld.com>
parents: 41479
diff changeset
274 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
275 }
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
276
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
277 void
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
278 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
279 GtkIconSize icon_size)
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
280 {
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
281 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
282
41545
b02de51a738e Update PidginPresenceIcon for GTK4
Gary Kramlich <grim@reaperworld.com>
parents: 41479
diff changeset
283 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
284
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
285 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
286
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
287 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
288
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
289 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
290
228284223862 Create PidginPresenceIcon that displays the correct icon for its bound PurplePresence
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
291 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
292 }

mercurial