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

	<entry>
		<id>http://techbase.kde.org/Schedules/Extragear</id>
		<title>Schedules/Extragear</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Schedules/Extragear"/>
				<updated>2013-01-24T23:23:51Z</updated>
		
		<summary type="html">&lt;p&gt;Sandsmark: added mangonel&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is intended to be a central location for Extragear projects to keep users and contributors (translators, packagers, etc.) informed about upcoming releases in a very accessible way. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Project &lt;br /&gt;
! Next release (roughly) &lt;br /&gt;
! Next Release Code branch &lt;br /&gt;
! Next Release Translation branch &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| K3b &lt;br /&gt;
| 1 March 2010&lt;br /&gt;
| [http://websvn.kde.org/trunk/extragear/multimedia/k3b/ trunk]&lt;br /&gt;
| [http://websvn.kde.org/trunk/l10n-kde4/templates/messages/extragear-multimedia/ trunk kde4]&lt;br /&gt;
| String freeze starting from January 31 2010 (in effect)&lt;br /&gt;
|-&lt;br /&gt;
| KAudiocreator &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Kaffeine &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://extragear.kde.org/apps/kcoloredit/ KColorEdit] &lt;br /&gt;
| KDE release &lt;br /&gt;
| [http://websvn.kde.org/trunk/extragear/graphics/kcoloredit/ trunk] &lt;br /&gt;
| [http://websvn.kde.org/trunk/l10n-kde4/templates/messages/extragear-graphics/ trunk kde4] &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://www.kde-apps.org/content/show.php/KDE+Partition+Manager?content=89595 KDE Partition Manager] &lt;br /&gt;
| Q2/2010&lt;br /&gt;
| [http://websvn.kde.org/trunk/extragear/sysadmin/partitionmanager/ trunk] &lt;br /&gt;
| [http://websvn.kde.org/trunk/l10n-kde4/templates/messages/extragear-sysadmin/ trunk kde4] &lt;br /&gt;
| &amp;lt;!-- String freeze in effect --&amp;gt; &lt;br /&gt;
|-&lt;br /&gt;
| [http://ww.kdevelop.org KDevelop] &lt;br /&gt;
| 1 May 2010 &lt;br /&gt;
| [http://websvn.kde.org/trunk/extragear/sdk/kdevelop/ trunk]&lt;br /&gt;
| [http://websvn.kde.org/trunk/l10n-kde4/templates/messages/extragear-sdk/ trunk kde4] &lt;br /&gt;
| string freeze starting 31 March 2010&lt;br /&gt;
|-&lt;br /&gt;
| KDiff3 &lt;br /&gt;
| January 31, 2009 &lt;br /&gt;
| [http://websvn.kde.org/trunk/extragear/utils/kdiff3/ trunk] &lt;br /&gt;
| [http://websvn.kde.org/trunk/l10n-kde4/templates/messages/extragear-utils/ trunk kde4] &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| KFax &lt;br /&gt;
| KDE release &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| KFTPGrabber &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| KGrab &lt;br /&gt;
| KDE release &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://extragear.kde.org/apps/kgraphviewer/ KGraphViewer] &lt;br /&gt;
| KDE release &lt;br /&gt;
| [http://websvn.kde.org/trunk/extragear/graphics/kgraphviewer/ trunk] &lt;br /&gt;
| [http://websvn.kde.org/trunk/l10n-kde4/templates/messages/extragear-graphics/ trunk kde4] &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| KIconedit &lt;br /&gt;
| KDE release &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://www.kmldonkey.org KMLDonkey] &lt;br /&gt;
| KDE release &lt;br /&gt;
| [http://websvn.kde.org/trunk/extragear/network/kmldonkey/ trunk] &lt;br /&gt;
| [http://websvn.kde.org/trunk/l10n-kde4/templates/messages/extragear-network/ trunk kde4] &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| KNemo &lt;br /&gt;
| January 17, 2010 &lt;br /&gt;
| [http://websvn.kde.org/trunk/extragear/network/knemo/ trunk] &lt;br /&gt;
| [http://websvn.kde.org/trunk/l10n-kde4/templates/messages/extragear-network/ trunk kde4] &lt;br /&gt;
| String freeze in effect &lt;br /&gt;
|-&lt;br /&gt;
| KPager &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| KPhotoalbum &lt;br /&gt;
| May 9 2009 &lt;br /&gt;
| trunk &lt;br /&gt;
| trunk &lt;br /&gt;
| Message freeze, April 3 2009&lt;br /&gt;
|-&lt;br /&gt;
| KPlayer &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| KPovmodeler &lt;br /&gt;
| KDE release &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| KRecipes &lt;br /&gt;
| 2.0, date unknown&lt;br /&gt;
| [https://projects.kde.org/projects/extragear/utils/krecipes/repository/?rev=2.0 git 2.0]&lt;br /&gt;
| [http://websvn.kde.org/branches/stable/l10n-kde4/templates/messages/extragear-utils/ stable]&lt;br /&gt;
| GUI strings frozen, docs ''not'' frozen&lt;br /&gt;
|-&lt;br /&gt;
| KSig &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://ktorrent.org/ KTorrent] &lt;br /&gt;
| 8 november 2009 &lt;br /&gt;
| [http://websvn.kde.org/branches/stable/extragear-kde4/network/ktorrent stable kde4] &lt;br /&gt;
| [http://websvn.kde.org/branches/stable/l10n-kde4/templates/messages/extragear-network/ stable kde4] &lt;br /&gt;
| String freeze in effect&lt;br /&gt;
|-&lt;br /&gt;
| Kuickshow &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Muon Suite&lt;br /&gt;
| Final Release: August 2012, pre-releases monthly&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| KWlan &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| RSIBreak &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Skanlite &lt;br /&gt;
| KDE release &lt;br /&gt;
| trunk &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://skrooge.org Skrooge] &lt;br /&gt;
| 2010-02-06 (version 0.6.0) &lt;br /&gt;
| [http://websvn.kde.org/trunk/extragear/office/skrooge trunk]&lt;br /&gt;
| [http://websvn.kde.org/trunk/l10n-kde4/templates/messages/extragear-office/ trunk kde4]&lt;br /&gt;
| String freeze in effect&lt;br /&gt;
|-&lt;br /&gt;
| Kile&lt;br /&gt;
| June 8th, 2011 (Version 2.1)&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| String freeze started 23 May 2011&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.krusader.org/ Krusader] &lt;br /&gt;
| 2.4.0-beta1 released on June 26, 2011.&lt;br /&gt;
| [http://websvn.kde.org/trunk/extragear/utils/krusader/ trunk] &lt;br /&gt;
| [http://websvn.kde.org/trunk/l10n-kde4/templates/messages/extragear-utils/ trunk kde4] &lt;br /&gt;
| String freeze since June 26, 2011 until 2.4.0 release.&lt;br /&gt;
|-&lt;br /&gt;
| BlueDevil&lt;br /&gt;
| 1.0.5 (stable) and 1.1.1 (trunk) released planned on July 15, 2011.&lt;br /&gt;
| &lt;br /&gt;
| stable, trunk&lt;br /&gt;
| String freeze since June 29, 2011 until 1.0.5 and 1.1.1 releases.&lt;br /&gt;
|-&lt;br /&gt;
| [http://amarok.kde.org/ Amarok] &lt;br /&gt;
| Early 2013&lt;br /&gt;
| git master &lt;br /&gt;
|  [http://websvn.kde.org/trunk/l10n-kde4/templates/messages/extragear-multimedia/ trunk kde4]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://digikam.org digiKam] &lt;br /&gt;
| July 27th 2011 [http://www.digikam.org/drupal/about/releaseplan] &lt;br /&gt;
| [https://projects.kde.org/projects/extragear/graphics git master] &lt;br /&gt;
| [http://websvn.kde.org/trunk/l10n-kde4/templates/messages/extragear-graphics/ trunk kde4] &lt;br /&gt;
| String freeze starting June 30th 2011.&lt;br /&gt;
|-&lt;br /&gt;
| [http://techbase.kde.org/Projects/KMyMoney KMyMoney] &lt;br /&gt;
| 4.6.1 from Stable around November 5th, 2011 &lt;br /&gt;
| [http://websvn.kde.org/trunk/extragear/office/kmymoney/ trunk] &lt;br /&gt;
| [http://websvn.kde.org/trunk/l10n-kde4/templates/messages/extragear-office/ trunk kde4] &lt;br /&gt;
| String freeze started October 22nd, 2011&lt;br /&gt;
|-&lt;br /&gt;
| massif-visualizer&lt;br /&gt;
| 0.3 is planned to be released on September 4, 2011&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| String freeze started on August 8, 2011&lt;br /&gt;
|-&lt;br /&gt;
| [http://tellico-project.org Tellico] &lt;br /&gt;
| 2.3.4&lt;br /&gt;
| [http://websvn.kde.org/trunk/extragear/office/tellico/ trunk] &lt;br /&gt;
| [http://websvn.kde.org/trunk/l10n-kde4/templates/messages/extragear-office/ trunk kde4] &lt;br /&gt;
| String freeze: September 5th, 2011 -- September 18th, 2011.&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.rekonq.sourceforge.net rekonq] &lt;br /&gt;
| ~ October 11, 2011 (Version 0.8)&lt;br /&gt;
| [http://gitorious.org/rekonq/mainline/trees/master git master]&lt;br /&gt;
| [http://gitorious.org/rekonq/mainline/trees/master git master]&lt;br /&gt;
| String freeze for 3 weeks starting September 21, 2011 (0.8 release)&lt;br /&gt;
|-&lt;br /&gt;
| KDE Telepathy&lt;br /&gt;
| November 18th, 2011 (version 0.2)&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| String freeze starting October 26th, 2011.&lt;br /&gt;
|-&lt;br /&gt;
| Calligra&lt;br /&gt;
| Calligra 2.6 planned for December 2012&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| String freeze starting October 12th, 2011.&lt;br /&gt;
|-&lt;br /&gt;
| [http://konversation.kde.org Konversation] &lt;br /&gt;
| In the first week of December, 2011&lt;br /&gt;
| [http://gitorious.org/konversation/konversation/trees/master git master] &lt;br /&gt;
| [http://websvn.kde.org/trunk/l10n-kde4/templates/messages/extragear-network/ trunk kde4] &lt;br /&gt;
| String freeze started on November 17th, 2011.&lt;br /&gt;
|-&lt;br /&gt;
| Wicd Client KDE&lt;br /&gt;
| 17th of December, 2011 (version 0.3)&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| String freeze started on December 6th, 2011.&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.kde-apps.org/content/show.php?content=29153 Yakuake] &lt;br /&gt;
| Week 42&lt;br /&gt;
| [http://quickgit.kde.org/index.php?p=yakuake.git&amp;amp;a=tree master] &lt;br /&gt;
| [http://websvn.kde.org/trunk/l10n-kde4/templates/messages/extragear-utils/ trunk kde4] &lt;br /&gt;
| String freeze started October 8th, 2012&lt;br /&gt;
|-&lt;br /&gt;
| [http://kde-apps.org/content/show.php/?content=136681 Mangonel] &lt;br /&gt;
| February 3. 2012&lt;br /&gt;
| [http://quickgit.kde.org/?p=mangonel.git&amp;amp;a=tree master] &lt;br /&gt;
| [http://websvn.kde.org/trunk/l10n-kde4/templates/messages/extragear-base/ trunk kde4] &lt;br /&gt;
| String freeze started January 24. 2012&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Sandsmark</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Policies/Library_Code_Policy</id>
		<title>Policies/Library Code Policy</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Policies/Library_Code_Policy"/>
				<updated>2012-12-17T13:09:21Z</updated>
		
		<summary type="html">&lt;p&gt;Sandsmark: gotcha for qshareddata&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document describes some of the recommended conventions that should be applied in the KDE libraries (not applications). Respecting these guidelines helps create a consistant API and also may help ease maintainence of the libraries later. While these conventions are not mandatory, they are important guidelines, and should be respected unless you have a good reason to disregard them.&lt;br /&gt;
&lt;br /&gt;
As an introduction, you should read the document [http://wiki.qt-project.org/index.php?title=API_Design_Principles Qt-Style C++ API Design Principles].&lt;br /&gt;
&lt;br /&gt;
For kdelibs, it is recommended to follow the [[Policies/Kdelibs_Coding_Style | Kdelibs Coding Style]].&lt;br /&gt;
&lt;br /&gt;
== Naming Conventions ==&lt;br /&gt;
In KDE, we basically follow the same naming conventions as Qt.&lt;br /&gt;
&lt;br /&gt;
Class names starts with a capital K. The rest is in camel case. Function names starts with a lower case, but the first letter of each successive word is capitalized.&lt;br /&gt;
&lt;br /&gt;
Unless dealing with central libraries (kdecore, kdeui), classes should be in the library namespace. In that case, it is the namespace which starts with K and the classes inside may not start with it. New libraries should choose their namespace.&lt;br /&gt;
&lt;br /&gt;
The prefix 'set' is used for setters, but the prefix ''''get'''' is not used for accessors. Accessors are simply named with the name of the property they access. The exception is for accessors of a boolean which may start with the prefix ''''is''''.&lt;br /&gt;
&lt;br /&gt;
Acronyms are lowercased too. Example:&lt;br /&gt;
&amp;lt;tt&amp;gt;KUrl&amp;lt;/tt&amp;gt; instead of &amp;lt;tt&amp;gt;KURL&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;isNssEnabled()&amp;lt;/tt&amp;gt; instead of &amp;lt;tt&amp;gt;isNSSEnabled()&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Accessors should usually be &amp;lt;tt&amp;gt;const&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
This example shows some possible functions names&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
public:&lt;br /&gt;
    void setColor(const QColor&amp;amp; c);&lt;br /&gt;
    QColor color() const;&lt;br /&gt;
    void setDirty(bool b);&lt;br /&gt;
    bool isDirty() const;&lt;br /&gt;
&lt;br /&gt;
private Q_SLOTS:&lt;br /&gt;
    void slotParentChanged();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Make one public class for every .h file. Add the &amp;lt;tt&amp;gt;_EXPORT&amp;lt;/tt&amp;gt; macro related to the library they are in.&lt;br /&gt;
Private classes should be declared in the .cpp file, or in a _p.h file.&lt;br /&gt;
&lt;br /&gt;
== D-Pointers ==&lt;br /&gt;
In order to more easily maintain binary compatibility, there shouldn't be private members in a public class. For more information about binary compatibility, read [[Policies/Binary_Compatibility_Issues_With_C++|Binary Compatibility Issues With C++]].&lt;br /&gt;
&lt;br /&gt;
By convention, the private class will be named the same as the public class, with &amp;lt;tt&amp;gt;Private&amp;lt;/tt&amp;gt; appended to the name.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
class KFooPrivate;&lt;br /&gt;
class KFoo&lt;br /&gt;
{&lt;br /&gt;
public:&lt;br /&gt;
    /* public members */&lt;br /&gt;
private:&lt;br /&gt;
    const QScopedPointer&amp;lt;KFooPrivate&amp;gt; d;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
In the .cpp file:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
class KFooPrivate&lt;br /&gt;
{&lt;br /&gt;
    public:&lt;br /&gt;
        int someInteger;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
KFoo::KFoo() : d(new KFooPrivate)&lt;br /&gt;
{&lt;br /&gt;
    /* ... */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
KFoo::~KFoo()&lt;br /&gt;
{ &lt;br /&gt;
 // You must define a non-inline destructor in the .cpp file, even if it is empty&lt;br /&gt;
 // else, a default one will be built in placed where KFooPrivate is only forward&lt;br /&gt;
 // declare, leading to error in the destructor of QScopedPointer&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Notice that the member d is &amp;lt;tt&amp;gt;const&amp;lt;/tt&amp;gt; to avoid modifying it by mistake.&lt;br /&gt;
&lt;br /&gt;
If you are implementing an implicitly shared class, you should consider using {{qt|QSharedData}} and {{qt|QSharedDataPointer}} for d. if you do, remember you need to implement explicit constructors, destructors and assignment operators (operator=).&lt;br /&gt;
&lt;br /&gt;
Sometimes, complex code may be moved to a member method of the Private class itself. Doing this may give the compiler an extra register to optimize the code, since you won't be using &amp;quot;d&amp;quot; all the time. Also, remember to '''inline''' such methods if they are called only from one place.&lt;br /&gt;
&lt;br /&gt;
=== Shared D-Pointers ===&lt;br /&gt;
&lt;br /&gt;
If your class hierarchy is large and/or deep, you may want to try the concept of shared d-pointers. You'll be trading the added complexity for a smaller memory footprint in the main object (there will be only one &amp;quot;d&amp;quot; variable in it). Other advantages include:&lt;br /&gt;
&lt;br /&gt;
:* direct access to the private data of the whole hierarchy (in other words, the Private classes are in fact &amp;quot;protected&amp;quot;, not &amp;quot;private&amp;quot;)&lt;br /&gt;
:* access to the parent's d-pointer methods&lt;br /&gt;
&lt;br /&gt;
The latter advantage is especially useful if your class has moved the code from the main class to the Private class. If that's the case, you should be calling the Private methods instead: since they are not exported, they will create simpler relocations in the final library (or none at all). By simply calling the Private method instead of the public one, you contribute to a faster load-time of your library.&lt;br /&gt;
&lt;br /&gt;
To implement a &amp;quot;shared d-pointer&amp;quot;, you need to:&lt;br /&gt;
:# define a '''protected''' variable (d_ptr) in the least derived class of your hierarchy&lt;br /&gt;
:# in each class of the hierarchy, define a '''private''' function called d_func() that reinterpret_casts that d_ptr to the current class's Private class&lt;br /&gt;
:# use Q_D(Foo) at the beginning of the functions to have access to a variable &amp;quot;d&amp;quot;&lt;br /&gt;
:# the private classes derive from one another just like the public hierarchy; they also have virtual destructors&lt;br /&gt;
:# add one extra, protected constructor that takes the private class as a parameter&lt;br /&gt;
:# in each constructor for all derived classes, call the parent's constructor that takes the d pointer as a parameter&lt;br /&gt;
&lt;br /&gt;
There's an example of such a construct in a [[/Shared_D-Pointer_Example|separate page]].&lt;br /&gt;
&lt;br /&gt;
=== Q_DECLARE_PRIVATE ===&lt;br /&gt;
&lt;br /&gt;
This is a handy macro that hides the ugly stuff for you. It creates the &amp;lt;tt&amp;gt;d_func()&amp;lt;/tt&amp;gt; function for you, using the variable called &amp;lt;tt&amp;gt;d_ptr&amp;lt;/tt&amp;gt;. If yours has that name, you can use this macro. If it has another name, maybe you should create a macro to make your code look nicer.&lt;br /&gt;
&lt;br /&gt;
=== Q-Pointers ===&lt;br /&gt;
&lt;br /&gt;
Q-pointers are like d-pointers, but work in the reverse direction: they are in the Private class and they point to the public class. Needless to say, this is only possible for classes that don't share their d-pointers. Examples of classes that might benefit from q-pointers are all those derived from QObject, while classes with implicit sharing are those that potentially can't use it.&lt;br /&gt;
&lt;br /&gt;
Q-pointers are especially useful if your class has moved most of the code to the Private class as recommended. In that case, you may need to emit signals from the Private class. You would do it as:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
    emit q-&amp;gt;signalName();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
(You need to declare the Private class a friend of your public one; Q_DECLARE_PRIVATE does that for you)&lt;br /&gt;
&lt;br /&gt;
Q-pointers may also use the a shared q-pointer technique just like [[#Shared D-Pointers|d-pointers]] can. What's more, Qt also provides a macro called &amp;lt;tt&amp;gt;Q_DECLARE_PUBLIC&amp;lt;/tt&amp;gt; and one &amp;lt;tt&amp;gt;Q_Q&amp;lt;/tt&amp;gt; to hide the ugly parts of the implementation.&lt;br /&gt;
&lt;br /&gt;
== Inline Code ==&lt;br /&gt;
For binary compatibility reasons, try to avoid inline code in headers. Specifically no inline constructor or destructor.&lt;br /&gt;
&lt;br /&gt;
If ever you add inline code please note the following:&lt;br /&gt;
* Installed headers should compile with the following preprocessor defines: &amp;lt;tt&amp;gt;QT_NO_CAST_FROM_ASCII&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;QT_NO_CAST_TO_ASCII&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;QT_NO_KEYWORD&amp;lt;/tt&amp;gt;. So don't forget {{qt|QLatin1String}}.&lt;br /&gt;
* No C casts in the header. Use &amp;lt;tt&amp;gt;static_cast&amp;lt;/tt&amp;gt; if types are known. Use &amp;lt;tt&amp;gt;qobject_cast&amp;lt;/tt&amp;gt; instead of &amp;lt;tt&amp;gt;dynamic_cast&amp;lt;/tt&amp;gt; if types are QObject based. dynamic_cast is not only slower, but is also unreliable across shared libraries.&lt;br /&gt;
* In general, check your code for [[Development/Tutorials/Common_Programming_Mistakes|common mistakes]].&lt;br /&gt;
&lt;br /&gt;
These recommendations are also true for code that are not in headers.&lt;br /&gt;
&lt;br /&gt;
== Flags ==&lt;br /&gt;
Try to avoid meaningless boolean parameters in functions. Example of a bad boolean argument:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
static QString KApplication::makeStdCaption( const QString &amp;amp;caption,&lt;br /&gt;
                                             bool withAppName,&lt;br /&gt;
                                             bool modified);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Because when you read code that uses the above function, you can't easily know the significance of the parameters&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
window-&amp;gt;setCaption(KApplication::makeStdCaption( &amp;quot;Document Foo&amp;quot;,&lt;br /&gt;
                         true, true));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The solution is to use {{qt|QFlags}}. If the options only apply to one function, call the &amp;lt;tt&amp;gt;enum FunctionNameOption&amp;lt;/tt&amp;gt; and the QFlags typedef &amp;lt;tt&amp;gt;FunctionNameOptions&amp;lt;/tt&amp;gt;. Do that even if there is only one option, this will allow you to add more options later and keep the binary compatibility.&lt;br /&gt;
&lt;br /&gt;
So a better API would be:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
class KApplication&lt;br /&gt;
{&lt;br /&gt;
public:&lt;br /&gt;
    /* [...] */&lt;br /&gt;
    enum StandardCaptionOption {&lt;br /&gt;
        /**&lt;br /&gt;
         * Indicates to include the application name&lt;br /&gt;
         */&lt;br /&gt;
        WithApplicationName = 0x01,&lt;br /&gt;
        /**&lt;br /&gt;
         * Note in the caption that there is unsaved data&lt;br /&gt;
         */&lt;br /&gt;
        Modified = 0x02&lt;br /&gt;
    };&lt;br /&gt;
    Q_DECLARE_FLAGS(StandardCaptionOptions, &lt;br /&gt;
                    StandardCaptionOption)&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Builds a caption using a standard layout.&lt;br /&gt;
     *&lt;br /&gt;
     * @param userCaption The caption string you want to display&lt;br /&gt;
     * @param options a set of flags from MakeStandartCaptionOption&lt;br /&gt;
     */&lt;br /&gt;
    static QString makeStandardCaption(const QString&amp;amp; userCaption,&lt;br /&gt;
       const StandardCaptionOptions&amp;amp; options = WithApplicationName);&lt;br /&gt;
    /* [...] */&lt;br /&gt;
};&lt;br /&gt;
Q_DECLARE_OPERATORS_FOR_FLAGS(KApplication::StandardCaptionOptions)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Const References ==&lt;br /&gt;
Each object parameter that is not a basic type (int, float, bool, enum,  or pointers) should be passed by reference-to-const. This is faster, because it is not required to do a copy of the object. Do that even for object that are already implicitly shared, like QString:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
QString myMethod( const QString&amp;amp; foo,&lt;br /&gt;
                  const QPixmap&amp;amp; bar,&lt;br /&gt;
                  int number );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Avoid const references for return types though. Returning for example&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
const QList&amp;lt;int&amp;gt; &amp;amp;someProperty() const;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
means exposing the internal data structure for someProperty() and it's very difficult to change it in the future while preserving binary compatibility. Especially for implicitly shared objects the one refcount that one avoids by returning a const reference is often not worth it the exposure of implementation.&lt;br /&gt;
&lt;br /&gt;
There are cases where it makes sense, where performance is absolutely critical and the implementation is very fixed. So think twice about it and consider returning a value instead:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
QList&amp;lt;int&amp;gt; someProperty() const;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Signals and Slots ==&lt;br /&gt;
In the libraries, use &amp;lt;tt&amp;gt;Q_SIGNALS&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;Q_SLOTS&amp;lt;/tt&amp;gt; instead of &amp;lt;tt&amp;gt;signals&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;slots&amp;lt;/tt&amp;gt;. They are syntactically equivalent and should be used to avoid conflicts with boost signals, and with python's use of &amp;quot;slots&amp;quot; in its headers.&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
Consider using &amp;lt;tt&amp;gt;Q_PROPERTY&amp;lt;/tt&amp;gt; for properties. The reason is that properties (especially those marked &amp;lt;tt&amp;gt;SCRIPTABLE&amp;lt;/tt&amp;gt;) will be accessible through the javascript interface.&lt;br /&gt;
&lt;br /&gt;
If you follow the propname / setPropname naming scheme, moc sets a special flag for the {{qt|QMetaProperty}}.&lt;br /&gt;
&lt;br /&gt;
== Explicit Constructors ==&lt;br /&gt;
For each constructor (other than the copy constructor), check if you should make the constructor &amp;lt;tt&amp;gt;explicit&amp;lt;/tt&amp;gt; in order to minimize wrong use of the constructor.&lt;br /&gt;
&lt;br /&gt;
Basically, each constructor that may take only one argument should be marked &amp;lt;tt&amp;gt;explicit&amp;lt;/tt&amp;gt; unless the whole point of the constructor is to allow implicit casting.&lt;br /&gt;
&lt;br /&gt;
== Avoid including other headers in headers ==&lt;br /&gt;
Try to reduce as much as possible the number of includes in header files. This will generally help reduce the compilation time, especially for developers when just one header has been modified. It may also avoid errors that can be caused by conflicts between headers.&lt;br /&gt;
&lt;br /&gt;
If an object in the class is only used by pointer or by reference, it is not required to include the header for that object. Instead, just add a forward declaration before the class.&lt;br /&gt;
&lt;br /&gt;
In this example, the class KFoo uses KBar by reference, so we do not need to include KBar's header:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;kfoobase.h&amp;gt;&lt;br /&gt;
class KBar;&lt;br /&gt;
class KFoo : public KFooBase&lt;br /&gt;
{&lt;br /&gt;
    public:&lt;br /&gt;
        /* [...] */&lt;br /&gt;
        void myMethod(const KBar&amp;amp; bar);&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Getting #includes right ==&lt;br /&gt;
&lt;br /&gt;
There are two types of #include statements: &amp;lt;tt&amp;gt;#include &amp;lt;foo.h&amp;gt;&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;#include &amp;quot;foo.h&amp;quot;&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Say we have the file &amp;lt;tt&amp;gt;xyz.h&amp;lt;/tt&amp;gt; in &amp;lt;tt&amp;gt;/usr/include/mylib/&amp;lt;/tt&amp;gt; that contains the following:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;header1.h&amp;gt;&lt;br /&gt;
#include &amp;quot;header2.h&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The preprocessor will search for the file &amp;lt;tt&amp;gt;header1.h&amp;lt;/tt&amp;gt; in all the paths given as &amp;lt;tt&amp;gt;-I&amp;lt;/tt&amp;gt; arguments and then replace the line with the contents of that file.&lt;br /&gt;
&lt;br /&gt;
For line 2 the preprocessor tries to use the file /usr/include/mylib/header2.h first and if it does not exist search for the file like it did for &amp;lt;tt&amp;gt;header1.h&amp;lt;/tt&amp;gt;. The important part to note here is that the preprocessor does not look in the directory of the source file that includes &amp;lt;tt&amp;gt;xyz.h&amp;lt;/tt&amp;gt; but in the directory where &amp;lt;tt&amp;gt;xyz.h&amp;lt;/tt&amp;gt; resides.&lt;br /&gt;
&lt;br /&gt;
Now, which include statement is the one to use? After all you can specify every directory you want using &amp;lt;tt&amp;gt;-I&amp;lt;/tt&amp;gt; (or rather CMake's &amp;lt;tt&amp;gt;include_directories()&amp;lt;/tt&amp;gt;) and thus could use &amp;lt;tt&amp;gt;#include &amp;lt;...&amp;gt;&amp;lt;/tt&amp;gt; everywhere.&lt;br /&gt;
&lt;br /&gt;
=== As application developer ===&lt;br /&gt;
* Include headers from '''external''' libraries using '''angle brackets'''.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;QtCore/QDate&amp;gt;&lt;br /&gt;
#include &amp;lt;zlib.h&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* Include headers from your '''own project''' using '''double quotes'''.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;myclass.h&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Rationale: ''The header files of external libraries are obviously not in the same directory as your source files. So you need to use angle brackets.''&lt;br /&gt;
&lt;br /&gt;
''Headers of your own application have a defined relative location to the source files of your application. Using KDE4's cmake macros your source directory is the first include switch to the compiler and therefore there's no difference in using angle brackets or double quotes. If you work with a different buildsystem that does not include the current source directory or disable CMAKE_INCLUDE_CURRENT_DIR then all includes (inside your application) using angle brackets will break.''&lt;br /&gt;
&lt;br /&gt;
''Ideally the buildsystem would not need to specify &amp;lt;tt&amp;gt;-I&amp;amp;lt;source directory&amp;amp;gt;&amp;lt;/tt&amp;gt; though as that can break with library headers that have the same filename as a header of your project (i.e.: If a library has the header file &amp;lt;tt&amp;gt;foo.h&amp;lt;/tt&amp;gt; and your project has a different file with the same filename the compiler will always pick the header from your project instead of the one from the library because the source directory of the project is specified first.)''&lt;br /&gt;
&lt;br /&gt;
=== As library developer ===&lt;br /&gt;
* Include headers from '''external''' libraries using '''angle brackets'''.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;QtCore/QDate&amp;gt;&lt;br /&gt;
#include &amp;lt;zlib.h&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* Include headers of your '''own library''' and libraries that belong to it using '''double quotes'''.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;xyz.h&amp;quot; // same library and same directory&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rationale: ''The header files of external libraries are obviously not in a fixed location relative to your source files. So you need to use angle brackets.''&lt;br /&gt;
&lt;br /&gt;
''Headers of your own libraries have a fixed relative location in the filesystem. Therefore you'' can ''use double quotes. You should use double quotes because otherwise the include statement could include a different header file than expected. An example how angle brackets can break the build:''&lt;br /&gt;
&lt;br /&gt;
''&amp;lt;tt&amp;gt;/usr/include/libxyz/xyz.h&amp;lt;/tt&amp;gt; includes &amp;lt;tt&amp;gt;foo.h&amp;lt;/tt&amp;gt; using angle brackets and expects to have it replaced with the contents of the file &amp;lt;tt&amp;gt;/usr/include/libzyx/foo.h&amp;lt;/tt&amp;gt;. Assuming there's another library that also ships a &amp;lt;tt&amp;gt;foo.h&amp;lt;/tt&amp;gt; file in the directory &amp;lt;tt&amp;gt;/usr/include/anotherlib/&amp;lt;/tt&amp;gt;. If the application that uses both libraries compiles with &amp;quot;&amp;lt;tt&amp;gt;g++ -I/usr/include/libxyz -I/usr/include/anotherlib ...&amp;lt;/tt&amp;gt;&amp;quot; libxyz will work as expected. If the application compiles with &amp;quot;&amp;lt;tt&amp;gt;g++ -I/usr/include/anotherlib -I/usr/include/libxyz ...&amp;lt;/tt&amp;gt;&amp;quot; the header &amp;lt;tt&amp;gt;xyz.h&amp;lt;/tt&amp;gt; will include the file &amp;lt;tt&amp;gt;/usr/include/anotherlib/foo.h&amp;lt;/tt&amp;gt; instead of the file that is shipped with libxyz. The same problem can appear if an application has a header file of the same name as a library and specifies &amp;lt;tt&amp;gt;-I./&amp;lt;/tt&amp;gt; as the first include directory.''&lt;br /&gt;
&lt;br /&gt;
=== Include order ===&lt;br /&gt;
&lt;br /&gt;
Another important aspect of include management is the include order. Typically, you have a class named Foo, a file foo.h and a file foo.cpp . The rule is :&lt;br /&gt;
&lt;br /&gt;
: ''In your file foo.cpp, you should include &amp;quot;foo.h&amp;quot; as the first include, before the system includes.''&lt;br /&gt;
&lt;br /&gt;
The rationale behind that is to make your header standalone. &lt;br /&gt;
&lt;br /&gt;
Let's imagine that your foo.h looks like this:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
class Foo&lt;br /&gt;
{&lt;br /&gt;
public:&lt;br /&gt;
    Bar getBar();&lt;br /&gt;
&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And your foo.cpp looks like this:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;bar.h&amp;quot;&lt;br /&gt;
#include &amp;quot;foo.h&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Your foo.cpp file will compile, but it will not compile for other people using foo.h without including bar.h . Including &amp;quot;foo.h&amp;quot; first makes sure that your foo.h header works for others.&lt;br /&gt;
&lt;br /&gt;
=== Include guards ===&lt;br /&gt;
Header files should use guards to protect against possible multiple inclusion.&lt;br /&gt;
Your myfoo.h header should look like this:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
#ifndef MYFOO_H&lt;br /&gt;
#define MYFOO_H&lt;br /&gt;
... &amp;lt;stuff&amp;gt;...&lt;br /&gt;
#endif /* MYFOO_H */&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To be even more careful, you may want to encode a namespace or subdirectory name (e.g. KFOO) into the guard macro name, for example: MYFOO_H, KFOO_MYFOO_H, or _KFOO_MYFOO_H_ are all acceptable macro names.  By convention, the macro name should be all uppercase; but that is not a firm requirement.&lt;br /&gt;
&lt;br /&gt;
== Static Objects ==&lt;br /&gt;
Global static objects in libraries should be avoided. You never know when the constructor will be run or if it will be run at all.&lt;br /&gt;
; Wrong&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
static QString foo; // wrong - object might not be constructed&lt;br /&gt;
static QString bar(&amp;quot;hello&amp;quot;); // as above&lt;br /&gt;
static int foo = myInitializer(); // myInitializer() might not be called&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
In particular, &amp;lt;b&amp;gt;never&amp;lt;/b&amp;gt; construct QObject-derived objects this way. On Windows (MS Visual C++) the object's internals will be left uninitialized within a library and will lead to crashes ([http://www.kdedevelopers.org/node/2889 more info]).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
static QFile myFile(&amp;quot;abc&amp;quot;);  // QFile inherits QObject&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
; Correct&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
static const int i = 42;&lt;br /&gt;
static const int ii[3] = {1, 2, 3};&lt;br /&gt;
static const char myString[] = &amp;quot;hello&amp;quot;;&lt;br /&gt;
static const MyStruct s = {3, 4.4, &amp;quot;hello&amp;quot;};&lt;br /&gt;
K_GLOBAL_STATIC(QFile, myFile);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can use [http://api.kde.org/4.0-api/kdelibs-apidocs/kdecore/html/group__KDEMacros.html#g75ca0c60b03dc5e4f9427263bf4043c7 &amp;lt;tt&amp;gt;K_GLOBAL_STATIC&amp;lt;/tt&amp;gt;] macro (and for QObject-derived objects you should) to create global static objects which will be initialized the first time you use them.&lt;br /&gt;
&lt;br /&gt;
== Signal and Slot Normalization ==&lt;br /&gt;
Since &amp;lt;tt&amp;gt;QObject::connect&amp;lt;/tt&amp;gt; uses a string-based comparison&lt;br /&gt;
of the function signature, it requires some normalization to take&lt;br /&gt;
place. It does that automatically for you, but it takes some CPU&lt;br /&gt;
time, so, if it doesn't hurt your code's readability, normalize&lt;br /&gt;
manually your SIGNAL and SLOT entries.&lt;br /&gt;
&lt;br /&gt;
For example, you may have the following code:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
QObject::connect(this, SIGNAL( newValue(const QString&amp;amp;,&lt;br /&gt;
                                        const MyNamespace::Type&amp;amp;) ),&lt;br /&gt;
                 other, SLOT( value(const QString &amp;amp;) ));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
It would be preferable to write as follows:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp-qt&amp;quot;&amp;gt;&lt;br /&gt;
QObject::connect(this, SIGNAL(newValue(QString,MyNamespace::Type)),&lt;br /&gt;
                 other, SLOT(value(QString)));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note the absence of extra whitespace and the&lt;br /&gt;
reduction of pass-by-reference-to-const parameters to simple&lt;br /&gt;
pass-by-value ones. The normalization may involve other&lt;br /&gt;
transformations, but these are the most common ones. Also note that&lt;br /&gt;
types in namespaces should always use the full qualified name.&lt;br /&gt;
To be sure what the proper normalization is, read the {{path|.moc}} file&lt;br /&gt;
generated for the class.&lt;br /&gt;
&lt;br /&gt;
'''Note''': If you are unsure about the normalization, don't do it. Let&lt;br /&gt;
QObject do it for you (the performance penalty is negligible in most cases).&lt;br /&gt;
&lt;br /&gt;
== External Dependencies ==&lt;br /&gt;
When a library pulls in a new external dependency due to a new feature or a change in implementation, it is highly preferred to make that dependency optional if at all possible. For some core features in a library this may not be possible, but usually it is even if the cost is a degradation in features when built without that dependency.&lt;br /&gt;
&lt;br /&gt;
All dependencies should be adequately documented in the build system so that they appear in the summary post-configure.&lt;br /&gt;
&lt;br /&gt;
For libraries in the '''kdelibs module''', this is a hard requirement: '''no new non-optional dependencies may be added, all new dependencies must be made optional at configure time'''. Exceptions may be granted for unusual circumstances by sending a request to the kde-core-devel at kde.org mailing list and getting a consensus decision to grant an exception there.&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
Every class and method should be well documented. Read the [[Policies/Library Documentation Policy|KDE Library Documentation Policy]] for the guidelines to follow when documenting your code.&lt;br /&gt;
&lt;br /&gt;
Also don't forget the license headers and copyrights in each file. As stated in the [[Policies/Licensing Policy|Licensing Policy]], kdelibs code must be licensed under the LGPL, BSD, or X11 license.&lt;br /&gt;
&lt;br /&gt;
Author: [mailto:ogoffart@kde.org Olivier Goffart] March 2006&lt;br /&gt;
&lt;br /&gt;
[[Category:Policies]]&lt;/div&gt;</summary>
		<author><name>Sandsmark</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-15T01:35:01Z</updated>
		
		<summary type="html">&lt;p&gt;Sandsmark: we now have lyrics view in juk&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;
&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;
|}&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;
&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;
|}&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;
{{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;
{{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;
{{FeatureInProgress|KTouch|Ship ktouch/next|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;
|}&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;
{{FeatureInProgress|KGoldrunner|Use KGameRenderer and QGraphicsView for all graphics: the gameplay is the same as before.|iandw.au@gmail.com|Ian Wadham}}&lt;br /&gt;
{{FeatureInProgress|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;
|}&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 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;
|}&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;
|}&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>Sandsmark</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-08-08T19:51:47Z</updated>
		
		<summary type="html">&lt;p&gt;Sandsmark: porting juk&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;
&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;
|}&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;
&lt;br /&gt;
{{FeatureTodo|Dolphin|Implement files quick preview feature (named Klook)  |evgeniy.augin@osinit.ru|Evgeniy Auzhin}}&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;
{{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;
{{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;
|}&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;
&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;
|}&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;
&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;
|}&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;
|}&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>Sandsmark</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/KWallet</id>
		<title>Development/Tutorials/KWallet</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/KWallet"/>
				<updated>2012-06-16T00:36:33Z</updated>
		
		<summary type="html">&lt;p&gt;Sandsmark: /* main.cpp */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Development/Tutorials/KWallet}}&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
A simple introduction for using the KWallet API, a secure storage framework.&lt;br /&gt;
&lt;br /&gt;
Prerequisites: Basic KDE knowledge, C++.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
The API is fun and easy to use, and will guarantee you a long and stable life.&lt;br /&gt;
&lt;br /&gt;
In KWallet, entries are organized in Folders (or think of it as categories), and in them there are ''binary data'', ''maps'', ''passwords'' and a catch-all ''unknown''. Binary entries are application-specific arrays of bytes, maps should be known from QMaps, where a series of ''values'' are accessed by ''keys''. Passwords are simply strings, and ''Unknown'' is for everything else.&lt;br /&gt;
&lt;br /&gt;
===dialog.cpp===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;quot;dialog.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;QLayout&amp;gt;&lt;br /&gt;
#include &amp;lt;QLabel&amp;gt;&lt;br /&gt;
#include &amp;lt;QPushButton&amp;gt;&lt;br /&gt;
#include &amp;lt;QMap&amp;gt;&lt;br /&gt;
#include &amp;lt;QVBoxLayout&amp;gt;&lt;br /&gt;
#include &amp;lt;QSpacerItem&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dialog::Dialog(QWidget *parent) :&lt;br /&gt;
    QDialog(parent)&lt;br /&gt;
{&lt;br /&gt;
    setLayout(new QVBoxLayout);&lt;br /&gt;
    m_wallet = Wallet::openWallet(Wallet::NetworkWallet(),&lt;br /&gt;
                                  winId(),&lt;br /&gt;
                                  Wallet::Asynchronous);&lt;br /&gt;
&lt;br /&gt;
    QLabel *explanation = new QLabel(&amp;quot;&amp;lt;b&amp;gt;HELLO!&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;&lt;br /&gt;
                                     &amp;quot;Please type in something to save in the wallet!&amp;lt;br/&amp;gt;&amp;quot;&lt;br /&gt;
                                     &amp;quot;It will be saved in the form data folder, under &amp;lt;br/&amp;gt;&amp;quot;&lt;br /&gt;
                                     &amp;quot;the entry &amp;lt;i&amp;gt;http://test.com/#form&amp;lt;/i&amp;gt;.&amp;quot;);&lt;br /&gt;
    m_statusLabel = new QLabel(&amp;quot;Opening wallet...&amp;quot;, this);&lt;br /&gt;
    m_statusLabel-&amp;gt;setAlignment(Qt::AlignCenter);&lt;br /&gt;
    m_keyInput = new QLineEdit(this);&lt;br /&gt;
    m_valueInput = new QLineEdit(this);&lt;br /&gt;
    m_launchButton = new QPushButton(&amp;quot;Save!&amp;quot;, this);&lt;br /&gt;
    m_launchButton-&amp;gt;setDisabled(true);&lt;br /&gt;
&lt;br /&gt;
    layout()-&amp;gt;addWidget(explanation);&lt;br /&gt;
    qobject_cast&amp;lt;QVBoxLayout*&amp;gt;(layout())-&amp;gt;addStretch();&lt;br /&gt;
    layout()-&amp;gt;addWidget(m_statusLabel);&lt;br /&gt;
    layout()-&amp;gt;addWidget(new QLabel(&amp;quot;Key:&amp;quot;, this));&lt;br /&gt;
    layout()-&amp;gt;addWidget(m_keyInput);&lt;br /&gt;
    layout()-&amp;gt;addWidget(new QLabel(&amp;quot;Value:&amp;quot;, this));&lt;br /&gt;
    layout()-&amp;gt;addWidget(m_valueInput);&lt;br /&gt;
    layout()-&amp;gt;addWidget(m_launchButton);&lt;br /&gt;
&lt;br /&gt;
    connect(m_launchButton, SIGNAL(clicked()), SLOT(doSave()));&lt;br /&gt;
    connect(m_wallet, SIGNAL(walletOpened(bool)), SLOT(walletOpened(bool)));&lt;br /&gt;
    setMinimumSize(500, 200);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void Dialog::walletOpened(bool ok)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
    if (ok &amp;amp;&amp;amp;&lt;br /&gt;
        (m_wallet-&amp;gt;hasFolder(KWallet::Wallet::FormDataFolder()) ||&lt;br /&gt;
        m_wallet-&amp;gt;createFolder(KWallet::Wallet::FormDataFolder())) &amp;amp;&amp;amp;&lt;br /&gt;
        m_wallet-&amp;gt;setFolder(KWallet::Wallet::FormDataFolder())) {&lt;br /&gt;
        m_launchButton-&amp;gt;setDisabled(false);&lt;br /&gt;
        m_statusLabel-&amp;gt;setText(&amp;quot;Idle.&amp;quot;);&lt;br /&gt;
    } else&lt;br /&gt;
        m_statusLabel-&amp;gt;setText(&amp;quot;Error opening wallet!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void Dialog::doSave()&lt;br /&gt;
{&lt;br /&gt;
    if (m_keyInput-&amp;gt;text().isEmpty() || m_valueInput-&amp;gt;text().isEmpty()) {&lt;br /&gt;
        m_statusLabel-&amp;gt;setText(&amp;quot;Empty field!&amp;quot;);&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    m_launchButton-&amp;gt;setDisabled(true);&lt;br /&gt;
&lt;br /&gt;
    m_statusLabel-&amp;gt;setText(&amp;quot;Saving ...&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    QMap&amp;lt;QString, QString&amp;gt; map;&lt;br /&gt;
    map[m_keyInput-&amp;gt;text()] = m_valueInput-&amp;gt;text();&lt;br /&gt;
    if (m_wallet-&amp;gt;writeMap(&amp;quot;http://test.com/#form&amp;quot;, map)) m_statusLabel-&amp;gt;setText(&amp;quot;Something went wrong!&amp;quot;);&lt;br /&gt;
    else {&lt;br /&gt;
        m_statusLabel-&amp;gt;setText(&amp;quot;Saved!&amp;quot;);&lt;br /&gt;
        m_keyInput-&amp;gt;clear();&lt;br /&gt;
        m_valueInput-&amp;gt;clear();&lt;br /&gt;
    }&lt;br /&gt;
    m_launchButton-&amp;gt;setDisabled(false);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===dialog.h===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot; line&amp;gt;&lt;br /&gt;
#ifndef DIALOG_H&lt;br /&gt;
#define DIALOG_H&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;QDialog&amp;gt;&lt;br /&gt;
#include &amp;lt;QLabel&amp;gt;&lt;br /&gt;
#include &amp;lt;QLineEdit&amp;gt;&lt;br /&gt;
#include &amp;lt;KWallet/Wallet&amp;gt;&lt;br /&gt;
&lt;br /&gt;
using KWallet::Wallet;&lt;br /&gt;
&lt;br /&gt;
class Dialog : public QDialog&lt;br /&gt;
{&lt;br /&gt;
Q_OBJECT&lt;br /&gt;
public:&lt;br /&gt;
    Dialog(QWidget *parent = 0);&lt;br /&gt;
&lt;br /&gt;
private slots:&lt;br /&gt;
    void doSave();&lt;br /&gt;
    void walletOpened(bool ok);&lt;br /&gt;
&lt;br /&gt;
private:&lt;br /&gt;
    Wallet *m_wallet;&lt;br /&gt;
    QLineEdit *m_keyInput;&lt;br /&gt;
    QLineEdit *m_valueInput;&lt;br /&gt;
    QLabel *m_statusLabel;&lt;br /&gt;
    QPushButton *m_launchButton;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#endif // DIALOG_H&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===main.cpp===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp-qt&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;quot;dialog.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;KAboutData&amp;gt;&lt;br /&gt;
#include &amp;lt;KApplication&amp;gt;&lt;br /&gt;
#include &amp;lt;KCmdLineArgs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
static KAboutData about(&lt;br /&gt;
    &amp;quot;KWalletDemoApplication&amp;quot;,&lt;br /&gt;
    &amp;quot;&amp;quot;,&lt;br /&gt;
    ki18n(&amp;quot;KWalletDemoApplication&amp;quot;),&lt;br /&gt;
    &amp;quot;1.0&amp;quot;,&lt;br /&gt;
    ki18n(&amp;quot;Demonstrates basic KWallet usage.&amp;quot;),&lt;br /&gt;
    KAboutData::License_LGPL,&lt;br /&gt;
    ki18n(&amp;quot;(C) 2010 Martin Sandsmark&amp;quot;),&lt;br /&gt;
    KLocalizedString(),&lt;br /&gt;
    &amp;quot;http://www.mts.ms/&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char *argv[])&lt;br /&gt;
{&lt;br /&gt;
    about.addAuthor(ki18n(&amp;quot;Martin Sandsmark&amp;quot;), ki18n(&amp;quot;Maintainer&amp;quot;), &amp;quot;martin.sandsmark@kde.org&amp;quot;, &amp;quot;http://iskrembilen.com/&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    KCmdLineArgs::init(argc, argv, &amp;amp;about);&lt;br /&gt;
    KApplication app;&lt;br /&gt;
&lt;br /&gt;
    Dialog dialog;&lt;br /&gt;
    dialog.show();&lt;br /&gt;
    return app.exec();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CMakeLists.txt===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;make&amp;quot; line&amp;gt;&lt;br /&gt;
project(Importer)&lt;br /&gt;
&lt;br /&gt;
find_package(KDE4 REQUIRED)&lt;br /&gt;
add_definitions(${QT_DEFINITIONS} ${KDE4_DEFINITIONS})&lt;br /&gt;
include(KDE4Defaults)&lt;br /&gt;
include(MacroLibrary)&lt;br /&gt;
include_directories(${KDE4_INCLUDES} ${KDE4_INCLUDE_DIR} ${QT_INCLUDES})&lt;br /&gt;
&lt;br /&gt;
set(SRCS main.cpp dialog.cpp)&lt;br /&gt;
&lt;br /&gt;
kde4_add_executable(kwallet-demo ${SRCS})&lt;br /&gt;
target_link_libraries(kwallet-demo ${KDE4_KDECORE_LIBS} ${KDE4_KPARTS_LIBS} ${KDE4_KDEUI_LIBS})&lt;br /&gt;
install(TARGETS kwallet-demo ${INSTALL_TARGETS_DEFAULT_ARGS})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sandsmark</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-02-27T02:07:39Z</updated>
		
		<summary type="html">&lt;p&gt;Sandsmark: /* kdemultimedia */ last.fm-stuff in juk&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;
&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;
&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;
|}&lt;br /&gt;
&amp;lt;br&amp;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;
&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;
&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;
|}&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;
&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;
|}&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>Sandsmark</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/MovetoGit</id>
		<title>Projects/MovetoGit</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/MovetoGit"/>
				<updated>2010-07-04T12:20:09Z</updated>
		
		<summary type="html">&lt;p&gt;Sandsmark: sandsmark isn't stuck anymore&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the page for co-ordinating KDE's move to [http://git-scm.com/ Git].&lt;br /&gt;
&lt;br /&gt;
If you're interested in helping, you should join the [https://mail.kde.org/mailman/listinfo/kde-scm-interest kde-scm-interest@kde.org] mailinglist and [irc://chat.freenode.net/kde-git #kde-git] on freenode.&lt;br /&gt;
&lt;br /&gt;
Meetings are wednesdays, 19:30 UTC, in #kde-git.&lt;br /&gt;
&lt;br /&gt;
=The Plan=&lt;br /&gt;
&lt;br /&gt;
KDE is, eventually, moving to Git. We will be using gitosis + Redmine + reviewboard on our own servers.&lt;br /&gt;
&lt;br /&gt;
In the summer of 2009, [http://gitorious.org/amarok Amarok] moved to Gitorious to test the waters and find problems that would affect KDE.&lt;br /&gt;
&lt;br /&gt;
After it has been decided in Jun 2010 to use our own servers, Amarok and Konversation moved to git.kde.org/projects.kde.org to test the waters and find problems that would affect KDE.&lt;br /&gt;
&lt;br /&gt;
Once those problems have been solved, all of KDE will be able to switch.&lt;br /&gt;
&lt;br /&gt;
==Why?==&lt;br /&gt;
&lt;br /&gt;
Git offers many advantages over svn, including offline commits and much easier to keep a feature branch up-to-date. Many KDE developers are already using git-svn, but this tool has its limitations. We want to have the full power of Git available, and we have people willing to do the work necessary to migrate.&lt;br /&gt;
&lt;br /&gt;
==How?==&lt;br /&gt;
&lt;br /&gt;
When we move, KDE's svn repository will be migrated into several Git repos, all on git.kde.org. Main modules such as kdelibs and kdebase will each become one repository. Projects in extragear will each have their own repository. The projects.kde.org site will have a list (lists?) of all these repositories using the redmine project wiki. Scripts will be provided for downloading, say, all of extragear, so &amp;quot;moving&amp;quot; a project from kdereview to extragear would simply involve editing a file kept online that defined the location of projects.&lt;br /&gt;
&lt;br /&gt;
A few things will stay in subversion - currently websites, translations and manuals. It's possible they could move to Git later, but they won't be part of the mass migration.&lt;br /&gt;
&lt;br /&gt;
All KDE developers will in principle be able to use their existing &amp;quot;svn&amp;quot; accounts. Developers using HTTPS ideally would request their HTTPS SVN account to be converted to SSH as that makes it easiest for the KDE sysadmins, but alternatively they can also just provide a public key. At some point the KDE sysadmins are going to send everybody with a HTTPS SVN account an email with a link to a web app to collect their key (see http://www.omat.nl/2010/06/13/sysamin-update-your-email-address/).&lt;br /&gt;
&lt;br /&gt;
From the times when gitorious.org was the preferred hosting solution, a procedure to move a project from svn to gitorious.org can be found in [[Projects/MoveToGit/StepsToMove|Steps to follow for Moving]].&lt;br /&gt;
Many points probably still apply, but have to be updated.&lt;br /&gt;
&lt;br /&gt;
=Blockers=&lt;br /&gt;
&lt;br /&gt;
Tasks that need to get done before we can migrate&lt;br /&gt;
&lt;br /&gt;
==Setup git.kde.org==&lt;br /&gt;
{{Progress bar|40}}&lt;br /&gt;
'''Owner:''' Eike, Jeff, Sysadmin team&lt;br /&gt;
&lt;br /&gt;
'''Status:''' ''Progressing''&lt;br /&gt;
&lt;br /&gt;
: It [http://lists.kde.org/?l=kde-scm-interest&amp;amp;m=127612957219466&amp;amp;w=2 has been decided] to use gitosis + Redmine + reviewboard on our own servers rather than gitorious.org.  Sysadmin team is preparing git.kde.org for this.&lt;br /&gt;
&lt;br /&gt;
==Write / update importing rules for svn2git==&lt;br /&gt;
{{Progress bar|5}}&lt;br /&gt;
'''Owner:''' see below - volunteers needed!&lt;br /&gt;
&lt;br /&gt;
'''Status:''' ''sho: ???, tumaix:started to read the docs, cryos: getting started [2010-01-06]''&lt;br /&gt;
&lt;br /&gt;
:The importer is on gitorious.org as svn2git we have a set of rules to tell the importer what svn dirs turn into which git repos and those need constant updating whenever a new branch or tag or project is created. Currently the rules are mostly a rough draft, as seen by the large amount of rule-editing that had to be done for Konversation and Amarok. This has not been done for quite some time and so someone should rsync the svn repo run svn2git and fix the rules and importer whenever the import stops.&lt;br /&gt;
&lt;br /&gt;
:This is a very big task, too big for one person; it's probably best to tackle it one module at a time&lt;br /&gt;
&lt;br /&gt;
:To get started on a module, read [[Projects/MoveToGit/UsingSvn2Git|Using Svn2Git]]&lt;br /&gt;
&lt;br /&gt;
:TZander has done the koffice ruleset as of 2009-01-06&lt;br /&gt;
&lt;br /&gt;
:Jpwhiting has finished (more or less) the kdeaccessibility ruleset 2010-01-24.&lt;br /&gt;
&lt;br /&gt;
:aavci has done the k3b ruleset as of 2010-01-27&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
progress details:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!repo&lt;br /&gt;
!owner&lt;br /&gt;
!%&lt;br /&gt;
!comments&lt;br /&gt;
|-&lt;br /&gt;
|SC/kdeaccessibility&lt;br /&gt;
|jpwhiting&lt;br /&gt;
|99&lt;br /&gt;
|&amp;quot;more or less&amp;quot;?&lt;br /&gt;
|-&lt;br /&gt;
|SC/kdeadmin&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SC/kdeartwork&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SC/kdebase&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SC/kdebindings&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SC/kdeedu&lt;br /&gt;
|cryos?&lt;br /&gt;
|?&lt;br /&gt;
|update me!&lt;br /&gt;
|-&lt;br /&gt;
|SC/kdeedu/marble&lt;br /&gt;
|jmho&lt;br /&gt;
|100&lt;br /&gt;
|Contains: trunk with moves (playground-&amp;gt;kdereview-&amp;gt;kdeedu), regular kde branches/tags and the following other branches: marble-0.4, gsoc-2009 and geodata-nt. Checking done: gitk --all, verify-git-from-svn&lt;br /&gt;
|-&lt;br /&gt;
|SC/kdeexamples&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SC/kdegames&lt;br /&gt;
|jobermayr&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SC/kdegraphics&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SC/kdelibs&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SC/kdemultimedia&lt;br /&gt;
|eean&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SC/kdenetwork&lt;br /&gt;
| grundleborg&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SC/kdepim&lt;br /&gt;
|tnyblom&lt;br /&gt;
|95&lt;br /&gt;
|Needs verification.&lt;br /&gt;
|-&lt;br /&gt;
|SC/kdepim-runtime&lt;br /&gt;
|tnyblom&lt;br /&gt;
|95&lt;br /&gt;
|Needs verification.&lt;br /&gt;
|-&lt;br /&gt;
|SC/kdepimlibs&lt;br /&gt;
|tnyblom&lt;br /&gt;
|95&lt;br /&gt;
|Needs verification.&lt;br /&gt;
|-&lt;br /&gt;
|SC/kdeplasma-addons&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SC/kdesdk&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SC/kdetoys&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SC/kdeutils&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SC/kdewebdev&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|extragear/sdk/kdevelop&lt;br /&gt;
| apaku&lt;br /&gt;
| 95&lt;br /&gt;
| trunk and branches complete, need to cleanup tags from cvs days.&lt;br /&gt;
|-&lt;br /&gt;
|extragear/sdk/kdevplatform&lt;br /&gt;
| apaku&lt;br /&gt;
| 100&lt;br /&gt;
| done, all tags seem fine all branches are there&lt;br /&gt;
|-&lt;br /&gt;
|extragear/sdk/kdevelop-plugins&lt;br /&gt;
| nsams&lt;br /&gt;
| 100&lt;br /&gt;
| done&lt;br /&gt;
|-&lt;br /&gt;
|extragear/sdk/quanta&lt;br /&gt;
| nsams&lt;br /&gt;
| 99&lt;br /&gt;
| done&lt;br /&gt;
|-&lt;br /&gt;
|extragear/utils/krecipes&lt;br /&gt;
| santa&lt;br /&gt;
| 10&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|extragear/*/*&lt;br /&gt;
|&lt;br /&gt;
|xx&lt;br /&gt;
|expand the *'s later (let's focus on the base modules first)&lt;br /&gt;
|-&lt;br /&gt;
|kde-common&lt;br /&gt;
|mattr&lt;br /&gt;
|75&lt;br /&gt;
|analyzing import history&lt;br /&gt;
|-&lt;br /&gt;
|kdesupport&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|koffice&lt;br /&gt;
|tzander&lt;br /&gt;
|85&lt;br /&gt;
|All but tags are done&lt;br /&gt;
|-&lt;br /&gt;
|promo&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|quality&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|tests&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Requirements of KDEPIM and KDAB ==&lt;br /&gt;
&lt;br /&gt;
{{Progress bar|90}}&lt;br /&gt;
'''Owner:''' Stephen Kelly&lt;br /&gt;
&lt;br /&gt;
'''Status:''' ''Proposed workflow identified. Partially depends on KDE policies regarding branches and merging. Gathering estimates for porting of tooling from svn to git. People unfamiliar with the tool are starting to learn to use it.''&lt;br /&gt;
&lt;br /&gt;
'''Estimated completion date''': End of May.&lt;br /&gt;
&lt;br /&gt;
'''Summary of issues'''&lt;br /&gt;
&lt;br /&gt;
* Clean slate&lt;br /&gt;
** The existing backlog of commits which need to be merged or ported to trunk needs to be empty before the change to git so that nothing gets lost. This is a lot of work and will take time. ''Estimate'' 10 calendar weeks.&lt;br /&gt;
* Technical difficulties and limitations.&lt;br /&gt;
** Up to KDE 3.5 there was one kdepim module. For the KDE4 cycle, this was split into kdepimlibs and kdepim. For the above mentioned merging to be possible, it makes sense for both to be in the same git module. This poses extra difficulty to the svn2git script.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Email threads'''&lt;br /&gt;
&lt;br /&gt;
* Mid-January thread on scm-interest: http://thread.gmane.org/gmane.comp.kde.devel.pim/26726&lt;br /&gt;
* Early March thread on kde-core-devel (Till email): http://thread.gmane.org/gmane.comp.kde.devel.core/63915/focus=63970&lt;br /&gt;
* Early March thread on kde-core-devel (Till follow-up):&lt;br /&gt;
http://thread.gmane.org/gmane.comp.kde.devel.core/63915/focus=64069&lt;br /&gt;
&lt;br /&gt;
'''Resolved Issues'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Branch maintenance workflow '''Resolution: http://thread.gmane.org/gmane.comp.kde.scm-interest/1310'''&lt;br /&gt;
** KDAB maintains several branches of legacy versions of KDE for enterprise customer deployments. [http://websvn.kde.org:80/branches/kdepim/enterprise/ Enterprise 3.5] [http://websvn.kde.org:80/branches/kdepim/enterprise4/ Enterprise 4 (based on KDE 4.2)]. The current KDEPIM trunk known as Enterprise 5 and is Akonadi based.&lt;br /&gt;
** Periodically (weekly or so), tags are created from the enterprise branches with bugfixes. http://websvn.kde.org:80/tags/kdepim/ Customers can download the tagged versions with the latest updates. Fixes are merged from the Enterprise 3.5 branch, and into trunk (which sometimes involves a lot of work, as the fix must be ported to Akonadi). Additionally, fixes get merged in the other direction. From official KDE modules into the Enterprise branches.&lt;br /&gt;
** Some fixes from Enterprise 3.5 should not be merged into Enterprise 4 for reasons such as no longer being reproducible. Some fixes do not get merged for a long time because they require so much work that porting the fix or feature is deffered. There needs to be a list of commits which should never be merged (blocked commits), and commits which should be merged, but have not been merged yet. The tool [[Development/Tools/svnmerge.py|svnmerge]] is used to facilitate this. svnmerge uses svn properties to maintain lists of commits that are blocked and that have already been integrated. See for example the svn-blocked and svn-integrated properties here: http://websvn.kde.org:80/trunk/KDE/kdepim/. The lists of commits available to be merged into the various branches are here: http://www.kdab.com/~thomas/avail/&lt;br /&gt;
** There needs to be a way in git to keep track of what commits have been merged, what commits need to be merged, and what commits are blocked. There needs to be a way of merging only specific commits from a branch, but not all, and not blocked commits. Proposed solutions:&lt;br /&gt;
*** git cherry-pick allows 'merging' of individual commits, but does not record where the commits came from. Instead it creates a new commit without any reference to where it came from. This alone is unsuitable.&lt;br /&gt;
*** branch per fix. This would lead to an explosion of branches which is not a problem in git as all commits are branches. It may make gitk un-navigatable. There would need to be a naming convention such as komo-merge-&amp;lt;fixname&amp;gt; for branches which should be merged. The commands &amp;lt;tt&amp;gt;git checkout 4.5 &amp;amp;&amp;amp; git merge $(git branch -a | grep -E ^origin/komo-merge)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;git checkout enterprise4.5 &amp;amp;&amp;amp; git merge $(git branch -a | grep -E ^origin/komo-merge)&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;git checkout master &amp;amp;&amp;amp; git merge $(git branch -a | grep -E ^origin/komo-merge)&amp;lt;/tt&amp;gt;. That could of course be optimized, but gets the point across. If the code has changed so much that the branch is unmergable, but the fix still needs to be in trunk, the system breaks down.&lt;br /&gt;
*** Custom git command with flat text files representing the same information as svnmerge, that is lists of blocked and integrated commits. This is most likely to be a workable solution, possibly together with conventional branch naming.&lt;br /&gt;
* Internal Tools and external customer tools and workflows&lt;br /&gt;
** KDAB is a consumer of KDE software, but also has downstream customers fetching software from where it is developed. That is, KDE SVN. For example packages are created from the tags in tags/kdepim. Some of these downstreams are less close to KDE and depend on current workflows. If KDE SVN is not the place to get those updates anymore, this needs to be communicated to those downstreams, and the tools updated. ''Estimate'' 1 week to port the tools.&lt;br /&gt;
*** Internally used tools have been updated and are now being used to access git repos such as dbus.&lt;br /&gt;
* Other commitments&lt;br /&gt;
** Project deadlines and other commitments prevent the possibility of blocking off time to work on git migration when so many other things need to be done which have milestones separate to KDE cycles. The required work to convert to git can't be prioritized as highly, and so will take more time.&lt;br /&gt;
*** Most of the technical work regarding migration of kdepim repos has been completed by community member Torgny Nyblom.&lt;br /&gt;
* Tool knowledge&lt;br /&gt;
** People who don't currently know how to use git need to get familiar with it so that transitioning will be nearly seamless, and not result in too much development slowdown.&lt;br /&gt;
*** Workshops and use of git-svn have been used to bring developers up to speed on how to use git at some level.&lt;br /&gt;
&lt;br /&gt;
=Nice to have before the migration=&lt;br /&gt;
&lt;br /&gt;
==Push log==&lt;br /&gt;
{{Progress bar|100}}&lt;br /&gt;
'''Owner:''' sysadmin&lt;br /&gt;
&lt;br /&gt;
'''Status:''' finished&lt;br /&gt;
&lt;br /&gt;
It's a push log, similar to a local repository's reflog.&lt;br /&gt;
&lt;br /&gt;
---------------&lt;br /&gt;
&lt;br /&gt;
For every push, log:&lt;br /&gt;
 - who pushed (not the Unix username, which will be &amp;quot;git&amp;quot;)&lt;br /&gt;
 - which branch heads changed (what from, what to)&lt;br /&gt;
 - which tags were created&lt;br /&gt;
 - the state of all other branches and tags&lt;br /&gt;
&lt;br /&gt;
Just use git commit-tree with the empty tree and save everything in the commit &lt;br /&gt;
message, one after the other.&lt;br /&gt;
&lt;br /&gt;
-----------&lt;br /&gt;
&lt;br /&gt;
Gitolite includes this functionality inbuilt to itself, although all repositories are logged in the same file - bcooksley&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Script for downloading virtual KDE hierarchies==&lt;br /&gt;
{{Progress bar|0}}&lt;br /&gt;
'''Owner''': &lt;br /&gt;
&lt;br /&gt;
'''Status:''' &lt;br /&gt;
&lt;br /&gt;
:Let's start over on this.&lt;br /&gt;
what we already have: two build scripts for kde; kdesvn-build and build-tool.&lt;br /&gt;
what we want: an easy way for people to get large chunks of kde, without thinking about what urls the repos come from or having to look things up.&lt;br /&gt;
&lt;br /&gt;
do kdesvn-build and build-tool satisfy this well enough?&lt;br /&gt;
or do we want a computer-readable file listing all the repos too?&lt;br /&gt;
&lt;br /&gt;
btw, scripty has its own list of repos already. it's just in a rather weird bash file.&lt;br /&gt;
&lt;br /&gt;
'''Discussion:''' &lt;br /&gt;
&lt;br /&gt;
As far as I can see, kdesvn-build is able to do it, it should be just a matter of providing a configuration. As I'm not using build-tool, I can't say anything about it. --jmho&lt;br /&gt;
&lt;br /&gt;
'''Links'''&lt;br /&gt;
[http://kdesvn-build.kde.org/]&lt;br /&gt;
[[Projects/MovetoGit/MassCloneScript]]&lt;br /&gt;
[http://rubyforge.org/projects/build-tool/]&lt;br /&gt;
&lt;br /&gt;
==pre-receive hooks==&lt;br /&gt;
{{Progress bar|50}}&lt;br /&gt;
'''Owner:''' ''volunteers needed!!''&lt;br /&gt;
&lt;br /&gt;
* Line endings and encodings&lt;br /&gt;
&lt;br /&gt;
'''Discussion:'''&lt;br /&gt;
this got accidentally marked as done or something, but it's not.&lt;br /&gt;
&lt;br /&gt;
This has now been ported to Git - bcooksley&lt;br /&gt;
&lt;br /&gt;
Note however that it doesn't look for a .gitattributes file yet - patches welcome ( see sysadmin/repo-management on git.kde.org )&lt;br /&gt;
&lt;br /&gt;
'''Notes:'''&lt;br /&gt;
&amp;gt; &amp;gt; As for line-endings, be careful because Git is different from Subversion.&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; different how?&lt;br /&gt;
&lt;br /&gt;
Just ensure that all files are stored as LF only, except if there's a &lt;br /&gt;
.gitattributes file saying &amp;quot;-crlf&amp;quot; (i.e., allow it to have CRLF).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Snapshot to read-only svn==&lt;br /&gt;
{{Progress bar|0}}&lt;br /&gt;
'''Owner:'''&lt;br /&gt;
&lt;br /&gt;
:It's work, but maybe some people would like it. NEEDED for documentation, in order to get it back into SVN for the translators/scripty/?&lt;br /&gt;
&lt;br /&gt;
'''Discussion'''&lt;br /&gt;
&lt;br /&gt;
:Could be done with a git-svn gateway presumably? -Mike Arthur 19/10/2009 16:04&lt;br /&gt;
&lt;br /&gt;
:if we leave the docbook stuff in svn, we can avoid this a bit longer. --[[User:Chani|Chani]] 23:21, 12 November 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
==[[Development/Tutorials/Git|Techbase Documentation]]==&lt;br /&gt;
'''Owner:''' Chani, greeneg, - ''please help out!''&lt;br /&gt;
{{Progress bar|10}}&lt;br /&gt;
&lt;br /&gt;
:At least minimal documentation about how to checkout, how to request a merge needed, other git documentation and links to other git information would be very useful also.&lt;br /&gt;
&lt;br /&gt;
:see the [[Development/Tutorials/Git|Git Tutorial Page]]. help wanted!!&lt;br /&gt;
&lt;br /&gt;
'''Discussion'''&lt;br /&gt;
&lt;br /&gt;
==Setup git mirrors for cloning==&lt;br /&gt;
{{Progress bar|0}}&lt;br /&gt;
'''Owner:''' No one (help!)&lt;br /&gt;
:Re-purpose the anonsvn servers. This item might be a blocker.&lt;br /&gt;
'''Discussion'''&lt;br /&gt;
&lt;br /&gt;
==Local pre-commit hooks==&lt;br /&gt;
{{Progress bar|0}}&lt;br /&gt;
'''Owner:''' argonel&lt;br /&gt;
&lt;br /&gt;
:A set of recommended local hooks that give useful warnings could be nice to have.&lt;br /&gt;
&lt;br /&gt;
'''Discussion'''&lt;br /&gt;
...on the other hand, if we get a lot of bikeshedding about what hooks, then it won't be so nice. so I'd put this in the &amp;quot;very optional&amp;quot; pile. --[[User:Chani|Chani]] 19:10, 16 December 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
=Post-migration Issues=&lt;br /&gt;
&lt;br /&gt;
==Website Branding==&lt;br /&gt;
{{Progress bar|2|text=(initial ideas on the table)}}&lt;br /&gt;
'''Owner:''' ruphy&lt;br /&gt;
&lt;br /&gt;
:KDE Gitorious should be branded accordingly, and should be reachable from git.kde.org as well as kde.gitorious.org&lt;br /&gt;
&lt;br /&gt;
'''Discussion'''&lt;br /&gt;
&lt;br /&gt;
Is this section still necessary at all? Perhaps some branding has to be done for redmine or cgit, but I don't know. --jmho&lt;br /&gt;
&lt;br /&gt;
=Unscheduled &amp;amp; Open=&lt;br /&gt;
&lt;br /&gt;
==Allow tagging without involving sysadmins==&lt;br /&gt;
{{Progress bar|100}}&lt;br /&gt;
&lt;br /&gt;
'''Owner:''' sysadmin&lt;br /&gt;
&lt;br /&gt;
:Gitolite allows sysadmin to permit certain people on certain repos only to manage both branches and tag without needing force push rights.&lt;br /&gt;
&lt;br /&gt;
'''Discussion'''&lt;br /&gt;
&lt;br /&gt;
==Account setup for Gitolite==&lt;br /&gt;
{{Progress bar|0}}&lt;br /&gt;
&lt;br /&gt;
'''Owner:''' ''sysadmin''&lt;br /&gt;
&lt;br /&gt;
:Accounts for existing SVN accounts which use SSH for access have been automatically granted access to Gitolite. Those who are still using HTTPS need to file a sysadmin bug to change their SVN account to SSH and will recieve Git access automatically.&lt;br /&gt;
&lt;br /&gt;
==post-update hooks==&lt;br /&gt;
{{Progress bar|90}}&lt;br /&gt;
'''Owner:''' ''morice'' ''Ian Monroe''&lt;br /&gt;
&lt;br /&gt;
:* License checker&lt;br /&gt;
&lt;br /&gt;
'''Discussion:'''&lt;br /&gt;
We have a fairly complete set of post-update hooks now. See [http://gitorious.org/remotehook remotehook]. However, it would be nice to have a system that lives on the Gitorious server and/or requires less manual maintenance. But its certainly workable and no longer a blocker.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Completed Tasks=&lt;br /&gt;
&lt;br /&gt;
==Get rid of svn:externals==&lt;br /&gt;
{{Progress bar|100}}&lt;br /&gt;
'''Owner:''' David Faure&lt;br /&gt;
&lt;br /&gt;
'''Status:''' ''???''&lt;br /&gt;
&lt;br /&gt;
:not possible with git, broken by design.&lt;br /&gt;
&lt;br /&gt;
::&lt;br /&gt;
&lt;br /&gt;
'''Discussion'''&lt;br /&gt;
&lt;br /&gt;
Exists, but ignorable:&lt;br /&gt;
* kdesupport shared-desktop-ontologies (temporary)&lt;br /&gt;
* playground/utils strigi-chemical/test/ctfr&lt;br /&gt;
* playground/devtools kdevelop4-extra-plugins/php/parser/generated/kdevelop-pg-qt&lt;br /&gt;
* playground/devtools kdevelop4-extra-plugins/python/parser/generated/kdevelop-pg-qt&lt;br /&gt;
* playground/devtools kdevelop4-extra-plugins/qmake/parser/generated/kdevelop-pg-qt&lt;br /&gt;
* playground/devtools kommander-plugins/database3/admin&lt;br /&gt;
* playground/devtools kommander-plugins/database/admin&lt;br /&gt;
* playground/devtools kommander-plugins/datetimefuncs/admin&lt;br /&gt;
* playground/devtools kommander-plugins/htmlpart/admin&lt;br /&gt;
* playground/devtools kommander-plugins/httpform/admin&lt;br /&gt;
* playground/devtools kommander-plugins/kparts/admin&lt;br /&gt;
* playground/devtools kommander-plugins/qtactionproxy/admin&lt;br /&gt;
* playground/devtools kommander-plugins/timewidget/admin&lt;br /&gt;
* playground/devtools kommander-plugins/webkit3/admin&lt;br /&gt;
* playground/devtools kpackagemaker/admin&lt;br /&gt;
&lt;br /&gt;
==EBN==&lt;br /&gt;
{{Progress bar|95}}&lt;br /&gt;
'''Owner:''' ''drf''&lt;br /&gt;
&lt;br /&gt;
'''Status:''' ''Amarok has EBN checks''&lt;br /&gt;
&lt;br /&gt;
:EBN's krazy checks currently run on kde's svn repo; it needs upgrading to download and check our git repos too.&lt;br /&gt;
&lt;br /&gt;
:This would be easier if there was a repo-list that EBN could parse, as it can no longer just svn up to get everything.&lt;br /&gt;
&lt;br /&gt;
==Talk to people using other distros about git==&lt;br /&gt;
{{Progress bar|100}}&lt;br /&gt;
'''Owner:''' Sebas, Eike&lt;br /&gt;
&lt;br /&gt;
'''Discussion'''&lt;br /&gt;
* Gentoo: They seem to be prepared for moving their live SVN packages to git; their package manager has easily-reusable classes to fetch from an SCM and moving the ebuilds to using the git class rather than the SVN class should be easy. Positive comments to that end from people in #gentoo-kde.&lt;br /&gt;
* Fedora: Some unhappyness about git because SVN allows them to remotely produce a diff between two SVN URLs (or two revisions of one and the same URL) without making a checkout first, while git requires making a clone. Kevin Kofler (IRC nick Kevin_Kofler, #fedora-kde) says this will make their packager work harder.&lt;br /&gt;
* Debian: Is indifferent about the SCM switch.&lt;br /&gt;
&lt;br /&gt;
==Post Update hooks==&lt;br /&gt;
{{Progress bar|100}}&lt;br /&gt;
'''Owner:''' ''morice, johan, mattr&lt;br /&gt;
&lt;br /&gt;
:List of scripts needed:&lt;br /&gt;
:* BUG/CCMAIL&lt;br /&gt;
:* email/CIA&lt;br /&gt;
&lt;br /&gt;
:Gitorious needs to provide a way for hooks to be called; KDE needs to write said hooks.&lt;br /&gt;
&lt;br /&gt;
'''Discussion'''&lt;br /&gt;
&lt;br /&gt;
:There is a branch of gitorious called web-hooks http://gitorious.org/gitorious/mainline/commits/web-hooks --Panagiotis Papadopoulos 1 November 2009&lt;br /&gt;
:Same situation as commit emails. I can do it but it doesn't scale well and a Gitorious-supported solution would be nicer. --[[User:Eean|eean]] 16:07, 12 November 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
==Reviewboard==&lt;br /&gt;
{{Progress bar|100}}&lt;br /&gt;
'''Owner:''' darktears&lt;br /&gt;
&lt;br /&gt;
This should be easily done with Gitorious web interface and merge requests actually.&lt;br /&gt;
&lt;br /&gt;
'''Discussion'''&lt;br /&gt;
&lt;br /&gt;
:but reviewboard has features gitorious (right now) doesn't, like commenting on specific lines and not having to set up a merge request. --chani&lt;br /&gt;
::Also email notifications when someone reviews are needed --thomasz&lt;br /&gt;
:We're working on this for someone else right now, so pretty soon --johan-s&lt;br /&gt;
:I consider the latest changes to gitorious to finish this. If more reviewboard features are still needed, and git supports reviewboard, I think this is something we can look at doing post-conversion. --Ian Monroe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Gitorious Needs a feature to disable merge request emails for certain repos==&lt;br /&gt;
{{Progress bar|100}}&lt;br /&gt;
'''Owner:''' [http://gitorious.org/gitorious Gitorious]&lt;br /&gt;
&lt;br /&gt;
Have a sensible system for merge request emails.  This is now in place - you can join groups, chose whether to have emails on a per repo basis, etc.&lt;br /&gt;
&lt;br /&gt;
==SSH blocked in corporations and universities.==&lt;br /&gt;
{{Progress bar|100}}&lt;br /&gt;
'''Owner:''' ''Unknown''&lt;br /&gt;
&lt;br /&gt;
:Some universities tend to block the SSH port. There should be a workaround to use SSH on some different port. github.com already runs a SSH server on port 443. But that assumes you are using a proxy. It has been found that this hasn't worked with a lot of people, especially those who have a direct connection to the internet ( so some transparent blocking by the ISP ). It would be great if (almost) every KDE developer were to be asked to check if other ports work before KDE made the switch. Otherwise there could be an automated email where the git patches could be sent, and appropriately patched to the right location too.&lt;br /&gt;
&lt;br /&gt;
'''Discussion'''&lt;br /&gt;
&lt;br /&gt;
:http://blog.gitorious.org/2009/10/20/stuck-behind-a-firewall/, and there's always been HTTP cloning (although the current impl. in Git is a bit on the slow side) --johan-s&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Talk to windows guys about git.==&lt;br /&gt;
{{Progress bar|100}}&lt;br /&gt;
'''Owner:'''  aseigo&lt;br /&gt;
&lt;br /&gt;
'''Discussion'''&lt;br /&gt;
&lt;br /&gt;
They aren't huge fans of git, but are using it. They require a single mainline and can't cope with multiple branches. Otherwise, it's workable, even if it will take an adjustment period.&lt;br /&gt;
&lt;br /&gt;
==pre-commit hooks==&lt;br /&gt;
{{Progress bar|100}}&lt;br /&gt;
'''Owner:''' ''(unknown)''&lt;br /&gt;
&lt;br /&gt;
:acltest, docbook, EOL/UTF-8&lt;br /&gt;
&lt;br /&gt;
:A web hook isn't good enough for these because they have to run and return whether to allow the push, for every single push to every KDE repo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Discussion'''&lt;br /&gt;
&lt;br /&gt;
:gitorious guys said they *might* be willing to allow a few scripts on their server for KDE as a special exception, iirc. --chani&lt;br /&gt;
&lt;br /&gt;
:: Yes, at least for basic things, heavier things like doc building would probably have to be mirrored (goes for pre/post) --johan-s&lt;br /&gt;
&lt;br /&gt;
:It turns out that acl and docbook might not be needed so long as web and docs/ stuff stays in svn.&lt;br /&gt;
&lt;br /&gt;
:: Here's where to find the current scripts - http://websvn.kde.org/trunk/kde-common/svn/hooks/ --[[User:Argonel|Argonel]] 23:06, 11 November 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
::So: this is actually done because it needs no longer to be done? (boud)&lt;br /&gt;
&lt;br /&gt;
::Apparently, so; moving to complete. (aseigo)&lt;br /&gt;
&lt;br /&gt;
= other notes =&lt;br /&gt;
&lt;br /&gt;
==kde-common/accounts==&lt;br /&gt;
&lt;br /&gt;
Someone said: KDE accounts file is no longer necessary---used for mapping svn ID -&amp;gt; email, but we have that now from Gitorious.&lt;br /&gt;
Answer from David Faure: I strongly disagree. We still need a KDE accounts file. This is very useful for finding people's email addresses, and having an overview on the number of active kde contributors; and if we keep it we can even have a kdepim resource again for filling an addressbook from it, for completion in kmail's composer (so you can write to any other kde contributor by just typing his/her name). It's also used for populating automatically the kde-cvs-announce mailing-list, for announcements. kde-common/accounts is our family tree (well, list), let's not get rid of it.&lt;br /&gt;
&lt;br /&gt;
Here's my proposal for a kde-common/accounts replacement for the git era: We write a post-receive hook that looks at every commit and records all known email addresses for a given real name as well as the commit hash and date of when an address was last encountered. We can then present that data in the form of a file like kde-common/accounts, or write a web interface to query it (with nice links to the commits on Gitorious, etc.) --Eike (Sho_ on IRC)&lt;br /&gt;
&lt;br /&gt;
To clear up possible confusion: The author information for a given commit is baked into the commit object itself, and comes from the configuration of the git repository it was created in. It is unrelated to any Gitorious account. Due to the distributed nature of Git, the one who uses his Gitorious account to push a commit need not be the same who created it. If Developer A creates a commit in his local clone and Developer B fetches it into his local clone directly from Developer A's machine and then pushes it into the public repo, the repo will only show a commit from Developer A. The Gitorious website will show that Developer B has pushed up a commit from Developer A, but that data is not contained in the repository. Thus collecting only Gitorious accounts and their mail addresses is insufficient. --Eike&lt;br /&gt;
&lt;br /&gt;
==Random==&lt;br /&gt;
http://mail.kde.org/pipermail/dot-stories/2005-May/000509.html might be a good guide on what docs we need.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
some of this stuff was from the list from GCDS that was in this email [http://markmail.org/message/u6eqfjece7fibfyo http://markmail.org/message/u6eqfjece7fibfyo]&lt;br /&gt;
&lt;br /&gt;
==IRC Meetings==&lt;br /&gt;
* [[Projects/MovetoGit/Meeting1111|Minutes]] of meeting 11 November 2009&lt;br /&gt;
* [[Projects/MovetoGit/Meeting1118|Next meeting]] 18:00, 25 November 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
= jobs =&lt;br /&gt;
''TODO merge this with the todolists above''&lt;br /&gt;
&lt;br /&gt;
michael jansen: talking to kdesvn-build/mpyne&lt;br /&gt;
:--Done? -&amp;gt; http://kdesvn-build.kde.org/releases/kdesvn-build-1.10.php -- Panagiotis Papadopoulos 1 November 2009&lt;br /&gt;
::Yes, but the __kdesvn-build-remote used in the impl isn't pleasant for users already on git so it still needs more work for them. [[User:Mpyne|Mpyne]] 20:32, 11 November 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
jonas: domain name &lt;br /&gt;
&lt;br /&gt;
ML: convert to SSH&lt;br /&gt;
&lt;br /&gt;
chani: techbase docs for scripty &lt;br /&gt;
&lt;br /&gt;
sebas/lydia/leo: communication with teams! tell people! keeping track that &lt;br /&gt;
everything is being done.&lt;/div&gt;</summary>
		<author><name>Sandsmark</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/KWallet</id>
		<title>Development/Tutorials/KWallet</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/KWallet"/>
				<updated>2010-06-21T21:46:03Z</updated>
		
		<summary type="html">&lt;p&gt;Sandsmark: remember code tags&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Development/Tutorials/KWallet}}&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
A simple introduction for using the KWallet API, a secure storage framework.&lt;br /&gt;
&lt;br /&gt;
Prerequisites: Basic KDE knowledge, C++.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
The API is fun and easy to use, and will guarantee you a long and stable life.&lt;br /&gt;
&lt;br /&gt;
In KWallet, entries are organized in Folders (or think of it as categories), and in them there are ''binary data'', ''maps'', ''passwords'' and a catch-all ''unknown''. Binary entries are application-specific arrays of bytes, maps should be known from QMaps, where a series of ''values'' are accessed by ''keys''. Passwords are simply strings, and ''Unknown'' is for everything else.&lt;br /&gt;
&lt;br /&gt;
===dialog.cpp===&lt;br /&gt;
&amp;lt;code cppqt n&amp;gt;&lt;br /&gt;
#include &amp;quot;dialog.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;QLayout&amp;gt;&lt;br /&gt;
#include &amp;lt;QLabel&amp;gt;&lt;br /&gt;
#include &amp;lt;QPushButton&amp;gt;&lt;br /&gt;
#include &amp;lt;QMap&amp;gt;&lt;br /&gt;
#include &amp;lt;QVBoxLayout&amp;gt;&lt;br /&gt;
#include &amp;lt;QSpacerItem&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dialog::Dialog(QWidget *parent) :&lt;br /&gt;
    QDialog(parent)&lt;br /&gt;
{&lt;br /&gt;
    setLayout(new QVBoxLayout);&lt;br /&gt;
    m_wallet = Wallet::openWallet(Wallet::NetworkWallet(),&lt;br /&gt;
                                  winId(),&lt;br /&gt;
                                  Wallet::Asynchronous);&lt;br /&gt;
&lt;br /&gt;
    QLabel *explanation = new QLabel(&amp;quot;&amp;lt;b&amp;gt;HELLO!&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;&lt;br /&gt;
                                     &amp;quot;Please type in something to save in the wallet!&amp;lt;br/&amp;gt;&amp;quot;&lt;br /&gt;
                                     &amp;quot;It will be saved in the form data folder, under &amp;lt;br/&amp;gt;&amp;quot;&lt;br /&gt;
                                     &amp;quot;the entry &amp;lt;i&amp;gt;http://test.com/#form&amp;lt;/i&amp;gt;.&amp;quot;);&lt;br /&gt;
    m_statusLabel = new QLabel(&amp;quot;Opening wallet...&amp;quot;, this);&lt;br /&gt;
    m_statusLabel-&amp;gt;setAlignment(Qt::AlignCenter);&lt;br /&gt;
    m_keyInput = new QLineEdit(this);&lt;br /&gt;
    m_valueInput = new QLineEdit(this);&lt;br /&gt;
    m_launchButton = new QPushButton(&amp;quot;Save!&amp;quot;, this);&lt;br /&gt;
    m_launchButton-&amp;gt;setDisabled(true);&lt;br /&gt;
&lt;br /&gt;
    layout()-&amp;gt;addWidget(explanation);&lt;br /&gt;
    qobject_cast&amp;lt;QVBoxLayout*&amp;gt;(layout())-&amp;gt;addStretch();&lt;br /&gt;
    layout()-&amp;gt;addWidget(m_statusLabel);&lt;br /&gt;
    layout()-&amp;gt;addWidget(new QLabel(&amp;quot;Key:&amp;quot;, this));&lt;br /&gt;
    layout()-&amp;gt;addWidget(m_keyInput);&lt;br /&gt;
    layout()-&amp;gt;addWidget(new QLabel(&amp;quot;Value:&amp;quot;, this));&lt;br /&gt;
    layout()-&amp;gt;addWidget(m_valueInput);&lt;br /&gt;
    layout()-&amp;gt;addWidget(m_launchButton);&lt;br /&gt;
&lt;br /&gt;
    connect(m_launchButton, SIGNAL(clicked()), SLOT(doSave()));&lt;br /&gt;
    connect(m_wallet, SIGNAL(walletOpened(bool)), SLOT(walletOpened(bool)));&lt;br /&gt;
    setMinimumSize(500, 200);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void Dialog::walletOpened(bool ok)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
    if (ok &amp;amp;&amp;amp;&lt;br /&gt;
        (m_wallet-&amp;gt;hasFolder(KWallet::Wallet::FormDataFolder()) ||&lt;br /&gt;
        m_wallet-&amp;gt;createFolder(KWallet::Wallet::FormDataFolder())) &amp;amp;&amp;amp;&lt;br /&gt;
        m_wallet-&amp;gt;setFolder(KWallet::Wallet::FormDataFolder())) {&lt;br /&gt;
        m_launchButton-&amp;gt;setDisabled(false);&lt;br /&gt;
        m_statusLabel-&amp;gt;setText(&amp;quot;Idle.&amp;quot;);&lt;br /&gt;
    } else&lt;br /&gt;
        m_statusLabel-&amp;gt;setText(&amp;quot;Error opening wallet!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void Dialog::doSave()&lt;br /&gt;
{&lt;br /&gt;
    if (m_keyInput-&amp;gt;text().isEmpty() || m_valueInput-&amp;gt;text().isEmpty()) {&lt;br /&gt;
        m_statusLabel-&amp;gt;setText(&amp;quot;Empty field!&amp;quot;);&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    m_launchButton-&amp;gt;setDisabled(true);&lt;br /&gt;
&lt;br /&gt;
    m_statusLabel-&amp;gt;setText(&amp;quot;Saving ...&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    QMap&amp;lt;QString, QString&amp;gt; map;&lt;br /&gt;
    map[m_keyInput-&amp;gt;text()] = m_valueInput-&amp;gt;text();&lt;br /&gt;
    if (m_wallet-&amp;gt;writeMap(&amp;quot;http://test.com/#form&amp;quot;, map)) m_statusLabel-&amp;gt;setText(&amp;quot;Something went wrong!&amp;quot;);&lt;br /&gt;
    else {&lt;br /&gt;
        m_statusLabel-&amp;gt;setText(&amp;quot;Saved!&amp;quot;);&lt;br /&gt;
        m_keyInput-&amp;gt;clear();&lt;br /&gt;
        m_valueInput-&amp;gt;clear();&lt;br /&gt;
    }&lt;br /&gt;
    m_launchButton-&amp;gt;setDisabled(false);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===dialog.h===&lt;br /&gt;
&amp;lt;code cppqt n&amp;gt;&lt;br /&gt;
#ifndef DIALOG_H&lt;br /&gt;
#define DIALOG_H&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;QDialog&amp;gt;&lt;br /&gt;
#include &amp;lt;QLabel&amp;gt;&lt;br /&gt;
#include &amp;lt;QLineEdit&amp;gt;&lt;br /&gt;
#include &amp;lt;KWallet/Wallet&amp;gt;&lt;br /&gt;
&lt;br /&gt;
using KWallet::Wallet;&lt;br /&gt;
&lt;br /&gt;
class Dialog : public QDialog&lt;br /&gt;
{&lt;br /&gt;
Q_OBJECT&lt;br /&gt;
public:&lt;br /&gt;
    Dialog(QWidget *parent = 0);&lt;br /&gt;
&lt;br /&gt;
private slots:&lt;br /&gt;
    void doSave();&lt;br /&gt;
    void walletOpened(bool ok);&lt;br /&gt;
&lt;br /&gt;
private:&lt;br /&gt;
    Wallet *m_wallet;&lt;br /&gt;
    QLineEdit *m_keyInput;&lt;br /&gt;
    QLineEdit *m_valueInput;&lt;br /&gt;
    QLabel *m_statusLabel;&lt;br /&gt;
    QPushButton *m_launchButton;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#endif // DIALOG_H&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===main.cpp===&lt;br /&gt;
&amp;lt;code cppqt n&amp;gt;&lt;br /&gt;
#include &amp;quot;dialog.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;KAboutData&amp;gt;&lt;br /&gt;
#include &amp;lt;KApplication&amp;gt;&lt;br /&gt;
#include &amp;lt;KCmdLineArgs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
static KAboutData about(&lt;br /&gt;
    &amp;quot;KWalletDemoApplication&amp;quot;,&lt;br /&gt;
    &amp;quot;&amp;quot;,&lt;br /&gt;
    ki18n(&amp;quot;KWalletDemoApplication&amp;quot;),&lt;br /&gt;
    &amp;quot;1.0&amp;quot;,&lt;br /&gt;
    ki18n(&amp;quot;Demonstrates basic KWallet usage.&amp;quot;),&lt;br /&gt;
    KAboutData::License_LGPL,&lt;br /&gt;
    ki18n(&amp;quot;(C) 2010 Martin Sandsmark&amp;quot;),&lt;br /&gt;
    KLocalizedString(),&lt;br /&gt;
    &amp;quot;http://www.mts.ms/&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char *argv[])&lt;br /&gt;
{&lt;br /&gt;
    about.addAuthor(ki18n(&amp;quot;Martin Sandsmark&amp;quot;), ki18n(&amp;quot;Maintainer&amp;quot;), &amp;quot;sandsmark@iskrembilen.com&amp;quot;, &amp;quot;http://iskrembilen.com/&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    KCmdLineArgs::init(argc, argv, &amp;amp;about);&lt;br /&gt;
    KApplication app;&lt;br /&gt;
&lt;br /&gt;
    Dialog dialog;&lt;br /&gt;
    dialog.show();&lt;br /&gt;
    return app.exec();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CMakeLists.txt===&lt;br /&gt;
&amp;lt;code cmake n&amp;gt;&lt;br /&gt;
project(Importer)&lt;br /&gt;
&lt;br /&gt;
find_package(KDE4 REQUIRED)&lt;br /&gt;
add_definitions(${QT_DEFINITIONS} ${KDE4_DEFINITIONS})&lt;br /&gt;
include(KDE4Defaults)&lt;br /&gt;
include(MacroLibrary)&lt;br /&gt;
include_directories(${KDE4_INCLUDES} ${KDE4_INCLUDE_DIR} ${QT_INCLUDES})&lt;br /&gt;
&lt;br /&gt;
set(SRCS main.cpp dialog.cpp)&lt;br /&gt;
&lt;br /&gt;
kde4_add_executable(kwallet-demo ${SRCS})&lt;br /&gt;
target_link_libraries(kwallet-demo ${KDE4_KDECORE_LIBS} ${KDE4_KPARTS_LIBS} ${KDE4_KDEUI_LIBS})&lt;br /&gt;
install(TARGETS kwallet-demo ${INSTALL_TARGETS_DEFAULT_ARGS})&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sandsmark</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/KWallet</id>
		<title>Development/Tutorials/KWallet</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/KWallet"/>
				<updated>2010-06-21T21:43:41Z</updated>
		
		<summary type="html">&lt;p&gt;Sandsmark: first version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Development/Tutorials/KWallet}}&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
A simple introduction for using the KWallet API, a secure storage framework.&lt;br /&gt;
&lt;br /&gt;
Prerequisites: Basic KDE knowledge, C++.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
The API is fun and easy to use, and will guarantee you a long and stable life.&lt;br /&gt;
&lt;br /&gt;
In KWallet, entries are organized in Folders (or think of it as categories), and in them there are ''binary data'', ''maps'', ''passwords'' and a catch-all ''unknown''. Binary entries are application-specific arrays of bytes, maps should be known from QMaps, where a series of ''values'' are accessed by ''keys''. Passwords are simply strings, and ''Unknown'' is for everything else.&lt;br /&gt;
&lt;br /&gt;
===dialog.cpp===&lt;br /&gt;
#include &amp;quot;dialog.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;QLayout&amp;gt;&lt;br /&gt;
#include &amp;lt;QLabel&amp;gt;&lt;br /&gt;
#include &amp;lt;QPushButton&amp;gt;&lt;br /&gt;
#include &amp;lt;QMap&amp;gt;&lt;br /&gt;
#include &amp;lt;QVBoxLayout&amp;gt;&lt;br /&gt;
#include &amp;lt;QSpacerItem&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dialog::Dialog(QWidget *parent) :&lt;br /&gt;
    QDialog(parent)&lt;br /&gt;
{&lt;br /&gt;
    setLayout(new QVBoxLayout);&lt;br /&gt;
    m_wallet = Wallet::openWallet(Wallet::NetworkWallet(),&lt;br /&gt;
                                  winId(),&lt;br /&gt;
                                  Wallet::Asynchronous);&lt;br /&gt;
&lt;br /&gt;
    QLabel *explanation = new QLabel(&amp;quot;&amp;lt;b&amp;gt;HELLO!&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&amp;quot;&lt;br /&gt;
                                     &amp;quot;Please type in something to save in the wallet!&amp;lt;br/&amp;gt;&amp;quot;&lt;br /&gt;
                                     &amp;quot;It will be saved in the form data folder, under &amp;lt;br/&amp;gt;&amp;quot;&lt;br /&gt;
                                     &amp;quot;the entry &amp;lt;i&amp;gt;http://test.com/#form&amp;lt;/i&amp;gt;.&amp;quot;);&lt;br /&gt;
    m_statusLabel = new QLabel(&amp;quot;Opening wallet...&amp;quot;, this);&lt;br /&gt;
    m_statusLabel-&amp;gt;setAlignment(Qt::AlignCenter);&lt;br /&gt;
    m_keyInput = new QLineEdit(this);&lt;br /&gt;
    m_valueInput = new QLineEdit(this);&lt;br /&gt;
    m_launchButton = new QPushButton(&amp;quot;Save!&amp;quot;, this);&lt;br /&gt;
    m_launchButton-&amp;gt;setDisabled(true);&lt;br /&gt;
&lt;br /&gt;
    layout()-&amp;gt;addWidget(explanation);&lt;br /&gt;
    qobject_cast&amp;lt;QVBoxLayout*&amp;gt;(layout())-&amp;gt;addStretch();&lt;br /&gt;
    layout()-&amp;gt;addWidget(m_statusLabel);&lt;br /&gt;
    layout()-&amp;gt;addWidget(new QLabel(&amp;quot;Key:&amp;quot;, this));&lt;br /&gt;
    layout()-&amp;gt;addWidget(m_keyInput);&lt;br /&gt;
    layout()-&amp;gt;addWidget(new QLabel(&amp;quot;Value:&amp;quot;, this));&lt;br /&gt;
    layout()-&amp;gt;addWidget(m_valueInput);&lt;br /&gt;
    layout()-&amp;gt;addWidget(m_launchButton);&lt;br /&gt;
&lt;br /&gt;
    connect(m_launchButton, SIGNAL(clicked()), SLOT(doSave()));&lt;br /&gt;
    connect(m_wallet, SIGNAL(walletOpened(bool)), SLOT(walletOpened(bool)));&lt;br /&gt;
    setMinimumSize(500, 200);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void Dialog::walletOpened(bool ok)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
    if (ok &amp;amp;&amp;amp;&lt;br /&gt;
        (m_wallet-&amp;gt;hasFolder(KWallet::Wallet::FormDataFolder()) ||&lt;br /&gt;
        m_wallet-&amp;gt;createFolder(KWallet::Wallet::FormDataFolder())) &amp;amp;&amp;amp;&lt;br /&gt;
        m_wallet-&amp;gt;setFolder(KWallet::Wallet::FormDataFolder())) {&lt;br /&gt;
        m_launchButton-&amp;gt;setDisabled(false);&lt;br /&gt;
        m_statusLabel-&amp;gt;setText(&amp;quot;Idle.&amp;quot;);&lt;br /&gt;
    } else&lt;br /&gt;
        m_statusLabel-&amp;gt;setText(&amp;quot;Error opening wallet!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void Dialog::doSave()&lt;br /&gt;
{&lt;br /&gt;
    if (m_keyInput-&amp;gt;text().isEmpty() || m_valueInput-&amp;gt;text().isEmpty()) {&lt;br /&gt;
        m_statusLabel-&amp;gt;setText(&amp;quot;Empty field!&amp;quot;);&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    m_launchButton-&amp;gt;setDisabled(true);&lt;br /&gt;
&lt;br /&gt;
    m_statusLabel-&amp;gt;setText(&amp;quot;Saving ...&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    QMap&amp;lt;QString, QString&amp;gt; map;&lt;br /&gt;
    map[m_keyInput-&amp;gt;text()] = m_valueInput-&amp;gt;text();&lt;br /&gt;
    if (m_wallet-&amp;gt;writeMap(&amp;quot;http://test.com/#form&amp;quot;, map)) m_statusLabel-&amp;gt;setText(&amp;quot;Something went wrong!&amp;quot;);&lt;br /&gt;
    else {&lt;br /&gt;
        m_statusLabel-&amp;gt;setText(&amp;quot;Saved!&amp;quot;);&lt;br /&gt;
        m_keyInput-&amp;gt;clear();&lt;br /&gt;
        m_valueInput-&amp;gt;clear();&lt;br /&gt;
    }&lt;br /&gt;
    m_launchButton-&amp;gt;setDisabled(false);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===dialog.h===&lt;br /&gt;
#ifndef DIALOG_H&lt;br /&gt;
#define DIALOG_H&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;QDialog&amp;gt;&lt;br /&gt;
#include &amp;lt;QLabel&amp;gt;&lt;br /&gt;
#include &amp;lt;QLineEdit&amp;gt;&lt;br /&gt;
#include &amp;lt;KWallet/Wallet&amp;gt;&lt;br /&gt;
&lt;br /&gt;
using KWallet::Wallet;&lt;br /&gt;
&lt;br /&gt;
class Dialog : public QDialog&lt;br /&gt;
{&lt;br /&gt;
Q_OBJECT&lt;br /&gt;
public:&lt;br /&gt;
    Dialog(QWidget *parent = 0);&lt;br /&gt;
&lt;br /&gt;
private slots:&lt;br /&gt;
    void doSave();&lt;br /&gt;
    void walletOpened(bool ok);&lt;br /&gt;
&lt;br /&gt;
private:&lt;br /&gt;
    Wallet *m_wallet;&lt;br /&gt;
    QLineEdit *m_keyInput;&lt;br /&gt;
    QLineEdit *m_valueInput;&lt;br /&gt;
    QLabel *m_statusLabel;&lt;br /&gt;
    QPushButton *m_launchButton;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#endif // DIALOG_H&lt;br /&gt;
&lt;br /&gt;
===main.cpp===&lt;br /&gt;
#include &amp;quot;dialog.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;KAboutData&amp;gt;&lt;br /&gt;
#include &amp;lt;KApplication&amp;gt;&lt;br /&gt;
#include &amp;lt;KCmdLineArgs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
static KAboutData about(&lt;br /&gt;
    &amp;quot;KWalletDemoApplication&amp;quot;,&lt;br /&gt;
    &amp;quot;&amp;quot;,&lt;br /&gt;
    ki18n(&amp;quot;KWalletDemoApplication&amp;quot;),&lt;br /&gt;
    &amp;quot;1.0&amp;quot;,&lt;br /&gt;
    ki18n(&amp;quot;Demonstrates basic KWallet usage.&amp;quot;),&lt;br /&gt;
    KAboutData::License_LGPL,&lt;br /&gt;
    ki18n(&amp;quot;(C) 2010 Martin Sandsmark&amp;quot;),&lt;br /&gt;
    KLocalizedString(),&lt;br /&gt;
    &amp;quot;http://www.mts.ms/&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char *argv[])&lt;br /&gt;
{&lt;br /&gt;
    about.addAuthor(ki18n(&amp;quot;Martin Sandsmark&amp;quot;), ki18n(&amp;quot;Maintainer&amp;quot;), &amp;quot;sandsmark@iskrembilen.com&amp;quot;, &amp;quot;http://iskrembilen.com/&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    KCmdLineArgs::init(argc, argv, &amp;amp;about);&lt;br /&gt;
    KApplication app;&lt;br /&gt;
&lt;br /&gt;
    Dialog dialog;&lt;br /&gt;
    dialog.show();&lt;br /&gt;
    return app.exec();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
===CMakeLists.txt===&lt;br /&gt;
project(Importer)&lt;br /&gt;
&lt;br /&gt;
find_package(KDE4 REQUIRED)&lt;br /&gt;
add_definitions(${QT_DEFINITIONS} ${KDE4_DEFINITIONS})&lt;br /&gt;
include(KDE4Defaults)&lt;br /&gt;
include(MacroLibrary)&lt;br /&gt;
include_directories(${KDE4_INCLUDES} ${KDE4_INCLUDE_DIR} ${QT_INCLUDES})&lt;br /&gt;
&lt;br /&gt;
set(SRCS main.cpp dialog.cpp)&lt;br /&gt;
&lt;br /&gt;
kde4_add_executable(kwallet-demo ${SRCS})&lt;br /&gt;
target_link_libraries(kwallet-demo ${KDE4_KDECORE_LIBS} ${KDE4_KPARTS_LIBS} ${KDE4_KDEUI_LIBS})&lt;br /&gt;
install(TARGETS kwallet-demo ${INSTALL_TARGETS_DEFAULT_ARGS})&lt;/div&gt;</summary>
		<author><name>Sandsmark</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials</id>
		<title>Development/Tutorials</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials"/>
				<updated>2010-06-21T20:52:23Z</updated>
		
		<summary type="html">&lt;p&gt;Sandsmark: link to (soon-to-be) kwallet tutorial&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Development/Tutorials}}&lt;br /&gt;
&lt;br /&gt;
Tutorials are the fastest way of finding out what KDE will do for you, and how to do it. Here is a list of currently available tutorials '''for KDE4'''. Material for KDE3 and KDE2 is available on the bottom of this page.&lt;br /&gt;
&lt;br /&gt;
== Introduction To KDE 4 Programming ==&lt;br /&gt;
Are you interested in writing applications with KDE 4? This tutorial series is aimed at those completely new to KDE programming.&lt;br /&gt;
;[[Development/Tutorials/First program|Hello World]]&lt;br /&gt;
:''A preliminary introduction to the very basics of KDE4 programming''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using KXmlGuiWindow|Creating the Main Window]]&lt;br /&gt;
:''This tutorial shows you the magic of an application's most important thing: The main window.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using KActions|Using KActions]]&lt;br /&gt;
:''How to add actions to the menus and toolbars.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Saving and loading|Saving and Loading]]&lt;br /&gt;
:''Introduces the KIO library while adding loading and saving support to our application.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/KCmdLineArgs|Command line arguments]]&lt;br /&gt;
:''Adds the ability to specify which file to open from the command line to our text editor.''&lt;br /&gt;
&lt;br /&gt;
== Basics ==&lt;br /&gt;
;[[Development/Tutorials/KDE4 Porting Guide|Porting Your Application]]&lt;br /&gt;
:''Help Porting Applications from Qt3/KDE3 to Qt4/KDE4''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/CMake|Introduction to CMake]]&lt;br /&gt;
:''How to use the CMake build system used by KDE4.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Common Programming Mistakes|Common Programming Mistakes]]&lt;br /&gt;
:''Various common mistakes made while developing Qt and KDE applications and how to avoid them.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using Qt Designer|Using Qt Designer to build user interfaces]]&lt;br /&gt;
:''How to create UI files with designer, and how to integrate them into a KDE program.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using Qt Creator|Using Qt Creator to develop your KDE program]]&lt;br /&gt;
:''How to integrate Qt Creator use into KDE development.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Creating Libraries|Creating Libraries to share code]]&lt;br /&gt;
:''How to add the library to the buildsystem and how to prepare the source code.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Session_Management|Session Management]]&lt;br /&gt;
:''Make your application aware of X sessions''&lt;br /&gt;
&lt;br /&gt;
== Testing And Debugging ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Debugging|Debugging your application]]&lt;br /&gt;
:''Tips, tools and techniques to apply when debugging your KDE application''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Unittests|Writing Unittests for Qt4 and KDE4 with QTestLib]] ([http://developer.kde.org/documentation/tutorials/writingunittests/writingunittests.html Original link])&lt;br /&gt;
:''Tutorial by [mailto:bradh@frogmouth.net Brad Hards] that describes how to write unit tests using the QTestLib framework. It is presented as an example based tutorial, and is still under development.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Code_Checking|Semi-automatic ways to detect code errors]]&lt;br /&gt;
:''Techniques you can use to detect errors in KDE code''&lt;br /&gt;
&lt;br /&gt;
== Managing Configuration Data With KConfig ==&lt;br /&gt;
;[[Development/Tutorials/KConfig|Introduction To KConfig]]&lt;br /&gt;
:''An overview of the KConfig classes and how to use them in your application code''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using KConfig XT|Using KConfig XT]]&lt;br /&gt;
:''Tutorial on how to efficiently use the KConfig XT framework.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Updating KConfig Files|Updating KConfig Files]]&lt;br /&gt;
:''Tutorial on how to write an update script to keep changes in your application's config file format in sync with the user's already existing config file''&lt;br /&gt;
&lt;br /&gt;
== Services: Applications and Plugins ==&lt;br /&gt;
;[[Development/Tutorials/Services/Introduction|Introduction to the Services Framework]]&lt;br /&gt;
:''An overview of the services framework in KDE and what it provides the application developer. Covers the system configuration cache (SyCoCa), the source data files and what the indexed information can be used for.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Services/Traders|Finding Services Using Trader Queries]]&lt;br /&gt;
:''How to find services, such as plugins or mimetypes, that are indexed in the SyCoCa using Trader Query Syntax''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Services/Plugins|Creating and Loading Plugins Using KService]]&lt;br /&gt;
:''Learn how to define custom plugin types, find installed plugins (including 3rd party plugins) and load them in an easy and portable fashion using KService.''&lt;br /&gt;
&lt;br /&gt;
== Localization ==&lt;br /&gt;
See also [[Localization|Localization portal]].&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Localization/Unicode|Introduction To Unicode]]&lt;br /&gt;
:''An introduction to what Unicode is as well as how to handle Unicode data in KDE applications.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n|Writing Applications With Localization In Mind]]&lt;br /&gt;
:''This tutorial covers what localization is, why it's important and how to ensure your application is ready to be localized. A must read for all application developers.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n Mistakes|Avoiding Common Localization Pitfalls]]&lt;br /&gt;
:''There are several common mistakes that prevent applications from being properly localized. Find out what they are and how to easily avoid them in this tutorial.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/Building KDE's l10n Module|Building KDE's Localization Module]]&lt;br /&gt;
:''Building and installing language support from KDE's localization (l10n) module is a good idea for those working on applications in the main KDE repository. Doing so will allow you to test your application in another language and spot problem areas. Learn how to do just that in this tutorial.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n Build Systems|Incorporating i18n Into the Build System]]&lt;br /&gt;
:''Once your application is ready to be localized, the next step is to ensure that translation files are built automatically and kept up to date. This tutorial covers the necessary CMakeFiles.txt additions as well the process of distributing the resulting message catalogs with your application.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n Challenges|Common i18n Challenges and Solutions]]&lt;br /&gt;
:''This tutorial covers challenges that you may eventually run into such as translating handbooks and other data that exists outside of the source code, merging and handling obsolete .po files, dealing with freezes, coding in languages other than English and creating independent releases of or moving applications between KDE modules.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n_Semantics|Semantic Markup of Messages]]&lt;br /&gt;
:''To ensure consistent presentation and more meaningful representations of messages in applications, semantic markup can be applied to messages marked for translation using the KUIT system. This tutorial describes how this system works.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n Krazy|Automated i18n Code Checking]]&lt;br /&gt;
:''The Krazy code checker scans KDE's code and reports common i18n mistakes.''&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/API_Documentation|API Documentation]]&lt;br /&gt;
:''This tutorial explains how to document your APIs properly.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Man_Pages|Man Pages]]&lt;br /&gt;
:''Writing and Generating Reference Manual Pages.''&lt;br /&gt;
&lt;br /&gt;
== Accessibility ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Accessibility|Accessibility]]&lt;br /&gt;
:''This tutorial will explain how to make your application accessible.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Text-To-Speech|Text-To-Speech]]&lt;br /&gt;
:''How to utilize KDE's text to speech service in your application.''&lt;br /&gt;
&lt;br /&gt;
== Application Automation and Scripting ==&lt;br /&gt;
&lt;br /&gt;
=== D-Bus ===&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Introduction|Introduction to D-Bus]]&lt;br /&gt;
:''A straight-forward introduction to the core concepts in D-Bus from an application developer's perspective, this tutorial covers what D-Bus is and how it can be used by applications.''&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Accessing Interfaces|Accessing D-Bus Interfaces]]&lt;br /&gt;
:''A step-by-step guide to calling D-Bus methods and connecting to D-Bus signals using QtDBus.''&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Intermediate_D-Bus|Intermediate D-Bus]]&lt;br /&gt;
:''Tips to make use of QtDBus when faced with problematic real-world interfaces.''&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Creating Interfaces|Creating D-Bus Interfaces]]&lt;br /&gt;
:''Learn how to expose functionality in your application by creating and using custom D-Bus interfaces. Covers generating the XML descriptions, instantiating interfaces at run time and setting up the build system with CMake.''&lt;br /&gt;
; [[Development/Tutorials/D-Bus/CustomTypes|Using Custom Types with D-Bus]]: ''Learn how to use your own types in classes exported on D-Bus. Covers marhaling and unmarshaling of objects, the integration of custom types into XML descriptions and registering the custom types with the Qt Meta Object system.''&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Autostart Services|D-Bus Autostart Services]]&lt;br /&gt;
:''Turn your application into a D-Bus autostart service with this tutorial. This D-Bus feature, also known as &amp;quot;D-Bus service activation&amp;quot;, will ensure that even when your application isn't running that D-Bus calls made to it will work by relying on the D-Bus daemon itself to start your app if and when needed.''&lt;br /&gt;
; [[Development/Tutorials/Porting_to_D-Bus|Porting from DCOP to D-Bus]]&lt;br /&gt;
: ''Port your applications from DCOP to D-Bus with this handy guide.''&lt;br /&gt;
&lt;br /&gt;
=== Konqueror ===&lt;br /&gt;
; [[Development/Tutorials/Creating Konqueror Service Menus|Creating Konqueror Service Menus]]&lt;br /&gt;
:''This tutorial shows you how to create mimetype-specific actions in Konqueror's context menu (aka &amp;quot;servicemenus&amp;quot;).''&lt;br /&gt;
&lt;br /&gt;
=== Kross ===&lt;br /&gt;
; [[Development/Tutorials/Kross/Introduction|Introduction to Kross]]&lt;br /&gt;
:''An introduction to the Kross Scripting Framework.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Hello_World|Hello World]]&lt;br /&gt;
:''A first application with working kross code.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Call_Functions_in_Kross|Calling Functions in Kross]]&lt;br /&gt;
:''Simple demonstration of calling scripting functions''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Connecting_Signals_and_slots_in_Kross|Connecting Signals and Slots in Kross]]&lt;br /&gt;
:''Simple demonstration of connecting object signals with script slots''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Scripts-as-Plugins|Scripts as Plugins with Kross]]&lt;br /&gt;
:''This tutorial provides a step-by-step introduction how to integrate scripts as plugins into a KDE application.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Script-Actions|Placing script actions in your application menus ]]&lt;br /&gt;
:''Simple demonstration on how to extend you application menus to execute script files.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/ActionCollections|How to use an ActionCollection ]]&lt;br /&gt;
:''A small Tutorial on How to use Kross::ActionCollections.''&lt;br /&gt;
{{:KOffice/Plugin Tutorials}}&lt;br /&gt;
&lt;br /&gt;
=== SuperKaramba ===&lt;br /&gt;
; [[Development/Tutorials/SuperKaramba|SuperKaramba Tutorial]]&lt;br /&gt;
:''This tutorial provides an overview of SuperKaramba, theme files and scripting with Python, Ruby and JavaScript.''&lt;br /&gt;
&lt;br /&gt;
=== System Activity ===&lt;br /&gt;
&lt;br /&gt;
: [[Development/Tutorials/SystemActivity/Scripting|Writing script actions for the process's context menu]]&lt;br /&gt;
:''This tutorial shows how to add a context menu action to show custom information about a process.&lt;br /&gt;
&lt;br /&gt;
== Plugins and KParts ==&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Writing kontact plugins|Writing kontact plugins]]:''Kontact plugins are KParts. This tutorial describes how you can write one.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Using KParts|Using KParts]]:''Learn how to load a KPart into an application window.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Writing Qt Designer Plugins|Writing Qt Designer Plugins]]:''Add your widgets to Qt Designer and thus make them usable in UI files.''&lt;br /&gt;
&lt;br /&gt;
== Search and Metadata ==&lt;br /&gt;
&lt;br /&gt;
=== Strigi ===&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Writing file analyzers|Writing file analyzers]]&lt;br /&gt;
:''File analyzers extract data from files to display in the file dialogs and file managers. The data gathered this way is also used to search for files. KDE4 allows the use of multiple analyzers per file type. This tutorial describes how you can write new analyzers.''&lt;br /&gt;
&lt;br /&gt;
=== [http://nepomuk.kde.org Nepomuk] ===&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/Quickstart|Nepomuk Quickstart]]&lt;br /&gt;
:''How to use Nepomuk resources in a quick and painless way without much fuss.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/RDFIntroduction|RDF and Ontologies in Nepomuk]]&lt;br /&gt;
:''An introduction to RDF and the usage of ontologies in Nepomuk.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/DataLayout|Data Layout in Nepomuk]]&lt;br /&gt;
:''An overview of which and how data is stored in Nepomuk.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/Resources|Handling Resources with Nepomuk]]&lt;br /&gt;
:''Nepomuk is the KDE library which provides easy access to metadata in the Nepomuk system. Learn how to make your application create and read metadata using the Nepomuk system.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/ResourceGenerator|Using the Nepomuk Resource Generator]]&lt;br /&gt;
:''Nepomuk includes a resource generator which creates convenience classes for handling metadata.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/NepomukQuery|Using the Nepomuk Query API]]&lt;br /&gt;
:''Starting with KDE 4.4 Nepomuk provides a desktop query API.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/AdvancedQueries|Advanced Queries]]&lt;br /&gt;
:''The real power of Nepomuk can only be exposed when performing fancy queries on the data repository. This tutorial provides an introduction to semantic and full text queries in Nepomuk.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/NepomukServer|The Nepomuk Server and the Architecture of the Nepomuk subsystem]]&lt;br /&gt;
:''The Nepomuk Server hosts the main Nepomuk data repository and can be accessed directly via a Soprano API.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/NepomukServices|Nepomuk Services]]&lt;br /&gt;
:''The Nepomuk Server manages a set of Nepomuk services.''&lt;br /&gt;
:* [[Development/Tutorials/Metadata/Nepomuk/StorageService|Storage Service]] ''The probably most important service hosts the Nepomuk data repository using [http://soprano.sourceforge.net Soprano].''&lt;br /&gt;
:* [[Development/Tutorials/Metadata/Nepomuk/OntologyLoaderService|Ontology Loader]] ''Makes sure installed ontologies such as RDF, RDFS, NRL, or Xesam are loaded into the storage repository.''&lt;br /&gt;
:* [[Development/Tutorials/Metadata/Nepomuk/FileWatchService|File Watch Service]] ''Monitors the file system for changes and updates the file resource paths and URIs in Nepomuk.''&lt;br /&gt;
:* [[Development/Tutorials/Metadata/Nepomuk/StrigiService|Strigi Service]] ''Controls Strigi, the file indexing tool which extracts metadata from files and stores it into the storage repository.''&lt;br /&gt;
:* [[Development/Tutorials/Metadata/Nepomuk/QueryService|Query Service]] ''Provides persistant query folders.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Metadata/Nepomuk/TipsAndTricks|Nepomuk Tips and Tricks]]&lt;br /&gt;
:''A set of tips and tricks for development with Nepomuk and Soprano. This is a must-read if you intend to use Nepomuk in your application or hack on it directly.''&lt;br /&gt;
&lt;br /&gt;
== Hardware Awareness (Solid) ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Solid_Tutorials|Introduction to Solid]]&lt;br /&gt;
:''An introduction to using the Solid hardware discovery and interaction system in KDE applications.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Solid_Network_Tutorial|Accessing Network Information]]&lt;br /&gt;
:''How to use the Solid system to get information about the network''&lt;br /&gt;
&lt;br /&gt;
== Authorization and Privilege escalation (KAuth) ==&lt;br /&gt;
; [[Development/Tutorials/KAuth/KAuth_Basics|KAuth Basics]]&lt;br /&gt;
:''An overview of concepts and basic knowledge required to understand and use KAuth effectively''&lt;br /&gt;
; [[Development/Tutorials/KAuth/KAuth_Actions|Using KAuth actions in your application]]&lt;br /&gt;
:''How to execute KAuth actions in your application, and how to integrate them tightly into your UI''&lt;br /&gt;
; [[Development/Tutorials/KAuth/Helper_HowTo|Creating a KAuth helper to perform a privileged action]]&lt;br /&gt;
:''You will learn how to use KAuth's helpers and escalation facilities, and how to seamlessly make a privileged and non privileged portion of your application interact''&lt;br /&gt;
; [[Development/Tutorials/KAuth/KCM_HowTo|Creating a KCM requiring authorization upon saving]]&lt;br /&gt;
:''Learn how to use the high level KCModule API to create KCModules handling authorization, and its UI integration, on their own''&lt;br /&gt;
&lt;br /&gt;
== Multimedia (Phonon) ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Phonon/Introduction|Phonon]]&lt;br /&gt;
:''How to start with the multimedia API''&lt;br /&gt;
&lt;br /&gt;
:''How to compile and use Phonon and its GStreamer backend on Linux using Qt 4.3.x''&lt;br /&gt;
::''This article gives you a quick brief of how you can use checkout, compile Phonon and its GStreamer backend on GNU/Linux with just Qt 4.3.x. Towards the end, the article also describes how a developer can make use of Phonon to create simple audio and video players. You can read the article [http://www.vcreatelogic.com/oss/docs/CompilingPhononOnLinux.pdf here]. You can download the editable OpenDocumentText file from [http://www.prashanthudupa.com/phonon/CompilingPhononOnLinux.odt here].''&lt;br /&gt;
&lt;br /&gt;
== Plasma ==&lt;br /&gt;
&lt;br /&gt;
See [[Development/Tutorials/Plasma|Plasma tutorials]].&lt;br /&gt;
&lt;br /&gt;
== Communication (Decibel) ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Decibel/GettingStarted|Getting started with Decibel]]&lt;br /&gt;
:''This tutorial describes how to set up Decibel.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Decibel/Handling_TextChannels|Handling TextChannels]]&lt;br /&gt;
:''This tutorial introduces the basics of handling incoming TextChannels by guiding you through building a simple text chat application.''&lt;br /&gt;
&lt;br /&gt;
== Personal Information Management (Akonadi) ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Akonadi/Application|Using Akonadi in Applications]]&lt;br /&gt;
:''Displaying and modifying data provided by Akonadi''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Akonadi/Resources|Developing Akonadi Resources]]&lt;br /&gt;
:''Akonadi Resources are agent programs which transport PIM data between Akonadi and a backend (files, servers, etc)''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Akonadi/SerializerPlugin|Using custom data types with Akonadi]]&lt;br /&gt;
:''Akonadi can handle arbitrary data as item payloads through the use of a plugin based serialization framework''&lt;br /&gt;
&lt;br /&gt;
;[[Development/AkonadiPorting|Porting Applications which use KResource API]]&lt;br /&gt;
:''Applications using KDE's now deprecated KResource APIs, e.g. KABC or KCal, need to be ported to use their Akonadi equivalents''&lt;br /&gt;
&lt;br /&gt;
== Kate / Kwrite ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Kate/KTextEditor Plugins|Getting started with KTextEditor plugins]]&lt;br /&gt;
:''Creating your first KTextEditor plugin''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Kate/KTextEditor_Plugins_Advanced|Developing a plugin with configuration dialog]]&lt;br /&gt;
:''Adding a configuration dialog to the Time &amp;amp; Date example''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Kate/KTextEditor_Example|A small Editor]]&lt;br /&gt;
:''Create a small application using KTextEditor''&lt;br /&gt;
&lt;br /&gt;
== KDevelop ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/KDevelop-PG-Qt_Introduction|KDevelop-PG-Qt Introduction]]&lt;br /&gt;
:''Information on the KDevelop parser generator, useful for language plugins.''&lt;br /&gt;
&lt;br /&gt;
==Printing==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Printing Hello World|Hello World]]&lt;br /&gt;
:''Introduction to the KDE printing system''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Printing Print Dialog|Print Dialog]]&lt;br /&gt;
:''Using the KDE print dialog''&lt;br /&gt;
&lt;br /&gt;
== kioslaves ==&lt;br /&gt;
* [[Development/Tutorials/KIO Slaves/Using KIO Slaves in your Program|Using kioslaves in your Program]]&lt;br /&gt;
* [[Development/Tutorials/KIO Slaves/Hello World|Creating a Hello-World kioslave]]&lt;br /&gt;
&lt;br /&gt;
== Collaboration ==&lt;br /&gt;
&lt;br /&gt;
=== Open Collaboration Services (libattica) ===&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Collaboration/Attica/Introduction|Introduction to Attica]]&lt;br /&gt;
:''In this tutorial a simple widget showing information about a Person on the server is created.''&lt;br /&gt;
&lt;br /&gt;
=== Get Hot New Stuff  ===&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Collaboration/HotNewStuff/Introduction|Get Hot New Stuff 3 - Download]] &lt;br /&gt;
:''How to use KHotNewStuff3 in your application.''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Collaboration/HotNewStuff/Updates|Get Hot New Stuff 3 - Checking for Updates]] &lt;br /&gt;
:''How to check if updates for installed stuff are available without showing the dialog/widget.''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Collaboration/HotNewStuff/Upload|Get Hot New Stuff 3 - Upload]] &lt;br /&gt;
:''How to add an upload dialog to your application.''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Old links for KNS2 and KNS1 content:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/K Hot New Stuff2|Introduction to Get Hot New Stuff 2]] &lt;br /&gt;
:''A short tutorial about how to use KHotNewStuff2 in your application. Deprecated, use version 3'' &lt;br /&gt;
;[[Development/Tutorials/Introduction to Get Hot New Stuff|Introduction to Get Hot New Stuff]] &lt;br /&gt;
:''An introduction to the developer-friendly network update system that allows KDE applications to fetch new application data at runtime in a user friendly manner.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/KNewStuffSecure|KNewStuff Secure]] ([http://developer.kde.org/documentation/tutorials/knewstuffsecure/index.html Original Link]) &lt;br /&gt;
:''Tutorial showing how to share resources in a secured way (KDE 3.4 and later).'' By András Mantia &amp;amp;lt;amantia@kde.org&amp;amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Goya ==&lt;br /&gt;
; [[Development/Tutorials/Introduction to Goya usage|Introduction to Goya usage]]&lt;br /&gt;
:''An introduction for the Goya subsystem usage, which allows you to easily add widgets to your itemviews and connect their signals to your code, as they were real widgets.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Introduction to Goya usage 2|Introduction to Goya usage (part 2)]]&lt;br /&gt;
:''The second part of the tutorial, with a slightly more complex example than the first part.''&lt;br /&gt;
&lt;br /&gt;
== Other programming languages ==&lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
;[http://www.learningpython.com/2008/09/20/an-introduction-to-pyqt/ An Introduction to PyQt]&lt;br /&gt;
:''Starting off''&lt;br /&gt;
&lt;br /&gt;
;[http://lateral.netmanagers.com.ar/stories/BBS47.html PyQt by Example]&lt;br /&gt;
:''Another introduction to PyQt''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Languages/Python/PyKDE_WebKit_Tutorial|PyKDE WebKit Tutorial]]&lt;br /&gt;
:''A simple web browser application in PyKDE''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Python introduction to signals and slots|101 Introduction to signals and slots]]&lt;br /&gt;
:''A simple introduction to Qt's signal and slot architecture.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Languages/Python/PyKDE_DBus_Tutorial|PyKDE DBus Tutorial]]&lt;br /&gt;
:''An introduction to DBus communication using PyKDE''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
;[http://developer.kde.org/language-bindings/ruby/kde3tutorial/index.html KDE Ruby Korundum tutorial]&lt;br /&gt;
:''A ruby version of Antonio Larrosa Jim&amp;amp;eacute;nez's KDE tutorial by Richard Dale. See the [[Development/Languages/Ruby|Ruby Developers Corner]] for Qt tutorials and other info.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Qt4_Ruby_Tutorial|Qt4 Ruby Tutorial]]&lt;br /&gt;
:''Nokia's fabulous introductory tutorial to Qt, translated to Ruby.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Plasma/RubyApplet|Creating a Plasma Widget in Ruby]]&lt;br /&gt;
:''Tutorial that shows how to create your first Plasma Applet using the Ruby language.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Developing_Qt4_Applications_using_Qt_Designer_and_Ruby_on_Kubuntu|Developing Qt4 Applications using Qt Designer and Ruby on Kubuntu]]&lt;br /&gt;
:''Tutorial that shows how to design a simple User Interface in Qt Designer and then use the resulting widget in a Qt Ruby application we build from scratch.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Languages/Ruby/Ruby-Qt/KDE_Book|Ruby-Qt/KDE Book]]&lt;br /&gt;
:''There is also an approach to create an Ruby-Qt/KDE Book under a free license. The content will be created in this wiki.''&lt;br /&gt;
&lt;br /&gt;
=== Shell ===&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Shell_Scripting_with_KDE_Dialogs|Shell Scripting with KDE dialogs]] ([http://developer.kde.org/documentation/tutorials/kdialog/t1.html Original Link]) &lt;br /&gt;
:''Tutorial by [mailto:bradh@frogmouth.net Brad Hards] that describes how to use KDE dialogs in shell scripts with kdialog. It is presented as an example based tutorial.''&lt;br /&gt;
&lt;br /&gt;
== Graphics Programming ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Graphics/Performance|QPainter Perfomance]]&lt;br /&gt;
:''Hints on avoiding common mistakes leading to poor performance when using QPainter''&lt;br /&gt;
&lt;br /&gt;
== Using the KDE Games Libraries ==&lt;br /&gt;
;[[Development/Tutorials/Games/KStandardGameAction| KStandardGameAction]]&lt;br /&gt;
:''Using libkdegames to make your game fit the kdegames standard''&lt;br /&gt;
;[[Development/Tutorials/Games/Highscores| Highscores]]&lt;br /&gt;
:''Implementing a simple highscore table into your game''&lt;br /&gt;
;[[Development/Tutorials/Games/Theme Selector| Theme Selector]]&lt;br /&gt;
:''Using the libkdegames theme selection dialog''&lt;br /&gt;
;[[Development/Tutorials/Games/Palapeli Patterns| Palapeli Slicers]]&lt;br /&gt;
:''Creating a slicer plugin for Palapeli''&lt;br /&gt;
&lt;br /&gt;
=== KGLEngine ===&lt;br /&gt;
;[[Development/Tutorials/Games/kglengine/kglengine-simpleBox| installation and your first KGLItem]]&lt;br /&gt;
:''start your first kglengine application''&lt;br /&gt;
;[[Development/Tutorials/Games/KGLEngine2d| kglpong]]&lt;br /&gt;
:''Now use our knowledge to make a pong''&lt;br /&gt;
&lt;br /&gt;
=== KALEngine ===&lt;br /&gt;
;[[Development/Tutorials/Games/KALEngine| Play hello word sound]]&lt;br /&gt;
:''Using KALEngine for games sound development using openAL''&lt;br /&gt;
;[[Development/Tutorials/Games/KALEngine-music| Play music]]&lt;br /&gt;
:''Using KALEngine to play music in a stream''&lt;br /&gt;
&lt;br /&gt;
== Using the KDE PIM Libraries ==&lt;br /&gt;
;[[Development/Tutorials/PIM/ical| iCalendar functionality]]&lt;br /&gt;
:''Using kcal to manage iCalendar files''&lt;br /&gt;
&lt;br /&gt;
== Other tutorials ==&lt;br /&gt;
&lt;br /&gt;
=== 2D Plotting (KPlotWidget) ===&lt;br /&gt;
;[[Development/Tutorials/KPlotWidget|Using the KDE data-plotting widget]]&lt;br /&gt;
:''This tutorial introduces KPlotWidget, which is used for 2-D data plotting.  It includes information on simple usage of the widget (including adding and modifying data sets, and customizing the plot axes and labels), and advanced customization (including extending the widget through sub-classing).''&lt;br /&gt;
&lt;br /&gt;
=== Spelling and Grammar Checking (Sonnet) ===&lt;br /&gt;
;[[Development/Tutorials/Sonnet/SonnetTutorial|Adding spell-checking or grammar-checking to KDE applications]]&lt;br /&gt;
:''This tutorial introduces Sonnet and how one may use it to add language correction to your KDE application. Sonnet's auxiliary features shall be described in a separate tutorial.''&lt;br /&gt;
&lt;br /&gt;
=== Pixmap cache (KPixmapCache) ===&lt;br /&gt;
;[[Development/Tutorials/KPixmapCache|Using the KDE pixmap cache]]&lt;br /&gt;
:''This tutorial shows how to use KPixmapCache to cache e.g. pixmaps generated from SVGs or some data.''&lt;br /&gt;
&lt;br /&gt;
=== Using MarbleWidget (Marble) ===&lt;br /&gt;
;[[Development/Tutorials/MarbleWidget|Using MarbleWidget]]&lt;br /&gt;
:''This short tutorial describes how to use the MarbleWidget in your project''&lt;br /&gt;
&lt;br /&gt;
=== Using local SCM for KDE development ===&lt;br /&gt;
;[[Development/Tutorials/Git|Using Git to develop for KDE]]&lt;br /&gt;
:''This tutorial shows how to use Git to develop for KDE''&lt;br /&gt;
&lt;br /&gt;
=== Kwin effect tutorial (blog) ===&lt;br /&gt;
;[http://blog.martin-graesslin.com/blog/?p=258 blog by Martin Graesslin]&lt;br /&gt;
:''This tutorial guides you through the development of a simple KWin effect''&lt;br /&gt;
&lt;br /&gt;
=== Implementing KSysGuard sensors and adding them ===&lt;br /&gt;
;[[Development/Tutorials/Sensors]]&lt;br /&gt;
:''This tutorial shows how to write and KSysGuard sensor and connect it to the systray.''&lt;br /&gt;
Runners&lt;br /&gt;
&lt;br /&gt;
=== Porting an application from KSystemTrayIcon to KStatusNotifierItem ===&lt;br /&gt;
;[[Development/Tutorials/PortToKStatusNotifierItem]]&lt;br /&gt;
:''This tutorials shows how to port an application using KSystemTrayIcon to KStatusNotifierItem''&lt;br /&gt;
&lt;br /&gt;
=== Using the KDE Wallet API for safe storage ===&lt;br /&gt;
;[[Development/Tutorials/KWallet]]&lt;br /&gt;
:&amp;quot;Brief introduction to the KWallet API which can be used for storing all kinds of sensitive information.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== KDE2 and KDE3 Materials ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/KDE3|KDE3 Tutorials]]&lt;br /&gt;
:''These tutorials cover topics related to KDE3.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/KDE2|KDE2 Tutorials]]&lt;br /&gt;
:''These tutorials cover topics related to KDE2.''&lt;br /&gt;
&lt;br /&gt;
[[Category:KDE4]]&lt;/div&gt;</summary>
		<author><name>Sandsmark</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Summer_of_Code/2009/Projects/Visualization_in_Phonon</id>
		<title>Projects/Summer of Code/2009/Projects/Visualization in Phonon</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Summer_of_Code/2009/Projects/Visualization_in_Phonon"/>
				<updated>2009-04-23T19:08:58Z</updated>
		
		<summary type="html">&lt;p&gt;Sandsmark: obligatory Star-Trek reference&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==whoami==&lt;br /&gt;
