libpurple/purplefiletransfer.c

Fri, 20 Oct 2023 02:10:54 -0500

author
Elliott Sales de Andrade <quantum.analyst@gmail.com>
date
Fri, 20 Oct 2023 02:10:54 -0500
changeset 42376
c6aa66fec38a
parent 42344
c51d37734155
child 42576
ab1ca778ddb2
permissions
-rw-r--r--

Prefix version.h with purple

And split constants into a separate file as in hasl.

Testing Done:
Compiled.

Reviewed at https://reviews.imfreedom.org/r/2680/

42330
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1 /*
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
2 * Purple - Internet Messaging Library
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
3 * Copyright (C) Pidgin Developers <devel@pidgin.im>
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
4 *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
5 * Purple is the legal property of its developers, whose names are too numerous
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
6 * to list here. Please refer to the COPYRIGHT file distributed with this
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
7 * source distribution.
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
8 *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
9 * This library is free software; you can redistribute it and/or
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
10 * modify it under the terms of the GNU Lesser General Public
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
11 * License as published by the Free Software Foundation; either
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
12 * version 2 of the License, or (at your option) any later version.
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
13 *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
14 * This library is distributed in the hope that it will be useful,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
17 * Lesser General Public License for more details.
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
18 *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
19 * You should have received a copy of the GNU Lesser General Public
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
20 * License along with this library; if not, see <https://www.gnu.org/licenses/>.
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
21 */
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
22
42344
c51d37734155 Rename account.[ch] to purpleaccount.[ch]
Gary Kramlich <grim@reaperworld.com>
parents: 42330
diff changeset
23 #include "purpleaccount.h"
42330
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
24 #include "purplecontactinfo.h"
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
25 #include "purpleenums.h"
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
26 #include "purplefiletransfer.h"
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
27 #include "util.h"
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
28
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
29 enum {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
30 PROP_0,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
31 PROP_ACCOUNT,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
32 PROP_REMOTE,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
33 PROP_INITIATOR,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
34 PROP_CANCELLABLE,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
35 PROP_STATE,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
36 PROP_ERROR,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
37 PROP_LOCAL_FILE,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
38 PROP_FILENAME,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
39 PROP_FILE_SIZE,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
40 PROP_CONTENT_TYPE,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
41 PROP_MESSAGE,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
42 N_PROPERTIES,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
43 };
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
44 static GParamSpec *properties[N_PROPERTIES] = {NULL, };
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
45
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
46 struct _PurpleFileTransfer {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
47 GObject parent;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
48
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
49 PurpleAccount *account;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
50 PurpleContactInfo *remote;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
51 PurpleContactInfo *initiator;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
52
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
53 GCancellable *cancellable;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
54
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
55 PurpleFileTransferState state;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
56 GError *error;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
57
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
58 GFile *local_file;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
59 char *filename;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
60 guint64 file_size;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
61 char *content_type;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
62
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
63 char *message;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
64 };
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
65
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
66 /******************************************************************************
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
67 * Helpers
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
68 *****************************************************************************/
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
69 static void
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
70 purple_file_transfer_set_account(PurpleFileTransfer *transfer,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
71 PurpleAccount *account)
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
72 {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
73 g_return_if_fail(PURPLE_IS_FILE_TRANSFER(transfer));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
74 g_return_if_fail(PURPLE_IS_ACCOUNT(account));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
75
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
76 if(g_set_object(&transfer->account, account)) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
77 g_object_notify_by_pspec(G_OBJECT(transfer), properties[PROP_ACCOUNT]);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
78 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
79 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
80
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
81 static void
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
82 purple_file_transfer_set_remote(PurpleFileTransfer *transfer,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
83 PurpleContactInfo *remote)
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
84 {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
85 g_return_if_fail(PURPLE_IS_FILE_TRANSFER(transfer));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
86 g_return_if_fail(PURPLE_IS_CONTACT_INFO(remote));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
87
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
88 if(g_set_object(&transfer->remote, remote)) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
89 g_object_notify_by_pspec(G_OBJECT(transfer), properties[PROP_REMOTE]);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
90 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
91 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
92
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
93 static void
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
94 purple_file_transfer_set_initiator(PurpleFileTransfer *transfer,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
95 PurpleContactInfo *initiator)
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
96 {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
97 g_return_if_fail(PURPLE_IS_FILE_TRANSFER(transfer));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
98 g_return_if_fail(PURPLE_IS_CONTACT_INFO(initiator));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
99
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
100 if(g_set_object(&transfer->initiator, initiator)) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
101 g_object_notify_by_pspec(G_OBJECT(transfer),
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
102 properties[PROP_INITIATOR]);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
103 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
104 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
105
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
106 static void
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
107 purple_file_transfer_set_filename(PurpleFileTransfer *transfer,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
108 const char *filename)
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
109 {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
110 g_return_if_fail(PURPLE_IS_FILE_TRANSFER(transfer));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
111 g_return_if_fail(!purple_strempty(filename));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
112
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
113 if(!purple_strequal(transfer->filename, filename)) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
114 g_free(transfer->filename);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
115 transfer->filename = g_strdup(filename);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
116
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
117 g_object_notify_by_pspec(G_OBJECT(transfer),
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
118 properties[PROP_FILENAME]);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
119 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
120 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
121
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
122 static void
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
123 purple_file_transfer_set_file_size(PurpleFileTransfer *transfer, guint64 size)
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
124 {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
125 g_return_if_fail(PURPLE_IS_FILE_TRANSFER(transfer));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
126
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
127 if(transfer->file_size != size) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
128 transfer->file_size = size;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
129
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
130 g_object_notify_by_pspec(G_OBJECT(transfer),
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
131 properties[PROP_FILE_SIZE]);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
132 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
133 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
134
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
135 static char *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
136 purple_file_transfer_get_local_file_name_and_size(GFile *local_file,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
137 guint64 *file_size)
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
138 {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
139 GError *error = NULL;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
140 GFileInfo *info = NULL;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
141 const char *display_name = NULL;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
142 char *ret = NULL;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
143
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
144 info = g_file_query_info(local_file,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
145 G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME ","
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
146 G_FILE_ATTRIBUTE_STANDARD_SIZE,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
147 G_FILE_QUERY_INFO_NONE,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
148 NULL,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
149 &error);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
150
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
151 if(error != NULL) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
152 char *path = g_file_get_path(local_file);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
153
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
154 g_warning("failed to query %s: %s", path, error->message);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
155
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
156 g_clear_pointer(&path, g_free);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
157 g_clear_error(&error);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
158 g_clear_object(&info);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
159
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
160 return NULL;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
161 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
162
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
163 display_name = g_file_info_get_attribute_string(info,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
164 G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
165 /* display_name is only valid as long as the GFileInfo object is around,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
166 * but it is freed before this function returns, so we need to dupe the
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
167 * display name attribute to return it.
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
168 */
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
169 ret = g_strdup(display_name);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
170
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
171 if(file_size != NULL) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
172 *file_size = g_file_info_get_attribute_uint64(info,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
173 G_FILE_ATTRIBUTE_STANDARD_SIZE);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
174 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
175
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
176 g_clear_object(&info);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
177
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
178 return ret;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
179 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
180
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
181 /******************************************************************************
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
182 * GObject Implementation
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
183 *****************************************************************************/
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
184 G_DEFINE_TYPE(PurpleFileTransfer, purple_file_transfer, G_TYPE_OBJECT)
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
185
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
186 static void
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
187 purple_file_transfer_finalize(GObject *obj) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
188 PurpleFileTransfer *transfer = PURPLE_FILE_TRANSFER(obj);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
189
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
190 g_clear_object(&transfer->account);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
191 g_clear_object(&transfer->remote);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
192 g_clear_object(&transfer->initiator);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
193
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
194 g_clear_object(&transfer->cancellable);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
195 g_clear_error(&transfer->error);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
196
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
197 g_clear_object(&transfer->local_file);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
198 g_clear_pointer(&transfer->filename, g_free);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
199 g_clear_pointer(&transfer->content_type, g_free);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
200
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
201 g_clear_pointer(&transfer->message, g_free);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
202
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
203 G_OBJECT_CLASS(purple_file_transfer_parent_class)->finalize(obj);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
204 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
205
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
206 static void
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
207 purple_file_transfer_get_property(GObject *obj, guint param_id, GValue *value,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
208 GParamSpec *pspec)
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
209 {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
210 PurpleFileTransfer *transfer = PURPLE_FILE_TRANSFER(obj);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
211
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
212 switch(param_id) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
213 case PROP_ACCOUNT:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
214 g_value_set_object(value, purple_file_transfer_get_account(transfer));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
215 break;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
216 case PROP_REMOTE:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
217 g_value_set_object(value, purple_file_transfer_get_remote(transfer));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
218 break;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
219 case PROP_INITIATOR:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
220 g_value_set_object(value,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
221 purple_file_transfer_get_initiator(transfer));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
222 break;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
223 case PROP_CANCELLABLE:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
224 g_value_set_object(value,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
225 purple_file_transfer_get_cancellable(transfer));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
226 break;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
227 case PROP_STATE:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
228 g_value_set_enum(value, purple_file_transfer_get_state(transfer));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
229 break;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
230 case PROP_ERROR:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
231 g_value_set_boxed(value, purple_file_transfer_get_error(transfer));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
232 break;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
233 case PROP_LOCAL_FILE:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
234 g_value_set_object(value,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
235 purple_file_transfer_get_local_file(transfer));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
236 break;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
237 case PROP_FILENAME:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
238 g_value_set_string(value,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
239 purple_file_transfer_get_filename(transfer));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
240 break;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
241 case PROP_FILE_SIZE:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
242 g_value_set_uint64(value,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
243 purple_file_transfer_get_file_size(transfer));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
244 break;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
245 case PROP_CONTENT_TYPE:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
246 g_value_set_string(value,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
247 purple_file_transfer_get_content_type(transfer));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
248 break;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
249 case PROP_MESSAGE:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
250 g_value_set_string(value, purple_file_transfer_get_message(transfer));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
251 break;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
252 default:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
253 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
254 break;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
255 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
256 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
257
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
258 static void
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
259 purple_file_transfer_set_property(GObject *obj, guint param_id,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
260 const GValue *value, GParamSpec *pspec)
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
261 {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
262 PurpleFileTransfer *transfer = PURPLE_FILE_TRANSFER(obj);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
263
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
264 switch(param_id) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
265 case PROP_ACCOUNT:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
266 purple_file_transfer_set_account(transfer, g_value_get_object(value));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
267 break;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
268 case PROP_REMOTE:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
269 purple_file_transfer_set_remote(transfer, g_value_get_object(value));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
270 break;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
271 case PROP_INITIATOR:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
272 purple_file_transfer_set_initiator(transfer,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
273 g_value_get_object(value));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
274 break;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
275 case PROP_STATE:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
276 purple_file_transfer_set_state(transfer, g_value_get_enum(value));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
277 break;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
278 case PROP_ERROR:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
279 purple_file_transfer_set_error(transfer, g_value_get_boxed(value));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
280 break;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
281 case PROP_LOCAL_FILE:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
282 purple_file_transfer_set_local_file(transfer,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
283 g_value_get_object(value));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
284 break;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
285 case PROP_FILENAME:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
286 purple_file_transfer_set_filename(transfer,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
287 g_value_get_string(value));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
288 break;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
289 case PROP_FILE_SIZE:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
290 purple_file_transfer_set_file_size(transfer,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
291 g_value_get_uint64(value));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
292 break;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
293 case PROP_CONTENT_TYPE:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
294 purple_file_transfer_set_content_type(transfer,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
295 g_value_get_string(value));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
296 break;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
297 case PROP_MESSAGE:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
298 purple_file_transfer_set_message(transfer, g_value_get_string(value));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
299 break;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
300 default:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
301 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
302 break;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
303 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
304 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
305
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
306 static void
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
307 purple_file_transfer_init(PurpleFileTransfer *transfer) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
308 transfer->cancellable = g_cancellable_new();
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
309 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
310
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
311 static void
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
312 purple_file_transfer_class_init(PurpleFileTransferClass *klass) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
313 GObjectClass *obj_class = G_OBJECT_CLASS(klass);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
314
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
315 obj_class->finalize = purple_file_transfer_finalize;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
316 obj_class->get_property = purple_file_transfer_get_property;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
317 obj_class->set_property = purple_file_transfer_set_property;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
318
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
319 /**
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
320 * PurpleFileTransfer:account:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
321 *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
322 * The account that this file transfer is for.
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
323 *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
324 * Since: 3.0.0
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
325 */
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
326 properties[PROP_ACCOUNT] = g_param_spec_object(
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
327 "account", "account",
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
328 "The account that this file transfer is for.",
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
329 PURPLE_TYPE_ACCOUNT,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
330 G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
331
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
332 /**
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
333 * PurpleFileTransfer:remote:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
334 *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
335 * The [class@ContactInfo] for the remote user of this file transfer.
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
336 *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
337 * Since: 3.0.0
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
338 */
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
339 properties[PROP_REMOTE] = g_param_spec_object(
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
340 "remote", "remote",
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
341 "The contact info for the remote user.",
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
342 PURPLE_TYPE_CONTACT_INFO,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
343 G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
344
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
345 /**
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
346 * PurpleFileTransfer:initiator:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
347 *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
348 * The [class@ContactInfo] that initiated this file transfer.
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
349 *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
350 * Since: 3.0.0
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
351 */
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
352 properties[PROP_INITIATOR] = g_param_spec_object(
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
353 "initiator", "initiator",
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
354 "The contact info of the user that initiated the file transfer.",
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
355 PURPLE_TYPE_CONTACT_INFO,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
356 G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
357
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
358 /**
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
359 * PurpleFileTransfer:cancellable:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
360 *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
361 * The [class@Gio.Cancellable] for this transfer. It may be used to cancel
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
362 * the file transfer at any time.
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
363 *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
364 * Since: 3.0.0
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
365 */
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
366 properties[PROP_CANCELLABLE] = g_param_spec_object(
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
367 "cancellable", "cancellable",
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
368 "The cancellable for this transfer.",
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
369 G_TYPE_CANCELLABLE,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
370 G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
371
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
372 /**
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
373 * PurpleFileTransfer:state:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
374 *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
375 * The state of the transfer.
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
376 *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
377 * This is typically only set by the protocol plugin that is performing the
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
378 * file transfer.
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
379 *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
380 * If the state is set to error then [property@FileTransfer:error]
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
381 * should be set.
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
382 *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
383 * Since: 3.0.0
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
384 */
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
385 properties[PROP_STATE] = g_param_spec_enum(
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
386 "state", "state",
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
387 "The state of the transfer.",
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
388 PURPLE_TYPE_FILE_TRANSFER_STATE,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
389 PURPLE_FILE_TRANSFER_STATE_UNKNOWN,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
390 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
391
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
392 /**
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
393 * PurpleFileTransfer:error:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
394 *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
395 * A #GError representing the failure of the transfer. This should only be
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
396 * set if [property@FileTransfer:state] is set to error.
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
397 *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
398 * This should be used to tell the user about network issues or if the
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
399 * transfer was cancelled and so on.
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
400 *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
401 * Since: 3.0.0
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
402 */
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
403 properties[PROP_ERROR] = g_param_spec_boxed(
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
404 "error", "error",
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
405 "The error that caused the transfer to fail.",
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
406 G_TYPE_ERROR,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
407 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
408
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
409 /**
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
410 * PurpleFileTransfer:local-file:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
411 *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
412 * The local file that is being sent or received.
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
413 *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
414 * When sending a file, this is the file that's being sent. When receiving
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
415 * a file, this is the file where the transfer is being written.
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
416 *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
417 * Since: 3.0.0
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
418 */
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
419 properties[PROP_LOCAL_FILE] = g_param_spec_object(
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
420 "local-file", "local-file",
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
421 "The local file for the transfer.",
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
422 G_TYPE_FILE,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
423 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
424
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
425 /**
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
426 * PurpleFileTransfer:filename:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
427 *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
428 * The base filename for the transfer. This is used as the default filename
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
429 * for the receiving side.
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
430 *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
431 * Since: 3.0.0
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
432 */
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
433 properties[PROP_FILENAME] = g_param_spec_string(
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
434 "filename", "filename",
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
435 "The base filename for the transfer.",
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
436 NULL,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
437 G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
438
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
439 /**
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
440 * PurpleFileTransfer:file-size:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
441 *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
442 * The size of the file in bytes. A value of %0 typically means the size is
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
443 * unknown, but it is possible to transfer empty files as well.
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
444 *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
445 * Since: 3.0.0
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
446 */
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
447 properties[PROP_FILE_SIZE] = g_param_spec_uint64(
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
448 "file-size", "file-size",
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
449 "The size of the file in bytes.",
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
450 0, G_MAXUINT64, 0,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
451 G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
452
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
453 /**
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
454 * PurpleFileTransfer:content-type:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
455 *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
456 * The content or media type of the file that's being transferred. This is
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
457 * meant to be used as a hint to user interfaces so they can provide
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
458 * previews or appropriate actions for the files.
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
459 *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
460 * See the [Media Types page](https://www.iana.org/assignments/media-types/media-types.xhtml)
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
461 * for more information.
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
462 *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
463 * Since: 3.0.0
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
464 */
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
465 properties[PROP_CONTENT_TYPE] = g_param_spec_string(
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
466 "content-type", "content-type",
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
467 "The content type of the file being transferred.",
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
468 NULL,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
469 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
470
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
471 /**
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
472 * PurpleFileTransfer:message:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
473 *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
474 * Some protocols support sending a message with the file transfer. This
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
475 * field is to hold that message.
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
476 *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
477 * Since: 3.0.0
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
478 */
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
479 properties[PROP_MESSAGE] = g_param_spec_string(
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
480 "message", "message",
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
481 "The message to send with the transfer.",
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
482 NULL,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
483 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
484
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
485 g_object_class_install_properties(obj_class, N_PROPERTIES, properties);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
486 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
487
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
488 /******************************************************************************
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
489 * Public API
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
490 *****************************************************************************/
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
491 PurpleFileTransfer *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
492 purple_file_transfer_new_send(PurpleAccount *account,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
493 PurpleContactInfo *remote,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
494 GFile *local_file)
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
495 {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
496 PurpleFileTransfer *transfer = NULL;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
497 gchar *filename = NULL;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
498 guint64 file_size = 0;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
499
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
500 g_return_val_if_fail(PURPLE_IS_ACCOUNT(account), NULL);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
501 g_return_val_if_fail(PURPLE_IS_CONTACT_INFO(remote), NULL);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
502
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
503 filename = purple_file_transfer_get_local_file_name_and_size(local_file,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
504 &file_size);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
505
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
506 transfer = g_object_new(
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
507 PURPLE_TYPE_FILE_TRANSFER,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
508 "account", account,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
509 "remote", remote,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
510 "initiator", PURPLE_CONTACT_INFO(account),
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
511 "local-file", local_file,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
512 "filename", filename,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
513 "file-size", file_size,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
514 NULL);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
515
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
516 g_clear_pointer(&filename, g_free);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
517
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
518 return transfer;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
519 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
520
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
521 PurpleFileTransfer *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
522 purple_file_transfer_new_receive(PurpleAccount *account,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
523 PurpleContactInfo *remote,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
524 const char *filename,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
525 guint64 file_size)
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
526 {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
527 g_return_val_if_fail(PURPLE_IS_ACCOUNT(account), NULL);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
528 g_return_val_if_fail(PURPLE_IS_CONTACT_INFO(remote), NULL);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
529 g_return_val_if_fail(!purple_strempty(filename), NULL);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
530
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
531 return g_object_new(
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
532 PURPLE_TYPE_FILE_TRANSFER,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
533 "account", account,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
534 "remote", remote,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
535 "initiator", remote,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
536 "filename", filename,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
537 "file-size", file_size,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
538 NULL);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
539 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
540
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
541 PurpleAccount *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
542 purple_file_transfer_get_account(PurpleFileTransfer *transfer) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
543 g_return_val_if_fail(PURPLE_IS_FILE_TRANSFER(transfer), NULL);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
544
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
545 return transfer->account;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
546 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
547
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
548 PurpleContactInfo *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
549 purple_file_transfer_get_remote(PurpleFileTransfer *transfer) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
550 g_return_val_if_fail(PURPLE_IS_FILE_TRANSFER(transfer), NULL);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
551
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
552 return transfer->remote;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
553 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
554
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
555 PurpleContactInfo *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
556 purple_file_transfer_get_initiator(PurpleFileTransfer *transfer) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
557 g_return_val_if_fail(PURPLE_IS_FILE_TRANSFER(transfer), NULL);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
558
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
559 return transfer->initiator;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
560 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
561
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
562 GCancellable *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
563 purple_file_transfer_get_cancellable(PurpleFileTransfer *transfer) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
564 g_return_val_if_fail(PURPLE_IS_FILE_TRANSFER(transfer), NULL);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
565
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
566 return transfer->cancellable;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
567 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
568
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
569 PurpleFileTransferState
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
570 purple_file_transfer_get_state(PurpleFileTransfer *transfer) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
571 g_return_val_if_fail(PURPLE_IS_FILE_TRANSFER(transfer),
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
572 PURPLE_FILE_TRANSFER_STATE_UNKNOWN);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
573
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
574 return transfer->state;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
575 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
576
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
577 void
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
578 purple_file_transfer_set_state(PurpleFileTransfer *transfer,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
579 PurpleFileTransferState state)
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
580 {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
581 g_return_if_fail(PURPLE_IS_FILE_TRANSFER(transfer));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
582
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
583 if(transfer->state != state) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
584 transfer->state = state;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
585
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
586 g_object_notify_by_pspec(G_OBJECT(transfer), properties[PROP_STATE]);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
587 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
588 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
589
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
590 GError *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
591 purple_file_transfer_get_error(PurpleFileTransfer *transfer) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
592 g_return_val_if_fail(PURPLE_IS_FILE_TRANSFER(transfer), NULL);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
593
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
594 return transfer->error;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
595 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
596
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
597 void
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
598 purple_file_transfer_set_error(PurpleFileTransfer *transfer, GError *error) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
599 g_return_if_fail(PURPLE_IS_FILE_TRANSFER(transfer));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
600
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
601 if(transfer->error != error) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
602 g_clear_error(&transfer->error);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
603 transfer->error = error;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
604
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
605 g_object_notify_by_pspec(G_OBJECT(transfer), properties[PROP_ERROR]);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
606 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
607 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
608
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
609 GFile *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
610 purple_file_transfer_get_local_file(PurpleFileTransfer *transfer) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
611 g_return_val_if_fail(PURPLE_IS_FILE_TRANSFER(transfer), NULL);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
612
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
613 return transfer->local_file;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
614 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
615
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
616 void
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
617 purple_file_transfer_set_local_file(PurpleFileTransfer *transfer,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
618 GFile *local_file)
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
619 {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
620 g_return_if_fail(PURPLE_IS_FILE_TRANSFER(transfer));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
621 g_return_if_fail(G_IS_FILE(local_file));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
622
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
623 if(g_set_object(&transfer->local_file, local_file)) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
624 g_object_notify_by_pspec(G_OBJECT(transfer),
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
625 properties[PROP_LOCAL_FILE]);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
626 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
627 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
628
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
629 const char *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
630 purple_file_transfer_get_filename(PurpleFileTransfer *transfer) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
631 g_return_val_if_fail(PURPLE_IS_FILE_TRANSFER(transfer), NULL);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
632
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
633 return transfer->filename;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
634 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
635
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
636 guint64
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
637 purple_file_transfer_get_file_size(PurpleFileTransfer *transfer) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
638 g_return_val_if_fail(PURPLE_IS_FILE_TRANSFER(transfer), 0);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
639
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
640 return transfer->file_size;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
641 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
642
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
643 const char *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
644 purple_file_transfer_get_content_type(PurpleFileTransfer *transfer) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
645 g_return_val_if_fail(PURPLE_IS_FILE_TRANSFER(transfer), NULL);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
646
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
647 return transfer->content_type;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
648 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
649
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
650 void
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
651 purple_file_transfer_set_content_type(PurpleFileTransfer *transfer,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
652 const char *content_type)
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
653 {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
654 g_return_if_fail(PURPLE_IS_FILE_TRANSFER(transfer));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
655
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
656 if(!purple_strequal(transfer->content_type, content_type)) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
657 g_free(transfer->content_type);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
658 transfer->content_type = g_strdup(content_type);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
659
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
660 g_object_notify_by_pspec(G_OBJECT(transfer),
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
661 properties[PROP_CONTENT_TYPE]);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
662 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
663 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
664
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
665 const char *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
666 purple_file_transfer_get_message(PurpleFileTransfer *transfer) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
667 g_return_val_if_fail(PURPLE_IS_FILE_TRANSFER(transfer), NULL);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
668
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
669 return transfer->message;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
670 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
671
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
672 void
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
673 purple_file_transfer_set_message(PurpleFileTransfer *transfer,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
674 const char *message)
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
675 {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
676 g_return_if_fail(PURPLE_IS_FILE_TRANSFER(transfer));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
677
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
678 if(!purple_strequal(transfer->message, message)) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
679 g_free(transfer->message);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
680 transfer->message = g_strdup(message);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
681
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
682 g_object_notify_by_pspec(G_OBJECT(transfer), properties[PROP_MESSAGE]);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
683 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
684 }

mercurial