Issue 94

20th January 2008 by Danny Allen

This Week...

Taskbar and KMenu functionality from KDE 3.5 returns to the Plasma panel, and work on clocks in Plasma, with the move of the binary-clock Plasmoid to kdereview. Improvements in annotation handling in Okular (which has been officially capitalised). Essential support for viewing bug contents in the rewrite of KBugBuster. More data export options (CSV, HTML, etc) in Kalzium. The CVS implementation in KDevelop moves to the Model/View framework. The start of JavaScript functionality in Kst plugins. Usability refinements in Konsole. Mailody begins to be ported to the Akonadi service. A "mirror search" plugin for KGet. IPv6 work in KTorrent. Colour docker improvements across KOffice. Optimisations in KDevelop and NEPOMUK. Various work in KJS and KHTML. Support for the MPRIS multimedia player interaction specification in Dragon Player, with Dragon Player moving from playground/multimedia into kdemultimedia for KDE 4.1. The Kopete Bonjour protocol moves to kdereview. The copy of Qt within KDE SVN is updated to be GPL version 3 compatible.
Aaron Seigo talks about Plasma and Release Events:
Plasma development is going on at a furious pace right now, with the focus remaining on polishing the 4.0 code base. 145 bugs were closed in the last month and a great commit rate is being achieved:


The line graph shows the rate of resolved bugs climbing at a rather steady pace. As for the commit level, the following image (thanks Simon St James!) shows all commits (green), code commits (red) and Plasma-related commits (yellow). Over the last year, Plasma-related commits have really taken off, as you can see.


So what have we been up to exactly? Besides bug fixes by the ton, we've been filling in missing features to the taskbar, like multiple rows of windows (all nicely animated!) and "show only windows on this desktop", to name a couple. Desktop icon loading has improved substantially, as has performance of many of the Plasma components.

Script support for DataEngines and Runners was recently added, and the Plasmoids continue to grow in number. The continued development has helped solidify the Plasma library even further as we discover common patterns in Plasmoids. It really didn't occur to me, for instance, how many Plasmoids would need to keep themselves in a perfect square shape. =)

In between all this great work, we also had the KDE 4.0 Release Event in Mountain View, California. Thanks to Google's amazing help in organization and financial sponsorship, the event was truly an impressive thing. The presentations were streamed lived around the world and now appear on Google Video. I've seen photos of the keynote on walls in German taverns, so I know the streaming was indeed working. ;)

It was terrific to see both industry people there, hard core developers (including kernel developers) and general community members. Highlights for me were experiencing Patrick Volkderding's first karaoke performance, the KDE-branded wine (thanks Celeste!), the truly astounding Konqi and Katie mascots, and listening to the KDE people who came to express just how much closer they felt to the project as a whole.


It was pretty hectic for me personally, with meetings lasting well into the night. That was exactly why we did this, of course: to gain exposure, get our message out, connect the community and do something worthy of a release such as this.

It will be a hard event to top, but then we don't get a 4.0 every year. However, it seems we'll be doing a KDE Americas event at the beginning of every year as a counterpoint to the Akademy events in Europe in the middle of the year.
In a Digest special, Tom Albers of Mailody presents "How to write a mail client in 10 minutes":
Currently the Mailody crew is working to rewrite Mailody using the Akonadi backend. Akonadi is a cross-desktop PIM Storage Service. It basically acts like a cache or proxy if you like.

On the one hand, you can feed things into it. This is done by agents or resources. This can be a simple Maildir resource, Mailody is developing an IMAP library resource, NNTP-resource, etc. etc. On the other hand it provides ways to get the data to the applications that want to use it. Not only an addressbook or mail client, but also it makes it possible for strigi to search it and recently I saw soneone interested in making a SyncML connection.

We (Mailody) were surprised how simple it is to display the data in Akonadi. How the data gets into Akonadi will be out of scope for this article, but I wil get back to that later. For now, I just assume the data is in Akonadi, for example by the Maildir resource, which simply reads the mails you have in a Maildir.

We will now show how to write a mail client, or rather a mail reader to keep it simple. First, let's see what we need for this basic client. If we look at a traditional mail client, it is usually build up out of three parts: we need an overview of the folders on the left, the headers at the top right and the display of messages happens on the bottom right.

The listing of the folders. A folder is represented in Akonadi by a Collection. The Collections hold the name to display, an internal value so you can map it in your resource and things like the amount of unread messages. Akonadi provides funtions to retrieve all those collection from a certain resource, but Akonadi goes further, it also provides a ready to use models and views to use.

So here we go with the mainwidget:

{
  QHBoxLayout *layout = new QHBoxLayout( this );
  QSplitter *splitter = new QSplitter( Qt::Horizontal, this );
  layout->addWidget( splitter );

  mCollectionList = new Akonadi::CollectionView();
  connect( mCollectionList, SIGNAL(clicked(QModelIndex)),    SLOT(collectionActivated(QModelIndex)) );
  splitter->addWidget( mCollectionList );

  mCollectionModel = new Akonadi::CollectionModel( this );
  mCollectionProxyModel = new Akonadi::CollectionFilterProxyModel( this );
  mCollectionProxyModel->setSourceModel( mCollectionModel );
  mCollectionList->setModel( mCollectionProxyModel );
}

That's it. Now it will show the collections on the left side. If you want to see columns for unread messages and a total count, use the Akonadi::MessageCollectionModel instead. The proxy in above code is needed because Akonadi can hold different types of collection, it can also hold a bunch of vcards for example. We don't want to see those in the mail client (at least not here), we ideally we want to add a m_folderProxyModel->addMimeType("message/rfc822"); to the code.