'''Name:''' Martin Sandsmark&lt;br /&gt;
&lt;br /&gt;
'''Email Address:''' sandsmark@samfundet.no&lt;br /&gt;
&lt;br /&gt;
'''Freenode IRC Nick:''' sandsmark&lt;br /&gt;
&lt;br /&gt;
'''Location:''' Trondheim, Norway&lt;br /&gt;
&lt;br /&gt;
==Goal==&lt;br /&gt;
All media-players using Phonon currently lacks visualizations and analyzers.&lt;br /&gt;
&lt;br /&gt;
Most modern media players today have some form for visualization when playing music, from simple bar displays to scripts drawing on opengl-contexts, and I don't think music players based on phonon should be any different.&lt;br /&gt;
&lt;br /&gt;
==Implementation Details==&lt;br /&gt;
First I will either make a custom Phonon::MediaNode or alter the Phonon::AudioOutput class so it makes available raw audio data (PCM), and some pre-processed data, for example Hartley-transforms (reusing code from Amarok 1). All data will be made available on request. The class will most probably always cache at least one frame, so data is always available, but it will not queue up data, so the data displayed is always up to date. Some interpolation could be applied, either in the application or in phonon, to make sure the visualization doesn't get too jumpy.&lt;br /&gt;
&lt;br /&gt;
Then I will implement support for this in the Xine Phonon backend. This should be fairly simple as the data exported is just raw audio data, as it is sent to most audio outputs. If there's time left over after I finish all the required parts of this GSoC, I might look into implementing support in the GStreamer backend too.&lt;br /&gt;
&lt;br /&gt;
Lastly I will implement first some simple visualizations in Amarok, as a demonstration. I have planned two; one like the default baranalyzer found in the default installation of Amarok 1, and a sonogram/spectrogram like the one found in Foobar2000 (and Amarok 1). The first will use the pre-processed data, and the last will use the raw PCM data. If there's time left over, I will implement a “fullscreen”-visualization using projectm (projectm just needs raw PCM data, and already has rather good integration with Qt).&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
==Tentative Timeline:==&lt;br /&gt;
April/May: I will start reading through and playing with the Amarok 1 code for analyzers. I will also read up on domain transformation and other related math, as I don't remember much of it, but still have the books. It isn't strictly necessary for this, but having a basic understanding of what is done should be good.&lt;br /&gt;
&lt;br /&gt;
===May - 4. June===&lt;br /&gt;
I will start familiarizing myself with the internal workings of Phonon. I've only used the public API before, not really looking into how things works “behind the scenes”. Also try to get in contact with some Phonon hackers, and decide if I should make a custom MediaNode or not.&lt;br /&gt;
&lt;br /&gt;
===Until June 11.===&lt;br /&gt;
I will branch off Phonon, implementing the necessary changes in the API.&lt;br /&gt;
&lt;br /&gt;
===Until July 2.===&lt;br /&gt;
I will implement support in the Phonon Xine backend for exporting audio data, and also process the data to get levels, etc.&lt;br /&gt;
&lt;br /&gt;
===Until July 30.===&lt;br /&gt;
During this time I will implement the simple analyzers/visualizations in amarok.&lt;br /&gt;
&lt;br /&gt;
===Until August 10.===&lt;br /&gt;
Here I will go over my code, polish it, write some extensive documentation, and any time left over will be spent first writing a “fullscreen” visualization for Amarok, and if I still have time left over, I will implement support in the GStreamer backend.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Locutus.jpg|frame|Locutus will make sure the deadline is maintained.]]&lt;/div&gt;</summary>
		<author><name>Sandsmark</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Contribute/Bugsquad/BugDays/KopeteDay2/Bugs_still_present_in_KDE_4</id>
		<title>Contribute/Bugsquad/BugDays/KopeteDay2/Bugs still present in KDE 4</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Contribute/Bugsquad/BugDays/KopeteDay2/Bugs_still_present_in_KDE_4"/>
				<updated>2008-07-20T11:22:36Z</updated>
		
		<summary type="html">&lt;p&gt;Sandsmark: signing of is a good thing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Bugs still present in KDE 4===&lt;br /&gt;
