<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://techbase.kde.org/skins/common/feed.css?0.2"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://techbase.kde.org/api.php?action=feedcontributions&amp;user=Rakuco&amp;feedformat=atom</id>
		<title>KDE TechBase - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://techbase.kde.org/api.php?action=feedcontributions&amp;user=Rakuco&amp;feedformat=atom"/>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Special:Contributions/Rakuco"/>
		<updated>2013-06-18T07:05:34Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.20.2</generator>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.8_Feature_Plan</id>
		<title>Schedules/KDE4/4.8 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.8_Feature_Plan"/>
				<updated>2011-12-26T11:40:36Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* kdeutils */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the SC 4.8 release. &lt;br /&gt;
&lt;br /&gt;
See also: &lt;br /&gt;
&lt;br /&gt;
*[[Schedules/KDE4/4.8 Release Schedule]] &lt;br /&gt;
*[[Schedules/KDE4/4.8 Release Goals]] &lt;br /&gt;
*[[Schedules/KDE4/4.7 Feature Plan]] (previous major release)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Legend: &lt;br /&gt;
&lt;br /&gt;
*todo =&amp;amp;gt; not started yet &lt;br /&gt;
*in-progress =&amp;amp;gt; started, but not completed yet &lt;br /&gt;
*done =&amp;amp;gt; completed&lt;br /&gt;
&lt;br /&gt;
__TOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdelibs =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Kate Part|Line modification system|dhaumann@kde.org|Dominik Haumann}}&lt;br /&gt;
{{FeatureDone|Kate Part|Modeline Editor|dhaumann@kde.org|Dominik Haumann}}&lt;br /&gt;
{{FeatureDone|Kate Part|Reliable code folding|adrian.lungu89@gmail.com|Adrian Lungu}}&lt;br /&gt;
{{FeatureDone|Kate Part|Improved vi input mode|svatoslav1@gmail.com|Svyatoslav Kuzmich}}&lt;br /&gt;
{{FeatureInProgress|KIO|PreviewJob supports URLs|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureInProgress|kdeui|KSecretsService API addition|kde@rusu.info|Valentin Rusu}}&lt;br /&gt;
{{FeatureInProgress|kdeui/util|Connect KWallet class to KSecretsService client API|kde@rusu.info|Valentin Rusu}}&lt;br /&gt;
{{FeatureInProgress|kcookiejar|New domain specific cookie policy based on patch provided in bug#54300|adawit@kde.org|Dawit A.}} &lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-runtime =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|ksecretsserviced|KSecretsService daemon implementing the freedesktop.org secrets API. KDE applications will want to use the related kdelibs API (see below)|kde@rusu.info|Valentin Rusu}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|DrKonqi|Better duplicate detection|mat69@gmx.net|Matthias Fuchs}}&lt;br /&gt;
{{FeatureInProgress|KIO Thumbnails|webthumbnails plugin|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureInProgress|DrKonqi|Scripting support|mat69@gmx.net|Matthias Fuchs}}&lt;br /&gt;
{{FeatureInProgress|Plasma|Plasma QML QtComponents|mart@kde.org|Marco Martin}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-workspace =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|KWin|Activity switcher|wstephenson@kde.org|Will Stephenson}}&lt;br /&gt;
{{FeatureTodo|Plasma|Activity UI improvements|wstephenson@kde.org|Will Stephenson}}&lt;br /&gt;
{{FeatureInProgress|KWin|Take over screensaver/locking management from KRunner|alex.merry@kdemail.net|Alex Merry}}&lt;br /&gt;
{{FeatureDone|KCM|make mouse cursor size configurable (http://git.reviewboard.kde.org/r/101701/)|SommerLuk@gmail.com|Lukas Sommer}}&lt;br /&gt;
{{FeatureDone|powerdevil|Remove Desktop Effects Management|drf@kde.org|Dario Freddi}}&lt;br /&gt;
{{FeatureDone|powerdevil|Allow static profiles only|drf@kde.org|Dario Freddi}}&lt;br /&gt;
{{FeatureDone|powerdevil|Allow activity interaction|drf@kde.org|Dario Freddi}}&lt;br /&gt;
{{FeatureDone|Plasma|Add MPRIS2 support to nowplaying|alex.merry@kdemail.net|Alex Merry}}&lt;br /&gt;
{{FeatureInProgress|Plasma|Allow task grouping on the taskbar to work together with kwin window tabbing|akreuzkamp@web.de|Anton Kreuzkamp}}&lt;br /&gt;
{{FeatureInProgress|Plasma|Merge the QML version of the device notifier|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|Plasma|Merge the QML version of the battery applet|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureDone|KWin|QML based Window switcher (Tabbox)|mgraesslin@kde.org|Martin Gräßlin}}&lt;br /&gt;
{{FeatureInProgress|KWin|Texture Rectangle ARB support in Shaders|mgraesslin@kde.org|Martin Gräßlin}}&lt;br /&gt;
{{FeatureInProgress|KWin|No Compositor restart on screen change|mgraesslin@kde.org|Martin Gräßlin}}&lt;br /&gt;
{{FeatureInProgress|KWin|Initial Wayland support|mgraesslin@kde.org|Martin Gräßlin}}&lt;br /&gt;
{{FeatureTodo|KWin|Support for thumbnails in QML|mgraesslin@kde.org|Martin Gräßlin}}&lt;br /&gt;
{{FeatureDone|KWin|Add AnimationEffect class|thomas.luebking@gmail.com|Thomas Lübking}}&lt;br /&gt;
{{FeatureInProgress|KWin|Option to prefer the mouse position over the focus chain|thomas.luebking@gmail.com|Thomas Lübking}}&lt;br /&gt;
{{FeatureDone|KWin|More cleanup in the window rules kcm|thomas.luebking@gmail.com|Thomas Lübking}}&lt;br /&gt;
{{FeatureInProgress|KWin|Trade 1 frame lag for deterministic framerate|thomas.luebking@gmail.com|Thomas Lübking}}&lt;br /&gt;
{{FeatureInProgress|KWin|Improved resizing of windows with thin or no borders|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|KWin|Move Workspace's compositing functionality to own class Compositor|a.arlt@stud.uni-heidelberg.de|Arthur Arlt}}&lt;br /&gt;
{{FeatureInProgress|KWin|Introduce class DecorationPaintRedirector for decoration handling when Compositing is active|a.arlt@stud.uni-heidelberg.de|Arthur Arlt}}&lt;br /&gt;
{{FeatureInProgress|Screenlocker|New Screenlocker and daemon|mgraesslin@kde.org|Martin Gräßlin}}&lt;br /&gt;
{{FeatureDone|Plasma|Merge IconTask's taskmanager changes|craig@kde.org|Craig Drummond}}&lt;br /&gt;
{{FeatureDone|KCM|Allow flag and label in keyboard layout indicator|arysin@gmail.com|Andriy Rysin}}&lt;br /&gt;
{{FeatureInProgress|KSplash|QML based ksplash|mart@kde.org|Marco Martin/Ivan Čukić}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-baseapps =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Dolphin|Implement new view-engine for Dolphin 2.0 (see http://ppenz.blogspot.com/2011/08/introducing-dolphin-20.html)|peter.penz19@gmail.com|Peter Penz}}&lt;br /&gt;
{{FeatureTodo|Dolphin|Implement support for back/forward mouse buttons|sebasti@n-doerner.de|Sebastian Dörner}}&lt;br /&gt;
{{FeatureDone|Kate|Search &amp;amp; Replace in files plugin|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureInProgress|Kate|Make GDB target selection behave like the build plugin |kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureInProgress|Kate|Add convenience options for remote debugging|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureDone|Settings|Improve proxy configuration dialog|adawit@kde.org|Dawit Alemayehu}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeedu  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|KTouch|New organisation of keyboard and lecture files according to languages|peter.ruethemann@gmail.com|Rüthemann Peter}}&lt;br /&gt;
{{FeatureInProgress|KTouch|New organisation of menu system: Training, Statistic, Settings|peter.ruethemann@gmail.com|Rüthemann Peter}}&lt;br /&gt;
{{FeatureTodo|KTouch|End of lecture statistics|peter.ruethemann@gmail.com|Rüthemann Peter}}&lt;br /&gt;
{{FeatureDone|Rocs|Alignment Actions to minimize crossing graph edges|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Project Files to combine graphs and algorithms|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureDone|Rocs|Context menu for graph scene|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureDone|Rocs|Resurrect import-/export-features|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureDone|Rocs|User Interface Cleanup|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureDone|Cantor|Add Qalculate backend|matteo@agostinelli.me|Matteo Agostinelli}}&lt;br /&gt;
{{FeatureInProgress|Cantor|Add Scilab backend|filip.saraiva@gmail.com|Filipe Saraiva}}&lt;br /&gt;
{{FeatureDone|Marble|Marble Runner plugins for Parsing files|tgridel@freedotfr|Thibaut Gridel}}&lt;br /&gt;
{{FeatureDone|Marble|(GSoC) OSM file rendering|oblaukhov.konstantin@gmail.com|Konstantin Oblaukhov}}&lt;br /&gt;
{{FeatureDone|Marble|Marble Graphics Scene (Performance of Vector Drawing)|oblaukhov.konstantin@gmail.com|Konstantin Oblaukhov}}&lt;br /&gt;
{{FeatureDone|Marble|Gps Info Plugin|tgridel@freedotfr|Thibaut Gridel}}&lt;br /&gt;
{{FeatureDone|Marble|Improve LatLonEdit to allow input as Radian and DM|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureInProgress|Marble|Marble Touch (GSoC, Marble on MeeGo/N9)|earthwings@gentoo.org|Daniel Marth, Dennis Nienhüser}}&lt;br /&gt;
{{FeatureDone|Marble|Routing API|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureInProgress|Marble|Adjustable Map Orientation (Rotation in Screen Plane)|bbeschow@cs.tu-berlin.de|Bernhard Beschow}}&lt;br /&gt;
{{FeatureDone|Marble|Speedometer Plugin|bbeschow@cs.tu-berlin.de|Bernhard Beschow}}&lt;br /&gt;
{{FeatureDone|Marble|Plasma Runner for geo coords and Marble bookmarks|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureDone|Marble|Make bookmark editor support editing the lonlat coordinates|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureInProgress|Marble|Shapefile support|rahn@kde.org|Thibaut Gridel / Torsten Rahn}}&lt;br /&gt;
{{FeatureDone|Marble|Fix GeoDataCoordinates parsing from a QString|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Marble|Create New Marble About Dialog|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Add Float Item Management|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|New Search|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Make API more QML-friendly|bbeschow@cs.tu-berlin.de|Bernhard Beschow}}&lt;br /&gt;
{{FeatureTodo|KTurtle|Add modulo command|nielsslot@gmaildotcom|Niels Slot}}&lt;br /&gt;
{{FeatureDone|KGeography|Merge stuff from the cherry_field branch|aacid@kde.org|Albert Astals Cid}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegames=&lt;br /&gt;
{| cellspa/cing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureDone|Libkdegames|Improve graphics performance in all games by standardizing on the use of Qt Raster Graphics.|stefan.majewsky@googlemail.com|Stefan Majewsky}}&lt;br /&gt;
{{FeatureDone|KSudoku|Add a new generator and solver to KSudoku, based on published algorithms. This will provide a full range of puzzle difficulties, rather than mainly easy puzzles, and will address bug 217925 and its duplicates 228614 and 237262 (now nearly two years old).|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Re-implement the puzzle-symmetry feature.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Re-order the puzzle types on the welcome screen.  Use KDE Games Difficulty combo-box instead of a slider. Save user's choices of puzzle between sessions.  Do minor tidy-ups of the user interface.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Add the championship level &amp;quot;Gold Rush&amp;quot; game, with Traditional rules, contributed by Gabriel Miltschitzky.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Add the championship level &amp;quot;Jail Break&amp;quot; game, with KGoldrunner rules, contributed by Gabriel Miltschitzky.|iandw.au@gmail.com|Ian Wadham}}|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegraphics=&lt;br /&gt;
{| cellspa/cing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureInProgress|Okular|Reset Form Action support|aacid@kde.org|Albert Astals Cid}}&lt;br /&gt;
{{FeatureDone|Okular|Viewer Mode &amp;amp; Interface.|michel.ludwig@kdemail.net|Michel Ludwig}}&lt;br /&gt;
{{FeatureDone|Okular|Table selection tool improvements|aacid@kde.org|Albert Astals Cid}}&lt;br /&gt;
{{FeatureInProgress|Gwenview|Animated image transitions|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|JuK|MPRIS2 support|alex.merry@kdemail.net|Alex Merry}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdenetwork=&lt;br /&gt;
{| cellspa/cing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureInProgress|KGet|Better interaction for torrents if they are seeding and other downloads stopped because of that|mat69@gmx.net|Matthias Fuchs}}&lt;br /&gt;
{{FeatureInProgress|KGet|Class that handles deleting files|mat69@gmx.net|Matthias Fuchs}}&lt;br /&gt;
{{FeatureInProgress|Kopete|Akonadi History Plugin |roideuniverse@gmail.com|Kaushik Saurabh}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdepim  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo&lt;br /&gt;
|attachment:/ kio-slave&lt;br /&gt;
|Implement kio-slave to access (email) attachments in Akonadi&lt;br /&gt;
|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|KAlarm|Port to Akonadi|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo&lt;br /&gt;
|sieve: implement wizard&lt;br /&gt;
|Implement wizard to help user to create sieve script&lt;br /&gt;
|montel@kde.org|Montel Laurent}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone&lt;br /&gt;
|HTML Replies&lt;br /&gt;
|Give messagecomposer (especially for KMail) the ability to compose replies in HTML&lt;br /&gt;
|nyblom@kde.org|Torgny Nyblom}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|KMail import|KMail1 setup import instead of migration|krammer@kde.org|Kevin Krammer}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Agent control workspace integration|Monitoring and control of Akonadi agents through Plasma workspace facilitites|krammer@kde.org|Kevin Krammer}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeplasma-addons =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Kimpanel|Port kimpanel to DataEngine based one|wengxt@gmail.com|Xuetian Weng}}&lt;br /&gt;
{{FeatureDone|IconTasks|Import IconTasks|craig@kde.org|Craig Drummond}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdesdk  =&lt;br /&gt;
&lt;br /&gt;
{| cellspa/cing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|Okteta|Add a general KPart adapter to Kasten, than finish port of Okteta KPart to Okteta Kasten|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add global toggle option for the offset display, hex or decimal|kossebau@kde.org|Friedrich W. H. Kossebau}} &lt;br /&gt;
{{FeatureTodo|Okteta|Add Kate-like combined dialogs to query for actions on files|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add Kate-like search tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add Okular like embedded notifications|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for import by drop, both url and data|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for memory mapping of files and 64-bit addressing|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for jobs like io, printing, string search or filter|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add view profiles, incl. editor/manager|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|copy again puts also a value or char variant of the data to clipboard|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Improve the titels of the changes to the bytearray to be more descriptive, best using ids to avoid text string|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Make all user interaction in the KastenCore managers plugin-based|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Merge row and column widgets into one|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks and other view settings for next load|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add custom datatypes to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureDone|Okteta|Add Flags Datatype to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureInProgress|dolphin-plugins|Mercurial plugin for Dolphin|vishesh3y@gmail.com|Vishesh Yadav}}&lt;br /&gt;
{{FeatureDone|KCachegrind|Upgrade interface to Callgrind (use callgrind_control instead of writing a command file, for &amp;gt; VG 3.7.x)|Josef.Weidendorfer@gmx.de|Josef Weidendorfer}} &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeutils=&lt;br /&gt;
{| cellspa/cing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureDone|ark|Allow Ark to be used as a KPart again|rakuco@FreeBSD.org|Raphael Kubo da Costa}}&lt;br /&gt;
{{FeatureInProgress|ksecrets|A suite of tools related to the KSecretsService infrastructure|kde@rusu.info|Valentin Rusu}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/Debugging/Shared_Memory_Usage_in_KDE</id>
		<title>Development/Tutorials/Debugging/Shared Memory Usage in KDE</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/Debugging/Shared_Memory_Usage_in_KDE"/>
				<updated>2011-11-05T02:01:21Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* Example program */ Add some syntax highlighting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article helps understanding UNIX memory management. In UNIX a process uses basically three kinds of memory segments: '''shared memory segments''', '''code segments''' and '''data segments'''.&lt;br /&gt;
&lt;br /&gt;
= Terms =&lt;br /&gt;
'''Shared memory''' is used by shared libraries. This memory is shared&lt;br /&gt;
by all processes which use a certain library. Unfortunately there is no&lt;br /&gt;
easy way to determine how much shared memory is used by how many processes.&lt;br /&gt;
So a process can use 10Mb of shared memory, but you don't know whether this&lt;br /&gt;
memory is shared with 1, 2 or 10 processes. So if you have 10 processes who&lt;br /&gt;
each use 10Mb of shared memory this actually requires 10Mb in the best case&lt;br /&gt;
and 100Mb in the worst case. &lt;br /&gt;
&lt;br /&gt;
'''Code segments''' contain the actual executable code of your program.&lt;br /&gt;
This memory is shared by all processes of this same program. If you start&lt;br /&gt;
your program 5 times, it needs to load the code segment of your program&lt;br /&gt;
only once. &lt;br /&gt;
&lt;br /&gt;
'''Data segments''' contain the data of your program. This kind of memory&lt;br /&gt;
is very important because the data segments of a process are not shared&lt;br /&gt;
with other processes. Starting the same program 5 times makes that the data&lt;br /&gt;
segments are 5 times in memory.&lt;br /&gt;
&lt;br /&gt;
The size reported by [http://man-wiki.net/index.php/Ps ps auxf] is typically just the numbers for shared, code and&lt;br /&gt;
data added. This is not a very accurate representation of the memory usage&lt;br /&gt;
of an application.&lt;br /&gt;
&lt;br /&gt;
KDE applications tend to be reported as quite large because the numbers&lt;br /&gt;
reported include the size of the shared memory segments. This size is&lt;br /&gt;
added to the size of each KDE application while in practice the shared&lt;br /&gt;
memory segments appear in memory only once. This is rather illusive,&lt;br /&gt;
imagine how the output of ps would look like if it included the size of&lt;br /&gt;
the UNIX kernel for each process!&lt;br /&gt;
&lt;br /&gt;
Instead of looking at the output of ps you get a better idea of the actual&lt;br /&gt;
memory usage of an application by looking at the output of&lt;br /&gt;
 cat /proc/&amp;lt;pid-of-process&amp;gt;/status.&lt;br /&gt;
&lt;br /&gt;
= Example program =&lt;br /&gt;
To demonstrate this, let's write a memory leaking program:&lt;br /&gt;
&lt;br /&gt;
'''main.cpp'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;KAboutData&amp;gt;&lt;br /&gt;
#include &amp;lt;KApplication&amp;gt;&lt;br /&gt;
#include &amp;lt;KCmdLineArgs&amp;gt;&lt;br /&gt;
#include &amp;lt;KMessageBox&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main (int argc, char *argv[])&lt;br /&gt;
{&lt;br /&gt;
    KAboutData aboutData( &amp;quot;tutorial1&amp;quot;, 0, ki18n(&amp;quot;Tutorial 1&amp;quot;), &amp;quot;1.0&amp;quot;,&lt;br /&gt;
                          ki18n(&amp;quot;Displays a KMessageBox popup&amp;quot;) );&lt;br /&gt;
 &lt;br /&gt;
    KCmdLineArgs::init( argc, argv, &amp;amp;aboutData );&lt;br /&gt;
    KApplication app;&lt;br /&gt;
&lt;br /&gt;
    for ( int i=0; i&amp;lt;100000; i++ ) new QString();&lt;br /&gt;
&lt;br /&gt;
    KMessageBox::questionYesNo( 0, i18n( &amp;quot;Hello World&amp;quot; ) );&lt;br /&gt;
    int* i;&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
'''CMakeLists.txt'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
project (tutorial1)&lt;br /&gt;
find_package(KDE4 REQUIRED)&lt;br /&gt;
include (KDE4Defaults)&lt;br /&gt;
include_directories(${KDE4_INCLUDES})&lt;br /&gt;
set(tutorial1_SRCS main.cpp)&lt;br /&gt;
kde4_add_executable(tutorial1 ${tutorial1_SRCS})&lt;br /&gt;
target_link_libraries(tutorial1 ${KDE4_KDEUI_LIBS})&lt;br /&gt;
install(TARGETS tutorial1  ${INSTALL_TARGETS_DEFAULT_ARGS})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile and link this program:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cmake . &amp;amp;&amp;amp; make -j4&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Run it:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./tutorial1 &amp;amp;&lt;br /&gt;
[3] 22733&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case the program gets the process ID 22733. We look at its memory consumption:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /proc/22733/status&lt;br /&gt;
VmRSS:     19772 kB&lt;br /&gt;
VmData:     5776 kB&lt;br /&gt;
VmStk:        84 kB&lt;br /&gt;
VmExe:         8 kB&lt;br /&gt;
VmLib:     26804 kB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If we change the &amp;quot;100000&amp;quot; in the program code to &amp;quot;1&amp;quot;, we get a different picture:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
VmRSS:     16624 kB&lt;br /&gt;
VmData:     2652 kB&lt;br /&gt;
VmStk:        84 kB&lt;br /&gt;
VmExe:         8 kB&lt;br /&gt;
VmLib:     26804 kB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
So we see the heap is counted to &amp;lt;tt&amp;gt;VmData&amp;lt;/tt&amp;gt; and contained in &amp;lt;tt&amp;gt;VmRSS&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Why is it so big ==&lt;br /&gt;
Probably VmLib is so big because it contains all library code in memory needed for KDE. Let's see what the loader thinks are our program's dependencies:&lt;br /&gt;
 # ldd tutorial1&lt;br /&gt;
        linux-vdso.so.1 =&amp;gt;  (0x00007fff739f3000)&lt;br /&gt;
        libkdeui.so.5 =&amp;gt; /usr/local/lib64/libkdeui.so.5 (0x00007fdb6448c000)&lt;br /&gt;
        libkdecore.so.5 =&amp;gt; /usr/local/lib64/libkdecore.so.5 (0x00007fdb63f31000)&lt;br /&gt;
        libQtDBus.so.4 =&amp;gt; /usr/local/lib64/libQtDBus.so.4 (0x00007fdb63cb5000)&lt;br /&gt;
        libQtCore.so.4 =&amp;gt; /usr/local/lib64/libQtCore.so.4 (0x00007fdb6380b000)&lt;br /&gt;
 [...]&lt;br /&gt;
We gonna remove the KDE and Qt stuff, so let's write a new main.cpp:&lt;br /&gt;
 int main (int argc, char *argv[])&lt;br /&gt;
 {&lt;br /&gt;
    for ( int i=0; i&amp;lt;100000; i++ ) new int;&lt;br /&gt;
    while (true);&lt;br /&gt;
    return 0;&lt;br /&gt;
 }&lt;br /&gt;
And compile and link it with the C++ libraries:&lt;br /&gt;
 # g++ -o tutorial1 main.cpp&lt;br /&gt;
Why do we need the C++ libraries (g++ is basically gcc -lstdc++)? Because we have a call to the new keyword in the program. What are the dependencies now?&lt;br /&gt;
 # ldd tutorial1&lt;br /&gt;
        linux-vdso.so.1 =&amp;gt;  (0x00007fffd3bff000)&lt;br /&gt;
        libstdc++.so.6 =&amp;gt; /usr/lib64/libstdc++.so.6 (0x00007fe2437a5000)&lt;br /&gt;
        libm.so.6 =&amp;gt; /lib64/libm.so.6 (0x00007fe24354e000)&lt;br /&gt;
        libgcc_s.so.1 =&amp;gt; /lib64/libgcc_s.so.1 (0x00007fe243338000)&lt;br /&gt;
        libc.so.6 =&amp;gt; /lib64/libc.so.6 (0x00007fe242fcb000)&lt;br /&gt;
        /lib64/ld-linux-x86-64.so.2 (0x00007fe243aae000)&lt;br /&gt;
that's all.&lt;br /&gt;
&lt;br /&gt;
Note that this program runs until you terminate it with CTRL_C as we are not using KDE's messagebox any more.&lt;br /&gt;
 # cat /proc/21028/status | grep VmLib&lt;br /&gt;
 VmLib:      2912 kB&lt;br /&gt;
You see - not using libraries save place in memory, but as libraries are shared, it does not make sense to deny using libraries that are in memory anyway.&lt;br /&gt;
&lt;br /&gt;
== disassemble it ==&lt;br /&gt;
Now let's disassemble the small program using the command&lt;br /&gt;
 # objdump -d tutorial1&lt;br /&gt;
 [...]&lt;br /&gt;
 00000000004005b4 &amp;lt;main&amp;gt;:&lt;br /&gt;
  4005b4:       55                      push   %rbp&lt;br /&gt;
  4005b5:       48 89 e5                mov    %rsp,%rbp&lt;br /&gt;
  4005b8:       48 83 ec 20             sub    $0x20,%rsp&lt;br /&gt;
  4005bc:       89 7d ec                mov    %edi,-0x14(%rbp)&lt;br /&gt;
  4005bf:       48 89 75 e0             mov    %rsi,-0x20(%rbp)&lt;br /&gt;
  4005c3:       c7 45 fc 00 00 00 00    movl   $0x0,-0x4(%rbp)&lt;br /&gt;
  4005ca:       eb 0e                   jmp    4005da &amp;lt;main+0x26&amp;gt;&lt;br /&gt;
  4005cc:       bf 04 00 00 00          mov    $0x4,%edi&lt;br /&gt;
  4005d1:       e8 ea fe ff ff          callq  4004c0 &amp;lt;_Znwm@plt&amp;gt;&lt;br /&gt;
  4005d6:       83 45 fc 01             addl   $0x1,-0x4(%rbp)&lt;br /&gt;
  4005da:       81 7d fc 9f 86 01 00    cmpl   $0x1869f,-0x4(%rbp)&lt;br /&gt;
  4005e1:       0f 9e c0                setle  %al&lt;br /&gt;
  4005e4:       84 c0                   test   %al,%al&lt;br /&gt;
  4005e6:       75 e4                   jne    4005cc &amp;lt;main+0x18&amp;gt;&lt;br /&gt;
  4005e8:       eb fe                   jmp    4005e8 &amp;lt;main+0x34&amp;gt;&lt;br /&gt;
  4005ea:       90                      nop&lt;br /&gt;
  4005eb:       90                      nop&lt;br /&gt;
  4005ec:       90                      nop&lt;br /&gt;
  4005ed:       90                      nop&lt;br /&gt;
  4005ee:       90                      nop&lt;br /&gt;
  4005ef:       90                      nop&lt;br /&gt;
 [...]&lt;br /&gt;
You see this is the main function in real [http://www.staerk.de/thorsten/Tutorials/Assembler_Tutorial assembler code].&lt;br /&gt;
&lt;br /&gt;
== find out its symbols ==&lt;br /&gt;
Let's find out what symbols it contains:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# nm tutorial1&lt;br /&gt;
0000000000600e10 d _DYNAMIC&lt;br /&gt;
0000000000600fe8 d _GLOBAL_OFFSET_TABLE_&lt;br /&gt;
00000000004006e0 R _IO_stdin_used&lt;br /&gt;
                 w _Jv_RegisterClasses&lt;br /&gt;
                 U _Znwm@@GLIBCXX_3.4&lt;br /&gt;
0000000000600df0 d __CTOR_END__&lt;br /&gt;
0000000000600de8 d __CTOR_LIST__&lt;br /&gt;
0000000000600e00 D __DTOR_END__&lt;br /&gt;
0000000000600df8 d __DTOR_LIST__&lt;br /&gt;
00000000004007a8 r __FRAME_END__&lt;br /&gt;
0000000000600e08 d __JCR_END__&lt;br /&gt;
0000000000600e08 d __JCR_LIST__&lt;br /&gt;
0000000000601020 A __bss_start&lt;br /&gt;
0000000000601010 D __data_start&lt;br /&gt;
0000000000400690 t __do_global_ctors_aux&lt;br /&gt;
0000000000400520 t __do_global_dtors_aux&lt;br /&gt;
0000000000601018 D __dso_handle&lt;br /&gt;
                 w __gmon_start__&lt;br /&gt;
0000000000600de4 d __init_array_end&lt;br /&gt;
0000000000600de4 d __init_array_start&lt;br /&gt;
0000000000400680 T __libc_csu_fini&lt;br /&gt;
00000000004005f0 T __libc_csu_init&lt;br /&gt;
                 U __libc_start_main@@GLIBC_2.2.5&lt;br /&gt;
0000000000601020 A _edata&lt;br /&gt;
0000000000601030 A _end&lt;br /&gt;
00000000004006c8 T _fini&lt;br /&gt;
0000000000400488 T _init&lt;br /&gt;
00000000004006d8 t _real_fini&lt;br /&gt;
00000000004004d0 T _start&lt;br /&gt;
00000000004004fc t call_gmon_start&lt;br /&gt;
0000000000601020 b completed.5939&lt;br /&gt;
0000000000601010 W data_start&lt;br /&gt;
0000000000601028 b dtor_idx.5941&lt;br /&gt;
0000000000400590 t frame_dummy&lt;br /&gt;
00000000004005b4 T main&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now according to [http://man-wiki.net/index.php/Nm nm's man page] T stands for text which stands for code segment, and D stands for the data segment.&lt;br /&gt;
&lt;br /&gt;
= See also =&lt;br /&gt;
* http://www-archive.mozilla.org/projects/footprint/footprint-guide.html&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/Using_KActions</id>
		<title>Development/Tutorials/Using KActions</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/Using_KActions"/>
				<updated>2011-11-05T01:49:28Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* XMLGUI */ Remove link to developer.kde.org&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Development/Tutorials/Using_KActions}}&lt;br /&gt;
&lt;br /&gt;
{{TutorialBrowser|&lt;br /&gt;
&lt;br /&gt;
series=Beginner Tutorial|&lt;br /&gt;
&lt;br /&gt;
name=How To Use KActions and XMLGUI|&lt;br /&gt;
&lt;br /&gt;
pre=[[Development/Tutorials/Using_KXmlGuiWindow|Tutorial 2 - KXmlGuiWindow]], Basic XML knowledge|&lt;br /&gt;
&lt;br /&gt;
next=[[Development/Tutorials/Saving_and_loading|Tutorial 4 - Saving and loading]]| &lt;br /&gt;
&lt;br /&gt;
reading=None&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
This tutorial introduces the concept of actions. Actions are a unified way of supplying the user with ways to interact with your program.&lt;br /&gt;
&lt;br /&gt;
For example, if we wanted to let the user of [[Development/Tutorials/Using_KXmlGuiWindow|Tutorial 2 ]] clear the text box by clicking a button in the toolbar, from an option in the File menu or through a keyboard shortcut, it could all be done with one {{class|KAction}}.&lt;br /&gt;
&lt;br /&gt;
[[image:introtokdetutorial3.png|frame|center]]&lt;br /&gt;
&lt;br /&gt;
==KAction==&lt;br /&gt;
A {{class|KAction}} is an object which contains all the information about the icon and shortcuts that is associated with a certain action. The action is then connected to a [http://doc.trolltech.com/latest/signalsandslots.html slot] which carries out the work of your action.&lt;br /&gt;
&lt;br /&gt;
== The Code ==&lt;br /&gt;
&lt;br /&gt;
===main.cpp===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;KApplication&amp;gt;&lt;br /&gt;
#include &amp;lt;KAboutData&amp;gt;&lt;br /&gt;
#include &amp;lt;KCmdLineArgs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;mainwindow.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
int main (int argc, char *argv[])&lt;br /&gt;
{&lt;br /&gt;
  KAboutData aboutData( &amp;quot;tutorial3&amp;quot;, &amp;quot;tutorial3&amp;quot;,&lt;br /&gt;
      ki18n(&amp;quot;Tutorial 3&amp;quot;), &amp;quot;1.0&amp;quot;,&lt;br /&gt;
      ki18n(&amp;quot;A simple text area using KAction etc.&amp;quot;),&lt;br /&gt;
      KAboutData::License_GPL,&lt;br /&gt;
      ki18n(&amp;quot;Copyright (c) 2007 Developer&amp;quot;) );&lt;br /&gt;
  KCmdLineArgs::init( argc, argv, &amp;amp;aboutData );&lt;br /&gt;
  KApplication app;&lt;br /&gt;
 &lt;br /&gt;
  MainWindow* window = new MainWindow();&lt;br /&gt;
  window-&amp;gt;show();&lt;br /&gt;
  return app.exec();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
This time, very little has changed in &amp;lt;tt&amp;gt;main.cpp&amp;lt;/tt&amp;gt;, only the KAboutData constructor has been updated to show that we are now on tutorial 3.&lt;br /&gt;
&lt;br /&gt;
===mainwindow.h===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
#ifndef MAINWINDOW_H&lt;br /&gt;
#define MAINWINDOW_H&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;KXmlGuiWindow&amp;gt;&lt;br /&gt;
#include &amp;lt;KTextEdit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
class MainWindow : public KXmlGuiWindow&lt;br /&gt;
{&lt;br /&gt;
  public:&lt;br /&gt;
    MainWindow(QWidget *parent=0);&lt;br /&gt;
	&lt;br /&gt;
  private:&lt;br /&gt;
    KTextEdit* textArea;&lt;br /&gt;
    void setupActions();&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#endif&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Only a function &amp;lt;tt&amp;gt;void setupActions()&amp;lt;/tt&amp;gt; has been added which will do all the work setting up the KActions.&lt;br /&gt;
&lt;br /&gt;
===mainwindow.cpp===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;mainwindow.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;KApplication&amp;gt;&lt;br /&gt;
#include &amp;lt;KAction&amp;gt;&lt;br /&gt;
#include &amp;lt;KLocale&amp;gt;&lt;br /&gt;
#include &amp;lt;KActionCollection&amp;gt;&lt;br /&gt;
#include &amp;lt;KStandardAction&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MainWindow::MainWindow(QWidget *parent)&lt;br /&gt;
    : KXmlGuiWindow(parent)&lt;br /&gt;
{&lt;br /&gt;
  textArea = new KTextEdit;&lt;br /&gt;
  setCentralWidget(textArea);&lt;br /&gt;
&lt;br /&gt;
  setupActions();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void MainWindow::setupActions()&lt;br /&gt;
{&lt;br /&gt;
  KAction* clearAction = new KAction(this);&lt;br /&gt;
  clearAction-&amp;gt;setText(i18n(&amp;quot;&amp;amp;Clear&amp;quot;));&lt;br /&gt;
  clearAction-&amp;gt;setIcon(KIcon(&amp;quot;document-new&amp;quot;));&lt;br /&gt;
  clearAction-&amp;gt;setShortcut(Qt::CTRL + Qt::Key_W);&lt;br /&gt;
  actionCollection()-&amp;gt;addAction(&amp;quot;clear&amp;quot;, clearAction);&lt;br /&gt;
  connect(clearAction, SIGNAL(triggered(bool)),&lt;br /&gt;
          textArea, SLOT(clear()));&lt;br /&gt;
&lt;br /&gt;
  KStandardAction::quit(kapp, SLOT(quit()),&lt;br /&gt;
                        actionCollection());&lt;br /&gt;
&lt;br /&gt;
  setupGUI(Default, &amp;quot;tutorial3ui.rc&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explanation==&lt;br /&gt;
This builds upon the KXmlGuiWindow code from [[Development/Tutorials/Using_KXmlGuiWindow|Tutorial 2]]. Most of the changes are to &amp;lt;tt&amp;gt;mainwindow.cpp&amp;lt;/tt&amp;gt;, an important structural change being that the constructor for MainWindow now calls &amp;lt;tt&amp;gt;setupActions()&amp;lt;/tt&amp;gt; instead of &amp;lt;tt&amp;gt;setupGUI()&amp;lt;/tt&amp;gt;. &amp;lt;tt&amp;gt;setupActions()&amp;lt;/tt&amp;gt; is where the new KAction code goes before finally calling &amp;lt;tt&amp;gt;setupGUI()&amp;lt;/tt&amp;gt; itself.&lt;br /&gt;
&lt;br /&gt;
===Creating the KAction object===&lt;br /&gt;
The KAction is built up in a number of steps. The first is including the &amp;lt;tt&amp;gt;KAction&amp;lt;/tt&amp;gt; library and then creating the KAction:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;KAction&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
KAction* clearAction = new KAction(this);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
This creates a new KAction called &amp;lt;tt&amp;gt;clearAction&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Setting KAction Properties===&lt;br /&gt;
====Text====&lt;br /&gt;
Now that we have our KAction object, we can start setting its properties. The following code sets the text that will be displayed in the menu and under the &amp;lt;tt&amp;gt;KAction&amp;lt;/tt&amp;gt;'s icon in the toolbar.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
clearAction-&amp;gt;setText(i18n(&amp;quot;&amp;amp;Clear&amp;quot;));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Note that the text is passed through the &amp;lt;tt&amp;gt;i18n()&amp;lt;/tt&amp;gt; function; this is necessary for the UI to be translatable (more information on this can be found in the [[Development/Tutorials/Localization/i18n|i18n tutorial]]).&lt;br /&gt;
&lt;br /&gt;
The text of the action should contain a &amp;lt;tt&amp;gt;&amp;amp;&amp;lt;/tt&amp;gt; because that makes it easier to translate in non-latin1 languages. In Japanese, the translation might be &amp;lt;tt&amp;gt;ソース(&amp;amp;S)&amp;lt;/tt&amp;gt; and without the &amp;lt;tt&amp;gt;&amp;amp;&amp;lt;/tt&amp;gt; in the english text the translators cannot know if they have to add a &amp;lt;tt&amp;gt;&amp;amp;&amp;lt;/tt&amp;gt; or not.&lt;br /&gt;
&lt;br /&gt;
====Icon====&lt;br /&gt;
If the action is going to be displayed in a toolbar, it is nice to have an icon depicting the action. The following code sets the icon to the standard KDE &amp;lt;tt&amp;gt;document-new&amp;lt;/tt&amp;gt; icon through the use of the &amp;lt;tt&amp;gt;setIcon()&amp;lt;/tt&amp;gt; function:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
clearAction-&amp;gt;setIcon(KIcon(&amp;quot;document-new&amp;quot;));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Keyboard Shortcut====&lt;br /&gt;
Setting a keyboard shortcut to perform our action is equally simple:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
clearAction-&amp;gt;setShortcut(Qt::CTRL + Qt::Key_W);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
This associates Ctrl+W with the KAction.&lt;br /&gt;
&lt;br /&gt;
===Adding to the Collection===&lt;br /&gt;
In order for the action to be accessed by the XMLGUI framework (explained in depth later) it must be added to the application's ''action collection''. The action collection is accessed via the &amp;lt;tt&amp;gt;actionCollection()&amp;lt;/tt&amp;gt; function like this: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
actionCollection()-&amp;gt;addAction(&amp;quot;clear&amp;quot;, clearAction);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Here, the &amp;lt;tt&amp;gt;clearAction&amp;lt;/tt&amp;gt; KAction is added to the collection and given a name of ''clear''. This name (''clear'') is used by the XMLGUI framework to refer to the action, ergo, it should not be localized, since it is used internally only.&lt;br /&gt;
&lt;br /&gt;
====Connecting the action====&lt;br /&gt;
Now that the action is fully set up, it needs to be connected to something useful. In this case (because we want to clear the text area), we connect our action to the &amp;lt;tt&amp;gt;clear()&amp;lt;/tt&amp;gt; action belonging to a KTextEdit (which, unsurprisingly, clears the KTextEdit)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
connect( clearAction, SIGNAL( triggered(bool) ), &lt;br /&gt;
         textArea, SLOT( clear() ) );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
This is the same as it would be done in Qt with a {{qt|QAction}}.&lt;br /&gt;
&lt;br /&gt;
===KStandardAction===&lt;br /&gt;
&lt;br /&gt;
For actions which would likely appear in almost every KDE application such as 'quit', 'save', and 'load' there are pre-created convenience KActions, accessed through [http://api.kde.org/4.0-api/kdelibs-apidocs/kdeui/html/namespaceKStandardAction.html KStandardAction].&lt;br /&gt;
&lt;br /&gt;
They are very simple to use. Once the library has been included (&amp;lt;tt&amp;gt;#include &amp;lt;KStandardAction&amp;gt;&amp;lt;/tt&amp;gt;), simply supply it with what you want the function to do and which KActionCollection to add it to. For example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
KStandardAction::quit(kapp, SLOT(quit()), actionCollection());&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
This creates a KAction with the correct icon, text and shortcut and even adds it to the File menu.&lt;br /&gt;
&lt;br /&gt;
==Adding the action to menus and toolbars==&lt;br /&gt;
At the moment, the new &amp;quot;Clear&amp;quot; action has been created but it hasn't been associated with any menus or toolbars. This is done with a KDE technology called XMLGUI, which does nice things like movable toolbars for you.&lt;br /&gt;
&lt;br /&gt;
==Defining your own help menu==&lt;br /&gt;
The help menu is god-given, that is why all KDE help menus look the same. If you want to create your own help menu, search for the explanation around showAboutApplication() in kdelibs.&lt;br /&gt;
&lt;br /&gt;
==XMLGUI==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;setupGUI()&amp;lt;/tt&amp;gt; function in {{class|KXmlGuiWindow}} depends on the XMLGUI system to construct the GUI, which XMLGUI does by parsing an XML file description of the interface.&lt;br /&gt;
&lt;br /&gt;
The rule for naming this XML file is &amp;lt;tt&amp;gt;appnameui.rc&amp;lt;/tt&amp;gt;, where &amp;lt;tt&amp;gt;appname&amp;lt;/tt&amp;gt; is the name you set in {{class|KAboutData}} (in this case, ''tutorial3''). So in our example, the file is called &amp;lt;tt&amp;gt;tutorial3ui.rc&amp;lt;/tt&amp;gt;, and is located in the build directory. Where the file will ultimately be placed is handled by CMake.&lt;br /&gt;
&lt;br /&gt;
==''appname''ui.rc File==&lt;br /&gt;
&lt;br /&gt;
Since the description of the UI is defined with XML, the layout must follow strict rules. This tutorial will not go into great depth on this topic, but for more information, see the [[Development/Architecture/KDE4/XMLGUI_Technology|detailed XMLGUI page]] (here is an older tutorial: [http://developer.kde.org/documentation/tutorials/xmlui/preface.html]).&lt;br /&gt;
&lt;br /&gt;
===tutorial3ui.rc===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;gui name=&amp;quot;tutorial3&amp;quot;&lt;br /&gt;
     version=&amp;quot;1&amp;quot;&lt;br /&gt;
     xmlns=&amp;quot;http://www.kde.org/standards/kxmlgui/1.0&amp;quot;&lt;br /&gt;
     xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&lt;br /&gt;
     xsi:schemaLocation=&amp;quot;http://www.kde.org/standards/kxmlgui/1.0&lt;br /&gt;
                         http://www.kde.org/standards/kxmlgui/1.0/kxmlgui.xsd&amp;quot; &amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;MenuBar&amp;gt;&lt;br /&gt;
    &amp;lt;Menu name=&amp;quot;file&amp;quot; &amp;gt;&lt;br /&gt;
      &amp;lt;Action name=&amp;quot;clear&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Menu&amp;gt;&lt;br /&gt;
  &amp;lt;/MenuBar&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;ToolBar name=&amp;quot;mainToolBar&amp;quot; &amp;gt;&lt;br /&gt;
    &amp;lt;text&amp;gt;Main Toolbar&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;Action name=&amp;quot;clear&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/ToolBar&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/gui&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;&amp;lt;Toolbar&amp;gt;&amp;lt;/tt&amp;gt; tag allows you to describe the toolbar, which is the bar across the top of the window normally with icons. Here it is given the unique name ''mainToolBar'' and its user visible name set to ''Main Toolbar'' using the &amp;lt;tt&amp;gt;&amp;lt;text&amp;gt;&amp;lt;/tt&amp;gt; tag. The clear action is added to the toolbar using the &amp;lt;tt&amp;gt;&amp;lt;Action&amp;gt;&amp;lt;/tt&amp;gt; tag, the name parameter in this tag being the string that was passed to the KActionCollection with &amp;lt;tt&amp;gt;addAction()&amp;lt;/tt&amp;gt; in &amp;lt;tt&amp;gt;mainwindow.cpp&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Besides having the action in the toolbar, it can also be added to the menubar. Here the action is being added to the ''File'' menu of the &amp;lt;tt&amp;gt;MenuBar&amp;lt;/tt&amp;gt; the same way it was added to the toolbar.&lt;br /&gt;
&lt;br /&gt;
Change the 'version' attribute of the &amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;gui&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt; tag if you changed .rc file since the last install to force a system cache update. Be sure it is an integer, if you use a decimal value, it will not work, but will not notify that it didn't. '&lt;br /&gt;
&lt;br /&gt;
{{Warning|The version attribute must be an integer number, if you type in version&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;quot;1.2&amp;quot; it will dispose of your kittens  (but not eat them).}}&lt;br /&gt;
&lt;br /&gt;
Some notes on the interaction between code and the .rc file: Menus appear automatically and should have a &amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;text/&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt; child tag unless they refer to standard menus. Actions need to be created manually and inserted into the actionCollection() using the name in the .rc file. Actions can be hidden or disabled, whereas menus can't.&lt;br /&gt;
&lt;br /&gt;
==CMake==&lt;br /&gt;
Finally, the &amp;lt;tt&amp;gt;tutorial3ui.rc&amp;lt;/tt&amp;gt; needs to go somewhere where KDE can find it (can't just leave it in the source directory!). '''This means the project needs to be installed somewhere.'''&lt;br /&gt;
===CMakeLists.txt===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
project(tutorial3)&lt;br /&gt;
&lt;br /&gt;
find_package(KDE4 REQUIRED)&lt;br /&gt;
include_directories(${KDE4_INCLUDES})&lt;br /&gt;
&lt;br /&gt;
set(tutorial3_SRCS &lt;br /&gt;
  main.cpp&lt;br /&gt;
  mainwindow.cpp&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
kde4_add_executable(tutorial3 ${tutorial3_SRCS})&lt;br /&gt;
&lt;br /&gt;
target_link_libraries(tutorial3 ${KDE4_KDEUI_LIBS})&lt;br /&gt;
&lt;br /&gt;
install(TARGETS tutorial3 DESTINATION ${BIN_INSTALL_DIR})&lt;br /&gt;
install(FILES tutorial3ui.rc &lt;br /&gt;
        DESTINATION  ${DATA_INSTALL_DIR}/tutorial3)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This file is almost identical to the one for tutorial2, but with two extra lines at the end that describe where the files are to be installed. Firstly, the &amp;lt;tt&amp;gt;tutorial3&amp;lt;/tt&amp;gt; target is installed to the &amp;lt;tt&amp;gt;BIN_INSTALL_DIR&amp;lt;/tt&amp;gt; then the &amp;lt;tt&amp;gt;tutorial3ui.rc&amp;lt;/tt&amp;gt; file that describes the layout of the user interface is installed to the application's data directory.&lt;br /&gt;
&lt;br /&gt;
===Make, Install And Run===&lt;br /&gt;
If you don't have write access to where your KDE4 installation directory, you can install it to a folder in your home directory.&lt;br /&gt;
&lt;br /&gt;
To tell CMake where to install the program, set the &amp;lt;tt&amp;gt;DCMAKE_INSTALL_PREFIX&amp;lt;/tt&amp;gt; switch. You probably just want to install it somewhere local for testing (it's probably a bit silly to go to the effort of installing these tutorials to your KDE directory), so the following might be appropriate:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir build &amp;amp;&amp;amp; cd build&lt;br /&gt;
cmake .. -DCMAKE_INSTALL_PREFIX=$HOME&lt;br /&gt;
make install&lt;br /&gt;
$HOME/bin/tutorial3&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
which will create a KDE-like directory structure in your user's home directory and will install the executable to {{path|$HOME/bin/tutorial3}}.&lt;br /&gt;
&lt;br /&gt;
==Moving On==&lt;br /&gt;
Now you can move on to [[Development/Tutorials/Saving_and_loading|saving and loading]].&lt;br /&gt;
&lt;br /&gt;
Or you can learn [[Development/Tutorial/Icons|how to add icons to your application]].&lt;br /&gt;
&lt;br /&gt;
Or you can learn [[Development/Tutorials/Desktop_File|how to place your application in the K-Menu using .desktop files]].&lt;br /&gt;
&lt;br /&gt;
[[Category:C++]]&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/Using_KActions</id>
		<title>Development/Tutorials/Using KActions</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/Using_KActions"/>
				<updated>2011-11-05T01:48:15Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* Adding the action to menus and toolbars */ XMLGUI was never removed, remove note instead.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Development/Tutorials/Using_KActions}}&lt;br /&gt;
&lt;br /&gt;
{{TutorialBrowser|&lt;br /&gt;
&lt;br /&gt;
series=Beginner Tutorial|&lt;br /&gt;
&lt;br /&gt;
name=How To Use KActions and XMLGUI|&lt;br /&gt;
&lt;br /&gt;
pre=[[Development/Tutorials/Using_KXmlGuiWindow|Tutorial 2 - KXmlGuiWindow]], Basic XML knowledge|&lt;br /&gt;
&lt;br /&gt;
next=[[Development/Tutorials/Saving_and_loading|Tutorial 4 - Saving and loading]]| &lt;br /&gt;
&lt;br /&gt;
reading=None&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
This tutorial introduces the concept of actions. Actions are a unified way of supplying the user with ways to interact with your program.&lt;br /&gt;
&lt;br /&gt;
For example, if we wanted to let the user of [[Development/Tutorials/Using_KXmlGuiWindow|Tutorial 2 ]] clear the text box by clicking a button in the toolbar, from an option in the File menu or through a keyboard shortcut, it could all be done with one {{class|KAction}}.&lt;br /&gt;
&lt;br /&gt;
[[image:introtokdetutorial3.png|frame|center]]&lt;br /&gt;
&lt;br /&gt;
==KAction==&lt;br /&gt;
A {{class|KAction}} is an object which contains all the information about the icon and shortcuts that is associated with a certain action. The action is then connected to a [http://doc.trolltech.com/latest/signalsandslots.html slot] which carries out the work of your action.&lt;br /&gt;
&lt;br /&gt;
== The Code ==&lt;br /&gt;
&lt;br /&gt;
===main.cpp===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;KApplication&amp;gt;&lt;br /&gt;
#include &amp;lt;KAboutData&amp;gt;&lt;br /&gt;
#include &amp;lt;KCmdLineArgs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;mainwindow.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
int main (int argc, char *argv[])&lt;br /&gt;
{&lt;br /&gt;
  KAboutData aboutData( &amp;quot;tutorial3&amp;quot;, &amp;quot;tutorial3&amp;quot;,&lt;br /&gt;
      ki18n(&amp;quot;Tutorial 3&amp;quot;), &amp;quot;1.0&amp;quot;,&lt;br /&gt;
      ki18n(&amp;quot;A simple text area using KAction etc.&amp;quot;),&lt;br /&gt;
      KAboutData::License_GPL,&lt;br /&gt;
      ki18n(&amp;quot;Copyright (c) 2007 Developer&amp;quot;) );&lt;br /&gt;
  KCmdLineArgs::init( argc, argv, &amp;amp;aboutData );&lt;br /&gt;
  KApplication app;&lt;br /&gt;
 &lt;br /&gt;
  MainWindow* window = new MainWindow();&lt;br /&gt;
  window-&amp;gt;show();&lt;br /&gt;
  return app.exec();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
This time, very little has changed in &amp;lt;tt&amp;gt;main.cpp&amp;lt;/tt&amp;gt;, only the KAboutData constructor has been updated to show that we are now on tutorial 3.&lt;br /&gt;
&lt;br /&gt;
===mainwindow.h===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
#ifndef MAINWINDOW_H&lt;br /&gt;
#define MAINWINDOW_H&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;KXmlGuiWindow&amp;gt;&lt;br /&gt;
#include &amp;lt;KTextEdit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
class MainWindow : public KXmlGuiWindow&lt;br /&gt;
{&lt;br /&gt;
  public:&lt;br /&gt;
    MainWindow(QWidget *parent=0);&lt;br /&gt;
	&lt;br /&gt;
  private:&lt;br /&gt;
    KTextEdit* textArea;&lt;br /&gt;
    void setupActions();&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#endif&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Only a function &amp;lt;tt&amp;gt;void setupActions()&amp;lt;/tt&amp;gt; has been added which will do all the work setting up the KActions.&lt;br /&gt;
&lt;br /&gt;
===mainwindow.cpp===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;mainwindow.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;KApplication&amp;gt;&lt;br /&gt;
#include &amp;lt;KAction&amp;gt;&lt;br /&gt;
#include &amp;lt;KLocale&amp;gt;&lt;br /&gt;
#include &amp;lt;KActionCollection&amp;gt;&lt;br /&gt;
#include &amp;lt;KStandardAction&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MainWindow::MainWindow(QWidget *parent)&lt;br /&gt;
    : KXmlGuiWindow(parent)&lt;br /&gt;
{&lt;br /&gt;
  textArea = new KTextEdit;&lt;br /&gt;
  setCentralWidget(textArea);&lt;br /&gt;
&lt;br /&gt;
  setupActions();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void MainWindow::setupActions()&lt;br /&gt;
{&lt;br /&gt;
  KAction* clearAction = new KAction(this);&lt;br /&gt;
  clearAction-&amp;gt;setText(i18n(&amp;quot;&amp;amp;Clear&amp;quot;));&lt;br /&gt;
  clearAction-&amp;gt;setIcon(KIcon(&amp;quot;document-new&amp;quot;));&lt;br /&gt;
  clearAction-&amp;gt;setShortcut(Qt::CTRL + Qt::Key_W);&lt;br /&gt;
  actionCollection()-&amp;gt;addAction(&amp;quot;clear&amp;quot;, clearAction);&lt;br /&gt;
  connect(clearAction, SIGNAL(triggered(bool)),&lt;br /&gt;
          textArea, SLOT(clear()));&lt;br /&gt;
&lt;br /&gt;
  KStandardAction::quit(kapp, SLOT(quit()),&lt;br /&gt;
                        actionCollection());&lt;br /&gt;
&lt;br /&gt;
  setupGUI(Default, &amp;quot;tutorial3ui.rc&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explanation==&lt;br /&gt;
This builds upon the KXmlGuiWindow code from [[Development/Tutorials/Using_KXmlGuiWindow|Tutorial 2]]. Most of the changes are to &amp;lt;tt&amp;gt;mainwindow.cpp&amp;lt;/tt&amp;gt;, an important structural change being that the constructor for MainWindow now calls &amp;lt;tt&amp;gt;setupActions()&amp;lt;/tt&amp;gt; instead of &amp;lt;tt&amp;gt;setupGUI()&amp;lt;/tt&amp;gt;. &amp;lt;tt&amp;gt;setupActions()&amp;lt;/tt&amp;gt; is where the new KAction code goes before finally calling &amp;lt;tt&amp;gt;setupGUI()&amp;lt;/tt&amp;gt; itself.&lt;br /&gt;
&lt;br /&gt;
===Creating the KAction object===&lt;br /&gt;
The KAction is built up in a number of steps. The first is including the &amp;lt;tt&amp;gt;KAction&amp;lt;/tt&amp;gt; library and then creating the KAction:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;KAction&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
KAction* clearAction = new KAction(this);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
This creates a new KAction called &amp;lt;tt&amp;gt;clearAction&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Setting KAction Properties===&lt;br /&gt;
====Text====&lt;br /&gt;
Now that we have our KAction object, we can start setting its properties. The following code sets the text that will be displayed in the menu and under the &amp;lt;tt&amp;gt;KAction&amp;lt;/tt&amp;gt;'s icon in the toolbar.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
clearAction-&amp;gt;setText(i18n(&amp;quot;&amp;amp;Clear&amp;quot;));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Note that the text is passed through the &amp;lt;tt&amp;gt;i18n()&amp;lt;/tt&amp;gt; function; this is necessary for the UI to be translatable (more information on this can be found in the [[Development/Tutorials/Localization/i18n|i18n tutorial]]).&lt;br /&gt;
&lt;br /&gt;
The text of the action should contain a &amp;lt;tt&amp;gt;&amp;amp;&amp;lt;/tt&amp;gt; because that makes it easier to translate in non-latin1 languages. In Japanese, the translation might be &amp;lt;tt&amp;gt;ソース(&amp;amp;S)&amp;lt;/tt&amp;gt; and without the &amp;lt;tt&amp;gt;&amp;amp;&amp;lt;/tt&amp;gt; in the english text the translators cannot know if they have to add a &amp;lt;tt&amp;gt;&amp;amp;&amp;lt;/tt&amp;gt; or not.&lt;br /&gt;
&lt;br /&gt;
====Icon====&lt;br /&gt;
If the action is going to be displayed in a toolbar, it is nice to have an icon depicting the action. The following code sets the icon to the standard KDE &amp;lt;tt&amp;gt;document-new&amp;lt;/tt&amp;gt; icon through the use of the &amp;lt;tt&amp;gt;setIcon()&amp;lt;/tt&amp;gt; function:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
clearAction-&amp;gt;setIcon(KIcon(&amp;quot;document-new&amp;quot;));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Keyboard Shortcut====&lt;br /&gt;
Setting a keyboard shortcut to perform our action is equally simple:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
clearAction-&amp;gt;setShortcut(Qt::CTRL + Qt::Key_W);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
This associates Ctrl+W with the KAction.&lt;br /&gt;
&lt;br /&gt;
===Adding to the Collection===&lt;br /&gt;
In order for the action to be accessed by the XMLGUI framework (explained in depth later) it must be added to the application's ''action collection''. The action collection is accessed via the &amp;lt;tt&amp;gt;actionCollection()&amp;lt;/tt&amp;gt; function like this: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
actionCollection()-&amp;gt;addAction(&amp;quot;clear&amp;quot;, clearAction);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Here, the &amp;lt;tt&amp;gt;clearAction&amp;lt;/tt&amp;gt; KAction is added to the collection and given a name of ''clear''. This name (''clear'') is used by the XMLGUI framework to refer to the action, ergo, it should not be localized, since it is used internally only.&lt;br /&gt;
&lt;br /&gt;
====Connecting the action====&lt;br /&gt;
Now that the action is fully set up, it needs to be connected to something useful. In this case (because we want to clear the text area), we connect our action to the &amp;lt;tt&amp;gt;clear()&amp;lt;/tt&amp;gt; action belonging to a KTextEdit (which, unsurprisingly, clears the KTextEdit)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
connect( clearAction, SIGNAL( triggered(bool) ), &lt;br /&gt;
         textArea, SLOT( clear() ) );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
This is the same as it would be done in Qt with a {{qt|QAction}}.&lt;br /&gt;
&lt;br /&gt;
===KStandardAction===&lt;br /&gt;
&lt;br /&gt;
For actions which would likely appear in almost every KDE application such as 'quit', 'save', and 'load' there are pre-created convenience KActions, accessed through [http://api.kde.org/4.0-api/kdelibs-apidocs/kdeui/html/namespaceKStandardAction.html KStandardAction].&lt;br /&gt;
&lt;br /&gt;
They are very simple to use. Once the library has been included (&amp;lt;tt&amp;gt;#include &amp;lt;KStandardAction&amp;gt;&amp;lt;/tt&amp;gt;), simply supply it with what you want the function to do and which KActionCollection to add it to. For example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
KStandardAction::quit(kapp, SLOT(quit()), actionCollection());&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
This creates a KAction with the correct icon, text and shortcut and even adds it to the File menu.&lt;br /&gt;
&lt;br /&gt;
==Adding the action to menus and toolbars==&lt;br /&gt;
At the moment, the new &amp;quot;Clear&amp;quot; action has been created but it hasn't been associated with any menus or toolbars. This is done with a KDE technology called XMLGUI, which does nice things like movable toolbars for you.&lt;br /&gt;
&lt;br /&gt;
==Defining your own help menu==&lt;br /&gt;
The help menu is god-given, that is why all KDE help menus look the same. If you want to create your own help menu, search for the explanation around showAboutApplication() in kdelibs.&lt;br /&gt;
&lt;br /&gt;
==XMLGUI==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;setupGUI()&amp;lt;/tt&amp;gt; function in {{class|KXmlGuiWindow}} depends on the XMLGUI system to construct the GUI, which XMLGUI does by parsing an XML file description of the interface.&lt;br /&gt;
&lt;br /&gt;
The rule for naming this XML file is &amp;lt;tt&amp;gt;appnameui.rc&amp;lt;/tt&amp;gt;, where &amp;lt;tt&amp;gt;appname&amp;lt;/tt&amp;gt; is the name you set in {{class|KAboutData}} (in this case, ''tutorial3''). So in our example, the file is called &amp;lt;tt&amp;gt;tutorial3ui.rc&amp;lt;/tt&amp;gt;, and is located in the build directory. Where the file will ultimately be placed is handled by CMake.&lt;br /&gt;
&lt;br /&gt;
''See also'' [http://developer.kde.org/documentation/library/kdeqt/kde3arch/xmlgui.html developer.kde.org] which still provides valid information for KDE4.&lt;br /&gt;
&lt;br /&gt;
==''appname''ui.rc File==&lt;br /&gt;
&lt;br /&gt;
Since the description of the UI is defined with XML, the layout must follow strict rules. This tutorial will not go into great depth on this topic, but for more information, see the [[Development/Architecture/KDE4/XMLGUI_Technology|detailed XMLGUI page]] (here is an older tutorial: [http://developer.kde.org/documentation/tutorials/xmlui/preface.html]).&lt;br /&gt;
&lt;br /&gt;
===tutorial3ui.rc===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;gui name=&amp;quot;tutorial3&amp;quot;&lt;br /&gt;
     version=&amp;quot;1&amp;quot;&lt;br /&gt;
     xmlns=&amp;quot;http://www.kde.org/standards/kxmlgui/1.0&amp;quot;&lt;br /&gt;
     xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&lt;br /&gt;
     xsi:schemaLocation=&amp;quot;http://www.kde.org/standards/kxmlgui/1.0&lt;br /&gt;
                         http://www.kde.org/standards/kxmlgui/1.0/kxmlgui.xsd&amp;quot; &amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;MenuBar&amp;gt;&lt;br /&gt;
    &amp;lt;Menu name=&amp;quot;file&amp;quot; &amp;gt;&lt;br /&gt;
      &amp;lt;Action name=&amp;quot;clear&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Menu&amp;gt;&lt;br /&gt;
  &amp;lt;/MenuBar&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;ToolBar name=&amp;quot;mainToolBar&amp;quot; &amp;gt;&lt;br /&gt;
    &amp;lt;text&amp;gt;Main Toolbar&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;Action name=&amp;quot;clear&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/ToolBar&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/gui&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;&amp;lt;Toolbar&amp;gt;&amp;lt;/tt&amp;gt; tag allows you to describe the toolbar, which is the bar across the top of the window normally with icons. Here it is given the unique name ''mainToolBar'' and its user visible name set to ''Main Toolbar'' using the &amp;lt;tt&amp;gt;&amp;lt;text&amp;gt;&amp;lt;/tt&amp;gt; tag. The clear action is added to the toolbar using the &amp;lt;tt&amp;gt;&amp;lt;Action&amp;gt;&amp;lt;/tt&amp;gt; tag, the name parameter in this tag being the string that was passed to the KActionCollection with &amp;lt;tt&amp;gt;addAction()&amp;lt;/tt&amp;gt; in &amp;lt;tt&amp;gt;mainwindow.cpp&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Besides having the action in the toolbar, it can also be added to the menubar. Here the action is being added to the ''File'' menu of the &amp;lt;tt&amp;gt;MenuBar&amp;lt;/tt&amp;gt; the same way it was added to the toolbar.&lt;br /&gt;
&lt;br /&gt;
Change the 'version' attribute of the &amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;gui&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt; tag if you changed .rc file since the last install to force a system cache update. Be sure it is an integer, if you use a decimal value, it will not work, but will not notify that it didn't. '&lt;br /&gt;
&lt;br /&gt;
{{Warning|The version attribute must be an integer number, if you type in version&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;quot;1.2&amp;quot; it will dispose of your kittens  (but not eat them).}}&lt;br /&gt;
&lt;br /&gt;
Some notes on the interaction between code and the .rc file: Menus appear automatically and should have a &amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;text/&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt; child tag unless they refer to standard menus. Actions need to be created manually and inserted into the actionCollection() using the name in the .rc file. Actions can be hidden or disabled, whereas menus can't.&lt;br /&gt;
&lt;br /&gt;
==CMake==&lt;br /&gt;
Finally, the &amp;lt;tt&amp;gt;tutorial3ui.rc&amp;lt;/tt&amp;gt; needs to go somewhere where KDE can find it (can't just leave it in the source directory!). '''This means the project needs to be installed somewhere.'''&lt;br /&gt;
===CMakeLists.txt===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
project(tutorial3)&lt;br /&gt;
&lt;br /&gt;
find_package(KDE4 REQUIRED)&lt;br /&gt;
include_directories(${KDE4_INCLUDES})&lt;br /&gt;
&lt;br /&gt;
set(tutorial3_SRCS &lt;br /&gt;
  main.cpp&lt;br /&gt;
  mainwindow.cpp&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
kde4_add_executable(tutorial3 ${tutorial3_SRCS})&lt;br /&gt;
&lt;br /&gt;
target_link_libraries(tutorial3 ${KDE4_KDEUI_LIBS})&lt;br /&gt;
&lt;br /&gt;
install(TARGETS tutorial3 DESTINATION ${BIN_INSTALL_DIR})&lt;br /&gt;
install(FILES tutorial3ui.rc &lt;br /&gt;
        DESTINATION  ${DATA_INSTALL_DIR}/tutorial3)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This file is almost identical to the one for tutorial2, but with two extra lines at the end that describe where the files are to be installed. Firstly, the &amp;lt;tt&amp;gt;tutorial3&amp;lt;/tt&amp;gt; target is installed to the &amp;lt;tt&amp;gt;BIN_INSTALL_DIR&amp;lt;/tt&amp;gt; then the &amp;lt;tt&amp;gt;tutorial3ui.rc&amp;lt;/tt&amp;gt; file that describes the layout of the user interface is installed to the application's data directory.&lt;br /&gt;
&lt;br /&gt;
===Make, Install And Run===&lt;br /&gt;
If you don't have write access to where your KDE4 installation directory, you can install it to a folder in your home directory.&lt;br /&gt;
&lt;br /&gt;
To tell CMake where to install the program, set the &amp;lt;tt&amp;gt;DCMAKE_INSTALL_PREFIX&amp;lt;/tt&amp;gt; switch. You probably just want to install it somewhere local for testing (it's probably a bit silly to go to the effort of installing these tutorials to your KDE directory), so the following might be appropriate:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir build &amp;amp;&amp;amp; cd build&lt;br /&gt;
cmake .. -DCMAKE_INSTALL_PREFIX=$HOME&lt;br /&gt;
make install&lt;br /&gt;
$HOME/bin/tutorial3&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
which will create a KDE-like directory structure in your user's home directory and will install the executable to {{path|$HOME/bin/tutorial3}}.&lt;br /&gt;
&lt;br /&gt;
==Moving On==&lt;br /&gt;
Now you can move on to [[Development/Tutorials/Saving_and_loading|saving and loading]].&lt;br /&gt;
&lt;br /&gt;
Or you can learn [[Development/Tutorial/Icons|how to add icons to your application]].&lt;br /&gt;
&lt;br /&gt;
Or you can learn [[Development/Tutorials/Desktop_File|how to place your application in the K-Menu using .desktop files]].&lt;br /&gt;
&lt;br /&gt;
[[Category:C++]]&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/Desktop_File</id>
		<title>Development/Tutorials/Desktop File</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/Desktop_File"/>
				<updated>2011-11-05T01:44:19Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: The session management tutorial is not really a prerequisite for this article; remove the link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Development/Tutorials/Desktop File}}&lt;br /&gt;
&lt;br /&gt;
{{TutorialBrowser|&lt;br /&gt;
&lt;br /&gt;
series=Basics|&lt;br /&gt;
&lt;br /&gt;
name=Desktop File|&lt;br /&gt;
&lt;br /&gt;
pre=|&lt;br /&gt;
&lt;br /&gt;
next=| &lt;br /&gt;
&lt;br /&gt;
reading=[http://standards.freedesktop.org/desktop-entry-spec/latest/ the .desktop Free Desktop Spec];&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Desktop File ==&lt;br /&gt;
&lt;br /&gt;
In order for your application to show up in menus and/or to be automatically associated with mime types in file browsers, you need to provide a .desktop file like follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Type=Application&lt;br /&gt;
Exec=your-app %u&lt;br /&gt;
MimeType=application/x-your-mime-type;&lt;br /&gt;
Icon=some-icon&lt;br /&gt;
X-DocPath=yourapp/index.html&lt;br /&gt;
Terminal=false&lt;br /&gt;
Name=Your App&lt;br /&gt;
GenericName=Some Generic Name&lt;br /&gt;
Comment=Short Description Of Your App&lt;br /&gt;
Categories=Qt;KDE;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Take a look at [http://standards.freedesktop.org/desktop-entry-spec/latest/ the .desktop Free Desktop Spec] to find our more about the key/value pairs above. It's important to pick a good set of Categories, see the spec for a list of valid values.&lt;br /&gt;
&lt;br /&gt;
== Your project ==&lt;br /&gt;
You want your project to show up in the K Menu like this:&lt;br /&gt;
&lt;br /&gt;
[[File:Snapshot-k-menu.png]]&lt;br /&gt;
&lt;br /&gt;
In this example, the application is called quickpen and it shows up in the category &amp;quot;Graphics&amp;quot;. To accomplish that in your project you need to take care the .desktop file is distributed to the appropriate place.&lt;br /&gt;
&lt;br /&gt;
=== qmake based projects ===&lt;br /&gt;
In case you are working on a qmake based project, add the following to your .pro file:&lt;br /&gt;
 '''target.path = /usr/local/bin'''&lt;br /&gt;
 desktop.path = /usr/share/applications&lt;br /&gt;
 desktop.files += your-app.desktop&lt;br /&gt;
&lt;br /&gt;
 '''INSTALLS += target''' desktop&lt;br /&gt;
&lt;br /&gt;
Note that the bold strings above should be in your project anyway.&lt;br /&gt;
&lt;br /&gt;
An example .pro file can be found [https://github.com/tstaerk/quickpen/blob/dc7a5560b0cbac159d1c443572c676ee7d8fbb23/quickpen.pro here]. The related .desktop file can be found [https://github.com/tstaerk/quickpen/blob/e3b03c5949085e87a659303ae7866378f6539542/quickpen.desktop here].&lt;br /&gt;
&lt;br /&gt;
=== cmake based projects ===&lt;br /&gt;
In case you are working on a cmake based project, add an install directive to your CMakeLists.txt file like this:&lt;br /&gt;
 install( PROGRAMS your-app.desktop DESTINATION ${[[Development/CMake/Addons_for_KDE#The_locations_of_install_directories|XDG_APPS_INSTALL_DIR]]} )&lt;br /&gt;
&lt;br /&gt;
An example CMakeLists.txt file can be found [http://quickgit.kde.org/?p=kdepim.git&amp;amp;a=blob&amp;amp;hb=18742d763bc8a2d2c2c7ef433cc66c39b6a95036&amp;amp;f=ktimetracker/support/CMakeLists.txt here]. The corresponding .desktop file is [http://quickgit.kde.org/?p=kdepim.git&amp;amp;a=blob&amp;amp;hb=63798b547ecb595d166cdbe2e0a04d985fcc8980&amp;amp;f=ktimetracker/support/ktimetracker.desktop here].&lt;br /&gt;
&lt;br /&gt;
= See also =&lt;br /&gt;
* [http://standards.freedesktop.org/desktop-entry-spec/latest/ FreeDeskTop's specification about Desktop entries]&lt;br /&gt;
&lt;br /&gt;
[[Category:Programming]]&lt;br /&gt;
[[Category:Tutorial]]&lt;br /&gt;
[[Category:FAQs]]&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/Creating_Libraries</id>
		<title>Development/Tutorials/Creating Libraries</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/Creating_Libraries"/>
				<updated>2011-11-05T01:39:16Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* Defining the ABI version */ Fix typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Development/Tutorials/Creating Libraries}}&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
&lt;br /&gt;
If a part of your code could be used by more than one software module, like other programs or plugins, you should put that part in a shared library. This tutorial tells how to add the library to the buildsystem and how to prepare the source code.&lt;br /&gt;
&lt;br /&gt;
==Separating the code==&lt;br /&gt;
&lt;br /&gt;
It is good practise to put all source files for a library in a separate directory.&lt;br /&gt;
&lt;br /&gt;
This tutorial assumes you want to create a shared library named '''myshare''', which contains the classes '''MyAClass''' and '''MyBClass'''. Both classes use internally the classes '''MyInternalCClass''' and '''MyInternalDClass''', but these are not found in their public interfaces.&lt;br /&gt;
&lt;br /&gt;
The classes are declared and defined in the files ''myaclass.h'', ''myaclass.cpp'', ''mybclass.h'', ''mybclass.cpp'', ''myinternalcclass.h'', ''myinternalcclass.cpp'', ''myinternaldclass.h'', and ''myinternaldclass.cpp''.&lt;br /&gt;
&lt;br /&gt;
==Adding the library to the buildsystem==&lt;br /&gt;
&lt;br /&gt;
You also need a file CMakeLists.txt in the same directory as the source files: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
include_directories(&lt;br /&gt;
# any directories needed by the sources of the library&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
set( myshared_LIB_SRCS&lt;br /&gt;
  myaclass.cpp&lt;br /&gt;
  mybclass.cpp&lt;br /&gt;
  myinternalcclass.cpp&lt;br /&gt;
  myinternaldclass.cpp&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
kde4_add_library( myshared  SHARED ${myshared_LIB_SRCS} )&lt;br /&gt;
&lt;br /&gt;
target_link_libraries( myshared&lt;br /&gt;
  ${KDE4_KDECORE_LIBS}&lt;br /&gt;
)&lt;br /&gt;
set_target_properties( myshared&lt;br /&gt;
  PROPERTIES VERSION ${GENERIC_LIB_VERSION} SOVERSION ${GENERIC_LIB_SOVERSION}&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
install( TARGETS myshared  ${INSTALL_TARGETS_DEFAULT_ARGS} )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The instructions are similar to the ones for a program. But instead of calling &amp;lt;tt&amp;gt;kde4_add_executable()&amp;lt;/tt&amp;gt; you use &amp;lt;tt&amp;gt;kde4_add_library()&amp;lt;/tt&amp;gt; to register  the library &amp;lt;tt&amp;gt;myshared&amp;lt;/tt&amp;gt;. The parameter &amp;lt;tt&amp;gt;SHARED&amp;lt;/tt&amp;gt; is needed as this declares the library is a shared one, not a static.&lt;br /&gt;
&lt;br /&gt;
Like with a program, other libraries that are used have to be defined with &amp;lt;tt&amp;gt;target_link_libraries()&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The version number of the library is set by &amp;lt;tt&amp;gt;set_target_properties()&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
And &amp;lt;tt&amp;gt;install()&amp;lt;/tt&amp;gt; moves the library to a place where it can be loaded.&lt;br /&gt;
&lt;br /&gt;
==Declaring exported classes and methods==&lt;br /&gt;
&lt;br /&gt;
If a library gets compiled, all functions or class methods it offers get listed as so called symbols in a table. Each symbol points to the offset in the library where the corresponding code can be found.&lt;br /&gt;
&lt;br /&gt;
Adding also functions or class methods to the table which are not intended to be called from the outside is of no use. It just bloats the table and asks others to make calls to them against your will. For the library myshared you do not want to add the methods of the classes MyInternalCClass and MyInternalDClass.&lt;br /&gt;
&lt;br /&gt;
In the KDE buildsystem you need to put explicitly a tag to all the classes and functions which the library should provide externally. This tag has to have a different name for each library.&lt;br /&gt;
&lt;br /&gt;
For this add a file myshared_export.h to the directory of the library, containing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
#ifndef MYSHARED_EXPORT_H&lt;br /&gt;
#define MYSHARED_EXPORT_H&lt;br /&gt;
&lt;br /&gt;
// needed for KDE_EXPORT and KDE_IMPORT macros&lt;br /&gt;
#include &amp;lt;kdemacros.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#ifndef MYSHARED_EXPORT&lt;br /&gt;
# if defined(MAKE_MYSHARED_LIB)&lt;br /&gt;
   // We are building this library&lt;br /&gt;
#  define MYSHARED_EXPORT KDE_EXPORT&lt;br /&gt;
# else&lt;br /&gt;
   // We are using this library&lt;br /&gt;
#  define MYSHARED_EXPORT KDE_IMPORT&lt;br /&gt;
# endif&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
# ifndef MYSHARED_EXPORT_DEPRECATED&lt;br /&gt;
#  define MYSHARED_EXPORT_DEPRECATED KDE_DEPRECATED MYSHARED_EXPORT&lt;br /&gt;
# endif&lt;br /&gt;
&lt;br /&gt;
#endif&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This macro code defines the tag &amp;lt;tt&amp;gt;MYSHARED_EXPORT&amp;lt;/tt&amp;gt; for the library.&lt;br /&gt;
&lt;br /&gt;
Now you prepare all classes by adding a include for the header with the library's export tag and putting the export tag defined above in front of the class name, like this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;myshared_export.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
class MYSHARED_EXPORT MyAClass {&lt;br /&gt;
// class declaration as usual&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the same with the other class:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;myshared_export.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
class MYSHARED_EXPORT MyBClass {&lt;br /&gt;
// class declaration as usual&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{warning|&lt;br /&gt;
Beware that header-only classes, even additionally based on templates, must not have an export tag. Their methods do not end as any symbol in the library. Instead all machine code is created on demand in the external calling software, if compiled.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Enabling others to compile using your library==&lt;br /&gt;
&lt;br /&gt;
You need also tell the buildsystem to install the header files. Without this external code can not build, as it can not include the files and thus the class and methods declarations of your library. You do this by adding to the library's CMakeLists.txt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
set( myshared_LIB_HDRS&lt;br /&gt;
  myshared_export.h&lt;br /&gt;
  myaclass.h&lt;br /&gt;
  mybclass.h&lt;br /&gt;
)&lt;br /&gt;
install( FILES ${myshared_LIB_HDRS}&lt;br /&gt;
  DESTINATION ${INCLUDE_INSTALL_DIR}/myshared&lt;br /&gt;
  COMPONENT Devel&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Of course also myshared_export.h is installed, as it gets included by the headers of both classes.&lt;br /&gt;
&lt;br /&gt;
External KDE code which should use the library's classes and functions now can include the headers by the lines:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;myshared/myaclass.h&amp;gt;&lt;br /&gt;
#include &amp;lt;myshared/mybclass.h&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Getting the version numbers right==&lt;br /&gt;
&lt;br /&gt;
By installing the header files you are releasing your library officially. External code will rely on the interfaces declared by the headers. So you need to care for binary and behaviour compatibility if developing your library further. Any changes in the next release should be reflected in the version number, so external code gets compiled, linked and run with the matching version of your library.&lt;br /&gt;
&lt;br /&gt;
As you already saw above the version of your library is defined by &amp;lt;tt&amp;gt;set_target_properties()&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
set_target_properties( myshared&lt;br /&gt;
  PROPERTIES VERSION ${GENERIC_LIB_VERSION} SOVERSION ${GENERIC_LIB_SOVERSION}&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So there are two different kind of versions, the development version &amp;lt;tt&amp;gt;VERSION&amp;lt;/tt&amp;gt; and the ABI version &amp;lt;tt&amp;gt;SOVERSION&amp;lt;/tt&amp;gt;. Both will be explained now.&lt;br /&gt;
&lt;br /&gt;
=== Defining the development version ===&lt;br /&gt;
The value of &amp;lt;tt&amp;gt;VERSION&amp;lt;/tt&amp;gt; defines the development state of your library. It is good practice to use a pattern &amp;quot;major.minor.patch-level&amp;quot;.&lt;br /&gt;
For each release you need to update or reset the different parts:&lt;br /&gt;
* Only bug fixes added: increase the patch-level, e.g. 2.3.10 -&amp;gt; 2.3.11&lt;br /&gt;
* New functionality added, while keeping the old functionality: increase the minor number, reset the patch-level, e.g. 2.3.10 -&amp;gt; 2.4.0&lt;br /&gt;
* Binary or behaviour changes of old functionality, regardless of any new functionality: increase the major number, reset the minor number and the patch-level, e.g. 2.3.10 -&amp;gt; 3.0.0&lt;br /&gt;
This version ends in the name of the resulting library file, e.g. on Linux &amp;quot;libmyshared.so.2.3.10&amp;quot; or &amp;quot;libmyshared.2.3.10.so&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Defining the ABI version ===&lt;br /&gt;
The value of &amp;lt;tt&amp;gt;SOVERSION&amp;lt;/tt&amp;gt; defines the ABI variant of your library. It is a single always increasing integer, numbering the versions with non-backward-compatible changes. So if you release a new version with some binary or behaviour changes you need to increase this version number by one, e.g. 2-&amp;gt;3, otherwise you keep it.&lt;br /&gt;
&lt;br /&gt;
{{tip|&lt;br /&gt;
If you follow the rules given above for the &amp;lt;tt&amp;gt;VERSION&amp;lt;/tt&amp;gt; version, the value of &amp;lt;tt&amp;gt;SOVERSION&amp;lt;/tt&amp;gt; will of course match the major number of it. So with a &amp;lt;tt&amp;gt;VERSION&amp;lt;/tt&amp;gt; of 2.3.10 the &amp;lt;tt&amp;gt;SOVERSION&amp;lt;/tt&amp;gt; value would be 2. But this is no necessity.}}&lt;br /&gt;
&lt;br /&gt;
This version ends in a reference with ABI versioning to the resulting library file, e.g. on Linux in the symbolic link &amp;quot;libmyshared.so.2&amp;quot;, which points to the real library file. These versioned references are used by the dynamic linker to load the version of the library with the matching ABI variant to a running executable. Executables which are linked to a shared library have a note which ABI variant of these libray is needed.&lt;br /&gt;
&lt;br /&gt;
{{warning|&lt;br /&gt;
This concept of ABI versioning breaks if the executable got linked to a newer version of the library (e.g. 2.4.0) which is backward-compatible to older versions (all 2.0-3.*) but additionally offers new functionality that also gets used by the executable.&lt;br /&gt;
&lt;br /&gt;
Because conforming to the concept the older versions have the same ABI version like the newer one (e.g. 2). So if only an older version of the library is installed (e.g. 2.1.8) the executable is still started as the tested prerequisites (ABI version) are matched, but it will crash due to the missing functionality if the library gets finally loaded.&lt;br /&gt;
&lt;br /&gt;
In a compilation-from-sourcecode-based system this just should not happen, unless you downgrade a library again. And in a package-based system dependency checks on de-/installations of packages which also care for the &amp;lt;tt&amp;gt;VERSION&amp;lt;/tt&amp;gt; version should prevent this. So you might also forget about this problem.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Using the generic versions===&lt;br /&gt;
If you are developing your library inside a normal KDE module, e.g. kdeutils, and all new versions of your library are only released together with the usual KDE releases, of course following the policies regarding ABI as demanded, you do not need to take care of the versioning yourself. Just use the generic variables &amp;lt;tt&amp;gt;${GENERIC_LIB_VERSION}&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;${GENERIC_LIB_SOVERSION}&amp;lt;/tt&amp;gt; as shown above. Using the generic version numbers also helps to identify a version of your library by the general KDE version.&lt;br /&gt;
&lt;br /&gt;
E.g. for KDE 4.1.0 these variables are defined in kdelibs/cmake/modules/KDE4Defaults.cmake with&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
set(GENERIC_LIB_VERSION &amp;quot;4.1.0&amp;quot;)&lt;br /&gt;
set(GENERIC_LIB_SOVERSION &amp;quot;4&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Making localization work==&lt;br /&gt;
&lt;br /&gt;
If your shared library contains translations you have to help a little so a program which uses your library can make use of them.&lt;br /&gt;
&lt;br /&gt;
You mark the strings to be translated [[Development/Tutorials/Localization/i18n|as usual]]. And &lt;br /&gt;
[[Development/Tutorials/Localization/i18n Build Systems|like you do with programs]] you have to add a shell script named &amp;lt;tt&amp;gt;Messages.sh&amp;lt;/tt&amp;gt; in the toplevel directory of your shared library to collect all the strings, e.g.:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!bin/sh&lt;br /&gt;
# fetch all strings in files that are not source code&lt;br /&gt;
$EXTRACTRC `find . -name \*.rc -o -name \*.ui -o -name \*.kcfg` &amp;gt;&amp;gt; rc.cpp&lt;br /&gt;
# fetch all strings in source code files&lt;br /&gt;
$XGETTEXT `find . -name \*.cc -o -name \*.cpp -o -name \*.h` -o $podir/libmyshare.pot&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
So all strings will end in a catalog named &amp;lt;tt&amp;gt;libmyshare&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
While for programs and most plugins the translations are loaded automatically, for shared libraries you have to do it manually. You do so by adding in the program after the creation of the &amp;lt;tt&amp;gt;KApplication&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;KCoreApplication&amp;lt;/tt&amp;gt; instance the line:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
KGlobal::locale()-&amp;gt;insertCatalog( &amp;quot;libmyshare&amp;quot; );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The method &amp;lt;tt&amp;gt;insertCatalog()&amp;lt;/tt&amp;gt; will load the translated strings in the current language from the catalog named &amp;lt;tt&amp;gt;libmyshare&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Organizing your program code with static libraries==&lt;br /&gt;
Sharing code with others is one reason to separate code into libraries.&lt;br /&gt;
Another reason is the need to organize a large code base.&lt;br /&gt;
&lt;br /&gt;
A useful approach to give a structure to code is to separate the source files in different subdirectories, each subdirectory containing only code for a certain domain, e.g. a subdirectory &amp;quot;utils&amp;quot; for all utility classes or &amp;quot;gui&amp;quot; for all gui related code.&lt;br /&gt;
&lt;br /&gt;
Instead of one big central CMakeLists.txt file you also use an own CMakeLists.txt file per subdirectory, which is also placed in that subdirectory. In each of these CMakeLists.txt files you advise the build system to construct a separate package of the compiled sources in the given directory, a so called convenience library or, in technical terms, static library.&lt;br /&gt;
&lt;br /&gt;
E.g. for the subdirectory &amp;quot;myutils&amp;quot; &amp;quot;myutils/CMakeLists.txt&amp;quot; looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
include_directories(&lt;br /&gt;
# only as needed for the sources of this directory/library&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
set( myutils_LIB_SRCS&lt;br /&gt;
  myutilaclass.cpp&lt;br /&gt;
  myutilbclass.cpp&lt;br /&gt;
  myinternalutilcclass.cpp&lt;br /&gt;
  myinternalutildclass.cpp&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
kde4_add_library( myutils  STATIC ${myutils_LIB_SRCS} )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The instructions are similar to the ones for a shared library. In the call &amp;lt;tt&amp;gt;kde4_add_library()&amp;lt;/tt&amp;gt; you just use the parameter &amp;lt;tt&amp;gt;STATIC&amp;lt;/tt&amp;gt; instead to declare the library is a static one.&lt;br /&gt;
&lt;br /&gt;
This library is only used as an intermediate product in the total build process. So you neither need to set a version number with &amp;lt;tt&amp;gt;set_target_properties()&amp;lt;/tt&amp;gt; or declare at this point other libraries to link against with &amp;lt;tt&amp;gt;target_link_libraries()&amp;lt;/tt&amp;gt;, like you do with a shared library. And you do not install anything, neither the lib or any header files. You also do not mark exported classes or functions, all will be available to external code. You declare any dynamic libraries used by the library at another place, see below.&lt;br /&gt;
&lt;br /&gt;
With &amp;lt;tt&amp;gt;include_directories()&amp;lt;/tt&amp;gt; you also have to list the include directories needed for the source files in the directory, and only these. So you get more control with regard to dependencies than with one big central CMakeLists.txt file. &lt;br /&gt;
&lt;br /&gt;
To have all the local CMakeLists.txt files get used by the build system you need to add each subdirectory to the CMakeLists.txt file in the upper directory, with the call &amp;lt;tt&amp;gt;add_subdirectory()&amp;lt;/tt&amp;gt;, e.g.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
add_subdirectory( myutils )&lt;br /&gt;
add_subdirectory( mygui )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This inclusion can be done recursively, so in a subdirectory you can add again the subsubdirectory.&lt;br /&gt;
&lt;br /&gt;
Finally you need to tell the buildsystem to also use the static libraries to construct the complete program. You do so by including their names in the &amp;lt;tt&amp;gt;target_link_libraries()&amp;lt;/tt&amp;gt; call for the program. There you also add any not already listed shared library which is used by code in your static libraries, as told above. So to construct the program myprogram using the static libraries mygui and myutils you write the CMakeLists.txt like e.g.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
target_link_libraries( myprogram&lt;br /&gt;
  mygui&lt;br /&gt;
  myutils&lt;br /&gt;
# and all needed dynamic libraries, like the KDE ones and else,&lt;br /&gt;
# also the ones needed by your static libraries mygui and myutils&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure that you list those libraries, static or shared, which are also used by other libraries in the list below these, e.g. if mygui uses myutils, first list mygui, then myutils, as in the example above.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{warning|&lt;br /&gt;
The buildsystem up to KDE 4.1 supports the use of static libraries only for programs, not for shared libraries. So use this structuring method only for programs.&lt;br /&gt;
&lt;br /&gt;
This restriction is due to the fact that the linker utilities on most platforms supported only import those parts of static libraries into the end product which are referenced by the other code in the product, not simply everything. Which is useful, if the product is a program. But it isn't useful for the product dynamic library. If a function &amp;quot;foo()&amp;quot; from the static library is not used by the other code in the shared library this function will not be found in resulting shared library product. Yet third party code linking to this shared library might expect the function if it is defined as exported. Which creates a problem.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
It is not uncommon for a static library to become a shared dynamic library later in development, if the code in the library proves to be complete and useful for others.&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.8_Feature_Plan</id>
		<title>Schedules/KDE4/4.8 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.8_Feature_Plan"/>
				<updated>2011-10-26T15:59:36Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* kdeutils */ Add an entry for review request 102803 (ark)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the SC 4.8 release. &lt;br /&gt;
&lt;br /&gt;
See also: &lt;br /&gt;
&lt;br /&gt;
*[[Schedules/KDE4/4.8 Release Schedule]] &lt;br /&gt;
*[[Schedules/KDE4/4.8 Release Goals]] &lt;br /&gt;
*[[Schedules/KDE4/4.7 Feature Plan]] (previous major release)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Legend: &lt;br /&gt;
&lt;br /&gt;
*todo =&amp;amp;gt; not started yet &lt;br /&gt;
*in-progress =&amp;amp;gt; started, but not completed yet &lt;br /&gt;
*done =&amp;amp;gt; completed&lt;br /&gt;
&lt;br /&gt;
__TOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdelibs =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Kate Part|Line modification system|dhaumann@kde.org|Dominik Haumann}}&lt;br /&gt;
{{FeatureDone|Kate Part|Modeline Editor|dhaumann@kde.org|Dominik Haumann}}&lt;br /&gt;
{{FeatureDone|Kate Part|Reliable code folding|adrian.lungu89@gmail.com|Adrian Lungu}}&lt;br /&gt;
{{FeatureDone|Kate Part|Improved vi input mode|svatoslav1@gmail.com|Svyatoslav Kuzmich}}&lt;br /&gt;
{{FeatureInProgress|KIO|PreviewJob supports URLs|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureInProgress|kdeui|KSecretsService API addition|kde@rusu.info|Valentin Rusu}}&lt;br /&gt;
{{FeatureInProgress|kdeui/util|Connect KWallet class to KSecretsService client API|kde@rusu.info|Valentin Rusu}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-runtime =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|ksecretsserviced|KSecretsService daemon implementing the freedesktop.org secrets API. KDE applications will want to use the related kdelibs API (see below)|kde@rusu.info|Valentin Rusu}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|DrKonqi|Better duplicate detection|mat69@gmx.net|Matthias Fuchs}}&lt;br /&gt;
{{FeatureInProgress|KIO Thumbnails|webthumbnails plugin|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureInProgress|DrKonqi|Scripting support|mat69@gmx.net|Matthias Fuchs}}&lt;br /&gt;
{{FeatureInProgress|Plasma|Plasma QML QtComponents|mart@kde.org|Marco Martin}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-workspace =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|KWin|Take over screensaver/locking management from KRunner|alex.merry@kdemail.net|Alex Merry}}&lt;br /&gt;
{{FeatureInProgress|KCM|make mouse cursor size configurable (http://git.reviewboard.kde.org/r/101701/)|SommerLuk@gmail.com|Lukas Sommer}}&lt;br /&gt;
{{FeatureDone|powerdevil|Remove Desktop Effects Management|drf@kde.org|Dario Freddi}}&lt;br /&gt;
{{FeatureInProgress|powerdevil|Allow static profiles only|drf@kde.org|Dario Freddi}}&lt;br /&gt;
{{FeatureInProgress|powerdevil|Allow activity interaction|drf@kde.org|Dario Freddi}}&lt;br /&gt;
{{FeatureTodo|Plasma|Add MPRIS2 support to nowplaying|alex.merry@kdemail.net|Alex Merry}}&lt;br /&gt;
{{FeatureInProgress|Plasma|Allow task grouping on the taskbar to work together with kwin window tabbing|akreuzkamp@web.de|Anton Kreuzkamp}}&lt;br /&gt;
{{FeatureInProgress|Plasma|Merge the QML version of the device notifier|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|Plasma|Merge the QML version of the battery applet|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|KWin|QML based Window switcher (Tabbox)|mgraesslin@kde.org|Martin Gräßlin}}&lt;br /&gt;
{{FeatureInProgress|KWin|Texture Rectangle ARB support in Shaders|mgraesslin@kde.org|Martin Gräßlin}}&lt;br /&gt;
{{FeatureInProgress|KWin|No Compositor restart on screen change|mgraesslin@kde.org|Martin Gräßlin}}&lt;br /&gt;
{{FeatureInProgress|KWin|Initial Wayland support|mgraesslin@kde.org|Martin Gräßlin}}&lt;br /&gt;
{{FeatureTodo|KWin|Support for thumbnails in QML|mgraesslin@kde.org|Martin Gräßlin}}&lt;br /&gt;
{{FeatureInProgress|KWin|Add AnimationEffect class|thomas.luebking@gmail.com|Thomas Lübking}}&lt;br /&gt;
{{FeatureInProgress|KWin|Option to prefer the mouse position over the focus chain|thomas.luebking@gmail.com|Thomas Lübking}}&lt;br /&gt;
{{FeatureTodo|KWin|More cleanup in the window rules kcm|thomas.luebking@gmail.com|Thomas Lübking}}&lt;br /&gt;
{{FeatureInProgress|Screenlocker|New Screenlocker and daemon|mgraesslin@kde.org|Martin Gräßlin}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kde-baseapps =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Dolphin|Implement new view-engine for Dolphin 2.0 (see http://ppenz.blogspot.com/2011/08/introducing-dolphin-20.html)|peter.penz19@gmail.com|Peter Penz}}&lt;br /&gt;
{{FeatureTodo|Dolphin|Implement support for back/forward mouse buttons|sebasti@n-doerner.de|Sebastian Dörner}}&lt;br /&gt;
{{FeatureDone|Kate|Search &amp;amp; Replace in files plugin|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureInProgress|Kate|Make GDB target selection behave like the build plugin |kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureInProgress|Kate|Add convenience options for remote debugging|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeedu  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|KTouch|New organisation of keyboard and lecture files according to languages|peter.ruethemann@gmail.com|Rüthemann Peter}}&lt;br /&gt;
{{FeatureInProgress|KTouch|New organisation of menu system: Training, Statistic, Settings|peter.ruethemann@gmail.com|Rüthemann Peter}}&lt;br /&gt;
{{FeatureTodo|KTouch|End of lecture statistics|peter.ruethemann@gmail.com|Rüthemann Peter}}&lt;br /&gt;
{{FeatureDone|Rocs|Alignment Actions to minimize crossing graph edges|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Project Files to combine graphs and algorithms|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Stepped Execution of Algorithms|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|Resurrect import-/export-features|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|User Interface Cleanup|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Cantor|Add Qalculate backend|matteo@agostinelli.me|Matteo Agostinelli}}&lt;br /&gt;
{{FeatureDone|Marble|Marble Runner plugins for Parsing files|tgridel@freedotfr|Thibaut Gridel}}&lt;br /&gt;
{{FeatureDone|Marble|(GSoC) OSM file rendering|oblaukhov.konstantin@gmail.com|Konstantin Oblaukhov}}&lt;br /&gt;
{{FeatureDone|Marble|Marble Graphics Scene (Performance of Vector Drawing)|oblaukhov.konstantin@gmail.com|Konstantin Oblaukhov}}&lt;br /&gt;
{{FeatureDone|Marble|Gps Info Plugin|tgridel@freedotfr|Thibaut Gridel}}&lt;br /&gt;
{{FeatureDone|Marble|Improve LatLonEdit to allow input as Radian and DM|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureInProgress|Marble|Routing API|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureInProgress|Marble|Adjustable Map Orientation (Rotation in Screen Plane)|bbeschow@cs.tu-berlin.de|Bernhard Beschow}}&lt;br /&gt;
{{FeatureInProgress|Marble|Speedometer Plugin|bbeschow@cs.tu-berlin.de|Bernhard Beschow}}&lt;br /&gt;
{{FeatureInProgress|Marble|Plasma Runner for geo coords and Marble bookmarks|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureInProgress|Marble|Make bookmark editor support editing the lonlat coordinates|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Marble|Fix GeoDataCoordinates parsing from a QString|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|KTurtle|Add modulo command|nielsslot@gmaildotcom|Niels Slot}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegames=&lt;br /&gt;
{| cellspa/cing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureDone|Libkdegames|Improve graphics performance in all games by standardizing on the use of Qt Raster Graphics.|stefan.majewsky@googlemail.com|Stefan Majewsky}}{{FeatureInProgress|KSudoku|Add a new generator and solver to KSudoku, based on published algorithms. This will provide a full range of puzzle difficulties, rather than mainly easy puzzles, and will address bug 217925 and its duplicates 228614 and 237262 (now nearly two years old).|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureInProgress|KSudoku|Re-implement the puzzle-symmetry feature.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureInProgress|KSudoku|Re-order the puzzle types on the welcome screen.  Use KDE Games Difficulty combo-box instead of a slider. Save user's choices of puzzle between sessions.  Do minor tidy-ups of the user interface.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureInProgress|KGoldrunner|Add the championship level &amp;quot;Gold Rush&amp;quot; game, with Traditional rules, contributed by Gabriel Miltschitzky.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureInProgress|KGoldrunner|Add the championship level &amp;quot;Jail Break&amp;quot; game, with KGoldrunner rules, contributed by Gabriel Miltschitzky.|iandw.au@gmail.com|Ian Wadham}}|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegraphics=&lt;br /&gt;
{| cellspa/cing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureInProgress|Okular|Reset Form Action support|aacid@kde.org|Albert Astals Cid}}&lt;br /&gt;
{{FeatureInProgress|Gwenview|Animated image transitions|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|JuK|MPRIS2 support|alex.merry@kdemail.net|Alex Merry}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdenetwork=&lt;br /&gt;
{| cellspa/cing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureInProgress|KGet|Better interaction for torrents if they are seeding and other downloads stopped because of that|mat69@gmx.net|Matthias Fuchs}}&lt;br /&gt;
{{FeatureInProgress|KGet|Class that handles deleting files|mat69@gmx.net|Matthias Fuchs}}&lt;br /&gt;
{{FeatureInProgress|Kopete|Akonadi History Plugin |roideuniverse@gmail.com|Kaushik Saurabh}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdepim  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo&lt;br /&gt;
|attachment:/ kio-slave&lt;br /&gt;
|Implement kio-slave to access (email) attachments in Akonadi&lt;br /&gt;
|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|KAlarm|Port to Akonadi|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo&lt;br /&gt;
|sieve: implement wizard&lt;br /&gt;
|Implement wizard to help user to create sieve script&lt;br /&gt;
|montel@kde.org|Montel Laurent}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress&lt;br /&gt;
|HTML Replies&lt;br /&gt;
|Give messagecomposer (especially for KMail) the ability to compose replies in HTML&lt;br /&gt;
|nyblom@kde.org|Torgny Nyblom}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeplasma-addons =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Kimpanel|Port kimpanel to DataEngine based one|wengxt@gmail.com|Xuetian Weng}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdesdk  =&lt;br /&gt;
&lt;br /&gt;
{| cellspa/cing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|Okteta|Add a general KPart adapter to Kasten, than finish port of Okteta KPart to Okteta Kasten|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add global toggle option for the offset display, hex or decimal|kossebau@kde.org|Friedrich W. H. Kossebau}} &lt;br /&gt;
{{FeatureTodo|Okteta|Add Kate-like combined dialogs to query for actions on files|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add Kate-like search tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add Okular like embedded notifications|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for import by drop, both url and data|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for memory mapping of files and 64-bit addressing|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for jobs like io, printing, string search or filter|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add view profiles, incl. editor/manager|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|copy again puts also a value or char variant of the data to clipboard|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Improve the titels of the changes to the bytearray to be more descriptive, best using ids to avoid text string|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Make all user interaction in the KastenCore managers plugin-based|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Merge row and column widgets into one|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks and other view settings for next load|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add custom datatypes to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureInProgress|Okteta|Add Flags Datatype to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureInProgress|dolphin-plugins|Mercurial plugin for Dolphin|vishesh3y@gmail.com|Vishesh Yadav}} &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeutils=&lt;br /&gt;
{| cellspa/cing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureInProgress|ark|Allow Ark to be used as a KPart again|rakuco@FreeBSD.org|Raphael Kubo da Costa}}&lt;br /&gt;
{{FeatureInProgress|ksecrets|A suite of tools related to the KSecretsService infrastructure|kde@rusu.info|Valentin Rusu}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Simple_Workflow</id>
		<title>Development/Git/Simple Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Simple_Workflow"/>
				<updated>2011-06-14T00:51:18Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* Making Local Changes and Commits */ Mention git add -p&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DANGER WILL ROBINSON!!!  THIS IS AN INCOMPLETE DRAFT!!!&lt;br /&gt;
&lt;br /&gt;
= Simple Workflow =&lt;br /&gt;
&lt;br /&gt;
This workflow is designed to be as close as possible to the KDE SVN Workflow.  It is only recommended to be used for the first week or two of using Git with KDE while you become familiar with the basic Git commands.  Once comfortable with the basic commands you should then move on to the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
In particular this workflow will not use git branches, merging or any remote features, all feature development work will be in the local master branch (the Git name for trunk).&lt;br /&gt;
&lt;br /&gt;
More detailed information can be found on the main [[Development/Git|KDE Git page]], in particular the [[Development/Git#Git_for_SVN_Users|Git for Subversion Users]] section.  More details on the various commands can be found on the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
This section documents how to set up Git and your code repository for development.&lt;br /&gt;
&lt;br /&gt;
=== Configure Git ===&lt;br /&gt;
&lt;br /&gt;
Follow all the instructions on the [[Development/Git/Configuration|KDE Git Configuration]] page, the instructions given below assume you are using the standard configuration.&lt;br /&gt;
&lt;br /&gt;
=== Clone your repository ===&lt;br /&gt;
&lt;br /&gt;
You need to copy your central code repository from git.kde.org into your local KDE source directory.  In Git this process is called cloning.&lt;br /&gt;
&lt;br /&gt;
To clone your project repository:&lt;br /&gt;
&lt;br /&gt;
 cd your/source/dir&lt;br /&gt;
 git clone kde:&amp;lt;project&amp;gt;&lt;br /&gt;
 cd &amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example to clone kdelibs:&lt;br /&gt;
&lt;br /&gt;
 git clone kde:kdelibs&lt;br /&gt;
 cd kdelibs&lt;br /&gt;
&lt;br /&gt;
See the [[Getting_Started/Build/Environment#Source_Path|KDE Build Environment]] page for advice on structuring your source directory.&lt;br /&gt;
&lt;br /&gt;
If you have a slow or intermittent internet connection then you may prefer to [[Getting_Started/Sources/Snapshots|download a snapshot tarball]] to bootstrap your clone.  You can copy the required command from the [https://projects.kde.org/projects projects.kde.org] Repository page for your project, but it will be of the form:&lt;br /&gt;
&lt;br /&gt;
 wget -c http://anongit.kde.org/&amp;lt;project&amp;gt;/&amp;lt;project&amp;gt;-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This section documents the basic workflow for developing a new feature for the master unstable branch (aka trunk in subversion).  You will first make local code changes and commit them in your local repository before pushing them to the central code repository.&lt;br /&gt;
&lt;br /&gt;
=== Making Local Changes and Commits ===&lt;br /&gt;
&lt;br /&gt;
Changing and building code itself is no different from when using subversion, but how changed files are managed and committed is very different, as are the names and commands used.  There are two key differences:&lt;br /&gt;
* Locally modified files can have different states that determine whether they get committed or not.&lt;br /&gt;
* Committing code is only local, it does not push your changes to the central repository which requires an extra step.&lt;br /&gt;
&lt;br /&gt;
Files in a git repository can be in various states:&lt;br /&gt;
* Untracked: Files in your local repository directory that Git is not tracking changes to and are not in the central repository.&lt;br /&gt;
* Tracked: Files that git tracks changes to.&lt;br /&gt;
* Unstaged: Tracked files that have had modifications to them but have not yet been staged or committed.&lt;br /&gt;
* Staged: Tracked files that have had modifications made to them and have been marked to be included in the next commit&lt;br /&gt;
* Committed: Files that git is tracking and that have been included in a local commit that may or may not be included in the central repository.&lt;br /&gt;
&lt;br /&gt;
Note that different versions of a file can be in the Untracked and Tracked states at the same time.&lt;br /&gt;
&lt;br /&gt;
This difference between staged and unstaged changes allows you to choose what changes you want in each commit.&lt;br /&gt;
&lt;br /&gt;
To see what the current status of your local repository is:&lt;br /&gt;
&lt;br /&gt;
  git status&lt;br /&gt;
&lt;br /&gt;
This will show you the status as follows;&lt;br /&gt;
&lt;br /&gt;
  # On branch master&lt;br /&gt;
  # Your branch is ahead of 'origin/master' by 1 commit.&lt;br /&gt;
  #&lt;br /&gt;
  # Changes to be committed:&lt;br /&gt;
  #   (use &amp;quot;git reset HEAD &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
  #&lt;br /&gt;
  #       modified:   src/kstagedfile.h&lt;br /&gt;
  #&lt;br /&gt;
  # Changed but not updated:&lt;br /&gt;
  #   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to update what will be committed)&lt;br /&gt;
  #   (use &amp;quot;git checkout -- &amp;lt;file&amp;gt;...&amp;quot; to discard changes in working directory)&lt;br /&gt;
  #&lt;br /&gt;
  #       modified:   src/kchangedfile.h&lt;br /&gt;
  #&lt;br /&gt;
  # Untracked files:&lt;br /&gt;
  #   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to include in what will be committed)&lt;br /&gt;
  #&lt;br /&gt;
  #       src/kuntrackedfile.txt&lt;br /&gt;
&lt;br /&gt;
To add a changed file to the staging area, or to add a new file to be tracked by the repository:&lt;br /&gt;
&lt;br /&gt;
  git add &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also partially add the contents of a file to the staging area, so that it is easier to commit sets of related changes;&lt;br /&gt;
&lt;br /&gt;
  git add -p &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To delete a file from the repository and add the deletion to the staging area:&lt;br /&gt;
&lt;br /&gt;
  git rm &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reset a staged file to be unstaged but without losing your changes:&lt;br /&gt;
&lt;br /&gt;
  git reset HEAD &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reset an unstaged file to the currently committed version and irretrievably throw away your changes:&lt;br /&gt;
&lt;br /&gt;
  git checkout &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The git commit command differs from the svn commit command in only creating a commit in your local clone of the repository, it does not merge the changes into the central repository.  This allows you to queue up a series of small changes before merging them into the central repository.  This local commit history can [[Development/Git/Recipes#Interactive_Rebasing|also be modified]] before you finally do push the changes.&lt;br /&gt;
&lt;br /&gt;
The git commit command adds all files in the staged state into a new commit:&lt;br /&gt;
&lt;br /&gt;
  git commit&lt;br /&gt;
&lt;br /&gt;
If you have only changed tracked files then you can automatically add all tracked files that have been changed into staging and commit all the staged files in one command:&lt;br /&gt;
&lt;br /&gt;
  git commit -a&lt;br /&gt;
&lt;br /&gt;
=== Seeing What You Changed ===&lt;br /&gt;
&lt;br /&gt;
To see a list of what files have been changed but not yet committed:&lt;br /&gt;
&lt;br /&gt;
 git status&lt;br /&gt;
&lt;br /&gt;
To see what code changes have been made but not yet staged:&lt;br /&gt;
&lt;br /&gt;
 git diff&lt;br /&gt;
 git diff &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see what code changes have been staged but not committed:&lt;br /&gt;
&lt;br /&gt;
 git diff --staged&lt;br /&gt;
 git diff --staged &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see all the commits made:&lt;br /&gt;
&lt;br /&gt;
 git log&lt;br /&gt;
&lt;br /&gt;
To see what changes were made in a commit:&lt;br /&gt;
&lt;br /&gt;
 git show &amp;lt;sha5&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Git diff, log and show commands have many options for changing what is shown.  In particular diff can show the difference in a file between any two commits.&lt;br /&gt;
&lt;br /&gt;
=== Pushing Your Changes To The Central Repository ===&lt;br /&gt;
&lt;br /&gt;
When you are ready to push all your local commits to the central repository, you first need to update to the latest version of the master code in the central repository:&lt;br /&gt;
&lt;br /&gt;
  git pull --rebase&lt;br /&gt;
&lt;br /&gt;
This will update the underlying master code and apply your commits on the top of the latest version of the central repository, this is known as a rebase.  Normally the rebase should apply cleanly, but sometimes there will be a conflict which you will need to resolve before you can complete applying your commits.  There will be instructions given by git on how to complete the commit if required [TODO: get a copy of the output text].&lt;br /&gt;
&lt;br /&gt;
Note that you cannot rebase if you have uncommitted changes.  If you need to rebase but have changes that you don't want to commit, then you will need to [[Development/Git/Recipes#Stashing_Changes|stash the changes]].&lt;br /&gt;
&lt;br /&gt;
Depending on how much the underlying master code has changed you may want to rebuild and test the code after doing the rebase, before doing a final rebase.  It is recommended to do regular rebase's between commits to keep the possibility of conflicts to a minimum.&lt;br /&gt;
&lt;br /&gt;
Once your local commits have been cleanly reapplied you can push your changes to the central repository:&lt;br /&gt;
&lt;br /&gt;
  git push origin master:master&lt;br /&gt;
&lt;br /&gt;
Git will report if the push was successful or explain why it failed.&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
If your bug fix is only for unstable master then no special actions are required, just follow the same steps as the feature development workflow above.&lt;br /&gt;
&lt;br /&gt;
If your bug fix is for a stable branch then this cannot be done without using git branches.  The steps required will be given below but not explained in any detail.  If possible it is recommended you wait until you are familiar with using the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
The steps detailed below are very inefficient as they use the same build tree and environment for unstable and stable which may cause a lot of rebuilding.  A more efficient method is detailed in the [[Development/Git/Feature_Branch_Workflow#Local_Bug_Fixing|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
First, find out the name of the stable branch you want to bug fix:&lt;br /&gt;
&lt;br /&gt;
 git branch -r&lt;br /&gt;
&lt;br /&gt;
This will list all the branches on the central repository, for example kdelibs includes the following branches:&lt;br /&gt;
&lt;br /&gt;
  origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
  origin/KDE/4.5&lt;br /&gt;
  origin/KDE/4.6&lt;br /&gt;
  origin/kdecore/klocale-win&lt;br /&gt;
  origin/kdeui/kdatetimeedit&lt;br /&gt;
  origin/master&lt;br /&gt;
&lt;br /&gt;
Here origin/KDE/4.6 is the 4.6 release of kdelibs which we will use for this example.&lt;br /&gt;
&lt;br /&gt;
Next, create a local branch pointing to the stable release branch you want to bug fix:&lt;br /&gt;
&lt;br /&gt;
 git branch --track &amp;lt;local-branch&amp;gt; &amp;lt;remote-branch&amp;gt;&lt;br /&gt;
 git checkout &amp;lt;local-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example, to create a local kdelibs 4.6 stable branch:&lt;br /&gt;
&lt;br /&gt;
 git branch --track KDE/4.6 origin/KDE/4.6&lt;br /&gt;
 git checkout KDE/4.6&lt;br /&gt;
&lt;br /&gt;
If you have previously created the stable branch and want to do a new bug fix, then simply check it out again and update it:&lt;br /&gt;
&lt;br /&gt;
 git checkout &amp;lt;local-branch&amp;gt;&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
&lt;br /&gt;
Now make your required changes to the code, build and test.  Once done commit the code changes to your local repository, remembering to include the BUG: and FIXED-IN: keywords in the commit message:&lt;br /&gt;
&lt;br /&gt;
 git commit -a&lt;br /&gt;
&lt;br /&gt;
Make a note of the sha5 of the commit as you will need it later to copy the commit to the unstable master branch.&lt;br /&gt;
&lt;br /&gt;
Now you can push your changes into the central code repository:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin &amp;lt;local-branch&amp;gt;:&amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For your kdelibs example this would be:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin KDE/4.6:KDE/4.6&lt;br /&gt;
&lt;br /&gt;
The next step is to apply the bug fix to the unstable master branch.  First check the master branch back out and update it:&lt;br /&gt;
&lt;br /&gt;
 git checkout master&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
&lt;br /&gt;
Next, Git makes it easy to apply the existing bug fix from the stable branch by using the cherry-pick command:&lt;br /&gt;
&lt;br /&gt;
 git cherry-pick -x -e &amp;lt;sha5 of stable commit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will allow you to edit the commit message as required before the change is committed.  If the patch does not apply cleanly a message will appear and the changes will not be committed.  You will then have to edit the changes and finish the commit manually.&lt;br /&gt;
&lt;br /&gt;
Once cleanly applied and committed you can build and test the change, then push them to the central code repository:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin master:master&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Policies/Kdelibs_Coding_Style</id>
		<title>Policies/Kdelibs Coding Style</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Policies/Kdelibs_Coding_Style"/>
				<updated>2011-06-13T04:35:18Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* Vim script */ Add information about kde-emacs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document describes the recommended coding style for kdelibs. Nobody is forced to use this style, but to have consistent formatting of the source code files it is recommended to make use of it.&lt;br /&gt;
&lt;br /&gt;
'''In short: Kdelibs coding style follows the Qt 4 coding style.'''&lt;br /&gt;
&lt;br /&gt;
== Indentation ==&lt;br /&gt;
* No tabs&lt;br /&gt;
* 4 Spaces instead of one tab&lt;br /&gt;
&lt;br /&gt;
== Variable declaration ==&lt;br /&gt;
* Each variable declaration on a new line&lt;br /&gt;
* Each new word in a variable name starts with a capital letter (so-called camelCase)&lt;br /&gt;
* Avoid abbreviations&lt;br /&gt;
* Take useful names. No short names, except:&lt;br /&gt;
** Single character variable names can denote counters and temporary variables whose purpose is obvious&lt;br /&gt;
** Variables and functions start with a lowercase letter&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;code cppqt&amp;gt;&lt;br /&gt;
// wrong&lt;br /&gt;
KProgressBar *prbar;&lt;br /&gt;
QString prtxt, errstr;&lt;br /&gt;
&lt;br /&gt;
// correct&lt;br /&gt;
KProgressBar *downloadProgressBar;&lt;br /&gt;
QString progressText;&lt;br /&gt;
QString errorString;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Whitespace ==&lt;br /&gt;
* Use blank lines to group statements&lt;br /&gt;
* Use only one empty line&lt;br /&gt;
* Use one space after each keyword&lt;br /&gt;
* For pointers or references, use a single space before '*' or '&amp;amp;', but not after&lt;br /&gt;
* No space after a cast&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;code cppqt&amp;gt;&lt;br /&gt;
// wrong&lt;br /&gt;
QString* myString;&lt;br /&gt;
if(true){&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// correct&lt;br /&gt;
QString *myString;&lt;br /&gt;
if (true) {&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Braces ==&lt;br /&gt;
As a base rule, the left curly brace goes on the same line as the start of the statement.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;code cppqt&amp;gt;&lt;br /&gt;
// wrong&lt;br /&gt;
if (true)&lt;br /&gt;
{&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// correct&lt;br /&gt;
if (true) {&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exception: Function implementations, class, struct and namespace declarations always have the opening brace on the start of a line.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;code cppqt&amp;gt;&lt;br /&gt;
void debug(int i)&lt;br /&gt;
{&lt;br /&gt;
    qDebug(&amp;quot;foo: %i&amp;quot;, i);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
class Debug&lt;br /&gt;
{&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use curly braces even when the body of a conditional statement contains only one line.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;code cppqt&amp;gt;&lt;br /&gt;
// wrong&lt;br /&gt;
if (true)&lt;br /&gt;
    return true;&lt;br /&gt;
&lt;br /&gt;
for (int i = 0; i &amp;lt; 10; ++i)&lt;br /&gt;
    qDebug(&amp;quot;%i&amp;quot;, i);&lt;br /&gt;
&lt;br /&gt;
// correct&lt;br /&gt;
if (true) {&lt;br /&gt;
    return true;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
for (int i = 0; i &amp;lt; 10; ++i) {&lt;br /&gt;
    qDebug(&amp;quot;%i&amp;quot;, i);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Switch statements ==&lt;br /&gt;
Case labels are on the same column as the switch&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;code cppqt&amp;gt;&lt;br /&gt;
switch (myEnum) {&lt;br /&gt;
case Value1:&lt;br /&gt;
    doSomething();&lt;br /&gt;
    break;&lt;br /&gt;
case Value2:&lt;br /&gt;
    doSomethingElse();&lt;br /&gt;
    // fall through&lt;br /&gt;
default:&lt;br /&gt;
    defaultHandling();&lt;br /&gt;
    break;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Line breaks ==&lt;br /&gt;
Try to keep lines shorter than 100 characters, inserting line breaks as necessary.&lt;br /&gt;
&lt;br /&gt;
== Qt Includes ==&lt;br /&gt;
* If you add #includes for Qt classes, use both the module and class name.  This allows library code to be used by applications without excessive compiler include paths.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;code cppqt&amp;gt;&lt;br /&gt;
// wrong&lt;br /&gt;
#include &amp;lt;QString&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// right&lt;br /&gt;
#include &amp;lt;QtCore/QString&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Artistic Style (astyle) automatic code formatting ==&lt;br /&gt;
You can use [http://astyle.sourceforge.net/ astyle] (&amp;gt;=1.23) to format code or to test if you have followed this document. Run the following command:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
astyle --indent=spaces=4 --brackets=linux \&lt;br /&gt;
       --indent-labels --pad-oper --unpad-paren \&lt;br /&gt;
       --one-line=keep-statements --convert-tabs \&lt;br /&gt;
       --indent-preprocessor \&lt;br /&gt;
       `find -type f -name '*.cpp'` `find -type f -name '*.cc'` `find -type f -name '*.h'`&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
A related shell script could be found for unix in [http://websvn.kde.org/*checkout*/trunk/KDE/kdesdk/scripts/astyle-kdelibs kdesdk/scripts/astyle-kdelibs] and for windows in [http://websvn.kde.org/*checkout*/trunk/KDE/kdesdk/scripts/astyle-kdelibs.bat kdesdk/scripts/astyle-kdelibs.bat].&lt;br /&gt;
&lt;br /&gt;
== Emacs and Vim scripts ==&lt;br /&gt;
The &amp;quot;scripts&amp;quot; directory in the kdesdk module contains, among other useful things, some useful additions to the Emacs and Vim text editors that make it easier to edit KDE code with them.&lt;br /&gt;
 &lt;br /&gt;
=== Emacs ===&lt;br /&gt;
The [http://websvn.kde.org/trunk/KDE/kdesdk/scripts/kde-emacs kde-emacs] directory contains a set of key bindings, macros and general useful code. It is compatible with both GNU Emacs and XEmacs.&lt;br /&gt;
&lt;br /&gt;
To start using kde-emacs, add the following to your .emacs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
(add-to-list 'load-path &amp;quot;/path/to/kde-emacs&amp;quot;)&lt;br /&gt;
(require 'kde-emacs)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Many settings can be changed by editing the &amp;quot;kde-emacs&amp;quot; group via &amp;lt;tt&amp;gt;M-x customize-group&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
For more information, including what the key bindings are and what additional settings you could add to your .emacs, please check &amp;lt;tt&amp;gt;kde-emacs.el&amp;lt;/tt&amp;gt; itself.&lt;br /&gt;
&lt;br /&gt;
=== Vim ===&lt;br /&gt;
You can find a vim script in [http://websvn.kde.org/*checkout*/trunk/KDE/kdesdk/scripts/kde-devel-vim.vim kdesdk/scripts/kde-devel-vim.vim] that helps you to keep the coding style correct. In addition to defaulting to the kdelibs coding style it will automatically use the correct style for Solid and kdepim code. If you want to add rules for other projects feel free to add them in the SetCodingStyle function.&lt;br /&gt;
&lt;br /&gt;
To use the script, include it in your {{path|~/.vimrc}} like this:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
source /path/to/kde/sources/kdesdk/scripts/kde-devel-vim.vim&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Document started by Urs Wolfer. Some parts of this document have been adopted from the Qt Coding Style document posted by Zack Rusin on kde-core-devel.&lt;br /&gt;
&lt;br /&gt;
[[Category:Policies]] [[Category:C++]]&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Utils</id>
		<title>Projects/Utils</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Utils"/>
				<updated>2010-11-06T06:02:42Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: Okteta has moved to kdesdk, remove it from this page.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Projects/Utils}}&lt;br /&gt;
&lt;br /&gt;
== About kdeutils ==&lt;br /&gt;
&lt;br /&gt;
The module kdeutils is a compilation of various desktop utilities.&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
*[http://utils.kde.org/ Homepage of the KDE Utilities]&lt;br /&gt;
*[mailto:kde-utils-devel@kde.org kde-utils-devel@kde.org] mailing list (for developers): [https://mail.kde.org/mailman/listinfo/kde-utils-devel subscribe], [http://lists.kde.org/?l=kde-utils-devel&amp;amp;r=1&amp;amp;w=2 archives]&lt;br /&gt;
&lt;br /&gt;
== Utilities ==&lt;br /&gt;
&lt;br /&gt;
=== [[Projects/Utils/Ark|Ark]] ===&lt;br /&gt;
[[Image:ark-logo.png|noframe|right|40px]]&lt;br /&gt;
&lt;br /&gt;
Archiving tool&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== kcalc ===&lt;br /&gt;
[[Image:kcalc-logo.svg|noframe|right|40px]]&lt;br /&gt;
&lt;br /&gt;
Scientific calculator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== kcharselect ===&lt;br /&gt;
[[Image:kcharselect-logo.svg|noframe|right|40px]]&lt;br /&gt;
&lt;br /&gt;
Select special characters from any fonts and put them into the clipboard.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== kdessh ===&lt;br /&gt;
&amp;lt;!-- [[Image:kdessh-logo.svg|noframe|right|40px]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Front end to ssh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== kdf ===&lt;br /&gt;
[[Image:kdf-logo.png|noframe|right|40px]]&lt;br /&gt;
&lt;br /&gt;
Like 'df', a graphical free disk space viewer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [[Projects/Utils/kdelirc|kdelirc]] ===&lt;br /&gt;
[[Image:Kdelirc-logo.svg|noframe|right|40px]]&lt;br /&gt;
&lt;br /&gt;
A lirc frontend for kde&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== kfloppy ===&lt;br /&gt;
[[Image:kfloppy-logo.png|noframe|right|40px]]&lt;br /&gt;
&lt;br /&gt;
Format a floppy disk with this program.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== kgpg ===&lt;br /&gt;
[[Image:kgpg-logo.png|noframe|right|40px]]&lt;br /&gt;
&lt;br /&gt;
Graphical GPG frontend.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ktimer ===&lt;br /&gt;
[[Image:ktimer-logo.png|noframe|right|40px]]&lt;br /&gt;
&lt;br /&gt;
Execute programs after some time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== kwallet ===&lt;br /&gt;
[[Image:kwalletmanager-logo.svg|noframe|right|40px]]&lt;br /&gt;
&lt;br /&gt;
KDE wallet management tool&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Utils/kwallet|Developer information]]&lt;br /&gt;
&lt;br /&gt;
=== printer-applet ===&lt;br /&gt;
[[Image:printer-applet-logo.png|noframe|right|40px]]&lt;br /&gt;
&lt;br /&gt;
A system tray utility that shows current print jobs, shows printer warnings and errors and shows when printers that have been plugged in for the first time are being auto-configured by hal-cups-utils.&lt;br /&gt;
&lt;br /&gt;
=== SuperKaramba ===&lt;br /&gt;
[[Image:superkarama-logo.svg|noframe|right|40px]]&lt;br /&gt;
&lt;br /&gt;
Version of Karamba with python scripting&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Utils/SuperKaramba|SuperKaramba]]&lt;br /&gt;
&lt;br /&gt;
=== sweeper ===&lt;br /&gt;
[[Image:sweeper-logo.png|noframe|right|40px]]&lt;br /&gt;
&lt;br /&gt;
Cleans unwanted traces the user leaves on the system.&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Utils</id>
		<title>Projects/Utils</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Utils"/>
				<updated>2010-11-06T06:02:07Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: Remove extra empty line.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Projects/Utils}}&lt;br /&gt;
&lt;br /&gt;
== About kdeutils ==&lt;br /&gt;
&lt;br /&gt;
The module kdeutils is a compilation of various desktop utilities.&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
*[http://utils.kde.org/ Homepage of the KDE Utilities]&lt;br /&gt;
*[mailto:kde-utils-devel@kde.org kde-utils-devel@kde.org] mailing list (for developers): [https://mail.kde.org/mailman/listinfo/kde-utils-devel subscribe], [http://lists.kde.org/?l=kde-utils-devel&amp;amp;r=1&amp;amp;w=2 archives]&lt;br /&gt;
&lt;br /&gt;
== Utilities ==&lt;br /&gt;
&lt;br /&gt;
=== [[Projects/Utils/Ark|Ark]] ===&lt;br /&gt;
[[Image:ark-logo.png|noframe|right|40px]]&lt;br /&gt;
&lt;br /&gt;
Archiving tool&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== kcalc ===&lt;br /&gt;
[[Image:kcalc-logo.svg|noframe|right|40px]]&lt;br /&gt;
&lt;br /&gt;
Scientific calculator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== kcharselect ===&lt;br /&gt;
[[Image:kcharselect-logo.svg|noframe|right|40px]]&lt;br /&gt;
&lt;br /&gt;
Select special characters from any fonts and put them into the clipboard.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== kdessh ===&lt;br /&gt;
&amp;lt;!-- [[Image:kdessh-logo.svg|noframe|right|40px]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Front end to ssh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== kdf ===&lt;br /&gt;
[[Image:kdf-logo.png|noframe|right|40px]]&lt;br /&gt;
&lt;br /&gt;
Like 'df', a graphical free disk space viewer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [[Projects/Utils/kdelirc|kdelirc]] ===&lt;br /&gt;
[[Image:Kdelirc-logo.svg|noframe|right|40px]]&lt;br /&gt;
&lt;br /&gt;
A lirc frontend for kde&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== kfloppy ===&lt;br /&gt;
[[Image:kfloppy-logo.png|noframe|right|40px]]&lt;br /&gt;
&lt;br /&gt;
Format a floppy disk with this program.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== kgpg ===&lt;br /&gt;
[[Image:kgpg-logo.png|noframe|right|40px]]&lt;br /&gt;
&lt;br /&gt;
Graphical GPG frontend.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ktimer ===&lt;br /&gt;
[[Image:ktimer-logo.png|noframe|right|40px]]&lt;br /&gt;
&lt;br /&gt;
Execute programs after some time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== kwallet ===&lt;br /&gt;
[[Image:kwalletmanager-logo.svg|noframe|right|40px]]&lt;br /&gt;
&lt;br /&gt;
KDE wallet management tool&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Utils/kwallet|Developer information]]&lt;br /&gt;
&lt;br /&gt;
=== [[Projects/Okteta|Okteta]] ===&lt;br /&gt;
[[Image:okteta-logo.png|noframe|right|40px]]&lt;br /&gt;
&lt;br /&gt;
Editor for the raw data of files (also named hex editor or binary editor)&lt;br /&gt;
&lt;br /&gt;
=== printer-applet ===&lt;br /&gt;
[[Image:printer-applet-logo.png|noframe|right|40px]]&lt;br /&gt;
&lt;br /&gt;
A system tray utility that shows current print jobs, shows printer warnings and errors and shows when printers that have been plugged in for the first time are being auto-configured by hal-cups-utils.&lt;br /&gt;
&lt;br /&gt;
=== SuperKaramba ===&lt;br /&gt;
[[Image:superkarama-logo.svg|noframe|right|40px]]&lt;br /&gt;
&lt;br /&gt;
Version of Karamba with python scripting&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Utils/SuperKaramba|SuperKaramba]]&lt;br /&gt;
&lt;br /&gt;
=== sweeper ===&lt;br /&gt;
[[Image:sweeper-logo.png|noframe|right|40px]]&lt;br /&gt;
&lt;br /&gt;
Cleans unwanted traces the user leaves on the system.&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Getting_Started/Build/Distributions/FreeBSD</id>
		<title>Getting Started/Build/Distributions/FreeBSD</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Getting_Started/Build/Distributions/FreeBSD"/>
				<updated>2010-11-06T05:45:05Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: kdelibs/kjs/api should not have those weird build problems anymore.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Getting_Started/Build/KDE4/FreeBSD}}&lt;br /&gt;
{{KDE4}}&lt;br /&gt;
&lt;br /&gt;
This page focuses on building KDE '''trunk''' on FreeBSD. For building and using stable KDE releases on FreeBSD, you should use the ports collection -- see the [http://wiki.freebsd.org/KDE4 FreeBSD Wiki] for more information.&lt;br /&gt;
&lt;br /&gt;
==Required Ports==&lt;br /&gt;
* devel/boost-python (for pimlibs)&lt;br /&gt;
* devel/cmake&lt;br /&gt;
* devel/dbus&lt;br /&gt;
* devel/git&lt;br /&gt;
* devel/subversion&lt;br /&gt;
* graphics/libungif (for libs)&lt;br /&gt;
* misc/shared-mime-info (for libs)&lt;br /&gt;
* multimedia/libxine (for base-or config with KDE4_DISABLE_MULTIMEDIA)&lt;br /&gt;
* security/gpgme (for pimlibs)&lt;br /&gt;
* textproc/libxslt&lt;br /&gt;
* textproc/redland (for support/soprano)&lt;br /&gt;
* x11/xorg&lt;br /&gt;
* x11-toolkits/shared-desktop-ontologies&lt;br /&gt;
&lt;br /&gt;
==Differences from the normal build process==&lt;br /&gt;
The page on [[Getting_Started/Build/KDE4|building KDE4]] trunk makes a few assumptions about your environment. Note that FreeBSD's dbus and cmake ports will work (so those sections can be skipped).&lt;br /&gt;
&lt;br /&gt;
Sometimes, building with '''make''' can fail on some modules. You should try using '''gmake''' instead.&lt;br /&gt;
&lt;br /&gt;
==Using kdesrc-build==&lt;br /&gt;
The [http://kdesrc-build.kde.org/ kdesrc-build] script can be used on FreeBSD. Note that if there are errors building qt-copy or libs, look at the issues below and fix them, then continue the build using kdesrc-build.&lt;br /&gt;
&lt;br /&gt;
==Errors compiling qt-copy==&lt;br /&gt;
; My build of qt-copy is failing when I have Qt4 from ports installed.&lt;br /&gt;
For some reason, the configure system will sometimes put -I/usr/local/include (which contains the ports version of qt4 headers) into the general CXXFLAGS variable. Note that there is an INCPATH variable for these include paths which should also contain -I/usr/local/include. The difference is in the compile line; CXXFLAGS's appears first, whereas the paths in INCPATH are ordered properly such that the local (current build) headers are checked first. You need to go into the directory where the build is failing (use the previous lines before the error message), and open the Makefile. You should see the the -I/usr/local/include line in the CXXFLAGS line, and you can safetly remove it IF there is a -I/usr/local/include line in INCPATH.&lt;br /&gt;
This seems to usually happen in build_dir/qt-copy/src/plugins/sqldrivers/psql/Makefile&lt;br /&gt;
&lt;br /&gt;
; My build of qt-copy is failing in qatomic_x86_64.h on my 64bit system.&lt;br /&gt;
This is a GCC3 issue with 64-bit systems, so FreeBSD 7.x and later shouldn't be affected.&lt;br /&gt;
&lt;br /&gt;
See [http://trolltech.com/developer/task-tracker/index_html?method=entry&amp;amp;id=161994 Trolltech's bugzilla] for a description of this problem.  It's an issue with gcc3 and 64bit systems, with a particular optimization. Possible solutions described there include &amp;quot;To work around this bug, recompile qstylesheetstyle.cpp with removing -O2, or add the -fno-gcse compiler option.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Errors compiling kdesupport==&lt;br /&gt;
; System-wide Qt4 keeps being found instead of qt-copy&lt;br /&gt;
Sometimes, /usr/local/bin/qmake-qt4 insists on being found instead of qt-copy's qmake, which in turn makes cmake use the system-wide Qt during compilation. If everything else fails, you can pass -DQT_QMAKE_EXECUTABLE=/your/path/qmake to cmake.&lt;br /&gt;
&lt;br /&gt;
; Cannot link to polkit-dbus&lt;br /&gt;
If all polkit-related ports are correctly installed and the error persists, you most likely need to export LIBRARY_PATH and include /usr/local/lib in it.&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Getting_Started/Build/Distributions/FreeBSD</id>
		<title>Getting Started/Build/Distributions/FreeBSD</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Getting_Started/Build/Distributions/FreeBSD"/>
				<updated>2010-11-06T05:43:30Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* Required Ports */ Add x11-toolkits/shared-desktop-ontologies to the list of required ports&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Getting_Started/Build/KDE4/FreeBSD}}&lt;br /&gt;
{{KDE4}}&lt;br /&gt;
&lt;br /&gt;
This page focuses on building KDE '''trunk''' on FreeBSD. For building and using stable KDE releases on FreeBSD, you should use the ports collection -- see the [http://wiki.freebsd.org/KDE4 FreeBSD Wiki] for more information.&lt;br /&gt;
&lt;br /&gt;
==Required Ports==&lt;br /&gt;
* devel/boost-python (for pimlibs)&lt;br /&gt;
* devel/cmake&lt;br /&gt;
* devel/dbus&lt;br /&gt;
* devel/git&lt;br /&gt;
* devel/subversion&lt;br /&gt;
* graphics/libungif (for libs)&lt;br /&gt;
* misc/shared-mime-info (for libs)&lt;br /&gt;
* multimedia/libxine (for base-or config with KDE4_DISABLE_MULTIMEDIA)&lt;br /&gt;
* security/gpgme (for pimlibs)&lt;br /&gt;
* textproc/libxslt&lt;br /&gt;
* textproc/redland (for support/soprano)&lt;br /&gt;
* x11/xorg&lt;br /&gt;
* x11-toolkits/shared-desktop-ontologies&lt;br /&gt;
&lt;br /&gt;
==Differences from the normal build process==&lt;br /&gt;
The page on [[Getting_Started/Build/KDE4|building KDE4]] trunk makes a few assumptions about your environment. Note that FreeBSD's dbus and cmake ports will work (so those sections can be skipped).&lt;br /&gt;
&lt;br /&gt;
Sometimes, building with '''make''' can fail on some modules. You should try using '''gmake''' instead.&lt;br /&gt;
&lt;br /&gt;
==Using kdesrc-build==&lt;br /&gt;
The [http://kdesrc-build.kde.org/ kdesrc-build] script can be used on FreeBSD. Note that if there are errors building qt-copy or libs, look at the issues below and fix them, then continue the build using kdesrc-build.&lt;br /&gt;
&lt;br /&gt;
==Errors compiling qt-copy==&lt;br /&gt;
; My build of qt-copy is failing when I have Qt4 from ports installed.&lt;br /&gt;
For some reason, the configure system will sometimes put -I/usr/local/include (which contains the ports version of qt4 headers) into the general CXXFLAGS variable. Note that there is an INCPATH variable for these include paths which should also contain -I/usr/local/include. The difference is in the compile line; CXXFLAGS's appears first, whereas the paths in INCPATH are ordered properly such that the local (current build) headers are checked first. You need to go into the directory where the build is failing (use the previous lines before the error message), and open the Makefile. You should see the the -I/usr/local/include line in the CXXFLAGS line, and you can safetly remove it IF there is a -I/usr/local/include line in INCPATH.&lt;br /&gt;
This seems to usually happen in build_dir/qt-copy/src/plugins/sqldrivers/psql/Makefile&lt;br /&gt;
&lt;br /&gt;
; My build of qt-copy is failing in qatomic_x86_64.h on my 64bit system.&lt;br /&gt;
This is a GCC3 issue with 64-bit systems, so FreeBSD 7.x and later shouldn't be affected.&lt;br /&gt;
&lt;br /&gt;
See [http://trolltech.com/developer/task-tracker/index_html?method=entry&amp;amp;id=161994 Trolltech's bugzilla] for a description of this problem.  It's an issue with gcc3 and 64bit systems, with a particular optimization. Possible solutions described there include &amp;quot;To work around this bug, recompile qstylesheetstyle.cpp with removing -O2, or add the -fno-gcse compiler option.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Errors compiling kdesupport==&lt;br /&gt;
; System-wide Qt4 keeps being found instead of qt-copy&lt;br /&gt;
Sometimes, /usr/local/bin/qmake-qt4 insists on being found instead of qt-copy's qmake, which in turn makes cmake use the system-wide Qt during compilation. If everything else fails, you can pass -DQT_QMAKE_EXECUTABLE=/your/path/qmake to cmake.&lt;br /&gt;
&lt;br /&gt;
; Cannot link to polkit-dbus&lt;br /&gt;
If all polkit-related ports are correctly installed and the error persists, you most likely need to export LIBRARY_PATH and include /usr/local/lib in it.&lt;br /&gt;
&lt;br /&gt;
==Errors compiling kdelibs==&lt;br /&gt;
; Building kdelibs fails in kdelibs/kjs/api&lt;br /&gt;
For some reason, cmake is messing up the include orders in this subdirectory. As a temporary fix, open kdelibs/kjs/CMakeLists.txt, and replace include_directories( ${CMAKE_SOURCE_DIR}/kjs ${CMAKE_SOURCE_DIR}/wtf ${KDEWIN32_INCLUDES} ) with include_directories(${KDE4_KDECORE_INCLUDES} ${CMAKE_SOURCE_DIR}/wtf ${KDEWIN32_INCLUDES} )&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Getting_Started/Build/Distributions/FreeBSD</id>
		<title>Getting Started/Build/Distributions/FreeBSD</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Getting_Started/Build/Distributions/FreeBSD"/>
				<updated>2010-11-06T05:42:44Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* Required Ports */ Add devel/git to the list of required ports&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Getting_Started/Build/KDE4/FreeBSD}}&lt;br /&gt;
{{KDE4}}&lt;br /&gt;
&lt;br /&gt;
This page focuses on building KDE '''trunk''' on FreeBSD. For building and using stable KDE releases on FreeBSD, you should use the ports collection -- see the [http://wiki.freebsd.org/KDE4 FreeBSD Wiki] for more information.&lt;br /&gt;
&lt;br /&gt;
==Required Ports==&lt;br /&gt;
* devel/boost-python (for pimlibs)&lt;br /&gt;
* devel/cmake&lt;br /&gt;
* devel/dbus&lt;br /&gt;
* devel/git&lt;br /&gt;
* devel/subversion&lt;br /&gt;
* graphics/libungif (for libs)&lt;br /&gt;
* misc/shared-mime-info (for libs)&lt;br /&gt;
* multimedia/libxine (for base-or config with KDE4_DISABLE_MULTIMEDIA)&lt;br /&gt;
* security/gpgme (for pimlibs)&lt;br /&gt;
* textproc/libxslt&lt;br /&gt;
* textproc/redland (for support/soprano)&lt;br /&gt;
* x11/xorg&lt;br /&gt;
&lt;br /&gt;
==Differences from the normal build process==&lt;br /&gt;
The page on [[Getting_Started/Build/KDE4|building KDE4]] trunk makes a few assumptions about your environment. Note that FreeBSD's dbus and cmake ports will work (so those sections can be skipped).&lt;br /&gt;
&lt;br /&gt;
Sometimes, building with '''make''' can fail on some modules. You should try using '''gmake''' instead.&lt;br /&gt;
&lt;br /&gt;
==Using kdesrc-build==&lt;br /&gt;
The [http://kdesrc-build.kde.org/ kdesrc-build] script can be used on FreeBSD. Note that if there are errors building qt-copy or libs, look at the issues below and fix them, then continue the build using kdesrc-build.&lt;br /&gt;
&lt;br /&gt;
==Errors compiling qt-copy==&lt;br /&gt;
; My build of qt-copy is failing when I have Qt4 from ports installed.&lt;br /&gt;
For some reason, the configure system will sometimes put -I/usr/local/include (which contains the ports version of qt4 headers) into the general CXXFLAGS variable. Note that there is an INCPATH variable for these include paths which should also contain -I/usr/local/include. The difference is in the compile line; CXXFLAGS's appears first, whereas the paths in INCPATH are ordered properly such that the local (current build) headers are checked first. You need to go into the directory where the build is failing (use the previous lines before the error message), and open the Makefile. You should see the the -I/usr/local/include line in the CXXFLAGS line, and you can safetly remove it IF there is a -I/usr/local/include line in INCPATH.&lt;br /&gt;
This seems to usually happen in build_dir/qt-copy/src/plugins/sqldrivers/psql/Makefile&lt;br /&gt;
&lt;br /&gt;
; My build of qt-copy is failing in qatomic_x86_64.h on my 64bit system.&lt;br /&gt;
This is a GCC3 issue with 64-bit systems, so FreeBSD 7.x and later shouldn't be affected.&lt;br /&gt;
&lt;br /&gt;
See [http://trolltech.com/developer/task-tracker/index_html?method=entry&amp;amp;id=161994 Trolltech's bugzilla] for a description of this problem.  It's an issue with gcc3 and 64bit systems, with a particular optimization. Possible solutions described there include &amp;quot;To work around this bug, recompile qstylesheetstyle.cpp with removing -O2, or add the -fno-gcse compiler option.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Errors compiling kdesupport==&lt;br /&gt;
; System-wide Qt4 keeps being found instead of qt-copy&lt;br /&gt;
Sometimes, /usr/local/bin/qmake-qt4 insists on being found instead of qt-copy's qmake, which in turn makes cmake use the system-wide Qt during compilation. If everything else fails, you can pass -DQT_QMAKE_EXECUTABLE=/your/path/qmake to cmake.&lt;br /&gt;
&lt;br /&gt;
; Cannot link to polkit-dbus&lt;br /&gt;
If all polkit-related ports are correctly installed and the error persists, you most likely need to export LIBRARY_PATH and include /usr/local/lib in it.&lt;br /&gt;
&lt;br /&gt;
==Errors compiling kdelibs==&lt;br /&gt;
; Building kdelibs fails in kdelibs/kjs/api&lt;br /&gt;
For some reason, cmake is messing up the include orders in this subdirectory. As a temporary fix, open kdelibs/kjs/CMakeLists.txt, and replace include_directories( ${CMAKE_SOURCE_DIR}/kjs ${CMAKE_SOURCE_DIR}/wtf ${KDEWIN32_INCLUDES} ) with include_directories(${KDE4_KDECORE_INCLUDES} ${CMAKE_SOURCE_DIR}/wtf ${KDEWIN32_INCLUDES} )&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Getting_Started/Build/Distributions/FreeBSD</id>
		<title>Getting Started/Build/Distributions/FreeBSD</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Getting_Started/Build/Distributions/FreeBSD"/>
				<updated>2010-11-06T05:41:47Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* Required Ports */ bash is not required for kdesrc-build&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Getting_Started/Build/KDE4/FreeBSD}}&lt;br /&gt;
{{KDE4}}&lt;br /&gt;
&lt;br /&gt;
This page focuses on building KDE '''trunk''' on FreeBSD. For building and using stable KDE releases on FreeBSD, you should use the ports collection -- see the [http://wiki.freebsd.org/KDE4 FreeBSD Wiki] for more information.&lt;br /&gt;
&lt;br /&gt;
==Required Ports==&lt;br /&gt;
* devel/boost-python (for pimlibs)&lt;br /&gt;
* devel/cmake&lt;br /&gt;
* devel/dbus&lt;br /&gt;
* devel/subversion&lt;br /&gt;
* graphics/libungif (for libs)&lt;br /&gt;
* misc/shared-mime-info (for libs)&lt;br /&gt;
* multimedia/libxine (for base-or config with KDE4_DISABLE_MULTIMEDIA)&lt;br /&gt;
* security/gpgme (for pimlibs)&lt;br /&gt;
* textproc/libxslt&lt;br /&gt;
* textproc/redland (for support/soprano)&lt;br /&gt;
* x11/xorg&lt;br /&gt;
&lt;br /&gt;
==Differences from the normal build process==&lt;br /&gt;
The page on [[Getting_Started/Build/KDE4|building KDE4]] trunk makes a few assumptions about your environment. Note that FreeBSD's dbus and cmake ports will work (so those sections can be skipped).&lt;br /&gt;
&lt;br /&gt;
Sometimes, building with '''make''' can fail on some modules. You should try using '''gmake''' instead.&lt;br /&gt;
&lt;br /&gt;
==Using kdesrc-build==&lt;br /&gt;
The [http://kdesrc-build.kde.org/ kdesrc-build] script can be used on FreeBSD. Note that if there are errors building qt-copy or libs, look at the issues below and fix them, then continue the build using kdesrc-build.&lt;br /&gt;
&lt;br /&gt;
==Errors compiling qt-copy==&lt;br /&gt;
; My build of qt-copy is failing when I have Qt4 from ports installed.&lt;br /&gt;
For some reason, the configure system will sometimes put -I/usr/local/include (which contains the ports version of qt4 headers) into the general CXXFLAGS variable. Note that there is an INCPATH variable for these include paths which should also contain -I/usr/local/include. The difference is in the compile line; CXXFLAGS's appears first, whereas the paths in INCPATH are ordered properly such that the local (current build) headers are checked first. You need to go into the directory where the build is failing (use the previous lines before the error message), and open the Makefile. You should see the the -I/usr/local/include line in the CXXFLAGS line, and you can safetly remove it IF there is a -I/usr/local/include line in INCPATH.&lt;br /&gt;
This seems to usually happen in build_dir/qt-copy/src/plugins/sqldrivers/psql/Makefile&lt;br /&gt;
&lt;br /&gt;
; My build of qt-copy is failing in qatomic_x86_64.h on my 64bit system.&lt;br /&gt;
This is a GCC3 issue with 64-bit systems, so FreeBSD 7.x and later shouldn't be affected.&lt;br /&gt;
&lt;br /&gt;
See [http://trolltech.com/developer/task-tracker/index_html?method=entry&amp;amp;id=161994 Trolltech's bugzilla] for a description of this problem.  It's an issue with gcc3 and 64bit systems, with a particular optimization. Possible solutions described there include &amp;quot;To work around this bug, recompile qstylesheetstyle.cpp with removing -O2, or add the -fno-gcse compiler option.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Errors compiling kdesupport==&lt;br /&gt;
; System-wide Qt4 keeps being found instead of qt-copy&lt;br /&gt;
Sometimes, /usr/local/bin/qmake-qt4 insists on being found instead of qt-copy's qmake, which in turn makes cmake use the system-wide Qt during compilation. If everything else fails, you can pass -DQT_QMAKE_EXECUTABLE=/your/path/qmake to cmake.&lt;br /&gt;
&lt;br /&gt;
; Cannot link to polkit-dbus&lt;br /&gt;
If all polkit-related ports are correctly installed and the error persists, you most likely need to export LIBRARY_PATH and include /usr/local/lib in it.&lt;br /&gt;
&lt;br /&gt;
==Errors compiling kdelibs==&lt;br /&gt;
; Building kdelibs fails in kdelibs/kjs/api&lt;br /&gt;
For some reason, cmake is messing up the include orders in this subdirectory. As a temporary fix, open kdelibs/kjs/CMakeLists.txt, and replace include_directories( ${CMAKE_SOURCE_DIR}/kjs ${CMAKE_SOURCE_DIR}/wtf ${KDEWIN32_INCLUDES} ) with include_directories(${KDE4_KDECORE_INCLUDES} ${CMAKE_SOURCE_DIR}/wtf ${KDEWIN32_INCLUDES} )&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Getting_Started/Build/Distributions/FreeBSD</id>
		<title>Getting Started/Build/Distributions/FreeBSD</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Getting_Started/Build/Distributions/FreeBSD"/>
				<updated>2010-11-06T05:41:11Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* Required Ports */ Sort the required ports list alphabetically&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Getting_Started/Build/KDE4/FreeBSD}}&lt;br /&gt;
{{KDE4}}&lt;br /&gt;
&lt;br /&gt;
This page focuses on building KDE '''trunk''' on FreeBSD. For building and using stable KDE releases on FreeBSD, you should use the ports collection -- see the [http://wiki.freebsd.org/KDE4 FreeBSD Wiki] for more information.&lt;br /&gt;
&lt;br /&gt;
==Required Ports==&lt;br /&gt;
* devel/boost-python (for pimlibs)&lt;br /&gt;
* devel/cmake&lt;br /&gt;
* devel/dbus&lt;br /&gt;
* devel/subversion&lt;br /&gt;
* graphics/libungif (for libs)&lt;br /&gt;
* misc/shared-mime-info (for libs)&lt;br /&gt;
* multimedia/libxine (for base-or config with KDE4_DISABLE_MULTIMEDIA)&lt;br /&gt;
* security/gpgme (for pimlibs)&lt;br /&gt;
* shells/bash (if using kdesvn-build)&lt;br /&gt;
* textproc/libxslt&lt;br /&gt;
* textproc/redland (for support/soprano)&lt;br /&gt;
* x11/xorg&lt;br /&gt;
&lt;br /&gt;
==Differences from the normal build process==&lt;br /&gt;
The page on [[Getting_Started/Build/KDE4|building KDE4]] trunk makes a few assumptions about your environment. Note that FreeBSD's dbus and cmake ports will work (so those sections can be skipped).&lt;br /&gt;
&lt;br /&gt;
Sometimes, building with '''make''' can fail on some modules. You should try using '''gmake''' instead.&lt;br /&gt;
&lt;br /&gt;
==Using kdesrc-build==&lt;br /&gt;
The [http://kdesrc-build.kde.org/ kdesrc-build] script can be used on FreeBSD. Note that if there are errors building qt-copy or libs, look at the issues below and fix them, then continue the build using kdesrc-build.&lt;br /&gt;
&lt;br /&gt;
==Errors compiling qt-copy==&lt;br /&gt;
; My build of qt-copy is failing when I have Qt4 from ports installed.&lt;br /&gt;
For some reason, the configure system will sometimes put -I/usr/local/include (which contains the ports version of qt4 headers) into the general CXXFLAGS variable. Note that there is an INCPATH variable for these include paths which should also contain -I/usr/local/include. The difference is in the compile line; CXXFLAGS's appears first, whereas the paths in INCPATH are ordered properly such that the local (current build) headers are checked first. You need to go into the directory where the build is failing (use the previous lines before the error message), and open the Makefile. You should see the the -I/usr/local/include line in the CXXFLAGS line, and you can safetly remove it IF there is a -I/usr/local/include line in INCPATH.&lt;br /&gt;
This seems to usually happen in build_dir/qt-copy/src/plugins/sqldrivers/psql/Makefile&lt;br /&gt;
&lt;br /&gt;
; My build of qt-copy is failing in qatomic_x86_64.h on my 64bit system.&lt;br /&gt;
This is a GCC3 issue with 64-bit systems, so FreeBSD 7.x and later shouldn't be affected.&lt;br /&gt;
&lt;br /&gt;
See [http://trolltech.com/developer/task-tracker/index_html?method=entry&amp;amp;id=161994 Trolltech's bugzilla] for a description of this problem.  It's an issue with gcc3 and 64bit systems, with a particular optimization. Possible solutions described there include &amp;quot;To work around this bug, recompile qstylesheetstyle.cpp with removing -O2, or add the -fno-gcse compiler option.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Errors compiling kdesupport==&lt;br /&gt;
; System-wide Qt4 keeps being found instead of qt-copy&lt;br /&gt;
Sometimes, /usr/local/bin/qmake-qt4 insists on being found instead of qt-copy's qmake, which in turn makes cmake use the system-wide Qt during compilation. If everything else fails, you can pass -DQT_QMAKE_EXECUTABLE=/your/path/qmake to cmake.&lt;br /&gt;
&lt;br /&gt;
; Cannot link to polkit-dbus&lt;br /&gt;
If all polkit-related ports are correctly installed and the error persists, you most likely need to export LIBRARY_PATH and include /usr/local/lib in it.&lt;br /&gt;
&lt;br /&gt;
==Errors compiling kdelibs==&lt;br /&gt;
; Building kdelibs fails in kdelibs/kjs/api&lt;br /&gt;
For some reason, cmake is messing up the include orders in this subdirectory. As a temporary fix, open kdelibs/kjs/CMakeLists.txt, and replace include_directories( ${CMAKE_SOURCE_DIR}/kjs ${CMAKE_SOURCE_DIR}/wtf ${KDEWIN32_INCLUDES} ) with include_directories(${KDE4_KDECORE_INCLUDES} ${CMAKE_SOURCE_DIR}/wtf ${KDEWIN32_INCLUDES} )&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Getting_Started/Build/Distributions/FreeBSD</id>
		<title>Getting Started/Build/Distributions/FreeBSD</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Getting_Started/Build/Distributions/FreeBSD"/>
				<updated>2010-11-06T05:39:28Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* Using kdesvn-build */ kdesvn-build is now kdesrc-build&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Getting_Started/Build/KDE4/FreeBSD}}&lt;br /&gt;
{{KDE4}}&lt;br /&gt;
&lt;br /&gt;
This page focuses on building KDE '''trunk''' on FreeBSD. For building and using stable KDE releases on FreeBSD, you should use the ports collection -- see the [http://wiki.freebsd.org/KDE4 FreeBSD Wiki] for more information.&lt;br /&gt;
&lt;br /&gt;
==Required Ports==&lt;br /&gt;
* devel/dbus&lt;br /&gt;
* devel/cmake&lt;br /&gt;
* x11/xorg&lt;br /&gt;
* devel/subversion&lt;br /&gt;
* textproc/redland (for support/soprano)&lt;br /&gt;
* misc/shared-mime-info (for libs)&lt;br /&gt;
* graphics/libungif (for libs)&lt;br /&gt;
* devel/boost-python (for pimlibs)&lt;br /&gt;
* security/gpgme (for pimlibs)&lt;br /&gt;
* multimedia/libxine (for base-or config with KDE4_DISABLE_MULTIMEDIA)&lt;br /&gt;
* shells/bash (if using kdesvn-build)&lt;br /&gt;
* textproc/libxslt&lt;br /&gt;
&lt;br /&gt;
==Differences from the normal build process==&lt;br /&gt;
The page on [[Getting_Started/Build/KDE4|building KDE4]] trunk makes a few assumptions about your environment. Note that FreeBSD's dbus and cmake ports will work (so those sections can be skipped).&lt;br /&gt;
&lt;br /&gt;
Sometimes, building with '''make''' can fail on some modules. You should try using '''gmake''' instead.&lt;br /&gt;
&lt;br /&gt;
==Using kdesrc-build==&lt;br /&gt;
The [http://kdesrc-build.kde.org/ kdesrc-build] script can be used on FreeBSD. Note that if there are errors building qt-copy or libs, look at the issues below and fix them, then continue the build using kdesrc-build.&lt;br /&gt;
&lt;br /&gt;
==Errors compiling qt-copy==&lt;br /&gt;
; My build of qt-copy is failing when I have Qt4 from ports installed.&lt;br /&gt;
For some reason, the configure system will sometimes put -I/usr/local/include (which contains the ports version of qt4 headers) into the general CXXFLAGS variable. Note that there is an INCPATH variable for these include paths which should also contain -I/usr/local/include. The difference is in the compile line; CXXFLAGS's appears first, whereas the paths in INCPATH are ordered properly such that the local (current build) headers are checked first. You need to go into the directory where the build is failing (use the previous lines before the error message), and open the Makefile. You should see the the -I/usr/local/include line in the CXXFLAGS line, and you can safetly remove it IF there is a -I/usr/local/include line in INCPATH.&lt;br /&gt;
This seems to usually happen in build_dir/qt-copy/src/plugins/sqldrivers/psql/Makefile&lt;br /&gt;
&lt;br /&gt;
; My build of qt-copy is failing in qatomic_x86_64.h on my 64bit system.&lt;br /&gt;
This is a GCC3 issue with 64-bit systems, so FreeBSD 7.x and later shouldn't be affected.&lt;br /&gt;
&lt;br /&gt;
See [http://trolltech.com/developer/task-tracker/index_html?method=entry&amp;amp;id=161994 Trolltech's bugzilla] for a description of this problem.  It's an issue with gcc3 and 64bit systems, with a particular optimization. Possible solutions described there include &amp;quot;To work around this bug, recompile qstylesheetstyle.cpp with removing -O2, or add the -fno-gcse compiler option.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Errors compiling kdesupport==&lt;br /&gt;
; System-wide Qt4 keeps being found instead of qt-copy&lt;br /&gt;
Sometimes, /usr/local/bin/qmake-qt4 insists on being found instead of qt-copy's qmake, which in turn makes cmake use the system-wide Qt during compilation. If everything else fails, you can pass -DQT_QMAKE_EXECUTABLE=/your/path/qmake to cmake.&lt;br /&gt;
&lt;br /&gt;
; Cannot link to polkit-dbus&lt;br /&gt;
If all polkit-related ports are correctly installed and the error persists, you most likely need to export LIBRARY_PATH and include /usr/local/lib in it.&lt;br /&gt;
&lt;br /&gt;
==Errors compiling kdelibs==&lt;br /&gt;
; Building kdelibs fails in kdelibs/kjs/api&lt;br /&gt;
For some reason, cmake is messing up the include orders in this subdirectory. As a temporary fix, open kdelibs/kjs/CMakeLists.txt, and replace include_directories( ${CMAKE_SOURCE_DIR}/kjs ${CMAKE_SOURCE_DIR}/wtf ${KDEWIN32_INCLUDES} ) with include_directories(${KDE4_KDECORE_INCLUDES} ${CMAKE_SOURCE_DIR}/wtf ${KDEWIN32_INCLUDES} )&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Getting_Started/Build/Distributions/FreeBSD</id>
		<title>Getting Started/Build/Distributions/FreeBSD</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Getting_Started/Build/Distributions/FreeBSD"/>
				<updated>2010-11-06T05:37:13Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: Reword the introduction text a little bit.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Getting_Started/Build/KDE4/FreeBSD}}&lt;br /&gt;
{{KDE4}}&lt;br /&gt;
&lt;br /&gt;
This page focuses on building KDE '''trunk''' on FreeBSD. For building and using stable KDE releases on FreeBSD, you should use the ports collection -- see the [http://wiki.freebsd.org/KDE4 FreeBSD Wiki] for more information.&lt;br /&gt;
&lt;br /&gt;
==Required Ports==&lt;br /&gt;
* devel/dbus&lt;br /&gt;
* devel/cmake&lt;br /&gt;
* x11/xorg&lt;br /&gt;
* devel/subversion&lt;br /&gt;
* textproc/redland (for support/soprano)&lt;br /&gt;
* misc/shared-mime-info (for libs)&lt;br /&gt;
* graphics/libungif (for libs)&lt;br /&gt;
* devel/boost-python (for pimlibs)&lt;br /&gt;
* security/gpgme (for pimlibs)&lt;br /&gt;
* multimedia/libxine (for base-or config with KDE4_DISABLE_MULTIMEDIA)&lt;br /&gt;
* shells/bash (if using kdesvn-build)&lt;br /&gt;
* textproc/libxslt&lt;br /&gt;
&lt;br /&gt;
==Differences from the normal build process==&lt;br /&gt;
The page on [[Getting_Started/Build/KDE4|building KDE4]] trunk makes a few assumptions about your environment. Note that FreeBSD's dbus and cmake ports will work (so those sections can be skipped).&lt;br /&gt;
&lt;br /&gt;
Sometimes, building with '''make''' can fail on some modules. You should try using '''gmake''' instead.&lt;br /&gt;
&lt;br /&gt;
==Using kdesvn-build==&lt;br /&gt;
The [http://kdesvn-build.kde.org/ kdesvn-build] script can be used on FreeBSD. Note that if there are errors building qt-copy or libs, look at the issues below and fix them, then continue the build using kdesvn-build.&lt;br /&gt;
&lt;br /&gt;
==Errors compiling qt-copy==&lt;br /&gt;
; My build of qt-copy is failing when I have Qt4 from ports installed.&lt;br /&gt;
For some reason, the configure system will sometimes put -I/usr/local/include (which contains the ports version of qt4 headers) into the general CXXFLAGS variable. Note that there is an INCPATH variable for these include paths which should also contain -I/usr/local/include. The difference is in the compile line; CXXFLAGS's appears first, whereas the paths in INCPATH are ordered properly such that the local (current build) headers are checked first. You need to go into the directory where the build is failing (use the previous lines before the error message), and open the Makefile. You should see the the -I/usr/local/include line in the CXXFLAGS line, and you can safetly remove it IF there is a -I/usr/local/include line in INCPATH.&lt;br /&gt;
This seems to usually happen in build_dir/qt-copy/src/plugins/sqldrivers/psql/Makefile&lt;br /&gt;
&lt;br /&gt;
; My build of qt-copy is failing in qatomic_x86_64.h on my 64bit system.&lt;br /&gt;
This is a GCC3 issue with 64-bit systems, so FreeBSD 7.x and later shouldn't be affected.&lt;br /&gt;
&lt;br /&gt;
See [http://trolltech.com/developer/task-tracker/index_html?method=entry&amp;amp;id=161994 Trolltech's bugzilla] for a description of this problem.  It's an issue with gcc3 and 64bit systems, with a particular optimization. Possible solutions described there include &amp;quot;To work around this bug, recompile qstylesheetstyle.cpp with removing -O2, or add the -fno-gcse compiler option.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Errors compiling kdesupport==&lt;br /&gt;
; System-wide Qt4 keeps being found instead of qt-copy&lt;br /&gt;
Sometimes, /usr/local/bin/qmake-qt4 insists on being found instead of qt-copy's qmake, which in turn makes cmake use the system-wide Qt during compilation. If everything else fails, you can pass -DQT_QMAKE_EXECUTABLE=/your/path/qmake to cmake.&lt;br /&gt;
&lt;br /&gt;
; Cannot link to polkit-dbus&lt;br /&gt;
If all polkit-related ports are correctly installed and the error persists, you most likely need to export LIBRARY_PATH and include /usr/local/lib in it.&lt;br /&gt;
&lt;br /&gt;
==Errors compiling kdelibs==&lt;br /&gt;
; Building kdelibs fails in kdelibs/kjs/api&lt;br /&gt;
For some reason, cmake is messing up the include orders in this subdirectory. As a temporary fix, open kdelibs/kjs/CMakeLists.txt, and replace include_directories( ${CMAKE_SOURCE_DIR}/kjs ${CMAKE_SOURCE_DIR}/wtf ${KDEWIN32_INCLUDES} ) with include_directories(${KDE4_KDECORE_INCLUDES} ${CMAKE_SOURCE_DIR}/wtf ${KDEWIN32_INCLUDES} )&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.5_Feature_Plan</id>
		<title>Schedules/KDE4/4.5 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.5_Feature_Plan"/>
				<updated>2010-04-25T15:23:16Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* kdeutils */ Add some remaining Ark TODOs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the SC 4.5 release. &lt;br /&gt;
&lt;br /&gt;
See also: &lt;br /&gt;
&lt;br /&gt;
*[[Schedules/KDE4/4.5 Release Schedule]] &lt;br /&gt;
*[[Schedules/KDE4/4.5 Release Goals]] &lt;br /&gt;
*[[Schedules/KDE4/4.4 Feature Plan]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Legend: &lt;br /&gt;
&lt;br /&gt;
*todo =&amp;amp;gt; not started yet &lt;br /&gt;
*in-progress =&amp;amp;gt; started, but not completed yet &lt;br /&gt;
*done =&amp;amp;gt; completed&lt;br /&gt;
&lt;br /&gt;
__TOC__ &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeadmin  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|system-config-printer-kde|Restore feature parity with KDEPrint3 where possible.||Jonathan Riddell, John Layt}} &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeartwork  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdebase-apps  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|Konqueror|Improvements in session-management|edulix@gmail.com|Eduardo Robles Elvira}} &lt;br /&gt;
{{FeatureTodo|Konqueror|Improvements in tab-bar widget|edulix@gmail.com|Eduardo Robles Elvira}} &lt;br /&gt;
{{FeatureInProgress|Konqueror|New Konqueror bookmarks using Akonadi and Nepomuk, awesome bar|edulix@gmail.com|Eduardo Robles Elvira}} &lt;br /&gt;
{{FeatureInProgress|Konsole|Finish implementing tab context menu|kurt.hindenburg@gmail.com|Kurt Hindenburg}}&lt;br /&gt;
{{FeatureInProgress|Konsole|Allow setting tab profile from file on command-line|kurt.hindenburg@gmail.com|Kurt Hindenburg}}&lt;br /&gt;
{{FeatureInProgress|Konsole|Adds support for SHELL_SESSION_ID|kurt.hindenburg@gmail.com|Kurt Hindenburg}}&lt;br /&gt;
{{FeatureInProgress|Konsole|Modernize menu layout|sasch.pe@gmx.de|Sascha Peilicke}}&lt;br /&gt;
{{FeatureInProgress|Konsole|Move to KTabWidget|sasch.pe@gmx.de|Sascha Peilicke}}&lt;br /&gt;
{{FeatureInProgress|print-manager|New Print manager KCM and applet replacement, using C++|dantti85-pk@yahoo.com.br|Daniel Nicoletti}} &lt;br /&gt;
{{FeatureDone|Dolphin|Drag and drop on tabs|toddrme2178@gmail.com|Todd}}&lt;br /&gt;
{{FeatureInProgress|Dolphin|Make view sub-menus available as toolbar buttons|toddrme2178@gmail.com|Todd}}&lt;br /&gt;
{{FeatureInProgress|Dolphin|Smooth scrolling|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdebase-runtime  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|KWallet|Single Sign On using PAM|lemma@confuego.org|Michael Leupold}}&lt;br /&gt;
{{FeatureTodo|network kioslave|Backend for LISa|kossebau@kde.org|Friedrich Kossebau}}&lt;br /&gt;
{{FeatureTodo|network kioslave|Backend for SMB|kossebau@kde.org|Friedrich Kossebau}}&lt;br /&gt;
{{FeatureTodo|network kioslave|Integrate with remote and zeroconf kioslaves|kossebau@kde.org|Friedrich Kossebau}}&lt;br /&gt;
{{FeatureTodo|Locale KCM|Add support for new KLocale features (see kdelibs section) including Digit Groups, AM/PM, etc.  Improvements to usability of existing money display options.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureInProgress|network kioslave|Backend for UPnP|kossebau@kde.org|Friedrich Kossebau}}&lt;br /&gt;
{{FeatureTodo|network kioslave| Backend to discover bluetooth devices and they services |edulix@gmail.com|Eduardo Robles Elvira}}&lt;br /&gt;
{{FeatureInProgress|bluetooth kioslave|Backend to browse bluetooth devices|edulix@gmail.com|Eduardo Robles Elvira}}&lt;br /&gt;
{{FeatureDone|Nepomuk|Monitor file system changes via inotify|trueg@kde.org|Sebastian Trueg}}&lt;br /&gt;
|}&lt;br /&gt;
{{FeatureTodo|KNotify|Route solid errors via knotify to the device notifier|wilderkde@gmail.com|Jacopo De Simoi}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdebase-workspace  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align: center;&amp;quot; colspan=&amp;quot;4&amp;quot; | Non-Plasma, Non-KWin &lt;br /&gt;
{{FeatureTodo|Icons KCM|More configurable icon sizes|christoph@maxiom.de|Christoph Feck}} &lt;br /&gt;
{{FeatureTodo|Fonts KCM|More configurable fonts|christoph@maxiom.de|Christoph Feck}} &lt;br /&gt;
{{FeatureTodo|Solid|Write a new Bluetooth backend |alex@eyeos.org|Alex Fiestas}} &lt;br /&gt;
{{FeatureTodo|Screenedges|Screenedges handling outside of kwin/plasma|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureInProgress|Oxygen style|Move window using left-mouse button on windows' empty areas|hugo@oxygen-icons.org|Hugo Pereira Da Costa}}&lt;br /&gt;
{{FeatureInProgress|Oxygen configuration|Oxygen style and decoration standalone expert configuration tool|hugo@oxygen-icons.org|Hugo Pereira Da Costa}}&lt;br /&gt;
{{FeatureInProgress|Free Space Notifier Daemon|Small daemon that warns you when your home has almost no space left|knuckles@gmail.com|Ivo Anjo}}&lt;br /&gt;
{{FeatureInProgress|Activities Daemons|Daemons to handle info about activities (kded daemon and a nepomuk service)|ivan.cukic@kde.org|Ivan Cukic}}&lt;br /&gt;
{{FeatureInProgress|Systemsettings|driconf KCM|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align: center;&amp;quot; colspan=&amp;quot;4&amp;quot; | Plasma &lt;br /&gt;
{{FeatureInProgress|systemtray/taskmanager|port the systray and tasks applet to windows|windows@kde.org|kde windows}}&lt;br /&gt;
{{FeatureInProgress|systemtray|monochrome statusnotifier based systray icons support|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureTodo|systemtray|sort icons by category|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|systemtray|put hidden icons in a popup menu|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|tasks dataengine|export all informations needed to build an applet comparable to the current one|matthieu_gallien@yahoo.fr|Matthieu Gallien}}&lt;br /&gt;
{{FeatureDone|notifications|split systemtray and notifications applet|notmart@gmail.com|Marco Martin}}  &lt;br /&gt;
{{FeatureInProgress|notifications|new look and behaviour for notifications|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureDone|notifications|support for remote applets for notifications|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureDone|netbook/SAL|use QStandardModels|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|netbook/SAL|support for drag and drop of items|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureTodo|netbook/SAL|package manager invocation from the toolbox|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureTodo|netbook/Workspace KCM|New default options for KWin: tabbox as present windows, that will be set as regular grid|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureTodo|libplasma/extenders|put extendergroups in scrollwidgets|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureTodo|libplasma/extenders|possibility to detach exteneritems as standalone windows|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|libplasma/theme|more transparent dialogs when the blur effect is enabled|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|libplasma/desktop|Activity Manager UI|chani@kde.org|Chani}}&lt;br /&gt;
{{FeatureTodo|accounts applet|a plasma widget that is a central place to add accounts to social sites like identica and opendesktop, optimized for the netbook shell|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureTodo|libplasma|Improvements to Calendar/Clock widgets. Improved config ui. Allow multiple holidays on same day. Allow multiple Holiday Regions. Weekends. etc.|john@layt.net|John Layt}} &lt;br /&gt;
{{FeatureTodo|folderview|&amp;quot;Open folder&amp;quot; icon to open folder into pop-up at request instead of automatically.|bigras.bruno@gmail.com|Bruno Bigras}}&lt;br /&gt;
{{FeatureTodo|folderview|Extend the configuration UI for nepomuksearch|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|Extend Calendar DataEngine with Akonadi calendar incidents|Allows to query calendar events/todos from Akonadi in Plasma|gladhornKDEorg|Frederik Gladhorn}}&lt;br /&gt;
{{FeatureDone|calculator|Added optional libqalculate support in the calculator runner|agostinelli@gmail.com|Matteo Agostinelli}}&lt;br /&gt;
{{FeatureInProgress|KRunner|Add some advanced sorting to KRunner using Nepomuk|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureTodo|KRunner|Improve keyboard navigation &amp;amp; command history interaction|wilderkde@gmail.com|Jacopo De Simoi}}&lt;br /&gt;
{{FeatureInProgress|device-notifier|Route all solid error notifications via knotify to the device notifier|wilderkde@gmail.com|Jacopo De Simoi}}&lt;br /&gt;
{{FeatureInProgress|device-notifier|Detailed (HAL) error notifications in the device notifier|wilderkde@gmail.com|Jacopo De Simoi}}&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align: center;&amp;quot; colspan=&amp;quot;4&amp;quot; | KWin&lt;br /&gt;
{{FeatureTodo|Tiling|Merge window tiling branch|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureInProgress|KWin|New flag to exclude windows from switchers|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureDone|KCM Decoration|New decoration kcm with previews and GHNS|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureDone|Aurorae|Port Aurorae to GraphicsView and KDecoration|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureInProgress|Aurorae|Better themeing support|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureTodo|Aurorae|Window tabbing support|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureTodo|Aurorae|Decorations on window sides|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureTodo|Aurorae|Autohiding decoration for maximized windows|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureTodo|kwin|hide windows from other activities|chani@kde.org|Chani}}&lt;br /&gt;
{{FeatureTodo|Effects|Move features from present windows to libkwineffects to make them available in desktop grid|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureTodo|Effects|Add close window button to each window in present windows/desktop grid|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureTodo|Window Tabbing/libtaskmanager|Announce window groups to be used for grouping in tasks applet|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureTodo|KWin/plasma|New window type for Plasma dashboard|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureDone|Effects|New blur effect|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|Effects|High quality scaling shader for the taskbar thumbnails|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureTodo|KWin|Hint for defining the window snap rect|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeedu  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|KStars|Display Comet Magnitudes whenever possible|akarshsimha@gmail.com|Akarsh Simha}} &lt;br /&gt;
{{FeatureTodo|KStars|Information links in-place for each technical term|akarshsimha@gmail.com|Akarsh Simha}} {{FeatureTodo|KStars|Tool to suggest star-hopping techniques???|akarshsimha@gmail.com|Akarsh Simha}} &lt;br /&gt;
{{FeatureTodo|KStars|Extend conjunction tool to have one object unspecified, but have a genre of objects specified instead|akarshsimha@gmail.com|Akarsh Simha}} &lt;br /&gt;
{{FeatureTodo|KStars|Simulate Lunar Eclipses|akarshsimha@gmail.com|Akarsh Simha}} &lt;br /&gt;
{{FeatureTodo|KStars|Simulate Satellites and Iridium Flares|akarshsimha@gmail.com|Akarsh Simha}} &lt;br /&gt;
{{FeatureTodo|KStars|Social and Geographical Integration for KStars|akarshsimha@gmail.com|Akarsh Simha}} &lt;br /&gt;
{{FeatureTodo|KStars|Marble widget for Geolocation tool|mboquien@free.fr|Médéric Boquien}} &lt;br /&gt;
{{FeatureTodo|KStars|Better printed star charts|kstars@30doradus.org|Jason Harris}} &lt;br /&gt;
{{FeatureTodo|KStars|Better rendering of comets/asteroids|kstars@30doradus.org|Jason Harris}} &lt;br /&gt;
{{FeatureTodo|KStars|Texture mapping of the skymap???|kstars@30doradus.org|Jason Harris}} &lt;br /&gt;
{{FeatureTodo|Marble|Add proper support for GPX waypoints, tracks and routes display|anders@alweb.dk|Anders Lund}}&lt;br /&gt;
{{FeatureTodo|Marble|Export map to MxN pixel bitmap|inge@lysator.liu.se|Inge Wallin}}&lt;br /&gt;
{{FeatureTodo|Marble|Map Contents translation|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Kalzium|Port Kalzium to use QGV based periodic table widget|mhanwell@kde.org|Marcus D. Hanwell}}&lt;br /&gt;
{{FeatureDone|Marble|Support OpenStreetMap Nominatim as search backend (MarbleRunner)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureInProgress|Marble|Generalized Animations with GeoDataLookAt support|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureInProgress|Marble|Online-Routing|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureInProgress|Marble|GPS improvements|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureInProgress|Marble|Maemo Support|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureInProgress|Marble|GeoGraphicsScene for Online Service Plugins|bastianholst@gmx.de|Bastian Holst}}&lt;br /&gt;
{{FeatureInProgress|Marble|Download region|jmho@c-xx.com|Jens-Michael Hoffmann}}&lt;br /&gt;
{{FeatureInProgress|Marble|Implement sun locator blendings as derived classes of Marble::Blending|jmho@c-xx.com|Jens-Michael Hoffmann}}&lt;br /&gt;
{{FeatureInProgress|Marble|Configurable texture layer blending|jmho@c-xx.com|Jens-Michael Hoffmann}}&lt;br /&gt;
{{FeatureInProgress|Marble|Import geonames city data|sonu.itbhu@gmail.com|Harshit Jain}}&lt;br /&gt;
{{FeatureInProgress|Marble|Add new icons for online services|gabrieljoel@gmail.com|Gabriel Joel Perez}}&lt;br /&gt;
{{FeatureInProgress|Marble|Download Progressbar in Qt-only version|akssps011@gmail.com|Siddharth Srivastava}}&lt;br /&gt;
{{FeatureInProgress|Marble|Bookmark support|anik.varshney@gmail.com|Kumar Anik Varshney}}&lt;br /&gt;
{{FeatureInProgress|Marble|Various Marble speed improvements|rahn@kde.org|Torsten Rahn, Ariya Hidayat}}&lt;br /&gt;
{{FeatureDone|KAlgebra|Type checker for expressions to statically detect errors|aleixpol@kde.org|Aleix Pol}}&lt;br /&gt;
{{FeatureInProgress|KAlgebra|Support for drawing implicit curves|percy.camilo.ta@gmail.com|Percy Camilo Triveño Aucahuasi}}&lt;br /&gt;
{{FeatureInProgress|Parley|Parley practice mode rewritten|gladhornKDEorg|Daniel Laidig, Frederik Gladhorn}}&lt;br /&gt;
{{FeatureTodo|Cantor|import and polish Qalculate! backend|mail@milianw.de|Milian Wolff}}&lt;br /&gt;
{{FeatureInProgress|KTurtle|Implement GHNS download support|nielsslot@gmail.com|Niels Slot}}&lt;br /&gt;
{{FeatureTodo|KTurtle|Implement GHNS upload support|nielsslot@gmail.com|Niels Slot}}&lt;br /&gt;
{{FeatureDone|Rocs|Node beautification in SVG|tcanabrava@kde.org|Tomaz Canabrava}}&lt;br /&gt;
{{FeatureDone|Rocs|Threads for not blocking the UI|tcanabrava@kde.org|Tomaz Canabrava}}&lt;br /&gt;
{{FeatureDone|Rocs|Redesigned the UI for better usability|tcanabrava@kde.org|Tomaz Canabrava}}&lt;br /&gt;
{{FeatureDone|Rocs|Plugin System|wiglot@gmail.com|Wagner Reck}}&lt;br /&gt;
{{FeatureDone|Rocs|Small plugins as examples|wiglot@gmail.com|Wagner Reck}}&lt;br /&gt;
{{FeatureDone|Rocs|Multiple Script support|tcanabrava@kde.org|Tomaz Canabrava}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegames  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureDone|KBounce|Difficulty levels|ascherfy@gmail.com|Andreas Scherf}}&lt;br /&gt;
{{FeatureDone|KBounce|Random images as background|ascherfy@gmail.com|Andreas Scherf}}&lt;br /&gt;
{{FeatureTodo|KBreakOut|Level Sets|fela.kde@gmail.com|Fela Winkelmolen}} {{FeatureTodo|KBreakOut|Sound|fela.kde@gmail.com|Fela Winkelmolen}} {{FeatureTodo|KGoldrunner|Add the Demolition game (20 levels)|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureTodo|Kolf|Replace with Kolf 2 (help on coding and artwork desired)|majewsky@gmx.net|Stefan Majewsky}} &lt;br /&gt;
{{FeatureTodo|KsirK|rewrite AI code or at least correct most problems related in bug #170777. Volunteers wanted!|kleag@free.fr|Gaël de Chalendar}} &lt;br /&gt;
{{FeatureTodo|KsirK|Boost playing over Jabber|kleag@free.fr|Gaël de Chalendar}}&lt;br /&gt;
{{FeatureTodo|KSquares|Re-write computer player, make it act faster and more intelligent|ewoerner@kde.org|Eckhart Wörner}} &lt;br /&gt;
{{FeatureTodo|KSquares|Add more types of boards: hexagonal, triangular|ewoerner@kde.org|Eckhart Wörner}} &lt;br /&gt;
{{FeatureTodo|KSudoku|Import new engine|joselb@gmx.net|Johannes Bergmeier}} &lt;br /&gt;
{{FeatureTodo|KSudoku|Port game to new engine|joselb@gmx.net|Johannes Bergmeier}} &lt;br /&gt;
{{FeatureTodo|KSudoku|Adapt view to show information provided by engine|joselb@gmx.net|Johannes Bergmeier}} &lt;br /&gt;
{{FeatureTodo|KSudoku|Add new actions to GUI|joselb@gmx.net|Johannes Bergmeier}}&lt;br /&gt;
{{FeatureTodo|Granatier|Arena Editor|k.hias@gmx.de|Mathias Kraus}}&lt;br /&gt;
{{FeatureInProgress|Kajongg|New traditional Mahjongg for four players|wolfgang@rohdewald.de|Wolfang Rohdewald}}&lt;br /&gt;
{{FeatureTodo|Kajongg|Default voices for computer players|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureTodo|Kajongg|Make playing against computer suspendable/resumable|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kigo|Load SGF games from command line and register to mimetype 'application/x-go-sgf'|sasch.pe@gmx.de|Sascha Peilicke}}&lt;br /&gt;
{{FeatureInProgress|Kigo|Fix KNewStuff provider issues|sasch.pe@gmx.de|Sascha Peilicke}}&lt;br /&gt;
{{FeatureInProgress|KTuberling|A new &amp;quot;fast switch&amp;quot; between playgrounds|alex@eyeos.org|Alex Fiestas}}&lt;br /&gt;
{{FeatureTodo|Palapeli|[https://bugs.kde.org/show_bug.cgi?id{{=}}233784 Optimize size of puzzle files in default collection]|majewsky@gmx.net|Stefan Majewsky}} &lt;br /&gt;
{{FeatureTodo|Palapeli|[https://bugs.kde.org/show_bug.cgi?id{{=}}211859 Recieve new puzzles over KNewStuff]|majewsky@gmx.net|Stefan Majewsky}} &lt;br /&gt;
{{FeatureTodo|Palapeli|[https://bugs.kde.org/show_bug.cgi?id{{=}}211861 Introduce handicap as a means to configure difficulty]|majewsky@gmx.net|Stefan Majewsky}} &lt;br /&gt;
{{FeatureTodo|Palapeli|[https://bugs.kde.org/show_bug.cgi?id{{=}}211866 Implement puzzle piles to organize pieces]|majewsky@gmx.net|Stefan Majewsky}} &lt;br /&gt;
{{FeatureTodo|Palapeli|[https://bugs.kde.org/show_bug.cgi?id{{=}}212814 Quick piece grouping]|majewsky@gmx.net|Stefan Majewsky}} &lt;br /&gt;
{{FeatureTodo|Palapeli|[https://bugs.kde.org/show_bug.cgi?id{{=}}213774 Add magnifying glass]|majewsky@gmx.net|Stefan Majewsky}} &lt;br /&gt;
{{FeatureDone|Palapeli|Rewrite puzzle table mouse interaction stack|majewsky@gmx.net|Stefan Majewsky}}&lt;br /&gt;
{{FeatureDone|Palapeli|Cleanup config dialog code|majewsky@gmx.net|Stefan Majewsky}}&lt;br /&gt;
{{FeatureTodo|Konquest|Merge the patch by Sean D'Epagnier to implement many features like map editing|pinaraf@pinaraf.info|Pierre Ducroquet}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdegraphics  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|libkdcraw|Make color management options more flexible|marcel.wiesweg@gmx.de|Marcel Wiesweg}} &lt;br /&gt;
{{FeatureDone|libksane|Improve auto-selection|kare.sars@iki.fi|K&amp;amp;aring;re S&amp;amp;auml;rs}} &lt;br /&gt;
{{FeatureInProgress|libksane|Highlight scanned area|kare.sars@iki.fi|K&amp;amp;aring;re S&amp;amp;auml;rs}} &lt;br /&gt;
{{FeatureTodo|libksane|Add public API for available devices|kare.sars@iki.fi|K&amp;amp;aring;re S&amp;amp;auml;rs}} &lt;br /&gt;
{{FeatureTodo|gwenview|Show Nepomuk info in image meta info|agateau@kde.org|Aurelien Gateau}} &lt;br /&gt;
{{FeatureTodo|gwenview|Persistent changes|agateau@kde.org|Aurelien Gateau}}&lt;br /&gt;
{{FeatureTodo|okular|Thumb creators via Okular Core|harsh@harshj.com|Harsh J}} &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdelibs  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|katepart|Add visual block mode and make the basic commands support it|ehambergαgmail.com|Erlend Hamberg}}&lt;br /&gt;
{{FeatureTodo|katepart|context dependent indenters|mail@milianw.de|Milian Wolff}}&lt;br /&gt;
{{FeatureTodo|katepart|scripting configuration, esp. for indenters|mail@milianw.de|Milian Wolff}}&lt;br /&gt;
{{FeatureTodo|katepart|list of available scripts and indenters|mail@milianw.de|Milian Wolff}}&lt;br /&gt;
{{FeatureTodo|katepart|GHNS for scripts/indenters|mail@milianw.de|Milian Wolff}}&lt;br /&gt;
{{FeatureTodo|katepart|easier writing of indenters, esp. by automatically reloading them when changed|mail@milianw.de|Milian Wolff}}&lt;br /&gt;
{{FeatureTodo|katepart|extend list of available default styles for highlighting, remove hardcoded colors from existing XML files|mail@milianw.de|Milian Wolff}}&lt;br /&gt;
{{FeatureTodo|katepart|improve AutoBrace plugin|mail@milianw.de|Milian Wolff}}&lt;br /&gt;
{{FeatureInProgress|katepart/ktexteditor|defaultvalues, regular expressions, mirroring master, scripting of templates|jowenn(you_know)kde(here_too)org|Joseph Wenninger}}&lt;br /&gt;
{{FeatureInProgress|ktexteditor plugin|InsaneHTML_LE (zencoding like selector input (light edition)|jowenn(you_know)kde(here_too)org|Joseph Wenninger}}&lt;br /&gt;
{{FeatureTodo|katepart|replace smart cursor/ranges API|cullmann@kde.org|Christoph Cullmann}}&lt;br /&gt;
{{FeatureTodo|kdeui|API to integrate KStatusNotifierItem and KNotification: both as class api and DBus specification API|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureTodo|KCalendarSystem|Add new astronomical calculation support classes to be used in kdelibs to build new astronomically based calendar systems, and in kdepim to build new version of libkholiday.|john@layt.net|John Layt}} &lt;br /&gt;
{{FeatureTodo|KCalendarSystem|Add new calendar systems: Bahaii, Coptic, Ethiopean, Chinese, Japanese, Buddhist, etc.|john@layt.net|John Layt}} &lt;br /&gt;
{{FeatureTodo|kdecore|Group policy (Windows) backend for KAuth|drf@kde.org|Dario Freddi}}&lt;br /&gt;
{{FeatureTodo|KDEPrint|If no file printing support in Qt4.5, migrate FilePrinter class from Okular to enable file printing for all apps via QPrinter.  To be discussed on k-c-d first.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureTodo|KDEPrint|Add framework for standard actions for 'Send to...' for e-mail, fax, etc by printing to PDF/PS.|john@layt.net|John Layt}} &lt;br /&gt;
{{FeatureTodo|kdeui|Implement caps-lock warning for password entry widgets|lemma@confuego.org|Michael Leupold}}&lt;br /&gt;
{{FeatureTodo|KLocale|Implement support for number grouping other than thousands using LC_NUMERIC and LC_MONETARY formats, e.g. India 00 00 000 and China 0000 0000.|john@layt.net|John Layt}} &lt;br /&gt;
{{FeatureTodo|KLocale|Add configuration for AM/PM symbols.|john@layt.net|John Layt}} &lt;br /&gt;
{{FeatureTodo|KLocale|Full POSIX compliant format support for date, time, numbers and money.|john@layt.net|John Layt}} &lt;br /&gt;
{{FeatureTodo|KLocale|Implement more 'named' date/time formats, e.g. ISO, UnixTimestamp, RFC3339, etc.|john@layt.net|John Layt}} &lt;br /&gt;
{{FeatureTodo|KLocale|Add Full date format in addition to existing short and long.|john@layt.net|John Layt}} &lt;br /&gt;
{{FeatureTodo|KLocale|Add default colour to optionally display negative numbers.|john@layt.net|John Layt}} &lt;br /&gt;
{{FeatureTodo|KLocale|Implement separate backends for each supported platform/desktop to use platform localisation in place of KDE locale.|john@layt.net|John Layt}} &lt;br /&gt;
{{FeatureTodo|KLocale|Implement support for additional Country Code standards: ISO Alpha 3, ISO Numeric 3, FIPS-10.|john@layt.net|John Layt}} &lt;br /&gt;
{{FeatureTodo|KLocale|Implement support for Country Code sub-regions, i.e. States/Provinces/etc. Needed for new KHolidays.|john@layt.net|John Layt}} &lt;br /&gt;
{{FeatureTodo|kdeui|Improvements to KDatePicker/KDateTable for feature parity with Plasma Calendar widget, i.e. holiday support, select calendar system, etc.|john@layt.net|John Layt}} &lt;br /&gt;
{{FeatureTodo|kdeui|DBus interface in StatusNotifierItem to connect it with freedesktop notifications instances|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureTodo|Khtml|Improvements in kwallet integration|edulix@gmail.com|Eduardo Robles Elvira}}&lt;br /&gt;
{{FeatureTodo|Khtml|Basic audio/video tag support|germain@ebooksfrance.org|Michael Howell and Germain Garand}} &lt;br /&gt;
{{FeatureTodo|Khtml|Implement more of DOM3's CSSOM View module|germain@ebooksfrance.org|Germain Garand}}&lt;br /&gt;
{{FeatureDone|KNewStuff|Improved Download Dialog, multiple previews, better integration of details, changelog is displayed|gladhornKDEorg|Frederik Gladhorn}}&lt;br /&gt;
{{FeatureInProgress|KNewStuff|Icon view mode|gladhornKDEorg|Reza Shah, Frederik Gladhorn}}&lt;br /&gt;
{{FeatureDone|KNewStuff|Upload dialog rewritten: It now supports updating of old uploads, previews, most data that can be entered on the website and allows direct login to the account|gladhornKDEorg|Frederik Gladhorn}}&lt;br /&gt;
{{FeatureTodo|kdeui|Social About Dialog|teo@kde.org|Téo Mrnjavac}}&lt;br /&gt;
{{FeatureTodo|kdeui|Generic find bar widget|sasch.pe@gmx.de|Sascha Peilicke}}&lt;br /&gt;
{{FeatureTodo|kio|SSL client certificate support|ahartmetz@gmail.com|Andreas Hartmetz}}&lt;br /&gt;
{{FeatureTodo|kio|SSL root certificate list GUI + backend|ahartmetz@gmail.com|Andreas Hartmetz}}&lt;br /&gt;
{{FeatureDone|kio|Add &amp;quot;apply to all&amp;quot; checkbox in renamedialog and allow for automatic renaming|toddrme2178@gmail.com|Todd}}&lt;br /&gt;
{{FeatureInProgress|kio|Port renamedialog to KFileMetaDataWidget|toddrme2178@gmail.com|Todd}}&lt;br /&gt;
{{FeatureInProgress|kio|Don't select extension in renamedialog|toddrme2178@gmail.com|Todd}}&lt;br /&gt;
{{FeatureDone|kio|Better listing of applications in file &amp;quot;open with&amp;quot; context menu|toddrme2178@gmail.com|Todd}}&lt;br /&gt;
{{FeatureInProgress|kio|Context menu entry to open all files in their default applications|toddrme2178@gmail.com|Todd}}&lt;br /&gt;
{{FeatureDone|kfile|Scroll wheel support for breadcrumb bar|toddrme2178@gmail.com|Todd}}&lt;br /&gt;
{{FeatureInProgress|kfile|Show all sub-folders in breadcrumb bar|toddrme2178@gmail.com|Todd}}&lt;br /&gt;
{{FeatureInProgress|kfile|Middle-click on subfolder in the breadcrumb bar to open in a new tab|toddrme2178@gmail.com|Todd}}&lt;br /&gt;
{{FeatureTodo|kfile|Easier access to protocols in breadcrumb bar|toddrme2178@gmail.com|Todd}}&lt;br /&gt;
{{FeatureTodo|kfile|Show sub-sub-folders (and so on) in breadcrumb bar|toddrme2178@gmail.com|Todd}}&lt;br /&gt;
{{FeatureInProgress|kdecore|Generic shared-memory cache|mpyne@kde.org|Michael Pyne}}&lt;br /&gt;
{{FeatureInProgress|kdeui|Redesigned icon cache|mpyne@kde.org|Michael Pyne}}&lt;br /&gt;
{{FeatureTodo|kdeui|Support alpha channel in KColor classes|christoph@maxiom.de|Christoph Feck}}&lt;br /&gt;
{{FeatureDone|nepomuk|Redesigned Nepomuk::TagWidget which can now actually be used by applications|trueg@kde.org|Sebastian Trueg}}&lt;br /&gt;
{{FeatureInProgress|kio|Remember downloads via Nepomuk|trueg@kde.org|Sebastian Trueg}}&lt;br /&gt;
{{FeatureDone|solid|Broadcast mount/unmount messages across processes|wilderkde@gmail.com|Jacopo De Simoi}}&lt;br /&gt;
{{FeatureTodo|solid|Add parent matching to predicate parsing|wilderkde@gmail.com|Jacopo De Simoi}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|JuK|Remove Qt/KDE3 support lib requirements -- will move to KDE 4.5 feature plan|mpyne@kde.org|Michael Pyne}}&lt;br /&gt;
{{FeatureTodo|JuK|Allow setting covers directly from URLs supported by KIO - drag/drop already allows this however -- will move to KDE 4.5 feature plan|mpyne.org|Michael Pyne}}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdenetwork  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|Kopete|UPnp Support|mattr@kde.org|Matt Rogers}} &lt;br /&gt;
{{FeatureTodo|Kopete|Jabber Jingle video support|detlev.casanova@gmail.com|Detlev Casanova}} &lt;br /&gt;
{{FeatureTodo|Kopete|Jabber Jingle ICE support|detlev.casanova@gmail.com|Detlev Casanova}} &lt;br /&gt;
{{FeatureTodo|Kopete|Add support for urls to Bonjour plugin|kossebau@kde.org|Friedrich W. H. Kossebau}} &lt;br /&gt;
{{FeatureTodo|Kopete|Rich text support for ICQ|kedgedev@gmail.com|Roman Jarosz}} &lt;br /&gt;
{{FeatureDone|Kopete|Extended video controls|fschaefer.oss(at)googlemail.com|Frank Schaefer}} &lt;br /&gt;
{{FeatureTodo|Krdc|Connection status screen and reconnect|murraytony@gmail.com|Tony Murray}}&lt;br /&gt;
{{FeatureDone|Krdc|Much improved new connection screen: more info, sortable, interactive, and better use of space|murraytony@gmail.com|Tony Murray}}&lt;br /&gt;
{{FeatureInProgress|KGet|Use plasma notifications to show the progress|mat69@gmx.net|Matthias Fuchs}}&lt;br /&gt;
{{FeatureDone|KGet|Refaktor Torrent-Plugin to base on the newly created libktorrent from extragear|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureInProgress|KGet|Better error handling|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeplasma-addons  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|knowledgebase|port knowledgebase plasmoid to new engine|ewoerner@kde.org|Eckhart Wörner}} &lt;br /&gt;
{{FeatureTodo|knowledgebase|Add categories|ewoerner@kde.org|Eckhart Wörner}} &lt;br /&gt;
{{FeatureDone|Bookmarks widget|New|kossebau@kde.org|Friedrich W. H. Kossebau}} &lt;br /&gt;
{{FeatureDone|Mandelbrot Wallpaper|Performance improvements|jacob.benoit.1@gmail.com|Benoit Jacob}} &lt;br /&gt;
{{FeatureDone|Mandelbrot Wallpaper|Rendering improvements (through dithering, extra iterations, and better/simpler formulas)|jacob.benoit.1@gmail.com|Benoit Jacob}}&lt;br /&gt;
{{FeatureDone|Mandelbrot Wallpaper|Allow to import/export parameters and to export to PNG images|jacob.benoit.1@gmail.com|Benoit Jacob}}&lt;br /&gt;
{{FeatureDone|Comic Applet|Add option to show &amp;quot;text&amp;quot;, &amp;quot;icons&amp;quot; or both &amp;quot;text and icons&amp;quot; for tabs|mat69@gmx.net|Matthias Fuchs}}&lt;br /&gt;
{{FeatureDone|Comic Applet|Prefetch next and previous comic strip (thx to Miha Cancula)|mat69@gmx.net|Matthias Fuchs}}&lt;br /&gt;
{{FeatureDone|Character Runner|New|akreuzkamp@web.de|Anton Kreuzkamp}}&lt;br /&gt;
{{FeatureInProgress|KDE Observatory|Performance improvements, new data engine|sandroandrade@kde.org|Sandro Andrade}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdesdk  =&lt;br /&gt;
&lt;br /&gt;
{| cellspa/cing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|Lokalize|Integrate snowball stemmer for glossary|shafff@NOSPAMukr.net|Nick Shaforostoff}} &lt;br /&gt;
{{FeatureTodo|Lokalize|Continue implementing XLIFF spec|shafff@NOSPAMukr.net|Nick Shaforostoff}} &lt;br /&gt;
{{FeatureTodo|Lokalize|Segmentation [editing] functionality|shafff@NOSPAMukr.net |Nick Shaforostoff}} &lt;br /&gt;
{{FeatureTodo|Lokalize|Remote translation memories|shafff@NOSPAMukr.net|Nick Shaforostoff}} &lt;br /&gt;
{{FeatureTodo|Lokalize|Integrate with nepomuk (fast stats retrieval, tag cloud - incl sharing!)|shafff@NOSPAMukr.net|Nick Shaforostoff}} &lt;br /&gt;
{{FeatureInProgress|Kate|Replace old snippet plugin through TNG plugin and enhance the usability of the new plugin|jowenn(you_know)kde(here_too)org|Joseph Wenninger}}&lt;br /&gt;
{{FeatureInProgress|Kate|Port the old XML completion plugin (xmltools)|tomastrnka@gmx.com|Tomáš Trnka}} &lt;br /&gt;
{{FeatureInProgress|Umbrello|Add a code importing wizzard|andi.fischer@NOSPAMhispeed.ch|Andi Fischer}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdeutils  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureTodo|Ark|Add an options dialog (maybe)|haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureTodo|Ark|Simplify Kerfuffle's API (jobs, interfaces etc) and try to make it stable|kubito@gmail.com|Raphael Kubo da Costa}}&lt;br /&gt;
{{FeatureTodo|Ark|Support for custom options from the compression interface (eg. a slider for selecting compression level for rar files)|haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureTodo|Ark|Add feedback for the latest operation in the status bar|kubito@gmail.com|Raphael Kubo da Costa}}&lt;br /&gt;
{{FeatureTodo|Ark|Try multiple plugins for each archive type before failing|kubito@gmail.com|Raphael Kubo da Costa}}&lt;br /&gt;
{{FeatureTodo|Ark|Make the internal previewer optional|kubito@gmail.com|Raphael Kubo da Costa}}&lt;br /&gt;
{{FeatureTodo|Ark|Add a &amp;quot;Preview with...&amp;quot; context menu item|kubito@gmail.com|Raphael Kubo da Costa}}&lt;br /&gt;
{{FeatureTodo|Ark|Make Kerfuffle really thread-safe (and use threads in less places)|kubito@gmail.com|Raphael Kubo da Costa}}&lt;br /&gt;
{{FeatureTodo|Ark|Get rid of the Observer code in Kerfuffle|kubito@gmail.com|Raphael Kubo da Costa}}&lt;br /&gt;
{{FeatureTodo|Ark|Make error reporting work as expected in Kerfuffle|kubito@gmail.com|Raphael Kubo da Costa}}&lt;br /&gt;
{{FeatureTodo|KGpg|Make keyserver actions possible to use on multiple keyservers at once|kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureTodo|Okteta|add Kate-like search tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for import by drop, both url and data|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|copy again puts also a value or char variant of the data to clipboard|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for memory mapping of files and 64-bit addressing|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for jobs like io, printing, string search or filter|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add Okular like embedded notifications|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks and other view settings for next load|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add global toggle option for the offset display, hex or decimal|kossebau@kde.org|Friedrich W. H. Kossebau}} &lt;br /&gt;
{{FeatureTodo|Okteta|Add Kate-like combined dialogs to query for actions on files|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Improve the titels of the changes to the bytearray to be more descriptive, best using ids to avoid text string|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Merge row and column widgets into one|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add a general KPart adapter to Kasten, than finish port of Okteta KPart to Okteta Kasten|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Make all user interaction in the KastenCore managers plugin-based|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add view profiles, incl. editor/manager|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add KNewStuff support to the structures tool|alex.richardson@gmx.de|Alex Richardson}} &lt;br /&gt;
{{FeatureTodo|printer-applet|Restore feature parity with KDEPrint3 where possible.||Jonathon Riddell, John Layt}} &lt;br /&gt;
{{FeatureInProgress|kdelirc/kremotecontrol|Transition from KDELirc to KRemoteControl|michael_zanetti@gmx.net|Michael Zanetti}} &lt;br /&gt;
{{FeatureInProgress|Okteta|Allow writing structure definitions in JavaScript|alex.richardson@gmx.de|Alex Richardson}} &lt;br /&gt;
{{FeatureInProgress|Okteta|Add possibility to set count of bytes per line/group|kossebau@kde.org|Friedrich W. H. Kossebau}} &lt;br /&gt;
{{FeatureDone|Okteta|new export formats: S-Record, Intel Hex, Base32, Ascii85, Uuencoding, Xxencoding|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureDone|Okteta|add QIODevice for AbstractByteArrayModel and make mimetype detection use this instead of only filename |kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureDone|Okteta|Refactor mouse input to controllers for the bytearray widget|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Other  =&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;&amp;quot;&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Architecture/KDE3/KHTML</id>
		<title>Development/Architecture/KDE3/KHTML</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Architecture/KDE3/KHTML"/>
				<updated>2009-12-09T16:58:46Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: Fix syntax highlighting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== KHTML - KDE's HTML library ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;KHTML&amp;lt;/tt&amp;gt; is an XML/HTML4 compliant HTML library, with support for DOM,&lt;br /&gt;
Java, JavaScript and Cascading Style Sheets (CSS). &lt;br /&gt;
&lt;br /&gt;
You can get an overview of &amp;lt;tt&amp;gt;KHTML&amp;lt;/tt&amp;gt;'s current capabilities [http://www.konqueror.org/konq-browser.html here.]&lt;br /&gt;
&lt;br /&gt;
== Small example ==&lt;br /&gt;
&lt;br /&gt;
Using &amp;lt;tt&amp;gt;KHTML&amp;lt;/tt&amp;gt; in your program is quite easy. The following example shows&lt;br /&gt;
you a complete application with which you can already browse the web:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code cppqt&amp;gt;&lt;br /&gt;
#include &amp;lt;khtml.h&amp;gt;&lt;br /&gt;
#include &amp;lt;kapp.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char *argv[])&lt;br /&gt;
{&lt;br /&gt;
    KApplication a(argc, argv, &amp;quot;testkhtml&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    KHTMLWidget *html = new KHTMLWidget;&lt;br /&gt;
    html-&amp;gt;resize(800,500);&lt;br /&gt;
    //html-&amp;gt;setJScriptEnabled(true);&lt;br /&gt;
    html-&amp;gt;setJavaEnabled(true);&lt;br /&gt;
    //html-&amp;gt;setFollowsLinks(false);&lt;br /&gt;
&lt;br /&gt;
    a.setTopWidget(html);&lt;br /&gt;
    html-&amp;gt;setURLCursor(QCursor(PointingHandCursor));&lt;br /&gt;
    html-&amp;gt;openURL(argv[1]);&lt;br /&gt;
&lt;br /&gt;
    QWidget::connect(html, SIGNAL(setTitle(const QString &amp;amp;)),&lt;br /&gt;
                     html, SLOT(setCaption(const QString &amp;amp;)));&lt;br /&gt;
    html-&amp;gt;show();&lt;br /&gt;
    a.exec();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This small example already gives you a functional browser, that lets you browse&lt;br /&gt;
the web (you'll need the &amp;lt;tt&amp;gt;kio_http&amp;lt;/tt&amp;gt; executable from KDE though to access&lt;br /&gt;
non local files). Just try &amp;lt;tt&amp;gt;testkhtml http://www.kde.org&amp;lt;/tt&amp;gt; and you will&lt;br /&gt;
get a widget showing KDE's home page.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;KHTML&amp;lt;/tt&amp;gt; has a lot of functionality. Almost everything you'll ever need&lt;br /&gt;
can be accessed through the member functions of the class KHTMLWidget.&lt;br /&gt;
&lt;br /&gt;
== Document Object Model (DOM) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;KHTML&amp;lt;/tt&amp;gt; provides a mostly complete implementation of&lt;br /&gt;
[http://www.w3.org/DOM/ Dom Level 1 and 2].&lt;br /&gt;
&lt;br /&gt;
The DOM is an implementation using internal classes to hold the document's data.&lt;br /&gt;
The classes accessing the DOM are using a refcounting scheme to hold the data.&lt;br /&gt;
Thus the DOM does the memory management for you. You can just use the classes&lt;br /&gt;
defined in the DOM header files to access parts of the document. As long as you&lt;br /&gt;
don't use pointers, you will not get memory leaks.&lt;br /&gt;
&lt;br /&gt;
You can easily access the document being shown by the&lt;br /&gt;
&amp;lt;tt&amp;gt;KHTMLWidget::document()&amp;lt;/tt&amp;gt; method, from where you can&lt;br /&gt;
get access to every part of the document.&lt;br /&gt;
&lt;br /&gt;
== Java ==&lt;br /&gt;
&lt;br /&gt;
Thanks to the work of Richard Moore, &amp;lt;tt&amp;gt;KHTML&amp;lt;/tt&amp;gt; can display Java applets.&lt;br /&gt;
Java is not enabled by default, but you can do so by using&lt;br /&gt;
&amp;lt;tt&amp;gt;KHTMLWidget::setEnableJava(true);&amp;lt;/tt&amp;gt;, and setting the environment variable&lt;br /&gt;
&amp;lt;tt&amp;gt;CLASSPATH&amp;lt;/tt&amp;gt; to:&lt;br /&gt;
&lt;br /&gt;
 CLASSPATH=$KDEDIR/share/apps/kjava/kjava-classes.zip:$JDK_DIR/lib&lt;br /&gt;
&lt;br /&gt;
You will need to have the java developers kit installed though. I tested it&lt;br /&gt;
with JDK-1.1.7, and don't know if it'll run with other versions of JDK or with&lt;br /&gt;
Kaffe.&lt;br /&gt;
&lt;br /&gt;
== JavaScript (ECMA-Script) ==&lt;br /&gt;
&lt;br /&gt;
The JavaScript support aims at compliance with the ECMAScript Language&lt;br /&gt;
specification [http://www.ecma.ch/ecma1/STAND/ECMA-262.HTM ECMA-262] 3rd edition.&lt;br /&gt;
This roughly equals JavaScript 1.5.&lt;br /&gt;
&lt;br /&gt;
== Cascading Style Sheets (CSS) ==&lt;br /&gt;
&lt;br /&gt;
Cascading style sheets 2.1 are mostly supported now.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Initial Author:'' [mailto:knoll@kde.org Lars Knoll]&lt;br /&gt;
&lt;br /&gt;
[[Category:KDE3]]&lt;br /&gt;
[[Category:Architecture]]&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/Programming_Tutorial_KDE_3/KHTML</id>
		<title>Development/Tutorials/Programming Tutorial KDE 3/KHTML</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/Programming_Tutorial_KDE_3/KHTML"/>
				<updated>2009-12-09T16:56:56Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: Fix typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For HTML parsing, you have the following possibilities:&lt;br /&gt;
* QXML&lt;br /&gt;
* QDOM&lt;br /&gt;
* perl&lt;br /&gt;
* khtml&lt;br /&gt;
Obviously, QXML and QDOM need xml-compliant html pages, and the least html pages are xml-compliant. Perl is not the scope of this site. This tutorial chooses the khtml approach. &lt;br /&gt;
&lt;br /&gt;
=First step=&lt;br /&gt;
As we remember from http://developernew.kde.org/Development/Tutorials/Programming_Tutorial_KDE_4/How_to_write_an_HTML_parser, biggest thing is to be able to parse non-XML-conform syntax. It works with the following program. &lt;br /&gt;
&lt;br /&gt;
'''tags.cpp'''&lt;br /&gt;
&amp;lt;code cppqt n&amp;gt;&lt;br /&gt;
#include &amp;lt;kapplication.h&amp;gt;&lt;br /&gt;
#include &amp;lt;kaboutdata.h&amp;gt;&lt;br /&gt;
#include &amp;lt;kcmdlineargs.h&amp;gt;&lt;br /&gt;
#include &amp;lt;dom/html_document.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main (int argc, char *argv[])&lt;br /&gt;
{&lt;br /&gt;
        KAboutData aboutData( &amp;quot;test&amp;quot;, &amp;quot;test&amp;quot;,&lt;br /&gt;
        &amp;quot;1.0&amp;quot;, &amp;quot;test&amp;quot;, KAboutData::License_GPL,&lt;br /&gt;
        &amp;quot;(c) 2006&amp;quot; );&lt;br /&gt;
        KCmdLineArgs::init( argc, argv, &amp;amp;aboutData );&lt;br /&gt;
        KApplication khello;&lt;br /&gt;
&lt;br /&gt;
        DOM::HTMLDocument doc;&lt;br /&gt;
        DOM::DOMString tag(&amp;quot;*&amp;quot;);&lt;br /&gt;
        DOM::DOMString uri(&amp;quot;&amp;lt;html&amp;gt;&amp;lt;body&amp;gt;&amp;lt;a href=\&amp;quot;http://www.kde.org/\&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;a href=\&amp;quot;/index.php\&amp;quot; nowrap&amp;gt;Log in&amp;lt;/a&amp;gt;&amp;lt;a href=\&amp;quot;http://www.gmx.de\&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        doc.loadXML(uri);&lt;br /&gt;
        kdDebug() &amp;lt;&amp;lt; &amp;quot;Does this doc have child elements ? &amp;quot; &amp;lt;&amp;lt; doc.hasChildNodes() &amp;lt;&amp;lt; endl;&lt;br /&gt;
        for (int i=0; i&amp;lt;doc.getElementsByTagName(tag).length(); i++) kdDebug() &amp;lt;&amp;lt; doc.getElementsByTagName(tag).item(i).nodeName().string() &amp;lt;&amp;lt; endl;&lt;br /&gt;
        kdDebug() &amp;lt;&amp;lt; &amp;quot;Size of your doc &amp;quot; &amp;lt;&amp;lt; sizeof(doc.firstChild()) &amp;lt;&amp;lt; endl;&lt;br /&gt;
        kdDebug() &amp;lt;&amp;lt; doc.isHTMLDocument() &amp;lt;&amp;lt; endl;&lt;br /&gt;
        kdDebug() &amp;lt;&amp;lt; doc.toString().string() &amp;lt;&amp;lt; endl;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Compile it like this:&lt;br /&gt;
 gcc -I/usr/lib/qt3/include -I/opt/kde3/include \&lt;br /&gt;
 -L/opt/kde3/lib -lkdeui -lkhtml -o tags tags.cpp&lt;br /&gt;
&lt;br /&gt;
=Second=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code cpp-qt&amp;gt;&lt;br /&gt;
#include &amp;lt;kapplication.h&amp;gt;&lt;br /&gt;
#include &amp;lt;kaboutdata.h&amp;gt;&lt;br /&gt;
#include &amp;lt;kcmdlineargs.h&amp;gt;&lt;br /&gt;
#include &amp;lt;dom/html_document.h&amp;gt;&lt;br /&gt;
#include &amp;lt;dom/html_element.h&amp;gt;&lt;br /&gt;
#include &amp;lt;dom/dom_node.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main (int argc, char *argv[])&lt;br /&gt;
{&lt;br /&gt;
        KAboutData aboutData( &amp;quot;test&amp;quot;, &amp;quot;test&amp;quot;,&lt;br /&gt;
        &amp;quot;1.0&amp;quot;, &amp;quot;test&amp;quot;, KAboutData::License_GPL,&lt;br /&gt;
        &amp;quot;(c) 2006&amp;quot; );&lt;br /&gt;
        KCmdLineArgs::init( argc, argv, &amp;amp;aboutData );&lt;br /&gt;
        KApplication khello;&lt;br /&gt;
&lt;br /&gt;
        DOM::HTMLDocument doc;&lt;br /&gt;
        DOM::DOMString tag(&amp;quot;*&amp;quot;);&lt;br /&gt;
        DOM::DOMString uri(&amp;quot;&amp;lt;html&amp;gt;&amp;lt;body&amp;gt;&amp;lt;a href=\&amp;quot;http://www.kde.org/\&amp;quot;&amp;gt;&amp;lt;b&amp;gt;fat&amp;lt;/b&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;a href=\&amp;quot;/index.php\&amp;quot; nowrap&amp;gt;Log in&amp;lt;/a&amp;gt;&amp;lt;a href=\&amp;quot;http://www.gmx.de\&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        doc.loadXML(uri);&lt;br /&gt;
        kdDebug() &amp;lt;&amp;lt; &amp;quot;Here's a list of the document elements&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
        for (int i=0; i&amp;lt;doc.getElementsByTagName(tag).length(); i++) kdDebug() &amp;lt;&amp;lt; doc.getElementsByTagName(tag).item(i).nodeName().string() &amp;lt;&amp;lt; endl;&lt;br /&gt;
       &lt;br /&gt;
        DOM::HTMLDocument doc2;&lt;br /&gt;
        DOM::DOMString uri2(&amp;quot;&amp;lt;html&amp;gt;&amp;lt;body&amp;gt;this is html&amp;lt;b&amp;gt;fat&amp;lt;/b&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&amp;quot;);&lt;br /&gt;
        doc2.loadXML(uri2);&lt;br /&gt;
        kdDebug() &amp;lt;&amp;lt; &amp;quot;This is the in-memory html:&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
        kdDebug() &amp;lt;&amp;lt; doc.toString().string() &amp;lt;&amp;lt; endl;&lt;br /&gt;
        doc.body().insertBefore(doc.body().firstChild().firstChild(),doc.body().firstChild());&lt;br /&gt;
        kdDebug() &amp;lt;&amp;lt; &amp;quot;Moving around nodes&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
        kdDebug() &amp;lt;&amp;lt; doc.toString().string() &amp;lt;&amp;lt; endl;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Getting_Started/Build/Distributions/FreeBSD</id>
		<title>Getting Started/Build/Distributions/FreeBSD</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Getting_Started/Build/Distributions/FreeBSD"/>
				<updated>2009-11-21T02:31:04Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* Errors compiling qt-copy */ Remove obsolete note&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Getting_Started/Build/KDE4/FreeBSD}}&lt;br /&gt;
{{KDE4}}&lt;br /&gt;
This page is focused on building KDE4-trunk from svn source on FreeBSD, information specific to creating/building/using the FreeBSD ports of KDE4 should be gathered on the [http://wiki.freebsd.org/KDE4 FreeBSD Wiki].&lt;br /&gt;
&lt;br /&gt;
==Required Ports==&lt;br /&gt;
* devel/dbus&lt;br /&gt;
* devel/cmake&lt;br /&gt;
* x11/xorg&lt;br /&gt;
* devel/subversion&lt;br /&gt;
* textproc/redland (for support/soprano)&lt;br /&gt;
* misc/shared-mime-info (for libs)&lt;br /&gt;
* graphics/libungif (for libs)&lt;br /&gt;
* devel/boost-python (for pimlibs)&lt;br /&gt;
* security/gpgme (for pimlibs)&lt;br /&gt;
* multimedia/libxine (for base-or config with KDE4_DISABLE_MULTIMEDIA)&lt;br /&gt;
* shells/bash (if using kdesvn-build)&lt;br /&gt;
* textproc/libxslt&lt;br /&gt;
&lt;br /&gt;
==Differences from the normal build process==&lt;br /&gt;
The page on [[Getting_Started/Build/KDE4|building KDE4]] trunk makes a few assumptions about your environment. Note that FreeBSD's dbus and cmake ports will work (so those sections can be skipped).&lt;br /&gt;
&lt;br /&gt;
Sometimes, building with '''make''' can fail on some modules. You should try using '''gmake''' instead.&lt;br /&gt;
&lt;br /&gt;
==Using kdesvn-build==&lt;br /&gt;
The [http://kdesvn-build.kde.org/ kdesvn-build] script can be used on FreeBSD. Note that if there are errors building qt-copy or libs, look at the issues below and fix them, then continue the build using kdesvn-build.&lt;br /&gt;
&lt;br /&gt;
==Errors compiling qt-copy==&lt;br /&gt;
; My build of qt-copy is failing when I have Qt4 from ports installed.&lt;br /&gt;
For some reason, the configure system will sometimes put -I/usr/local/include (which contains the ports version of qt4 headers) into the general CXXFLAGS variable. Note that there is an INCPATH variable for these include paths which should also contain -I/usr/local/include. The difference is in the compile line; CXXFLAGS's appears first, whereas the paths in INCPATH are ordered properly such that the local (current build) headers are checked first. You need to go into the directory where the build is failing (use the previous lines before the error message), and open the Makefile. You should see the the -I/usr/local/include line in the CXXFLAGS line, and you can safetly remove it IF there is a -I/usr/local/include line in INCPATH.&lt;br /&gt;
This seems to usually happen in build_dir/qt-copy/src/plugins/sqldrivers/psql/Makefile&lt;br /&gt;
&lt;br /&gt;
; My build of qt-copy is failing in qatomic_x86_64.h on my 64bit system.&lt;br /&gt;
This is a GCC3 issue with 64-bit systems, so FreeBSD 7.x and later shouldn't be affected.&lt;br /&gt;
&lt;br /&gt;
See [http://trolltech.com/developer/task-tracker/index_html?method=entry&amp;amp;id=161994 Trolltech's bugzilla] for a description of this problem.  It's an issue with gcc3 and 64bit systems, with a particular optimization. Possible solutions described there include &amp;quot;To work around this bug, recompile qstylesheetstyle.cpp with removing -O2, or add the -fno-gcse compiler option.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Errors compiling kdesupport==&lt;br /&gt;
; System-wide Qt4 keeps being found instead of qt-copy&lt;br /&gt;
Sometimes, /usr/local/bin/qmake-qt4 insists on being found instead of qt-copy's qmake, which in turn makes cmake use the system-wide Qt during compilation. If everything else fails, you can pass -DQT_QMAKE_EXECUTABLE=/your/path/qmake to cmake.&lt;br /&gt;
&lt;br /&gt;
; Cannot link to polkit-dbus&lt;br /&gt;
If all polkit-related ports are correctly installed and the error persists, you most likely need to export LIBRARY_PATH and include /usr/local/lib in it.&lt;br /&gt;
&lt;br /&gt;
==Errors compiling kdelibs==&lt;br /&gt;
; Building kdelibs fails in kdelibs/kjs/api&lt;br /&gt;
For some reason, cmake is messing up the include orders in this subdirectory. As a temporary fix, open kdelibs/kjs/CMakeLists.txt, and replace include_directories( ${CMAKE_SOURCE_DIR}/kjs ${CMAKE_SOURCE_DIR}/wtf ${KDEWIN32_INCLUDES} ) with include_directories(${KDE4_KDECORE_INCLUDES} ${CMAKE_SOURCE_DIR}/wtf ${KDEWIN32_INCLUDES} )&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Getting_Started/Build/Distributions/FreeBSD</id>
		<title>Getting Started/Build/Distributions/FreeBSD</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Getting_Started/Build/Distributions/FreeBSD"/>
				<updated>2009-11-21T02:17:14Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* Errors compiling qt-copy */ Add a note saying recent versions of FreeBSD shouldn't be affected&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Getting_Started/Build/KDE4/FreeBSD}}&lt;br /&gt;
{{KDE4}}&lt;br /&gt;
This page is focused on building KDE4-trunk from svn source on FreeBSD, information specific to creating/building/using the FreeBSD ports of KDE4 should be gathered on the [http://wiki.freebsd.org/KDE4 FreeBSD Wiki].&lt;br /&gt;
&lt;br /&gt;
==Required Ports==&lt;br /&gt;
* devel/dbus&lt;br /&gt;
* devel/cmake&lt;br /&gt;
* x11/xorg&lt;br /&gt;
* devel/subversion&lt;br /&gt;
* textproc/redland (for support/soprano)&lt;br /&gt;
* misc/shared-mime-info (for libs)&lt;br /&gt;
* graphics/libungif (for libs)&lt;br /&gt;
* devel/boost-python (for pimlibs)&lt;br /&gt;
* security/gpgme (for pimlibs)&lt;br /&gt;
* multimedia/libxine (for base-or config with KDE4_DISABLE_MULTIMEDIA)&lt;br /&gt;
* shells/bash (if using kdesvn-build)&lt;br /&gt;
* textproc/libxslt&lt;br /&gt;
&lt;br /&gt;
==Differences from the normal build process==&lt;br /&gt;
The page on [[Getting_Started/Build/KDE4|building KDE4]] trunk makes a few assumptions about your environment. Note that FreeBSD's dbus and cmake ports will work (so those sections can be skipped).&lt;br /&gt;
&lt;br /&gt;
Sometimes, building with '''make''' can fail on some modules. You should try using '''gmake''' instead.&lt;br /&gt;
&lt;br /&gt;
==Using kdesvn-build==&lt;br /&gt;
The [http://kdesvn-build.kde.org/ kdesvn-build] script can be used on FreeBSD. Note that if there are errors building qt-copy or libs, look at the issues below and fix them, then continue the build using kdesvn-build.&lt;br /&gt;
&lt;br /&gt;
==Errors compiling qt-copy==&lt;br /&gt;
; My build of qt-copy is failing because MAP_ANONYMOUS was not declared.&lt;br /&gt;
The flag MAP_ANONYMOUS is used in qt-copy/src/3rdparty/webkit/JavaScriptCore/kjs/collector.cpp:139 in function mmap(). FreeBSD's mmap() does not know the flag MAP_ANONYMOUS but MAP_ANON.&lt;br /&gt;
&lt;br /&gt;
; My build of qt-copy is failing when I have Qt4 from ports installed.&lt;br /&gt;
For some reason, the configure system will sometimes put -I/usr/local/include (which contains the ports version of qt4 headers) into the general CXXFLAGS variable. Note that there is an INCPATH variable for these include paths which should also contain -I/usr/local/include. The difference is in the compile line; CXXFLAGS's appears first, whereas the paths in INCPATH are ordered properly such that the local (current build) headers are checked first. You need to go into the directory where the build is failing (use the previous lines before the error message), and open the Makefile. You should see the the -I/usr/local/include line in the CXXFLAGS line, and you can safetly remove it IF there is a -I/usr/local/include line in INCPATH.&lt;br /&gt;
This seems to usually happen in build_dir/qt-copy/src/plugins/sqldrivers/psql/Makefile&lt;br /&gt;
&lt;br /&gt;
; My build of qt-copy is failing in qatomic_x86_64.h on my 64bit system.&lt;br /&gt;
This is a GCC3 issue with 64-bit systems, so FreeBSD 7.x and later shouldn't be affected.&lt;br /&gt;
&lt;br /&gt;
See [http://trolltech.com/developer/task-tracker/index_html?method=entry&amp;amp;id=161994 Trolltech's bugzilla] for a description of this problem.  It's an issue with gcc3 and 64bit systems, with a particular optimization. Possible solutions described there include &amp;quot;To work around this bug, recompile qstylesheetstyle.cpp with removing -O2, or add the -fno-gcse compiler option.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Errors compiling kdesupport==&lt;br /&gt;
; System-wide Qt4 keeps being found instead of qt-copy&lt;br /&gt;
Sometimes, /usr/local/bin/qmake-qt4 insists on being found instead of qt-copy's qmake, which in turn makes cmake use the system-wide Qt during compilation. If everything else fails, you can pass -DQT_QMAKE_EXECUTABLE=/your/path/qmake to cmake.&lt;br /&gt;
&lt;br /&gt;
; Cannot link to polkit-dbus&lt;br /&gt;
If all polkit-related ports are correctly installed and the error persists, you most likely need to export LIBRARY_PATH and include /usr/local/lib in it.&lt;br /&gt;
&lt;br /&gt;
==Errors compiling kdelibs==&lt;br /&gt;
; Building kdelibs fails in kdelibs/kjs/api&lt;br /&gt;
For some reason, cmake is messing up the include orders in this subdirectory. As a temporary fix, open kdelibs/kjs/CMakeLists.txt, and replace include_directories( ${CMAKE_SOURCE_DIR}/kjs ${CMAKE_SOURCE_DIR}/wtf ${KDEWIN32_INCLUDES} ) with include_directories(${KDE4_KDECORE_INCLUDES} ${CMAKE_SOURCE_DIR}/wtf ${KDEWIN32_INCLUDES} )&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Getting_Started/Build/Distributions/FreeBSD</id>
		<title>Getting Started/Build/Distributions/FreeBSD</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Getting_Started/Build/Distributions/FreeBSD"/>
				<updated>2009-11-20T19:33:05Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* Required Ports */ Remove useless comments&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Getting_Started/Build/KDE4/FreeBSD}}&lt;br /&gt;
{{KDE4}}&lt;br /&gt;
This page is focused on building KDE4-trunk from svn source on FreeBSD, information specific to creating/building/using the FreeBSD ports of KDE4 should be gathered on the [http://wiki.freebsd.org/KDE4 FreeBSD Wiki].&lt;br /&gt;
&lt;br /&gt;
==Required Ports==&lt;br /&gt;
* devel/dbus&lt;br /&gt;
* devel/cmake&lt;br /&gt;
* x11/xorg&lt;br /&gt;
* devel/subversion&lt;br /&gt;
* textproc/redland (for support/soprano)&lt;br /&gt;
* misc/shared-mime-info (for libs)&lt;br /&gt;
* graphics/libungif (for libs)&lt;br /&gt;
* devel/boost-python (for pimlibs)&lt;br /&gt;
* security/gpgme (for pimlibs)&lt;br /&gt;
* multimedia/libxine (for base-or config with KDE4_DISABLE_MULTIMEDIA)&lt;br /&gt;
* shells/bash (if using kdesvn-build)&lt;br /&gt;
* textproc/libxslt&lt;br /&gt;
&lt;br /&gt;
==Differences from the normal build process==&lt;br /&gt;
The page on [[Getting_Started/Build/KDE4|building KDE4]] trunk makes a few assumptions about your environment. Note that FreeBSD's dbus and cmake ports will work (so those sections can be skipped).&lt;br /&gt;
&lt;br /&gt;
Sometimes, building with '''make''' can fail on some modules. You should try using '''gmake''' instead.&lt;br /&gt;
&lt;br /&gt;
==Using kdesvn-build==&lt;br /&gt;
The [http://kdesvn-build.kde.org/ kdesvn-build] script can be used on FreeBSD. Note that if there are errors building qt-copy or libs, look at the issues below and fix them, then continue the build using kdesvn-build.&lt;br /&gt;
&lt;br /&gt;
==Errors compiling qt-copy==&lt;br /&gt;
; My build of qt-copy is failing because MAP_ANONYMOUS was not declared.&lt;br /&gt;
The flag MAP_ANONYMOUS is used in qt-copy/src/3rdparty/webkit/JavaScriptCore/kjs/collector.cpp:139 in function mmap(). FreeBSD's mmap() does not know the flag MAP_ANONYMOUS but MAP_ANON.&lt;br /&gt;
&lt;br /&gt;
; My build of qt-copy is failing when I have Qt4 from ports installed.&lt;br /&gt;
For some reason, the configure system will sometimes put -I/usr/local/include (which contains the ports version of qt4 headers) into the general CXXFLAGS variable. Note that there is an INCPATH variable for these include paths which should also contain -I/usr/local/include. The difference is in the compile line; CXXFLAGS's appears first, whereas the paths in INCPATH are ordered properly such that the local (current build) headers are checked first. You need to go into the directory where the build is failing (use the previous lines before the error message), and open the Makefile. You should see the the -I/usr/local/include line in the CXXFLAGS line, and you can safetly remove it IF there is a -I/usr/local/include line in INCPATH.&lt;br /&gt;
This seems to usually happen in build_dir/qt-copy/src/plugins/sqldrivers/psql/Makefile&lt;br /&gt;
&lt;br /&gt;
; My build of qt-copy is failing in qatomic_x86_64.h on my 64bit system.&lt;br /&gt;
See [http://trolltech.com/developer/task-tracker/index_html?method=entry&amp;amp;id=161994 Trolltech's bugzilla] for a description of this problem.  It's an issue with gcc3 and 64bit systems, with a particular optimization. Possible solutions described there include &amp;quot;To work around this bug, recompile qstylesheetstyle.cpp with removing -O2, or add the -fno-gcse compiler option.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Errors compiling kdesupport==&lt;br /&gt;
; System-wide Qt4 keeps being found instead of qt-copy&lt;br /&gt;
Sometimes, /usr/local/bin/qmake-qt4 insists on being found instead of qt-copy's qmake, which in turn makes cmake use the system-wide Qt during compilation. If everything else fails, you can pass -DQT_QMAKE_EXECUTABLE=/your/path/qmake to cmake.&lt;br /&gt;
&lt;br /&gt;
; Cannot link to polkit-dbus&lt;br /&gt;
If all polkit-related ports are correctly installed and the error persists, you most likely need to export LIBRARY_PATH and include /usr/local/lib in it.&lt;br /&gt;
&lt;br /&gt;
==Errors compiling kdelibs==&lt;br /&gt;
; Building kdelibs fails in kdelibs/kjs/api&lt;br /&gt;
For some reason, cmake is messing up the include orders in this subdirectory. As a temporary fix, open kdelibs/kjs/CMakeLists.txt, and replace include_directories( ${CMAKE_SOURCE_DIR}/kjs ${CMAKE_SOURCE_DIR}/wtf ${KDEWIN32_INCLUDES} ) with include_directories(${KDE4_KDECORE_INCLUDES} ${CMAKE_SOURCE_DIR}/wtf ${KDEWIN32_INCLUDES} )&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/KDE_on_FreeBSD</id>
		<title>Projects/KDE on FreeBSD</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/KDE_on_FreeBSD"/>
				<updated>2009-11-20T19:31:49Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* KDE on FreeBSD */ KDE on FreeBSD isn't &amp;quot;very buggy&amp;quot; anymore&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Projects/KDE on FreeBSD}}&lt;br /&gt;
&lt;br /&gt;
== What is FreeBSD? ==&lt;br /&gt;
&lt;br /&gt;
FreeBSD is a Free Software operating system distributed under the 2-clause BSD license. The [http://www.freebsd.org/ FreeBSD website] has all the information needed (especially the [http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/ handbook]) to install and configure FreeBSD itself.&lt;br /&gt;
&lt;br /&gt;
== KDE on FreeBSD ==&lt;br /&gt;
&lt;br /&gt;
The [http://freebsd.kde.org/ KDE on FreeBSD] website is supposed to be the definitive source of information.&lt;br /&gt;
&lt;br /&gt;
This wiki page will be used to collect compilation hints, debugging tips, etc. Additional information can be found on the [http://wiki.freebsd.org/KDE4 FreeBSD KDE4 Wiki].&lt;br /&gt;
&lt;br /&gt;
== Building KDE4 under FreeBSD ==&lt;br /&gt;
&lt;br /&gt;
Please see the [[Getting_Started/Build/KDE4|Building KDE4]] page for general instruction on building KDE4 from SVN. See the [[Getting_Started/Build/KDE4/FreeBSD|Building KDE4 under FreeBSD]] page for specific information for FreeBSD.&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Utils/Ark</id>
		<title>Projects/Utils/Ark</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Utils/Ark"/>
				<updated>2009-10-25T23:51:40Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* Current most critical bugs */ The described behaviour has been fixed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Current most critical bugs ==&lt;br /&gt;
* [https://bugs.kde.org/193908 Bug 193908]: There must be a way to tell the worker thread to stop when the GUI is being closed.&lt;br /&gt;
* [https://bugs.kde.org/204323 Bug 204323]: Support for remote locations must be implemented (shouldn't be too hard).&lt;br /&gt;
&lt;br /&gt;
== Ark Plans ==&lt;br /&gt;
=== KDE 4.4 ===&lt;br /&gt;
See the [[Schedules/KDE4/4.4_Feature_Plan#kdeutils|feature plan]] for KDE 4.4.&lt;br /&gt;
&lt;br /&gt;
* Add visual feedback for the operations in the status bar&lt;br /&gt;
* Add a proper way to display a notice to the user when autosubfolder is enabled in the extraction dialog&lt;br /&gt;
* Make single/double-clicking an entry open the file in the default launcher instead of using the internal previewer (which shall become a context menu option)&lt;br /&gt;
* proper cancel support and no crash if closed during exctraction&lt;br /&gt;
* letting a plugin try to open something and possible fail, basically rework the plugin management&lt;br /&gt;
* more GUI means a settings dialog for example. I also would like to share more functionality with dolphin as we discussed once (other view modes etc)&lt;br /&gt;
* finish AddDialog&lt;br /&gt;
* general code cleanup and api doxyfication&lt;br /&gt;
&lt;br /&gt;
== Personal TODOs ==&lt;br /&gt;
=== Harald ===&lt;br /&gt;
* Formalize the dbus communication protocol and implement it in dolphin&lt;br /&gt;
* BUG: After opening file from web, automatic subfolder detection name is confused&lt;br /&gt;
* BUG: extractiondialog is confused by &amp;quot;/&amp;quot; in subfolder name&lt;br /&gt;
* Check if we want the two last patches in bug #155220&lt;br /&gt;
* Revert the single folder label&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Utils/Ark</id>
		<title>Projects/Utils/Ark</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Utils/Ark"/>
				<updated>2009-08-30T02:25:54Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: Add a list of the most critical Ark bugs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Current most critical bugs ==&lt;br /&gt;
* [https://bugs.kde.org/193908 Bug 193908]: There must be a way to tell the worker thread to stop when the GUI is being closed.&lt;br /&gt;
* [https://bugs.kde.org/203126 Bug 203126]: Most of the code before app.exec() in main.cpp must be moved elsewhere to be run after the main loop starts. This should fix most event loop bugs related to batchextract.&lt;br /&gt;
* [https://bugs.kde.org/204323 Bug 204323]: Support for remote locations must be implemented (shouldn't be too hard).&lt;br /&gt;
&lt;br /&gt;
== Ark Plans ==&lt;br /&gt;
=== KDE 4.4 ===&lt;br /&gt;
See the [[Schedules/KDE4/4.4_Feature_Plan#kdeutils|feature plan]] for KDE 4.4.&lt;br /&gt;
&lt;br /&gt;
* Add visual feedback for the operations in the status bar&lt;br /&gt;
* Add a proper way to display a notice to the user when autosubfolder is enabled in the extraction dialog&lt;br /&gt;
* Make single/double-clicking an entry open the file in the default launcher instead of using the internal previewer (which shall become a context menu option)&lt;br /&gt;
* proper cancel support and no crash if closed during exctraction&lt;br /&gt;
* letting a plugin try to open something and possible fail, basically rework the plugin management&lt;br /&gt;
* more GUI means a settings dialog for example. I also would like to share more functionality with dolphin as we discussed once (other view modes etc)&lt;br /&gt;
* finish AddDialog&lt;br /&gt;
* general code cleanup and api doxyfication&lt;br /&gt;
&lt;br /&gt;
== Personal TODOs ==&lt;br /&gt;
=== Harald ===&lt;br /&gt;
* Formalize the dbus communication protocol and implement it in dolphin&lt;br /&gt;
* BUG: After opening file from web, automatic subfolder detection name is confused&lt;br /&gt;
* BUG: extractiondialog is confused by &amp;quot;/&amp;quot; in subfolder name&lt;br /&gt;
* Check if we want the two last patches in bug #155220&lt;br /&gt;
* Revert the single folder label&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Utils/Ark</id>
		<title>Projects/Utils/Ark</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Utils/Ark"/>
				<updated>2009-08-30T02:18:12Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: Remove outdated and unused Misc section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ark Plans ==&lt;br /&gt;
=== KDE 4.4 ===&lt;br /&gt;
See the [[Schedules/KDE4/4.4_Feature_Plan#kdeutils|feature plan]] for KDE 4.4.&lt;br /&gt;
&lt;br /&gt;
* Add visual feedback for the operations in the status bar&lt;br /&gt;
* Add a proper way to display a notice to the user when autosubfolder is enabled in the extraction dialog&lt;br /&gt;
* Make single/double-clicking an entry open the file in the default launcher instead of using the internal previewer (which shall become a context menu option)&lt;br /&gt;
* proper cancel support and no crash if closed during exctraction&lt;br /&gt;
* letting a plugin try to open something and possible fail, basically rework the plugin management&lt;br /&gt;
* more GUI means a settings dialog for example. I also would like to share more functionality with dolphin as we discussed once (other view modes etc)&lt;br /&gt;
* finish AddDialog&lt;br /&gt;
* general code cleanup and api doxyfication&lt;br /&gt;
&lt;br /&gt;
== Personal TODOs ==&lt;br /&gt;
=== Harald ===&lt;br /&gt;
* Formalize the dbus communication protocol and implement it in dolphin&lt;br /&gt;
* BUG: After opening file from web, automatic subfolder detection name is confused&lt;br /&gt;
* BUG: extractiondialog is confused by &amp;quot;/&amp;quot; in subfolder name&lt;br /&gt;
* Check if we want the two last patches in bug #155220&lt;br /&gt;
* Revert the single folder label&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Architecture/KDE4/Solid</id>
		<title>Development/Architecture/KDE4/Solid</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Architecture/KDE4/Solid"/>
				<updated>2009-08-19T18:27:03Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* Seamless Hardware Interaction */ Fix typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Development/Architecture/KDE4/Solid}}&lt;br /&gt;
&lt;br /&gt;
== Seamless Hardware Interaction ==&lt;br /&gt;
With Solid, KDE developers are able to easily write applications with hardware interaction features. The necessary abstraction to support&lt;br /&gt;
cross-platform application development is provided by Solid's clear and comprehensive API.&lt;br /&gt;
&lt;br /&gt;
Its aim is not the control of the devices (Solid doesn't let you synchronize your mobile phone with your local address book): Solid ''looks for'' devices and gives you access to the information it has about them. This way, you could easily look at the functions of the cpu, or at the driver that handles your camera, or the mount point of your usb pen. In sum: it gives you the possibility of &amp;quot;seeing without touching&amp;quot; your devices.&lt;br /&gt;
&lt;br /&gt;
Now you would ask (at least, I asked myself): &amp;quot;Why should I need this library? I want to control the available hardware, not just see it!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Well, Solid helps you a lot again: for any device interface, it gives you enough information to easily access it using other libraries or stacks. This way, if you want to manage your camera, you can use Solid to recognize it (you can use Solid::Notifier that will let you know when your camera has been plugged in), and then you can ask Solid to give you the information you need to handle it, for example with GPhoto or any other library you can think of. The same applies for any other plugged device: DVB cards (once recognized, Solid gives you the name of the associated device), audio cards (you can use ALSA, OSS or whatever you want: Solid knows the data to access it), portable media players, network cards, et cetera.&lt;br /&gt;
Moreover, it lets you check if you're connected to any network or not, and you can use Solid to tell the system to connect (that is, you can ask Solid: &amp;quot;Give me access to the network, I don't want to care about details&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Anyway, some other things need to be said about network devices and Bluetooth. For these two classes of devices, Solid provides the &amp;quot;Control&amp;quot; namespace: that is, it lets you control them directly, without using external libraries. This means that with Solid, you can even handle your wireless or wired network interfaces, associate them to an essid, and choose ip configuration for them. You can even access your phone through Bluetooth, and so on.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;listing&amp;quot; part of Solid resides in kdelibs, while the Control namespace is in kdebase.&lt;br /&gt;
&lt;br /&gt;
[[Category:KDE4]]&lt;br /&gt;
[[Category:Architecture]]&lt;br /&gt;
[[Category:Solid]]&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Architecture/KDE4/Solid</id>
		<title>Development/Architecture/KDE4/Solid</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Architecture/KDE4/Solid"/>
				<updated>2009-08-19T18:21:32Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* Seamless Hardware Interaction */ Fix typo and formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Development/Architecture/KDE4/Solid}}&lt;br /&gt;
&lt;br /&gt;
== Seamless Hardware Interaction ==&lt;br /&gt;
With Solid, KDE developers are able to easily write applications with hardware interaction features. The necessary abstraction to support&lt;br /&gt;
cross-platform application development is provided by Solid's clear and comprehensive API.&lt;br /&gt;
&lt;br /&gt;
Its aim is not the control of the devices (Solid doesn't let you synchronize your mobile phone with your local address book): Solid ''looks for'' devices and gives you access to the information it has about them. This way, you could easily look at the functions of the cpu, or at the driver that handles your camera, or the mount point of your usb pen. In sum: it gives you the possibility of &amp;quot;seeing without touching&amp;quot; your devices.&lt;br /&gt;
&lt;br /&gt;
Now you would ask (at least, I asked myself): &amp;quot;Why should I need this library? I want to control the available hardware, not just see it!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Well, Solid helps you a lot again: for any device interface, it gives you enough information to easily access it using other libraries or stacks. This way, if you want to manage your camera, you can use Solid to recognize it (you can use Solid::Notifier that will let you know when your camera has been plugged in), and then you can ask Solid to give you the information you need to handle it, for example with GPhoto or any other library you can think of. The same applies for any other plugged device: DVB cards (once recognized, Solid gives you the name of the associated device), audio cards (you can use ALSA, OSS or whatever you want: Solid knows the data to access it), portable media players, network cards, et cetera.&lt;br /&gt;
Moreover, it lets you check if you're connected to any network or not, and you can use Solid to tell the system to connect (that is, you can ask Solid: &amp;quot;Give me access to the network, I don't want to care about details&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Anyway, some other things needs to be said about network devices and Bluetooth. For these two classes of devices, Solid provides the &amp;quot;Control&amp;quot; namespace: that is, it lets you control them directly, without using external libraries. This means that with Solid, you can even handle your wireless or wired network interfaces, associate them to an essid, and choose ip configuration for them. You can even access your phone through Bluetooth, and so on.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;listing&amp;quot; part of Solid resides in kdelibs, while the Control namespace is in kdebase.&lt;br /&gt;
&lt;br /&gt;
[[Category:KDE4]]&lt;br /&gt;
[[Category:Architecture]]&lt;br /&gt;
[[Category:Solid]]&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/Debugging/Debugging_IOSlaves</id>
		<title>Development/Tutorials/Debugging/Debugging IOSlaves</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/Debugging/Debugging_IOSlaves"/>
				<updated>2009-08-18T02:55:14Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* How does an io-slave get started? */ kdeinit doesn't look for main() anymore&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes how you can debug an ioslave with gdb.&lt;br /&gt;
&lt;br /&gt;
==How does an io-slave get started?==&lt;br /&gt;
&lt;br /&gt;
Your application requests 'klauncher' via DCOP [FIXME: Isn't that dbus now?] for a slave. If 'klauncher' does not have an idle slave ready, it will ask kdeinit to start a new one. kdeinit forks and dlopens the library that contains the io-slave.&lt;br /&gt;
Then it calls a function called kdemain() in the library.&lt;br /&gt;
&lt;br /&gt;
==Attaching gdb to an io-slave==&lt;br /&gt;
Due to the above sequence it is rather hard to get an io-slave in your&lt;br /&gt;
debugger. But wait there is hope. You can start &amp;lt;tt&amp;gt;klauncher&amp;lt;/tt&amp;gt; in such a way&lt;br /&gt;
that slaves for a certain protocol (the first parameter of KIO::SlaveBase() constructor of the slave class) are started in debug mode.&lt;br /&gt;
&lt;br /&gt;
E.g. to start all 'http' slaves in debug mode, you type:&lt;br /&gt;
&lt;br /&gt;
        in KDE 3: KDE_SLAVE_DEBUG_WAIT=http kdeinit&lt;br /&gt;
        in KDE 4: KDE_SLAVE_DEBUG_WAIT=http kdeinit4&lt;br /&gt;
&lt;br /&gt;
This will restart 'kdeinit' and 'klauncher'.&lt;br /&gt;
&lt;br /&gt;
When your application now requests a http slave, the slave will be started&lt;br /&gt;
by kdeinit, but before it calls kdemain() (cq. main()) it will suspend the&lt;br /&gt;
slave by sending it a SIGSTOP signal.&lt;br /&gt;
&lt;br /&gt;
In the terminal from which you started kdeinit you will get the following&lt;br /&gt;
message:&lt;br /&gt;
&lt;br /&gt;
kdeinit: Suspending process&lt;br /&gt;
kdeinit: 'gdb kdeinit 16779' to debug&lt;br /&gt;
kdeinit: 'kill -SIGCONT 16779' to continue&lt;br /&gt;
&lt;br /&gt;
You can now debug your slave by typing (or pasting) 'gdb kdeinit 16779' in&lt;br /&gt;
a terminal. If you don't want to debug a slave you can let it continue by&lt;br /&gt;
sending it a SIGCONT by typing 'kill -SIGCONT 16779'.&lt;br /&gt;
&lt;br /&gt;
Be aware that slaves will not be killed while they are suspended.&lt;br /&gt;
&lt;br /&gt;
Once you have started gdb, you can set e.g. breakpoints and then resume the &lt;br /&gt;
slave by typing 'continue'. The debugger will return immediate with a message &lt;br /&gt;
that a SIGSTOP has been received so you will have to type 'continue' a second &lt;br /&gt;
time.&lt;br /&gt;
&lt;br /&gt;
See also [[Development/Tutorials/Debugging/Debugging_on_MS_Windows#Debugging_kioslaves|Windows-specific notes on debugging io-slaves]].&lt;br /&gt;
&lt;br /&gt;
==Debugging io-slaves with valgrind==&lt;br /&gt;
KLauncher can be told to run certain io-slaves through valgrind. The following&lt;br /&gt;
command can be used to let klauncher run all https io-slaves via valgrind:&lt;br /&gt;
&lt;br /&gt;
        KDE_SLAVE_VALGRIND=https kdeinit4&lt;br /&gt;
&lt;br /&gt;
The valgrind output will appear as the stderr output of the kdeinit process.&lt;br /&gt;
The $VALGRIND_OPTS environment variable can be used to pass options to valgrind.&lt;br /&gt;
If you want to use a different skin:&lt;br /&gt;
&lt;br /&gt;
        KDE_SLAVE_VALGRIND_SKIN=calltree      ( for example )&lt;br /&gt;
&lt;br /&gt;
==How to get debug output==&lt;br /&gt;
It is useful to redirect the debug output of your particular slave to a file &lt;br /&gt;
instead of stderr. E.g. I myself use the following lines in&lt;br /&gt;
$KDEDIR/share/config/kdebugrc.&lt;br /&gt;
&lt;br /&gt;
       [7113]&lt;br /&gt;
       InfoOutput=0&lt;br /&gt;
       InfoFilename=/tmp/http&lt;br /&gt;
       [7103]&lt;br /&gt;
       InfoOutput=0&lt;br /&gt;
       InfoFilename=/tmp/http &lt;br /&gt;
&lt;br /&gt;
This redirects all debug info for areas 7103 and 7113 (as used by kio_http) &lt;br /&gt;
to the file /tmp/http.&lt;br /&gt;
&lt;br /&gt;
To get debug information from the SMB slave you can add the following to&lt;br /&gt;
kioslaverc:&lt;br /&gt;
&lt;br /&gt;
[SMB]&lt;br /&gt;
DebugLevel=100&lt;br /&gt;
&lt;br /&gt;
This will print additional debug info to the stderr of your kdeinit process,&lt;br /&gt;
which typically ends up in ~/.X.err or ~/.xsession-errors&lt;br /&gt;
&lt;br /&gt;
== specific kioslaves ==&lt;br /&gt;
* [[Development/Tutorials/Debugging/Debugging IOSlaves/Debugging kio_fish|kio_fish]]&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/KIO_Slaves/Using_KIO_Slaves_in_your_Program</id>
		<title>Development/Tutorials/KIO Slaves/Using KIO Slaves in your Program</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/KIO_Slaves/Using_KIO_Slaves_in_your_Program"/>
				<updated>2009-08-18T02:20:12Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* The files */ Change method capitalization - dataishere -&amp;gt; dataIsHere&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this chapter we write a simple browser to show how easy it is to use kioslaves in KDE 4. The browser will download the page www.kde.org and show the html sourcecode. It will not render html - remember this is a programming demo.&lt;br /&gt;
The purpose of kioslaves is to have access to a given storage or data representation without the need for blocking calls. This is solved via QT's signal/slot mechanism: Once the data has arrived, e.g. from a web page, it triggers a signal. The signal is connected to the respective slot and can start processing the data.&lt;br /&gt;
&lt;br /&gt;
= The files =&lt;br /&gt;
&lt;br /&gt;
== main.cpp ==&lt;br /&gt;
&amp;lt;code cppqt&amp;gt;&lt;br /&gt;
#include &amp;lt;QString&amp;gt;&lt;br /&gt;
#include &amp;lt;kapplication.h&amp;gt;&lt;br /&gt;
#include &amp;lt;kaboutdata.h&amp;gt;&lt;br /&gt;
#include &amp;lt;klocalizedstring.h&amp;gt;&lt;br /&gt;
#include &amp;lt;kmessagebox.h&amp;gt;&lt;br /&gt;
#include &amp;lt;kcmdlineargs.h&amp;gt;&lt;br /&gt;
#include &amp;lt;KMainWindow&amp;gt;&lt;br /&gt;
#include &amp;lt;browser.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main (int argc, char *argv[])&lt;br /&gt;
{&lt;br /&gt;
  // KAboutData (const QByteArray &amp;amp;appName, const QByteArray &amp;amp;catalogName, const KLocalizedString &amp;amp;programName, const QByteArray &amp;amp;version,&lt;br /&gt;
  const QByteArray&amp;amp; ba=QByteArray(&amp;quot;test&amp;quot;);&lt;br /&gt;
  const KLocalizedString name=ki18n(&amp;quot;myName&amp;quot;);&lt;br /&gt;
  KAboutData aboutData( ba, ba, name, ba, name);&lt;br /&gt;
  KCmdLineArgs::init( argc, argv, &amp;amp;aboutData );&lt;br /&gt;
  KApplication khello;&lt;br /&gt;
&lt;br /&gt;
  Browser *mw = new Browser();&lt;br /&gt;
  mw-&amp;gt;show();&lt;br /&gt;
  khello.exec();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
The purpose of main is to create a Browser instance and hold it open while the KDE event loop is running (i.e. the KDE program is ready).&lt;br /&gt;
&lt;br /&gt;
== browser.h == &lt;br /&gt;
&amp;lt;code cppqt&amp;gt;&lt;br /&gt;
#ifndef KDE4START_H__&lt;br /&gt;
#define KDE4START_H__&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;kmainwindow.h&amp;gt;&lt;br /&gt;
#include &amp;lt;kio/scheduler.h&amp;gt;&lt;br /&gt;
#include &amp;lt;kurl.h&amp;gt;&lt;br /&gt;
#include &amp;lt;kio/jobclasses.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
class Browser : public QWidget&lt;br /&gt;
{&lt;br /&gt;
  Q_OBJECT&lt;br /&gt;
  public:&lt;br /&gt;
    Browser();&lt;br /&gt;
  public slots:&lt;br /&gt;
    void slotButtonClicked();&lt;br /&gt;
    void dataIsHere(KIO::Job *,const QByteArray &amp;amp;);&lt;br /&gt;
};&lt;br /&gt;
#endif&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== browser.cpp ==&lt;br /&gt;
&amp;lt;code cppqt&amp;gt;&lt;br /&gt;
#include &amp;lt;kio/scheduler.h&amp;gt;&lt;br /&gt;
#include &amp;lt;kurl.h&amp;gt;&lt;br /&gt;
#include &amp;lt;kio/jobclasses.h&amp;gt;&lt;br /&gt;
#include &amp;lt;kdebug.h&amp;gt;&lt;br /&gt;
#include &amp;lt;browser.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
class TransferJob;&lt;br /&gt;
&lt;br /&gt;
Browser::Browser() : QWidget(NULL)&lt;br /&gt;
{&lt;br /&gt;
  slotButtonClicked();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void Browser::slotButtonClicked()&lt;br /&gt;
{&lt;br /&gt;
  kDebug() &amp;lt;&amp;lt; &amp;quot;entering function&amp;quot;;&lt;br /&gt;
  // creating a kioslave&lt;br /&gt;
  KIO::TransferJob *job = KIO::get(KUrl(&amp;quot;http://www.kde.org&amp;quot;));&lt;br /&gt;
  connect (job, SIGNAL(  data(KIO::Job *, const QByteArray &amp;amp; )), this, SLOT(dataIsHere(KIO::Job *,const QByteArray &amp;amp;)));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void Browser::dataIsHere(KIO::Job *,const QByteArray &amp;amp; data )&lt;br /&gt;
{&lt;br /&gt;
  kDebug() &amp;lt;&amp;lt; &amp;quot;data is here&amp;quot;;&lt;br /&gt;
  kDebug() &amp;lt;&amp;lt; data;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
As discussed, the Browser class does not do a busy wait for the data to arrive from the web. Instead, it uses the http kioslave's signal data by connecting it to the slot dataishere. &amp;lt;tt&amp;gt;dataIsHere&amp;lt;/tt&amp;gt; gets the http transmission via its parameter data and just outputs it. That's it - no blocking, no busy wait!&lt;br /&gt;
&lt;br /&gt;
== CMakeLists.txt ==&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
PROJECT( browser )&lt;br /&gt;
FIND_PACKAGE(KDE4 REQUIRED)&lt;br /&gt;
INCLUDE_DIRECTORIES( ${KDE4_INCLUDES} . )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SET(kde4startSources main.cpp browser.cpp )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
KDE4_ADD_EXECUTABLE(browser ${kde4startSources} )&lt;br /&gt;
&lt;br /&gt;
TARGET_LINK_LIBRARIES(browser ${KDE4_KDEUI_LIBS} ${KDE4_KPARTS_LIBS} )&lt;br /&gt;
&lt;br /&gt;
install(TARGETS browser  DESTINATION ${BIN_INSTALL_DIR} )&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Kompile, link and run it =&lt;br /&gt;
 cmake . &amp;amp;&amp;amp; make &amp;amp;&amp;amp; ./browser&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/D-Bus/Introduction</id>
		<title>Development/Tutorials/D-Bus/Introduction</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/D-Bus/Introduction"/>
				<updated>2009-08-16T23:01:54Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* Services */ Make the first paragraph easier to understand&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Development/Tutorials/D-Bus/Introduction}}&lt;br /&gt;
&lt;br /&gt;
{{TutorialBrowser|&lt;br /&gt;
&lt;br /&gt;
series=D-Bus|&lt;br /&gt;
&lt;br /&gt;
name=Introduction To D-BUS|&lt;br /&gt;
&lt;br /&gt;
next=[[../Accessing Interfaces|Accessing Interfaces]]|&lt;br /&gt;
&lt;br /&gt;
reading=[http://www.freedesktop.org/wiki/Software/dbus#head-9e9cf3221a30246219863f1d2366e36cb580debc D-Bus documentation page]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
&lt;br /&gt;
[http://www.freedesktop.org/wiki/Software/dbus D-Bus] is a Free/Open Source software '''i'''nter-'''p'''rocess '''c'''ommunication (IPC) mechanism that is in widespread use by open source desktop software today. It is part of the [http://freedesktop.org freedesktop.org] project and used in a wide range of applications. Examples include hotplug notifications on Linux, desktop search queries in strigi and as the primary means of IPC in KDE 4. This tutorial introduces D-Bus terminology and looks at the basic concepts of D-Bus, from an application developer's perspective.&lt;br /&gt;
&lt;br /&gt;
== What Is IPC? ==&lt;br /&gt;
&lt;br /&gt;
The term &amp;quot;IPC&amp;quot; can be used to describe any number of methods of getting information from one process to another. The information transmitted may take the form of application data, method invocations or spontaneous signals. The actual communication is usually done over sockets or pipes and sometimes, as is the case with D-Bus, uses a process to perform message routing, service activation and access control.&lt;br /&gt;
&lt;br /&gt;
The use cases for IPC on the desktop range from scripting (allowing a user to execute a script in a common environment to interact with or control various running applications), to providing access to centralized services, to coordination between multiple instances of cooperative applications.&lt;br /&gt;
&lt;br /&gt;
As a concrete example, file access in KDE is usually performed via the KIO virtual file system (VFS) using KIOSlaves. These KIOSlaves are small applications that implement read, write, etc access to data over a given protocol or specification (e.g. http or local filesystem APIs). The slaves are run as independent processes and exchange data with the application &amp;amp;mdash; which the user is interacting with &amp;amp;mdash; asynchronously via IPC. This not only allows the same slave to be used by multiple applications but it also keeps the slaves themselves simple as they can do things such as perform blocking operations without causing the graphical application itself to block. The graphical application never actually &amp;quot;sees&amp;quot; the IPC occurring as it happens behind the scenes of KIO API.&lt;br /&gt;
&lt;br /&gt;
Another example of IPC usage is in KDE's unique application support. When a KUniqueApplication is started it checks first for other running instances of the same application and if there is one it sends a message to the running instance via IPC to show itself.&lt;br /&gt;
&lt;br /&gt;
The primary IPC mechanism for applications in KDE4 is D-Bus, which is a popular system used by a variety of software today. Qt4 provides a set of intuitive and stable bindings to D-Bus in the form of C++ classes. This series of tutorials introduces D-Bus as well as covers how to use the Qt4 D-Bus API. This particular article describes the high-level concepts in D-Bus and leaves the details of how one uses these features and functionality to the articles that follow.&lt;br /&gt;
&lt;br /&gt;
== Buses ==&lt;br /&gt;
&lt;br /&gt;
D-Bus provides multiple message &amp;quot;buses&amp;quot; for applications to use in communicating with each other. Each bus provides its own connection facilities, which allow for the separation of different categories of messages: messages sent on one bus can not be accessed from another bus, but applications connected to the same bus may all communicate with each other. Multiple applications can be connected to any given bus at any given time, and an application can be connected to multiple buses simultaneously. This allows different security policies to be applied to different buses while also allowing for the efficient sharing of both global and local messages.&lt;br /&gt;
&lt;br /&gt;
A system-wide bus for messages from the operating system kernel itself and other system-global services is provided by default and is called, appropriately, the '''system bus'''. This is the bus used to do things such as signal when new hardware is made available to the system, such as when a flash drive is plugged in a or a DVD is inserted into the drive.&lt;br /&gt;
&lt;br /&gt;
Each desktop session (e.g. each logged in user) has one or more buses associated with it. These are called '''session buses'''. The default bus for the current session is called ''the'' session bus and is the one that desktop applications will tend to use most often.&lt;br /&gt;
&lt;br /&gt;
Additionally, an application may create its own private bus between itself and another application in a peer-to-peer fashion.&lt;br /&gt;
&lt;br /&gt;
There is no practical limit to the number of buses the applications associated with a given user may be using. However, it is the ability to share buses &amp;amp;mdash; and therefore common messaging &amp;amp;mdash; where systems like D-Bus really shine.&lt;br /&gt;
&lt;br /&gt;
== Messages ==&lt;br /&gt;
&lt;br /&gt;
The base unit of communication on a bus is the '''message'''. All information passed over the bus is done in the form of messages, similar to the way information transmitted using TCP/IP is done via packets. Unlike network packets, however, each D-Bus message is guaranteed to contain the entire set of data being sent or received. In addition to the data being sent, messages also record who the sender and intended receiver are to allow for proper routing.&lt;br /&gt;
&lt;br /&gt;
This system maps well to how desktop applications tend to work internally: method calls (messages) result in some action being taken with the possibility of return values. One of the primary additional features of D-Bus messages is that they are asynchronous: a message may be sent while the reply may not happen for an indeterminate period of time (timeouts are provided to prevent 'wait forever' deadlocks). Of course, there are conveniences in the Qt4 D-Bus API to make calls appear to be synchronous to the calling application.&lt;br /&gt;
&lt;br /&gt;
Messages can be sent by an application to itself. These are &amp;quot;short-circuited&amp;quot; and kept local to the application, so it is not necessary for code in an application to worry about whether or not it might actually be calling a remote or local application. This is often useful in highly componentized apps and prevents possible deadlock situations.&lt;br /&gt;
&lt;br /&gt;
== Namespaces and Addresses ==&lt;br /&gt;
&lt;br /&gt;
Since multiple applications can be on the same bus, and one application may provide multiple objects to which messages can be sent, it is necessary to have a means to effectively and unambiguously address any given object on any given bus, similar to the way a street address uniquely identifies any given residence or office. There are 3 pieces of information which, when taken together, create a unique address for any given object on a bus: interface, service and object name.&lt;br /&gt;
&lt;br /&gt;
=== Interfaces ===&lt;br /&gt;
&lt;br /&gt;
An '''interface''' is a set of callable methods and signals that are advertised on the bus. An interface provides a &amp;quot;contract&amp;quot; between the applications passing messages that defines the name, parameters (if any) and return values (if any) of the interface. These methods may not map directly in a one-to-one fashion to methods or API in the application that is advertising the interface, though they often do. This allows multiple applications to provide similar or the same interfaces, regardless of internal implementation, while allowing applications to use these interfaces without worrying about the internal design of the applications.&lt;br /&gt;
&lt;br /&gt;
Interfaces can be described for documentation and code re-use purposes using XML. Not only can users and programmers reference the XML description of the interface, but developers can use classes that are auto-generated from the XML &amp;amp;mdash; making using D-Bus much easier and less error-prone (e.g. the compiler can check the syntax of messages at compile time).&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
A '''service''' represents an application connection to a bus.&lt;br /&gt;
&lt;br /&gt;
'''Service''' here corresponds to &amp;quot;well-known&amp;quot; [http://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-names Bus names] in the D-Bus specification terminology. The term &amp;quot;Bus name&amp;quot; is a bit confusing. Regardless of how it sounds like, '''Bus names''' are the names of connections(!) on the bus, not names of buses(!). So here the term '''service''' will be used, as the Qt Documentation calls it.&lt;br /&gt;
&lt;br /&gt;
These are kept unique by using a &amp;quot;reverse domain name&amp;quot;  approach, as can be seen in many other systems that need to namespace for multiple components. Most services provided by applications from the KDE project itself use the &amp;lt;tt&amp;gt;org.kde&amp;lt;/tt&amp;gt; prefix to their service name. So one may find &amp;quot;org.kde.screensaver&amp;quot; advertised on the session bus.&lt;br /&gt;
&lt;br /&gt;
You should use the domain name for your organization or application for your service names. For example if your domain is &amp;lt;tt&amp;gt;awesomeapps.org&amp;lt;/tt&amp;gt; and the name of your application is &amp;lt;tt&amp;gt;wickedwidget&amp;lt;/tt&amp;gt; you would probably use &amp;lt;tt&amp;gt;org.awesomeapps.wickedwidget&amp;lt;/tt&amp;gt; as the service name on the bus.&lt;br /&gt;
&lt;br /&gt;
If an application has more than one connection to a bus, or if multiple instances of the same application may be active at once, it will need to use a unique service name for each connection. Often this is done by appending the process ID to the service name.&lt;br /&gt;
&lt;br /&gt;
=== Objects ===&lt;br /&gt;
&lt;br /&gt;
Of course, an application is likely to advertise access to more than one object on the bus. This many-to-one relationship between objects and services is accommodated by providing a '''path''' component to the address. Each path associated with a service represents a different, unique object. An example might be &amp;lt;tt&amp;gt;/MainInterface&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;/Documents/Doc1&amp;lt;/tt&amp;gt;. The actual path structure is completely arbitrary and is up to the application providing the service as to what the paths should be. These paths simply provide a way to identify and logically group objects for applications that send messages to the application.&lt;br /&gt;
&lt;br /&gt;
Some libraries export object paths with their &amp;quot;reverse domain&amp;quot; prepended to it, so as to properly namespace their objects. This is quite common for libraries and plugins that join an arbitrary service and must therefore avoid all clashing with objects exported by the application and other components. However, this practice is not in use in KDE applications and libraries.&lt;br /&gt;
&lt;br /&gt;
Objects provide access to interfaces. In fact, a given object can provide access to multiple interfaces at the same time.&lt;br /&gt;
&lt;br /&gt;
=== Putting It All Together ===&lt;br /&gt;
&lt;br /&gt;
A D-Bus message contains an address made up of all the above components so that it can be routed to the correct application, object and method call. Such an address might look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
org.kde.krunner /ScreenSaver org.kde.screensaver.setBlankOnly&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case &amp;lt;tt&amp;gt;org.kde.krunner&amp;lt;/tt&amp;gt; is the service, &amp;lt;tt&amp;gt;/ScreenSaver&amp;lt;/tt&amp;gt; is the path to the object, &amp;lt;tt&amp;gt;org.kde.screensaver&amp;lt;/tt&amp;gt; is the interface the object exports and &amp;lt;tt&amp;gt;setBlankOnly&amp;lt;/tt&amp;gt; is a method in the interface. If the &amp;lt;tt&amp;gt;/ScreenSaver&amp;lt;/tt&amp;gt; object only provides the &amp;lt;tt&amp;gt;org.kde.screensaver&amp;lt;/tt&amp;gt; interface (or the &amp;lt;tt&amp;gt;setBlankOnly&amp;lt;/tt&amp;gt; method is unique amongst the services it implements) then this would work equally well as an address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
org.kde.krunner /ScreenSaver setBlankOnly&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this way each possible destination is uniquely and reliably addressable.&lt;br /&gt;
&lt;br /&gt;
== Calling and Being Called ==&lt;br /&gt;
&lt;br /&gt;
Now that we have a way to address any given end point on the bus, we can examine the possibilities when it comes to actually sending or receiving messages.&lt;br /&gt;
&lt;br /&gt;
=== Methods ===&lt;br /&gt;
&lt;br /&gt;
Methods are messages that are sent to cause code to be executed in the receiving application. If the method is not available because, for instance, the address was wrong or the requested application is not running, an error will be returned to the calling application. If the method is successfully called, an optional return value will be returned to the calling application. Even if there is no return value provided, a success message will be returned. This round trip does have overhead, and it is important to keep this in mind for performance critical code.&lt;br /&gt;
&lt;br /&gt;
Such method calls are always initiated by the calling application and the resulting messages have exactly one source and one destination address.&lt;br /&gt;
&lt;br /&gt;
=== Signals ===&lt;br /&gt;
&lt;br /&gt;
Signals are like method calls except that they happen in the &amp;quot;reverse&amp;quot; direction and are not tied to a single destination. A signal is emitted by the application which is exporting the interface and is available to any application on the same bus. This allows an application to spontaneously advertise changes in state or other events, to any applications which may be interested in tracking those changes.&lt;br /&gt;
&lt;br /&gt;
If this sounds a lot like the signal and slots mechanism in Qt, that's because it is. For all intents and purposes it is a non-local version of the same functionality.&lt;br /&gt;
&lt;br /&gt;
== Useful Tools ==&lt;br /&gt;
&lt;br /&gt;
There are several useful tools for exploring the D-Bus busses as well as developing applications that use D-Bus. We will now look briefly at end-user tools as the articles that follow cover the development tools in greater detail and context.&lt;br /&gt;
&lt;br /&gt;
=== qdbus ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;qdbus&amp;lt;/tt&amp;gt; is a command line tool which can be used to list the services, objects and interfaces on a given bus as well as send messages to a given address on the bus. It can be used to explore both the system and the default session bus. If the &amp;lt;tt&amp;gt;--system&amp;lt;/tt&amp;gt; switch is passed, &amp;lt;tt&amp;gt;qdbus&amp;lt;/tt&amp;gt; will connect to the system bus, otherwise it uses the session bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;qdbus&amp;lt;/tt&amp;gt; uses the rest of the supplied arguments on the command as an address and, if any, parameters to pass to a given object. If a full address is not supplied, then it lists all the objects available from that point on the bus. For instance, if no addresses are provided a list of available services is listed. If a service name is provided, object paths will be provided. If a path is also provided all methods in all interfaces will be listed. In this way one can quite easily explore and interact with objects on the bus, making &amp;lt;tt&amp;gt;qdbus&amp;lt;/tt&amp;gt; very useful for testing, scripting and even idle exploration.&lt;br /&gt;
&lt;br /&gt;
=== qdbusviewer ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;qdbusviewer&amp;lt;/tt&amp;gt; is a Qt application that provides a graphical interface to essentially the same set of features that &amp;lt;tt&amp;gt;qdbus&amp;lt;/tt&amp;gt; provides on the command line, thus providing a more user friendly mechanism to interact with the bus. &amp;lt;tt&amp;gt;qdbusviewer&amp;lt;/tt&amp;gt; ships with Qt4 itself and is easy for anyone who is familiar with the basic D-Bus concepts, such as object addresses, to use.&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/D-Bus/Introduction</id>
		<title>Development/Tutorials/D-Bus/Introduction</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/D-Bus/Introduction"/>
				<updated>2009-08-16T22:57:47Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* Services */ Fix capitalization typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Development/Tutorials/D-Bus/Introduction}}&lt;br /&gt;
&lt;br /&gt;
{{TutorialBrowser|&lt;br /&gt;
&lt;br /&gt;
series=D-Bus|&lt;br /&gt;
&lt;br /&gt;
name=Introduction To D-BUS|&lt;br /&gt;
&lt;br /&gt;
next=[[../Accessing Interfaces|Accessing Interfaces]]|&lt;br /&gt;
&lt;br /&gt;
reading=[http://www.freedesktop.org/wiki/Software/dbus#head-9e9cf3221a30246219863f1d2366e36cb580debc D-Bus documentation page]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
&lt;br /&gt;
[http://www.freedesktop.org/wiki/Software/dbus D-Bus] is a Free/Open Source software '''i'''nter-'''p'''rocess '''c'''ommunication (IPC) mechanism that is in widespread use by open source desktop software today. It is part of the [http://freedesktop.org freedesktop.org] project and used in a wide range of applications. Examples include hotplug notifications on Linux, desktop search queries in strigi and as the primary means of IPC in KDE 4. This tutorial introduces D-Bus terminology and looks at the basic concepts of D-Bus, from an application developer's perspective.&lt;br /&gt;
&lt;br /&gt;
== What Is IPC? ==&lt;br /&gt;
&lt;br /&gt;
The term &amp;quot;IPC&amp;quot; can be used to describe any number of methods of getting information from one process to another. The information transmitted may take the form of application data, method invocations or spontaneous signals. The actual communication is usually done over sockets or pipes and sometimes, as is the case with D-Bus, uses a process to perform message routing, service activation and access control.&lt;br /&gt;
&lt;br /&gt;
The use cases for IPC on the desktop range from scripting (allowing a user to execute a script in a common environment to interact with or control various running applications), to providing access to centralized services, to coordination between multiple instances of cooperative applications.&lt;br /&gt;
&lt;br /&gt;
As a concrete example, file access in KDE is usually performed via the KIO virtual file system (VFS) using KIOSlaves. These KIOSlaves are small applications that implement read, write, etc access to data over a given protocol or specification (e.g. http or local filesystem APIs). The slaves are run as independent processes and exchange data with the application &amp;amp;mdash; which the user is interacting with &amp;amp;mdash; asynchronously via IPC. This not only allows the same slave to be used by multiple applications but it also keeps the slaves themselves simple as they can do things such as perform blocking operations without causing the graphical application itself to block. The graphical application never actually &amp;quot;sees&amp;quot; the IPC occurring as it happens behind the scenes of KIO API.&lt;br /&gt;
&lt;br /&gt;
Another example of IPC usage is in KDE's unique application support. When a KUniqueApplication is started it checks first for other running instances of the same application and if there is one it sends a message to the running instance via IPC to show itself.&lt;br /&gt;
&lt;br /&gt;
The primary IPC mechanism for applications in KDE4 is D-Bus, which is a popular system used by a variety of software today. Qt4 provides a set of intuitive and stable bindings to D-Bus in the form of C++ classes. This series of tutorials introduces D-Bus as well as covers how to use the Qt4 D-Bus API. This particular article describes the high-level concepts in D-Bus and leaves the details of how one uses these features and functionality to the articles that follow.&lt;br /&gt;
&lt;br /&gt;
== Buses ==&lt;br /&gt;
&lt;br /&gt;
D-Bus provides multiple message &amp;quot;buses&amp;quot; for applications to use in communicating with each other. Each bus provides its own connection facilities, which allow for the separation of different categories of messages: messages sent on one bus can not be accessed from another bus, but applications connected to the same bus may all communicate with each other. Multiple applications can be connected to any given bus at any given time, and an application can be connected to multiple buses simultaneously. This allows different security policies to be applied to different buses while also allowing for the efficient sharing of both global and local messages.&lt;br /&gt;
&lt;br /&gt;
A system-wide bus for messages from the operating system kernel itself and other system-global services is provided by default and is called, appropriately, the '''system bus'''. This is the bus used to do things such as signal when new hardware is made available to the system, such as when a flash drive is plugged in a or a DVD is inserted into the drive.&lt;br /&gt;
&lt;br /&gt;
Each desktop session (e.g. each logged in user) has one or more buses associated with it. These are called '''session buses'''. The default bus for the current session is called ''the'' session bus and is the one that desktop applications will tend to use most often.&lt;br /&gt;
&lt;br /&gt;
Additionally, an application may create its own private bus between itself and another application in a peer-to-peer fashion.&lt;br /&gt;
&lt;br /&gt;
There is no practical limit to the number of buses the applications associated with a given user may be using. However, it is the ability to share buses &amp;amp;mdash; and therefore common messaging &amp;amp;mdash; where systems like D-Bus really shine.&lt;br /&gt;
&lt;br /&gt;
== Messages ==&lt;br /&gt;
&lt;br /&gt;
The base unit of communication on a bus is the '''message'''. All information passed over the bus is done in the form of messages, similar to the way information transmitted using TCP/IP is done via packets. Unlike network packets, however, each D-Bus message is guaranteed to contain the entire set of data being sent or received. In addition to the data being sent, messages also record who the sender and intended receiver are to allow for proper routing.&lt;br /&gt;
&lt;br /&gt;
This system maps well to how desktop applications tend to work internally: method calls (messages) result in some action being taken with the possibility of return values. One of the primary additional features of D-Bus messages is that they are asynchronous: a message may be sent while the reply may not happen for an indeterminate period of time (timeouts are provided to prevent 'wait forever' deadlocks). Of course, there are conveniences in the Qt4 D-Bus API to make calls appear to be synchronous to the calling application.&lt;br /&gt;
&lt;br /&gt;
Messages can be sent by an application to itself. These are &amp;quot;short-circuited&amp;quot; and kept local to the application, so it is not necessary for code in an application to worry about whether or not it might actually be calling a remote or local application. This is often useful in highly componentized apps and prevents possible deadlock situations.&lt;br /&gt;
&lt;br /&gt;
== Namespaces and Addresses ==&lt;br /&gt;
&lt;br /&gt;
Since multiple applications can be on the same bus, and one application may provide multiple objects to which messages can be sent, it is necessary to have a means to effectively and unambiguously address any given object on any given bus, similar to the way a street address uniquely identifies any given residence or office. There are 3 pieces of information which, when taken together, create a unique address for any given object on a bus: interface, service and object name.&lt;br /&gt;
&lt;br /&gt;
=== Interfaces ===&lt;br /&gt;
&lt;br /&gt;
An '''interface''' is a set of callable methods and signals that are advertised on the bus. An interface provides a &amp;quot;contract&amp;quot; between the applications passing messages that defines the name, parameters (if any) and return values (if any) of the interface. These methods may not map directly in a one-to-one fashion to methods or API in the application that is advertising the interface, though they often do. This allows multiple applications to provide similar or the same interfaces, regardless of internal implementation, while allowing applications to use these interfaces without worrying about the internal design of the applications.&lt;br /&gt;
&lt;br /&gt;
Interfaces can be described for documentation and code re-use purposes using XML. Not only can users and programmers reference the XML description of the interface, but developers can use classes that are auto-generated from the XML &amp;amp;mdash; making using D-Bus much easier and less error-prone (e.g. the compiler can check the syntax of messages at compile time).&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
A '''service''' represents an application connection to a bus.&lt;br /&gt;
&lt;br /&gt;
'''Service''' here corresponds to &amp;quot;well-known&amp;quot; [http://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-names Bus names] in the D-Bus specification terminology. A term &amp;quot;Bus name&amp;quot; is a bit confusing. Regardless of how it sounds like, '''Bus names''' are the names of connections(!) on the bus, not names of buses(!). So here the term '''service''' used, as Qt Documentation calls it.&lt;br /&gt;
&lt;br /&gt;
These are kept unique by using a &amp;quot;reverse domain name&amp;quot;  approach, as can be seen in many other systems that need to namespace for multiple components. Most services provided by applications from the KDE project itself use the &amp;lt;tt&amp;gt;org.kde&amp;lt;/tt&amp;gt; prefix to their service name. So one may find &amp;quot;org.kde.screensaver&amp;quot; advertised on the session bus.&lt;br /&gt;
&lt;br /&gt;
You should use the domain name for your organization or application for your service names. For example if your domain is &amp;lt;tt&amp;gt;awesomeapps.org&amp;lt;/tt&amp;gt; and the name of your application is &amp;lt;tt&amp;gt;wickedwidget&amp;lt;/tt&amp;gt; you would probably use &amp;lt;tt&amp;gt;org.awesomeapps.wickedwidget&amp;lt;/tt&amp;gt; as the service name on the bus.&lt;br /&gt;
&lt;br /&gt;
If an application has more than one connection to a bus, or if multiple instances of the same application may be active at once, it will need to use a unique service name for each connection. Often this is done by appending the process ID to the service name.&lt;br /&gt;
&lt;br /&gt;
=== Objects ===&lt;br /&gt;
&lt;br /&gt;
Of course, an application is likely to advertise access to more than one object on the bus. This many-to-one relationship between objects and services is accommodated by providing a '''path''' component to the address. Each path associated with a service represents a different, unique object. An example might be &amp;lt;tt&amp;gt;/MainInterface&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;/Documents/Doc1&amp;lt;/tt&amp;gt;. The actual path structure is completely arbitrary and is up to the application providing the service as to what the paths should be. These paths simply provide a way to identify and logically group objects for applications that send messages to the application.&lt;br /&gt;
&lt;br /&gt;
Some libraries export object paths with their &amp;quot;reverse domain&amp;quot; prepended to it, so as to properly namespace their objects. This is quite common for libraries and plugins that join an arbitrary service and must therefore avoid all clashing with objects exported by the application and other components. However, this practice is not in use in KDE applications and libraries.&lt;br /&gt;
&lt;br /&gt;
Objects provide access to interfaces. In fact, a given object can provide access to multiple interfaces at the same time.&lt;br /&gt;
&lt;br /&gt;
=== Putting It All Together ===&lt;br /&gt;
&lt;br /&gt;
A D-Bus message contains an address made up of all the above components so that it can be routed to the correct application, object and method call. Such an address might look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
org.kde.krunner /ScreenSaver org.kde.screensaver.setBlankOnly&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case &amp;lt;tt&amp;gt;org.kde.krunner&amp;lt;/tt&amp;gt; is the service, &amp;lt;tt&amp;gt;/ScreenSaver&amp;lt;/tt&amp;gt; is the path to the object, &amp;lt;tt&amp;gt;org.kde.screensaver&amp;lt;/tt&amp;gt; is the interface the object exports and &amp;lt;tt&amp;gt;setBlankOnly&amp;lt;/tt&amp;gt; is a method in the interface. If the &amp;lt;tt&amp;gt;/ScreenSaver&amp;lt;/tt&amp;gt; object only provides the &amp;lt;tt&amp;gt;org.kde.screensaver&amp;lt;/tt&amp;gt; interface (or the &amp;lt;tt&amp;gt;setBlankOnly&amp;lt;/tt&amp;gt; method is unique amongst the services it implements) then this would work equally well as an address:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
org.kde.krunner /ScreenSaver setBlankOnly&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this way each possible destination is uniquely and reliably addressable.&lt;br /&gt;
&lt;br /&gt;
== Calling and Being Called ==&lt;br /&gt;
&lt;br /&gt;
Now that we have a way to address any given end point on the bus, we can examine the possibilities when it comes to actually sending or receiving messages.&lt;br /&gt;
&lt;br /&gt;
=== Methods ===&lt;br /&gt;
&lt;br /&gt;
Methods are messages that are sent to cause code to be executed in the receiving application. If the method is not available because, for instance, the address was wrong or the requested application is not running, an error will be returned to the calling application. If the method is successfully called, an optional return value will be returned to the calling application. Even if there is no return value provided, a success message will be returned. This round trip does have overhead, and it is important to keep this in mind for performance critical code.&lt;br /&gt;
&lt;br /&gt;
Such method calls are always initiated by the calling application and the resulting messages have exactly one source and one destination address.&lt;br /&gt;
&lt;br /&gt;
=== Signals ===&lt;br /&gt;
&lt;br /&gt;
Signals are like method calls except that they happen in the &amp;quot;reverse&amp;quot; direction and are not tied to a single destination. A signal is emitted by the application which is exporting the interface and is available to any application on the same bus. This allows an application to spontaneously advertise changes in state or other events, to any applications which may be interested in tracking those changes.&lt;br /&gt;
&lt;br /&gt;
If this sounds a lot like the signal and slots mechanism in Qt, that's because it is. For all intents and purposes it is a non-local version of the same functionality.&lt;br /&gt;
&lt;br /&gt;
== Useful Tools ==&lt;br /&gt;
&lt;br /&gt;
There are several useful tools for exploring the D-Bus busses as well as developing applications that use D-Bus. We will now look briefly at end-user tools as the articles that follow cover the development tools in greater detail and context.&lt;br /&gt;
&lt;br /&gt;
=== qdbus ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;qdbus&amp;lt;/tt&amp;gt; is a command line tool which can be used to list the services, objects and interfaces on a given bus as well as send messages to a given address on the bus. It can be used to explore both the system and the default session bus. If the &amp;lt;tt&amp;gt;--system&amp;lt;/tt&amp;gt; switch is passed, &amp;lt;tt&amp;gt;qdbus&amp;lt;/tt&amp;gt; will connect to the system bus, otherwise it uses the session bus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;qdbus&amp;lt;/tt&amp;gt; uses the rest of the supplied arguments on the command as an address and, if any, parameters to pass to a given object. If a full address is not supplied, then it lists all the objects available from that point on the bus. For instance, if no addresses are provided a list of available services is listed. If a service name is provided, object paths will be provided. If a path is also provided all methods in all interfaces will be listed. In this way one can quite easily explore and interact with objects on the bus, making &amp;lt;tt&amp;gt;qdbus&amp;lt;/tt&amp;gt; very useful for testing, scripting and even idle exploration.&lt;br /&gt;
&lt;br /&gt;
=== qdbusviewer ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;qdbusviewer&amp;lt;/tt&amp;gt; is a Qt application that provides a graphical interface to essentially the same set of features that &amp;lt;tt&amp;gt;qdbus&amp;lt;/tt&amp;gt; provides on the command line, thus providing a more user friendly mechanism to interact with the bus. &amp;lt;tt&amp;gt;qdbusviewer&amp;lt;/tt&amp;gt; ships with Qt4 itself and is easy for anyone who is familiar with the basic D-Bus concepts, such as object addresses, to use.&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/Using_KConfig_XT</id>
		<title>Development/Tutorials/Using KConfig XT</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/Using_KConfig_XT"/>
				<updated>2009-07-30T03:45:38Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* out-of-source builds */ Fix typo: than -&amp;gt; then&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Development/Tutorials/Using_KConfig_XT}}&lt;br /&gt;
{{TutorialBrowser|&lt;br /&gt;
&lt;br /&gt;
series=KConfig|&lt;br /&gt;
&lt;br /&gt;
pre=[[../KConfig|Introduction to KConfig]]&amp;lt;br&amp;gt;[[../CMake|Introduction to CMake]]|&lt;br /&gt;
&lt;br /&gt;
next=None|&lt;br /&gt;
&lt;br /&gt;
name=Using KConfig XT|&lt;br /&gt;
&lt;br /&gt;
reading=[http://api.kde.org/4.0-api/kdelibs-apidocs/kdecore/html/kconfig_compiler.html The KDE Configuration Compiler (KDE 4)]&amp;lt;br&amp;gt;[http://api.kde.org/3.5-api/kdelibs-apidocs/kdecore/html/kconfig_compiler.html The KDE Configuration Compiler (KDE 3)]&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Using KConfig XT ==&lt;br /&gt;
''Original Author'': Zack Rusin &amp;lt;[mailto:zack@kde.org zack@kde.org]&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This tutorial introduces the main concepts of the KconfigXT &lt;br /&gt;
configuration framework and shows how to efficiently use it in applications. It assumes that the reader has already developed a KDE application and is familiar with KConfig. A basic understanding of XML and concepts behind XML Schema is also required.&lt;br /&gt;
  &lt;br /&gt;
The main idea behind KConfig XT is to make the life of application developers &lt;br /&gt;
easier while making the administration of large KDE installations more manageable.&lt;br /&gt;
The four basic parts of the new framework are: &lt;br /&gt;
&lt;br /&gt;
* KConfigSkeleton - a class in the libkdecore library which grants a more flexible access to the configuration options,&lt;br /&gt;
* XML file containing information about configuration options (the {{path|.kcfg}} file)&lt;br /&gt;
* An ini like file which provides the code generation options (the {{path|.kcfgc}} file)&lt;br /&gt;
* kconfig_compiler - which generates C++ source code from {{path|.kcfg}} and {{path|.kcfgc}} files. The generated class is based on KConfigSkeleton and provides an API for the application to access its configuration data.&lt;br /&gt;
&lt;br /&gt;
{{note|In this tutorial more advanced and optional features of KConfig XT and their descriptions are marked by ''italic text''. If you decide to skip them during the first reading, be sure to come back to them at some point. }}&lt;br /&gt;
&lt;br /&gt;
== .kcfg Structure ==&lt;br /&gt;
&lt;br /&gt;
The structure of the {{path|.kcfg}} file is described by its XML Schema (kcfg.xsd - available from&lt;br /&gt;
[http://www.kde.org/standards/kcfg/1.0/kcfg.xsd here] or [http://websvn.kde.org/trunk/KDE/kdelibs/kdecore/kconfig_compiler/kcfg.xsd?view=markup from the kdecore library] ). Please go through it before you go any further.  &lt;br /&gt;
&lt;br /&gt;
Lets create a simple .kcfg file. Please reference the code below as we go through each step.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;kcfg xmlns=&amp;quot;http://www.kde.org/standards/kcfg/1.0&amp;quot;&lt;br /&gt;
      xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&lt;br /&gt;
      xsi:schemaLocation=&amp;quot;http://www.kde.org/standards/kcfg/1.0&lt;br /&gt;
                          http://www.kde.org/standards/kcfg/1.0/kcfg.xsd&amp;quot; &amp;gt;&lt;br /&gt;
  &amp;lt;kcfgfile name=&amp;quot;kjotsrc&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;include&amp;gt;kglobalsettings.h&amp;lt;/include&amp;gt;&lt;br /&gt;
  &amp;lt;group name=&amp;quot;kjots&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;entry name=&amp;quot;SplitterSizes&amp;quot; type=&amp;quot;IntList&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;label&amp;gt;How the main window is divided.&amp;lt;/label&amp;gt;&lt;br /&gt;
    &amp;lt;/entry&amp;gt;&lt;br /&gt;
    &amp;lt;entry name=&amp;quot;Width&amp;quot; type=&amp;quot;Int&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;label&amp;gt;Width of the main window.&amp;lt;/label&amp;gt;&lt;br /&gt;
      &amp;lt;default&amp;gt;600&amp;lt;/default&amp;gt;&lt;br /&gt;
    &amp;lt;/entry&amp;gt;&lt;br /&gt;
    &amp;lt;entry name=&amp;quot;Height&amp;quot; type=&amp;quot;Int&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;label&amp;gt;Height of the main window.&amp;lt;/label&amp;gt;&lt;br /&gt;
      &amp;lt;default&amp;gt;400&amp;lt;/default&amp;gt;&lt;br /&gt;
    &amp;lt;/entry&amp;gt;&lt;br /&gt;
    &amp;lt;entry name=&amp;quot;OpenBooks&amp;quot; type=&amp;quot;StringList&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;label&amp;gt;All books that are opened.&amp;lt;/label&amp;gt;&lt;br /&gt;
    &amp;lt;/entry&amp;gt;&lt;br /&gt;
    &amp;lt;entry name=&amp;quot;CurrentBook&amp;quot; type=&amp;quot;String&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;label&amp;gt;The book currently opened.&amp;lt;/label&amp;gt;&lt;br /&gt;
    &amp;lt;/entry&amp;gt;&lt;br /&gt;
    &amp;lt;entry name=&amp;quot;Font&amp;quot; type=&amp;quot;Font&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;label&amp;gt;The font used to display the contents of books.&amp;lt;/label&amp;gt;&lt;br /&gt;
      &amp;lt;default code=&amp;quot;true&amp;quot;&amp;gt;KGlobalSettings::generalFont()&amp;lt;/default&amp;gt;&lt;br /&gt;
    &amp;lt;/entry&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/kcfg&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Use your favorite code editor to open a your_application_name{{path|.kcfg}} file (of course replacing your_application_name with the name of the application you want to convert to KConfig XT).&lt;br /&gt;
* Start that file by opening the &amp;amp;lt;kcfgfile&amp;amp;gt; tag which controls which KConfig file the data will be stored in. There are three possibilities:&lt;br /&gt;
*# If the &amp;amp;lt;kcfgfile&amp;amp;gt; tag has no attributes the generated code will use the application's default KConfig file (normally {{path|$HOME/.kde/config/&amp;lt;appname&amp;gt;rc}}).&lt;br /&gt;
*# ''The &amp;quot;name&amp;quot; attribute is used to manually specify a file name. If the value assigned to &amp;quot;name&amp;quot; is not an absolute file path, the file will be created in the default KDE config directory (normally {{path|$HOME/.kde/config}}).''&lt;br /&gt;
*# ''If you would like to be able to specify the config file at construction time, use &amp;amp;lt;kcfgfile arg=&amp;quot;true&amp;quot;&amp;amp;gt;. This causes the constructor of the generated class to take a KSharedConfig::Ptr as an argument, allowing you to construct multiple instances pointing to different files.''&lt;br /&gt;
* ''Add the optional &amp;amp;lt;include&amp;amp;gt; tags which may contain C++ header files that are needed to compile the code required to compute the default values.''&lt;br /&gt;
* The remaining entries in the XML file are grouped by the tag &amp;amp;lt;group&amp;amp;gt; which describes the corresponding groups in the configuration file.&lt;br /&gt;
*#The individual entries must have at least a name or a key. The key is used as the key in the config file. The name is used to create accessor and modifier functions. If &amp;amp;lt;key&amp;amp;gt; is not given, the name is used as the config file key. If &amp;amp;lt;key&amp;amp;gt; is given, but not &amp;amp;lt;name&amp;amp;gt;, the name is constructed by removing all spaces from the &amp;amp;lt;key&amp;amp;gt; contents.&lt;br /&gt;
*# Always add &amp;amp;lt;label&amp;amp;gt;, &amp;amp;lt;tooltip&amp;amp;gt; and &amp;amp;lt;whatsthis&amp;amp;gt; tags to your application in which you describe the configuration options. The &amp;amp;lt;label&amp;amp;gt; tag is used for short descriptions of the entry, while &amp;amp;lt;tooltip&amp;amp;gt; and &amp;amp;lt;whatsthis&amp;amp;gt; contains more verbose documentation. ''It's important for tools like KConfigEditor which can be used by systems administrators to setup machines over on the network. Note that this tags will be ignored unless you provide SetUserTexts=true option in your .kcfgc file (see section on it below)''&lt;br /&gt;
*# An entry must also have a type. The allowed types are: String, Url, StringList, Font, Rect, Size, Color, Point, Int, UInt, Bool, Double, DateTime, Int64, UInt64 and Password. '' Besides those basic type the following special types are supported and include:''&lt;br /&gt;
*#* Path - This is a string that is specially treated as a file-path. In particular paths in the home directory are prefixed with $HOME when being stored in the configuration file.&lt;br /&gt;
*#* Enum - This indicates an enumeration. The possible enum values should be provided via the &amp;amp;lt;choices&amp;amp;gt; tag. Enum values are accessed as integers by the application but stored as string in the configuration file. This makes it possible to add more values at a later date without breaking compatibility.&lt;br /&gt;
*#* IntList - This indicates a list of integers. This information is provided to the application as QValueList&amp;amp;lt;int&amp;amp;gt;. Useful for storing QSplitter geometries.&lt;br /&gt;
*#* PathList - List of Path elements.&lt;br /&gt;
*# The min and max tags can be set to limit the value of the integer-type options.&lt;br /&gt;
*#''An entry can optionally have a default value which is used as default when the value isn't specified in any config file. Default values are interpreted as literal constant values. If a default value needs to be computed or if it needs to be obtained from a function call, the &amp;amp;lt;default&amp;amp;gt; tag should contain the code=&amp;quot;true&amp;quot; attribute. The contents of the &amp;amp;lt;default&amp;amp;gt; tag is then considered to be a C++ expression. ''&lt;br /&gt;
*#''Additional code for computing default values can be provided via the &amp;amp;lt;code&amp;amp;gt; tag. The contents of the &amp;amp;lt;code&amp;amp;gt; tag is inserted as-is. A typical use for this is to compute a common default value which can then be referenced by multiple entries that follow.''&lt;br /&gt;
*#''Optionally, the hidden option can also be added to the &amp;amp;lt;entry&amp;amp;gt;. The possible values are true and false.''&lt;br /&gt;
&lt;br /&gt;
== .kcfgc files ==&lt;br /&gt;
&lt;br /&gt;
After creating a {{path|.kcfg}} file create a {{path|.kcfgc}} file which describes the C++ file &lt;br /&gt;
generation options. The .kcfgc file is a simple ini file with the typical &lt;br /&gt;
&amp;quot;entry=value&amp;quot; format. To create a simple .kcfgc file follow these steps:&lt;br /&gt;
&lt;br /&gt;
# Open a new file in your favorite text editor.&lt;br /&gt;
# Start it with the &amp;quot;File=your_application_name.kcfg&amp;quot; entry which specifies where the configuration options for your application are stored.&lt;br /&gt;
# Add the &amp;quot;ClassName=YourConfigClassName&amp;quot; entry which specifies the name of the class that will be generated from the .kcfg file. Remember that the generated class will be derived from KConfigSkeleton. PLease make sure that YourConfigClassName is not a class name already used in your application. Save this file under {{path|yourconfigclassname.kcfgc.}} This will ensure the generation of the yourconfigclassname.{h,cpp} files where your configuration class will reside. &lt;br /&gt;
# Add any additional entries, which your application might need. Those additional entries include:&lt;br /&gt;
#* NameSpace - specifies the namespace in which the generated config class should reside,&lt;br /&gt;
#* Inherits - if you need the generated class to inherit your custom class,&lt;br /&gt;
#* Singleton - if the configuration class should be a singleton,&lt;br /&gt;
#* MemberVariables - specifies the access to the member variables, default is private,&lt;br /&gt;
#* ItemAccessors - relates to the above item, if member variables are public then it might make little sense to generate accessors. By default they are generated,&lt;br /&gt;
#* Mutators - similar to the above one, but applies to the mutator methods,&lt;br /&gt;
#* GlobalEnums - specifies whether enums should be class wide of whether they should be always explicitly prefixed with their type name,&lt;br /&gt;
#* UseEnumTypes - specifies whether enum values should be passed as type int or as their enum type in the return value of accessor functions and the arguments of mutator and signal functions.&lt;br /&gt;
#* SetUserTexts - specifies whether &amp;amp;lt;label&amp;amp;gt;, &amp;amp;lt;tooltip&amp;amp;gt; and &amp;amp;lt;whatsthis&amp;amp;gt; tags should be processed. This allows tools like KConfigDialog make use of these tags. By default this tags are ignored&lt;br /&gt;
&lt;br /&gt;
For details see the description of kconfig_compiler: [http://api.kde.org/4.0-api/kdelibs-apidocs/kdecore/html/kconfig_compiler.html]&lt;br /&gt;
&lt;br /&gt;
== Adjusting the CMakeLists.txt file ==&lt;br /&gt;
&lt;br /&gt;
After creating the .kcfg and .kcfgc files the next step is to adjust the &lt;br /&gt;
build to let kconfig_compiler generate the required class at compile time. For in-source builds, doing this is trivial and requires only one step, adding this two lines to the CMakeLists.txt file example (asuming your files are named settings.kcfg and settings.kcfgc):&lt;br /&gt;
&lt;br /&gt;
 kde4_add_kcfg_files(&amp;lt;project name&amp;gt;_SRCS settings.kcfgc)&lt;br /&gt;
 install(FILES settings.kcfg DESTINATION ${KCFG_INSTALL_DIR})&lt;br /&gt;
&lt;br /&gt;
Alternatively, if a .moc file needs to be generated before compiling the generated source code, use&lt;br /&gt;
&lt;br /&gt;
 kde4_add_kcfg_files(&amp;lt;project name&amp;gt;_SRCS GENERATE_MOC settings.kcfgc)&lt;br /&gt;
 install(FILES settings.kcfg DESTINATION ${KCFG_INSTALL_DIR})&lt;br /&gt;
&lt;br /&gt;
This assures that the configuration class is properly generated (kde4_add_kcfg_files) and that the .kcfg is installed so it can be used by tools like the KConfigEditor (install).&lt;br /&gt;
&lt;br /&gt;
=== out-of-source builds ===&lt;br /&gt;
&lt;br /&gt;
Out-of-source builds require one more step.&lt;br /&gt;
&lt;br /&gt;
'''The problem:''' In out-of-source builds, the code that is generated by kconfig_compiler is saved in the build tree. So how can we still include the header generated by kconfig_compiler with a simple ''#include &amp;quot;settings.h&amp;quot;''?&lt;br /&gt;
&lt;br /&gt;
'''The solution:''' Probably you have yet a line similar to the following line in your CMakeLists.txt:&lt;br /&gt;
&lt;br /&gt;
 include_directories(${QT_INCLUDE} ${KDE4_INCLUDES})&lt;br /&gt;
&lt;br /&gt;
Add the variable ''CMAKE_CURRENT_BINARY_DIR'', so that you get something like this:&lt;br /&gt;
&lt;br /&gt;
 include_directories(${QT_INCLUDE} ${KDE4_INCLUDES} ${CMAKE_CURRENT_BINARY_DIR})&lt;br /&gt;
&lt;br /&gt;
Notice that you should call ''include_directories'' only once in your project. (When you call ''include_directories'' in your base source directory, but than call it another time in a subdirectory (added by ''add_subdirectory''), then the second call will be ignored.)&lt;br /&gt;
&lt;br /&gt;
== Use and Dialogs ==&lt;br /&gt;
&lt;br /&gt;
After making all of the above changes you're ready to use KConfig XT. The &lt;br /&gt;
kconfig_compiler generated header file will have the name equal to the name of the .kcfg file but with a &amp;quot;.h&amp;quot; extension. Simply include that file wherever you want to access your configuration options.&lt;br /&gt;
&lt;br /&gt;
The use will depend on whether you have added the &amp;lt;tt&amp;gt;Singleton=true&amp;lt;/tt&amp;gt; entry to your .kcfgc file. &lt;br /&gt;
&lt;br /&gt;
One the nicest features of the KConfig XT is its seamless integration with the Qt &lt;br /&gt;
Designer generated dialogs. You can do that by using {{class|KConfigDialog}}. The &lt;br /&gt;
steps to do that are as follows: &lt;br /&gt;
&lt;br /&gt;
# Create the KConfigDialog and pass the instance of your configuration data as one of the arguments. The construct would look like the following example:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;code cppqt&amp;gt;&lt;br /&gt;
KConfigDialog* dialog = new KConfigDialog( &lt;br /&gt;
         this, &amp;quot;settings&amp;quot;, YourAppSettings::self() );&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
assuming that YourAppSettings is the value of the ClassName variable from the kcfgc file and the settings class is a singelton.&lt;br /&gt;
# In Qt Designer create widgets which should be used to configure your options. In order to make those widgets interact with the kcfg you have to name each one of them using the following scheme:&lt;br /&gt;
## Prefix the Name of the widget which should control one of the options with &amp;quot;kcfg_&amp;quot;&lt;br /&gt;
## Append the &amp;quot;name&amp;quot; attribute value from your kcfg file which corresponds to option the given widget should control.&lt;br /&gt;
# Add the Qt Designer generated widget to the KConfigDialog.&lt;br /&gt;
# Show the dialog when you're done.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
Here's an example usage of KConfig XT for the application named Example.&lt;br /&gt;
With the following example.kcfg file: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;kcfg xmlns=&amp;quot;http://www.kde.org/standards/kcfg/1.0&amp;quot;&lt;br /&gt;
      xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&lt;br /&gt;
      xsi:schemaLocation=&amp;quot;http://www.kde.org/standards/kcfg/1.0&lt;br /&gt;
                          http://www.kde.org/standards/kcfg/1.0/kcfg.xsd&amp;quot; &amp;gt;&lt;br /&gt;
  &amp;lt;kcfgfile name=&amp;quot;examplerc&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;group name=&amp;quot;network&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;entry name=&amp;quot;ServerName&amp;quot; type=&amp;quot;String&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;label&amp;gt;Defines the sample server.&amp;lt;/label&amp;gt;&lt;br /&gt;
    &amp;lt;/entry&amp;gt;&lt;br /&gt;
    &amp;lt;entry name=&amp;quot;Port&amp;quot; type=&amp;quot;Int&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;label&amp;gt;Defines the server port&amp;lt;/label&amp;gt;&lt;br /&gt;
      &amp;lt;default&amp;gt;21&amp;lt;/default&amp;gt;&lt;br /&gt;
      &amp;lt;min&amp;gt;20&amp;lt;/min&amp;gt;&lt;br /&gt;
      &amp;lt;max&amp;gt;990&amp;lt;/max&amp;gt;&lt;br /&gt;
    &amp;lt;/entry&amp;gt;&lt;br /&gt;
  &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/kcfg&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And here's how to actually use the generated class. for the given kcfgc file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code ini&amp;gt;&lt;br /&gt;
File=example.kcfg &lt;br /&gt;
ClassName=ExampleSettings &lt;br /&gt;
Singleton=true &lt;br /&gt;
Mutators=true&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The header files wouldn't change, but the cpp files must now contain the &lt;br /&gt;
following code to access and store the configuration data :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code cppqt&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
#include &amp;lt;ExampleSettings.h&amp;gt; &lt;br /&gt;
... &lt;br /&gt;
void ExampleClass::readConfig() { &lt;br /&gt;
        m_server  = ExampleSettings::serverName(); &lt;br /&gt;
        m_port    = ExampleSettings::port(); &lt;br /&gt;
} &lt;br /&gt;
void ExampleClass::saveSettings() { &lt;br /&gt;
        ExampleSettings::setServerName( m_server ); &lt;br /&gt;
        ExampleSettings::setPort( m_port ); &lt;br /&gt;
        ExampleSettings::self()-&amp;gt;writeConfig(); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
self() returns the current instance of the object. You need to call writeConfig() this way, since it's a virtual method.&lt;br /&gt;
&lt;br /&gt;
To add a dialog you need to create a Qt Designer widget with the widget names&lt;br /&gt;
corresponding to the names of the options they should edit and prefixed with &amp;quot;kcfg_&amp;quot;. &lt;br /&gt;
It could be something along the lines of:&lt;br /&gt;
&lt;br /&gt;
[[Image:kconfigxt.png|center|256px]]&lt;br /&gt;
&lt;br /&gt;
And you can use the dialog with the following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code cppqt&amp;gt;&lt;br /&gt;
//An instance of your dialog could be already created and could be&lt;br /&gt;
// cached, in which case you want to display the cached dialog &lt;br /&gt;
// instead of creating another one&lt;br /&gt;
if ( KConfigDialog::showDialog( &amp;quot;settings&amp;quot; ) )&lt;br /&gt;
  return; &lt;br /&gt;
 &lt;br /&gt;
// KConfigDialog didn't find an instance of this dialog, so lets&lt;br /&gt;
// create it : &lt;br /&gt;
KConfigDialog* dialog = new KConfigDialog(this, &amp;quot;settings&amp;quot;,&lt;br /&gt;
                                          ExampleSettings::self()); &lt;br /&gt;
ExampleDesignerWidget* confWdg =  &lt;br /&gt;
                  new ExampleDesignerWidget( 0, &amp;quot;Example&amp;quot; ); &lt;br /&gt;
 &lt;br /&gt;
dialog-&amp;gt;addPage( confWdg, i18n(&amp;quot;Example&amp;quot;), &amp;quot;example&amp;quot; ); &lt;br /&gt;
 &lt;br /&gt;
//User edited the configuration - update your local copies of the &lt;br /&gt;
//configuration data &lt;br /&gt;
connect( dialog, SIGNAL(settingsChanged()), &lt;br /&gt;
         this, SLOT(updateConfiguration()) ); &lt;br /&gt;
 &lt;br /&gt;
dialog-&amp;gt;show();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And that's all it takes. You can have a look at [http://websvn.kde.org/trunk/KDE/kdegames/kreversi KReversi] and [http://websvn.kde.org/trunk/KDE/kdegames/ktron/ KTron] code in the [http://websvn.kde.org/trunk/KDE/kdegames kdegames module] to see a live example of KConfig XT!&lt;br /&gt;
&lt;br /&gt;
== Common Pitfalls and Tips ==&lt;br /&gt;
&lt;br /&gt;
* Do not forget to add the &amp;quot;type&amp;quot; attribute to the &amp;quot;entry&amp;quot; tag in your .kcfg file.&lt;br /&gt;
* Always try to add both the &amp;amp;lt;label&amp;amp;gt;, &amp;amp;lt;whatsthis&amp;amp;gt; and &amp;amp;lt;tooltip&amp;amp;gt; tags to each entry.&lt;br /&gt;
* Putting the MemberVariables=public in your .kcfgc is usually a bad idea - you'll avoid accidental changes to those members by using the aggregation and forcing the use of the mutators.&lt;br /&gt;
* If your application doesn't have one central object (created before and destructed after; all others) then always put the Singleton=true entry in your .kcfgs file.&lt;br /&gt;
[[Category:C++]]&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Architecture/KDE4/XMLGUI_Technology</id>
		<title>Development/Architecture/KDE4/XMLGUI Technology</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Architecture/KDE4/XMLGUI_Technology"/>
				<updated>2009-07-28T22:10:17Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* Elements to control merging */ Add information about merging points&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{improve|This entire page needs a thorough review.}}&lt;br /&gt;
{{Note|I don't really feel overly qualified to write this page, but I've spent a whole lot of time figuring out some of the following things for lack of good documentation. So I'll make a start... --[[User:Tfry|Tfry]] 14:02, 22 May 2009 (UTC)}}&lt;br /&gt;
&lt;br /&gt;
= Related information resources =&lt;br /&gt;
* [[Development/Tutorials/Using_KActions|KAction tutorial]]&lt;br /&gt;
* [http://developer.kde.org/documentation/library/kdeqt/kde3arch/xmlgui.html Documentation for KDE 3 (still mostly valid)]&lt;br /&gt;
* [[Development/Architecture/KDE4/KParts|KParts - perhaps the most important use case for advanced KXMLGUI stuff]]&lt;br /&gt;
* [http://websvn.kde.org/trunk/KDE/kdelibs/kdeui/xmlgui/kpartgui.dtd?view=markup kpartgui / KXMLGUI document type definition]&lt;br /&gt;
* API documentation on KXMLGUI classes&lt;br /&gt;
** {{class|KXMLGUIClient|kdelibs|4.x}} - The base class for components that use and xml-gui&lt;br /&gt;
** {{class|KXMLGUIFactory|kdelibs|4.x}} - The class responsible for managing one or many KXMLGUIClients in an application.&lt;br /&gt;
** {{class|KXMLGUIBuilder|kdelibs|4.x}}&lt;br /&gt;
&lt;br /&gt;
= Basics =&lt;br /&gt;
For basic information, please start reading at [[Development/Tutorials/Using_KActions]]. For most simple cases you should be able to write a ui.rc for your application by simply expanding on the given examples.&lt;br /&gt;
&lt;br /&gt;
= Terminology =&lt;br /&gt;
== Container ==&lt;br /&gt;
In the context of KXMLGUI, something that contains KActions. A menu, popupmenu or toolbar.&lt;br /&gt;
&lt;br /&gt;
= Merging several KXMLGUI definitions =&lt;br /&gt;
Once you have more than a single KXMLGUIClient/KPart in an application, it becomes important to control just how / just where menu entries and toolbar icons are merged.&lt;br /&gt;
&lt;br /&gt;
== How does merging happen ==&lt;br /&gt;
The first thing that happens is that the ui.rc file of you application is merged in the KDE global [http://websvn.kde.org/trunk/KDE/kdelibs/kdeui/xmlgui/ui_standards.rc?view=markup ui_standards.rc]-file. This is to make sure that standard elements all end up in the KDE standard places.&lt;br /&gt;
&lt;br /&gt;
Now, when you add further KXMLGUIClients (e.g. a KPart, or a plugin), in general the KXMLGUIFactory does the following:&lt;br /&gt;
* So called containers (&amp;quot;Menu&amp;quot;, &amp;quot;ToolBar&amp;quot;) are matched by their name. So if your ''application''_ui.rc defines a menu with ''name=&amp;quot;my_stuff&amp;quot;'', and the ''plugin''_ui.rc of a plugin also has a menu by that name, the elements from that menu in the plugin get added to the elements of that menu in the application.&lt;br /&gt;
* All entries within a container are appended at the end, in the order they get added. This means, if you add KXMLGUIClient A after KXMLGUIClient B, the actions from A will generally end up after the actions from B, and vice versa.&lt;br /&gt;
&lt;br /&gt;
Of course KXMLGUI allows for sophisticated ways to control this merging, and we'll deal with those in a minute, but first let us look at this basic scenario:&lt;br /&gt;
&lt;br /&gt;
Bringing the clients together in C++:&lt;br /&gt;
&amp;lt;code cppqt&amp;gt;&lt;br /&gt;
MyMainWindow::MyMainWindow (...) : ... {&lt;br /&gt;
[...]&lt;br /&gt;
  setXMLFile (&amp;quot;main_ui.rc&amp;quot;);&lt;br /&gt;
  insertChildClient (new MyComponentA ());&lt;br /&gt;
  insertChildClient (new MyComponentB ());&lt;br /&gt;
[...]&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
MyComponentA () : public KXMLGUIClient () {&lt;br /&gt;
[...]&lt;br /&gt;
  setXMLFile (&amp;quot;component_a.rc&amp;quot;);&lt;br /&gt;
[...]&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
MyComponentB () : public KXMLGUIClient () {&lt;br /&gt;
[...]&lt;br /&gt;
  setXMLFile (&amp;quot;component_b.rc&amp;quot;);&lt;br /&gt;
[...]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
main_ui.rc&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;gui [...]&amp;gt;&lt;br /&gt;
  &amp;lt;MenuBar&amp;gt;&lt;br /&gt;
    &amp;lt;Menu name=&amp;quot;menu1&amp;quot; &amp;gt;&lt;br /&gt;
      &amp;lt;Action name=&amp;quot;main_first&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Action name=&amp;quot;main_second&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Action name=&amp;quot;main_third&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Menu&amp;gt;&lt;br /&gt;
    &amp;lt;Menu name=&amp;quot;menu2&amp;quot; &amp;gt;&lt;br /&gt;
    &amp;lt;/Menu&amp;gt;&lt;br /&gt;
  &amp;lt;/MenuBar&amp;gt;&lt;br /&gt;
&amp;lt;/gui&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
component_a.rc&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;gui [...]&amp;gt;&lt;br /&gt;
  &amp;lt;MenuBar&amp;gt;&lt;br /&gt;
    &amp;lt;Menu name=&amp;quot;menu1&amp;quot; &amp;gt;&lt;br /&gt;
      &amp;lt;Action name=&amp;quot;a_first&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Menu&amp;gt;&lt;br /&gt;
    &amp;lt;Menu name=&amp;quot;menu3&amp;quot; &amp;gt;&lt;br /&gt;
      &amp;lt;Action name=&amp;quot;a_second&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Menu&amp;gt;&lt;br /&gt;
    &amp;lt;Menu name=&amp;quot;menu2&amp;quot; &amp;gt;&lt;br /&gt;
      &amp;lt;Action name=&amp;quot;a_third&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Menu&amp;gt;&lt;br /&gt;
  &amp;lt;/MenuBar&amp;gt;&lt;br /&gt;
&amp;lt;/gui&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
component_b.rc&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;gui [...]&amp;gt;&lt;br /&gt;
  &amp;lt;MenuBar&amp;gt;&lt;br /&gt;
    &amp;lt;Menu name=&amp;quot;menu3&amp;quot; &amp;gt;&lt;br /&gt;
      &amp;lt;Action name=&amp;quot;b_first&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Menu&amp;gt;&lt;br /&gt;
    &amp;lt;Menu name=&amp;quot;menu2&amp;quot; &amp;gt;&lt;br /&gt;
      &amp;lt;Action name=&amp;quot;b_second&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Menu&amp;gt;&lt;br /&gt;
    &amp;lt;Menu name=&amp;quot;menu1&amp;quot; &amp;gt;&lt;br /&gt;
      &amp;lt;Action name=&amp;quot;b_third&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Menu&amp;gt;&lt;br /&gt;
  &amp;lt;/MenuBar&amp;gt;&lt;br /&gt;
&amp;lt;/gui&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now all of these together would look like this:&lt;br /&gt;
{{Note|The XML-files are not really merged together at all, only the GUI itself is. But this is an easy way to show the effect of the combination of these KXMLGUIClients.}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
&amp;lt;gui&amp;gt;&lt;br /&gt;
  &amp;lt;MenuBar&amp;gt;&lt;br /&gt;
    &amp;lt;Menu name=&amp;quot;menu1&amp;quot; &amp;gt;&lt;br /&gt;
      &amp;lt;Action name=&amp;quot;main_first&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Action name=&amp;quot;main_second&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Action name=&amp;quot;main_third&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Action name=&amp;quot;a_first&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Action name=&amp;quot;b_third&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Menu&amp;gt;&lt;br /&gt;
    &amp;lt;Menu name=&amp;quot;menu2&amp;quot; &amp;gt;&lt;br /&gt;
      &amp;lt;Action name=&amp;quot;a_third&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Action name=&amp;quot;b_second&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Menu&amp;gt;&lt;br /&gt;
    &amp;lt;Menu name=&amp;quot;menu3&amp;quot; &amp;gt;&lt;br /&gt;
      &amp;lt;Action name=&amp;quot;a_second&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;Action name=&amp;quot;b_first&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Menu&amp;gt;&lt;br /&gt;
  &amp;lt;/MenuBar&amp;gt;&lt;br /&gt;
&amp;lt;/gui&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Things to note:&lt;br /&gt;
* Actions from component_a.rc are placed below actions from main_ui.rc, because MyComponentA gets added after MyMainWindow. Similarily, actions from component_b.rc are placed below those from main_ui.rc and component_a.rc.&lt;br /&gt;
* When component_a.rc is read, a menu named &amp;quot;menu2&amp;quot; already exist, and is therefore merged with the existing one. Due to this, &amp;quot;menu3&amp;quot; gets appended at the end of the menubar, instead of between &amp;quot;menu1&amp;quot; and &amp;quot;menu2&amp;quot;. Similarily the order of the definition of the menus in component_b.rc is effectively ignored, because those menus have already been defined, previously.&lt;br /&gt;
&lt;br /&gt;
== Elements to control merging ==&lt;br /&gt;
Often times the above principles of merging are not good enough. Fortunately, there are several ways to control the details of merging.&lt;br /&gt;
&lt;br /&gt;
=== MergeLocal / Merge ===&lt;br /&gt;
{{improve|I'm not sure the info in the Merge/MergeLocal-subchapter is correct. Use with care, and please correct and expand}}&lt;br /&gt;
==== &amp;lt;MergeLocal&amp;gt; ====&lt;br /&gt;
This can only be used in the KDE global [http://websvn.kde.org/trunk/KDE/kdelibs/kdeui/xmlgui/ui_standards.rc?view=markup ui_standards.rc]-file. It defines points where other entries can be merged in. It can be used both with a ''name''-attribute, or without (in the latter case it acts as a catch-all merge place).&lt;br /&gt;
&lt;br /&gt;
Then, in your RC file, you can add a certain action or menu to a given MergeLocal.&lt;br /&gt;
&lt;br /&gt;
'''ui_standards.rc'''&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
  &amp;lt;Menu name=&amp;quot;settings&amp;quot;&amp;gt;&amp;lt;text&amp;gt;&amp;amp;amp;Settings&amp;lt;/text&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;Action name=&amp;quot;options_show_statusbar&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;MergeLocal name=&amp;quot;show_merge&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Separator/&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
  &amp;lt;/Menu&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''my_component.rc'''&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
  &amp;lt;Menu name=&amp;quot;settings&amp;quot;&amp;gt;&amp;lt;text&amp;gt;&amp;amp;amp;Settings&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;Action name=&amp;quot;my_action&amp;quot; append=&amp;quot;show_merge&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/Menu&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This way, the action &amp;quot;my_action&amp;quot; will be appended to the Settings menu after the &amp;quot;Show Statusbar&amp;quot; action, not at the end of the menu.&lt;br /&gt;
&lt;br /&gt;
However, the ''append'' attribute is only available for the mainwindow, '''not''' for parts and plugins.&lt;br /&gt;
&lt;br /&gt;
If you want to achieve the same result from a part or plugin, you can add a ''&amp;lt;DefineGroup&amp;gt;'' section in your main window's rc file that has the desired ''append'' attribute. Then, in your part/plugin rc file you create the Action with a ''group'' attribute.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;Merge&amp;gt; ====&lt;br /&gt;
&amp;lt;Merge&amp;gt; is the counterpart to &amp;lt;MergeLocal&amp;gt; and defines what is to be merged into a &amp;lt;MergeLocal&amp;gt;-point. TODO: Is this correct, examples, with/without names?&lt;br /&gt;
&lt;br /&gt;
=== DefineGroup ===&lt;br /&gt;
While &amp;lt;MergeLocal&amp;gt; can only be used in the KDE global ui_standards.rc, &amp;lt;DefineGroup&amp;gt; allows you to achieve something very similar: In the main_ui.rc put this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
  &amp;lt;Menu name=&amp;quot;menu&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Action name=&amp;quot;main1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;DefineGroup name=&amp;quot;main_group1&amp;quot; append=&amp;quot;main_group1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Action name=&amp;quot;main2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;DefineGroup name=&amp;quot;main_group2&amp;quot; append=&amp;quot;main_group2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Action name=&amp;quot;main3&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/Menu&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and in a child clients component_a.rc:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
  &amp;lt;Menu name=&amp;quot;menu&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Action name=&amp;quot;a1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Action name=&amp;quot;a2&amp;quot; group=&amp;quot;main_group2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Action name=&amp;quot;a3&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Action name=&amp;quot;a4&amp;quot; group=&amp;quot;main_group1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Action name=&amp;quot;a5&amp;quot; group=&amp;quot;main_group1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Action name=&amp;quot;a6&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/Menu&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effectively gets merged as:&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
  &amp;lt;Menu name=&amp;quot;menu&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Action name=&amp;quot;main1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Action name=&amp;quot;a4&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Action name=&amp;quot;a5&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Action name=&amp;quot;main2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Action name=&amp;quot;a2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Action name=&amp;quot;main3&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Action name=&amp;quot;a1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Action name=&amp;quot;a3&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Action name=&amp;quot;a6&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/Menu&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Things to note:&lt;br /&gt;
* Actions a1, a3, and a6 are appended at the end of the menu, as this is the default behavior.&lt;br /&gt;
* Actions a4, and a5 are inserted at the point where &amp;quot;main_group1&amp;quot; is defined, and Action a2 is inserted at the place of &amp;quot;main_group2&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== ActionList ===&lt;br /&gt;
The &amp;lt;ActionList&amp;gt;-tag allows you to insert a group of actions at a particular point in the GUI at runtime. {{class|KXMLGUIClient|kdelibs|4.x}}::plugActionList() has good documentation on this.&lt;br /&gt;
&lt;br /&gt;
== Limitations of merging and workarounds ==&lt;br /&gt;
&lt;br /&gt;
=== merging into children of a KXMLGUIClient ===&lt;br /&gt;
KXMLGUIClients can form a hierarchy of parent/child-clients, and any number of child-clients can simply be inserted into a KXMLGUIClient to extend its GUI. Use cases for this include having a part-enabled application, and one of the parts including further plugins. Also in some cases its useful to split the GUI of an application into several different ui.rc-files, so allow better reuse of code.&lt;br /&gt;
&lt;br /&gt;
However, it is important to note, that limitations to merging apply in this case. Most importantly, a mergepoint &amp;lt;DefineGroup&amp;gt; can only be defined in the .rc-file, where the container is first defined (at least in kdelibs 4.2). E.g. consider you have the following main_ui.rc:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
&amp;lt;Menu name=&amp;quot;menu1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;Action name=&amp;quot;main1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DefineGroup name=&amp;quot;maingroup&amp;quot; append=&amp;quot;group&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Action name=&amp;quot;main2&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/Menu&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you insert a child with this ui.rc:&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
&amp;lt;Menu name=&amp;quot;menu1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Action name=&amp;quot;a1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DefineGroup name=&amp;quot;agroup1&amp;quot; append=&amp;quot;agroup1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Action name=&amp;quot;a2&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/Menu&amp;gt;&lt;br /&gt;
&amp;lt;Menu name=&amp;quot;menu2&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Action name=&amp;quot;a3&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DefineGroup name=&amp;quot;agroup2&amp;quot; append=&amp;quot;agroup2&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Action name=&amp;quot;a4&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/Menu&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally you insert a second child with this ui.rc:&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
&amp;lt;Menu name=&amp;quot;menu1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Action name=&amp;quot;b1&amp;quot; group=&amp;quot;maingroup&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Action name=&amp;quot;b2&amp;quot; group=&amp;quot;agroup1&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/Menu&amp;gt;&lt;br /&gt;
&amp;lt;Menu name=&amp;quot;menu2&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Action name=&amp;quot;b3&amp;quot; group=&amp;quot;agroup2&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/Menu&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The result of this will be:&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
&amp;lt;Menu name=&amp;quot;menu1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Action name=&amp;quot;main1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Action name=&amp;quot;b1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Action name=&amp;quot;main2&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Action name=&amp;quot;a1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Action name=&amp;quot;a2&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Action name=&amp;quot;b2&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/Menu&amp;gt;&lt;br /&gt;
&amp;lt;Menu name=&amp;quot;menu2&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Action name=&amp;quot;a3&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Action name=&amp;quot;b3&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Action name=&amp;quot;a4&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/Menu&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As you can see, group &amp;quot;agroup1&amp;quot; simply does not work, as it was defined inside a container that had previously been parsed. In contrast, &amp;quot;agroup2&amp;quot; works as expected, as &amp;quot;menu2&amp;quot; was not previously defined.&lt;br /&gt;
&lt;br /&gt;
The solution in this case is to define all needed groups in the topmost ui.rc-file.&lt;br /&gt;
&lt;br /&gt;
=== stripping down a KPart's GUI ===&lt;br /&gt;
KParts allow you to add a whole lot of powerful functionality with just a few lines of code. That's great, but sometimes a KPart GUI offers ''more'' features than you actually want and clutters your applications GUI with features that are not really useful in the context of your application.&lt;br /&gt;
&lt;br /&gt;
In this case you have the following options:&lt;br /&gt;
* Some KParts offer different UI sets. For example {{class|KHTMLPart|kdelibs|4.x}} offers different GUI-profiles in its constructor. Watch out for that, it might be just the set of functionality that you want.&lt;br /&gt;
* You can also ''not'' merge a part GUI into your application. Instead you can simply add the actions/menus you want to your main_ui.rc, and connect them like this:&lt;br /&gt;
&amp;lt;code cppqt&amp;gt;&lt;br /&gt;
SomePart *part = new SomePart ();&lt;br /&gt;
KAction *part_action = part-&amp;gt;action (&amp;quot;cool_action&amp;quot;);&lt;br /&gt;
KAction *proxy_action = actionCollection ()-&amp;gt;addAction (&amp;quot;cool_action_proxy&amp;quot;, part_action, SLOT(trigger()));&lt;br /&gt;
proxy_action-&amp;gt;setText (part_action-&amp;gt;text ());&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
::Of course, this can become quite tedious.&lt;br /&gt;
* Finally, you can choose the hacky way and manipulate the XMLGUI-definition of the part to remove some of the stuff you don't want:&lt;br /&gt;
&amp;lt;code cppqt&amp;gt;&lt;br /&gt;
void removeNamedElementsRecursive (const QStringList &amp;amp;names, QDomNode &amp;amp;parent) {&lt;br /&gt;
	QDomNode nchild;&lt;br /&gt;
&lt;br /&gt;
	for (QDomNode child = parent.firstChild (); !child.isNull (); child = nchild) {&lt;br /&gt;
		removeNamedElementsRecursive (names, child);&lt;br /&gt;
&lt;br /&gt;
		nchild = child.nextSibling ();		// need to fetch next sibling here, as we might remove the child below&lt;br /&gt;
		if (child.isElement ()) {&lt;br /&gt;
			QDomElement e = child.toElement ();&lt;br /&gt;
			if (names.contains (e.attribute (&amp;quot;name&amp;quot;))) {&lt;br /&gt;
				parent.removeChild (child);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void removeContainers (KXMLGUIClient *from, const QStringList &amp;amp;names, bool recursive) {&lt;br /&gt;
	QDomDocument doc = from-&amp;gt;xmlguiBuildDocument ();&lt;br /&gt;
	if  (doc.documentElement ().isNull ()) doc = from-&amp;gt;domDocument ();&lt;br /&gt;
&lt;br /&gt;
	QDomElement e = doc.documentElement ();&lt;br /&gt;
	removeNamedElementsRecursive (names, e);&lt;br /&gt;
	from-&amp;gt;setXMLGUIBuildDocument (doc);&lt;br /&gt;
&lt;br /&gt;
	if (recursive) {&lt;br /&gt;
		QList&amp;lt;KXMLGUIClient*&amp;gt; children = from-&amp;gt;childClients ();&lt;br /&gt;
		QList&amp;lt;KXMLGUIClient*&amp;gt;::const_iterator it;&lt;br /&gt;
		for (it = children.constBegin (); it != children.constEnd (); ++it) {&lt;br /&gt;
			removeContainers ((*it), names, true);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void moveContainer (KXMLGUIClient *client, const QString &amp;amp;tagname, const QString &amp;amp;name, const QString &amp;amp;to_name, bool recursive) {&lt;br /&gt;
	QDomDocument doc = client-&amp;gt;xmlguiBuildDocument ();&lt;br /&gt;
	if  (doc.documentElement ().isNull ()) doc = client-&amp;gt;domDocument ();&lt;br /&gt;
&lt;br /&gt;
	// find the given elements&lt;br /&gt;
	QDomElement e = doc.documentElement ();&lt;br /&gt;
&lt;br /&gt;
	QDomElement from_elem;&lt;br /&gt;
	QDomElement to_elem;&lt;br /&gt;
&lt;br /&gt;
	QDomNodeList list = e.elementsByTagName (tagname);&lt;br /&gt;
	int count = list.count ();&lt;br /&gt;
	for (int i = 0; i &amp;lt; count; ++i) {&lt;br /&gt;
		QDomElement elem = list.item (i).toElement ();&lt;br /&gt;
		if (elem.isNull ()) continue;&lt;br /&gt;
		if (elem.attribute (&amp;quot;name&amp;quot;) == name) {&lt;br /&gt;
			from_elem = elem;&lt;br /&gt;
		} else if (elem.attribute (&amp;quot;name&amp;quot;) == to_name) {&lt;br /&gt;
			to_elem = elem;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// move&lt;br /&gt;
	from_elem.parentNode ().removeChild (from_elem);&lt;br /&gt;
	to_elem.appendChild (from_elem);&lt;br /&gt;
&lt;br /&gt;
	// set result&lt;br /&gt;
	client-&amp;gt;setXMLGUIBuildDocument (doc);&lt;br /&gt;
&lt;br /&gt;
	// recurse&lt;br /&gt;
	if (recursive) {&lt;br /&gt;
		QList&amp;lt;KXMLGUIClient*&amp;gt; children = client-&amp;gt;childClients ();&lt;br /&gt;
		QList&amp;lt;KXMLGUIClient*&amp;gt;::const_iterator it;&lt;br /&gt;
		for (it = children.constBegin (); it != children.constEnd (); ++it) {&lt;br /&gt;
			moveContainer (*it, tagname, name, to_name, true);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
removeContainers (my_part, QStringList () &amp;lt;&amp;lt; &amp;quot;action_we_dont_want&amp;quot; &amp;lt;&amp;lt; &amp;quot;menu_we_dont_need&amp;quot;, true);&lt;br /&gt;
moveContainers (my_part, &amp;quot;Menu&amp;quot;, &amp;quot;fancy_toplevel_menu&amp;quot;, &amp;quot;fancy_menu_a_bit_less_visible&amp;quot;, true);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
::'''Warning''': setXMLGUIBuildDocument() is (now) marked as for internal use, only. Unfortunately, setXMLFile() or setDOM() which would allow for a cleaner solution are not public in KXMLGUIClient.&lt;br /&gt;
&lt;br /&gt;
= Further topics =&lt;br /&gt;
== States ==&lt;br /&gt;
Often you have sets of actions that you want to enable/disable according to some conditions. A very common example is enabling / disabling Cut/Copy-actions depending on whether there is a text-selection or not. This is easy to realize in plain C++-code, but KXMLGUI offers support for this in a very simple and clean way. Just put something like the following in your ui.rc:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
 &amp;lt;State name=&amp;quot;has_selection&amp;quot; &amp;gt;&lt;br /&gt;
  &amp;lt;enable&amp;gt;&lt;br /&gt;
   &amp;lt;Action name=&amp;quot;edit_cut&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;Action name=&amp;quot;edit_copy&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;Action name=&amp;quot;invert_selection&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/enable&amp;gt;&lt;br /&gt;
 &amp;lt;/State&amp;gt;&lt;br /&gt;
 &amp;lt;State name=&amp;quot;has_no_selection&amp;quot; &amp;gt;&lt;br /&gt;
  &amp;lt;disable&amp;gt;&lt;br /&gt;
   &amp;lt;Action name=&amp;quot;edit_cut&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;Action name=&amp;quot;edit_copy&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;Action name=&amp;quot;invert_selection&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/disable&amp;gt;&lt;br /&gt;
 &amp;lt;/State&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now all you need to do in your C++-code is call KXMLGUIClient::stateChanged(), whenever the selection has changed.&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
* A state can contain both a list of actions to enable ''and'' a list of actions to disable.&lt;br /&gt;
* In the above example, the state &amp;quot;has_selection&amp;quot; is exactly the opposite to &amp;quot;has_no_selection&amp;quot; in terms of which actions to enable/disable. Strictly, in this case a single state &amp;quot;has_selection&amp;quot; is enough. For the no selection-case you would then call ''stateChanged (&amp;quot;has_selection&amp;quot;, StateReverse)''.&lt;br /&gt;
* A state-change affects only the client for which stateChanged() is called, not any of its siblings or children. If you want to change a state on several clients at once, you need to implement that yourself.&lt;br /&gt;
&lt;br /&gt;
== ComponentData ==&lt;br /&gt;
The componentData () (see KXMLGUIClient::setComponentData()) is used to differentiate between logical components. This affects, where configuration settings are stored for this KXMLGUIClient, and e.g. the KShortCutDialog uses this to group actions into different components.&lt;br /&gt;
&lt;br /&gt;
If you are developing a KPart for re-use in other applications, you will construct a KComponentData from your KAboutData. If the KXMLGUIClient/KPart you develop is only to be used inside your application, you probably want to set the following:&lt;br /&gt;
&amp;lt;code cppqt&amp;gt;&lt;br /&gt;
  setComponentData(KGlobal::mainComponent());&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Lookup of .rc files / versioning ==&lt;br /&gt;
Usually, you supply a relative filename to KXMLGUIClient::setXML(). KDE looks for this file in a number of places (KXMLGUIClient::findMostRecentXMLFile), including in the user's home directory (see ''--kde4-config --path data''), which is the first entry in the path. This means, ui-files can actually be overridden by the user (and among other things, this is used to save user settings such as customized toolbars or shortcuts.&lt;br /&gt;
&lt;br /&gt;
This is why it is important to always increase the version number or our ui.rc-file, when you make changes. This way you make sure, that your updated version is used, and not a previous version is picked up in the user's home directory.&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Getting_Started/Sources/Amarok_Git_Tutorial</id>
		<title>Getting Started/Sources/Amarok Git Tutorial</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Getting_Started/Sources/Amarok_Git_Tutorial"/>
				<updated>2009-07-21T04:17:37Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* Recommended reading */ Add some more links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Getting started with git  =&lt;br /&gt;
Depending on whether you simply want to test and follow Amarok development, write the occasional patch, or are an Amarok developer, the steps to use the repo are different.&lt;br /&gt;
&lt;br /&gt;
== Follow and test the latest development code  ==&lt;br /&gt;
&lt;br /&gt;
 git clone git://gitorious.org/amarok/amarok.git&lt;br /&gt;
&lt;br /&gt;
This creates an 'amarok' directory. cd into that and use it like normal. And when you want to update: &lt;br /&gt;
&lt;br /&gt;
 git pull&lt;br /&gt;
&lt;br /&gt;
will download the new changes.&lt;br /&gt;
&lt;br /&gt;
== Patch Contributors ==&lt;br /&gt;
You can use the method above, make your changes, then do 'git diff' to create a patch like normal. Or you could use the following rules to create your own fork of Amarok with the additions you would like to request to merge. This makes it easier for Amarok Developers to track your changes and is better for more complicated patches.&lt;br /&gt;
&lt;br /&gt;
*Make sure you have created your account on Gitorious and are logged in. Go to the project you want to clone (e.g. Amarok - http://gitorious.org/amarok) and select the branch which you want to clone (in this case Amarok - Mainline which is the master branch). &lt;br /&gt;
*After selecting the branch you can click &amp;quot;Clone this repository on Gitorious&amp;quot;. Give your branch a name and you'll be taken to the page of your newly created clone. On this page you find two git urls: one to publicly clone the repository and the &amp;quot;Push url: git@gitorious.org:~yourname/amarok/yourname-clone.git. &lt;br /&gt;
*Clone the push url to start working on your clone:&lt;br /&gt;
 git clone git@gitorious.org:~yourname/amarok/yourname-clone.git&lt;br /&gt;
*Create a branch for each new feature of bug fix you want to work on:&lt;br /&gt;
 git branch my_feature_branch&lt;br /&gt;
*Switch to the new branch:&lt;br /&gt;
 git checkout my_feature_branch&lt;br /&gt;
*Work, fix that bug or add the feature...&lt;br /&gt;
 ...work on this checkout - follow the normal development workflow...&lt;br /&gt;
*Commit it to your local checkout:&lt;br /&gt;
 git commit -a&lt;br /&gt;
*Publish it on gitorious:&lt;br /&gt;
 git push origin my_feature_branch&lt;br /&gt;
*To submit your patches: Create a merge request on gitorious by going to your clone page and selecting &amp;quot;Request merge&amp;quot; in the menu on the right. Alternatively you could email amarok@kde.org with your branch public branch URL and ask that it be merged. (We just started this, so exactly how to do such things still hasn't been decided).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*You can follow the main development branch easily by adding it as remote branch:&lt;br /&gt;
 git remote add upstream git@gitorious.org:amarok/amarok.git&lt;br /&gt;
*Update by pulling from the remote:&lt;br /&gt;
 git pull upstream master&lt;br /&gt;
&lt;br /&gt;
*Remember to use one branch per feature/bug fix!&lt;br /&gt;
&lt;br /&gt;
== Amarok Developers  ==&lt;br /&gt;
&lt;br /&gt;
=== gitorious.org account setup ===&lt;br /&gt;
&lt;br /&gt;
*Create an account on [http://gitorious.org gitorious.org] the git hosting service used by Qt and now Amarok. &lt;br /&gt;
*On your user page, (that's at http://gitorious.org/~your_nick) click on &amp;quot;Manage SSH keys&amp;quot; and add your SSH key.&lt;br /&gt;
&lt;br /&gt;
People with KDE-SVN accounts als should do the following: &lt;br /&gt;
&lt;br /&gt;
*Again from the user page, click on &amp;quot;Manage aliases&amp;quot; and add any email addresses you've ever used in KDE SVN. This way any commits you've made in the past are tracked back to you. If your gitorious email address is the only one you ever used, then this step isn't needed. &lt;br /&gt;
*Request one of the kde-developers admins to add your username to the group (the same rules apply as KDE SVN account requests). This will give you push rights to Amarok. Lydia, Ian and Jeff are all admins.&lt;br /&gt;
&lt;br /&gt;
=== Setup Amarok Clone ===&lt;br /&gt;
&lt;br /&gt;
Gitorious has one address for cloning, and another for pushing. The pushing address can be used for cloning, so the easy thing to do is just use that. &lt;br /&gt;
&lt;br /&gt;
 git clone git@gitorious.org:amarok/amarok.git&lt;br /&gt;
&lt;br /&gt;
This will create a directory 'amarok'. cd into that and start developing! &lt;br /&gt;
&lt;br /&gt;
=== Basic Development ===&lt;br /&gt;
&lt;br /&gt;
90% of the time this is all that is needed: &lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 #hack, compile, build. It works!&lt;br /&gt;
 git status #to check if you want to commit all the modified files&lt;br /&gt;
 git commit -a&lt;br /&gt;
 git log&lt;br /&gt;
 git push&lt;br /&gt;
&lt;br /&gt;
''git pull --rebase'' downloads the latest changes. The --rebase option takes any unpushed local commits and applies them to the latest code, moving it to the top of the history. It is the equivalent of ''git pull; git rebase origin/master''. See the &amp;quot;1. Rebase&amp;quot; section of [http://magazine.redhat.com/2008/05/02/shipping-quality-code-with-git/ Shipping Quality Code] for a good explanation of what rebase does.&lt;br /&gt;
&lt;br /&gt;
''git status'' will tell you what files are modified. If you created a new file, use ''git add'' on it to &amp;quot;track&amp;quot; it. If there are some junk files, you can add a regexp to .gitignore in the root.&lt;br /&gt;
&lt;br /&gt;
''git commit -a'' will commit all unmodified files. You can use ''git add'' and then simply ''git commit'' instead if you wish to commit only certain files.&amp;lt;br /&amp;gt;&lt;br /&gt;
Hint: You can use ''git commit --amend'' to amend the last commit instead of creating a new one.&lt;br /&gt;
But take care that you don't change a commit already pushed, else you'll have some trouble...&lt;br /&gt;
&lt;br /&gt;
Use ''git log'' to review the local unpushed commits. Possibly also useful is ''git diff origin/master'', which will give you a diff between the current checkout and what is in the central repo.&lt;br /&gt;
&lt;br /&gt;
''git push'' pushes all the local commits to the central repo.&lt;br /&gt;
&lt;br /&gt;
= Recommended reading  =&lt;br /&gt;
&lt;br /&gt;
* [http://tom.preston-werner.com/2009/05/19/the-git-parable.html The Git Parable] ''Background information that will help you understand git and distributed revision control systems in general''&lt;br /&gt;
* [http://git.or.cz/course/svn.html Git to SVN crash course] ''5 minute introduction to git for experienced SVN users''&lt;br /&gt;
* [http://www.redhatmagazine.com/2008/05/02/shipping-quality-code-with-git/ Shipping Quality Code with Git] ''Guide to cleanup before a push''&lt;br /&gt;
* [http://eagain.net/articles/git-for-computer-scientists/ Git for Computer Scientists] ''Quick introduction to git internals for people who are not scared by words like Directed Acyclic Graph.''&lt;br /&gt;
* [http://www.youtube.com/watch?v=4XpnKHJAok8 Linus Torvalds on Git] ''Why git? answered by the man that started it.''&lt;br /&gt;
* [http://gitready.com/ Git Ready!] ''Learn git one commit at a time''&lt;br /&gt;
* [http://book.git-scm.com Git Community Book] ''An online book covering git from the basics to some advanced features''&lt;br /&gt;
* [http://www-cs-students.stanford.edu/~blynn/gitmagic Git Magic] ''Covers some concepts and common usage patterns''&lt;br /&gt;
* [http://ktown.kde.org/~zrusin/git/git-cheat-sheet.svg Zack Rusin's git cheat sheet]&lt;br /&gt;
* [http://cheat.errtheblog.com/s/git Git cheat sheet] ''Yet another git cheat sheet''&lt;br /&gt;
* [http://sysmonblog.co.uk/misc/git_by_example git by example] ''git command reference and explanation&lt;br /&gt;
* [http://jonas.nitro.dk/git/quick-reference.html Git Quick Reference] ''Yet another reference of the most used git commands''&lt;br /&gt;
&lt;br /&gt;
= Todo for this doc =&lt;br /&gt;
* creating feature branches&lt;br /&gt;
* working with feature branches&lt;br /&gt;
* history manipulation. rebase -i, commit --append, and what to do when things go wrong. Probably its own page.&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Getting_Started/Sources/Amarok_Git_Tutorial</id>
		<title>Getting Started/Sources/Amarok Git Tutorial</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Getting_Started/Sources/Amarok_Git_Tutorial"/>
				<updated>2009-07-21T04:08:51Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* Recommended reading */ Show the links in bullets&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Getting started with git  =&lt;br /&gt;
Depending on whether you simply want to test and follow Amarok development, write the occasional patch, or are an Amarok developer, the steps to use the repo are different.&lt;br /&gt;
&lt;br /&gt;
== Follow and test the latest development code  ==&lt;br /&gt;
&lt;br /&gt;
 git clone git://gitorious.org/amarok/amarok.git&lt;br /&gt;
&lt;br /&gt;
This creates an 'amarok' directory. cd into that and use it like normal. And when you want to update: &lt;br /&gt;
&lt;br /&gt;
 git pull&lt;br /&gt;
&lt;br /&gt;
will download the new changes.&lt;br /&gt;
&lt;br /&gt;
== Patch Contributors ==&lt;br /&gt;
You can use the method above, make your changes, then do 'git diff' to create a patch like normal. Or you could use the following rules to create your own fork of Amarok with the additions you would like to request to merge. This makes it easier for Amarok Developers to track your changes and is better for more complicated patches.&lt;br /&gt;
&lt;br /&gt;
*Make sure you have created your account on Gitorious and are logged in. Go to the project you want to clone (e.g. Amarok - http://gitorious.org/amarok) and select the branch which you want to clone (in this case Amarok - Mainline which is the master branch). &lt;br /&gt;
*After selecting the branch you can click &amp;quot;Clone this repository on Gitorious&amp;quot;. Give your branch a name and you'll be taken to the page of your newly created clone. On this page you find two git urls: one to publicly clone the repository and the &amp;quot;Push url: git@gitorious.org:~yourname/amarok/yourname-clone.git. &lt;br /&gt;
*Clone the push url to start working on your clone:&lt;br /&gt;
 git clone git@gitorious.org:~yourname/amarok/yourname-clone.git&lt;br /&gt;
*Create a branch for each new feature of bug fix you want to work on:&lt;br /&gt;
 git branch my_feature_branch&lt;br /&gt;
*Switch to the new branch:&lt;br /&gt;
 git checkout my_feature_branch&lt;br /&gt;
*Work, fix that bug or add the feature...&lt;br /&gt;
 ...work on this checkout - follow the normal development workflow...&lt;br /&gt;
*Commit it to your local checkout:&lt;br /&gt;
 git commit -a&lt;br /&gt;
*Publish it on gitorious:&lt;br /&gt;
 git push origin my_feature_branch&lt;br /&gt;
*To submit your patches: Create a merge request on gitorious by going to your clone page and selecting &amp;quot;Request merge&amp;quot; in the menu on the right. Alternatively you could email amarok@kde.org with your branch public branch URL and ask that it be merged. (We just started this, so exactly how to do such things still hasn't been decided).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*You can follow the main development branch easily by adding it as remote branch:&lt;br /&gt;
 git remote add upstream git@gitorious.org:amarok/amarok.git&lt;br /&gt;
*Update by pulling from the remote:&lt;br /&gt;
 git pull upstream master&lt;br /&gt;
&lt;br /&gt;
*Remember to use one branch per feature/bug fix!&lt;br /&gt;
&lt;br /&gt;
== Amarok Developers  ==&lt;br /&gt;
&lt;br /&gt;
=== gitorious.org account setup ===&lt;br /&gt;
&lt;br /&gt;
*Create an account on [http://gitorious.org gitorious.org] the git hosting service used by Qt and now Amarok. &lt;br /&gt;
*On your user page, (that's at http://gitorious.org/~your_nick) click on &amp;quot;Manage SSH keys&amp;quot; and add your SSH key.&lt;br /&gt;
&lt;br /&gt;
People with KDE-SVN accounts als should do the following: &lt;br /&gt;
&lt;br /&gt;
*Again from the user page, click on &amp;quot;Manage aliases&amp;quot; and add any email addresses you've ever used in KDE SVN. This way any commits you've made in the past are tracked back to you. If your gitorious email address is the only one you ever used, then this step isn't needed. &lt;br /&gt;
*Request one of the kde-developers admins to add your username to the group (the same rules apply as KDE SVN account requests). This will give you push rights to Amarok. Lydia, Ian and Jeff are all admins.&lt;br /&gt;
&lt;br /&gt;
=== Setup Amarok Clone ===&lt;br /&gt;
&lt;br /&gt;
Gitorious has one address for cloning, and another for pushing. The pushing address can be used for cloning, so the easy thing to do is just use that. &lt;br /&gt;
&lt;br /&gt;
 git clone git@gitorious.org:amarok/amarok.git&lt;br /&gt;
&lt;br /&gt;
This will create a directory 'amarok'. cd into that and start developing! &lt;br /&gt;
&lt;br /&gt;
=== Basic Development ===&lt;br /&gt;
&lt;br /&gt;
90% of the time this is all that is needed: &lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 #hack, compile, build. It works!&lt;br /&gt;
 git status #to check if you want to commit all the modified files&lt;br /&gt;
 git commit -a&lt;br /&gt;
 git log&lt;br /&gt;
 git push&lt;br /&gt;
&lt;br /&gt;
''git pull --rebase'' downloads the latest changes. The --rebase option takes any unpushed local commits and applies them to the latest code, moving it to the top of the history. It is the equivalent of ''git pull; git rebase origin/master''. See the &amp;quot;1. Rebase&amp;quot; section of [http://magazine.redhat.com/2008/05/02/shipping-quality-code-with-git/ Shipping Quality Code] for a good explanation of what rebase does.&lt;br /&gt;
&lt;br /&gt;
''git status'' will tell you what files are modified. If you created a new file, use ''git add'' on it to &amp;quot;track&amp;quot; it. If there are some junk files, you can add a regexp to .gitignore in the root.&lt;br /&gt;
&lt;br /&gt;
''git commit -a'' will commit all unmodified files. You can use ''git add'' and then simply ''git commit'' instead if you wish to commit only certain files.&amp;lt;br /&amp;gt;&lt;br /&gt;
Hint: You can use ''git commit --amend'' to amend the last commit instead of creating a new one.&lt;br /&gt;
But take care that you don't change a commit already pushed, else you'll have some trouble...&lt;br /&gt;
&lt;br /&gt;
Use ''git log'' to review the local unpushed commits. Possibly also useful is ''git diff origin/master'', which will give you a diff between the current checkout and what is in the central repo.&lt;br /&gt;
&lt;br /&gt;
''git push'' pushes all the local commits to the central repo.&lt;br /&gt;
&lt;br /&gt;
= Recommended reading  =&lt;br /&gt;
&lt;br /&gt;
* [http://tom.preston-werner.com/2009/05/19/the-git-parable.html The Git Parable] ''Background information that will help you understand git and distributed revision control systems in general''&lt;br /&gt;
* [http://git.or.cz/course/svn.html Git to SVN crash course] ''5 minute introduction to git for experienced SVN users''&lt;br /&gt;
* [http://www.redhatmagazine.com/2008/05/02/shipping-quality-code-with-git/ Shipping Quality Code with Git] ''Guide to cleanup before a push''&lt;br /&gt;
* [http://eagain.net/articles/git-for-computer-scientists/ Git for Computer Scientists] ''Quick introduction to git internals for people who are not scared by words like Directed Acyclic Graph.''&lt;br /&gt;
* [http://www.youtube.com/watch?v=4XpnKHJAok8 Linus Torvalds on Git] ''Why git? answered by the man that started it.''&lt;br /&gt;
* [http://gitready.com/ Git Ready!] Learn git one commit at a time&lt;br /&gt;
&lt;br /&gt;
= Todo for this doc =&lt;br /&gt;
* creating feature branches&lt;br /&gt;
* working with feature branches&lt;br /&gt;
* history manipulation. rebase -i, commit --append, and what to do when things go wrong. Probably its own page.&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.4_Feature_Plan</id>
		<title>Schedules/KDE4/4.4 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.4_Feature_Plan"/>
				<updated>2009-07-18T19:22:12Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* kdeutils */ Forgot one item for Ark&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the 4.4 release.&lt;br /&gt;
&lt;br /&gt;
See also:&lt;br /&gt;
* [[Schedules/KDE4/4.4 Release Schedule]]&lt;br /&gt;
* [[Schedules/KDE4/4.4 Release Goals]]&lt;br /&gt;
* [[Schedules/KDE4/4.3 Feature Plan]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Legend:&lt;br /&gt;
* todo =&amp;gt; not started yet&lt;br /&gt;
* in-progress =&amp;gt; started, but not completed yet&lt;br /&gt;
* done =&amp;gt; completed&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Other =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdelibs =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-workspace =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |Non-Plasma, Non-KWin&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KRunner&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |Plasma - Priority Features&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |Plasma&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KWin - Core&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KWin - Desktop Effects&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KDM&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdepimlibs =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdenetwork =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|Kopete|UPnp Support|mattr@kde.org|Matt Rogers}}&lt;br /&gt;
{{FeatureTodo|Kopete|Jabber Jingle video support|detlev.casanova@gmail.com|Detlev Casanova}}&lt;br /&gt;
{{FeatureTodo|Kopete|Jabber Jingle ICE support|detlev.casanova@gmail.com|Detlev Casanova}}&lt;br /&gt;
{{FeatureTodo|Kopete|Add support for urls to Bonjour plugin|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Kopete|Rich text support for ICQ|kedgedev@gmail.com|Roman Jarosz}}&lt;br /&gt;
{{FeatureInProgress|Kopete|Contacts plasmoid|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdepim =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeutils =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|Okteta|add editing capability to Decoding table |kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add Kate-like search tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for import by drop, both url and data|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|copy again puts also a value or char variant of the data to clipboard|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for memory mapping of files|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add further export formats like s-record and intel 16|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for jobs like io, printing, string search or filter|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Make dialogs for Goto, Search &amp;amp; Replace embedded|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add Okular like embedded notifications|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks and other view settings for next load|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add dialog to set selection range|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add global toggle option for the offset display, hex or decimal|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Make the Okteta KPart use libkakao, and rename libkakao|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|KGpg|Make keyserver actions possible to use on multiple keyservers at once|kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureTodo|KGpg|Add &amp;amp;quot;caff&amp;amp;quot; mode for keysigning|kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureTodo|KGpg|Allow searching for trust path in keyring|kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureTodo|KGpg|Add improved key import result window (with useful summary, filtering, reasonable default size etc.)|kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureTodo|Ark|Add an options dialog (maybe)|haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureTodo|Ark|Support for custom options from the compression interface (eg. a slider for selecting compression level for rar files)|haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureTodo|Ark|Add feedback for the latest operation in the status bar|kubito@gmail.com|Raphael Kubo da Costa}}&lt;br /&gt;
{{FeatureTodo|Ark|Add feedback for the latest operation in the status bar|kubito@gmail.com|Raphael Kubo da Costa}}&lt;br /&gt;
{{FeatureTodo|Ark|Try multiple plugins for each archive type before failing|kubito@gmail.com|Raphael Kubo da Costa}}&lt;br /&gt;
{{FeatureTodo|Ark|Make the internal previewer optional|kubito@gmail.com|Raphael Kubo da Costa}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebindings =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdegames =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|KDiamond|Intelligent animation pre-caching|majewsky@gmx.net|Stefan Majewsky}}&lt;br /&gt;
{{FeatureTodo|KDiamond|Improve time display|majewsky@gmx.net|Stefan Majewsky}}&lt;br /&gt;
{{FeatureTodo|KDiamond|Refactor Board and Diamond classes|majewsky@gmx.net|Stefan Majewsky}}&lt;br /&gt;
{{FeatureTodo|Kolf|Replace with Kolf 2 (help on coding, artwork and level design desired)|majewsky@gmx.net|Stefan Majewsky}}&lt;br /&gt;
{{FeatureTodo|KSquares|Re-write computer player, make it act faster and more intelligent|ewoerner@kde.org|Eckhart Wörner}}&lt;br /&gt;
{{FeatureTodo|KSquares|Add more types of boards: hexagonal, triangular|ewoerner@kde.org|Eckhart Wörner}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeadmin =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdesdk =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|Lokalize|Integrate snowball stemmer for glossary|shafff@NOSPAMukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureTodo|Lokalize|Continue implementing XLIFF spec|shafff@NOSPAMukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureTodo|Lokalize|Segmentation [editing] functionality|shafff@NOSPAMukr.net |Nick Shaforostoff}}&lt;br /&gt;
{{FeatureTodo|Lokalize|Remote translation memories|shafff@NOSPAMukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureTodo|Lokalize|Integrate with nepomuk (fast stats retrieval, tag cloud - incl sharing!)|shafff@NOSPAMukr.net|Nick Shaforostoff}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeedu =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|KMix|Allow arbitrary ordering of controls|esken@kde.org|Christian Esken}}&lt;br /&gt;
{{FeatureTodo|KMix|Nicer OSD (icon, mute state)|esken@kde.org|Christian Esken}}&lt;br /&gt;
{{FeatureTodo|KMix|Amend Keyboard Shortcuts|esken@kde.org|Christian Esken}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeaccessibility =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdegraphics =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-runtime =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-apps =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeplasma-addons =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeartwork =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.4_Feature_Plan</id>
		<title>Schedules/KDE4/4.4 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.4_Feature_Plan"/>
				<updated>2009-07-18T19:21:00Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* kdeutils */ Add some TODOs for Ark&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the 4.4 release.&lt;br /&gt;
&lt;br /&gt;
See also:&lt;br /&gt;
* [[Schedules/KDE4/4.4 Release Schedule]]&lt;br /&gt;
* [[Schedules/KDE4/4.4 Release Goals]]&lt;br /&gt;
* [[Schedules/KDE4/4.3 Feature Plan]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Legend:&lt;br /&gt;
* todo =&amp;gt; not started yet&lt;br /&gt;
* in-progress =&amp;gt; started, but not completed yet&lt;br /&gt;
* done =&amp;gt; completed&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Other =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdelibs =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-workspace =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |Non-Plasma, Non-KWin&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KRunner&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |Plasma - Priority Features&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |Plasma&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KWin - Core&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KWin - Desktop Effects&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KDM&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdepimlibs =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdenetwork =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|Kopete|UPnp Support|mattr@kde.org|Matt Rogers}}&lt;br /&gt;
{{FeatureTodo|Kopete|Jabber Jingle video support|detlev.casanova@gmail.com|Detlev Casanova}}&lt;br /&gt;
{{FeatureTodo|Kopete|Jabber Jingle ICE support|detlev.casanova@gmail.com|Detlev Casanova}}&lt;br /&gt;
{{FeatureTodo|Kopete|Add support for urls to Bonjour plugin|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Kopete|Rich text support for ICQ|kedgedev@gmail.com|Roman Jarosz}}&lt;br /&gt;
{{FeatureInProgress|Kopete|Contacts plasmoid|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdepim =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeutils =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|Okteta|add editing capability to Decoding table |kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add Kate-like search tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for import by drop, both url and data|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|copy again puts also a value or char variant of the data to clipboard|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for memory mapping of files|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add further export formats like s-record and intel 16|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for jobs like io, printing, string search or filter|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Make dialogs for Goto, Search &amp;amp; Replace embedded|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add Okular like embedded notifications|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks and other view settings for next load|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add dialog to set selection range|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add global toggle option for the offset display, hex or decimal|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Make the Okteta KPart use libkakao, and rename libkakao|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|KGpg|Make keyserver actions possible to use on multiple keyservers at once|kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureTodo|KGpg|Add &amp;amp;quot;caff&amp;amp;quot; mode for keysigning|kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureTodo|KGpg|Allow searching for trust path in keyring|kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureTodo|KGpg|Add improved key import result window (with useful summary, filtering, reasonable default size etc.)|kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureTodo|Ark|Add an options dialog (maybe)|haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureTodo|Ark|Support for custom options from the compression interface (eg. a slider for selecting compression level for rar files)|haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureTodo|Ark|Add feedback for the latest operation in the status bar|kubito@gmail.com|Raphael Kubo da Costa}}&lt;br /&gt;
{{FeatureTodo|Ark|Add feedback for the latest operation in the status bar|kubito@gmail.com|Raphael Kubo da Costa}}&lt;br /&gt;
{{FeatureTodo|Ark|Try multiple plugins for each archive type before failing|kubito@gmail.com|Raphael Kubo da Costa}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebindings =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdegames =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|KDiamond|Intelligent animation pre-caching|majewsky@gmx.net|Stefan Majewsky}}&lt;br /&gt;
{{FeatureTodo|KDiamond|Improve time display|majewsky@gmx.net|Stefan Majewsky}}&lt;br /&gt;
{{FeatureTodo|KDiamond|Refactor Board and Diamond classes|majewsky@gmx.net|Stefan Majewsky}}&lt;br /&gt;
{{FeatureTodo|Kolf|Replace with Kolf 2 (help on coding, artwork and level design desired)|majewsky@gmx.net|Stefan Majewsky}}&lt;br /&gt;
{{FeatureTodo|KSquares|Re-write computer player, make it act faster and more intelligent|ewoerner@kde.org|Eckhart Wörner}}&lt;br /&gt;
{{FeatureTodo|KSquares|Add more types of boards: hexagonal, triangular|ewoerner@kde.org|Eckhart Wörner}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeadmin =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdesdk =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|Lokalize|Integrate snowball stemmer for glossary|shafff@NOSPAMukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureTodo|Lokalize|Continue implementing XLIFF spec|shafff@NOSPAMukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureTodo|Lokalize|Segmentation [editing] functionality|shafff@NOSPAMukr.net |Nick Shaforostoff}}&lt;br /&gt;
{{FeatureTodo|Lokalize|Remote translation memories|shafff@NOSPAMukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureTodo|Lokalize|Integrate with nepomuk (fast stats retrieval, tag cloud - incl sharing!)|shafff@NOSPAMukr.net|Nick Shaforostoff}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeedu =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|KMix|Allow arbitrary ordering of controls|esken@kde.org|Christian Esken}}&lt;br /&gt;
{{FeatureTodo|KMix|Nicer OSD (icon, mute state)|esken@kde.org|Christian Esken}}&lt;br /&gt;
{{FeatureTodo|KMix|Amend Keyboard Shortcuts|esken@kde.org|Christian Esken}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeaccessibility =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdegraphics =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-runtime =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-apps =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeplasma-addons =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeartwork =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Utils/Ark</id>
		<title>Projects/Utils/Ark</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Utils/Ark"/>
				<updated>2009-07-18T19:13:58Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* KDE 4.4 */ Add one more item to the TODO&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ark Plans ==&lt;br /&gt;
=== KDE 4.4 ===&lt;br /&gt;
See the [[Schedules/KDE4/4.4_Feature_Plan#kdeutils|feature plan]] for KDE 4.4.&lt;br /&gt;
&lt;br /&gt;
* Add visual feedback for the operations in the status bar&lt;br /&gt;
* Add a proper way to display a notice to the user when autosubfolder is enabled in the extraction dialog&lt;br /&gt;
* Make single/double-clicking an entry open the file in the default launcher instead of using the internal previewer (which shall become a context menu option)&lt;br /&gt;
* proper cancel support and no crash if closed during exctraction&lt;br /&gt;
* letting a plugin try to open something and possible fail, basically rework the plugin management&lt;br /&gt;
* more GUI means a settings dialog for example. I also would like to share more functionality with dolphin as we discussed once (other view modes etc)&lt;br /&gt;
* finish AddDialog&lt;br /&gt;
* general code cleanup and api doxyfication&lt;br /&gt;
&lt;br /&gt;
== Personal TODOs ==&lt;br /&gt;
=== Harald ===&lt;br /&gt;
* Formalize the dbus communication protocol and implement it in dolphin&lt;br /&gt;
* BUG: After opening file from web, automatic subfolder detection name is confused&lt;br /&gt;
* BUG: extractiondialog is confused by &amp;quot;/&amp;quot; in subfolder name&lt;br /&gt;
* Check if we want the two last patches in bug #155220&lt;br /&gt;
* Revert the single folder label&lt;br /&gt;
&lt;br /&gt;
== Misc ==&lt;br /&gt;
=== Some use cases for commandline options ===&lt;br /&gt;
* Extracting a single file into the current directory, automatically creating a subfolder&lt;br /&gt;
ark --batch --autosubfolder lala.tar.gz&lt;br /&gt;
* Same, with a dialog&lt;br /&gt;
ark --batch --autosubfolder --dialog lala.tar.gz&lt;br /&gt;
* Extract lots of archives into a single directory&lt;br /&gt;
ark --batch --destination /tmp lala1.zip lala2.tar lala3.rar&lt;br /&gt;
* Same, but use a subfolder&lt;br /&gt;
ark --batch --destination /tmp --subfolder mystuff lala1.zip lala2.tar lala3.rar&lt;br /&gt;
* Extract lots of archives into separate directories&lt;br /&gt;
ark --batch --destination /tmp --autosubfolder lala1.zip lala2.tar lala3.rar&lt;br /&gt;
* Into a single subfolder&lt;br /&gt;
ark --batch --subfolder lala.tar.gz&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/Debugging/Using_Error_Messages</id>
		<title>Development/Tutorials/Debugging/Using Error Messages</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/Debugging/Using_Error_Messages"/>
				<updated>2009-06-25T20:08:29Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* Links */ Fix capitalization typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language_Navigation_Bar|Development/Tutorials/Debugging/Using Error Messages}}&lt;br /&gt;
&lt;br /&gt;
When you start a konsole and type the commands to start an application you&lt;br /&gt;
will see all sorts of statements are printed in the konsole while the &lt;br /&gt;
application is running. All applications print these messages, to look&lt;br /&gt;
at them you have to know where to look. The application will have to be&lt;br /&gt;
compiled with the debugging enabled. So using a precompiled package from a distribution&lt;br /&gt;
probably will not give you this information. If you compiled the application &lt;br /&gt;
yourself, make sure the configure option &amp;quot;&amp;lt;tt&amp;gt;--disable-debug&amp;lt;/tt&amp;gt;&amp;quot; was not used.&lt;br /&gt;
&lt;br /&gt;
In KDE all debugging text-output can be switched on or off based on so&lt;br /&gt;
called '''areas'''. One application can be one or more area. One part of the kde base libraries can be another area. Enabling/disabling these areas from being printed can be done using the '''kdebugdialog''' application. For simple debugging selecting all&lt;br /&gt;
sections is probably wise.&lt;br /&gt;
&lt;br /&gt;
When you are debugging it is best to simply start a konsole and start the&lt;br /&gt;
application from there. In a konsole you could simply type:&lt;br /&gt;
&lt;br /&gt;
 kicker&lt;br /&gt;
&lt;br /&gt;
and in the konsole kicker could return a message like:&lt;br /&gt;
&lt;br /&gt;
 ERROR: kicker is already running!&lt;br /&gt;
&lt;br /&gt;
When a lot of output is written to the konsole it might go out of view before&lt;br /&gt;
you could read it, therefor it is easy to create a text file which contains&lt;br /&gt;
all this information, to do so type the following:&lt;br /&gt;
&lt;br /&gt;
 application 2&amp;amp;gt;&amp;amp;amp;1 | tee debug.log&lt;br /&gt;
&lt;br /&gt;
where 'application' can be replaced with the application you are debugging.&lt;br /&gt;
Afterwards you could open the file 'debug.log' to look at the messages again.&lt;br /&gt;
&lt;br /&gt;
If you are NOT starting the application from a konsole the messages will be&lt;br /&gt;
logged somewhere else, or they could have been discarded by the program that&lt;br /&gt;
started your application. &lt;br /&gt;
&lt;br /&gt;
If your application is started by clicking on an icon your best bet is to check&lt;br /&gt;
the following log files. Beware; they contain logs for a lot of applications, &lt;br /&gt;
not just the application you are debugging!&lt;br /&gt;
&lt;br /&gt;
'''Case 1: Graphical login (i.e. kdm, gdm, xdm, etc.'''&lt;br /&gt;
&lt;br /&gt;
The debug messages get redirected into the file {{path|~/.xsession-errors}} or&lt;br /&gt;
{{path|~/.X.err}} in your home directory (that is with a leading dot '.' also&lt;br /&gt;
watch the Capital).&lt;br /&gt;
&lt;br /&gt;
'''Case 2: You are using startx:'''&lt;br /&gt;
&lt;br /&gt;
Use the following command to restart your session:&lt;br /&gt;
 startx 2&amp;amp;gt;&amp;amp;amp;1 | tee startx.log&lt;br /&gt;
&lt;br /&gt;
so that all the debug messages of applications started at KDE's startup (and&lt;br /&gt;
any application launched from the panel etc.) go to the file &amp;quot;startx.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
The debug messages are usually printed in C++ with the kDebug or kWarning statement. Example:&lt;br /&gt;
&lt;br /&gt;
 kDebug(1210) &amp;lt;&amp;lt; &amp;quot;arbitrary message&amp;quot;;&lt;br /&gt;
 kWarning(1210) &amp;lt;&amp;lt; &amp;quot;this rather should not happen&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
The number 1210 (so called ''debug area'') in this case represents kicker.  You can omit the number.&lt;br /&gt;
&lt;br /&gt;
See also: [http://api.kde.org/4.0-api/kdelibs-apidocs/kdecore/html/group__kdebug.html kDebug/kWarning API documentation] and [http://websvn.kde.org/trunk/KDE/kdelibs/kdecore/kdebug.areas?view=markup kdebug.areas] for list of debug areas numbers.&lt;br /&gt;
Note that you can use ''add_definition(-DKDE_DEFAULT_DEBUG_AREA=&amp;lt;number&amp;gt;)'' in CMakeLists.txt to specify default debug area.&lt;br /&gt;
&lt;br /&gt;
''Initial Author:'' [mailto:zander@kde.org Thomas Zander]&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/FAQs/Debugging_FAQ</id>
		<title>Development/FAQs/Debugging FAQ</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/FAQs/Debugging_FAQ"/>
				<updated>2009-06-25T20:04:08Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* Is there a preferred way to print debug output on stderr? */ Add information about -DKDE_DEFAULT_DEBUG_AREA&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==General==&lt;br /&gt;
===How do I avoid Dr Konqi?===&lt;br /&gt;
You must set the environment variable KDE_DEBUG (to 1 or whatever you want in fact).&lt;br /&gt;
&lt;br /&gt;
To get Dr Konqi back, unset the KDE_DEBUG environment variable.&lt;br /&gt;
&lt;br /&gt;
Example:&amp;lt;br /&amp;gt;&lt;br /&gt;
*To avoid Dr Konqi:&amp;lt;br /&amp;gt;&lt;br /&gt;
::&amp;lt;tt&amp;gt;export KDE_DEBUG=1&amp;lt;/tt&amp;gt;&lt;br /&gt;
*To see Dr Konqi:&amp;lt;br /&amp;gt;&lt;br /&gt;
::&amp;lt;tt&amp;gt;unset KDE_DEBUG&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===How do I switch Dr Konqi to developer mode?===&lt;br /&gt;
&lt;br /&gt;
Edit file $KDEHOME/share/config/drkonqirc and add the following:&lt;br /&gt;
 [drkonqi]&lt;br /&gt;
 ConfigName=developer&lt;br /&gt;
&lt;br /&gt;
===What is a core file? How do I get a core file?===&lt;br /&gt;
&lt;br /&gt;
A core file is an image of the memory when your application crashed. Using the core file, you can know which variables were set and where your application crashed. &lt;br /&gt;
&lt;br /&gt;
Some distributions disable the generation of core files. To re-enable them, use &amp;quot;ulimit -c unlimited&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Once you have a core file for a crash, you can examine it with gdb appname core . This will open gdb on the core file for the given application. Once at the gdb prompt, the most useful command is &amp;quot;bt&amp;quot; which generates a backtrace of the crash.&lt;br /&gt;
For more information about how to use gdb, see [[Development/Tutorials/Debugging/Debugging_with_GDB|this page]]&lt;br /&gt;
&lt;br /&gt;
===What tools are available to debug my application?===&lt;br /&gt;
*kDebug() (kdDebug() in KDE3) calls are a simple but efficient way to debug an application.&lt;br /&gt;
*gdb, the GNU debugger, is the quickest way to execute step-by-step and investigate variables (recommended versions are gdb &amp;gt;= 6.x)&lt;br /&gt;
*Valgrind&lt;br /&gt;
*kdbg is a nice graphical frontend to gdb with a KDE GUI. It has support for many Qt types (including QString).&lt;br /&gt;
*Memory leak tracer : See kdesdk/kmtrace. The README explains it all.&lt;br /&gt;
*kdcop and dcop allow to browse the dcop interface and to easily make dcop calls.&lt;br /&gt;
&lt;br /&gt;
Check [[Development/Tools|this page]] and kdesdk, there are a bunch of useful scripts there.&lt;br /&gt;
&lt;br /&gt;
===How do I print a QString in gdb?===&lt;br /&gt;
Check out kdesdk, and add this line to your ~/.gdbinit :&lt;br /&gt;
 source /path/to/kde/sources/kdesdk/scripts/kde-devel-gdb &lt;br /&gt;
Then in gdb you can do printqstring myqstring to see its contents.&lt;br /&gt;
For instance, QString myqstring = QString::fromLatin1(&amp;quot;contents&amp;quot;); can be examined using&lt;br /&gt;
&lt;br /&gt;
 (gdb) printqstring myqstring&lt;br /&gt;
 $1 = &amp;quot;content&amp;quot;  &lt;br /&gt;
&lt;br /&gt;
See the kde-devel-gdb file for the other macros it defines. &lt;br /&gt;
&lt;br /&gt;
===I have no symbol when I debug an app that uses kpart, what should I do?===&lt;br /&gt;
You must stop just after the main to load the debugging symbols of the shared library. After that, you can debug normally. &lt;br /&gt;
One can go as far as creating a gdb macro, to stop right after the part was loaded. For kword, by example, I use :&lt;br /&gt;
&lt;br /&gt;
 define startkword&lt;br /&gt;
 break main&lt;br /&gt;
 run&lt;br /&gt;
 break 'KoDocument::KoDocument(int, QWidget *, char const *, &lt;br /&gt;
                        QObject *, char const *, bool)' cont&lt;br /&gt;
&lt;br /&gt;
===How do I debug an ioslave?===&lt;br /&gt;
&lt;br /&gt;
See [[Development/Tutorials/Debugging/Debugging IOSlaves|debugging ioslaves]]&lt;br /&gt;
&lt;br /&gt;
==KDE 4 specific==&lt;br /&gt;
===Is there a preferred way to print debug output on stderr?===&lt;br /&gt;
Yes, you must use kDebug():&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code cppqt&amp;gt;&lt;br /&gt;
#include &amp;lt;kdebug.h&amp;gt;&lt;br /&gt;
kDebug() &amp;lt;&amp;lt; &amp;quot;KMyApp just started&amp;quot;; &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The syntax is much like cout, you can use many native types between the &amp;quot;&amp;lt;&amp;lt;&amp;quot;. This will print out a debugging message, which will automatically be turned off at release time (by --disable-debug). In case you want the message to still be there during releases, because it's a warning or an error, use kWarning() or kError().&lt;br /&gt;
&lt;br /&gt;
Components and libraries are advised to use a debug area number, as in kDebug(1234). For this, the number must be registered in kdelibs/kdecore/kdebug.areas. Debug areas make it possible to turn off or on the debug output for specific area numbers, using the &amp;quot;kdebugdialog&amp;quot; program, which is part of kdebase. &amp;quot;kdebugdialog --fullmode&amp;quot; also permits to control where to log debug output. It is usually not necessary to register area numbers for standalone applications, unless it's so complex that you want to divide the output into several areas.&lt;br /&gt;
&lt;br /&gt;
It is possible to omit the debug area number when calling kDebug by adding the following code to your top-level CMakeLists.txt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
add_definition(-DKDE_DEFAULT_DEBUG_AREA=XXXX) &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For more information, about this, see [http://www.kdedevelopers.org/node/3171 Allen Winter's blog post].&lt;br /&gt;
&lt;br /&gt;
To make it clear: do NOT use qDebug(), this one doesn't get disabled at releases. Also avoid using assert() or kFatal() which lead to a crash when something goes wrong and that is not a nice experience for the user. Better detect the error, output a kWarning or kError, and recover if possible.&lt;br /&gt;
&lt;br /&gt;
==KDE 3 specific==&lt;br /&gt;
===Is there a preferred way to print debug output on stderr?===&lt;br /&gt;
Yes, you must use kdDebug():&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code cppqt3&amp;gt;&lt;br /&gt;
#include &amp;lt;kdebug.h&amp;gt;&lt;br /&gt;
kdDebug() &amp;lt;&amp;lt; &amp;quot;KMyApp just started&amp;quot; &amp;lt;&amp;lt; endl; &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The syntax is much like cout, you can use many native types between the &amp;quot;&amp;lt;&amp;lt;&amp;quot;. This will print out a debugging message, which will automatically be turned off at release time (by --disable-debug). In case you want the message to still be there during releases, because it's a warning or an error, use kdWarning() or kdError().&lt;br /&gt;
&lt;br /&gt;
Components and libraries are advised to use a debug area number, as in kdDebug(1234). For this, the number must be registered in kdelibs/kdecore/kdebug.areas. Debug areas make it possible to turn off or on the debug output for specific area numbers, using the &amp;quot;kdebugdialog&amp;quot; program, which is part of kdebase. &amp;quot;kdebugdialog --fullmode&amp;quot; also permits to control where to log debug output. It is usually not necessary to register area numbers for standalone applications, unless it's so complex that you want to divide the output into several areas.&lt;br /&gt;
&lt;br /&gt;
To make it clear: do NOT use qDebug(), this one doesn't get disabled at releases. Also avoid using assert() or kdFatal() which lead to a crash when something goes wrong, never nice for the user. Better detect the error, output a kdWarning or kdError, and recover if possible.&lt;br /&gt;
&lt;br /&gt;
[[Category:FAQs]]&lt;br /&gt;
[[Category:Programming]]&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/Unittests</id>
		<title>Development/Tutorials/Unittests</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/Unittests"/>
				<updated>2009-06-12T02:43:09Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* The QTEST macro */ Fix capitalization typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Development/Tutorials/Unittests}}&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Brad Hards, Sigma Bravo Pty Limited&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
&lt;br /&gt;
This article provides guidance on writing unittests for Qt4 and KDE4, based on the QtTestLib framework provided starting with Qt4.1. It provides an introduction to the ideas behind unit testing, tutorial material on the QtTestLib framework, and suggestions for getting the most value for your effort. &lt;br /&gt;
This document is matched to Qt 4.1 and KDE 4.&lt;br /&gt;
&lt;br /&gt;
== About Unit Testing ==&lt;br /&gt;
&lt;br /&gt;
A unit test is a test that checks the functionality, behaviour and correctness of a single software component. In Qt4 code (including KDE4 code) unit tests are almost always used to test a single C++ class (although testing a macro or C function is also possible).&lt;br /&gt;
&lt;br /&gt;
Unit tests are a key part of Test Driven Development, however they are useful for all software development processes. It is not essential that all of the code is covered by unit tests (although that is obviously very desirable!). Even a single test is a useful step to improving code quality. &lt;br /&gt;
&lt;br /&gt;
Note that unit tests are dynamic tests (i.e. they run, using the compiled code) rather than static analysis tests (which operate on the source or some intermediate representation). &lt;br /&gt;
&lt;br /&gt;
Even if they don't call them &amp;quot;unit tests&amp;quot;, most programmers have written some &amp;quot;throwaway&amp;quot; code that they use to check an implementation. If that code was cleaned up a little, and built into the development system, then it could be used over and over to check that the implementation is still OK. To make that work a little easier, we can use test frameworks. &lt;br /&gt;
&lt;br /&gt;
Note that it is sometimes tempting to treat the unit test as a pure verification tool. While it is true that unit tests do help to ensure correct functionality and behaviour, they also assist with other aspects of code quality. Writing a unit test requires a slightly different approach to coding up a class, and thinking about what inputs need to be tested can help to identify logic flaws in the code (even before the tests get run). In addition, the need to make the code testable is a very useful driver to ensure that classes do not suffer from close coupling. &lt;br /&gt;
&lt;br /&gt;
Anyway, enough of the conceptual stuff - lets talk about a specific tool that can reduce some of the effort and let us get on with the job.&lt;br /&gt;
&lt;br /&gt;
==About QtTestLib==&lt;br /&gt;
&lt;br /&gt;
QtTestlib is a lightweight testing library developed by Trolltech and released under the GPL (a commercial version is also available, for those who need alternative licensing). It is written in C++, and is cross-platform. It is provided as part of the tools included in Qt 4.1, and earlier versions were provided separately. Note that earlier versions had a different API, and the examples will not work with that earlier version. &lt;br /&gt;
&lt;br /&gt;
In addition to normal unit testing capabilities, QtTestLib also offers basic GUI testing, based on sending QEvents. This allows you to test GUI widgets, but is not generally suitable for testing full applications. &lt;br /&gt;
&lt;br /&gt;
Each testcase is a standalone test application. Unlike CppUnit or JUnit, there is no Runner type class. Instead, each testcase is an executable which is simply run.&lt;br /&gt;
&lt;br /&gt;
== Tutorial 1: A simple test of a date class ==&lt;br /&gt;
&lt;br /&gt;
In this tutorial, we will build a simple test for a class that represents a date, using QtTestLib as the test framework. To avoid too much detail on how the date class works, we'll just use the  QDate. class that comes with Qt. In a normal unittest, you would more likely be testing code that you've written yourself.&lt;br /&gt;
&lt;br /&gt;
The code below is the entire testcase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Example 1. QDate test code'''&lt;br /&gt;
&amp;lt;code cppqt n&amp;gt;&lt;br /&gt;
#include &amp;lt;QtTest&amp;gt;&lt;br /&gt;
#include &amp;lt;QtCore&amp;gt;&lt;br /&gt;
&lt;br /&gt;
class testDate: public QObject&lt;br /&gt;
{&lt;br /&gt;
    Q_OBJECT&lt;br /&gt;
private slots:&lt;br /&gt;
    void testValidity();&lt;br /&gt;
    void testMonth();&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void testDate::testValidity()&lt;br /&gt;
{&lt;br /&gt;
    // 11 March 1967&lt;br /&gt;
    QDate date( 1967, 3, 11 );&lt;br /&gt;
    QVERIFY( date.isValid() );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void testDate::testMonth()&lt;br /&gt;
{&lt;br /&gt;
    // 11 March 1967&lt;br /&gt;
    QDate date;&lt;br /&gt;
    date.setYMD( 1967, 3, 11 );&lt;br /&gt;
    QCOMPARE( date.month(), 3 );&lt;br /&gt;
    QCOMPARE( QDate::longMonthName(date.month()),&lt;br /&gt;
              QString(&amp;quot;March&amp;quot;) );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
QTEST_MAIN(testDate)&lt;br /&gt;
#include &amp;quot;tutorial1.moc&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Save as tutorial1.cpp&lt;br /&gt;
&lt;br /&gt;
Stepping through the code, the first line imports the header files for the QtTest namespace. The second line imports the headers for the QtCore namespace (not strictly necessary, since QtTest also imports it, but it is robust and safe). Lines 4 to 10 give us the test class, testData. Note that testDate inherits from QObject and has the Q_OBJECT macro - QtTestLib requires specific Qt functionality that is present in  QObject. &lt;br /&gt;
&lt;br /&gt;
Lines 12 to 17 provide our first test, which checks that a date is valid. Note the use of the QVERIFY macro, which checks that the condition is true. So if date.isValid() returns true, then the test will pass, otherwise the test will fail. QVERIFY is similar to ASSERT in other test suites.&lt;br /&gt;
&lt;br /&gt;
Similarly, lines 19 to 27 provide another test, which checks a setter, and a couple of accessor routines. In this case, we are using QCOMPARE, which checks that the conditions are equal. So if date.month() returns 3, then that part of that test will pass, otherwise the test will fail. &lt;br /&gt;
&lt;br /&gt;
{{Warning|As soon as a QVERIFY evaluates to false or a QCOMPARE does not have two equal values, the whole test is marked as failed and the next test will be stated. So in the example above, if the check at line 24 fails, then the check at lines 25 and 26 will not be run.}}&lt;br /&gt;
&lt;br /&gt;
In a later tutorial we will see how to work around problems that this behaviour can cause.&lt;br /&gt;
&lt;br /&gt;
Line 30 uses the QTEST_MAIN which creates an entry point routine for us, with appropriate calls to invoke the testDate unit test class. &lt;br /&gt;
&lt;br /&gt;
Line 31 includes the Meta-Object compiler output, so we can make use of our  QObject functionality. &lt;br /&gt;
&lt;br /&gt;
The qmake project file that corresponds to that code is shown below. You would then use qmake to turn this into a Makefile and then compile it with make.&lt;br /&gt;
&lt;br /&gt;
'''Example 2. QDate unit test project'''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
CONFIG += qtestlib&lt;br /&gt;
TEMPLATE = app&lt;br /&gt;
TARGET += &lt;br /&gt;
DEPENDPATH += .&lt;br /&gt;
INCLUDEPATH += .&lt;br /&gt;
&lt;br /&gt;
# Input&lt;br /&gt;
SOURCES += tutorial1.cpp&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Save as tutorial1.pro&lt;br /&gt;
&lt;br /&gt;
This is a fairly normal project file, except for the addition of the &amp;lt;code&amp;gt;CONFIG += qtestlib&amp;lt;/code&amp;gt;. This adds the right header and library setup to the Makefile. &lt;br /&gt;
&lt;br /&gt;
Create an empty file called tutorial1.h and compile with &amp;lt;code&amp;gt;qmake; make&amp;lt;/code&amp;gt; The output looks like the following:&lt;br /&gt;
&lt;br /&gt;
'''Example 3. QDate unit test output'''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ ./tutorial1&lt;br /&gt;
********* Start testing of testDate *********&lt;br /&gt;
Config: Using QTest library 4.1.0, Qt 4.1.0-snapshot-20051003&lt;br /&gt;
PASS   : testDate::initTestCase()&lt;br /&gt;
PASS   : testDate::testValidity()&lt;br /&gt;
PASS   : testDate::testMonth()&lt;br /&gt;
PASS   : testDate::cleanupTestCase()&lt;br /&gt;
Totals: 4 passed, 0 failed, 0 skipped&lt;br /&gt;
********* Finished testing of testDate *********&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Looking at the output above, you can see that the output includes the version of the test library and Qt itself, and then the status of each test that is run. In addition to the testValidity and testMonth tests that we defined, there is also a setup routine (initTestCase) and a teardown routine (cleanupTestCase) that can be used to do additional configuration if required.&lt;br /&gt;
&lt;br /&gt;
===Failing tests===&lt;br /&gt;
&lt;br /&gt;
If we had made an error in either the production code or the unit test code, then the results would show an error. An example is shown below:&lt;br /&gt;
&lt;br /&gt;
'''Example 4. QDate unit test output showing failure'''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ ./tutorial1&lt;br /&gt;
********* Start testing of testDate *********&lt;br /&gt;
Config: Using QTest library 4.1.0, Qt 4.1.0-snapshot-20051003&lt;br /&gt;
PASS   : testDate::initTestCase()&lt;br /&gt;
PASS   : testDate::testValidity()&lt;br /&gt;
FAIL!  : testDate::testMonth() Compared values are not the same&lt;br /&gt;
   Actual (date.month()): 4&lt;br /&gt;
   Expected (3): 3&lt;br /&gt;
    Loc: [tutorial1.cpp(25)]&lt;br /&gt;
PASS   : testDate::cleanupTestCase()&lt;br /&gt;
Totals: 3 passed, 1 failed, 0 skipped&lt;br /&gt;
********* Finished testing of testDate *********&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Running selected tests===&lt;br /&gt;
&lt;br /&gt;
When the number of test functions increases, and some of the functions take a long time to run, it can be useful to only run a selected function. For example, if you only want to run the testMonth function, then you just specify that on the command line, as shown below:&lt;br /&gt;
&lt;br /&gt;
'''Example 5. QDate unit test output - selected function'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ ./tutorial1 testValidity&lt;br /&gt;
********* Start testing of testDate *********&lt;br /&gt;
Config: Using QTest library 4.1.0, Qt 4.1.0-snapshot-20051003&lt;br /&gt;
PASS   : testDate::initTestCase()&lt;br /&gt;
PASS   : testDate::testValidity()&lt;br /&gt;
PASS   : testDate::cleanupTestCase()&lt;br /&gt;
Totals: 3 passed, 0 failed, 0 skipped&lt;br /&gt;
********* Finished testing of testDate *********        &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the initTestCase and cleanupTestCase routines are always run, so that any necessary setup and cleanup will still be done. &lt;br /&gt;
&lt;br /&gt;
You can get a list of the available functions by passing the -functions option, as shown below: &lt;br /&gt;
&lt;br /&gt;
'''Example 6. QDate unit test output - listing functions'''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ ./tutorial1 -functions&lt;br /&gt;
testValidity()&lt;br /&gt;
testMonth()&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Verbose output options===&lt;br /&gt;
&lt;br /&gt;
You can get more verbose output by using the -v1, -v2 and -vs options. -v1 produces a message on entering each test function. I found this is useful when it looks like a test is hanging. This is shown below:&lt;br /&gt;
&lt;br /&gt;
'''Example 7. QDate unit test output - verbose output'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ ./tutorial1 -v1&lt;br /&gt;
********* Start testing of testDate *********&lt;br /&gt;
Config: Using QTest library 4.1.0, Qt 4.1.0-snapshot-20051003&lt;br /&gt;
INFO   : testDate::initTestCase() entering&lt;br /&gt;
PASS   : testDate::initTestCase()&lt;br /&gt;
INFO   : testDate::testValidity() entering&lt;br /&gt;
PASS   : testDate::testValidity()&lt;br /&gt;
INFO   : testDate::testMonth() entering&lt;br /&gt;
PASS   : testDate::testMonth()&lt;br /&gt;
INFO   : testDate::cleanupTestCase() entering&lt;br /&gt;
PASS   : testDate::cleanupTestCase()&lt;br /&gt;
Totals: 4 passed, 0 failed, 0 skipped&lt;br /&gt;
********* Finished testing of testDate *********&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The -v2 option shows each QVERIFY, QCOMPARE and QTEST, as well as the message on entering each test function. I found this useful for verifying that a particular step is being run. This is shown below: &lt;br /&gt;
&lt;br /&gt;
''''Example 8. QDate unit test output - more verbose output'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ ./tutorial1 -v2&lt;br /&gt;
********* Start testing of testDate *********&lt;br /&gt;
Config: Using QTest library 4.1.0, Qt 4.1.0-snapshot-20051003&lt;br /&gt;
INFO   : testDate::initTestCase() entering&lt;br /&gt;
PASS   : testDate::initTestCase()&lt;br /&gt;
INFO   : testDate::testValidity() entering&lt;br /&gt;
INFO   : testDate::testValidity() QVERIFY(date.isValid())&lt;br /&gt;
    Loc: [tutorial1.cpp(17)]&lt;br /&gt;
PASS   : testDate::testValidity()&lt;br /&gt;
INFO   : testDate::testMonth() entering&lt;br /&gt;
INFO   : testDate::testMonth() COMPARE()&lt;br /&gt;
    Loc: [tutorial1.cpp(25)]&lt;br /&gt;
INFO   : testDate::testMonth() COMPARE()&lt;br /&gt;
    Loc: [tutorial1.cpp(27)]&lt;br /&gt;
PASS   : testDate::testMonth()&lt;br /&gt;
INFO   : testDate::cleanupTestCase() entering&lt;br /&gt;
PASS   : testDate::cleanupTestCase()&lt;br /&gt;
Totals: 4 passed, 0 failed, 0 skipped&lt;br /&gt;
********* Finished testing of testDate *********        &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The -vs option shows each signal that is emitted. In our example, there are no signals, so -vs has no effect. Getting a list of signals is useful for debugging failing tests, especially GUI tests which we will see in the third tutorial. &lt;br /&gt;
&lt;br /&gt;
===Output to a file===&lt;br /&gt;
&lt;br /&gt;
If you want to output the results of your testing to a file, you can use the -o filename, where you replace filename with the name of the file you want to save output to.&lt;br /&gt;
&lt;br /&gt;
==Tutorial 2: Data driven testing of a date class==&lt;br /&gt;
&lt;br /&gt;
In the previous example, we looked at how we can test a date class. If we decided that we really needed to test a lot more dates, then we'd be cutting and pasting a lot of code. If we subsequently changed the name of a function, then it has to be changed in a lot of places. As an alternative to introducing these types of maintenance problems into our tests, QtTestLib offers support for data driven testing. &lt;br /&gt;
&lt;br /&gt;
The easiest way to understand data driven testing is by an example, as shown below:&lt;br /&gt;
&lt;br /&gt;
'''Example 9. QDate test code, data driven version'''&lt;br /&gt;
&amp;lt;code cppqt n&amp;gt;&lt;br /&gt;
#include &amp;lt;QtTest&amp;gt;&lt;br /&gt;
#include &amp;lt;QtCore&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class testDate: public QObject&lt;br /&gt;
{&lt;br /&gt;
    Q_OBJECT&lt;br /&gt;
private slots:&lt;br /&gt;
    void testValidity();&lt;br /&gt;
    void testMonth_data();&lt;br /&gt;
    void testMonth();&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void testDate::testValidity()&lt;br /&gt;
{&lt;br /&gt;
    // 12 March 1967&lt;br /&gt;
    QDate date( 1967, 3, 12 );&lt;br /&gt;
    QVERIFY( date.isValid() );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void testDate::testMonth_data()&lt;br /&gt;
{&lt;br /&gt;
    QTest::addColumn&amp;lt;int&amp;gt;(&amp;quot;year&amp;quot;);  // the year we are testing&lt;br /&gt;
    QTest::addColumn&amp;lt;int&amp;gt;(&amp;quot;month&amp;quot;); // the month we are testing&lt;br /&gt;
    QTest::addColumn&amp;lt;int&amp;gt;(&amp;quot;day&amp;quot;);   // the day we are testing&lt;br /&gt;
    QTest::addColumn&amp;lt;QString&amp;gt;(&amp;quot;monthName&amp;quot;);   // the name of the month&lt;br /&gt;
&lt;br /&gt;
    QTest::newRow(&amp;quot;1967/3/11&amp;quot;) &amp;lt;&amp;lt; 1967 &amp;lt;&amp;lt; 3 &amp;lt;&amp;lt; 11 &amp;lt;&amp;lt; QString(&amp;quot;March&amp;quot;);&lt;br /&gt;
    QTest::newRow(&amp;quot;1966/1/10&amp;quot;) &amp;lt;&amp;lt; 1966 &amp;lt;&amp;lt; 1 &amp;lt;&amp;lt; 10 &amp;lt;&amp;lt; QString(&amp;quot;January&amp;quot;);&lt;br /&gt;
    QTest::newRow(&amp;quot;1999/9/19&amp;quot;) &amp;lt;&amp;lt; 1999 &amp;lt;&amp;lt; 9 &amp;lt;&amp;lt; 19 &amp;lt;&amp;lt; QString(&amp;quot;September&amp;quot;);&lt;br /&gt;
    // more rows of dates can go in here...&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void testDate::testMonth()&lt;br /&gt;
{&lt;br /&gt;
    QFETCH(int, year);&lt;br /&gt;
    QFETCH(int, month);&lt;br /&gt;
    QFETCH(int, day);&lt;br /&gt;
    QFETCH(QString, monthName);&lt;br /&gt;
&lt;br /&gt;
    QDate date;&lt;br /&gt;
    date.setYMD( year, month, day);&lt;br /&gt;
    QCOMPARE( date.month(), month );&lt;br /&gt;
    QCOMPARE( QDate::longMonthName(date.month()), monthName );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
QTEST_MAIN(testDate)&lt;br /&gt;
#include &amp;quot;tutorial2.moc&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As you can see, we've introduced a new method - testMonth_data, and moved the specific test date out of testMonth. We've had to add some more code (which will be explained soon), but the result is a separation of the data we are testing, and the code we are using to test it. &lt;br /&gt;
The names of the functions are important - you must use the _data suffix for the data setup routine, and the first part of the data setup routine must match the name of the driver routine. &lt;br /&gt;
&lt;br /&gt;
It is useful to visualise the data as being a table, where the columns are the various data values required for a single run through the driver, and the rows are different runs. In our example, there are four columns (three integers, one for each part of the date; and one  QString ), added in lines 19 through 22. The addColumn template obviously requires the type of variable to be added, and also requires a variable name argument. We then add as many rows as required using the newRow function, as shown in lines 23 through 26. The string argument to newRow is a label, which is handy for determining what is going on with failing tests, but doesn't have any effect on the test itself. &lt;br /&gt;
&lt;br /&gt;
To use the data, we simply use QFETCH to obtain the appropriate data from each row. The arguments to QFETCH are the type of the variable to fetch, and the name of the column (which is also the local name of the variable it gets fetched into). You can then use this data in a QCOMPARE or QVERIFY check. The code is run for each row, which you can see below:&lt;br /&gt;
&lt;br /&gt;
'''Example 10. Results of data driven testing, showing QFETCH'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ ./tutorial2 -v2&lt;br /&gt;
********* Start testing of testDate *********&lt;br /&gt;
Config: Using QTest library 4.1.0, Qt 4.1.0-snapshot-20051020&lt;br /&gt;
INFO   : testDate::initTestCase() entering&lt;br /&gt;
PASS   : testDate::initTestCase()&lt;br /&gt;
INFO   : testDate::testValidity() entering&lt;br /&gt;
INFO   : testDate::testValidity() QVERIFY(date.isValid())&lt;br /&gt;
   Loc: [tutorial2.cpp(19)]&lt;br /&gt;
PASS   : testDate::testValidity()&lt;br /&gt;
INFO   : testDate::testMonth() entering&lt;br /&gt;
INFO   : testDate::testMonth(1967/3/11) COMPARE()&lt;br /&gt;
   Loc: [tutorial2.cpp(44)]&lt;br /&gt;
INFO   : testDate::testMonth(1967/3/11) COMPARE()&lt;br /&gt;
   Loc: [tutorial2.cpp(45)]&lt;br /&gt;
INFO   : testDate::testMonth(1966/1/10) COMPARE()&lt;br /&gt;
   Loc: [tutorial2.cpp(44)]&lt;br /&gt;
INFO   : testDate::testMonth(1966/1/10) COMPARE()&lt;br /&gt;
   Loc: [tutorial2.cpp(45)]&lt;br /&gt;
INFO   : testDate::testMonth(1999/9/19) COMPARE()&lt;br /&gt;
   Loc: [tutorial2.cpp(44)]&lt;br /&gt;
INFO   : testDate::testMonth(1999/9/19) COMPARE()&lt;br /&gt;
   Loc: [tutorial2.cpp(45)]&lt;br /&gt;
PASS   : testDate::testMonth()&lt;br /&gt;
INFO   : testDate::cleanupTestCase() entering&lt;br /&gt;
PASS   : testDate::cleanupTestCase()&lt;br /&gt;
Totals: 4 passed, 0 failed, 0 skipped&lt;br /&gt;
********* Finished testing of testDate *********&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The QTEST macro ===&lt;br /&gt;
&lt;br /&gt;
As an alternative to using QFETCH and QCOMPARE, you may be able to use the QTEST macro instead. QTEST takes two arguments, and if one is a string, it looks up that string as an argument in the current row. You can see how this can be used below, which is equivalent to the testMonth() code in the previous example. &lt;br /&gt;
&lt;br /&gt;
'''Example 11. QDate test code, data driven version using QTEST'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code cppqt n&amp;gt;&lt;br /&gt;
void testDate::testMonth()&lt;br /&gt;
{&lt;br /&gt;
    QFETCH(int, year);&lt;br /&gt;
    QFETCH(int, month);&lt;br /&gt;
    QFETCH(int, day);&lt;br /&gt;
&lt;br /&gt;
    QDate date;&lt;br /&gt;
    date.setYMD( year, month, day);&lt;br /&gt;
    QCOMPARE( date.month(), month );&lt;br /&gt;
    QTEST( QDate::longMonthName(date.month()), &amp;quot;monthName&amp;quot; );&lt;br /&gt;
}      &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the example above, note that monthName is enclosed in quotes, and we no longer have a QFETCH call for monthName. &lt;br /&gt;
&lt;br /&gt;
The other QCOMPARE could also have been converted to use QTEST, however this would be less efficient, because we already needed to use QFETCH to get month for the setYMD in the line above.&lt;br /&gt;
&lt;br /&gt;
===Running selected tests with selected data===&lt;br /&gt;
&lt;br /&gt;
In the previous tutorial, we saw how to run a specific test by specifying the name of the test as a command line argument. In data driven testing, you can select which data you want the test run with, by adding a colon and the label for the data row. For example, if we just want to run the testMonth test for the first row, we would use &amp;lt;pre&amp;gt;./tutorial2 -v2 testMonth:1967/3/11&amp;lt;/pre&amp;gt;. The result of this is shown below.&lt;br /&gt;
&lt;br /&gt;
'''Example 12. QDate unit test output - selected function and data'''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ ./tutorial2 -v2 testMonth:1967/3/11&lt;br /&gt;
********* Start testing of testDate *********&lt;br /&gt;
Config: Using QTest library 4.1.0, Qt 4.1.0-snapshot-20051020&lt;br /&gt;
INFO   : testDate::initTestCase() entering&lt;br /&gt;
PASS   : testDate::initTestCase()&lt;br /&gt;
INFO   : testDate::testMonth() entering&lt;br /&gt;
INFO   : testDate::testMonth(1967/3/11) COMPARE()&lt;br /&gt;
   Loc: [tutorial2.cpp(44)]&lt;br /&gt;
INFO   : testDate::testMonth(1967/3/11) COMPARE()&lt;br /&gt;
   Loc: [tutorial2.cpp(45)]&lt;br /&gt;
PASS   : testDate::testMonth()&lt;br /&gt;
INFO   : testDate::cleanupTestCase() entering&lt;br /&gt;
PASS   : testDate::cleanupTestCase()&lt;br /&gt;
Totals: 3 passed, 0 failed, 0 skipped&lt;br /&gt;
********* Finished testing of testDate *********&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Tutorial 3: Testing Graphical User Interfaces==&lt;br /&gt;
&lt;br /&gt;
In the previous two tutorials, we've tested a date management class. This is an pretty typical use of unit testing. However Qt and KDE applications will make use graphical classes that take user input (typically from a keyboard and mouse). QtTestLib offers support for testing these classes, which we'll see in this tutorial. &lt;br /&gt;
&lt;br /&gt;
Again, we'll use an existing class as our test environment, and again it will be date related - the standard Qt {{qt|QDateEdit}} class. For those not familiar with this class, it is a simple date entry widget (although with some powerful back end capabilities). A picture of the widget is shown below. &lt;br /&gt;
&lt;br /&gt;
[[Image:Qdateedit_dlg.png|thumb|'''Figure 1. QDateEdit widget screenshot''']]&lt;br /&gt;
&lt;br /&gt;
The way QtTestLib provides GUI testing is by injecting {{qt|QInputEvent}} events. To the application, these input events appear the same as normal key press/release and mouse clicks/drags. However the mouse and keyboard are unaffected, so that you can continue to use the machine normally while tests are being run. &lt;br /&gt;
&lt;br /&gt;
An example of how you can use the GUI functionality of QtTestLib is shown below.&lt;br /&gt;
&lt;br /&gt;
'''Example 13. QDateEdit test code'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code cppqt n&amp;gt;&lt;br /&gt;
#include &amp;lt;QtTest&amp;gt;&lt;br /&gt;
#include &amp;lt;QtCore&amp;gt;&lt;br /&gt;
#include &amp;lt;QtGui&amp;gt;&lt;br /&gt;
Q_DECLARE_METATYPE(QDate)&lt;br /&gt;
&lt;br /&gt;
class testDateEdit: public QObject&lt;br /&gt;
{&lt;br /&gt;
    Q_OBJECT&lt;br /&gt;
private slots:&lt;br /&gt;
    void testChanges();&lt;br /&gt;
    void testValidator_data();&lt;br /&gt;
    void testValidator();&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void testDateEdit::testChanges()&lt;br /&gt;
{&lt;br /&gt;
    // 11 March 1967&lt;br /&gt;
    QDate date( 1967, 3, 11 );&lt;br /&gt;
    QDateEdit dateEdit( date );&lt;br /&gt;
&lt;br /&gt;
    // up-arrow should increase day by one&lt;br /&gt;
    QTest::keyClick( &amp;amp;dateEdit, Qt::Key_Up );&lt;br /&gt;
    QCOMPARE( dateEdit.date(), date.addDays(1) );&lt;br /&gt;
&lt;br /&gt;
    // we click twice on the &amp;quot;reduce&amp;quot; arrow at the bottom RH corner&lt;br /&gt;
    // first we need the widget size to know where to click&lt;br /&gt;
    QSize editWidgetSize = dateEdit.size();&lt;br /&gt;
    QPoint clickPoint(editWidgetSize.rwidth()-2, editWidgetSize.rheight()-2);&lt;br /&gt;
    // issue two clicks&lt;br /&gt;
    QTest::mouseClick( &amp;amp;dateEdit, Qt::LeftButton, 0, clickPoint);&lt;br /&gt;
    QTest::mouseClick( &amp;amp;dateEdit, Qt::LeftButton, 0, clickPoint);&lt;br /&gt;
    // and we should have decreased day by two (one less than original)&lt;br /&gt;
    QCOMPARE( dateEdit.date(), date.addDays(-1) );&lt;br /&gt;
&lt;br /&gt;
    QTest::keyClicks( &amp;amp;dateEdit, &amp;quot;25122005&amp;quot; );&lt;br /&gt;
    QCOMPARE( dateEdit.date(), QDate( 2005, 12, 25 ) );&lt;br /&gt;
&lt;br /&gt;
    QTest::keyClick( &amp;amp;dateEdit, Qt::Key_Tab, Qt::ShiftModifier );&lt;br /&gt;
    QTest::keyClicks( &amp;amp;dateEdit, &amp;quot;08&amp;quot; );&lt;br /&gt;
    QCOMPARE( dateEdit.date(), QDate( 2005, 8, 25 ) );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void testDateEdit::testValidator_data()&lt;br /&gt;
{&lt;br /&gt;
    qRegisterMetaType&amp;lt;QDate&amp;gt;(&amp;quot;QDate&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    QTest::addColumn&amp;lt;QDate&amp;gt;( &amp;quot;initialDate&amp;quot; );&lt;br /&gt;
    QTest::addColumn&amp;lt;QString&amp;gt;( &amp;quot;keyclicks&amp;quot; );&lt;br /&gt;
    QTest::addColumn&amp;lt;QDate&amp;gt;( &amp;quot;finalDate&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
    QTest::newRow( &amp;quot;1968/4/12&amp;quot; ) &amp;lt;&amp;lt; QDate( 1967, 3, 11 )&lt;br /&gt;
                                 &amp;lt;&amp;lt; QString( &amp;quot;12041968&amp;quot; )&lt;br /&gt;
                                 &amp;lt;&amp;lt; QDate( 1968, 4, 12 );&lt;br /&gt;
&lt;br /&gt;
    QTest::newRow( &amp;quot;1967/3/14&amp;quot; ) &amp;lt;&amp;lt; QDate( 1967, 3, 11 )&lt;br /&gt;
                                 &amp;lt;&amp;lt; QString( &amp;quot;140abcdef[&amp;quot; )&lt;br /&gt;
                                 &amp;lt;&amp;lt; QDate( 1967, 3, 14 );&lt;br /&gt;
    // more rows can go in here&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void testDateEdit::testValidator()&lt;br /&gt;
{&lt;br /&gt;
    QFETCH( QDate, initialDate );&lt;br /&gt;
    QFETCH( QString, keyclicks );&lt;br /&gt;
    QFETCH( QDate, finalDate );&lt;br /&gt;
&lt;br /&gt;
    QDateEdit dateEdit( initialDate );&lt;br /&gt;
    // this next line is just to start editing&lt;br /&gt;
    QTest::keyClick( &amp;amp;dateEdit, Qt::Key_Enter );&lt;br /&gt;
    QTest::keyClicks( &amp;amp;dateEdit, keyclicks );&lt;br /&gt;
    QCOMPARE( dateEdit.date(), finalDate );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
QTEST_MAIN(testDateEdit)&lt;br /&gt;
#include &amp;quot;tutorial3.moc&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Much of this code is common with previous examples, so I'll focus on the new elements and the more important changes as we work through the code line-by-line. &lt;br /&gt;
&lt;br /&gt;
Lines 1 to 3 import the various Qt declarations, as before. &lt;br /&gt;
&lt;br /&gt;
Line 4 is a macro that is required for the data-driven part of this test, which I'll come to soon. &lt;br /&gt;
&lt;br /&gt;
Lines 5 to 12 declare the test class - while the names have changed, it is pretty similar to the previous example. Note the testValidator and testValidator_data functions - we will be using data driven testing again in this example. &lt;br /&gt;
&lt;br /&gt;
Our first real test starts in line 13. Line 16 creates a QDate, and line 17 uses that date as the initial value for a QDateEdit widget. &lt;br /&gt;
&lt;br /&gt;
Lines 19 and 20 show how we can test what happens when we press the up-arrow key. The QTest::keyClick function takes a pointer to a widget, and a symbolic key name (a char or a Qt::Key). At line 20, we check that the effect of that event was to increment the date by a day. The QTest:keyClick function also takes an optional keyboard modifier (such as Qt::ShiftModifier for the shift key) and an optional delay value (in milliseconds). As an alternative to using QTest::keyClick, you can use QTest::keyPress and QTest::keyRelease to construct more complex keyboard sequences. &lt;br /&gt;
&lt;br /&gt;
Lines 23 to 29 show a similar test to the previous one, but in this case we are simulating a mouse click. We need to click in the lower right hand part of the widget (to hit the decrement arrow - see Figure 1), and that requires knowing how large the widget is. So lines 23 and 24 calculate the correct point based off the size of the widget. Line 26 (and the identical line 27) simulates clicking with the left-hand mouse button at the calculated point. The arguments to Qt::mouseClick are:&lt;br /&gt;
&lt;br /&gt;
*a pointer to the widget that the click event should be sent to.&lt;br /&gt;
*the mouse button that is being clicked.&lt;br /&gt;
*an optional keyboard modifier (such a Qt::ShiftModifier), or 0 for no modifiers.&lt;br /&gt;
*an optional click point - this defaults to the middle of the widget if not specified.&lt;br /&gt;
*an optional mouse delay.&lt;br /&gt;
&lt;br /&gt;
In addition to QTest::mouseClick, there is also QTest::mousePress, QTest::mouseRelease, QTest::mouseDClick (providing double-click) and QTest::mouseMove. The first three are used in the same way as QTest::mouseClick. The last takes a point to move the mouse to. You can use these functions in combination to simulate dragging with the mouse. &lt;br /&gt;
&lt;br /&gt;
Lines 30 and 31 show another approach to keyboard entry, using the QTest::keyClicks. Where QTest::keyClick sends a single key press, QTest::keyClicks takes a QString (or something equivalent, in line 30 a character array) that represents a sequence of key clicks to send. The other arguments are the same. &lt;br /&gt;
&lt;br /&gt;
Lines 32 to 34 show how you may need to use a combination of functions. After we've entered a new date in line 30, the cursor is at the end of the widget. At line 32, we use a Shift-Tab combination to move the cursor back to the month value. Then at line 33 we enter a new month value. Of course we could have used individual calls to QTest::keyClick, however that wouldn't have been as clear, and would also have required more code.&lt;br /&gt;
&lt;br /&gt;
=== Data-driven GUI testing ===&lt;br /&gt;
&lt;br /&gt;
Lines 50 to 60 show a data-driven test - in this case we are checking that the validator on QDateEdit is performing as expected. This is a case where data-driven testing can really help to ensure that things are working the way they should. &lt;br /&gt;
&lt;br /&gt;
At lines 52 to 54, we fetch in an initial value, a series of key-clicks, and an expected result. These are the columns that are set up in lines 39 to 41. However note that we are now pulling in a QDate, where in previous examples we used three integers and then build the QDate from those. However QDate isn't a registered type for {{qt|QMetaType}}, and so we need to register it before we can use it in our data-driven testing. This is done using the Q_DECLARE_METATYPE macro in line 4 and the qRegisterMetaType function in line 38. &lt;br /&gt;
&lt;br /&gt;
Lines 42 to 47 add in a couple of sample rows. Lines 42 to 44 represent a case where the input is valid, and lines 45 to 47 are a case where the input is only partly valid (the day part). A real test will obviously contain far more combinations than this. &lt;br /&gt;
&lt;br /&gt;
Those test rows are actually tested in lines 55 to 59. We construct the QDateEdit widget in line 55, using the initial value. We then send an Enter key click in line 57, which is required to get the widget into edit mode. At line 58 we simulate the data entry, and at line 59 we check whether the results are what was expected. &lt;br /&gt;
&lt;br /&gt;
Lines 61 and 62 are the same as we've seen in previous examples.&lt;br /&gt;
&lt;br /&gt;
=== Re-using test elements ===&lt;br /&gt;
&lt;br /&gt;
If you are re-using a set of events a number of times, then it may be an advantage to build a list of events, and then just replay them. This can improve maintainability and clarity of a set of tests, especially for mouse movements. &lt;br /&gt;
&lt;br /&gt;
The key class for building a list of test events is imaginatively known as QTestEventList. It is a QList of QTestEvents. The normal approach is to create the list, and then use various member functions to add key and mouse events. The normal functions that you'll need are addKeyClick and addMouseClick, which are very similar to the QTest::keyClick and QTest::mouseClick functions we used earlier in this tutorial. For finer grained operations, you can also use addKeyPress, addKeyRelease, addKeyEvent, addMousePress, addMouseRelease, addMouseDClick and addMouseMove to build up more complex event lists. You can also use addDelay to add a specified delay between events. When the list has been built up, you just call simulate on each widget. &lt;br /&gt;
&lt;br /&gt;
You can see how this works in the example below, which is the QDateEdit example (from above) converted to use QTestEventList.&lt;br /&gt;
&lt;br /&gt;
'''Example 14. QDateEdit test code, using QTestEventList'''&lt;br /&gt;
&amp;lt;code cppqt n&amp;gt;       &lt;br /&gt;
#include &amp;lt;QtTest&amp;gt;&lt;br /&gt;
#include &amp;lt;QtCore&amp;gt;&lt;br /&gt;
#include &amp;lt;QtGui&amp;gt;&lt;br /&gt;
Q_DECLARE_METATYPE(QDate)&lt;br /&gt;
&lt;br /&gt;
class testDateEdit: public QObject&lt;br /&gt;
{&lt;br /&gt;
    Q_OBJECT&lt;br /&gt;
private slots:&lt;br /&gt;
    void testChanges();&lt;br /&gt;
    void testValidator_data();&lt;br /&gt;
    void testValidator();&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void testDateEdit::testChanges()&lt;br /&gt;
{&lt;br /&gt;
    // 11 March 1967&lt;br /&gt;
    QDate date( 1967, 3, 11 );&lt;br /&gt;
    QDateEdit dateEdit( date );&lt;br /&gt;
&lt;br /&gt;
    // up-arrow should increase day by one&lt;br /&gt;
    QTest::keyClick( &amp;amp;dateEdit, Qt::Key_Up );&lt;br /&gt;
    QCOMPARE( dateEdit.date(), date.addDays(1) );&lt;br /&gt;
&lt;br /&gt;
    // we click twice on the &amp;quot;reduce&amp;quot; arrow at the bottom RH corner&lt;br /&gt;
    // first we need the widget size to know where to click&lt;br /&gt;
    QSize editWidgetSize = dateEdit.size();&lt;br /&gt;
    QPoint clickPoint(editWidgetSize.rwidth()-2, editWidgetSize.rheight()-2);&lt;br /&gt;
    // build a list that contains two clicks&lt;br /&gt;
    QTestEventList list1;&lt;br /&gt;
    list1.addMouseClick( Qt::LeftButton, 0, clickPoint);&lt;br /&gt;
    list1.addMouseClick( Qt::LeftButton, 0, clickPoint);&lt;br /&gt;
    // call that list on the widget&lt;br /&gt;
    list1.simulate( &amp;amp;dateEdit );&lt;br /&gt;
    // and we should have decreased day by two (one less than original)&lt;br /&gt;
    QCOMPARE( dateEdit.date(), date.addDays(-1) );&lt;br /&gt;
&lt;br /&gt;
    QTest::keyClicks( &amp;amp;dateEdit, &amp;quot;25122005&amp;quot; );&lt;br /&gt;
    QCOMPARE( dateEdit.date(), QDate( 2005, 12, 25 ) );&lt;br /&gt;
&lt;br /&gt;
    QTestEventList list2;&lt;br /&gt;
    list2.addKeyClick( Qt::Key_Tab, Qt::ShiftModifier );&lt;br /&gt;
    list2.addKeyClicks( &amp;quot;08&amp;quot; );&lt;br /&gt;
    list2.simulate( &amp;amp;dateEdit );&lt;br /&gt;
    QCOMPARE( dateEdit.date(), QDate( 2005, 8, 25 ) );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void testDateEdit::testValidator_data()&lt;br /&gt;
{&lt;br /&gt;
    qRegisterMetaType&amp;lt;QDate&amp;gt;(&amp;quot;QDate&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    QTest::addColumn&amp;lt;QDate&amp;gt;( &amp;quot;initialDate&amp;quot; );&lt;br /&gt;
    QTest::addColumn&amp;lt;QTestEventList&amp;gt;( &amp;quot;events&amp;quot; );&lt;br /&gt;
    QTest::addColumn&amp;lt;QDate&amp;gt;( &amp;quot;finalDate&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
    QTestEventList eventsList1;&lt;br /&gt;
    // this next line is just to start editing&lt;br /&gt;
    eventsList1.addKeyClick( Qt::Key_Enter );&lt;br /&gt;
    eventsList1.addKeyClicks( &amp;quot;12041968&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
    QTest::newRow( &amp;quot;1968/4/12&amp;quot; ) &amp;lt;&amp;lt; QDate( 1967, 3, 11 )&lt;br /&gt;
                                 &amp;lt;&amp;lt; eventsList1&lt;br /&gt;
                                 &amp;lt;&amp;lt; QDate( 1968, 4, 12 );&lt;br /&gt;
&lt;br /&gt;
    QTestEventList eventsList2;&lt;br /&gt;
    eventsList2.addKeyClick( Qt::Key_Enter );&lt;br /&gt;
    eventsList2.addKeyClicks( &amp;quot;140abcdef[&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
    QTest::newRow( &amp;quot;1967/3/14&amp;quot; ) &amp;lt;&amp;lt; QDate( 1967, 3, 11 )&lt;br /&gt;
                                 &amp;lt;&amp;lt; eventsList2&lt;br /&gt;
                                 &amp;lt;&amp;lt; QDate( 1967, 3, 14 );&lt;br /&gt;
    // more rows can go in here&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void testDateEdit::testValidator()&lt;br /&gt;
{&lt;br /&gt;
    QFETCH( QDate, initialDate );&lt;br /&gt;
    QFETCH( QTestEventList, events );&lt;br /&gt;
    QFETCH( QDate, finalDate );&lt;br /&gt;
&lt;br /&gt;
    QDateEdit dateEdit( initialDate );&lt;br /&gt;
&lt;br /&gt;
    events.simulate( &amp;amp;dateEdit);&lt;br /&gt;
&lt;br /&gt;
    QCOMPARE( dateEdit.date(), finalDate );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
QTEST_MAIN(testDateEdit)&lt;br /&gt;
#include &amp;quot;tutorial3a.moc&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example is pretty much the same as the previous version, up to line 25. In line 26, we create a QTestEventList. We add events to the list in lines 27 and 28 - note that we don't specify the widget we are calling them on at this stage. In line 30, we simulate each event on the widget. If we had multiple widgets, we could call simulate using the same set of events. &lt;br /&gt;
&lt;br /&gt;
Lines 31 to 34 are as per the previous example. &lt;br /&gt;
&lt;br /&gt;
We create another list in lines 35 to 37, although this time we are using addKeyClick and addKeyClicks instead of adding mouse events. Note that an event list can contain combinations of mouse and keyboard events - it just didn't make sense in this test to have such a combination. We use the second list at line 38, and check the results in line 39. &lt;br /&gt;
&lt;br /&gt;
You can also build lists of events in data driven testing as well, as shown in lines 41 to 70. The key difference is that instead of fetching a QString in each row, we are fetching a QTestEventList. This requires that we add a column of QTestEventList, rather than QString (see line 45). At lines 47 to 50, we create a list of events. At line 52 we add those events to the applicable row. We create a second list at lines 54 to 56, and add that second list to the applicable row in line 58. &lt;br /&gt;
&lt;br /&gt;
We fetch the events in line 65, and use them in line 68. If we had multiple widgets, then we could use the same event list several times.&lt;br /&gt;
&lt;br /&gt;
==Tutorial 4 - Testing for failure and avoiding tests==&lt;br /&gt;
&lt;br /&gt;
Under some conditions, it is impossible to avoid tests failing. In this section, we'll see how to deal with these cases. &lt;br /&gt;
&lt;br /&gt;
===Skipping tests===&lt;br /&gt;
&lt;br /&gt;
Where a test doesn't make sense to run (for example, if the required test files aren't available, or the feature is architecture or operating system dependent), the cleanest solution is to skip the test. &lt;br /&gt;
&lt;br /&gt;
Tests are skipped using the QSKIP macro. QSKIP takes two arguments - a label string that should be used to describe why the test is being skipped, and a enumerated constant that controls how much of the test is skipped. If you pass SkipSingle, and the test is data driven, then only the current row is skipped. If you pass SkipAll and the test is data driven, then all following rows are skipped. If the test is not data driven, then it doesn't matter which one is used. &lt;br /&gt;
&lt;br /&gt;
You can see how QSKIP works in the example below:&lt;br /&gt;
&lt;br /&gt;
'''Example 15. Unit test showing skipped tests'''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
void testDate::testSkip_data()&lt;br /&gt;
{&lt;br /&gt;
    QTest::addColumn&amp;lt;int&amp;gt;(&amp;quot;val1&amp;quot;);&lt;br /&gt;
    QTest::addColumn&amp;lt;int&amp;gt;(&amp;quot;val2&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    QTest::newRow(&amp;quot;1&amp;quot;) &amp;lt;&amp;lt; 1 &amp;lt;&amp;lt; 1;&lt;br /&gt;
    QTest::newRow(&amp;quot;2&amp;quot;) &amp;lt;&amp;lt; 1 &amp;lt;&amp;lt; 2;&lt;br /&gt;
    QTest::newRow(&amp;quot;3&amp;quot;) &amp;lt;&amp;lt; 3 &amp;lt;&amp;lt; 3;&lt;br /&gt;
    QTest::newRow(&amp;quot;5&amp;quot;) &amp;lt;&amp;lt; 5 &amp;lt;&amp;lt; 5;&lt;br /&gt;
    QTest::newRow(&amp;quot;4&amp;quot;) &amp;lt;&amp;lt; 4 &amp;lt;&amp;lt; 5;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void testDate::testSkip()&lt;br /&gt;
{&lt;br /&gt;
    QFETCH(int, val1);&lt;br /&gt;
    QFETCH(int, val2);&lt;br /&gt;
&lt;br /&gt;
    if ( val2 == 2 ) &lt;br /&gt;
        QSKIP(&amp;quot;Two isn't good, not doing it&amp;quot;, SkipSingle);&lt;br /&gt;
    if ( val1 == 5 )&lt;br /&gt;
        QSKIP(&amp;quot;Five! I've had enough, bailing here&amp;quot;, SkipAll);&lt;br /&gt;
    QCOMPARE( val1, val2 );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Example 16. Output of unit test showing skipped tests'''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ ./tutorial4 testSkip -v2&lt;br /&gt;
********* Start testing of testDate *********&lt;br /&gt;
Config: Using QTest library 4.1.0, Qt 4.1.0-snapshot-20051107&lt;br /&gt;
INFO   : testDate::initTestCase() entering&lt;br /&gt;
PASS   : testDate::initTestCase()&lt;br /&gt;
INFO   : testDate::testSkip() entering&lt;br /&gt;
INFO   : testDate::testSkip(1) COMPARE()&lt;br /&gt;
   Loc: [tutorial4.cpp(82)]&lt;br /&gt;
SKIP   : testDate::testSkip(2) Two isn't good, not doing it&lt;br /&gt;
   Loc: [tutorial4.cpp(79)]&lt;br /&gt;
INFO   : testDate::testSkip(3) COMPARE()&lt;br /&gt;
   Loc: [tutorial4.cpp(82)]&lt;br /&gt;
SKIP   : testDate::testSkip(5) Five! I've had enough, bailing here&lt;br /&gt;
   Loc: [tutorial4.cpp(81)]&lt;br /&gt;
PASS   : testDate::testSkip()&lt;br /&gt;
INFO   : testDate::cleanupTestCase() entering&lt;br /&gt;
PASS   : testDate::cleanupTestCase()&lt;br /&gt;
Totals: 3 passed, 0 failed, 2 skipped&lt;br /&gt;
********* Finished testing of testDate *********&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
from the verbose output, you can see that the test was run on the first and third rows. The second row wasn't run because of the QSKIP call with a SkipSingle argument. Similarly, the fourth and fifth rows weren't run because the fourth row triggered a QSKIP call with a SkipAll argument. &lt;br /&gt;
&lt;br /&gt;
Also note that the test didn't fail, even though there were two calls to QSKIP. Conceptually, a skipped test is a test that didn't make sense to run for test validity reasons, rather than a test that is valid but will fail because of bugs or lack of features in the code being tested. &lt;br /&gt;
&lt;br /&gt;
===Handling expected failures===&lt;br /&gt;
&lt;br /&gt;
If you have valid tests, but the code that you are testing doesn't pass them, then ideally you fix the code you are testing. However sometimes that isn't possible in the time that you have available, or because of a need to avoid binary incompatible changes. In this case, it is undesirable to delete or modify the unit tests - it is better to flag the test as &amp;quot;expected to fail&amp;quot;, using the QEXPECT_FAIL macro. An example of this is shown below: &lt;br /&gt;
&lt;br /&gt;
'''Example 17. Unit test showing expected failures'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code cppqt n&amp;gt;&lt;br /&gt;
void testDate::testExpectedFail()&lt;br /&gt;
{&lt;br /&gt;
    QEXPECT_FAIL(&amp;quot;&amp;quot;, &amp;quot;1 is not 2, even for very large 1&amp;quot;, Continue);&lt;br /&gt;
    QCOMPARE( 1, 2 );&lt;br /&gt;
    QCOMPARE( 2, 2 );&lt;br /&gt;
&lt;br /&gt;
    QEXPECT_FAIL(&amp;quot;&amp;quot;, &amp;quot;1 is not 2, even for very small 2&amp;quot;, Abort);&lt;br /&gt;
    QCOMPARE( 1, 2 );&lt;br /&gt;
    // The next line will not be run, because we Abort on previous failure&lt;br /&gt;
    QCOMPARE( 3, 3 );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Example 18. Output of unit test showing expected failures'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ ./tutorial4/tutorial4 testExpectedFail -v2&lt;br /&gt;
********* Start testing of testDate *********&lt;br /&gt;
Config: Using QTest library 4.1.0, Qt 4.1.0-snapshot-20051107&lt;br /&gt;
INFO   : testDate::initTestCase() entering&lt;br /&gt;
PASS   : testDate::initTestCase()&lt;br /&gt;
INFO   : testDate::testExpectedFail() entering&lt;br /&gt;
INFO   : testDate::testExpectedFail() Compared values are not the same&lt;br /&gt;
   Actual (1): 1&lt;br /&gt;
   Expected (2): 2&lt;br /&gt;
   Loc: [tutorial4.cpp(41)]&lt;br /&gt;
XFAIL  : testDate::testExpectedFail() 1 is not 2, even for very large 1&lt;br /&gt;
   Loc: [tutorial4.cpp(41)]&lt;br /&gt;
INFO   : testDate::testExpectedFail() COMPARE()&lt;br /&gt;
   Loc: [tutorial4.cpp(42)]&lt;br /&gt;
INFO   : testDate::testExpectedFail() Compared values are not the same&lt;br /&gt;
   Actual (1): 1&lt;br /&gt;
   Expected (2): 2&lt;br /&gt;
   Loc: [tutorial4.cpp(45)]&lt;br /&gt;
XFAIL  : testDate::testExpectedFail() 1 is not 2, even for very small 2&lt;br /&gt;
   Loc: [tutorial4.cpp(45)]&lt;br /&gt;
PASS   : testDate::testExpectedFail()&lt;br /&gt;
INFO   : testDate::cleanupTestCase() entering&lt;br /&gt;
PASS   : testDate::cleanupTestCase()&lt;br /&gt;
Totals: 3 passed, 0 failed, 0 skipped&lt;br /&gt;
********* Finished testing of testDate *********&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As you can see from the verbose output, we expect a failure from each time we do a QCOMPARE( 1, 2);. In the first call to QEXPECT_FAIL, we use the Continue argument, so the rest of the tests will still be run. However in the second call to QEXPECT_FAILwe use the Abort and the test bails at this point. Generally it is better to use Continue unless you have a lot of closely related tests that would each need a QEXPECT_FAIL entry. &lt;br /&gt;
&lt;br /&gt;
Also note that tests that are marked as expected failures are not considered to be failures, so the test function above is considered to be a pass. &lt;br /&gt;
&lt;br /&gt;
If a test that is marked to be an expected failure, and it unexpectedly passes, then that is flagged as an error, as shown below: &lt;br /&gt;
&lt;br /&gt;
'''Example 19. Unit test showing unexpected pass'''&lt;br /&gt;
&amp;lt;code cppqt n&amp;gt;&lt;br /&gt;
void testDate::testUnexpectedPass()&lt;br /&gt;
{&lt;br /&gt;
    QEXPECT_FAIL(&amp;quot;&amp;quot;, &amp;quot;1 is not 2, even for very large 1&amp;quot;, Continue);&lt;br /&gt;
    QCOMPARE( 1, 1 );&lt;br /&gt;
    QCOMPARE( 2, 2 );&lt;br /&gt;
&lt;br /&gt;
    QEXPECT_FAIL(&amp;quot;&amp;quot;, &amp;quot;1 is not 2, even for very small 2&amp;quot;, Abort);&lt;br /&gt;
    QCOMPARE( 1, 1 );&lt;br /&gt;
    QCOMPARE( 3, 3 );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Example 20. Output of unit test showing unexpected pass'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ ./tutorial4/tutorial4 testUnexpectedPass -v2&lt;br /&gt;
********* Start testing of testDate *********&lt;br /&gt;
Config: Using QTest library 4.1.0, Qt 4.1.0-snapshot-20051107&lt;br /&gt;
INFO   : testDate::initTestCase() entering&lt;br /&gt;
PASS   : testDate::initTestCase()&lt;br /&gt;
INFO   : testDate::testUnexpectedPass() entering&lt;br /&gt;
INFO   : testDate::testUnexpectedPass() COMPARE()&lt;br /&gt;
   Loc: [tutorial4.cpp(53)]&lt;br /&gt;
XPASS  : testDate::testUnexpectedPass() COMPARE()&lt;br /&gt;
   Loc: [tutorial4.cpp(53)]&lt;br /&gt;
INFO   : testDate::testUnexpectedPass() COMPARE()&lt;br /&gt;
   Loc: [tutorial4.cpp(54)]&lt;br /&gt;
INFO   : testDate::testUnexpectedPass() COMPARE()&lt;br /&gt;
   Loc: [tutorial4.cpp(57)]&lt;br /&gt;
XPASS  : testDate::testUnexpectedPass() COMPARE()&lt;br /&gt;
   Loc: [tutorial4.cpp(57)]&lt;br /&gt;
INFO   : testDate::cleanupTestCase() entering&lt;br /&gt;
PASS   : testDate::cleanupTestCase()&lt;br /&gt;
Totals: 2 passed, 2 failed, 0 skipped&lt;br /&gt;
********* Finished testing of testDate *********&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The effect of unexpected passes on the running of the test is controlled by the second argument to QEXPECT_FAIL. If the argument is Continue and the test unexpectedly passes, then the rest of the test function will be run. If the argument is Abort, then the test will stop.&lt;br /&gt;
&lt;br /&gt;
===Checking debug messages and warnings===&lt;br /&gt;
&lt;br /&gt;
If you are testing border cases, you will likely run across the case where some kind of message will be produced using the qDebug or qWarning functions. Where a test produces a debug or warning message, that message will be logged in the test output (although it will still be considered a pass unless some other check fails), as shown in the example below: &lt;br /&gt;
&lt;br /&gt;
Example 21. Unit test producing warning and debug messages&lt;br /&gt;
&amp;lt;code cppqt n&amp;gt;&lt;br /&gt;
void testDate::testQdebug()&lt;br /&gt;
{&lt;br /&gt;
    qWarning(&amp;quot;warning&amp;quot;);&lt;br /&gt;
    qDebug(&amp;quot;debug&amp;quot;);&lt;br /&gt;
    qCritical(&amp;quot;critical&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
'''Example 22. Output of unit test producing warning and debug messages'''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ ./tutorial4 testQdebug&lt;br /&gt;
********* Start testing of testDate *********&lt;br /&gt;
Config: Using QTest library 4.1.0, Qt 4.1.0-snapshot-20051107&lt;br /&gt;
PASS   : testDate::initTestCase()&lt;br /&gt;
QWARN  : testDate::testQdebug() warning&lt;br /&gt;
QDEBUG : testDate::testQdebug() debug&lt;br /&gt;
QSYSTEM: testDate::testQdebug() critical&lt;br /&gt;
PASS   : testDate::testQdebug()&lt;br /&gt;
PASS   : testDate::cleanupTestCase()&lt;br /&gt;
Totals: 3 passed, 0 failed, 0 skipped&lt;br /&gt;
********* Finished testing of testDate *********&lt;br /&gt;
&amp;lt;/code&amp;gt;        &lt;br /&gt;
&lt;br /&gt;
Note that while this example produces the debug and warning messages within the test function (testQdebug), those messages would normally be propagated up from the code being tested. However the source of the messages does not make any difference to how they are handled. &lt;br /&gt;
&lt;br /&gt;
If your test needs include either a clean output, or verification that appropriate messages are generated, then you will probably need the QtTest::ignoreMessage function. &lt;br /&gt;
&lt;br /&gt;
{{Tip|'''Note:''' The ignoreMessage function can be used to ignore a message, however it might be clearer to think of this function as checking for the presence of an expected message. In particular, it is a test failure if you call ignoreMessage and the message is not generated.}}&lt;br /&gt;
&lt;br /&gt;
An example of how ignoreMessage works is shown below. &lt;br /&gt;
&lt;br /&gt;
'''Example 23. Example of using ignoreMessage'''&lt;br /&gt;
&amp;lt;code cppqt n&amp;gt;&lt;br /&gt;
void testDate::testValidity()&lt;br /&gt;
{&lt;br /&gt;
    QTest::ignoreMessage(QtWarningMsg, &amp;quot;validity warning&amp;quot;);&lt;br /&gt;
    qWarning(&amp;quot;validity warning&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void testDate::testValiditi()&lt;br /&gt;
{&lt;br /&gt;
    QTest::ignoreMessage(QtWarningMsg, &amp;quot;validity warning&amp;quot;);&lt;br /&gt;
    qWarning(&amp;quot;validiti warning&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &lt;br /&gt;
'''Example 24. Output of ignoreMessage example'''&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ ./tutorial4 testValidity testValiditi&lt;br /&gt;
********* Start testing of testDate *********&lt;br /&gt;
Config: Using QTest library 4.1.0, Qt 4.1.0-snapshot-20051107&lt;br /&gt;
PASS   : testDate::initTestCase()&lt;br /&gt;
PASS   : testDate::testValidity()&lt;br /&gt;
QWARN  : testDate::testValiditi() validiti warning&lt;br /&gt;
INFO   : testDate::testValiditi() Did not receive message: &amp;quot;validity warning&amp;quot;&lt;br /&gt;
FAIL!  : testDate::testValiditi() Not all expected messages were received&lt;br /&gt;
PASS   : testDate::cleanupTestCase()&lt;br /&gt;
Totals: 3 passed, 1 failed, 0 skipped&lt;br /&gt;
********* Finished testing of testDate *********&lt;br /&gt;
&amp;lt;/code&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
Note that the warning message in testDate::testValidity has been &amp;quot;swallowed&amp;quot; by the the call to ignoreMessage. &lt;br /&gt;
&lt;br /&gt;
By contrast, the warning message in testDate::testValiditi still causes a warning to be logged, because the ignoreMessage call does not match the text in the warning message. In addition, because a we expected a particular warning message and it wasn't received, the testDate::testValiditi test function fails.&lt;br /&gt;
&lt;br /&gt;
==Tutorial 5: Testing Qt slots and signals==&lt;br /&gt;
&lt;br /&gt;
An important part of Qt programming is the use of signals and slots. This section covers the support for testing of these features. &lt;br /&gt;
&lt;br /&gt;
{{Tip|'''Note:''' If you are not familiar with Qt signals and slots, you probably should review the introduction to this feature provided in your Qt documentation. It is also available at http://doc.trolltech.com/latest/signalsandslots.html. You also might like to review Tutorial 5 in your Qt documentation. This tutorial is also available at http://doc.trolltech.com/latest/tutorial-t5.html.}}&lt;br /&gt;
&lt;br /&gt;
===Testing slots===&lt;br /&gt;
&lt;br /&gt;
Testing slots is very easy, because a slot is just a specially annotated method. You can call slots just like any other method you'd like to test, as shown below: &lt;br /&gt;
&lt;br /&gt;
'''Example 25. QLabel test code, showing testing of a couple of slots'''&lt;br /&gt;
&amp;lt;code cppqt n&amp;gt;&lt;br /&gt;
#include &amp;lt;QtTest&amp;gt;&lt;br /&gt;
#include &amp;lt;QtCore&amp;gt;&lt;br /&gt;
#include &amp;lt;QtGui&amp;gt;&lt;br /&gt;
&lt;br /&gt;
class testLabel: public QObject&lt;br /&gt;
{&lt;br /&gt;
    Q_OBJECT&lt;br /&gt;
private slots:&lt;br /&gt;
    void testChanges();&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void testLabel::testChanges()&lt;br /&gt;
{&lt;br /&gt;
    QLabel label;&lt;br /&gt;
&lt;br /&gt;
    // setNum() is a QLabel slot, but we can just call it like any&lt;br /&gt;
    // other method.&lt;br /&gt;
    label.setNum( 3 );&lt;br /&gt;
    QCOMPARE( label.text(), QString(&amp;quot;3&amp;quot;) );&lt;br /&gt;
&lt;br /&gt;
    // clear() is also a slot.&lt;br /&gt;
    label.clear();&lt;br /&gt;
    QVERIFY( label.text().isEmpty() );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
QTEST_MAIN(testLabel)&lt;br /&gt;
#include &amp;quot;tutorial5.moc&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Testing signals===&lt;br /&gt;
Testing of signals is a little more difficult than testing of slots, however Qt offers a very useful class called QSignalSpy that helps a lot. &lt;br /&gt;
&lt;br /&gt;
{{qt|QSignalSpy}} is a class provided with Qt that allows you to record the signals that have been emitted from a particular QObject subclass object. You can then check that the right number of signals have been emitted, and that the right kind of signals were emitted. You can find more information on the QSignalSpy class in your Qt documentation.&lt;br /&gt;
&lt;br /&gt;
An example of how you can use QSignalSpy to test a class that has signals is shown below. &lt;br /&gt;
&lt;br /&gt;
'''Example 26. QCheckBox test code, showing testing of signals'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code cppqt n&amp;gt;&lt;br /&gt;
#include &amp;lt;QtTest&amp;gt;&lt;br /&gt;
#include &amp;lt;QtCore&amp;gt;&lt;br /&gt;
#include &amp;lt;QtGui&amp;gt;&lt;br /&gt;
&lt;br /&gt;
class testCheckBox: public QObject&lt;br /&gt;
{&lt;br /&gt;
    Q_OBJECT&lt;br /&gt;
private slots:&lt;br /&gt;
    void testSignals();&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void testCheckBox::testSignals()&lt;br /&gt;
{&lt;br /&gt;
    // You don't need to use an object created with &amp;quot;new&amp;quot; for&lt;br /&gt;
    // QSignalSpy, I just needed it in this case to test the emission&lt;br /&gt;
    // of a destroyed() signal.&lt;br /&gt;
    QCheckBox *xbox = new QCheckBox;&lt;br /&gt;
&lt;br /&gt;
    // We are going to have two signal monitoring classes in use for&lt;br /&gt;
    // this test.&lt;br /&gt;
    // The first monitors the stateChanged() signal. &lt;br /&gt;
    // Also note that QSignalSpy takes a pointer to the object.&lt;br /&gt;
    QSignalSpy stateSpy( xbox, SIGNAL( stateChanged(int) ) );&lt;br /&gt;
    &lt;br /&gt;
    // Not strictly necessary, but I like to check that I have set up&lt;br /&gt;
    // my QSignalSpy correctly.&lt;br /&gt;
    QVERIFY( stateSpy.isValid() );&lt;br /&gt;
&lt;br /&gt;
    // Now we check to make sure we don't have any signals already&lt;br /&gt;
    QCOMPARE( stateSpy.count(), 0 );&lt;br /&gt;
&lt;br /&gt;
    // Here is a second monitoring class - this one for the&lt;br /&gt;
    // destroyed() signal.&lt;br /&gt;
    QSignalSpy destroyedSpy( xbox, SIGNAL( destroyed() ) );&lt;br /&gt;
    QVERIFY( destroyedSpy.isValid() );&lt;br /&gt;
&lt;br /&gt;
    // A sanity check to verify the initial state&lt;br /&gt;
    // This also shows that you can mix normal method checks with&lt;br /&gt;
    // signal checks.&lt;br /&gt;
    QCOMPARE( xbox-&amp;gt;checkState(), Qt::Unchecked );&lt;br /&gt;
&lt;br /&gt;
    // Shouldn't already have any signals&lt;br /&gt;
    QCOMPARE( destroyedSpy.count(), 0 );&lt;br /&gt;
&lt;br /&gt;
    // If we change the state, we should get a signal.&lt;br /&gt;
    xbox-&amp;gt;setCheckState( Qt::Checked );&lt;br /&gt;
    QCOMPARE( stateSpy.count(), 1 );&lt;br /&gt;
&lt;br /&gt;
    xbox-&amp;gt;setCheckState( Qt::Unchecked );&lt;br /&gt;
    QCOMPARE( stateSpy.count(), 2 );&lt;br /&gt;
&lt;br /&gt;
    xbox-&amp;gt;setCheckState( Qt::PartiallyChecked );&lt;br /&gt;
    QCOMPARE( stateSpy.count(), 3 );&lt;br /&gt;
&lt;br /&gt;
    // If we destroy the object, the signal should be emitted.&lt;br /&gt;
    delete xbox;&lt;br /&gt;
&lt;br /&gt;
    // So the count of objects should increase.&lt;br /&gt;
    QCOMPARE( destroyedSpy.count(), 1 );&lt;br /&gt;
&lt;br /&gt;
    // We can also review the signals that we collected&lt;br /&gt;
    // QSignalSpy is really a QList of QLists, so we take the first&lt;br /&gt;
    // list, which corresponds to the arguments for the first signal&lt;br /&gt;
    // we caught.&lt;br /&gt;
    QList&amp;lt;QVariant&amp;gt; firstSignalArgs = stateSpy.takeFirst();&lt;br /&gt;
    // stateChanged() only has one argument - an enumerated type (int)&lt;br /&gt;
    // So we take that argument from the list, and turn it into an integer.&lt;br /&gt;
    int firstSignalState = firstSignalArgs.at(0).toInt();&lt;br /&gt;
    // We can then check we got the right kind of signal.&lt;br /&gt;
    QCOMPARE( firstSignalState, static_cast&amp;lt;int&amp;gt;(Qt::Checked) );&lt;br /&gt;
&lt;br /&gt;
    // check the next signal - note that takeFirst() removes from the list&lt;br /&gt;
    QList&amp;lt;QVariant&amp;gt; nextSignalArgs = stateSpy.takeFirst();&lt;br /&gt;
    // this shows another way of fudging the argument types&lt;br /&gt;
    Qt::CheckState nextSignalState = (Qt::CheckState)nextSignalArgs.at(0).toInt();&lt;br /&gt;
    QCOMPARE( nextSignalState, Qt::Unchecked );&lt;br /&gt;
&lt;br /&gt;
    // and again for the third signal&lt;br /&gt;
    nextSignalArgs = stateSpy.takeFirst();&lt;br /&gt;
    nextSignalState = (Qt::CheckState)nextSignalArgs.at(0).toInt();&lt;br /&gt;
    QCOMPARE( nextSignalState, Qt::PartiallyChecked );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
QTEST_MAIN(testCheckBox)&lt;br /&gt;
#include &amp;quot;tutorial5a.moc&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first 11 lines are essentially unchanged from previous examples that we've seen. Line 15 creates the object that will be tested - as noted in the comments in lines 12-14, the only reason that I'm creating it with new is because I need to delete it in line 45 to cause the destroyed() signal to be emitted. &lt;br /&gt;
&lt;br /&gt;
Line 20 sets up the first of our two QSignalSpy instances. The one in line 20 monitors the stateChanged(int) signal, and the one in line 29 monitors the destroyed() signal. If you get the name or signature of the signal wrong (for example, if you use stateChanged() instead of stateChanged(int)), then this will not be caught at compile time, but will result in a runtime failure. You can test if things were set up correctly using the isValid(), as shown in lines 24 and 30. &lt;br /&gt;
&lt;br /&gt;
As shown in line 34, there is no reason why you cannot test normal methods, signals and slots in the same test. &lt;br /&gt;
&lt;br /&gt;
Line 38 changes the state of the object under test, which is supposed to result in a stateChanged(int) signal being emitted. Line 39 checks that the number of signals increases from zero to one. Lines 40 and 41 repeat the process, and again in lines 42 and 43. &lt;br /&gt;
&lt;br /&gt;
Line 45 deletes the object under test, and line 47 tests that the destroyed() signal has been emitted. &lt;br /&gt;
&lt;br /&gt;
For signals that have arguments (such as our stateChanged(int) signal), you may also wish to check that the arguments were correct. You can do this by looking at the list of signal arguments. Exactly how you do this is fairly flexible, however for simple tests like the one in the example, you can manually work through the list using takeFirst() and check that each argument is correct. This is shown in line 52, 55 and 57 for the first signal. The same approach is shown in lines 59, 61 and 62 for the second signal, and the in lines 64 to 66 for the third signal. For a more complex set of tests, you may wish to apply some data driven techniques. &lt;br /&gt;
&lt;br /&gt;
{{Tip|'''Note:''' You should be aware that, for some class implementations, you may need to return control to the event loop to have signals emitted. If you need this, try using the {{qt|QTest}}::qWait() function.}}&lt;br /&gt;
&lt;br /&gt;
==Tutorial 6: Integrating with CMake==&lt;br /&gt;
&lt;br /&gt;
The KDE4 build tool is [http://www.cmake.org CMake], and I assume that you are familiar with the use of CMake. If not, you should review the [[Development/Tutorials/CMake|CMake Tutorial]] first.&lt;br /&gt;
&lt;br /&gt;
CMake offers quite good support for unit testing, and QTestLib tests can be easily integrated into any CMake build system.&lt;br /&gt;
&lt;br /&gt;
=== Configuring for Testing ===&lt;br /&gt;
&lt;br /&gt;
Tests are not built by default - you have to enable the test system, and build the tests.&lt;br /&gt;
&lt;br /&gt;
You enable tests by adding an '''ENABLE_TESTING()''' line to the top of your CMakeLists.txt file.&lt;br /&gt;
&lt;br /&gt;
In some configurations, there may be a build system option to turn on (or off) the compilation of tests. At this stage, you have to enable the '''BUILD_TESTING''' option in KDE4 modules, however this may go away in the near future, as later version of CMake can build the test applications on demand.&lt;br /&gt;
&lt;br /&gt;
If the tests are still not building, you might want to issue make buildtests in tests directory.&lt;br /&gt;
&lt;br /&gt;
=== Adding Tests ===&lt;br /&gt;
&lt;br /&gt;
You add a single test to the list of all tests that can be run by using &lt;br /&gt;
'''ADD_TEST''', which takes a number of arguments:&lt;br /&gt;
* The first argument is a display name for the test. This is required.&lt;br /&gt;
* The second argument is the name of the executable to be run (including the path to that executable, if required). This is required.&lt;br /&gt;
* Any following arguments are passed to the executable. These are optional, and are usually omitted for QTestLib tests.&lt;br /&gt;
&lt;br /&gt;
Note that '''ADD_TEST''' does nothing if '''ENABLE_TESTING()''' has not been run.&lt;br /&gt;
&lt;br /&gt;
When choosing a display name, you should adopt a similar convention to the existing tests (e.g. in kdelibs/kdecore, all the display names start with kdecore-, which makes it easy to find the failing test if you run all the tests in kdelibs). If there are no existing tests, using a submodule prefix is probably a good idea.&lt;br /&gt;
&lt;br /&gt;
The executable doesn't need to be something you build, but it will be for QTestLib, and many other tests. Remember that you need to specify the path, so this normally looks something like &amp;quot;${EXECUTABLE_OUTPUT_PATH}/testapp&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== KDE4 CMake Recipe for QTestLib ===&lt;br /&gt;
&lt;br /&gt;
If you are working in a KDE4 environment, then it is pretty easy to get CMake set up to build and run a test on demand.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
set( kwhatevertest_SRCS kwhateverest.cpp )&lt;br /&gt;
&lt;br /&gt;
kde4_add_unit_test( kwhatevertest&lt;br /&gt;
  TESTNAME ksubmodule-kwhatevertest&lt;br /&gt;
  ${kwhatevertest_SRCS}&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
target_link_libraries( kwhatevertest&lt;br /&gt;
  ${KDE4_KDECORE_LIBS}&lt;br /&gt;
  ${QT_QTTEST_LIBRARY}&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You are meant to replace &amp;quot;kwhatevertest&amp;quot; with the name of your test application. The target_link_libraries() line will need to contain whatever libraries are needed for the feature you are testing, so if it is a GUI feature, you'll likely need to use &amp;quot;${KDE4_KDEUI_LIBS}.&lt;br /&gt;
&lt;br /&gt;
=== Running the Tests ===&lt;br /&gt;
To run all tests, you can just &amp;quot;make test&amp;quot;. This will work through each of the tests that have been added (at any lower level) using '''kde4_add_unit_test''', provided that you have '''include(KDE4Defaults)''' in your CMakeLists.txt.&lt;br /&gt;
&lt;br /&gt;
This is equivalent to running the &amp;quot;ctest&amp;quot; executable with no arguments. If you want finer grained control over which tests are run or the output format, you can use additional arguments. These are explained in the ctest man page (&amp;quot;man ctest&amp;quot; on a *nix system, or run &amp;quot;ctest --help-full&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
To run a single test, use '''./tutorial1.shell''' rather than just '''./tutorial1''', this will make it use the locally-built version of the shared libraries you're testing, rather than the installed ones.&lt;br /&gt;
&lt;br /&gt;
=== Further Reading ===&lt;br /&gt;
&lt;br /&gt;
Chapter 8 of the [http://www.kitware.com/products/cmakebook.html  CMake Book] provides a detailed description of how to do testing with CMake. Also see Appendix B for more on CTest and the special commands you can use.&lt;br /&gt;
&lt;br /&gt;
Various sections of the CMake Wiki, especially [http://www.cmake.org/Wiki/CMake_Testing_With_CTest CTest testing]&lt;br /&gt;
&lt;br /&gt;
==Tutorial 7: Integrating with qmake==&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==Tutorial 8: XML output==&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
==Tutorial 9: KDE specifics ==&lt;br /&gt;
For KDE specific enhancements see [http://api.kde.org/4.0-api/kdelibs-apidocs/kdecore/html/qtest__kde_8h.html API dox]&lt;br /&gt;
&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Alternative tools for testing ==&lt;br /&gt;
&lt;br /&gt;
There are a range of alternative testing approaches that can&lt;br /&gt;
be used either with unit tests, or as an addition to the unit tests. &lt;br /&gt;
&lt;br /&gt;
===Static tests===&lt;br /&gt;
As noted in the introduction, unit tests are dynamic tests - they exercise the compiled code. Static tests are slightly different - they look for problems in source code, rather than making sure that the object code runs correctly.&lt;br /&gt;
&lt;br /&gt;
Static test tools tend to identify completely different types of problems to unit tests, and you should seek to use them both. &lt;br /&gt;
&lt;br /&gt;
For more information on using static tests, see [[../Code Checking|the Code Checking tutorial]].&lt;br /&gt;
&lt;br /&gt;
===Coverage tools and valgrind===&lt;br /&gt;
TODO &lt;br /&gt;
&lt;br /&gt;
=== GUI application testing - Squish and KDExecutor ===&lt;br /&gt;
[http://www.froglogic.de/pg?id=Products&amp;amp;category=squish&amp;amp;sub=overview&amp;amp;subsub=overview Squish] by [http://www.froglogic.de froglogic] and [http://www.kdab.net/?page=products&amp;amp;sub=kdexecutor KDExecutor] by [http://www.kdab.net Klarälvdalens Datakonsult (KDAB)] are commercial tools that facilitate GUI testing.&lt;br /&gt;
&lt;br /&gt;
==Conclusions==&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
[[Category:KDE4]]&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects</id>
		<title>Projects</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects"/>
				<updated>2009-05-26T22:15:50Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: Add a link to BugSquad&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Projects}}&lt;br /&gt;
{{note|KDE TechBase Translators: The Projects part is rather a scratchpad for arbitrary projects. It contains texts like IRC logs and rough ideas. '''It probably does not make sense to translate this'''.}}&lt;br /&gt;
{| style=&amp;quot;margin: 1em 2.5% 0 2.5%; padding: 0 5px;&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Klogo-official-crystal.svg|noframe|left|40px]] ||&lt;br /&gt;
;[http://www.kde.org/getinvolved Get Involved with KDE]&lt;br /&gt;
:General information for getting involved with KDE projects. Includes a mentor directory for many projects.&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Klogo-official-crystal.svg|noframe|left|40px]] ||&lt;br /&gt;
;[[/Release_Team|KDE Release Team]]&lt;br /&gt;
:The KDE Release Team.&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Klogo-official-crystal.svg|noframe|left|40px]] ||&lt;br /&gt;
;[[/kdelibs|KDE Core Libraries]]&lt;br /&gt;
:For the core developers working on the kdelibs module.&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Klogo-official-crystal.svg|noframe|left|40px]] ||&lt;br /&gt;
;[[/Documentation|KDE Documentation Project]]&lt;br /&gt;
:Creating and maintaining KDE documentation.&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Action_book2.svg|noframe|left|40px]] ||&lt;br /&gt;
;[[/Edu|KDE Education Project]] &lt;br /&gt;
:Developing educational software for KDE.&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Kdegameslogo_40.png|noframe|left|40px]] ||&lt;br /&gt;
;[[/Games|KDE Games Project]] &lt;br /&gt;
:Developing desktop's games for KDE.&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Action_mail_generic.svg|noframe|left|40px]] ||&lt;br /&gt;
;[[/PIM|KDE PIM Project]]&lt;br /&gt;
:KDE Personal Information Management.&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Klogo-official-crystal.svg|noframe|left|40px]] ||&lt;br /&gt;
;[[/kde.org|kde.org]] &lt;br /&gt;
:Information around the *.kde.org websites.&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Action_filequickprint.svg|noframe|left|40px]] ||&lt;br /&gt;
;[[/KDEPrint|KDEPrint]]&lt;br /&gt;
:Printing related information for KDE.&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Action_pencil.svg|noframe|left|40px]] ||&lt;br /&gt;
;[http://wiki.koffice.org KOffice.org]&lt;br /&gt;
:Developing an Office suite based on KDE.&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:logo_oxygen.png|noframe|left|40px]] ||&lt;br /&gt;
;[[/Oxygen|The Oxygen Project]] &lt;br /&gt;
:Artwork for KDE4.&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Klogo-official-crystal.svg|noframe|left|40px]] ||&lt;br /&gt;
;[[/Promo|KDE Promotion]]&lt;br /&gt;
:Promoting KDE and conference organization.&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Action_world.svg|noframe|left|40px]] ||&lt;br /&gt;
;[[/Partners|Partner Program]]&lt;br /&gt;
:KDE partner program targetting ISVs.&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Plasma_logo.jpg|noframe|left|40px]] ||&lt;br /&gt;
;[[/Plasma|Plasma]]&lt;br /&gt;
:Plasma project. A new way to desktop. (Yes, it's now a verb)&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Marble.png|noframe|left|40px]] ||&lt;br /&gt;
;[[/Marble|Marble]]&lt;br /&gt;
:Marble Desktop Globe - Can You Feel The Earth Spinning?&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Decibel.png|noframe|left|40px]] ||&lt;br /&gt;
;[[/Decibel|Decibel]]&lt;br /&gt;
:Decibel - Realtime communications framework&lt;br /&gt;
|-&lt;br /&gt;
| ||&lt;br /&gt;
;[[Contribute/Bugsquad|KDE BugSquad]]&lt;br /&gt;
:The KDE BugSquad keeps track of incoming bugs in KDE software, and goes through old bugs.&lt;br /&gt;
|-&lt;br /&gt;
| ||&lt;br /&gt;
;[[/Summer_of_Code|Summer of Code Projects]]&lt;br /&gt;
:Information on Summer of Code projects and prospects related to KDE&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Kopete.svg|noframe|left|40px]] ||&lt;br /&gt;
;[[/Kopete|Kopete]]&lt;br /&gt;
:Kopete, the KDE Instant Messaging program.&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:superkaramba.png|noframe|left|40px]] ||&lt;br /&gt;
;[[/SuperKaramba|SuperKaramba]]&lt;br /&gt;
:SuperKaramba is a tool that allows you to easily create interactive eye-candy on your KDE desktop.&lt;br /&gt;
|-&lt;br /&gt;
| ||&lt;br /&gt;
;[[/Okular|Okular]]&lt;br /&gt;
:Okular, the unified document viewer.&lt;br /&gt;
|-&lt;br /&gt;
| ||&lt;br /&gt;
;[[/Gwenview|Gwenview]]&lt;br /&gt;
:Gwenview, the image viewer.&lt;br /&gt;
|-&lt;br /&gt;
| ||&lt;br /&gt;
;[[/Widgets and Classes|Widgets &amp;amp; Classes]]&lt;br /&gt;
:Widgets and classes that are not in kdelibs but which you may find useful.&lt;br /&gt;
|-&lt;br /&gt;
| ||&lt;br /&gt;
;[[/English Breakfast Network|KDE Code Quality (EBN)]]&lt;br /&gt;
: The English Breakfast Network and associated tools dedicated to KDE Quality, including: KDE API Documentation Validation, User Documentation Validation, Source Code Checking, ...&lt;br /&gt;
|-&lt;br /&gt;
| ||&lt;br /&gt;
;[[/KDE Research|KDE Research]]&lt;br /&gt;
: Project and community for everyone who is interested in contributing to (funded) research projects with(in) the KDE community.&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:KDE-Mac.png|noframe|left|40px]] ||&lt;br /&gt;
;[[/KDE on Mac OS X|KDE on Mac OS X]]&lt;br /&gt;
: KDE libraries and applications on Mac OS X.&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Konqi-win.png|38px]] ||&lt;br /&gt;
;[[/KDE on Windows|KDE on Windows]]&lt;br /&gt;
: KDE libraries and applications on MS Windows.&lt;br /&gt;
|-&lt;br /&gt;
| ||&lt;br /&gt;
;[[/KDE on Solaris|KDE on Solaris]]&lt;br /&gt;
: KDE libraries and applications on Sun Microsystems Solaris and OpenSolaris.&lt;br /&gt;
|-&lt;br /&gt;
| ||&lt;br /&gt;
;[[/KDE on FreeBSD|KDE on FreeBSD]]&lt;br /&gt;
: KDE libraries and applications on FreeBSD and other BSDs.&lt;br /&gt;
|-&lt;br /&gt;
| ||&lt;br /&gt;
;[[/kdesu|kdesu]]&lt;br /&gt;
: Considerations and coordination to make kdesu work well with several backends.&lt;br /&gt;
|-&lt;br /&gt;
| ||&lt;br /&gt;
;[[/KioFuse|KioFuse]]&lt;br /&gt;
: Insert KIO resources (remote, archived or compressed files) into the root filesystem hierarchy.&lt;br /&gt;
|-&lt;br /&gt;
| ||&lt;br /&gt;
;[[/SystemSettings|System Settings]]&lt;br /&gt;
: Development on the System Settings configuration tool.&lt;br /&gt;
|-&lt;br /&gt;
| ||&lt;br /&gt;
;[[/KWin|KWin]]&lt;br /&gt;
: The KDE Window Manager.&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:kdeutils-logo.svg|noframe|left|40px]] ||&lt;br /&gt;
;[[/Utils|KDE Utilities Team]]&lt;br /&gt;
:For the developers working on the kdeutils module.&lt;br /&gt;
|-&lt;br /&gt;
| ||&lt;br /&gt;
;[[/extragearReleases|Extragear Releases]]&lt;br /&gt;
: A current list of what extragear apps are to be released in sync with the core KDE release schedule.&lt;br /&gt;
|-&lt;br /&gt;
| ||&lt;br /&gt;
;[[/Related|Related Projects]]&lt;br /&gt;
: Projects which are related to KDE in any way, as dependencies or build tools.&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:knetworkmanager.png|noframe|left|40px]] ||&lt;br /&gt;
;[[/Network_Management|Network Management]]&lt;br /&gt;
: Development on Solid Networking, KNetworkManager applet and configuration tool.&lt;br /&gt;
|-&lt;br /&gt;
| ||&lt;br /&gt;
;[[/D-Bus-WS|D-Bus Web Service Proxy]]&lt;br /&gt;
: Fusion of D-Bus services and web services.&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Hisc-apps-kget.svg|noframe|left|40px]]||&lt;br /&gt;
;[[/KGet|KGet]]&lt;br /&gt;
: KGet, a KDE Downloader&lt;br /&gt;
|-&lt;br /&gt;
| ||&lt;br /&gt;
;[[/WebKit|WebKit (webkitkde)]]&lt;br /&gt;
: Project which aims to integrate WebKit (QtWebKit) into KDE.&lt;br /&gt;
|-&lt;br /&gt;
| ||&lt;br /&gt;
;[[/Maemo|Maemo]]&lt;br /&gt;
: Project for porting KDE to the Maemo platform.&lt;br /&gt;
|-&lt;br /&gt;
| ||&lt;br /&gt;
;[[/Kdetoys | Kdetoys]]&lt;br /&gt;
: The Kdetoys project&lt;br /&gt;
|-&lt;br /&gt;
| ||&lt;br /&gt;
;[[/KGLEngine2D | KGLEngine2D]]&lt;br /&gt;
: KGLEngine2D is a framework designed to greatly simplify the development of reach multimedia applications on KDE enabled platforms.&lt;br /&gt;
|-&lt;br /&gt;
| ||&lt;br /&gt;
;[[/Usability | KDE Usability project]]&lt;br /&gt;
: The KDE Usability Project is an initiative to apply usability principles and practices to the K Desktop Environment.&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Nepomuk_logo.png|noframe|left|40px]] ||&lt;br /&gt;
;[[/Nepomuk|Nepomuk]]&lt;br /&gt;
:Nepomuk Semantic Desktop project - Annotation/Indexing/Search/Linking&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.3_Feature_Plan</id>
		<title>Schedules/KDE4/4.3 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.3_Feature_Plan"/>
				<updated>2009-05-25T20:13:07Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* kdeutils */ Removed feature that was later removed from the code&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the 4.3 release.&lt;br /&gt;
&lt;br /&gt;
See also:&lt;br /&gt;
* [[Schedules/KDE4/4.3 Release Schedule]]&lt;br /&gt;
* [[Schedules/KDE4/4.3 Release Goals]]&lt;br /&gt;
* [[Schedules/KDE4/4.2 Feature Plan]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Legend:&lt;br /&gt;
* todo =&amp;gt; not started yet&lt;br /&gt;
* in-progress =&amp;gt; started, but not completed yet&lt;br /&gt;
* done =&amp;gt; completed&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Other =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|Akonadi|Various Akonadi related items can be found here http://techbase.kde.org/Projects/PIM/Akonadi#Scheduled_for_KDE_4.3_.2F_Akonadi_1.2|kde-pim@kde.org|Akonadi Developers}}&lt;br /&gt;
{{FeatureInProgress|KPackageKit|Pushing in KPackageKit (dependant on PolicyKit integration)|dantti85-dev@yahoo.com.br|Daniel}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdelibs =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|KLocale|Investigate adding Currency Code and currency minor units support based on ISO 4217 (http://en.wikipedia.org/wiki/ISO_4217).|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureDone|kdecore|Thread safety in ksycoca (KService, KMimeType etc.)|faure:AT:kde.org|David Faure}}&lt;br /&gt;
{{FeatureTodo|kdecore|Dynamic allocation of KDebug areas|faure:AT:kde.org|David Faure}}&lt;br /&gt;
{{FeatureInProgress|Sonnet|Implement language detection|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureInProgress|Sonnet|Integrate language detection with spellchecking|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureTodo|Sonnet|Integrate language detection with strigi|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureTodo|Sonnet|Grammar checking (at least for English)|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureInProgress|kio|Move KTcpSocket to kio and make it public; some cleanup required|ahartmetz@gmail.com|Andreas Hartmetz}}&lt;br /&gt;
{{FeatureTodo|KCalendarSystem|Add new astronomical calculation support classes to be used in kdelibs to build new astronomically based calendar systems, and in kdepim to build new version of libkholiday.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureTodo|KCalendarSystem|Add new calendar systems: Indian Civil (Saka), Ethiopean, Chinese, Pure Julian, Pure Gregorian, etc.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureDone|KDateTime|Provide simulation of system date/time for application testing.|djarvie:AT:kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureTodo|KDEPrint|If no file printing support in Qt4.5, migrate FilePrinter class from Okular to enable file printing for all apps via QPrinter.  To be discussed on k-c-d first.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureTodo|KDEPrint|Add framework for standard actions for 'Send to...' for e-mail, fax, etc by printing to PDF/PS.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureTodo|kdeui|entries to help menu and aboutdata pointing to UserBase entry and forum.kde.org|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|kdesu|Classes to help kde-apps open ports in the local firewall (via IPTables/IPFW, etc...)|tejas@gja.in|Tejas Dinkar}}&lt;br /&gt;
{{FeatureInProgress|katepart|Key mapping support for the vi input mode|ehamberg-hjå-gmail.com|Erlend Hamberg}}&lt;br /&gt;
{{FeatureTodo|katepart|Blockwise visual mode for the vi input mode|ehamberg-hjå-gmail.com|Erlend Hamberg}}&lt;br /&gt;
{{FeatureInProgress|katepart|Improve text objects in the vi input mode|ehamberg-hjå-gmail.com|Erlend Hamberg}}&lt;br /&gt;
{{FeatureTodo|katepart|Save registers and marks from the vi input mode|ehamberg-hjå-gmail.com|Erlend Hamberg}}&lt;br /&gt;
{{FeatureDone|kio|Fix D-Bus timeout in SlaveBase when calling kpasswdserver|lemma@confuego.org|Michael Leupold}}&lt;br /&gt;
{{FeatureInProgress|kdeui|Provide a class for detecting modifier keystrokes and locked key states|lemma@confuego.org|Michael Leupold}}&lt;br /&gt;
{{FeatureInProgress|khtml|CSS3 Web Fonts|germain@ebooksfrance.org|Germain Garand}}&lt;br /&gt;
{{FeatureTodo|khtml|support more properties from CSS3 Backgrounds and Borders module|germain@ebooksfrance.org|Fredrik Höglund and/or Germain Garand}}&lt;br /&gt;
{{FeatureInProgress|khtml|support more properties from CSS3 Text module|germain@ebooksfrance.org|Germain Garand}}&lt;br /&gt;
{{FeatureInProgress|solid|Smart card reader support|cblauvelt@gmail.com|Christopher Blauvelt}}&lt;br /&gt;
{{FeatureTodo|KEmoticons|emit a signal when the emoticon theme is changed|brandon.ml@gmail.com|Carlo Segato}}&lt;br /&gt;
{{FeatureTodo|KLocale|Per-language number formats, and exposing them to modification by user.|caslav.ilic@gmx.net|Chusslove Illich}}&lt;br /&gt;
{{FeatureInProgress|KLocale|Extension of date formats to cover many resolutions (month-year, day-month, etc.)|caslav.ilic@gmx.net|Chusslove Illich}}&lt;br /&gt;
{{FeatureDone|kfile|KDirSortFilterProxyModel: make it possible to not always sort folders first|frank78ac@googlemail.com|Frank Reininghaus}}&lt;br /&gt;
{{FeatureTodo|buildsystem|Add support for crosscompiling|neundorf@kde.org|Alexander Neundorf}}&lt;br /&gt;
{{FeatureInProgress|buildsystem|Add support for building parts of modules separately|neundorf@kde.org|Alexander Neundorf}}&lt;br /&gt;
{{FeatureInProgress|webkit|Move KDE integration of QtWebKit into kdelibs (but not KPart!)|uwolfer@kde.org|Urs Wolfer}}&lt;br /&gt;
{{FeatureTodo|Nepomuk|New Resource URI schema for Files (to better handle removable storage (parts in KDE Base)|dw@danielwinter.de|Daniel Winter}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-workspace =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |Non-Plasma, Non-KWin&lt;br /&gt;
{{FeatureTodo|Kxkb|Support for languages in keyboard layout descriptions|rysin:AT:kde.org|Andriy Rysin}}&lt;br /&gt;
{{FeatureDone|PolicyKit integration|Import PolicyKit-KDE from extragear|drf54321@gmail.com|Dario Freddi}}&lt;br /&gt;
{{FeatureDone|Solid Actions KCM|Import Solid actions KControl module from playground|ben@eclipse.endoftheinternet.org|Ben Cooksley}}&lt;br /&gt;
{{FeatureDone|KControl4|Import refactor of systemsettings with Tree and Icon view support|ben(at)eclipse(dot)endoftheinternet(dot)org|Ben Cooksley and Mathias Soeken}}&lt;br /&gt;
{{FeatureDone|KSysguard|Added GetHotNewStuff support|a@b.com|name}}&lt;br /&gt;
{{FeatureInProgress|KActiveEdges|Split active screen edges from KWin|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureDone|Solid Wicd Engine|Import Solid Wicd engine from github/playground|drf54321@gmail.com|Dario Freddi}}&lt;br /&gt;
{{FeatureDone|Klipper|Made klipper automatically find possible actions based on filename copied to clipboard|dimsuz@gmail.com|Dmitry Suzdalev}}&lt;br /&gt;
{{FeatureDone|Klipper|Improved action adding/editing workflow by implementing a special dialog for editing a certain action|dimsuz@gmail.com|Dmitry Suzdalev}}&lt;br /&gt;
{{FeatureTodo|Klipper|Make action popup unobtrusive by showing menu only when user clicks an icon in systray. Icon itself should change to indicate availability of some actions on current clipboard|dimsuz@gmail.com|Dmitry Suzdalev}}&lt;br /&gt;
{{FeatureTodo|Font Installer KCM |Use PolicyKit for installtion of system-wide fonts.|craig@kde.org|Craig Drummond}}&lt;br /&gt;
{{FeatureInProgress|Font Settings KCM|Improved GUI for configuring anti-aliasing settings|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KRunner&lt;br /&gt;
{{FeatureInProgress|Nepomuk/Location Runners|Open with and service menu actions|ryan.bitanga@gmail.com|Ryan Bitanga}}&lt;br /&gt;
{{FeatureTodo|KRunner|Simple adaptive search|ryan.bitanga@gmail.com|Ryan Bitanga}}&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |Plasma - Priority Features&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |Plasma&lt;br /&gt;
{{FeatureTodo|Now Playing data engine|Support for MPD|kde:AT:randomguy3.me.uk|Alex Merry}}&lt;br /&gt;
{{FeatureTodo|Now Playing applet|Better design in panels|kde:AT:randomguy3.me.uk|Alex Merry}}&lt;br /&gt;
{{FeatureDone|Classic Menu Launcher|Allow to configure what submenus should be displayed|mail:AT:dipe.org|Sebastian Sauer}}&lt;br /&gt;
{{FeatureDone|Classic Menu Launcher|Allow to change the displayed icon|mail:AT:dipe.org|Sebastian Sauer}}&lt;br /&gt;
{{FeatureDone|Classic Menu Launcher|Optional recently used applications and System Settings menu|mail:AT:dipe.org|Sebastian Sauer}}&lt;br /&gt;
{{FeatureDone|Classic Menu Launcher|KDE3-like menu titles|mail:AT:dipe.org|Christian Loose}}&lt;br /&gt;
{{FeatureDone|Classic Menu Launcher|Context menu for menu items|mail:AT:dipe.org|Christian Loose}}&lt;br /&gt;
{{FeatureInProgress|Reusable video widget|A widget in libplasma that can play video and audio|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|Message box|A message box shown as an overlay over plasmoids|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureTodo|Panel spacers|A way to add/manage spacers directly from the panel controller|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|Systemtray protocol|New systemtray protocol beginnings: daemon and systemtray widget part|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|Default theme|Air: new default Plasma theme|notmart@gmail.com|Marco Martin and Nuno Pinheiro}}&lt;br /&gt;
{{FeatureInProgress|screensaver|security constraints|chanika@gmail.com|Chani}}&lt;br /&gt;
{{FeatureDone|keyboard shortcuts|configuration|chanika@gmail.com|Chani}}&lt;br /&gt;
{{FeatureTodo|icon plasmoid|make it suck less|chanika@gmail.com|Chani}}&lt;br /&gt;
{{FeatureDone|desktop|make a plasmoid when I paste stuff|chanika@gmail.com|Chani}}&lt;br /&gt;
{{FeatureDone|extenders|Add grouping support to extenders|r.scheepmaker@student.utwente.nl|Rob Scheepmaker}}&lt;br /&gt;
{{FeatureDone|systemtray|Group multiple jobs and notifications|r.scheepmaker@student.utwente.nl|Rob Scheepmaker}}&lt;br /&gt;
{{FeatureDone|systemtray|Job completed notifications, providing an sensible action ('open file' etc)|r.scheepmaker@student.utwente.nl|Rob Scheepmaker}}&lt;br /&gt;
{{FeatureInProgress|Kickoff|Add multiple columns support to Kickoff|talvik@gmail.com|Luiz Felipe Talvik}}&lt;br /&gt;
{{FeatureDone|folderview|Show tooltips with large previews and file metadata when hovering icons|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureDone|folderview|Show a popup view with the folder contents when hovering a folder in the icon view|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureDone|folderview|Add menu items to the context menu for showing the applet browser, adding panels, locking the screen, logging out etc.|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureDone|folderview|Add menu items to the drop menu for creating applets and setting the wallpaper|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureDone|folderview|Optionally show the window list menu when middle clicking the containment|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureDone|folderview|Implement support for keyboard navigation|jhahoneyk@gmail.com|Shantanu Tushar Jha}}&lt;br /&gt;
{{FeatureTodo|folderview|Accessing sub folders as sub menus in the popup view when the applet is on the panel|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureTodo|folderview|Offer to create applets based on the mimetype when pasting URL's in the containment|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureDone|virus wallpaper|Move from playground to kdeplasma-addons and port to the new plasma::wallpaper|asraniel@fryx.ch|Beat Wolf}}&lt;br /&gt;
{{FeatureDone|Plasma|Add press-down feedback to folderview|haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureDone|Time DataEngine|Integrate solar position dataengine to time dataengine|damu@iki.fi|Petri Damstén}}&lt;br /&gt;
{{FeatureTodo|Time DataEngine|Moon position/phase data|damu@iki.fi|Petri Damstén}}&lt;br /&gt;
{{FeatureDone|Akonadi DataEngine|Move Akonadi dataengine to kdeplasma-addons|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureDone|Social Desktop Plasmoid|Plasmoid displaying contacts via OpenDesktop|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureInProgress|Knowledge base Plasmoid|Plasmoid for searching and dispaying results from Open Collaboration Services / OpenDesktop|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureTodo|Tool tips|Extend tool tips API|emdeck@gmail.com|Michał Dutkiewicz}}&lt;br /&gt;
{{FeatureInProgress|Theme System|Better fallback mechanisms for transparent panels/dialogs without composition|david.nolden.kdevelop@art-master.de|David Nolden}}&lt;br /&gt;
{{FeatureDone|Plasmaclock library|Context menu for fast copying date and time strings to clipboard|emdeck@gmail.com|Michał Dutkiewicz}}&lt;br /&gt;
{{FeatureInProgress|Plasmaclock/Calendar|Display various information on the calendar using kholiday/akonadi|?|?}}&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KWin - Core&lt;br /&gt;
{{FeatureTodo|KWin|Redesign KWin system settings GUI|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureDone|KWin|ARGB support for decorations|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureTodo|KWin|Window docking/quick tiling|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureTodo|KWin|Internal desktop layout/pager support|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureTodo|KWin|Non-composited Present Windows|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureDone|KWin|Tabbox improvements|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureTodo|KWin/Plasma|Toggle Compositing Plasmoid|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KWin - Desktop Effects&lt;br /&gt;
{{FeatureTodo|KWin|Expand present windows into other effects (E.g. Desktop Grid)|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureTodo|KWin|OpenGL 3 compatible Shaders|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureDone|KWin|Improved cube reflection|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureTodo|KWin|Add and remove desktops in grid effect|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureTodo|KWin|Desktop Thumnails in Pager Tooltips|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureTodo|KWin|Slide In/Out effect|hein@kde.org|Eike Hein}}&lt;br /&gt;
{{FeatureDone|KWin|Fade desktop effect (Desktop switcher)|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureDone|KWin|Highlight window effect|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureDone|KWin|SlideBack effect|michael_zanetti@gmx.net|Michael Zanetti}}&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KDM&lt;br /&gt;
{{FeatureTodo|KDM|Plasma wallpaper|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdepimlibs =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|Buildsystem|Require OpenLDAP (coordinate with the Windows team)|winter@kde.org|Allen Winter}}&lt;br /&gt;
{{FeatureDone|Buildsystem|Require Cyrus-SASL (coordinate with the Windows team)|winter@kde.org|Allen Winter}}&lt;br /&gt;
{{FeatureTodo|libkleopatraclient|New interface library for kleopatra uiserver clients|marc@kdab.net|Marc Mutz}}&lt;br /&gt;
{{FeatureDone|pimtextedit|New library around text edits, to provide support for inline images in the signature editor, among others|mcguire@kde.org|Thomas McGuire}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdenetwork =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|Kopete|UPnp Support|mattr@kde.org|Matt Rogers}}&lt;br /&gt;
{{FeatureDone|Kopete|Updated contact list interface (uses Qt 4 rather than Qt 3)|mattr@kde.org|Matt Rogers}}&lt;br /&gt;
{{FeatureTodo|Kopete|Update Kopete to better support Decibel|kopete-devel@kde.org|Kopete Developers}}&lt;br /&gt;
{{FeatureTodo|Kopete|Jabber Jingle video support|detlev.casanova@gmail.com|Detlev Casanova}}&lt;br /&gt;
{{FeatureTodo|Kopete|Jabber Jingle ICE support|detlev.casanova@gmail.com|Detlev Casanova}}&lt;br /&gt;
{{FeatureInProgress|Kopete|Contacts plasmoid|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Kopete|Rich text support for ICQ|kedgedev@gmail.com|Roman Jarosz}}&lt;br /&gt;
{{FeatureTodo|Kopete|Add support for urls to Bonjour plugin|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureInProgress|KGet|MultiSource-Downloading|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureTodo|KGet|Support mms://-protocol, see https://launchpad.net/libmms|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureTodo|KGet|MLDonkey-Plugin based on libkmldonkey|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureTodo|KGet|Advanced Details|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureInProgress|KRDC|NX support|gdavid.devel@gmail.com|David Gross}}&lt;br /&gt;
{{FeatureTodo|KRDC|Minimal-clutter mode to optimize screen real estate usage|gpothier@gmail.com|Guillaume Pothier}}&lt;br /&gt;
{{FeatureInProgress|Telepathy|Telepathy-specification compliant Account Manager using KWallet to store account data|grundleborg@googlemail.com|George Goldberg}}&lt;br /&gt;
{{FeatureInProgress|Telepathy|Account Editing UI for Telepathy|grundleborg@googlemail.com|George Goldberg}}&lt;br /&gt;
{{FeatureInProgress|Plasma|Network Manager Applet|wstephenson@kde.org|Will Stephenson}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdepim =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|Akonadi|Migration of contacts and calendar data from KResource to Akonadi ([http://techbase.kde.org/Projects/PIM/Akonadi#Scheduled_for_4.3 Details])|kde-pim@kde.org|Volker Krause, Kevin Krammer, Tobias Koenig}}&lt;br /&gt;
{{FeatureInProgress|Akregator|Support for syncing the feed list with Google Reader |osterfeld@kde.org|Frank Osterfeld}}&lt;br /&gt;
{{FeatureDone|[http://www.astrojar.org.uk/kalarm KAlarm]|Add export of alarms to a new calendar file|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|[http://www.astrojar.org.uk/kalarm KAlarm]|Allow configuration of default deferral time interval|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|[http://www.astrojar.org.uk/kalarm KAlarm]|Accept drag-and-drop of Todo entries to create a new alarm|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|[http://www.astrojar.org.uk/kalarm KAlarm]|Show command execution error indication in alarm list|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|[http://www.astrojar.org.uk/kalarm KAlarm]|Add option to spread alarm windows across screen|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|Akonadi|Google calendar and contacts resource|cavalcantii@gmail.com|Adenilson Cavalcanti}}&lt;br /&gt;
{{FeatureTodo|[http://www.astrojar.org.uk/kalarm KAlarm]|Port to Akonadi|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureTodo|[http://kblogger.pwsp.net KBlogger]|KBlogger, a blogging application|christian_weilbach@.web.de|Christian Weilbach}}&lt;br /&gt;
{{FeatureTodo|KBlogger|Port to use KRichTextEdit (Or KMEditor)|steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureInProgress|KContactManager|A new Akonadi-based address book to replace KAddressbook|tokoe@kde.org|Tobias Koenig}}&lt;br /&gt;
{{FeatureInProgress|Kjots| Create and port to akonadi model. |steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureTodo|Kjots| Add support for nepomuk including tagging, possibly storage, and linking. Also a nepomuk tag proxy model for representing the structure as tagged.|steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureInProgress|Kjots| Create plasmoid capable of showing the entire tree, or a single book.|steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureTodo|Kjots| Email KJots pages using default mail client ({{bug|124509}}. |steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureInProgress|Kleopatra|OpenPGP support|marc@kdab.net|Marc Mutz (Gpg4win)}}&lt;br /&gt;
{{FeatureDone|KMail|Add support for HTML images|yez@familieschepers.nl|Edwin Schepers}}&lt;br /&gt;
{{FeatureTodo|KMail|Use asynchronous Kleo|marc@kdab.net|Marc Mutz}}&lt;br /&gt;
{{FeatureTodo|KMail|Save metadata about attachments to Nepomuk when saving them|onurf@su.sabanciuniv.edu|Ismail Onur Filiz}}&lt;br /&gt;
{{FeatureTodo|KNode|Port to use KRichTextEdit (Or KMEditor)|steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureTodo|Kontact|Support for Kontact wide profiles|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureTodo|Kontact|Tip-of-the-Day summary|molkentin@kde.org|Daniel Molkentin}}&lt;br /&gt;
{{FeatureTodo|KOrganizer|Support for extended free-busy lists|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureInProgress|KPilot|Port old conduits to new base conduit architecture and KDE4/Qt4|jkasper@kde.org|Jason 'vanRijn' Kasper}}&lt;br /&gt;
{{FeatureInProgress|KPilot|Finish Keyring conduit, base conduit code and test cases, category syncing|jkasper@kde.org|Jason 'vanRijn' Kasper}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeutils =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|printer-applet|Restore feature parity with KDEPrint3 where possible.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureDone|Okteta|Add hash calculator tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureDone|Okteta|Show tooltip over bookmarks|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureDone|Okteta|Add filesystem browser tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureDone|Okteta|Add loaded documents tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureDone|Okteta|Add bookmark managing tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureDone|Okteta|Show selection range in status bar|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|kwalletmanager|Move kwalletmanager to the Model/View architecture and redesign the UI.|lemma@confuego.org|Michael Leupold}}&lt;br /&gt;
{{FeatureDone|kdelirc|Bring back kdelirc, the KDE frontend to the Linux Infrared Control system|michael_zanetti@gmx.net|Michael Zanetti}}&lt;br /&gt;
{{FeatureDone|ark|Improve support for pure gzip and bzip2 files (read only)|kubito@gmail.com|Raphael Kubo da Costa}}&lt;br /&gt;
{{FeatureDone|ark| Finish cliinterface  |haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureDone|ark| Add lots of more meaningful error messages  |haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureDone|ark| Add support for zip archives (cli-based, ie. info-zip) |haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureDone|ark| Make the mimetype selection dialog more user-friendly |kubito@gmail.com|Raphael Kubo da Costa}}&lt;br /&gt;
{{FeatureDone|ark| Make the file list obey KDE's mouse settings |kubito@gmail.com|Raphael Kubo da Costa}}&lt;br /&gt;
{{FeatureDone|KGpg| Port to new systray framework |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureTodo|KGpg| Clean up editor GUI and classes |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureTodo|KGpg| Make keyserver operations more flexible |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureDone|KGpg| Port key importing to be a transaction |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureDone|KGpg| Port keyserver query to be a transaction |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureDone|KGpg| Make &amp;amp;quot;import key&amp;amp;quot; also work with keyservers |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureDone|KGpg| Integrate solid to know when a online action (e.g. keyserver query) does not make sense |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureInProgress|KTimer| Redesign UI |zahl@transbay.net|A. L. Spehr}}&lt;br /&gt;
{{FeatureTodo|KTimer| Add hours and seconds to counter |zahl@transbay.net|A. L. Spehr}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebindings =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdegames =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|libkdegames|Convert old PNG based card decks to SVG, using embedded bitmaps were full vectorisation isn't possible.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Add Curse of the Mummy game (20 levels), contributed by Steve Mann.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Major rewrite, mainly of the game engine and editor.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|More accurate and reliable pause and resume.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureTodo|KGoldrunner|Save and reload at any instant in a game.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Record and replay games.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Run demos ... especially at startup or as hints for difficult levels.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureTodo|KGoldrunner|Hot-new-stuff support for themes and game sets.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureTodo|KGoldrunner|Integration of the Scavenger game (180 new levels) and its rule-set.  This would also involve allowing different grid dimensions for different games, as a feature of the new game engine.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureTodo|KGoldrunner|Better support for beginners, such as graphical cues for false bricks and hidden ladders, extra messages with &amp;quot;don't tell me this again&amp;quot;, etc.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|Killbots|Add a &amp;quot;vaporizer&amp;quot; action, similar to the &amp;quot;sonic screwdriver&amp;quot; found in Daleks.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureTodo|Kolf|Replace with Kolf 2 (please help!)|majewsky@gmx.net|Stefan Majewsky}}&lt;br /&gt;
{{FeatureDone|KPatience|Add a command line switch to manually launch a game of a certain type.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureDone|KPatience|Add an option to save the game state at shutdown to be automatically be restored on next run.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureDone|KPatience|Add the ability to return to the game selection screen after selecting a game.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureDone|KPatience|Add &amp;quot;Draw&amp;quot;, &amp;quot;Deal&amp;quot; and &amp;quot;Redeal&amp;quot; actions to those game types that support such methods of bring new cards into play.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureTodo|KsirK|rewrite AI code or at least correct most problems related in bug #170777. Volunteers wanted!|kleag@free.fr|Gaël de Chalendar}}&lt;br /&gt;
{{FeatureTodo|KsirK|Previous/Next in start new game as described in bug #170774|kleag@free.fr|Gaël de Chalendar}}&lt;br /&gt;
{{FeatureInProgress|KsirK|Polish the skin editor (doc, contextual help, ...)|kleag@free.fr|Gaël de Chalendar}}&lt;br /&gt;
{{FeatureTodo|KsirK|Boost playing over Jabber|kleag@free.fr|Gaël de Chalendar}}&lt;br /&gt;
{{FeatureTodo|KSpaceDuel|rewrite AI code|dirkrathlev@gmx.de|Dirk Rathlev}}&lt;br /&gt;
{{FeatureDone|KTron|Port and remake the KTron game for KDE 4.3|legolas@legolasweb.nl|Stas Verberkt}}&lt;br /&gt;
{{FeatureTodo|KSudoku|Import the new logic engine as a library|joselb@gmx.net|Johannes Bergmeier}}&lt;br /&gt;
{{FeatureTodo|KSudoku|Port KSudoku to the new engine|joselb@gmx.net|Johannes Bergmeier}}&lt;br /&gt;
{{FeatureTodo|KSudoku|Add interactive help|joselb@gmx.net|Johannes Bergmeier}}&lt;br /&gt;
{{FeatureDone|Bovo|Add new AI|pelladigabor@gmail.com|Pelladi Gabor}}&lt;br /&gt;
{{FeatureDone|Bovo|Computer thinking doesn't block the GUI|pelladigabor@gmail.com|Pelladi Gabor}}&lt;br /&gt;
{{FeatureTodo|libkdegames|Import KGGZ libraries from GGZ SVN|spillner@kde.org|Josef Spillner}}&lt;br /&gt;
{{FeatureInProgress|libkmahjongg|Introduce new tileset, Bamboo.|mw_triad@users.sourceforge.net|Matthew Woehlke}}&lt;br /&gt;
{{FeatureDone|KMahjongg|Add 70 additional levels contributed by users|piacentini at kde.org|Mauricio Piacentini}}&lt;br /&gt;
{{FeatureTodo|KMahjongg|Add start page with level selection|piacentini at kde.org|Mauricio Piacentini}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeadmin =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|KGrubEditor|Integrate KGrubEditor into KDE Admin http://sourceforge.net/projects/kgrubeditor. Approved by Nicolas Ternisien &amp;lt;nicolas.ternisien@gmail.com&amp;gt; |artemis_dot_fowl_dot_2007@gmail_dot_com|Konstantinos Smanis}}&lt;br /&gt;
{{FeatureTodo|Guidance|Port Guidance to KDE 4, and move it to KDE Admin http://www.simonzone.com/software/guidance/.|nicolas.ternisien@gmail.com|Nicolas Ternisien}}&lt;br /&gt;
{{FeatureTodo|system-config-printer-kde|Restore feature parity with KDEPrint3 where possible.|john@layt.net|john Layt, Jonathan Riddell}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdesdk =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|Lokalize|XLIFF support|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureInProgress|Lokalize|various Translation Memory enhancements|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureInProgress|Lokalize|Kross-based scripting|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureTodo|Lokalize|QA: glossary checklists|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureTodo|KAppTemplate|Add DBUS support in templates|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureDone|Umbrello|Replace all q3 widgets in the refactoring assistant|andi.fischer@hispeed.ch|Andi Fischer}}&lt;br /&gt;
{{FeatureInProgress|Umbrello|Merge in SoC qgraphicsview port branch|krishna.ggk@gmail.com|Gopala Krishna A}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeedu =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|KAlgebra|Export to MathML Presentation Markup|aleixpol@gmail.com|Aleix Pol}}&lt;br /&gt;
{{FeatureTodo|KAlgebra|Some integration with the new KFormula widget|aleixpol@gmail.com|Aleix Pol}}&lt;br /&gt;
{{FeatureInProgress|KAlgebra|Add ability to draw 3D plots in cylindrical and spherical coordinates.|orgyforever@gmail.com|Percy Camilo Triveño Aucahuasi}}&lt;br /&gt;
{{FeatureTodo|Kalzium|Port Kalzium's periodic table to use new QGraphicsView.|marcus@cryos.org|Marcus D. Hanwell}}&lt;br /&gt;
{{FeatureTodo|Kalzium|Separate compound viewer/editor application from Kalzium.|marcus@cryos.org|Marcus D. Hanwell}}&lt;br /&gt;
{{FeatureTodo|Kalzium|Remove the libavogadro snapshot, depend on libavogadro directly.|jacob@math.jussieu.fr|Benoit Jacob}}&lt;br /&gt;
{{FeatureTodo|Kalzium|Plasmoid to access Kalzium database|cniehaus@kde.org|Carsten Niehaus}}&lt;br /&gt;
{{FeatureTodo|KEduca|Rewrite of the classic test writing/taking application|matt@milliams.com|Matt Williams}}&lt;br /&gt;
{{FeatureTodo|KHangMan|Integrate an editor|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KHangMan|Plasmoid|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KHangMan|Theme manager|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|Kig|Properties dialog for objects.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Kig|Improve construction of bisect lines.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Kig|Improve feedback when constructing objects.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Kig|More geometric objects.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Kig|Script objects as macros (to be reused more than once).|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Kig|Improve the Cabri import filter.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Kig|Improve the new/edit script wizard.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|KLettres|Visual Indicator when letter is wrong|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KLettres|Number support|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KLettres|Theme manager|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KStars|Marble widget for Geolocation tool|mboquien@free.fr|Médéric Boquien}}&lt;br /&gt;
{{FeatureTodo|KStars|Better printed star charts|kstars@30doradus.org|Jason Harris}}&lt;br /&gt;
{{FeatureDone|KStars|Sync KStars time from device|mutlaqja@ikarustech.com|Jasem Mutlaq}}&lt;br /&gt;
{{FeatureTodo|KStars|Better rendering of comets/asteroids|kstars@30doradus.org|Jason Harris}}&lt;br /&gt;
{{FeatureTodo|KStars|Texture mapping of the skymap???|kstars@30doradus.org|Jason Harris}}&lt;br /&gt;
{{FeatureTodo|KStars|Improve Observing List Wizard|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Display Comet Magnitudes whenever possible|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Information links in-place for each technical term|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Tool to suggest star-hopping techniques???|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Extend conjunction tool to have one object unspecified, but have a genre of objects specified instead|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Extend conjunction tool to predict oppositions and occultations|prak902000@gmail.com|Prakash Mohan}}&lt;br /&gt;
{{FeatureTodo|KStars|Simulate Lunar Eclipses|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Simulate Satellites and Iridium Flares|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Social and Geographical Integration for KStars|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Merge SAC with NGC / IC as default catalog|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KTurtle|Optional rulers/grid for canvas units|piacentini@kde.org|Mauricio Piacentini}}&lt;br /&gt;
{{FeatureTodo|Marble|Export map to MxN pixel bitmap|inge@lysator.liu.se|Inge Wallin}}&lt;br /&gt;
{{FeatureInProgress|Marble|Bookmarks||Gaurav Gupta}}&lt;br /&gt;
{{FeatureInProgress|Marble|Planet Filter||Harshit Jain}}&lt;br /&gt;
{{FeatureInProgress|Marble|Time KML support||Harshit Jain}}&lt;br /&gt;
{{FeatureTodo|Marble|Support for MarbleWidget::setEnabled( bool )|inge@lysator.liu.se|Inge Wallin}}&lt;br /&gt;
{{FeatureTodo|Marble|Map Contents translation|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Editing GeoDataFeatures|ewoerner@kde.org|Eckhart Wörner}}&lt;br /&gt;
{{FeatureTodo|Marble|Update Map (&amp;quot;F5&amp;quot;)|jensmh@gmx.de|Jens-Michael Hoffmann}}&lt;br /&gt;
{{FeatureInProgress|Marble|Layer Management Class|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Plugin architecture for map layers|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Extending GeoPainter|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Marble Runners|hdevalence@gmail.com|Henry de Valence}}&lt;br /&gt;
{{FeatureInProgress|Marble|GeoClue Integration |ewoerner@kde.org|Eckhart Wörner}}&lt;br /&gt;
{{FeatureInProgress|Marble|Routing |jensmh@gmx.de|Jens-Michael Hoffmann}}&lt;br /&gt;
{{FeatureInProgress|Marble|More map providers (WMS?) |jensmh@gmx.de|Jens-Michael Hoffmann}}&lt;br /&gt;
{{FeatureInProgress|Marble|Winkel Triple projection / equivalent |hdevalence@gmail.com|Henry de Valence}}&lt;br /&gt;
{{FeatureInProgress|Marble|Marble WorldClock Plasmoid|hdevalence@gmail.com|Henry de Valence}}&lt;br /&gt;
{{FeatureDone|Marble|Qt-Version settings dialog|hdevalence@gmail.com|Bastian Holst}}&lt;br /&gt;
{{FeatureInProgress|Marble|Panoramio Support||Bastian Holst}}&lt;br /&gt;
{{FeatureInProgress|Marble|Twitter Plugin||Shashank Singh}}&lt;br /&gt;
{{FeatureInProgress|Marble|TimeZone Support|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureDone|Marble|Support for other planets and the moon|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureDone|Marble|DGML2 Support|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureDone|Marble|Support for imperial units|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureDone|Marble|Graticule plugin|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|MeasureTool plugin|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureDone|Marble|Port authors list from the Qt-About dialog to the KDE-About dialog|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Basic KML support|ps_ml@gmx.de|Patrick Spendrin}}&lt;br /&gt;
{{FeatureInProgress|Marble|GeoData Model/View Visualization|ps_ml@gmx.de|Patrick Spendrin}}&lt;br /&gt;
{{FeatureInProgress|Marble|More generic projection support|inge@lysator.liu.se|Inge Wallin}}&lt;br /&gt;
{{FeatureInProgress|Marble|Network plugins|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureDone|Marble|Geolocation plugins|ewoerner@kde.org|Eckhart Wörner}}&lt;br /&gt;
{{FeatureInProgress|Parley|Declensions|frederik.gladhorn@kdemail.net|Frederik Gladhorn}}&lt;br /&gt;
{{FeatureTodo|Step|Improve GUI for creating softbody|ksvladimir@gmail.com|Vladimir Kuznetsov}}&lt;br /&gt;
{{FeatureTodo|Step|Use common constraints handling code for collisions|ksvladimir@gmail.com|Vladimir Kuznetsov}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|JuK|Remove Qt/KDE3 support lib requirements|michael.pyne@kdemail.net|Michael Pyne}}&lt;br /&gt;
{{FeatureTodo|JuK|Allow setting covers directly from URLs supported by KIO - drag/drop already allows this however|michael.pyne@kdemail.net|Michael Pyne}}&lt;br /&gt;
{{FeatureDone|JuK|Use XCOMPOSITE real transparency when available for the track announcement popup|michael.pyne@kdemail.net|Michael Pyne}}&lt;br /&gt;
{{FeatureTodo|JuK|Allow disabling crossfade|michael.pyne@kdemail.net|Michael Pyne}}&lt;br /&gt;
{{FeatureInProgress|KMix|Allow arbitrary ordering of controls|esken@kde.org|Christian Esken}}&lt;br /&gt;
{{FeatureTodo|KMix|Nicer OSD (icon, mute state)|esken@kde.org|Christian Esken}}&lt;br /&gt;
{{FeatureTodo|KMix|Amend Keyboard Shortcuts|esken@kde.org|Christian Esken}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeaccessibility =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdegraphics =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|Okular|Generator for Mobipocket format|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureDone|strigi|Thumbnailer and analyzer for Mobipocket format|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureDone|strigi|Analyzer for epub format|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureTodo|Okular|Sound annotations.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Okular|Link annotations.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Okular|Caret annotations.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Okular|Support .snp and .emf file formats|bradh@kde.org|Brad Hards}}&lt;br /&gt;
{{FeatureTodo|Okular|Synctex support.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Okular|Rich-text for annotations text.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|kruler|More ruler shapes.|msoeken_at_tzi_dot_de|Mathias Soeken}}&lt;br /&gt;
{{FeatureDone|kruler|Configurable shortcuts.|msoeken_at_tzi_dot_de|Mathias Soeken}}&lt;br /&gt;
{{FeatureTodo|kruler|DBUS Interface.|msoeken_at_tzi_dot_de|Mathias Soeken}}&lt;br /&gt;
{{FeatureDone|kruler|Transparent background and opaque drawing of the lines and numbers (Qt 4.5).|msoeken_at_tzi_dot_de|Mathias Soeken}}&lt;br /&gt;
{{FeatureInProgress|gwenview|Folder view.|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureInProgress|gwenview|Make thumbnail bar more customizable (orientation, number of rows/columns).|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureInProgress|gwenview|Add back video support.|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureInProgress|gwenview|Improve history handling.|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureDone|libksane|Add &amp;quot;Auto selection&amp;quot; after preview.|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureInProgress|Okular|Less intrusive search with find bar.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Okular|Better detection of where the Okular KPart is embedded into, and adapt the UI accordingly (sidebar, actions, etc).|pino@kde.org|Pino Toscano}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-runtime =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|drkonqi|DrKonqi new dialog UI + Guided crash reporting tool|andresbajotierra@gmail.com|Dario Andres|}}&lt;br /&gt;
{{FeatureDone|drkonqi|Backtrace parsing and rating|gkiagiad@csd.uoc.gr|George Kiagiadakis|}}&lt;br /&gt;
{{FeatureDone|drkonqi|DrKonqi native english texts + guide|andresbajotierra@gmail.com|Dario Andres|}}&lt;br /&gt;
{{FeatureDone|kpasswdserver|Fix D-Bus timeout in kpasswdserver using an async API|lemma@confuego.org|Michael Leupold|}}&lt;br /&gt;
{{FeatureDone|network:/ KIOSlave|Move to kdebase/runtime|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-apps =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|konq_thumbnails|Basic thumbnail support for KHTMLPart views(almost finished, now cleanup code)|yinshuiboy@gmail.com|Siyuan Cao}}&lt;br /&gt;
{{FeatureTodo|konq_thumbnails|thumbnail support for all KonqFrame|yinshuiboy@gmail.com|Siyuan Cao}}&lt;br /&gt;
{{FeatureTodo|konq_thumbnails|more thumbnail page styles and customization|yinshuiboy@gmail.com|Siyuan Cao}}&lt;br /&gt;
{{FeatureTodo|konqueror|&amp;quot;Places&amp;quot; sidebar to replace KDE3's &amp;quot;media:/&amp;quot;|kdedevel_at_etotheipiplusone_dot_com|Simon St James}}&lt;br /&gt;
{{FeatureTodo|konqueror|Move Dolphin's Treeview to libkonq so that it can be used in Konqueror|kdedevel_at_etotheipiplusone_dot_com|Simon St James}}&lt;br /&gt;
{{FeatureTodo|konqueror|Move Dolphin's Information panel to libkonq so that it can be used in Konqueror|kdedevel_at_etotheipiplusone_dot_com|Simon St James}}&lt;br /&gt;
{{FeatureInProgress|dolphin|Matthias's Audio/ Video preview in Information panel|kdedevel_at_etotheipiplusone_dot_com|Simon St James}}&lt;br /&gt;
{{FeatureTodo|dolphin|Allow to configure and download service menus|peter.penz@gmx.at|Peter Penz}}&lt;br /&gt;
{{FeatureInProgress|dolphin|Nepomuk search integration|peter.penz@gmx.at|Peter Penz}}&lt;br /&gt;
{{FeatureInProgress|dolphin|Use Nepomuk to receive the meta data for the Information panel|peter.penz@gmx.at|Peter Penz}}&lt;br /&gt;
{{FeatureDone|dolphin|Let user choose if folders are always shown first or not|frank78ac@googlemail.com|Frank Reininghaus}}&lt;br /&gt;
{{FeatureInProgress|konsole|Get a working DBus interface|kurt.hindenburg@gmail.com|Kurt Hindenburg}}&lt;br /&gt;
{{FeatureTodo|konsole|Redesign manage profile dialog to allow users to sort profiles|kurt.hindenburg@gmail.com|Kurt Hindenburg}}&lt;br /&gt;
{{FeatureTodo|konsole|Allow window/terminal size to be set in profiles|kurt.hindenburg@gmail.com|Kurt Hindenburg}}&lt;br /&gt;
{{FeatureInProgress|libkonq|Add support in for pluginbased Drag'n'drop popup menus (and in my case, an &amp;quot;extract here&amp;quot; menu on dragged archives)|haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureInProgress|konqueror|History browser as independent from sidebar, and improved (different grouping style, sorting, etc).|pino@kde.org|Pino Toscano}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeplasma-addons =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Video Plasmoid|a media player widget complete with a basic dbus interface|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureDone|System Load Viewer|A tiny monitor for CPU, RAM and swap usage (known as System Monitor in KDE3)|dhaumann@kde.org|Dominik Haumann}}&lt;br /&gt;
{{FeatureDone|Comic Plasmoid|Clean up the config-dialog|mat69@gmx.net|Matthias Fuchs}}&lt;br /&gt;
{{FeatureTodo|Comic Plasmoid|Port to popup applet|mat69@gmx.net|Matthias Fuchs}}&lt;br /&gt;
{{FeatureDone|PoTD Engine|Import PoTD engine - is in kdereview|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureDone|Metadata Engine|Import Metadata engine - is in kdereview|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|Frame Plasmoid|Display Picture Metadata|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|Frame Plasmoid|Add url as setting|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|Frame Plasmoid|Add buttons Next/Previous/pause in slideshow mode|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureDone|wallpapers|Mandelbrot fractal wallpaper plugin|jacob.benoit.1@gmail.com|Benoît Jacob}}&lt;br /&gt;
{{FeatureInProgress|Weather Wallpaper|Add user-defined wallpapers|echidnaman@kubuntu.org|Jonathan Thomas}}&lt;br /&gt;
{{FeatureInProgress|wallpapers|Marble desktop globe wallpaper|sasch.pe@gmx.de|Sascha Peilicke}}&lt;br /&gt;
{{FeatureTodo|FileWatcher|Highlighting support|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureTodo|Now Playing|New widget UI|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureTodo|Life|Colors|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureTodo|Life|Fading|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Timer|Restore countdown after a shutdown|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Timer|Improved notifications|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureDone|Timer|Hide seconds|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureTodo|Unit converter|Improved widget UI|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|plasmaweather lib|Make plasmaweather library and use it in lcd weather, weather and weather wallpaper|damu@iki.fi|Petri Damstén}}&lt;br /&gt;
{{FeatureDone|LCD Weather|Tooltip|damu@iki.fi|Petri Damstén}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeartwork =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|screensavers|port to wallpaper packages|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Utils/Ark</id>
		<title>Projects/Utils/Ark</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Utils/Ark"/>
				<updated>2009-05-25T04:54:40Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: Update page, adding some ideas for 4.4&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ark Plans ==&lt;br /&gt;
=== KDE 4.4 ===&lt;br /&gt;
See the [[Schedules/KDE4/4.4_Feature_Plan#kdeutils|feature plan]] for KDE 4.4.&lt;br /&gt;
&lt;br /&gt;
* Add a proper way to display a notice to the user when autosubfolder is enabled in the extraction dialog&lt;br /&gt;
* Make single/double-clicking an entry open the file in the default launcher instead of using the internal previewer (which shall become a context menu option)&lt;br /&gt;
&lt;br /&gt;
== Personal TODOs ==&lt;br /&gt;
=== Harald ===&lt;br /&gt;
* Formalize the dbus communication protocol and implement it in dolphin&lt;br /&gt;
* BUG: After opening file from web, automatic subfolder detection name is confused&lt;br /&gt;
* BUG: extractiondialog is confused by &amp;quot;/&amp;quot; in subfolder name&lt;br /&gt;
* Check if we want the two last patches in bug #155220&lt;br /&gt;
* Revert the single folder label&lt;br /&gt;
&lt;br /&gt;
== Misc ==&lt;br /&gt;
=== Some use cases for commandline options ===&lt;br /&gt;
* Extracting a single file into the current directory, automatically creating a subfolder&lt;br /&gt;
ark --batch --autosubfolder lala.tar.gz&lt;br /&gt;
* Same, with a dialog&lt;br /&gt;
ark --batch --autosubfolder --dialog lala.tar.gz&lt;br /&gt;
* Extract lots of archives into a single directory&lt;br /&gt;
ark --batch --destination /tmp lala1.zip lala2.tar lala3.rar&lt;br /&gt;
* Same, but use a subfolder&lt;br /&gt;
ark --batch --destination /tmp --subfolder mystuff lala1.zip lala2.tar lala3.rar&lt;br /&gt;
* Extract lots of archives into separate directories&lt;br /&gt;
ark --batch --destination /tmp --autosubfolder lala1.zip lala2.tar lala3.rar&lt;br /&gt;
* Into a single subfolder&lt;br /&gt;
ark --batch --subfolder lala.tar.gz&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Utils</id>
		<title>Projects/Utils</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Utils"/>
				<updated>2009-05-25T04:41:52Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* Utilities */ Put the link to the Ark article in the title&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Projects/Utils}}&lt;br /&gt;
&lt;br /&gt;
== About kdeutils ==&lt;br /&gt;
&lt;br /&gt;
The module kdeutils is a compilation of various desktop utilities.&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
*[http://utils.kde.org/ Homepage of the KDE Utilities]&lt;br /&gt;
*[mailto:kde-utils-devel@kde.org kde-utils-devel@kde.org] mailing list (for developers): [https://mail.kde.org/mailman/listinfo/kde-utils-devel subscribe], [http://lists.kde.org/?l=kde-utils-devel&amp;amp;r=1&amp;amp;w=2 archives]&lt;br /&gt;
&lt;br /&gt;
== Utilities ==&lt;br /&gt;
&lt;br /&gt;
=== [[Projects/Utils/Ark|Ark]] ===&lt;br /&gt;
[[Image:ark-logo.png|noframe|right|40px]]&lt;br /&gt;
&lt;br /&gt;
Archiving tool&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== kcalc ===&lt;br /&gt;
[[Image:kcalc-logo.svg|noframe|right|40px]]&lt;br /&gt;
&lt;br /&gt;
Scientific calculator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== kcharselect ===&lt;br /&gt;
[[Image:kcharselect-logo.svg|noframe|right|40px]]&lt;br /&gt;
&lt;br /&gt;
Select special characters from any fonts and put them into the clipboard.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== kdessh ===&lt;br /&gt;
&amp;lt;!-- [[Image:kdessh-logo.svg|noframe|right|40px]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Front end to ssh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== kdf ===&lt;br /&gt;
[[Image:kdf-logo.png|noframe|right|40px]]&lt;br /&gt;
&lt;br /&gt;
Like 'df', a graphical free disk space viewer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== kfloppy ===&lt;br /&gt;
[[Image:kfloppy-logo.png|noframe|right|40px]]&lt;br /&gt;
&lt;br /&gt;
Format a floppy disk with this program.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== kgpg ===&lt;br /&gt;
[[Image:kgpg-logo.png|noframe|right|40px]]&lt;br /&gt;
&lt;br /&gt;
Graphical GPG frontend.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ktimer ===&lt;br /&gt;
[[Image:ktimer-logo.png|noframe|right|40px]]&lt;br /&gt;
&lt;br /&gt;
Execute programs after some time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== kwallet ===&lt;br /&gt;
[[Image:kwalletmanager-logo.svg|noframe|right|40px]]&lt;br /&gt;
&lt;br /&gt;
KDE wallet management tool&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Utils/kwallet|Developer information]]&lt;br /&gt;
&lt;br /&gt;
=== okteta ===&lt;br /&gt;
[[Image:okteta-logo.png|noframe|right|40px]]&lt;br /&gt;
&lt;br /&gt;
Binary file editor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== printer-applet ===&lt;br /&gt;
[[Image:printer-applet-logo.png|noframe|right|40px]]&lt;br /&gt;
&lt;br /&gt;
A system tray utility that shows current print jobs, shows printer warnings and errors and shows when printers that have been plugged in for the first time are being auto-configured by hal-cups-utils.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SuperKaramba ===&lt;br /&gt;
[[Image:superkarama-logo.svg|noframe|right|40px]]&lt;br /&gt;
&lt;br /&gt;
Version of Karamba with python scripting&lt;br /&gt;
&lt;br /&gt;
* [[Projects/Utils/SuperKaramba|SuperKaramba]]&lt;br /&gt;
&lt;br /&gt;
=== sweeper ===&lt;br /&gt;
[[Image:sweeper-logo.png|noframe|right|40px]]&lt;br /&gt;
&lt;br /&gt;
Cleans unwanted traces the user leaves on the system.&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Contribute/Bugsquad</id>
		<title>Contribute/Bugsquad</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Contribute/Bugsquad"/>
				<updated>2009-05-23T16:17:26Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* Articles */ Added a link to bugzilla's status descriptions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tip| {{:Contribute/Bugsquad/NextBugDay}} }}&lt;br /&gt;
&lt;br /&gt;
==What is BugSquad?==&lt;br /&gt;
&lt;br /&gt;
The '''KDE BugSquad''' keeps track of incoming bugs in KDE software, and goes through old bugs. We verify that a bug exists, and is reproducible, and that the reporter has given enough information. When applicable, we write testcases. Our end goal is to help developers notice valid bugs quicker, and to save their time.&lt;br /&gt;
&lt;br /&gt;
You do not need any programming knowledge to be in the Bugsquad, and it is a great way to give practical support to the KDE community. If you are just starting to learn programming, it is a great way to gain familiarity with the components.&lt;br /&gt;
&lt;br /&gt;
==Bug Days==&lt;br /&gt;
&lt;br /&gt;
We have regular days where we pick a software package and look through all the old Bugzilla bugs to see if they are still valid. Sort of a Bugzilla cleaning day. &lt;br /&gt;
&lt;br /&gt;
{{:Contribute/Bugsquad/NextBugDay}}&lt;br /&gt;
&lt;br /&gt;
The results of all past bug days can be found [[/BugDays|here]].&lt;br /&gt;
&lt;br /&gt;
==How to help==&lt;br /&gt;
Read the [[/Guide|guide]] and join us for one of our [[#Bug_Days|bug days]]. We meet on IRC in the #kde-bugs channel on irc.freenode.org. You can easily get started by having your questions answered there, and having someone guide you as to general bug triaging philosophy. Someone in IRC will usually be able to help you. Although we do sleep sometimes!&lt;br /&gt;
&lt;br /&gt;
A summary of the BugSquad guide is provided below to give you a quick idea of how you can help:&lt;br /&gt;
&lt;br /&gt;
* Confirming bugs. Bugs with the UNCONFIRMED status should get the NEW status once someone else is able to reproduce the bug reliably.&lt;br /&gt;
* Finding bug duplicates. Many bugs entered into Bugzilla are duplicates of other bugs. Sometimes it's hard to recognize these as duplicates but multiple people checking can make the duplicates bubble to the top of the pile. The following remarks may help you identifying them:&lt;br /&gt;
** Using the Similar Bugs link to look if there are duplicates.&lt;br /&gt;
** In the case of crashes, use the link below the comment field to look for crash reports with the same backtrace. The backtrace must be in the body of the report in order to look for similar reports. This tool does not look in attachments with backtraces.&lt;br /&gt;
* Close bugs which have insufficient information and which have been open for  a long time (e.g. reporter does not respond to a need-more-info request). Usually a timeout of one month or more is considered to be an &amp;quot;information timeout&amp;quot;.&lt;br /&gt;
* Categorize bugs into the right components. Many bug reports can be further categorized into components. For example, Konqueror reports can be assigned to KHTML and kfm components.&lt;br /&gt;
* Labeling bugs which contain testcases as such in the title. Ideally, testcases contain the minimal amount of code (HTML, scripts, C++ etc.) necessary to reproduce a bug.&lt;br /&gt;
* Writing testcases. Very useful and saves developers' time.&lt;br /&gt;
&lt;br /&gt;
==Getting started==&lt;br /&gt;
The sheer number of open bugs can be overwhelming at the start. Here are some hints on getting started more smoothly:&lt;br /&gt;
* Look at a single product at a time. For large applications (like Konqueror), you may want to further limit your search to a particular component.&lt;br /&gt;
* Don't try to find duplicates early on. Finding duplicates is hard until you have become familiar with the bugs in a component. Start out with verifying UNCONFIRMED bugs as described above. That's valuable work, and a great way to familiarize yourself with the bug database. &lt;br /&gt;
* Avoid very old bugs with many comments, and also bugs with many votes. This may seem counter-intuitive, but in most cases these bugs are hard, have gotten a lot of attention, and are probably on a developer's TODO list already. If it is from an older version of KDE, and there are no recent comments, verify them, make a notation, and move on.&lt;br /&gt;
* Don't be afraid to ask the reporter for more info. It's something you can even do without Bugzilla permissions. And reporters will generally prefer being asked one question too many, instead of their report never being dealt with. Just remember to be polite. Ask yourself how you would feel if you got the message you are thinking about sending to a user.&lt;br /&gt;
* Look at the incoming Bugzilla bugs. Or find the oldest bugs for your favorite software application.&lt;br /&gt;
* Look through the rest of our documentation for more information!&lt;br /&gt;
&lt;br /&gt;
==Articles==&lt;br /&gt;
&lt;br /&gt;
[[/How to create useful crash reports|How to create useful crash reports]] - This article helps users to prepare their KDE packages such they can create detailed backtraces.&lt;br /&gt;
&lt;br /&gt;
[[Projects/SystemSettings#Bug_Triaging|How to triage System Settings bugs]] - Explains how System Settings works from a bug squasher's perspective.&lt;br /&gt;
&lt;br /&gt;
[[/How to triage bugs|How to triage bugs]] - This article gives step-by-step what you do during a Bugday, or how to start triaging on your own in our &amp;quot;ongoing triage&amp;quot; (usually for old Konqueror bugs; see #kde-bugs for the current link).&lt;br /&gt;
&lt;br /&gt;
[https://bugs.kde.org/page.cgi?id=fields.html A Bug's Life Cycle] - This article describes the possible status of a bug report and when each should be used.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
*[http://bugs.kde.org/ Bug tracker]&lt;br /&gt;
*[http://bugs.kde.org/buglist.cgi?short_desc_type=allwordssubstr&amp;amp;short_desc=&amp;amp;long_desc_type=allwordssubstr&amp;amp;long_desc=&amp;amp;bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_severity=wishlist&amp;amp;bugidtype=include&amp;amp;bug_id=&amp;amp;votes=100&amp;amp;emailassigned_to1=1&amp;amp;emailtype1=substring&amp;amp;email1=&amp;amp;emailassigned_to2=1&amp;amp;emailreporter2=1&amp;amp;emailcc2=1&amp;amp;emailtype2=substring&amp;amp;email2=&amp;amp;changedin=&amp;amp;chfieldfrom=&amp;amp;chfieldto=Now&amp;amp;chfieldvalue=&amp;amp;newqueryname=&amp;amp;order=bugs.votes,bugs.priority%2C%20bugs.bug_severity%2C%20bugs.bug_status%2C%20bugs.bug_id%20desc Feature Requests, sorted by popularity]&lt;br /&gt;
*[https://mail.kde.org/mailman/listinfo/bugsquad Subscribe to our mailinglist]&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Getting_Started/Build/Distributions/FreeBSD</id>
		<title>Getting Started/Build/Distributions/FreeBSD</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Getting_Started/Build/Distributions/FreeBSD"/>
				<updated>2009-05-21T04:49:18Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* Differences from the normal build process */ Add note about gmake&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Getting_Started/Build/KDE4/FreeBSD}}&lt;br /&gt;
{{KDE4}}&lt;br /&gt;
This page is focused on building KDE4-trunk from svn source on FreeBSD, information specific to creating/building/using the FreeBSD ports of KDE4 should be gathered on the [http://wiki.freebsd.org/KDE4 FreeBSD Wiki].&lt;br /&gt;
&lt;br /&gt;
==Required Ports==&lt;br /&gt;
* devel/dbus&lt;br /&gt;
* devel/cmake&lt;br /&gt;
* x11/xorg (Presumably you could do with less... but I haven't done that yet)&lt;br /&gt;
* devel/subversion&lt;br /&gt;
* textproc/redland (for support/soprano)&lt;br /&gt;
* misc/shared-mime-info (for libs)&lt;br /&gt;
* graphics/libungif (for libs)&lt;br /&gt;
* devel/boost-python (for pimlibs)&lt;br /&gt;
* security/gpgme (for pimlibs)&lt;br /&gt;
* multimedia/libxine (for base-or config with KDE4_DISABLE_MULTIMEDIA)&lt;br /&gt;
* shells/bash (if using kdesvn-build)&lt;br /&gt;
* textproc/libxslt&lt;br /&gt;
* (expand as needed, this is a wiki :)&lt;br /&gt;
&lt;br /&gt;
==Differences from the normal build process==&lt;br /&gt;
The page on [[Getting_Started/Build/KDE4|building KDE4]] trunk makes a few assumptions about your environment. Note that FreeBSD's dbus and cmake ports will work (so those sections can be skipped).&lt;br /&gt;
&lt;br /&gt;
Sometimes, building with '''make''' can fail on some modules. You should try using '''gmake''' instead.&lt;br /&gt;
&lt;br /&gt;
==Using kdesvn-build==&lt;br /&gt;
The [http://kdesvn-build.kde.org/ kdesvn-build] script can be used on FreeBSD. Note that if there are errors building qt-copy or libs, look at the issues below and fix them, then continue the build using kdesvn-build.&lt;br /&gt;
&lt;br /&gt;
==Errors compiling qt-copy==&lt;br /&gt;
; My build of qt-copy is failing because MAP_ANONYMOUS was not declared.&lt;br /&gt;
The flag MAP_ANONYMOUS is used in qt-copy/src/3rdparty/webkit/JavaScriptCore/kjs/collector.cpp:139 in function mmap(). FreeBSD's mmap() does not know the flag MAP_ANONYMOUS but MAP_ANON.&lt;br /&gt;
&lt;br /&gt;
; My build of qt-copy is failing when I have Qt4 from ports installed.&lt;br /&gt;
For some reason, the configure system will sometimes put -I/usr/local/include (which contains the ports version of qt4 headers) into the general CXXFLAGS variable. Note that there is an INCPATH variable for these include paths which should also contain -I/usr/local/include. The difference is in the compile line; CXXFLAGS's appears first, whereas the paths in INCPATH are ordered properly such that the local (current build) headers are checked first. You need to go into the directory where the build is failing (use the previous lines before the error message), and open the Makefile. You should see the the -I/usr/local/include line in the CXXFLAGS line, and you can safetly remove it IF there is a -I/usr/local/include line in INCPATH.&lt;br /&gt;
This seems to usually happen in build_dir/qt-copy/src/plugins/sqldrivers/psql/Makefile&lt;br /&gt;
&lt;br /&gt;
; My build of qt-copy is failing in qatomic_x86_64.h on my 64bit system.&lt;br /&gt;
See [http://trolltech.com/developer/task-tracker/index_html?method=entry&amp;amp;id=161994 Trolltech's bugzilla] for a description of this problem.  It's an issue with gcc3 and 64bit systems, with a particular optimization. Possible solutions described there include &amp;quot;To work around this bug, recompile qstylesheetstyle.cpp with removing -O2, or add the -fno-gcse compiler option.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Errors compiling kdesupport==&lt;br /&gt;
; System-wide Qt4 keeps being found instead of qt-copy&lt;br /&gt;
Sometimes, /usr/local/bin/qmake-qt4 insists on being found instead of qt-copy's qmake, which in turn makes cmake use the system-wide Qt during compilation. If everything else fails, you can pass -DQT_QMAKE_EXECUTABLE=/your/path/qmake to cmake.&lt;br /&gt;
&lt;br /&gt;
; Cannot link to polkit-dbus&lt;br /&gt;
If all polkit-related ports are correctly installed and the error persists, you most likely need to export LIBRARY_PATH and include /usr/local/lib in it.&lt;br /&gt;
&lt;br /&gt;
==Errors compiling kdelibs==&lt;br /&gt;
; Building kdelibs fails in kdelibs/kjs/api&lt;br /&gt;
For some reason, cmake is messing up the include orders in this subdirectory. As a temporary fix, open kdelibs/kjs/CMakeLists.txt, and replace include_directories( ${CMAKE_SOURCE_DIR}/kjs ${CMAKE_SOURCE_DIR}/wtf ${KDEWIN32_INCLUDES} ) with include_directories(${KDE4_KDECORE_INCLUDES} ${CMAKE_SOURCE_DIR}/wtf ${KDEWIN32_INCLUDES} )&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/Programming_Tutorial_KDE_4/Using_KConfig</id>
		<title>Development/Tutorials/Programming Tutorial KDE 4/Using KConfig</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/Programming_Tutorial_KDE_4/Using_KConfig"/>
				<updated>2009-05-18T05:37:08Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* Prerequisites */ Fixed link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Warning|The subject matter that I was going to cover in this tutorial is already covered in [[Development/Tutorials/KConfig]] and so this tutorial will probably be removed.}}&lt;br /&gt;
&lt;br /&gt;
[[image:introtokdetutorial4.png|frame|center]]&lt;br /&gt;
==Abstract==&lt;br /&gt;
''Author'': Fabian Korak&lt;br /&gt;
&lt;br /&gt;
''Author'': [[User:Milliams|Matt Williams]](presets)&lt;br /&gt;
&lt;br /&gt;
In this tutorial, we're going to be showing you how to utilise KConfig XT in an application. It is recommended that you read [[Development/Tutorials/Using KConfig XT]] before continuing in order to familiarise yourself with the framework.&lt;br /&gt;
&lt;br /&gt;
==Prerequisites==&lt;br /&gt;
* [[Development/Tutorials/Using_KActions|Tutorial 3 - KActions]]&lt;br /&gt;
&lt;br /&gt;
* [[Development/Tutorials/Using_KConfig_XT]]&lt;br /&gt;
&lt;br /&gt;
==KConfig XT==&lt;br /&gt;
&lt;br /&gt;
At first we make new File called tutorial4.kcfg within the source directory of your project.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE kcfg SYSTEM &amp;quot;http://www.kde.org/standards/kcfg/1.0/kcfg.xsd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;kcfg&amp;gt;&lt;br /&gt;
	&amp;lt;kcfgfile name=&amp;quot;kjotsrc&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;include&amp;gt;kglobalsettings.h&amp;lt;/include&amp;gt;&lt;br /&gt;
	&amp;lt;group name=&amp;quot;kjots&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;entry name=&amp;quot;showAction&amp;quot; type=&amp;quot;Bool&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;label&amp;gt;Whether setupAction is called&amp;lt;/label&amp;gt;&lt;br /&gt;
			&amp;lt;default&amp;gt;true&amp;lt;/default&amp;gt;&lt;br /&gt;
		&amp;lt;/entry&amp;gt;&lt;br /&gt;
	&amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/kcfg&amp;gt; &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This code makes a setting of the type bool, which determines whether we want to do something. Then we set the default value to be true.&lt;br /&gt;
&lt;br /&gt;
'''Always start the value of &amp;lt;entry name=&amp;quot;&amp;quot;&amp;gt; in lower case since KConfig XT sets them to lower case within the generated headers either way. If you don't this could give you some nearly untraceable errors'''&lt;br /&gt;
&lt;br /&gt;
Now we make a new File called tutorial4.kcfgc.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code ini&amp;gt;&lt;br /&gt;
File=tutorial4.kcfg&lt;br /&gt;
ClassName=tutorial4&lt;br /&gt;
Singleton=true&lt;br /&gt;
Mutators=true&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This should set up your configuration for now.&lt;br /&gt;
&lt;br /&gt;
==The Code==&lt;br /&gt;
===mainwindow.h===&lt;br /&gt;
&amp;lt;code cppqt n&amp;gt;&lt;br /&gt;
#ifndef MAINWINDOW_H&lt;br /&gt;
#define MAINWINDOW_H&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;KXmlGuiWindow&amp;gt;&lt;br /&gt;
#include &amp;lt;KTextEdit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class MainWindow : public KXmlGuiWindow&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
	public:&lt;br /&gt;
		MainWindow(QWidget *parent=0);&lt;br /&gt;
	private:&lt;br /&gt;
		KTextEdit* textArea;&lt;br /&gt;
		void setupActions();&lt;br /&gt;
		void setupConfig();&lt;br /&gt;
		void readConfig();&lt;br /&gt;
		void saveSettings();&lt;br /&gt;
		int m_showAction;&lt;br /&gt;
&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are some new voids in here, as well as m_showAction witch determines the value stored in KConfig XT. Despite that value being a bool we can actually use an integer here, since the type is converted either way.&lt;br /&gt;
&lt;br /&gt;
===mainwindow.cpp===&lt;br /&gt;
&amp;lt;code cppqt n&amp;gt;&lt;br /&gt;
#include &amp;quot;mainwindow.h&amp;quot;&lt;br /&gt;
#include &amp;quot;tutorial4.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;KApplication&amp;gt;&lt;br /&gt;
#include &amp;lt;KAction&amp;gt;&lt;br /&gt;
#include &amp;lt;KLocale&amp;gt;&lt;br /&gt;
#include &amp;lt;KActionCollection&amp;gt;&lt;br /&gt;
#include &amp;lt;KStandardAction&amp;gt;&lt;br /&gt;
#include &amp;lt;KConfigDialog&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MainWindow::MainWindow(QWidget *parent) : KXmlGuiWindow(parent)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
	textArea = new KTextEdit;&lt;br /&gt;
	setCentralWidget(textArea);&lt;br /&gt;
	setupConfig();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void MainWindow::setupActions()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
	QAction* clearAction = actionCollection()-&amp;gt;addAction( &amp;quot;clear&amp;quot; );&lt;br /&gt;
	&lt;br /&gt;
	clearAction-&amp;gt;setText(i18n(&amp;quot;Clear&amp;quot;));&lt;br /&gt;
	clearAction-&amp;gt;setIcon(KIcon(&amp;quot;filenew&amp;quot;));&lt;br /&gt;
	clearAction-&amp;gt;setShortcut(Qt::CTRL+ Qt::Key_W);&lt;br /&gt;
			&lt;br /&gt;
	connect(clearAction, SIGNAL(triggered(bool)), textArea, SLOT(clear()));&lt;br /&gt;
&lt;br /&gt;
	KStandardAction::quit(kapp, SLOT(quit()), actionCollection());&lt;br /&gt;
	&lt;br /&gt;
	setupGUI();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void MainWindow::setupConfig()&lt;br /&gt;
{&lt;br /&gt;
	readConfig();	&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void MainWindow::readConfig() {&lt;br /&gt;
	m_showAction    = tutorial4::showAction();&lt;br /&gt;
	if(m_showAction = (true)) &lt;br /&gt;
		setupActions();&lt;br /&gt;
	&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void MainWindow::saveSettings() { &lt;br /&gt;
	tutorial4::setShowAction(m_showAction);&lt;br /&gt;
	tutorial4::self()-&amp;gt;writeConfig();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At first we import &amp;quot;tutorial4.h&amp;quot;, which should be auto-generated at runtime by KConfig XT every time you compile this. MainWindow and SetupActions are copied from the tutorials before. The only thing new is that we now call a new void called setupConfig. This then calls readConfig. We '''could''' also call saveSettings(but only after we called readConfig), but since we don't change any values there this is more of a &amp;quot;proof of concept&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Within readConfig we assign m_showAction the value of the setting showAction. If this returns true setupsActions makes buttons and all that. When false it doesn't.&lt;br /&gt;
&lt;br /&gt;
The setShowActions() in saveSettings() overwrites showAction with a value of your choice, in this case with itself. Then you need to call writeConfig() to apply the changes you made.&lt;br /&gt;
&lt;br /&gt;
===main.cpp===&lt;br /&gt;
&amp;lt;code cppqt n&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;mainwindow.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;KApplication&amp;gt;&lt;br /&gt;
#include &amp;lt;KAboutData&amp;gt;&lt;br /&gt;
#include &amp;lt;KCmdLineArgs&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
int main (int argc, char *argv[])&lt;br /&gt;
{&lt;br /&gt;
	KAboutData aboutData( &amp;quot;tutorial4&amp;quot;, &amp;quot;tutorial4&amp;quot;,&lt;br /&gt;
			      &amp;quot;0.4&amp;quot;, &amp;quot;KMessageBox popup&amp;quot;,&lt;br /&gt;
	 KAboutData::License_GPL, &amp;quot;(c) 2007&amp;quot; );&lt;br /&gt;
	KCmdLineArgs::init( argc, argv, &amp;amp;aboutData );&lt;br /&gt;
	&lt;br /&gt;
	KApplication app;&lt;br /&gt;
	&lt;br /&gt;
	MainWindow* window = new MainWindow();&lt;br /&gt;
	window-&amp;gt;show();&lt;br /&gt;
	&lt;br /&gt;
	return app.exec();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No news in here&lt;br /&gt;
&lt;br /&gt;
===tutorial4ui.rc===&lt;br /&gt;
&amp;lt;code xml n&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;gui name=&amp;quot;tutorial4&amp;quot;&lt;br /&gt;
     version=&amp;quot;1&amp;quot;&lt;br /&gt;
     xmlns=&amp;quot;http://www.kde.org/standards/kxmlgui/1.0&amp;quot;&lt;br /&gt;
     xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&lt;br /&gt;
     xsi:schemaLocation=&amp;quot;http://www.kde.org/standards/kxmlgui/1.0&lt;br /&gt;
                         http://www.kde.org/standards/kxmlgui/1.0/kxmlgui.xsd&amp;quot; &amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;MenuBar&amp;gt;&lt;br /&gt;
    &amp;lt;Menu name=&amp;quot;file&amp;quot; &amp;gt;&lt;br /&gt;
      &amp;lt;text&amp;gt;&amp;amp;amp;File&amp;lt;/text&amp;gt;&lt;br /&gt;
      &amp;lt;Action name=&amp;quot;clear&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Menu&amp;gt;&lt;br /&gt;
  &amp;lt;/MenuBar&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;ToolBar name=&amp;quot;mainToolBar&amp;quot; &amp;gt;&lt;br /&gt;
    &amp;lt;text&amp;gt;Main Toolbar&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;Action name=&amp;quot;clear&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/ToolBar&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/gui&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==CMake==&lt;br /&gt;
===CMakeLists.txt===&lt;br /&gt;
&amp;lt;code ini n&amp;gt;&lt;br /&gt;
PROJECT(tutorial4)&lt;br /&gt;
&lt;br /&gt;
FIND_PACKAGE(KDE4 REQUIRED)&lt;br /&gt;
INCLUDE_DIRECTORIES( ${KDE4_INCLUDES} ${CMAKE_CURRENT_BINARY_DIR})&lt;br /&gt;
&lt;br /&gt;
SET(tutorial4_SRCS &lt;br /&gt;
  main.cpp&lt;br /&gt;
  mainwindow.cpp&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
KDE4_ADD_KCFG_FILES(tutorial4_SRCS settings.kcfgc)&lt;br /&gt;
&lt;br /&gt;
KDE4_ADD_EXECUTABLE(tutorial4 ${tutorial4_SRCS})&lt;br /&gt;
&lt;br /&gt;
TARGET_LINK_LIBRARIES( tutorial4 ${KDE4_KDEUI_LIBS})&lt;br /&gt;
&lt;br /&gt;
install( TARGETS tutorial4 DESTINATION ${BIN_INSTALL_DIR})&lt;br /&gt;
install( FILES tutorial4ui.rc DESTINATION  ${DATA_INSTALL_DIR}/tutorial4)&lt;br /&gt;
install( FILES tutorial4.kcfg  DESTINATION  ${KCFG_INSTALL_DIR} )&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Moving On==&lt;br /&gt;
&lt;br /&gt;
For a better understanding of the XML used in KConfig XT you could try &lt;br /&gt;
[[Development/Tutorials/Programming_Tutorial_KDE_4/How_to_write_an_XML_parser|to write an Xml Parser]]&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/Creating_Libraries</id>
		<title>Development/Tutorials/Creating Libraries</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/Creating_Libraries"/>
				<updated>2009-05-18T01:56:33Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* Separating the code */ Added some formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Development/Tutorials/Creating Libraries}}&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
&lt;br /&gt;
If a part of your code could be used by more than one software module, like other programs or plugins, you should put that part in a shared library. This tutorial tells how to add the library to the buildsystem and how to prepare the source code.&lt;br /&gt;
&lt;br /&gt;
==Separating the code==&lt;br /&gt;
&lt;br /&gt;
It is good practise to put all source files for a library in a separate directory.&lt;br /&gt;
&lt;br /&gt;
This tutorial assumes you want to create a shared library named '''myshare''', which contains the classes '''MyAClass''' and '''MyBClass'''. Both classes use internally the classes '''MyInternalCClass''' and '''MyInternalDClass''', but these are not found in their public interfaces.&lt;br /&gt;
&lt;br /&gt;
The classes are declared and defined in the files ''myaclass.h'', ''myaclass.cpp'', ''mybclass.h'', ''mybclass.cpp'', ''myinternalcclass.h'', ''myinternalcclass.cpp'', ''myinternaldclass.h'', and ''myinternaldclass.cpp''.&lt;br /&gt;
&lt;br /&gt;
==Adding the library to the buildsystem==&lt;br /&gt;
&lt;br /&gt;
You also need a file CMakeLists.txt in the same directory as the source files: &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
include_directories(&lt;br /&gt;
# any directories needed by the sources of the library&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
set( myshared_LIB_SRCS&lt;br /&gt;
  myaclass.cpp&lt;br /&gt;
  mybclass.cpp&lt;br /&gt;
  myinternalcclass.cpp&lt;br /&gt;
  myinternaldclass.cpp&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
kde4_add_library( myshared  SHARED ${myshared_LIB_SRCS} )&lt;br /&gt;
&lt;br /&gt;
target_link_libraries( myshared&lt;br /&gt;
  ${KDE4_KDECORE_LIBS}&lt;br /&gt;
)&lt;br /&gt;
set_target_properties( myshared&lt;br /&gt;
  PROPERTIES VERSION ${GENERIC_LIB_VERSION} SOVERSION ${GENERIC_LIB_SOVERSION}&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
install( TARGETS myshared  ${INSTALL_TARGETS_DEFAULT_ARGS} )&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The instructions are similar to the ones for a program. But instead of calling &amp;lt;tt&amp;gt;kde4_add_executable()&amp;lt;/tt&amp;gt; you use &amp;lt;tt&amp;gt;kde4_add_library()&amp;lt;/tt&amp;gt; to register  the library &amp;lt;tt&amp;gt;myshared&amp;lt;/tt&amp;gt;. The parameter &amp;lt;tt&amp;gt;SHARED&amp;lt;/tt&amp;gt; is needed as this declares the library is a shared one, not a static.&lt;br /&gt;
&lt;br /&gt;
Like with a program, other libraries that are used have to be defined with &amp;lt;tt&amp;gt;target_link_libraries()&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The version number of the library is set by &amp;lt;tt&amp;gt;set_target_properties()&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
And &amp;lt;tt&amp;gt;install()&amp;lt;/tt&amp;gt; moves the library to a place where it can be loaded.&lt;br /&gt;
&lt;br /&gt;
==Declaring exported classes and methods==&lt;br /&gt;
&lt;br /&gt;
If a library gets compiled, all functions or class methods it offers get listed as so called symbols in a table. Each symbol points to the offset in the library where the corresponding code can be found.&lt;br /&gt;
&lt;br /&gt;
Adding also functions or class methods to the table which are not intended to be called from the outside is of no use. It just bloats the table and asks others to make calls to them against your will. For the library myshared you do not want to add the methods of the classes MyInternalCClass and MyInternalDClass.&lt;br /&gt;
&lt;br /&gt;
In the KDE buildsystem you need to put explicitly a tag to all the classes and functions which the library should provide externally. This tag has to have a different name for each library.&lt;br /&gt;
&lt;br /&gt;
For this add a file myshared_export.h to the directory of the library, containing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code cpp&amp;gt;&lt;br /&gt;
#ifndef MYSHARED_EXPORT_H&lt;br /&gt;
#define MYSHARED_EXPORT_H&lt;br /&gt;
&lt;br /&gt;
// needed for KDE_EXPORT and KDE_IMPORT macros&lt;br /&gt;
#include &amp;lt;kdemacros.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#ifndef MYSHARED_EXPORT&lt;br /&gt;
# if defined(MAKE_MYSHARED_LIB)&lt;br /&gt;
   // We are building this library&lt;br /&gt;
#  define MYSHARED_EXPORT KDE_EXPORT&lt;br /&gt;
# else&lt;br /&gt;
   // We are using this library&lt;br /&gt;
#  define MYSHARED_EXPORT KDE_IMPORT&lt;br /&gt;
# endif&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
# ifndef MYSHARED_EXPORT_DEPRECATED&lt;br /&gt;
#  define MYSHARED_EXPORT_DEPRECATED KDE_DEPRECATED MYSHARED_EXPORT&lt;br /&gt;
# endif&lt;br /&gt;
&lt;br /&gt;
#endif&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This macro code defines the tag &amp;lt;tt&amp;gt;MYSHARED_EXPORT&amp;lt;/tt&amp;gt; for the library.&lt;br /&gt;
&lt;br /&gt;
Now you prepare all classes by adding a include for the header with the library's export tag and putting the export tag defined above in front of the class name, like this:&lt;br /&gt;
&amp;lt;code cppqt&amp;gt;&lt;br /&gt;
#include &amp;quot;myshared_export.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
class MYSHARED_EXPORT MyAClass {&lt;br /&gt;
// class declaration as usual&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the same with the other class:&lt;br /&gt;
&amp;lt;code cppqt&amp;gt;&lt;br /&gt;
#include &amp;quot;myshared_export.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
class MYSHARED_EXPORT MyBClass {&lt;br /&gt;
// class declaration as usual&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{warning|&lt;br /&gt;
Beware that header-only classes, even additionally based on templates, must not have an export tag. Their methods do not end as any symbol in the library. Instead all machine code is created on demand in the external calling software, if compiled.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Enabling others to compile using your library==&lt;br /&gt;
&lt;br /&gt;
You need also tell the buildsystem to install the header files. Without this external code can not build, as it can not include the files and thus the class and methods declarations of your library. You do this by adding to the library's CMakeLists.txt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
set( myshared_LIB_HDRS&lt;br /&gt;
  myshared_export.h&lt;br /&gt;
  myaclass.h&lt;br /&gt;
  mybclass.h&lt;br /&gt;
)&lt;br /&gt;
install( FILES ${myshared_LIB_HDRS}&lt;br /&gt;
  DESTINATION ${INCLUDE_INSTALL_DIR}/myshared&lt;br /&gt;
  COMPONENT Devel&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Of course also myshared_export.h is installed, as it gets included by the headers of both classes.&lt;br /&gt;
&lt;br /&gt;
External KDE code which should use the library's classes and functions now can include the headers by the lines:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code cppqt&amp;gt;&lt;br /&gt;
#include &amp;lt;myshared/myaclass.h&amp;gt;&lt;br /&gt;
#include &amp;lt;myshared/mybclass.h&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Getting the version numbers right==&lt;br /&gt;
&lt;br /&gt;
By installing the header files you are releasing your library officially. External code will rely on the interfaces declared by the headers. So you need to care for binary and behaviour compatibility if developing your library further. Any changes in the next release should be reflected in the version number, so external code gets compiled, linked and run with the matching version of your library.&lt;br /&gt;
&lt;br /&gt;
As you already saw above the version of your library is defined by &amp;lt;tt&amp;gt;set_target_properties()&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
set_target_properties( myshared&lt;br /&gt;
  PROPERTIES VERSION ${GENERIC_LIB_VERSION} SOVERSION ${GENERIC_LIB_SOVERSION}&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So there are two different kind of versions, the development version &amp;lt;tt&amp;gt;VERSION&amp;lt;/tt&amp;gt; and the ABI version &amp;lt;tt&amp;gt;SOVERSION&amp;lt;/tt&amp;gt;. Both will be explained now.&lt;br /&gt;
&lt;br /&gt;
=== Defining the development version ===&lt;br /&gt;
The value of &amp;lt;tt&amp;gt;VERSION&amp;lt;/tt&amp;gt; defines the development state of your library. It is good practice to use a pattern &amp;quot;major.minor.patch-level&amp;quot;.&lt;br /&gt;
For each release you need to update or reset the different parts:&lt;br /&gt;
* Only bug fixes added: increase the patch-level, e.g. 2.3.10 -&amp;gt; 2.3.11&lt;br /&gt;
* New functionality added, while keeping the old functionality: increase the minor number, reset the patch-level, e.g. 2.3.10 -&amp;gt; 2.4.0&lt;br /&gt;
* Binary or behaviour changes of old functionality, regardless of any new functionality: increase the major number, reset the minor number and the patch-level, e.g. 2.3.10 -&amp;gt; 3.0.0&lt;br /&gt;
This version ends in the name of the resulting library file, e.g. on Linux &amp;quot;libmyshared.so.2.3.10&amp;quot; or &amp;quot;libmyshared.2.3.10.so&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Defining the ABI version ===&lt;br /&gt;
The value of &amp;lt;tt&amp;gt;SOVERSION&amp;lt;/tt&amp;gt; defines the ABI variant of your library. It is a single always increasing integer, numbering the versions with non-backward-compatibel changes. So if you release a new version with some binary or behaviour changes you need to increase this version number by one, e.g. 2-&amp;gt;3, otherwise you keep it.&lt;br /&gt;
&lt;br /&gt;
{{tip|&lt;br /&gt;
If you follow the rules given above for the &amp;lt;tt&amp;gt;VERSION&amp;lt;/tt&amp;gt; version, the value of &amp;lt;tt&amp;gt;SOVERSION&amp;lt;/tt&amp;gt; will of course match the major number of it. So with a &amp;lt;tt&amp;gt;VERSION&amp;lt;/tt&amp;gt; of 2.3.10 the &amp;lt;tt&amp;gt;SOVERSION&amp;lt;/tt&amp;gt; value would be 2. But this is no necessity.}}&lt;br /&gt;
&lt;br /&gt;
This version ends in a reference with ABI versioning to the resulting library file, e.g. on Linux in the symbolic link &amp;quot;libmyshared.so.2&amp;quot;, which points to the real library file. These versioned references are used by the dynamic linker to load the version of the library with the matching ABI variant to a running executable. Executables which are linked to a shared library have a note which ABI variant of these libray is needed.&lt;br /&gt;
&lt;br /&gt;
{{warning|&lt;br /&gt;
This concept of ABI versioning breaks if the executable got linked to a newer version of the library (e.g. 2.4.0) which is backward-compatible to older versions (all 2.0-3.*) but additionally offers new functionality that also gets used by the executable.&lt;br /&gt;
&lt;br /&gt;
Because conforming to the concept the older versions have the same ABI version like the newer one (e.g. 2). So if only an older version of the library is installed (e.g. 2.1.8) the executable is still started as the tested prerequisites (ABI version) are matched, but it will crash due to the missing functionality if the library gets finally loaded.&lt;br /&gt;
&lt;br /&gt;
In a compilation-from-sourcecode-based system this just should not happen, unless you downgrade a library again. And in a package-based system dependency checks on de-/installations of packages which also care for the &amp;lt;tt&amp;gt;VERSION&amp;lt;/tt&amp;gt; version should prevent this. So you might also forget about this problem.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Using the generic versions===&lt;br /&gt;
If you are developing your library inside a normal KDE module, e.g. kdeutils, and all new versions of your library are only released together with the usual KDE releases, of course following the policies regarding ABI as demanded, you do not need to take care of the versioning yourself. Just use the generic variables &amp;lt;tt&amp;gt;${GENERIC_LIB_VERSION}&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;${GENERIC_LIB_SOVERSION}&amp;lt;/tt&amp;gt; as shown above. Using the generic version numbers also helps to identify a version of your library by the general KDE version.&lt;br /&gt;
&lt;br /&gt;
E.g. for KDE 4.1.0 these variables are defined in kdelibs/cmake/modules/KDE4Defaults.cmake with&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
set(GENERIC_LIB_VERSION &amp;quot;4.1.0&amp;quot;)&lt;br /&gt;
set(GENERIC_LIB_SOVERSION &amp;quot;4&amp;quot;)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Making localization work==&lt;br /&gt;
&lt;br /&gt;
If your shared library contains translations you have to help a little so a program which uses your library can make use of them.&lt;br /&gt;
&lt;br /&gt;
You mark the strings to be translated [[Development/Tutorials/Localization/i18n|as usual]]. And &lt;br /&gt;
[[Development/Tutorials/Localization/i18n Build Systems|like you do with programs]] you have to add a shell script named &amp;lt;tt&amp;gt;Messages.sh&amp;lt;/tt&amp;gt; in the toplevel directory of your shared library to collect all the strings, e.g.:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
#!bin/sh&lt;br /&gt;
# fetch all strings in files that are not source code&lt;br /&gt;
$EXTRACTRC `find . -name \*.rc -o -name \*.ui -o -name \*.kcfg` &amp;gt;&amp;gt; rc.cpp&lt;br /&gt;
# fetch all strings in source code files&lt;br /&gt;
$XGETTEXT `find . -name \*.cc -o -name \*.cpp -o -name \*.h` -o $podir/libmyshare.pot&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
So all strings will end in a catalog named &amp;lt;tt&amp;gt;libmyshare&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
While for programs and most plugins the translations are loaded automatically, for shared libraries you have to do it manually. You do so by adding in the program after the creation of the &amp;lt;tt&amp;gt;KApplication&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;KCoreApplication&amp;lt;/tt&amp;gt; instance the line:&lt;br /&gt;
&amp;lt;code mode=cppqt&amp;gt;&lt;br /&gt;
    KGlobal::locale()-&amp;gt;insertCatalog( &amp;quot;libmyshare&amp;quot; );&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
The method &amp;lt;tt&amp;gt;insertCatalog()&amp;lt;/tt&amp;gt; will load the translated strings in the current language from the catalog named &amp;lt;tt&amp;gt;libmyshare&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Organizing your program code with static libraries==&lt;br /&gt;
Sharing code with others is one reason to separate code into libraries.&lt;br /&gt;
Another reason is the need to organize a large code base.&lt;br /&gt;
&lt;br /&gt;
A useful approach to give a structure to code is to separate the source files in different subdirectories, each subdirectory containing only code for a certain domain, e.g. a subdirectory &amp;quot;utils&amp;quot; for all utility classes or &amp;quot;gui&amp;quot; for all gui related code.&lt;br /&gt;
&lt;br /&gt;
Instead of one big central CMakeLists.txt file you also use an own CMakeLists.txt file per subdirectory, which is also placed in that subdirectory. In each of these CMakeLists.txt files you advise the build system to construct a separate package of the compiled sources in the given directory, a so called convenience library or, in technical terms, static library.&lt;br /&gt;
&lt;br /&gt;
E.g. for the subdirectory &amp;quot;myutils&amp;quot; &amp;quot;myutils/CMakeLists.txt&amp;quot; looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
include_directories(&lt;br /&gt;
# only as needed for the sources of this directory/library&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
set( myutils_LIB_SRCS&lt;br /&gt;
  myutilaclass.cpp&lt;br /&gt;
  myutilbclass.cpp&lt;br /&gt;
  myinternalutilcclass.cpp&lt;br /&gt;
  myinternalutildclass.cpp&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
kde4_add_library( myutils  STATIC ${myutils_LIB_SRCS} )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The instructions are similar to the ones for a shared library. In the call &amp;lt;tt&amp;gt;kde4_add_library()&amp;lt;/tt&amp;gt; you just use the parameter &amp;lt;tt&amp;gt;STATIC&amp;lt;/tt&amp;gt; instead to declare the library is a static one.&lt;br /&gt;
&lt;br /&gt;
This library is only used as an intermediate product in the total build process. So you neither need to set a version number with &amp;lt;tt&amp;gt;set_target_properties()&amp;lt;/tt&amp;gt; or declare at this point other libraries to link against with &amp;lt;tt&amp;gt;target_link_libraries()&amp;lt;/tt&amp;gt;, like you do with a shared library. And you do not install anything, neither the lib or any header files. You also do not mark exported classes or functions, all will be available to external code. You declare any dynamic libraries used by the library at another place, see below.&lt;br /&gt;
&lt;br /&gt;
With &amp;lt;tt&amp;gt;include_directories()&amp;lt;/tt&amp;gt; you also have to list the include directories needed for the source files in the directory, and only these. So you get more control with regard to dependencies than with one big central CMakeLists.txt file. &lt;br /&gt;
&lt;br /&gt;
To have all the local CMakeLists.txt files get used by the build system you need to add each subdirectory to the CMakeLists.txt file in the upper directory, with the call &amp;lt;tt&amp;gt;add_subdirectory()&amp;lt;/tt&amp;gt;, e.g.&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
add_subdirectory( myutils )&lt;br /&gt;
add_subdirectory( mygui )&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This inclusion can be done recursively, so in a subdirectory you can add again the subsubdirectory.&lt;br /&gt;
&lt;br /&gt;
Finally you need to tell the buildsystem to also use the static libraries to construct the complete program. You do so by including their names in the &amp;lt;tt&amp;gt;target_link_libraries()&amp;lt;/tt&amp;gt; call for the program. There you also add any not already listed shared library which is used by code in your static libraries, as told above. So to construct the program myprogram using the static libraries mygui and myutils you write the CMakeLists.txt like e.g.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
target_link_libraries( myprogram&lt;br /&gt;
  mygui&lt;br /&gt;
  myutils&lt;br /&gt;
# and all needed dynamic libraries, like the KDE ones and else,&lt;br /&gt;
# also the ones needed by your static libraries mygui and myutils&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure that you list those libraries, static or shared, which are also used by other libraries in the list below these, e.g. if mygui uses myutils, first list mygui, then myutils, as in the example above.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{warning|&lt;br /&gt;
The buildsystem up to KDE 4.1 supports the use of static libraries only for programs, not for shared libraries. So use this structuring method only for programs.&lt;br /&gt;
&lt;br /&gt;
This restriction is due to the fact that the linker utilities on most platforms supported only import those parts of static libraries into the end product which are referenced by the other code in the product, not simply everything. Which is useful, if the product is a program. But it isn't useful for the product dynamic library. If a function &amp;quot;foo()&amp;quot; from the static library is not used by the other code in the shared library this function will not be found in resulting shared library product. Yet third party code linking to this shared library might expect the function if it is defined as exported. Which creates a problem.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
It is not uncommon for a static library to become a shared dynamic library later in development, if the code in the library proves to be complete and useful for others.&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Getting_Started/Build/Distributions/FreeBSD</id>
		<title>Getting Started/Build/Distributions/FreeBSD</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Getting_Started/Build/Distributions/FreeBSD"/>
				<updated>2009-05-17T06:44:17Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* Errors compiling kdesupport */ Tip for polkit-dbus-related errors&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Getting_Started/Build/KDE4/FreeBSD}}&lt;br /&gt;
{{KDE4}}&lt;br /&gt;
This page is focused on building KDE4-trunk from svn source on FreeBSD, information specific to creating/building/using the FreeBSD ports of KDE4 should be gathered on the [http://wiki.freebsd.org/KDE4 FreeBSD Wiki].&lt;br /&gt;
&lt;br /&gt;
==Required Ports==&lt;br /&gt;
* devel/dbus&lt;br /&gt;
* devel/cmake&lt;br /&gt;
* x11/xorg (Presumably you could do with less... but I haven't done that yet)&lt;br /&gt;
* devel/subversion&lt;br /&gt;
* textproc/redland (for support/soprano)&lt;br /&gt;
* misc/shared-mime-info (for libs)&lt;br /&gt;
* graphics/libungif (for libs)&lt;br /&gt;
* devel/boost-python (for pimlibs)&lt;br /&gt;
* security/gpgme (for pimlibs)&lt;br /&gt;
* multimedia/libxine (for base-or config with KDE4_DISABLE_MULTIMEDIA)&lt;br /&gt;
* shells/bash (if using kdesvn-build)&lt;br /&gt;
* textproc/libxslt&lt;br /&gt;
* (expand as needed, this is a wiki :)&lt;br /&gt;
&lt;br /&gt;
==Differences from the normal build process==&lt;br /&gt;
The page on [[Getting_Started/Build/KDE4|building KDE4]] trunk makes a few assumptions about your environment. Note that FreeBSD's dbus and cmake ports will work (so those sections can be skipped).&lt;br /&gt;
&lt;br /&gt;
==Using kdesvn-build==&lt;br /&gt;
The [http://kdesvn-build.kde.org/ kdesvn-build] script can be used on FreeBSD. Note that if there are errors building qt-copy or libs, look at the issues below and fix them, then continue the build using kdesvn-build.&lt;br /&gt;
&lt;br /&gt;
==Errors compiling qt-copy==&lt;br /&gt;
; My build of qt-copy is failing because MAP_ANONYMOUS was not declared.&lt;br /&gt;
The flag MAP_ANONYMOUS is used in qt-copy/src/3rdparty/webkit/JavaScriptCore/kjs/collector.cpp:139 in function mmap(). FreeBSD's mmap() does not know the flag MAP_ANONYMOUS but MAP_ANON.&lt;br /&gt;
&lt;br /&gt;
; My build of qt-copy is failing when I have Qt4 from ports installed.&lt;br /&gt;
For some reason, the configure system will sometimes put -I/usr/local/include (which contains the ports version of qt4 headers) into the general CXXFLAGS variable. Note that there is an INCPATH variable for these include paths which should also contain -I/usr/local/include. The difference is in the compile line; CXXFLAGS's appears first, whereas the paths in INCPATH are ordered properly such that the local (current build) headers are checked first. You need to go into the directory where the build is failing (use the previous lines before the error message), and open the Makefile. You should see the the -I/usr/local/include line in the CXXFLAGS line, and you can safetly remove it IF there is a -I/usr/local/include line in INCPATH.&lt;br /&gt;
This seems to usually happen in build_dir/qt-copy/src/plugins/sqldrivers/psql/Makefile&lt;br /&gt;
&lt;br /&gt;
; My build of qt-copy is failing in qatomic_x86_64.h on my 64bit system.&lt;br /&gt;
See [http://trolltech.com/developer/task-tracker/index_html?method=entry&amp;amp;id=161994 Trolltech's bugzilla] for a description of this problem.  It's an issue with gcc3 and 64bit systems, with a particular optimization. Possible solutions described there include &amp;quot;To work around this bug, recompile qstylesheetstyle.cpp with removing -O2, or add the -fno-gcse compiler option.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Errors compiling kdesupport==&lt;br /&gt;
; System-wide Qt4 keeps being found instead of qt-copy&lt;br /&gt;
Sometimes, /usr/local/bin/qmake-qt4 insists on being found instead of qt-copy's qmake, which in turn makes cmake use the system-wide Qt during compilation. If everything else fails, you can pass -DQT_QMAKE_EXECUTABLE=/your/path/qmake to cmake.&lt;br /&gt;
&lt;br /&gt;
; Cannot link to polkit-dbus&lt;br /&gt;
If all polkit-related ports are correctly installed and the error persists, you most likely need to export LIBRARY_PATH and include /usr/local/lib in it.&lt;br /&gt;
&lt;br /&gt;
==Errors compiling kdelibs==&lt;br /&gt;
; Building kdelibs fails in kdelibs/kjs/api&lt;br /&gt;
For some reason, cmake is messing up the include orders in this subdirectory. As a temporary fix, open kdelibs/kjs/CMakeLists.txt, and replace include_directories( ${CMAKE_SOURCE_DIR}/kjs ${CMAKE_SOURCE_DIR}/wtf ${KDEWIN32_INCLUDES} ) with include_directories(${KDE4_KDECORE_INCLUDES} ${CMAKE_SOURCE_DIR}/wtf ${KDEWIN32_INCLUDES} )&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.3_Feature_Plan</id>
		<title>Schedules/KDE4/4.3 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.3_Feature_Plan"/>
				<updated>2009-05-14T13:06:19Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* kdebase-workspace */ Marking press-down feedback to folderview as done&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the 4.3 release.&lt;br /&gt;
&lt;br /&gt;
See also:&lt;br /&gt;
* [[Schedules/KDE4/4.3 Release Schedule]]&lt;br /&gt;
* [[Schedules/KDE4/4.3 Release Goals]]&lt;br /&gt;
* [[Schedules/KDE4/4.2 Feature Plan]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Legend:&lt;br /&gt;
* todo =&amp;gt; not started yet&lt;br /&gt;
* in-progress =&amp;gt; started, but not completed yet&lt;br /&gt;
* done =&amp;gt; completed&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Other =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|Akonadi|Various Akonadi related items can be found here http://techbase.kde.org/Projects/PIM/Akonadi#Scheduled_for_KDE_4.3_.2F_Akonadi_1.2|kde-pim@kde.org|Akonadi Developers}}&lt;br /&gt;
{{FeatureInProgress|KPackageKit|Pushing in KPackageKit (dependant on PolicyKit integration)|dantti85-dev@yahoo.com.br|Daniel}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdelibs =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|KLocale|Investigate adding Currency Code and currency minor units support based on ISO 4217 (http://en.wikipedia.org/wiki/ISO_4217).|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureDone|kdecore|Thread safety in ksycoca (KService, KMimeType etc.)|faure:AT:kde.org|David Faure}}&lt;br /&gt;
{{FeatureTodo|kdecore|Dynamic allocation of KDebug areas|faure:AT:kde.org|David Faure}}&lt;br /&gt;
{{FeatureInProgress|Sonnet|Implement language detection|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureInProgress|Sonnet|Integrate language detection with spellchecking|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureTodo|Sonnet|Integrate language detection with strigi|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureTodo|Sonnet|Grammar checking (at least for English)|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureInProgress|kio|Move KTcpSocket to kio and make it public; some cleanup required|ahartmetz@gmail.com|Andreas Hartmetz}}&lt;br /&gt;
{{FeatureTodo|KCalendarSystem|Add new astronomical calculation support classes to be used in kdelibs to build new astronomically based calendar systems, and in kdepim to build new version of libkholiday.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureTodo|KCalendarSystem|Add new calendar systems: Indian Civil (Saka), Ethiopean, Chinese, Pure Julian, Pure Gregorian, etc.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureDone|KDateTime|Provide simulation of system date/time for application testing.|djarvie:AT:kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureTodo|KDEPrint|If no file printing support in Qt4.5, migrate FilePrinter class from Okular to enable file printing for all apps via QPrinter.  To be discussed on k-c-d first.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureTodo|KDEPrint|Add framework for standard actions for 'Send to...' for e-mail, fax, etc by printing to PDF/PS.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureTodo|kdeui|entries to help menu and aboutdata pointing to UserBase entry and forum.kde.org|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|kdesu|Classes to help kde-apps open ports in the local firewall (via IPTables/IPFW, etc...)|tejas@gja.in|Tejas Dinkar}}&lt;br /&gt;
{{FeatureInProgress|katepart|Key mapping support for the vi input mode|ehamberg-hjå-gmail.com|Erlend Hamberg}}&lt;br /&gt;
{{FeatureTodo|katepart|Blockwise visual mode for the vi input mode|ehamberg-hjå-gmail.com|Erlend Hamberg}}&lt;br /&gt;
{{FeatureInProgress|katepart|Improve text objects in the vi input mode|ehamberg-hjå-gmail.com|Erlend Hamberg}}&lt;br /&gt;
{{FeatureTodo|katepart|Save registers and marks from the vi input mode|ehamberg-hjå-gmail.com|Erlend Hamberg}}&lt;br /&gt;
{{FeatureInDone|kio|Fix D-Bus timeout in SlaveBase when calling kpasswdserver|lemma@confuego.org|Michael Leupold}}&lt;br /&gt;
{{FeatureInProgress|kdeui|Provide a class for detecting modifier keystrokes and locked key states|lemma@confuego.org|Michael Leupold}}&lt;br /&gt;
{{FeatureInProgress|khtml|CSS3 Web Fonts|germain@ebooksfrance.org|Germain Garand}}&lt;br /&gt;
{{FeatureTodo|khtml|support more properties from CSS3 Backgrounds and Borders module|germain@ebooksfrance.org|Fredrik Höglund and/or Germain Garand}}&lt;br /&gt;
{{FeatureInProgress|khtml|support more properties from CSS3 Text module|germain@ebooksfrance.org|Germain Garand}}&lt;br /&gt;
{{FeatureInProgress|solid|Smart card reader support|cblauvelt@gmail.com|Christopher Blauvelt}}&lt;br /&gt;
{{FeatureTodo|KEmoticons|emit a signal when the emoticon theme is changed|brandon.ml@gmail.com|Carlo Segato}}&lt;br /&gt;
{{FeatureTodo|KLocale|Per-language number formats, and exposing them to modification by user.|caslav.ilic@gmx.net|Chusslove Illich}}&lt;br /&gt;
{{FeatureInProgress|KLocale|Extension of date formats to cover many resolutions (month-year, day-month, etc.)|caslav.ilic@gmx.net|Chusslove Illich}}&lt;br /&gt;
{{FeatureDone|kfile|KDirSortFilterProxyModel: make it possible to not always sort folders first|frank78ac@googlemail.com|Frank Reininghaus}}&lt;br /&gt;
{{FeatureTodo|buildsystem|Add support for crosscompiling|neundorf@kde.org|Alexander Neundorf}}&lt;br /&gt;
{{FeatureInProgress|buildsystem|Add support for building parts of modules separately|neundorf@kde.org|Alexander Neundorf}}&lt;br /&gt;
{{FeatureInProgress|webkit|Move KDE integration of QtWebKit into kdelibs (but not KPart!)|uwolfer@kde.org|Urs Wolfer}}&lt;br /&gt;
{{FeatureTodo|Nepomuk|New Resource URI schema for Files (to better handle removable storage (parts in KDE Base)|dw@danielwinter.de|Daniel Winter}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-workspace =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |Non-Plasma, Non-KWin&lt;br /&gt;
{{FeatureTodo|Kxkb|Support for languages in keyboard layout descriptions|rysin:AT:kde.org|Andriy Rysin}}&lt;br /&gt;
{{FeatureDone|PolicyKit integration|Import PolicyKit-KDE from extragear|drf54321@gmail.com|Dario Freddi}}&lt;br /&gt;
{{FeatureDone|Solid Actions KCM|Import Solid actions KControl module from playground|ben@eclipse.endoftheinternet.org|Ben Cooksley}}&lt;br /&gt;
{{FeatureInProgress|KControl4|Import refactor of systemsettings with Tree and Icon view support|ben(at)eclipse(dot)endoftheinternet(dot)org|Ben Cooksley and Mathias Soeken}}&lt;br /&gt;
{{FeatureDone|KSysguard|Added GetHotNewStuff support|a@b.com|name}}&lt;br /&gt;
{{FeatureInProgress|KActiveEdges|Split active screen edges from KWin|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureDone|Solid Wicd Engine|Import Solid Wicd engine from github/playground|drf54321@gmail.com|Dario Freddi}}&lt;br /&gt;
{{FeatureDone|Klipper|Made klipper automatically find possible actions based on filename copied to clipboard|dimsuz@gmail.com|Dmitry Suzdalev}}&lt;br /&gt;
{{FeatureDone|Klipper|Improved action adding/editing workflow by implementing a special dialog for editing a certain action|dimsuz@gmail.com|Dmitry Suzdalev}}&lt;br /&gt;
{{FeatureTodo|Klipper|Make action popup unobtrusive by showing menu only when user clicks an icon in systray. Icon itself should change to indicate availability of some actions on current clipboard|dimsuz@gmail.com|Dmitry Suzdalev}}&lt;br /&gt;
{{FeatureTodo|Font Installer KCM |Use PolicyKit for installtion of system-wide fonts.|craig@kde.org|Craig Drummond}}&lt;br /&gt;
{{FeatureInProgress|Font Settings KCM|Improved GUI for configuring anti-aliasing settings|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KRunner&lt;br /&gt;
{{FeatureInProgress|Nepomuk/Location Runners|Open with and service menu actions|ryan.bitanga@gmail.com|Ryan Bitanga}}&lt;br /&gt;
{{FeatureTodo|KRunner|Simple adaptive search|ryan.bitanga@gmail.com|Ryan Bitanga}}&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |Plasma - Priority Features&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |Plasma&lt;br /&gt;
{{FeatureTodo|Now Playing data engine|Support for MPD|kde:AT:randomguy3.me.uk|Alex Merry}}&lt;br /&gt;
{{FeatureTodo|Now Playing applet|Better design in panels|kde:AT:randomguy3.me.uk|Alex Merry}}&lt;br /&gt;
{{FeatureDone|Classic Menu Launcher|Allow to configure what submenus should be displayed|mail:AT:dipe.org|Sebastian Sauer}}&lt;br /&gt;
{{FeatureDone|Classic Menu Launcher|Allow to change the displayed icon|mail:AT:dipe.org|Sebastian Sauer}}&lt;br /&gt;
{{FeatureDone|Classic Menu Launcher|Optional recently used applications and System Settings menu|mail:AT:dipe.org|Sebastian Sauer}}&lt;br /&gt;
{{FeatureDone|Classic Menu Launcher|KDE3-like menu titles|mail:AT:dipe.org|Christian Loose}}&lt;br /&gt;
{{FeatureDone|Classic Menu Launcher|Context menu for menu items|mail:AT:dipe.org|Christian Loose}}&lt;br /&gt;
{{FeatureInProgress|Reusable video widget|A widget in libplasma that can play video and audio|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|Message box|A message box shown as an overlay over plasmoids|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureTodo|Panel spacers|A way to add/manage spacers directly from the panel controller|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|Systemtray protocol|New systemtray protocol beginnings: daemon and systemtray widget part|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|Default theme|Air: new default Plasma theme|notmart@gmail.com|Marco Martin and Nuno Pinheiro}}&lt;br /&gt;
{{FeatureInProgress|screensaver|security constraints|chanika@gmail.com|Chani}}&lt;br /&gt;
{{FeatureDone|keyboard shortcuts|configuration|chanika@gmail.com|Chani}}&lt;br /&gt;
{{FeatureTodo|icon plasmoid|make it suck less|chanika@gmail.com|Chani}}&lt;br /&gt;
{{FeatureDone|desktop|make a plasmoid when I paste stuff|chanika@gmail.com|Chani}}&lt;br /&gt;
{{FeatureDone|extenders|Add grouping support to extenders|r.scheepmaker@student.utwente.nl|Rob Scheepmaker}}&lt;br /&gt;
{{FeatureDone|systemtray|Group multiple jobs and notifications|r.scheepmaker@student.utwente.nl|Rob Scheepmaker}}&lt;br /&gt;
{{FeatureDone|systemtray|Job completed notifications, providing an sensible action ('open file' etc)|r.scheepmaker@student.utwente.nl|Rob Scheepmaker}}&lt;br /&gt;
{{FeatureInProgress|Kickoff|Add multiple columns support to Kickoff|talvik@gmail.com|Luiz Felipe Talvik}}&lt;br /&gt;
{{FeatureDone|folderview|Show tooltips with large previews and file metadata when hovering icons|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureDone|folderview|Show a popup view with the folder contents when hovering a folder in the icon view|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureDone|folderview|Add menu items to the context menu for showing the applet browser, adding panels, locking the screen, logging out etc.|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureDone|folderview|Add menu items to the drop menu for creating applets and setting the wallpaper|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureDone|folderview|Optionally show the window list menu when middle clicking the containment|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureDone|folderview|Implement support for keyboard navigation|jhahoneyk@gmail.com|Shantanu Tushar Jha}}&lt;br /&gt;
{{FeatureTodo|folderview|Accessing sub folders as sub menus in the popup view when the applet is on the panel|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureTodo|folderview|Offer to create applets based on the mimetype when pasting URL's in the containment|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureDone|virus wallpaper|Move from playground to kdeplasma-addons and port to the new plasma::wallpaper|asraniel@fryx.ch|Beat Wolf}}&lt;br /&gt;
{{FeatureDone|Plasma|Add press-down feedback to folderview|haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureDone|Time DataEngine|Integrate solar position dataengine to time dataengine|damu@iki.fi|Petri Damstén}}&lt;br /&gt;
{{FeatureTodo|Time DataEngine|Moon position/phase data|damu@iki.fi|Petri Damstén}}&lt;br /&gt;
{{FeatureDone|Akonadi DataEngine|Move Akonadi dataengine to kdeplasma-addons|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureDone|Social Desktop Plasmoid|Plasmoid displaying contacts via OpenDesktop|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureInProgress|Knowledge base Plasmoid|Plasmoid for searching and dispaying results from Open Collaboration Services / OpenDesktop|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureTodo|Tool tips|Extend tool tips API|emdeck@gmail.com|Michał Dutkiewicz}}&lt;br /&gt;
{{FeatureInProgress|Theme System|Better fallback mechanisms for transparent panels/dialogs without composition|david.nolden.kdevelop@art-master.de|David Nolden}}&lt;br /&gt;
{{FeatureDone|Plasmaclock library|Context menu for fast copying date and time strings to clipboard|emdeck@gmail.com|Michał Dutkiewicz}}&lt;br /&gt;
{{FeatureInProgress|Plasmaclock/Calendar|Display various information on the calendar using kholiday/akonadi|?|?}}&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KWin - Core&lt;br /&gt;
{{FeatureTodo|KWin|Redesign KWin system settings GUI|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureDone|KWin|ARGB support for decorations|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureTodo|KWin|Window docking/quick tiling|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureTodo|KWin|Internal desktop layout/pager support|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureTodo|KWin|Non-composited Present Windows|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureDone|KWin|Tabbox improvements|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureTodo|KWin/Plasma|Toggle Compositing Plasmoid|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KWin - Desktop Effects&lt;br /&gt;
{{FeatureTodo|KWin|Expand present windows into other effects (E.g. Desktop Grid)|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureTodo|KWin|OpenGL 3 compatible Shaders|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureDone|KWin|Improved cube reflection|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureTodo|KWin|Add and remove desktops in grid effect|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureTodo|KWin|Desktop Thumnails in Pager Tooltips|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureTodo|KWin|Slide In/Out effect|hein@kde.org|Eike Hein}}&lt;br /&gt;
{{FeatureDone|KWin|Fade desktop effect (Desktop switcher)|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureDone|KWin|Highlight window effect|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureDone|KWin|SlideBack effect|michael_zanetti@gmx.net|Michael Zanetti}}&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KDM&lt;br /&gt;
{{FeatureTodo|KDM|Plasma wallpaper|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdepimlibs =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|Buildsystem|Require OpenLDAP (coordinate with the Windows team)|winter@kde.org|Allen Winter}}&lt;br /&gt;
{{FeatureDone|Buildsystem|Require Cyrus-SASL (coordinate with the Windows team)|winter@kde.org|Allen Winter}}&lt;br /&gt;
{{FeatureTodo|libkleopatraclient|New interface library for kleopatra uiserver clients|marc@kdab.net|Marc Mutz}}&lt;br /&gt;
{{FeatureDone|pimtextedit|New library around text edits, to provide support for inline images in the signature editor, among others|mcguire@kde.org|Thomas McGuire}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdenetwork =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|Kopete|UPnp Support|mattr@kde.org|Matt Rogers}}&lt;br /&gt;
{{FeatureDone|Kopete|Updated contact list interface (uses Qt 4 rather than Qt 3)|mattr@kde.org|Matt Rogers}}&lt;br /&gt;
{{FeatureTodo|Kopete|Update Kopete to better support Decibel|kopete-devel@kde.org|Kopete Developers}}&lt;br /&gt;
{{FeatureTodo|Kopete|Jabber Jingle video support|detlev.casanova@gmail.com|Detlev Casanova}}&lt;br /&gt;
{{FeatureTodo|Kopete|Jabber Jingle ICE support|detlev.casanova@gmail.com|Detlev Casanova}}&lt;br /&gt;
{{FeatureInProgress|Kopete|Contacts plasmoid|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Kopete|Rich text support for ICQ|kedgedev@gmail.com|Roman Jarosz}}&lt;br /&gt;
{{FeatureTodo|Kopete|Add support for urls to Bonjour plugin|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureInProgress|KGet|MultiSource-Downloading|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureTodo|KGet|Support mms://-protocol, see https://launchpad.net/libmms|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureTodo|KGet|MLDonkey-Plugin based on libkmldonkey|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureTodo|KGet|Advanced Details|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureInProgress|KRDC|NX support|gdavid.devel@gmail.com|David Gross}}&lt;br /&gt;
{{FeatureTodo|KRDC|Minimal-clutter mode to optimize screen real estate usage|gpothier@gmail.com|Guillaume Pothier}}&lt;br /&gt;
{{FeatureInProgress|Telepathy|Telepathy-specification compliant Account Manager using KWallet to store account data|grundleborg@googlemail.com|George Goldberg}}&lt;br /&gt;
{{FeatureInProgress|Telepathy|Account Editing UI for Telepathy|grundleborg@googlemail.com|George Goldberg}}&lt;br /&gt;
{{FeatureInProgress|Plasma|Network Manager Applet|wstephenson@kde.org|Will Stephenson}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdepim =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|Akonadi|Migration of contacts and calendar data from KResource to Akonadi ([http://techbase.kde.org/Projects/PIM/Akonadi#Scheduled_for_4.3 Details])|kde-pim@kde.org|Volker Krause, Kevin Krammer, Tobias Koenig}}&lt;br /&gt;
{{FeatureInProgress|Akregator|Support for syncing the feed list with Google Reader |osterfeld@kde.org|Frank Osterfeld}}&lt;br /&gt;
{{FeatureDone|[http://www.astrojar.org.uk/kalarm KAlarm]|Add export of alarms to a new calendar file|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|[http://www.astrojar.org.uk/kalarm KAlarm]|Allow configuration of default deferral time interval|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|[http://www.astrojar.org.uk/kalarm KAlarm]|Accept drag-and-drop of Todo entries to create a new alarm|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|[http://www.astrojar.org.uk/kalarm KAlarm]|Show command execution error indication in alarm list|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|[http://www.astrojar.org.uk/kalarm KAlarm]|Add option to spread alarm windows across screen|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|Akonadi|Google calendar and contacts resource|cavalcantii@gmail.com|Adenilson Cavalcanti}}&lt;br /&gt;
{{FeatureTodo|[http://www.astrojar.org.uk/kalarm KAlarm]|Port to Akonadi|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureTodo|[http://kblogger.pwsp.net KBlogger]|KBlogger, a blogging application|christian_weilbach@.web.de|Christian Weilbach}}&lt;br /&gt;
{{FeatureTodo|KBlogger|Port to use KRichTextEdit (Or KMEditor)|steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureInProgress|KContactManager|A new Akonadi-based address book to replace KAddressbook|tokoe@kde.org|Tobias Koenig}}&lt;br /&gt;
{{FeatureInProgress|Kjots| Create and port to akonadi model. |steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureTodo|Kjots| Add support for nepomuk including tagging, possibly storage, and linking. Also a nepomuk tag proxy model for representing the structure as tagged.|steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureInProgress|Kjots| Create plasmoid capable of showing the entire tree, or a single book.|steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureTodo|Kjots| Email KJots pages using default mail client ({{bug|124509}}. |steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureInProgress|Kleopatra|OpenPGP support|marc@kdab.net|Marc Mutz (Gpg4win)}}&lt;br /&gt;
{{FeatureDone|KMail|Add support for HTML images|yez@familieschepers.nl|Edwin Schepers}}&lt;br /&gt;
{{FeatureTodo|KMail|Use asynchronous Kleo|marc@kdab.net|Marc Mutz}}&lt;br /&gt;
{{FeatureTodo|KMail|Save metadata about attachments to Nepomuk when saving them|onurf@su.sabanciuniv.edu|Ismail Onur Filiz}}&lt;br /&gt;
{{FeatureTodo|KNode|Port to use KRichTextEdit (Or KMEditor)|steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureTodo|Kontact|Support for Kontact wide profiles|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureTodo|Kontact|Tip-of-the-Day summary|molkentin@kde.org|Daniel Molkentin}}&lt;br /&gt;
{{FeatureTodo|KOrganizer|Support for extended free-busy lists|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureInProgress|KPilot|Port old conduits to new base conduit architecture and KDE4/Qt4|jkasper@kde.org|Jason 'vanRijn' Kasper}}&lt;br /&gt;
{{FeatureInProgress|KPilot|Finish Keyring conduit, base conduit code and test cases, category syncing|jkasper@kde.org|Jason 'vanRijn' Kasper}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeutils =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|printer-applet|Restore feature parity with KDEPrint3 where possible.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureInProgress|Okteta|Add hash calculator tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureDone|Okteta|Show tooltip over bookmarks|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureDone|Okteta|Add filesystem browser tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureDone|Okteta|Add loaded documents tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureDone|Okteta|Add bookmark managing tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureInProgress|Okteta|Show selection range in status bar|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|kwalletmanager|Move kwalletmanager to the Model/View architecture and redesign the UI.|lemma@confuego.org|Michael Leupold}}&lt;br /&gt;
{{FeatureDone|kdelirc|Bring back kdelirc, the KDE frontend to the Linux Infrared Control system|michael_zanetti@gmx.net|Michael Zanetti}}&lt;br /&gt;
{{FeatureDone|ark|Improve support for pure gzip and bzip2 files (read only)|kubito@gmail.com|Raphael Kubo da Costa}}&lt;br /&gt;
{{FeatureDone|ark| Finish cliinterface  |haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureDone|ark| Add lots of more meaningful error messages  |haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureDone|ark| Add support for zip archives (cli-based, ie. info-zip) |haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureDone|ark| Make the mimetype selection dialog more user-friendly |kubito@gmail.com|Raphael Kubo da Costa}}&lt;br /&gt;
{{FeatureDone|ark| Make the file list obey KDE's mouse settings |kubito@gmail.com|Raphael Kubo da Costa}}&lt;br /&gt;
{{FeatureDone|ark| Add support for ACE archives |haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureDone|KGpg| Port to new systray framework |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureTodo|KGpg| Clean up editor GUI and classes |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureTodo|KGpg| Make keyserver operations more flexible |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureDone|KGpg| Port key importing to be a transaction |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureDone|KGpg| Port keyserver query to be a transaction |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureDone|KGpg| Make &amp;amp;quot;import key&amp;amp;quot; also work with keyservers |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureDone|KGpg| Integrate solid to know when a online action (e.g. keyserver query) does not make sense |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureInProgress|KTimer| Redesign UI |zahl@transbay.net|A. L. Spehr}}&lt;br /&gt;
{{FeatureTodo|KTimer| Add hours and seconds to counter |zahl@transbay.net|A. L. Spehr}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebindings =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdegames =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|libkdegames|Convert old PNG based card decks to SVG with embedded bitmaps.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Add Curse of the Mummy game (20 levels), contributed by Steve Mann.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Major rewrite, mainly of the game engine and editor.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|More accurate and reliable pause and resume.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureTodo|KGoldrunner|Save and reload at any instant in a game.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Record and replay games.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Run demos ... especially at startup or as hints for difficult levels.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureTodo|KGoldrunner|Hot-new-stuff support for themes and game sets.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureTodo|KGoldrunner|Integration of the Scavenger game (180 new levels) and its rule-set.  This would also involve allowing different grid dimensions for different games, as a feature of the new game engine.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureTodo|KGoldrunner|Better support for beginners, such as graphical cues for false bricks and hidden ladders, extra messages with &amp;quot;don't tell me this again&amp;quot;, etc.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureInProgress|Killbots|Add &amp;quot;sonic screwdriver&amp;quot; functionality.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureTodo|Killbots|Add a tutorial for beginners.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureTodo|Kolf|Replace with Kolf 2 (please help!)|majewsky@gmx.net|Stefan Majewsky}}&lt;br /&gt;
{{FeatureDone|KPatience|Add a command line switch to manually launch a game of a certain type.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureDone|KPatience|Add an option to save the game state at shutdown to be automatically be restored on next run.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureDone|KPatience|Add the ability to return to the game selection screen after selecting a game.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureInProgress|KPatience|Add a &amp;quot;Deal&amp;quot; action to those game types that support dealing cards from the deck into play.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureTodo|KsirK|rewrite AI code or at least correct most problems related in bug #170777. Volunteers wanted!|kleag@free.fr|Gaël de Chalendar}}&lt;br /&gt;
{{FeatureTodo|KsirK|Previous/Next in start new game as described in bug #170774|kleag@free.fr|Gaël de Chalendar}}&lt;br /&gt;
{{FeatureTodo|KsirK|Polish the skin editor (doc, contextual help, ...)|kleag@free.fr|Gaël de Chalendar}}&lt;br /&gt;
{{FeatureTodo|KsirK|Boost playing over Jabber|kleag@free.fr|Gaël de Chalendar}}&lt;br /&gt;
{{FeatureTodo|KSpaceDuel|rewrite AI code|dirkrathlev@gmx.de|Dirk Rathlev}}&lt;br /&gt;
{{FeatureDone|ktron|Port and remake the KTron game for KDE 4.3|legolas@legolasweb.nl|Stas Verberkt}}&lt;br /&gt;
{{FeatureTodo|KSudoku|Import the new logic engine as a library|joselb@gmx.net|Johannes Bergmeier}}&lt;br /&gt;
{{FeatureTodo|KSudoku|Port KSudoku to the new engine|joselb@gmx.net|Johannes Bergmeier}}&lt;br /&gt;
{{FeatureTodo|KSudoku|Add interactive help|joselb@gmx.net|Johannes Bergmeier}}&lt;br /&gt;
{{FeatureDone|Bovo|Add new AI|pelladigabor@gmail.com|Pelladi Gabor}}&lt;br /&gt;
{{FeatureDone|Bovo|Computer thinking doesn't block the GUI|pelladigabor@gmail.com|Pelladi Gabor}}&lt;br /&gt;
{{FeatureTodo|libkdegames|Import KGGZ libraries from GGZ SVN|spillner@kde.org|Josef Spillner}}&lt;br /&gt;
{{FeatureInProgress|libkmahjongg|Introduce new tileset, Bamboo.|mw_triad@users.sourceforge.net|Matthew Woehlke}}&lt;br /&gt;
{{FeatureDone|KMahjongg|Add 70 additional levels contributed by users|piacentini at kde.org|Mauricio Piacentini}}&lt;br /&gt;
{{FeatureTodo|KMahjongg|Add start page with level selection|piacentini at kde.org|Mauricio Piacentini}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeadmin =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|KGrubEditor|Integrate KGrubEditor into KDE Admin http://sourceforge.net/projects/kgrubeditor. Approved by Nicolas Ternisien &amp;lt;nicolas.ternisien@gmail.com&amp;gt; |artemis_dot_fowl_dot_2007@gmail_dot_com|Konstantinos Smanis}}&lt;br /&gt;
{{FeatureTodo|Guidance|Port Guidance to KDE 4, and move it to KDE Admin http://www.simonzone.com/software/guidance/.|nicolas.ternisien@gmail.com|Nicolas Ternisien}}&lt;br /&gt;
{{FeatureTodo|system-config-printer-kde|Restore feature parity with KDEPrint3 where possible.|john@layt.net|john Layt, Jonathan Riddell}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdesdk =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|Lokalize|XLIFF support|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureInProgress|Lokalize|various Translation Memory enhancements|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureInProgress|Lokalize|Kross-based scripting|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureTodo|Lokalize|QA: glossary checklists|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureTodo|KAppTemplate|Add DBUS support in templates|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureDone|Umbrello|Replace all q3 widgets in the refactoring assistant|andi.fischer@hispeed.ch|Andi Fischer}}&lt;br /&gt;
{{FeatureInProgress|Umbrello|Merge in SoC qgraphicsview port branch|krishna.ggk@gmail.com|Gopala Krishna A}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeedu =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|KAlgebra|Export to MathML Presentation Markup|aleixpol@gmail.com|Aleix Pol}}&lt;br /&gt;
{{FeatureTodo|KAlgebra|Some integration with the new KFormula widget|aleixpol@gmail.com|Aleix Pol}}&lt;br /&gt;
{{FeatureInProgress|KAlgebra|Add ability to draw 3D plots in cylindrical and spherical coordinates.|orgyforever@gmail.com|Percy Camilo Triveño Aucahuasi}}&lt;br /&gt;
{{FeatureTodo|Kalzium|Port Kalzium's periodic table to use new QGraphicsView.|marcus@cryos.org|Marcus D. Hanwell}}&lt;br /&gt;
{{FeatureTodo|Kalzium|Separate compound viewer/editor application from Kalzium.|marcus@cryos.org|Marcus D. Hanwell}}&lt;br /&gt;
{{FeatureTodo|Kalzium|Remove the libavogadro snapshot, depend on libavogadro directly.|jacob@math.jussieu.fr|Benoit Jacob}}&lt;br /&gt;
{{FeatureTodo|Kalzium|Plasmoid to access Kalzium database|cniehaus@kde.org|Carsten Niehaus}}&lt;br /&gt;
{{FeatureTodo|KEduca|Rewrite of the classic test writing/taking application|matt@milliams.com|Matt Williams}}&lt;br /&gt;
{{FeatureTodo|KHangMan|Integrate an editor|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KHangMan|Plasmoid|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KHangMan|Theme manager|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|Kig|Properties dialog for objects.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Kig|Improve construction of bisect lines.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Kig|Improve feedback when constructing objects.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Kig|More geometric objects.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Kig|Script objects as macros (to be reused more than once).|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Kig|Improve the Cabri import filter.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Kig|Improve the new/edit script wizard.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|KLettres|Visual Indicator when letter is wrong|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KLettres|Number support|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KLettres|Theme manager|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KStars|Marble widget for Geolocation tool|mboquien@free.fr|Médéric Boquien}}&lt;br /&gt;
{{FeatureTodo|KStars|Better printed star charts|kstars@30doradus.org|Jason Harris}}&lt;br /&gt;
{{FeatureTodo|KStars|Sync KStars time from device|mutlaqja@ikarustech.com|Jasem Mutlaq}}&lt;br /&gt;
{{FeatureTodo|KStars|Better rendering of comets/asteroids|kstars@30doradus.org|Jason Harris}}&lt;br /&gt;
{{FeatureTodo|KStars|Texture mapping of the skymap???|kstars@30doradus.org|Jason Harris}}&lt;br /&gt;
{{FeatureTodo|KStars|Improve Observing List Wizard|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Display Comet Magnitudes whenever possible|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Information links in-place for each technical term|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Tool to suggest star-hopping techniques???|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Extend conjunction tool to have one object unspecified, but have a genre of objects specified instead|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Extend conjunction tool to predict oppositions and occultations|prak902000@gmail.com|Prakash Mohan}}&lt;br /&gt;
{{FeatureTodo|KStars|Simulate Lunar Eclipses|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Simulate Satellites and Iridium Flares|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Social and Geographical Integration for KStars|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Merge SAC with NGC / IC as default catalog|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KTurtle|Optional rulers/grid for canvas units|piacentini@kde.org|Mauricio Piacentini}}&lt;br /&gt;
{{FeatureTodo|Marble|Export map to MxN pixel bitmap|inge@lysator.liu.se|Inge Wallin}}&lt;br /&gt;
{{FeatureInProgress|Marble|Bookmarks||Gaurav Gupta}}&lt;br /&gt;
{{FeatureInProgress|Marble|Planet Filter||Harshit Jain}}&lt;br /&gt;
{{FeatureInProgress|Marble|Time KML support||Harshit Jain}}&lt;br /&gt;
{{FeatureTodo|Marble|Support for MarbleWidget::setEnabled( bool )|inge@lysator.liu.se|Inge Wallin}}&lt;br /&gt;
{{FeatureTodo|Marble|Map Contents translation|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Editing GeoDataFeatures|ewoerner@kde.org|Eckhart Wörner}}&lt;br /&gt;
{{FeatureTodo|Marble|Update Map (&amp;quot;F5&amp;quot;)|jensmh@gmx.de|Jens-Michael Hoffmann}}&lt;br /&gt;
{{FeatureInProgress|Marble|Layer Management Class|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Plugin architecture for map layers|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Extending GeoPainter|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Marble Runners|hdevalence@gmail.com|Henry de Valence}}&lt;br /&gt;
{{FeatureInProgress|Marble|GeoClue Integration |ewoerner@kde.org|Eckhart Wörner}}&lt;br /&gt;
{{FeatureInProgress|Marble|Routing |jensmh@gmx.de|Jens-Michael Hoffmann}}&lt;br /&gt;
{{FeatureInProgress|Marble|More map providers (WMS?) |jensmh@gmx.de|Jens-Michael Hoffmann}}&lt;br /&gt;
{{FeatureInProgress|Marble|Winkel Triple projection / equivalent |hdevalence@gmail.com|Henry de Valence}}&lt;br /&gt;
{{FeatureInProgress|Marble|Marble WorldClock Plasmoid|hdevalence@gmail.com|Henry de Valence}}&lt;br /&gt;
{{FeatureDone|Marble|Qt-Version settings dialog|hdevalence@gmail.com|Bastian Holst}}&lt;br /&gt;
{{FeatureInProgress|Marble|Panoramio Support||Bastian Holst}}&lt;br /&gt;
{{FeatureInProgress|Marble|Twitter Plugin||Shashank Singh}}&lt;br /&gt;
{{FeatureInProgress|Marble|TimeZone Support|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureDone|Marble|Support for other planets and the moon|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureDone|Marble|DGML2 Support|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureDone|Marble|Support for imperial units|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureDone|Marble|Graticule plugin|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|MeasureTool plugin|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureDone|Marble|Port authors list from the Qt-About dialog to the KDE-About dialog|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Basic KML support|ps_ml@gmx.de|Patrick Spendrin}}&lt;br /&gt;
{{FeatureInProgress|Marble|GeoData Model/View Visualization|ps_ml@gmx.de|Patrick Spendrin}}&lt;br /&gt;
{{FeatureInProgress|Marble|More generic projection support|inge@lysator.liu.se|Inge Wallin}}&lt;br /&gt;
{{FeatureInProgress|Marble|Network plugins|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureDone|Marble|Geolocation plugins|ewoerner@kde.org|Eckhart Wörner}}&lt;br /&gt;
{{FeatureInProgress|Parley|Declensions|frederik.gladhorn@kdemail.net|Frederik Gladhorn}}&lt;br /&gt;
{{FeatureTodo|Step|Improve GUI for creating softbody|ksvladimir@gmail.com|Vladimir Kuznetsov}}&lt;br /&gt;
{{FeatureTodo|Step|Use common constraints handling code for collisions|ksvladimir@gmail.com|Vladimir Kuznetsov}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|JuK|Remove Qt/KDE3 support lib requirements|michael.pyne@kdemail.net|Michael Pyne}}&lt;br /&gt;
{{FeatureTodo|JuK|Allow setting covers directly from URLs supported by KIO - drag/drop already allows this however|michael.pyne@kdemail.net|Michael Pyne}}&lt;br /&gt;
{{FeatureDone|JuK|Use XCOMPOSITE real transparency when available for the track announcement popup|michael.pyne@kdemail.net|Michael Pyne}}&lt;br /&gt;
{{FeatureTodo|JuK|Allow disabling crossfade|michael.pyne@kdemail.net|Michael Pyne}}&lt;br /&gt;
{{FeatureInProgress|KMix|Allow arbitrary ordering of controls|esken@kde.org|Christian Esken}}&lt;br /&gt;
{{FeatureTodo|KMix|Nicer OSD (icon, mute state)|esken@kde.org|Christian Esken}}&lt;br /&gt;
{{FeatureTodo|KMix|Amend Keyboard Shortcuts|esken@kde.org|Christian Esken}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeaccessibility =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdegraphics =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|Okular|Generator for Mobipocket format|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureDone|strigi|Thumbnailer and analyzer for Mobipocket format|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureDone|strigi|Analyzer for epub format|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureTodo|Okular|Sound annotations.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Okular|Link annotations.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Okular|Caret annotations.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Okular|Support .snp and .emf file formats|bradh@kde.org|Brad Hards}}&lt;br /&gt;
{{FeatureTodo|Okular|Synctex support.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Okular|Rich-text for annotations text.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|kruler|More ruler shapes.|msoeken_at_tzi_dot_de|Mathias Soeken}}&lt;br /&gt;
{{FeatureDone|kruler|Configurable shortcuts.|msoeken_at_tzi_dot_de|Mathias Soeken}}&lt;br /&gt;
{{FeatureTodo|kruler|DBUS Interface.|msoeken_at_tzi_dot_de|Mathias Soeken}}&lt;br /&gt;
{{FeatureDone|kruler|Transparent background and opaque drawing of the lines and numbers (Qt 4.5).|msoeken_at_tzi_dot_de|Mathias Soeken}}&lt;br /&gt;
{{FeatureInProgress|gwenview|Folder view.|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureInProgress|gwenview|Make thumbnail bar more customizable (orientation, number of rows/columns).|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureInProgress|gwenview|Add back video support.|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureInProgress|gwenview|Improve history handling.|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureDone|libksane|Add &amp;quot;Auto selection&amp;quot; after preview.|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureInProgress|Okular|Less intrusive search with find bar.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Okular|Better detection of where the Okular KPart is embedded into, and adapt the UI accordingly (sidebar, actions, etc).|pino@kde.org|Pino Toscano}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-runtime =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|drkonqi|DrKonqi new dialog UI + Guided crash reporting tool|andresbajotierra@gmail.com|Dario Andres|}}&lt;br /&gt;
{{FeatureDone|drkonqi|Backtrace parsing and rating|gkiagiad@csd.uoc.gr|George Kiagiadakis|}}&lt;br /&gt;
{{FeatureDone|drkonqi|DrKonqi native english texts + guide|andresbajotierra@gmail.com|Dario Andres|}}&lt;br /&gt;
{{FeatureDone|kpasswdserver|Fix D-Bus timeout in kpasswdserver using an async API|lemma@confuego.org|Michael Leupold|}}&lt;br /&gt;
{{FeatureDone|network:/ KIOSlave|Move to kdebase/runtime|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-apps =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|konq_thumbnails|Basic thumbnail support for KHTMLPart views(almost finished, now cleanup code)|yinshuiboy@gmail.com|Siyuan Cao}}&lt;br /&gt;
{{FeatureTodo|konq_thumbnails|thumbnail support for all KonqFrame|yinshuiboy@gmail.com|Siyuan Cao}}&lt;br /&gt;
{{FeatureTodo|konq_thumbnails|more thumbnail page styles and customization|yinshuiboy@gmail.com|Siyuan Cao}}&lt;br /&gt;
{{FeatureTodo|konqueror|&amp;quot;Places&amp;quot; sidebar to replace KDE3's &amp;quot;media:/&amp;quot;|kdedevel_at_etotheipiplusone_dot_com|Simon St James}}&lt;br /&gt;
{{FeatureTodo|konqueror|Move Dolphin's Treeview to libkonq so that it can be used in Konqueror|kdedevel_at_etotheipiplusone_dot_com|Simon St James}}&lt;br /&gt;
{{FeatureTodo|konqueror|Move Dolphin's Information panel to libkonq so that it can be used in Konqueror|kdedevel_at_etotheipiplusone_dot_com|Simon St James}}&lt;br /&gt;
{{FeatureInProgress|dolphin|Matthias's Audio/ Video preview in Information panel|kdedevel_at_etotheipiplusone_dot_com|Simon St James}}&lt;br /&gt;
{{FeatureTodo|dolphin|Allow to configure and download service menus|peter.penz@gmx.at|Peter Penz}}&lt;br /&gt;
{{FeatureInProgress|dolphin|Nepomuk search integration|peter.penz@gmx.at|Peter Penz}}&lt;br /&gt;
{{FeatureInProgress|dolphin|Use Nepomuk to receive the meta data for the Information panel|peter.penz@gmx.at|Peter Penz}}&lt;br /&gt;
{{FeatureDone|dolphin|Let user choose if folders are always shown first or not|frank78ac@googlemail.com|Frank Reininghaus}}&lt;br /&gt;
{{FeatureInProgress|konsole|Get a working DBus interface|kurt.hindenburg@gmail.com|Kurt Hindenburg}}&lt;br /&gt;
{{FeatureTodo|konsole|Redesign manage profile dialog to allow users to sort profiles|kurt.hindenburg@gmail.com|Kurt Hindenburg}}&lt;br /&gt;
{{FeatureTodo|konsole|Allow window/terminal size to be set in profiles|kurt.hindenburg@gmail.com|Kurt Hindenburg}}&lt;br /&gt;
{{FeatureInProgress|libkonq|Add support in for pluginbased Drag'n'drop popup menus (and in my case, an &amp;quot;extract here&amp;quot; menu on dragged archives)|haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureInProgress|konqueror|History browser as independent from sidebar, and improved (different grouping style, sorting, etc).|pino@kde.org|Pino Toscano}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeplasma-addons =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Video Plasmoid|a media player widget complete with a basic dbus interface|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureDone|System Load Viewer|A tiny monitor for CPU, RAM and swap usage (known as System Monitor in KDE3)|dhaumann@kde.org|Dominik Haumann}}&lt;br /&gt;
{{FeatureDone|Comic Plasmoid|Clean up the config-dialog|mat69@gmx.net|Matthias Fuchs}}&lt;br /&gt;
{{FeatureTodo|Comic Plasmoid|Port to popup applet|mat69@gmx.net|Matthias Fuchs}}&lt;br /&gt;
{{FeatureDone|PoTD Engine|Import PoTD engine - is in kdereview|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureDone|Metadata Engine|Import Metadata engine - is in kdereview|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|Frame Plasmoid|Display Picture Metadata|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|Frame Plasmoid|Add url as setting|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|Frame Plasmoid|Add buttons Next/Previous/pause in slideshow mode|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureDone|wallpapers|Mandelbrot fractal wallpaper plugin|jacob.benoit.1@gmail.com|Benoît Jacob}}&lt;br /&gt;
{{FeatureInProgress|Weather Wallpaper|Add user-defined wallpapers|echidnaman@kubuntu.org|Jonathan Thomas}}&lt;br /&gt;
{{FeatureInProgress|wallpapers|Marble desktop globe wallpaper|sasch.pe@gmx.de|Sascha Peilicke}}&lt;br /&gt;
{{FeatureTodo|FileWatcher|Highlighting support|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureTodo|Now Playing|New widget UI|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureTodo|Life|Colors|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureTodo|Life|Fading|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Timer|Restore countdown after a shutdown|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Timer|Improved notifications|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureDone|Timer|Hide seconds|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureTodo|Unit converter|Improved widget UI|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|plasmaweather lib|Make plasmaweather library and use it in lcd weather, weather and weather wallpaper|damu@iki.fi|Petri Damstén}}&lt;br /&gt;
{{FeatureDone|LCD Weather|Tooltip|damu@iki.fi|Petri Damstén}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeartwork =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|screensavers|port to wallpaper packages|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/KIO_Slaves/Using_KIO_Slaves_in_your_Program</id>
		<title>Development/Tutorials/KIO Slaves/Using KIO Slaves in your Program</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/KIO_Slaves/Using_KIO_Slaves_in_your_Program"/>
				<updated>2009-05-09T22:36:55Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: Add syntax highlighting to the code blocks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In this chapter we write a simple browser to show how easy it is to use kioslaves in KDE 4. The browser will download the page www.kde.org and show the html sourcecode. It will not render html - remember this is a programming demo.&lt;br /&gt;
The purpose of kioslaves is to have access to a given storage or data representation without the need for blocking calls. This is solved via QT's signal/slot mechanism: Once the data has arrived, e.g. from a web page, it triggers a signal. The signal is connected to the respective slot and can start processing the data.&lt;br /&gt;
&lt;br /&gt;
= The files =&lt;br /&gt;
&lt;br /&gt;
== main.cpp ==&lt;br /&gt;
&amp;lt;code cppqt&amp;gt;&lt;br /&gt;
#include &amp;lt;QString&amp;gt;&lt;br /&gt;
#include &amp;lt;kapplication.h&amp;gt;&lt;br /&gt;
#include &amp;lt;kaboutdata.h&amp;gt;&lt;br /&gt;
#include &amp;lt;klocalizedstring.h&amp;gt;&lt;br /&gt;
#include &amp;lt;kmessagebox.h&amp;gt;&lt;br /&gt;
#include &amp;lt;kcmdlineargs.h&amp;gt;&lt;br /&gt;
#include &amp;lt;KMainWindow&amp;gt;&lt;br /&gt;
#include &amp;lt;browser.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main (int argc, char *argv[])&lt;br /&gt;
{&lt;br /&gt;
  // KAboutData (const QByteArray &amp;amp;appName, const QByteArray &amp;amp;catalogName, const KLocalizedString &amp;amp;programName, const QByteArray &amp;amp;version,&lt;br /&gt;
  const QByteArray&amp;amp; ba=QByteArray(&amp;quot;test&amp;quot;);&lt;br /&gt;
  const KLocalizedString name=ki18n(&amp;quot;myName&amp;quot;);&lt;br /&gt;
  KAboutData aboutData( ba, ba, name, ba, name);&lt;br /&gt;
  KCmdLineArgs::init( argc, argv, &amp;amp;aboutData );&lt;br /&gt;
  KApplication khello;&lt;br /&gt;
&lt;br /&gt;
  Browser *mw = new Browser();&lt;br /&gt;
  mw-&amp;gt;show();&lt;br /&gt;
  khello.exec();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
The purpose of main is to create a Browser instance and hold it open while the KDE event loop is running (i.e. the KDE program is ready).&lt;br /&gt;
&lt;br /&gt;
== browser.h == &lt;br /&gt;
&amp;lt;code cppqt&amp;gt;&lt;br /&gt;
#ifndef KDE4START_H__&lt;br /&gt;
#define KDE4START_H__&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;kmainwindow.h&amp;gt;&lt;br /&gt;
#include &amp;lt;kio/scheduler.h&amp;gt;&lt;br /&gt;
#include &amp;lt;kurl.h&amp;gt;&lt;br /&gt;
#include &amp;lt;kio/jobclasses.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
class Browser : public QWidget&lt;br /&gt;
{&lt;br /&gt;
  Q_OBJECT&lt;br /&gt;
  public:&lt;br /&gt;
    Browser();&lt;br /&gt;
  public slots:&lt;br /&gt;
    void slotButtonClicked();&lt;br /&gt;
    void dataishere(KIO::Job *,const QByteArray &amp;amp;);&lt;br /&gt;
};&lt;br /&gt;
#endif&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== browser.cpp ==&lt;br /&gt;
&amp;lt;code cppqt&amp;gt;&lt;br /&gt;
#include &amp;lt;kio/scheduler.h&amp;gt;&lt;br /&gt;
#include &amp;lt;kurl.h&amp;gt;&lt;br /&gt;
#include &amp;lt;kio/jobclasses.h&amp;gt;&lt;br /&gt;
#include &amp;lt;kdebug.h&amp;gt;&lt;br /&gt;
#include &amp;lt;browser.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
class TransferJob;&lt;br /&gt;
&lt;br /&gt;
Browser::Browser() : QWidget(NULL)&lt;br /&gt;
{&lt;br /&gt;
  slotButtonClicked();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void Browser::slotButtonClicked()&lt;br /&gt;
{&lt;br /&gt;
  kDebug() &amp;lt;&amp;lt; &amp;quot;entering function&amp;quot;;&lt;br /&gt;
  // creating a kioslave&lt;br /&gt;
  KIO::TransferJob *job = KIO::get(KUrl(&amp;quot;http://www.kde.org&amp;quot;));&lt;br /&gt;
  connect (job, SIGNAL(  data(KIO::Job *, const QByteArray &amp;amp; )), this, SLOT(dataishere(KIO::Job *,const QByteArray &amp;amp;)));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void Browser::dataishere(KIO::Job *,const QByteArray &amp;amp; data )&lt;br /&gt;
{&lt;br /&gt;
  kDebug() &amp;lt;&amp;lt; &amp;quot;data is here&amp;quot;;&lt;br /&gt;
  kDebug() &amp;lt;&amp;lt; data;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
As discussed, the Browser class does not do a busy wait for the data to arrive from the web. Instead, it uses the http kioslave's signal data by connecting it to the slot dataishere. Dataishere gets the http transmission via its parameter data and just outputs it. That's it - no blocking, no busy wait!&lt;br /&gt;
&lt;br /&gt;
== CMakeLists.txt ==&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
PROJECT( browser )&lt;br /&gt;
FIND_PACKAGE(KDE4 REQUIRED)&lt;br /&gt;
INCLUDE_DIRECTORIES( ${KDE4_INCLUDES} . )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SET(kde4startSources main.cpp browser.cpp )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
KDE4_ADD_EXECUTABLE(browser ${kde4startSources} )&lt;br /&gt;
&lt;br /&gt;
TARGET_LINK_LIBRARIES(browser ${KDE4_KDEUI_LIBS} ${KDE4_KPARTS_LIBS} )&lt;br /&gt;
&lt;br /&gt;
install(TARGETS browser  DESTINATION ${BIN_INSTALL_DIR} )&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Kompile, link and run it =&lt;br /&gt;
 cmake . &amp;amp;&amp;amp; make &amp;amp;&amp;amp; ./browser&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.4_Feature_Plan</id>
		<title>Schedules/KDE4/4.4 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.4_Feature_Plan"/>
				<updated>2009-05-07T04:38:34Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* kdeutils */ capitalization++&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the 4.4 release.&lt;br /&gt;
&lt;br /&gt;
See also:&lt;br /&gt;
* [[Schedules/KDE4/4.4 Release Schedule]]&lt;br /&gt;
* [[Schedules/KDE4/4.4 Release Goals]]&lt;br /&gt;
* [[Schedules/KDE4/4.3 Feature Plan]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Legend:&lt;br /&gt;
* todo =&amp;gt; not started yet&lt;br /&gt;
* in-progress =&amp;gt; started, but not completed yet&lt;br /&gt;
* done =&amp;gt; completed&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Other =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdelibs =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-workspace =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |Non-Plasma, Non-KWin&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KRunner&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |Plasma - Priority Features&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |Plasma&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KWin - Core&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KWin - Desktop Effects&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KDM&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdepimlibs =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdenetwork =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdepim =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeutils =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|Okteta|add editing capability to Decoding table |kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add Kate-like search tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for import by drop, both url and data|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|copy again puts also a value or char variant of the data to clipboard|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for memory mapping of files|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add further export formats like s-record and intel 16|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for jobs like io, printing, string search or filter|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Make dialogs for Goto, Search &amp;amp; Replace embedded|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add Okular like embedded notifications|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks and other view settings for next load|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add dialog to set selection range|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add global toggle option for the offset display, hex or decimal|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Make the Okteta KPart use libkakao, and rename libkakao|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|KGpg|Make keyserver actions possible to use on multiple keyservers at once|kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureTodo|KGpg|Add &amp;amp;quot;caff&amp;amp;quot; mode for keysigning|kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureTodo|KGpg|Allow searching for trust path in keyring|kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureTodo|Ark|Add an options dialog (maybe)|haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureTodo|Ark|Support for custom options from the compression interface (eg. a slider for selecting compression level for rar files)|haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureTodo|Ark|Add support for ACE archives|haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebindings =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdegames =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeadmin =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdesdk =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeedu =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeaccessibility =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdegraphics =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-runtime =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-apps =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeplasma-addons =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeartwork =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.4_Feature_Plan</id>
		<title>Schedules/KDE4/4.4 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.4_Feature_Plan"/>
				<updated>2009-05-07T04:38:03Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* kdeutils */ Imported Ark plans for 4.2 and 4.3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the 4.4 release.&lt;br /&gt;
&lt;br /&gt;
See also:&lt;br /&gt;
* [[Schedules/KDE4/4.4 Release Schedule]]&lt;br /&gt;
* [[Schedules/KDE4/4.4 Release Goals]]&lt;br /&gt;
* [[Schedules/KDE4/4.3 Feature Plan]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Legend:&lt;br /&gt;
* todo =&amp;gt; not started yet&lt;br /&gt;
* in-progress =&amp;gt; started, but not completed yet&lt;br /&gt;
* done =&amp;gt; completed&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Other =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdelibs =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-workspace =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |Non-Plasma, Non-KWin&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KRunner&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |Plasma - Priority Features&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |Plasma&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KWin - Core&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KWin - Desktop Effects&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KDM&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdepimlibs =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdenetwork =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdepim =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeutils =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|Okteta|add editing capability to Decoding table |kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add Kate-like search tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for import by drop, both url and data|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|copy again puts also a value or char variant of the data to clipboard|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for memory mapping of files|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add further export formats like s-record and intel 16|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for jobs like io, printing, string search or filter|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Make dialogs for Goto, Search &amp;amp; Replace embedded|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add Okular like embedded notifications|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks and other view settings for next load|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add dialog to set selection range|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add global toggle option for the offset display, hex or decimal|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Make the Okteta KPart use libkakao, and rename libkakao|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|KGpg|Make keyserver actions possible to use on multiple keyservers at once|kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureTodo|KGpg|Add &amp;amp;quot;caff&amp;amp;quot; mode for keysigning|kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureTodo|KGpg|Allow searching for trust path in keyring|kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureTodo|Ark|Add an options dialog (maybe)|haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureTodo|Ark|Support for custom options from the compression interface (eg. a slider for selecting compression level for rar files)|haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureTodo|ark|Add support for ACE archives|haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebindings =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdegames =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeadmin =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdesdk =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeedu =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeaccessibility =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdegraphics =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-runtime =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-apps =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeplasma-addons =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeartwork =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.3_Feature_Plan</id>
		<title>Schedules/KDE4/4.3 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.3_Feature_Plan"/>
				<updated>2009-05-07T04:37:33Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* kdeutils */ Updated ark feature status, move todos to 4.4&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the 4.3 release.&lt;br /&gt;
&lt;br /&gt;
See also:&lt;br /&gt;
* [[Schedules/KDE4/4.3 Release Schedule]]&lt;br /&gt;
* [[Schedules/KDE4/4.3 Release Goals]]&lt;br /&gt;
* [[Schedules/KDE4/4.2 Feature Plan]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Legend:&lt;br /&gt;
* todo =&amp;gt; not started yet&lt;br /&gt;
* in-progress =&amp;gt; started, but not completed yet&lt;br /&gt;
* done =&amp;gt; completed&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Other =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|Akonadi|Various Akonadi related items can be found here http://techbase.kde.org/Projects/PIM/Akonadi#Scheduled_for_KDE_4.3_.2F_Akonadi_1.2|kde-pim@kde.org|Akonadi Developers}}&lt;br /&gt;
{{FeatureInProgress|KPackageKit|Pushing in KPackageKit (dependant on PolicyKit integration)|dantti85-dev@yahoo.com.br|Daniel}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdelibs =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|KLocale|Investigate adding Currency Code and currency minor units support based on ISO 4217 (http://en.wikipedia.org/wiki/ISO_4217).|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureDone|kdecore|Thread safety in ksycoca (KService, KMimeType etc.)|faure:AT:kde.org|David Faure}}&lt;br /&gt;
{{FeatureTodo|kdecore|Dynamic allocation of KDebug areas|faure:AT:kde.org|David Faure}}&lt;br /&gt;
{{FeatureInProgress|Sonnet|Implement language detection|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureInProgress|Sonnet|Integrate language detection with spellchecking|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureTodo|Sonnet|Integrate language detection with strigi|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureTodo|Sonnet|Grammar checking (at least for English)|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureInProgress|kio|Move KTcpSocket to kio and make it public; some cleanup required|ahartmetz@gmail.com|Andreas Hartmetz}}&lt;br /&gt;
{{FeatureTodo|KCalendarSystem|Add new astronomical calculation support classes to be used in kdelibs to build new astronomically based calendar systems, and in kdepim to build new version of libkholiday.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureTodo|KCalendarSystem|Add new calendar systems: Indian Civil (Saka), Ethiopean, Chinese, Pure Julian, Pure Gregorian, etc.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureDone|KDateTime|Provide simulation of system date/time for application testing.|djarvie:AT:kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureTodo|KDEPrint|If no file printing support in Qt4.5, migrate FilePrinter class from Okular to enable file printing for all apps via QPrinter.  To be discussed on k-c-d first.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureTodo|KDEPrint|Add framework for standard actions for 'Send to...' for e-mail, fax, etc by printing to PDF/PS.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureTodo|kdeui|entries to help menu and aboutdata pointing to UserBase entry and forum.kde.org|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|kdesu|Classes to help kde-apps open ports in the local firewall (via IPTables/IPFW, etc...)|tejas@gja.in|Tejas Dinkar}}&lt;br /&gt;
{{FeatureInProgress|katepart|Key mapping support for the vi input mode|ehamberg-hjå-gmail.com|Erlend Hamberg}}&lt;br /&gt;
{{FeatureTodo|katepart|Blockwise visual mode for the vi input mode|ehamberg-hjå-gmail.com|Erlend Hamberg}}&lt;br /&gt;
{{FeatureInProgress|katepart|Improve text objects in the vi input mode|ehamberg-hjå-gmail.com|Erlend Hamberg}}&lt;br /&gt;
{{FeatureTodo|katepart|Save registers and marks from the vi input mode|ehamberg-hjå-gmail.com|Erlend Hamberg}}&lt;br /&gt;
{{FeatureInDone|kio|Fix D-Bus timeout in SlaveBase when calling kpasswdserver|lemma@confuego.org|Michael Leupold}}&lt;br /&gt;
{{FeatureInProgress|kdeui|Provide a class for detecting modifier keystrokes and locked key states|lemma@confuego.org|Michael Leupold}}&lt;br /&gt;
{{FeatureInProgress|khtml|CSS3 Web Fonts|germain@ebooksfrance.org|Germain Garand}}&lt;br /&gt;
{{FeatureTodo|khtml|support more properties from CSS3 Backgrounds and Borders module|germain@ebooksfrance.org|Fredrik Höglund and/or Germain Garand}}&lt;br /&gt;
{{FeatureInProgress|khtml|support more properties from CSS3 Text module|germain@ebooksfrance.org|Germain Garand}}&lt;br /&gt;
{{FeatureInProgress|solid|Smart card reader support|cblauvelt@gmail.com|Christopher Blauvelt}}&lt;br /&gt;
{{FeatureTodo|KEmoticons|emit a signal when the emoticon theme is changed|brandon.ml@gmail.com|Carlo Segato}}&lt;br /&gt;
{{FeatureTodo|KLocale|Per-language number formats, and exposing them to modification by user.|caslav.ilic@gmx.net|Chusslove Illich}}&lt;br /&gt;
{{FeatureInProgress|KLocale|Extension of date formats to cover many resolutions (month-year, day-month, etc.)|caslav.ilic@gmx.net|Chusslove Illich}}&lt;br /&gt;
{{FeatureDone|kfile|KDirSortFilterProxyModel: make it possible to not always sort folders first|frank78ac@googlemail.com|Frank Reininghaus}}&lt;br /&gt;
{{FeatureTodo|buildsystem|Add support for crosscompiling|neundorf@kde.org|Alexander Neundorf}}&lt;br /&gt;
{{FeatureInProgress|buildsystem|Add support for building parts of modules separately|neundorf@kde.org|Alexander Neundorf}}&lt;br /&gt;
{{FeatureInProgress|webkit|Move KDE integration of QtWebKit into kdelibs (but not KPart!)|uwolfer@kde.org|Urs Wolfer}}&lt;br /&gt;
{{FeatureTodo|Nepomuk|New Resource URI schema for Files (to better handle removable storage (parts in KDE Base)|dw@danielwinter.de|Daniel Winter}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-workspace =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |Non-Plasma, Non-KWin&lt;br /&gt;
{{FeatureTodo|Kxkb|Support for languages in keyboard layout descriptions|rysin:AT:kde.org|Andriy Rysin}}&lt;br /&gt;
{{FeatureDone|PolicyKit integration|Import PolicyKit-KDE from extragear|drf54321@gmail.com|Dario Freddi}}&lt;br /&gt;
{{FeatureDone|Solid Actions KCM|Import Solid actions KControl module from playground|ben@eclipse.endoftheinternet.org|Ben Cooksley}}&lt;br /&gt;
{{FeatureInProgress|KControl4|Import refactor of systemsettings with Tree and Icon view support|ben(at)eclipse(dot)endoftheinternet(dot)org|Ben Cooksley and Mathias Soeken}}&lt;br /&gt;
{{FeatureDone|KSysguard|Added GetHotNewStuff support|a@b.com|name}}&lt;br /&gt;
{{FeatureInProgress|KActiveEdges|Split active screen edges from KWin|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureDone|Solid Wicd Engine|Import Solid Wicd engine from github/playground|drf54321@gmail.com|Dario Freddi}}&lt;br /&gt;
{{FeatureDone|Klipper|Made klipper automatically find possible actions based on filename copied to clipboard|dimsuz@gmail.com|Dmitry Suzdalev}}&lt;br /&gt;
{{FeatureDone|Klipper|Improved action adding/editing workflow by implementing a special dialog for editing a certain action|dimsuz@gmail.com|Dmitry Suzdalev}}&lt;br /&gt;
{{FeatureTodo|Klipper|Make action popup unobtrusive by showing menu only when user clicks an icon in systray. Icon itself should change to indicate availability of some actions on current clipboard|dimsuz@gmail.com|Dmitry Suzdalev}}&lt;br /&gt;
{{FeatureTodo|Font Installer KCM |Use PolicyKit for installtion of system-wide fonts.|craig@kde.org|Craig Drummond}}&lt;br /&gt;
{{FeatureInProgress|Font Settings KCM|Improved GUI for configuring anti-aliasing settings|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KRunner&lt;br /&gt;
{{FeatureInProgress|Nepomuk/Location Runners|Open with and service menu actions|ryan.bitanga@gmail.com|Ryan Bitanga}}&lt;br /&gt;
{{FeatureTodo|KRunner|Simple adaptive search|ryan.bitanga@gmail.com|Ryan Bitanga}}&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |Plasma - Priority Features&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |Plasma&lt;br /&gt;
{{FeatureTodo|Now Playing data engine|Support for MPD|kde:AT:randomguy3.me.uk|Alex Merry}}&lt;br /&gt;
{{FeatureTodo|Now Playing applet|Better design in panels|kde:AT:randomguy3.me.uk|Alex Merry}}&lt;br /&gt;
{{FeatureDone|Classic Menu Launcher|Optional recently used applications and System Settings menu|mail:AT:dipe.org|Sebastian Sauer}}&lt;br /&gt;
{{FeatureDone|Classic Menu Launcher|KDE3-like menu titles|mail:AT:dipe.org|Christian Loose}}&lt;br /&gt;
{{FeatureDone|Classic Menu Launcher|Context menu for menu items|mail:AT:dipe.org|Christian Loose}}&lt;br /&gt;
{{FeatureInProgress|Reusable video widget|A widget in libplasma that can play video and audio|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|Message box|A message box shown as an overlay over plasmoids|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureTodo|Panel spacers|A way to add/manage spacers directly from the panel controller|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|Systemtray protocol|New systemtray protocol beginnings: daemon and systemtray widget part|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|Default theme|Air: new default Plasma theme|notmart@gmail.com|Marco Martin and Nuno Pinheiro}}&lt;br /&gt;
{{FeatureInProgress|screensaver|security constraints|chanika@gmail.com|Chani}}&lt;br /&gt;
{{FeatureDone|keyboard shortcuts|configuration|chanika@gmail.com|Chani}}&lt;br /&gt;
{{FeatureTodo|icon plasmoid|make it suck less|chanika@gmail.com|Chani}}&lt;br /&gt;
{{FeatureDone|desktop|make a plasmoid when I paste stuff|chanika@gmail.com|Chani}}&lt;br /&gt;
{{FeatureInProgress|extenders|Add grouping support to extenders|r.scheepmaker@student.utwente.nl|Rob Scheepmaker}}&lt;br /&gt;
{{FeatureInProgress|systemtray|Group multiple jobs and notifications|r.scheepmaker@student.utwente.nl|Rob Scheepmaker}}&lt;br /&gt;
{{FeatureTodo|systemtray|Job completed notifications, providing an sensible action ('open file' etc)|r.scheepmaker@student.utwente.nl|Rob Scheepmaker}}&lt;br /&gt;
{{FeatureInProgress|Kickoff|Add multiple columns support to Kickoff|talvik@gmail.com|Luiz Felipe Talvik}}&lt;br /&gt;
{{FeatureDone|folderview|Show tooltips with large previews and file metadata when hovering icons|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureDone|folderview|Show a popup view with the folder contents when hovering a folder in the icon view|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureDone|folderview|Add menu items to the context menu for showing the applet browser, adding panels, locking the screen, logging out etc.|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureDone|folderview|Add menu items to the drop menu for creating applets and setting the wallpaper|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureDone|folderview|Optionally show the window list menu when middle clicking the containment|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureDone|folderview|Implement support for keyboard navigation|jhahoneyk@gmail.com|Shantanu Tushar Jha}}&lt;br /&gt;
{{FeatureTodo|folderview|Accessing sub folders as sub menus in the popup view when the applet is on the panel|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureTodo|folderview|Offer to create applets based on the mimetype when pasting URL's in the containment|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureDone|virus wallpaper|Move from playground to kdeplasma-addons and port to the new plasma::wallpaper|asraniel@fryx.ch|Beat Wolf}}&lt;br /&gt;
{{FeatureInProgress|Plasma|Add press-down feedback to folderview|haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureDone|Time DataEngine|Integrate solar position dataengine to time dataengine|damu@iki.fi|Petri Damstén}}&lt;br /&gt;
{{FeatureTodo|Time DataEngine|Moon position/phase data|damu@iki.fi|Petri Damstén}}&lt;br /&gt;
{{FeatureInProgress|Akonadi DataEngine|Move Akonadi dataengine to kdeplasma-addons|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureInProgress|Social Desktop Plasmoid|Plasmoid displaying contacts via OpenDesktop|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureTodo|Knowledge base Plasmoid|Plasmoid for searching and dispaying results from Open Collaboration Services / OpenDesktop|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureTodo|Tool tips|Extend tool tips API|emdeck@gmail.com|Michał Dutkiewicz}}&lt;br /&gt;
{{FeatureInProgress|Theme System|Better fallback mechanisms for transparent panels/dialogs without composition|david.nolden.kdevelop@art-master.de|David Nolden}}&lt;br /&gt;
{{FeatureDone|Plasmaclock library|Context menu for fast copying date and time strings to clipboard|emdeck@gmail.com|Michał Dutkiewicz}}&lt;br /&gt;
{{FeatureInProgress|Plasmaclock/Calendar|Display various information on the calendar using kholiday/akonadi|?|?}}&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KWin - Core&lt;br /&gt;
{{FeatureTodo|KWin|Redesign KWin system settings GUI|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureDone|KWin|ARGB support for decorations|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureTodo|KWin|Window docking/quick tiling|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureTodo|KWin|Internal desktop layout/pager support|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureTodo|KWin|Non-composited Present Windows|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureDone|KWin|Tabbox improvements|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureTodo|KWin/Plasma|Toggle Compositing Plasmoid|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KWin - Desktop Effects&lt;br /&gt;
{{FeatureTodo|KWin|Expand present windows into other effects (E.g. Desktop Grid)|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureTodo|KWin|OpenGL 3 compatible Shaders|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureDone|KWin|Improved cube reflection|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureTodo|KWin|Add and remove desktops in grid effect|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureTodo|KWin|Desktop Thumnails in Pager Tooltips|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureTodo|KWin|Slide In/Out effect|hein@kde.org|Eike Hein}}&lt;br /&gt;
{{FeatureDone|KWin|Fade desktop effect (Desktop switcher)|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureDone|KWin|Highlight window effect|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureDone|KWin|SlideBack effect|michael_zanetti@gmx.net|Michael Zanetti}}&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KDM&lt;br /&gt;
{{FeatureTodo|KDM|Plasma wallpaper|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdepimlibs =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|Buildsystem|Require OpenLDAP (coordinate with the Windows team)|winter@kde.org|Allen Winter}}&lt;br /&gt;
{{FeatureDone|Buildsystem|Require Cyrus-SASL (coordinate with the Windows team)|winter@kde.org|Allen Winter}}&lt;br /&gt;
{{FeatureTodo|libkleopatraclient|New interface library for kleopatra uiserver clients|marc@kdab.net|Marc Mutz}}&lt;br /&gt;
{{FeatureDone|pimtextedit|New library around text edits, to provide support for inline images in the signature editor, among others|mcguire@kde.org|Thomas McGuire}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdenetwork =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|Kopete|UPnp Support|mattr@kde.org|Matt Rogers}}&lt;br /&gt;
{{FeatureDone|Kopete|Updated contact list interface (uses Qt 4 rather than Qt 3)|mattr@kde.org|Matt Rogers}}&lt;br /&gt;
{{FeatureTodo|Kopete|Update Kopete to better support Decibel|kopete-devel@kde.org|Kopete Developers}}&lt;br /&gt;
{{FeatureTodo|Kopete|Jabber Jingle video support|detlev.casanova@gmail.com|Detlev Casanova}}&lt;br /&gt;
{{FeatureTodo|Kopete|Jabber Jingle ICE support|detlev.casanova@gmail.com|Detlev Casanova}}&lt;br /&gt;
{{FeatureInProgress|Kopete|Contacts plasmoid|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Kopete|Rich text support for ICQ|kedgedev@gmail.com|Roman Jarosz}}&lt;br /&gt;
{{FeatureTodo|Kopete|Add support for urls to Bonjour plugin|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureInProgress|KGet|MultiSource-Downloading|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureTodo|KGet|Support mms://-protocol, see https://launchpad.net/libmms|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureTodo|KGet|MLDonkey-Plugin based on libkmldonkey|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureTodo|KGet|Advanced Details|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureInProgress|KRDC|NX support|gdavid.devel@gmail.com|David Gross}}&lt;br /&gt;
{{FeatureTodo|KRDC|Minimal-clutter mode to optimize screen real estate usage|gpothier@gmail.com|Guillaume Pothier}}&lt;br /&gt;
{{FeatureInProgress|Telepathy|Telepathy-specification compliant Account Manager using KWallet to store account data|grundleborg@googlemail.com|George Goldberg}}&lt;br /&gt;
{{FeatureInProgress|Telepathy|Account Editing UI for Telepathy|grundleborg@googlemail.com|George Goldberg}}&lt;br /&gt;
{{FeatureInProgress|Plasma|Network Manager Applet|wstephenson@kde.org|Will Stephenson}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdepim =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|Akonadi|Migration of contacts and calendar data from KResource to Akonadi ([http://techbase.kde.org/Projects/PIM/Akonadi#Scheduled_for_4.3 Details])|kde-pim@kde.org|Volker Krause, Kevin Krammer, Tobias Koenig}}&lt;br /&gt;
{{FeatureInProgress|Akregator|Support for syncing the feed list with Google Reader |osterfeld@kde.org|Frank Osterfeld}}&lt;br /&gt;
{{FeatureDone|[http://www.astrojar.org.uk/kalarm KAlarm]|Add export of alarms to a new calendar file|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|[http://www.astrojar.org.uk/kalarm KAlarm]|Allow configuration of default deferral time interval|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|[http://www.astrojar.org.uk/kalarm KAlarm]|Accept drag-and-drop of Todo entries to create a new alarm|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|[http://www.astrojar.org.uk/kalarm KAlarm]|Show command execution error indication in alarm list|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|[http://www.astrojar.org.uk/kalarm KAlarm]|Add option to spread alarm windows across screen|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|Akonadi|Google calendar and contacts resource|cavalcantii@gmail.com|Adenilson Cavalcanti}}&lt;br /&gt;
{{FeatureTodo|[http://www.astrojar.org.uk/kalarm KAlarm]|Port to Akonadi|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureTodo|[http://kblogger.pwsp.net KBlogger]|KBlogger, a blogging application|christian_weilbach@.web.de|Christian Weilbach}}&lt;br /&gt;
{{FeatureTodo|KBlogger|Port to use KRichTextEdit (Or KMEditor)|steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureInProgress|KContactManager|A new Akonadi-based address book to replace KAddressbook|tokoe@kde.org|Tobias Koenig}}&lt;br /&gt;
{{FeatureInProgress|Kjots| Create and port to akonadi model. |steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureTodo|Kjots| Add support for nepomuk including tagging, possibly storage, and linking. Also a nepomuk tag proxy model for representing the structure as tagged.|steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureInProgress|Kjots| Create plasmoid capable of showing the entire tree, or a single book.|steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureTodo|Kjots| Email KJots pages using default mail client ({{bug|124509}}. |steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureInProgress|Kleopatra|OpenPGP support|marc@kdab.net|Marc Mutz (Gpg4win)}}&lt;br /&gt;
{{FeatureDone|KMail|Add support for HTML images|yez@familieschepers.nl|Edwin Schepers}}&lt;br /&gt;
{{FeatureTodo|KMail|Use asynchronous Kleo|marc@kdab.net|Marc Mutz}}&lt;br /&gt;
{{FeatureTodo|KMail|Save metadata about attachments to Nepomuk when saving them|onurf@su.sabanciuniv.edu|Ismail Onur Filiz}}&lt;br /&gt;
{{FeatureTodo|KNode|Port to use KRichTextEdit (Or KMEditor)|steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureTodo|Kontact|Support for Kontact wide profiles|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureTodo|Kontact|Tip-of-the-Day summary|molkentin@kde.org|Daniel Molkentin}}&lt;br /&gt;
{{FeatureTodo|KOrganizer|Support for extended free-busy lists|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureInProgress|KPilot|Port old conduits to new base conduit architecture and KDE4/Qt4|jkasper@kde.org|Jason 'vanRijn' Kasper}}&lt;br /&gt;
{{FeatureInProgress|KPilot|Finish Keyring conduit, base conduit code and test cases, category syncing|jkasper@kde.org|Jason 'vanRijn' Kasper}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeutils =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|printer-applet|Restore feature parity with KDEPrint3 where possible.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureInProgress|Okteta|Add hash calculator tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureDone|Okteta|Show tooltip over bookmarks|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureInProgress|Okteta|Add filesystem browser tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureInProgress|Okteta|Add loaded documents tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureDone|Okteta|Add bookmark managing tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureInProgress|Okteta|Show selection range in status bar|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|kwalletmanager|Move kwalletmanager to the Model/View architecture and redesign the UI.|lemma@confuego.org|Michael Leupold}}&lt;br /&gt;
{{FeatureDone|kdelirc|Bring back kdelirc|michael_zanetti@gmx.net|Michael Zanetti}}&lt;br /&gt;
{{FeatureDone|ark|Improve support for pure gzip and bzip2 files (read only)|kubito@gmail.com|Raphael Kubo da Costa}}&lt;br /&gt;
{{FeatureInProgress|ark| Finish cliinterface  |haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureInProgress|ark| Add lots of more meaningful error messages  |haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureInProgress|ark| Add support for zip archives (cli-based, ie. info-zip) |haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureDone|ark| Make the mimetype selection dialog more user-friendly |kubito@gmail.com|Raphael Kubo da Costa}}&lt;br /&gt;
{{FeatureDone|ark| Make the file list obey KDE's mouse settings |kubito@gmail.com|Raphael Kubo da Costa}}&lt;br /&gt;
{{FeatureDone|KGpg| Port to new systray framework |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureTodo|KGpg| Clean up editor GUI and classes |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureTodo|KGpg| Make keyserver operations more flexible |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureDone|KGpg| Port key importing to be a transaction |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureDone|KGpg| Port keyserver query to be a transaction |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureDone|KGpg| Make &amp;amp;quot;import key&amp;amp;quot; also work with keyservers |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureDone|KGpg| Integrate solid to know when a online action (e.g. keyserver query) does not make sense |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureInProgress|KTimer| Redesign UI |zahl@transbay.net|A. L. Spehr}}&lt;br /&gt;
{{FeatureTodo|KTimer| Add hours and seconds to counter |zahl@transbay.net|A. L. Spehr}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebindings =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|krossjava|Integrate into e.g. SuperKaramba and fix issues that show up.|mail@dipe.org|Sebastian Sauer}}&lt;br /&gt;
{{FeatureTodo|krossjava|Documentation++|mail@dipe.org|Sebastian Sauer}}&lt;br /&gt;
{{FeatureTodo|krossfalcon|Documentation++|mail@dipe.org|Sebastian Sauer}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdegames =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|libkdegames|Convert old PNG based card decks to SVG with embedded bitmaps.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Add Curse of the Mummy game (20 levels), contributed by Steve Mann.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Major rewrite, mainly of the game engine and editor.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|More accurate and reliable pause and resume.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureTodo|KGoldrunner|Save and reload at any instant in a game.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Record and replay games.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Run demos ... especially at startup or as hints for difficult levels.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureTodo|KGoldrunner|Hot-new-stuff support for themes and game sets.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureTodo|KGoldrunner|Integration of the Scavenger game (180 new levels) and its rule-set.  This would also involve allowing different grid dimensions for different games, as a feature of the new game engine.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureTodo|KGoldrunner|Better support for beginners, such as graphical cues for false bricks and hidden ladders, extra messages with &amp;quot;don't tell me this again&amp;quot;, etc.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureInProgress|Killbots|Add &amp;quot;sonic screwdriver&amp;quot; functionality.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureTodo|Killbots|Add a tutorial for beginners.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureTodo|Kolf|Replace with Kolf 2 (please help!)|majewsky@gmx.net|Stefan Majewsky}}&lt;br /&gt;
{{FeatureDone|KPatience|Add a command line switch to manually launch a game of a certain type.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureDone|KPatience|Add an option to save the game state at shutdown to be automatically be restored on next run.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureDone|KPatience|Add the ability to return to the game selection screen after selecting a game.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureInProgress|KPatience|Add a &amp;quot;Deal&amp;quot; action to those game types that support dealing cards from the deck into play.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureTodo|KsirK|rewrite AI code or at least correct most problems related in bug #170777. Volunteers wanted!|kleag@free.fr|Gaël de Chalendar}}&lt;br /&gt;
{{FeatureTodo|KsirK|Previous/Next in start new game as described in bug #170774|kleag@free.fr|Gaël de Chalendar}}&lt;br /&gt;
{{FeatureTodo|KsirK|Polish the skin editor (doc, contextual help, ...)|kleag@free.fr|Gaël de Chalendar}}&lt;br /&gt;
{{FeatureTodo|KsirK|Boost playing over Jabber|kleag@free.fr|Gaël de Chalendar}}&lt;br /&gt;
{{FeatureTodo|KSpaceDuel|rewrite AI code|dirkrathlev@gmx.de|Dirk Rathlev}}&lt;br /&gt;
{{FeatureDone|ktron|Port and remake the KTron game for KDE 4.3|legolas@legolasweb.nl|Stas Verberkt}}&lt;br /&gt;
{{FeatureTodo|KSudoku|Import the new logic engine as a library|joselb@gmx.net|Johannes Bergmeier}}&lt;br /&gt;
{{FeatureTodo|KSudoku|Port KSudoku to the new engine|joselb@gmx.net|Johannes Bergmeier}}&lt;br /&gt;
{{FeatureTodo|KSudoku|Add interactive help|joselb@gmx.net|Johannes Bergmeier}}&lt;br /&gt;
{{FeatureDone|Bovo|Add new AI|pelladigabor@gmail.com|Pelladi Gabor}}&lt;br /&gt;
{{FeatureDone|Bovo|Computer thinking doesn't block the GUI|pelladigabor@gmail.com|Pelladi Gabor}}&lt;br /&gt;
{{FeatureTodo|libkdegames|Import KGGZ libraries from GGZ SVN|spillner@kde.org|Josef Spillner}}&lt;br /&gt;
{{FeatureInProgress|libkmahjongg|Introduce new tileset, Bamboo.|mw_triad@users.sourceforge.net|Matthew Woehlke}}&lt;br /&gt;
{{FeatureDone|KMahjongg|Add 70 additional levels contributed by users|piacentini at kde.org|Mauricio Piacentini}}&lt;br /&gt;
{{FeatureTodo|KMahjongg|Add start page with level selection|piacentini at kde.org|Mauricio Piacentini}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeadmin =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|KGrubEditor|Integrate KGrubEditor into KDE Admin http://sourceforge.net/projects/kgrubeditor. Approved by Nicolas Ternisien &amp;lt;nicolas.ternisien@gmail.com&amp;gt; |artemis_dot_fowl_dot_2007@gmail_dot_com|Konstantinos Smanis}}&lt;br /&gt;
{{FeatureTodo|Guidance|Port Guidance to KDE 4, and move it to KDE Admin http://www.simonzone.com/software/guidance/.|nicolas.ternisien@gmail.com|Nicolas Ternisien}}&lt;br /&gt;
{{FeatureTodo|system-config-printer-kde|Restore feature parity with KDEPrint3 where possible.|john@layt.net|john Layt, Jonathan Riddell}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdesdk =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|Lokalize|XLIFF support|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureInProgress|Lokalize|various Translation Memory enhancements|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureInProgress|Lokalize|Kross-based scripting|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureTodo|Lokalize|QA: glossary checklists|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureTodo|KAppTemplate|Add DBUS support in templates|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureDone|Umbrello|Replace all q3 widgets in the refactoring assistant|andi.fischer@hispeed.ch|Andi Fischer}}&lt;br /&gt;
{{FeatureInProgress|Umbrello|Merge in SoC qgraphicsview port branch|krishna.ggk@gmail.com|Gopala Krishna A}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeedu =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|KAlgebra|Export to MathML Presentation Markup|aleixpol@gmail.com|Aleix Pol}}&lt;br /&gt;
{{FeatureTodo|KAlgebra|Some integration with the new KFormula widget|aleixpol@gmail.com|Aleix Pol}}&lt;br /&gt;
{{FeatureInProgress|KAlgebra|Add ability to draw 3D plots in cylindrical and spherical coordinates.|orgyforever@gmail.com|Percy Camilo Triveño Aucahuasi}}&lt;br /&gt;
{{FeatureTodo|Kalzium|Port Kalzium's periodic table to use new QGraphicsView.|marcus@cryos.org|Marcus D. Hanwell}}&lt;br /&gt;
{{FeatureTodo|Kalzium|Separate compound viewer/editor application from Kalzium.|marcus@cryos.org|Marcus D. Hanwell}}&lt;br /&gt;
{{FeatureTodo|Kalzium|Remove the libavogadro snapshot, depend on libavogadro directly.|jacob@math.jussieu.fr|Benoit Jacob}}&lt;br /&gt;
{{FeatureTodo|Kalzium|Plasmoid to access Kalzium database|cniehaus@kde.org|Carsten Niehaus}}&lt;br /&gt;
{{FeatureTodo|KEduca|Rewrite of the classic test writing/taking application|matt@milliams.com|Matt Williams}}&lt;br /&gt;
{{FeatureTodo|KHangMan|Integrate an editor|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KHangMan|Plasmoid|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KHangMan|Theme manager|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|Kig|Properties dialog for objects.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Kig|Improve construction of bisect lines.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Kig|Improve feedback when constructing objects.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Kig|More geometric objects.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Kig|Script objects as macros (to be reused more than once).|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Kig|Improve the Cabri import filter.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Kig|Improve the new/edit script wizard.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|KLettres|Visual Indicator when letter is wrong|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KLettres|Number support|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KLettres|Theme manager|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KStars|Marble widget for Geolocation tool|mboquien@free.fr|Médéric Boquien}}&lt;br /&gt;
{{FeatureTodo|KStars|Better printed star charts|kstars@30doradus.org|Jason Harris}}&lt;br /&gt;
{{FeatureTodo|KStars|Sync KStars time from device|mutlaqja@ikarustech.com|Jasem Mutlaq}}&lt;br /&gt;
{{FeatureTodo|KStars|Better rendering of comets/asteroids|kstars@30doradus.org|Jason Harris}}&lt;br /&gt;
{{FeatureTodo|KStars|Texture mapping of the skymap???|kstars@30doradus.org|Jason Harris}}&lt;br /&gt;
{{FeatureTodo|KStars|Improve Observing List Wizard|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Display Comet Magnitudes whenever possible|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Information links in-place for each technical term|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Tool to suggest star-hopping techniques???|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Extend conjunction tool to have one object unspecified, but have a genre of objects specified instead|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Extend conjunction tool to predict oppositions and occultations|prak902000@gmail.com|Prakash Mohan}}&lt;br /&gt;
{{FeatureTodo|KStars|Simulate Lunar Eclipses|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Simulate Satellites and Iridium Flares|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Social and Geographical Integration for KStars|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Merge SAC with NGC / IC as default catalog|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KTurtle|Optional rulers/grid for canvas units|piacentini@kde.org|Mauricio Piacentini}}&lt;br /&gt;
{{FeatureTodo|Marble|Export map to MxN pixel bitmap|inge@lysator.liu.se|Inge Wallin}}&lt;br /&gt;
{{FeatureInProgress|Marble|Bookmarks||Gaurav Gupta}}&lt;br /&gt;
{{FeatureInProgress|Marble|Planet Filter||Harshit Jain}}&lt;br /&gt;
{{FeatureInProgress|Marble|Time KML support||Harshit Jain}}&lt;br /&gt;
{{FeatureTodo|Marble|Support for MarbleWidget::setEnabled( bool )|inge@lysator.liu.se|Inge Wallin}}&lt;br /&gt;
{{FeatureTodo|Marble|Map Contents translation|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Editing GeoDataFeatures|ewoerner@kde.org|Eckhart Wörner}}&lt;br /&gt;
{{FeatureTodo|Marble|Update Map (&amp;quot;F5&amp;quot;)|jensmh@gmx.de|Jens-Michael Hoffmann}}&lt;br /&gt;
{{FeatureInProgress|Marble|Layer Management Class|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Plugin architecture for map layers|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Extending GeoPainter|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Marble Runners|hdevalence@gmail.com|Henry de Valence}}&lt;br /&gt;
{{FeatureInProgress|Marble|GeoClue Integration |ewoerner@kde.org|Eckhart Wörner}}&lt;br /&gt;
{{FeatureInProgress|Marble|Routing |jensmh@gmx.de|Jens-Michael Hoffmann}}&lt;br /&gt;
{{FeatureInProgress|Marble|More map providers (WMS?) |jensmh@gmx.de|Jens-Michael Hoffmann}}&lt;br /&gt;
{{FeatureInProgress|Marble|Winkel Triple projection / equivalent |hdevalence@gmail.com|Henry de Valence}}&lt;br /&gt;
{{FeatureInProgress|Marble|Marble WorldClock Plasmoid|hdevalence@gmail.com|Henry de Valence}}&lt;br /&gt;
{{FeatureDone|Marble|Qt-Version settings dialog|hdevalence@gmail.com|Bastian Holst}}&lt;br /&gt;
{{FeatureInProgress|Marble|Panoramio Support||Bastian Holst}}&lt;br /&gt;
{{FeatureInProgress|Marble|Twitter Plugin||Shashank Singh}}&lt;br /&gt;
{{FeatureInProgress|Marble|TimeZone Support|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureDone|Marble|Support for other planets and the moon|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureDone|Marble|DGML2 Support|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureDone|Marble|Support for imperial units|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureDone|Marble|Graticule plugin|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|MeasureTool plugin|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureDone|Marble|Port authors list from the Qt-About dialog to the KDE-About dialog|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Basic KML support|ps_ml@gmx.de|Patrick Spendrin}}&lt;br /&gt;
{{FeatureInProgress|Marble|GeoData Model/View Visualization|ps_ml@gmx.de|Patrick Spendrin}}&lt;br /&gt;
{{FeatureInProgress|Marble|More generic projection support|inge@lysator.liu.se|Inge Wallin}}&lt;br /&gt;
{{FeatureInProgress|Marble|Network plugins|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureDone|Marble|Geolocation plugins|ewoerner@kde.org|Eckhart Wörner}}&lt;br /&gt;
{{FeatureInProgress|Parley|Declensions|frederik.gladhorn@kdemail.net|Frederik Gladhorn}}&lt;br /&gt;
{{FeatureTodo|Step|Improve GUI for creating softbody|ksvladimir@gmail.com|Vladimir Kuznetsov}}&lt;br /&gt;
{{FeatureTodo|Step|Use common constraints handling code for collisions|ksvladimir@gmail.com|Vladimir Kuznetsov}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|JuK|Remove Qt/KDE3 support lib requirements|michael.pyne@kdemail.net|Michael Pyne}}&lt;br /&gt;
{{FeatureTodo|JuK|Allow setting covers directly from URLs supported by KIO - drag/drop already allows this however|michael.pyne@kdemail.net|Michael Pyne}}&lt;br /&gt;
{{FeatureDone|JuK|Use XCOMPOSITE real transparency when available for the track announcement popup|michael.pyne@kdemail.net|Michael Pyne}}&lt;br /&gt;
{{FeatureTodo|JuK|Allow disabling crossfade|michael.pyne@kdemail.net|Michael Pyne}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeaccessibility =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdegraphics =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|Okular|Generator for Mobipocket format|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureDone|strigi|Thumbnailer and analyzer for Mobipocket format|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureDone|strigi|Analyzer for epub format|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureTodo|Okular|Sound annotations.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Okular|Link annotations.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Okular|Caret annotations.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Okular|Support .snp and .emf file formats|bradh@kde.org|Brad Hards}}&lt;br /&gt;
{{FeatureTodo|Okular|Synctex support.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Okular|Rich-text for annotations text.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|kruler|More ruler shapes.|msoeken_at_tzi_dot_de|Mathias Soeken}}&lt;br /&gt;
{{FeatureDone|kruler|Configurable shortcuts.|msoeken_at_tzi_dot_de|Mathias Soeken}}&lt;br /&gt;
{{FeatureTodo|kruler|DBUS Interface.|msoeken_at_tzi_dot_de|Mathias Soeken}}&lt;br /&gt;
{{FeatureDone|kruler|Transparent background and opaque drawing of the lines and numbers (Qt 4.5).|msoeken_at_tzi_dot_de|Mathias Soeken}}&lt;br /&gt;
{{FeatureInProgress|gwenview|Folder view.|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureInProgress|gwenview|Make thumbnail bar more customizable (orientation, number of rows/columns).|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureInProgress|gwenview|Add back video support.|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureInProgress|gwenview|Improve history handling.|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureDone|libksane|Add &amp;quot;Auto selection&amp;quot; after preview.|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureInProgress|Okular|Less intrusive search with find bar.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Okular|Better detection of where the Okular KPart is embedded into, and adapt the UI accordingly (sidebar, actions, etc).|pino@kde.org|Pino Toscano}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-runtime =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|drkonqi|DrKonqi new dialog UI + Guided crash reporting tool|andresbajotierra@gmail.com|Dario Andres|}}&lt;br /&gt;
{{FeatureInProgress|drkonqi|Backtrace parsing and rating|gkiagiad@csd.uoc.gr|George Kiagiadakis|}}&lt;br /&gt;
{{FeatureTodo|drkonqi|DrKonqi native english texts + guide|andresbajotierra@gmail.com|Dario Andres|}}&lt;br /&gt;
{{FeatureInDone|kpasswdserver|Fix D-Bus timeout in kpasswdserver using an async API|lemma@confuego.org|Michael Leupold}}&lt;br /&gt;
{{FeatureDone|network:/ KIOSlave|Move to kdebase/runtime|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-apps =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|konq_thumbnails|Basic thumbnail support for KHTMLPart views(almost finished, now cleanup code)|yinshuiboy@gmail.com|Siyuan Cao}}&lt;br /&gt;
{{FeatureTodo|konq_thumbnails|thumbnail support for all KonqFrame|yinshuiboy@gmail.com|Siyuan Cao}}&lt;br /&gt;
{{FeatureTodo|konq_thumbnails|more thumbnail page styles and customization|yinshuiboy@gmail.com|Siyuan Cao}}&lt;br /&gt;
{{FeatureTodo|konqueror|&amp;quot;Places&amp;quot; sidebar to replace KDE3's &amp;quot;media:/&amp;quot;|kdedevel_at_etotheipiplusone_dot_com|Simon St James}}&lt;br /&gt;
{{FeatureTodo|konqueror|Move Dolphin's Treeview to libkonq so that it can be used in Konqueror|kdedevel_at_etotheipiplusone_dot_com|Simon St James}}&lt;br /&gt;
{{FeatureTodo|konqueror|Move Dolphin's Information panel to libkonq so that it can be used in Konqueror|kdedevel_at_etotheipiplusone_dot_com|Simon St James}}&lt;br /&gt;
{{FeatureInProgress|dolphin|Matthias's Audio/ Video preview in Information panel|kdedevel_at_etotheipiplusone_dot_com|Simon St James}}&lt;br /&gt;
{{FeatureTodo|dolphin|Allow to configure and download service menus|peter.penz@gmx.at|Peter Penz}}&lt;br /&gt;
{{FeatureInProgress|dolphin|Nepomuk search integration|peter.penz@gmx.at|Peter Penz}}&lt;br /&gt;
{{FeatureInProgress|dolphin|Use Nepomuk to receive the meta data for the Information panel|peter.penz@gmx.at|Peter Penz}}&lt;br /&gt;
{{FeatureDone|dolphin|Let user choose if folders are always shown first or not|frank78ac@googlemail.com|Frank Reininghaus}}&lt;br /&gt;
{{FeatureInProgress|konsole|Get a working DBus interface|kurt.hindenburg@gmail.com|Kurt Hindenburg}}&lt;br /&gt;
{{FeatureTodo|konsole|Redesign manage profile dialog to allow users to sort profiles|kurt.hindenburg@gmail.com|Kurt Hindenburg}}&lt;br /&gt;
{{FeatureTodo|konsole|Allow window/terminal size to be set in profiles|kurt.hindenburg@gmail.com|Kurt Hindenburg}}&lt;br /&gt;
{{FeatureInProgress|libkonq|Add support in for pluginbased Drag'n'drop popup menus (and in my case, an &amp;quot;extract here&amp;quot; menu on dragged archives)|haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureInProgress|konqueror|History browser as independent from sidebar, and improved (different grouping style, sorting, etc).|pino@kde.org|Pino Toscano}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeplasma-addons =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Video Plasmoid|a media player widget complete with a basic dbus interface|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureDone|System Load Viewer|A tiny monitor for CPU, RAM and swap usage (known as System Monitor in KDE3)|dhaumann@kde.org|Dominik Haumann}}&lt;br /&gt;
{{FeatureDone|Comic Plasmoid|Clean up the config-dialog|mat69@gmx.net|Matthias Fuchs}}&lt;br /&gt;
{{FeatureTodo|Comic Plasmoid|Port to popup applet|mat69@gmx.net|Matthias Fuchs}}&lt;br /&gt;
{{FeatureDone|PoTD Engine|Import PoTD engine - is in kdereview|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureDone|Metadata Engine|Import Metadata engine - is in kdereview|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|Frame Plasmoid|Display Picture Metadata|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|Frame Plasmoid|Add url as setting|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|Frame Plasmoid|Add buttons Next/Previous/pause in slideshow mode|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureDone|wallpapers|Mandelbrot fractal wallpaper plugin|jacob.benoit.1@gmail.com|Benoît Jacob}}&lt;br /&gt;
{{FeatureInProgress|Weather Wallpaper|Add user-defined wallpapers|echidnaman@kubuntu.org|Jonathan Thomas}}&lt;br /&gt;
{{FeatureInProgress|wallpapers|Marble desktop globe wallpaper|sasch.pe@gmx.de|Sascha Peilicke}}&lt;br /&gt;
{{FeatureTodo|FileWatcher|Highlighting support|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureTodo|Now Playing|New widget UI|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureTodo|Life|Colors|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureTodo|Life|Fading|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Timer|Restore countdown after a shutdown|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Timer|Improved notifications|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureDone|Timer|Hide seconds|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureTodo|Unit converter|Improved widget UI|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|plasmaweather lib|Make plasmaweather library and use it in lcd weather, weather and weather wallpaper|damu@iki.fi|Petri Damstén}}&lt;br /&gt;
{{FeatureDone|LCD Weather|Tooltip|damu@iki.fi|Petri Damstén}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeartwork =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|screensavers|port to wallpaper packages|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.2_Feature_Plan</id>
		<title>Schedules/KDE4/4.2 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.2_Feature_Plan"/>
				<updated>2009-05-07T04:35:23Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* kdeutils */ Moved Ark todos to the 4.4 feature plan&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the 4.2 release.&lt;br /&gt;
&lt;br /&gt;
See also:&lt;br /&gt;
* [[Schedules/KDE4/4.2 Release Schedule]]&lt;br /&gt;
* [[Schedules/KDE4/4.2 Release Goals]]&lt;br /&gt;
* [[Schedules/KDE4/4.3 Feature Plan]]&lt;br /&gt;
* [[Schedules/KDE4/4.1 Feature Plan]]&lt;br /&gt;
&lt;br /&gt;
Legend:&lt;br /&gt;
* todo =&amp;gt; not started yet&lt;br /&gt;
* in-progress =&amp;gt; started, but not completed yet&lt;br /&gt;
* done =&amp;gt; completed&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Other =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|System Settings|add Administrator mode button. See Bug 151669|alediaferia@gmail.com|Alessandro Diaferia}}&lt;br /&gt;
{{FeatureInProgress|KPackageKit|Pushing in KPackageKit (dependant on PolicyKit integration)|dantti85-dev@yahoo.com.br|Daniel}}&lt;br /&gt;
{{FeatureDone|Eigen|Make Eigen 2 ready for KDE, and move it to kdesupport|jacob@math.jussieu.fr|Benoît Jacob}}&lt;br /&gt;
{{FeatureDone|Eigen|Port all Eigen-using code in KDE and KOffice to Eigen 2.0|jacob@math.jussieu.fr|Benoît Jacob}}&lt;br /&gt;
{{FeatureInProgress|KNotify|Create OSD based replacement for current KPassivePopup [Deferred to 4.3]|ben()eclipse.endoftheinternet.org|Ben Cooksley}}&lt;br /&gt;
{{FeatureTodo|Dikku Context Framework|Create a context framework with working activities|harikrishna.anandhan@gmail.com|Harikrishna Anandhan}}&lt;br /&gt;
{{FeatureDone|kwrited|Use knotify in kwrited|gkiagiad@csd.uoc.gr|George Kiagiadakis}}&lt;br /&gt;
{{FeatureDone|Akonadi|Various Akonadi related items can be found here http://techbase.kde.org/Projects/PIM/Akonadi#KDE_4.2_.2F_Akonadi_1.1|kde-pim@kde.org|Akonadi Developers}}&lt;br /&gt;
{{FeatureDone|Printer Admin|KDEPrint is dead, long live system-config-printer-kde (kdeadmin) and printer-applet (kdeutils)!  Thanks to jriddell for these.|jriddell}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdelibs =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|kross|Extend QtScript integration.|mail@dipe.org|Sebastian Sauer}}&lt;br /&gt;
{{FeatureDone|KLocale|Implement KLocale based methods to return correct working week start and end days and day of religious worship for the locale.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureDone|KDateTable|Correctly draw weekends and day of worship for locale using new KLocale settings.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureTodo|Phonon|add Port class for fine grained control over data flow between Phonon objects|kretz@kde.org|Matthias Kretz}}&lt;br /&gt;
{{FeatureInProgress|Phonon|make AbstractMediaStream/Streamterface threadsafe|kretz@kde.org|Matthias Kretz}}&lt;br /&gt;
{{FeatureInProgress|Phonon|&amp;quot;low-level&amp;quot; PCM I/O with at least an ALSA implementation|kretz@kde.org|Matthias Kretz and Ian Monroe}}&lt;br /&gt;
{{FeatureInProgress|Phonon|VideoWidget snapshot function|kretz@kde.org|Matthias Kretz}}&lt;br /&gt;
{{FeatureInProgress|KConfig|API review and export KConfigBackend|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureInProgress|KConfig|Make KConfigSkeleton KConfigGroup aware|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureInProgress|KConfig|Make KConfigDialog work nicer with KConfigSkeleton + manually managed widgets|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureDone|KUrlNavigator|Provide an option to always show the full path in the breadcrumb mode.|peter.penz@gmx.at|Peter Penz}}&lt;br /&gt;
{{FeatureDone|Katepart|Make a Vi input mode for Katepart|ehamberg@gmail.com|Erlend Hamberg}}&lt;br /&gt;
{{FeatureTodo|KIO::Global|Make KDynamicJobTracker do the checking if the kuiserver service is registered or not, for full implementation of &amp;quot;Progress in the same window&amp;quot;|ereslibre@kde.org|Rafael Fernández López}}&lt;br /&gt;
{{FeatureInProgress|KJS|Further performance improvements|maksim@kde.org|Maksim Orlovich}}&lt;br /&gt;
{{FeatureDone|KJS and KHTML|Support for transparent reindenting of standalone sources in debugger|maksim@kde.org|Maksim Orlovich}}&lt;br /&gt;
{{FeatureInProgress|KHTML|SVG support in KHTML (port from WebKit)|tsjoker@gmail.com|Vyacheslav Tokarev}}&lt;br /&gt;
{{FeatureDone|KHTML|Use of IDString (hashed strings) for local names, prefixes and namespaces in DOM core instead of document-related ids, in particular for better API compatibility with WebCore|tsjoker@gmail.com|Vyacheslav Tokarev}}&lt;br /&gt;
{{FeatureInProgress|KHTML|Significant CSS performance improvements|tsjoker@gmail.com|Vyacheslav Tokarev}}&lt;br /&gt;
{{FeatureTodo|KHTML|Scriptable extension plug-ins|porten@kde.org|Harri}}&lt;br /&gt;
{{FeatureTodo|KHTML|Gaussian SVG filter|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|KHTML|Support for CSS3 border-* properties|fredrik@kde.org|Fredrik Höglund and Maksim Orlovich}}&lt;br /&gt;
{{FeatureInProgress|KHTML|Finish support of Video/Audio elements|germain@ebooksfrance.org|Germain Garand}}&lt;br /&gt;
{{FeatureDone|KHTML|Early domain name resolution (prefetch)|germain@ebooksfrance.org|Germain Garand}}&lt;br /&gt;
{{FeatureDone|KHTML|KHTMLFindBar - an embedded search/find-as-you-type bar|bbeschow@cs.tu-berlin.de|Bernhard Beschow (and Germain Garand)}}&lt;br /&gt;
{{FeatureTodo|KHTML|Faster page cache|germain@ebooksfrance.org|Germain Garand}}&lt;br /&gt;
{{FeatureTodo|KHTML|More automation in JS/C++ bindings generation|maksim@kde.org|Maksim Orlovich and Vyacheslav Tokarev}}&lt;br /&gt;
{{FeatureTodo|KHTML|XPath level 1|maksim@kde.org|Maksim Orlovich}}&lt;br /&gt;
{{FeatureDone|kwallet|Move kwalletd to kdebase-runtime|dfaure@kde.org|David Faure}}&lt;br /&gt;
{{FeatureInProgress|kdeui|Rich text builders for KTextEdit, including BBCode, html, plain text markup, mediawiki and markdown output.|steveire@gmail.com| Stephen Kelly}}&lt;br /&gt;
{{FeatureDone|i18n|proper filenames decoding for FAT mounting, in KUrls and content-disposition|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureDone|Kross|expose KAssistantDialog as part of forms module|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureDone|KLocale|Method to strip accelerator marker from UI strings; needs to take into account CJK-style markers too.|caslav.ilic@gmx.net|Chusslove Illich}}&lt;br /&gt;
{{FeatureInProgress|KStyle|New branch style for treeviews|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|CMake|Reduced library link interface|neundorf@kde.org|Alexander Neundorf}}&lt;br /&gt;
{{FeatureTodo|CMake|Exporting and importing (library) targets|neundorf@kde.org|Alexander Neundorf}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-workspace =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|Calendar KCM|Add support for setting new KLocale settings for Working Week and Day or Religious Worship.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureTodo|Color KCM|Add 'smart setting' of extended colors|mw_triad@users.sourceforge.net|Matthew Woehlke}}&lt;br /&gt;
{{FeatureTodo|Color KCM|Add KDE3 scheme import|mw_triad@users.sourceforge.net|Matthew Woehlke}}&lt;br /&gt;
{{FeatureTodo|Color KCM|Query kwin for supported colors; add full set of kwin colors|mw_triad@users.sourceforge.net|Matthew Woehlke}}&lt;br /&gt;
{{FeatureDone|Power Manager|import PowerDevil|drf@kdemod.ath.cx|Dario Freddi}}&lt;br /&gt;
{{FeatureTodo|Font Installer KCM|Use PolicyKit for installtion of system-wide fonts.|craig@kde.org|Craig Drummond}}&lt;br /&gt;
{{FeatureDone|Kephal|Import kephal for better xrandr-support.|dev@aikesommer.name|Aike Sommer}}&lt;br /&gt;
{{FeatureDone|ConsoleKit support|Add ConsoleKit support to kdm.|kkofler@fedoraproject.org|Kevin Kofler}}&lt;br /&gt;
{{FeatureDone|Nepomuk KIO Slave|Nepomuk Desktop search KIO slave nepomuksearch:/|trueg@kde.org|Sebastian Trueg}}&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KRunner&lt;br /&gt;
{{FeatureInProgress|Krunner|Configuration options for blacklisting, user ranking, runner ranking, learning|mumismo@gmail.com|Jordi Polo}}&lt;br /&gt;
{{FeatureInProgress|Krunner|SearchMatch configuration|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureTodo|Krunner|Simple learning|mumismo@gmail.com|Jordi Polo}}&lt;br /&gt;
{{FeatureTodo|Krunner|Simple GUI for above options|mumismo@gmail.com|Jordi Polo}}&lt;br /&gt;
{{FeatureTodo|Krunner|Runners able to share parsing|mumismo@gmail.com|Jordi Polo}}&lt;br /&gt;
{{FeatureDone|Krunner|Noun-Verb support|ryan.bitanga@gmail.com|Ryan P. Bitanga}}&lt;br /&gt;
{{FeatureTodo|Krunner|Implement Nuno's UI polishings|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureTodo|Krunner|Runtime syntax documentation|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureTodo|Krunner|Runner configuration|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureTodo|Krunner|Search set paging|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureTodo|KRunner|runner for the plasma dbus interface|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureDone|KRunner|Konqueror history runner|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureDone|KRunner|Kate sessions runner|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureDone|KRunner|Recent Documents runner|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureDone|KRunner|Improve KDE startup speed by delaying KRunner startup|mail@dipe.org|Sebastian Sauer}}&lt;br /&gt;
{{FeatureDone|KRunner|Nepomuk desktop search runner|trueg@kde.org|Sebastian Trueg}}&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |Plasma - Priority Features&lt;br /&gt;
{{FeatureTodo|Plasma|Welcome plasmoid|aseigo@kde.org|Aaron Seigo}}{{FeatureInProgress|Plasma|JOLIE Integration|ervin@kde.org|Kevin Ottens}}&lt;br /&gt;
{{FeatureDone|Plasma|Notification plasmoid (integrated in systemtray)|dimsuzkde@gmail.com|Dmitry Suzdalev}}&lt;br /&gt;
{{FeatureDone|Plasma|Kuiserver plasmoid (integrated in systemtray)|r.scheepmaker@student.utwente.nl|Rob Scheepmaker}}&lt;br /&gt;
{{FeatureTodo|KWin|Make it possible to focus plasma panels|chanika@gmail.com|Chani}}&lt;br /&gt;
{{FeatureDone|Plasma|panel-&amp;gt;desktop dragging|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureTodo|Plasma|Expand cashew to full action bar when zoomed out|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureInProgress|Plasma|Plasmagik packaging (and package classes)|riccardo@kde.org|Riccardo Iaconelli}}&lt;br /&gt;
{{FeatureDone|Plasma|Improved Battery applet for Powerdevil|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureInProgress|Plasma|Networkmanager Plasmoid and DataEngine|cblauvelt@gmail.com|Christopher Blauvelt}}&lt;br /&gt;
{{FeatureInProgress|Plasma|New ECMA Script Scriptengines|richmoore44@gmail.com|Richard Moore}}&lt;br /&gt;
{{FeatureDone|Plasma|Extenders|r.scheepmaker@student.utwente.nl|Rob Scheepmaker}}&lt;br /&gt;
{{FeatureDone|Plasma|Wallpaper plugins|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureDone|Plasma|Separate Desktop Settings from DesktopContainment|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureTodo|Plasma|Script Security Framework|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureDone|Plasma|Python support|simon@simonzone.com|Simon Edwards}}&lt;br /&gt;
{{FeatureDone|Plasma|Ruby support|richard.j.dale@gmail.com|Richard Dale}}&lt;br /&gt;
{{FeatureDone|Plasma|C# support|kde@arnorehn.de|Richard Dale, Arno Rehn}}&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |Plasma&lt;br /&gt;
{{FeatureDone|Plasma|Plasma Popup Tips|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureDone|Plasma|Collapsing Applet convenience class|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Plasma|Taskbar grouping|hrigi_1@hotmail.com|Christian Mollekopf}}&lt;br /&gt;
{{FeatureInProgress|Plasma|Small Form Factors|m.kruisselbrink@student.tue.nl|Marijn Kruisselbrink}}&lt;br /&gt;
{{FeatureDone|Plasma|Plasma On Screensaver|chanika@gmail.com|Chani Armitage}}&lt;br /&gt;
{{FeatureInProgress|Plasma|Website update|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureInProgress|Plasma|Grid applet|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureInProgress|Plasma|Techbase Tutorials|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureTodo|Plasma|Context menu plugins|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureDone|Plasma|Add New Widgets: Pluggable widget browser|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureDone|Plasma|Activity&amp;lt;-&amp;gt;Virtual Desktop Affinity|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureDone|Plasma|Optional Per-Virtual Desktop DesktopView|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureTodo|Plasma|Make non-SVG painting in Plasma low-color and non-anim friendly|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureTodo|Plasma|Runtime DataEngine documentation (sources, usage, etc)|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureDone|Plasma|Panel Autohide|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureDone|Plasma|Keyboard Shortcut Config UI|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureDone|Plasma|Systray++ Spec|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureDone|Plasma|Save icon positioning in folderview|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureTodo|Plasma|New wallpapers|riccardo@kde.org|Riccardo Iaconelli}}&lt;br /&gt;
{{FeatureTodo|Plasma|Import Raptor|riccardo@kde.org|Riccardo Iaconelli}}&lt;br /&gt;
{{FeatureDone|Plasma|Quicklaunch Plasmoid|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureTodo|Plasma|Preserve wallpaper choice by copying user paper to home dir|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureTodo|Plasma|New way of handling wallpapers and different sizes (package format, and so on...)|riccardo@kde.org|Riccardo Iaconelli}}&lt;br /&gt;
{{FeatureTodo|Plasma|Top-level windows plasmoids|riccardo@kde.org|Riccardo Iaconelli}}&lt;br /&gt;
{{FeatureDone|Plasma|drop indicator in panel|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureTodo|Plasma|improve usability of appletbrowser delete button|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureTodo|Plasma|adding containments from the appletbrowser (and remove the &amp;quot;add panel&amp;quot; from DefaultDesktop)|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureTodo|Plasma|highlight the applet with active keyboard shortcuts|chanika@gmail.com|Chani}}&lt;br /&gt;
{{FeatureTodo|Plasma|dbus interface|chanika@gmail.com|Chani}}&lt;br /&gt;
{{FeatureDone|Plasma|make the panel controller a bit more usable|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureDone|Plasma|nicely draw the desktop toolbox when it's moved because of a panel|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureDone|Plasma|theme Plasma::PushButton with svg|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureDone|Plasma|Tabbar widget derived from QTabBar and themed with svg|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureDone|Plasma|Complete the panel size sliders feature: an applet can ask the panel to resize|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureDone|Plasma|New theming capabilities by expanding the lower level theming classes (Theme and PanelSvg)|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureDone|Plasma|Activitybar: an applet to quickly switch between activities|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureDone|Plasma|A new plasmoid that implements the functionality of a simple web browser|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureDone|Plasma|Visual clue when dragging applets from applet browser to the panel|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureDone|Plasma|Google Gadgets support|idlecat511@gmail.com|Tiger Dong}}&lt;br /&gt;
{{FeatureDone|Plasma|Add Google Gadgets from Internet through AppletBrowser|idlecat511@gmail.com|Tiger Dong}}&lt;br /&gt;
{{FeatureDone|Plasma|Panel form factor support in the folderview applet|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureTodo|Plasma|Support for creating applets for dropped URLs in the folderview applet when it's acting as a containment|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureDone|Plasma|Add a places combo box to the location page in the folderview config dialog|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KWin - Core&lt;br /&gt;
{{FeatureDone|KWin|New window snapping zones; screen center and window corners|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureDone|KWin|Move maximized windows between Xinerama screens|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureDone|KWin|Support for decoration shadows|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureDone|KWin|Implement [http://standards.freedesktop.org/wm-spec/wm-spec-latest.html#id2552578 _NET_WM_FULLSCREEN_MONITORS] EWMH spec hint|vR@movingparts.net|Jason 'vanRijn' Kasper}}&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KWin - Desktop Effects&lt;br /&gt;
{{FeatureDone|KWin|Compositing enabled by default|l.lunak@kde.org|Luboš Luňák}}&lt;br /&gt;
{{FeatureDone|KWin|Compositing self-check|l.lunak@kde.org|Luboš Luňák}}&lt;br /&gt;
{{FeatureDone|KWin|Global animation speed setting|l.lunak@kde.org|Luboš Luňák}}&lt;br /&gt;
{{FeatureDone|KWin|Motion dynamics|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureDone|KWin|Improved UI for selecting window/desktop switcher|ubuntu@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureDone|KWin|UI for assigning effects to screen edges|ubuntu@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureDone|KWin|Cube/cylinder/sphere effect|ubuntu@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureDone|KWin|Magic lamp minimize effect|ubuntu@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureDone|KWin|Animation in box switch effect|ubuntu@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureDone|KWin|Mouse interaction for cover switch Effect|ubuntu@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureDone|KWin|Thumbnail bar in the cover switch effect|ubuntu@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureDone|KWin|Improved snow effect; Different sizes, better randomness and different directions|torgny.johansson@gmail.com|Torgny Johansson}}&lt;br /&gt;
{{FeatureDone|KWin|Shader for snow effect|ubuntu@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureDone|KWin|Improved desktop grid|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureDone|KWin|New present window layout modes|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureDone|KWin|Invert only selected windows|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureDone|KWin|Unredirecting of fullscreen windows|l.lunak@kde.org|Luboš Luňák}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdepimlibs =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|KCal Library|Make the KCal library dependent on the external libical package (from freeassocation) rather than our own old, forked version.|winter@kde.org|Allen Winter}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdenetwork =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|Kopete|MSNP15 implementation for MSN|mattr@kde.org|Matt Rogers}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Kopete|Move file transfer request into chat window|kedgedev@centrum.cz|Roman Jarosz}}&lt;br /&gt;
{{FeatureDone|Kopete|Message delivery notifications|kedgedev@centrum.cz|Roman Jarosz}}&lt;br /&gt;
{{FeatureDone|Kopete|Improve file transfer progress dialog|kedgedev@centrum.cz|Roman Jarosz}}&lt;br /&gt;
{{FeatureDone|Kopete|Jabber Jingle Audio support (raw-udp)|detlev.casanova@gmail.com|Detlev Casanova}}&lt;br /&gt;
{{FeatureInProgress|Plasma|Network Manager Applet|cblauvelt@gmail.com|Christopher Blauvelt}}&lt;br /&gt;
{{FeatureDone|KRDC|Greatly improve experience for LDAP (e.g. MS Active Directory) administrators|uwolfer@kde.org|Urs Wolfer}}&lt;br /&gt;
{{FeatureDone|KRDC|Improve per-host settings (remember scaling mode and other options) |gpothier@gmail.com|Guillaume Pothier}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdepim =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|Akregator|Basic support for enclosures (Displaying links, mimetype and size)|osterfeld@kde.org|Frank Osterfeld}}&lt;br /&gt;
{{FeatureDone|KAlarm|Improve alarm edit and preferences dialog layouts|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|KAlarm|Add holidays support|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|Kjots| Import notes from KnowIt as KJots pages. |steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureDone|KMail|Aggregated attachment view in the mail header area of the reader window|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Merge the new message list from the SoC branch|mcguire@kde.org|Thomas McGuire}}&lt;br /&gt;
{{FeatureDone|KNotes|Zeroconf support for sending notes on LAN|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureDone|KonsoleKalendar|Add an option to support resources that might need a GUI (i.e. all resources)|kevin.krammer@gmx.at|Kevin Krammer}}&lt;br /&gt;
{{FeatureDone|Kontact|New Planner summary; combines Appointment+To-do+SpecialDates into 1 pretty summary|o_timocin@gmx.de|Oral Timocin}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Drag and drop in the free-busy view|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Support for comments in replies to invitations|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|Kleopatra|Konqueror and Dolphin Kleopatra plugins|marc@kdab.net|Marc Mutz (Gpg4win)}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeutils =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|Okteta|rework Decoding table, add int64 and UTF-8|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureDone|Okteta|refactor KByteArrayView and add a row-oriented view|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureDone|Okteta|work on Tabs: add remove button, accept drop of url as load command|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureDone|Okteta|Add option to extend selection in Goto dialog|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureDone|Okteta|parameter dialog for &amp;quot;Copy as...&amp;quot; and &amp;quot;Export as...&amp;quot;|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureDone|Okteta|Status bar contains settings like cursor position or Insertmode|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureDone|Okteta|add a file info tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureInProgress|Ark|Implement proper drag/drop between Ark/dolphin|haraldhv((at))stud(dot)ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureDone|Ark|Make the service menu work (possibly doing it as a KonqPopupPlugin|haraldhv((at))stud(dot)ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureDone|Ark|Proper password support|haraldhv((at))stud(dot)ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureDone|Ark|Implement a plugin for .gz files|haraldhv((at))stud(dot)ntnu.no|Harald Hvaal}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebindings =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|krosspython and krossruby|Support custom types via handlers|mail@dipe.org|Sebastian Sauer}}&lt;br /&gt;
{{FeatureDone|krosspython and krossruby|Support QList&amp;lt;CustomType*&amp;gt; constructs|mail@dipe.org|Sebastian Sauer}}&lt;br /&gt;
{{FeatureDone|Smoke|Wrap some more APIs (at least Akanodi for all languages and Plasma for C#)|kde-bindings@kde.org|KDE-bindings developers}}&lt;br /&gt;
{{FeatureDone|PyKDE|KCM support and other plugins|simon@simonzone.com|Simon Edwards}}&lt;br /&gt;
{{FeatureDone|krossfalcon|Move krossfalcon to kdebindings-trunk.|mail@dipe.org|Sebastian Sauer}}&lt;br /&gt;
{{FeatureInProgress|krossfalcon|Unittests++|mail@dipe.org|Sebastian Sauer}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdegames =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|libkdegames|New highscore management system|milliams|Matt Williams}}&lt;br /&gt;
{{FeatureDone|kdiamond|Drag jewels|majewsky@gmx.net|Stefan Majewsky}}&lt;br /&gt;
{{FeatureDone|kdiamond|Support for untimed games|majewsky@gmx.net|Stefan Majewsky}}&lt;br /&gt;
{{FeatureTodo|kdiamond|Optional OpenGL rendering|majewsky@gmx.net|Stefan Majewsky}}&lt;br /&gt;
{{FeatureDone|ksirk|Map scrolling arrows|kleag@free.fr|Gaël de Chalendar}}&lt;br /&gt;
{{FeatureDone|ksirk|KHotNewStuff skins|kleag@free.fr|Gaël de Chalendar}}&lt;br /&gt;
{{FeatureDone|ksirk|Jabber based net game finding (initial version)|kleag@free.fr|Gaël de Chalendar}}&lt;br /&gt;
{{FeatureDone|ksirk|Use only names in skins instead of numeric ids|kleag@free.fr|Gaël de Chalendar}}&lt;br /&gt;
{{FeatureDone|ksirk|Skins editor|kleag@free.fr|Gaël de Chalendar}}&lt;br /&gt;
{{FeatureInProgress|KBreakOut|(Optional) fire on mouse click|fela.kde@gmail.com|Fela Winkelmolen}}&lt;br /&gt;
{{FeatureTodo|KBreakOut|Sounds|fela.kde@gmail.com|Fela Winkelmolen}}&lt;br /&gt;
{{FeatureTodo|KBreakOut|Custom levelsets|fela.kde@gmail.com|Fela Winkelmolen}}&lt;br /&gt;
{{FeatureTodo|KBreakOut|KHotNewStuff support for themes|fela.kde@gmail.com|Fela Winkelmolen}}&lt;br /&gt;
{{FeatureTodo|KNetWalk|Support for custom and non-square board sizes|fela.kde@gmail.com|Fela Winkelmolen}}&lt;br /&gt;
{{FeatureTodo|KGoldrunner|Improvement to sound support and themes|mikelima@cirulla.net}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Add the Count game (17 levels), contributed by Steve Mann.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KBlocks|Support for sounds|piacentini@kde.org|Mauricio Piacentini}}&lt;br /&gt;
{{FeatureTodo|KMahjongg|Support for sounds|piacentini@kde.org|Mauricio Piacentini}}&lt;br /&gt;
{{FeatureDone|Killbots|New app for 4.2|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureTodo|KSudoku|Port of &amp;quot;print game&amp;quot; feature from old version|paulo.cattai@ltia.fc.unesp.br|Paulo Roberto Cattai}}&lt;br /&gt;
{{FeatureTodo|KSudoku|Redesign of symbol themes|paulo.cattai@ltia.fc.unesp.br|Paulo Roberto Cattai}}&lt;br /&gt;
{{FeatureTodo|KSudoku|Replace the core engine with a new version that will solve most bugs related to gameplay|johannes.bergmeier@gmx.net|Johannes Bergmeier}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdesdk =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|Kate|Port and reenable the Snippets plugin.|jpetso@gmx.at|Jakob Petsovits}}&lt;br /&gt;
{{FeatureDone|perldoc KIOSlave|Add KIOSlave to allow reading Perldoc documentation.|michael.pyne&amp;amp;#64;kdemail&amp;amp;#46;net|Michael Pyne}}&lt;br /&gt;
{{FeatureDone|Lokalize|wrap all windows belonging to one project into one MDI window|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureDone|Umbrello|Port code generation wizard to QWizard and replace all q3 widgets|andi.fischer@hispeed.ch|Andi Fischer}}&lt;br /&gt;
{{FeatureDone|Kate|Move the kate-ctags plugin to kdesdk.|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureDone|Kate|Replace the make-plugin with katebuild-plugin.|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeedu =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|KAlgebra|New parser (using QLALR) and new lexer|aleixpol@gmail.com|Aleix Pol}}&lt;br /&gt;
{{FeatureDone|KAlgebra|Import capability for MathML Presentation Markup in libanalitza|aleixpol@gmail.com|Aleix Pol}}&lt;br /&gt;
{{FeatureDone|Kalzium|Visualization of Schemes and Gradients at same time|tiago.porangaba@ltia.fc.unesp.br|Tiago Porangaba}}&lt;br /&gt;
{{FeatureDone|KBruch|Usability Improvements|tiago.porangaba@ltia.fc.unesp.br|Tiago Porangaba}}&lt;br /&gt;
{{FeatureDone|KBruch|Merging KPercentage functionalities into KBruch|tiago.porangaba@ltia.fc.unesp.br|Tiago Porangaba}}&lt;br /&gt;
{{FeatureDone|KHangMan|Add a Open File action|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureDone|Marble|Python bindings to the Marble widget and classes|simon@simonzone.com|Simon Edwards}}&lt;br /&gt;
{{FeatureDone|KStars|Display millions of stars|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureDone|KStars|Tool to predict Conjunctions|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureDone|KStars|Support of Non-western Constellations|jsid@emor3j.fr.eu.org|Jérôme Sonrier}}&lt;br /&gt;
{{FeatureDone|KStars|Include HD Catalog Numbers (in search, in display)|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureDone|KStars|Separate INDI From KStars|mutlaqja@ikarustech.com|Jasem Mutlaq}}&lt;br /&gt;
{{FeatureDone|KStars|Sky Calendar Tool|kstars@30doradus.org|Jason Harris}}&lt;br /&gt;
{{FeatureDone|KStars|Earth Satellites|kstars@30doradus.org|Jason Harris}}&lt;br /&gt;
{{FeatureDone|KTurtle|Add command line|piacentini@kde.org|Mauricio Piacentini}}&lt;br /&gt;
{{FeatureDone|KTurtle|Add a color picker|nielsslot@gmail.com|Niels Slot}}&lt;br /&gt;
{{FeatureDone|KTurtle|Export canvas as image|piacentini@kde.org|Mauricio Piacentini}}&lt;br /&gt;
{{FeatureDone|Parley|Rework main window infrastructure|d.laidig@gmx.de|Daniel Laidig}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|KsCD|Dbus Connection for Now Playing plasmoid|bouchikhi.amine@gmail.com|Amine Bouchikhi}}&lt;br /&gt;
{{FeatureInProgress|Dragon Player|Make Dragon indipendent from Xine|ian.monroe@gmail.com|Ian Monroe}}&lt;br /&gt;
{{FeatureInProgress|Dragon Player|File Manager|ian.monroe@gmail.com|Ian Monroe}}&lt;br /&gt;
{{FeatureInProgress|Dragon Player|play media dialog|ian.monroe@gmail.com|Ian Monroe}}&lt;br /&gt;
{{FeatureInProgress|Dragon Player|slider changes|ian.monroe@gmail.com|Ian Monroe}}&lt;br /&gt;
{{FeatureInProgress|Dragon Player|show info while playing audio files|ian.monroe@gmail.com|Ian Monroe}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeaccessibility =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|KbStatusApplet|Port the KDE3 applet to a Plasma applet and get it fully working again|mail@dipe.org|Sebastian Sauer}}&lt;br /&gt;
{{FeatureTodo|KMagnifier|Refactor color menu, re-add invert, break current color blindness code into &amp;quot;daltonize&amp;quot; and &amp;quot;simulate&amp;quot;|mw_triad@users.sourceforge.net|Matthew Woehlke}}&lt;br /&gt;
{{FeatureTodo|KMagnifier|Add color-shift modes to help people with color blindness|mw_triad@users.sourceforge.net|Matthew Woehlke}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeartwork =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; &lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|Screensavers|Add the &amp;quot;KDE Asciiquarium&amp;quot; screensaver.  Ported to KDE by Michael Pyne and Maksim Orlovich, [http://www.robobunny.com/projects/asciiquarium/html/ original screensaver] by Kirk Baucom|michael.pyne@kdemail.net|Michael Pyne}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdegraphics =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|KSnapshot|Add support for grabbing a single screen in multihead|rich@kde.org|Richard Moore}}&lt;br /&gt;
{{FeatureDone|KSnapshot|Increase jpeg image quality from 75% to 85%|rich@kde.org|Richard Moore}}&lt;br /&gt;
{{FeatureDone|KSnapshot|If we're saving the window decorations then record the window title and class in the image (if the format supports it) to play nice with indexers like strigi|rich@kde.org|Richard Moore}}&lt;br /&gt;
{{FeatureTodo|Okular|Improve annotation support: for existing types (rubber stamps, line, note, etc), and for the way they are constructed and handled.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureInProgress|Okular|Support for videos &amp;amp; movie annotations.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureDone|Gwenview|Support for animated images (.gif and .mng)|aurelien.gateau@free.fr|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureDone|Gwenview|Red Eye Reduction|aurelien.gateau@free.fr|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureDone|Gwenview|Nepomuk integration|aurelien.gateau@free.fr|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureDone|Gwenview|Dolphin-like single-click selection|aurelien.gateau@free.fr|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureTodo|Gwenview|Optional tree view|aurelien.gateau@free.fr|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureInProgress|Okular|Usable inverse search.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureInProgress|Okular|&amp;quot;Okular document package&amp;quot; for import/export a document with metadata (eg annotations).|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureDone|Okular|New backend for fax documents.|tokoe@kde.org|Tobias Koenig}}&lt;br /&gt;
{{FeatureTodo|Okular|Usability improvements.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-runtime =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|kio_bookmarks|A new konqueror home page displaying user bookmarks. See [[http://kde-apps.org/content/show.php?content=86516 description]]|xavier.vello@gmail.com|Xavier Vello}}&lt;br /&gt;
{{FeatureInProgress|kuiserver|KUiServer Goya port. General improvements for usability improvements|ereslibre@kde.org|Rafael Fernández López}}&lt;br /&gt;
{{FeatureDone|kio fish/sftp|port fish and sftp to windows|brandon.ml@gmail.com|Carlo Segato}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-apps =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|konqueror|A new konqueror recover-dialog replacement|edulix@gmail.com|Eduardo Robles Elvira}}&lt;br /&gt;
{{FeatureTodo|konqueror|Rework bookmarks using Akonadi|edulix@gmail.com|Eduardo Robles Elvira}}&lt;br /&gt;
{{FeatureDone|dolphin|Add zoom slider into the status bar and general zooming improvments|peter.penz@gmx.at|Peter Penz}}&lt;br /&gt;
{{FeatureDone|dolphin|Tooltip previews|peter.penz@gmx.at|Peter Penz}}&lt;br /&gt;
{{FeatureTodo|dolphin|ui to select preferred default settings for directory view|loic.marteau@gmail.com|Loic Marteau}}&lt;br /&gt;
{{FeatureInProgress|konqueror|Tagging and rating of webpages using Nepomuk - Already finished in playground.|trueg@kde.org|Sebastian Trueg}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeplasma-addons =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|PoTD engine|Import from playground|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureDone|Frame plasmoid|Honor EXIF rotation - see bug 164605|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|Frame plasmoid|Previous, Pause and Next buttons - see bug 164704|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureDone|Comic dataengine|Port all comics to QScript and offer them through GHNS|mat69@gmx.net|Matthias Fuchs}}&lt;br /&gt;
{{FeatureDone|Comic dataengine|Finish script support|mat69@gmx.net|Matthias Fuchs}}&lt;br /&gt;
{{FeatureDone|Eyes applet|xeyes clone applet|ogoffart%kde.org|Olivier Goffart}}|}&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.2_Feature_Plan</id>
		<title>Schedules/KDE4/4.2 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.2_Feature_Plan"/>
				<updated>2009-05-07T04:33:09Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* kdeutils */ Updated status of one ark feature&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the 4.2 release.&lt;br /&gt;
&lt;br /&gt;
See also:&lt;br /&gt;
* [[Schedules/KDE4/4.2 Release Schedule]]&lt;br /&gt;
* [[Schedules/KDE4/4.2 Release Goals]]&lt;br /&gt;
* [[Schedules/KDE4/4.3 Feature Plan]]&lt;br /&gt;
* [[Schedules/KDE4/4.1 Feature Plan]]&lt;br /&gt;
&lt;br /&gt;
Legend:&lt;br /&gt;
* todo =&amp;gt; not started yet&lt;br /&gt;
* in-progress =&amp;gt; started, but not completed yet&lt;br /&gt;
* done =&amp;gt; completed&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Other =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|System Settings|add Administrator mode button. See Bug 151669|alediaferia@gmail.com|Alessandro Diaferia}}&lt;br /&gt;
{{FeatureInProgress|KPackageKit|Pushing in KPackageKit (dependant on PolicyKit integration)|dantti85-dev@yahoo.com.br|Daniel}}&lt;br /&gt;
{{FeatureDone|Eigen|Make Eigen 2 ready for KDE, and move it to kdesupport|jacob@math.jussieu.fr|Benoît Jacob}}&lt;br /&gt;
{{FeatureDone|Eigen|Port all Eigen-using code in KDE and KOffice to Eigen 2.0|jacob@math.jussieu.fr|Benoît Jacob}}&lt;br /&gt;
{{FeatureInProgress|KNotify|Create OSD based replacement for current KPassivePopup [Deferred to 4.3]|ben()eclipse.endoftheinternet.org|Ben Cooksley}}&lt;br /&gt;
{{FeatureTodo|Dikku Context Framework|Create a context framework with working activities|harikrishna.anandhan@gmail.com|Harikrishna Anandhan}}&lt;br /&gt;
{{FeatureDone|kwrited|Use knotify in kwrited|gkiagiad@csd.uoc.gr|George Kiagiadakis}}&lt;br /&gt;
{{FeatureDone|Akonadi|Various Akonadi related items can be found here http://techbase.kde.org/Projects/PIM/Akonadi#KDE_4.2_.2F_Akonadi_1.1|kde-pim@kde.org|Akonadi Developers}}&lt;br /&gt;
{{FeatureDone|Printer Admin|KDEPrint is dead, long live system-config-printer-kde (kdeadmin) and printer-applet (kdeutils)!  Thanks to jriddell for these.|jriddell}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdelibs =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|kross|Extend QtScript integration.|mail@dipe.org|Sebastian Sauer}}&lt;br /&gt;
{{FeatureDone|KLocale|Implement KLocale based methods to return correct working week start and end days and day of religious worship for the locale.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureDone|KDateTable|Correctly draw weekends and day of worship for locale using new KLocale settings.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureTodo|Phonon|add Port class for fine grained control over data flow between Phonon objects|kretz@kde.org|Matthias Kretz}}&lt;br /&gt;
{{FeatureInProgress|Phonon|make AbstractMediaStream/Streamterface threadsafe|kretz@kde.org|Matthias Kretz}}&lt;br /&gt;
{{FeatureInProgress|Phonon|&amp;quot;low-level&amp;quot; PCM I/O with at least an ALSA implementation|kretz@kde.org|Matthias Kretz and Ian Monroe}}&lt;br /&gt;
{{FeatureInProgress|Phonon|VideoWidget snapshot function|kretz@kde.org|Matthias Kretz}}&lt;br /&gt;
{{FeatureInProgress|KConfig|API review and export KConfigBackend|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureInProgress|KConfig|Make KConfigSkeleton KConfigGroup aware|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureInProgress|KConfig|Make KConfigDialog work nicer with KConfigSkeleton + manually managed widgets|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureDone|KUrlNavigator|Provide an option to always show the full path in the breadcrumb mode.|peter.penz@gmx.at|Peter Penz}}&lt;br /&gt;
{{FeatureDone|Katepart|Make a Vi input mode for Katepart|ehamberg@gmail.com|Erlend Hamberg}}&lt;br /&gt;
{{FeatureTodo|KIO::Global|Make KDynamicJobTracker do the checking if the kuiserver service is registered or not, for full implementation of &amp;quot;Progress in the same window&amp;quot;|ereslibre@kde.org|Rafael Fernández López}}&lt;br /&gt;
{{FeatureInProgress|KJS|Further performance improvements|maksim@kde.org|Maksim Orlovich}}&lt;br /&gt;
{{FeatureDone|KJS and KHTML|Support for transparent reindenting of standalone sources in debugger|maksim@kde.org|Maksim Orlovich}}&lt;br /&gt;
{{FeatureInProgress|KHTML|SVG support in KHTML (port from WebKit)|tsjoker@gmail.com|Vyacheslav Tokarev}}&lt;br /&gt;
{{FeatureDone|KHTML|Use of IDString (hashed strings) for local names, prefixes and namespaces in DOM core instead of document-related ids, in particular for better API compatibility with WebCore|tsjoker@gmail.com|Vyacheslav Tokarev}}&lt;br /&gt;
{{FeatureInProgress|KHTML|Significant CSS performance improvements|tsjoker@gmail.com|Vyacheslav Tokarev}}&lt;br /&gt;
{{FeatureTodo|KHTML|Scriptable extension plug-ins|porten@kde.org|Harri}}&lt;br /&gt;
{{FeatureTodo|KHTML|Gaussian SVG filter|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|KHTML|Support for CSS3 border-* properties|fredrik@kde.org|Fredrik Höglund and Maksim Orlovich}}&lt;br /&gt;
{{FeatureInProgress|KHTML|Finish support of Video/Audio elements|germain@ebooksfrance.org|Germain Garand}}&lt;br /&gt;
{{FeatureDone|KHTML|Early domain name resolution (prefetch)|germain@ebooksfrance.org|Germain Garand}}&lt;br /&gt;
{{FeatureDone|KHTML|KHTMLFindBar - an embedded search/find-as-you-type bar|bbeschow@cs.tu-berlin.de|Bernhard Beschow (and Germain Garand)}}&lt;br /&gt;
{{FeatureTodo|KHTML|Faster page cache|germain@ebooksfrance.org|Germain Garand}}&lt;br /&gt;
{{FeatureTodo|KHTML|More automation in JS/C++ bindings generation|maksim@kde.org|Maksim Orlovich and Vyacheslav Tokarev}}&lt;br /&gt;
{{FeatureTodo|KHTML|XPath level 1|maksim@kde.org|Maksim Orlovich}}&lt;br /&gt;
{{FeatureDone|kwallet|Move kwalletd to kdebase-runtime|dfaure@kde.org|David Faure}}&lt;br /&gt;
{{FeatureInProgress|kdeui|Rich text builders for KTextEdit, including BBCode, html, plain text markup, mediawiki and markdown output.|steveire@gmail.com| Stephen Kelly}}&lt;br /&gt;
{{FeatureDone|i18n|proper filenames decoding for FAT mounting, in KUrls and content-disposition|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureDone|Kross|expose KAssistantDialog as part of forms module|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureDone|KLocale|Method to strip accelerator marker from UI strings; needs to take into account CJK-style markers too.|caslav.ilic@gmx.net|Chusslove Illich}}&lt;br /&gt;
{{FeatureInProgress|KStyle|New branch style for treeviews|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|CMake|Reduced library link interface|neundorf@kde.org|Alexander Neundorf}}&lt;br /&gt;
{{FeatureTodo|CMake|Exporting and importing (library) targets|neundorf@kde.org|Alexander Neundorf}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-workspace =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|Calendar KCM|Add support for setting new KLocale settings for Working Week and Day or Religious Worship.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureTodo|Color KCM|Add 'smart setting' of extended colors|mw_triad@users.sourceforge.net|Matthew Woehlke}}&lt;br /&gt;
{{FeatureTodo|Color KCM|Add KDE3 scheme import|mw_triad@users.sourceforge.net|Matthew Woehlke}}&lt;br /&gt;
{{FeatureTodo|Color KCM|Query kwin for supported colors; add full set of kwin colors|mw_triad@users.sourceforge.net|Matthew Woehlke}}&lt;br /&gt;
{{FeatureDone|Power Manager|import PowerDevil|drf@kdemod.ath.cx|Dario Freddi}}&lt;br /&gt;
{{FeatureTodo|Font Installer KCM|Use PolicyKit for installtion of system-wide fonts.|craig@kde.org|Craig Drummond}}&lt;br /&gt;
{{FeatureDone|Kephal|Import kephal for better xrandr-support.|dev@aikesommer.name|Aike Sommer}}&lt;br /&gt;
{{FeatureDone|ConsoleKit support|Add ConsoleKit support to kdm.|kkofler@fedoraproject.org|Kevin Kofler}}&lt;br /&gt;
{{FeatureDone|Nepomuk KIO Slave|Nepomuk Desktop search KIO slave nepomuksearch:/|trueg@kde.org|Sebastian Trueg}}&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KRunner&lt;br /&gt;
{{FeatureInProgress|Krunner|Configuration options for blacklisting, user ranking, runner ranking, learning|mumismo@gmail.com|Jordi Polo}}&lt;br /&gt;
{{FeatureInProgress|Krunner|SearchMatch configuration|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureTodo|Krunner|Simple learning|mumismo@gmail.com|Jordi Polo}}&lt;br /&gt;
{{FeatureTodo|Krunner|Simple GUI for above options|mumismo@gmail.com|Jordi Polo}}&lt;br /&gt;
{{FeatureTodo|Krunner|Runners able to share parsing|mumismo@gmail.com|Jordi Polo}}&lt;br /&gt;
{{FeatureDone|Krunner|Noun-Verb support|ryan.bitanga@gmail.com|Ryan P. Bitanga}}&lt;br /&gt;
{{FeatureTodo|Krunner|Implement Nuno's UI polishings|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureTodo|Krunner|Runtime syntax documentation|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureTodo|Krunner|Runner configuration|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureTodo|Krunner|Search set paging|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureTodo|KRunner|runner for the plasma dbus interface|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureDone|KRunner|Konqueror history runner|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureDone|KRunner|Kate sessions runner|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureDone|KRunner|Recent Documents runner|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureDone|KRunner|Improve KDE startup speed by delaying KRunner startup|mail@dipe.org|Sebastian Sauer}}&lt;br /&gt;
{{FeatureDone|KRunner|Nepomuk desktop search runner|trueg@kde.org|Sebastian Trueg}}&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |Plasma - Priority Features&lt;br /&gt;
{{FeatureTodo|Plasma|Welcome plasmoid|aseigo@kde.org|Aaron Seigo}}{{FeatureInProgress|Plasma|JOLIE Integration|ervin@kde.org|Kevin Ottens}}&lt;br /&gt;
{{FeatureDone|Plasma|Notification plasmoid (integrated in systemtray)|dimsuzkde@gmail.com|Dmitry Suzdalev}}&lt;br /&gt;
{{FeatureDone|Plasma|Kuiserver plasmoid (integrated in systemtray)|r.scheepmaker@student.utwente.nl|Rob Scheepmaker}}&lt;br /&gt;
{{FeatureTodo|KWin|Make it possible to focus plasma panels|chanika@gmail.com|Chani}}&lt;br /&gt;
{{FeatureDone|Plasma|panel-&amp;gt;desktop dragging|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureTodo|Plasma|Expand cashew to full action bar when zoomed out|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureInProgress|Plasma|Plasmagik packaging (and package classes)|riccardo@kde.org|Riccardo Iaconelli}}&lt;br /&gt;
{{FeatureDone|Plasma|Improved Battery applet for Powerdevil|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureInProgress|Plasma|Networkmanager Plasmoid and DataEngine|cblauvelt@gmail.com|Christopher Blauvelt}}&lt;br /&gt;
{{FeatureInProgress|Plasma|New ECMA Script Scriptengines|richmoore44@gmail.com|Richard Moore}}&lt;br /&gt;
{{FeatureDone|Plasma|Extenders|r.scheepmaker@student.utwente.nl|Rob Scheepmaker}}&lt;br /&gt;
{{FeatureDone|Plasma|Wallpaper plugins|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureDone|Plasma|Separate Desktop Settings from DesktopContainment|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureTodo|Plasma|Script Security Framework|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureDone|Plasma|Python support|simon@simonzone.com|Simon Edwards}}&lt;br /&gt;
{{FeatureDone|Plasma|Ruby support|richard.j.dale@gmail.com|Richard Dale}}&lt;br /&gt;
{{FeatureDone|Plasma|C# support|kde@arnorehn.de|Richard Dale, Arno Rehn}}&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |Plasma&lt;br /&gt;
{{FeatureDone|Plasma|Plasma Popup Tips|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureDone|Plasma|Collapsing Applet convenience class|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Plasma|Taskbar grouping|hrigi_1@hotmail.com|Christian Mollekopf}}&lt;br /&gt;
{{FeatureInProgress|Plasma|Small Form Factors|m.kruisselbrink@student.tue.nl|Marijn Kruisselbrink}}&lt;br /&gt;
{{FeatureDone|Plasma|Plasma On Screensaver|chanika@gmail.com|Chani Armitage}}&lt;br /&gt;
{{FeatureInProgress|Plasma|Website update|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureInProgress|Plasma|Grid applet|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureInProgress|Plasma|Techbase Tutorials|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureTodo|Plasma|Context menu plugins|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureDone|Plasma|Add New Widgets: Pluggable widget browser|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureDone|Plasma|Activity&amp;lt;-&amp;gt;Virtual Desktop Affinity|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureDone|Plasma|Optional Per-Virtual Desktop DesktopView|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureTodo|Plasma|Make non-SVG painting in Plasma low-color and non-anim friendly|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureTodo|Plasma|Runtime DataEngine documentation (sources, usage, etc)|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureDone|Plasma|Panel Autohide|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureDone|Plasma|Keyboard Shortcut Config UI|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureDone|Plasma|Systray++ Spec|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureDone|Plasma|Save icon positioning in folderview|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureTodo|Plasma|New wallpapers|riccardo@kde.org|Riccardo Iaconelli}}&lt;br /&gt;
{{FeatureTodo|Plasma|Import Raptor|riccardo@kde.org|Riccardo Iaconelli}}&lt;br /&gt;
{{FeatureDone|Plasma|Quicklaunch Plasmoid|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureTodo|Plasma|Preserve wallpaper choice by copying user paper to home dir|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureTodo|Plasma|New way of handling wallpapers and different sizes (package format, and so on...)|riccardo@kde.org|Riccardo Iaconelli}}&lt;br /&gt;
{{FeatureTodo|Plasma|Top-level windows plasmoids|riccardo@kde.org|Riccardo Iaconelli}}&lt;br /&gt;
{{FeatureDone|Plasma|drop indicator in panel|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureTodo|Plasma|improve usability of appletbrowser delete button|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureTodo|Plasma|adding containments from the appletbrowser (and remove the &amp;quot;add panel&amp;quot; from DefaultDesktop)|aseigo@kde.org|Aaron Seigo}}&lt;br /&gt;
{{FeatureTodo|Plasma|highlight the applet with active keyboard shortcuts|chanika@gmail.com|Chani}}&lt;br /&gt;
{{FeatureTodo|Plasma|dbus interface|chanika@gmail.com|Chani}}&lt;br /&gt;
{{FeatureDone|Plasma|make the panel controller a bit more usable|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureDone|Plasma|nicely draw the desktop toolbox when it's moved because of a panel|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureDone|Plasma|theme Plasma::PushButton with svg|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureDone|Plasma|Tabbar widget derived from QTabBar and themed with svg|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureDone|Plasma|Complete the panel size sliders feature: an applet can ask the panel to resize|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureDone|Plasma|New theming capabilities by expanding the lower level theming classes (Theme and PanelSvg)|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureDone|Plasma|Activitybar: an applet to quickly switch between activities|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureDone|Plasma|A new plasmoid that implements the functionality of a simple web browser|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureDone|Plasma|Visual clue when dragging applets from applet browser to the panel|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureDone|Plasma|Google Gadgets support|idlecat511@gmail.com|Tiger Dong}}&lt;br /&gt;
{{FeatureDone|Plasma|Add Google Gadgets from Internet through AppletBrowser|idlecat511@gmail.com|Tiger Dong}}&lt;br /&gt;
{{FeatureDone|Plasma|Panel form factor support in the folderview applet|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureTodo|Plasma|Support for creating applets for dropped URLs in the folderview applet when it's acting as a containment|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureDone|Plasma|Add a places combo box to the location page in the folderview config dialog|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KWin - Core&lt;br /&gt;
{{FeatureDone|KWin|New window snapping zones; screen center and window corners|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureDone|KWin|Move maximized windows between Xinerama screens|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureDone|KWin|Support for decoration shadows|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureDone|KWin|Implement [http://standards.freedesktop.org/wm-spec/wm-spec-latest.html#id2552578 _NET_WM_FULLSCREEN_MONITORS] EWMH spec hint|vR@movingparts.net|Jason 'vanRijn' Kasper}}&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KWin - Desktop Effects&lt;br /&gt;
{{FeatureDone|KWin|Compositing enabled by default|l.lunak@kde.org|Luboš Luňák}}&lt;br /&gt;
{{FeatureDone|KWin|Compositing self-check|l.lunak@kde.org|Luboš Luňák}}&lt;br /&gt;
{{FeatureDone|KWin|Global animation speed setting|l.lunak@kde.org|Luboš Luňák}}&lt;br /&gt;
{{FeatureDone|KWin|Motion dynamics|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureDone|KWin|Improved UI for selecting window/desktop switcher|ubuntu@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureDone|KWin|UI for assigning effects to screen edges|ubuntu@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureDone|KWin|Cube/cylinder/sphere effect|ubuntu@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureDone|KWin|Magic lamp minimize effect|ubuntu@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureDone|KWin|Animation in box switch effect|ubuntu@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureDone|KWin|Mouse interaction for cover switch Effect|ubuntu@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureDone|KWin|Thumbnail bar in the cover switch effect|ubuntu@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureDone|KWin|Improved snow effect; Different sizes, better randomness and different directions|torgny.johansson@gmail.com|Torgny Johansson}}&lt;br /&gt;
{{FeatureDone|KWin|Shader for snow effect|ubuntu@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureDone|KWin|Improved desktop grid|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureDone|KWin|New present window layout modes|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureDone|KWin|Invert only selected windows|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureDone|KWin|Unredirecting of fullscreen windows|l.lunak@kde.org|Luboš Luňák}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdepimlibs =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|KCal Library|Make the KCal library dependent on the external libical package (from freeassocation) rather than our own old, forked version.|winter@kde.org|Allen Winter}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdenetwork =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|Kopete|MSNP15 implementation for MSN|mattr@kde.org|Matt Rogers}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Kopete|Move file transfer request into chat window|kedgedev@centrum.cz|Roman Jarosz}}&lt;br /&gt;
{{FeatureDone|Kopete|Message delivery notifications|kedgedev@centrum.cz|Roman Jarosz}}&lt;br /&gt;
{{FeatureDone|Kopete|Improve file transfer progress dialog|kedgedev@centrum.cz|Roman Jarosz}}&lt;br /&gt;
{{FeatureDone|Kopete|Jabber Jingle Audio support (raw-udp)|detlev.casanova@gmail.com|Detlev Casanova}}&lt;br /&gt;
{{FeatureInProgress|Plasma|Network Manager Applet|cblauvelt@gmail.com|Christopher Blauvelt}}&lt;br /&gt;
{{FeatureDone|KRDC|Greatly improve experience for LDAP (e.g. MS Active Directory) administrators|uwolfer@kde.org|Urs Wolfer}}&lt;br /&gt;
{{FeatureDone|KRDC|Improve per-host settings (remember scaling mode and other options) |gpothier@gmail.com|Guillaume Pothier}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdepim =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|Akregator|Basic support for enclosures (Displaying links, mimetype and size)|osterfeld@kde.org|Frank Osterfeld}}&lt;br /&gt;
{{FeatureDone|KAlarm|Improve alarm edit and preferences dialog layouts|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|KAlarm|Add holidays support|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|Kjots| Import notes from KnowIt as KJots pages. |steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureDone|KMail|Aggregated attachment view in the mail header area of the reader window|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KMail|Merge the new message list from the SoC branch|mcguire@kde.org|Thomas McGuire}}&lt;br /&gt;
{{FeatureDone|KNotes|Zeroconf support for sending notes on LAN|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureDone|KonsoleKalendar|Add an option to support resources that might need a GUI (i.e. all resources)|kevin.krammer@gmx.at|Kevin Krammer}}&lt;br /&gt;
{{FeatureDone|Kontact|New Planner summary; combines Appointment+To-do+SpecialDates into 1 pretty summary|o_timocin@gmx.de|Oral Timocin}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Drag and drop in the free-busy view|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|KOrganizer|Support for comments in replies to invitations|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureDone|Kleopatra|Konqueror and Dolphin Kleopatra plugins|marc@kdab.net|Marc Mutz (Gpg4win)}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeutils =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|Okteta|rework Decoding table, add int64 and UTF-8|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureDone|Okteta|refactor KByteArrayView and add a row-oriented view|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureDone|Okteta|work on Tabs: add remove button, accept drop of url as load command|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureDone|Okteta|Add option to extend selection in Goto dialog|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureDone|Okteta|parameter dialog for &amp;quot;Copy as...&amp;quot; and &amp;quot;Export as...&amp;quot;|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureDone|Okteta|Status bar contains settings like cursor position or Insertmode|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureDone|Okteta|add a file info tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureInProgress|Ark|Implement proper drag/drop between Ark/dolphin|haraldhv((at))stud(dot)ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureDone|Ark|Make the service menu work (possibly doing it as a KonqPopupPlugin|haraldhv((at))stud(dot)ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureDone|Ark|Proper password support|haraldhv((at))stud(dot)ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureTodo|Ark|Support for custom options from the compression interface (eg. a slider for selecting compression level for rar files)|haraldhv((at))stud(dot)ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureDone|Ark|Implement a plugin for .gz files|haraldhv((at))stud(dot)ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureTodo|Ark|Add an options dialog (maybe)|haraldhv((at))stud(dot)ntnu.no|Harald Hvaal}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebindings =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|krosspython and krossruby|Support custom types via handlers|mail@dipe.org|Sebastian Sauer}}&lt;br /&gt;
{{FeatureDone|krosspython and krossruby|Support QList&amp;lt;CustomType*&amp;gt; constructs|mail@dipe.org|Sebastian Sauer}}&lt;br /&gt;
{{FeatureDone|Smoke|Wrap some more APIs (at least Akanodi for all languages and Plasma for C#)|kde-bindings@kde.org|KDE-bindings developers}}&lt;br /&gt;
{{FeatureDone|PyKDE|KCM support and other plugins|simon@simonzone.com|Simon Edwards}}&lt;br /&gt;
{{FeatureDone|krossfalcon|Move krossfalcon to kdebindings-trunk.|mail@dipe.org|Sebastian Sauer}}&lt;br /&gt;
{{FeatureInProgress|krossfalcon|Unittests++|mail@dipe.org|Sebastian Sauer}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdegames =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|libkdegames|New highscore management system|milliams|Matt Williams}}&lt;br /&gt;
{{FeatureDone|kdiamond|Drag jewels|majewsky@gmx.net|Stefan Majewsky}}&lt;br /&gt;
{{FeatureDone|kdiamond|Support for untimed games|majewsky@gmx.net|Stefan Majewsky}}&lt;br /&gt;
{{FeatureTodo|kdiamond|Optional OpenGL rendering|majewsky@gmx.net|Stefan Majewsky}}&lt;br /&gt;
{{FeatureDone|ksirk|Map scrolling arrows|kleag@free.fr|Gaël de Chalendar}}&lt;br /&gt;
{{FeatureDone|ksirk|KHotNewStuff skins|kleag@free.fr|Gaël de Chalendar}}&lt;br /&gt;
{{FeatureDone|ksirk|Jabber based net game finding (initial version)|kleag@free.fr|Gaël de Chalendar}}&lt;br /&gt;
{{FeatureDone|ksirk|Use only names in skins instead of numeric ids|kleag@free.fr|Gaël de Chalendar}}&lt;br /&gt;
{{FeatureDone|ksirk|Skins editor|kleag@free.fr|Gaël de Chalendar}}&lt;br /&gt;
{{FeatureInProgress|KBreakOut|(Optional) fire on mouse click|fela.kde@gmail.com|Fela Winkelmolen}}&lt;br /&gt;
{{FeatureTodo|KBreakOut|Sounds|fela.kde@gmail.com|Fela Winkelmolen}}&lt;br /&gt;
{{FeatureTodo|KBreakOut|Custom levelsets|fela.kde@gmail.com|Fela Winkelmolen}}&lt;br /&gt;
{{FeatureTodo|KBreakOut|KHotNewStuff support for themes|fela.kde@gmail.com|Fela Winkelmolen}}&lt;br /&gt;
{{FeatureTodo|KNetWalk|Support for custom and non-square board sizes|fela.kde@gmail.com|Fela Winkelmolen}}&lt;br /&gt;
{{FeatureTodo|KGoldrunner|Improvement to sound support and themes|mikelima@cirulla.net}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Add the Count game (17 levels), contributed by Steve Mann.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KBlocks|Support for sounds|piacentini@kde.org|Mauricio Piacentini}}&lt;br /&gt;
{{FeatureTodo|KMahjongg|Support for sounds|piacentini@kde.org|Mauricio Piacentini}}&lt;br /&gt;
{{FeatureDone|Killbots|New app for 4.2|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureTodo|KSudoku|Port of &amp;quot;print game&amp;quot; feature from old version|paulo.cattai@ltia.fc.unesp.br|Paulo Roberto Cattai}}&lt;br /&gt;
{{FeatureTodo|KSudoku|Redesign of symbol themes|paulo.cattai@ltia.fc.unesp.br|Paulo Roberto Cattai}}&lt;br /&gt;
{{FeatureTodo|KSudoku|Replace the core engine with a new version that will solve most bugs related to gameplay|johannes.bergmeier@gmx.net|Johannes Bergmeier}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdesdk =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|Kate|Port and reenable the Snippets plugin.|jpetso@gmx.at|Jakob Petsovits}}&lt;br /&gt;
{{FeatureDone|perldoc KIOSlave|Add KIOSlave to allow reading Perldoc documentation.|michael.pyne&amp;amp;#64;kdemail&amp;amp;#46;net|Michael Pyne}}&lt;br /&gt;
{{FeatureDone|Lokalize|wrap all windows belonging to one project into one MDI window|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureDone|Umbrello|Port code generation wizard to QWizard and replace all q3 widgets|andi.fischer@hispeed.ch|Andi Fischer}}&lt;br /&gt;
{{FeatureDone|Kate|Move the kate-ctags plugin to kdesdk.|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureDone|Kate|Replace the make-plugin with katebuild-plugin.|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeedu =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|KAlgebra|New parser (using QLALR) and new lexer|aleixpol@gmail.com|Aleix Pol}}&lt;br /&gt;
{{FeatureDone|KAlgebra|Import capability for MathML Presentation Markup in libanalitza|aleixpol@gmail.com|Aleix Pol}}&lt;br /&gt;
{{FeatureDone|Kalzium|Visualization of Schemes and Gradients at same time|tiago.porangaba@ltia.fc.unesp.br|Tiago Porangaba}}&lt;br /&gt;
{{FeatureDone|KBruch|Usability Improvements|tiago.porangaba@ltia.fc.unesp.br|Tiago Porangaba}}&lt;br /&gt;
{{FeatureDone|KBruch|Merging KPercentage functionalities into KBruch|tiago.porangaba@ltia.fc.unesp.br|Tiago Porangaba}}&lt;br /&gt;
{{FeatureDone|KHangMan|Add a Open File action|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureDone|Marble|Python bindings to the Marble widget and classes|simon@simonzone.com|Simon Edwards}}&lt;br /&gt;
{{FeatureDone|KStars|Display millions of stars|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureDone|KStars|Tool to predict Conjunctions|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureDone|KStars|Support of Non-western Constellations|jsid@emor3j.fr.eu.org|Jérôme Sonrier}}&lt;br /&gt;
{{FeatureDone|KStars|Include HD Catalog Numbers (in search, in display)|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureDone|KStars|Separate INDI From KStars|mutlaqja@ikarustech.com|Jasem Mutlaq}}&lt;br /&gt;
{{FeatureDone|KStars|Sky Calendar Tool|kstars@30doradus.org|Jason Harris}}&lt;br /&gt;
{{FeatureDone|KStars|Earth Satellites|kstars@30doradus.org|Jason Harris}}&lt;br /&gt;
{{FeatureDone|KTurtle|Add command line|piacentini@kde.org|Mauricio Piacentini}}&lt;br /&gt;
{{FeatureDone|KTurtle|Add a color picker|nielsslot@gmail.com|Niels Slot}}&lt;br /&gt;
{{FeatureDone|KTurtle|Export canvas as image|piacentini@kde.org|Mauricio Piacentini}}&lt;br /&gt;
{{FeatureDone|Parley|Rework main window infrastructure|d.laidig@gmx.de|Daniel Laidig}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|KsCD|Dbus Connection for Now Playing plasmoid|bouchikhi.amine@gmail.com|Amine Bouchikhi}}&lt;br /&gt;
{{FeatureInProgress|Dragon Player|Make Dragon indipendent from Xine|ian.monroe@gmail.com|Ian Monroe}}&lt;br /&gt;
{{FeatureInProgress|Dragon Player|File Manager|ian.monroe@gmail.com|Ian Monroe}}&lt;br /&gt;
{{FeatureInProgress|Dragon Player|play media dialog|ian.monroe@gmail.com|Ian Monroe}}&lt;br /&gt;
{{FeatureInProgress|Dragon Player|slider changes|ian.monroe@gmail.com|Ian Monroe}}&lt;br /&gt;
{{FeatureInProgress|Dragon Player|show info while playing audio files|ian.monroe@gmail.com|Ian Monroe}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeaccessibility =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|KbStatusApplet|Port the KDE3 applet to a Plasma applet and get it fully working again|mail@dipe.org|Sebastian Sauer}}&lt;br /&gt;
{{FeatureTodo|KMagnifier|Refactor color menu, re-add invert, break current color blindness code into &amp;quot;daltonize&amp;quot; and &amp;quot;simulate&amp;quot;|mw_triad@users.sourceforge.net|Matthew Woehlke}}&lt;br /&gt;
{{FeatureTodo|KMagnifier|Add color-shift modes to help people with color blindness|mw_triad@users.sourceforge.net|Matthew Woehlke}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeartwork =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot; &lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|Screensavers|Add the &amp;quot;KDE Asciiquarium&amp;quot; screensaver.  Ported to KDE by Michael Pyne and Maksim Orlovich, [http://www.robobunny.com/projects/asciiquarium/html/ original screensaver] by Kirk Baucom|michael.pyne@kdemail.net|Michael Pyne}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdegraphics =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|KSnapshot|Add support for grabbing a single screen in multihead|rich@kde.org|Richard Moore}}&lt;br /&gt;
{{FeatureDone|KSnapshot|Increase jpeg image quality from 75% to 85%|rich@kde.org|Richard Moore}}&lt;br /&gt;
{{FeatureDone|KSnapshot|If we're saving the window decorations then record the window title and class in the image (if the format supports it) to play nice with indexers like strigi|rich@kde.org|Richard Moore}}&lt;br /&gt;
{{FeatureTodo|Okular|Improve annotation support: for existing types (rubber stamps, line, note, etc), and for the way they are constructed and handled.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureInProgress|Okular|Support for videos &amp;amp; movie annotations.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureDone|Gwenview|Support for animated images (.gif and .mng)|aurelien.gateau@free.fr|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureDone|Gwenview|Red Eye Reduction|aurelien.gateau@free.fr|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureDone|Gwenview|Nepomuk integration|aurelien.gateau@free.fr|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureDone|Gwenview|Dolphin-like single-click selection|aurelien.gateau@free.fr|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureTodo|Gwenview|Optional tree view|aurelien.gateau@free.fr|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureInProgress|Okular|Usable inverse search.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureInProgress|Okular|&amp;quot;Okular document package&amp;quot; for import/export a document with metadata (eg annotations).|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureDone|Okular|New backend for fax documents.|tokoe@kde.org|Tobias Koenig}}&lt;br /&gt;
{{FeatureTodo|Okular|Usability improvements.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-runtime =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|kio_bookmarks|A new konqueror home page displaying user bookmarks. See [[http://kde-apps.org/content/show.php?content=86516 description]]|xavier.vello@gmail.com|Xavier Vello}}&lt;br /&gt;
{{FeatureInProgress|kuiserver|KUiServer Goya port. General improvements for usability improvements|ereslibre@kde.org|Rafael Fernández López}}&lt;br /&gt;
{{FeatureDone|kio fish/sftp|port fish and sftp to windows|brandon.ml@gmail.com|Carlo Segato}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-apps =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|konqueror|A new konqueror recover-dialog replacement|edulix@gmail.com|Eduardo Robles Elvira}}&lt;br /&gt;
{{FeatureTodo|konqueror|Rework bookmarks using Akonadi|edulix@gmail.com|Eduardo Robles Elvira}}&lt;br /&gt;
{{FeatureDone|dolphin|Add zoom slider into the status bar and general zooming improvments|peter.penz@gmx.at|Peter Penz}}&lt;br /&gt;
{{FeatureDone|dolphin|Tooltip previews|peter.penz@gmx.at|Peter Penz}}&lt;br /&gt;
{{FeatureTodo|dolphin|ui to select preferred default settings for directory view|loic.marteau@gmail.com|Loic Marteau}}&lt;br /&gt;
{{FeatureInProgress|konqueror|Tagging and rating of webpages using Nepomuk - Already finished in playground.|trueg@kde.org|Sebastian Trueg}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeplasma-addons =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|PoTD engine|Import from playground|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureDone|Frame plasmoid|Honor EXIF rotation - see bug 164605|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|Frame plasmoid|Previous, Pause and Next buttons - see bug 164704|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureDone|Comic dataengine|Port all comics to QScript and offer them through GHNS|mat69@gmx.net|Matthias Fuchs}}&lt;br /&gt;
{{FeatureDone|Comic dataengine|Finish script support|mat69@gmx.net|Matthias Fuchs}}&lt;br /&gt;
{{FeatureDone|Eyes applet|xeyes clone applet|ogoffart%kde.org|Olivier Goffart}}|}&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.3_Feature_Plan</id>
		<title>Schedules/KDE4/4.3 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.3_Feature_Plan"/>
				<updated>2009-04-21T05:38:42Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* kdeutils */ Update status of ark features&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the 4.3 release.&lt;br /&gt;
&lt;br /&gt;
See also:&lt;br /&gt;
* [[Schedules/KDE4/4.3 Release Schedule]]&lt;br /&gt;
* [[Schedules/KDE4/4.3 Release Goals]]&lt;br /&gt;
* [[Schedules/KDE4/4.2 Feature Plan]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Legend:&lt;br /&gt;
* todo =&amp;gt; not started yet&lt;br /&gt;
* in-progress =&amp;gt; started, but not completed yet&lt;br /&gt;
* done =&amp;gt; completed&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Other =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|Akonadi|Various Akonadi related items can be found here http://techbase.kde.org/Projects/PIM/Akonadi#Scheduled_for_KDE_4.3_.2F_Akonadi_1.2|kde-pim@kde.org|Akonadi Developers}}&lt;br /&gt;
{{FeatureInProgress|KPackageKit|Pushing in KPackageKit (dependant on PolicyKit integration)|dantti85-dev@yahoo.com.br|Daniel}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdelibs =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|KLocale|Investigate adding Currency Code and currency minor units support based on ISO 4217 (http://en.wikipedia.org/wiki/ISO_4217).|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureDone|kdecore|Thread safety in ksycoca (KService, KMimeType etc.)|faure:AT:kde.org|David Faure}}&lt;br /&gt;
{{FeatureTodo|kdecore|Dynamic allocation of KDebug areas|faure:AT:kde.org|David Faure}}&lt;br /&gt;
{{FeatureInProgress|Sonnet|Implement language detection|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureInProgress|Sonnet|Integrate language detection with spellchecking|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureTodo|Sonnet|Integrate language detection with strigi|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureTodo|Sonnet|Grammar checking (at least for English)|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureInProgress|kio|Move KTcpSocket to kio and make it public; some cleanup required|ahartmetz@gmail.com|Andreas Hartmetz}}&lt;br /&gt;
{{FeatureTodo|KCalendarSystem|Add new astronomical calculation support classes to be used in kdelibs to build new astronomically based calendar systems, and in kdepim to build new version of libkholiday.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureTodo|KCalendarSystem|Add new calendar systems: Indian Civil (Saka), Ethiopean, Chinese, Pure Julian, Pure Gregorian, etc.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureDone|KDateTime|Provide simulation of system date/time for application testing.|djarvie:AT:kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureTodo|KDEPrint|If no file printing support in Qt4.5, migrate FilePrinter class from Okular to enable file printing for all apps via QPrinter.  To be discussed on k-c-d first.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureTodo|KDEPrint|Add framework for standard actions for 'Send to...' for e-mail, fax, etc by printing to PDF/PS.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureTodo|kdeui|entries to help menu and aboutdata pointing to UserBase entry and forum.kde.org|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|kdesu|Classes to help kde-apps open ports in the local firewall (via IPTables/IPFW, etc...)|tejas@gja.in|Tejas Dinkar}}&lt;br /&gt;
{{FeatureInProgress|katepart|Key mapping support for the vi input mode|ehamberg-hjå-gmail.com|Erlend Hamberg}}&lt;br /&gt;
{{FeatureInProgress|katepart|Blockwise visual mode for the vi input mode|ehamberg-hjå-gmail.com|Erlend Hamberg}}&lt;br /&gt;
{{FeatureInProgress|katepart|Improve text objects in the vi input mode|ehamberg-hjå-gmail.com|Erlend Hamberg}}&lt;br /&gt;
{{FeatureTodo|katepart|Save registers and marks from the vi input mode|ehamberg-hjå-gmail.com|Erlend Hamberg}}&lt;br /&gt;
{{FeatureInDone|kio|Fix D-Bus timeout in SlaveBase when calling kpasswdserver|lemma@confuego.org|Michael Leupold}}&lt;br /&gt;
{{FeatureInProgress|kdeui|Provide a class for detecting modifier keystrokes and locked key states|lemma@confuego.org|Michael Leupold}}&lt;br /&gt;
{{FeatureTodo|khtml|CSS3 Web Fonts|germain@ebooksfrance.org|Germain Garand}}&lt;br /&gt;
{{FeatureTodo|khtml|support more properties from CSS3 Backgrounds and Borders module|germain@ebooksfrance.org|Fredrik Höglund and/or Germain Garand}}&lt;br /&gt;
{{FeatureInProgress|khtml|support more properties from CSS3 Text module|germain@ebooksfrance.org|Germain Garand}}&lt;br /&gt;
{{FeatureInProgress|solid|Smart card reader support|cblauvelt@gmail.com|Christopher Blauvelt}}&lt;br /&gt;
{{FeatureTodo|KEmoticons|emit a signal when the emoticon theme is changed|brandon.ml@gmail.com|Carlo Segato}}&lt;br /&gt;
{{FeatureTodo|KLocale|Per-language number formats, and exposing them to modification by user.|caslav.ilic@gmx.net|Chusslove Illich}}&lt;br /&gt;
{{FeatureTodo|KLocale|Extension of date formats to cover many resolutions (month-year, day-month, etc.)|caslav.ilic@gmx.net|Chusslove Illich}}&lt;br /&gt;
{{FeatureInProgress|kfile|KDirSortFilterProxyModel: make it possible to not always sort folders first|frank78ac@googlemail.com|Frank Reininghaus}}&lt;br /&gt;
{{FeatureTodo|buildsystem|Add support for crosscompiling|neundorf@kde.org|Alexander Neundorf}}&lt;br /&gt;
{{FeatureInProgress|buildsystem|Add support for building parts of modules separately|neundorf@kde.org|Alexander Neundorf}}&lt;br /&gt;
{{FeatureInProgress|webkit|Move KDE integration of QtWebKit into kdelibs (but not KPart!)|uwolfer@kde.org|Urs Wolfer}}&lt;br /&gt;
{{FeatureTodo|Nepomuk|New Resource URI schema for Files (to better handle removable storage (parts in KDE Base)|dw@danielwinter.de|Daniel Winter}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-workspace =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |Non-Plasma, Non-KWin&lt;br /&gt;
{{FeatureTodo|Kxkb|Support for languages in keyboard layout descriptions|rysin:AT:kde.org|Andriy Rysin}}&lt;br /&gt;
{{FeatureDone|PolicyKit integration|Import PolicyKit-KDE from extragear|drf54321@gmail.com|Dario Freddi}}&lt;br /&gt;
{{FeatureDone|Solid Actions KCM|Import Solid actions KControl module from playground|ben@eclipse.endoftheinternet.org|Ben Cooksley}}&lt;br /&gt;
{{FeatureTodo|KControl4|Import refactor of systemsettings with Tree and Icon view support|ben(at)eclipse(dot)endoftheinternet(dot)org|Ben Cooksley and Mathias Soeken}}&lt;br /&gt;
{{FeatureDone|KSysguard|Added GetHotNewStuff support|a@b.com|name}}&lt;br /&gt;
{{FeatureInProgress|KActiveEdges|Split active screen edges from KWin|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureDone|Solid Wicd Engine|Import Solid Wicd engine from github/playground|drf54321@gmail.com|Dario Freddi}}&lt;br /&gt;
{{FeatureDone|Klipper|Made klipper automatically find possible actions based on filename copied to clipboard|dimsuz@gmail.com|Dmitry Suzdalev}}&lt;br /&gt;
{{FeatureDone|Klipper|Improved action adding/editing workflow by implementing a special dialog for editing a certain action|dimsuz@gmail.com|Dmitry Suzdalev}}&lt;br /&gt;
{{FeatureTodo|Klipper|Make action popup unobtrusive by showing menu only when user clicks an icon in systray. Icon itself should change to indicate availability of some actions on current clipboard|dimsuz@gmail.com|Dmitry Suzdalev}}&lt;br /&gt;
{{FeatureTodo|Font Installer KCM |Use PolicyKit for installtion of system-wide fonts.|craig@kde.org|Craig Drummond}}&lt;br /&gt;
{{FeatureInProgress|Font Settings KCM|Improved GUI for configuring anti-aliasing settings|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KRunner&lt;br /&gt;
{{FeatureInProgress|Nepomuk/Location Runners|Open with and service menu actions|ryan.bitanga@gmail.com|Ryan Bitanga}}&lt;br /&gt;
{{FeatureTodo|KRunner|Simple adaptive search|ryan.bitanga@gmail.com|Ryan Bitanga}}&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |Plasma - Priority Features&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |Plasma&lt;br /&gt;
{{FeatureTodo|Now Playing data engine|Support for MPD|kde:AT:randomguy3.me.uk|Alex Merry}}&lt;br /&gt;
{{FeatureTodo|Now Playing applet|Better design in panels|kde:AT:randomguy3.me.uk|Alex Merry}}&lt;br /&gt;
{{FeatureDone|Classic Menu Launcher|Optional recently used applications and System Settings menu|mail:AT:dipe.org|Sebastian Sauer}}&lt;br /&gt;
{{FeatureDone|Classic Menu Launcher|KDE3-like menu titles|mail:AT:dipe.org|Christian Loose}}&lt;br /&gt;
{{FeatureDone|Classic Menu Launcher|Context menu for menu items|mail:AT:dipe.org|Christian Loose}}&lt;br /&gt;
{{FeatureInProgress|Reusable video widget|A widget in libplasma that can play video and audio|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|Message box|A message box shown as an overlay over plasmoids|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureTodo|Panel spacers|A way to add/manage spacers directly from the panel controller|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|Systemtray protocol|New systemtray protocol beginnings: daemon and systemtray widget part|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|Default theme|Air: new default Plasma theme|notmart@gmail.com|Marco Martin and Nuno Pinheiro}}&lt;br /&gt;
{{FeatureInProgress|screensaver|security constraints|chanika@gmail.com|Chani}}&lt;br /&gt;
{{FeatureInProgress|keyboard shortcuts|configuration|chanika@gmail.com|Chani}}&lt;br /&gt;
{{FeatureTodo|icon plasmoid|make it suck less|chanika@gmail.com|Chani}}&lt;br /&gt;
{{FeatureTodo|desktop|make a plasmoid when I paste stuff|chanika@gmail.com|Chani}}&lt;br /&gt;
{{FeatureInProgress|extenders|Add grouping support to extenders|r.scheepmaker@student.utwente.nl|Rob Scheepmaker}}&lt;br /&gt;
{{FeatureInProgress|systemtray|Group multiple jobs and notifications|r.scheepmaker@student.utwente.nl|Rob Scheepmaker}}&lt;br /&gt;
{{FeatureTodo|systemtray|Job completed notifications, providing an sensible action ('open file' etc)|r.scheepmaker@student.utwente.nl|Rob Scheepmaker}}&lt;br /&gt;
{{FeatureInProgress|Kickoff|Add multiple columns support to Kickoff|talvik@gmail.com|Luiz Felipe Talvik}}&lt;br /&gt;
{{FeatureDone|folderview|Show tooltips with large previews and file metadata when hovering icons|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureDone|folderview|Show a popup view with the folder contents when hovering a folder in the icon view|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureDone|folderview|Add menu items to the context menu for showing the applet browser, adding panels, locking the screen, logging out etc.|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureDone|folderview|Add menu items to the drop menu for creating applets and setting the wallpaper|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureDone|folderview|Optionally show the window list menu when middle clicking the containment|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureDone|folderview|Implement support for keyboard navigation|jhahoneyk@gmail.com|Shantanu Tushar Jha}}&lt;br /&gt;
{{FeatureTodo|folderview|Accessing sub folders as sub menus in the popup view when the applet is on the panel|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureTodo|folderview|Offer to create applets based on the mimetype when pasting URL's in the containment|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureDone|virus wallpaper|Move from playground to kdeplasma-addons and port to the new plasma::wallpaper|asraniel@fryx.ch|Beat Wolf}}&lt;br /&gt;
{{FeatureInProgress|Plasma|Add press-down feedback to folderview|haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureDone|Time DataEngine|Integrate solar position dataengine to time dataengine|damu@iki.fi|Petri Damstén}}&lt;br /&gt;
{{FeatureTodo|Time DataEngine|Moon position/phase data|damu@iki.fi|Petri Damstén}}&lt;br /&gt;
{{FeatureInProgress|Akonadi DataEngine|Move Akonadi dataengine to kdeplasma-addons|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureInProgress|Social Desktop Plasmoid|Plasmoid displaying contacts via OpenDesktop|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureTodo|Knowledge base Plasmoid|Plasmoid for searching and dispaying results from Open Collaboration Services / OpenDesktop|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureTodo|Tool tips|Extend tool tips API|emdeck@gmail.com|Michał Dutkiewicz}}&lt;br /&gt;
{{FeatureInProgress|Theme System|Better fallback mechanisms for transparent panels/dialogs without composition|david.nolden.kdevelop@art-master.de|David Nolden}}&lt;br /&gt;
{{FeatureInProgress|Plasmaclock library|Context menu for fast copying date and time strings to clipboard|emdeck@gmail.com|Michał Dutkiewicz}}&lt;br /&gt;
{{FeatureInProgress|Plasmaclock/Calendar|Display various information on the calendar using kholiday/akonadi|?|?}}&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KWin - Core&lt;br /&gt;
{{FeatureTodo|KWin|Redesign KWin system settings GUI|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureTodo|KWin|ARGB support for decorations|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureInProgress|KWin|Window docking/quick tiling|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureTodo|KWin|Internal desktop layout/pager support|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureInProgress|KWin|Non-composited Present Windows|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureInProgress|KWin|Tabbox improvements|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureTodo|KWin/Plasma|Toggle Compositing Plasmoid|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KWin - Desktop Effects&lt;br /&gt;
{{FeatureTodo|KWin|Expand present windows into other effects (E.g. Desktop Grid)|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureTodo|KWin|OpenGL 3 compatible Shaders|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureTodo|KWin|Improved cube reflection|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureInProgress|KWin|Add and remove desktops in grid effect|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureTodo|KWin|Desktop Thumnails in Pager Tooltips|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureTodo|KWin|Slide In/Out effect|hein@kde.org|Eike Hein}}&lt;br /&gt;
{{FeatureDone|KWin|Fade desktop effect (Desktop switcher)|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureInProgress|KWin|Highlight window effect|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureInProgress|KWin|SlideBack effect|michael_zanetti@gmx.net|Michael Zanetti}}&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KDM&lt;br /&gt;
{{FeatureTodo|KDM|Plasma wallpaper|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdepimlibs =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|Buildsystem|Require OpenLDAP (coordinate with the Windows team)|winter@kde.org|Allen Winter}}&lt;br /&gt;
{{FeatureDone|Buildsystem|Require Cyrus-SASL (coordinate with the Windows team)|winter@kde.org|Allen Winter}}&lt;br /&gt;
{{FeatureTodo|libkleopatraclient|New interface library for kleopatra uiserver clients|marc@kdab.net|Marc Mutz}}&lt;br /&gt;
{{FeatureDone|pimtextedit|New library around text edits, to provide support for inline images in the signature editor, among others|mcguire@kde.org|Thomas McGuire}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdenetwork =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|Kopete|UPnp Support|mattr@kde.org|Matt Rogers}}&lt;br /&gt;
{{FeatureDone|Kopete|Updated contact list interface (uses Qt 4 rather than Qt 3)|mattr@kde.org|Matt Rogers}}&lt;br /&gt;
{{FeatureTodo|Kopete|Update Kopete to better support Decibel|kopete-devel@kde.org|Kopete Developers}}&lt;br /&gt;
{{FeatureTodo|Kopete|Jabber Jingle video support|detlev.casanova@gmail.com|Detlev Casanova}}&lt;br /&gt;
{{FeatureTodo|Kopete|Jabber Jingle ICE support|detlev.casanova@gmail.com|Detlev Casanova}}&lt;br /&gt;
{{FeatureInProgress|Kopete|Contacts plasmoid|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Kopete|Rich text support for ICQ|kedgedev@gmail.com|Roman Jarosz}}&lt;br /&gt;
{{FeatureTodo|Kopete|Add support for urls to Bonjour plugin|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureInProgress|KGet|MultiSource-Downloading|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureTodo|KGet|Support mms://-protocol, see https://launchpad.net/libmms|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureTodo|KGet|MLDonkey-Plugin based on libkmldonkey|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureTodo|KGet|Advanced Details|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureInProgress|KRDC|NX support|gdavid.devel@gmail.com|David Gross}}&lt;br /&gt;
{{FeatureTodo|KRDC|Minimal-clutter mode to optimize screen real estate usage|gpothier@gmail.com|Guillaume Pothier}}&lt;br /&gt;
{{FeatureInProgress|Telepathy|Telepathy-specification compliant Account Manager using KWallet to store account data|grundleborg@googlemail.com|George Goldberg}}&lt;br /&gt;
{{FeatureInProgress|Telepathy|Account Editing UI for Telepathy|grundleborg@googlemail.com|George Goldberg}}&lt;br /&gt;
{{FeatureInProgress|Plasma|Network Manager Applet|wstephenson@kde.org|Will Stephenson}}&lt;br /&gt;
{{FeatureTodo|network:/ KIOSlave|Move into kdenetwork module|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdepim =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|Akonadi|Migration of contacts and calendar data from KResource to Akonadi ([http://techbase.kde.org/Projects/PIM/Akonadi#Scheduled_for_4.3 Details])|kde-pim@kde.org|Volker Krause, Kevin Krammer, Tobias Koenig}}&lt;br /&gt;
{{FeatureInProgress|Akregator|Support for syncing the feed list with Google Reader |osterfeld@kde.org|Frank Osterfeld}}&lt;br /&gt;
{{FeatureDone|[http://www.astrojar.org.uk/kalarm KAlarm]|Add export of alarms to a new calendar file|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|[http://www.astrojar.org.uk/kalarm KAlarm]|Allow configuration of default deferral time interval|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|[http://www.astrojar.org.uk/kalarm KAlarm]|Accept drag-and-drop of Todo entries to create a new alarm|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|[http://www.astrojar.org.uk/kalarm KAlarm]|Show command execution error indication in alarm list|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|[http://www.astrojar.org.uk/kalarm KAlarm]|Add option to spread alarm windows across screen|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|Akonadi|Google calendar and contacts resource|cavalcantii@gmail.com|Adenilson Cavalcanti}}&lt;br /&gt;
{{FeatureTodo|[http://www.astrojar.org.uk/kalarm KAlarm]|Port to Akonadi|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureTodo|[http://kblogger.pwsp.net KBlogger]|KBlogger, a blogging application|christian_weilbach@.web.de|Christian Weilbach}}&lt;br /&gt;
{{FeatureTodo|KBlogger|Port to use KRichTextEdit (Or KMEditor)|steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureInProgress|KContactManager|A new Akonadi-based address book to replace KAddressbook|tokoe@kde.org|Tobias Koenig}}&lt;br /&gt;
{{FeatureInProgress|Kjots| Create and port to akonadi model. |steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureTodo|Kjots| Add support for nepomuk including tagging, possibly storage, and linking. Also a nepomuk tag proxy model for representing the structure as tagged.|steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureInProgress|Kjots| Create plasmoid capable of showing the entire tree, or a single book.|steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureTodo|Kjots| Email KJots pages using default mail client ({{bug|124509}}. |steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureInProgress|Kleopatra|OpenPGP support|marc@kdab.net|Marc Mutz (Gpg4win)}}&lt;br /&gt;
{{FeatureDone|KMail|Add support for HTML images|yez@familieschepers.nl|Edwin Schepers}}&lt;br /&gt;
{{FeatureTodo|KMail|Use asynchronous Kleo|marc@kdab.net|Marc Mutz}}&lt;br /&gt;
{{FeatureTodo|KMail|Save metadata about attachments to Nepomuk when saving them|onurf@su.sabanciuniv.edu|Ismail Onur Filiz}}&lt;br /&gt;
{{FeatureTodo|KNode|Port to use KRichTextEdit (Or KMEditor)|steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureTodo|Kontact|Support for Kontact wide profiles|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureTodo|Kontact|Tip-of-the-Day summary|molkentin@kde.org|Daniel Molkentin}}&lt;br /&gt;
{{FeatureTodo|KOrganizer|Support for extended free-busy lists|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureInProgress|KPilot|Port old conduits to new base conduit architecture and KDE4/Qt4|jkasper@kde.org|Jason 'vanRijn' Kasper}}&lt;br /&gt;
{{FeatureInProgress|KPilot|Finish Keyring conduit, base conduit code and test cases, category syncing|jkasper@kde.org|Jason 'vanRijn' Kasper}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeutils =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|printer-applet|Restore feature parity with KDEPrint3 where possible.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureTodo|Okteta|add editing capability to Decoding table |kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add Kate-like search tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for import by drop, both url and data|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|copy again puts also a value or char variant of the data to clipboard|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for memory mapping of files|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add further export formats like s-record and intel 16|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for jobs like io, printing, string search or filter|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Make dialogs for Goto, Search &amp;amp; Replace embedded|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add Okular like embedded notifications|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add hash calculator tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks and other view settings for next load|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Show tooltip over bookmarks|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureInProgress|Okteta|Add filesystem browser tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureInProgress|Okteta|Add loaded documents tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Show selection range in status bar|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add dialog to set selection range|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add global toggle option for the offset display, hex or decimal|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Make the Okteta KPart use libkakao, and rename libkakao|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|kwalletmanager|Move kwalletmanager to the Model/View architecture and redesign the UI.|lemma@confuego.org|Michael Leupold}}&lt;br /&gt;
{{FeatureInProgress|kdelirc|Bring back kdelirc|michael_zanetti@gmx.net|Michael Zanetti}}&lt;br /&gt;
{{FeatureInProgress|ark|Improve support for pure gzip and bzip2 files|kubito@gmail.com|Raphael Kubo da Costa}}&lt;br /&gt;
{{FeatureInProgress|ark| Finish the cliinterface  |haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureTodo|ark| Add lots of more meaningful error messages  |haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureTodo|ark| Add support for ACE archives  |haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureTodo|ark| Add support for zip archives (cli-based, ie. info-zip) |haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureDone|ark| Make the mimetype selection dialog more user-friendly |kubito@gmail.com|Raphael Kubo da Costa}}&lt;br /&gt;
{{FeatureDone|ark| Make the file list obey KDE's mouse settings |kubito@gmail.com|Raphael Kubo da Costa}}&lt;br /&gt;
{{FeatureTodo|KGpg| Port to new systray framework |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureTodo|KGpg| Clean up editor GUI and classes |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureTodo|KGpg| Make keyserver operations more flexible |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureDone|KGpg| Port key importing to be a transaction |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureTodo|KGpg| Port keyserver query to be a transaction |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureTodo|KGpg| Make &amp;quot;import key&amp;quot; also work with keyservers |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureDone|KGpg| Integrate solid to know when a online action (e.g. keyserver query) does not make sense |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureInProgress|KTimer| Redesign UI |zahl@transbay.net|A. L. Spehr}}&lt;br /&gt;
{{FeatureTodo|KTimer| Add hours and seconds to counter |zahl@transbay.net|A. L. Spehr}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebindings =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|krossjava|Integrate into e.g. SuperKaramba and fix issues that show up.|mail@dipe.org|Sebastian Sauer}}&lt;br /&gt;
{{FeatureTodo|krossjava|Documentation++|mail@dipe.org|Sebastian Sauer}}&lt;br /&gt;
{{FeatureTodo|krossfalcon|Documentation++|mail@dipe.org|Sebastian Sauer}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdegames =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|libkdegames|Convert old PNG based card decks to SVG with embedded bitmaps.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Add Curse of the Mummy game (20 levels), contributed by Steve Mann.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Major rewrite, mainly of the game engine and editor.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|More accurate and reliable pause and resume.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureTodo|KGoldrunner|Save and reload at any instant in a game.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Record and replay games.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureInProgress|KGoldrunner|Run demos ... especially at startup or as hints for difficult levels.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureTodo|KGoldrunner|Hot-new-stuff support for themes and game sets.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureTodo|KGoldrunner|Integration of the Scavenger game (180 new levels) and its rule-set.  This would also involve allowing different grid dimensions for different games, as a feature of the new game engine.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureTodo|KGoldrunner|Better support for beginners, such as graphical cues for false bricks and hidden ladders, extra messages with &amp;quot;don't tell me this again&amp;quot;, etc.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureInProgress|Killbots|Add &amp;quot;sonic screwdriver&amp;quot; functionality.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureTodo|Killbots|Add a tutorial for beginners.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureTodo|Kolf|Replace with Kolf 2 (please help!)|majewsky@gmx.net|Stefan Majewsky}}&lt;br /&gt;
{{FeatureDone|KPatience|Add a command line switch to manually launch a game of a certain type.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureDone|KPatience|Add an option to save the game state at shutdown to be automatically be restored on next run.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureDone|KPatience|Add the ability to return to the game selection screen after selecting a game.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureInProgress|KPatience|Add a &amp;quot;Deal&amp;quot; action to those game types that support dealing cards from the deck into play.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureTodo|KsirK|rewrite AI code or at least correct most problems related in bug #170777. Volunteers wanted!|kleag@free.fr|Gaël de Chalendar}}&lt;br /&gt;
{{FeatureTodo|KsirK|Previous/Next in start new game as described in bug #170774|kleag@free.fr|Gaël de Chalendar}}&lt;br /&gt;
{{FeatureTodo|KsirK|Polish the skin editor (doc, contextual help, ...)|kleag@free.fr|Gaël de Chalendar}}&lt;br /&gt;
{{FeatureTodo|KsirK|Boost playing over Jabber|kleag@free.fr|Gaël de Chalendar}}&lt;br /&gt;
{{FeatureTodo|KSpaceDuel|rewrite AI code|dirkrathlev@gmx.de|Dirk Rathlev}}&lt;br /&gt;
{{FeatureDone|ktron|Port and remake the KTron game for KDE 4.3|legolas@legolasweb.nl|Stas Verberkt}}&lt;br /&gt;
{{FeatureTodo|KSudoku|Import the new logic engine as a library|joselb@gmx.net|Johannes Bergmeier}}&lt;br /&gt;
{{FeatureTodo|KSudoku|Port KSudoku to the new engine|joselb@gmx.net|Johannes Bergmeier}}&lt;br /&gt;
{{FeatureTodo|KSudoku|Add interactive help|joselb@gmx.net|Johannes Bergmeier}}&lt;br /&gt;
{{FeatureDone|Bovo|Add new AI|pelladigabor@gmail.com|Pelladi Gabor}}&lt;br /&gt;
{{FeatureDone|Bovo|Computer thinking doesn't block the GUI|pelladigabor@gmail.com|Pelladi Gabor}}&lt;br /&gt;
{{FeatureTodo|libkdegames|Import KGGZ libraries from GGZ SVN|spillner@kde.org|Josef Spillner}}&lt;br /&gt;
{{FeatureInProgress|libkmahjongg|Introduce new tileset, Bamboo.|mw_triad@users.sourceforge.net|Matthew Woehlke}}&lt;br /&gt;
{{FeatureDone|KMahjongg|Add 70 additional levels contributed by users|piacentini at kde.org|Mauricio Piacentini}}&lt;br /&gt;
{{FeatureTodo|KMahjongg|Add start page with level selection|piacentini at kde.org|Mauricio Piacentini}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeadmin =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|KGrubEditor|Integrate KGrubEditor into KDE Admin http://sourceforge.net/projects/kgrubeditor. Approved by Nicolas Ternisien &amp;lt;nicolas.ternisien@gmail.com&amp;gt; |artemis_dot_fowl_dot_2007@gmail_dot_com|Konstantinos Smanis}}&lt;br /&gt;
{{FeatureTodo|Guidance|Port Guidance to KDE 4, and move it to KDE Admin http://www.simonzone.com/software/guidance/.|nicolas.ternisien@gmail.com|Nicolas Ternisien}}&lt;br /&gt;
{{FeatureTodo|system-config-printer-kde|Restore feature parity with KDEPrint3 where possible.|john@layt.net|john Layt, Jonathan Riddell}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdesdk =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|Lokalize|XLIFF support|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureInProgress|Lokalize|various Translation Memory enhancements|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureInProgress|Lokalize|Kross-based scripting|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureTodo|Lokalize|QA: glossary checklists|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureTodo|KAppTemplate|Add DBUS support in templates|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureDone|Umbrello|Replace all q3 widgets in the refactoring assistant|andi.fischer@hispeed.ch|Andi Fischer}}&lt;br /&gt;
{{FeatureInProgress|Umbrello|Merge in SoC qgraphicsview port branch|krishna.ggk@gmail.com|Gopala Krishna A}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeedu =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|KAlgebra|Export to MathML Presentation Markup|aleixpol@gmail.com|Aleix Pol}}&lt;br /&gt;
{{FeatureTodo|KAlgebra|Some integration with the new KFormula widget|aleixpol@gmail.com|Aleix Pol}}&lt;br /&gt;
{{FeatureInProgress|KAlgebra|Add ability to draw 3D plots in cylindrical and spherical coordinates.|orgyforever@gmail.com|Percy Camilo Triveño Aucahuasi}}&lt;br /&gt;
{{FeatureTodo|Kalzium|Port Kalzium's periodic table to use new QGraphicsView.|marcus@cryos.org|Marcus D. Hanwell}}&lt;br /&gt;
{{FeatureTodo|Kalzium|Separate compound viewer/editor application from Kalzium.|marcus@cryos.org|Marcus D. Hanwell}}&lt;br /&gt;
{{FeatureTodo|Kalzium|Remove the libavogadro snapshot, depend on libavogadro directly.|jacob@math.jussieu.fr|Benoit Jacob}}&lt;br /&gt;
{{FeatureTodo|Kalzium|Plasmoid to access Kalzium database|cniehaus@kde.org|Carsten Niehaus}}&lt;br /&gt;
{{FeatureTodo|KEduca|Rewrite of the classic test writing/taking application|matt@milliams.com|Matt Williams}}&lt;br /&gt;
{{FeatureTodo|KHangMan|Integrate an editor|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KHangMan|Plasmoid|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KHangMan|Theme manager|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|Kig|Properties dialog for objects.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Kig|Improve construction of bisect lines.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Kig|Improve feedback when constructing objects.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Kig|More geometric objects.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Kig|Script objects as macros (to be reused more than once).|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Kig|Improve the Cabri import filter.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Kig|Improve the new/edit script wizard.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|KLettres|Visual Indicator when letter is wrong|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KLettres|Number support|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KLettres|Theme manager|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KStars|Marble widget for Geolocation tool|mboquien@free.fr|Médéric Boquien}}&lt;br /&gt;
{{FeatureTodo|KStars|Better printed star charts|kstars@30doradus.org|Jason Harris}}&lt;br /&gt;
{{FeatureTodo|KStars|Sync KStars time from device|mutlaqja@ikarustech.com|Jasem Mutlaq}}&lt;br /&gt;
{{FeatureTodo|KStars|Better rendering of comets/asteroids|kstars@30doradus.org|Jason Harris}}&lt;br /&gt;
{{FeatureTodo|KStars|Texture mapping of the skymap???|kstars@30doradus.org|Jason Harris}}&lt;br /&gt;
{{FeatureTodo|KStars|Improve Observing List Wizard|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Display Comet Magnitudes whenever possible|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Information links in-place for each technical term|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Tool to suggest star-hopping techniques???|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Extend conjunction tool to have one object unspecified, but have a genre of objects specified instead|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Extend conjunction tool to predict oppositions and occultations|prak902000@gmail.com|Prakash Mohan}}&lt;br /&gt;
{{FeatureTodo|KStars|Simulate Lunar Eclipses|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Simulate Satellites and Iridium Flares|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Social and Geographical Integration for KStars|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Merge SAC with NGC / IC as default catalog|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KTurtle|Optional rulers/grid for canvas units|piacentini@kde.org|Mauricio Piacentini}}&lt;br /&gt;
{{FeatureTodo|Marble|Export map to MxN pixel bitmap|inge@lysator.liu.se|Inge Wallin}}&lt;br /&gt;
{{FeatureInProgress|Marble|Bookmarks||Gaurav Gupta}}&lt;br /&gt;
{{FeatureInProgress|Marble|Planet Filter||Harshit Jain}}&lt;br /&gt;
{{FeatureInProgress|Marble|Time KML support||Harshit Jain}}&lt;br /&gt;
{{FeatureTodo|Marble|Support for MarbleWidget::setEnabled( bool )|inge@lysator.liu.se|Inge Wallin}}&lt;br /&gt;
{{FeatureTodo|Marble|Map Contents translation|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Editing GeoDataFeatures|ewoerner@kde.org|Eckhart Wörner}}&lt;br /&gt;
{{FeatureTodo|Marble|Update Map (&amp;quot;F5&amp;quot;)|jensmh@gmx.de|Jens-Michael Hoffmann}}&lt;br /&gt;
{{FeatureInProgress|Marble|Layer Management Class|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Plugin architecture for map layers|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Extending GeoPainter|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Marble Runners|hdevalence@gmail.com|Henry de Valence}}&lt;br /&gt;
{{FeatureInProgress|Marble|GeoClue Integration |ewoerner@kde.org|Eckhart Wörner}}&lt;br /&gt;
{{FeatureInProgress|Marble|Routing |jensmh@gmx.de|Jens-Michael Hoffmann}}&lt;br /&gt;
{{FeatureInProgress|Marble|More map providers (WMS?) |jensmh@gmx.de|Jens-Michael Hoffmann}}&lt;br /&gt;
{{FeatureInProgress|Marble|Winkel Triple projection / equivalent |hdevalence@gmail.com|Henry de Valence}}&lt;br /&gt;
{{FeatureInProgress|Marble|Marble WorldClock Plasmoid|hdevalence@gmail.com|Henry de Valence}}&lt;br /&gt;
{{FeatureDone|Marble|Qt-Version settings dialog|hdevalence@gmail.com|Bastian Holst}}&lt;br /&gt;
{{FeatureInProgress|Marble|Panoramio Support||Bastian Holst}}&lt;br /&gt;
{{FeatureInProgress|Marble|Twitter Plugin||Shashank Singh}}&lt;br /&gt;
{{FeatureInProgress|Marble|TimeZone Support|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureDone|Marble|Support for other planets and the moon|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureDone|Marble|DGML2 Support|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureDone|Marble|Support for imperial units|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Graticule plugin|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|MeasureTool plugin|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureDone|Marble|Port authors list from the Qt-About dialog to the KDE-About dialog|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Basic KML support|ps_ml@gmx.de|Patrick Spendrin}}&lt;br /&gt;
{{FeatureInProgress|Marble|GeoData Model/View Visualization|ps_ml@gmx.de|Patrick Spendrin}}&lt;br /&gt;
{{FeatureInProgress|Marble|More generic projection support|inge@lysator.liu.se|Inge Wallin}}&lt;br /&gt;
{{FeatureInProgress|Marble|Network plugins|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Marble|Geolocation plugins|ewoerner@kde.org|Eckhart Wörner}}&lt;br /&gt;
{{FeatureInProgress|Parley|Declensions|frederik.gladhorn@kdemail.net|Frederik Gladhorn}}&lt;br /&gt;
{{FeatureTodo|Step|Improve GUI for creating softbody|ksvladimir@gmail.com|Vladimir Kuznetsov}}&lt;br /&gt;
{{FeatureTodo|Step|Use common constraints handling code for collisions|ksvladimir@gmail.com|Vladimir Kuznetsov}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|JuK|Remove Qt/KDE3 support lib requirements|michael.pyne@kdemail.net|Michael Pyne}}&lt;br /&gt;
{{FeatureTodo|JuK|Allow setting covers directly from URLs supported by KIO - drag/drop already allows this however|michael.pyne@kdemail.net|Michael Pyne}}&lt;br /&gt;
{{FeatureDone|JuK|Use XCOMPOSITE real transparency when available for the track announcement popup|michael.pyne@kdemail.net|Michael Pyne}}&lt;br /&gt;
{{FeatureTodo|JuK|Allow disabling crossfade|michael.pyne@kdemail.net|Michael Pyne}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeaccessibility =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdegraphics =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|Okular|Generator for Mobipocket format|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureDone|strigi|Thumbnailer and analyzer for Mobipocket format|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureDone|strigi|Analyzer for epub format|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureTodo|Okular|Sound annotations.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Okular|Link annotations.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Okular|Caret annotations.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Okular|Support .snp and .emf file formats|bradh@kde.org|Brad Hards}}&lt;br /&gt;
{{FeatureTodo|Okular|Synctex support.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Okular|Rich-text for annotations text.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|kruler|More ruler shapes.|msoeken_at_tzi_dot_de|Mathias Soeken}}&lt;br /&gt;
{{FeatureDone|kruler|Configurable shortcuts.|msoeken_at_tzi_dot_de|Mathias Soeken}}&lt;br /&gt;
{{FeatureTodo|kruler|DBUS Interface.|msoeken_at_tzi_dot_de|Mathias Soeken}}&lt;br /&gt;
{{FeatureDone|kruler|Transparent background and opaque drawing of the lines and numbers (Qt 4.5).|msoeken_at_tzi_dot_de|Mathias Soeken}}&lt;br /&gt;
{{FeatureInProgress|gwenview|Folder view.|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureInProgress|gwenview|Make thumbnail bar more customizable (orientation, number of rows/columns).|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureInProgress|gwenview|Add back video support.|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureInProgress|gwenview|Improve history handling.|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureDone|libksane|Add &amp;quot;Auto selection&amp;quot; after preview.|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureInProgress|Okular|Less intrusive search with find bar.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Okular|Better detection of where the Okular KPart is embedded into, and adapt the UI accordingly (sidebar, actions, etc).|pino@kde.org|Pino Toscano}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-runtime =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|drkonqi|DrKonqi new dialog UI + Guided crash reporting tool|andresbajotierra@gmail.com|Dario Andres|}}&lt;br /&gt;
{{FeatureInProgress|drkonqi|Backtrace parsing and rating|gkiagiad@csd.uoc.gr|George Kiagiadakis|}}&lt;br /&gt;
{{FeatureTodo|drkonqi|DrKonqi native english texts + guide|andresbajotierra@gmail.com|Dario Andres|}}&lt;br /&gt;
{{FeatureInDone|kpasswdserver|Fix D-Bus timeout in kpasswdserver using an async API|lemma@confuego.org|Michael Leupold}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-apps =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|konq_thumbnails|Basic thumbnail support for KHTMLPart views(almost finished, now cleanup code)|yinshuiboy@gmail.com|Siyuan Cao}}&lt;br /&gt;
{{FeatureTodo|konq_thumbnails|thumbnail support for all KonqFrame|yinshuiboy@gmail.com|Siyuan Cao}}&lt;br /&gt;
{{FeatureTodo|konq_thumbnails|more thumbnail page styles and customization|yinshuiboy@gmail.com|Siyuan Cao}}&lt;br /&gt;
{{FeatureTodo|konqueror|&amp;quot;Places&amp;quot; sidebar to replace KDE3's &amp;quot;media:/&amp;quot;|kdedevel_at_etotheipiplusone_dot_com|Simon St James}}&lt;br /&gt;
{{FeatureTodo|konqueror|Move Dolphin's Treeview to libkonq so that it can be used in Konqueror|kdedevel_at_etotheipiplusone_dot_com|Simon St James}}&lt;br /&gt;
{{FeatureTodo|konqueror|Move Dolphin's Information panel to libkonq so that it can be used in Konqueror|kdedevel_at_etotheipiplusone_dot_com|Simon St James}}&lt;br /&gt;
{{FeatureInProgress|dolphin|Matthias's Audio/ Video preview in Information panel|kdedevel_at_etotheipiplusone_dot_com|Simon St James}}&lt;br /&gt;
{{FeatureTodo|dolphin|Allow to configure and download service menus|peter.penz@gmx.at|Peter Penz}}&lt;br /&gt;
{{FeatureInProgress|dolphin|Nepomuk search integration|peter.penz@gmx.at|Peter Penz}}&lt;br /&gt;
{{FeatureInProgress|dolphin|Use Nepomuk to receive the meta data for the Information panel|peter.penz@gmx.at|Peter Penz}}&lt;br /&gt;
{{FeatureInProgress|dolphin|Let user choose if folders are always shown first or not|frank78ac@googlemail.com|Frank Reininghaus}}&lt;br /&gt;
{{FeatureInProgress|konsole|Get a working DBus interface|kurt.hindenburg@gmail.com|Kurt Hindenburg}}&lt;br /&gt;
{{FeatureTodo|konsole|Redesign manage profile dialog to allow users to sort profiles|kurt.hindenburg@gmail.com|Kurt Hindenburg}}&lt;br /&gt;
{{FeatureTodo|konsole|Allow window/terminal size to be set in profiles|kurt.hindenburg@gmail.com|Kurt Hindenburg}}&lt;br /&gt;
{{FeatureInProgress|libkonq|Add support in for pluginbased Drag'n'drop popup menus (and in my case, an &amp;quot;extract here&amp;quot; menu on dragged archives)|haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureInProgress|konqueror|History browser as independent from sidebar, and improved (different grouping style, sorting, etc).|pino@kde.org|Pino Toscano}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeplasma-addons =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Video Plasmoid|a media player widget complete with a basic dbus interface|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureDone|System Load Viewer|A tiny monitor for CPU, RAM and swap usage (known as System Monitor in KDE3)|dhaumann@kde.org|Dominik Haumann}}&lt;br /&gt;
{{FeatureInProgress|Comic Plasmoid|Clean up the config-dialog|mat69@gmx.net|Matthias Fuchs}}&lt;br /&gt;
{{FeatureTodo|Comic Plasmoid|Port to popup applet|mat69@gmx.net|Matthias Fuchs}}&lt;br /&gt;
{{FeatureInProgress|PoTD Engine|Import PoTD engine - is in kdereview|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureInProgress|Metadata Engine|Import Metadata engine - is in kdereview|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|Frame Plasmoid|Display Picture Metadata|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|Frame Plasmoid|Add url as setting|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|Frame Plasmoid|Add buttons Next/Previous/pause in slideshow mode|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureDone|wallpapers|Mandelbrot fractal wallpaper plugin|jacob.benoit.1@gmail.com|Benoît Jacob}}&lt;br /&gt;
{{FeatureInProgress|Weather Wallpaper|Add user-defined wallpapers|echidnaman@kubuntu.org|Jonathan Thomas}}&lt;br /&gt;
{{FeatureInProgress|wallpapers|Marble desktop globe wallpaper|sasch.pe@gmx.de|Sascha Peilicke}}&lt;br /&gt;
{{FeatureTodo|FileWatcher|Highlighting support|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureTodo|Now Playing|New widget UI|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureTodo|Life|Colors|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureTodo|Life|Fading|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Timer|Restore countdown after a shutdown|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Timer|Improved notifications|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureDone|Timer|Hide seconds|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureTodo|Unit converter|Improved widget UI|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|plasmaweather lib|Make plasmaweather library and use it in lcd weather, weather and weather wallpaper|damu@iki.fi|Petri Damstén}}&lt;br /&gt;
{{FeatureDone|LCD Weather|Tooltip|damu@iki.fi|Petri Damstén}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeartwork =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|screensavers|port to wallpaper packages|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.3_Feature_Plan</id>
		<title>Schedules/KDE4/4.3 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.3_Feature_Plan"/>
				<updated>2009-04-16T06:28:16Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* kdeutils */ New todo item for ark&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the 4.3 release.&lt;br /&gt;
&lt;br /&gt;
See also:&lt;br /&gt;
* [[Schedules/KDE4/4.3 Release Schedule]]&lt;br /&gt;
* [[Schedules/KDE4/4.3 Release Goals]]&lt;br /&gt;
* [[Schedules/KDE4/4.2 Feature Plan]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Legend:&lt;br /&gt;
* todo =&amp;gt; not started yet&lt;br /&gt;
* in-progress =&amp;gt; started, but not completed yet&lt;br /&gt;
* done =&amp;gt; completed&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Other =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|Akonadi|Various Akonadi related items can be found here http://techbase.kde.org/Projects/PIM/Akonadi#Scheduled_for_KDE_4.3_.2F_Akonadi_1.2|kde-pim@kde.org|Akonadi Developers}}&lt;br /&gt;
{{FeatureInProgress|KPackageKit|Pushing in KPackageKit (dependant on PolicyKit integration)|dantti85-dev@yahoo.com.br|Daniel}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdelibs =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|KLocale|Investigate adding Currency Code and currency minor units support based on ISO 4217 (http://en.wikipedia.org/wiki/ISO_4217).|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureDone|kdecore|Thread safety in ksycoca (KService, KMimeType etc.)|faure:AT:kde.org|David Faure}}&lt;br /&gt;
{{FeatureTodo|kdecore|Dynamic allocation of KDebug areas|faure:AT:kde.org|David Faure}}&lt;br /&gt;
{{FeatureInProgress|Sonnet|Implement language detection|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureInProgress|Sonnet|Integrate language detection with spellchecking|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureTodo|Sonnet|Integrate language detection with strigi|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureTodo|Sonnet|Grammar checking (at least for English)|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureInProgress|kio|Move KTcpSocket to kio and make it public; some cleanup required|ahartmetz@gmail.com|Andreas Hartmetz}}&lt;br /&gt;
{{FeatureTodo|KCalendarSystem|Add new astronomical calculation support classes to be used in kdelibs to build new astronomically based calendar systems, and in kdepim to build new version of libkholiday.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureTodo|KCalendarSystem|Add new calendar systems: Indian Civil (Saka), Ethiopean, Chinese, Pure Julian, Pure Gregorian, etc.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureTodo|KDEPrint|If no file printing support in Qt4.5, migrate FilePrinter class from Okular to enable file printing for all apps via QPrinter.  To be discussed on k-c-d first.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureTodo|KDEPrint|Add framework for standard actions for 'Send to...' for e-mail, fax, etc by printing to PDF/PS.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureTodo|kdeui|entries to help menu and aboutdata pointing to UserBase entry and forum.kde.org|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|kdesu|Classes to help kde-apps open ports in the local firewall (via IPTables/IPFW, etc...)|tejas@gja.in|Tejas Dinkar}}&lt;br /&gt;
{{FeatureInProgress|katepart|Key mapping support for the vi input mode|ehamberg-hjå-gmail.com|Erlend Hamberg}}&lt;br /&gt;
{{FeatureInProgress|katepart|Blockwise visual mode for the vi input mode|ehamberg-hjå-gmail.com|Erlend Hamberg}}&lt;br /&gt;
{{FeatureInProgress|katepart|Improve text objects in the vi input mode|ehamberg-hjå-gmail.com|Erlend Hamberg}}&lt;br /&gt;
{{FeatureTodo|katepart|Save registers and marks from the vi input mode|ehamberg-hjå-gmail.com|Erlend Hamberg}}&lt;br /&gt;
{{FeatureInProgress|kio|Fix D-Bus timeout in SlaveBase when calling kpasswdserver|lemma@confuego.org|Michael Leupold}}&lt;br /&gt;
{{FeatureInProgress|kdeui|Provide a class for detecting modifier keystrokes and locked key states|lemma@confuego.org|Michael Leupold}}&lt;br /&gt;
{{FeatureTodo|khtml|CSS3 Web Fonts|germain@ebooksfrance.org|Germain Garand}}&lt;br /&gt;
{{FeatureTodo|khtml|support more properties from CSS3 Backgrounds and Borders module|germain@ebooksfrance.org|Fredrik Höglund and/or Germain Garand}}&lt;br /&gt;
{{FeatureInProgress|khtml|support more properties from CSS3 Text module|germain@ebooksfrance.org|Germain Garand}}&lt;br /&gt;
{{FeatureInProgress|solid|Smart card reader support|cblauvelt@gmail.com|Christopher Blauvelt}}&lt;br /&gt;
{{FeatureTodo|KEmoticons|emit a signal when the emoticon theme is changed|brandon.ml@gmail.com|Carlo Segato}}&lt;br /&gt;
{{FeatureTodo|KLocale|Per-language number formats, and exposing them to modification by user.|caslav.ilic@gmx.net|Chusslove Illich}}&lt;br /&gt;
{{FeatureTodo|KLocale|Extension of date formats to cover many resolutions (month-year, day-month, etc.)|caslav.ilic@gmx.net|Chusslove Illich}}&lt;br /&gt;
{{FeatureInProgress|kfile|KDirSortFilterProxyModel: make it possible to not always sort folders first|frank78ac@googlemail.com|Frank Reininghaus}}&lt;br /&gt;
{{FeatureTodo|buildsystem|Add support for crosscompiling|neundorf@kde.org|Alexander Neundorf}}&lt;br /&gt;
{{FeatureInProgress|buildsystem|Add support for building parts of modules separately|neundorf@kde.org|Alexander Neundorf}}&lt;br /&gt;
{{FeatureInProgress|webkit|Move KDE integration of QtWebKit into kdelibs (but not KPart!)|uwolfer@kde.org|Urs Wolfer}}&lt;br /&gt;
{{FeatureTodo|Nepomuk|New Resource URI schema for Files (to better handle removable storage (parts in KDE Base)|dw@danielwinter.de|Daniel Winter}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-workspace =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |Non-Plasma, Non-KWin&lt;br /&gt;
{{FeatureTodo|Kxkb|Support for languages in keyboard layout descriptions|rysin:AT:kde.org|Andriy Rysin}}&lt;br /&gt;
{{FeatureDone|PolicyKit integration|Import PolicyKit-KDE from extragear|drf54321@gmail.com|Dario Freddi}}&lt;br /&gt;
{{FeatureDone|Solid Actions KCM|Import Solid actions KControl module from playground|ben@eclipse.endoftheinternet.org|Ben Cooksley}}&lt;br /&gt;
{{FeatureTodo|KControl4|Import refactor of systemsettings with Tree and Icon view support|ben(at)eclipse(dot)endoftheinternet(dot)org|Ben Cooksley and Mathias Soeken}}&lt;br /&gt;
{{FeatureDone|KSysguard|Added GetHotNewStuff support|a@b.com|name}}&lt;br /&gt;
{{FeatureInProgress|KActiveEdges|Split active screen edges from KWin|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureInProgress|Solid Wicd Engine|Import Solid Wicd engine from github/playground|drf54321@gmail.com|Dario Freddi}}&lt;br /&gt;
{{FeatureDone|Klipper|Made klipper automatically find possible actions based on filename copied to clipboard|dimsuz@gmail.com|Dmitry Suzdalev}}&lt;br /&gt;
{{FeatureDone|Klipper|Improved action adding/editing workflow by implementing a special dialog for editing a certain action|dimsuz@gmail.com|Dmitry Suzdalev}}&lt;br /&gt;
{{FeatureTodo|Klipper|Make action popup unobtrusive by showing menu only when user clicks an icon in systray. Icon itself should change to indicate availability of some actions on current clipboard|dimsuz@gmail.com|Dmitry Suzdalev}}&lt;br /&gt;
{{FeatureTodo|Font Installer KCM |Use PolicyKit for installtion of system-wide fonts.|craig@kde.org|Craig Drummond}}&lt;br /&gt;
{{FeatureInProgress|Font Settings KCM|Improved GUI for configuring anti-aliasing settings|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KRunner&lt;br /&gt;
{{FeatureInProgress|Nepomuk/Location Runners|Open with and service menu actions|ryan.bitanga@gmail.com|Ryan Bitanga}}&lt;br /&gt;
{{FeatureTodo|KRunner|Simple adaptive search|ryan.bitanga@gmail.com|Ryan Bitanga}}&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |Plasma - Priority Features&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |Plasma&lt;br /&gt;
{{FeatureTodo|Now Playing data engine|Support for MPD|kde:AT:randomguy3.me.uk|Alex Merry}}&lt;br /&gt;
{{FeatureTodo|Now Playing applet|Better design in panels|kde:AT:randomguy3.me.uk|Alex Merry}}&lt;br /&gt;
{{FeatureDone|Classic Menu Launcher|Optional recently used applications and System Settings menu|mail:AT:dipe.org|Sebastian Sauer}}&lt;br /&gt;
{{FeatureDone|Classic Menu Launcher|KDE3-like menu titles|mail:AT:dipe.org|Christian Loose}}&lt;br /&gt;
{{FeatureDone|Classic Menu Launcher|Context menu for menu items|mail:AT:dipe.org|Christian Loose}}&lt;br /&gt;
{{FeatureInProgress|Reusable video widget|A widget in libplasma that can play video and audio|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|Message box|A message box shown as an overlay over plasmoids|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureTodo|Panel spacers|A way to add/manage spacers directly from the panel controller|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|Systemtray protocol|New systemtray protocol beginnings: daemon and systemtray widget part|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|Default theme|Air: new default Plasma theme|notmart@gmail.com|Marco Martin and Nuno Pinheiro}}&lt;br /&gt;
{{FeatureInProgress|screensaver|security constraints|chanika@gmail.com|Chani}}&lt;br /&gt;
{{FeatureInProgress|keyboard shortcuts|configuration|chanika@gmail.com|Chani}}&lt;br /&gt;
{{FeatureTodo|icon plasmoid|make it suck less|chanika@gmail.com|Chani}}&lt;br /&gt;
{{FeatureTodo|desktop|make a plasmoid when I paste stuff|chanika@gmail.com|Chani}}&lt;br /&gt;
{{FeatureInProgress|extenders|Add grouping support to extenders|r.scheepmaker@student.utwente.nl|Rob Scheepmaker}}&lt;br /&gt;
{{FeatureInProgress|systemtray|Group multiple jobs and notifications|r.scheepmaker@student.utwente.nl|Rob Scheepmaker}}&lt;br /&gt;
{{FeatureTodo|systemtray|Job completed notifications, providing an sensible action ('open file' etc)|r.scheepmaker@student.utwente.nl|Rob Scheepmaker}}&lt;br /&gt;
{{FeatureInProgress|Kickoff|Add multiple columns support to Kickoff|talvik@gmail.com|Luiz Felipe Talvik}}&lt;br /&gt;
{{FeatureDone|folderview|Show tooltips with large previews and file metadata when hovering icons|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureDone|folderview|Show a popup view with the folder contents when hovering a folder in the icon view|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureDone|folderview|Add menu items to the context menu for showing the applet browser, adding panels, locking the screen, logging out etc.|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|folderview|Add menu items to the drop menu for creating applets and setting the wallpaper|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureTodo|folderview|Accessing sub folders as sub menus in the popup view when the applet is on the panel|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureTodo|folderview|Optionally show the window list menu when middle clicking the containment|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureTodo|folderview|Offer to create applets based on the mimetype when pasting URL's in the containment|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|folderview|Implement support for keyboard navigation|jhahoneyk@gmail.com|Shantanu Tushar Jha}}&lt;br /&gt;
{{FeatureDone|virus wallpaper|Move from playground to kdeplasma-addons and port to the new plasma::wallpaper|asraniel@fryx.ch|Beat Wolf}}&lt;br /&gt;
{{FeatureInProgress|Plasma|Add press-down feedback to folderview|haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureDone|Time DataEngine|Integrate solar position dataengine to time dataengine|damu@iki.fi|Petri Damstén}}&lt;br /&gt;
{{FeatureTodo|Time DataEngine|Moon position/phase data|damu@iki.fi|Petri Damstén}}&lt;br /&gt;
{{FeatureInProgress|Akonadi DataEngine|Move Akonadi dataengine to kdeplasma-addons|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureInProgress|Social Desktop Plasmoid|Plasmoid displaying contacts via OpenDesktop|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureTodo|Knowledge base Plasmoid|Plasmoid for searching and dispaying results from Open Collaboration Services / OpenDesktop|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureTodo|Tool tips|Extend tool tips API|emdeck@gmail.com|Michał Dutkiewicz}}&lt;br /&gt;
{{FeatureInProgress|Theme System|Better fallback mechanisms for transparent panels/dialogs without composition|david.nolden.kdevelop@art-master.de|David Nolden}}&lt;br /&gt;
{{FeatureInProgress|Plasmaclock library|Context menu for fast copying date and time strings to clipboard|emdeck@gmail.com|Michał Dutkiewicz}}&lt;br /&gt;
{{FeatureInProgress|Plasmaclock/Calendar|Display various information on the calendar using kholiday/akonadi|?|?}}&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KWin - Core&lt;br /&gt;
{{FeatureTodo|KWin|Redesign KWin system settings GUI|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureTodo|KWin|ARGB support for decorations|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureInProgress|KWin|Window docking/quick tiling|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureTodo|KWin|Internal desktop layout/pager support|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureInProgress|KWin|Non-composited Present Windows|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureInProgress|KWin|Tabbox improvements|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureTodo|KWin/Plasma|Toggle Compositing Plasmoid|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KWin - Desktop Effects&lt;br /&gt;
{{FeatureTodo|KWin|Expand present windows into other effects (E.g. Desktop Grid)|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureTodo|KWin|OpenGL 3 compatible Shaders|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureTodo|KWin|Improved cube reflection|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureInProgress|KWin|Add and remove desktops in grid effect|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureTodo|KWin|Desktop Thumnails in Pager Tooltips|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureTodo|KWin|Slide In/Out effect|hein@kde.org|Eike Hein}}&lt;br /&gt;
{{FeatureDone|KWin|Fade desktop effect (Desktop switcher)|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureInProgress|KWin|Highlight window effect|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureInProgress|KWin|SlideBack effect|michael_zanetti@gmx.net|Michael Zanetti}}&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KDM&lt;br /&gt;
{{FeatureTodo|KDM|Plasma wallpaper|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdepimlibs =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|Buildsystem|Require OpenLDAP (coordinate with the Windows team)|winter@kde.org|Allen Winter}}&lt;br /&gt;
{{FeatureTodo|Buildsystem|Require Cyrus-SASL (coordinate with the Windows team)|winter@kde.org|Allen Winter}}&lt;br /&gt;
{{FeatureTodo|libkleopatraclient|New interface library for kleopatra uiserver clients|marc@kdab.net|Marc Mutz}}&lt;br /&gt;
{{FeatureTodo|pimtextedit|New library around text edits, to provide support for inline images in the signature editor, among others|mcguire@kde.org|Thomas McGuire}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdenetwork =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|Kopete|UPnp Support|mattr@kde.org|Matt Rogers}}&lt;br /&gt;
{{FeatureDone|Kopete|Updated contact list interface (uses Qt 4 rather than Qt 3)|mattr@kde.org|Matt Rogers}}&lt;br /&gt;
{{FeatureTodo|Kopete|Update Kopete to better support Decibel|kopete-devel@kde.org|Kopete Developers}}&lt;br /&gt;
{{FeatureTodo|Kopete|Jabber Jingle video support|detlev.casanova@gmail.com|Detlev Casanova}}&lt;br /&gt;
{{FeatureTodo|Kopete|Jabber Jingle ICE support|detlev.casanova@gmail.com|Detlev Casanova}}&lt;br /&gt;
{{FeatureInProgress|Kopete|Contacts plasmoid|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Kopete|Rich text support for ICQ|kedgedev@gmail.com|Roman Jarosz}}&lt;br /&gt;
{{FeatureTodo|Kopete|Add support for urls to Bonjour plugin|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureInProgress|KGet|MultiSource-Downloading|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureTodo|KGet|Support mms://-protocol, see https://launchpad.net/libmms|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureTodo|KGet|MLDonkey-Plugin based on libkmldonkey|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureTodo|KGet|Advanced Details|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureInProgress|KRDC|NX support|gdavid.devel@gmail.com|David Gross}}&lt;br /&gt;
{{FeatureTodo|KRDC|Minimal-clutter mode to optimize screen real estate usage|gpothier@gmail.com|Guillaume Pothier}}&lt;br /&gt;
{{FeatureInProgress|Telepathy|Telepathy-specification compliant Account Manager using KWallet to store account data|grundleborg@googlemail.com|George Goldberg}}&lt;br /&gt;
{{FeatureInProgress|Telepathy|Account Editing UI for Telepathy|grundleborg@googlemail.com|George Goldberg}}&lt;br /&gt;
{{FeatureInProgress|Plasma|Network Manager Applet|wstephenson@kde.org|Will Stephenson}}&lt;br /&gt;
{{FeatureTodo|network:/ KIOSlave|Move into kdenetwork module|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdepim =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|Akonadi|Migration of contacts and calendar data from KResource to Akonadi ([http://techbase.kde.org/Projects/PIM/Akonadi#Scheduled_for_4.3 Details])|kde-pim@kde.org|Volker Krause, Kevin Krammer, Tobias Koenig}}&lt;br /&gt;
{{FeatureInProgress|Akregator|Support for syncing the feed list with Google Reader |osterfeld@kde.org|Frank Osterfeld}}&lt;br /&gt;
{{FeatureDone|[http://www.astrojar.org.uk/kalarm KAlarm]|Add export of alarms to a new calendar file|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|[http://www.astrojar.org.uk/kalarm KAlarm]|Allow configuration of default deferral time interval|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|[http://www.astrojar.org.uk/kalarm KAlarm]|Accept drag-and-drop of Todo entries to create a new alarm|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|[http://www.astrojar.org.uk/kalarm KAlarm]|Show command execution error indication in alarm list|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|[http://www.astrojar.org.uk/kalarm KAlarm]|Add option to spread alarm windows across screen|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|Akonadi|Google calendar and contacts resource|cavalcantii@gmail.com|Adenilson Cavalcanti}}&lt;br /&gt;
{{FeatureTodo|[http://www.astrojar.org.uk/kalarm KAlarm]|Port to Akonadi|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureTodo|[http://kblogger.pwsp.net KBlogger]|KBlogger, a blogging application|christian_weilbach@.web.de|Christian Weilbach}}&lt;br /&gt;
{{FeatureTodo|KBlogger|Port to use KRichTextEdit (Or KMEditor)|steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureInProgress|KContactManager|A new Akonadi-based address book to replace KAddressbook|tokoe@kde.org|Tobias Koenig}}&lt;br /&gt;
{{FeatureInProgress|Kjots| Create and port to akonadi model. |steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureTodo|Kjots| Add support for nepomuk including tagging, possibly storage, and linking. Also a nepomuk tag proxy model for representing the structure as tagged.|steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureInProgress|Kjots| Create plasmoid capable of showing the entire tree, or a single book.|steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureTodo|Kjots| Email KJots pages using default mail client ({{bug|124509}}. |steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureInProgress|Kleopatra|OpenPGP support|marc@kdab.net|Marc Mutz (Gpg4win)}}&lt;br /&gt;
{{FeatureDone|KMail|Add support for HTML images|yez@familieschepers.nl|Edwin Schepers}}&lt;br /&gt;
{{FeatureTodo|KMail|Use asynchronous Kleo|marc@kdab.net|Marc Mutz}}&lt;br /&gt;
{{FeatureTodo|KMail|Save metadata about attachments to Nepomuk when saving them|onurf@su.sabanciuniv.edu|Ismail Onur Filiz}}&lt;br /&gt;
{{FeatureTodo|KNode|Port to use KRichTextEdit (Or KMEditor)|steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureTodo|Kontact|Support for Kontact wide profiles|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureTodo|Kontact|Tip-of-the-Day summary|molkentin@kde.org|Daniel Molkentin}}&lt;br /&gt;
{{FeatureTodo|KOrganizer|Support for extended free-busy lists|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureInProgress|KPilot|Port old conduits to new base conduit architecture and KDE4/Qt4|jkasper@kde.org|Jason 'vanRijn' Kasper}}&lt;br /&gt;
{{FeatureInProgress|KPilot|Finish Keyring conduit, base conduit code and test cases, category syncing|jkasper@kde.org|Jason 'vanRijn' Kasper}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeutils =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|printer-applet|Restore feature parity with KDEPrint3 where possible.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureTodo|Okteta|add editing capability to Decoding table |kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add Kate-like search tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for import by drop, both url and data|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|copy again puts also a value or char variant of the data to clipboard|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for memory mapping of files|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add further export formats like s-record and intel 16|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for jobs like io, printing, string search or filter|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Make dialogs for Goto, Search &amp;amp; Replace embedded|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add Okular like embedded notifications|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add hash calculator tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks and other view settings for next load|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Show tooltip over bookmarks|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureInProgress|Okteta|Add filesystem browser tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureInProgress|Okteta|Add loaded documents tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Show selection range in status bar|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add global toggle option for the offset display, hex or decimal|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Make the Okteta KPart use libkakao, and rename libkakao|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|kwalletmanager|Move kwalletmanager to the Model/View architecture and redesign the UI.|lemma@confuego.org|Michael Leupold}}&lt;br /&gt;
{{FeatureInProgress|kdelirc|Bring back kdelirc|michael_zanetti@gmx.net|Michael Zanetti}}&lt;br /&gt;
{{FeatureTodo|ark|Improve support for pure gzip and bzip2 files|kubito@gmail.com|Raphael Kubo da Costa}}&lt;br /&gt;
{{FeatureInProgress|ark| Finish the cliinterface  |haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureTodo|ark| Add lots of more meaningful error messages  |haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureTodo|ark| Add support for ACE archives  |haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureTodo|ark| Add support for zip archives (cli-based, ie. info-zip) |haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureDone|ark| Make the mimetype selection dialog more user-friendly |kubito@gmail.com|Raphael Kubo da Costa}}&lt;br /&gt;
{{FeatureTodo|ark| Make the file list obey KDE's mouse settings |kubito@gmail.com|Raphael Kubo da Costa}}&lt;br /&gt;
{{FeatureTodo|KGpg| Port to new systray framework |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureTodo|KGpg| Clean up editor GUI and classes |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureTodo|KGpg| Make keyserver operations more flexible |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureInProgress|KGpg| Port key importing to be a transaction |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureTodo|KGpg| Port keyserver query to be a transaction |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureTodo|KGpg| Make &amp;quot;import key&amp;quot; also work with keyservers |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureTodo|KGpg| Integrate solid to know when a online action (e.g. keyserver query) does not make sense |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureInProgress|KTimer| Redesign UI |zahl@transbay.net|A. L. Spehr}}&lt;br /&gt;
{{FeatureTodo|KTimer| Add hours and seconds to counter |zahl@transbay.net|A. L. Spehr}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebindings =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|krossjava|Integrate into e.g. SuperKaramba and fix issues that show up.|mail@dipe.org|Sebastian Sauer}}&lt;br /&gt;
{{FeatureTodo|krossjava|Documentation++|mail@dipe.org|Sebastian Sauer}}&lt;br /&gt;
{{FeatureTodo|krossfalcon|Documentation++|mail@dipe.org|Sebastian Sauer}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdegames =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|libkdegames|Convert old PNG based card decks to SVG with embedded bitmaps.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Add Curse of the Mummy game (20 levels), contributed by Steve Mann.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureInProgress|KGoldrunner|Major rewrite, mainly of the game engine and editor.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureInProgress|KGoldrunner|More accurate and reliable pause and resume.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureTodo|KGoldrunner|Save and reload at any instant in a game.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureTodo|KGoldrunner|Record and replay games.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureTodo|KGoldrunner|Run demos ... especially at startup or as hints for difficult levels.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureTodo|KGoldrunner|Hot-new-stuff support for themes and game sets.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureTodo|KGoldrunner|Integration of the Scavenger game (180 new levels) and its rule-set.  This would also involve allowing different grid dimensions for different games, as a feature of the new game engine.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureTodo|KGoldrunner|Better support for beginners, such as graphical cues for false bricks and hidden ladders, extra messages with &amp;quot;don't tell me this again&amp;quot;, etc.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureInProgress|Killbots|Add &amp;quot;sonic screwdriver&amp;quot; functionality.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureTodo|Killbots|Add a tutorial for beginners.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureTodo|Kolf|Replace with Kolf 2 (please help!)|majewsky@gmx.net|Stefan Majewsky}}&lt;br /&gt;
{{FeatureDone|KPatience|Add a command line switch to manually launch a game of a certain type.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureDone|KPatience|Add an option to save the game state at shutdown to be automatically be restored on next run.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureDone|KPatience|Add the ability to return to the game selection screen after selecting a game.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureInProgress|KPatience|Add a &amp;quot;Deal&amp;quot; action to those game types that support dealing cards from the deck into play.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureTodo|KsirK|rewrite AI code or at least correct most problems related in bug #170777. Volunteers wanted!|kleag@free.fr|Gaël de Chalendar}}&lt;br /&gt;
{{FeatureTodo|KsirK|Previous/Next in start new game as described in bug #170774|kleag@free.fr|Gaël de Chalendar}}&lt;br /&gt;
{{FeatureTodo|KsirK|Polish the skin editor (doc, contextual help, ...)|kleag@free.fr|Gaël de Chalendar}}&lt;br /&gt;
{{FeatureTodo|KsirK|Boost playing over Jabber|kleag@free.fr|Gaël de Chalendar}}&lt;br /&gt;
{{FeatureTodo|KSpaceDuel|rewrite AI code|dirkrathlev@gmx.de|Dirk Rathlev}}&lt;br /&gt;
{{FeatureDone|ktron|Port and remake the KTron game for KDE 4.3|legolas@legolasweb.nl|Stas Verberkt}}&lt;br /&gt;
{{FeatureTodo|KSudoku|Import the new logic engine as a library|joselb@gmx.net|Johannes Bergmeier}}&lt;br /&gt;
{{FeatureTodo|KSudoku|Port KSudoku to the new engine|joselb@gmx.net|Johannes Bergmeier}}&lt;br /&gt;
{{FeatureTodo|KSudoku|Add interactive help|joselb@gmx.net|Johannes Bergmeier}}&lt;br /&gt;
{{FeatureDone|Bovo|Add new AI|pelladigabor@gmail.com|Pelladi Gabor}}&lt;br /&gt;
{{FeatureDone|Bovo|Computer thinking doesn't block the GUI|pelladigabor@gmail.com|Pelladi Gabor}}&lt;br /&gt;
{{FeatureTodo|libkdegames|Import KGGZ libraries from GGZ SVN|spillner@kde.org|Josef Spillner}}&lt;br /&gt;
{{FeatureInProgress|libkmahjongg|Introduce new tileset, Bamboo.|mw_triad@users.sourceforge.net|Matthew Woehlke}}&lt;br /&gt;
{{FeatureDone|KMahjongg|Add 70 additional levels contributed by users|piacentini at kde.org|Mauricio Piacentini}}&lt;br /&gt;
{{FeatureTodo|KMahjongg|Add start page with level selection|piacentini at kde.org|Mauricio Piacentini}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeadmin =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|KGrubEditor|Integrate KGrubEditor into KDE Admin http://sourceforge.net/projects/kgrubeditor. Approved by Nicolas Ternisien &amp;lt;nicolas.ternisien@gmail.com&amp;gt; |artemis_dot_fowl_dot_2007@gmail_dot_com|Konstantinos Smanis}}&lt;br /&gt;
{{FeatureTodo|Guidance|Port Guidance to KDE 4, and move it to KDE Admin http://www.simonzone.com/software/guidance/.|nicolas.ternisien@gmail.com|Nicolas Ternisien}}&lt;br /&gt;
{{FeatureTodo|system-config-printer-kde|Restore feature parity with KDEPrint3 where possible.|john@layt.net|john Layt, Jonathan Riddell}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdesdk =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|Lokalize|XLIFF support|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureInProgress|Lokalize|various Translation Memory enhancements|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureInProgress|Lokalize|Kross-based scripting|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureTodo|Lokalize|QA: glossary checklists|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureTodo|KAppTemplate|Add DBUS support in templates|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureDone|Umbrello|Replace all q3 widgets in the refactoring assistant|andi.fischer@hispeed.ch|Andi Fischer}}&lt;br /&gt;
{{FeatureInProgress|Umbrello|Merge in SoC qgraphicsview port branch|krishna.ggk@gmail.com|Gopala Krishna A}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeedu =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|KAlgebra|Export to MathML Presentation Markup|aleixpol@gmail.com|Aleix Pol}}&lt;br /&gt;
{{FeatureTodo|KAlgebra|Some integration with the new KFormula widget|aleixpol@gmail.com|Aleix Pol}}&lt;br /&gt;
{{FeatureInProgress|KAlgebra|Add ability to draw 3D plots in cylindrical and spherical coordinates.|orgyforever@gmail.com|Percy Camilo Triveño Aucahuasi}}&lt;br /&gt;
{{FeatureTodo|Kalzium|Port Kalzium's periodic table to use new QGraphicsView.|marcus@cryos.org|Marcus D. Hanwell}}&lt;br /&gt;
{{FeatureTodo|Kalzium|Separate compound viewer/editor application from Kalzium.|marcus@cryos.org|Marcus D. Hanwell}}&lt;br /&gt;
{{FeatureTodo|Kalzium|Remove the libavogadro snapshot, depend on libavogadro directly.|jacob@math.jussieu.fr|Benoit Jacob}}&lt;br /&gt;
{{FeatureTodo|Kalzium|Plasmoid to access Kalzium database|cniehaus@kde.org|Carsten Niehaus}}&lt;br /&gt;
{{FeatureTodo|KEduca|Rewrite of the classic test writing/taking application|matt@milliams.com|Matt Williams}}&lt;br /&gt;
{{FeatureTodo|KHangMan|Integrate an editor|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KHangMan|Plasmoid|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KHangMan|Theme manager|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|Kig|Properties dialog for objects.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Kig|Improve construction of bisect lines.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Kig|Improve feedback when constructing objects.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Kig|More geometric objects.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Kig|Script objects as macros (to be reused more than once).|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Kig|Improve the Cabri import filter.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Kig|Improve the new/edit script wizard.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|KLettres|Visual Indicator when letter is wrong|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KLettres|Number support|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KLettres|Theme manager|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KStars|Marble widget for Geolocation tool|mboquien@free.fr|Médéric Boquien}}&lt;br /&gt;
{{FeatureTodo|KStars|Better printed star charts|kstars@30doradus.org|Jason Harris}}&lt;br /&gt;
{{FeatureTodo|KStars|Sync KStars time from device|mutlaqja@ikarustech.com|Jasem Mutlaq}}&lt;br /&gt;
{{FeatureTodo|KStars|Better rendering of comets/asteroids|kstars@30doradus.org|Jason Harris}}&lt;br /&gt;
{{FeatureTodo|KStars|Texture mapping of the skymap???|kstars@30doradus.org|Jason Harris}}&lt;br /&gt;
{{FeatureTodo|KStars|Improve Observing List Wizard|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Display Comet Magnitudes whenever possible|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Information links in-place for each technical term|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Tool to suggest star-hopping techniques???|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Extend conjunction tool to have one object unspecified, but have a genre of objects specified instead|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Extend conjunction tool to predict oppositions and occultations|prak902000@gmail.com|Prakash Mohan}}&lt;br /&gt;
{{FeatureTodo|KStars|Simulate Lunar Eclipses|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Simulate Satellites and Iridium Flares|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Social and Geographical Integration for KStars|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Merge SAC with NGC / IC as default catalog|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KTurtle|Optional rulers/grid for canvas units|piacentini@kde.org|Mauricio Piacentini}}&lt;br /&gt;
{{FeatureTodo|Marble|Export map to MxN pixel bitmap|inge@lysator.liu.se|Inge Wallin}}&lt;br /&gt;
{{FeatureTodo|Marble|Bookmarks|inge@lysator.liu.se|Inge Wallin}}&lt;br /&gt;
{{FeatureTodo|Marble|Support for MarbleWidget::setEnabled( bool )|inge@lysator.liu.se|Inge Wallin}}&lt;br /&gt;
{{FeatureTodo|Marble|Map Contents translation|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Editing GeoDataFeatures|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Update Map (&amp;quot;F5&amp;quot;)|jensmh@gmx.de|Jens-Michael Hoffmann}}&lt;br /&gt;
{{FeatureInProgress|Marble|Layer Management Class|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Plugin architecture for map layers|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Extending GeoPainter|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Marble Runners|hdevalence@gmail.com|Henry de Valence}}&lt;br /&gt;
{{FeatureInProgress|Marble|GeoClue Integration |jensmh@gmx.de|Jens-Michael Hoffmann}}&lt;br /&gt;
{{FeatureInProgress|Marble|Routing |jensmh@gmx.de|Jens-Michael Hoffmann}}&lt;br /&gt;
{{FeatureInProgress|Marble|More map providers (WMS?) |jensmh@gmx.de|Jens-Michael Hoffmann}}&lt;br /&gt;
{{FeatureInProgress|Marble|Winkel Triple projection / equivalent |hdevalence@gmail.com|Henry de Valence}}&lt;br /&gt;
{{FeatureInProgress|Marble|Marble WorldClock Plasmoid|hdevalence@gmail.com|Henry de Valence}}&lt;br /&gt;
{{FeatureDone|Marble|Qt-Version settings dialog|hdevalence@gmail.com|Henry de Valence}}&lt;br /&gt;
{{FeatureInProgress|Marble|Panoramio Support||Shashank Singh}}&lt;br /&gt;
{{FeatureInProgress|Marble|Twitter Plugin||Shashank Singh}}&lt;br /&gt;
{{FeatureInProgress|Marble|TimeZone Support|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureDone|Marble|Support for other planets and the moon|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureDone|Marble|DGML2 Support|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureDone|Marble|Support for imperial units|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Graticule plugin|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|MeasureTool plugin|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureDone|Marble|Port authors list from the Qt-About dialog to the KDE-About dialog|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Basic KML support|ps_ml@gmx.de|Patrick Spendrin}}&lt;br /&gt;
{{FeatureInProgress|Marble|GeoData Model/View Visualization|ps_ml@gmx.de|Patrick Spendrin}}&lt;br /&gt;
{{FeatureInProgress|Marble|More generic projection support|inge@lysator.liu.se|Inge Wallin}}&lt;br /&gt;
{{FeatureInProgress|Marble|Network plugins|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Marble|Geolocation plugins|ewoerner@kde.org|Eckhart Wörner}}&lt;br /&gt;
{{FeatureInProgress|Parley|Declensions|frederik.gladhorn@kdemail.net|Frederik Gladhorn}}&lt;br /&gt;
{{FeatureTodo|Step|Improve GUI for creating softbody|ksvladimir@gmail.com|Vladimir Kuznetsov}}&lt;br /&gt;
{{FeatureTodo|Step|Use common constraints handling code for collisions|ksvladimir@gmail.com|Vladimir Kuznetsov}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|JuK|Remove Qt/KDE3 support lib requirements|michael.pyne@kdemail.net|Michael Pyne}}&lt;br /&gt;
{{FeatureTodo|JuK|Allow setting covers directly from URLs supported by KIO - drag/drop already allows this however|michael.pyne@kdemail.net|Michael Pyne}}&lt;br /&gt;
{{FeatureDone|JuK|Use XCOMPOSITE real transparency when available for the track announcement popup|michael.pyne@kdemail.net|Michael Pyne}}&lt;br /&gt;
{{FeatureTodo|JuK|Allow disabling crossfade|michael.pyne@kdemail.net|Michael Pyne}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeaccessibility =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdegraphics =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|Okular|Generator for Mobipocket format|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureDone|strigi|Thumbnailer and analyzer for Mobipocket format|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureDone|strigi|Analyzer for epub format|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureTodo|Okular|Sound annotations.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Okular|Link annotations.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Okular|Caret annotations.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Okular|Support .snp and .emf file formats|bradh@kde.org|Brad Hards}}&lt;br /&gt;
{{FeatureTodo|Okular|Synctex support.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Okular|Rich-text for annotations text.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|kruler|More ruler shapes.|msoeken_at_tzi_dot_de|Mathias Soeken}}&lt;br /&gt;
{{FeatureDone|kruler|Configurable shortcuts.|msoeken_at_tzi_dot_de|Mathias Soeken}}&lt;br /&gt;
{{FeatureTodo|kruler|DBUS Interface.|msoeken_at_tzi_dot_de|Mathias Soeken}}&lt;br /&gt;
{{FeatureDone|kruler|Transparent background and opaque drawing of the lines and numbers (Qt 4.5).|msoeken_at_tzi_dot_de|Mathias Soeken}}&lt;br /&gt;
{{FeatureInProgress|gwenview|Folder view.|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureInProgress|gwenview|Make thumbnail bar more customizable (orientation, number of rows/columns).|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureInProgress|gwenview|Add back video support.|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureInProgress|gwenview|Improve history handling.|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureDone|libksane|Add &amp;quot;Auto selection&amp;quot; after preview.|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureInProgress|Okular|Less intrusive search with find bar.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Okular|Better detection of where the Okular KPart is embedded into, and adapt the UI accordingly (sidebar, actions, etc).|pino@kde.org|Pino Toscano}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-runtime =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|drkonqi|DrKonqi new dialog UI + Guided crash reporting tool|andresbajotierra@gmail.com|Dario Andres|}}&lt;br /&gt;
{{FeatureInProgress|drkonqi|Backtrace parsing and rating|gkiagiad@csd.uoc.gr|George Kiagiadakis|}}&lt;br /&gt;
{{FeatureTodo|drkonqi|DrKonqi native english texts + guide|andresbajotierra@gmail.com|Dario Andres|}}&lt;br /&gt;
{{FeatureInProgress|kpasswdserver|Fix D-Bus timeout in kpasswdserver using an async API|lemma@confuego.org|Michael Leupold}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-apps =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|konq_thumbnails|Basic thumbnail support for KHTMLPart views(almost finished, now cleanup code)|yinshuiboy@gmail.com|Siyuan Cao}}&lt;br /&gt;
{{FeatureTodo|konq_thumbnails|thumbnail support for all KonqFrame|yinshuiboy@gmail.com|Siyuan Cao}}&lt;br /&gt;
{{FeatureTodo|konq_thumbnails|more thumbnail page styles and customization|yinshuiboy@gmail.com|Siyuan Cao}}&lt;br /&gt;
{{FeatureTodo|konqueror|&amp;quot;Places&amp;quot; sidebar to replace KDE3's &amp;quot;media:/&amp;quot;|kdedevel_at_etotheipiplusone_dot_com|Simon St James}}&lt;br /&gt;
{{FeatureTodo|konqueror|Move Dolphin's Treeview to libkonq so that it can be used in Konqueror|kdedevel_at_etotheipiplusone_dot_com|Simon St James}}&lt;br /&gt;
{{FeatureTodo|konqueror|Move Dolphin's Information panel to libkonq so that it can be used in Konqueror|kdedevel_at_etotheipiplusone_dot_com|Simon St James}}&lt;br /&gt;
{{FeatureInProgress|dolphin|Matthias's Audio/ Video preview in Information panel|kdedevel_at_etotheipiplusone_dot_com|Simon St James}}&lt;br /&gt;
{{FeatureTodo|dolphin|Allow to configure and download service menus|peter.penz@gmx.at|Peter Penz}}&lt;br /&gt;
{{FeatureInProgress|dolphin|Nepomuk search integration|peter.penz@gmx.at|Peter Penz}}&lt;br /&gt;
{{FeatureInProgress|dolphin|Use Nepomuk to receive the meta data for the Information panel|peter.penz@gmx.at|Peter Penz}}&lt;br /&gt;
{{FeatureInProgress|dolphin|Let user choose if folders are always shown first or not|frank78ac@googlemail.com|Frank Reininghaus}}&lt;br /&gt;
{{FeatureInProgress|konsole|Get a working DBus interface|kurt.hindenburg@gmail.com|Kurt Hindenburg}}&lt;br /&gt;
{{FeatureTodo|konsole|Redesign manage profile dialog to allow users to sort profiles|kurt.hindenburg@gmail.com|Kurt Hindenburg}}&lt;br /&gt;
{{FeatureTodo|konsole|Allow window/terminal size to be set in profiles|kurt.hindenburg@gmail.com|Kurt Hindenburg}}&lt;br /&gt;
{{FeatureInProgress|libkonq|Add support in for pluginbased Drag'n'drop popup menus (and in my case, an &amp;quot;extract here&amp;quot; menu on dragged archives)|haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureInProgress|konqueror|History browser as independent from sidebar, and improved (different grouping style, sorting, etc).|pino@kde.org|Pino Toscano}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeplasma-addons =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Video Plasmoid|a media player widget complete with a basic dbus interface|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureDone|System Load Viewer|A tiny monitor for CPU, RAM and swap usage (known as System Monitor in KDE3)|dhaumann@kde.org|Dominik Haumann}}&lt;br /&gt;
{{FeatureInProgress|Comic Plasmoid|Clean up the config-dialog|mat69@gmx.net|Matthias Fuchs}}&lt;br /&gt;
{{FeatureTodo|Comic Plasmoid|Port to popup applet|mat69@gmx.net|Matthias Fuchs}}&lt;br /&gt;
{{FeatureTodo|PoTD Engine|Import PoTD engine|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|Metadata Engine|Import Metadata engine|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|Frame Plasmoid|Display Picture Metadata|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|Frame Plasmoid|Add url as setting|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|Frame Plasmoid|Add buttons Next/Previous/pause in slideshow mode|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureDone|wallpapers|Mandelbrot fractal wallpaper plugin|jacob.benoit.1@gmail.com|Benoît Jacob}}&lt;br /&gt;
{{FeatureInProgress|Weather Wallpaper|Add user-defined wallpapers|echidnaman@kubuntu.org|Jonathan Thomas}}&lt;br /&gt;
{{FeatureInProgress|wallpapers|Marble desktop globe wallpaper|sasch.pe@gmx.de|Sascha Peilicke}}&lt;br /&gt;
{{FeatureTodo|FileWatcher|Highlighting support|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureTodo|Now Playing|New widget UI|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureTodo|Life|Colors|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureTodo|Life|Fading|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Timer|Restore countdown after a shutdown|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Timer|Improved notifications|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Timer|Hide seconds|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureTodo|Unit converter|Improved widget UI|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|plasmaweather lib|Make plasmaweather library and use it in lcd weather, weather and weather wallpaper|damu@iki.fi|Petri Damstén}}&lt;br /&gt;
{{FeatureDone|LCD Weather|Tooltip|damu@iki.fi|Petri Damstén}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeartwork =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|screensavers|port to wallpaper packages|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.3_Feature_Plan</id>
		<title>Schedules/KDE4/4.3 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.3_Feature_Plan"/>
				<updated>2009-04-16T06:16:02Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* kdeutils */ Finished one todo for ark&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the 4.3 release.&lt;br /&gt;
&lt;br /&gt;
See also:&lt;br /&gt;
* [[Schedules/KDE4/4.3 Release Schedule]]&lt;br /&gt;
* [[Schedules/KDE4/4.3 Release Goals]]&lt;br /&gt;
* [[Schedules/KDE4/4.2 Feature Plan]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Legend:&lt;br /&gt;
* todo =&amp;gt; not started yet&lt;br /&gt;
* in-progress =&amp;gt; started, but not completed yet&lt;br /&gt;
* done =&amp;gt; completed&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Other =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|Akonadi|Various Akonadi related items can be found here http://techbase.kde.org/Projects/PIM/Akonadi#Scheduled_for_KDE_4.3_.2F_Akonadi_1.2|kde-pim@kde.org|Akonadi Developers}}&lt;br /&gt;
{{FeatureInProgress|KPackageKit|Pushing in KPackageKit (dependant on PolicyKit integration)|dantti85-dev@yahoo.com.br|Daniel}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdelibs =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|KLocale|Investigate adding Currency Code and currency minor units support based on ISO 4217 (http://en.wikipedia.org/wiki/ISO_4217).|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureDone|kdecore|Thread safety in ksycoca (KService, KMimeType etc.)|faure:AT:kde.org|David Faure}}&lt;br /&gt;
{{FeatureTodo|kdecore|Dynamic allocation of KDebug areas|faure:AT:kde.org|David Faure}}&lt;br /&gt;
{{FeatureInProgress|Sonnet|Implement language detection|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureInProgress|Sonnet|Integrate language detection with spellchecking|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureTodo|Sonnet|Integrate language detection with strigi|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureTodo|Sonnet|Grammar checking (at least for English)|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureInProgress|kio|Move KTcpSocket to kio and make it public; some cleanup required|ahartmetz@gmail.com|Andreas Hartmetz}}&lt;br /&gt;
{{FeatureTodo|KCalendarSystem|Add new astronomical calculation support classes to be used in kdelibs to build new astronomically based calendar systems, and in kdepim to build new version of libkholiday.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureTodo|KCalendarSystem|Add new calendar systems: Indian Civil (Saka), Ethiopean, Chinese, Pure Julian, Pure Gregorian, etc.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureTodo|KDEPrint|If no file printing support in Qt4.5, migrate FilePrinter class from Okular to enable file printing for all apps via QPrinter.  To be discussed on k-c-d first.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureTodo|KDEPrint|Add framework for standard actions for 'Send to...' for e-mail, fax, etc by printing to PDF/PS.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureTodo|kdeui|entries to help menu and aboutdata pointing to UserBase entry and forum.kde.org|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|kdesu|Classes to help kde-apps open ports in the local firewall (via IPTables/IPFW, etc...)|tejas@gja.in|Tejas Dinkar}}&lt;br /&gt;
{{FeatureInProgress|katepart|Key mapping support for the vi input mode|ehamberg-hjå-gmail.com|Erlend Hamberg}}&lt;br /&gt;
{{FeatureInProgress|katepart|Blockwise visual mode for the vi input mode|ehamberg-hjå-gmail.com|Erlend Hamberg}}&lt;br /&gt;
{{FeatureInProgress|katepart|Improve text objects in the vi input mode|ehamberg-hjå-gmail.com|Erlend Hamberg}}&lt;br /&gt;
{{FeatureTodo|katepart|Save registers and marks from the vi input mode|ehamberg-hjå-gmail.com|Erlend Hamberg}}&lt;br /&gt;
{{FeatureInProgress|kio|Fix D-Bus timeout in SlaveBase when calling kpasswdserver|lemma@confuego.org|Michael Leupold}}&lt;br /&gt;
{{FeatureInProgress|kdeui|Provide a class for detecting modifier keystrokes and locked key states|lemma@confuego.org|Michael Leupold}}&lt;br /&gt;
{{FeatureTodo|khtml|CSS3 Web Fonts|germain@ebooksfrance.org|Germain Garand}}&lt;br /&gt;
{{FeatureTodo|khtml|support more properties from CSS3 Backgrounds and Borders module|germain@ebooksfrance.org|Fredrik Höglund and/or Germain Garand}}&lt;br /&gt;
{{FeatureInProgress|khtml|support more properties from CSS3 Text module|germain@ebooksfrance.org|Germain Garand}}&lt;br /&gt;
{{FeatureInProgress|solid|Smart card reader support|cblauvelt@gmail.com|Christopher Blauvelt}}&lt;br /&gt;
{{FeatureTodo|KEmoticons|emit a signal when the emoticon theme is changed|brandon.ml@gmail.com|Carlo Segato}}&lt;br /&gt;
{{FeatureTodo|KLocale|Per-language number formats, and exposing them to modification by user.|caslav.ilic@gmx.net|Chusslove Illich}}&lt;br /&gt;
{{FeatureTodo|KLocale|Extension of date formats to cover many resolutions (month-year, day-month, etc.)|caslav.ilic@gmx.net|Chusslove Illich}}&lt;br /&gt;
{{FeatureInProgress|kfile|KDirSortFilterProxyModel: make it possible to not always sort folders first|frank78ac@googlemail.com|Frank Reininghaus}}&lt;br /&gt;
{{FeatureTodo|buildsystem|Add support for crosscompiling|neundorf@kde.org|Alexander Neundorf}}&lt;br /&gt;
{{FeatureInProgress|buildsystem|Add support for building parts of modules separately|neundorf@kde.org|Alexander Neundorf}}&lt;br /&gt;
{{FeatureInProgress|webkit|Move KDE integration of QtWebKit into kdelibs (but not KPart!)|uwolfer@kde.org|Urs Wolfer}}&lt;br /&gt;
{{FeatureTodo|Nepomuk|New Resource URI schema for Files (to better handle removable storage (parts in KDE Base)|dw@danielwinter.de|Daniel Winter}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-workspace =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |Non-Plasma, Non-KWin&lt;br /&gt;
{{FeatureTodo|Kxkb|Support for languages in keyboard layout descriptions|rysin:AT:kde.org|Andriy Rysin}}&lt;br /&gt;
{{FeatureDone|PolicyKit integration|Import PolicyKit-KDE from extragear|drf54321@gmail.com|Dario Freddi}}&lt;br /&gt;
{{FeatureDone|Solid Actions KCM|Import Solid actions KControl module from playground|ben@eclipse.endoftheinternet.org|Ben Cooksley}}&lt;br /&gt;
{{FeatureTodo|KControl4|Import refactor of systemsettings with Tree and Icon view support|ben(at)eclipse(dot)endoftheinternet(dot)org|Ben Cooksley and Mathias Soeken}}&lt;br /&gt;
{{FeatureDone|KSysguard|Added GetHotNewStuff support|a@b.com|name}}&lt;br /&gt;
{{FeatureInProgress|KActiveEdges|Split active screen edges from KWin|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureInProgress|Solid Wicd Engine|Import Solid Wicd engine from github/playground|drf54321@gmail.com|Dario Freddi}}&lt;br /&gt;
{{FeatureDone|Klipper|Made klipper automatically find possible actions based on filename copied to clipboard|dimsuz@gmail.com|Dmitry Suzdalev}}&lt;br /&gt;
{{FeatureDone|Klipper|Improved action adding/editing workflow by implementing a special dialog for editing a certain action|dimsuz@gmail.com|Dmitry Suzdalev}}&lt;br /&gt;
{{FeatureTodo|Klipper|Make action popup unobtrusive by showing menu only when user clicks an icon in systray. Icon itself should change to indicate availability of some actions on current clipboard|dimsuz@gmail.com|Dmitry Suzdalev}}&lt;br /&gt;
{{FeatureTodo|Font Installer KCM |Use PolicyKit for installtion of system-wide fonts.|craig@kde.org|Craig Drummond}}&lt;br /&gt;
{{FeatureInProgress|Font Settings KCM|Improved GUI for configuring anti-aliasing settings|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KRunner&lt;br /&gt;
{{FeatureInProgress|Nepomuk/Location Runners|Open with and service menu actions|ryan.bitanga@gmail.com|Ryan Bitanga}}&lt;br /&gt;
{{FeatureTodo|KRunner|Simple adaptive search|ryan.bitanga@gmail.com|Ryan Bitanga}}&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |Plasma - Priority Features&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |Plasma&lt;br /&gt;
{{FeatureTodo|Now Playing data engine|Support for MPD|kde:AT:randomguy3.me.uk|Alex Merry}}&lt;br /&gt;
{{FeatureTodo|Now Playing applet|Better design in panels|kde:AT:randomguy3.me.uk|Alex Merry}}&lt;br /&gt;
{{FeatureDone|Classic Menu Launcher|Optional recently used applications and System Settings menu|mail:AT:dipe.org|Sebastian Sauer}}&lt;br /&gt;
{{FeatureDone|Classic Menu Launcher|KDE3-like menu titles|mail:AT:dipe.org|Christian Loose}}&lt;br /&gt;
{{FeatureDone|Classic Menu Launcher|Context menu for menu items|mail:AT:dipe.org|Christian Loose}}&lt;br /&gt;
{{FeatureInProgress|Reusable video widget|A widget in libplasma that can play video and audio|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|Message box|A message box shown as an overlay over plasmoids|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureTodo|Panel spacers|A way to add/manage spacers directly from the panel controller|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|Systemtray protocol|New systemtray protocol beginnings: daemon and systemtray widget part|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|Default theme|Air: new default Plasma theme|notmart@gmail.com|Marco Martin and Nuno Pinheiro}}&lt;br /&gt;
{{FeatureInProgress|screensaver|security constraints|chanika@gmail.com|Chani}}&lt;br /&gt;
{{FeatureInProgress|keyboard shortcuts|configuration|chanika@gmail.com|Chani}}&lt;br /&gt;
{{FeatureTodo|icon plasmoid|make it suck less|chanika@gmail.com|Chani}}&lt;br /&gt;
{{FeatureTodo|desktop|make a plasmoid when I paste stuff|chanika@gmail.com|Chani}}&lt;br /&gt;
{{FeatureInProgress|extenders|Add grouping support to extenders|r.scheepmaker@student.utwente.nl|Rob Scheepmaker}}&lt;br /&gt;
{{FeatureInProgress|systemtray|Group multiple jobs and notifications|r.scheepmaker@student.utwente.nl|Rob Scheepmaker}}&lt;br /&gt;
{{FeatureTodo|systemtray|Job completed notifications, providing an sensible action ('open file' etc)|r.scheepmaker@student.utwente.nl|Rob Scheepmaker}}&lt;br /&gt;
{{FeatureInProgress|Kickoff|Add multiple columns support to Kickoff|talvik@gmail.com|Luiz Felipe Talvik}}&lt;br /&gt;
{{FeatureDone|folderview|Show tooltips with large previews and file metadata when hovering icons|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureDone|folderview|Show a popup view with the folder contents when hovering a folder in the icon view|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureDone|folderview|Add menu items to the context menu for showing the applet browser, adding panels, locking the screen, logging out etc.|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|folderview|Add menu items to the drop menu for creating applets and setting the wallpaper|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureTodo|folderview|Accessing sub folders as sub menus in the popup view when the applet is on the panel|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureTodo|folderview|Optionally show the window list menu when middle clicking the containment|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureTodo|folderview|Offer to create applets based on the mimetype when pasting URL's in the containment|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|folderview|Implement support for keyboard navigation|jhahoneyk@gmail.com|Shantanu Tushar Jha}}&lt;br /&gt;
{{FeatureDone|virus wallpaper|Move from playground to kdeplasma-addons and port to the new plasma::wallpaper|asraniel@fryx.ch|Beat Wolf}}&lt;br /&gt;
{{FeatureInProgress|Plasma|Add press-down feedback to folderview|haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureDone|Time DataEngine|Integrate solar position dataengine to time dataengine|damu@iki.fi|Petri Damstén}}&lt;br /&gt;
{{FeatureTodo|Time DataEngine|Moon position/phase data|damu@iki.fi|Petri Damstén}}&lt;br /&gt;
{{FeatureInProgress|Akonadi DataEngine|Move Akonadi dataengine to kdeplasma-addons|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureInProgress|Social Desktop Plasmoid|Plasmoid displaying contacts via OpenDesktop|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureTodo|Knowledge base Plasmoid|Plasmoid for searching and dispaying results from Open Collaboration Services / OpenDesktop|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureTodo|Tool tips|Extend tool tips API|emdeck@gmail.com|Michał Dutkiewicz}}&lt;br /&gt;
{{FeatureInProgress|Theme System|Better fallback mechanisms for transparent panels/dialogs without composition|david.nolden.kdevelop@art-master.de|David Nolden}}&lt;br /&gt;
{{FeatureInProgress|Plasmaclock library|Context menu for fast copying date and time strings to clipboard|emdeck@gmail.com|Michał Dutkiewicz}}&lt;br /&gt;
{{FeatureInProgress|Plasmaclock/Calendar|Display various information on the calendar using kholiday/akonadi|?|?}}&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KWin - Core&lt;br /&gt;
{{FeatureTodo|KWin|Redesign KWin system settings GUI|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureTodo|KWin|ARGB support for decorations|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureInProgress|KWin|Window docking/quick tiling|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureTodo|KWin|Internal desktop layout/pager support|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureInProgress|KWin|Non-composited Present Windows|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureInProgress|KWin|Tabbox improvements|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureTodo|KWin/Plasma|Toggle Compositing Plasmoid|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KWin - Desktop Effects&lt;br /&gt;
{{FeatureTodo|KWin|Expand present windows into other effects (E.g. Desktop Grid)|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureTodo|KWin|OpenGL 3 compatible Shaders|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureTodo|KWin|Improved cube reflection|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureInProgress|KWin|Add and remove desktops in grid effect|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureTodo|KWin|Desktop Thumnails in Pager Tooltips|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureTodo|KWin|Slide In/Out effect|hein@kde.org|Eike Hein}}&lt;br /&gt;
{{FeatureDone|KWin|Fade desktop effect (Desktop switcher)|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureInProgress|KWin|Highlight window effect|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureInProgress|KWin|SlideBack effect|michael_zanetti@gmx.net|Michael Zanetti}}&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KDM&lt;br /&gt;
{{FeatureTodo|KDM|Plasma wallpaper|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdepimlibs =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|Buildsystem|Require OpenLDAP (coordinate with the Windows team)|winter@kde.org|Allen Winter}}&lt;br /&gt;
{{FeatureTodo|Buildsystem|Require Cyrus-SASL (coordinate with the Windows team)|winter@kde.org|Allen Winter}}&lt;br /&gt;
{{FeatureTodo|libkleopatraclient|New interface library for kleopatra uiserver clients|marc@kdab.net|Marc Mutz}}&lt;br /&gt;
{{FeatureTodo|pimtextedit|New library around text edits, to provide support for inline images in the signature editor, among others|mcguire@kde.org|Thomas McGuire}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdenetwork =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|Kopete|UPnp Support|mattr@kde.org|Matt Rogers}}&lt;br /&gt;
{{FeatureDone|Kopete|Updated contact list interface (uses Qt 4 rather than Qt 3)|mattr@kde.org|Matt Rogers}}&lt;br /&gt;
{{FeatureTodo|Kopete|Update Kopete to better support Decibel|kopete-devel@kde.org|Kopete Developers}}&lt;br /&gt;
{{FeatureTodo|Kopete|Jabber Jingle video support|detlev.casanova@gmail.com|Detlev Casanova}}&lt;br /&gt;
{{FeatureTodo|Kopete|Jabber Jingle ICE support|detlev.casanova@gmail.com|Detlev Casanova}}&lt;br /&gt;
{{FeatureInProgress|Kopete|Contacts plasmoid|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Kopete|Rich text support for ICQ|kedgedev@gmail.com|Roman Jarosz}}&lt;br /&gt;
{{FeatureTodo|Kopete|Add support for urls to Bonjour plugin|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureInProgress|KGet|MultiSource-Downloading|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureTodo|KGet|Support mms://-protocol, see https://launchpad.net/libmms|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureTodo|KGet|MLDonkey-Plugin based on libkmldonkey|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureTodo|KGet|Advanced Details|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureInProgress|KRDC|NX support|gdavid.devel@gmail.com|David Gross}}&lt;br /&gt;
{{FeatureTodo|KRDC|Minimal-clutter mode to optimize screen real estate usage|gpothier@gmail.com|Guillaume Pothier}}&lt;br /&gt;
{{FeatureInProgress|Telepathy|Telepathy-specification compliant Account Manager using KWallet to store account data|grundleborg@googlemail.com|George Goldberg}}&lt;br /&gt;
{{FeatureInProgress|Telepathy|Account Editing UI for Telepathy|grundleborg@googlemail.com|George Goldberg}}&lt;br /&gt;
{{FeatureInProgress|Plasma|Network Manager Applet|wstephenson@kde.org|Will Stephenson}}&lt;br /&gt;
{{FeatureTodo|network:/ KIOSlave|Move into kdenetwork module|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdepim =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|Akonadi|Migration of contacts and calendar data from KResource to Akonadi ([http://techbase.kde.org/Projects/PIM/Akonadi#Scheduled_for_4.3 Details])|kde-pim@kde.org|Volker Krause, Kevin Krammer, Tobias Koenig}}&lt;br /&gt;
{{FeatureInProgress|Akregator|Support for syncing the feed list with Google Reader |osterfeld@kde.org|Frank Osterfeld}}&lt;br /&gt;
{{FeatureDone|[http://www.astrojar.org.uk/kalarm KAlarm]|Add export of alarms to a new calendar file|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|[http://www.astrojar.org.uk/kalarm KAlarm]|Allow configuration of default deferral time interval|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|[http://www.astrojar.org.uk/kalarm KAlarm]|Accept drag-and-drop of Todo entries to create a new alarm|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|[http://www.astrojar.org.uk/kalarm KAlarm]|Show command execution error indication in alarm list|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|[http://www.astrojar.org.uk/kalarm KAlarm]|Add option to spread alarm windows across screen|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|Akonadi|Google calendar and contacts resource|cavalcantii@gmail.com|Adenilson Cavalcanti}}&lt;br /&gt;
{{FeatureTodo|[http://www.astrojar.org.uk/kalarm KAlarm]|Port to Akonadi|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureTodo|[http://kblogger.pwsp.net KBlogger]|KBlogger, a blogging application|christian_weilbach@.web.de|Christian Weilbach}}&lt;br /&gt;
{{FeatureTodo|KBlogger|Port to use KRichTextEdit (Or KMEditor)|steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureInProgress|KContactManager|A new Akonadi-based address book to replace KAddressbook|tokoe@kde.org|Tobias Koenig}}&lt;br /&gt;
{{FeatureInProgress|Kjots| Create and port to akonadi model. |steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureTodo|Kjots| Add support for nepomuk including tagging, possibly storage, and linking. Also a nepomuk tag proxy model for representing the structure as tagged.|steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureInProgress|Kjots| Create plasmoid capable of showing the entire tree, or a single book.|steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureTodo|Kjots| Email KJots pages using default mail client ({{bug|124509}}. |steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureInProgress|Kleopatra|OpenPGP support|marc@kdab.net|Marc Mutz (Gpg4win)}}&lt;br /&gt;
{{FeatureDone|KMail|Add support for HTML images|yez@familieschepers.nl|Edwin Schepers}}&lt;br /&gt;
{{FeatureTodo|KMail|Use asynchronous Kleo|marc@kdab.net|Marc Mutz}}&lt;br /&gt;
{{FeatureTodo|KMail|Save metadata about attachments to Nepomuk when saving them|onurf@su.sabanciuniv.edu|Ismail Onur Filiz}}&lt;br /&gt;
{{FeatureTodo|KNode|Port to use KRichTextEdit (Or KMEditor)|steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureTodo|Kontact|Support for Kontact wide profiles|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureTodo|Kontact|Tip-of-the-Day summary|molkentin@kde.org|Daniel Molkentin}}&lt;br /&gt;
{{FeatureTodo|KOrganizer|Support for extended free-busy lists|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureInProgress|KPilot|Port old conduits to new base conduit architecture and KDE4/Qt4|jkasper@kde.org|Jason 'vanRijn' Kasper}}&lt;br /&gt;
{{FeatureInProgress|KPilot|Finish Keyring conduit, base conduit code and test cases, category syncing|jkasper@kde.org|Jason 'vanRijn' Kasper}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeutils =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|printer-applet|Restore feature parity with KDEPrint3 where possible.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureTodo|Okteta|add editing capability to Decoding table |kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add Kate-like search tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for import by drop, both url and data|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|copy again puts also a value or char variant of the data to clipboard|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for memory mapping of files|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add further export formats like s-record and intel 16|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for jobs like io, printing, string search or filter|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Make dialogs for Goto, Search &amp;amp; Replace embedded|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add Okular like embedded notifications|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add hash calculator tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks and other view settings for next load|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Show tooltip over bookmarks|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureInProgress|Okteta|Add filesystem browser tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureInProgress|Okteta|Add loaded documents tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Show selection range in status bar|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add global toggle option for the offset display, hex or decimal|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Make the Okteta KPart use libkakao, and rename libkakao|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|kwalletmanager|Move kwalletmanager to the Model/View architecture and redesign the UI.|lemma@confuego.org|Michael Leupold}}&lt;br /&gt;
{{FeatureInProgress|kdelirc|Bring back kdelirc|michael_zanetti@gmx.net|Michael Zanetti}}&lt;br /&gt;
{{FeatureTodo|ark|Improve support for pure gzip and bzip2 files|kubito@gmail.com|Raphael Kubo da Costa}}&lt;br /&gt;
{{FeatureInProgress|ark| Finish the cliinterface  |haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureTodo|ark| Add lots of more meaningful error messages  |haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureTodo|ark| Add support for ACE archives  |haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureTodo|ark| Add support for zip archives (cli-based, ie. info-zip) |haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureDone|ark| Make the mimetype selection dialog more user-friendly |kubito@gmail.com|Raphael Kubo da Costa}}&lt;br /&gt;
{{FeatureTodo|KGpg| Port to new systray framework |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureTodo|KGpg| Clean up editor GUI and classes |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureTodo|KGpg| Make keyserver operations more flexible |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureInProgress|KGpg| Port key importing to be a transaction |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureTodo|KGpg| Port keyserver query to be a transaction |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureTodo|KGpg| Make &amp;quot;import key&amp;quot; also work with keyservers |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureTodo|KGpg| Integrate solid to know when a online action (e.g. keyserver query) does not make sense |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureInProgress|KTimer| Redesign UI |zahl@transbay.net|A. L. Spehr}}&lt;br /&gt;
{{FeatureTodo|KTimer| Add hours and seconds to counter |zahl@transbay.net|A. L. Spehr}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebindings =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|krossjava|Integrate into e.g. SuperKaramba and fix issues that show up.|mail@dipe.org|Sebastian Sauer}}&lt;br /&gt;
{{FeatureTodo|krossjava|Documentation++|mail@dipe.org|Sebastian Sauer}}&lt;br /&gt;
{{FeatureTodo|krossfalcon|Documentation++|mail@dipe.org|Sebastian Sauer}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdegames =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|libkdegames|Convert old PNG based card decks to SVG with embedded bitmaps.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Add Curse of the Mummy game (20 levels), contributed by Steve Mann.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureInProgress|KGoldrunner|Major rewrite, mainly of the game engine and editor.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureInProgress|KGoldrunner|More accurate and reliable pause and resume.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureTodo|KGoldrunner|Save and reload at any instant in a game.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureTodo|KGoldrunner|Record and replay games.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureTodo|KGoldrunner|Run demos ... especially at startup or as hints for difficult levels.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureTodo|KGoldrunner|Hot-new-stuff support for themes and game sets.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureTodo|KGoldrunner|Integration of the Scavenger game (180 new levels) and its rule-set.  This would also involve allowing different grid dimensions for different games, as a feature of the new game engine.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureTodo|KGoldrunner|Better support for beginners, such as graphical cues for false bricks and hidden ladders, extra messages with &amp;quot;don't tell me this again&amp;quot;, etc.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureInProgress|Killbots|Add &amp;quot;sonic screwdriver&amp;quot; functionality.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureTodo|Killbots|Add a tutorial for beginners.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureTodo|Kolf|Replace with Kolf 2 (please help!)|majewsky@gmx.net|Stefan Majewsky}}&lt;br /&gt;
{{FeatureDone|KPatience|Add a command line switch to manually launch a game of a certain type.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureDone|KPatience|Add an option to save the game state at shutdown to be automatically be restored on next run.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureDone|KPatience|Add the ability to return to the game selection screen after selecting a game.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureInProgress|KPatience|Add a &amp;quot;Deal&amp;quot; action to those game types that support dealing cards from the deck into play.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureTodo|KsirK|rewrite AI code or at least correct most problems related in bug #170777. Volunteers wanted!|kleag@free.fr|Gaël de Chalendar}}&lt;br /&gt;
{{FeatureTodo|KsirK|Previous/Next in start new game as described in bug #170774|kleag@free.fr|Gaël de Chalendar}}&lt;br /&gt;
{{FeatureTodo|KsirK|Polish the skin editor (doc, contextual help, ...)|kleag@free.fr|Gaël de Chalendar}}&lt;br /&gt;
{{FeatureTodo|KsirK|Boost playing over Jabber|kleag@free.fr|Gaël de Chalendar}}&lt;br /&gt;
{{FeatureTodo|KSpaceDuel|rewrite AI code|dirkrathlev@gmx.de|Dirk Rathlev}}&lt;br /&gt;
{{FeatureDone|ktron|Port and remake the KTron game for KDE 4.3|legolas@legolasweb.nl|Stas Verberkt}}&lt;br /&gt;
{{FeatureTodo|KSudoku|Import the new logic engine as a library|joselb@gmx.net|Johannes Bergmeier}}&lt;br /&gt;
{{FeatureTodo|KSudoku|Port KSudoku to the new engine|joselb@gmx.net|Johannes Bergmeier}}&lt;br /&gt;
{{FeatureTodo|KSudoku|Add interactive help|joselb@gmx.net|Johannes Bergmeier}}&lt;br /&gt;
{{FeatureDone|Bovo|Add new AI|pelladigabor@gmail.com|Pelladi Gabor}}&lt;br /&gt;
{{FeatureDone|Bovo|Computer thinking doesn't block the GUI|pelladigabor@gmail.com|Pelladi Gabor}}&lt;br /&gt;
{{FeatureTodo|libkdegames|Import KGGZ libraries from GGZ SVN|spillner@kde.org|Josef Spillner}}&lt;br /&gt;
{{FeatureInProgress|libkmahjongg|Introduce new tileset, Bamboo.|mw_triad@users.sourceforge.net|Matthew Woehlke}}&lt;br /&gt;
{{FeatureDone|KMahjongg|Add 70 additional levels contributed by users|piacentini at kde.org|Mauricio Piacentini}}&lt;br /&gt;
{{FeatureTodo|KMahjongg|Add start page with level selection|piacentini at kde.org|Mauricio Piacentini}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeadmin =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|KGrubEditor|Integrate KGrubEditor into KDE Admin http://sourceforge.net/projects/kgrubeditor. Approved by Nicolas Ternisien &amp;lt;nicolas.ternisien@gmail.com&amp;gt; |artemis_dot_fowl_dot_2007@gmail_dot_com|Konstantinos Smanis}}&lt;br /&gt;
{{FeatureTodo|Guidance|Port Guidance to KDE 4, and move it to KDE Admin http://www.simonzone.com/software/guidance/.|nicolas.ternisien@gmail.com|Nicolas Ternisien}}&lt;br /&gt;
{{FeatureTodo|system-config-printer-kde|Restore feature parity with KDEPrint3 where possible.|john@layt.net|john Layt, Jonathan Riddell}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdesdk =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|Lokalize|XLIFF support|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureInProgress|Lokalize|various Translation Memory enhancements|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureInProgress|Lokalize|Kross-based scripting|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureTodo|Lokalize|QA: glossary checklists|shafff-at-ukr.net|Nick Shaforostoff}}&lt;br /&gt;
{{FeatureTodo|KAppTemplate|Add DBUS support in templates|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureDone|Umbrello|Replace all q3 widgets in the refactoring assistant|andi.fischer@hispeed.ch|Andi Fischer}}&lt;br /&gt;
{{FeatureInProgress|Umbrello|Merge in SoC qgraphicsview port branch|krishna.ggk@gmail.com|Gopala Krishna A}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeedu =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|KAlgebra|Export to MathML Presentation Markup|aleixpol@gmail.com|Aleix Pol}}&lt;br /&gt;
{{FeatureTodo|KAlgebra|Some integration with the new KFormula widget|aleixpol@gmail.com|Aleix Pol}}&lt;br /&gt;
{{FeatureInProgress|KAlgebra|Add ability to draw 3D plots in cylindrical and spherical coordinates.|orgyforever@gmail.com|Percy Camilo Triveño Aucahuasi}}&lt;br /&gt;
{{FeatureTodo|Kalzium|Port Kalzium's periodic table to use new QGraphicsView.|marcus@cryos.org|Marcus D. Hanwell}}&lt;br /&gt;
{{FeatureTodo|Kalzium|Separate compound viewer/editor application from Kalzium.|marcus@cryos.org|Marcus D. Hanwell}}&lt;br /&gt;
{{FeatureTodo|Kalzium|Remove the libavogadro snapshot, depend on libavogadro directly.|jacob@math.jussieu.fr|Benoit Jacob}}&lt;br /&gt;
{{FeatureTodo|Kalzium|Plasmoid to access Kalzium database|cniehaus@kde.org|Carsten Niehaus}}&lt;br /&gt;
{{FeatureTodo|KEduca|Rewrite of the classic test writing/taking application|matt@milliams.com|Matt Williams}}&lt;br /&gt;
{{FeatureTodo|KHangMan|Integrate an editor|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KHangMan|Plasmoid|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KHangMan|Theme manager|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|Kig|Properties dialog for objects.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Kig|Improve construction of bisect lines.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Kig|Improve feedback when constructing objects.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Kig|More geometric objects.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Kig|Script objects as macros (to be reused more than once).|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Kig|Improve the Cabri import filter.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Kig|Improve the new/edit script wizard.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|KLettres|Visual Indicator when letter is wrong|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KLettres|Number support|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KLettres|Theme manager|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|KStars|Marble widget for Geolocation tool|mboquien@free.fr|Médéric Boquien}}&lt;br /&gt;
{{FeatureTodo|KStars|Better printed star charts|kstars@30doradus.org|Jason Harris}}&lt;br /&gt;
{{FeatureTodo|KStars|Sync KStars time from device|mutlaqja@ikarustech.com|Jasem Mutlaq}}&lt;br /&gt;
{{FeatureTodo|KStars|Better rendering of comets/asteroids|kstars@30doradus.org|Jason Harris}}&lt;br /&gt;
{{FeatureTodo|KStars|Texture mapping of the skymap???|kstars@30doradus.org|Jason Harris}}&lt;br /&gt;
{{FeatureTodo|KStars|Improve Observing List Wizard|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Display Comet Magnitudes whenever possible|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Information links in-place for each technical term|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Tool to suggest star-hopping techniques???|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Extend conjunction tool to have one object unspecified, but have a genre of objects specified instead|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Extend conjunction tool to predict oppositions and occultations|prak902000@gmail.com|Prakash Mohan}}&lt;br /&gt;
{{FeatureTodo|KStars|Simulate Lunar Eclipses|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Simulate Satellites and Iridium Flares|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Social and Geographical Integration for KStars|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KStars|Merge SAC with NGC / IC as default catalog|akarshsimha@gmail.com|Akarsh Simha}}&lt;br /&gt;
{{FeatureTodo|KTurtle|Optional rulers/grid for canvas units|piacentini@kde.org|Mauricio Piacentini}}&lt;br /&gt;
{{FeatureTodo|Marble|Export map to MxN pixel bitmap|inge@lysator.liu.se|Inge Wallin}}&lt;br /&gt;
{{FeatureTodo|Marble|Bookmarks|inge@lysator.liu.se|Inge Wallin}}&lt;br /&gt;
{{FeatureTodo|Marble|Support for MarbleWidget::setEnabled( bool )|inge@lysator.liu.se|Inge Wallin}}&lt;br /&gt;
{{FeatureTodo|Marble|Map Contents translation|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Editing GeoDataFeatures|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Update Map (&amp;quot;F5&amp;quot;)|jensmh@gmx.de|Jens-Michael Hoffmann}}&lt;br /&gt;
{{FeatureInProgress|Marble|Layer Management Class|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Plugin architecture for map layers|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Extending GeoPainter|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Marble Runners|hdevalence@gmail.com|Henry de Valence}}&lt;br /&gt;
{{FeatureInProgress|Marble|GeoClue Integration |jensmh@gmx.de|Jens-Michael Hoffmann}}&lt;br /&gt;
{{FeatureInProgress|Marble|Routing |jensmh@gmx.de|Jens-Michael Hoffmann}}&lt;br /&gt;
{{FeatureInProgress|Marble|More map providers (WMS?) |jensmh@gmx.de|Jens-Michael Hoffmann}}&lt;br /&gt;
{{FeatureInProgress|Marble|Winkel Triple projection / equivalent |hdevalence@gmail.com|Henry de Valence}}&lt;br /&gt;
{{FeatureInProgress|Marble|Marble WorldClock Plasmoid|hdevalence@gmail.com|Henry de Valence}}&lt;br /&gt;
{{FeatureDone|Marble|Qt-Version settings dialog|hdevalence@gmail.com|Henry de Valence}}&lt;br /&gt;
{{FeatureInProgress|Marble|Panoramio Support||Shashank Singh}}&lt;br /&gt;
{{FeatureInProgress|Marble|Twitter Plugin||Shashank Singh}}&lt;br /&gt;
{{FeatureInProgress|Marble|TimeZone Support|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureDone|Marble|Support for other planets and the moon|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureDone|Marble|DGML2 Support|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureDone|Marble|Support for imperial units|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Graticule plugin|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|MeasureTool plugin|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureDone|Marble|Port authors list from the Qt-About dialog to the KDE-About dialog|tackat@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Basic KML support|ps_ml@gmx.de|Patrick Spendrin}}&lt;br /&gt;
{{FeatureInProgress|Marble|GeoData Model/View Visualization|ps_ml@gmx.de|Patrick Spendrin}}&lt;br /&gt;
{{FeatureInProgress|Marble|More generic projection support|inge@lysator.liu.se|Inge Wallin}}&lt;br /&gt;
{{FeatureInProgress|Marble|Network plugins|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Marble|Geolocation plugins|ewoerner@kde.org|Eckhart Wörner}}&lt;br /&gt;
{{FeatureInProgress|Parley|Declensions|frederik.gladhorn@kdemail.net|Frederik Gladhorn}}&lt;br /&gt;
{{FeatureTodo|Step|Improve GUI for creating softbody|ksvladimir@gmail.com|Vladimir Kuznetsov}}&lt;br /&gt;
{{FeatureTodo|Step|Use common constraints handling code for collisions|ksvladimir@gmail.com|Vladimir Kuznetsov}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdemultimedia =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|JuK|Remove Qt/KDE3 support lib requirements|michael.pyne@kdemail.net|Michael Pyne}}&lt;br /&gt;
{{FeatureTodo|JuK|Allow setting covers directly from URLs supported by KIO - drag/drop already allows this however|michael.pyne@kdemail.net|Michael Pyne}}&lt;br /&gt;
{{FeatureDone|JuK|Use XCOMPOSITE real transparency when available for the track announcement popup|michael.pyne@kdemail.net|Michael Pyne}}&lt;br /&gt;
{{FeatureTodo|JuK|Allow disabling crossfade|michael.pyne@kdemail.net|Michael Pyne}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeaccessibility =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdegraphics =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|Okular|Generator for Mobipocket format|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureDone|strigi|Thumbnailer and analyzer for Mobipocket format|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureDone|strigi|Analyzer for epub format|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureTodo|Okular|Sound annotations.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Okular|Link annotations.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Okular|Caret annotations.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Okular|Support .snp and .emf file formats|bradh@kde.org|Brad Hards}}&lt;br /&gt;
{{FeatureTodo|Okular|Synctex support.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Okular|Rich-text for annotations text.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|kruler|More ruler shapes.|msoeken_at_tzi_dot_de|Mathias Soeken}}&lt;br /&gt;
{{FeatureDone|kruler|Configurable shortcuts.|msoeken_at_tzi_dot_de|Mathias Soeken}}&lt;br /&gt;
{{FeatureTodo|kruler|DBUS Interface.|msoeken_at_tzi_dot_de|Mathias Soeken}}&lt;br /&gt;
{{FeatureDone|kruler|Transparent background and opaque drawing of the lines and numbers (Qt 4.5).|msoeken_at_tzi_dot_de|Mathias Soeken}}&lt;br /&gt;
{{FeatureInProgress|gwenview|Folder view.|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureInProgress|gwenview|Make thumbnail bar more customizable (orientation, number of rows/columns).|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureInProgress|gwenview|Add back video support.|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureInProgress|gwenview|Improve history handling.|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureDone|libksane|Add &amp;quot;Auto selection&amp;quot; after preview.|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureInProgress|Okular|Less intrusive search with find bar.|pino@kde.org|Pino Toscano}}&lt;br /&gt;
{{FeatureTodo|Okular|Better detection of where the Okular KPart is embedded into, and adapt the UI accordingly (sidebar, actions, etc).|pino@kde.org|Pino Toscano}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-runtime =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|drkonqi|DrKonqi new dialog UI + Guided crash reporting tool|andresbajotierra@gmail.com|Dario Andres|}}&lt;br /&gt;
{{FeatureInProgress|drkonqi|Backtrace parsing and rating|gkiagiad@csd.uoc.gr|George Kiagiadakis|}}&lt;br /&gt;
{{FeatureTodo|drkonqi|DrKonqi native english texts + guide|andresbajotierra@gmail.com|Dario Andres|}}&lt;br /&gt;
{{FeatureInProgress|kpasswdserver|Fix D-Bus timeout in kpasswdserver using an async API|lemma@confuego.org|Michael Leupold}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-apps =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|konq_thumbnails|Basic thumbnail support for KHTMLPart views(almost finished, now cleanup code)|yinshuiboy@gmail.com|Siyuan Cao}}&lt;br /&gt;
{{FeatureTodo|konq_thumbnails|thumbnail support for all KonqFrame|yinshuiboy@gmail.com|Siyuan Cao}}&lt;br /&gt;
{{FeatureTodo|konq_thumbnails|more thumbnail page styles and customization|yinshuiboy@gmail.com|Siyuan Cao}}&lt;br /&gt;
{{FeatureTodo|konqueror|&amp;quot;Places&amp;quot; sidebar to replace KDE3's &amp;quot;media:/&amp;quot;|kdedevel_at_etotheipiplusone_dot_com|Simon St James}}&lt;br /&gt;
{{FeatureTodo|konqueror|Move Dolphin's Treeview to libkonq so that it can be used in Konqueror|kdedevel_at_etotheipiplusone_dot_com|Simon St James}}&lt;br /&gt;
{{FeatureTodo|konqueror|Move Dolphin's Information panel to libkonq so that it can be used in Konqueror|kdedevel_at_etotheipiplusone_dot_com|Simon St James}}&lt;br /&gt;
{{FeatureInProgress|dolphin|Matthias's Audio/ Video preview in Information panel|kdedevel_at_etotheipiplusone_dot_com|Simon St James}}&lt;br /&gt;
{{FeatureTodo|dolphin|Allow to configure and download service menus|peter.penz@gmx.at|Peter Penz}}&lt;br /&gt;
{{FeatureInProgress|dolphin|Nepomuk search integration|peter.penz@gmx.at|Peter Penz}}&lt;br /&gt;
{{FeatureInProgress|dolphin|Use Nepomuk to receive the meta data for the Information panel|peter.penz@gmx.at|Peter Penz}}&lt;br /&gt;
{{FeatureInProgress|dolphin|Let user choose if folders are always shown first or not|frank78ac@googlemail.com|Frank Reininghaus}}&lt;br /&gt;
{{FeatureInProgress|konsole|Get a working DBus interface|kurt.hindenburg@gmail.com|Kurt Hindenburg}}&lt;br /&gt;
{{FeatureTodo|konsole|Redesign manage profile dialog to allow users to sort profiles|kurt.hindenburg@gmail.com|Kurt Hindenburg}}&lt;br /&gt;
{{FeatureTodo|konsole|Allow window/terminal size to be set in profiles|kurt.hindenburg@gmail.com|Kurt Hindenburg}}&lt;br /&gt;
{{FeatureInProgress|libkonq|Add support in for pluginbased Drag'n'drop popup menus (and in my case, an &amp;quot;extract here&amp;quot; menu on dragged archives)|haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureInProgress|konqueror|History browser as independent from sidebar, and improved (different grouping style, sorting, etc).|pino@kde.org|Pino Toscano}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeplasma-addons =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Video Plasmoid|a media player widget complete with a basic dbus interface|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureDone|System Load Viewer|A tiny monitor for CPU, RAM and swap usage (known as System Monitor in KDE3)|dhaumann@kde.org|Dominik Haumann}}&lt;br /&gt;
{{FeatureInProgress|Comic Plasmoid|Clean up the config-dialog|mat69@gmx.net|Matthias Fuchs}}&lt;br /&gt;
{{FeatureTodo|Comic Plasmoid|Port to popup applet|mat69@gmx.net|Matthias Fuchs}}&lt;br /&gt;
{{FeatureTodo|PoTD Engine|Import PoTD engine|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|Metadata Engine|Import Metadata engine|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|Frame Plasmoid|Display Picture Metadata|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|Frame Plasmoid|Add url as setting|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureTodo|Frame Plasmoid|Add buttons Next/Previous/pause in slideshow mode|annma@kde.org|Anne-Marie Mahfouf}}&lt;br /&gt;
{{FeatureDone|wallpapers|Mandelbrot fractal wallpaper plugin|jacob.benoit.1@gmail.com|Benoît Jacob}}&lt;br /&gt;
{{FeatureInProgress|Weather Wallpaper|Add user-defined wallpapers|echidnaman@kubuntu.org|Jonathan Thomas}}&lt;br /&gt;
{{FeatureInProgress|wallpapers|Marble desktop globe wallpaper|sasch.pe@gmx.de|Sascha Peilicke}}&lt;br /&gt;
{{FeatureTodo|FileWatcher|Highlighting support|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureTodo|Now Playing|New widget UI|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureTodo|Life|Colors|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureTodo|Life|Fading|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Timer|Restore countdown after a shutdown|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Timer|Improved notifications|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Timer|Hide seconds|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureTodo|Unit converter|Improved widget UI|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|plasmaweather lib|Make plasmaweather library and use it in lcd weather, weather and weather wallpaper|damu@iki.fi|Petri Damstén}}&lt;br /&gt;
{{FeatureDone|LCD Weather|Tooltip|damu@iki.fi|Petri Damstén}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeartwork =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|screensavers|port to wallpaper packages|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Rakuco</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.3_Feature_Plan</id>
		<title>Schedules/KDE4/4.3 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.3_Feature_Plan"/>
				<updated>2009-04-13T05:13:22Z</updated>
		
		<summary type="html">&lt;p&gt;Rakuco: /* kdeutils */ Added a new TODO for ark&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the 4.3 release.&lt;br /&gt;
&lt;br /&gt;
See also:&lt;br /&gt;
* [[Schedules/KDE4/4.3 Release Schedule]]&lt;br /&gt;
* [[Schedules/KDE4/4.3 Release Goals]]&lt;br /&gt;
* [[Schedules/KDE4/4.2 Feature Plan]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Legend:&lt;br /&gt;
* todo =&amp;gt; not started yet&lt;br /&gt;
* in-progress =&amp;gt; started, but not completed yet&lt;br /&gt;
* done =&amp;gt; completed&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
= Other =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|Akonadi|Various Akonadi related items can be found here http://techbase.kde.org/Projects/PIM/Akonadi#Scheduled_for_KDE_4.3_.2F_Akonadi_1.2|kde-pim@kde.org|Akonadi Developers}}&lt;br /&gt;
{{FeatureInProgress|KPackageKit|Pushing in KPackageKit (dependant on PolicyKit integration)|dantti85-dev@yahoo.com.br|Daniel}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdelibs =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|KLocale|Investigate adding Currency Code and currency minor units support based on ISO 4217 (http://en.wikipedia.org/wiki/ISO_4217).|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureDone|kdecore|Thread safety in ksycoca (KService, KMimeType etc.)|faure:AT:kde.org|David Faure}}&lt;br /&gt;
{{FeatureTodo|kdecore|Dynamic allocation of KDebug areas|faure:AT:kde.org|David Faure}}&lt;br /&gt;
{{FeatureInProgress|Sonnet|Implement language detection|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureInProgress|Sonnet|Integrate language detection with spellchecking|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureTodo|Sonnet|Integrate language detection with strigi|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureTodo|Sonnet|Grammar checking (at least for English)|qbast@go2.pl|Jakub Stachowski}}&lt;br /&gt;
{{FeatureInProgress|kio|Move KTcpSocket to kio and make it public; some cleanup required|ahartmetz@gmail.com|Andreas Hartmetz}}&lt;br /&gt;
{{FeatureTodo|KCalendarSystem|Add new astronomical calculation support classes to be used in kdelibs to build new astronomically based calendar systems, and in kdepim to build new version of libkholiday.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureTodo|KCalendarSystem|Add new calendar systems: Indian Civil (Saka), Ethiopean, Chinese, Pure Julian, Pure Gregorian, etc.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureTodo|KDEPrint|If no file printing support in Qt4.5, migrate FilePrinter class from Okular to enable file printing for all apps via QPrinter.  To be discussed on k-c-d first.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureTodo|KDEPrint|Add framework for standard actions for 'Send to...' for e-mail, fax, etc by printing to PDF/PS.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureTodo|kdeui|entries to help menu and aboutdata pointing to UserBase entry and forum.kde.org|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|kdesu|Classes to help kde-apps open ports in the local firewall (via IPTables/IPFW, etc...)|tejas@gja.in|Tejas Dinkar}}&lt;br /&gt;
{{FeatureInProgress|katepart|Key mapping support for the vi input mode|ehamberg-hjå-gmail.com|Erlend Hamberg}}&lt;br /&gt;
{{FeatureInProgress|katepart|Blockwise visual mode for the vi input mode|ehamberg-hjå-gmail.com|Erlend Hamberg}}&lt;br /&gt;
{{FeatureInProgress|katepart|Improve text objects in the vi input mode|ehamberg-hjå-gmail.com|Erlend Hamberg}}&lt;br /&gt;
{{FeatureTodo|katepart|Save registers and marks from the vi input mode|ehamberg-hjå-gmail.com|Erlend Hamberg}}&lt;br /&gt;
{{FeatureInProgress|kio|Fix D-Bus timeout in SlaveBase when calling kpasswdserver|lemma@confuego.org|Michael Leupold}}&lt;br /&gt;
{{FeatureInProgress|kdeui|Provide a class for detecting modifier keystrokes and locked key states|lemma@confuego.org|Michael Leupold}}&lt;br /&gt;
{{FeatureTodo|khtml|CSS3 Web Fonts|germain@ebooksfrance.org|Germain Garand}}&lt;br /&gt;
{{FeatureTodo|khtml|support more properties from CSS3 Backgrounds and Borders module|germain@ebooksfrance.org|Fredrik Höglund and/or Germain Garand}}&lt;br /&gt;
{{FeatureInProgress|khtml|support more properties from CSS3 Text module|germain@ebooksfrance.org|Germain Garand}}&lt;br /&gt;
{{FeatureInProgress|solid|Smart card reader support|cblauvelt@gmail.com|Christopher Blauvelt}}&lt;br /&gt;
{{FeatureTodo|KEmoticons|emit a signal when the emoticon theme is changed|brandon.ml@gmail.com|Carlo Segato}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebase-workspace =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |Non-Plasma, Non-KWin&lt;br /&gt;
{{FeatureTodo|Kxkb|Support for languages in keyboard layout descriptions|rysin:AT:kde.org|Andriy Rysin}}&lt;br /&gt;
{{FeatureDone|PolicyKit integration|Import PolicyKit-KDE from extragear|drf54321@gmail.com|Dario Freddi}}&lt;br /&gt;
{{FeatureDone|Solid Actions KCM|Import Solid actions KControl module from playground|ben@eclipse.endoftheinternet.org|Ben Cooksley}}&lt;br /&gt;
{{FeatureTodo|KControl4|Import refactor of systemsettings with Tree and Icon view support|ben(at)eclipse(dot)endoftheinternet(dot)org|Ben Cooksley and Mathias Soeken}}&lt;br /&gt;
{{FeatureDone|KSysguard|Added GetHotNewStuff support|a@b.com|name}}&lt;br /&gt;
{{FeatureInProgress|KActiveEdges|Split active screen edges from KWin|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureInProgress|Solid Wicd Engine|Import Solid Wicd engine from github/playground|drf54321@gmail.com|Dario Freddi}}&lt;br /&gt;
{{FeatureDone|Klipper|Made klipper automatically find possible actions based on filename copied to clipboard|dimsuz@gmail.com|Dmitry Suzdalev}}&lt;br /&gt;
{{FeatureDone|Klipper|Improved action adding/editing workflow by implementing a special dialog for editing a certain action|dimsuz@gmail.com|Dmitry Suzdalev}}&lt;br /&gt;
{{FeatureTodo|Klipper|Make action popup unobtrusive by showing menu only when user clicks an icon in systray. Icon itself should change to indicate availability of some actions on current clipboard|dimsuz@gmail.com|Dmitry Suzdalev}}&lt;br /&gt;
{{FeatureTodo|Font Installer KCM |Use PolicyKit for installtion of system-wide fonts.|craig@kde.org|Craig Drummond}}&lt;br /&gt;
{{FeatureInProgress|Font Settings KCM|Improved GUI for configuring anti-aliasing settings|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KRunner&lt;br /&gt;
{{FeatureInProgress|Nepomuk/Location Runners|Open with and service menu actions|ryan.bitanga@gmail.com|Ryan Bitanga}}&lt;br /&gt;
{{FeatureTodo|KRunner|Simple adaptive search|ryan.bitanga@gmail.com|Ryan Bitanga}}&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |Plasma - Priority Features&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |Plasma&lt;br /&gt;
{{FeatureTodo|Now Playing data engine|Support for MPD|kde:AT:randomguy3.me.uk|Alex Merry}}&lt;br /&gt;
{{FeatureDone|Classic Menu Launcher|Optional recently used applications and System Settings menu|mail:AT:dipe.org|Sebastian Sauer}}&lt;br /&gt;
{{FeatureDone|Classic Menu Launcher|KDE3-like menu titles|mail:AT:dipe.org|Christian Loose}}&lt;br /&gt;
{{FeatureDone|Classic Menu Launcher|Context menu for menu items|mail:AT:dipe.org|Christian Loose}}&lt;br /&gt;
{{FeatureInProgress|Reusable video widget|A widget in libplasma that can play video and audio|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|Message box|A message box shown as an overlay over plasmoids|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureTodo|Panel spacers|A way to add/manage spacers directly from the panel controller|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|Systemtray protocol|New systemtray protocol beginnings: daemon and systemtray widget part|notmart@gmail.com|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|Default theme|Air: new default Plasma theme|notmart@gmail.com|Marco Martin and Nuno Pinheiro}}&lt;br /&gt;
{{FeatureInProgress|screensaver|security constraints|chanika@gmail.com|Chani}}&lt;br /&gt;
{{FeatureInProgress|keyboard shortcuts|configuration|chanika@gmail.com|Chani}}&lt;br /&gt;
{{FeatureTodo|icon plasmoid|make it suck less|chanika@gmail.com|Chani}}&lt;br /&gt;
{{FeatureTodo|desktop|make a plasmoid when I paste stuff|chanika@gmail.com|Chani}}&lt;br /&gt;
{{FeatureInProgress|extenders|Add grouping support to extenders|r.scheepmaker@student.utwente.nl|Rob Scheepmaker}}&lt;br /&gt;
{{FeatureInProgress|systemtray|Group multiple jobs and notifications|r.scheepmaker@student.utwente.nl|Rob Scheepmaker}}&lt;br /&gt;
{{FeatureTodo|systemtray|Job completed notifications, providing an sensible action ('open file' etc)|r.scheepmaker@student.utwente.nl|Rob Scheepmaker}}&lt;br /&gt;
{{FeatureInProgress|Kickoff|Add multiple columns support to Kickoff|talvik@gmail.com|Luiz Felipe Talvik}}&lt;br /&gt;
{{FeatureDone|folderview|Show tooltips with large previews and file metadata when hovering icons|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureDone|folderview|Show a popup view with the folder contents when hovering a folder in the icon view|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureDone|folderview|Add menu items to the context menu for showing the applet browser, adding panels, locking the screen, logging out etc.|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|folderview|Add menu items to the drop menu for creating applets and setting the wallpaper|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureTodo|folderview|Accessing sub folders as sub menus in the popup view when the applet is on the panel|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureTodo|folderview|Optionally show the window list menu when middle clicking the containment|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureTodo|folderview|Offer to create applets based on the mimetype when pasting URL's in the containment|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|folderview|Implement support for keyboard navigation|jhahoneyk@gmail.com|Shantanu Tushar Jha}}&lt;br /&gt;
{{FeatureDone|virus wallpaper|Move from playground to kdeplasma-addons and port to the new plasma::wallpaper|asraniel@fryx.ch|Beat Wolf}}&lt;br /&gt;
{{FeatureInProgress|Plasma|Add press-down feedback to folderview|haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureDone|Time DataEngine|Integrate solar position dataengine to time dataengine|damu@iki.fi|Petri Damstén}}&lt;br /&gt;
{{FeatureInProgress|Akonadi DataEngine|Move Akonadi dataengine to kdeplasma-addons|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureInProgress|Social Desktop Plasmoid|Plasmoid displaying contacts via OpenDesktop|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureTodo|Knowledge base Plasmoid|Plasmoid for searching and dispaying results from Open Collaboration Services / OpenDesktop|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureInProgress|Plasmaclock library|Context menu for fast copying date and time strings to clipboard|emdeck@gmail.com|Michał Dutkiewicz}}&lt;br /&gt;
{{FeatureInProgress|Plasmaclock/Calendar|Display various information on the calendar using kholiday/akonadi|?|?}}&lt;br /&gt;
&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KWin - Core&lt;br /&gt;
{{FeatureTodo|KWin|Redesign KWin system settings GUI|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureTodo|KWin|ARGB support for decorations|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureInProgress|KWin|Window docking/quick tiling|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureTodo|KWin|Internal desktop layout/pager support|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureInProgress|KWin|Non-composited Present Windows|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureInProgress|KWin|Tabbox improvements|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KWin - Desktop Effects&lt;br /&gt;
{{FeatureTodo|KWin|Expand present windows into other effects (E.g. Desktop Grid)|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureTodo|KWin|OpenGL 3 compatible Shaders|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureTodo|KWin|Improved cube reflection|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureInProgress|KWin|Add and remove desktops in grid effect|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureTodo|KWin|Desktop Thumnails in Pager Tooltips|kde@martin-graesslin.com|Martin Gräßlin}}&lt;br /&gt;
{{FeatureTodo|KWin|Slide In/Out effect|hein@kde.org|Eike Hein}}&lt;br /&gt;
{{FeatureDone|KWin|Fade desktop effect (Desktop switcher)|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureInProgress|KWin|Highlight window effect|lmurray@undefinedfire.com|Lucas Murray}}&lt;br /&gt;
{{FeatureInProgress|KWin|SlideBack effect|michael_zanetti@gmx.net|Michael Zanetti}}&lt;br /&gt;
|- border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center&amp;quot; |KDM&lt;br /&gt;
{{FeatureTodo|KDM|Plasma wallpaper|davide.bettio@kdemail.net|Davide Bettio}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdepimlibs =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|Buildsystem|Require OpenLDAP (coordinate with the Windows team)|winter@kde.org|Allen Winter}}&lt;br /&gt;
{{FeatureTodo|Buildsystem|Require Cyrus-SASL (coordinate with the Windows team)|winter@kde.org|Allen Winter}}&lt;br /&gt;
{{FeatureTodo|libkleopatraclient|New interface library for kleopatra uiserver clients|marc@kdab.net|Marc Mutz}}&lt;br /&gt;
{{FeatureTodo|pimtextedit|New library around text edits, to provide support for inline images in the signature editor, among others|mcguire@kde.org|Thomas McGuire}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdenetwork =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|Kopete|UPnp Support|mattr@kde.org|Matt Rogers}}&lt;br /&gt;
{{FeatureDone|Kopete|Updated contact list interface (uses Qt 4 rather than Qt 3)|mattr@kde.org|Matt Rogers}}&lt;br /&gt;
{{FeatureTodo|Kopete|Update Kopete to better support Decibel|kopete-devel@kde.org|Kopete Developers}}&lt;br /&gt;
{{FeatureTodo|Kopete|Jabber Jingle video support|detlev.casanova@gmail.com|Detlev Casanova}}&lt;br /&gt;
{{FeatureTodo|Kopete|Jabber Jingle ICE support|detlev.casanova@gmail.com|Detlev Casanova}}&lt;br /&gt;
{{FeatureInProgress|Kopete|Contacts plasmoid|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Kopete|Rich text support for ICQ|kedgedev@gmail.com|Roman Jarosz}}&lt;br /&gt;
{{FeatureTodo|Kopete|Add support for urls to Bonjour plugin|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureInProgress|KGet|MultiSource-Downloading|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureTodo|KGet|Support mms://-protocol, see https://launchpad.net/libmms|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureTodo|KGet|MLDonkey-Plugin based on libkmldonkey|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureTodo|KGet|Advanced Details|l.appelhans@gmx.de|Lukas Appelhans}}&lt;br /&gt;
{{FeatureInProgress|KRDC|NX support|gdavid.devel@gmail.com|David Gross}}&lt;br /&gt;
{{FeatureTodo|KRDC|Minimal-clutter mode to optimize screen real estate usage|gpothier@gmail.com|Guillaume Pothier}}&lt;br /&gt;
{{FeatureInProgress|Telepathy|Telepathy-specification compliant Account Manager using KWallet to store account data|grundleborg@googlemail.com|George Goldberg}}&lt;br /&gt;
{{FeatureInProgress|Telepathy|Account Editing UI for Telepathy|grundleborg@googlemail.com|George Goldberg}}&lt;br /&gt;
{{FeatureInProgress|Plasma|Network Manager Applet|wstephenson@kde.org|Will Stephenson}}&lt;br /&gt;
{{FeatureTodo|network:/ KIOSlave|Move into kdenetwork module|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdepim =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureInProgress|Akonadi|Migration of contacts and calendar data from KResource to Akonadi ([http://techbase.kde.org/Projects/PIM/Akonadi#Scheduled_for_4.3 Details])|kde-pim@kde.org|Volker Krause, Kevin Krammer, Tobias Koenig}}&lt;br /&gt;
{{FeatureInProgress|Akregator|Support for syncing the feed list with Google Reader |osterfeld@kde.org|Frank Osterfeld}}&lt;br /&gt;
{{FeatureDone|[http://www.astrojar.org.uk/kalarm KAlarm]|Add export of alarms to a new calendar file|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|[http://www.astrojar.org.uk/kalarm KAlarm]|Allow configuration of default deferral time interval|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|[http://www.astrojar.org.uk/kalarm KAlarm]|Accept drag-and-drop of Todo entries to create a new alarm|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|[http://www.astrojar.org.uk/kalarm KAlarm]|Show command execution error indication in alarm list|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureDone|[http://www.astrojar.org.uk/kalarm KAlarm]|Add option to spread alarm windows across screen|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureTodo|[http://www.astrojar.org.uk/kalarm KAlarm]|Port to Akonadi|djarvie@kde.org|David Jarvie}}&lt;br /&gt;
{{FeatureTodo|[http://kblogger.pwsp.net KBlogger]|KBlogger, a blogging application|christian_weilbach@.web.de|Christian Weilbach}}&lt;br /&gt;
{{FeatureTodo|KBlogger|Port to use KRichTextEdit (Or KMEditor)|steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureInProgress|KContactManager|A new Akonadi-based address book to replace KAddressbook|tokoe@kde.org|Tobias Koenig}}&lt;br /&gt;
{{FeatureInProgress|Kjots| Create and port to akonadi model. |steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureTodo|Kjots| Add support for nepomuk including tagging, possibly storage, and linking. Also a nepomuk tag proxy model for representing the structure as tagged.|steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureInProgress|Kjots| Create plasmoid capable of showing the entire tree, or a single book.|steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureTodo|Kjots| Email KJots pages using default mail client ({{bug|124509}}. |steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureInProgress|Kleopatra|OpenPGP support|marc@kdab.net|Marc Mutz (Gpg4win)}}&lt;br /&gt;
{{FeatureDone|KMail|Add support for HTML images|yez@familieschepers.nl|Edwin Schepers}}&lt;br /&gt;
{{FeatureTodo|KMail|Use asynchronous Kleo|marc@kdab.net|Marc Mutz}}&lt;br /&gt;
{{FeatureTodo|KMail|Save metadata about attachments to Nepomuk when saving them|onurf@su.sabanciuniv.edu|Ismail Onur Filiz}}&lt;br /&gt;
{{FeatureTodo|KNode|Port to use KRichTextEdit (Or KMEditor)|steveire@gmail.com|Stephen Kelly}}&lt;br /&gt;
{{FeatureTodo|Kontact|Support for Kontact wide profiles|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureTodo|Kontact|Tip-of-the-Day summary|molkentin@kde.org|Daniel Molkentin}}&lt;br /&gt;
{{FeatureTodo|KOrganizer|Support for extended free-busy lists|kdepim@kdab.net|Kolab Konsortium}}&lt;br /&gt;
{{FeatureInProgress|KPilot|Port old conduits to new base conduit architecture and KDE4/Qt4|jkasper@kde.org|Jason 'vanRijn' Kasper}}&lt;br /&gt;
{{FeatureInProgress|KPilot|Finish Keyring conduit, base conduit code and test cases, category syncing|jkasper@kde.org|Jason 'vanRijn' Kasper}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdeutils =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|printer-applet|Restore feature parity with KDEPrint3 where possible.|john@layt.net|John Layt}}&lt;br /&gt;
{{FeatureTodo|Okteta|add editing capability to Decoding table |kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add Kate-like search tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for import by drop, both url and data|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|copy again puts also a value or char variant of the data to clipboard|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for memory mapping of files|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add further export formats like s-record and intel 16|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|add support for jobs like io, printing, string search or filter|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Make dialogs for Goto, Search &amp;amp; Replace embedded|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add Okular like embedded notifications|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add hash calculator tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Store bookmarks and other view settings for next load|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Show tooltip over bookmarks|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureInProgress|Okteta|Add filesystem browser tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureInProgress|Okteta|Add loaded documents tool|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Show selection range in status bar|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Add global toggle option for the offset display, hex or decimal|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Okteta|Make the Okteta KPart use libkakao, and rename libkakao|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|kwalletmanager|Move kwalletmanager to the Model/View architecture and redesign the UI.|lemma@confuego.org|Michael Leupold}}&lt;br /&gt;
{{FeatureInProgress|kdelirc|Bring back kdelirc|michael_zanetti@gmx.net|Michael Zanetti}}&lt;br /&gt;
{{FeatureTodo|ark|Improve support for pure gzip and bzip2 files|kubito@gmail.com|Raphael Kubo da Costa}}&lt;br /&gt;
{{FeatureInProgress|ark| Finish the cliinterface  |haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureTodo|ark| Add lots of more meaningful error messages  |haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureTodo|ark| Add support for ACE archives  |haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureTodo|ark| Add support for zip archives (cli-based, ie. info-zip) |haraldhv@stud.ntnu.no|Harald Hvaal}}&lt;br /&gt;
{{FeatureTodo|ark| Make the mimetype selection dialog more user-friendly |kubito@gmail.com|Raphael Kubo da Costa}}&lt;br /&gt;
{{FeatureTodo|KGpg| Port to new systray framework |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureTodo|KGpg| Clean up editor GUI and classes |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureTodo|KGpg| Make keyserver operations more flexible |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureInProgress|KGpg| Port key importing to be a transaction |kde@opensource.sf-tec.de|Rolf Eike Beer}}&lt;br /&gt;
{{FeatureInProgress|KTimer| Redesign UI |zahl@transbay.net|A. L. Spehr}}&lt;br /&gt;
{{FeatureTodo|KTimer| Add hours and seconds to counter |zahl@transbay.net|A. L. Spehr}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdebindings =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureTodo|krossjava|Integrate into e.g. SuperKaramba and fix issues that show up.|mail@dipe.org|Sebastian Sauer}}&lt;br /&gt;
{{FeatureTodo|krossjava|Documentation++|mail@dipe.org|Sebastian Sauer}}&lt;br /&gt;
{{FeatureTodo|krossfalcon|Documentation++|mail@dipe.org|Sebastian Sauer}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= kdegames =&lt;br /&gt;
{| class=&amp;quot;sortable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #ececec; white-space:nowrap;&amp;quot;&lt;br /&gt;
! Status !! Project !! Description !! Contact&lt;br /&gt;
{{FeatureDone|KGoldrunner|Add Curse of the Mummy game (20 levels), contributed by Steve Mann.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureInProgress|KGoldrunner|Major rewrite, mainly of the game engine and editor.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureInProgress|KGoldrunner|More accurate and reliable pause and resume.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureTodo|KGoldrunner|Save and reload at any instant in a game.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureTodo|KGoldrunner|Record and replay games.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureTodo|KGoldrunner|Run demos ... especially at startup or as hints for difficult levels.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureTodo|KGoldrunner|Hot-new-stuff support for themes and game sets.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureTodo|KGoldrunner|Integration of the Scavenger game (180 new levels) and its rule-set.  This would also involve allowing different grid dimensions for different games, as a feature of the new game engine.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureTodo|KGoldrunner|Better support for beginners, such as graphical cues for false bricks and hidden ladders, extra messages with &amp;quot;don't tell me this again&amp;quot;, etc.|ianw2@optusnet.com.au|Ian Wadham}}&lt;br /&gt;
{{FeatureInProgress|Killbots|Add &amp;quot;sonic screwdriver&amp;quot; functionality.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureTodo|Killbots|Add a tutorial for beginners.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureTodo|Kolf|Replace with Kolf 2 (please help!)|majewsky@gmx.net|Stefan Majewsky}}&lt;br /&gt;
{{FeatureDone|KPatience|Add a command line switch to manually launch a game of a certain type.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureDone|KPatience|Add an option to save the game state at shutdown to be automatically be restored on next run.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureDone|KPatience|Add the ability to return to the game selection screen after selecting a game.|parker.coates@gmail.com|Parker Coates}}&lt;br /&gt;
{{FeatureTodo|KsirK|rewrite AI code or at least correct most problems related in bug #170777. Volunteers wanted!|kleag@free.fr|Gaël de Chalendar}}&lt;br /&gt;
{{FeatureTodo|KsirK|Previous/Next in start new game as described in bug #170774|kleag@free.fr|Gaël de Chalendar}}&lt;br /&gt;
{{FeatureTodo|KsirK|Polish the skin editor (doc, contextual help, ...)|kleag@free.fr|Gaël de Chalendar}}&lt;br /&gt;
{{FeatureTodo|KsirK|Boost playing over Jabber|kleag@free.fr|Gaël de Chalendar}}&lt;br /&gt;
{{FeatureTodo|KSpaceDuel|rewrite AI code|dirkrathlev@gmx.de|Dirk Rathlev}}&lt;br /&gt;
{{FeatureDone|ktron|Port and remake the KTron game for KDE 4.3|legolas@legolasweb.nl|Stas Verberkt}}&lt;br /&gt;
{{FeatureTodo|KSudoku|Import the new logic engine as a library|joselb@gmx.net|Johannes Bergmeier}}&lt;br /&gt;
{{FeatureTodo|KSudoku|Port KSudoku to the new engine|joselb@gmx.net|Johannes Bergmeier}}&lt;br /&gt;
{{FeatureTodo|KSudoku|Add interactive help|joselb@gmx.net|Johannes Bergmeier}}&lt;br /&gt;
{{FeatureDone|Bovo|Add new AI|pelladigabor@gmail.com|Pelladi Gabor}}&lt;br /&gt;
{{FeatureDone|Bovo|Computer thinking doesn't block the GUI|pelladigabor@gmail.com|Pelladi Gabor}}&lt;br /&gt;
{{FeatureTodo|libkdegames|Import KGGZ libraries from GGZ SVN|spillner@kde.org|Josef Spillner}}&lt;br /&gt;
{{FeatureInProgress|libkmahjongg|Introduce new tileset, Bamboo.|mw_triad@users.sourceforge.net|Matthew Woehlke}}&lt;br /&gt;
{{FeatureDone|KMahjongg|Add 70 additional levels contributed by users|piacentini at kde.org|Mauricio Piacentini}}&lt;br /&gt;
{{FeatureTodo|KMahjongg|Add start page with level selection|piacentini at kde.org|Mauricio Piacentini}}&lt;br /&gt;
|}&lt;b