So, next up is the headerlist. Akonadi provides the model for this as well. This model can be applied to the standard QTtreeView to show the headers. But you obviously want to have the messages displayed threaded, so you can easily spot which message is a reply to another. Here we go with the headerlist:

  QSplitter *rightSplitter = new QSplitter( Qt::Vertical, this );
  splitter->addWidget( rightSplitter );
  mMessageList = new QTreeView( this );
  mMessageList->setDragEnabled( true );
  mMessageList->setSelectionMode( QAbstractItemView::ExtendedSelection );
  connect( mMessageList, SIGNAL(clicked(QModelIndex)),
    SLOT(itemActivated(QModelIndex)) );
  rightSplitter->addWidget( mMessageList );

  mMessageModel = new Akonadi::MessageModel( this );
  mMessageProxyModel = new Akonadi::MessageThreaderProxyModel( this );
  mMessageProxyModel->setSourceModel( mMessageModel );
  mMessageList->setModel( mMessageProxyModel );

For the display of messages, we will keep it simple. You don't expect this to be a finished mail client, right?

  mMessageView = new QTextEdit( this );
  rightSplitter->addWidget( mMessageView );

So, that are the basic display items. Of course we need to implement the two slots. CollectionActivated makes sure the correct headers are shown when you click on a Collection. Remember Collection is the term for a folder in our case.

  mCurrentCollectionId = mCollectionList->model()->data( index,
    CollectionModel::CollectionIdRole ).toInt();
  mMessageModel->setCollection( Collection( mCurrentCollectionId ) );

The other slot has to show the correct message when you click on a header. In fact, this creates a KJob to fetch the message from Akonadi. It can happen that Akonadi does not yet have the complete message. In that case it will ask the resource for the missing part and will emit the itemFetchDone after that.

  DataReference ref = mMessageModel->referenceForIndex(
    mMessageProxyModel->mapToSource( index ) );

  ItemFetchJob *job = new ItemFetchJob( ref, this );
  job->addFetchPart( Item::PartBody );
  connect( job, SIGNAL( result(KJob*) ), SLOT( itemFetchDone(KJob*) ) );
  job->start();

You might be confused by the DataReference. A message is represented by an Akonadi::Item. That Item holds the actual data, for example via the payload functions. To reference a certain Item in the Collection a DataReference is used, basically a unique id. In our case you can use a mailbox name in combination with the message-id or uid as a unique key.

When the data arrives, we can display it to the user:

  ItemFetchJob *fetch = static_cast<ItemFetchJob*>( job );
  if ( job->error() ) {
    qWarning() << "Mail fetch failed: " << job->errorString();
  } else if ( fetch->items().isEmpty() ) {
    qWarning() << "No mail found!";
  } else {
    const Item item = fetch->items().first();
    mMessageView->setPlainText( item.part( Item::PartBody ) );
  }

That is it. Now you have your basic mail reader. I bet it took less than 10 minutes. You can understand that rewriting an existing mail client to use Akonadi is a bit more work. But it is fun, as it's deleting most of your own work (isn't that the real meaning of 'eating your children'??), and replacing it by Akonadi elements.


Of course when you have this foundation you want to extend it with more features. But you can easily do that, for example by writing the delegates. I hope this "how to" inspires you to write your own mail client, or to join the Mailody or Akonadi team.

Note: the above sections of code come from the mail client which is part of Akonadi. You can find it in KDE SVN. It is called "Akonamail", and is written by Bruno Virlet.
The post-KDE 4.0 commit surge continues this week, with 3043 commits. Part of this increase can be explained by the return of development branches (after several years of less-strict development), where certain feature and bugfix work is done in trunk/ and backported to the KDE 4.0 branch, essentially creating two commits for a single change.

However, that is not the whole story... there is something more, something that I can't readily prove with statistics. There is a real buzz to KDE development right now, an extra edge to what is already a vibrant atmosphere, and it is evident everywhere, from IRC to SVN.

More commits mean more work for me, but i'm definitely not complaining!

Statistics

Commits 3043 by 231 developers, 7049 lines modified, 1420 new files
Open Bugs 15750
Open Wishes 13554
Bugs Opened 477 in the last 7 days
Bugs Closed 360 in the last 7 days

Commit Summary

Module Commits
/trunk/l10n-kde4
742
 
/trunk/KDE
670
 
/branches/KDE
271
 
/branches/stable
257
 
/trunk/playground
202
 
/trunk/www
151
 
/trunk/koffice
117
 
/trunk/extragear
113
 
/trunk/kdesupport
105
 
/branches/work
93
 
Lines Developer Commits
108
 
Keld Simonsen
109
 
197
 
Laurent Montel
81
 
269
 
Luboš Luňák
75
 
365
 
Maks Orlovich
73
 
41
 
Pradeepto Bhattacharya
56
 
133
 
Gilles Caulier
54
 
80
 
Andras Mantia
53
 
72
 
Sébastien Renard
52
 
170
 
David Faure
50
 
66
 
Ralf Habacker
48
 

Internationalization (i18n) Status

Language Percentage Complete
Swedish (sv)
99%
 
Greek (el)
99%
 
Portuguese (pt)
98%
 
Japanese (ja)
93%
 
Estonian (et)
90%
 
German (de)
89%
 
Spanish (es)
88%
 
Polish (pl)
88%
 
Dutch (nl)
87%
 
French (fr)
87%
 

Bug Killers and Buzz

Person Bugs Closed
Luboš Luňák
40
 
Aaron J. Seigo
28
 
Pino Toscano
27
 
Cláudio da Silveira Pinheiro
22
 
Charles Connell
19
 
Lex Hider
16
 
Tommi Tervo
16
 
Peter Penz
15
 
George Goldberg
11
 
Andras Mantia
11
 
Program Buzz
Plasma
9555
 
Amarok
6010
 
KMail
3450
 
K3B
3330
 
Kopete
3075
 
Solid
2155
 
KDevelop
2029
 
SuperKaramba
1982
 
Phonon
1904
 
digiKam
1426
 
Person Buzz
Tobias Hunger
5180
 
David Faure
2135
 
Stephan Kulow
1935
 
Jonathan Riddell
1385
 
Torsten Rahn
1371
 
Aaron J. Seigo
1204
 
Laurent Montel
982
 
Bram Schoenmakers
962
 
