Port away from Qt3Support
[kdelibs.git] / TODO
blob4d4bbb9a269bee47ee4ae2215ccf5ed5d5f62163
1 This file is meant to be a place to track of medium to large-scale API changes
2 that we would like to make for the next binary incompatible release.
4 - Check for forked classes in kde pim and other modules
5   (Danimo)
7 - Remove all KSocks references throughout KDE in favor of KNetwork's
8   socket implementations. 
9   (Thiago)
11 - Remove all methods marked 'deprecated' in KDE 3.x.
12   (Martijn)
14 - Make it possible to create a KSystemTray without a KMainWindow and instead lazily
15   create the main window on demand.
16   (Martijn)
18 - Make KSystemTray add its own reference to KApp, so tray apps that adhere to the
19   style guide can safely close their main window without having to worry about
20   the app quitting instead.
21   (Martijn)
23 - Sort out reference counting of applications and KMainWindows: Add a setRefCountEnabled()
24   function to KApplication; deref()ing the last reference should only quit the application
25   if reference counts are enabled, and the reference count should be disabled by default
26   so apps that don't use a KMainWindow mostly continue to work. Make the KMainWindow
27   constructor call setRefCountEnabled(true), and make each KMainWindow hold its own
28   reference to the application. The KMainWindow should drop its app reference on hide, and
29   regain it on show.
31   Make KSysTray also hold a reference to the app. Then apps that use more than one main
32   window and the tray (like KSIrc and Kopete) will quit at the right time without nasty
33   hacks.
34   (Richard Smith)
36 - Make some long-lasting operations threaded. There are some operations in KDE that
37   take too long on at least ~500MHz hardware to be done using event loops. Examples
38   are the use of KLibLoader to dlopen plugins and KRun to fire up other processes.
39   Konqueror and KMail tend to stall occasionally too, but that's harder to refactor
40   because the bulk of the work there is X11-related.
41   (Martijn)
43 - Make it possible to use SSL-ed sockets outside KIO. KSSL isn't very suitable for
44   reuse, and the certificate dialogs are not even available in public API at all,
45   leading e.g. to Kopete IRC duplicating a lot of stuff and all KDE Jabber clients
46   based on libpsi (PSI, Light Hawk and Kopete) using homebrewn solutions.  [How
47   does this have to do with changing KIO?  It's just a request to have that
48   code in a different form....]
49   (Martijn)
51 - Solve need for casting when using bitfield enums (e.g. K3Process::Communication)
52   by the use of Q_DECLARE_FLAGS/Q_DECLARE_OPERATORS_FOR_FLAGS
53   (Simon)
55 - Merge kdelibs/kdecore/kuser.h and kdeadmin/kuser/kuser.h.
56   (Frans)
58 - KParts: remove plugin loading from setInstance, add an explicit loadPlugins() call
59   in all parts that should load plugins (at the end of the derived-part ctor).
60   (David)
62 - KParts: come up with better names for ReadOnlyPart and ReadWritePart, ReadOnly
63   is a minimum requirement, but this does not become clear until you dig deeper
64   into the class. With QTextEdit and QTextBrowser for instance, the inheritance is
65   the other way around. E.g.: ReaderPart? ViewerPart?
66   (David)
68 - Other ideas in this thread: http://lists.kde.org/?l=kde-core-devel&m=107608067302571&w=2
69   (Contributors to that thread, please add specific items here.)
70   (Waldo)
72 - Change classes that store bool data using strings ("true"/"false") to use bool 
73   calls (readBoolEntry()).  Although not technicaly a binary incompatiblity... 
74   just something to bring up for possible change (for the better)
76   Use KConfigXT instead! /FransE
78 - Is it really necessary to bother people using the KCM APIs with withFallback? I have
79   never heard of it failing and when would you not like to have that fallback? I think
80   a default of 'true' would be fine(and remove the argument in the APIs).
81   (Frans)
83 - Do we need to have factory arguments in the KCM API? (who would use it anyway?)
84   (Frans)
86 - The config options in kdeglobals needs to be cleaned up a little. Perhaps I'm being picky..
87         * They should be named properly, for example "enableIcons" instead of "EnableIcons". Or atleast
88                 settle on one thing.
89         * AFAICT it would be the right thing if KWin had its own rc file instead of having its "WM" 
90                 section in kdeglobals.
91         * Shouldn't Sonnet have its own rc file instead of kdeglobals?
92         * Should we allow spaces in option names?
93         * Some option names are too short for being understandable. fixed->fixedFont; font->systemWideFont
94         * Perhaps an own font section?
95   (Frans)
97 - K3Process needs a major facelift. Not all of these items need to be BIC, but not needing to
98   worry about legacy will certainly allow an overall cleaner solution.
99   - the internals need to be encapsulated properly. many of the virtuals shouldn't be virtual;
100     lots of protected members should be accessible only via accessors. the current model is
101     theoretically super-flexible, but in fact it is only super-fragile.
102   - clear up pipe() vs. socketpair() usage.
103   - move the draining loop from commClose() to wait()
104   - add additional "channels" beyond std*, with the built-in capability of passing the fd on the
105     command line
106   - redirections, including piping multiple kprocesses together. this should make most cases of
107     reimplementing commSetupDone{P,C} superfluous.
108   - possibly create KForkProcess that covers most/all of the remaining commSetupDoneC
109     reimplementations.
110   - do something about the NoRead comm mode
111   - add setComm(); remove comm arg from start(). as a side effect, this will allow for using
112     writeStdin() in Block mode.
113   - merge K3ProcIO into K3Process; add setBuffered() for separate channels.
114   - use QByteArray for writeStdin(). better than the buf+len arg, as it is ref-counted.
115   (Oswald)
116   - better than the buf+len arg, as it is ref-counted. See
117 [http://lists.kde.org/?l=kde-core-devel&m=112775845325713&w=2|this thread] for some more
118 informations
120 - KKeyDialog needs to be improved. It should simplify using KKeyChooser by not having to instantiate
121   KDialogBase without restricting the possibilities of KKeyChooser (for instance, being able to
122   configure global and application accels in one dialog). If there is only little time, simply
123   expose the KKeyChooser object instead of making it private and inaccessible.
124   (Michael Brade)
126 - Fix the APIs taking Matthias Ettrich's hints into account, most importantly fix the massive
127   amount of bool-usage in the CTORs
128   (Michael Brade)
130 - Implement a "default" ctor for the widgets i.e. explicit Foo(QWidget* parent = 0).
131   (André Wöbbeking)
133 - Make functions in KHelpMenu virtual so they can be overridden (ex: to provide
134   an alternative help->contents action)
135   (George Staikos)
137 - Make sure all GUI classes adopt well to palette changes.
138   (Danimo)
140 - K3ListView lacked a setDnDMode to choose between "dnd to move items" (e.g. keditbookmarks)
141   and "dnd onto items" (e.g. kmail). Check how to do this with QListView/QTreeView...
142   (David)
144 - Add the concept of a session to KIO, in particular for KHTML so that it can
145   have all of its jobs associated in some way (a unique key of sorts).  Will
146   make SSL much easier to implement and allow removal of many hacks, mostly
147   involving metadata.
148   (George Staikos)
150 - Make KLibLoader default to RTLD_GLOBAL and make necessary changes to make KDE namespace clean.
151   (Coolo)
152   Maybe just make sure we don't emit multiple copies of per-class data (vtable,RTTI), then
153   RTLD_LOCAL should do as well, and it should(?) be simpler this way.
154   (Lubos)
156 - Many instances of creating containers on the heap instead of stack, can be replaced? (Caleb Tennis) [where?]
158 - Remove all of the (const char *name) arguments to QObject derived classes. (Caleb Tennis) [mostly done, what's missing?]
160 - Add KAssistant - a new KDE standards-compliant wizard, (Jaroslaw Staniek (TODO/KAssistant|Details))
161   Qt4 has no QWizard (only Q3Wizard left). Add a new KDE standards-compliant wizard with 
162   a bit more powerful API and features like "Steps list" pane on the left hand of the wizard
163   (user can click any step if developer allowed such action). Example from OO.org:
164   http://www.openoffice.org/dev_docs/features/2.0/images/mail_merge.jpg
165   We could add more consistency (using themes, guidelines) in this area, 
166   as in KDE3 some apps implement wizard's features like left-hand funky pictures 
167   or help text again and again
168   (see http://www.kolab.org/doc/kde-client-manual-0.9cvs20030801-html/c43.html).
169   Other ideas: 
170   * use nonintrusive "watermark" effect on the 1st or all pages 
171   (http://images.apple.com/macosx/features/setup/images/index_setup20050412.jpg), 
172   * allow to disable steps on the left-side list as an answer to calling setAppropriate().
173   * QWizard's API is mostly ok for the new class, just avoid requiring to pass a pointer 
174   to page widget (as in setAppropriate()) but allow to pass QString names or IDs instead.
175   (Jaroslaw Staniek)
177 - K3IconView/K3ListView equivalents based on Qt4 interview. As discussed on kde-core-devel,
178   this probably means a custom QItemDelegate instead, to handle single-click/double-click,
179   execute-mode/select-mode (cf K3IconView), number of lines used for wrapping, "held" signal.
180   In short, rewriting k3iconview features to be based on interview.
181   For K3ListView we need to check if QTreeView supports both modes of drag-n-drop (dropping
182   onto items, and dropping between items like in the bookmark editor).
183   (David, Till etc.)
185 - CMake:
186    * install man pages (e.g. doc/kdelibs/man-kbuildsycoca.8.docbook)
187    * install /share/apps/ksgmltools2/customization/entities/kde-standard-accels.entities
188    * win32: fix path delimiter problem generated *.bat wrapper (using ' ' instead of ';')
190 - It looks like most of the functions KStringHandler can be removed.  At least, insword, setword, 
191   remrange, and remword could be removed [DONE] .  Those four don't seem to be used anywhere inside of KDE.  Other
192   functions like capitalize and reverse seem to be sparsely used. 
193   (Caleb)
195 - Prevent re-entering event loop in kded to avoid reentrancy problems like with kwallet in KDE3 (Lubos).
197 - Customizable KToolTip/KWhatsThis widgets (Jaroslaw Staniek), 
198   now KWhatsThis is a part of KDE GSoC "Implement OpenUsability's Context Sensitive 
199   Help Redesign" project, by Joshua Keel, mentored by Ellen Reitmayr
200   * initial notes: http://wiki.kde.org/tiki-index.php?page=kdelibs4+TODO%2FKToolTip
201   * design page: http://wiki.kde.org/tiki-index.php?page=KWhatsThis
203 - Additional (automatic) shortcuts for KMessageBox (Jaroslaw Staniek)
204   See http://lists.kde.org/?l=kde-usability&m=109688936328920&w=2