If a bug is still present in the KDE4 version of Kopete, list it here.&lt;br /&gt;
&lt;br /&gt;
*{{Bug|139307}} &amp;lt;i&amp;gt;Technically&amp;lt;/i&amp;gt;, this bug is fixed in KDE4, but a worse behavior has replaced it! (Should be a really easy fix though!) [[User:Kwilliam|kwilliam]]&lt;br /&gt;
&lt;br /&gt;
*{{Bug|147092}} While the file itself is transfered, [[User:sandsmark|sandsmark]] kopete crashed while it finished the filetransfer from his jabber account to mine. Not really sure if this is a jabber issue or not, because msn filetransfers seem to cause crashes too, see {{Bug|162760}}. After some sleep we should be able to tell ;) [[User:brot|brot]]&lt;br /&gt;
&lt;br /&gt;
*{{Bug|144750}} Added informations to the bug itself, joining MUC from the gmail jabber account works with psi, so should be a valid bug [[User:brot|brot]]&lt;br /&gt;
&lt;br /&gt;
*{{Bug|141513}} While [[User:sandsmark|sandsmark]] sees the newly set avatar, i dont see it. Closing the chatwindow and reapplying the style doesnt help, kopete needs to be restarted. [[User:brot|brot]]&lt;br /&gt;
&lt;br /&gt;
*{{Bug|160361}} Length of the password set by windows live (kopete doesnt seem to offer password changing for msn) is limited to 16 characters, and kopete allows to enter more than that while login, so maybe it fails because of that. Should be an easy to fix bug if thats the problem :)  [[User:brot|brot]]&lt;br /&gt;
&lt;br /&gt;
*{{Bug|130011}} Still shows animation when it shouldn't. [[User:Sandsmark|Sandsmark]]&lt;/div&gt;</summary>
		<author><name>Sandsmark</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Contribute/Bugsquad/BugDays/KopeteDay2/Bugs_still_present_in_KDE_4</id>
		<title>Contribute/Bugsquad/BugDays/KopeteDay2/Bugs still present in KDE 4</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Contribute/Bugsquad/BugDays/KopeteDay2/Bugs_still_present_in_KDE_4"/>
				<updated>2008-07-20T11:21:59Z</updated>
		
		<summary type="html">&lt;p&gt;Sandsmark: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Bugs still present in KDE 4===&lt;br /&gt;
