Archive:Projects/kdelibs (zh CN)

From KDE TechBase
Revision as of 12:54, 23 June 2013 by AnneW (talk | contribs) (AnneW moved page Projects/kdelibs (zh CN) to Archive:Projects/kdelibs (zh CN) without leaving a redirect: Obsolete)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

对 KDE 4 的建议

[[../kdelibs/draft-kio-file-auth|给KIO文件添加授权或KDESU]]

KDE 4 主要的任务清单

下面列表(见表)有许多我们需要为KDELibs模块做得事。

缺陷问题

尽快修正。

事由 报告人 修正人员 状态
KDoubleNumInput doesn't handle keyboard input properly esp. with '.'. I did see a FIXME in that file regarding the KIntNumInput validator or similar. KIntNumInput also has obvious problems. Clarence Dang Dirk Mueller 已修正
Saving an image with RGB KImageIO crashes in SGIImage::writeImage(). Clarence Dang Tobias Koenig & Melchior Franz 已修正
KFileDialog::setPreviewWidget() does not display the widget. Clarence Dang
The settings->configure shortcuts dialog needs some serious usability love :) Oh, and it fails to show up the majority of my actions in kword. Additionally, in Dolphin and KMail, some shortcuts appear as parents of others, even though they are not. Thomas Zander Andreas Hartmetz
KPrinter doesn't work well after a myKPrinter.setOutputFormat(QPrinter::PdfFormat); Thomas Zander
The arrows for toolbar buttons which contain a menu are not drawn. This is for example visible in the file open dialog. The user has no chance to discover that there are drop-down menus. Thomas McGuire

需要立即做的事

需要立即做的事。

事由 人员 状态
Remove deprecated methods.
Remove classes that aren't used by more than 1 app.
KUIT i18n strings.
KSSL needs love thiago
Buncha KIO issues Jeff Mitchell, ervin, dfaure
Port K3Icon to KIcon.
KDirNotify::emitFilesChanged complains that it's only half implemented
KPrinter sucks, improve it.
Remove kdefx in favor of Blitz + QImage/QPainter. ( note: apps can now use blitz from kdesupport to help with porting) mosfet, mwoehlke make it so
add QPalette::ColorGroup awareness to KColorScheme mwoehlke done, now users must be fixed to DTRT
kstyle fixes Maxsim
API improvements that make it easier to port from KDE3 (in the sense of less work or things to change). It is time to make our desktop functional, and while this might mean to change the API here and there, our focus should be to get the application code we have from KDE3 running at least as good as it did with KDE3, without actually having to rewrite all of our existing code.
Print Timezone in formatDateTime()? brun0_
Rename KXMLGUIBuilder, KXMLGUIClient, KXMLGUIFactory to KXmlGuiBuilder, KXmlGuiClient, KXmlGuiFactory, respectively Robin Stocker

中到大事

Medium to large-scale API changes that we would like to make for the next binary incompatible release.

事由 人员 KDE 版本 状态
Check for forked classes in kde pim and other modules Danimo
Remove all KSocks references throughout KDE in favor of KNetwork's socket implementations. Thiago
Remove all methods marked 'deprecated' in KDE 3.x. Martijn
Make it possible to create a KSystemTray without a KMainWindow and instead lazily create the main window on demand. Martijn
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. Martijn
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.

Richard Smith
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.

Martijn KPluginLoader replaces KLibLoader in most respects and is reentrant
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....] Martijn
Solve need for casting when using bitfield enums (e.g. K3Process::Communication) by the use of Q_DECLARE_FLAGS/Q_DECLARE_OPERATORS_FOR_FLAGS Simon
Merge kdelibs/kdecore/kuser.h and kdeadmin/kuser/kuser.h. Frans
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). David
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? David
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.)

Waldo
Change classes that store bool data using strings ("true"/"false") to use bool calls (readBoolEntry()). Although not technicaly a binary incompatablity...just something to bring up for possible change (for the better)

Use KConfigXT instead!

