<?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=DMaggot&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=DMaggot&amp;feedformat=atom"/>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Special:Contributions/DMaggot"/>
		<updated>2013-05-19T13:08:12Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.20.2</generator>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.11_Feature_Plan</id>
		<title>Schedules/KDE4/4.11 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.11_Feature_Plan"/>
				<updated>2013-04-16T19:27:34Z</updated>
		
		<summary type="html">&lt;p&gt;DMaggot: Updating Kig's TODO list&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the SC 4.11 release. &lt;br /&gt;
&lt;br /&gt;
See also: &lt;br /&gt;
&lt;br /&gt;
*[[Schedules/KDE4/4.11 Release Schedule]] &lt;br /&gt;
*[[Schedules/KDE4/4.10 Feature Plan]] (previous major release)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Legend: &lt;br /&gt;
&lt;br /&gt;
*to do =&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;
&amp;lt;b&amp;gt;NO NEW FEATURES ALLOWED&amp;lt;/b&amp;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|kio-mtp|KIO-Slave for MTP|philschmidt@gmx.net|Philipp Schmidt}}&lt;br /&gt;
{{FeatureInProgress|nepomuk filemetadatawidget|Nepomuk Metadata Widget|me@vhanda.in|Vishesh Handa}}&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;
&amp;lt;!-- The following section of entries has been auto generated by ChangelogGenerator. Do not edit!&lt;br /&gt;
BEGIN GENERATED SECTION --&amp;gt;&lt;br /&gt;
{{FeatureTodo|kwin|windows that are moved to another desktop should be treated as sticky windows ({{bug |213847}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Fix fullscreen state handling: NETWM says it's bound to focus and not stacking order, also see bug #224600 ({{bug |296076}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Medium focus stealing prevention should also prevent focus stealing when the timestamp on the active window is uncertain ({{bug |304746}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Usability issue: &amp;quot;Attach as tab to&amp;quot; menu can be empty ({{bug |306451}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Import Scripted Effect from All Effets Tab ({{bug |296772}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Window Tab support for QML based Aurorae ({{bug |299138}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Get rid of  &amp;quot;Display borders on maximized windows&amp;quot; setting ({{bug |299245}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Break NETWM to allow inner xinerama struts ({{bug |299247}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Cube animation on border approach should not be used unless the electric borders are actually in use and the config should be disabled, align or hint the electric border configuration ({{bug |299901}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Make ShaderManager act as a real stack ({{bug |300349}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|clientPopup: &amp;quot;'More actions' and &amp;quot;Attach as tab to&amp;quot;  lack mnemonics ({{bug |302833}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Make KWin compile with C++11 ({{bug |303313}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Copy all useful Client properties to Deleted ({{bug |303916}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Display content of resizing/moving windows: KDE-Help shows obsolete instructions ({{bug |305297}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Mouse action support for sending window to different activity ({{bug |305758}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Windows list icon does not show up in &amp;quot;Walk Through Desktop List&amp;quot; ({{bug |306187}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Game mode ({{bug |306448}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Common animation settings for effects of same type ({{bug |308991}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Use Resize Area in Aurorae ({{bug |308992}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|Configurable quick tile area config GUI ({{bug |308993}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|Remove legacy window decorations ({{bug |299144}}, Review 104281)|kwin-bugs-null@kde.org}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- END GENERATED SECTION --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Task Manager applets to QML|hein@kde.org|Eike Hein (Sho_)}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|refresh Air Plasma theme|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Kickoff to qml|yellowcake-@gmx.net|Greg T}}&lt;br /&gt;
{{FeatureTodo|systemsettings|Replace krandr KCM by libkscreen-based one|dvratil@redhat.com|Dan Vrátil}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port rssnow to qml|terietor@gmail.com|Giorgos Tsiapaliokas}}&lt;br /&gt;
{{FeatureInProgress|various|KActivities/SLC support for most our applications|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|first desktop SLC applet release|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureTodo|plasma workspace|Top-rated documents for Task Manager|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|window manager|Rework and optimize vertex specification|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|Dynamic shader generation|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|Partial port to xcb|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|New launch feedback effect|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|activities|Encrypted activities|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|powerdevil|Improve profile error handling (DPMS)|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureTodo|plasma workspace|Social Feed|mklapetek@kde.org|Martin Klapetek}}&lt;br /&gt;
{{FeatureDone|kmenuedit|Ability to sort entries in the sub-menus ({{bug |108419}})|frajibe@gmail.com|Julien Borderie}}&lt;br /&gt;
{{FeatureDone|kmenuedit|Add move up/down buttons ({{bug |61537}})|frajibe@gmail.com|Julien Borderie}}&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;
{{FeatureTodo|FolderView|Split into PopupApplet and Containment|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
{{FeatureTodo|FolderView|Port to QML|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Dolphin|Implement files quick preview feature (named Klook)  |evgeniy.augin@osinit.ru|Evgeniy Auzhin}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Kate|As-you-type search for the search plugin|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureTodo|Kate|Session name API for plugins + automatic ctags database naming|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureInProgress|Kate|Add optional document &amp;quot;minimap&amp;quot; to the Symbols view plugin|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
{{FeatureInProgress|Kate|Vim Mode Macro support|kdedevel@etothepiplusone.com|Simon St James}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Kdialog|Add support for detailedsorry/detailederror messages|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureTodo|Konsole|Improve the search filter bar|francesco.cecconi@gmail.com|Francesco Cecconi}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konsole|Add the --separate cmdline option for running in new process|adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
{{FeatureTodo|Konsole|Make the d&amp;amp;d popup menu optional|adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Konqueror|Settings for WebKit Part|sandfeld@kde.org|Allan Sandfeld}}&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;
{{FeatureTodo|Marble|Have support for &amp;quot;repeatX&amp;quot; in the projection classes|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Satellite Map NG|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Mars &amp;amp; Venus satellite plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Help Menu polishing / Support page inclusion|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Toolbar polishing/refactoring|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Worldwide hillshading|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Extended library API (no MarbleWidget dependency for tasks like parsing, routing)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Plasma Active|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureInProgress|Marble|Foursquare plugin|utkuaydin34@gmail.com|Utku Aydın}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Android (including SOK branch merge)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Support for loading geolocated photos (e.g. in a Gallery activity in Marble Touch)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Layer Management (by the user: Toggle layer visibility; maybe move layers from legend and layers in menus to one central place/tab)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureDone|Marble|OSM vector rendering (GSOC branch merge)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureDone|Marble|Dock Widgets|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureDone|Marble|Stars Constellations|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|KML I/O Improvements|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureInProgress|Marble|Basic KML Editor|tgridel@free.fr|Thibaut Gridel}}&lt;br /&gt;
{{FeatureDone|Marble|WebKit Powered Info Dialog|marble-devel@kde.org|Various Artists}}&lt;br /&gt;
{{FeatureDone|Marble|WebKit Powered Info Dialog|marble-devel@kde.org|Various Artists}}&lt;br /&gt;
{{FeatureDone|Marble|License Information Info Box|marble-devel@kde.org|Various Artists}}&lt;br /&gt;
{{FeatureDone|Marble|Navigation Tool Redesign|rahn@kde.org|Torsten Rahn, Mohammed Nafees}}&lt;br /&gt;
{{FeatureTodo|Marble|Zoom to content of geo file after loading (at least on start-up)|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Marble|Geo files thumbnailer|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Marble|Geo files metadata extractor|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Rocs|Data Structure Backend wise iconsets and preconfigurations for types|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Printing and image export of graphs.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Data Structure Snapshot and Recovery.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Visual Graph Editor Handling: copy&amp;amp;paste, data structure focus, property display|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|In-Program documentation for scripting API|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|Scripting API cleanup|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Statistics module: scripts may add statistics data during algorithm executions|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Text-only interface for Rocs aka Cantor backend|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Worksheet Integration|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Cantor|Python backend|filipe@kde.org|Filipe Saraiva}}&lt;br /&gt;
{{FeatureInProgress|Kig|Geogebra Support|david.narvaez@computer.org|David E. Narváez}}&lt;br /&gt;
{{FeatureInProgress|Kig|CAS Backend|david.narvaez@computer.org|David E. Narváez}}&lt;br /&gt;
{{FeatureInProgress|KAlgebra|Matrix support|aleixpol@kde.org|Aleix Pol Gonzalez}}&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;
&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;
|}&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;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|libkipi|[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/dodonvictor/10002 Porting libkipi to KDE-XML GUI]|dodonvictor@gmail.com|Victor Dodon}}&lt;br /&gt;
&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;
{{FeatureInProgress|Juk|[http://community.kde.org/Juk#Porting_plan Port Juk away from kde3support]|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
{{FeatureDone|Juk|Add support for [http://www.opus-codec.org/ Ogg Opus audio editing/playback] (requires TagLib and Phonon also support)|mpyne@kde.org|Michael Pyne}}&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;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|KGet|Metalink/HTTP Support|dahalaishraj@gmail.com|Aish Raj Dahal}}&lt;br /&gt;
&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;
{{FeatureTodo|Facebook resource|Include it in default install|martin.klapetek@gmail.com|Martin Klapetek}}&lt;br /&gt;
{{FeatureInProgress|Akregator2|Merge in kdepim|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Knode|Merge in KMail|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|BackupMail|Extend backup to all kdepim apps|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Sieve|Rewrite dialogbox|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|libs|Move folderview to kdepimlibs/akonadi|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|kolab-resource|Make Kolab 3.0 option available|mollekopf@kolabsys.com|Christian Mollekopf}}&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;
{{FeatureInProgress|Microblog|replace with QML version|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureTodo|StackFolder|Add applet for quick browse the stack of folders|ural.mullabaev@rosalab.ru|Ural Mullabaev}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Eyes|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|FifteenPuzzle|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Luna|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Timer|replace with QML version|bettio@kde.org|Davide Bettio}}&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|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 tagged unions to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureInProgress|Okteta|Add array indices to structures tool|alex.richardson@gmx.de|Alex Richardson}}&lt;br /&gt;
{{FeatureInProgress|Umbrello| widget resize and diagram auto resize feature |ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
{{FeatureTodo|Umbrello|add spline based association lines to avoid autolayout widget/line overlapping (needs volunteers)|ralf.habacker@freenet.de|Ralf Habacker}}&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;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Ark|Make it possible to disable internal previewer|kde@privat.broulik.de|Kai Uwe Broulik}}&lt;br /&gt;
{{FeatureDone|KWallet|UI Refactoring|kde@rusu.info|Valentin Rusu}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= kdetoys =&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|KTeaTime|Bring back the system tray progress indicator known from KTeaTime 4.6.5 and earlier ({{bug |279222}})|kde@hilefoks.org|Stefan Böhmann}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>DMaggot</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/KigPlans</id>
		<title>KigPlans</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/KigPlans"/>
				<updated>2013-04-05T05:36:34Z</updated>
		
		<summary type="html">&lt;p&gt;DMaggot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lets use this wiki entry tu discuss future plans for Kig. From the discussion here, we can create a feature list for KDE 4.9 and start working on that. Some of the ideas that have been collected so far are:&lt;br /&gt;
&lt;br /&gt;
* Add support for hyperbolic geometries, but this is a large topic and would take a good amount of work. Here is some work on [http://raoul.koalatux.ch/sites/hyperbolic_geometry/hyperbolic_geometry.html building an asymptote package for drawing in the Poincare disk].&lt;br /&gt;
* More work on Asy and Tikz/PGF exporters, fixing bugs and fill out the remaining holes.&lt;br /&gt;
* Improve XFig exporter, at present it does not support loci, generic conics and cubics&lt;br /&gt;
* More flexible grids. We do not have any export options for polar grids. Maybe make grids more like the geometric objects.&lt;br /&gt;
* Allow the user some control over drawing precision (specifically when drawing loci) and/or when exporting to files that do not directly support all geometric objects (e.g. XFig).&lt;br /&gt;
* Review edge cases in file parsing&lt;br /&gt;
* Review bugs in windows&lt;br /&gt;
* Check this [https://bugs.kde.org/show_bug.cgi?id=122443 KFormula integration request], interesting&lt;br /&gt;
* Implement a CAS backend for coordinates in Kig, maybe [http://www.ginac.de/ GiNaC]?&lt;br /&gt;
* [http://www.geogebra.org Geogebra] support&lt;/div&gt;</summary>
		<author><name>DMaggot</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/KigPlans</id>
		<title>KigPlans</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/KigPlans"/>
				<updated>2013-04-05T05:20:28Z</updated>
		
		<summary type="html">&lt;p&gt;DMaggot: Updating status of some ideas and adding one new idea about CAS&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lets use this wiki entry tu discuss future plans for Kig. From the discussion here, we can create a feature list for KDE 4.9 and start working on that. Some of the ideas that have been collected so far are:&lt;br /&gt;
&lt;br /&gt;
* Add support for hyperbolic geometries, but this is a large topic and would take a good amount of work. Here is some work on [http://raoul.koalatux.ch/sites/hyperbolic_geometry/hyperbolic_geometry.html building an asymptote package for drawing in the Poincare disk].&lt;br /&gt;
* More work on Asy and Tikz/PGF exporters, fixing bugs and fill out the remaining holes.&lt;br /&gt;
* Improve XFig exporter, at present it does not support loci, generic conics and cubics&lt;br /&gt;
* More flexible grids. We do not have any export options for polar grids. Maybe make grids more like the geometric objects.&lt;br /&gt;
* Allow the user some control over drawing precision (specifically when drawing loci) and/or when exporting to files that do not directly support all geometric objects (e.g. XFig).&lt;br /&gt;
* Review edge cases in file parsing&lt;br /&gt;
* Review bugs in windows&lt;br /&gt;
* Check this [https://bugs.kde.org/show_bug.cgi?id=122443 KFormula integration request], interesting&lt;br /&gt;
* Implement a CAS backend for coordinates in Kig, maybe [http://www.ginac.de/ GiNaC]?&lt;/div&gt;</summary>
		<author><name>DMaggot</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk/Nepomuk2Port</id>
		<title>Projects/Nepomuk/Nepomuk2Port</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk/Nepomuk2Port"/>
				<updated>2013-01-03T18:10:44Z</updated>
		
		<summary type="html">&lt;p&gt;DMaggot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Maintaining Source Compatibility == &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
With KDE 4.9, '''Nepomuk''' moved out out kdelibs into its own repository. KDE libs is required to maintain source compatibility with earlier releases, and therefore we could not just remove the nepomuk components from kdelibs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
A new repository called [https://projects.kde.org/projects/kde/kdelibs/nepomuk-core nepomuk-core] was introduced which contains all the main components of nepomuk. This included vasts parts of kdelibs/nepomuk and kde-runtime/nepomuk. Another repository called [https://projects.kde.org/projects/kde/kdelibs/nepomuk-widgets nepomuk-widgets] has also been introduced for 4.10.&lt;br /&gt;
&lt;br /&gt;
== Porting to Nepomuk2 == &amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
Nepomuk2 is predominantly just a namespace change from Nepomuk to Nepomuk2. Additionally, the deprecated components of '''Nepomuk''' have been removed. In order to make porting easier, a simple script has been provided -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang='bash'&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
egrep -lRZ &amp;quot;Nepomuk&amp;quot; . | xargs -0 -l sed -i -e 's/Nepomuk::/Nepomuk2::/g'  &lt;br /&gt;
egrep -lRZ &amp;quot;Nepomuk&amp;quot; . | xargs -0 -l sed -i -e 's/#include &amp;lt;Nepomuk\//#include &amp;lt;Nepomuk2\//'&lt;br /&gt;
egrep -lRZ &amp;quot;nepomuk&amp;quot; . | xargs -0 -l sed -i -e 's/#include &amp;lt;nepomuk\//#include &amp;lt;nepomuk2\//'&lt;br /&gt;
egrep -lRZ &amp;quot;Nepomuk&amp;quot; . | xargs -0 -l sed -i -e 's/namespace Nepomuk/namespace Nepomuk2/g' &lt;br /&gt;
egrep -lRZ &amp;quot;resourceType&amp;quot; . | xargs -0 -l sed -i -e 's/\.resourceType/\.type/g'&lt;br /&gt;
egrep -lRZ &amp;quot;resourceUri&amp;quot; . | xargs -0 -l sed -i -e 's/\.resourceUri/\.uri/g'&lt;br /&gt;
egrep -lRZ &amp;quot;NEPOMUK_INCLUDE_DIR&amp;quot; . | xargs -0 -l sed -i -e 's/NEPOMUK_INCLUDE_DIR/NEPOMUK_CORE_INCLUDE_DIR/g'&lt;br /&gt;
egrep -lRZ &amp;quot;NEPOMUK_LIBRARIES&amp;quot; . | xargs -0 -l sed -i -e 's/NEPOMUK_LIBRARIES/NEPOMUK_CORE_LIBRARY/g'&lt;br /&gt;
egrep -lRZ &amp;quot;NEPOMUK_QUERY_LIBRARIES&amp;quot; . | xargs -0 -l sed -i -e 's/${NEPOMUK_QUERY_LIBRARIES}//g'&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
This script should cover all the source code changes, and most of the cmake changes.&lt;br /&gt;
&lt;br /&gt;
== CMake Changes == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
Depending on whether you require the GUI components you'll require the following includes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
find_package(NepomukCore)&lt;br /&gt;
find_package(NepomukWidgets)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
With NepomukCore, the following CMake variables are declared -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang='cmake'&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# NEPOMUK_CORE_LIB_DIR : The nepomuk-core library directory&lt;br /&gt;
# NEPOMUK_CORE_INCLUDE_DIR : The nepomuk-core include directory&lt;br /&gt;
# NEPOMUK_CORE_VERSION : The nepomuk-core version&lt;br /&gt;
# NEPOMUK_CORE_ONTOLOGY_DIR : The nepomuk-core ontologies location&lt;br /&gt;
# NEPOMUK_CORE_DBUS_INTERFACES_DIR : The nepomuk-core DBUS Interfaces dir&lt;br /&gt;
# NEPOMUK_CORE_LIBRARY : The nepomukcore library&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
With NepomukWidgets, the following CMake variables are declared -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# NEPOMUK_WIDGETS_LIB_DIR : The nepomuk-widgets library directory&lt;br /&gt;
# NEPOMUK_WIDGETS_INCLUDE_DIR : The nepomuk-widgets include directory&lt;br /&gt;
# NEPOMUK_WIDGETS_VERSION : The nepomuk-widgets version&lt;br /&gt;
# NEPOMUK_WIDGETS_LIBRARY : The nepomuk-widgets library&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Notice that, previously, &amp;lt;code&amp;gt;find_package(Nepomuk)&amp;lt;/code&amp;gt; would internally call &amp;lt;code&amp;gt;find_package(Soprano)&amp;lt;/code&amp;gt;, but since &amp;lt;code&amp;gt;find_package(NepomukCore)&amp;lt;/code&amp;gt; does not, you would additionally have to find Soprano explicitly to be able to use Soprano CMake macros, e.g., &amp;lt;code&amp;gt;include(SopranoAddOntology)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Migration Notes ==&lt;br /&gt;
=== Thing vs Resource ===&lt;br /&gt;
The ''Thing'' is an abstract concept in the ontologies that certain real-world stuff is derived from. We used to have special handling for it in Nepomuk, but since we never used it in anything that was shipped, we decided to remove it, and in Nepomuk2, any previous instance of it can be replaced with a ''Resource''.&lt;br /&gt;
&lt;br /&gt;
The Vocabularies stay the same, e.g.  &amp;lt;code&amp;gt;Nepomuk2::Vocabulary::PIMO::Thing()&amp;lt;/code&amp;gt; , so they shouldn't be removed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>DMaggot</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk/Nepomuk2Port</id>
		<title>Projects/Nepomuk/Nepomuk2Port</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk/Nepomuk2Port"/>
				<updated>2013-01-03T18:10:07Z</updated>
		
		<summary type="html">&lt;p&gt;DMaggot: Adding notes about find_package(Soprano)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Maintaining Source Compatibility == &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
With KDE 4.9, '''Nepomuk''' moved out out kdelibs into its own repository. KDE libs is required to maintain source compatibility with earlier releases, and therefore we could not just remove the nepomuk components from kdelibs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
A new repository called [https://projects.kde.org/projects/kde/kdelibs/nepomuk-core nepomuk-core] was introduced which contains all the main components of nepomuk. This included vasts parts of kdelibs/nepomuk and kde-runtime/nepomuk. Another repository called [https://projects.kde.org/projects/kde/kdelibs/nepomuk-widgets nepomuk-widgets] has also been introduced for 4.10.&lt;br /&gt;
&lt;br /&gt;
== Porting to Nepomuk2 == &amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
Nepomuk2 is predominantly just a namespace change from Nepomuk to Nepomuk2. Additionally, the deprecated components of '''Nepomuk''' have been removed. In order to make porting easier, a simple script has been provided -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang='bash'&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
egrep -lRZ &amp;quot;Nepomuk&amp;quot; . | xargs -0 -l sed -i -e 's/Nepomuk::/Nepomuk2::/g'  &lt;br /&gt;
egrep -lRZ &amp;quot;Nepomuk&amp;quot; . | xargs -0 -l sed -i -e 's/#include &amp;lt;Nepomuk\//#include &amp;lt;Nepomuk2\//'&lt;br /&gt;
egrep -lRZ &amp;quot;nepomuk&amp;quot; . | xargs -0 -l sed -i -e 's/#include &amp;lt;nepomuk\//#include &amp;lt;nepomuk2\//'&lt;br /&gt;
egrep -lRZ &amp;quot;Nepomuk&amp;quot; . | xargs -0 -l sed -i -e 's/namespace Nepomuk/namespace Nepomuk2/g' &lt;br /&gt;
egrep -lRZ &amp;quot;resourceType&amp;quot; . | xargs -0 -l sed -i -e 's/\.resourceType/\.type/g'&lt;br /&gt;
egrep -lRZ &amp;quot;resourceUri&amp;quot; . | xargs -0 -l sed -i -e 's/\.resourceUri/\.uri/g'&lt;br /&gt;
egrep -lRZ &amp;quot;NEPOMUK_INCLUDE_DIR&amp;quot; . | xargs -0 -l sed -i -e 's/NEPOMUK_INCLUDE_DIR/NEPOMUK_CORE_INCLUDE_DIR/g'&lt;br /&gt;
egrep -lRZ &amp;quot;NEPOMUK_LIBRARIES&amp;quot; . | xargs -0 -l sed -i -e 's/NEPOMUK_LIBRARIES/NEPOMUK_CORE_LIBRARY/g'&lt;br /&gt;
egrep -lRZ &amp;quot;NEPOMUK_QUERY_LIBRARIES&amp;quot; . | xargs -0 -l sed -i -e 's/${NEPOMUK_QUERY_LIBRARIES}//g'&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
This script should cover all the source code changes, and most of the cmake changes.&lt;br /&gt;
&lt;br /&gt;
== CMake Changes == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
Depending on whether you require the GUI components you'll require the following includes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
find_package(NepomukCore)&lt;br /&gt;
find_package(NepomukWidgets)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
With NepomukCore, the following CMake variables are declared -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang='cmake'&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# NEPOMUK_CORE_LIB_DIR : The nepomuk-core library directory&lt;br /&gt;
# NEPOMUK_CORE_INCLUDE_DIR : The nepomuk-core include directory&lt;br /&gt;
# NEPOMUK_CORE_VERSION : The nepomuk-core version&lt;br /&gt;
# NEPOMUK_CORE_ONTOLOGY_DIR : The nepomuk-core ontologies location&lt;br /&gt;
# NEPOMUK_CORE_DBUS_INTERFACES_DIR : The nepomuk-core DBUS Interfaces dir&lt;br /&gt;
# NEPOMUK_CORE_LIBRARY : The nepomukcore library&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
With NepomukWidgets, the following CMake variables are declared -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# NEPOMUK_WIDGETS_LIB_DIR : The nepomuk-widgets library directory&lt;br /&gt;
# NEPOMUK_WIDGETS_INCLUDE_DIR : The nepomuk-widgets include directory&lt;br /&gt;
# NEPOMUK_WIDGETS_VERSION : The nepomuk-widgets version&lt;br /&gt;
# NEPOMUK_WIDGETS_LIBRARY : The nepomuk-widgets library&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice that, previously, &amp;lt;code&amp;gt;find_package(Nepomuk)&amp;lt;/code&amp;gt; would internally call &amp;lt;code&amp;gt;find_package(Soprano)&amp;lt;/code&amp;gt;, but since &amp;lt;code&amp;gt;find_package(NepomukCore)&amp;lt;/code&amp;gt; does not, you would additionally have to find Soprano explicitly to be able to use Soprano CMake macros, e.g., &amp;lt;code&amp;gt;include(SopranoAddOntology)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Migration Notes ==&lt;br /&gt;
=== Thing vs Resource ===&lt;br /&gt;
The ''Thing'' is an abstract concept in the ontologies that certain real-world stuff is derived from. We used to have special handling for it in Nepomuk, but since we never used it in anything that was shipped, we decided to remove it, and in Nepomuk2, any previous instance of it can be replaced with a ''Resource''.&lt;br /&gt;
&lt;br /&gt;
The Vocabularies stay the same, e.g.  &amp;lt;code&amp;gt;Nepomuk2::Vocabulary::PIMO::Thing()&amp;lt;/code&amp;gt; , so they shouldn't be removed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>DMaggot</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Nepomuk/Nepomuk2Port</id>
		<title>Projects/Nepomuk/Nepomuk2Port</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Nepomuk/Nepomuk2Port"/>
				<updated>2013-01-03T17:53:32Z</updated>
		
		<summary type="html">&lt;p&gt;DMaggot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Maintaining Source Compatibility == &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
With KDE 4.9, '''Nepomuk''' moved out out kdelibs into its own repository. KDE libs is required to maintain source compatibility with earlier releases, and therefore we could not just remove the nepomuk components from kdelibs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
A new repository called [https://projects.kde.org/projects/kde/kdelibs/nepomuk-core nepomuk-core] was introduced which contains all the main components of nepomuk. This included vasts parts of kdelibs/nepomuk and kde-runtime/nepomuk. Another repository called [https://projects.kde.org/projects/kde/kdelibs/nepomuk-widgets nepomuk-widgets] has also been introduced for 4.10.&lt;br /&gt;
&lt;br /&gt;
== Porting to Nepomuk2 == &amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
Nepomuk2 is predominantly just a namespace change from Nepomuk to Nepomuk2. Additionally, the deprecated components of '''Nepomuk''' have been removed. In order to make porting easier, a simple script has been provided -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang='bash'&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
egrep -lRZ &amp;quot;Nepomuk&amp;quot; . | xargs -0 -l sed -i -e 's/Nepomuk::/Nepomuk2::/g'  &lt;br /&gt;
egrep -lRZ &amp;quot;Nepomuk&amp;quot; . | xargs -0 -l sed -i -e 's/#include &amp;lt;Nepomuk\//#include &amp;lt;Nepomuk2\//'&lt;br /&gt;
egrep -lRZ &amp;quot;nepomuk&amp;quot; . | xargs -0 -l sed -i -e 's/#include &amp;lt;nepomuk\//#include &amp;lt;nepomuk2\//'&lt;br /&gt;
egrep -lRZ &amp;quot;Nepomuk&amp;quot; . | xargs -0 -l sed -i -e 's/namespace Nepomuk/namespace Nepomuk2/g' &lt;br /&gt;
egrep -lRZ &amp;quot;resourceType&amp;quot; . | xargs -0 -l sed -i -e 's/\.resourceType/\.type/g'&lt;br /&gt;
egrep -lRZ &amp;quot;resourceUri&amp;quot; . | xargs -0 -l sed -i -e 's/\.resourceUri/\.uri/g'&lt;br /&gt;
egrep -lRZ &amp;quot;NEPOMUK_INCLUDE_DIR&amp;quot; . | xargs -0 -l sed -i -e 's/NEPOMUK_INCLUDE_DIR/NEPOMUK_CORE_INCLUDE_DIR/g'&lt;br /&gt;
egrep -lRZ &amp;quot;NEPOMUK_LIBRARIES&amp;quot; . | xargs -0 -l sed -i -e 's/NEPOMUK_LIBRARIES/NEPOMUK_CORE_LIBRARY/g'&lt;br /&gt;
egrep -lRZ &amp;quot;NEPOMUK_QUERY_LIBRARIES&amp;quot; . | xargs -0 -l sed -i -e 's/${NEPOMUK_QUERY_LIBRARIES}//g'&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
This script should cover all the source code changes, and most of the cmake changes.&lt;br /&gt;
&lt;br /&gt;
== CMake Changes == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
Depending on whether you require the GUI components you'll require the following includes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
find_package(NepomukCore)&lt;br /&gt;
find_package(NepomukWidgets)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
With NepomukCore, the following CMake variables are declared -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang='cmake'&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# NEPOMUK_CORE_LIB_DIR : The nepomuk-core library directory&lt;br /&gt;
# NEPOMUK_CORE_INCLUDE_DIR : The nepomuk-core include directory&lt;br /&gt;
# NEPOMUK_CORE_VERSION : The nepomuk-core version&lt;br /&gt;
# NEPOMUK_CORE_ONTOLOGY_DIR : The nepomuk-core ontologies location&lt;br /&gt;
# NEPOMUK_CORE_DBUS_INTERFACES_DIR : The nepomuk-core DBUS Interfaces dir&lt;br /&gt;
# NEPOMUK_CORE_LIBRARY : The nepomukcore library&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
With NepomukWidgets, the following CMake variables are declared -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# NEPOMUK_WIDGETS_LIB_DIR : The nepomuk-widgets library directory&lt;br /&gt;
# NEPOMUK_WIDGETS_INCLUDE_DIR : The nepomuk-widgets include directory&lt;br /&gt;
# NEPOMUK_WIDGETS_VERSION : The nepomuk-widgets version&lt;br /&gt;
# NEPOMUK_WIDGETS_LIBRARY : The nepomuk-widgets library&lt;br /&gt;
#&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Migration Notes ==&lt;br /&gt;
=== Thing vs Resource ===&lt;br /&gt;
The ''Thing'' is an abstract concept in the ontologies that certain real-world stuff is derived from. We used to have special handling for it in Nepomuk, but since we never used it in anything that was shipped, we decided to remove it, and in Nepomuk2, any previous instance of it can be replaced with a ''Resource''.&lt;br /&gt;
&lt;br /&gt;
The Vocabularies stay the same, e.g.  &amp;lt;code&amp;gt;Nepomuk2::Vocabulary::PIMO::Thing()&amp;lt;/code&amp;gt; , so they shouldn't be removed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:15--&amp;gt;&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>DMaggot</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/Akonadi/Resources</id>
		<title>Development/Tutorials/Akonadi/Resources</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/Akonadi/Resources"/>
				<updated>2012-12-25T20:50:33Z</updated>
		
		<summary type="html">&lt;p&gt;DMaggot: Just easier&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
{{TutorialBrowser|&lt;br /&gt;
&lt;br /&gt;
series=[[Development/Tutorials#Personal_Information_Management_.28Akonadi.29|Akonadi Tutorial]]|&lt;br /&gt;
&lt;br /&gt;
name=Creating an Akonadi PIM data Resource|&lt;br /&gt;
&lt;br /&gt;
pre=[http://mindview.net/Books/TICPP/ThinkingInCPP2e.html C++], [http://www.trolltech.com/products/qt/ Qt], [[Getting_Started/Build|KDE development environment]]|&lt;br /&gt;
&lt;br /&gt;
next=| &lt;br /&gt;
&lt;br /&gt;
reading=[[Development/Tutorials/CMake|CMake]], [[Development/Architecture/KDE4/Akonadi|Akonadi Architecture]], [[Projects/PIM/Akonadi/Development_Tools|Akonadi Development Tools]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
This tutorial will guide you through the steps of creating an Akonadi resource, an agent program which transports PIM data between the Akonadi system and a storage backend.&lt;br /&gt;
&lt;br /&gt;
See the  [http://api.kde.org/4.x-api/kdepimlibs-apidocs/akonadi/html/classAkonadi_1_1ResourceBase.html#_details Resource related API documentation] for developer information not covered in this tutorial.&lt;br /&gt;
&lt;br /&gt;
The resource developed in this tutorial will use a directory on the local file system as its backend and handle contact data, i.e. address book entries.&lt;br /&gt;
&lt;br /&gt;
For other real-life examples of akonadi resources see projects in [https://projects.kde.org/projects/kde/kdepim-runtime/repository/revisions/master/show/resources /kdepim-runtime/resources] KDE source directory.&lt;br /&gt;
&lt;br /&gt;
{{improve|Add error handling to resource code snippets}}&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
{{improve|Describe required versions and build setup}}&lt;br /&gt;
&lt;br /&gt;
== Preparation ==&lt;br /&gt;
&lt;br /&gt;
The KDE client library for Akonadi provides a base class, [http://api.kde.org/4.x-api/kdepimlibs-apidocs/akonadi/html/classAkonadi_1_1ResourceBase.html Akonadi::ResourceBase], which already implements most of the low level communication between resource and Akonadi server, letting the resource developer concentrate on communication with the backend.&lt;br /&gt;
&lt;br /&gt;
We can kick-start the resource by using '''KAppTemplate''', which can be found as '''KDE template generator''' in the development section of the K-menu, or by running '''kapptemplate''' in a terminal window.&lt;br /&gt;
&lt;br /&gt;
First, we select the '''Akonadi Resource Template''' in the C++ section of the program, give our project a name and continue through the following pages to complete the template creation.&lt;br /&gt;
&lt;br /&gt;
[[Image:KAppTemplate1.png]]&lt;br /&gt;
&lt;br /&gt;
A look at the generated project directory shows us the following files:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
akonadi-resources.png&lt;br /&gt;
Messages.sh&lt;br /&gt;
settings.kcfgc&lt;br /&gt;
vcarddirresource.desktop&lt;br /&gt;
vcarddirresource.kcfg&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
README&lt;br /&gt;
vcarddirresource.cpp&lt;br /&gt;
vcarddirresource.h&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this stage it is already possible to compile the resource, so we can already check if our development environment is setup correctly by creating the build directory and having CMake either generate Makefiles or a KDevelop project file.&lt;br /&gt;
&lt;br /&gt;
=== Generating Makefiles ===&lt;br /&gt;
&lt;br /&gt;
From within the generated source directory:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir build&lt;br /&gt;
cd build&lt;br /&gt;
cmake -DCMAKE_BUILD_TYPE=debugfull ..&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
and run the build using make as usual.&lt;br /&gt;
&lt;br /&gt;
Note: if after running cmake you receive error like: &amp;quot;Could NOT find KdepimLibs (missing: KdepimLibs_CONFIG)&amp;quot;, try running cmake with additional parameter:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cmake -DCMAKE_BUILD_TYPE=debugfull -DKdepimLibs_DIR=/usr/lib64/cmake/KdepimLibs ..&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Generating a KDevelop project file ===&lt;br /&gt;
&lt;br /&gt;
From within the generated source directory:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir build&lt;br /&gt;
cd build&lt;br /&gt;
cmake -DCMAKE_BUILD_TYPE=debugfull -G KDevelop3 ..&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
and open the generated project with KDevelop and run the build process from there.&lt;br /&gt;
&lt;br /&gt;
=== Adjusting the resource description file ===&lt;br /&gt;
&lt;br /&gt;
The capabilities of the resource need to be described in both human understable and machine interpretable form.&lt;br /&gt;
This is achieved through a so-called desktop file, similar to those installed by applications.&lt;br /&gt;
&lt;br /&gt;
Since the '''vcarddirresource.desktop''' file generated by KAppTemplate contains only example values, we need to edit it:&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;
Name=Akonadi VCardDir Resource&lt;br /&gt;
Comment=Resource for a directory containing contact data files&lt;br /&gt;
&lt;br /&gt;
Type=AkonadiResource&lt;br /&gt;
Exec=akonadi_vcarddir_resource&lt;br /&gt;
Icon=text-directory&lt;br /&gt;
&lt;br /&gt;
X-Akonadi-MimeTypes=text/directory&lt;br /&gt;
X-Akonadi-Capabilities=Resource&lt;br /&gt;
X-Akonadi-Identifier=akonadi_vcarddir_resource&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Name''' and '''Comment''' are strings visible to the user and can be translated. Since our resource will serve contact data, the example valued for '''Icon''' and '''X-Akonadi-MimeTypes''' fields are conveniently correct.&lt;br /&gt;
&lt;br /&gt;
== Resource Configuration ==&lt;br /&gt;
&lt;br /&gt;
Since the backend of our resource will be a file system directory, we need a way to let the user configure it and a way to persistantly store this configuration.&lt;br /&gt;
&lt;br /&gt;
KDE has a nice framework for this called [[Development/Tutorials/Using_KConfig_XT| KConfig XT]] which enabled us developers to specify our config options as an XML file and have the code for storage and retrieval auto-generated.&lt;br /&gt;
&lt;br /&gt;
The template we are basing our resource on already contains such a file, '''vcarddirresource.kcfg''', and we only have to add a new option for our base directory:&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;kcfg xmlns=&amp;quot;http://www.kde.org/standards/kcfg/1.0&amp;quot;&lt;br /&gt;
      xmlns:kcfg=&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;group name=&amp;quot;General&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;entry name=&amp;quot;Path&amp;quot; type=&amp;quot;Path&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;label&amp;gt;Path to a folder containing vCard files.&amp;lt;/label&amp;gt;&lt;br /&gt;
      &amp;lt;default&amp;gt;&amp;lt;/default&amp;gt;&lt;br /&gt;
    &amp;lt;/entry&amp;gt;&lt;br /&gt;
    &amp;lt;entry name=&amp;quot;ReadOnly&amp;quot; type=&amp;quot;Bool&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;label&amp;gt;Do not change the actual backend data.&amp;lt;/label&amp;gt;&lt;br /&gt;
      &amp;lt;default&amp;gt;false&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To enable the user to change this properties, we need to create and show a config dialog. Since we are using KConfig XT this is pretty easy, but for the scope of this tutorial we make our lives even easier and just use a {{class|KFileDialog}}&lt;br /&gt;
&lt;br /&gt;
{{warning|This simplification has the side effect that the passed window ID cannot be used as it should. See FAQ section at the end of the tutorial.}}&lt;br /&gt;
&lt;br /&gt;
First we need to add two new include directives at the beginning of our source file '''vcarddirresource.cpp''':&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;kfiledialog.h&amp;gt;&lt;br /&gt;
#include &amp;lt;klocalizedstring.h&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To show the dialog on the user's request, we need to modify the resource method &amp;lt;tt&amp;gt;configure&amp;lt;/tt&amp;gt; which currently has an empty implementation.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
void VCardDirResource::configure( WId windowId )&lt;br /&gt;
{&lt;br /&gt;
  Q_UNUSED( windowId );&lt;br /&gt;
&lt;br /&gt;
  const QString oldPath = Settings::self()-&amp;gt;path();&lt;br /&gt;
  KUrl url;&lt;br /&gt;
  if ( !oldPath.isEmpty() )&lt;br /&gt;
    url = KUrl::fromPath( oldPath );&lt;br /&gt;
  else&lt;br /&gt;
    url = KUrl::fromPath( QDir::homePath() );&lt;br /&gt;
&lt;br /&gt;
  const QString title = i18nc( &amp;quot;@title:window&amp;quot;, &amp;quot;Select vCard folder&amp;quot; );&lt;br /&gt;
  const QString newPath = KFileDialog::getExistingDirectory( url, 0, title );&lt;br /&gt;
&lt;br /&gt;
  if ( newPath.isEmpty() )&lt;br /&gt;
    return;&lt;br /&gt;
&lt;br /&gt;
  if ( oldPath == newPath )&lt;br /&gt;
    return;&lt;br /&gt;
&lt;br /&gt;
  Settings::self()-&amp;gt;setPath( newPath );&lt;br /&gt;
&lt;br /&gt;
  Settings::self()-&amp;gt;writeConfig();&lt;br /&gt;
&lt;br /&gt;
  synchronize();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The call to &amp;lt;tt&amp;gt;synchronize&amp;lt;/tt&amp;gt; at the end tells Akonadi to start retrieving the new data from our resource.&lt;br /&gt;
&lt;br /&gt;
{{tip|Since there can be more than one resource of a certain type, it is recommended to change the resource name to something that makes them distiguishable. In the case of this example resource it could be the name of the base directory or part of its path}}&lt;br /&gt;
&lt;br /&gt;
== Data Retrieval ==&lt;br /&gt;
&lt;br /&gt;
In this section of the tutorial we will implement the data retrieval methods of our resource, i.e. the method which Akonadi will call to get the contact data our resource is providing.&lt;br /&gt;
&lt;br /&gt;
=== Retrieving Collections ===&lt;br /&gt;
&lt;br /&gt;
The first thing Akonadi will ask for are our collections. Resources can organize their data in a tree of collections, similar to how files are organized in a tree of directories on the file system.&lt;br /&gt;
&lt;br /&gt;
For now we only want to support one directory so we only need one collection.&lt;br /&gt;
{{tip|'''Exercise:''' Extend this to map a tree of vCard directories into Akonadi.}}&lt;br /&gt;
&lt;br /&gt;
Retrieval of collections is handled in &amp;lt;tt&amp;gt;retrieveCollections&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
void VCardDirResource::retrieveCollections()&lt;br /&gt;
{&lt;br /&gt;
  Collection c;&lt;br /&gt;
  c.setParent( Collection::root() );&lt;br /&gt;
  c.setRemoteId( Settings::self()-&amp;gt;path() );&lt;br /&gt;
  c.setName( name() );&lt;br /&gt;
&lt;br /&gt;
  QStringList mimeTypes;&lt;br /&gt;
  mimeTypes &amp;lt;&amp;lt; QLatin1String(&amp;quot;text/directory&amp;quot;);&lt;br /&gt;
  c.setContentMimeTypes( mimeTypes );&lt;br /&gt;
&lt;br /&gt;
  Collection::List list;&lt;br /&gt;
  list &amp;lt;&amp;lt; c;&lt;br /&gt;
  collectionsRetrieved( list );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The code creates a top level collection, i.e. its parent collection is Akonadi's root collection, sets the configured path as its remote identifier (so we could eventually map it back to our &amp;quot;backend&amp;quot; location) and uses our resource name as the user visible collection name.&lt;br /&gt;
&lt;br /&gt;
Since our resource will be providing contact data, we need to set the respective MIME type to indicate which kind of data our collection will hold.&lt;br /&gt;
&lt;br /&gt;
Finally the fully set up collection is sent to Akonadi.&lt;br /&gt;
&lt;br /&gt;
{{tip|You can customize visualization properties of the collection, e.g. icon, by using the [http://api.kde.org/4.x-api/kdepimlibs-apidocs/akonadi/html/classAkonadi_1_1EntityDisplayAttribute.html EntityDisplayAttribute] class}}&lt;br /&gt;
&lt;br /&gt;
=== Retrieving Items ===&lt;br /&gt;
&lt;br /&gt;
Retrieving items for a specific collection is similar to listing the files of a specific directory.&lt;br /&gt;
Conveniently our backend is a directory, so we can map this directly.&lt;br /&gt;
&lt;br /&gt;
There are several methods to implement item retrieval, e.g. synchronous or asynchronous, all items in one go or in patches, etc.&lt;br /&gt;
For the scope of the tutorial we choose the easiest combination, i.e. synchronously provide all items in one go.&lt;br /&gt;
{{tip|'''Exercise:''' Use {{class|KDirLister}} to do this asynchronously and in patches.}}&lt;br /&gt;
&lt;br /&gt;
First we need another include directive:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;QtCore/QDir&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then we implement &amp;lt;tt&amp;gt;retrieveItems&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
void VCardDirResource::retrieveItems( const Akonadi::Collection &amp;amp;collection )&lt;br /&gt;
{&lt;br /&gt;
  // our collections have the mapped path as their remote identifier&lt;br /&gt;
  const QString path = collection.remoteId();&lt;br /&gt;
&lt;br /&gt;
  QDir dir( path );&lt;br /&gt;
&lt;br /&gt;
  QStringList filters;&lt;br /&gt;
  filters &amp;lt;&amp;lt; QLatin1String( &amp;quot;*.vcf&amp;quot; );&lt;br /&gt;
  const QStringList fileList = dir.entryList( filters, QDir::Files );&lt;br /&gt;
&lt;br /&gt;
  Item::List items;&lt;br /&gt;
  foreach( const QString &amp;amp;file, fileList ) {&lt;br /&gt;
    Item item( QLatin1String( &amp;quot;text/directory&amp;quot; ) );&lt;br /&gt;
    item.setRemoteId( path + QLatin1Char( '/' ) + file );&lt;br /&gt;
&lt;br /&gt;
    items &amp;lt;&amp;lt; item;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  itemsRetrieved( items );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our earlier decision to use the directory's path as the collection's remote identifier conveniently allows us to retrieve the path from the given collection.&lt;br /&gt;
&lt;br /&gt;
We then list all vCard files in that directory and create one Akonadi item for each one, this time using the path plus the file's name as the remote identifier.&lt;br /&gt;
&lt;br /&gt;
{{note|This rather primitive implementation assumes that all files with the extension &amp;lt;tt&amp;gt;vcf&amp;lt;/tt&amp;gt; are indeed vCard files and contain only one vCard each.}}&lt;br /&gt;
&lt;br /&gt;
Finally the whole list of items is sent to Akonadi.&lt;br /&gt;
&lt;br /&gt;
=== Retrieving Item Data ===&lt;br /&gt;
&lt;br /&gt;
Continuing our file system analogy, retrieving a specific item's data is similar to reading a specific file's data or its associated meta data.&lt;br /&gt;
So we have again the convenience of a direct mapping between Akonadi and backend functionality.&lt;br /&gt;
&lt;br /&gt;
Since our backend items are vCard files, we need to parse them into data structures which we can then use as item payloads.&lt;br /&gt;
&lt;br /&gt;
KDE's class for holding contact data is [http://api.kde.org/4.x-api/kdepimlibs-apidocs/kabc/html/classKABC_1_1Addressee.html KABC::Addressee] and we can use [http://api.kde.org/4.x-api/kdepimlibs-apidocs/kabc/html/classKABC_1_1VCardConverter.html KABC::VCardConverter] for file parsing.&lt;br /&gt;
&lt;br /&gt;
First we need another set of includes:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;kabc/addressee.h&amp;gt;&lt;br /&gt;
#include &amp;lt;kabc/vcardconverter.h&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then we implement the &amp;lt;tt&amp;gt;retrieveItem&amp;lt;/tt&amp;gt; method:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
bool VCardDirResource::retrieveItem( const Akonadi::Item &amp;amp;item, const QSet&amp;lt;QByteArray&amp;gt; &amp;amp;parts )&lt;br /&gt;
{&lt;br /&gt;
  Q_UNUSED( parts );&lt;br /&gt;
&lt;br /&gt;
  const QString fileName = item.remoteId();&lt;br /&gt;
&lt;br /&gt;
  QFile file( fileName );&lt;br /&gt;
  if ( !file.open( QFile::ReadOnly ) )&lt;br /&gt;
    return false;&lt;br /&gt;
&lt;br /&gt;
  const QByteArray data = file.readAll();&lt;br /&gt;
  if ( file.error() != QFile::NoError )&lt;br /&gt;
    return false;&lt;br /&gt;
&lt;br /&gt;
  KABC::VCardConverter converter;&lt;br /&gt;
  KABC::Addressee addressee = converter.parseVCard( data );&lt;br /&gt;
  if ( addressee.isEmpty() )&lt;br /&gt;
    return false;&lt;br /&gt;
&lt;br /&gt;
  Item newItem( item );&lt;br /&gt;
  newItem.setPayload&amp;lt;KABC::Addressee&amp;gt;( addressee );&lt;br /&gt;
&lt;br /&gt;
  itemRetrieved( newItem );&lt;br /&gt;
  return true;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And additionally we need to edit '''CMakeLists.txt''' to make it link the library for the &amp;lt;tt&amp;gt;KABC&amp;lt;/tt&amp;gt; classes:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
target_link_libraries(akonadi_vcarddir_resource ${KDE4_AKONADI_LIBS} ${QT_QTCORE_LIBRARY} ${QT_QTDBUS_LIBRARY} ${KDE4_KDECORE_LIBS} ${KDE4_KABC_LIBS})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Again aided by our decision what to use as the item's remote identifier, we can directly use it to open the respective vCard file.&lt;br /&gt;
After parsing the data we create a new item object, use the given item to initialize it, set the contact data object as its payload and send it to Akonadi.&lt;br /&gt;
&lt;br /&gt;
{{note|Since we need the full vCard data for parsing, we ignore the &amp;lt;tt&amp;gt;parts&amp;lt;/tt&amp;gt; parameter and always retrieve the full payload.}}&lt;br /&gt;
&lt;br /&gt;
== Item Changes ==&lt;br /&gt;
&lt;br /&gt;
All Akonadi clients, e.g. end user applications, agents, etc., can at any time add items to collections, change item data and remove items from collections. If such a change happens in the collection tree of a resource, the resource should properly make the respective change on its backend.&lt;br /&gt;
&lt;br /&gt;
By default, resources are only notified about which items have been changed and which of the parts have been modified.&lt;br /&gt;
To automatically the get the updated payload we only have to enable this operation mode on the resource's change recorder.&lt;br /&gt;
&lt;br /&gt;
To do that we need another two include directives&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;akonadi/itemfetchscope.h&amp;gt;&lt;br /&gt;
#include &amp;lt;akonadi/changerecorder.h&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and an additional line in the resource's constructor&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
changeRecorder()-&amp;gt;itemFetchScope().fetchFullPayload();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This tells the base implementation that each item change should be fetched with full payload before delivering it to the methods covered in the following subsections.&lt;br /&gt;
&lt;br /&gt;
{{tip|'''Exercise:''' Add handling for collection changes, e.g. create subdirectories when child collections have been created.}}&lt;br /&gt;
&lt;br /&gt;
=== Adding Items ===&lt;br /&gt;
&lt;br /&gt;
In order to handle items being added to one of our collections, we need to implement the method &amp;lt;tt&amp;gt;itemAdded&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
First we need another include directive for a helper class:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;krandom.h&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now we can implement &amp;lt;tt&amp;gt;itemAdded&amp;lt;/tt&amp;gt; like this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
void VCardDirResource::itemAdded( const Akonadi::Item &amp;amp;item, const Akonadi::Collection &amp;amp;collection )&lt;br /&gt;
{&lt;br /&gt;
  const QString path = collection.remoteId();&lt;br /&gt;
&lt;br /&gt;
  KABC::Addressee addressee;&lt;br /&gt;
  if ( item.hasPayload&amp;lt;KABC::Addressee&amp;gt;() )&lt;br /&gt;
    addressee = item.payload&amp;lt;KABC::Addressee&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
  if ( addressee.uid().isEmpty() )&lt;br /&gt;
    addressee.setUid( KRandom::randomString( 10 ) );&lt;br /&gt;
&lt;br /&gt;
  QFile file( path + QLatin1Char( '/' ) + addressee.uid() + QLatin1String( &amp;quot;.vcf&amp;quot; ) );&lt;br /&gt;
&lt;br /&gt;
  if ( !file.open( QFile::WriteOnly ) )&lt;br /&gt;
    return;&lt;br /&gt;
&lt;br /&gt;
  KABC::VCardConverter converter;&lt;br /&gt;
  file.write( converter.createVCard( addressee ) );&lt;br /&gt;
  if ( file.error() != QFile::NoError )&lt;br /&gt;
    return;&lt;br /&gt;
&lt;br /&gt;
  Item newItem( item );&lt;br /&gt;
  newItem.setRemoteId( file.fileName() );&lt;br /&gt;
  newItem.setPayload&amp;lt;KABC::Addressee&amp;gt;( addressee );&lt;br /&gt;
&lt;br /&gt;
  changeCommitted( newItem );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As usual we get the path of the directory a specific collection maps to from the collection's remote identifier.&lt;br /&gt;
&lt;br /&gt;
Then we check if the newly added item is already equiped with a payload, in our case a KABC::Addressee object.&lt;br /&gt;
In either case we ensure that the object has an unique identifier by which we then use as the base name for the vCard file.&lt;br /&gt;
&lt;br /&gt;
Finally we let Akonadi know that we have processed the item change and which remote identifier our backend has assigned to it.&lt;br /&gt;
&lt;br /&gt;
=== Modifying Items ===&lt;br /&gt;
&lt;br /&gt;
In our case handling item modifications is almost the same as handling item adding, however more sophisticated resource will most likely do different things depending on the &amp;lt;tt&amp;gt;parts&amp;lt;/tt&amp;gt; parameter.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
void VCardDirResource::itemChanged( const Akonadi::Item &amp;amp;item, const QSet&amp;lt;QByteArray&amp;gt; &amp;amp;parts )&lt;br /&gt;
{&lt;br /&gt;
  Q_UNUSED( parts );&lt;br /&gt;
&lt;br /&gt;
  const QString fileName = item.remoteId();&lt;br /&gt;
&lt;br /&gt;
  KABC::Addressee addressee;&lt;br /&gt;
  if ( item.hasPayload&amp;lt;KABC::Addressee&amp;gt;() )&lt;br /&gt;
    addressee = item.payload&amp;lt;KABC::Addressee&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
  if ( addressee.uid().isEmpty() )&lt;br /&gt;
    addressee.setUid( KRandom::randomString( 10 ) );&lt;br /&gt;
&lt;br /&gt;
  QFile file( fileName );&lt;br /&gt;
&lt;br /&gt;
  if ( !file.open( QFile::WriteOnly ) )&lt;br /&gt;
    return;&lt;br /&gt;
&lt;br /&gt;
  KABC::VCardConverter converter;&lt;br /&gt;
  file.write( converter.createVCard( addressee ) );&lt;br /&gt;
  if ( file.error() != QFile::NoError )&lt;br /&gt;
    return;&lt;br /&gt;
&lt;br /&gt;
  Item newItem( item );&lt;br /&gt;
  newItem.setPayload&amp;lt;KABC::Addressee&amp;gt;( addressee );&lt;br /&gt;
&lt;br /&gt;
  changeCommitted( newItem );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Removing Items ===&lt;br /&gt;
&lt;br /&gt;
Since we have a one-to-one mapping of items to files, an item removal is as simple as removing the respective file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
void VCardDirResource::itemRemoved( const Akonadi::Item &amp;amp;item )&lt;br /&gt;
{&lt;br /&gt;
  Q_UNUSED( item );&lt;br /&gt;
&lt;br /&gt;
  const QString fileName = item.remoteId();&lt;br /&gt;
&lt;br /&gt;
  QFile::remove( fileName );&lt;br /&gt;
&lt;br /&gt;
  changeCommitted( item );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Backend Changes ==&lt;br /&gt;
&lt;br /&gt;
Of course changes to collections and items might also happen on the backend and in cases where the backend can send out change notifications, the resource can map these changes directly into its collection tree.&lt;br /&gt;
&lt;br /&gt;
The APIs for that are exactly the same which any other client would use, i.e. Akonadi's job classes.&lt;br /&gt;
&lt;br /&gt;
{{tip|'''Exercise:''' Use {{class|KDirWatch}} to get notified about file and directory changes and modify the Akonadi storage accordingly.}}&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
The [[Projects/PIM/Akonadi/Testing|Akonadi Test Framework]] allows to create self-contained test environments so developers do not risk impacting their normal Akonadi setup.&lt;br /&gt;
&lt;br /&gt;
To install new resource to system run (might need root):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
make install&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or copy built files manually to the following locations:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$KDEDIRS/bin/akonadi_vcarddir_resource&lt;br /&gt;
$KDEDIRS/share/akonadi/agents/vcarddirresource.desktop&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where $KDEDIRS points to your KDE installation prefix.&lt;br /&gt;
&lt;br /&gt;
Then run Akonadi Configuration (search by this keyword in kickoff launcher) and click &amp;quot;Add...&amp;quot; button to add new resource - new resource should be there; or in KAddressBook add new address book - new resource should be available as address book type (restarting akonadi server might help if it does not get into this list immediately).&lt;br /&gt;
&lt;br /&gt;
{{improve|Create tutorial about using the test suite.}}&lt;br /&gt;
&lt;br /&gt;
== Frequently Asked Questions and Tips ==&lt;br /&gt;
&lt;br /&gt;
=== Base Class Methods ===&lt;br /&gt;
&lt;br /&gt;
==== When is configure() called ====&lt;br /&gt;
&lt;br /&gt;
[http://api.kde.org/4.x-api/kdepimlibs-apidocs/akonadi/html/classAkonadi_1_1AgentBase.html#88a08911cd0a69934207ef1a154a23ba ResourceBase::configure()] is called under two circumstances.&lt;br /&gt;
* as part of the resource's creation process: when the Akonadi control process creates a resource, it will also call the resource's '''configure()''' method through D-Bus once the resource has registered itself.&lt;br /&gt;
&lt;br /&gt;
* when another program explicitly requests it: since '''configure()''' is exposed as a D-Bus method, any other program can call it to request a resource's reconfiguration. End user applications might offer this functionality to allow the user to change resource specific settings.&lt;br /&gt;
&lt;br /&gt;
==== What is the purpose of the window ID parameter of configure()? ====&lt;br /&gt;
&lt;br /&gt;
The resource is a program on its own, i.e. it is not the same process as the end user application working with the data provided by the resource.&lt;br /&gt;
&lt;br /&gt;
In an in-process scenario any configuration UI can specify one of the application's top level widgets as its parent, thus associating the configuration UI with that window.&lt;br /&gt;
&lt;br /&gt;
Window managing systems such as KDE's KWin use this information to keep new windows from interrupting the user unless they are very likely a consequence of a user's action.&lt;br /&gt;
&lt;br /&gt;
To make such an association across process boundaries, the calling application can send a platforms specific window identifier over to the resource which in tunr can then use it to specify it as a &amp;quot;parent&amp;quot; for its configuration UI like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
ConfigDialog dialog;&lt;br /&gt;
KWindowSystem::setMainWindow( &amp;amp;dialog, windowId );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See {{class|KWindowSystem}}&lt;br /&gt;
&lt;br /&gt;
==== Is retrieveItem() called in the order retrieveItems() passes the items? ====&lt;br /&gt;
&lt;br /&gt;
The purpose of [http://api.kde.org/4.x-api/kdepimlibs-apidocs/akonadi/html/classAkonadi_1_1ResourceBase.html#38d7c3713ed54dedf885d437de1ca11d ResourceBase::retrieveItem()] is to deliver additional item data, i.e. data not yet available in the Akonadi cache.&lt;br /&gt;
&lt;br /&gt;
This can happen due to several different reasons, only one of them is '''retrieveItems()''' delivering just basic items.&lt;br /&gt;
&lt;br /&gt;
An implementation should therefore '''always''' treat an invocation of this method as a single incidence unrelated to anything else.&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial]]&lt;br /&gt;
[[Category:C++]]&lt;br /&gt;
[[Category:KDE4]]&lt;br /&gt;
[[Category:Akonadi]]&lt;br /&gt;
[[Category:PIM]]&lt;/div&gt;</summary>
		<author><name>DMaggot</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/Akonadi/Resources</id>
		<title>Development/Tutorials/Akonadi/Resources</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/Akonadi/Resources"/>
				<updated>2012-12-25T20:49:18Z</updated>
		
		<summary type="html">&lt;p&gt;DMaggot: Fixing typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
{{TutorialBrowser|&lt;br /&gt;
&lt;br /&gt;
series=[[Development/Tutorials#Personal_Information_Management_.28Akonadi.29|Akonadi Tutorial]]|&lt;br /&gt;
&lt;br /&gt;
name=Creating an Akonadi PIM data Resource|&lt;br /&gt;
&lt;br /&gt;
pre=[http://mindview.net/Books/TICPP/ThinkingInCPP2e.html C++], [http://www.trolltech.com/products/qt/ Qt], [[Getting_Started/Build|KDE development environment]]|&lt;br /&gt;
&lt;br /&gt;
next=| &lt;br /&gt;
&lt;br /&gt;
reading=[[Development/Tutorials/CMake|CMake]], [[Development/Architecture/KDE4/Akonadi|Akonadi Architecture]], [[Projects/PIM/Akonadi/Development_Tools|Akonadi Development Tools]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
This tutorial will guide you through the steps of creating an Akonadi resource, an agent program which transports PIM data between the Akonadi system and a storage backend.&lt;br /&gt;
&lt;br /&gt;
See the  [http://api.kde.org/4.x-api/kdepimlibs-apidocs/akonadi/html/classAkonadi_1_1ResourceBase.html#_details Resource related API documentation] for developer information not covered in this tutorial.&lt;br /&gt;
&lt;br /&gt;
The resource developed in this tutorial will use a directory on the local file system as its backend and handle contact data, i.e. address book entries.&lt;br /&gt;
&lt;br /&gt;
For other real-life examples of akonadi resources see projects in [https://projects.kde.org/projects/kde/kdepim-runtime/repository/revisions/master/show/resources /kdepim-runtime/resources] KDE source directory.&lt;br /&gt;
&lt;br /&gt;
{{improve|Add error handling to resource code snippets}}&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
{{improve|Describe required versions and build setup}}&lt;br /&gt;
&lt;br /&gt;
== Preparation ==&lt;br /&gt;
&lt;br /&gt;
The KDE client library for Akonadi provides a base class, [http://api.kde.org/4.x-api/kdepimlibs-apidocs/akonadi/html/classAkonadi_1_1ResourceBase.html Akonadi::ResourceBase], which already implements most of the low level communication between resource and Akonadi server, letting the resource developer concentrate on communication with the backend.&lt;br /&gt;
&lt;br /&gt;
We can kick-start the resource by using '''KAppTemplate''', which can be found as '''KDE template generator''' in the development section of the K-menu, or by running '''kapptemplate''' in a terminal window.&lt;br /&gt;
&lt;br /&gt;
First, we select the '''Akonadi Resource Template''' in the C++ section of the program, give our project a name and continue through the following pages to complete the template creation.&lt;br /&gt;
&lt;br /&gt;
[[Image:KAppTemplate1.png]]&lt;br /&gt;
&lt;br /&gt;
A look at the generated project directory shows us the following files:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
akonadi-resources.png&lt;br /&gt;
Messages.sh&lt;br /&gt;
settings.kcfgc&lt;br /&gt;
vcarddirresource.desktop&lt;br /&gt;
vcarddirresource.kcfg&lt;br /&gt;
CMakeLists.txt&lt;br /&gt;
README&lt;br /&gt;
vcarddirresource.cpp&lt;br /&gt;
vcarddirresource.h&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this stage it is already possible to compile the resource, so we can already check if our development environment is setup correctly by creating the build directory and having CMake either generate Makefiles or a KDevelop project file.&lt;br /&gt;
&lt;br /&gt;
=== Generating Makefiles ===&lt;br /&gt;
&lt;br /&gt;
From within the generated source directory:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir build&lt;br /&gt;
cd build&lt;br /&gt;
cmake -DCMAKE_BUILD_TYPE=debugfull ..&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
and run the build using make as usual.&lt;br /&gt;
&lt;br /&gt;
Note: if after running cmake you receive error like: &amp;quot;Could NOT find KdepimLibs (missing: KdepimLibs_CONFIG)&amp;quot;, try running cmake with additional parameter:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cmake -DCMAKE_BUILD_TYPE=debugfull -DKdepimLibs_DIR=/usr/lib64/cmake/KdepimLibs ..&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Generating a KDevelop project file ===&lt;br /&gt;
&lt;br /&gt;
From within the generated source directory:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir build&lt;br /&gt;
cd build&lt;br /&gt;
cmake -DCMAKE_BUILD_TYPE=debugfull -G KDevelop3 ..&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
and open the generated project with KDevelop and run the build process from there.&lt;br /&gt;
&lt;br /&gt;
=== Adjusting the resource description file ===&lt;br /&gt;
&lt;br /&gt;
The capabilities of the resource need to be described in both human understable and machine interpretable form.&lt;br /&gt;
This is achieved through a so-called desktop file, similar to those installed by applications.&lt;br /&gt;
&lt;br /&gt;
Since the '''vcarddirresource.desktop''' file generated by KAppTemplate contains only example values, we need to edit it:&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;
Name=Akonadi VCardDir Resource&lt;br /&gt;
Comment=Resource for a directory containing contact data files&lt;br /&gt;
&lt;br /&gt;
Type=AkonadiResource&lt;br /&gt;
Exec=akonadi_vcarddir_resource&lt;br /&gt;
Icon=text-directory&lt;br /&gt;
&lt;br /&gt;
X-Akonadi-MimeTypes=text/directory&lt;br /&gt;
X-Akonadi-Capabilities=Resource&lt;br /&gt;
X-Akonadi-Identifier=akonadi_vcarddir_resource&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Name''' and '''Comment''' are strings visible to the user and can be translated. Since our resource will serve contact data, the example valued for '''Icon''' and '''X-Akonadi-MimeTypes''' fields are conveniently correct.&lt;br /&gt;
&lt;br /&gt;
== Resource Configuration ==&lt;br /&gt;
&lt;br /&gt;
Since the backend of our resource will be a file system directory, we need a way to let the user configure it and a way to persistantly store this configuration.&lt;br /&gt;
&lt;br /&gt;
KDE has a nice framework for this called [[Development/Tutorials/Using_KConfig_XT| KConfig XT]] which enabled us developers to specify our config options as an XML file and have the code for storage and retrieval auto-generated.&lt;br /&gt;
&lt;br /&gt;
The template we are basing our resource on already contains such a file, '''vcarddirresource.kcfg''', and we only have to add a new option for our base directory:&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;kcfg xmlns=&amp;quot;http://www.kde.org/standards/kcfg/1.0&amp;quot;&lt;br /&gt;
      xmlns:kcfg=&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;group name=&amp;quot;General&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;entry name=&amp;quot;Path&amp;quot; type=&amp;quot;Path&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;label&amp;gt;Path to a folder containing vCard files.&amp;lt;/label&amp;gt;&lt;br /&gt;
      &amp;lt;default&amp;gt;&amp;lt;/default&amp;gt;&lt;br /&gt;
    &amp;lt;/entry&amp;gt;&lt;br /&gt;
    &amp;lt;entry name=&amp;quot;ReadOnly&amp;quot; type=&amp;quot;Bool&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;label&amp;gt;Do not change the actual backend data.&amp;lt;/label&amp;gt;&lt;br /&gt;
      &amp;lt;default&amp;gt;false&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;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To enable the user to change this properties, we need to create and show a config dialog. Since we are using KConfig XT this is pretty easy, but for the scope of this tutorial we make our lives even more easier and just use a {{class|KFileDialog}}&lt;br /&gt;
&lt;br /&gt;
{{warning|This simplification has the side effect that the passed window ID cannot be used as it should. See FAQ section at the end of the tutorial.}}&lt;br /&gt;
&lt;br /&gt;
First we need to add two new include directives at the beginning of our source file '''vcarddirresource.cpp''':&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;kfiledialog.h&amp;gt;&lt;br /&gt;
#include &amp;lt;klocalizedstring.h&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To show the dialog on the user's request, we need to modify the resource method &amp;lt;tt&amp;gt;configure&amp;lt;/tt&amp;gt; which currently has an empty implementation.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
void VCardDirResource::configure( WId windowId )&lt;br /&gt;
{&lt;br /&gt;
  Q_UNUSED( windowId );&lt;br /&gt;
&lt;br /&gt;
  const QString oldPath = Settings::self()-&amp;gt;path();&lt;br /&gt;
  KUrl url;&lt;br /&gt;
  if ( !oldPath.isEmpty() )&lt;br /&gt;
    url = KUrl::fromPath( oldPath );&lt;br /&gt;
  else&lt;br /&gt;
    url = KUrl::fromPath( QDir::homePath() );&lt;br /&gt;
&lt;br /&gt;
  const QString title = i18nc( &amp;quot;@title:window&amp;quot;, &amp;quot;Select vCard folder&amp;quot; );&lt;br /&gt;
  const QString newPath = KFileDialog::getExistingDirectory( url, 0, title );&lt;br /&gt;
&lt;br /&gt;
  if ( newPath.isEmpty() )&lt;br /&gt;
    return;&lt;br /&gt;
&lt;br /&gt;
  if ( oldPath == newPath )&lt;br /&gt;
    return;&lt;br /&gt;
&lt;br /&gt;
  Settings::self()-&amp;gt;setPath( newPath );&lt;br /&gt;
&lt;br /&gt;
  Settings::self()-&amp;gt;writeConfig();&lt;br /&gt;
&lt;br /&gt;
  synchronize();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The call to &amp;lt;tt&amp;gt;synchronize&amp;lt;/tt&amp;gt; at the end tells Akonadi to start retrieving the new data from our resource.&lt;br /&gt;
&lt;br /&gt;
{{tip|Since there can be more than one resource of a certain type, it is recommended to change the resource name to something that makes them distiguishable. In the case of this example resource it could be the name of the base directory or part of its path}}&lt;br /&gt;
&lt;br /&gt;
== Data Retrieval ==&lt;br /&gt;
&lt;br /&gt;
In this section of the tutorial we will implement the data retrieval methods of our resource, i.e. the method which Akonadi will call to get the contact data our resource is providing.&lt;br /&gt;
&lt;br /&gt;
=== Retrieving Collections ===&lt;br /&gt;
&lt;br /&gt;
The first thing Akonadi will ask for are our collections. Resources can organize their data in a tree of collections, similar to how files are organized in a tree of directories on the file system.&lt;br /&gt;
&lt;br /&gt;
For now we only want to support one directory so we only need one collection.&lt;br /&gt;
{{tip|'''Exercise:''' Extend this to map a tree of vCard directories into Akonadi.}}&lt;br /&gt;
&lt;br /&gt;
Retrieval of collections is handled in &amp;lt;tt&amp;gt;retrieveCollections&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
void VCardDirResource::retrieveCollections()&lt;br /&gt;
{&lt;br /&gt;
  Collection c;&lt;br /&gt;
  c.setParent( Collection::root() );&lt;br /&gt;
  c.setRemoteId( Settings::self()-&amp;gt;path() );&lt;br /&gt;
  c.setName( name() );&lt;br /&gt;
&lt;br /&gt;
  QStringList mimeTypes;&lt;br /&gt;
  mimeTypes &amp;lt;&amp;lt; QLatin1String(&amp;quot;text/directory&amp;quot;);&lt;br /&gt;
  c.setContentMimeTypes( mimeTypes );&lt;br /&gt;
&lt;br /&gt;
  Collection::List list;&lt;br /&gt;
  list &amp;lt;&amp;lt; c;&lt;br /&gt;
  collectionsRetrieved( list );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The code creates a top level collection, i.e. its parent collection is Akonadi's root collection, sets the configured path as its remote identifier (so we could eventually map it back to our &amp;quot;backend&amp;quot; location) and uses our resource name as the user visible collection name.&lt;br /&gt;
&lt;br /&gt;
Since our resource will be providing contact data, we need to set the respective MIME type to indicate which kind of data our collection will hold.&lt;br /&gt;
&lt;br /&gt;
Finally the fully set up collection is sent to Akonadi.&lt;br /&gt;
&lt;br /&gt;
{{tip|You can customize visualization properties of the collection, e.g. icon, by using the [http://api.kde.org/4.x-api/kdepimlibs-apidocs/akonadi/html/classAkonadi_1_1EntityDisplayAttribute.html EntityDisplayAttribute] class}}&lt;br /&gt;
&lt;br /&gt;
=== Retrieving Items ===&lt;br /&gt;
&lt;br /&gt;
Retrieving items for a specific collection is similar to listing the files of a specific directory.&lt;br /&gt;
Conveniently our backend is a directory, so we can map this directly.&lt;br /&gt;
&lt;br /&gt;
There are several methods to implement item retrieval, e.g. synchronous or asynchronous, all items in one go or in patches, etc.&lt;br /&gt;
For the scope of the tutorial we choose the easiest combination, i.e. synchronously provide all items in one go.&lt;br /&gt;
{{tip|'''Exercise:''' Use {{class|KDirLister}} to do this asynchronously and in patches.}}&lt;br /&gt;
&lt;br /&gt;
First we need another include directive:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;QtCore/QDir&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then we implement &amp;lt;tt&amp;gt;retrieveItems&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
void VCardDirResource::retrieveItems( const Akonadi::Collection &amp;amp;collection )&lt;br /&gt;
{&lt;br /&gt;
  // our collections have the mapped path as their remote identifier&lt;br /&gt;
  const QString path = collection.remoteId();&lt;br /&gt;
&lt;br /&gt;
  QDir dir( path );&lt;br /&gt;
&lt;br /&gt;
  QStringList filters;&lt;br /&gt;
  filters &amp;lt;&amp;lt; QLatin1String( &amp;quot;*.vcf&amp;quot; );&lt;br /&gt;
  const QStringList fileList = dir.entryList( filters, QDir::Files );&lt;br /&gt;
&lt;br /&gt;
  Item::List items;&lt;br /&gt;
  foreach( const QString &amp;amp;file, fileList ) {&lt;br /&gt;
    Item item( QLatin1String( &amp;quot;text/directory&amp;quot; ) );&lt;br /&gt;
    item.setRemoteId( path + QLatin1Char( '/' ) + file );&lt;br /&gt;
&lt;br /&gt;
    items &amp;lt;&amp;lt; item;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  itemsRetrieved( items );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our earlier decision to use the directory's path as the collection's remote identifier conveniently allows us to retrieve the path from the given collection.&lt;br /&gt;
&lt;br /&gt;
We then list all vCard files in that directory and create one Akonadi item for each one, this time using the path plus the file's name as the remote identifier.&lt;br /&gt;
&lt;br /&gt;
{{note|This rather primitive implementation assumes that all files with the extension &amp;lt;tt&amp;gt;vcf&amp;lt;/tt&amp;gt; are indeed vCard files and contain only one vCard each.}}&lt;br /&gt;
&lt;br /&gt;
Finally the whole list of items is sent to Akonadi.&lt;br /&gt;
&lt;br /&gt;
=== Retrieving Item Data ===&lt;br /&gt;
&lt;br /&gt;
Continuing our file system analogy, retrieving a specific item's data is similar to reading a specific file's data or its associated meta data.&lt;br /&gt;
So we have again the convenience of a direct mapping between Akonadi and backend functionality.&lt;br /&gt;
&lt;br /&gt;
Since our backend items are vCard files, we need to parse them into data structures which we can then use as item payloads.&lt;br /&gt;
&lt;br /&gt;
KDE's class for holding contact data is [http://api.kde.org/4.x-api/kdepimlibs-apidocs/kabc/html/classKABC_1_1Addressee.html KABC::Addressee] and we can use [http://api.kde.org/4.x-api/kdepimlibs-apidocs/kabc/html/classKABC_1_1VCardConverter.html KABC::VCardConverter] for file parsing.&lt;br /&gt;
&lt;br /&gt;
First we need another set of includes:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;kabc/addressee.h&amp;gt;&lt;br /&gt;
#include &amp;lt;kabc/vcardconverter.h&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then we implement the &amp;lt;tt&amp;gt;retrieveItem&amp;lt;/tt&amp;gt; method:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
bool VCardDirResource::retrieveItem( const Akonadi::Item &amp;amp;item, const QSet&amp;lt;QByteArray&amp;gt; &amp;amp;parts )&lt;br /&gt;
{&lt;br /&gt;
  Q_UNUSED( parts );&lt;br /&gt;
&lt;br /&gt;
  const QString fileName = item.remoteId();&lt;br /&gt;
&lt;br /&gt;
  QFile file( fileName );&lt;br /&gt;
  if ( !file.open( QFile::ReadOnly ) )&lt;br /&gt;
    return false;&lt;br /&gt;
&lt;br /&gt;
  const QByteArray data = file.readAll();&lt;br /&gt;
  if ( file.error() != QFile::NoError )&lt;br /&gt;
    return false;&lt;br /&gt;
&lt;br /&gt;
  KABC::VCardConverter converter;&lt;br /&gt;
  KABC::Addressee addressee = converter.parseVCard( data );&lt;br /&gt;
  if ( addressee.isEmpty() )&lt;br /&gt;
    return false;&lt;br /&gt;
&lt;br /&gt;
  Item newItem( item );&lt;br /&gt;
  newItem.setPayload&amp;lt;KABC::Addressee&amp;gt;( addressee );&lt;br /&gt;
&lt;br /&gt;
  itemRetrieved( newItem );&lt;br /&gt;
  return true;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And additionally we need to edit '''CMakeLists.txt''' to make it link the library for the &amp;lt;tt&amp;gt;KABC&amp;lt;/tt&amp;gt; classes:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
target_link_libraries(akonadi_vcarddir_resource ${KDE4_AKONADI_LIBS} ${QT_QTCORE_LIBRARY} ${QT_QTDBUS_LIBRARY} ${KDE4_KDECORE_LIBS} ${KDE4_KABC_LIBS})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Again aided by our decision what to use as the item's remote identifier, we can directly use it to open the respective vCard file.&lt;br /&gt;
After parsing the data we create a new item object, use the given item to initialize it, set the contact data object as its payload and send it to Akonadi.&lt;br /&gt;
&lt;br /&gt;
{{note|Since we need the full vCard data for parsing, we ignore the &amp;lt;tt&amp;gt;parts&amp;lt;/tt&amp;gt; parameter and always retrieve the full payload.}}&lt;br /&gt;
&lt;br /&gt;
== Item Changes ==&lt;br /&gt;
&lt;br /&gt;
All Akonadi clients, e.g. end user applications, agents, etc., can at any time add items to collections, change item data and remove items from collections. If such a change happens in the collection tree of a resource, the resource should properly make the respective change on its backend.&lt;br /&gt;
&lt;br /&gt;
By default, resources are only notified about which items have been changed and which of the parts have been modified.&lt;br /&gt;
To automatically the get the updated payload we only have to enable this operation mode on the resource's change recorder.&lt;br /&gt;
&lt;br /&gt;
To do that we need another two include directives&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;akonadi/itemfetchscope.h&amp;gt;&lt;br /&gt;
#include &amp;lt;akonadi/changerecorder.h&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and an additional line in the resource's constructor&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
changeRecorder()-&amp;gt;itemFetchScope().fetchFullPayload();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This tells the base implementation that each item change should be fetched with full payload before delivering it to the methods covered in the following subsections.&lt;br /&gt;
&lt;br /&gt;
{{tip|'''Exercise:''' Add handling for collection changes, e.g. create subdirectories when child collections have been created.}}&lt;br /&gt;
&lt;br /&gt;
=== Adding Items ===&lt;br /&gt;
&lt;br /&gt;
In order to handle items being added to one of our collections, we need to implement the method &amp;lt;tt&amp;gt;itemAdded&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
First we need another include directive for a helper class:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;krandom.h&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now we can implement &amp;lt;tt&amp;gt;itemAdded&amp;lt;/tt&amp;gt; like this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
void VCardDirResource::itemAdded( const Akonadi::Item &amp;amp;item, const Akonadi::Collection &amp;amp;collection )&lt;br /&gt;
{&lt;br /&gt;
  const QString path = collection.remoteId();&lt;br /&gt;
&lt;br /&gt;
  KABC::Addressee addressee;&lt;br /&gt;
  if ( item.hasPayload&amp;lt;KABC::Addressee&amp;gt;() )&lt;br /&gt;
    addressee = item.payload&amp;lt;KABC::Addressee&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
  if ( addressee.uid().isEmpty() )&lt;br /&gt;
    addressee.setUid( KRandom::randomString( 10 ) );&lt;br /&gt;
&lt;br /&gt;
  QFile file( path + QLatin1Char( '/' ) + addressee.uid() + QLatin1String( &amp;quot;.vcf&amp;quot; ) );&lt;br /&gt;
&lt;br /&gt;
  if ( !file.open( QFile::WriteOnly ) )&lt;br /&gt;
    return;&lt;br /&gt;
&lt;br /&gt;
  KABC::VCardConverter converter;&lt;br /&gt;
  file.write( converter.createVCard( addressee ) );&lt;br /&gt;
  if ( file.error() != QFile::NoError )&lt;br /&gt;
    return;&lt;br /&gt;
&lt;br /&gt;
  Item newItem( item );&lt;br /&gt;
  newItem.setRemoteId( file.fileName() );&lt;br /&gt;
  newItem.setPayload&amp;lt;KABC::Addressee&amp;gt;( addressee );&lt;br /&gt;
&lt;br /&gt;
  changeCommitted( newItem );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As usual we get the path of the directory a specific collection maps to from the collection's remote identifier.&lt;br /&gt;
&lt;br /&gt;
Then we check if the newly added item is already equiped with a payload, in our case a KABC::Addressee object.&lt;br /&gt;
In either case we ensure that the object has an unique identifier by which we then use as the base name for the vCard file.&lt;br /&gt;
&lt;br /&gt;
Finally we let Akonadi know that we have processed the item change and which remote identifier our backend has assigned to it.&lt;br /&gt;
&lt;br /&gt;
=== Modifying Items ===&lt;br /&gt;
&lt;br /&gt;
In our case handling item modifications is almost the same as handling item adding, however more sophisticated resource will most likely do different things depending on the &amp;lt;tt&amp;gt;parts&amp;lt;/tt&amp;gt; parameter.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
void VCardDirResource::itemChanged( const Akonadi::Item &amp;amp;item, const QSet&amp;lt;QByteArray&amp;gt; &amp;amp;parts )&lt;br /&gt;
{&lt;br /&gt;
  Q_UNUSED( parts );&lt;br /&gt;
&lt;br /&gt;
  const QString fileName = item.remoteId();&lt;br /&gt;
&lt;br /&gt;
  KABC::Addressee addressee;&lt;br /&gt;
  if ( item.hasPayload&amp;lt;KABC::Addressee&amp;gt;() )&lt;br /&gt;
    addressee = item.payload&amp;lt;KABC::Addressee&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
  if ( addressee.uid().isEmpty() )&lt;br /&gt;
    addressee.setUid( KRandom::randomString( 10 ) );&lt;br /&gt;
&lt;br /&gt;
  QFile file( fileName );&lt;br /&gt;
&lt;br /&gt;
  if ( !file.open( QFile::WriteOnly ) )&lt;br /&gt;
    return;&lt;br /&gt;
&lt;br /&gt;
  KABC::VCardConverter converter;&lt;br /&gt;
  file.write( converter.createVCard( addressee ) );&lt;br /&gt;
  if ( file.error() != QFile::NoError )&lt;br /&gt;
    return;&lt;br /&gt;
&lt;br /&gt;
  Item newItem( item );&lt;br /&gt;
  newItem.setPayload&amp;lt;KABC::Addressee&amp;gt;( addressee );&lt;br /&gt;
&lt;br /&gt;
  changeCommitted( newItem );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Removing Items ===&lt;br /&gt;
&lt;br /&gt;
Since we have a one-to-one mapping of items to files, an item removal is as simple as removing the respective file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
void VCardDirResource::itemRemoved( const Akonadi::Item &amp;amp;item )&lt;br /&gt;
{&lt;br /&gt;
  Q_UNUSED( item );&lt;br /&gt;
&lt;br /&gt;
  const QString fileName = item.remoteId();&lt;br /&gt;
&lt;br /&gt;
  QFile::remove( fileName );&lt;br /&gt;
&lt;br /&gt;
  changeCommitted( item );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Backend Changes ==&lt;br /&gt;
&lt;br /&gt;
Of course changes to collections and items might also happen on the backend and in cases where the backend can send out change notifications, the resource can map these changes directly into its collection tree.&lt;br /&gt;
&lt;br /&gt;
The APIs for that are exactly the same which any other client would use, i.e. Akonadi's job classes.&lt;br /&gt;
&lt;br /&gt;
{{tip|'''Exercise:''' Use {{class|KDirWatch}} to get notified about file and directory changes and modify the Akonadi storage accordingly.}}&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
The [[Projects/PIM/Akonadi/Testing|Akonadi Test Framework]] allows to create self-contained test environments so developers do not risk impacting their normal Akonadi setup.&lt;br /&gt;
&lt;br /&gt;
To install new resource to system run (might need root):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
make install&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or copy built files manually to the following locations:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$KDEDIRS/bin/akonadi_vcarddir_resource&lt;br /&gt;
$KDEDIRS/share/akonadi/agents/vcarddirresource.desktop&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where $KDEDIRS points to your KDE installation prefix.&lt;br /&gt;
&lt;br /&gt;
Then run Akonadi Configuration (search by this keyword in kickoff launcher) and click &amp;quot;Add...&amp;quot; button to add new resource - new resource should be there; or in KAddressBook add new address book - new resource should be available as address book type (restarting akonadi server might help if it does not get into this list immediately).&lt;br /&gt;
&lt;br /&gt;
{{improve|Create tutorial about using the test suite.}}&lt;br /&gt;
&lt;br /&gt;
== Frequently Asked Questions and Tips ==&lt;br /&gt;
&lt;br /&gt;
=== Base Class Methods ===&lt;br /&gt;
&lt;br /&gt;
==== When is configure() called ====&lt;br /&gt;
&lt;br /&gt;
[http://api.kde.org/4.x-api/kdepimlibs-apidocs/akonadi/html/classAkonadi_1_1AgentBase.html#88a08911cd0a69934207ef1a154a23ba ResourceBase::configure()] is called under two circumstances.&lt;br /&gt;
* as part of the resource's creation process: when the Akonadi control process creates a resource, it will also call the resource's '''configure()''' method through D-Bus once the resource has registered itself.&lt;br /&gt;
&lt;br /&gt;
* when another program explicitly requests it: since '''configure()''' is exposed as a D-Bus method, any other program can call it to request a resource's reconfiguration. End user applications might offer this functionality to allow the user to change resource specific settings.&lt;br /&gt;
&lt;br /&gt;
==== What is the purpose of the window ID parameter of configure()? ====&lt;br /&gt;
&lt;br /&gt;
The resource is a program on its own, i.e. it is not the same process as the end user application working with the data provided by the resource.&lt;br /&gt;
&lt;br /&gt;
In an in-process scenario any configuration UI can specify one of the application's top level widgets as its parent, thus associating the configuration UI with that window.&lt;br /&gt;
&lt;br /&gt;
Window managing systems such as KDE's KWin use this information to keep new windows from interrupting the user unless they are very likely a consequence of a user's action.&lt;br /&gt;
&lt;br /&gt;
To make such an association across process boundaries, the calling application can send a platforms specific window identifier over to the resource which in tunr can then use it to specify it as a &amp;quot;parent&amp;quot; for its configuration UI like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
ConfigDialog dialog;&lt;br /&gt;
KWindowSystem::setMainWindow( &amp;amp;dialog, windowId );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See {{class|KWindowSystem}}&lt;br /&gt;
&lt;br /&gt;
==== Is retrieveItem() called in the order retrieveItems() passes the items? ====&lt;br /&gt;
&lt;br /&gt;
The purpose of [http://api.kde.org/4.x-api/kdepimlibs-apidocs/akonadi/html/classAkonadi_1_1ResourceBase.html#38d7c3713ed54dedf885d437de1ca11d ResourceBase::retrieveItem()] is to deliver additional item data, i.e. data not yet available in the Akonadi cache.&lt;br /&gt;
&lt;br /&gt;
This can happen due to several different reasons, only one of them is '''retrieveItems()''' delivering just basic items.&lt;br /&gt;
&lt;br /&gt;
An implementation should therefore '''always''' treat an invocation of this method as a single incidence unrelated to anything else.&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial]]&lt;br /&gt;
[[Category:C++]]&lt;br /&gt;
[[Category:KDE4]]&lt;br /&gt;
[[Category:Akonadi]]&lt;br /&gt;
[[Category:PIM]]&lt;/div&gt;</summary>
		<author><name>DMaggot</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.10_Feature_Plan</id>
		<title>Schedules/KDE4/4.10 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.10_Feature_Plan"/>
				<updated>2012-10-24T22:19:52Z</updated>
		
		<summary type="html">&lt;p&gt;DMaggot: Added Metalink/HTTP&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the SC 4.10 release. &lt;br /&gt;
&lt;br /&gt;
See also: &lt;br /&gt;
&lt;br /&gt;
*[[Schedules/KDE4/4.10 Release Schedule]] &lt;br /&gt;
*[[Schedules/KDE4/4.9 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;
&amp;lt;b&amp;gt;NO NEW FEATURES ALLOWED&amp;lt;/b&amp;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|kio-mtp|KIO-Slave for MTP|philschmidt@gmx.net|Philipp Schmidt}}&lt;br /&gt;
{{FeatureInProgress|QML Containments|Making it possible to do full-featured containments in QML|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureInProgress|nepomuk-indexer|New Nepomuk Indexer|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureInProgress|nepomukbakcup|Nepomuk Backup rewritten from scratch|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureInProgress|nepomukcleaner|An application to port/clean invalid/legacy data in Nepomuk|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureInProgress|nepomuk KCM|Rewrite the Nepomuk KCM|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureInProgress|nepomuk tags|Nepomuk Tags KIO Slave|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureInProgress|nepomuk filemetadtawdiget|Nepomuk Metadata Widget|me@vhanda.in|Vishesh Handa}}&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|ksmserver|Merge the new qml based screen locker|mart@kde.org|Marco Martin}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- The following section of entries has been auto generated by ChangelogGenerator. Do not edit!&lt;br /&gt;
BEGIN GENERATED SECTION --&amp;gt;&lt;br /&gt;
{{FeatureTodo|kwin|windows that are moved to another desktop should be treated as sticky windows ({{bug |213847}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Fix fullscreen state handling: NETWM says it's bound to focus and not stacking order, also see bug #224600 ({{bug |296076}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Lanczos Filter broken after screen size changes ({{bug |296065}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|GHNS support for KWin Scripts ({{bug |296774}}, Review 104877)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|KConf Update Script for KWin 4.9 ({{bug |296775}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Request category for scripted KWin Effects on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org ({{bug |297634}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Request category for KWin Scripts on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org ({{bug |297635}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|GHNS support for Window Switching Layouts ({{bug |297636}}, Review 104894)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Request category for Window Switcher Layouts on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org ({{bug |297637}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Update Documentation for Window Switcher Layouts ({{bug |297638}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|ThumbnailItem allows upscaling of Windows ({{bug |297864}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Window Tab support for QML based Aurorae ({{bug |299138}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Increase ABI version for KDecorations ({{bug |299140}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Break NETWM to allow inner xinerama struts ({{bug |299247}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- END GENERATED SECTION --&amp;gt;&lt;br /&gt;
{{FeatureDone|plasma-wallpapers|Color wallpaper: add listview to display thumbnails for background mode|rshah0385@kireihana.com|Reza Fatahilah Shah}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Notifications applet to QML|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Task Manager applets to QML|hein@kde.org|Eike Hein (Sho_)}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|refresh Air Plasma theme|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Kickoff to qml|yellowcake-@gmx.net|Greg T}}&lt;br /&gt;
{{FeatureInProgress|systemsettings|Replace krandr KCM by libkscreen-based one|dvratil@redhat.com|Dan Vrátil}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port rssnow to qml|terietor@gmail.com|Giorgos Tsiapaliokas}}&lt;br /&gt;
{{FeatureInProgress|various|KActivities/SLC support for most our applications|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|first desktop SLC applet release|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureDone|System Tray|System tray with interface in QML|dmitry.ashkadov@gmail.com|Dmitry Ashkadov}}&lt;br /&gt;
{{FeatureTodo|plasma workspace|Top-rated documents for Task Manager|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|systemsettings|Keyboard layout preview|amourphious1992@gmail.com|Shivam Makkar}}&lt;br /&gt;
{{FeatureInProgress|window manager|Rework and optimize vertex specification|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|Dynamic shader generation|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|Partial port to xcb|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|New launch feedback effect|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|activities|Encrypted activities|ivan.cukic@kde.org|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;
{{FeatureTodo|FolderView|Split into PopupApplet and Containment|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|FolderView|Port to QML|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Dolphin|Implement files quick preview feature (named Klook)  |evgeniy.augin@osinit.ru|Evgeniy Auzhin}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|print-manager|New Print manager KCM and applet (plasmoid) replacement, using C++  |dantti12@gmail.com|Daniel Nicoletti}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Kate|Support for Python plugins|srhaque@theiet.org|Shaheed Haque}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Kate|Advanced gid(1) plugin using both ID files and etags|srhaque@theiet.org|Shaheed Haque}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Kate|As-you-type search for the search plugin|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Kate|Session name API for plugins + automatic ctags database naming|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Kate|Add optional document &amp;quot;minimap&amp;quot; to the Symbols view plugin|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Kate|Macro support|kdedevel@etothepiplusone.com|Simon St James}}&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;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Marble|Have support for &amp;quot;repeatX&amp;quot; in the projection classes|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Satellite Map NG|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Mars &amp;amp; Venus satellite plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Help Menu polishing / Support page inclusion|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Toolbar polishing/refactoring|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Worldwide hillshading|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Extended library API (no MarbleWidget dependency for tasks like parsing, routing)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Plasma Active|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureInProgress|Marble|Foursquare plugin|utkuaydin34@gmail.com|Utku Aydın}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Android (including SOK branch merge)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Support for loading geolocated photos (e.g. in a Gallery activity in Marble Touch)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Layer Management (by the user: Toggle layer visibility; maybe move layers from legend and layers in menus to one central place/tab)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|OSM vector rendering (GSOC branch merge)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Zoom to content of geo file after loading (at least on start-up)|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Marble|Geo files thumbnailer|kossebau@kde.org|Friedrich W. H. Kossebau}}&lt;br /&gt;
{{FeatureTodo|Rocs|Journal files for projects.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|Revisit graph export/import functionality to fully support: TGF, DOT, GML, GraphML|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Printing and image export of graphs.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Data Structure Snapshot and Recovery.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|Main Window UI Reorganization|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Visual Graph Editor Handling: copy&amp;amp;paste, data structure focus, property display|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Visual Graph Editor Edit Menu|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Code Editor Configuration Dialog|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Data Structure Backend wise iconsets and preconfigurations for types|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureDone|KTouch|Ship ktouch/next|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureTodo|KTouch|Smart resizing of training screen with aligned vertical lines|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureTodo|KTouch|Prominent hint during training if the user makes repeatedly errors|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureTodo|KTouch|Show course descriptions in course selector|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureTodo|KTouch|Show a message when keyboard layout visualizion isn't available due missing data|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureDone|Analitza|New plotting framework|percy.camilo.ta@gmail.com|Percy Camilo Triveño Aucahuasi}}&lt;br /&gt;
{{FeatureDone|KAlgebra|Splitted the QML Components from KAlgebraMobile|aleixpol@kde.org|Aleix Pol Gonzalez}}&lt;br /&gt;
{{FeatureDone|KAlgebra|New plotting plasmoid graphs, in QtQuick|aleixpol@kde.org|Aleix Pol Gonzalez}}&lt;br /&gt;
{{FeatureInProgress|Pairs|Pairs Theme editor|marco.calignano@gmail.com|Marco Calignano}}&lt;br /&gt;
{{FeatureInProgress|Cantor|Python backend|filipe@kde.org|Filipe Saraiva}}&lt;br /&gt;
{{FeatureInProgress|Kig|Mark right angles|david.narvaez@computer.org|David E. Narváez}}&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;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|libkdegames|[http://community.kde.org/KDE_Games/API_cleanup Major cleanup and rewrite] (done, except for the new highscore classes)&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'''Release team:''' please link to the [[Projects/Games/Porting_to_libkdegames_v5|porting instructions]]  for third-party developers|stefan.majewsky@googlemail.com|Stefan Majewsky}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Use KGameRenderer and QGraphicsView for all graphics: the gameplay is the same as before.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Remove the status bar. All scores and status messages are in the viewport now.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Allow the displayed speed of moves to be adjusted.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Animate multi-stage moves, to make it easier for a human player to follow their progress.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Show multi-stage moves in an order that is easier to follow.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Validate the loading of saved games and report errors.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Rewrite the main AI class and make it use a true Minimax method.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Provide a choice of two AI styles, Kepler and Newton, with the possibility to add more.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Add settings to choose computer player, AI style and skill level for either or both of players 1 and 2.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Add board sizes 3x3 and 4x4, for simplified play.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureInProgress|KSudoku|Add a simple Print facility for KSudoku puzzles.|iandw.au@gmail.com|Ian Wadham}}&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;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|libkipi|[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/dodonvictor/10002 Porting libkipi to KDE-XML GUI]|dodonvictor@gmail.com|Victor Dodon}}&lt;br /&gt;
{{FeatureInProgress|okular|Tiled rendering|okular-devel@kde.org|Okular Developers}}&lt;br /&gt;
{{FeatureInProgress|Gwenview|Recursive importer|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureInProgress|Gwenview|Color profile support|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
&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;
{{FeatureInProgress|Juk|[http://community.kde.org/Juk#Porting_plan Port Juk away from kde3support]|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
{{FeatureDone|Juk|Add lyrics view|martin.sandsmark@kde.org|Martin Sandsmark}}&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;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|KGet|Metalink/HTTP Support|dahalaishraj@gmail.com|Aish Raj Dahal}}&lt;br /&gt;
&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;
{{FeatureInProgress|Facebook resource|Include it in default install|martin.klapetek@gmail.com|Martin Klapetek}}&lt;br /&gt;
{{FeatureInProgress|Akregator2|Merge in kdepim|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Knode|Merge in KMail|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|BackupMail|Extend backup to all kdepim apps|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Sieve|Rewrite dialogbox|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|libs|Move folderview to kdepimlibs/akonadi|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|kolab-resource|Make Kolab 3.0 option available|mollekopf@kolabsys.com|Christian Mollekopf}}&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;
{{FeatureInProgress|Microblog|replace with QML version|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureInProgress|StackFolder|Add applet for quick browse the stack of folders|ural.mullabaev@rosalab.ru|Ural Mullabaev}}&lt;br /&gt;
{{FeatureInProgress|ComicStrip|Replace with QML version|rshah0385@kireihana.com|Reza Fatahilah Shah}}&lt;br /&gt;
{{FeatureInProgress|Calculator|Replace with QML version|luizromario@gmail.com|Luiz Romário Santana Rios}}&lt;br /&gt;
{{FeatureDone|QML Wallpapers|Make it possible to have animated wallpapers written in QtQuick technologies.|aleixpol@blue-systems.com|Aleix Pol Gonzalez}}&lt;br /&gt;
{{FeatureDone|Dictionary KRunner|Look up words in the dictionary by typing in 'define {word}' in krunner.|Jason@zx2c4.com|Jason A. Donenfeld}}&lt;br /&gt;
{{FeatureInProgress|Calculator|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Eyes|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|FifteenPuzzle|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Luna|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Timer|replace with QML version|bettio@kde.org|Davide Bettio}}&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|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;
|}&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;
&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;/div&gt;</summary>
		<author><name>DMaggot</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.10_Feature_Plan</id>
		<title>Schedules/KDE4/4.10 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.10_Feature_Plan"/>
				<updated>2012-10-24T18:00:12Z</updated>
		
		<summary type="html">&lt;p&gt;DMaggot: Adding a Kig feature&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the SC 4.10 release. &lt;br /&gt;
&lt;br /&gt;
See also: &lt;br /&gt;
&lt;br /&gt;
*[[Schedules/KDE4/4.10 Release Schedule]] &lt;br /&gt;
*[[Schedules/KDE4/4.9 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;
&amp;lt;b&amp;gt;NO NEW FEATURES ALLOWED&amp;lt;/b&amp;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|kio-mtp|KIO-Slave for MTP|philschmidt@gmx.net|Philipp Schmidt}}&lt;br /&gt;
{{FeatureInProgress|QML Containments|Making it possible to do full-featured containments in QML|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureInProgress|nepomuk-indexer|New Nepomuk Indexer|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureInProgress|nepomukbakcup|Nepomuk Backup rewritten from scratch|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
{{FeatureInProgress|nepomukcleaner|An application to port/clean invalid/legacy data in Nepomuk|me@vhanda.in|Vishesh Handa}}&lt;br /&gt;
&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|ksmserver|Merge the new qml based screen locker|mart@kde.org|Marco Martin}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- The following section of entries has been auto generated by ChangelogGenerator. Do not edit!&lt;br /&gt;
BEGIN GENERATED SECTION --&amp;gt;&lt;br /&gt;
{{FeatureTodo|kwin|windows that are moved to another desktop should be treated as sticky windows ({{bug |213847}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Fix fullscreen state handling: NETWM says it's bound to focus and not stacking order, also see bug #224600 ({{bug |296076}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Lanczos Filter broken after screen size changes ({{bug |296065}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|GHNS support for KWin Scripts ({{bug |296774}}, Review 104877)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|KConf Update Script for KWin 4.9 ({{bug |296775}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Request category for scripted KWin Effects on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org ({{bug |297634}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Request category for KWin Scripts on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org ({{bug |297635}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|GHNS support for Window Switching Layouts ({{bug |297636}}, Review 104894)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Request category for Window Switcher Layouts on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org ({{bug |297637}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Update Documentation for Window Switcher Layouts ({{bug |297638}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|ThumbnailItem allows upscaling of Windows ({{bug |297864}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Window Tab support for QML based Aurorae ({{bug |299138}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Increase ABI version for KDecorations ({{bug |299140}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Break NETWM to allow inner xinerama struts ({{bug |299247}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- END GENERATED SECTION --&amp;gt;&lt;br /&gt;
{{FeatureDone|plasma-wallpapers|Color wallpaper: add listview to display thumbnails for background mode|rshah0385@kireihana.com|Reza Fatahilah Shah}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Notifications applet to QML|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Task Manager applets to QML|hein@kde.org|Eike Hein (Sho_)}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|refresh Air Plasma theme|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port Kickoff to qml|yellowcake-@gmx.net|Greg T}}&lt;br /&gt;
{{FeatureInProgress|systemsettings|Replace krandr KCM by libkscreen-based one|dvratil@redhat.com|Dan Vrátil}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|Port rssnow to qml|terietor@gmail.com|Giorgos Tsiapaliokas}}&lt;br /&gt;
{{FeatureInProgress|various|KActivities/SLC support for most our applications|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|plasma workspace|first desktop SLC applet release|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureDone|System Tray|System tray with interface in QML|dmitry.ashkadov@gmail.com|Dmitry Ashkadov}}&lt;br /&gt;
{{FeatureTodo|plasma workspace|Top-rated documents for Task Manager|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureInProgress|systemsettings|Keyboard layout preview|amourphious1992@gmail.com|Shivam Makkar}}&lt;br /&gt;
{{FeatureInProgress|window manager|Rework and optimize vertex specification|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|Dynamic shader generation|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|Partial port to xcb|fredrik@kde.org|Fredrik Höglund}}&lt;br /&gt;
{{FeatureInProgress|window manager|New launch feedback effect|fredrik@kde.org|Fredrik Höglund}}&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;
{{FeatureTodo|FolderView|Split into PopupApplet and Containment|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|FolderView|Port to QML|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Dolphin|Implement files quick preview feature (named Klook)  |evgeniy.augin@osinit.ru|Evgeniy Auzhin}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|print-manager|New Print manager KCM and applet (plasmoid) replacement, using C++  |dantti12@gmail.com|Daniel Nicoletti}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Kate|Support for Python plugins|srhaque@theiet.org|Shaheed Haque}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Kate|Advanced gid(1) plugin using both ID files and etags|srhaque@theiet.org|Shaheed Haque}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Kate|As-you-type search for the search plugin|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Kate|Session name API for plugins + automatic ctags database naming|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Kate|Add optional document &amp;quot;minimap&amp;quot; to the Symbols view plugin|kare.sars@iki.fi|Kåre Särs}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Kate|Macro support|kdedevel@etothepiplusone.com|Simon St James}}&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;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Marble|Have support for &amp;quot;repeatX&amp;quot; in the projection classes|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Satellite Map NG|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Mars &amp;amp; Venus satellite plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Help Menu polishing / Support page inclusion|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Toolbar polishing/refactoring|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Worldwide hillshading|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Extended library API (no MarbleWidget dependency for tasks like parsing, routing)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Plasma Active|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureInProgress|Marble|Foursquare plugin|utkuaydin34@gmail.com|Utku Aydın}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Android (including SOK branch merge)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Support for loading geolocated photos (e.g. in a Gallery activity in Marble Touch)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Layer Management (by the user: Toggle layer visibility; maybe move layers from legend and layers in menus to one central place/tab)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|OSM vector rendering (GSOC branch merge)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Rocs|Journal files for projects.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|Revisit graph export/import functionality to fully support: TGF, DOT, GML, GraphML|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Printing and image export of graphs.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Data Structure Snapshot and Recovery.|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|Main Window UI Reorganization|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Visual Graph Editor Handling: copy&amp;amp;paste, data structure focus, property display|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Visual Graph Editor Edit Menu|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Code Editor Configuration Dialog|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|Data Structure Backend wise iconsets and preconfigurations for types|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureDone|KTouch|Ship ktouch/next|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureTodo|KTouch|Smart resizing of training screen with aligned vertical lines|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureTodo|KTouch|Prominent hint during training if the user makes repeatedly errors|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureTodo|KTouch|Show course descriptions in course selector|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureTodo|KTouch|Show a message when keyboard layout visualizion isn't available due missing data|sebastiangottfried@web.de|Sebastian Gottfried}}&lt;br /&gt;
{{FeatureDone|Analitza|New plotting framework|percy.camilo.ta@gmail.com|Percy Camilo Triveño Aucahuasi}}&lt;br /&gt;
{{FeatureDone|KAlgebra|Splitted the QML Components from KAlgebraMobile|aleixpol@kde.org|Aleix Pol Gonzalez}}&lt;br /&gt;
{{FeatureDone|KAlgebra|New plotting plasmoid graphs, in QtQuick|aleixpol@kde.org|Aleix Pol Gonzalez}}&lt;br /&gt;
{{FeatureInProgress|Pairs|Pairs Theme editor|marco.calignano@gmail.com|Marco Calignano}}&lt;br /&gt;
{{FeatureInProgress|Cantor|Python backend|filipe@kde.org|Filipe Saraiva}}&lt;br /&gt;
{{FeatureInProgress|Kig|Mark right angles|david.narvaez@computer.org|David E. Narváez}}&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;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|libkdegames|[http://community.kde.org/KDE_Games/API_cleanup Major cleanup and rewrite] (done, except for the new highscore classes)&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'''Release team:''' please link to the [[Projects/Games/Porting_to_libkdegames_v5|porting instructions]]  for third-party developers|stefan.majewsky@googlemail.com|Stefan Majewsky}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Use KGameRenderer and QGraphicsView for all graphics: the gameplay is the same as before.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Remove the status bar. All scores and status messages are in the viewport now.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Allow the displayed speed of moves to be adjusted.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Animate multi-stage moves, to make it easier for a human player to follow their progress.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Show multi-stage moves in an order that is easier to follow.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Validate the loading of saved games and report errors.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Rewrite the main AI class and make it use a true Minimax method.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Provide a choice of two AI styles, Kepler and Newton, with the possibility to add more.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Add settings to choose computer player, AI style and skill level for either or both of players 1 and 2.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KJumpingCube|Add board sizes 3x3 and 4x4, for simplified play.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureInProgress|KSudoku|Add a simple Print facility for KSudoku puzzles.|iandw.au@gmail.com|Ian Wadham}}&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;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|libkipi|[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/dodonvictor/10002 Porting libkipi to KDE-XML GUI]|dodonvictor@gmail.com|Victor Dodon}}&lt;br /&gt;
{{FeatureInProgress|okular|Tiled rendering|okular-devel@kde.org|Okular Developers}}&lt;br /&gt;
{{FeatureInProgress|Gwenview|Recursive importer|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureInProgress|Gwenview|Color profile support|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
&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;
{{FeatureInProgress|Juk|[http://community.kde.org/Juk#Porting_plan Port Juk away from kde3support]|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
{{FeatureDone|Juk|Add lyrics view|martin.sandsmark@kde.org|Martin Sandsmark}}&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;
&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;
= 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;
{{FeatureInProgress|Facebook resource|Include it in default install|martin.klapetek@gmail.com|Martin Klapetek}}&lt;br /&gt;
{{FeatureInProgress|Akregator2|Merge in kdepim|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Knode|Merge in KMail|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|BackupMail|Extend backup to all kdepim apps|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|Sieve|Rewrite dialogbox|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|libs|Move folderview to kdepimlibs/akonadi|montel@kde.org|Montel Laurent}}&lt;br /&gt;
{{FeatureInProgress|kolab-resource|Make Kolab 3.0 option available|mollekopf@kolabsys.com|Christian Mollekopf}}&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;
{{FeatureInProgress|Microblog|replace with QML version|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureInProgress|StackFolder|Add applet for quick browse the stack of folders|ural.mullabaev@rosalab.ru|Ural Mullabaev}}&lt;br /&gt;
{{FeatureInProgress|ComicStrip|Replace with QML version|rshah0385@kireihana.com|Reza Fatahilah Shah}}&lt;br /&gt;
{{FeatureInProgress|Calculator|Replace with QML version|luizromario@gmail.com|Luiz Romário Santana Rios}}&lt;br /&gt;
{{FeatureDone|QML Wallpapers|Make it possible to have animated wallpapers written in QtQuick technologies.|aleixpol@blue-systems.com|Aleix Pol Gonzalez}}&lt;br /&gt;
{{FeatureDone|Dictionary KRunner|Look up words in the dictionary by typing in 'define {word}' in krunner.|Jason@zx2c4.com|Jason A. Donenfeld}}&lt;br /&gt;
{{FeatureInProgress|Calculator|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Eyes|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|FifteenPuzzle|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Luna|replace with QML version|bettio@kde.org|Davide Bettio}}&lt;br /&gt;
{{FeatureInProgress|Timer|replace with QML version|bettio@kde.org|Davide Bettio}}&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|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;
|}&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;
&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;/div&gt;</summary>
		<author><name>DMaggot</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.9_Feature_Plan</id>
		<title>Schedules/KDE4/4.9 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.9_Feature_Plan"/>
				<updated>2012-05-26T11:51:18Z</updated>
		
		<summary type="html">&lt;p&gt;DMaggot: /* kdeedu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the SC 4.9 release. &lt;br /&gt;
&lt;br /&gt;
See also: &lt;br /&gt;
&lt;br /&gt;
*[[Schedules/KDE4/4.9 Release Schedule]] &lt;br /&gt;
*[[Schedules/KDE4/4.8 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;
{{FeatureDone|KGlobalSettings|Make KGlobalSettings reread locale settings before calling settingsChanged().|lamarque@kde.org|Lamarque V. Souza}}&lt;br /&gt;
{{FeatureDone|Kate Part|Reworked Color Configuration|dhaumann@kde.org|Dominik Haumann}}&lt;br /&gt;
{{FeatureDone|KActivities|Encryption for private activities (not available via UI).|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureDone|KActivities|Linking files to activities in Dolphin, Konqueror, Folder View.|ivan.cukic@kde.org|Ivan Čukić}}&lt;br /&gt;
{{FeatureDone|KActivities|Activities KIO.|ivan.cukic@kde.org|Ivan Čukić}}&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;
{{FeatureDone|Thumbnail|fix for bookmarks|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
&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;
{{FeatureDone|ksmserver|Port shutdown dialog to QML|lamarque@kde.org|Lamarque V. Souza}}&lt;br /&gt;
{{FeatureInProgress|ksmserver|Merge the new qml based screen locker|mart@kde.org|Marco Martin}}&lt;br /&gt;
{{FeatureDone|plasma|MPRIS2 dataengine|alex.merry@kdemail.net|Alex Merry}}&lt;br /&gt;
&amp;lt;!-- The following section of entries has been auto generated by ChangelogGenerator. Do not edit!&lt;br /&gt;
BEGIN GENERATED SECTION --&amp;gt;&lt;br /&gt;
{{FeatureTodo|kwin|windows that are moved to another desktop should be treated as sticky windows ({{bug |213847}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Fix fullscreen state handling: NETWM says it's bound to focus and not stacking order, also see bug #224600 ({{bug |296076}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Lanczos Filter broken after screen size changes ({{bug |296065}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|GHNS support for KWin Scripts ({{bug |296774}}, Review 104877)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|KConf Update Script for KWin 4.9 ({{bug |296775}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Request category for scripted KWin Effects on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org ({{bug |297634}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Request category for KWin Scripts on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org ({{bug |297635}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureInProgress|kwin|GHNS support for Window Switching Layouts ({{bug |297636}}, Review 104894)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Request category for Window Switcher Layouts on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org ({{bug |297637}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Update Documentation for Window Switcher Layouts ({{bug |297638}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|ThumbnailItem allows upscaling of Windows ({{bug |297864}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Window Tab support for QML based Aurorae ({{bug |299138}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Increase ABI version for KDecorations ({{bug |299140}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Break NETWM to allow inner xinerama struts ({{bug |299247}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Useraction menu closes when focus passes to another window ({{bug |81743}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|JJ: change focus only when moving mouse ({{bug |92290}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|JJ: kwin fulscreen / un-fullscreen system notifications ({{bug |124612}}, Review 104457)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Insufficient stacking order handling for deleted windows ({{bug |158262}}, Review 104519)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|JJ: Use arrow keys to control cover switch. ({{bug |178595}}, Review 104438)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|No reason given why some desktop effects cannot be activated ({{bug |209213}}, Review 104847)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Dragging a title bar against a bottom panel twice makes it go under the panel on the second time ({{bug |210926}})|kwin-bugs-null@kde.org}}                                                                                                                            &lt;br /&gt;
{{FeatureDone|kwin|Wobbly windows wobbles strange after quick-maximization ({{bug |222102}})|kwin-bugs-null@kde.org}}                        &lt;br /&gt;
{{FeatureDone|kwin|&amp;quot;Move&amp;quot; command should allow off-screen window moving same as Alt + click trick ({{bug |229942}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Bug with shading always inactive windows ({{bug |242217}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Change title of menu item &amp;quot;Configure window behaviour...&amp;quot; ({{bug |249486}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Task switcher message when no windows looks ugly with stars ({{bug |260938}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Placement Policy 'under mouse' ({{bug |272162}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|JJ: Synchronize Show Desktop wording in all tabbox effects ({{bug |273478}}, Review 104436)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|closing session crash ({{bug |282933}}, Review 104690)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Window Specific Settings dialog has no help function ({{bug |286783}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Add &amp;quot;Present Windows - Window Class&amp;quot; to &amp;quot;Screen Edges&amp;quot; functions ({{bug |288960}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|[JJ] Select next window with arrow key in Alt+Tab ({{bug |291916}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|KWin crashed when I was switching windows ({{bug |292614}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Kill helper should be out of process ({{bug |295940}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Synchronize user actions menu with libtaskmanager ({{bug |296056}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Different binary name for KWin Active ({{bug |296084}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Window Switcher KCM needs to be reworked ({{bug |297639}}, Review 104525)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Document global JavaScript methods in KWin Scripting API documentation ({{bug |297640}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Elevate windows in addition to highlight ({{bug |297809}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|KWin crashes when interacting with Plasma ({{bug |298669}}, Review 104714)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Add ABI check to KDecorations ({{bug |299141}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Effects cannot be configured ({{bug |299163}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Adding proper window thumbnail clipping to the QML tabbox ({{bug |299198}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Improve VSync strategy ({{bug |299274}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Screen Edge bindings for KWin Scripting ({{bug |299275}}, Review 104904)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Better QML selection list for Window Switcher layout ({{bug |299278}})|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Add layout specification to D-Bus call for invoking TabBox ({{bug |299279}}, Review 104838)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Default Bindings for Switching between Windows of current Application ({{bug |299308}}, Review 104730)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Make desktop focus chains activities aware ({{bug |299309}}, Review 104649)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Activity window rules (Review 104972) |ivan.cukic@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Desktop Zoom should be saved between sessions ({{bug |189956}}, Review 104597)|kwin-bugs-null@kde.org}}&lt;br /&gt;
&amp;lt;!-- END GENERATED SECTION --&amp;gt;&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;
{{FeatureTodo|FolderView|Refactor into PopupApplet and Containment|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
{{FeatureDone|FolderView|Show files related to an activity|ivan.cukic@kde.org|Ivan Cukic}}&lt;br /&gt;
{{FeatureDone|Dolphin|Allow to show any kind of metadata like ratings, tags, comments, image-sizes, music-artist, ... beside each item of the view.|peter.penz19@gmail.com|Peter Penz}}&lt;br /&gt;
{{FeatureDone|Dolphin|Use KMessageWidget for information- and error-messages (see http://agateau.com/2011/04/21/kde-ux-2011/ for details)|peter.penz19@gmail.com|Peter Penz}}&lt;br /&gt;
{{FeatureDone|Dolphin|Optionally remember the column-widths of the details view|peter.penz19@gmail.com|Peter Penz}}&lt;br /&gt;
{{FeatureDone|Dolphin|Allow to disable the expandable folders of the details view|peter.penz19@gmail.com|Peter Penz}}&lt;br /&gt;
{{FeatureDone|Dolphin|Implement inline renaming for the new view-engine|peter.penz19@gmail.com|Peter Penz}}&lt;br /&gt;
{{FeatureDone|Dolphin|Allow to optionally set a maximum number of lines for the icons-view|peter.penz19@gmail.com|Peter Penz}}&lt;br /&gt;
{{FeatureTodo|Dolphin|Implement files quick preview feature (named Klook)  |evgeniy.augin@osinit.ru|Evgeniy Auzhin}}&lt;br /&gt;
{{FeatureDone|Konsole|Move menubar and tabbar settings out of profile and into &amp;quot;Configure Konsole&amp;quot;|adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
{{FeatureDone|Konsole|Add command line options for controlling the visibility of menubar and tabbar|adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
{{FeatureDone|Konsole|Allow dragging tab out of current window and into its own window|adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
{{FeatureDone|Konsole|Add &amp;quot;Clone Tab&amp;quot; action for opening new tab using the same profile used by current tab |adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
{{FeatureDone|Konsole|Add &amp;quot;Change Directory To&amp;quot; action in the popup menu of drag &amp;amp; drop operation |adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
{{FeatureDone|Konsole|Allow action in the context menu for searching selected text using KDE WebShortcuts |adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
{{FeatureDone|Konsole|Provide the searching ability in konsolepart|adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
{{FeatureDone|Konsole|konsolepart can notify the hosting application(e.g, dolphin) of the changing of current directory |adaptee@gmail.com|Jekyll Wu}} &lt;br /&gt;
{{FeatureDone|Konsole|Allow changing tab title through escape sequence like &amp;quot;\e]30;Tab Title\a&amp;quot; |adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
{{FeatureDone|Konsole|Allow users to have better control of the copy &amp;amp; paste behavior of mouse within Konsole|adaptee@gmail.com|Jekyll Wu}}&lt;br /&gt;
&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;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Marble|Satellite Map NG|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Mars &amp;amp; Venus satellite plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn / Gerhard Holtkamp}}&lt;br /&gt;
{{FeatureTodo|Marble|Help Menu polishing / Support page inclusion|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Toolbar polishing/refactoring|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureTodo|Marble|Solar Eclipse Plugin|rahn@kde.org|Torsten Rahn}}&lt;br /&gt;
{{FeatureInProgress|Marble|Worldwide hillshading|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Extended library API (no MarbleWidget dependency for tasks like parsing, routing)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Plasma Active|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Android|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Support for loading geolocated photos (e.g. in a Gallery activity in Marble Touch)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Layer Management (by the user: Toggle layer visibility; maybe move layers from legend and layers in menus to one central place/tab)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureDone|Rocs|Project Files to combine graphs and algorithms|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureDone|Rocs|Extend graph data structure to support overlay graphs|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureDone|Rocs|Stepped execution of algorithms|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|General unit test cleanup and overhauling|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Rocs|New Project Wizard - guided creation based on loaded plugins|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|Project journal files|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|New Add-Node/Add-Link Toolbar for data types and pointer types|rocs-devel@kde.org|Rocs Developers}}&lt;br /&gt;
{{FeatureDone|Kig|Improve Cancel Construction and Undo actions|david.narvaez@computer.org|David E. Narváez}}&lt;br /&gt;
{{FeatureDone|Pairs|New memory game|aleixpol@kde.org|Aleix Pol Gonzalez}}&lt;br /&gt;
{{FeatureDone|KAlgebra Mobile|Many improvements, including Android and better Active support|aleixpol@kde.org|Aleix Pol Gonzalez}}&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;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|libkdegames|[http://community.kde.org/Games/API_cleanup Major cleanup and rewrite] (done, except for the new highscore classes)&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;'''Release team:''' please link to the [[Projects/Games/Porting_to_libkdegames_v5|porting instructions]]  for third-party developers|stefan.majewsky@googlemail.com|Stefan Majewsky}}&lt;br /&gt;
{{FeatureDone|Granatier|improve config UI for player and arena selection|m-hias@gmx.de|Mathias Kraus}}&lt;br /&gt;
{{FeatureDone|Kajongg|tooltips giving playings hints|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kajongg|new config option: propose what to do|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kajongg|make it possible to replay a game from a screen shot (for better debugging)|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kajongg|improve Robot AI|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kajongg|Add default voices|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kajongg|Players can chat with each other from within kajongg|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kajongg|Define a central game server, making it easier to play over the internet (no more tweaking of firewalls for the server side)|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureInProgress|Kajongg|Add support for other rule variants, starting with Classical Chinese variants|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureTodo|Kajongg|Print rulesets, also more than one in parallel for comparisons|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Add the Gold Rush II championship game (20 levels), contributed by Gabriel Miltschitzky|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KGoldrunner|Add solution files to some KGoldrunner games|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KPatience|Saved game files now include the whole game history|coates@kde.org|Parker Coates}}&lt;br /&gt;
{{FeatureDone|KSudoku|Simplify the XML descriptions of puzzle shapes|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Add XML and Desktop files for seven new two-dimensional puzzle shapes|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Add XML and Desktop files for three new three-dimensional puzzle shapes|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Improve the quality and relevance of KSudoku hints|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Make Load and Save work correctly for all puzzle types, including display of small markers/notes and restart of the puzzle clock from a saved value|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Integrate the new generator/solver and the old KSudoku code more closely|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Make puzzle features easier to see and use by improving highlighting, control and settings in both 2-D and 3-D puzzles and adding keyboard input to 3-D puzzles|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KMahjongg|Make the BoardEditor running again|Coding@Christian-Krippendorf.de|Christian Krippendorf}}&lt;br /&gt;
{{FeatureDone|KMahjongg|Implement an option for random layouts|Coding@Christian-Krippendorf.de|Christian Krippendorf}}&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;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Gwenview|Fullscreen browse|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
{{FeatureInProgress|Okular|Store annotations with documents {{bug |151614}}|okular-devel@kde.org|}}&lt;br /&gt;
{{FeatureInProgress|Okular|Print document with annotations {{bug |159005}}|okular-devel@kde.org|}}&lt;br /&gt;
{{FeatureDone|Okular|Annotations Screen support (embedded movies in PDF) {{bug |172847}}|okular-devel@kde.org|}}&lt;br /&gt;
{{FeatureDone|Okular|Aggressive page preloading {{bug |184196}}|okular-devel@kde.org|}}&lt;br /&gt;
{{FeatureDone|Okular|Hyphen-aware search {{bug |190433}}|okular-devel@kde.org|}}&lt;br /&gt;
{{FeatureDone|Okular|Multiple bookmarks per page {{bug |157198}}|okular-devel@kde.org|}}&lt;br /&gt;
{{FeatureDone|Okular|Allow the renaming of bookmark &amp;quot;parent&amp;quot; items|okular-devel@kde.org|}}&lt;br /&gt;
{{FeatureDone|Okular|Allow the page number selector to be added to the toolbar {{bug |279128}}|okular-devel@kde.org|}}&lt;br /&gt;
{{FeatureDone|Okular|Double click to select workds {{bug |187347}}|okular-devel@kde.org|}}&lt;br /&gt;
{{FeatureDone|Okular|Make Okular inhibit sleep and screen power management when in Presentation mode|okular-devel@kde.org|}}&lt;br /&gt;
{{FeatureDone|Okular|Behavior for left/right arrow keys (Review 104596)|okular-devel@kde.org|}}&lt;br /&gt;
{{FeatureDone|Okular|Remember the mouse mode on exit|okular-devel@kde.org|}}&lt;br /&gt;
{{FeatureDone|Okular|Make search from the current page the default|okular-devel@kde.org|}}&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;
{{FeatureDone|JuK|last.fm scrobbling|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
{{FeatureDone|JuK|cover-fetching from last.fm|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
{{FeatureDone|JuK|MPRIS2 support|alex.merry@kmail.net|Alex Merry}}&lt;br /&gt;
{{FeatureDone|JuK|MPRIS2 support|hein@kde.org|Eike Hein}}&lt;br /&gt;
{{FeatureDone|Dragon|MPRIS2 support|hein@kde.org|Eike Hein}}&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;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureDone|Kopete|Add option to group all offline users into a &amp;quot;Offline Users&amp;quot; group|kopete-devel@kde.org|Kopete Developers}}&lt;br /&gt;
{{FeatureDone|Kopete|Show contact's status change in chat window|igor.poboiko@gmail.com|Igor Poboiko}}&lt;br /&gt;
{{FeatureDone|Kopete|Add context option &amp;quot;rename&amp;quot; to contacts and allow changing custom display name inline.|kopete-devel@kde.org|Kopete Developers}}&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;
{{FeatureDone|Akonadi Google Resources|Move contacts and calendars resources from Akonadi Google project to kdepim-runtime|dan@progdan.cz|Dan Vratil}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|KTnef|Bring back KTnef from the KDE3 days. KTnef is a standalone TNEF attachment viewer|winter@kde.org|Allen Winter}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Akonadi Kolab Resources|Kolab resource using the Kolab libraries to kdepim-runtime|chrigi_1@fastmail.fm|Christian Mollekopf}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Extend Akonotes Format|Extend the akonotes format to support features required by zanshin and kolab|chrigi_1@fastmail.fm|Christian Mollekopf}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Import pim data|ImportWizard allows to import settings/mails/filters/calendar/addressbook from thunderbird/evolution/etc. when exists.|montel@kde.org|Laurent Montel}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Archive Mail Agent|Archive Mail Agent archives your mail folders on a scheduled basis.|montel@kde.org|Laurent Montel}}&lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Backup Mail|Backup Mail saves/restores mail config/config (akonadi)/database nepomuk/resources etc.|montel@kde.org|Laurent Montel}}&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;
{{FeatureDone|Now Playing|replace with QML version|alex.merry@kdemail.net|Alex Merry}}&lt;br /&gt;
{{FeatureInProgress|Microblog|replace with QML version|sebas@kde.org|Sebastian Kügler}}&lt;br /&gt;
{{FeatureInProgress|StackFolder|Add applet for quick browse the stack of folders|ural.mullabaev@rosalab.ru|Ural Mullabaev}}&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|Lokalize|Optimize TM fuzzy searching||Nick Shaforostoff}}&lt;br /&gt;
{{FeatureDone|Lokalize|File search tab||Nick Shaforostoff}}&lt;br /&gt;
{{FeatureTodo|Lokalize|.ts support||Nick Shaforostoff}}&lt;br /&gt;
{{FeatureInProgress|Umbrello|diagram auto layout support|ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
{{FeatureInProgress|Umbrello|diagram graphviz dot export |ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
{{FeatureDone|Thumbnail|PO thumbnailer|shuizhuyuanluo@126.com|Ni Hui}}&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;
&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;/div&gt;</summary>
		<author><name>DMaggot</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Schedules/KDE4/4.9_Feature_Plan</id>
		<title>Schedules/KDE4/4.9 Feature Plan</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/KDE4/4.9_Feature_Plan"/>
				<updated>2012-04-13T03:38:06Z</updated>
		
		<summary type="html">&lt;p&gt;DMaggot: /* kdeedu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of planned features for the SC 4.9 release. &lt;br /&gt;
&lt;br /&gt;
See also: &lt;br /&gt;
&lt;br /&gt;
*[[Schedules/KDE4/4.9 Release Schedule]] &lt;br /&gt;
*[[Schedules/KDE4/4.8 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;
{{FeatureDone|KGlobalSettings|Make KGlobalSettings reread locale settings before calling settingsChanged().|lamarque@kde.org|Lamarque V. Souza}}&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;
|}&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;
{{FeatureDone|ksmserver|Port shutdown dialog to QML|lamarque@kde.org|Lamarque V. Souza}}&lt;br /&gt;
&amp;lt;!-- The following section of entries has been auto generated by ChangelogGenerator. Do not edit!&lt;br /&gt;
BEGIN GENERATED SECTION --&amp;gt;&lt;br /&gt;
{{FeatureTodo|kwin|&amp;quot;Move&amp;quot; command should allow off-screen window moving same as Alt + click trick (Bug 229942)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Quick Tile shortcuts should be toggle buttons (Bug 263755)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Display application menu and title bar side by side for maximized windows (Bug 102607)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Insufficient stacking order handling for deleted windows (Bug 158262)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|No reason given why some desktop effects cannot be activated (Bug 209213)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Add support for appmenu-qt (Bug 266596)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Placement Policy 'under mouse' (Bug 272162)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Kill helper should be out of process (Bug 295940)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Decoration KCM should show comment for decoration (Bug 296041)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Lanczos Filter broken after screen size changes (Bug 296065)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|DesktopThumbnailItem for QML (Bug 296067)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Packages for Desktop Switching Layouts (Bug 296068)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Walk Through Desktop layout rendering desktop previews (Bug 296069)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Move ThumbnailBar from BoxSwitch to CoverSwitch (Bug 296070)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Drop BoxSwitch effect (Bug 296071)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Different binary name for KWin Active (Bug 296084)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Import Scripted Effect from All Effets Tab (Bug 296772)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|GHNS support for Scripted Effects (Bug 296773)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|GHNS support for KWin Scripts (Bug 296774)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|KConf Update Script for KWin 4.9 (Bug 296775)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Long caption in Thumbnail layout overlaps box for only one item (Bug 297028)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Request category for scripted KWin Effects on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org (Bug 297634)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Request category for KWin Scripts on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org (Bug 297635)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|GHNS support for Window Switching Layouts (Bug 297636)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Request category for Window Switcher Layouts on kde-(look&amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt;app).org (Bug 297637)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Update Documentation for Window Switcher Layouts (Bug 297638)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Window Switcher KCM needs to be reworked (Bug 297639)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureTodo|kwin|Document global JavaScript methods in KWin Scripting API documentation (Bug 297640)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|JJ: kwin fulscreen / un-fullscreen system notifications (Bug 124612)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|JJ: Use arrow keys to control cover switch. (Bug 178595)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Change title of menu item &amp;quot;Configure window behaviour...&amp;quot; (Bug 249486)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Task switcher message when no windows looks ugly with stars (Bug 260938)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|JJ: Synchronize Show Desktop wording in all tabbox effects (Bug 273478)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Window Specific Settings dialog has no help function (Bug 286783)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Add &amp;quot;Present Windows - Window Class&amp;quot; to &amp;quot;Screen Edges&amp;quot; functions (Bug 288960)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|[JJ] Select next window with arrow key in Alt+Tab (Bug 291916)|kwin-bugs-null@kde.org}}&lt;br /&gt;
{{FeatureDone|kwin|Synchronize user actions menu with libtaskmanager (Bug 296056)|kwin-bugs-null@kde.org}}&lt;br /&gt;
&amp;lt;!-- END GENERATED SECTION --&amp;gt;&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;
{{FeatureTodo|FolderView|Refactor into PopupApplet and Containment|ignat.semenov@blue-systems.com|Ignat Semenov}}&lt;br /&gt;
{{FeatureInProgress|Dolphin|Allow to show any kind of metadata like ratings, tags, comments, image-sizes, music-artist, ... beside each item of the view.|peter.penz19@gmail.com|Peter Penz}}&lt;br /&gt;
{{FeatureInProgress|Dolphin|Use KMessageWidget for information- and error-messages (see http://agateau.com/2011/04/21/kde-ux-2011/ for details)|peter.penz19@gmail.com|Peter Penz}}&lt;br /&gt;
{{FeatureDone|Dolphin|Optionally remember the column-widths of the details view|peter.penz19@gmail.com|Peter Penz}}&lt;br /&gt;
{{FeatureDone|Dolphin|Allow to disable the expandable folders of the details view|peter.penz19@gmail.com|Peter Penz}}&lt;br /&gt;
{{FeatureTodo|Dolphin|Implement inline renaming for the new view-engine|peter.penz19@gmail.com|Peter Penz}}&lt;br /&gt;
{{FeatureTodo|Dolphin|Allow to optionally set a maximum number of lines for the icons-view|peter.penz19@gmail.com|Peter Penz}}&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;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureInProgress|Marble|Worldwide hillshading|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Extended library API (no MarbleWidget dependency for tasks like parsing, routing)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Plasma Active|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Marble Touch on Android|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Support for loading geolocated photos (e.g. in a Gallery activity in Marble Touch)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureTodo|Marble|Layer Management (by the user: Toggle layer visibility; maybe move layers from legend and layers in menus to one central place/tab)|earthwings@gentoo.org|Dennis Nienhüser}}&lt;br /&gt;
{{FeatureInProgress|Rocs|Project Files to combine graphs and algorithms|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureDone|Rocs|Extend graph data structure to support overlay graphs|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureDone|Rocs|Stepped execution of algorithms|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureInProgress|Rocs|General unit test cleanup and overhauling|cola@uni-paderborn.de|Andreas Cord-Landwehr}}&lt;br /&gt;
{{FeatureTodo|Kig|Improve Cancel Construction and Undo actions|david.narvaez@computer.org|David E. Narváez}}&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;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureDone|Kajongg|tooltips giving playings hints|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kajongg|new config option: propose what to do|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kajongg|make it possible to replay a game from a screen shot (for better debugging)|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kajongg|improve Robot AI|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kajongg|Add default voices|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kajongg|Players can chat with each other from within kajongg|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureDone|Kajongg|Define a central game server, making it easier to play over the internet (no more tweaking of firewalls for the server side)|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureInProgress|Kajongg|Add support for other rule variants, starting with Classical Chinese variants|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureTodo|Kajongg|Print rulesets, also more than one in parallel for comparisons|wolfgang@rohdewald.de|Wolfgang Rohdewald}}&lt;br /&gt;
{{FeatureInProgress|libkdegames|[http://community.kde.org/Games/API_cleanup Major cleanup and rewrite]|stefan.majewsky@googlemail.com|Stefan Majewsky}}&lt;br /&gt;
{{FeatureInProgress|KGoldrunner|Add the Gold Rush II championship game (20 levels), contributed by Gabriel Miltschitzky|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureTodo|KGoldrunner|Add solution files to some KGoldrunner games, possibly using Get Hot New Stuff|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Simplify the XML descriptions of puzzle shapes|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Add XML and Desktop files for seven new two-dimensional puzzle shapes|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Add XML and Desktop files for three new three-dimensional puzzle shapes|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Improve the quality and relevance of KSudoku hints|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Make Load and Save work correctly for all puzzle types, including display of small markers/notes and restart of the puzzle clock from a saved value|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Integrate the new generator/solver and the old KSudoku code more closely|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureDone|KSudoku|Make puzzle features easier to see and use by improving highlighting, control and settings in both 2-D and 3-D puzzles and adding keyboard input to 3-D puzzles|iandw.au@gmail.com|Ian Wadham}}&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;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
&lt;br /&gt;
{{FeatureTodo|Gwenview|Fullscreen browse|agateau@kde.org|Aurélien Gâteau}}&lt;br /&gt;
&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;
{{FeatureDone|JuK|last.fm scrobbling|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
{{FeatureDone|JuK|cover-fetching from last.fm|martin.sandsmark@kde.org|Martin Sandsmark}}&lt;br /&gt;
&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;
&lt;br /&gt;
! Status &lt;br /&gt;
! Project &lt;br /&gt;
! Description &lt;br /&gt;
! Contact &lt;br /&gt;
{{FeatureDone|Kopete|Add option to group all offline users into a &amp;quot;Offline Users&amp;quot; group|kopete-devel@kde.org|Kopete Developers}}&lt;br /&gt;
{{FeatureDone|Kopete|Show contact's status change in chat window|igor.poboiko@gmail.com|Igor Poboiko}}&lt;br /&gt;
{{FeatureDone|Kopete|Add context option &amp;quot;rename&amp;quot; to contacts and allow changing custom display name inline.|kopete-devel@kde.org|Kopete Developers}}&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|Akonadi Google Resources|Move contacts and calendars resources from Akonadi Google project to kdepim-runtime|dan@progdan.cz|Dan Vratil}}&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;
|}&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|Lokalize|Optimize TM fuzzy searching||Nick Shaforostoff}}&lt;br /&gt;
{{FeatureDone|Lokalize|File search tab||Nick Shaforostoff}}&lt;br /&gt;
{{FeatureTodo|Lokalize|.ts support||Nick Shaforostoff}}&lt;br /&gt;
{{FeatureInProgress|Umbrello|diagram auto layout support|ralf.habacker@freenet.de|Ralf Habacker}}&lt;br /&gt;
{{FeatureInProgress|Umbrello|diagram graphviz dot export |ralf.habacker@freenet.de|Ralf Habacker}}&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;
&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;/div&gt;</summary>
		<author><name>DMaggot</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/KigPlans</id>
		<title>KigPlans</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/KigPlans"/>
				<updated>2012-04-12T04:52:44Z</updated>
		
		<summary type="html">&lt;p&gt;DMaggot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lets use this wiki entry tu discuss future plans for Kig. From the discussion here, we can create a feature list for KDE 4.9 and start working on that. Some of the ideas that have been collected so far are:&lt;br /&gt;
&lt;br /&gt;
* Better Undo/Cancel Construction implementatinos (see [https://bugs.kde.org/show_bug.cgi?id=229558 bug 229558], [https://bugs.kde.org/show_bug.cgi?id=297484 bug 297484])&lt;br /&gt;
* Antialiasing (see [https://bugs.kde.org/show_bug.cgi?id=122376 bug 122376]). This is actually a one-line patch, the real question is who's against and why.&lt;br /&gt;
* Add support for hyperbolic geometries, but this is a large topic and would take a good amount of work. Here is some work on [http://raoul.koalatux.ch/sites/hyperbolic_geometry/hyperbolic_geometry.html building an asymptote package for drawing in the Poincare disk].&lt;br /&gt;
* More work on Asy and Tikz/PGF exporters, fixing bugs and fill out the remaining holes.&lt;br /&gt;
* More flexible grids. We do not have any export options for polar grids. Maybe make grids more like the geometric objects.&lt;br /&gt;
* Review edge cases in file parsing&lt;br /&gt;
* Review bugs in windows&lt;br /&gt;
* Check this [https://bugs.kde.org/show_bug.cgi?id=122443 KFormula integration request], interesting&lt;/div&gt;</summary>
		<author><name>DMaggot</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/KigPlans</id>
		<title>KigPlans</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/KigPlans"/>
				<updated>2012-04-12T04:52:10Z</updated>
		
		<summary type="html">&lt;p&gt;DMaggot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Some of the ideas that have been collected so far are:&lt;br /&gt;
&lt;br /&gt;
* Better Undo/Cancel Construction implementatinos (see [https://bugs.kde.org/show_bug.cgi?id=229558 bug 229558], [https://bugs.kde.org/show_bug.cgi?id=297484 bug 297484])&lt;br /&gt;
* Antialiasing (see [https://bugs.kde.org/show_bug.cgi?id=122376 bug 122376]). This is actually a one-line patch, the real question is who's against and why.&lt;br /&gt;
* Add support for hyperbolic geometries, but this is a large topic and would take a good amount of work. Here is some work on [http://raoul.koalatux.ch/sites/hyperbolic_geometry/hyperbolic_geometry.html building an asymptote package for drawing in the Poincare disk].&lt;br /&gt;
* More work on Asy and Tikz/PGF exporters, fixing bugs and fill out the remaining holes.&lt;br /&gt;
* More flexible grids. We do not have any export options for polar grids. Maybe make grids more like the geometric objects.&lt;br /&gt;
* Review edge cases in file parsing&lt;br /&gt;
* Review bugs in windows&lt;br /&gt;
* Check this [https://bugs.kde.org/show_bug.cgi?id=122443 KFormula integration request], interesting&lt;/div&gt;</summary>
		<author><name>DMaggot</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/KigPlans</id>
		<title>KigPlans</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/KigPlans"/>
				<updated>2012-04-12T04:23:29Z</updated>
		
		<summary type="html">&lt;p&gt;DMaggot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Some of the ideas that have been collected so far are:&lt;br /&gt;
&lt;br /&gt;
* Better Undo/Cancel Construction implementatinos (see [https://bugs.kde.org/show_bug.cgi?id=229558 bug 229558], [https://bugs.kde.org/show_bug.cgi?id=297484 bug 297484])&lt;br /&gt;
* Antialiasing (see [https://bugs.kde.org/show_bug.cgi?id=122376 bug 122376])&lt;br /&gt;
* Add support for hyperbolic geometries, but this is a large topic and would take a good amount of work. Here is some work on [http://raoul.koalatux.ch/sites/hyperbolic_geometry/hyperbolic_geometry.html building an asymptote package for drawing in the Poincare disk].&lt;br /&gt;
* More work on Asy and Tikz/PGF exporters, fixing bugs and fill out the remaining holes.&lt;br /&gt;
* More flexible grids. We do not have any export options for polar grids. Maybe make grids more like the geometric objects.&lt;br /&gt;
* Review edge cases in file parsing&lt;br /&gt;
* Review bugs in windows&lt;br /&gt;
* Check this [https://bugs.kde.org/show_bug.cgi?id=122443 KFormula integration request], interesting&lt;/div&gt;</summary>
		<author><name>DMaggot</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/KigPlans</id>
		<title>KigPlans</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/KigPlans"/>
				<updated>2012-04-12T04:03:38Z</updated>
		
		<summary type="html">&lt;p&gt;DMaggot: Lets use this wiki entry tu discuss future plans for Kig. From the discussion here, we can create a feature list for KDE 4.9 and start working on that.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Some of the ideas that have been collected so far are:&lt;br /&gt;
&lt;br /&gt;
* Better Undo/Cancel Construction implementatinos (see [https://bugs.kde.org/show_bug.cgi?id=229558 bug 229558], [https://bugs.kde.org/show_bug.cgi?id=297484 bug 297484])&lt;br /&gt;
&lt;br /&gt;
* Antialiasing (see [https://bugs.kde.org/show_bug.cgi?id=122376 bug 122376])&lt;br /&gt;
&lt;br /&gt;
* Add support for hyperbolic geometries, but this is a large topic and would take a good amount of work. Here is some work on [http://raoul.koalatux.ch/sites/hyperbolic_geometry/hyperbolic_geometry.html building an asymptote package for drawing in the Poincare disk].&lt;br /&gt;
&lt;br /&gt;
* More work on Asy and Tikz/PGF exporters, fixing bugs and fill out the remaining holes.&lt;br /&gt;
&lt;br /&gt;
* More flexible grids. We do not have any export options for polar grids. Maybe make grids more like the geometric objects.&lt;br /&gt;
&lt;br /&gt;
* Review edge cases in file parsing&lt;/div&gt;</summary>
		<author><name>DMaggot</name></author>	</entry>

	</feed>