libpurple/xfer.c

changeset 40260
663b8a40dad5
parent 40258
263f9375fc8d
child 40261
d26ef8ea193f
equal deleted inserted replaced
40259:7ba119b0f75c 40260:663b8a40dad5
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
113 PROP_BYTES_SENT, 115 PROP_BYTES_SENT,
114 PROP_START_TIME, 116 PROP_START_TIME,
115 PROP_END_TIME, 117 PROP_END_TIME,
116 PROP_STATUS, 118 PROP_STATUS,
117 PROP_PROGRESS, 119 PROP_PROGRESS,
120 PROP_VISIBLE,
118 PROP_LAST 121 PROP_LAST
119 }; 122 };
120 123
121 static GParamSpec *properties[PROP_LAST]; 124 static GParamSpec *properties[PROP_LAST];
122 125
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)
640 priv->filename, buddy ? purple_buddy_get_alias(buddy) : priv->who); 656 priv->filename, buddy ? purple_buddy_get_alias(buddy) : priv->who);
641 purple_xfer_conversation_write(xfer, msg, FALSE); 657 purple_xfer_conversation_write(xfer, msg, FALSE);
642 g_free(msg); 658 g_free(msg);
643 } 659 }
644 660
645 purple_xfer_add(xfer); 661 purple_xfer_set_visible(xfer, TRUE);
646 662
647 klass->init(xfer); 663 klass->init(xfer);
648 } 664 }
649 665
650 void 666 void
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

mercurial