Stephan Binner
888
 
Allen Winter
800
 

Commit Countries

Commit Demographics

Sex

Age

Contents

  Bug Fixes Features Optimization Security Other

Accessibility

     

Development Tools

  [] []   []

Educational

[] []    

Graphics

  []    

KDE Base

[] [] []   []

KDE-PIM

[] []    []

Office

[] []    []

Konqueror

     []

Multimedia

[] []    []

Networking Tools

[] [] []   []

User Interface

     []

Utilities

  []    []

Games

  []    []

Other

   []   []

There are 121 selections this week

Bug Fixes

Educational

Jason Harris committed changes in /trunk/KDE/kdeedu/kstars/kstars:

Fixing bug #132994: We come to bury Pluto, not praise him.

We have already been deriving Pluto from the KSAsteroid class for practical reasons. With this change, Pluto is now labeled an "asteroid" in the details dialog.

KDE Base

Maks Orlovich committed changes in /branches/KDE/4.0/kdebase/workspace/kcontrol/input/mouse.cpp:

Ubreak support for left-handed mice on recent X versions.
This code assumed that all mice had less than 20 buttons, but for some reason new Xorg thinks that lots of mice have 32(!!)

Maks Orlovich committed changes in /branches/KDE/4.0/kdelibs/kjs:

Limit stack usage of libPCRE (and raise an exception when it runs out of stack space, for diagnosibility).

Also, do not accept some super old (>4 year old) pcre versions; as they can severely cripple regexp support, and intefere with this bugfix. Also tweak the message about missing PCRE in configure check --- libPCRE doesn't result in "better" regexp support; the support w/o it is a last-resort fallback...

Based on patch by Sune Vuorela (username debian, hostname pusling, tld com)

Maks Orlovich committed changes in /branches/KDE/4.0/kdelibs/khtml:

Move object loading to the DOM from the renderer, fixing the long-standing major bug that hidden iframes couldn't be interacted with.

The basic overview here is that a new DOM base class, HTMLPartContainerElementImpl is created, that manages the interaction with KHTMLPart when it comes to loading child parts.

KHTMLPart now keeps tracks of those per ChildFrame (along the way removing the confusion of having 2 m_frames in close quarters talking about different things); and the DOM objects for iframe/object/embed/frame/etc. request the loading themselves as needed.

The renderer "just" displays the part widget set from the DOM.

Maks Orlovich committed changes in /branches/KDE/4.0/kdelibs/khtml/css/css_valueimpl.cpp:

Don't improperly round fp values when serializing to cssText (e.g. turning opacity:0.5 into opacity:0). Fixes a whole bunchof failures on the jQuery testsuite.

Peter Penz committed changes in /trunk/KDE/kdelibs/kio/kfile/kicondialog.cpp:

Fixed issue that inside the .directory file the full path of an icon is given:

Icon=/home/jakob/dev/kde/install/kde/share/icons/oxygen/48x48/places/user-desktop.png

instead of

Icon=user-desktop

The full path leads to a blurry icon when showing the icon in an increased size (e.g. in the Dolphin information bar).

Maks Orlovich committed changes in /branches/KDE/4.0/kdelibs/khtml/rendering:

Do not emit onchange on synthetic toggling of radio buttons and checkboxes.
That's incompatible, and also led to #155973, crash on the beta BBC's page location selector, as we have the following scenario:

1. JS sets checked.
2. We do updateFromElement, ask Qt to update the widget
3. The widget emits the change signal
4. The change signal handler does ref() [rc = 2]
5. The change signal handler does onchange(). The event running causes a detach, which does a deref() [rc = 1]
6. The change signal handler does deref() [rc = 0], so the Render* gets destroyed
7. The common parts of updateFromElement, such as RenderWidget::updateFromElement, etc., run on a deleted RenderCheckBox/RadioButton, trying to access deleted RenderStyle, etc. boom.

Peter Penz committed changes in /trunk/KDE/kdebase/apps/dolphin/src:

Treeview fixes:
* don't jump to the selected folder when expanding a sub tree within the treeview widget
* don't reset the root of non-local URLs when there is no Places-URL available

Rafael Fernández López committed changes in /trunk/KDE/kdebase/apps/dolphin/src/dolphincolumnwidget.cpp:

Who said there aren't coding races? haha. Fix the keyboard navigation in the special case of moving left to the previous column and going upwards or downwards.

Peter Penz committed changes in /trunk/KDE/kdebase/apps/dolphin/src:

show the correct meta information in the information sidebar also for non-local files

Peter Penz committed changes in /trunk/KDE/kdelibs/kio/kio/kfileitemdelegate.cpp:

Only use the cache if the size is equal to the current item size. This fixes drawing artifacts when zooming in or out inside Dolphin or Konqi.

Maks Orlovich committed changes in /branches/KDE/4.0/kdelibs/khtml/xml:

Simplify and robustify the TreeWalker implementation somewhat, fixing a couple of bugs along the way.

It actually seems very close to right (unlike the utterly wrong impl WebCore has :-) )

Maks Orlovich committed changes in /branches/KDE/4.0/kdelibs/khtml:

Make node filters work in JS. Uff. Now all the treewalker tests in acid3 pass.

Remove some dead/commented-out stuff in dom2_traversal.*, which came from misunderstanding of the role of DocumentTraversal interface..tweak a comment

Diffs: 1, 2, 3, 4, 5 Revision 763248
Luboš Luňák committed changes in /trunk/KDE/kdebase/workspace/kwin/layers.cpp:

Fix fullscreen on youtube with latest flash. Requiring the fullscreen window to be focusable is probably unnecessary and this was breaking because of the skiptasbar flag.

KDE-PIM

Thorsten Staerk committed changes in /trunk/KDE/kdepimlibs/kcal:

Deliver why saving failed. Discussed with Cornelius at Osnabrück 2007.

David Jarvie committed changes in /branches/KDE/3.5/kdepim/kalarm:

