Relicense all GPLv2 only code to GPLv2+.
[kdenetwork.git] / kget / TODO
blob7b91587fe8e88a83ac1644c459c2ceee01784e1b
1 TODO-list for KGet
2 ======================
4 <nick>  == reported by
5 Legend:
6     ADD - ADDed
7     CHG - CHanGed
8     FIX - FIXed
11     USABILITY REVIEW
12 ---------------------
13 Main Window
14     1.1 - List title bar
15     1.2 - No text in toolbar
16     1.3 - Menu item File → Open unclear             DONE (renamed to "Import Transfers")
17     1.4 - Missing keyboard shortcuts
18     1.5 - Downloads don’t start immediately        DONE
19     2.1 - Default group not necessary?              Renamed to "My Downloads". Is it enough?
20     3.1 - Visual alignment                          DONE (all centered)
21     3.2 - File details view not always visible
22     3.3 - File details view switching
27     IN PROGRESS
28 ---------------------
30         TODO
31 ---------------------
33 SHORT-TERM (URGENT):
35   -- MAINWINDOW --
37   -- SCHEDULER --
39   -- SIDEBAR --
40   ADD <dario> re-import the sidebar (and think about a better one).
41   ADD <dario> add a "Finished" (is this the best name?) item. This will point
42       to the downloaded files.
43   ADD <dario> add a popupmenu to add or delete groups by right-clicking on them.
45   -- MAINVIEW --
46   ADD <dario> make it possible to drag a transfer in a group inside the
47       mainview or in the groups visible in the groupspanel.
48   ADD <dario> Implement the selection of a specific group. In this way 
49       selecting a group from the sidebar should display only its transfers.
50   ADD <dario> add a coloured band over the mainview displaying the currently
51       display items. For example if I select "Downloads" from the sidebar it
52       should display "Downloads". If instead I select a specific group <groupname>
53       it should display "Downloads - <groupname>"
54   ADD <dario> handle the situation when we remove a group which has transfers.
56   -- BITTORRENT PLUGIN --
57   FIX <dario> when stopping a transfer immediately after having started it, the
58       plugin crashes.
59   FIX <dario> sometimes, the bittorrent plugin blocks all the kget gui for
60       some seconds.
61   FIX <dario> if we have a torrent file and we make some copies of it with
62       different names, and then we add all the torrents to kget, kget crashes
63   FIX <dario> the transfer should switch its status to finished when we start
64       an already downloaded file.
66   -- MISCELLANEOUS --
67   ADD <dario> implement the GlobalStatus object and make the
68       systray to update using the ViewInterface slots instead of the actual hack.
69       To make this happen we need to create also a special group containing all
70       the ungrouped Transfers. Then we just need to sum the progress of each group
71       to know the global download percentage.
72   ADD <dario> implement progressive filling of the icon in the system tray
73   CHG <pino> verify that all the settings are respected
74   ADD <pino> implement the grouping functionalities
75   ADD <dario> in order to have all the necessary informations to calculate a
76       global progress percentage, we need to know the size of each transfer
77       in the list. This is currently not the case. Now we have this information
78       only for the already started transfers. Maybe we should add a stat() virtual 
79       function to the transfer that makes the transfer retrieve all the necessary
80       informations. Then we should also create a Job, returned by the Transfer 
81       factory, to be added to the scheduler ( that's the new scheduler power ;-) ).
83 MID-TERM:
85   ADD <dario> change the actual way we use the priority for each transfer.
86       In the future it will describe the precise order the transfers will be 
87       downloaded.
88   ADD <dario> use KPassivePopups to notify when all the transfers have been
89       downloaded.
90   CHG <dario> profile kget and look for possible optimizations.
91   ADD <kget> bitTorrent support
92   CHG <kget> setup a decent gui with a decent toolbars.
93   CHG <kget> sync the configuration options with what has currently been 
94       implemented.
95   ADD <dario> make it possible to associate a default folder to each group.
96   ADD <pino> tooltips and what's this for settings
97   ADD <pino> implement the notifications
98   ADD <dario> add a wizard on the first app execution, where the user can set
99       his download folders and other "vital" settings like the integration with
100       Konqueror. Perhaps we could provide a good default like ~/downloads/.
101   ADD <pino> make the sidebar capable of several sizes for its items (16, 22,
102       32, ...)
104 LONG-TERM:
106   ADD <kget> make the TestView able to make intensive tests on kget by
107       giving commands to the Scheduler and looking if what happens is what should
108       happen.
109   CHG <dario> usability enhancements as in #79519, #89379, #111407
110   ADD <dario> sidebar for transfer statistics and more (bandwidth
111       graph, alternative urls, connection status/type, virtual folders,
112       ...)
113   ADD <kget> add bandwidth limiting (#87600)
114   ADD <kget> splits download in N segments (#62371)
115   ADD <kget> support for mirrors (#62371)
116   ADD <dario> 'low priority downloads' as in br #50776.
117   ADD <kget> add Help & Guide
118   ADD <uwolfer> show average transfer speed when finished (#49219)
119   ADD <uwolfer> resume option when there is a file with the same name (#51450)
120   ADD <uwolfer> preserve timestamp of downloaded files (as option) (#55511)
121   ADD <uwolfer> recursion and other wget features (#57105)
122   ADD <uwolfer> make KGets handling of many downloads smarter 
123       (maximum number of open connections per server) (#57248)
124   ADD <uwolfer> check there is enough space left before downloading file (#57373)
125   ADD <uwolfer> save referer page for downloads (#60946)
126   ADD <uwolfer> built-in signature verification support (#61397)
127   ADD <uwolfer> right-click menu to change file properties 
128       (filename, destination directory, url) (#72534, 82923)
129   ADD <uwolfer> add support for mms:// protocol (#96386)
130   ADD <uwolfer> add valid download time frame, global or individual (#109377)
133         DONE
134 ---------------------
137   Things done until 21/01/2005
139   CHG <dario, eros> decoupling between gui and transfer operations.
140   ADD <dario> Implement the MainView class that should become the kget main view.
141   CHG <dario> Transfer object rewrite to make it easily inherited from 
142       new kind of transfers.
143   ADD <dario> TransferKio. The first transfer realized using kioSlaves
144   CHG <dario> Scheduler logic enhancement (there are still lots of things to do)
145   ADD <dario> groups support and notifies to the views.
146   ADD <dario> systray icon with blinking overlay.
147   CHG <eros> Move all the configuration framework to KConfigXT
148   CHG <dario> implement delayedInitialization of the kget app. This should speed up
149       the startup a lot with big lists of transfers.
150   FIX <dario> the konqueror plugin doesn't allow the download of links if 
151       the relative web page has been closed
152   FIX <pino> make more fluid the drop target movement
153   FIX <dario> handle SideBar resizing correctly
154   CHG <dario> finish to implement transferKio adding, for example, setDelay.
155   FIX <dario> (JJ) fix crash when resuming an already running transfer. The 
156       solution should be to check for this case in Scheduler::slotSetCommand
157       by calling the info() function on the transfer and checking if its status
158       is St_Trying or St_Running. In this case we should do nothing.
159   FIX <dario> (JJ) fixed Sidebar crash.
160   FIX <dario> fixed 'stop on transfer' crash
161   FIX <enrico> Optimized color scheme change (rebuilds pixmaps, droptarget,
162       etc) and pixmap deletion (leakfix)
163   CHG <enrico> disabled internal segv hander to show backtraces on crash
164   ADD <dario> make it possible to move transfers to a specific group using
165       the popup menu.
167   Things done after the big architecture rewrite
169   CHG <dario> rename the KMainWidget class (that IMHO is a rather confusing name)
170       to MainWindow (KGet? KGetWindow?)
171   ADD <dario> add the possibility to select "open destination folder" in 
172       the transfer's popup menu.
174 IDEAS:
175    * Use the single transfer dialog to display transfer property, progress and
176      to set up advanced options of a transfer, like its splitting into chuncks.
179 DISCUSSING:
180    * Remember to move downloaded Transfers in a black-list that will be
181      deleted when program exits. So old pointers to downloaded items are
182      still valid when the transfer ends.