If a bug is still present in the KDE4 version of Kopete, list it here.&lt;br /&gt;
&lt;br /&gt;
*{{Bug|139307}} &amp;lt;i&amp;gt;Technically&amp;lt;/i&amp;gt;, this bug is fixed in KDE4, but a worse behavior has replaced it! (Should be a really easy fix though!) [[User:Kwilliam|kwilliam]]&lt;br /&gt;
&lt;br /&gt;
*{{Bug|147092}} While the file itself is transfered, [[User:sandsmark|sandsmark]] kopete crashed while it finished the filetransfer from his jabber account to mine. Not really sure if this is a jabber issue or not, because msn filetransfers seem to cause crashes too, see {{Bug|162760}}. After some sleep we should be able to tell ;) [[User:brot|brot]]&lt;br /&gt;
&lt;br /&gt;
*{{Bug|144750}} Added informations to the bug itself, joining MUC from the gmail jabber account works with psi, so should be a valid bug [[User:brot|brot]]&lt;br /&gt;
&lt;br /&gt;
*{{Bug|141513}} While [[User:sandsmark|sandsmark]] sees the newly set avatar, i dont see it. Closing the chatwindow and reapplying the style doesnt help, kopete needs to be restarted. [[User:brot|brot]]&lt;br /&gt;
&lt;br /&gt;
*{{Bug|160361}} Length of the password set by windows live (kopete doesnt seem to offer password changing for msn) is limited to 16 characters, and kopete allows to enter more than that while login, so maybe it fails because of that. Should be an easy to fix bug if thats the problem :)  [[User:brot|brot]]&lt;br /&gt;
&lt;br /&gt;
*{{Bug|130011}} Still shows animation when it shouldn't.&lt;/div&gt;</summary>
		<author><name>Sandsmark</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Contribute/Bugsquad/BugDays/KopeteDay2/Bugs_no_longer_present_in_KDE_4</id>
		<title>Contribute/Bugsquad/BugDays/KopeteDay2/Bugs no longer present in KDE 4</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Contribute/Bugsquad/BugDays/KopeteDay2/Bugs_no_longer_present_in_KDE_4"/>
				<updated>2008-07-20T11:11:37Z</updated>
		
		<summary type="html">&lt;p&gt;Sandsmark: unable to reproduce&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Bugs no longer present in KDE 4===&lt;br /&gt;
