TDE core libraries
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

232 lines

  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.
  3. - Check for forked classes in kde pim and other modules
  4. - There is no reason why TDEConfigBase should inherit from QObject, get rid of that.
  5. - Change all FooPrivate *d; -> Private * const d; and place initialization
  6. in the constructor (for classes that would benefit from this). To help catch silly
  7. mistakes since d should never change. Also consider changing to use KStaticDeleter to
  8. help prevent mistakes where developers forget to delete the pointer. Maybe make use of
  9. Qt4 helper macros?
  10. - Move all utility functions away from TDEApplication. TBD: Make TDEApplication
  11. a very thin wrapper around QApplication. Ideally, TDEApplication should go
  12. away completely. The kapp pointer references everywhere must die. Find a
  13. way to make that possible
  14. - Remove all KDE_NO_COMPAT from the KDE2 -> KDE3 port before adding new ones for KDE4.
  15. - Remove the smart-to-dumb-pointer conversion operator from TDESharedPtr
  16. and replace it with a T* Get() member function. An implict conversion is
  17. far too dangerous.
  18. See:
  19. Also free the client from the requirement to inherit from TDEShared.
  20. - Remove all TDESocket, TDEServerSocket, KSocks and KExtendedSocket references
  21. throughout KDE in favor of KNetwork's socket implementations.
  22. Also, revise the namespace usage.
  24. - Remove all methods marked 'deprecated' in KDE 3.x.
  25. - Clean up the uses of virtual_hook, use normal virtuals instead (e.g. KZip/KArchive)
  26. - Make it possible to create a KSystemTray without a TDEMainWindow and instead lazily
  27. create the main window on demand.
  28. - Make KSystemTray's Quit option in the context menu call kapp->quit() instead of
  29. closing all windows, so apps that save their window state on exit don't need
  30. workarounds to detect a window close caused by the tray rather than the user.
  31. - Make KSystemTray add its own reference to KApp, so tray apps that adhere to the
  32. style guide can safely close their main window without having to worry about
  33. the app quitting instead.
  34. - Make some long-lasting operations threaded. There are some operations in KDE that
  35. take too long on at least ~500MHz hardware to be done using event loops. Examples
  36. are the use of KLibLoader to dlopen plugins and KRun to fire up other processes.
  37. Konqueror and KMail tend to stall occasionally too, but that's harder to refactor
  38. because the bulk of the work there is X11-related.
  39. - Make it possible to use SSL-ed sockets outside TDEIO. KSSL isn't very suitable for
  40. reuse, and the certificate dialogs are not even available in public API at all,
  41. leading e.g. to Kopete IRC duplicating a lot of stuff and all KDE Jabber clients
  42. based on libpsi (PSI, Light Hawk and Kopete) using homebrewn solutions. [How
  43. does this have to do with changing TDEIO? It's just a request to have that
  44. code in a different form....]
  45. - Manually, properly clean up the includes in all of the headers. Remove
  46. unnecessary ones and change pointers to use class foo; decorations and move the
  47. headers into the cpp files. When finished fixkdeincludes shouldn't find
  48. anything (but don't rely on fixkdeinclude, it should be done manually first!)
  49. - Use of the C++ keyword "explicit". Make all ctors explicit which can be used
  50. with one parameter to minimize wrong use of the class (i.e. have a look at
  51. Dirk's work on KURL). Another candidate: KService( KDesktopFile *config ).
  52. KGuiItem has one of these dangerous ctors, too. KUser has a whole bunch
  53. of them.
  54. - Solve need for casting when using bitfield enums (e.g. TDEProcess::Communication),
  55. if Simon's solution works.
  56. - Merge tdelibs/tdecore/kuser.h and tdeadmin/kuser/kuser.h.
  57. - Simplify memory management with KParts. The part and the widget delete each other,
  58. which in fact makes it more complex to handle. The part owns the widget so it
  59. should delete it, but not the other way round.
  60. - KParts: remove plugin loading from setInstance, add an explicit loadPlugins() call
  61. in all parts that should load plugins (at the end of the derived-part ctor).
  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. - Other ideas in this thread:
  67. (Contributors to that thread, please add specific items here.)
  68. - TDEConfigBase: For all the read*Entry methods that take a QFont *, QPoint *, QSize *, etc.
  69. for the default value, add overloads that use a const reference, so that one can write
  70. resize( config->readSizeEntry( "Bleh", size() ); for example. Constructing a null
  71. QFont/QPoint/QSize is cheap enough to justify a consistent and usable API (IMHO) .
  72. Keep source compatibility.
  73. - Sort out reference counting of applications and TDEMainWindows: Add a setRefCountEnabled()
  74. function to TDEApplication; deref()ing the last reference should only quit the application
  75. if reference counts are enabled, and the reference count should be disabled by default
  76. so apps that don't use a TDEMainWindow mostly continue to work. Make the TDEMainWindow
  77. constructor call setRefCountEnabled(true), and make each TDEMainWindow hold its own
  78. reference to the application. The TDEMainWindow should drop its app reference on hide, and
  79. regain it on show.
  80. Make KSysTray also hold a reference to the app. Then apps that use more than one main
  81. window and the tray (like KSIrc and Kopete) will quit at the right time without nasty
  82. hacks.
  83. - Change classes that store bool data using strings ("true"/"false") to use bool
  84. calls (readBoolEntry()). Although not technicaly a binary incompatiblity...
  85. just something to bring up for possible change (for the better)
  86. Use TDEConfigXT instead! /FransE
  87. - Is it really necessary to bother people using the KCM APIs with withFallback? I have
  88. never heard of it failing and when would you not like to have that fallback? I think
  89. a default of 'true' would be fine(and remove the argument in the APIs).
  90. - Do we need to have factory arguments in the KCM API? (who would use it anyway?)
  91. - TDECModuleInfo should use d-pointer. Perhaps there is more classes.
  92. - The config options in kdeglobals needs to be cleaned up a little. Perhaps I'm being picky..
  93. * They should be named properly, for example "enableIcons" instead of "EnableIcons". Or atleast
  94. settle on one thing.
  95. * AFAICT it would be the right thing if KWin had its own rc file instead of having its "WM"
  96. section in kdeglobals.
  97. * Shouldn't KSpell have its own rc file instead of kdeglobals?
  98. * Should we allow spaces in option names?
  99. * Some option names are too short for being understandable. fixed->fixedFont; font->systemWideFont
  100. * Perhaps an own font section?
  101. - kpassdlg.h needs to be renamed to kpassworddialog.h - consistent with other classes(it won't
  102. break many apps). The class needs a facelift - see the comments in kpassdlg.{h,cpp}
  103. - TDEProcess needs a major facelift. Not all of these items need to be BIC, but not needing to
  104. worry about legacy will certainly allow an overall cleaner solution.
  105. - the internals need to be encapsulated properly. many of the virtuals shouldn't be virtual;
  106. lots of protected members should be accessible only via accessors. the current model is
  107. theoretically super-flexible, but in fact it is only super-fragile.
  108. - clear up pipe() vs. socketpair() usage.
  109. - move the draining loop from commClose() to wait()
  110. - add additional "channels" beyond std*, with the built-in capability of passing the fd on the
  111. command line
  112. - redirections, including piping multiple kprocesses together. this should make most cases of
  113. reimplementing commSetupDone{P,C} superflous.
  114. - possibly create KForkProcess that covers most/all of the remaining commSetupDoneC
  115. reimplementations.
  116. - do something about the NoRead comm mode
  117. - add setComm(); remove comm arg from start(). as a side effect, this will allow for using
  118. writeStdin() in Block mode.
  119. - merge KProcIO into TDEProcess; add setBuffered() for separate channels.
  120. - use QByteArray for writeStdin(). better than the buf+len arg, as it is ref-counted.
  121. - To discuss: Migrate the about dialog to use qhtml or tdehtml rather then the current
  122. setup of all of the widgets and sub widgets. Might be a lot simpler, require a lot
  123. less code and be much more flexible for additions/enhancments. Sidenote: currently
  124. the about information seems to be duplicated.
  125. - Make API use US English, (eg. KCatalogue -> KCatalog)
  126. - It would be nice if some insan^H^H^H brave soul had a look at the TDEAccel/TDEShortcut/KKeyWhatever
  127. classes and cleaned it up.
  128. - KKeyDialog needs to be improved. It should simplify using KKeyChooser by not having to instantiate
  129. KDialogBase without restricting the possibilities of KKeyChooser (for instance, being able to
  130. configure global and application accels in one dialog). If there is only little time, simply
  131. expose the KKeyChooser object instead of making it private and inaccessible.
  132. - Fix the APIs taking Matthias Ettrich's hints into account, most importantly fix the massive
  133. amount of bool-usage in the CTORs (see KDialogBase, for instance)
  134. - Get rid of KXMLClient::conserveMemory() and the conserveMemory argument in createGUI. It created
  135. too many problems in the past. Not worth the trouble.
  136. - Split KProtocolInfo into KProtocolInfoBase in tdecore (with almost everything)
  137. and KProtocolInfo in tdeio (with the methods taking a KURL, which need KProtocolManager)
  138. - Rename KDirNotify_stub and update API (no need for '*' arguments anymore)
  139. - TDEWallet::Wallet::* functions - remove the default = 0 argument for mainwindow for the dialog
  140. - Make libtdewalletclient part of libtdeio and get rid of libtdewalletclient.
  141. - Get rid of libtdesu dependency in libtdeio, get rid of SessionData::AuthData*,
  142. get rid of SlaveInterface::authorizationKey and SlaveInterface::delAuthorization
  143. - Make functions in KHelpMenu virtual so they can be overridden (ex: to provide
  144. an alternative help->contents action)
  145. - Replace KPasswordEdit with KLineEdit and adjust KPasswordDialog accordingly.
  146. - Merge KPIM::ClickLineEdit with KLineEdit
  147. - Merge all K*Label classes into one that offers all the features such as ellipsis (this time for
  148. center, middle and right in order to allow for sqeezing the text), links and selectable text
  149. with a consistant API.
  150. - Make sure all GUI classes adopt well to palette changes.
  151. - Rework KPanelExtension and KPanelApplet to have a sane set of global position
  152. enums, make the geometry handling less spaghetti like and extend the API so
  153. requests for things like re-reading the config of a KPanelExtension can be
  154. done by its parent.
  155. - Fix KURLRequester API to use KURL for urls instead of QString to make clear that
  156. we work with URLs and not with paths.
  157. - Dump KPixmapIO class. QPixmap with qt-copy patches #0005 and #0007 can perform just as well,
  158. KPixmapIO can't dither, and it generally doesn't make much sense to have this class.
  159. - TDEListView: merge setDropHighlighter and setDropVisualizer, add a setDnDMode to choose between
  160. "dnd to move items" (e.g. keditbookmarks) and "dnd onto items" (e.g. kmail). Unless Qt4 does it all :)
  161. - Move TDEIO::findDeviceMountPoint, findPathMoundPoint, probably_slow_mounted, and testFileSystemFlag to KMountPoint,
  162. to merge that code.
  163. - Refactor the tdeio/bookmarks code so we don't need to use the static d-pointer trick anymore.
  164. - Rename the parameters to KDEDesktopMimeType::pixmap so that they use meaningful names rather than
  165. just a, b, c, and d. Probably not something that has to wait for KDE 4, but seems like a good idea
  166. to have here for later doing.
  167. - Move KRichTextLabel into tdeui if still required with Qt 4.
  168. - Add the concept of a session to TDEIO, in particular for TDEHTML so that it can
  169. have all of its jobs associated in some way (a unique key of sorts). Will
  170. make SSL much easier to implement and allow removal of many hacks, mostly
  171. involving metadata.
  172. - Make KLibLoader default to RTLD_GLOBAL and make necessary changes to make KDE namespace clean.