Store email unique IDs instead of names in email alarms to prevent problems if email IDs are renamed.

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 Revision 763235
Ingo Klöcker committed changes in /branches/KDE/3.5/kdepim/kioslaves/imap4/imapparser.cc:

Do not quote double quotes and backslashes when setting the display name in the mailAddress object.

The necessary quoting is applied in mailAddress::getStr() when the email address is composed from its different parts.

Office

Thorsten Zachmann committed changes in /trunk/koffice/libs:

o Fix copy and paste of pages to not insert duplicate master pages.
This broke by a fix :-) of some code.

I really hope we can get automated tests after each ci. That would have saved me quite some time figuring out what was wrong.

Diffs: 1, 2, 3, 4, 5, 6 Revision 760639

Multimedia

Sebastian Trueg committed changes in /trunk/extragear/multimedia/k3b:

Fixed all decoder and encoder plugin loading.

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 46 more) Revision 763003

Networking Tools

Tejas Dinkar committed changes in /trunk/playground/network/kopete/protocols/bonjour:

Major Documentation fix.
All Classes are now well docuented.
Prepare for merging soon :D

Diffs: 1, 2, 3, 4, 5, 6 Revision 760688
Will Stephenson committed changes in /branches/KDE/4.0/kdenetwork/kopete/protocols:

Remove erroneously translated Category fields since scripty is incapable of doing it. This was causing the empty account list in the add account wizard in Kopete.

Cláudio da Silveira Pinheiro committed changes in /branches/KDE/3.5/kdenetwork/kopete/libkopete/avdevice/videodevice.cpp:

Final fix for the sn9c1xx driver. I tested myself with actual hardware.
sn9c1xx drivers have non-conformant behavior, diverging from V4L2 specification.

Instead of return an error when setting a given unsupported pixel format, it returns SUCCESS but the selected format is not the one you asked for.

The maintainer must be notified, so he will (hopefully) fix the driver.

Christian Hubinger committed changes in /branches/extragear/kde3/network/kmyfirewall:

* Fix: KMFTarget sshPort save/load
* no use of KShellProcess or KProcess::setUserShell() anymore
* Move all process exec logic to new class KProcessWrapper
* Lost of amsller fixes & cleanups
* Fix: Templates* New: Web Server teplate for the iptables interface

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 34 more) Revision 763591

Features

Development Tools

Dmitry Suzdalev committed changes in /branches/work/kbugbuster-dimsuz/gui:

Starting support for viewing bug contents

Diffs: 1, 2, 3, 4 Revision 763433
Andras Mantia committed changes in /branches/KDE/3.5/kdewebdev/kommander:

Add ToolBox widget (has some issues, mainly in the editor part).
Editor code partly taken from Qt Designer (well, just as the rest of Kommander).

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 6 more) Revision 763612

Educational

Carsten Niehaus committed changes in /branches/KDE/4.0/kdeedu/kalzium/data/iconsets/school:

Sync with trunk. All new icons are now in KDE 4.0.1 as well

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 4 more) Revision 760765
Matt Williams committed changes in /trunk/playground/edu/keduca/libkqti:

- Add a load more classes to reflect the spec more accurately. It's surprisingly difficult to just implement a small part of a spec I'm finding :)

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 4 more) Revision 761060
Inge Wallin committed changes in /trunk/KDE/kdeedu/marble:

Continue with min and max zoom in .dgml files

Almost done now, just need to get the actual min/max zooms from the MapTheme within the Model from the Widget.

However, the widget can't get at the real map theme, just its name right now, so we'll have to do some refactoring of the marblemodel.

Diffs: 1, 2, 3, 4, 5, 6 Revision 761065
Frederik Gladhorn committed changes in /branches/KDE/4.0/kdeedu/parley/src/entry-dialogs:

Use KCharSelect for the phonetics entry page.
Much cleaner and less work for me :)

Thanks for the report Florian!

Inge Wallin committed changes in /trunk/KDE/kdeedu/marble:

Finish the feature of supporting minimumZoom and maximumZoom in .dgml files.

Diffs: 1, 2, 3, 4, 5, 6, 7, 8 Revision 761500
Aleix Pol Gonzalez committed changes in /trunk/KDE/kdeedu/kalgebra/src:

Moved 2D graphs and variables view to MVC

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 10 more) Revision 762059
Torsten Rahn committed changes in /trunk/KDE/kdeedu/marble:

- Committing Settings Widget for KDE 4.1.

This mockup-stage .ui file shows about what I have in mind in terms of features being supported for KDE 4.1 and how they should get offered in the settings dialog.

Frederik Gladhorn committed changes in /trunk/KDE/kdeedu/parley/src:

Add the KCharSelect widget to let the user enter phonetic symbols in a nice way. The width of this widget is horrible.

(Taking away the extra info display doesn't help much because of the two combos and line edit next to each other.

Diffs: 1, 2, 3, 4, 5 Revision 762370
Carsten Niehaus committed changes in /trunk/KDE/kdeedu/kalzium/src:

Include Johannes Simones patch: Allow to export data to csv, html and so on

Diffs: 1, 2, 3 Revision 763468

Graphics

Pino Toscano committed changes in /trunk/KDE/kdegraphics/okular/ui:

support more than one annotation in the annotation popup

Diffs: 1, 2, 3, 4 Revision 761316
Pino Toscano committed changes in /trunk/KDE/kdegraphics/okular/ui/side_reviews.cpp:

Allow the selection of more than annotation in the annotation tree, so they can be deleted at once using the popup menu.

Gilles Caulier committed changes in /branches/extragear/kde3/graphics/digikam/digikam/digikamview.cpp:

digiKam from KDE3 branch: I'm happy to said than the new Time-Line tool to perform Date Search around whole albums collection is now available for testing with digiKam 0.9.4-svn.

A screenshot of this new tool in action can be seen here:

<a href="/issues/2008-01-20/files/digikam.png">http://bugs.kde.org/attachment.cgi?id=23060&action=view</a>;

Marcel,
KDE4 port still todo before to close this file. I will backport all Time-Line widgets to KDE4 as well.

What about the new digiKam Search framework for KDE4?

Colin Guthrie committed changes in /branches/extragear/kde3/libs/kipi-plugins/galleryexport:

Add the ability to set the title and/or description of the uploaded images.

Thanks to Tom Kliethermes for the patch.

Andrew Walker committed changes in /branches/work/kst/1.6/kst/src:

first draft of adding javaScript functionality for 'basic' aka 'new' aka 'dataObject' plugins

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 9 more) Revision 762438
Marcel Wiesweg committed changes in /trunk/extragear/graphics/digikam/libs/database:

Add (yet unused and untested) methods to imagequerybuilder to create an SQL query from a search XML description.

The list of supported fields comprises the Albums, Images, ImageInformation, ImageMetadata, ImagePositions and ImageComments (basic support) tables.

Future additions for copyright information and more properties is of course possible.

KDE Base

Luboš Luňák committed changes in /trunk/KDE/kdebase/workspace/kwin/effects:

Option for transparent inactive windows. Patch by Mark Eaton.

Diffs: 1, 2, 3, 4 Revision 761341
Maks Orlovich committed changes in /branches/work/kjs-debugger2/kdelibs/khtml/ecma/debugger-ipc:

Put in the back-and-forth, event-loop-less/blocking IPC core I put together while visiting my folks, as well as the IDL + marshalling stuff needed for the debugger.

This is neither hooked up to khtml or the debugger proper, nor really tested beyond inspecting IDL-generated code, but it's valuable to enough to have good backup :-)

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 13 more) Revision 761406
Dan Meltzer committed changes in /trunk/KDE/kdebase/workspace/plasma/applets/digital-clock:

Add support to the digital clock to show seconds.

This brings up an interesting timing bug where if there is a digital clock showing seconds, and one that isn't, the one showing seconds does not get updated at the :01 mark, where the one not showing seconds does.

Diffs: 1, 2, 3 Revision 761895
Robert Knight committed changes in /trunk/KDE/kdebase/apps/konsole/src:

Scroll the terminal display continually when the mouse is held down and then moved outside of the display, rather than requiring continual mouse movement to scroll. Make the scrolling rate proportional to the distance between the edge of the display and the mouse position.

Currently suffers from quite noticable flicker when scrolling quickly through a large scrollback buffer because the display is scrolled and repainted before the selection is extended.

Stop the cursor from blinking and text from blinking when the display loses focus and restart blinking when the cursor regains focus.

Ensure that the cursor is visible in a hollowed-out style when the display does not have focus.

Sebastian Trueg committed changes in /trunk/playground/base/nepomuk-kde:

And here comes all my unstable nepomuk development:
* An updated search Api which properly and generically searches tags and all other stuff.
* The resource display framework which is pluggable to allow the display of arbitrary resources (keep in mind we have more than just files, way more)

It can be used to display resources in widgets, in listviews, and in plasma elements.

All using the same plugins.

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 50 more) Revision 762176
Maks Orlovich committed changes in /branches/KDE/4.0/kdelibs/khtml:

For jQuery: support onload on script elements, so we can get past test 105.
Partial merge from WC, minus code duplication, plus comments.

One thing I am not sure of: do we want to do error event as well?

I am not a fan of 50% legacy, 50% proprietary events that bubble.

Diffs: 1, 2, 3, 4 Revision 762468
Olivier Goffart committed changes in /trunk/KDE/kdebase/workspace/plasma/applets/tasks:

Option to show only task of the current desktop in the taskbar.

I can't use KDE without this :-)

It's enabled by default because i think this is an importent feature for everyone using virtual desktops. But feel free to disable it by default if you don't like that.

Diffs: 1, 2, 3 Revision 762683
Rafael Fernández López committed changes in /trunk/KDE/kdelibs:

Smooth previews, as promised, for 4.1. This kind of animations should be configurable from a KCM so the user could decide whether he/she wants animations.

Diffs: 1, 2, 3, 4 Revision 762808
Jure Repinc committed changes in /trunk/KDE/kdebase/workspace/plasma/applets/tasks:

Yay "Show only tasks from the current desktop" is back.

As a thank you I can at least polish it up a bit:
* task buttons don't disappear for windows on all desktops after you switch to another desktop (used isOnCurrentDesktop())
* after you move the window to another desktop the task button now dissapears
* changed the setting label a bit, hope it's a bit better now

Diffs: 1, 2, 3 Revision 762830
Sebastian Sauer committed changes in /trunk/KDE/kdebase/workspace/plasma/applets/kickoff/simpleapplet:

* Introduced menu-views to allow to define what menu should be displayed. Supported views are: Combined, Favorites, Applications, Computer, Recently Used or Leave

* Introduced format-option to allow to define the menu-caption. This is equal to the "Menu item format" option in KDE3.

Supported formats are: "Name only", "Description only", "Name Description" (default) or "Description (Name)"

Petri Damstén committed changes in /trunk/playground/base/plasma/applets/news:

- html modified
- support to limit maximum feed lines

Diffs: 1, 2, 3 Revision 763070
Wilbert Berendsen committed changes in /trunk/KDE/kdelibs/kate/syntax/data/texinfo.xml:

New KWrite Syntax Highlighting for Texinfo.

Created by Daniel Franke, posted to kwrite-devel at Mon, 21 Aug 2006 22:22:57 +0200

Small updates by Wilbert Berendsen

Sebastian Trueg committed changes in /trunk/KDE/kdebase/runtime/nepomuk:

* New Strigi configuration: The nepomuk server can now read and write the strigi config directly.

This is necessary anyway since strigi does not support the command line parameters we used before anymore.

* Configuration GUI for Strigi exclude filters.
* Better Strigi runtime control including termination which is needed since Strigi does not care much about being exited during indexing.
* Using Soprano's new SignalFilterModel (if available) to restrict the number of updates in libnepomuk.

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9 Revision 763201

KDE-PIM