Bugs that cannot be reproduced in the KDE 4 version of Kopete should be listed here.&lt;br /&gt;
&lt;br /&gt;
*{{Bug|140238}} Can't reproduce that bug in 4.1 RC1 [[User:dtritscher|dtritscher]]&lt;br /&gt;
*{{Bug|143903}} Can't reproduce that bug in 4.1 RC1 [[User:dtritscher|dtritscher]]&lt;br /&gt;
*{{Bug|146102}} Text input box now adjusts correctly to color scheme in 4.1 RC1 [[User:dtritscher|dtritscher]]&lt;br /&gt;
*{{Bug|146889}} Can't reproduce that bug in 4.1 RC1 [[User:dtritscher|dtritscher]]&lt;br /&gt;
*{{Bug|146102}} Can't reproduce bug with kopete trunk, so should be fixed [[User:Brot|Brot]]&lt;br /&gt;
*{{Bug|131799}} Can't reproduce that bug in 4.0.99 [[User:sandsmark|sandsmark]]&lt;/div&gt;</summary>
		<author><name>Sandsmark</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Contribute/Bugsquad/BugDays/KopeteDay2/Bugs_needing_users_with_particular_setups</id>
		<title>Contribute/Bugsquad/BugDays/KopeteDay2/Bugs needing users with particular setups</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Contribute/Bugsquad/BugDays/KopeteDay2/Bugs_needing_users_with_particular_setups"/>
				<updated>2008-07-20T10:31:01Z</updated>
		
		<summary type="html">&lt;p&gt;Sandsmark: Bug needs someone with a bttv card&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Bugs needing users with particular setups===&lt;br /&gt;
