| 71 size_t current_buffer_size; /* This gradually increases for fast |
71 size_t current_buffer_size; /* This gradually increases for fast |
| 72 network connections. */ |
72 network connections. */ |
| 73 |
73 |
| 74 PurpleXferStatus status; /* File Transfer's status. */ |
74 PurpleXferStatus status; /* File Transfer's status. */ |
| 75 |
75 |
| |
76 gboolean visible; /* Hint the UI that the transfer should |
| |
77 be visible or not. */ |
| 76 PurpleXferUiOps *ui_ops; /* UI-specific operations. */ |
78 PurpleXferUiOps *ui_ops; /* UI-specific operations. */ |
| 77 |
79 |
| 78 /* |
80 /* |
| 79 * Used to moderate the file transfer when either the read/write ui_ops are |
81 * Used to moderate the file transfer when either the read/write ui_ops are |
| 80 * set or fd is not set. In those cases, the UI/protocol call the respective |
82 * set or fd is not set. In those cases, the UI/protocol call the respective |
| 179 return; |
182 return; |
| 180 |
183 |
| 181 priv->status = status; |
184 priv->status = status; |
| 182 |
185 |
| 183 g_object_notify_by_pspec(G_OBJECT(xfer), properties[PROP_STATUS]); |
186 g_object_notify_by_pspec(G_OBJECT(xfer), properties[PROP_STATUS]); |
| |
187 } |
| |
188 |
| |
189 void |
| |
190 purple_xfer_set_visible(PurpleXfer *xfer, gboolean visible) |
| |
191 { |
| |
192 PurpleXferPrivate *priv = NULL; |
| |
193 |
| |
194 g_return_if_fail(PURPLE_IS_XFER(xfer)); |
| |
195 |
| |
196 priv = purple_xfer_get_instance_private(xfer); |
| |
197 priv->visible = visible; |
| |
198 |
| |
199 g_object_notify_by_pspec(G_OBJECT(xfer), properties[PROP_VISIBLE]); |
| 184 } |
200 } |
| 185 |
201 |
| 186 static void |
202 static void |
| 187 purple_xfer_conversation_write_internal(PurpleXfer *xfer, |
203 purple_xfer_conversation_write_internal(PurpleXfer *xfer, |
| 188 const char *message, gboolean is_error, gboolean print_thumbnail) |
204 const char *message, gboolean is_error, gboolean print_thumbnail) |
| 739 |
755 |
| 740 g_return_val_if_fail(PURPLE_IS_XFER(xfer), PURPLE_XFER_STATUS_UNKNOWN); |
756 g_return_val_if_fail(PURPLE_IS_XFER(xfer), PURPLE_XFER_STATUS_UNKNOWN); |
| 741 |
757 |
| 742 priv = purple_xfer_get_instance_private(xfer); |
758 priv = purple_xfer_get_instance_private(xfer); |
| 743 return priv->status; |
759 return priv->status; |
| |
760 } |
| |
761 |
| |
762 gboolean |
| |
763 purple_xfer_get_visible(PurpleXfer *xfer) |
| |
764 { |
| |
765 PurpleXferPrivate *priv = NULL; |
| |
766 |
| |
767 g_return_val_if_fail(PURPLE_IS_XFER(xfer), FALSE); |
| |
768 |
| |
769 priv = purple_xfer_get_instance_private(xfer); |
| |
770 return priv->visible; |
| 744 } |
771 } |
| 745 |
772 |
| 746 gboolean |
773 gboolean |
| 747 purple_xfer_is_cancelled(PurpleXfer *xfer) |
774 purple_xfer_is_cancelled(PurpleXfer *xfer) |
| 748 { |
775 { |
| 1686 |
1713 |
| 1687 g_object_unref(xfer); |
1714 g_object_unref(xfer); |
| 1688 } |
1715 } |
| 1689 |
1716 |
| 1690 void |
1717 void |
| 1691 purple_xfer_add(PurpleXfer *xfer) |
|
| 1692 { |
|
| 1693 PurpleXferUiOps *ui_ops; |
|
| 1694 |
|
| 1695 g_return_if_fail(PURPLE_IS_XFER(xfer)); |
|
| 1696 |
|
| 1697 ui_ops = purple_xfer_get_ui_ops(xfer); |
|
| 1698 |
|
| 1699 if (ui_ops != NULL && ui_ops->add_xfer != NULL) |
|
| 1700 ui_ops->add_xfer(xfer); |
|
| 1701 } |
|
| 1702 |
|
| 1703 void |
|
| 1704 purple_xfer_cancel_local(PurpleXfer *xfer) |
1718 purple_xfer_cancel_local(PurpleXfer *xfer) |
| 1705 { |
1719 { |
| 1706 PurpleXferClass *klass = NULL; |
1720 PurpleXferClass *klass = NULL; |
| 1707 PurpleXferPrivate *priv = NULL; |
1721 PurpleXferPrivate *priv = NULL; |
| 1708 char *msg = NULL; |
1722 char *msg = NULL; |
| 1972 purple_xfer_set_bytes_sent(xfer, g_value_get_int64(value)); |
1986 purple_xfer_set_bytes_sent(xfer, g_value_get_int64(value)); |
| 1973 break; |
1987 break; |
| 1974 case PROP_STATUS: |
1988 case PROP_STATUS: |
| 1975 purple_xfer_set_status(xfer, g_value_get_enum(value)); |
1989 purple_xfer_set_status(xfer, g_value_get_enum(value)); |
| 1976 break; |
1990 break; |
| |
1991 case PROP_VISIBLE: |
| |
1992 purple_xfer_set_visible(xfer, g_value_get_boolean(value)); |
| |
1993 break; |
| 1977 default: |
1994 default: |
| 1978 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec); |
1995 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec); |
| 1979 break; |
1996 break; |
| 1980 } |
1997 } |
| 1981 } |
1998 } |
| 2035 case PROP_STATUS: |
2052 case PROP_STATUS: |
| 2036 g_value_set_enum(value, purple_xfer_get_status(xfer)); |
2053 g_value_set_enum(value, purple_xfer_get_status(xfer)); |
| 2037 break; |
2054 break; |
| 2038 case PROP_PROGRESS: |
2055 case PROP_PROGRESS: |
| 2039 g_value_set_double(value, purple_xfer_get_progress(xfer)); |
2056 g_value_set_double(value, purple_xfer_get_progress(xfer)); |
| |
2057 break; |
| |
2058 case PROP_VISIBLE: |
| |
2059 g_value_set_boolean(value, purple_xfer_get_visible(xfer)); |
| 2040 break; |
2060 break; |
| 2041 default: |
2061 default: |
| 2042 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec); |
2062 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec); |
| 2043 break; |
2063 break; |
| 2044 } |
2064 } |
| 2214 |
2234 |
| 2215 properties[PROP_PROGRESS] = g_param_spec_double( |
2235 properties[PROP_PROGRESS] = g_param_spec_double( |
| 2216 "progress", "Progress", |
2236 "progress", "Progress", |
| 2217 "The current progress of the file transfer.", -1.0, 1.0, -1.0, |
2237 "The current progress of the file transfer.", -1.0, 1.0, -1.0, |
| 2218 G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); |
2238 G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); |
| |
2239 |
| |
2240 properties[PROP_VISIBLE] = g_param_spec_boolean( |
| |
2241 "visible", "Visible", |
| |
2242 "Hint for UIs whether this transfer should be visible.", FALSE, |
| |
2243 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); |
| 2219 |
2244 |
| 2220 g_object_class_install_properties(obj_class, PROP_LAST, properties); |
2245 g_object_class_install_properties(obj_class, PROP_LAST, properties); |
| 2221 |
2246 |
| 2222 /* Signals */ |
2247 /* Signals */ |
| 2223 |
2248 |