Tom Albers committed changes in /trunk/playground/pim/mailody/src:

Port to Akonadi. This should make it possible to see the messages in Mailody.

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 Revision 762372
Laurent Montel committed changes in /trunk/KDE/kdepim/kmail:

Start to port dictionary combo to sonnet.
Now we don't use k3spell in kmail (need to save/load config)

Office

Cyrille Berger Skott committed changes in /trunk/koffice/krita/plugins/viewplugins:

add the beginning of a triangle color selector: only display the wheel for now

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9 Revision 760677
Peter Simonsson committed changes in /trunk/koffice/libs/main:

Embed the filedialog in the start widget.
Move the open button to bottom right in all panes.
Also prepare the start widget to handle more then one custom widgets.

Diffs: 1, 2, 3, 4, 5, 6, 7, 8 Revision 760815
Martin Pfeiffer committed changes in /trunk/koffice/libs/guiutils:

- remove things I commented out from the CMake file
- commit an action to provide a drop-down menu to insert shapes:

motivation: personally I don't want to have a docker to insert shapes, though I like the new one. But screen space is limited :-)

So this is a menu, that I would really like to see as option to so that you can configure how you like to insert your shapes.

Diffs: 1, 2, 3 Revision 760886
Cyrille Berger Skott committed changes in /trunk/koffice/krita/plugins/viewplugins:

add yet another color docker but this time specifically designed to be small

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 Revision 762422
Jan Hambrecht committed changes in /trunk/koffice/karbon/plugins/tools:

implement "drawing" the gradient with the mouse for shapes with no gradient yet

Diffs: 1, 2, 3, 4 Revision 762437
Johannes Simon committed changes in /trunk/koffice/kchart/shape:

You can now add new axes to a diagram. And as many of them as you want! Yay!

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 1 more) Revision 763227

Multimedia

Shane King committed changes in /trunk/extragear/multimedia/amarok/src/servicebrowser/lastfm:

Hook in last.fm collection, query maker still unimplemented.

Diffs: 1, 2, 3, 4 Revision 760686
Ian Monroe committed changes in /trunk/kdereview/dragonplayer:

turn off screensaver when video is playing
needs some live testing

Diffs: 1, 2, 3, 4, 5 Revision 761475
Stanislas Krzywda committed changes in /branches/kscd/isi-kscd/kdemultimedia/kscd:

* Interface architecture modification: now we use only one svg file for all the buttons instead of one by button.

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 17 more) Revision 761825
Dan Meltzer committed changes in /trunk/extragear/multimedia/amarok:

Add support for "oga" files in places where we can (That I can find).

I've left the media devices alone as some may not handle .oga properly, and users can always add the file format themselves if they so choose.

This still needs to be backported to stable, I don't have a checkout.

Ian Monroe committed changes in /trunk/kdereview/dragonplayer:

New DBus API, kind of a subset of MPRIS. Can't really do the full thing since Dragon Player doesn't have a playlist.

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 3 more) Revision 762366
Ian Monroe committed changes in /trunk/kdereview/dragonplayer:

added the GetCaps and GetMetaData dbus methods so I've implemented all of MPRIS's /Player DBus API

Diffs: 1, 2, 3, 4, 5, 6, 7 Revision 762680
Sebastian Trueg committed changes in /trunk/extragear/multimedia/k3b:

Started port of K3bThread to new QThread Api that supports queued signals

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 3 more) Revision 763096
Mohamed-Amine Bouchikhi committed changes in /branches/kscd/isi-kscd/kdemultimedia/kscd:

- reloading optical drive when a new disc is inserted
- upgrading signals when the track change
- fix bugs

Have Fun ;)

Diffs: 1, 2, 3, 4, 5, 6 Revision 763494

Networking Tools

Tejas Dinkar committed changes in /trunk/playground/network/kopete/protocols/bonjour:

A Brand New Set of Icons!!!! (ripped off apple website and made transparent)

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 3 more) Revision 760741
Manolo Valdes committed changes in /trunk/KDE/kdenetwork/kget/transfer-plugins:

Add a mirror search plugin
it implements the new inter plugin data change interface "transferdatasource"

now we have a global search engine capability that may be used by others plugins

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 6 more) Revision 761211
Charles Connell committed changes in /trunk/KDE/kdenetwork/kopete/plugins/statistics:

New statistics dialog

Diffs: 1, 2, 3, 4, 5, 6, 7, 8 Revision 761355
Joris Guisson committed changes in /trunk/extragear/network/ktorrent:

Changes :
- Made DHT IPv6 ready
- Add support for peers6 field in tracker announce responses (so we are IPv6 ready there to)
- Fix bug displaying the wrong number of leechers

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 7 more) Revision 762283
Cláudio da Silveira Pinheiro committed changes in /branches/KDE/3.5/kdenetwork/kopete:

Preliminary patch to support sn9c1xx devices (WIP)

Diffs: 1, 2, 3, 4, 5, 6, 7 Revision 762475
Igor Janssen committed changes in /trunk/KDE/kdenetwork/kopete/protocols/jabber:

improvement support XEP-0004, XEP-0050, XEP-0055, XEP-0077, XEP-0060, XEP-0107

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 30 more) Revision 762688
Christian Hubinger committed changes in /branches/extragear/kde3/network/kmyfirewall:

* Redesigned auto configuration. Now based on a shell script. Works also on remote targets using SSH. Auto Config now vanished from the Configdialog and accessable in the My Network View.
* Remove unused files
* Add Config Valid Checks
* Add Pointer to the mianWidget for all KIO:NetAccess methods to provide kwallet support

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 22 more) Revision 763217
Helmut Schaa committed changes in /branches/work/knetworkmanager/knetworkmanager-0.7/src:

Add possibility to show tooltips for each device

Diffs: 1, 2, 3, 4, 5, 6 Revision 763432
Lukas Appelhans committed changes in /trunk/KDE/kdenetwork/kget/plasma/applet/plasma-kget.cpp:

Utilities

