pidgin/pidginaccountdisplay.c

Thu, 23 Mar 2023 23:11:59 -0500

author
Elliott Sales de Andrade <quantum.analyst@gmail.com>
date
Thu, 23 Mar 2023 23:11:59 -0500
changeset 42184
4e1bf25f5575
parent 42165
3c481d9cc840
child 42575
580339aa47cc
permissions
-rw-r--r--

Fix several leaks in tests

All of these are specific to tests, not the library code.

For the moment, `protocol_xfer` still leaks connections (and anything they hold on to) because it is very difficult to disentangle them from the connection manager in the partially implemented state they are in.

This fixes leaks of options in the account option test (these two leaks occur for every test since they all leak the option):
```
61 (48 direct, 13 indirect) bytes in 1 blocks are definitely lost in loss record 133 of 276
at 0x4848464: calloc (vg_replace_malloc.c:1340)
by 0x49F75F0: g_malloc0 (gmem.c:163)
by 0x48C3B2E: purple_account_option_new (purpleaccountoption.c:78)
by 0x4014AF: test_purple_account_option_copy_int (test_account_option.c:67)
by 0x4A1CC7D: UnknownInlinedFun (gtestutils.c:2933)
by 0x4A1CC7D: g_test_run_suite_internal (gtestutils.c:3021)
by 0x4A1C9E4: g_test_run_suite_internal (gtestutils.c:3038)
by 0x4A1C9E4: g_test_run_suite_internal (gtestutils.c:3038)
by 0x4A1D181: g_test_run_suite (gtestutils.c:3115)
by 0x4A156EC: UnknownInlinedFun (gtestutils.c:2234)
by 0x4A156EC: g_test_run (gtestutils.c:2221)
by 0x401721: main (test_account_option.c:157)

61 (48 direct, 13 indirect) bytes in 1 blocks are definitely lost in loss record 134 of 276
at 0x4848464: calloc (vg_replace_malloc.c:1340)
by 0x49F75F0: g_malloc0 (gmem.c:163)
by 0x48C3BC7: purple_account_option_copy (purpleaccountoption.c:93)
by 0x4014BF: test_purple_account_option_copy_int (test_account_option.c:68)
by 0x4A1CC7D: UnknownInlinedFun (gtestutils.c:2933)
by 0x4A1CC7D: g_test_run_suite_internal (gtestutils.c:3021)
by 0x4A1C9E4: g_test_run_suite_internal (gtestutils.c:3038)
by 0x4A1C9E4: g_test_run_suite_internal (gtestutils.c:3038)
by 0x4A1D181: g_test_run_suite (gtestutils.c:3115)
by 0x4A156EC: UnknownInlinedFun (gtestutils.c:2234)
by 0x4A156EC: g_test_run (gtestutils.c:2221)
by 0x401721: main (test_account_option.c:157)
```
leaks in the credential manager test (times 3 for read/write/cancel tests):
```
69 (16 direct, 53 indirect) bytes in 1 blocks are definitely lost in loss record 2,427 of 3,503
at 0x484386F: malloc (vg_replace_malloc.c:393)
by 0x4A58168: g_malloc (gmem.c:130)
by 0x4A6FAB5: g_slice_alloc (gslice.c:1074)
by 0x4A700EC: g_slice_alloc0 (gslice.c:1100)
by 0x4A3BECB: g_error_allocate (gerror.c:710)
by 0x4A3C93F: UnknownInlinedFun (gerror.c:724)
by 0x4A3C93F: g_error_new_valist (gerror.c:766)
by 0x4BEE558: g_task_return_new_error (gtask.c:1941)
by 0x48D82C0: purple_credential_manager_read_password_async (purplecredentialmanager.c:492)
by 0x403634: test_purple_credential_manager_no_provider_read_password_idle (test_credential_manager.c:329)
by 0x4A4ECB1: g_idle_dispatch (gmain.c:6124)
by 0x4A4FCBE: UnknownInlinedFun (gmain.c:3444)
by 0x4A4FCBE: g_main_context_dispatch (gmain.c:4162)
by 0x4AA5597: g_main_context_iterate.constprop.0 (gmain.c:4238)
by 0x4A4F28E: g_main_loop_run (gmain.c:4438)
by 0x40369F: test_purple_credential_manager_no_provider_read_password_async (test_credential_manager.c:345)
by 0x4A7DC7D: UnknownInlinedFun (gtestutils.c:2933)
by 0x4A7DC7D: g_test_run_suite_internal (gtestutils.c:3021)
by 0x4A7D9E4: g_test_run_suite_internal (gtestutils.c:3038)
by 0x4A7D9E4: g_test_run_suite_internal (gtestutils.c:3038)
by 0x4A7E181: g_test_run_suite (gtestutils.c:3115)
by 0x4A766EC: UnknownInlinedFun (gtestutils.c:2234)
by 0x4A766EC: g_test_run (gtestutils.c:2221)
by 0x4048F6: main (test_credential_manager.c:695)
```
a leak in the image test:
```
161 bytes in 1 blocks are definitely lost in loss record 260 of 274
at 0x484386F: malloc (vg_replace_malloc.c:393)
by 0x4A55363: g_try_malloc (gmem.c:286)
by 0x4A3D630: UnknownInlinedFun (gfileutils.c:819)
by 0x4A3D630: UnknownInlinedFun (gfileutils.c:924)
by 0x4A3D630: g_file_get_contents (gfileutils.c:1027)
by 0x401890: test_image_new_from_file (test_image.c:144)
by 0x4A7DC7D: UnknownInlinedFun (gtestutils.c:2933)
by 0x4A7DC7D: g_test_run_suite_internal (gtestutils.c:3021)
by 0x4A7D9E4: g_test_run_suite_internal (gtestutils.c:3038)
by 0x4A7E181: g_test_run_suite (gtestutils.c:3115)
by 0x4A766EC: UnknownInlinedFun (gtestutils.c:2234)
by 0x4A766EC: g_test_run (gtestutils.c:2221)
by 0x40195D: main (test_image.c:172)
```
a leak in queued output stream test:
```
72 (40 direct, 32 indirect) bytes in 1 blocks are definitely lost in loss record 219 of 396
at 0x49D51EF: g_type_create_instance (gtype.c:1909)
by 0x49BAC1F: g_object_new_internal (gobject.c:2228)
by 0x49BC247: g_object_new_with_properties (gobject.c:2391)
by 0x49BCFF0: g_object_new (gobject.c:2037)
by 0x402003: test_queued_output_stream_push_bytes_async_error (test_queued_output_stream.c:219)
by 0x4A7DC7D: UnknownInlinedFun (gtestutils.c:2933)
by 0x4A7DC7D: g_test_run_suite_internal (gtestutils.c:3021)
by 0x4A7D9E4: g_test_run_suite_internal (gtestutils.c:3038)
by 0x4A7E181: g_test_run_suite (gtestutils.c:3115)
by 0x4A766EC: UnknownInlinedFun (gtestutils.c:2234)
by 0x4A766EC: g_test_run (gtestutils.c:2221)
by 0x402429: main (test_queued_output_stream.c:280)
```
and protocol xfer tests (times 3 for each test that creates a test protocol object):
```
112 (48 direct, 64 indirect) bytes in 1 blocks are definitely lost in loss record 3,430 of 3,698
at 0x49D51EF: g_type_create_instance (gtype.c:1909)
by 0x49BAC1F: g_object_new_internal (gobject.c:2228)
by 0x49BC247: g_object_new_with_properties (gobject.c:2391)
by 0x49BCFF0: g_object_new (gobject.c:2037)
by 0x40291C: test_purple_protocol_xfer_send_file_func (test_protocol_xfer.c:146)
by 0x4A7DC7D: UnknownInlinedFun (gtestutils.c:2933)
by 0x4A7DC7D: g_test_run_suite_internal (gtestutils.c:3021)
by 0x4A7D9E4: g_test_run_suite_internal (gtestutils.c:3038)
by 0x4A7E181: g_test_run_suite (gtestutils.c:3115)
by 0x4A766EC: UnknownInlinedFun (gtestutils.c:2234)
by 0x4A766EC: g_test_run (gtestutils.c:2221)
by 0x402B64: main (test_protocol_xfer.c:195)
```
and util tests (times 3 for each call to `purple_text_strip_mnemonic` in the test):
```
5 bytes in 1 blocks are definitely lost in loss record 5 of 247
at 0x484386F: malloc (vg_replace_malloc.c:393)
by 0x49F7168: g_malloc (gmem.c:130)
by 0x491975B: purple_text_strip_mnemonic (util.c:895)
by 0x4015B0: test_util_text_strip_mnemonic (test_util.c:49)
by 0x4A1CC7D: UnknownInlinedFun (gtestutils.c:2933)
by 0x4A1CC7D: g_test_run_suite_internal (gtestutils.c:3021)
by 0x4A1C9E4: g_test_run_suite_internal (gtestutils.c:3038)
by 0x4A1C9E4: g_test_run_suite_internal (gtestutils.c:3038)
by 0x4A1D181: g_test_run_suite (gtestutils.c:3115)
by 0x4A156EC: UnknownInlinedFun (gtestutils.c:2234)
by 0x4A156EC: g_test_run (gtestutils.c:2221)
by 0x401901: main (test_util.c:224)
```
and these leaks in any test that initializes the test UI:
```
4,104 bytes in 1 blocks are possibly lost in loss record 3,451 of 3,457
at 0x484386F: malloc (vg_replace_malloc.c:393)
by 0x5235B67: sqlite3MemMalloc.lto_priv.0 (sqlite3.c:25493)
by 0x5232797: UnknownInlinedFun (sqlite3.c:29181)
by 0x5232797: UnknownInlinedFun (sqlite3.c:29227)
by 0x5232797: sqlite3Malloc.lto_priv.0 (sqlite3.c:29221)
by 0x523BD8B: pcache1Alloc.lto_priv.0 (sqlite3.c:53546)
by 0x5249A8B: UnknownInlinedFun (sqlite3.c:53675)
by 0x5249A8B: allocateTempSpace (sqlite3.c:70848)
by 0x52625A6: sqlite3VdbeExec.lto_priv.0 (sqlite3.c:93857)
by 0x525CBEE: UnknownInlinedFun (sqlite3.c:87995)
by 0x525CBEE: UnknownInlinedFun (sqlite3.c:88056)
by 0x525CBEE: sqlite3_step (sqlite3.c:88045)
by 0x529B324: sqlite3_exec (sqlite3.c:131002)
by 0x48FD558: purple_sqlite3_run_migration (purplesqlite3.c:37)
by 0x48FDBB4: purple_sqlite3_run_migrations_from_resources (purplesqlite3.c:195)
by 0x48FDED9: purple_sqlite_history_adapter_run_migrations (purplesqlitehistoryadapter.c:69)
by 0x48FE7F0: purple_sqlite_history_adapter_activate (purplesqlitehistoryadapter.c:287)
by 0x48DB656: purple_history_adapter_activate (purplehistoryadapter.c:181)
by 0x48DC9BC: purple_history_manager_set_active (purplehistorymanager.c:308)
by 0x402BA8: test_ui_init_history (test_ui.c:132)
by 0x402C80: test_ui_purple_init (test_ui.c:167)
by 0x4027BB: main (test_contact.c:88)

4,368 bytes in 1 blocks are possibly lost in loss record 3,453 of 3,457
at 0x484386F: malloc (vg_replace_malloc.c:393)
by 0x5235B67: sqlite3MemMalloc.lto_priv.0 (sqlite3.c:25493)
by 0x5232797: UnknownInlinedFun (sqlite3.c:29181)
by 0x5232797: UnknownInlinedFun (sqlite3.c:29227)
by 0x5232797: sqlite3Malloc.lto_priv.0 (sqlite3.c:29221)
by 0x523BD8B: pcache1Alloc.lto_priv.0 (sqlite3.c:53546)
by 0x5240077: UnknownInlinedFun (sqlite3.c:53634)
by 0x5240077: pcache1FetchStage2 (sqlite3.c:54104)
by 0x5243E9C: UnknownInlinedFun (sqlite3.c:52671)
by 0x5243E9C: getPageNormal.lto_priv.0 (sqlite3.c:60628)
by 0x524A510: UnknownInlinedFun (sqlite3.c:60805)
by 0x524A510: btreeGetPage.lto_priv.0 (sqlite3.c:70289)
by 0x524C2F6: UnknownInlinedFun (sqlite3.c:71257)
by 0x524C2F6: sqlite3BtreeBeginTrans.lto_priv.0 (sqlite3.c:71647)
by 0x5266B3A: sqlite3VdbeExec.lto_priv.0 (sqlite3.c:93532)
by 0x525CBEE: UnknownInlinedFun (sqlite3.c:87995)
by 0x525CBEE: UnknownInlinedFun (sqlite3.c:88056)
by 0x525CBEE: sqlite3_step (sqlite3.c:88045)
by 0x48FD715: purple_sqlite3_get_schema_version (purplesqlite3.c:79)
by 0x48FD9DD: purple_sqlite3_run_migrations_from_resources (purplesqlite3.c:146)
by 0x48FDED9: purple_sqlite_history_adapter_run_migrations (purplesqlitehistoryadapter.c:69)
by 0x48FE7F0: purple_sqlite_history_adapter_activate (purplesqlitehistoryadapter.c:287)
by 0x48DB656: purple_history_adapter_activate (purplehistoryadapter.c:181)
by 0x48DC9BC: purple_history_manager_set_active (purplehistorymanager.c:308)
by 0x402BA8: test_ui_init_history (test_ui.c:132)
by 0x402C80: test_ui_purple_init (test_ui.c:167)
by 0x4027BB: main (test_contact.c:88)

4,368 bytes in 1 blocks are possibly lost in loss record 3,454 of 3,457
at 0x484386F: malloc (vg_replace_malloc.c:393)
by 0x5235B67: sqlite3MemMalloc.lto_priv.0 (sqlite3.c:25493)
by 0x5232797: UnknownInlinedFun (sqlite3.c:29181)
by 0x5232797: UnknownInlinedFun (sqlite3.c:29227)
by 0x5232797: sqlite3Malloc.lto_priv.0 (sqlite3.c:29221)
by 0x523BD8B: pcache1Alloc.lto_priv.0 (sqlite3.c:53546)
by 0x5240077: UnknownInlinedFun (sqlite3.c:53634)
by 0x5240077: pcache1FetchStage2 (sqlite3.c:54104)
by 0x5243E9C: UnknownInlinedFun (sqlite3.c:52671)
by 0x5243E9C: getPageNormal.lto_priv.0 (sqlite3.c:60628)
by 0x52499BC: UnknownInlinedFun (sqlite3.c:60805)
by 0x52499BC: UnknownInlinedFun (sqlite3.c:70289)
by 0x52499BC: btreeGetUnusedPage (sqlite3.c:70432)
by 0x524F504: allocateBtreePage.lto_priv.0 (sqlite3.c:74604)
by 0x5256209: btreeCreateTable.lto_priv.0 (sqlite3.c:77830)
by 0x5265EB2: UnknownInlinedFun (sqlite3.c:77849)
by 0x5265EB2: sqlite3VdbeExec.lto_priv.0 (sqlite3.c:96382)
by 0x525CBEE: UnknownInlinedFun (sqlite3.c:87995)
by 0x525CBEE: UnknownInlinedFun (sqlite3.c:88056)
by 0x525CBEE: sqlite3_step (sqlite3.c:88045)
by 0x529B324: sqlite3_exec (sqlite3.c:131002)
by 0x48FD558: purple_sqlite3_run_migration (purplesqlite3.c:37)
by 0x48FDBB4: purple_sqlite3_run_migrations_from_resources (purplesqlite3.c:195)
by 0x48FDED9: purple_sqlite_history_adapter_run_migrations (purplesqlitehistoryadapter.c:69)
by 0x48FE7F0: purple_sqlite_history_adapter_activate (purplesqlitehistoryadapter.c:287)
by 0x48DB656: purple_history_adapter_activate (purplehistoryadapter.c:181)
by 0x48DC9BC: purple_history_manager_set_active (purplehistorymanager.c:308)
by 0x402BA8: test_ui_init_history (test_ui.c:132)
by 0x402C80: test_ui_purple_init (test_ui.c:167)
by 0x4027BB: main (test_contact.c:88)
```