If a bug requires a particular hardware or software setup to reproduce that you do not have available, please list if here along with details of its requirements.&lt;br /&gt;
&lt;br /&gt;
*{{Bug|135295}} Setup requires an ICQ account and the address book stored on an IMAP server. [[User:Kwilliam|kwilliam]]&lt;br /&gt;
&lt;br /&gt;
*{{Bug|142074}} Need someone with KDE4 kmail or kaddressbook installed. [[User:Kwilliam|kwilliam]]&lt;br /&gt;
*{{Bug|141513}} Need someone with MSN Account. [[User:dtritscher|dtritscher]]&lt;br /&gt;
*{{Bug|144069}} Need someone with MSN Account. [[User:dtritscher|dtritscher]]&lt;br /&gt;
*{{Bug|146102}} Need someone with ICQ Account. [[User:dtritscher|dtritscher]]&lt;br /&gt;
*{{Bug|133606}} Need someone with a bttv (or probably any video capture card). [[User:sandsmark|sandsmark]]&lt;/div&gt;</summary>
		<author><name>Sandsmark</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Contribute/Bugsquad/BugDays/KopeteDay2</id>
		<title>Contribute/Bugsquad/BugDays/KopeteDay2</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Contribute/Bugsquad/BugDays/KopeteDay2"/>
				<updated>2008-07-20T00:05:37Z</updated>
		
		<summary type="html">&lt;p&gt;Sandsmark: sign in&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