Brad Hards committed changes in /trunk/playground/libs/kcabinet:

Refactoring to allow polymorphic decompression algorithms.

Polymorphism: all the cool kids were doing it, so I thought I should too.

Diffs: 1, 2, 3, 4 Revision 760643
Friedrich W. H. Kossebau committed changes in /trunk/playground/utils/okteta/program:

added: binary filter framework and filter tool

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 13 more) Revision 760918
Ralf Habacker committed changes in /trunk/kdesupport/kdewin-installer/shared:

- added new download mirror type SourceforgeMirror. SourceforgeMirror is able to parse the file list generated from a mirror of the sourceforge downloader service system.
- added filter function to select lated package versions.

This is required because sourceforge mirrors only supports one directory and there may be more than one version for a given package available.

Games

Gueudelot Olivier committed changes in /trunk/playground/games/ktank:

KGLEngine : Eigen integration + Ktank exe (test)

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 80 more) Revision 761483
Paolo Capriotti committed changes in /branches/work/kollision-qgv:

Restored sound support.

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 1 more) Revision 762797

Optimization

Development Tools

David Nolden committed changes in /trunk/KDE/kdevelop/languages/cpp:

Give the completion-list items to the kate completion-model hiearchically, grouping items that have common role-values like InheritanceDepth and ArgumentHintDepth together.

Kate does not need to query the values that are inherited from the parent nodes any more, and in future it may even use the pre-computed grouping.

This makes the completion-list show up instantly, instead of waiting for seconds with blocked UI, even if it is very long.

This needs up-to-date kdelibs.

Diffs: 1, 2, 3, 4 Revision 761495

KDE Base

David Nolden committed changes in /trunk/KDE/kdelibs:

Optimizations for very large completion-lists(see KDevelop):
- Allow optionally passing data to kate hierarchically, so that grouping can take place without querying each item for 3 values.

Parent-nodes define data common for all sub-nodes(see interface documentation).
- Change the vertical scroll-mode back to ScrollPerItem. ScrollPerItem is buggy while scrolling down the list, but ScrollPerPixel needed Qt to compute the size of each completion-item, which is extremely slow for very long lists.
- Remove 2 old files.

Now the completion-list in kdevelop shows instantly instead of waiting for seconds, even when it's very long.

Diffs: 1, 2, 3, 4, 5, 6, 7, 8 Revision 761494
Sebastian Trueg committed changes in /trunk/KDE/kdelibs/nepomuk:

Finally I can do my "little" commit:
* I completely reimplemented the ontology classes. They are much cleaner and faster now and comply with QT/KDE coding styles (shared privates and return by value and stuff)

For compatibility the old classes are kept and should be fazed out after KDE 4.1.
* Nepomuk::Resource has been improved and cleaned up a bit. A new ResourceFilterModel takes care of creating proper named grahs for the data.
* Nepomuk::Resource now supports multiple types which will be needed soon.

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 42 more) Revision 762174
Jens Bache-Wiig committed changes in /trunk/kdereview/phonon/gstreamer:

Reduced latency on gstreamer messages

We now spin a glib eventloop in the backend to signal Qt directly about state changes rather than polling the bus. This should result in somewhat improved latency and battery consumption.

Diffs: 1, 2, 3, 4, 5, 6 Revision 762604

Networking Tools

Joris Guisson committed changes in /branches/extragear/kde3/network/ktorrent/apps/ktorrent/ktorrent.cpp:

Don't save groups at exit anymore, this is no longer necesary seeing that the groups are saved when something changes

This should also prevent a crash at exit from screwing up the groups file

Other

Benoît Jacob committed changes in /branches/work/eigen2:

big architecture change dissociating "actual" dimensions from "maximum possible" dimension. The advantage is that evaluating a dynamic-sized block in a fixed-size matrix no longer causes a dynamic memory allocation.

Other new thing:
IntAtRunTimeIfDynamic allows storing an integer at zero cost if it is known at compile time.

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 19 more) Revision 760962

Other

Development Tools

Matt Rogers committed changes in /branches/work/kdevelop/cvs-modelview:

Add a branch to move CVS to model view framework.

All so I can remove a tab from the bottom of the main window. :)

Andreas Pakulat committed changes in /trunk/KDE/kdevplatform:

Change our SOVERSION to 1 as discussed. Claiming these libs had already 4 BiC releases is just false.

Sorry for being a bit late, I totally forgot about this on thursday.

Note for anybody with an existing kdevplatform build: After this update you first need to completely remove any libkdevplatform* in your builddir and installation dir and then start the build.

AFAIK no reason to completely remove the builddir for kdevplatform or kdevelop, just the above and then run a simple make in both.

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 Revision 763290

KDE Base

Aaron J. Seigo committed changes in /trunk/KDE/kdebase/workspace/libs/plasma/layouts:

to be easily usable outside of libplasma, signals need full namespace usage.

we really ought to do a good review of libplasma for this issue

Rafael Fernández López committed changes in /trunk/KDE/kdelibs/kdeui:

Move KCategorizedView class from Dolphin to kdelibs/kdeui/itemviews

Diffs: 1, 2, 3, 4, 5, 6 Revision 760872
Tom Patzig committed changes in /trunk/KDE/kdebase/workspace/plasmas/kickoff:

- start kickoff applet with focus on favorites view

Maks Orlovich committed changes in /branches/work/kjs-debugger2:

Workspace for the out-of-process version of the debugger...

Aaron J. Seigo committed changes in /trunk/KDE/kdebase/workspace/libs/plasma/desktoptoolbox.cpp:

make the colorization effect more noticeable, which in turn makes it feel smoother.

Robert Knight committed changes in /trunk/KDE/kdebase/apps/konsole/src:

Avoid jumping to end of output when a modifier key (Control, Shift or Alt) is pressed on its own, as these keys are used to specify the selection mode.

This makes it easier to do block selection.

Peter Penz committed changes in /trunk/KDE/kdebase/apps/dolphin/src/dolphincolumnwidget.cpp:

