Warning, /frameworks/kio/src/ioslaves/trash/DESIGN is written in an unsupported language. File is not indexed.

0001 DESIGN
0002 ======
0003 kio_trash implements the XDG trash standard (https://specifications.freedesktop.org/trash-spec/trashspec-1.0.html)
0004 
0005 The concurrency that comes from having multiple KIO workers running at the same time
0006 on top of the same set of files, is solved by the KInterProcessLock class, which
0007 synchronizes access to shared resources (like the file storing the size of the
0008 trash directory).
0009 
0010 BUGS
0011 ====
0012 * Undo of "restore" isn't available. Need to get origPath by metadata I guess.
0013 
0014 TODO
0015 ====
0016 * Clean up konq_popupmenu.cc for Type=Link URL=trash:/   :(
0017 * Also, provide metainfo for trash contents for that desktop link.
0018 => maybe we need a new MIME type?
0019  Like application/x-trash-desktop, inheriting application/x-desktop. 
0020  And a "trash.trashdesktop" filename or so (ouch, migration issues...)
0021 
0022 * Detect removable media to avoid .Trash-foo on it. How?
0023 
0024 * Trashcan properties (properties for trash:/? hmm. Easier with separate dialog)
0025      -  Maximum size for trash can (#18109 suggests a %, but a MB size is easier).
0026      This means to delete the oldest files from the trash automatically. #79553
0027 
0028 * Err, should we support renaming? :) Difficult to disable...
0029   In fact it's already not disabled in readonly directories (e.g. "/") -> todo
0030    (for F2 and kpropertiesdialog)
0031 
0032 Bugs closed by kio_trash
0033 ========================
0034 #79826 (3.3 only)
0035 #62848 (configurable trash location)
0036 #78116 (.directory)
0037 #18109 (general one)
0038 #17744 (restore)
0039 #76380 #56821 (trashing on same partition)
0040 
0041 New features implemented
0042 =======================
0043 #79553 (Deleting oldest files when size is bigger than a certain configurable amount)
0044 
0045 Choice of URL scheme
0046 ====================
0047 We use trash:/trashid-fileid[/relativepath]    
0048 This gave problems with CopyJob::startRenameJob which exposed trashid-fileid
0049 to the user as a filename when dropping a file out of the trash.
0050 But this was fixed with the fileNameUsedForCopying=Name setting.
0051 
0052 A previous experiment was trash:/filename[/relativepath]?t=trashid&id=fileid
0053 but this gives problems with going Up (it first removes the query),
0054 with KDirLister (it wouldn't know when to remove the query, to find the URL
0055 of the parent directory).