This bug day will take place on Sunday, July 20th 2008, but feel free to start early. The aim of this bug day is to clear out as many Kopete bugs as possible. We are continuing from where we left off after the first Kopete bug day, two weekends ago. Our target for triage is bugs listed in [http://bugs.kde.org bugs.kde.org] under the product Kopete.&lt;br /&gt;
&lt;br /&gt;
Be sure to join #kde-bugs on irc.freenode.net, as this is where the bug-day will be coordinated. (You can even join now!)&lt;br /&gt;
&lt;br /&gt;
You should be working with a KDE 4 version of Kopete, ideally from svn trunk or a beta or more recent version of KDE 4.1.&lt;br /&gt;
&lt;br /&gt;
==Workflow==&lt;br /&gt;
&lt;br /&gt;
* Always remember the golden rule of bug triage: '''Do NOT close bugs in bugzilla.''' List them on this wiki page in the appropriate section so they can be double checked before being closed in the bug tracker.&lt;br /&gt;
&lt;br /&gt;
* First of all, put your IRC nickname in the [[#Sign-in|sign-in section]], along with details of what version of KDE / Kopete you are testing with. Be as specific as possible.&lt;br /&gt;
&lt;br /&gt;
* Choose a group of bugs the [[#Division_of_Labour|division of labour section]]. Put your IRC nickname in the '''IRC Nickname''' column, and remember to keep the '''Status''' column up to date as you work through the group of bugs. There is a link provided in the '''Query''' column which will take you to the list of bugs in that group on bugzilla.&lt;br /&gt;
&lt;br /&gt;
* For each bug in the list, you should try and reproduce it using the information provided in the bug report.&lt;br /&gt;
&lt;br /&gt;
** If you are able to reproduce the bug, add a comment on bugzilla saying what version of Kopete/KDE you are running and that you managed to reproduce the bug. Then add it to the [[#Bugs_still_present_in_KDE_4|Bugs still present in KDE 4 section]].&lt;br /&gt;
&lt;br /&gt;
** If you cannot reproduce the bug, put a comment stating that (with your Kopete/KDE version) on the bug report in bugzilla, and add it to the [[#Bugs_no_longer_present_in_KDE_4|Bugs no longer present in KDE 4 section]].&lt;br /&gt;
&lt;br /&gt;
** If the bug report is not clear or does not provide enough information to reproduce the bug, leave a note asking politely for the information you would need to be able to try and reproduce the bug, and add it to the [[#Bugs_needing_more_information|Bugs needing more information section]].&lt;br /&gt;
&lt;br /&gt;
** There are several other categories below which bugs might fall into. Please look at them for details about when bugs should be put there.&lt;br /&gt;
{{Note| If you are unsure about what to do with a bug, please ask on the IRC channel, and someone will help you.}}&lt;br /&gt;
&lt;br /&gt;
{{Warning| '''Always''' write your IRC nickname after each comment on this page. If your techbase username is the same as your IRC nickname, you can do this quickly by typing &amp;lt;nowiki&amp;gt;~~~&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==Sign-in==&lt;br /&gt;
Tell developers what you are testing with. (If you expect to upgrade between now and BugDay, put what version you are using now next to the bugs/comments that you put on this page.) &lt;br /&gt;
&lt;br /&gt;
Please give distro/version or SVN branch/trunk with revision below:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!IRC Nickname !! KDE version used for testing&lt;br /&gt;
|-&lt;br /&gt;
|[[User:Grundleborg|Grundleborg]]||svn trunk r831187&lt;br /&gt;
|-&lt;br /&gt;
|[[User:StormByte|StormByte]]||svn trunk r833536 ||&lt;br /&gt;
|-&lt;br /&gt;
|[[User:sandsmark|sandsmark]|| 4.0.99 ||&lt;br /&gt;
|}&lt;br /&gt;
{{Tip|Please be sure to sign every bug or comment you add to this page with your irc nickname. You can use the wiki markup &amp;lt;nowiki&amp;gt;~~~&amp;lt;/nowiki&amp;gt; to insert your wiki username automatically (but only do this if it is the same as your IRC nickname, otherwise write your IRC nickname in by hand).}}&lt;br /&gt;
&lt;br /&gt;
==Division of Labour==&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
!Component/Group !! No of bugs !! IRC Nickname !! Status !! Query&lt;br /&gt;
|-&lt;br /&gt;
| Address Book/1 || 5 || [[User:Kwilliam|kwilliam]] || done || [http://bugs.kde.org/buglist.cgi?short_desc_type=allwordssubstr&amp;amp;short_desc=&amp;amp;long_desc_type=allwordssubstr&amp;amp;long_desc=&amp;amp;product=kopete&amp;amp;component=Addressbook+integration&amp;amp;bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_severity=critical&amp;amp;bug_severity=grave&amp;amp;bug_severity=major&amp;amp;bug_severity=crash&amp;amp;bug_severity=normal&amp;amp;bug_severity=minor&amp;amp;bugidtype=include&amp;amp;bug_id=&amp;amp;votes=&amp;amp;emailassigned_to1=1&amp;amp;emailtype1=substring&amp;amp;email1=&amp;amp;emailassigned_to2=1&amp;amp;emailreporter2=1&amp;amp;emailcc2=1&amp;amp;emailtype2=substring&amp;amp;email2=&amp;amp;changedin=&amp;amp;chfieldfrom=&amp;amp;chfieldto=&amp;amp;chfieldvalue=&amp;amp;order=Reuse+same+sort+as+last+time&amp;amp;cmdtype=doit&amp;amp;newqueryname=&amp;amp;namedcmd=2003-onwards Query]&lt;br /&gt;
|-&lt;br /&gt;
| Chat Window/3 || 10 ||  ||  || [http://bugs.kde.org/buglist.cgi?short_desc_type=allwordssubstr&amp;amp;short_desc=&amp;amp;long_desc_type=allwordssubstr&amp;amp;long_desc=&amp;amp;product=kopete&amp;amp;component=Chat+Window&amp;amp;bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_severity=critical&amp;amp;bug_severity=grave&amp;amp;bug_severity=major&amp;amp;bug_severity=crash&amp;amp;bug_severity=normal&amp;amp;bug_severity=minor&amp;amp;bugidtype=include&amp;amp;bug_id=&amp;amp;votes=&amp;amp;emailassigned_to1=1&amp;amp;emailtype1=substring&amp;amp;email1=&amp;amp;emailassigned_to2=1&amp;amp;emailreporter2=1&amp;amp;emailcc2=1&amp;amp;emailtype2=substring&amp;amp;email2=&amp;amp;changedin=&amp;amp;chfield=%5BBug+creation%5D&amp;amp;chfieldfrom=2006-12-19&amp;amp;chfieldto=2007-07-15&amp;amp;chfieldvalue=&amp;amp;order=Reuse+same+sort+as+last+time&amp;amp;cmdtype=doit&amp;amp;newqueryname=&amp;amp;namedcmd=2003-onwards Query]&lt;br /&gt;
|-&lt;br /&gt;
| Chat Window/4 || 12 ||  ||  || [http://bugs.kde.org/buglist.cgi?short_desc_type=allwordssubstr&amp;amp;short_desc=&amp;amp;long_desc_type=allwordssubstr&amp;amp;long_desc=&amp;amp;product=kopete&amp;amp;component=Chat+Window&amp;amp;bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_severity=critical&amp;amp;bug_severity=grave&amp;amp;bug_severity=major&amp;amp;bug_severity=crash&amp;amp;bug_severity=normal&amp;amp;bug_severity=minor&amp;amp;bugidtype=include&amp;amp;bug_id=&amp;amp;votes=&amp;amp;emailassigned_to1=1&amp;amp;emailtype1=substring&amp;amp;email1=&amp;amp;emailassigned_to2=1&amp;amp;emailreporter2=1&amp;amp;emailcc2=1&amp;amp;emailtype2=substring&amp;amp;email2=&amp;amp;changedin=&amp;amp;chfield=%5BBug+creation%5D&amp;amp;chfieldfrom=2007-07-15&amp;amp;chfieldto=now&amp;amp;chfieldvalue=&amp;amp;order=Reuse+same+sort+as+last+time&amp;amp;cmdtype=doit&amp;amp;newqueryname=&amp;amp;namedcmd=2003-onwards Query]&lt;br /&gt;
|-&lt;br /&gt;
| Chatwindow styles/1 || 12 ||  ||  || [http://bugs.kde.org/buglist.cgi?short_desc_type=allwordssubstr&amp;amp;short_desc=&amp;amp;long_desc_type=allwordssubstr&amp;amp;long_desc=&amp;amp;product=kopete&amp;amp;component=Chatwindow+Styles&amp;amp;bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_severity=critical&amp;amp;bug_severity=grave&amp;amp;bug_severity=major&amp;amp;bug_severity=crash&amp;amp;bug_severity=normal&amp;amp;bug_severity=minor&amp;amp;bugidtype=include&amp;amp;bug_id=&amp;amp;votes=&amp;amp;emailassigned_to1=1&amp;amp;emailtype1=substring&amp;amp;email1=&amp;amp;emailassigned_to2=1&amp;amp;emailreporter2=1&amp;amp;emailcc2=1&amp;amp;emailtype2=substring&amp;amp;email2=&amp;amp;changedin=&amp;amp;chfieldfrom=&amp;amp;chfieldto=&amp;amp;chfieldvalue=&amp;amp;order=Reuse+same+sort+as+last+time&amp;amp;cmdtype=doit&amp;amp;newqueryname=&amp;amp;namedcmd=2003-onwards Query]&lt;br /&gt;
|-&lt;br /&gt;
| Connection Status/1 || 3 ||  ||  || [http://bugs.kde.org/buglist.cgi?short_desc_type=allwordssubstr&amp;amp;short_desc=&amp;amp;long_desc_type=allwordssubstr&amp;amp;long_desc=&amp;amp;product=kopete&amp;amp;component=Connection+Status+Plugin&amp;amp;bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_severity=critical&amp;amp;bug_severity=grave&amp;amp;bug_severity=major&amp;amp;bug_severity=crash&amp;amp;bug_severity=normal&amp;amp;bug_severity=minor&amp;amp;bugidtype=include&amp;amp;bug_id=&amp;amp;votes=&amp;amp;emailassigned_to1=1&amp;amp;emailtype1=substring&amp;amp;email1=&amp;amp;emailassigned_to2=1&amp;amp;emailreporter2=1&amp;amp;emailcc2=1&amp;amp;emailtype2=substring&amp;amp;email2=&amp;amp;changedin=&amp;amp;chfieldfrom=&amp;amp;chfieldto=&amp;amp;chfieldvalue=&amp;amp;order=Reuse+same+sort+as+last+time&amp;amp;cmdtype=doit&amp;amp;newqueryname=&amp;amp;namedcmd=2003-onwards Query]&lt;br /&gt;
|-&lt;br /&gt;
| Contact List/1 || 10 ||  ||  || [http://bugs.kde.org/buglist.cgi?short_desc_type=allwordssubstr&amp;amp;short_desc=&amp;amp;long_desc_type=allwordssubstr&amp;amp;long_desc=&amp;amp;product=kopete&amp;amp;component=Contact+list&amp;amp;bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_severity=critical&amp;amp;bug_severity=grave&amp;amp;bug_severity=major&amp;amp;bug_severity=crash&amp;amp;bug_severity=normal&amp;amp;bug_severity=minor&amp;amp;bugidtype=include&amp;amp;bug_id=&amp;amp;votes=&amp;amp;emailassigned_to1=1&amp;amp;emailtype1=substring&amp;amp;email1=&amp;amp;emailassigned_to2=1&amp;amp;emailreporter2=1&amp;amp;emailcc2=1&amp;amp;emailtype2=substring&amp;amp;email2=&amp;amp;changedin=&amp;amp;chfieldfrom=&amp;amp;chfieldto=&amp;amp;chfieldvalue=&amp;amp;order=Reuse+same+sort+as+last+time&amp;amp;cmdtype=doit&amp;amp;newqueryname=&amp;amp;namedcmd=2003-onwards Query]&lt;br /&gt;
|-&lt;br /&gt;
| GaduGadu/1 || 11 ||  ||  || [http://bugs.kde.org/buglist.cgi?short_desc_type=allwordssubstr&amp;amp;short_desc=&amp;amp;long_desc_type=allwordssubstr&amp;amp;long_desc=&amp;amp;product=kopete&amp;amp;component=Gadu-Gadu+Plugin&amp;amp;bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_severity=critical&amp;amp;bug_severity=grave&amp;amp;bug_severity=major&amp;amp;bug_severity=crash&amp;amp;bug_severity=normal&amp;amp;bug_severity=minor&amp;amp;bugidtype=include&amp;amp;bug_id=&amp;amp;votes=&amp;amp;emailassigned_to1=1&amp;amp;emailtype1=substring&amp;amp;email1=&amp;amp;emailassigned_to2=1&amp;amp;emailreporter2=1&amp;amp;emailcc2=1&amp;amp;emailtype2=substring&amp;amp;email2=&amp;amp;changedin=&amp;amp;chfieldfrom=&amp;amp;chfieldto=&amp;amp;chfieldvalue=&amp;amp;order=Reuse+same+sort+as+last+time&amp;amp;cmdtype=doit&amp;amp;newqueryname=&amp;amp;namedcmd=2003-onwards Query]&lt;br /&gt;
|-&lt;br /&gt;
| History/1 || 17 ||  ||  || [http://bugs.kde.org/buglist.cgi?short_desc_type=allwordssubstr&amp;amp;short_desc=&amp;amp;long_desc_type=allwordssubstr&amp;amp;long_desc=&amp;amp;product=kopete&amp;amp;component=History+Plugin&amp;amp;bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_severity=critical&amp;amp;bug_severity=grave&amp;amp;bug_severity=major&amp;amp;bug_severity=crash&amp;amp;bug_severity=normal&amp;amp;bug_severity=minor&amp;amp;bugidtype=include&amp;amp;bug_id=&amp;amp;votes=&amp;amp;emailassigned_to1=1&amp;amp;emailtype1=substring&amp;amp;email1=&amp;amp;emailassigned_to2=1&amp;amp;emailreporter2=1&amp;amp;emailcc2=1&amp;amp;emailtype2=substring&amp;amp;email2=&amp;amp;changedin=&amp;amp;chfieldfrom=&amp;amp;chfieldto=&amp;amp;chfieldvalue=&amp;amp;order=Reuse+same+sort+as+last+time&amp;amp;cmdtype=doit&amp;amp;newqueryname=&amp;amp;namedcmd=2003-onwards Query]&lt;br /&gt;
|-&lt;br /&gt;
| Jabber/1 || 10 ||  ||  || [http://bugs.kde.org/buglist.cgi?short_desc_type=allwordssubstr&amp;amp;short_desc=&amp;amp;long_desc_type=allwordssubstr&amp;amp;long_desc=&amp;amp;product=kopete&amp;amp;component=Jabber+Plugin&amp;amp;bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_severity=critical&amp;amp;bug_severity=grave&amp;amp;bug_severity=major&amp;amp;bug_severity=crash&amp;amp;bug_severity=normal&amp;amp;bug_severity=minor&amp;amp;bugidtype=include&amp;amp;bug_id=&amp;amp;votes=&amp;amp;emailassigned_to1=1&amp;amp;emailtype1=substring&amp;amp;email1=&amp;amp;emailassigned_to2=1&amp;amp;emailreporter2=1&amp;amp;emailcc2=1&amp;amp;emailtype2=substring&amp;amp;email2=&amp;amp;changedin=&amp;amp;chfield=%5BBug+creation%5D&amp;amp;chfieldfrom=2000-01-01&amp;amp;chfieldto=2006-05-30&amp;amp;chfieldvalue=&amp;amp;order=Reuse+same+sort+as+last+time&amp;amp;cmdtype=doit&amp;amp;newqueryname=&amp;amp;namedcmd=2003-onwards Query]&lt;br /&gt;
|-&lt;br /&gt;
| Jabber/3 || 15 ||  ||  || [http://bugs.kde.org/buglist.cgi?short_desc_type=allwordssubstr&amp;amp;short_desc=&amp;amp;long_desc_type=allwordssubstr&amp;amp;long_desc=&amp;amp;product=kopete&amp;amp;component=Jabber+Plugin&amp;amp;bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_severity=critical&amp;amp;bug_severity=grave&amp;amp;bug_severity=major&amp;amp;bug_severity=crash&amp;amp;bug_severity=normal&amp;amp;bug_severity=minor&amp;amp;bugidtype=include&amp;amp;bug_id=&amp;amp;votes=&amp;amp;emailassigned_to1=1&amp;amp;emailtype1=substring&amp;amp;email1=&amp;amp;emailassigned_to2=1&amp;amp;emailreporter2=1&amp;amp;emailcc2=1&amp;amp;emailtype2=substring&amp;amp;email2=&amp;amp;changedin=&amp;amp;chfield=%5BBug+creation%5D&amp;amp;chfieldfrom=2006-12-05&amp;amp;chfieldto=2007-06-23&amp;amp;chfieldvalue=&amp;amp;order=Reuse+same+sort+as+last+time&amp;amp;cmdtype=doit&amp;amp;newqueryname=&amp;amp;namedcmd=2003-onwards Query]&lt;br /&gt;
|-&lt;br /&gt;
| Meanwhile/1 || 5 ||  ||  || [http://bugs.kde.org/buglist.cgi?short_desc_type=allwordssubstr&amp;amp;short_desc=&amp;amp;long_desc_type=allwordssubstr&amp;amp;long_desc=&amp;amp;product=kopete&amp;amp;component=Meanwhile+plugin&amp;amp;bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_severity=critical&amp;amp;bug_severity=grave&amp;amp;bug_severity=major&amp;amp;bug_severity=crash&amp;amp;bug_severity=normal&amp;amp;bug_severity=minor&amp;amp;bugidtype=include&amp;amp;bug_id=&amp;amp;votes=&amp;amp;emailassigned_to1=1&amp;amp;emailtype1=substring&amp;amp;email1=&amp;amp;emailassigned_to2=1&amp;amp;emailreporter2=1&amp;amp;emailcc2=1&amp;amp;emailtype2=substring&amp;amp;email2=&amp;amp;changedin=&amp;amp;chfieldfrom=&amp;amp;chfieldto=&amp;amp;chfieldvalue=&amp;amp;order=Reuse+same+sort+as+last+time&amp;amp;cmdtype=doit&amp;amp;newqueryname=&amp;amp;namedcmd=2003-onwards Query]&lt;br /&gt;
|-&lt;br /&gt;
| MSN/6 || 14 ||  ||  || [http://bugs.kde.org/buglist.cgi?short_desc_type=allwordssubstr&amp;amp;short_desc=&amp;amp;long_desc_type=allwordssubstr&amp;amp;long_desc=&amp;amp;product=kopete&amp;amp;component=MSN+Plugin&amp;amp;bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_severity=critical&amp;amp;bug_severity=grave&amp;amp;bug_severity=major&amp;amp;bug_severity=crash&amp;amp;bug_severity=normal&amp;amp;bug_severity=minor&amp;amp;bugidtype=include&amp;amp;bug_id=&amp;amp;votes=&amp;amp;emailassigned_to1=1&amp;amp;emailtype1=substring&amp;amp;email1=&amp;amp;emailassigned_to2=1&amp;amp;emailreporter2=1&amp;amp;emailcc2=1&amp;amp;emailtype2=substring&amp;amp;email2=&amp;amp;changedin=&amp;amp;chfield=%5BBug+creation%5D&amp;amp;chfieldfrom=2008-01-03&amp;amp;chfieldto=now&amp;amp;chfieldvalue=&amp;amp;order=Reuse+same+sort+as+last+time&amp;amp;cmdtype=doit&amp;amp;newqueryname=&amp;amp;namedcmd=2003-onwards Query]&lt;br /&gt;
|-&lt;br /&gt;
| General/9 || 11 ||  || || [http://bugs.kde.org/buglist.cgi?short_desc_type=allwordssubstr&amp;amp;short_desc=&amp;amp;long_desc_type=allwordssubstr&amp;amp;long_desc=&amp;amp;product=kopete&amp;amp;component=general&amp;amp;bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_severity=critical&amp;amp;bug_severity=grave&amp;amp;bug_severity=major&amp;amp;bug_severity=crash&amp;amp;bug_severity=normal&amp;amp;bug_severity=minor&amp;amp;bugidtype=include&amp;amp;bug_id=&amp;amp;votes=&amp;amp;emailassigned_to1=1&amp;amp;emailtype1=substring&amp;amp;email1=&amp;amp;emailassigned_to2=1&amp;amp;emailreporter2=1&amp;amp;emailcc2=1&amp;amp;emailtype2=substring&amp;amp;email2=&amp;amp;changedin=&amp;amp;chfield=%5BBug+creation%5D&amp;amp;chfieldfrom=2008-05-11&amp;amp;chfieldto=2008-05-27&amp;amp;chfieldvalue=&amp;amp;order=Reuse+same+sort+as+last+time&amp;amp;cmdtype=doit&amp;amp;newqueryname=&amp;amp;namedcmd=2003-onwards Query]&lt;br /&gt;
|-&lt;br /&gt;
| General/14 || 18 ||  ||  || [http://bugs.kde.org/buglist.cgi?short_desc_type=allwordssubstr&amp;amp;short_desc=&amp;amp;long_desc_type=allwordssubstr&amp;amp;long_desc=&amp;amp;product=kopete&amp;amp;component=general&amp;amp;bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_severity=critical&amp;amp;bug_severity=grave&amp;amp;bug_severity=major&amp;amp;bug_severity=crash&amp;amp;bug_severity=normal&amp;amp;bug_severity=minor&amp;amp;bugidtype=include&amp;amp;bug_id=&amp;amp;votes=&amp;amp;emailassigned_to1=1&amp;amp;emailtype1=substring&amp;amp;email1=&amp;amp;emailassigned_to2=1&amp;amp;emailreporter2=1&amp;amp;emailcc2=1&amp;amp;emailtype2=substring&amp;amp;email2=&amp;amp;changedin=&amp;amp;chfield=%5BBug+creation%5D&amp;amp;chfieldfrom=2008-06-28&amp;amp;chfieldto=now&amp;amp;chfieldvalue=&amp;amp;order=Reuse+same+sort+as+last+time&amp;amp;cmdtype=doit&amp;amp;newqueryname=&amp;amp;namedcmd=2003-onwards Query]&lt;br /&gt;
|-&lt;br /&gt;
| Notifications/1 || 2 ||  ||  || [http://bugs.kde.org/buglist.cgi?short_desc_type=allwordssubstr&amp;amp;short_desc=&amp;amp;long_desc_type=allwordssubstr&amp;amp;long_desc=&amp;amp;product=kopete&amp;amp;component=Notifications&amp;amp;bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_severity=critical&amp;amp;bug_severity=grave&amp;amp;bug_severity=major&amp;amp;bug_severity=crash&amp;amp;bug_severity=normal&amp;amp;bug_severity=minor&amp;amp;bugidtype=include&amp;amp;bug_id=&amp;amp;votes=&amp;amp;emailassigned_to1=1&amp;amp;emailtype1=substring&amp;amp;email1=&amp;amp;emailassigned_to2=1&amp;amp;emailreporter2=1&amp;amp;emailcc2=1&amp;amp;emailtype2=substring&amp;amp;email2=&amp;amp;changedin=&amp;amp;chfieldfrom=&amp;amp;chfieldto=&amp;amp;chfieldvalue=&amp;amp;order=Reuse+same+sort+as+last+time&amp;amp;cmdtype=doit&amp;amp;newqueryname=&amp;amp;namedcmd=2003-onwards Query]&lt;br /&gt;
|-&lt;br /&gt;
| Groupwise/1 || 4 ||  ||  || [http://bugs.kde.org/buglist.cgi?short_desc_type=allwordssubstr&amp;amp;short_desc=&amp;amp;long_desc_type=allwordssubstr&amp;amp;long_desc=&amp;amp;product=kopete&amp;amp;component=Novell+GroupWise+Messenger+Plugin&amp;amp;bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_severity=critical&amp;amp;bug_severity=grave&amp;amp;bug_severity=major&amp;amp;bug_severity=crash&amp;amp;bug_severity=normal&amp;amp;bug_severity=minor&amp;amp;bugidtype=include&amp;amp;bug_id=&amp;amp;votes=&amp;amp;emailassigned_to1=1&amp;amp;emailtype1=substring&amp;amp;email1=&amp;amp;emailassigned_to2=1&amp;amp;emailreporter2=1&amp;amp;emailcc2=1&amp;amp;emailtype2=substring&amp;amp;email2=&amp;amp;changedin=&amp;amp;chfieldfrom=&amp;amp;chfieldto=&amp;amp;chfieldvalue=&amp;amp;order=Reuse+same+sort+as+last+time&amp;amp;cmdtype=doit&amp;amp;newqueryname=&amp;amp;namedcmd=2003-onwards Query]&lt;br /&gt;
|-&lt;br /&gt;
| SMS/1 || 1 || [[User:Kwilliam|kwilliam]] || done || [http://bugs.kde.org/buglist.cgi?short_desc_type=allwordssubstr&amp;amp;short_desc=&amp;amp;long_desc_type=allwordssubstr&amp;amp;long_desc=&amp;amp;product=kopete&amp;amp;component=SMS+Plugin&amp;amp;bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_severity=critical&amp;amp;bug_severity=grave&amp;amp;bug_severity=major&amp;amp;bug_severity=crash&amp;amp;bug_severity=normal&amp;amp;bug_severity=minor&amp;amp;bugidtype=include&amp;amp;bug_id=&amp;amp;votes=&amp;amp;emailassigned_to1=1&amp;amp;emailtype1=substring&amp;amp;email1=&amp;amp;emailassigned_to2=1&amp;amp;emailreporter2=1&amp;amp;emailcc2=1&amp;amp;emailtype2=substring&amp;amp;email2=&amp;amp;changedin=&amp;amp;chfieldfrom=&amp;amp;chfieldto=&amp;amp;chfieldvalue=&amp;amp;order=Reuse+same+sort+as+last+time&amp;amp;cmdtype=doit&amp;amp;newqueryname=&amp;amp;namedcmd=2003-onwards Query]&lt;br /&gt;
|-&lt;br /&gt;
| Statistics/1 || 6 ||  ||  || [http://bugs.kde.org/buglist.cgi?short_desc_type=allwordssubstr&amp;amp;short_desc=&amp;amp;long_desc_type=allwordssubstr&amp;amp;long_desc=&amp;amp;product=kopete&amp;amp;component=Statistics+plugin&amp;amp;bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_severity=critical&amp;amp;bug_severity=grave&amp;amp;bug_severity=major&amp;amp;bug_severity=crash&amp;amp;bug_severity=normal&amp;amp;bug_severity=minor&amp;amp;bugidtype=include&amp;amp;bug_id=&amp;amp;votes=&amp;amp;emailassigned_to1=1&amp;amp;emailtype1=substring&amp;amp;email1=&amp;amp;emailassigned_to2=1&amp;amp;emailreporter2=1&amp;amp;emailcc2=1&amp;amp;emailtype2=substring&amp;amp;email2=&amp;amp;changedin=&amp;amp;chfieldfrom=&amp;amp;chfieldto=&amp;amp;chfieldvalue=&amp;amp;order=Reuse+same+sort+as+last+time&amp;amp;cmdtype=doit&amp;amp;newqueryname=&amp;amp;namedcmd=2003-onwards Query]&lt;br /&gt;
|-&lt;br /&gt;
| Translator/1 || 3 ||  ||  || [http://bugs.kde.org/buglist.cgi?short_desc_type=allwordssubstr&amp;amp;short_desc=&amp;amp;long_desc_type=allwordssubstr&amp;amp;long_desc=&amp;amp;product=kopete&amp;amp;component=Translator+Plugin&amp;amp;bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_severity=critical&amp;amp;bug_severity=grave&amp;amp;bug_severity=major&amp;amp;bug_severity=crash&amp;amp;bug_severity=normal&amp;amp;bug_severity=minor&amp;amp;bugidtype=include&amp;amp;bug_id=&amp;amp;votes=&amp;amp;emailassigned_to1=1&amp;amp;emailtype1=substring&amp;amp;email1=&amp;amp;emailassigned_to2=1&amp;amp;emailreporter2=1&amp;amp;emailcc2=1&amp;amp;emailtype2=substring&amp;amp;email2=&amp;amp;changedin=&amp;amp;chfieldfrom=&amp;amp;chfieldto=&amp;amp;chfieldvalue=&amp;amp;order=Reuse+same+sort+as+last+time&amp;amp;cmdtype=doit&amp;amp;newqueryname=&amp;amp;namedcmd=2003-onwards Query]&lt;br /&gt;
|-&lt;br /&gt;
| Web Presence/1 || 2 ||  ||  || [http://bugs.kde.org/buglist.cgi?short_desc_type=allwordssubstr&amp;amp;short_desc=&amp;amp;long_desc_type=allwordssubstr&amp;amp;long_desc=&amp;amp;product=kopete&amp;amp;component=Web+Presence+Plugin&amp;amp;bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_severity=critical&amp;amp;bug_severity=grave&amp;amp;bug_severity=major&amp;amp;bug_severity=crash&amp;amp;bug_severity=normal&amp;amp;bug_severity=minor&amp;amp;bugidtype=include&amp;amp;bug_id=&amp;amp;votes=&amp;amp;emailassigned_to1=1&amp;amp;emailtype1=substring&amp;amp;email1=&amp;amp;emailassigned_to2=1&amp;amp;emailreporter2=1&amp;amp;emailcc2=1&amp;amp;emailtype2=substring&amp;amp;email2=&amp;amp;changedin=&amp;amp;chfieldfrom=&amp;amp;chfieldto=&amp;amp;chfieldvalue=&amp;amp;order=Reuse+same+sort+as+last+time&amp;amp;cmdtype=doit&amp;amp;newqueryname=&amp;amp;namedcmd=2003-onwards Query]&lt;br /&gt;
|-&lt;br /&gt;
| Winpopup/1 || 5 ||  ||  || [http://bugs.kde.org/buglist.cgi?short_desc_type=allwordssubstr&amp;amp;short_desc=&amp;amp;long_desc_type=allwordssubstr&amp;amp;long_desc=&amp;amp;product=kopete&amp;amp;component=WinPopup+Plugin&amp;amp;bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bug_severity=critical&amp;amp;bug_severity=grave&amp;amp;bug_severity=major&amp;amp;bug_severity=crash&amp;amp;bug_severity=normal&amp;amp;bug_severity=minor&amp;amp;bugidtype=include&amp;amp;bug_id=&amp;amp;votes=&amp;amp;emailassigned_to1=1&amp;amp;emailtype1=substring&amp;amp;email1=&amp;amp;emailassigned_to2=1&amp;amp;emailreporter2=1&amp;amp;emailcc2=1&amp;amp;emailtype2=substring&amp;amp;email2=&amp;amp;changedin=&amp;amp;chfieldfrom=&amp;amp;chfieldto=&amp;amp;chfieldvalue=&amp;amp;order=Reuse+same+sort+as+last+time&amp;amp;cmdtype=doit&amp;amp;newqueryname=&amp;amp;namedcmd=2003-onwards Query]&lt;br /&gt;
|}&lt;br /&gt;
(Total bugs 176)&lt;br /&gt;
&lt;br /&gt;
== Completed Bugs ==&lt;br /&gt;
Below lists the various sections for completed bugs. This aids everyone in double checking each other's work. In addition this allows those of us that don't have bugzilla permissions to list bugs so that the folks with the permissions can follow up. &lt;br /&gt;
&lt;br /&gt;
Please note that this is an experimental layout designed to reduce the number of edit conflicts on this page. Each section is its own subpage. The best way to work with this is to '''enable section editing''' by going to &amp;quot;My preferences&amp;quot; &amp;gt; &amp;quot;editing&amp;quot; &amp;gt; &amp;quot;Enable section editing via [edit] links&amp;quot;. When you click edit you will automatically edit the subpage.&lt;br /&gt;
&lt;br /&gt;
{{:Contribute/Bugsquad/BugDays/KopeteDay2/Bugs still present in KDE 4}}&lt;br /&gt;
&lt;br /&gt;
{{:Contribute/Bugsquad/BugDays/KopeteDay2/Bugs no longer present in KDE 4}}&lt;br /&gt;
&lt;br /&gt;
{{:Contribute/Bugsquad/BugDays/KopeteDay2/Bugs needing more information}}&lt;br /&gt;
&lt;br /&gt;
{{:Contribute/Bugsquad/BugDays/KopeteDay2/Bugs in functionality not yet present in KDE 4}}&lt;br /&gt;
&lt;br /&gt;
{{:Contribute/Bugsquad/BugDays/KopeteDay2/Bugs to be marked as INVALID}}&lt;br /&gt;
&lt;br /&gt;
{{:Contribute/Bugsquad/BugDays/KopeteDay2/Bugs to be marked as DUPLICATE}}&lt;br /&gt;
&lt;br /&gt;
{{:Contribute/Bugsquad/BugDays/KopeteDay2/Bugs_that_require_a_random_event_to_reproduce}}&lt;br /&gt;
&lt;br /&gt;
{{:Contribute/Bugsquad/BugDays/KopeteDay2/Bugs needing users with particular setups}}&lt;br /&gt;
&lt;br /&gt;
{{:Contribute/Bugsquad/BugDays/KopeteDay2/Non english locales}}&lt;br /&gt;
&lt;br /&gt;
{{:Contribute/Bugsquad/BugDays/KopeteDay2/Bugs needing attention from Kopete developers}}&lt;br /&gt;
&lt;br /&gt;
{{:Contribute/Bugsquad/BugDays/KopeteDay2/Bugs that you cant do}}&lt;/div&gt;</summary>
		<author><name>Sandsmark</name></author>	</entry>

	</feed>