Mercurial > pidgin.yaz
comparison libpurple/account.c @ 30262:2a436e0ce977
Add purple_account_[gs]et_public_alias functions, per discussion in d@cpi
author | Paul Aurich <paul@darkrain42.org> |
---|---|
date | Thu, 29 Apr 2010 05:58:02 +0000 |
parents | b983db2b01f5 |
children | 51d5ec7b1699 |
comparison
equal
deleted
inserted
replaced
30261:75ea2a624b10 | 30262:2a436e0ce977 |
---|---|
1780 * reconnect, we go back to the previous status). | 1780 * reconnect, we go back to the previous status). |
1781 */ | 1781 */ |
1782 schedule_accounts_save(); | 1782 schedule_accounts_save(); |
1783 } | 1783 } |
1784 | 1784 |
1785 struct public_alias_closure | |
1786 { | |
1787 PurpleAccount *account; | |
1788 gpointer failure_cb; | |
1789 }; | |
1790 | |
1791 static gboolean | |
1792 set_public_alias_unsupported(gpointer data) | |
1793 { | |
1794 struct public_alias_closure *closure = data; | |
1795 PurpleSetPublicAliasFailureCallback failure_cb = closure->failure_cb; | |
1796 | |
1797 failure_cb(closure->account, | |
1798 _("This protocol does not support setting a public alias.")); | |
1799 g_free(closure); | |
1800 | |
1801 return FALSE; | |
1802 } | |
1803 | |
1804 void | |
1805 purple_account_set_public_alias(PurpleAccount *account, | |
1806 const char *alias, PurpleSetPublicAliasSuccessCallback success_cb, | |
1807 PurpleSetPublicAliasFailureCallback failure_cb) | |
1808 { | |
1809 PurpleConnection *gc; | |
1810 PurplePlugin *prpl = NULL; | |
1811 PurplePluginProtocolInfo *prpl_info = NULL; | |
1812 | |
1813 g_return_if_fail(account != NULL); | |
1814 g_return_if_fail(purple_account_is_connected(account)); | |
1815 | |
1816 gc = purple_account_get_connection(account); | |
1817 prpl = purple_connection_get_prpl(gc); | |
1818 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); | |
1819 | |
1820 if (PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl_info, set_public_alias)) | |
1821 prpl_info->set_public_alias(gc, alias, success_cb, failure_cb); | |
1822 else { | |
1823 struct public_alias_closure *closure = | |
1824 g_new0(struct public_alias_closure, 1); | |
1825 closure->account = account; | |
1826 closure->failure_cb = failure_cb; | |
1827 purple_timeout_add(0, set_public_alias_unsupported, closure); | |
1828 } | |
1829 } | |
1830 | |
1831 static gboolean | |
1832 get_public_alias_unsupported(gpointer data) | |
1833 { | |
1834 struct public_alias_closure *closure = data; | |
1835 PurpleGetPublicAliasFailureCallback failure_cb = closure->failure_cb; | |
1836 | |
1837 failure_cb(closure->account, | |
1838 _("This protocol does not support fetching the public alias.")); | |
1839 g_free(closure); | |
1840 | |
1841 return FALSE; | |
1842 } | |
1843 | |
1844 void | |
1845 purple_account_get_public_alias(PurpleAccount *account, | |
1846 PurpleGetPublicAliasSuccessCallback success_cb, | |
1847 PurpleGetPublicAliasFailureCallback failure_cb) | |
1848 { | |
1849 PurpleConnection *gc; | |
1850 PurplePlugin *prpl = NULL; | |
1851 PurplePluginProtocolInfo *prpl_info = NULL; | |
1852 | |
1853 g_return_if_fail(account != NULL); | |
1854 g_return_if_fail(purple_account_is_connected(account)); | |
1855 | |
1856 gc = purple_account_get_connection(account); | |
1857 prpl = purple_connection_get_prpl(gc); | |
1858 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); | |
1859 | |
1860 if (PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl_info, get_public_alias)) | |
1861 prpl_info->get_public_alias(gc, success_cb, failure_cb); | |
1862 else { | |
1863 struct public_alias_closure *closure = | |
1864 g_new0(struct public_alias_closure, 1); | |
1865 closure->account = account; | |
1866 closure->failure_cb = failure_cb; | |
1867 purple_timeout_add(0, get_public_alias_unsupported, closure); | |
1868 } | |
1869 } | |
1870 | |
1785 void | 1871 void |
1786 purple_account_clear_settings(PurpleAccount *account) | 1872 purple_account_clear_settings(PurpleAccount *account) |
1787 { | 1873 { |
1788 g_return_if_fail(account != NULL); | 1874 g_return_if_fail(account != NULL); |
1789 | 1875 |