Testing Done:
Ran tests in valgrind, and all above leaks were gone except for noted `protocol_xfer` issues, and a bunch of leaks of the `PurpleBuddy`-`PurpleContact` compatibility bindings, which will go away in their entirety eventually.

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

42165
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
1 /*
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
2 * Pidgin - Internet Messenger
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
3 * Copyright (C) Pidgin Developers <devel@pidgin.im>
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
4 *
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
5 * Pidgin is the legal property of its developers, whose names are too numerous
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
6 * to list here. Please refer to the COPYRIGHT file distributed with this
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
7 * source distribution.
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
8 *
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
9 * This program is free software; you can redistribute it and/or modify
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
10 * it under the terms of the GNU General Public License as published by
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
11 * the Free Software Foundation; either version 2 of the License, or
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
12 * (at your option) any later version.
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
13 *
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
14 * This program is distributed in the hope that it will be useful,
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
17 * GNU General Public License for more details.
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
18 *
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
19 * You should have received a copy of the GNU General Public License
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
20 * along with this program; if not, see <https://www.gnu.org/licenses/>.
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
21 */
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
22 #include <glib/gi18n-lib.h>
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
23
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
24 #include <gtk/gtk.h>
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
25
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
26 #include "pidginaccountdisplay.h"
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
27
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
28 struct _PidginAccountDisplay {
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
29 GtkBox parent;
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
30
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
31 GtkImage *image;
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
32 GtkLabel *label;
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
33
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
34 PurpleAccount *account;
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
35 };
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
36
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
37 enum {
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
38 PROP_0,
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
39 PROP_ACCOUNT,
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
40 PROP_LAST
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
41 };
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
42
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
43 static GParamSpec *properties[PROP_LAST] = {NULL};
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
44
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
45 /******************************************************************************
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
46 * Callbacks
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
47 *****************************************************************************/
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
48 static void
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
49 pidgin_account_display_refresh(PidginAccountDisplay *display) {
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
50 const char *icon_name = NULL;
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
51 char *markup = NULL;
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
52
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
53 if(PURPLE_IS_ACCOUNT(display->account)) {
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
54 PurpleAccount *account = display->account;
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
55 PurpleContactInfo *info = NULL;
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
56 PurpleProtocol *protocol = NULL;
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
57 const char *alias = NULL;
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
58 const char *protocol_name = NULL;
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
59 const char *username = NULL;
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
60
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
61 protocol = purple_account_get_protocol(account);
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
62 icon_name = purple_protocol_get_icon_name(protocol);
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
63
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
64 info = PURPLE_CONTACT_INFO(account);
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
65 alias = purple_contact_info_get_alias(info);
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
66 protocol_name = purple_account_get_protocol_name(account);
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
67 username = purple_contact_info_get_username(info);
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
68
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
69 if(alias != NULL) {
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
70 markup = g_strdup_printf(_("%s (%s) (%s)"), username, alias,
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
71 protocol_name);
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
72 } else {
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
73 markup = g_strdup_printf(_("%s (%s)"), username, protocol_name);
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
74 }
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
75 }
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
76
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
77 gtk_image_set_from_icon_name(display->image, icon_name);
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
78 gtk_label_set_text(display->label, markup);
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
79
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
80 g_free(markup);
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
81 }
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
82
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
83 /******************************************************************************
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
84 * GObject implementation
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
85 *****************************************************************************/
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
86 G_DEFINE_TYPE(PidginAccountDisplay, pidgin_account_display, GTK_TYPE_BOX)
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
87
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
88 static void
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
89 pidgin_account_display_get_property(GObject *object, guint prop_id,
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
90 GValue *value, GParamSpec *pspec)
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
91 {
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
92 PidginAccountDisplay *display = PIDGIN_ACCOUNT_DISPLAY(object);
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
93
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
94 switch (prop_id) {
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
95 case PROP_ACCOUNT:
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
96 g_value_set_object(value,
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
97 pidgin_account_display_get_account(display));
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
98 break;
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
99 default:
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
100 G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
101 break;
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
102 }
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
103 }
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
104
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
105 static void
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
106 pidgin_account_display_set_property(GObject *object, guint prop_id,
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
107 const GValue *value, GParamSpec *pspec)
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
108 {
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
109 PidginAccountDisplay *display = PIDGIN_ACCOUNT_DISPLAY(object);
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
110
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
111 switch (prop_id) {
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
112 case PROP_ACCOUNT:
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
113 pidgin_account_display_set_account(display,
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
114 g_value_get_object(value));
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
115 break;
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
116 default:
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
117 G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
118 break;
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
119 }
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
120 }
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
121
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
122 static void
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
123 pidgin_account_display_finalize(GObject *obj) {
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
124 PidginAccountDisplay *display = PIDGIN_ACCOUNT_DISPLAY(obj);
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
125
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
126 g_clear_object(&display->account);
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
127
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
128 G_OBJECT_CLASS(pidgin_account_display_parent_class)->finalize(obj);
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
129 }
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
130
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
131
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
132 static void
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
133 pidgin_account_display_class_init(PidginAccountDisplayClass *klass) {
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
134 GObjectClass *obj_class = G_OBJECT_CLASS(klass);
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
135 GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
136
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
137 /* Properties */
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
138 obj_class->get_property = pidgin_account_display_get_property;
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
139 obj_class->set_property = pidgin_account_display_set_property;
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
140 obj_class->finalize = pidgin_account_display_finalize;
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
141
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
142 /**
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
143 * PurpleAccountDisplay:account:
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
144 *
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
145 * The account that is currently displayed.
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
146 *
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
147 * Since: 3.0.0
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
148 */
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
149 properties[PROP_ACCOUNT] = g_param_spec_object(
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
150 "account", "Account", "The account that is currently displayed.",
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
151 PURPLE_TYPE_ACCOUNT,
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
152 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
153
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
154 g_object_class_install_properties(obj_class, PROP_LAST, properties);
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
155
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
156 /* Widget template */
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
157 gtk_widget_class_set_template_from_resource(
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
158 widget_class, "/im/pidgin/Pidgin3/Accounts/display.ui");
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
159
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
160 gtk_widget_class_bind_template_child(widget_class, PidginAccountDisplay,
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
161 image);
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
162 gtk_widget_class_bind_template_child(widget_class, PidginAccountDisplay,
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
163 label);
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
164 }
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
165
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
166 static void
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
167 pidgin_account_display_init(PidginAccountDisplay *display) {
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
168 gtk_widget_init_template(GTK_WIDGET(display));
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
169 }
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
170
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
171 /******************************************************************************
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
172 * Public API
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
173 *****************************************************************************/
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
174 GtkWidget *
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
175 pidgin_account_display_new(PurpleAccount *account) {
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
176 return g_object_new(PIDGIN_TYPE_ACCOUNT_DISPLAY,
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
177 "account", account,
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
178 NULL);
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
179 }
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
180
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
181 PurpleAccount *
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
182 pidgin_account_display_get_account(PidginAccountDisplay *display) {
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
183 g_return_val_if_fail(PIDGIN_IS_ACCOUNT_DISPLAY(display), NULL);
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
184
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
185 return display->account;
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
186 }
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
187
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
188 void
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
189 pidgin_account_display_set_account(PidginAccountDisplay *display,
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
190 PurpleAccount *account)
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
191 {
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
192 g_return_if_fail(PIDGIN_IS_ACCOUNT_DISPLAY(display));
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
193
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
194 if(g_set_object(&display->account, account)) {
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
195 pidgin_account_display_refresh(display);
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
196
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
197 g_object_notify_by_pspec(G_OBJECT(display), properties[PROP_ACCOUNT]);
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
198 }
3c481d9cc840 Split account display from chooser into its own widget
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
diff changeset
199 }

mercurial