KIO

job_error.cpp
1/*
2 This file is part of the KDE libraries
3 SPDX-FileCopyrightText: 2000 David Faure <faure@kde.org>
4
5 SPDX-License-Identifier: LGPL-2.0-only
6*/
7
8#include "job.h"
9#include <KLocalizedString>
10#include <KStringHandler>
11#include <kprotocolmanager.h>
12
13#include <QDataStream>
14#include <QDateTime>
15#include <QLocale>
16#include <QUrl>
17
18#ifdef Q_OS_WIN
19#include "kioglobal_p.h"
20#else
21#include <sys/stat.h> // S_IRUSR etc
22#endif
23
24static const int s_maxFilePathLength = 80;
25
30
31KIOCORE_EXPORT QString KIO::buildErrorString(int errorCode, const QString &errorText)
32{
33 QString result;
34
35 switch (errorCode) {
36 case KIO::ERR_CANNOT_OPEN_FOR_READING:
37 result = i18n("Could not read %1.", errorText);
38 break;
39 case KIO::ERR_CANNOT_OPEN_FOR_WRITING:
40 result = i18n("Could not write to %1.", KStringHandler::csqueeze(errorText, s_maxFilePathLength));
41 break;
42 case KIO::ERR_CANNOT_LAUNCH_PROCESS:
43 result = i18n("Could not start process %1.", errorText);
44 break;
45 case KIO::ERR_INTERNAL:
46 result = i18n("Internal Error\nPlease send a full bug report at https://bugs.kde.org\n%1", errorText);
47 break;
48 case KIO::ERR_MALFORMED_URL:
49 result = i18n("Malformed URL %1.", errorText);
50 break;
51 case KIO::ERR_UNSUPPORTED_PROTOCOL:
52 result = i18n("The protocol %1 is not supported.", errorText);
53 break;
54 case KIO::ERR_NO_SOURCE_PROTOCOL:
55 result = i18n("The protocol %1 is only a filter protocol.", errorText);
56 break;
57 case KIO::ERR_UNSUPPORTED_ACTION:
58 result = errorText;
59 // result = i18n( "Unsupported action %1" ).arg( errorText );
60 break;
62 result = i18n("%1 is a folder, but a file was expected.", errorText);
63 break;
65 result = i18n("%1 is a file, but a folder was expected.", errorText);
66 break;
67 case KIO::ERR_DOES_NOT_EXIST:
68 result = i18n("The file or folder %1 does not exist.", errorText);
69 break;
70 case KIO::ERR_FILE_ALREADY_EXIST:
71 result = i18n("A file named %1 already exists.", errorText);
72 break;
73 case KIO::ERR_DIR_ALREADY_EXIST:
74 result = i18n("A folder named %1 already exists.", errorText);
75 break;
76 case KIO::ERR_UNKNOWN_HOST:
77 result = errorText.isEmpty() ? i18n("No hostname specified.") : i18n("Unknown host %1", errorText);
78 break;
79 case KIO::ERR_ACCESS_DENIED:
80 result = i18n("Access denied to %1.", errorText);
81 break;
82 case KIO::ERR_WRITE_ACCESS_DENIED:
83 result = i18n("Access denied.\nCould not write to %1.", errorText);
84 break;
85 case KIO::ERR_CANNOT_ENTER_DIRECTORY:
86 result = i18n("Could not enter folder %1.", errorText);
87 break;
88 case KIO::ERR_PROTOCOL_IS_NOT_A_FILESYSTEM:
89 result = i18n("The protocol %1 does not implement a folder service.", errorText);
90 break;
91 case KIO::ERR_CYCLIC_LINK:
92 result = i18n("Found a cyclic link in %1.", errorText);
93 break;
94 case KIO::ERR_CYCLIC_COPY:
95 result = i18n("Found a cyclic link while copying %1.", errorText);
96 break;
97 case KIO::ERR_CANNOT_CREATE_SOCKET:
98 result = i18n("Could not create socket for accessing %1.", errorText);
99 break;
100 case KIO::ERR_CANNOT_CONNECT:
101 result = i18n("Could not connect to host %1.", errorText.isEmpty() ? QStringLiteral("localhost") : errorText);
102 break;
103 case KIO::ERR_CONNECTION_BROKEN:
104 result = i18n("Connection to host %1 is broken.", errorText);
105 break;
106 case KIO::ERR_NOT_FILTER_PROTOCOL:
107 result = i18n("The protocol %1 is not a filter protocol.", errorText);
108 break;
109 case KIO::ERR_CANNOT_MOUNT:
110 result = i18n("Could not mount device.\nThe reported error was:\n%1", errorText);
111 break;
112 case KIO::ERR_CANNOT_UNMOUNT:
113 result = i18n("Could not unmount device.\nThe reported error was:\n%1", errorText);
114 break;
115 case KIO::ERR_CANNOT_READ:
116 result = i18n("Could not read file %1.", errorText);
117 break;
118 case KIO::ERR_CANNOT_WRITE:
119 result = i18n("Could not write to file %1.", errorText);
120 break;
121 case KIO::ERR_CANNOT_BIND:
122 result = i18n("Could not bind %1.", errorText);
123 break;
124 case KIO::ERR_CANNOT_LISTEN:
125 result = i18n("Could not listen %1.", errorText);
126 break;
127 case KIO::ERR_CANNOT_ACCEPT:
128 result = i18n("Could not accept %1.", errorText);
129 break;
130 case KIO::ERR_CANNOT_LOGIN:
131 result = errorText;
132 break;
133 case KIO::ERR_CANNOT_STAT:
134 result = i18n("Could not access %1.", errorText);
135 break;
136 case KIO::ERR_CANNOT_CLOSEDIR:
137 result = i18n("Could not terminate listing %1.", errorText);
138 break;
139 case KIO::ERR_CANNOT_MKDIR:
140 result = i18n("Could not make folder %1.", KStringHandler::csqueeze(errorText, s_maxFilePathLength));
141 break;
142 case KIO::ERR_CANNOT_RMDIR:
143 result = i18n("Could not remove folder %1.", errorText);
144 break;
145 case KIO::ERR_CANNOT_RESUME:
146 result = i18n("Could not resume file %1.", errorText);
147 break;
148 case KIO::ERR_CANNOT_RENAME:
149 result = i18n("Could not rename file %1.", KStringHandler::csqueeze(errorText, s_maxFilePathLength));
150 break;
151 case KIO::ERR_CANNOT_CHMOD:
152 result = i18n("Could not change permissions for %1.", errorText);
153 break;
154 case KIO::ERR_CANNOT_CHOWN:
155 result = i18n("Could not change ownership for %1.", errorText);
156 break;
157 case KIO::ERR_CANNOT_DELETE:
158 result = i18n("Could not delete file %1.", errorText);
159 break;
161 result = i18n("The process for the %1 protocol died unexpectedly.", errorText);
162 break;
163 case KIO::ERR_OUT_OF_MEMORY:
164 result = i18n("Error. Out of memory.\n%1", errorText);
165 break;
166 case KIO::ERR_UNKNOWN_PROXY_HOST:
167 result = i18n("Unknown proxy host\n%1", errorText);
168 break;
169 case KIO::ERR_CANNOT_AUTHENTICATE:
170 result = i18n("Authorization failed, %1 authentication not supported", errorText);
171 break;
172 case KIO::ERR_USER_CANCELED:
173 // Typically no message should be shown to the user in this case;
174 // however the text is set here only for debugging purposes.
175 case KIO::ERR_ABORTED:
176 result = i18n("User canceled action\n%1", errorText);
177 break;
178 case KIO::ERR_INTERNAL_SERVER:
179 result = i18n("Internal error in server\n%1", errorText);
180 break;
181 case KIO::ERR_SERVER_TIMEOUT:
182 result = i18n("Timeout on server\n%1", errorText);
183 break;
184 case KIO::ERR_UNKNOWN:
185 result = i18n("Unknown error\n%1", errorText);
186 break;
187 case KIO::ERR_UNKNOWN_INTERRUPT:
188 result = i18n("Unknown interrupt\n%1", errorText);
189 break;
190 /*
191 case KIO::ERR_CHECKSUM_MISMATCH:
192 if (errorText)
193 result = i18n( "Warning: MD5 Checksum for %1 does not match checksum returned from server" ).arg(errorText);
194 else
195 result = i18n( "Warning: MD5 Checksum for %1 does not match checksum returned from server" ).arg("document");
196 break;
197 */
198 case KIO::ERR_CANNOT_DELETE_ORIGINAL:
199 result = i18n("Could not delete original file %1.\nPlease check permissions.", errorText);
200 break;
201 case KIO::ERR_CANNOT_DELETE_PARTIAL:
202 result = i18n("Could not delete partial file %1.\nPlease check permissions.", errorText);
203 break;
204 case KIO::ERR_CANNOT_RENAME_ORIGINAL:
205 result = i18n("Could not rename original file %1.\nPlease check permissions.", errorText);
206 break;
207 case KIO::ERR_CANNOT_RENAME_PARTIAL:
208 result = i18n("Could not rename partial file %1.\nPlease check permissions.", errorText);
209 break;
210 case KIO::ERR_CANNOT_SYMLINK:
211 result = i18n("Could not create symlink %1.\nPlease check permissions.", errorText);
212 break;
214 result = i18n("Cannot create symlinks at %1.\nThe destination filesystem doesn't support symlinks.", errorText);
215 break;
217 result = errorText;
218 break;
219 case KIO::ERR_DISK_FULL:
220 result = i18n("There is not enough space on the disk to write %1.", errorText);
221 break;
223 result = i18n("The source and destination are the same file.\n%1", errorText);
224 break;
226 Q_FALLTHROUGH();
227 case KJob::UserDefinedError:
228 result = errorText;
229 break;
231 result = i18n("%1 is required by the server, but is not available.", errorText);
232 break;
234 result = i18n("Access to restricted port in POST denied.");
235 break;
236 case KIO::ERR_POST_NO_SIZE:
237 result = i18n("The required content size information was not provided for a POST operation.");
238 break;
240 result = i18n("A file or folder cannot be dropped onto itself");
241 break;
243 result = i18n("A folder cannot be moved into itself");
244 break;
246 result = i18n("Communication with the local password server failed");
247 break;
249 result = i18n("Unable to create KIO worker. %1", errorText);
250 break;
252 result = xi18nc("@info",
253 "Cannot transfer <filename>%1</filename> because it is too large. The destination filesystem only supports files up to 4GiB",
254 errorText);
255 break;
257 result =
258 i18n("Privilege escalation is not necessary because \n'%1' is owned by the current user.\nPlease retry after changing permissions.", errorText);
259 break;
261 result = i18n("File is too large to be trashed.");
262 break;
263 default:
264 result = i18n("Unknown error code %1\n%2\nPlease send a full bug report at https://bugs.kde.org.", errorCode, errorText);
265 break;
266 }
267
268 return result;
269}
270
271QStringList KIO::Job::detailedErrorStrings(const QUrl *reqUrl /*= 0*/, int method /*= -1*/) const
272{
273 QString errorName;
274 QString techName;
275 QString description;
276 QString ret2;
277 QStringList causes;
278 QStringList solutions;
279 QStringList ret;
280
281 QByteArray raw = rawErrorDetail(error(), errorText(), reqUrl, method);
282 QDataStream stream(raw);
283
284 stream >> errorName >> techName >> description >> causes >> solutions;
285
286 QString url;
287 QString protocol;
288 QString datetime;
289 if (reqUrl) {
290 QString prettyUrl;
291 prettyUrl = reqUrl->toDisplayString();
292 url = prettyUrl.toHtmlEscaped();
293 protocol = reqUrl->scheme();
294 } else {
295 url = i18nc("@info url", "(unknown)");
296 }
297
299
300 ret << errorName;
301 ret << i18nc("@info %1 error name, %2 description", "<qt><p><b>%1</b></p><p>%2</p></qt>", errorName, description);
302
303 ret2 = QStringLiteral("<qt>");
304 if (!techName.isEmpty()) {
305 ret2 += QLatin1String("<p>") + i18n("<b>Technical reason</b>: ") + techName + QLatin1String("</p>");
306 }
307 ret2 += QLatin1String("<p>") + i18n("<b>Details of the request</b>:") + QLatin1String("</p><ul>") + i18n("<li>URL: %1</li>", url);
308 if (!protocol.isEmpty()) {
309 ret2 += i18n("<li>Protocol: %1</li>", protocol);
310 }
311 ret2 += i18n("<li>Date and time: %1</li>", datetime) + i18n("<li>Additional information: %1</li>", errorText()) + QLatin1String("</ul>");
312 if (!causes.isEmpty()) {
313 ret2 += QLatin1String("<p>") + i18n("<b>Possible causes</b>:") + QLatin1String("</p><ul><li>") + causes.join(QLatin1String("</li><li>"))
314 + QLatin1String("</li></ul>");
315 }
316 if (!solutions.isEmpty()) {
317 ret2 += QLatin1String("<p>") + i18n("<b>Possible solutions</b>:") + QLatin1String("</p><ul><li>") + solutions.join(QLatin1String("</li><li>"))
318 + QLatin1String("</li></ul>");
319 }
320 ret2 += QLatin1String("</qt>");
321 ret << ret2;
322
323 return ret;
324}
325
326KIOCORE_EXPORT QByteArray KIO::rawErrorDetail(int errorCode, const QString &errorText, const QUrl *reqUrl /*= 0*/, int /*method = -1*/)
327{
328 QString url;
329 QString host;
330 QString protocol;
331 QString datetime;
332 QString domain;
333 QString path;
334 QString filename;
335 bool isWorkerNetwork = false;
336 if (reqUrl) {
337 url = reqUrl->toDisplayString();
338 host = reqUrl->host();
339 protocol = reqUrl->scheme();
340
341 const QLatin1String web("www.");
342 if (host.startsWith(web)) {
343 domain = host.mid(web.size());
344 } else {
345 domain = host;
346 }
347
348 filename = reqUrl->fileName();
349 path = reqUrl->path();
350
351 // detect if protocol is a network protocol...
352 if (!protocol.isEmpty()) {
353 isWorkerNetwork = KProtocolInfo::protocolClass(protocol) == QLatin1String(":internet");
354 }
355 } else {
356 // assume that the errorText has the location we are interested in
357 url = host = domain = path = filename = errorText;
358 }
359
360 if (protocol.isEmpty()) {
361 protocol = i18nc("@info protocol", "(unknown)");
362 }
363
365
366 QString errorName;
367 QString techName;
368 QString description;
369 QStringList causes;
370 QStringList solutions;
371
372 // c == cause, s == solution
373 QString sSysadmin = i18n(
374 "Contact your appropriate computer support system, "
375 "whether the system administrator, or technical support group for further "
376 "assistance.");
377 QString sServeradmin = i18n(
378 "Contact the administrator of the server "
379 "for further assistance.");
380 // FIXME active link to permissions dialog
381 QString sAccess = i18n("Check your access permissions on this resource.");
382 QString cAccess = i18n(
383 "Your access permissions may be inadequate to "
384 "perform the requested operation on this resource.");
385 QString cLocked = i18n(
386 "The file may be in use (and thus locked) by "
387 "another user or application.");
388 QString sQuerylock = i18n(
389 "Check to make sure that no other "
390 "application or user is using the file or has locked the file.");
391 QString cHardware = i18n(
392 "Although unlikely, a hardware error may have "
393 "occurred.");
394 QString cBug = i18n("You may have encountered a bug in the program.");
395 QString cBuglikely = i18n(
396 "This is most likely to be caused by a bug in the "
397 "program. Please consider submitting a full bug report as detailed below.");
398 QString sUpdate = i18n(
399 "Update your software to the latest version. "
400 "Your distribution should provide tools to update your software.");
401 QString sBugreport = i18n(
402 "When all else fails, please consider helping the "
403 "KDE team or the third party maintainer of this software by submitting a "
404 "high quality bug report. If the software is provided by a third party, "
405 "please contact them directly. Otherwise, first look to see if "
406 "the same bug has been submitted by someone else by searching at the "
407 "<a href=\"https://bugs.kde.org/\">KDE bug reporting website</a>. If not, take "
408 "note of the details given above, and include them in your bug report, along "
409 "with as many other details as you think might help.");
410 QString cNetwork = i18n(
411 "There may have been a problem with your network "
412 "connection.");
413 // FIXME netconf kcontrol link
414 QString cNetconf = i18n(
415 "There may have been a problem with your network "
416 "configuration. If you have been accessing the Internet with no problems "
417 "recently, this is unlikely.");
418 QString cNetpath = i18n(
419 "There may have been a problem at some point along "
420 "the network path between the server and this computer.");
421 QString sTryagain = i18n("Try again, either now or at a later time.");
422 QString cProtocol = i18n("A protocol error or incompatibility may have occurred.");
423 QString sExists = i18n("Ensure that the resource exists, and try again.");
424 QString cExists = i18n("The specified resource may not exist.");
425 QString sTypo = i18n(
426 "Double-check that you have entered the correct location "
427 "and try again.");
428 QString sNetwork = i18n("Check your network connection status.");
429
430 switch (errorCode) {
431 case KIO::ERR_CANNOT_OPEN_FOR_READING:
432 errorName = i18n("Cannot Open Resource For Reading");
433 description = i18n(
434 "This means that the contents of the requested file "
435 "or folder <strong>%1</strong> could not be retrieved, as read "
436 "access could not be obtained.",
437 path);
438 causes << i18n(
439 "You may not have permissions to read the file or open "
440 "the folder.")
441 << cLocked << cHardware;
442 solutions << sAccess << sQuerylock << sSysadmin;
443 break;
444
445 case KIO::ERR_CANNOT_OPEN_FOR_WRITING:
446 errorName = i18n("Cannot Open Resource For Writing");
447 description = i18n(
448 "This means that the file, <strong>%1</strong>, could "
449 "not be written to as requested, because access with permission to "
450 "write could not be obtained.",
451 KStringHandler::csqueeze(filename, s_maxFilePathLength));
452 causes << cAccess << cLocked << cHardware;
453 solutions << sAccess << sQuerylock << sSysadmin;
454 break;
455
456 case KIO::ERR_CANNOT_LAUNCH_PROCESS:
457 errorName = i18n("Cannot Launch Process required by the %1 Protocol", protocol);
458 techName = i18n("Unable to Launch Process");
459 description = i18n(
460 "The program on your computer which provides access "
461 "to the <strong>%1</strong> protocol could not be found or started. This is "
462 "usually due to technical reasons.",
463 protocol);
464 causes << i18n(
465 "The program which provides compatibility with this "
466 "protocol may not have been updated with your last update of KDE. "
467 "This can cause the program to be incompatible with the current version "
468 "and thus not start.")
469 << cBug;
470 solutions << sUpdate << sSysadmin;
471 break;
472
473 case KIO::ERR_INTERNAL:
474 errorName = i18n("Internal Error");
475 description = i18n(
476 "The program on your computer which provides access "
477 "to the <strong>%1</strong> protocol has reported an internal error.",
478 protocol);
479 causes << cBuglikely;
480 solutions << sUpdate << sBugreport;
481 break;
482
483 case KIO::ERR_MALFORMED_URL:
484 errorName = i18n("Improperly Formatted URL");
485 description = i18n(
486 "The <strong>U</strong>niform <strong>R</strong>esource "
487 "<strong>L</strong>ocator (URL) that you entered was not properly "
488 "formatted. The format of a URL is generally as follows:"
489 "<blockquote><strong>protocol://user:password@www.example.org:port/folder/"
490 "filename.extension?query=value</strong></blockquote>");
491 solutions << sTypo;
492 break;
493
494 case KIO::ERR_UNSUPPORTED_PROTOCOL:
495 errorName = i18n("Unsupported Protocol %1", protocol);
496 description = i18n(
497 "The protocol <strong>%1</strong> is not supported "
498 "by the KDE programs currently installed on this computer.",
499 protocol);
500 causes << i18n("The requested protocol may not be supported.")
501 << i18n(
502 "The versions of the %1 protocol supported by this computer and "
503 "the server may be incompatible.",
504 protocol);
505 solutions << i18n(
506 "You may perform a search on the Internet for a software "
507 "plugin (called a \"KIO worker\") which supports this protocol. "
508 "Places to search include <a href=\"https://store.kde.org/\">"
509 "https://store.kde.org</a>.")
510 << sUpdate << sSysadmin;
511 break;
512
513 case KIO::ERR_NO_SOURCE_PROTOCOL:
514 errorName = i18n("URL Does Not Refer to a Resource.");
515 techName = i18n("Protocol is a Filter Protocol");
516 description = i18n(
517 "The <strong>U</strong>niform <strong>R</strong>esource "
518 "<strong>L</strong>ocator (URL) that you entered did not refer to a "
519 "specific resource.");
520 causes << i18n(
521 "KDE is able to communicate through a protocol within a "
522 "protocol; the protocol specified is only for use in such situations, "
523 "however this is not one of these situations. This is a rare event, and "
524 "is likely to indicate a programming error.");
525 solutions << sTypo;
526 break;
527
528 case KIO::ERR_UNSUPPORTED_ACTION:
529 errorName = i18n("Unsupported Action: %1", errorText);
530 description = i18n(
531 "The requested action is not supported by the KDE "
532 "program which is implementing the <strong>%1</strong> protocol.",
533 protocol);
534 causes << i18n(
535 "This error is very much dependent on the KDE program. The "
536 "additional information should give you more information than is available "
537 "to the KDE input/output architecture.");
538 solutions << i18n(
539 "Attempt to find another way to accomplish the same "
540 "outcome.");
541 break;
542
544 errorName = i18n("File Expected");
545 description = i18n(
546 "The request expected a file, however the "
547 "folder <strong>%1</strong> was found instead.",
548 path);
549 causes << i18n("This may be an error on the server side.") << cBug;
550 solutions << sUpdate << sSysadmin;
551 break;
552
553 case KIO::ERR_IS_FILE:
554 errorName = i18n("Folder Expected");
555 description = i18n(
556 "The request expected a folder, however "
557 "the file <strong>%1</strong> was found instead.",
558 filename);
559 causes << cBug;
560 solutions << sUpdate << sSysadmin;
561 break;
562
563 case KIO::ERR_DOES_NOT_EXIST:
564 errorName = i18n("File or Folder Does Not Exist");
565 description = i18n(
566 "The specified file or folder <strong>%1</strong> "
567 "does not exist.",
568 path);
569 causes << cExists;
570 solutions << sExists;
571 break;
572
573 case KIO::ERR_FILE_ALREADY_EXIST:
574 errorName = i18n("File Already Exists");
575 description = i18n(
576 "The requested file could not be created because a "
577 "file with the same name already exists.");
578 solutions << i18n(
579 "Try moving the current file out of the way first, "
580 "and then try again.")
581 << i18n("Delete the current file and try again.") << i18n("Choose an alternate filename for the new file.");
582 break;
583
584 case KIO::ERR_DIR_ALREADY_EXIST:
585 errorName = i18n("Folder Already Exists");
586 description = i18n(
587 "The requested folder could not be created because "
588 "a folder with the same name already exists.");
589 solutions << i18n(
590 "Try moving the current folder out of the way first, "
591 "and then try again.")
592 << i18n("Delete the current folder and try again.") << i18n("Choose an alternate name for the new folder.");
593 break;
594
595 case KIO::ERR_UNKNOWN_HOST:
596 errorName = i18n("Unknown Host");
597 description = i18n(
598 "An unknown host error indicates that the server with "
599 "the requested name, <strong>%1</strong>, could not be "
600 "located on the Internet.",
601 host);
602 causes << i18n(
603 "The name that you typed, %1, may not exist: it may be "
604 "incorrectly typed.",
605 host)
606 << cNetwork << cNetconf;
607 solutions << sNetwork << sSysadmin;
608 break;
609
610 case KIO::ERR_ACCESS_DENIED:
611 errorName = i18n("Access Denied");
612 description = i18n(
613 "Access was denied to the specified resource, "
614 "<strong>%1</strong>.",
615 url);
616 causes << i18n(
617 "You may have supplied incorrect authentication details or "
618 "none at all.")
619 << i18n(
620 "Your account may not have permission to access the "
621 "specified resource.");
622 solutions << i18n(
623 "Retry the request and ensure your authentication details "
624 "are entered correctly.")
625 << sSysadmin;
626 if (!isWorkerNetwork) {
627 solutions << sServeradmin;
628 }
629 break;
630
631 case KIO::ERR_WRITE_ACCESS_DENIED:
632 errorName = i18n("Write Access Denied");
633 description = i18n(
634 "This means that an attempt to write to the file "
635 "<strong>%1</strong> was rejected.",
636 filename);
637 causes << cAccess << cLocked << cHardware;
638 solutions << sAccess << sQuerylock << sSysadmin;
639 break;
640
641 case KIO::ERR_CANNOT_ENTER_DIRECTORY:
642 errorName = i18n("Unable to Enter Folder");
643 description = i18n(
644 "This means that an attempt to enter (in other words, "
645 "to open) the requested folder <strong>%1</strong> was rejected.",
646 path);
647 causes << cAccess << cLocked;
648 solutions << sAccess << sQuerylock << sSysadmin;
649 break;
650
651 case KIO::ERR_PROTOCOL_IS_NOT_A_FILESYSTEM:
652 errorName = i18n("Folder Listing Unavailable");
653 techName = i18n("Protocol %1 is not a Filesystem", protocol);
654 description = i18n(
655 "This means that a request was made which requires "
656 "determining the contents of the folder, and the KDE program supporting "
657 "this protocol is unable to do so.");
658 causes << cBug;
659 solutions << sUpdate << sBugreport;
660 break;
661
662 case KIO::ERR_CYCLIC_LINK:
663 errorName = i18n("Cyclic Link Detected");
664 description = i18n(
665 "UNIX environments are commonly able to link a file or "
666 "folder to a separate name and/or location. KDE detected a link or "
667 "series of links that results in an infinite loop - i.e. the file was "
668 "(perhaps in a roundabout way) linked to itself.");
669 solutions << i18n(
670 "Delete one part of the loop in order that it does not "
671 "cause an infinite loop, and try again.")
672 << sSysadmin;
673 break;
674
675 case KIO::ERR_USER_CANCELED:
676 // Do nothing in this case. The user doesn't need to be told what he just did.
677 // rodda: However, if we have been called, an application is about to display
678 // this information anyway. If we don't return sensible information, the
679 // user sees a blank dialog (I have seen this myself)
680 errorName = i18n("Request Aborted By User");
681 description = i18n(
682 "The request was not completed because it was "
683 "aborted.");
684 solutions << i18n("Retry the request.");
685 break;
686
687 case KIO::ERR_CYCLIC_COPY:
688 errorName = i18n("Cyclic Link Detected During Copy");
689 description = i18n(
690 "UNIX environments are commonly able to link a file or "
691 "folder to a separate name and/or location. During the requested copy "
692 "operation, KDE detected a link or series of links that results in an "
693 "infinite loop - i.e. the file was (perhaps in a roundabout way) linked "
694 "to itself.");
695 solutions << i18n(
696 "Delete one part of the loop in order that it does not "
697 "cause an infinite loop, and try again.")
698 << sSysadmin;
699 break;
700
701 case KIO::ERR_CANNOT_CREATE_SOCKET:
702 errorName = i18n("Could Not Create Network Connection");
703 techName = i18n("Could Not Create Socket");
704 description = i18n(
705 "This is a fairly technical error in which a required "
706 "device for network communications (a socket) could not be created.");
707 causes << i18n(
708 "The network connection may be incorrectly configured, or "
709 "the network interface may not be enabled.");
710 solutions << sNetwork << sSysadmin;
711 break;
712
713 case KIO::ERR_CANNOT_CONNECT:
714 errorName = i18n("Connection to Server Refused");
715 description = i18n(
716 "The server <strong>%1</strong> refused to allow this "
717 "computer to make a connection.",
718 host);
719 causes << i18n(
720 "The server, while currently connected to the Internet, "
721 "may not be configured to allow requests.")
722 << i18n(
723 "The server, while currently connected to the Internet, "
724 "may not be running the requested service (%1).",
725 protocol)
726 << i18n(
727 "A network firewall (a device which restricts Internet "
728 "requests), either protecting your network or the network of the server, "
729 "may have intervened, preventing this request.");
730 solutions << sTryagain << sServeradmin << sSysadmin;
731 break;
732
733 case KIO::ERR_CONNECTION_BROKEN:
734 errorName = i18n("Connection to Server Closed Unexpectedly");
735 description = i18n(
736 "Although a connection was established to "
737 "<strong>%1</strong>, the connection was closed at an unexpected point "
738 "in the communication.",
739 host);
740 causes << cNetwork << cNetpath
741 << i18n(
742 "A protocol error may have occurred, "
743 "causing the server to close the connection as a response to the error.");
744 solutions << sTryagain << sServeradmin << sSysadmin;
745 break;
746
747 case KIO::ERR_NOT_FILTER_PROTOCOL:
748 errorName = i18n("URL Resource Invalid");
749 techName = i18n("Protocol %1 is not a Filter Protocol", protocol);
750 description = i18n(
751 "The <strong>U</strong>niform <strong>R</strong>esource "
752 "<strong>L</strong>ocator (URL) that you entered did not refer to "
753 "a valid mechanism of accessing the specific resource, "
754 "<strong>%1%2</strong>.",
755 !host.isNull() ? host + QLatin1Char('/') : QString(),
756 path);
757 causes << i18n(
758 "KDE is able to communicate through a protocol within a "
759 "protocol. This request specified a protocol be used as such, however "
760 "this protocol is not capable of such an action. This is a rare event, "
761 "and is likely to indicate a programming error.");
762 solutions << sTypo << sSysadmin;
763 break;
764
765 case KIO::ERR_CANNOT_MOUNT:
766 errorName = i18n("Unable to Initialize Input/Output Device");
767 techName = i18n("Could Not Mount Device");
768 description = i18n(
769 "The requested device could not be initialized "
770 "(\"mounted\"). The reported error was: <strong>%1</strong>",
771 errorText);
772 causes << i18n(
773 "The device may not be ready, for example there may be "
774 "no media in a removable media device (i.e. no CD-ROM in a CD drive), "
775 "or in the case of a peripheral/portable device, the device may not "
776 "be correctly connected.")
777 << i18n(
778 "You may not have permissions to initialize (\"mount\") the "
779 "device. On UNIX systems, often system administrator privileges are "
780 "required to initialize a device.")
781 << cHardware;
782 solutions << i18n(
783 "Check that the device is ready; removable drives "
784 "must contain media, and portable devices must be connected and powered "
785 "on.; and try again.")
786 << sAccess << sSysadmin;
787 break;
788
789 case KIO::ERR_CANNOT_UNMOUNT:
790 errorName = i18n("Unable to Uninitialize Input/Output Device");
791 techName = i18n("Could Not Unmount Device");
792 description = i18n(
793 "The requested device could not be uninitialized "
794 "(\"unmounted\"). The reported error was: <strong>%1</strong>",
795 errorText);
796 causes << i18n(
797 "The device may be busy, that is, still in use by "
798 "another application or user. Even such things as having an open "
799 "browser window on a location on this device may cause the device to "
800 "remain in use.")
801 << i18n(
802 "You may not have permissions to uninitialize (\"unmount\") "
803 "the device. On UNIX systems, system administrator privileges are "
804 "often required to uninitialize a device.")
805 << cHardware;
806 solutions << i18n(
807 "Check that no applications are accessing the device, "
808 "and try again.")
809 << sAccess << sSysadmin;
810 break;
811
812 case KIO::ERR_CANNOT_READ:
813 errorName = i18n("Cannot Read From Resource");
814 description = i18n(
815 "This means that although the resource, "
816 "<strong>%1</strong>, was able to be opened, an error occurred while "
817 "reading the contents of the resource.",
818 url);
819 causes << i18n("You may not have permissions to read from the resource.");
820 if (!isWorkerNetwork) {
821 causes << cNetwork;
822 }
823 causes << cHardware;
824 solutions << sAccess;
825 if (!isWorkerNetwork) {
826 solutions << sNetwork;
827 }
828 solutions << sSysadmin;
829 break;
830
831 case KIO::ERR_CANNOT_WRITE:
832 errorName = i18n("Cannot Write to Resource");
833 description = i18n(
834 "This means that although the resource, <strong>%1</strong>"
835 ", was able to be opened, an error occurred while writing to the resource.",
836 url);
837 causes << i18n("You may not have permissions to write to the resource.");
838 if (!isWorkerNetwork) {
839 causes << cNetwork;
840 }
841 causes << cHardware;
842 solutions << sAccess;
843 if (!isWorkerNetwork) {
844 solutions << sNetwork;
845 }
846 solutions << sSysadmin;
847 break;
848
849 case KIO::ERR_CANNOT_BIND:
850 errorName = i18n("Could Not Listen for Network Connections");
851 techName = i18n("Could Not Bind");
852 description = i18n(
853 "This is a fairly technical error in which a required "
854 "device for network communications (a socket) could not be established "
855 "to listen for incoming network connections.");
856 causes << i18n(
857 "The network connection may be incorrectly configured, or "
858 "the network interface may not be enabled.");
859 solutions << sNetwork << sSysadmin;
860 break;
861
862 case KIO::ERR_CANNOT_LISTEN:
863 errorName = i18n("Could Not Listen for Network Connections");
864 techName = i18n("Could Not Listen");
865 description = i18n(
866 "This is a fairly technical error in which a required "
867 "device for network communications (a socket) could not be established "
868 "to listen for incoming network connections.");
869 causes << i18n(
870 "The network connection may be incorrectly configured, or "
871 "the network interface may not be enabled.");
872 solutions << sNetwork << sSysadmin;
873 break;
874
875 case KIO::ERR_CANNOT_ACCEPT:
876 errorName = i18n("Could Not Accept Network Connection");
877 description = i18n(
878 "This is a fairly technical error in which an error "
879 "occurred while attempting to accept an incoming network connection.");
880 causes << i18n(
881 "The network connection may be incorrectly configured, or "
882 "the network interface may not be enabled.")
883 << i18n("You may not have permissions to accept the connection.");
884 solutions << sNetwork << sSysadmin;
885 break;
886
887 case KIO::ERR_CANNOT_LOGIN:
888 errorName = i18n("Could Not Login: %1", errorText);
889 description = i18n(
890 "An attempt to login to perform the requested "
891 "operation was unsuccessful.");
892 causes << i18n(
893 "You may have supplied incorrect authentication details or "
894 "none at all.")
895 << i18n(
896 "Your account may not have permission to access the "
897 "specified resource.")
898 << cProtocol;
899 solutions << i18n(
900 "Retry the request and ensure your authentication details "
901 "are entered correctly.")
902 << sServeradmin << sSysadmin;
903 break;
904
905 case KIO::ERR_CANNOT_STAT:
906 errorName = i18n("Could Not Determine Resource Status");
907 techName = i18n("Could Not Stat Resource");
908 description = i18n(
909 "An attempt to determine information about the status "
910 "of the resource <strong>%1</strong>, such as the resource name, type, "
911 "size, etc., was unsuccessful.",
912 url);
913 causes << i18n(
914 "The specified resource may not have existed or may "
915 "not be accessible.")
916 << cProtocol << cHardware;
917 solutions << i18n(
918 "Retry the request and ensure your authentication details "
919 "are entered correctly.")
920 << sSysadmin;
921 break;
922
923 case KIO::ERR_CANNOT_CLOSEDIR:
924 // result = i18n( "Could not terminate listing %1" ).arg( errorText );
925 errorName = i18n("Could Not Cancel Listing");
926 techName = i18n("FIXME: Document this");
927 break;
928
929 case KIO::ERR_CANNOT_MKDIR:
930 errorName = i18n("Could Not Create Folder");
931 description = i18n("An attempt to create the requested folder failed.");
932 causes << cAccess
933 << i18n(
934 "The location where the folder was to be created "
935 "may not exist.");
936 if (!isWorkerNetwork) {
937 causes << cProtocol;
938 }
939 solutions << i18n("Retry the request.") << sAccess;
940 break;
941
942 case KIO::ERR_CANNOT_RMDIR:
943 errorName = i18n("Could Not Remove Folder");
944 description = i18n(
945 "An attempt to remove the specified folder, "
946 "<strong>%1</strong>, failed.",
947 path);
948 causes << i18n("The specified folder may not exist.") << i18n("The specified folder may not be empty.") << cAccess;
949 if (!isWorkerNetwork) {
950 causes << cProtocol;
951 }
952 solutions << i18n(
953 "Ensure that the folder exists and is empty, and try "
954 "again.")
955 << sAccess;
956 break;
957
958 case KIO::ERR_CANNOT_RESUME:
959 errorName = i18n("Could Not Resume File Transfer");
960 description = i18n(
961 "The specified request asked that the transfer of "
962 "file <strong>%1</strong> be resumed at a certain point of the "
963 "transfer. This was not possible.",
964 filename);
965 causes << i18n(
966 "The protocol, or the server, may not support file "
967 "resuming.");
968 solutions << i18n(
969 "Retry the request without attempting to resume "
970 "transfer.");
971 break;
972
973 case KIO::ERR_CANNOT_RENAME:
974 errorName = i18n("Could Not Rename Resource");
975 description = i18n(
976 "An attempt to rename the specified resource "
977 "<strong>%1</strong> failed.",
978 KStringHandler::csqueeze(url, s_maxFilePathLength));
979 causes << cAccess << cExists;
980 if (!isWorkerNetwork) {
981 causes << cProtocol;
982 }
983 solutions << sAccess << sExists;
984 break;
985
986 case KIO::ERR_CANNOT_CHMOD:
987 errorName = i18n("Could Not Alter Permissions of Resource");
988 description = i18n(
989 "An attempt to alter the permissions on the specified "
990 "resource <strong>%1</strong> failed.",
991 url);
992 causes << cAccess << cExists;
993 solutions << sAccess << sExists;
994 break;
995
996 case KIO::ERR_CANNOT_CHOWN:
997 errorName = i18n("Could Not Change Ownership of Resource");
998 description = i18n(
999 "An attempt to change the ownership of the specified "
1000 "resource <strong>%1</strong> failed.",
1001 url);
1002 causes << cAccess << cExists;
1003 solutions << sAccess << sExists;
1004 break;
1005
1006 case KIO::ERR_CANNOT_DELETE:
1007 errorName = i18n("Could Not Delete Resource");
1008 description = i18n(
1009 "An attempt to delete the specified resource "
1010 "<strong>%1</strong> failed.",
1011 url);
1012 causes << cAccess << cExists;
1013 solutions << sAccess << sExists;
1014 break;
1015
1017 errorName = i18n("Unexpected Program Termination");
1018 description = i18n(
1019 "The program on your computer which provides access "
1020 "to the <strong>%1</strong> protocol has unexpectedly terminated.",
1021 url);
1022 causes << cBuglikely;
1023 solutions << sUpdate << sBugreport;
1024 break;
1025
1026 case KIO::ERR_OUT_OF_MEMORY:
1027 errorName = i18n("Out of Memory");
1028 description = i18n(
1029 "The program on your computer which provides access "
1030 "to the <strong>%1</strong> protocol could not obtain the memory "
1031 "required to continue.",
1032 protocol);
1033 causes << cBuglikely;
1034 solutions << sUpdate << sBugreport;
1035 break;
1036
1037 case KIO::ERR_UNKNOWN_PROXY_HOST:
1038 errorName = i18n("Unknown Proxy Host");
1039 description = i18n(
1040 "While retrieving information about the specified "
1041 "proxy host, <strong>%1</strong>, an Unknown Host error was encountered. "
1042 "An unknown host error indicates that the requested name could not be "
1043 "located on the Internet.",
1044 errorText);
1045 causes << i18n(
1046 "There may have been a problem with your network "
1047 "configuration, specifically your proxy's hostname. If you have been "
1048 "accessing the Internet with no problems recently, this is unlikely.")
1049 << cNetwork;
1050 solutions << i18n("Double-check your proxy settings and try again.") << sSysadmin;
1051 break;
1052
1053 case KIO::ERR_CANNOT_AUTHENTICATE:
1054 errorName = i18n("Authentication Failed: Method %1 Not Supported", errorText);
1055 description = i18n(
1056 "Although you may have supplied the correct "
1057 "authentication details, the authentication failed because the "
1058 "method that the server is using is not supported by the KDE "
1059 "program implementing the protocol %1.",
1060 protocol);
1061 solutions << i18n(
1062 "Please file a bug at <a href=\"https://bugs.kde.org/\">"
1063 "https://bugs.kde.org/</a> to inform the KDE team of the unsupported "
1064 "authentication method.")
1065 << sSysadmin;
1066 break;
1067
1068 case KIO::ERR_ABORTED:
1069 errorName = i18n("Request Aborted");
1070 description = i18n(
1071 "The request was not completed because it was "
1072 "aborted.");
1073 solutions << i18n("Retry the request.");
1074 break;
1075
1076 case KIO::ERR_INTERNAL_SERVER:
1077 errorName = i18n("Internal Error in Server");
1078 description = i18n(
1079 "The program on the server which provides access "
1080 "to the <strong>%1</strong> protocol has reported an internal error: "
1081 "%2.",
1082 protocol,
1083 errorText);
1084 causes << i18n(
1085 "This is most likely to be caused by a bug in the "
1086 "server program. Please consider submitting a full bug report as "
1087 "detailed below.");
1088 solutions << i18n(
1089 "Contact the administrator of the server "
1090 "to advise them of the problem.")
1091 << i18n(
1092 "If you know who the authors of the server software are, "
1093 "submit the bug report directly to them.");
1094 break;
1095
1096 case KIO::ERR_SERVER_TIMEOUT:
1097 errorName = i18n("Timeout Error");
1098 description = i18n(
1099 "Although contact was made with the server, a "
1100 "response was not received within the amount of time allocated for "
1101 "the request as follows:<ul>"
1102 "<li>Timeout for establishing a connection: %1 seconds</li>"
1103 "<li>Timeout for receiving a response: %2 seconds</li>"
1104 "<li>Timeout for accessing proxy servers: %3 seconds</li></ul>"
1105 "Please note that you can alter these timeout settings in the KDE "
1106 "System Settings, by selecting Network Settings -> Connection Preferences.",
1110 causes << cNetpath
1111 << i18n(
1112 "The server was too busy responding to other "
1113 "requests to respond.");
1114 solutions << sTryagain << sServeradmin;
1115 break;
1116
1117 case KIO::ERR_UNKNOWN:
1118 errorName = i18n("Unknown Error");
1119 description = i18n(
1120 "The program on your computer which provides access "
1121 "to the <strong>%1</strong> protocol has reported an unknown error: "
1122 "%2.",
1123 protocol,
1124 errorText);
1125 causes << cBug;
1126 solutions << sUpdate << sBugreport;
1127 break;
1128
1129 case KIO::ERR_UNKNOWN_INTERRUPT:
1130 errorName = i18n("Unknown Interruption");
1131 description = i18n(
1132 "The program on your computer which provides access "
1133 "to the <strong>%1</strong> protocol has reported an interruption of "
1134 "an unknown type: %2.",
1135 protocol,
1136 errorText);
1137 causes << cBug;
1138 solutions << sUpdate << sBugreport;
1139 break;
1140
1141 case KIO::ERR_CANNOT_DELETE_ORIGINAL:
1142 errorName = i18n("Could Not Delete Original File");
1143 description = i18n(
1144 "The requested operation required the deleting of "
1145 "the original file, most likely at the end of a file move operation. "
1146 "The original file <strong>%1</strong> could not be deleted.",
1147 errorText);
1148 causes << cAccess;
1149 solutions << sAccess;
1150 break;
1151
1152 case KIO::ERR_CANNOT_DELETE_PARTIAL:
1153 errorName = i18n("Could Not Delete Temporary File");
1154 description = i18n(
1155 "The requested operation required the creation of "
1156 "a temporary file in which to save the new file while being "
1157 "downloaded. This temporary file <strong>%1</strong> could not be "
1158 "deleted.",
1159 errorText);
1160 causes << cAccess;
1161 solutions << sAccess;
1162 break;
1163
1164 case KIO::ERR_CANNOT_RENAME_ORIGINAL:
1165 errorName = i18n("Could Not Rename Original File");
1166 description = i18n(
1167 "The requested operation required the renaming of "
1168 "the original file <strong>%1</strong>, however it could not be "
1169 "renamed.",
1170 errorText);
1171 causes << cAccess;
1172 solutions << sAccess;
1173 break;
1174
1175 case KIO::ERR_CANNOT_RENAME_PARTIAL:
1176 errorName = i18n("Could Not Rename Temporary File");
1177 description = i18n(
1178 "The requested operation required the creation of "
1179 "a temporary file <strong>%1</strong>, however it could not be "
1180 "created.",
1181 errorText);
1182 causes << cAccess;
1183 solutions << sAccess;
1184 break;
1185
1186 case KIO::ERR_CANNOT_SYMLINK:
1187 errorName = i18n("Could Not Create Link");
1188 techName = i18n("Could Not Create Symbolic Link");
1189 description = i18n("The requested symbolic link %1 could not be created.", errorText);
1190 causes << cAccess;
1191 solutions << sAccess;
1192 break;
1193
1195 errorName = i18n("No Content");
1196 description = errorText;
1197 break;
1198
1199 case KIO::ERR_DISK_FULL:
1200 errorName = i18n("Disk Full");
1201 description = i18n(
1202 "The requested file <strong>%1</strong> could not be "
1203 "written to as there is inadequate disk space.",
1204 errorText);
1205 solutions << i18n(
1206 "Free up enough disk space by 1) deleting unwanted and "
1207 "temporary files; 2) archiving files to removable media storage such as "
1208 "CD-Recordable discs; or 3) obtain more storage capacity.")
1209 << sSysadmin;
1210 break;
1211
1213 errorName = i18n("Source and Destination Files Identical");
1214 description = i18n(
1215 "The operation could not be completed because the "
1216 "source and destination files are the same file.");
1217 solutions << i18n("Choose a different filename for the destination file.");
1218 break;
1219
1221 errorName = i18n("File or Folder dropped onto itself");
1222 description = i18n(
1223 "The operation could not be completed because the "
1224 "source and destination file or folder are the same.");
1225 solutions << i18n("Drop the item into a different file or folder.");
1226 break;
1227
1228 // We assume that the worker has all the details
1230 errorName.clear();
1231 description = errorText;
1232 break;
1233
1235 errorName = i18n("Folder moved into itself");
1236 description = i18n(
1237 "The operation could not be completed because the "
1238 "source can not be moved into itself.");
1239 solutions << i18n("Move the item into a different folder.");
1240 break;
1241
1243 errorName = i18n("Could not communicate with password server");
1244 description = i18n(
1245 "The operation could not be completed because the "
1246 "service for requesting passwords (kpasswdserver) couldn't be contacted");
1247 solutions << i18n("Try restarting your session, or look in the logs for errors from kiod.");
1248 break;
1249
1251 errorName = i18n("Cannot Initiate the %1 Protocol", protocol);
1252 techName = i18n("Unable to Create KIO Worker");
1253 description = i18n(
1254 "The KIO worker which provides access "
1255 "to the <strong>%1</strong> protocol could not be started. This is "
1256 "usually due to technical reasons.",
1257 protocol);
1258 causes << i18n(
1259 "klauncher could not find or start the plugin which provides the protocol. "
1260 "This means you may have an outdated version of the plugin.");
1261 solutions << sUpdate << sSysadmin;
1262 break;
1263
1265 errorName = xi18nc("@info", "Cannot transfer <filename>%1</filename>", errorText);
1266 description = xi18nc("@info",
1267 "The file <filename>%1</filename> cannot be transferred,"
1268 " because the destination filesystem does not support files that large",
1269 errorText);
1270 solutions << i18n("Reformat the destination drive to use a filesystem that supports files that large.");
1271 break;
1272
1273 default:
1274 // fall back to the plain error...
1275 errorName = i18n("Undocumented Error");
1276 description = buildErrorString(errorCode, errorText);
1277 }
1278
1279 QByteArray ret;
1280 QDataStream stream(&ret, QIODevice::WriteOnly);
1281 stream << errorName << techName << description << causes << solutions;
1282 return ret;
1283}
1284
1286{
1287 QFile::Permissions qPermissions;
1288
1289 if (permissions > 0) {
1290 if (permissions & S_IRUSR) {
1291 qPermissions |= QFile::ReadOwner;
1292 }
1293 if (permissions & S_IWUSR) {
1294 qPermissions |= QFile::WriteOwner;
1295 }
1296 if (permissions & S_IXUSR) {
1297 qPermissions |= QFile::ExeOwner;
1298 }
1299
1300 if (permissions & S_IRGRP) {
1301 qPermissions |= QFile::ReadGroup;
1302 }
1303 if (permissions & S_IWGRP) {
1304 qPermissions |= QFile::WriteGroup;
1305 }
1306 if (permissions & S_IXGRP) {
1307 qPermissions |= QFile::ExeGroup;
1308 }
1309
1310 if (permissions & S_IROTH) {
1311 qPermissions |= QFile::ReadOther;
1312 }
1313 if (permissions & S_IWOTH) {
1314 qPermissions |= QFile::WriteOther;
1315 }
1316 if (permissions & S_IXOTH) {
1317 qPermissions |= QFile::ExeOther;
1318 }
1319 }
1320
1321 return qPermissions;
1322}
QString errorString() const override
Converts an error code and a non-i18n error message into an error message in the current language.
Definition job_error.cpp:26
QStringList detailedErrorStrings(const QUrl *reqUrl=nullptr, int method=-1) const
Converts an error code and a non-i18n error message into i18n strings suitable for presentation in a ...
int error() const
QString errorText() const
static QString protocolClass(const QString &protocol)
Returns the protocol class for the specified protocol.
static int proxyConnectTimeout()
Returns the preferred timeout value for proxy connections in seconds.
static int connectTimeout()
Returns the preferred timeout value for remote connections in seconds.
static int responseTimeout()
Returns the preferred response timeout value for remote connecting in seconds.
QString xi18nc(const char *context, const char *text, const TYPE &arg...)
QString i18nc(const char *context, const char *text, const TYPE &arg...)
QString i18n(const char *text, const TYPE &arg...)
KIOCORE_EXPORT QString buildErrorString(int errorCode, const QString &errorText)
Returns a translated error message for errorCode using the additional error information provided by e...
Definition job_error.cpp:31
KIOCORE_EXPORT QFile::Permissions convertPermissions(int permissions)
Converts KIO file permissions from mode_t to QFile::Permissions format.
KIOCORE_EXPORT QByteArray rawErrorDetail(int errorCode, const QString &errorText, const QUrl *reqUrl=nullptr, int method=-1)
Returns translated error details for errorCode using the additional error information provided by err...
@ ERR_CANNOT_MOVE_INTO_ITSELF
emitted by KIO::move,
Definition global.h:195
@ ERR_NO_CONTENT
Action succeeded but no content will follow.
Definition global.h:172
@ ERR_WORKER_DEFINED
For worker specified errors that can be rich text.
Definition global.h:184
@ ERR_IDENTICAL_FILES
src==dest when moving/copying
Definition global.h:174
@ ERR_DROP_ON_ITSELF
from KIO::DropJob,
Definition global.h:194
@ ERR_POST_DENIED
Issued when trying to POST data to a certain Ports.
Definition global.h:188
@ ERR_ABORTED
Action got aborted from application side.
Definition global.h:159
@ ERR_CANNOT_CREATE_WORKER
used by Worker::createWorker,
Definition global.h:197
@ ERR_PASSWD_SERVER
returned by WorkerBase::openPasswordDialog,
Definition global.h:196
@ ERR_FILE_TOO_LARGE_FOR_FAT32
Definition global.h:198
@ ERR_UPGRADE_REQUIRED
A transport upgrade is required to access this.
Definition global.h:185
@ ERR_IS_FILE
... where a directory was expected (e.g. listing)
Definition global.h:121
@ ERR_WORKER_DIED
Definition global.h:155
@ ERR_IS_DIRECTORY
... where a file was expected
Definition global.h:120
@ ERR_SYMLINKS_NOT_SUPPORTED
Indicates failure to create a symlink due to the underlying filesystem (FAT/ExFAT) not supporting the...
Definition global.h:208
@ ERR_PRIVILEGE_NOT_REQUIRED
used by file ioworker,
Definition global.h:201
@ ERR_TRASH_FILE_TOO_LARGE
Moving files/dirs to the Trash failed due to size constraints.
Definition global.h:215
KCOREADDONS_EXPORT QString csqueeze(const QString &str, int maxlen=40)
QDateTime currentDateTime()
bool isEmpty() const const
QString toString(QDate date, FormatType format) const const
void clear()
bool isEmpty() const const
bool isNull() const const
QString mid(qsizetype position, qsizetype n) const const
bool startsWith(QChar c, Qt::CaseSensitivity cs) const const
QString toHtmlEscaped() const const
QString join(QChar separator) const const
QString fileName(ComponentFormattingOptions options) const const
QString host(ComponentFormattingOptions options) const const
QString path(ComponentFormattingOptions options) const const
QString scheme() const const
QString toDisplayString(FormattingOptions options) const const
This file is part of the KDE documentation.
Documentation copyright © 1996-2024 The KDE developers.
Generated on Mon Nov 18 2024 12:16:27 by doxygen 1.12.0 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.