summaryrefslogtreecommitdiffstats
path: root/TODO
diff options
context:
space:
mode:
Diffstat (limited to 'TODO')
-rw-r--r--TODO231
1 files changed, 231 insertions, 0 deletions
diff --git a/TODO b/TODO
new file mode 100644
index 000000000..2adb8eee1
--- /dev/null
+++ b/TODO
@@ -0,0 +1,231 @@
+This file is meant to be a place to track of medium to large-scale API changes
+that we would like to make for the next binary incompatible release.
+
+- Check for forked classes in kde pim and other modules
+
+- There is no reason why KConfigBase should inherit from QObject, get rid of that.
+
+- Change all FooPrivate *d; -> Private * const d; and place initialization
+ in the constructor (for classes that would benefit from this). To help catch silly
+ mistakes since d should never change. Also consider changing to use KStaticDeleter to
+ help prevent mistakes where developers forget to delete the pointer. Maybe make use of
+ Qt4 helper macros?
+
+- Move all utility functions away from KApplication. TBD: Make KApplication
+ a very thin wrapper around QApplication. Ideally, KApplication should go
+ away completely. The kapp pointer references everywhere must die. Find a
+ way to make that possible
+
+- Remove all KDE_NO_COMPAT from the KDE2 -> KDE3 port before adding new ones for KDE4.
+
+- Remove the smart-to-dumb-pointer conversion operator from KSharedPtr
+ and replace it with a T* Get() member function. An implict conversion is
+ far too dangerous.
+ See: http://groups.google.com/groups?selm=4ognb0%243cd%40linda.teleport.com&oe=UTF-8&output=gplain
+ Also free the client from the requirement to inherit from KShared.
+
+- Remove all KSocket, KServerSocket, KSocks and KExtendedSocket references
+ throughout KDE in favor of KNetwork's socket implementations.
+ Also, revise the namespace usage.
+ thiago.macieira@kdemail.net
+
+- Remove all methods marked 'deprecated' in KDE 3.x.
+
+- Clean up the uses of virtual_hook, use normal virtuals instead (e.g. KZip/KArchive)
+
+- Make it possible to create a KSystemTray without a KMainWindow and instead lazily
+ create the main window on demand.
+
+- Make KSystemTray's Quit option in the context menu call kapp->quit() instead of
+ closing all windows, so apps that save their window state on exit don't need
+ workarounds to detect a window close caused by the tray rather than the user.
+
+- Make KSystemTray add its own reference to KApp, so tray apps that adhere to the
+ style guide can safely close their main window without having to worry about
+ the app quitting instead.
+
+- Make some long-lasting operations threaded. There are some operations in KDE that
+ take too long on at least ~500MHz hardware to be done using event loops. Examples
+ are the use of KLibLoader to dlopen plugins and KRun to fire up other processes.
+ Konqueror and KMail tend to stall occasionally too, but that's harder to refactor
+ because the bulk of the work there is X11-related.
+
+- Make it possible to use SSL-ed sockets outside KIO. KSSL isn't very suitable for
+ reuse, and the certificate dialogs are not even available in public API at all,
+ leading e.g. to Kopete IRC duplicating a lot of stuff and all KDE Jabber clients
+ based on libpsi (PSI, Light Hawk and Kopete) using homebrewn solutions. [How
+ does this have to do with changing KIO? It's just a request to have that
+ code in a different form....]
+
+- Manually, properly clean up the includes in all of the headers. Remove
+ unnecessary ones and change pointers to use class foo; decorations and move the
+ headers into the cpp files. When finished fixkdeincludes shouldn't find
+ anything (but don't rely on fixkdeinclude, it should be done manually first!)
+
+- Use of the C++ keyword "explicit". Make all ctors explicit which can be used
+ with one parameter to minimize wrong use of the class (i.e. have a look at
+ Dirk's work on KURL). Another candidate: KService( KDesktopFile *config ).
+ KGuiItem has one of these dangerous ctors, too. KUser has a whole bunch
+ of them.
+
+- Solve need for casting when using bitfield enums (e.g. KProcess::Communication),
+ if Simon's solution works.
+
+- Merge kdelibs/kdecore/kuser.h and kdeadmin/kuser/kuser.h.
+
+- Simplify memory management with KParts. The part and the widget delete each other,
+ which in fact makes it more complex to handle. The part owns the widget so it
+ should delete it, but not the other way round.
+
+- KParts: remove plugin loading from setInstance, add an explicit loadPlugins() call
+ in all parts that should load plugins (at the end of the derived-part ctor).
+
+- KParts: come up with better names for ReadOnlyPart and ReadWritePart, ReadOnly
+ is a minimum requirement, but this does not become clear until you dig deeper
+ into the class. With QTextEdit and QTextBrowser for instance, the inheritance is
+ the other way around. E.g.: ReaderPart? ViewerPart?
+
+- Other ideas in this thread: http://lists.kde.org/?l=kde-core-devel&m=107608067302571&w=2
+ (Contributors to that thread, please add specific items here.)
+
+- KConfigBase: For all the read*Entry methods that take a QFont *, QPoint *, QSize *, etc.
+ for the default value, add overloads that use a const reference, so that one can write
+ resize( config->readSizeEntry( "Bleh", size() ); for example. Constructing a null
+ QFont/QPoint/QSize is cheap enough to justify a consistent and usable API (IMHO) .
+ Keep source compatibility.
+
+- Sort out reference counting of applications and KMainWindows: Add a setRefCountEnabled()
+ function to KApplication; deref()ing the last reference should only quit the application
+ if reference counts are enabled, and the reference count should be disabled by default
+ so apps that don't use a KMainWindow mostly continue to work. Make the KMainWindow
+ constructor call setRefCountEnabled(true), and make each KMainWindow hold its own
+ reference to the application. The KMainWindow should drop its app reference on hide, and
+ regain it on show.
+
+ Make KSysTray also hold a reference to the app. Then apps that use more than one main
+ window and the tray (like KSIrc and Kopete) will quit at the right time without nasty
+ hacks.
+
+- Change classes that store bool data using strings ("true"/"false") to use bool
+ calls (readBoolEntry()). Although not technicaly a binary incompatiblity...
+ just something to bring up for possible change (for the better)
+
+ Use KConfigXT instead! /FransE
+
+- Is it really necessary to bother people using the KCM APIs with withFallback? I have
+ never heard of it failing and when would you not like to have that fallback? I think
+ a default of 'true' would be fine(and remove the argument in the APIs).
+
+- Do we need to have factory arguments in the KCM API? (who would use it anyway?)
+
+- KCModuleInfo should use d-pointer. Perhaps there is more classes.
+
+- The config options in kdeglobals needs to be cleaned up a little. Perhaps I'm being picky..
+ * They should be named properly, for example "enableIcons" instead of "EnableIcons". Or atleast
+ settle on one thing.
+ * AFAICT it would be the right thing if KWin had its own rc file instead of having its "WM"
+ section in kdeglobals.
+ * Shouldn't KSpell have its own rc file instead of kdeglobals?
+ * Should we allow spaces in option names?
+ * Some option names are too short for being understandable. fixed->fixedFont; font->systemWideFont
+ * Perhaps an own font section?
+
+- kpassdlg.h needs to be renamed to kpassworddialog.h - consistent with other classes(it won't
+ break many apps). The class needs a facelift - see the comments in kpassdlg.{h,cpp}
+
+- KProcess needs a major facelift. Not all of these items need to be BIC, but not needing to
+ worry about legacy will certainly allow an overall cleaner solution.
+ - the internals need to be encapsulated properly. many of the virtuals shouldn't be virtual;
+ lots of protected members should be accessible only via accessors. the current model is
+ theoretically super-flexible, but in fact it is only super-fragile.
+ - clear up pipe() vs. socketpair() usage.
+ - move the draining loop from commClose() to wait()
+ - add additional "channels" beyond std*, with the built-in capability of passing the fd on the
+ command line
+ - redirections, including piping multiple kprocesses together. this should make most cases of
+ reimplementing commSetupDone{P,C} superflous.
+ - possibly create KForkProcess that covers most/all of the remaining commSetupDoneC
+ reimplementations.
+ - do something about the NoRead comm mode
+ - add setComm(); remove comm arg from start(). as a side effect, this will allow for using
+ writeStdin() in Block mode.
+ - merge KProcIO into KProcess; add setBuffered() for separate channels.
+ - use QByteArray for writeStdin(). better than the buf+len arg, as it is ref-counted.
+
+- To discuss: Migrate the about dialog to use qhtml or khtml rather then the current
+ setup of all of the widgets and sub widgets. Might be a lot simpler, require a lot
+ less code and be much more flexible for additions/enhancments. Sidenote: currently
+ the about information seems to be duplicated.
+
+- Make API use US English, (eg. KCatalogue -> KCatalog)
+
+- It would be nice if some insan^H^H^H brave soul had a look at the KAccel/KShortcut/KKeyWhatever
+ classes and cleaned it up.
+
+- KKeyDialog needs to be improved. It should simplify using KKeyChooser by not having to instantiate
+ KDialogBase without restricting the possibilities of KKeyChooser (for instance, being able to
+ configure global and application accels in one dialog). If there is only little time, simply
+ expose the KKeyChooser object instead of making it private and inaccessible.
+
+- Fix the APIs taking Matthias Ettrich's hints into account, most importantly fix the massive
+ amount of bool-usage in the CTORs (see KDialogBase, for instance)
+
+- Get rid of KXMLClient::conserveMemory() and the conserveMemory argument in createGUI. It created
+ too many problems in the past. Not worth the trouble.
+
+- Split KProtocolInfo into KProtocolInfoBase in kdecore (with almost everything)
+ and KProtocolInfo in kio (with the methods taking a KURL, which need KProtocolManager)
+
+- Rename KDirNotify_stub and update API (no need for '*' arguments anymore)
+
+- KWallet::Wallet::* functions - remove the default = 0 argument for mainwindow for the dialog
+
+- Make libkwalletclient part of libkio and get rid of libkwalletclient.
+
+- Get rid of libkdesu dependency in libkio, get rid of SessionData::AuthData*,
+ get rid of SlaveInterface::authorizationKey and SlaveInterface::delAuthorization
+
+- Make functions in KHelpMenu virtual so they can be overridden (ex: to provide
+an alternative help->contents action)
+
+- Replace KPasswordEdit with KLineEdit and adjust KPasswordDialog accordingly.
+
+- Merge KPIM::ClickLineEdit with KLineEdit
+
+- Merge all K*Label classes into one that offers all the features such as ellipsis (this time for
+ center, middle and right in order to allow for sqeezing the text), links and selectable text
+ with a consistant API.
+
+- Make sure all GUI classes adopt well to palette changes.
+
+- Rework KPanelExtension and KPanelApplet to have a sane set of global position
+ enums, make the geometry handling less spaghetti like and extend the API so
+ requests for things like re-reading the config of a KPanelExtension can be
+ done by its parent.
+
+- Fix KURLRequester API to use KURL for urls instead of QString to make clear that
+ we work with URLs and not with paths.
+
+- Dump KPixmapIO class. QPixmap with qt-copy patches #0005 and #0007 can perform just as well,
+ KPixmapIO can't dither, and it generally doesn't make much sense to have this class.
+
+- KListView: merge setDropHighlighter and setDropVisualizer, add a setDnDMode to choose between
+ "dnd to move items" (e.g. keditbookmarks) and "dnd onto items" (e.g. kmail). Unless Qt4 does it all :)
+
+- Move KIO::findDeviceMountPoint, findPathMoundPoint, probably_slow_mounted, and testFileSystemFlag to KMountPoint,
+ to merge that code.
+
+- Refactor the kio/bookmarks code so we don't need to use the static d-pointer trick anymore.
+
+- Rename the parameters to KDEDesktopMimeType::pixmap so that they use meaningful names rather than
+ just a, b, c, and d. Probably not something that has to wait for KDE 4, but seems like a good idea
+ to have here for later doing.
+
+- Move KRichTextLabel into kdeui if still required with Qt 4.
+
+- Add the concept of a session to KIO, in particular for KHTML so that it can
+ have all of its jobs associated in some way (a unique key of sorts). Will
+ make SSL much easier to implement and allow removal of many hacks, mostly
+ involving metadata.
+
+- Make KLibLoader default to RTLD_GLOBAL and make necessary changes to make KDE namespace clean.