remove debugging output

(damn, I've lost the coding race with Rafael by a few minutes, so this line is the only thing I can commit now ;-))

David Faure committed changes in /branches/KDE/4.0/kdebase/apps:

Extracted a MimeTypeWriter from the filetypes kcontrol module, to have the code that writes out a xdg-shared-mime compliant mimetype in one place.

Ported nspluginscan to xdg-shared-mime so that it generates mimetypes that work.

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 1 more) Revision 762860
Maks Orlovich committed changes in /branches/KDE/4.0/kdelibs/khtml:

Merge in Fredrik's canvas work and agateau's netvibes fixes from trunk.

The only non-debugger functional difference now should be njaard's BiDi fix...

Diffs: 1, 2, 3 Revision 762873
Thomas Reitelbach committed changes in /branches/KDE/4.0/kdebase:

revert 762802.

Hm, all necessary strings have already been extracted because scripty automatically extracts ui-files in the same dir where Messages.sh resides.

The reason for all those modules beeing untranslated must be something else. I'll have to investigate it.

Diffs: 1, 2, 3, 4, 5, 6, 7, 8 Revision 763144
Sebastian Trueg committed changes in /trunk/KDE/kdelibs/kdeui/widgets:

Improved usability of KEditListBox both for the developer and the user:
* Developers can now use setCustomEditor instead of specifying the editor in the constructor. This allows usage in QDesigner.
* Users can properly deselect items to add new ones. The selection is not based on the current item anymore but on the selected one. Thus, users see the selection.
* The lineedit always has focus, making editing easy while up and down keys are mapped to the listview for keyboard selection of items.
* The tab order is now fixed.
* Buttons have icons.

All in all KEditListBox should be really usable now. :)

Maks Orlovich committed changes in /trunk/tests/khtmltests/regression:

Some Apple tests for TreeWalker, and one of mine, which tests a trickier filter.

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 18 more) Revision 763253
Rafael Fernández López committed changes in /trunk/playground/libs/goya/goya:

Goya needs to obey user preferences. We need to link to kdeui since buttons should obey the user decision of showing/not showing icons

Peter Penz committed changes in /trunk/KDE/kdebase/apps/dolphin/src:

stay consistent with Konqueror: F10 creates a new directory

KDE-PIM

Allen Winter committed changes in /trunk/KDE/kdepim/.krazy:

don't run Krazy on mimelib.
mimelib is an old 3rd party lib we really want to replace with kmime.

Office

Patrick Spendrin committed changes in /trunk/koffice/karbon:

make karbon build on windows again - and cleanup build code, add library karbonui for all gui related stuff

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 6 more) Revision 762842

Konqueror

Frank Osterfeld committed changes in /trunk/extragear/base/konq-plugins:

reactivate konqfeedicon plugin

Diffs: 1, 2, 3, 4, 5 Revision 760810

Multimedia

Jeff Mitchell committed changes in /trunk/extragear/multimedia/amarok/src:

Modification to the playlist SVG so that the side edges of tracks are separate.

The idea was that when you started dragging, the border on the sides would stay put while the rest was dragged, making it look significantly better since it wouldn't look like weird white space.

However, this doesn't work -- all three pixmaps are dragged around, with white underneath. If anyone can look at this before the demo tomorrow, I'd appreciate it.

Dan Meltzer committed changes in /trunk/extragear/multimedia/amarok/src:

Work on the main toolbar.
Spread the progress bar across the full length of the screen.
Space it a few pixels from the edge.

Diffs: 1, 2, 3 Revision 763502
Sebastian Trueg committed changes in /trunk/extragear/multimedia/k3b:

Completely rewritten the K3bThreadJob API. K3bThread is now not part of the public API anymore.

Implementing a threaded job is now as simple as reimplementing the run method in K3bThreadJob.

Everything else works as with K3bJob. This makes for so much more readable code and is possible due to the nice signals and slots in QThread feature of QT4. :)

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 38 more) Revision 763578

Networking Tools

Charles Connell committed changes in /trunk/KDE/kdenetwork/kopete/plugins:

Move Pipes plugin over from playground

Diffs: 1, 2, 3, 4 Revision 761017
Tejas Dinkar committed changes in /trunk/playground/network/kopete/protocols/bonjour:

(k)source kode is know kompletely krazy kompliant

Crimes I have been charged with:
1) Comparing QString to "" (millions of cases)
2) Pass by value instead of const ref (one count)

Diffs: 1, 2, 3, 4, 5 Revision 761358
Charles Connell committed changes in /trunk/KDE/kdenetwork:

Move statistics to Qt SQL backend

Diffs: 1, 2, 3, 4, 5 Revision 761526
Tejas Dinkar committed changes in /trunk:

Moved the kopete bonjour protocol to kde-review

User Interface

Davide Bettio committed changes in /trunk/kdereview/binary-clock:

moved binary-clock to kdereview.

Diffs: 1, 2, 3, 4, 5 Revision 761334

Utilities

Jasen Minton committed changes in /trunk/KDE/kdeutils/superkaramba/src/karambaapp.cpp:

With this change, the action to open the theme dialog is turned into a toggle. If it's not open, open it. If it's already open, hide it.

This allows clicking on the system tray icon to be a means of closing the dialog much like many system tray items already behave and is coming to be expected.

Christian Ehrlicher committed changes in /trunk/kdesupport/kdewin-installer/3rdparty/curl:

imported libcurl 7.17.1, only the really needed parts to reduce size - the license allows this

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 169 more) Revision 763198

Games

Albert Astals Cid committed changes in /trunk/KDE/kdegames/ktuberling/pics:

remove old themes

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 8 more) Revision 762389
Paolo Capriotti committed changes in /trunk/playground/games/kollision:

Finally merged kollision-qgv branch.

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 5 more) Revision 762813

Other

Thiago Macieira committed changes in /branches/qt/3.3/qt-copy:

Update to Qt 3.3.8b

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 1941 more) Revision 763238