diff options
author | Elliott Sales de Andrade <qulogic@pidgin.im> | 2019-12-22 16:35:25 -0500 |
---|---|---|
committer | Elliott Sales de Andrade <qulogic@pidgin.im> | 2019-12-22 16:35:25 -0500 |
commit | 1099b09afe5a67740e5b311ae6d0a84e62daf913 (patch) | |
tree | 80bd088e6deb89dbb62f30bde57160a2a4a5ae4d /libpurple/xfer.c | |
parent | 7a0aeb6d34ca74f7038e34a17deb2eec15bd57d4 (diff) | |
download | pidgin-1099b09afe5a67740e5b311ae6d0a84e62daf913.tar.gz |
Change PurpleXferUiOps.add_xfer to PurpleXfer:visible property.
Diffstat (limited to 'libpurple/xfer.c')
-rw-r--r-- | libpurple/xfer.c | 53 |
1 files changed, 39 insertions, 14 deletions
diff --git a/libpurple/xfer.c b/libpurple/xfer.c index e33487ba08..873d2aa66e 100644 --- a/libpurple/xfer.c +++ b/libpurple/xfer.c @@ -73,6 +73,8 @@ struct _PurpleXferPrivate { PurpleXferStatus status; /* File Transfer's status. */ + gboolean visible; /* Hint the UI that the transfer should + be visible or not. */ PurpleXferUiOps *ui_ops; /* UI-specific operations. */ /* @@ -115,6 +117,7 @@ enum PROP_END_TIME, PROP_STATUS, PROP_PROGRESS, + PROP_VISIBLE, PROP_LAST }; @@ -183,6 +186,19 @@ purple_xfer_set_status(PurpleXfer *xfer, PurpleXferStatus status) g_object_notify_by_pspec(G_OBJECT(xfer), properties[PROP_STATUS]); } +void +purple_xfer_set_visible(PurpleXfer *xfer, gboolean visible) +{ + PurpleXferPrivate *priv = NULL; + + g_return_if_fail(PURPLE_IS_XFER(xfer)); + + priv = purple_xfer_get_instance_private(xfer); + priv->visible = visible; + + g_object_notify_by_pspec(G_OBJECT(xfer), properties[PROP_VISIBLE]); +} + static void purple_xfer_conversation_write_internal(PurpleXfer *xfer, const char *message, gboolean is_error, gboolean print_thumbnail) @@ -642,7 +658,7 @@ purple_xfer_request_accepted(PurpleXfer *xfer, const gchar *filename) g_free(msg); } - purple_xfer_add(xfer); + purple_xfer_set_visible(xfer, TRUE); klass->init(xfer); } @@ -744,6 +760,17 @@ purple_xfer_get_status(PurpleXfer *xfer) } gboolean +purple_xfer_get_visible(PurpleXfer *xfer) +{ + PurpleXferPrivate *priv = NULL; + + g_return_val_if_fail(PURPLE_IS_XFER(xfer), FALSE); + + priv = purple_xfer_get_instance_private(xfer); + return priv->visible; +} + +gboolean purple_xfer_is_cancelled(PurpleXfer *xfer) { g_return_val_if_fail(PURPLE_IS_XFER(xfer), TRUE); @@ -1688,19 +1715,6 @@ purple_xfer_end(PurpleXfer *xfer) } void -purple_xfer_add(PurpleXfer *xfer) -{ - PurpleXferUiOps *ui_ops; - - g_return_if_fail(PURPLE_IS_XFER(xfer)); - - ui_ops = purple_xfer_get_ui_ops(xfer); - - if (ui_ops != NULL && ui_ops->add_xfer != NULL) - ui_ops->add_xfer(xfer); -} - -void purple_xfer_cancel_local(PurpleXfer *xfer) { PurpleXferClass *klass = NULL; @@ -1974,6 +1988,9 @@ purple_xfer_set_property(GObject *obj, guint param_id, const GValue *value, case PROP_STATUS: purple_xfer_set_status(xfer, g_value_get_enum(value)); break; + case PROP_VISIBLE: + purple_xfer_set_visible(xfer, g_value_get_boolean(value)); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec); break; @@ -2038,6 +2055,9 @@ purple_xfer_get_property(GObject *obj, guint param_id, GValue *value, case PROP_PROGRESS: g_value_set_double(value, purple_xfer_get_progress(xfer)); break; + case PROP_VISIBLE: + g_value_set_boolean(value, purple_xfer_get_visible(xfer)); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec); break; @@ -2217,6 +2237,11 @@ purple_xfer_class_init(PurpleXferClass *klass) "The current progress of the file transfer.", -1.0, 1.0, -1.0, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + properties[PROP_VISIBLE] = g_param_spec_boolean( + "visible", "Visible", + "Hint for UIs whether this transfer should be visible.", FALSE, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + g_object_class_install_properties(obj_class, PROP_LAST, properties); /* Signals */ |