libpurple/purplefiletransfer.c

Tue, 15 Oct 2024 00:47:42 -0500

author
Elliott Sales de Andrade <quantum.analyst@gmail.com>
date
Tue, 15 Oct 2024 00:47:42 -0500
changeset 43011
ce3144e2bc33
parent 42805
3e77e81168a5
child 43071
071588186662
permissions
-rw-r--r--

Port prefs to AdwSwitchRow

Now that we depend on Adwaita 1.4, we can flip the switch on using these (pun intended).

This also simplifies some extra tracking we needed to do for activations and focus, since the Adwaita widgets do that for us.

Testing Done:
Opened prefs, confirmed all the switches were there, and toggled them all without any warnings.

Also used the mnemonics to toggle the switches from the keyboard.

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

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
42594
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42576
diff changeset
6 * to list here. Please refer to the COPYRIGHT file distributed with this
42330
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 *
42594
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42576
diff changeset
9 * This library is free software; you can redistribute it and/or modify it
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42576
diff changeset
10 * under the terms of the GNU General Public License as published by the Free
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42576
diff changeset
11 * Software Foundation; either version 2 of the License, or (at your option)
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42576
diff changeset
12 * any later version.
42330
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
13 *
42594
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42576
diff changeset
14 * This library is distributed in the hope that it will be useful, but WITHOUT
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42576
diff changeset
15 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42576
diff changeset
16 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42576
diff changeset
17 * more details.
42330
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
18 *
42594
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42576
diff changeset
19 * You should have received a copy of the GNU General Public License along with
eddde70cedd8 Create a test for verifying license headers and correct the ones that were wrong
Gary Kramlich <grim@reaperworld.com>
parents: 42576
diff changeset
20 * this library; if not, see <https://www.gnu.org/licenses/>.
42330
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
42767
8cf1d11b59c1 Use g_set_str everywhere
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42614
diff changeset
113 if(g_set_str(&transfer->filename, filename)) {
42330
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
114 g_object_notify_by_pspec(G_OBJECT(transfer),
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
115 properties[PROP_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 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
118
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
119 static void
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
120 purple_file_transfer_set_file_size(PurpleFileTransfer *transfer, guint64 size)
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
121 {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
122 g_return_if_fail(PURPLE_IS_FILE_TRANSFER(transfer));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
123
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
124 if(transfer->file_size != size) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
125 transfer->file_size = size;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
126
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
127 g_object_notify_by_pspec(G_OBJECT(transfer),
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
128 properties[PROP_FILE_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 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
131
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
132 static char *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
133 purple_file_transfer_get_local_file_name_and_size(GFile *local_file,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
134 guint64 *file_size)
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
135 {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
136 GError *error = NULL;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
137 GFileInfo *info = NULL;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
138 const char *display_name = NULL;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
139 char *ret = NULL;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
140
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
141 info = g_file_query_info(local_file,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
142 G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME ","
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
143 G_FILE_ATTRIBUTE_STANDARD_SIZE,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
144 G_FILE_QUERY_INFO_NONE,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
145 NULL,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
146 &error);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
147
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
148 if(error != NULL) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
149 char *path = g_file_get_path(local_file);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
150
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
151 g_warning("failed to query %s: %s", path, error->message);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
152
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
153 g_clear_pointer(&path, g_free);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
154 g_clear_error(&error);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
155 g_clear_object(&info);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
156
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
157 return NULL;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
158 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
159
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
160 display_name = g_file_info_get_attribute_string(info,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
161 G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
162 /* display_name is only valid as long as the GFileInfo object is around,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
163 * 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
164 * display name attribute to return it.
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
165 */
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
166 ret = g_strdup(display_name);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
167
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
168 if(file_size != NULL) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
169 *file_size = g_file_info_get_attribute_uint64(info,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
170 G_FILE_ATTRIBUTE_STANDARD_SIZE);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
171 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
172
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
173 g_clear_object(&info);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
174
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
175 return ret;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
176 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
177
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
178 /******************************************************************************
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
179 * GObject Implementation
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
180 *****************************************************************************/
42576
ab1ca778ddb2 Make sure all of the final types in libpurple are defined as such
Gary Kramlich <grim@reaperworld.com>
parents: 42344
diff changeset
181 G_DEFINE_FINAL_TYPE(PurpleFileTransfer, purple_file_transfer, G_TYPE_OBJECT)
42330
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
182
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
183 static void
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
184 purple_file_transfer_finalize(GObject *obj) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
185 PurpleFileTransfer *transfer = PURPLE_FILE_TRANSFER(obj);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
186
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
187 g_clear_object(&transfer->account);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
188 g_clear_object(&transfer->remote);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
189 g_clear_object(&transfer->initiator);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
190
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
191 g_clear_object(&transfer->cancellable);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
192 g_clear_error(&transfer->error);
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->local_file);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
195 g_clear_pointer(&transfer->filename, g_free);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
196 g_clear_pointer(&transfer->content_type, g_free);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
197
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
198 g_clear_pointer(&transfer->message, g_free);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
199
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
200 G_OBJECT_CLASS(purple_file_transfer_parent_class)->finalize(obj);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
201 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
202
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
203 static void
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
204 purple_file_transfer_get_property(GObject *obj, guint param_id, GValue *value,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
205 GParamSpec *pspec)
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
206 {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
207 PurpleFileTransfer *transfer = PURPLE_FILE_TRANSFER(obj);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
208
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
209 switch(param_id) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
210 case PROP_ACCOUNT:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
211 g_value_set_object(value, purple_file_transfer_get_account(transfer));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
212 break;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
213 case PROP_REMOTE:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
214 g_value_set_object(value, purple_file_transfer_get_remote(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_INITIATOR:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
217 g_value_set_object(value,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
218 purple_file_transfer_get_initiator(transfer));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
219 break;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
220 case PROP_CANCELLABLE:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
221 g_value_set_object(value,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
222 purple_file_transfer_get_cancellable(transfer));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
223 break;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
224 case PROP_STATE:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
225 g_value_set_enum(value, purple_file_transfer_get_state(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_ERROR:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
228 g_value_set_boxed(value, purple_file_transfer_get_error(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_LOCAL_FILE:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
231 g_value_set_object(value,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
232 purple_file_transfer_get_local_file(transfer));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
233 break;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
234 case PROP_FILENAME:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
235 g_value_set_string(value,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
236 purple_file_transfer_get_filename(transfer));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
237 break;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
238 case PROP_FILE_SIZE:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
239 g_value_set_uint64(value,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
240 purple_file_transfer_get_file_size(transfer));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
241 break;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
242 case PROP_CONTENT_TYPE:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
243 g_value_set_string(value,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
244 purple_file_transfer_get_content_type(transfer));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
245 break;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
246 case PROP_MESSAGE:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
247 g_value_set_string(value, purple_file_transfer_get_message(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 default:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
250 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
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 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
253 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
254
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
255 static void
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
256 purple_file_transfer_set_property(GObject *obj, guint param_id,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
257 const GValue *value, GParamSpec *pspec)
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
258 {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
259 PurpleFileTransfer *transfer = PURPLE_FILE_TRANSFER(obj);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
260
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
261 switch(param_id) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
262 case PROP_ACCOUNT:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
263 purple_file_transfer_set_account(transfer, g_value_get_object(value));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
264 break;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
265 case PROP_REMOTE:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
266 purple_file_transfer_set_remote(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_INITIATOR:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
269 purple_file_transfer_set_initiator(transfer,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
270 g_value_get_object(value));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
271 break;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
272 case PROP_STATE:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
273 purple_file_transfer_set_state(transfer, g_value_get_enum(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_ERROR:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
276 purple_file_transfer_set_error(transfer, g_value_get_boxed(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_LOCAL_FILE:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
279 purple_file_transfer_set_local_file(transfer,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
280 g_value_get_object(value));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
281 break;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
282 case PROP_FILENAME:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
283 purple_file_transfer_set_filename(transfer,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
284 g_value_get_string(value));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
285 break;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
286 case PROP_FILE_SIZE:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
287 purple_file_transfer_set_file_size(transfer,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
288 g_value_get_uint64(value));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
289 break;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
290 case PROP_CONTENT_TYPE:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
291 purple_file_transfer_set_content_type(transfer,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
292 g_value_get_string(value));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
293 break;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
294 case PROP_MESSAGE:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
295 purple_file_transfer_set_message(transfer, 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 default:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
298 G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
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 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
301 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
302
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
303 static void
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
304 purple_file_transfer_init(PurpleFileTransfer *transfer) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
305 transfer->cancellable = g_cancellable_new();
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
306 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
307
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
308 static void
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
309 purple_file_transfer_class_init(PurpleFileTransferClass *klass) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
310 GObjectClass *obj_class = G_OBJECT_CLASS(klass);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
311
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
312 obj_class->finalize = purple_file_transfer_finalize;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
313 obj_class->get_property = purple_file_transfer_get_property;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
314 obj_class->set_property = purple_file_transfer_set_property;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
315
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
316 /**
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
317 * PurpleFileTransfer:account:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
318 *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
319 * The account that this file transfer is for.
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
320 *
42614
b75a5bbf6c35 Remove the micro version from since tags for libpurple part 3
Gary Kramlich <grim@reaperworld.com>
parents: 42594
diff changeset
321 * Since: 3.0
42330
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
322 */
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
323 properties[PROP_ACCOUNT] = g_param_spec_object(
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
324 "account", "account",
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
325 "The account that this file transfer is for.",
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
326 PURPLE_TYPE_ACCOUNT,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
327 G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
328
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
329 /**
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
330 * PurpleFileTransfer:remote:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
331 *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
332 * The [class@ContactInfo] for the remote user of this file transfer.
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
333 *
42614
b75a5bbf6c35 Remove the micro version from since tags for libpurple part 3
Gary Kramlich <grim@reaperworld.com>
parents: 42594
diff changeset
334 * Since: 3.0
42330
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
335 */
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
336 properties[PROP_REMOTE] = g_param_spec_object(
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
337 "remote", "remote",
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
338 "The contact info for the remote user.",
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
339 PURPLE_TYPE_CONTACT_INFO,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
340 G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
341
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
342 /**
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
343 * PurpleFileTransfer:initiator:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
344 *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
345 * The [class@ContactInfo] that initiated this file transfer.
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
346 *
42614
b75a5bbf6c35 Remove the micro version from since tags for libpurple part 3
Gary Kramlich <grim@reaperworld.com>
parents: 42594
diff changeset
347 * Since: 3.0
42330
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
348 */
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
349 properties[PROP_INITIATOR] = g_param_spec_object(
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
350 "initiator", "initiator",
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
351 "The contact info of the user that initiated the file transfer.",
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
352 PURPLE_TYPE_CONTACT_INFO,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
353 G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
354
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
355 /**
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
356 * PurpleFileTransfer:cancellable:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
357 *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
358 * The [class@Gio.Cancellable] for this transfer. It may be used to cancel
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
359 * the file transfer at any time.
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
360 *
42614
b75a5bbf6c35 Remove the micro version from since tags for libpurple part 3
Gary Kramlich <grim@reaperworld.com>
parents: 42594
diff changeset
361 * Since: 3.0
42330
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
362 */
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
363 properties[PROP_CANCELLABLE] = g_param_spec_object(
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
364 "cancellable", "cancellable",
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
365 "The cancellable for this transfer.",
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
366 G_TYPE_CANCELLABLE,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
367 G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
368
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
369 /**
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
370 * PurpleFileTransfer:state:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
371 *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
372 * The state of the transfer.
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
373 *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
374 * This is typically only set by the protocol plugin that is performing the
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
375 * file 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 * If the state is set to error then [property@FileTransfer:error]
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
378 * should be set.
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
379 *
42614
b75a5bbf6c35 Remove the micro version from since tags for libpurple part 3
Gary Kramlich <grim@reaperworld.com>
parents: 42594
diff changeset
380 * Since: 3.0
42330
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
381 */
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
382 properties[PROP_STATE] = g_param_spec_enum(
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
383 "state", "state",
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
384 "The state of the transfer.",
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
385 PURPLE_TYPE_FILE_TRANSFER_STATE,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
386 PURPLE_FILE_TRANSFER_STATE_UNKNOWN,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
387 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
388
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
389 /**
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
390 * PurpleFileTransfer:error:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
391 *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
392 * A #GError representing the failure of the transfer. This should only be
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
393 * set if [property@FileTransfer:state] is set to 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 * 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
396 * transfer was cancelled and so on.
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
397 *
42614
b75a5bbf6c35 Remove the micro version from since tags for libpurple part 3
Gary Kramlich <grim@reaperworld.com>
parents: 42594
diff changeset
398 * Since: 3.0
42330
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
399 */
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
400 properties[PROP_ERROR] = g_param_spec_boxed(
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
401 "error", "error",
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
402 "The error that caused the transfer to fail.",
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
403 G_TYPE_ERROR,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
404 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
405
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
406 /**
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
407 * PurpleFileTransfer:local-file:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
408 *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
409 * The local file that is being sent or received.
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
410 *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
411 * 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
412 * a file, this is the file where the transfer is being written.
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
413 *
42614
b75a5bbf6c35 Remove the micro version from since tags for libpurple part 3
Gary Kramlich <grim@reaperworld.com>
parents: 42594
diff changeset
414 * Since: 3.0
42330
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
415 */
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
416 properties[PROP_LOCAL_FILE] = g_param_spec_object(
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
417 "local-file", "local-file",
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
418 "The local file for the transfer.",
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
419 G_TYPE_FILE,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
420 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
421
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
422 /**
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
423 * PurpleFileTransfer:filename:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
424 *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
425 * The base filename for the transfer. This is used as the default filename
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
426 * for the receiving side.
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
427 *
42614
b75a5bbf6c35 Remove the micro version from since tags for libpurple part 3
Gary Kramlich <grim@reaperworld.com>
parents: 42594
diff changeset
428 * Since: 3.0
42330
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
429 */
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
430 properties[PROP_FILENAME] = g_param_spec_string(
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
431 "filename", "filename",
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
432 "The base filename for the transfer.",
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
433 NULL,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
434 G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
435
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
436 /**
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
437 * PurpleFileTransfer:file-size:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
438 *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
439 * 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
440 * unknown, but it is possible to transfer empty files as well.
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
441 *
42614
b75a5bbf6c35 Remove the micro version from since tags for libpurple part 3
Gary Kramlich <grim@reaperworld.com>
parents: 42594
diff changeset
442 * Since: 3.0
42330
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
443 */
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
444 properties[PROP_FILE_SIZE] = g_param_spec_uint64(
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
445 "file-size", "file-size",
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
446 "The size of the file in bytes.",
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
447 0, G_MAXUINT64, 0,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
448 G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
449
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
450 /**
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
451 * PurpleFileTransfer:content-type:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
452 *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
453 * 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
454 * 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
455 * previews or appropriate actions for the files.
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
456 *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
457 * 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
458 * for more information.
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
459 *
42614
b75a5bbf6c35 Remove the micro version from since tags for libpurple part 3
Gary Kramlich <grim@reaperworld.com>
parents: 42594
diff changeset
460 * Since: 3.0
42330
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
461 */
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
462 properties[PROP_CONTENT_TYPE] = g_param_spec_string(
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
463 "content-type", "content-type",
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
464 "The content type of the file being transferred.",
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
465 NULL,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
466 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
467
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
468 /**
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
469 * PurpleFileTransfer:message:
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
470 *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
471 * Some protocols support sending a message with the file transfer. This
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
472 * field is to hold that message.
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
473 *
42614
b75a5bbf6c35 Remove the micro version from since tags for libpurple part 3
Gary Kramlich <grim@reaperworld.com>
parents: 42594
diff changeset
474 * Since: 3.0
42330
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
475 */
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
476 properties[PROP_MESSAGE] = g_param_spec_string(
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
477 "message", "message",
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
478 "The message to send with the transfer.",
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
479 NULL,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
480 G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
481
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
482 g_object_class_install_properties(obj_class, N_PROPERTIES, properties);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
483 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
484
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
485 /******************************************************************************
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
486 * Public API
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
487 *****************************************************************************/
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
488 PurpleFileTransfer *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
489 purple_file_transfer_new_send(PurpleAccount *account,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
490 PurpleContactInfo *remote,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
491 GFile *local_file)
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
492 {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
493 PurpleFileTransfer *transfer = NULL;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
494 gchar *filename = NULL;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
495 guint64 file_size = 0;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
496
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
497 g_return_val_if_fail(PURPLE_IS_ACCOUNT(account), NULL);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
498 g_return_val_if_fail(PURPLE_IS_CONTACT_INFO(remote), NULL);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
499
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
500 filename = purple_file_transfer_get_local_file_name_and_size(local_file,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
501 &file_size);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
502
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
503 transfer = g_object_new(
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
504 PURPLE_TYPE_FILE_TRANSFER,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
505 "account", account,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
506 "remote", remote,
42805
3e77e81168a5 Update libpurple to use get id and username directly on PurpleAccount
Gary Kramlich <grim@reaperworld.com>
parents: 42767
diff changeset
507 "initiator", purple_account_get_contact_info(account),
42330
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
508 "local-file", local_file,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
509 "filename", filename,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
510 "file-size", file_size,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
511 NULL);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
512
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
513 g_clear_pointer(&filename, g_free);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
514
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
515 return transfer;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
516 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
517
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
518 PurpleFileTransfer *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
519 purple_file_transfer_new_receive(PurpleAccount *account,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
520 PurpleContactInfo *remote,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
521 const char *filename,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
522 guint64 file_size)
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
523 {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
524 g_return_val_if_fail(PURPLE_IS_ACCOUNT(account), NULL);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
525 g_return_val_if_fail(PURPLE_IS_CONTACT_INFO(remote), NULL);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
526 g_return_val_if_fail(!purple_strempty(filename), NULL);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
527
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
528 return g_object_new(
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
529 PURPLE_TYPE_FILE_TRANSFER,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
530 "account", account,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
531 "remote", remote,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
532 "initiator", remote,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
533 "filename", filename,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
534 "file-size", file_size,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
535 NULL);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
536 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
537
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
538 PurpleAccount *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
539 purple_file_transfer_get_account(PurpleFileTransfer *transfer) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
540 g_return_val_if_fail(PURPLE_IS_FILE_TRANSFER(transfer), NULL);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
541
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
542 return transfer->account;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
543 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
544
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
545 PurpleContactInfo *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
546 purple_file_transfer_get_remote(PurpleFileTransfer *transfer) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
547 g_return_val_if_fail(PURPLE_IS_FILE_TRANSFER(transfer), NULL);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
548
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
549 return transfer->remote;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
550 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
551
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
552 PurpleContactInfo *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
553 purple_file_transfer_get_initiator(PurpleFileTransfer *transfer) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
554 g_return_val_if_fail(PURPLE_IS_FILE_TRANSFER(transfer), NULL);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
555
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
556 return transfer->initiator;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
557 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
558
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
559 GCancellable *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
560 purple_file_transfer_get_cancellable(PurpleFileTransfer *transfer) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
561 g_return_val_if_fail(PURPLE_IS_FILE_TRANSFER(transfer), NULL);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
562
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
563 return transfer->cancellable;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
564 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
565
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
566 PurpleFileTransferState
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
567 purple_file_transfer_get_state(PurpleFileTransfer *transfer) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
568 g_return_val_if_fail(PURPLE_IS_FILE_TRANSFER(transfer),
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
569 PURPLE_FILE_TRANSFER_STATE_UNKNOWN);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
570
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
571 return transfer->state;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
572 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
573
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
574 void
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
575 purple_file_transfer_set_state(PurpleFileTransfer *transfer,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
576 PurpleFileTransferState state)
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
577 {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
578 g_return_if_fail(PURPLE_IS_FILE_TRANSFER(transfer));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
579
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
580 if(transfer->state != state) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
581 transfer->state = state;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
582
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
583 g_object_notify_by_pspec(G_OBJECT(transfer), properties[PROP_STATE]);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
584 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
585 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
586
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
587 GError *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
588 purple_file_transfer_get_error(PurpleFileTransfer *transfer) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
589 g_return_val_if_fail(PURPLE_IS_FILE_TRANSFER(transfer), NULL);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
590
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
591 return transfer->error;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
592 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
593
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
594 void
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
595 purple_file_transfer_set_error(PurpleFileTransfer *transfer, GError *error) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
596 g_return_if_fail(PURPLE_IS_FILE_TRANSFER(transfer));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
597
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
598 if(transfer->error != error) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
599 g_clear_error(&transfer->error);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
600 transfer->error = error;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
601
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
602 g_object_notify_by_pspec(G_OBJECT(transfer), properties[PROP_ERROR]);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
603 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
604 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
605
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
606 GFile *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
607 purple_file_transfer_get_local_file(PurpleFileTransfer *transfer) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
608 g_return_val_if_fail(PURPLE_IS_FILE_TRANSFER(transfer), NULL);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
609
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
610 return transfer->local_file;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
611 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
612
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
613 void
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
614 purple_file_transfer_set_local_file(PurpleFileTransfer *transfer,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
615 GFile *local_file)
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
616 {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
617 g_return_if_fail(PURPLE_IS_FILE_TRANSFER(transfer));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
618 g_return_if_fail(G_IS_FILE(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 if(g_set_object(&transfer->local_file, local_file)) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
621 g_object_notify_by_pspec(G_OBJECT(transfer),
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
622 properties[PROP_LOCAL_FILE]);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
623 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
624 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
625
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
626 const char *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
627 purple_file_transfer_get_filename(PurpleFileTransfer *transfer) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
628 g_return_val_if_fail(PURPLE_IS_FILE_TRANSFER(transfer), NULL);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
629
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
630 return transfer->filename;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
631 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
632
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
633 guint64
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
634 purple_file_transfer_get_file_size(PurpleFileTransfer *transfer) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
635 g_return_val_if_fail(PURPLE_IS_FILE_TRANSFER(transfer), 0);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
636
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
637 return transfer->file_size;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
638 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
639
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
640 const char *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
641 purple_file_transfer_get_content_type(PurpleFileTransfer *transfer) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
642 g_return_val_if_fail(PURPLE_IS_FILE_TRANSFER(transfer), NULL);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
643
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
644 return transfer->content_type;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
645 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
646
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
647 void
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
648 purple_file_transfer_set_content_type(PurpleFileTransfer *transfer,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
649 const char *content_type)
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
650 {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
651 g_return_if_fail(PURPLE_IS_FILE_TRANSFER(transfer));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
652
42767
8cf1d11b59c1 Use g_set_str everywhere
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42614
diff changeset
653 if(g_set_str(&transfer->content_type, content_type)) {
42330
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
654 g_object_notify_by_pspec(G_OBJECT(transfer),
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
655 properties[PROP_CONTENT_TYPE]);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
656 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
657 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
658
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
659 const char *
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
660 purple_file_transfer_get_message(PurpleFileTransfer *transfer) {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
661 g_return_val_if_fail(PURPLE_IS_FILE_TRANSFER(transfer), NULL);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
662
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
663 return transfer->message;
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
664 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
665
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
666 void
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
667 purple_file_transfer_set_message(PurpleFileTransfer *transfer,
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
668 const char *message)
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
669 {
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
670 g_return_if_fail(PURPLE_IS_FILE_TRANSFER(transfer));
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
671
42767
8cf1d11b59c1 Use g_set_str everywhere
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42614
diff changeset
672 if(g_set_str(&transfer->message, message)) {
42330
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
673 g_object_notify_by_pspec(G_OBJECT(transfer), properties[PROP_MESSAGE]);
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
674 }
a2fa1d2d2452 Implement PurpleFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
675 }

mercurial