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