| 1825 ggp_search_add(info->searches, seq, form); |
1825 ggp_search_add(info->searches, seq, form); |
| 1826 } |
1826 } |
| 1827 /* }}} */ |
1827 /* }}} */ |
| 1828 |
1828 |
| 1829 /* static void ggp_set_status(PurpleAccount *account, PurpleStatus *status) {{{ */ |
1829 /* static void ggp_set_status(PurpleAccount *account, PurpleStatus *status) {{{ */ |
| 1830 static void ggp_set_status(PurpleAccount *account, PurpleStatus *status) |
1830 static int ggp_to_gg_status(PurpleStatus *status, char **msg) |
| 1831 { |
1831 { |
| 1832 PurpleConnection *gc; |
1832 const char *status_id = purple_status_get_id(status); |
| 1833 GGPInfo *info; |
|
| 1834 const char *status_id, *msg; |
|
| 1835 int new_status, new_status_descr; |
1833 int new_status, new_status_descr; |
| 1836 |
1834 const char *new_msg; |
| 1837 if (!purple_status_is_active(status)) |
1835 |
| 1838 return; |
1836 g_return_val_if_fail(msg == NULL, 0); |
| 1839 |
1837 |
| 1840 gc = purple_account_get_connection(account); |
1838 purple_debug_info("gg", "ggp_to_gg_status: Requested status = %s\n", |
| 1841 info = gc->proto_data; |
|
| 1842 |
|
| 1843 status_id = purple_status_get_id(status); |
|
| 1844 |
|
| 1845 purple_debug_info("gg", "ggp_set_status: Requested status = %s\n", |
|
| 1846 status_id); |
1839 status_id); |
| 1847 |
1840 |
| 1848 if (strcmp(status_id, "available") == 0) { |
1841 if (strcmp(status_id, "available") == 0) { |
| 1849 new_status = GG_STATUS_AVAIL; |
1842 new_status = GG_STATUS_AVAIL; |
| 1850 new_status_descr = GG_STATUS_AVAIL_DESCR; |
1843 new_status_descr = GG_STATUS_AVAIL_DESCR; |
| 1859 new_status_descr = GG_STATUS_NOT_AVAIL_DESCR; |
1852 new_status_descr = GG_STATUS_NOT_AVAIL_DESCR; |
| 1860 } else { |
1853 } else { |
| 1861 new_status = GG_STATUS_AVAIL; |
1854 new_status = GG_STATUS_AVAIL; |
| 1862 new_status_descr = GG_STATUS_AVAIL_DESCR; |
1855 new_status_descr = GG_STATUS_AVAIL_DESCR; |
| 1863 purple_debug_info("gg", |
1856 purple_debug_info("gg", |
| 1864 "ggp_set_status: uknown status requested (status_id=%s)\n", |
1857 "ggp_set_status: unknown status requested (status_id=%s)\n", |
| 1865 status_id); |
1858 status_id); |
| 1866 } |
1859 } |
| 1867 |
1860 |
| 1868 msg = purple_status_get_attr_string(status, "message"); |
1861 new_msg = purple_status_get_attr_string(status, "message"); |
| 1869 |
1862 |
| 1870 if (msg == NULL) { |
1863 if(new_msg) { |
| |
1864 char *tmp = purple_markup_strip_html(new_msg); |
| |
1865 *msg = charset_convert(tmp, "UTF-8", "CP1250"); |
| |
1866 g_free(tmp); |
| |
1867 |
| |
1868 return new_status_descr; |
| |
1869 } else { |
| |
1870 *msg = NULL; |
| |
1871 return new_status; |
| |
1872 } |
| |
1873 } |
| |
1874 /* }}} */ |
| |
1875 |
| |
1876 /* static void ggp_set_status(PurpleAccount *account, PurpleStatus *status) {{{ */ |
| |
1877 static void ggp_set_status(PurpleAccount *account, PurpleStatus *status) |
| |
1878 { |
| |
1879 PurpleConnection *gc; |
| |
1880 GGPInfo *info; |
| |
1881 int new_status; |
| |
1882 char *new_msg = NULL; |
| |
1883 |
| |
1884 if (!purple_status_is_active(status)) |
| |
1885 return; |
| |
1886 |
| |
1887 gc = purple_account_get_connection(account); |
| |
1888 info = gc->proto_data; |
| |
1889 |
| |
1890 new_status = ggp_to_gg_status(status, &new_msg); |
| |
1891 |
| |
1892 if (new_msg == NULL) { |
| 1871 gg_change_status(info->session, new_status); |
1893 gg_change_status(info->session, new_status); |
| 1872 } else { |
1894 } else { |
| 1873 gchar *tmp, *new_msg; |
1895 gg_change_status_descr(info->session, new_status, new_msg); |
| 1874 |
|
| 1875 tmp = charset_convert(msg, "UTF-8", "CP1250"); |
|
| 1876 new_msg = purple_markup_strip_html(tmp); |
|
| 1877 g_free(tmp); |
|
| 1878 |
|
| 1879 gg_change_status_descr(info->session, new_status_descr, new_msg); |
|
| 1880 g_free(new_msg); |
1896 g_free(new_msg); |
| 1881 } |
1897 } |
| 1882 |
1898 |
| 1883 ggp_status_fake_to_self(account); |
1899 ggp_status_fake_to_self(account); |
| 1884 |
1900 |