Frans
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). Frans
Do we need to have factory arguments in the KCM API? (who would use it anyway?) Frans
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 at least 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 Sonnet 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?
Frans
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. Michael Brade
Fix the APIs taking Matthias Ettrich's hints into account, most importantly fix the massive amount of bool-usage in the CTORs. Michael Brade
Implement a "default" ctor for the widgets i.e. explicit Foo(QWidget* parent =0). André Wöbbeking
Make functions in KHelpMenu virtual so they can be overridden (ex: to provide an alternative help->contents action) George Staikos
Make sure all GUI classes adopt well to palette changes. Danimo
K3ListView lacked a setDnDMode to choose between "dnd to move items" (e.g. keditbookmarks) and "dnd onto items" (e.g. kmail). Check how to do this with QListView/QTreeView... David
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. George Staikos
Make KLibLoader default to RTLD_GLOBAL and make necessary changes to make KDE namespace clean. Coolo
Maybe just make sure we don't emit multiple copies of per-class data (vtable,RTTI), then RTLD_LOCAL should do as well, and it should(?) be simpler this way. Lubos
Many instances of creating containers on the heap instead of stack, can be replaced? [where?] Caleb Tennis
Remove all of the (const char *name) arguments to QObject derived classes. [mostly done, what's missing?] Caleb Tennis
Add KAssistant, a new KDE standards-compliant wizard, (TODO/KAssistant) Qt4 has no QWizard (only Q3Wizard left). Add a new KDE standards-compliant wizard with a bit more powerful API and features like "Steps list" pane on the left hand ofthe wizard (user can click any step if developer allowed such action).

Example from OO.org:
http://www.openoffice.org/dev_docs/features/2.0/images/mail_merge.jpg

We could add more consistency (using themes, guidelines) in this area, as in KDE3 some apps implement wizard's features like left-hand funky pictures or help text again and again (see http://www.kolab.org/doc/kde-client-manual-0.9cvs20030801-html/c43.html).

Other ideas:
  • use nonintrusive "watermark" effect on the 1st or all pages http://images.apple.com/macosx/features/setup/images/index_setup20050412.jpg
  • allow to disable steps on the left-side list as an answer to calling setAppropriate().
  • QWizard's API is mostly ok for the new class, just avoid requiring to pass a pointer to page widget (as in setAppropriate()) but allow to pass QString names or IDs instead.
Jaroslaw Staniek
K3IconView/K3ListView equivalents based on Qt4 interview. As discussed on kde-core-devel,this probably means a custom QItemDelegate instead, to handle single-click/double-click, execute-mode/select-mode (cf K3IconView), number of lines used for wrapping, "held" signal.

In short, rewriting k3iconview features to be based on interview. For K3ListView we need to check if QTreeView supports both modes of drag-n-drop (dropping onto items, and dropping between items like in the bookmark editor).

David, Till etc.
CMake:
  • install man pages (e.g. doc/kdelibs/man-kbuildsycoca.8.docbook)
  • install /share/apps/ksgmltools2/customization/entities/kde-standard-accels.entities
  • win32: fix path delimiter problem generated *.bat wrapper (using ' ' instead of ';')
It looks like most of the functions KStringHandler can be removed. At least, insword, setword,remrange, and remword could be removed [DONE] . Those four don't seem to be used anywhere inside of KDE. Other functions like capitalize and reverse seem to be sparsely used. Caleb Tennis
Prevent re-entering event loop in kded to avoid reentrancy problems like with kwallet in KDE3. Lubos
Customizable KToolTip/KWhatsThis widgets, now KWhatsThis is a part of KDE GSoC "Implement OpenUsability's Context Sensitive Help Redesign" project, by Joshua Keel, mentored by Ellen Reitmayr Jaroslaw Staniek
Additional (automatic) shortcuts for KMessageBox. See http://lists.kde.org/?l=kde-usability&m=109688936328920&w=2 Jaroslaw Staniek
Port krosskjs away from KjsEmbed to Kjs Sebastian Sauer 4.1
Remove KDE-dependencies from the Kross-core to let Qt-only use it. Sebastian Sauer 4.1
Import KExpandableWidget (KCollapsibleGroupBox?? -- 'Expandable' may be confused with To/CC/BCC lineedits in kmail) to kdeui danimo 4.1或Qt 4.4