Issue 153

17th October 2010 by Danny Allen

Contributors

Danny Allen
Jonathan Thomas
Marta Rybczynska
Dominik Tritscher
Marco Krohn
Xavier Vello

This Week...

Start of KOffice UI Abstraction project, to enable implementing various UIs on top of KOffice without in-depth knowledge of KOffice MVC APIs. Support for picture bullets in the .docx format filter in KOffice. "Reply Without Quoting" in KMail (kdepim/mobile). Enable dropping of raw data (like one could do in KDE3) in Dolphin. Configurable routing profiles in Marble. First approach toward a version of KAlgebra for mobile devices. "Save Plot" function now saves to a SVG file in Kalzium. New contextual menu in HTML pages for export as PDF, ODT, image, and copy, in Skrooge. "Postpone Break" feature in RSIBreak. Initial support of Geolocation in Choqok. A configuration dialog for the Muon Updater. upower backend for PowerDevil 2. New StartupFeedback effect in KWin. Minimal implementation of a Windows CE backend in Solid. Support for defining "helper protocols" (e.g. "mailto URLs should launch the executable kmailservice") using .desktop files. Various optimisations across KDE-PIM and KOffice. Initial version of a Git plugin for Dolphin. More new mimetype icons in Oxygen. More intuitive keyboard shortcuts for rotation in Okular. A global way to allow KDialogs being embedded in graphics views. libplasma can now be built without KIO.
Boudewijn Rempt graciously writes a technical update on the recent progress in Krita:

I still am feeling elated that the Commit-Digest has returned - and I feel quite chuffed that Danny has asked me to write a little feature article for the Commit-Digest. Now, I already do regular updates of development news on krita.org so I would like to present a technical overview of what has gone into what will become Krita 2.3 - the great core bits.

To me the most fun bit of Krita is seeing what actual artists can do with it. But what's even more important in some respects is that Krita is now a huge and relatively well-documented repository of technical information on how to create a 2D graphics application. And in some respects, Krita really is at the forefront of painting application technology.

For instance, Krita users could switch between a software canvas and a hardware-accelerated OpenGL canvas before Photoshop had that option. Krita is quite pervasively multithreaded. While we are still not completely satisfied with the performance, painting on a 6000x6000 pixel image with a brush with a 500 pixel diameter will give all your cores a sharp prod in their behinds, and make them sweat a bit. We've always had more colorspaces than any other application, but Krita is going new places there as well, supporting Little CMS 2 already and using a wickedly cool technology called OpenGTL as well to create new Color Model implementations with very little effort. And then, of course, since Krita is about painting, not about bragging, we've got an architecture that makes it easy to experiment with new kinds of brush engines.

But I have to choose, and I've written before about the brush engines, and besides, if you can read Slovak, there's Lukas' thesis that will explain it better than I can do. So, threading and OpenGTL are the main topics for today.

OpenGL

We have tried to use OpenGL in two places in Krita, and we are still using it in one. The main use of OpenGL is on the canvas. The other place has been an attempt to use GLSL to implement filters. We quit trying to develop GLSL-based filters when Cyrille Berger came up with OpenGL, though, and it is no longer relevant for Krita. We still use the OpenGL shader language for the canvas.

But the OpenGL canvas is still going strong and is, in fact, the recommended canvas type for Krita if your graphics card supports it. These days that is more and more often the case, even though we definitely have had as many problems as the KWin developers had, and still encounter driver issues. Although we already had an OpenGL canvas in Krita 1.6, for Krita 2.x the code was completely rewritten. Chiefly responsible here is Adrian Page, and later on Lukáš Tvrdý and Dmitry Kazakov.

The canvas is, of course, a QGlWidget implementation. Now a canvas has a couple of possible roles:

  • Show the image - not as easy as it sounds!
  • Show the grid and tool decorations - by that I mean the outlines of (for instance) the circle tool, the mesh points of the warp transform tool or the darkened area outside the crop area
  • Show the cursor
  • Show previews for some tools, like the gradient tool

To show the image, we hack up the rendered image - we call it the projection of all the layers in the layer graph - into small squares and create textures for every square. OpenGL is responsible for the scaling, zooming and rotating. Yes - Krita supports canvas rotation, which is especially nice for tablet users. Of course, there are complications: the HDR exposure display is written in GLSL.

For the grid and tool decorations we make good use of the extreme awesomeness of Qt. Prior to Qt 4, we had to write that stuff twice, once in OpenGL, once in QPainter, but since QPainter paints on an OpenGL widget just as easy as on any other QPaintDevice, we share the code here.

The cursor code is a bit more interesting, since we use 3D models of tools like pencils, brushes or a thumb to represent the brush engine you are using at the moment. Unfortunately, you'll only enjoy this feature if you're using a Wacom tablet that suports tilt, since by default you're looking at straight at the top of the tool, which tends to be boring.

The gradient tool preview is also implemented as a GLSL program. While it still doesn't support selections, the preview is on-canvas and in real-time - and very smooth of course.

Threading

The only place where Krita 1.6 used threading was in preparation for the preview images in the filter dialog. In Krita 2.x, threading is pervasive. This summer, Dmitry Kazakov reworked the core recomposition engine - that is, the code that takes all layers and masks and creates the final projection image - to be threaded. Threading is always complicated: many developers will maintain that a human brain cannot grasp the complexity, and I'm not sure they are wrong.

Here's Dmitry Kazakov's take on the most challenging bit of his Summer of Code project:

The most challenging part of my Summer project was the implemention of the swapper. It was really tricky, because it introduced three levels of locking in the tile manager: one for in-memory tiles store, one for swapped-out tiles store, and one more was placed inside every tile to guarantee it will not be swapped out during IO-operation accidentally. You know what it means! ;) I was fighting deadlocks and corrupted memory due to race conditions for about half a week, but I failed because I did it in an ad-hoc manner. Then I took a piece of paper, painted three wide horizontal stripes representing levels of locking and started drawing possible code paths of the data manager using vertical lines. The only rule I had to follow, the lines should have been continous. This trivial rule guaranteed to me that all the locks were taken in the same order. That was the solution!

Other places where we use threads are:

  • Loading resources such as brushes, patterns and gradients
  • Computing the brush masks
  • Applying a filter destructively (filter masks are non-destructive, but those are handled by the recomposition engine)
  • Creating the filter dialog preview images (still...)

In some cases we use ThreadWeaver here, a very impressive KDE-specific technology. Especially when applying filters, this works very well since it is a bunch of simultaneous jobs. For the image recomposition we had problems and moved to our own solution.

OpenGTL

The OpenGTL project, created by Cyrille Berger, is not Krita-specific. There are GEGL bindings, for instance, as well as Qt bindings. Basically, OpenGTL is a set of languages for mucking about with pixels. The code written in those languages is compiled using LLVM and then executed natively. Currently, Krita offers filters and colorspaces implemented using OpenGTL languages. The challenge on the Krita side is to provide the pixels for OpenGTL in as efficient a way as possible. The overall goal is to make extending Krita even easier. We used to have Ruby and Python scripting (well, it still exists, but needs maintenance), but OpenGTL has three advantages. It is:

  • Easier, because the language is specialized for pixel handling in a colorspace-independent way
  • Faster, because it's compiled to native code
  • Safer, because it cannot do anything except changing pixels

Cyrille has created the following languages:

  • OpenCTL: a clone of AmpasCTL but compatible with the GPL. It's focused on transforming the value of a single pixel. Color models and color adjustment filters are the domain of this language.
  • OpenShiva: inspired by Adobe's PixelBender, OpenShiva can work on more than one pixel at a time, applying kernel-like transformations. This is mainly useful for filters and generators.

In a very experimental phase is OpenRijn, which is a sketching language. This could be used for brush engines, for instance.

An interesting further step could be generating GPGPU instead of CPU code - and then we'd be using the graphics card again for our filters!

Conclusion

It's really nice to focus on the technical part for a while, but now it's time to remember that Krita is a product as well as a project - an application that apart from being a breeding ground for developers and an archive of algorithms and ideas is most importantly an application for artists to use. So: a nice little piece of Krita art to finish with, by NDee:

The relaunch of the KDE Commit-Digest is going well so far, and i'm fairly close to finishing the remaining features in Enzyme to make creating each issue as easy as possible. I'm also pleased to say that I seem to have just about enough volunteers for reviewing / classifying commits at the moment (don't stop volunteering though, people always drop out over time!).

However, I don't have anywhere near enough people who have offered to be editors (which involves contacting developers and working with them to create original introduction pieces, like you see above). I know this is a pressing issue in the wider kde-promo world, but I also know that there are many Digest readers out there who could help. If I had more editors, this issue would have been ready 4 days ago! This is also a direct call to KDE developers: please be pro-active and think about writing and sending me something for future Commit-Digest introductions!

Statistics

Commits 2254 by 188 developers
Open Bugs 22123
Open Wishes 16892
Bugs Opened 574 in the last 7 days
Bugs Closed 685 in the last 7 days

Commit Summary

Module Commits
/trunk/KDE
260
 
/trunk/l10n-kde4
135
 
/branches/stable
87
 
/trunk/extragear
72
 
/trunk/koffice
60
 
/trunk/l10n-support
42
 
/branches/extragear
38
 
/branches/work
37
 
/trunk/kdesupport
36
 
/trunk/playground
32
 
Files Developer Commits
205
 
Marco Martin
75
 
141
 
Volker Krause
65
 
92
 
Allen Winter
60
 
147
 
Johannes Simon
59
 
87
 
Laurent Montel
58
 
157
 
Sergio Luis Martins
56
 
218
 
Gilles Caulier
54
 
175
 
Tobias Koenig
37
 
2020
 
Alexander Potashev
34
 
102
 
Marcel Wiesweg
34
 

Internationalization (i18n) Status

Language Percentage Complete
Ukrainian (uk)
100%
 
Swedish (sv)
99%
 
Brazilian Portuguese (pt_BR)
99%
 
British English (en_GB)
97%
 
Spanish (es)
96%
 
French (fr)
92%
 
German (de)
92%
 
Low Saxon (nds)
91%
 
Dutch (nl)
90%
 
Estonian (et)
89%
 

Bug Killers

Person Bugs Closed
Christoph Feck
125
 
Myriam Schweingruber
53
 
Beat Wolf
46
 
Urs Wolfer
38
 
Oswald Buddenhagen
29
 
David Faure
21
 
Christophe Giboudeaux
17
 
mehrdad momeny gmail com
16
 
Gilles Caulier
16
 
mikko cal gmail com
15
 

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 111 selections this week

Bug Fixes

Educational

Bastian Holst committed changes in /trunk/www/sites/edu/marble:

Updated the opencyclemap files to the new tile server.
The old one may be shut off at some time.

Bastian Holst committed changes in /trunk/KDE/kdeedu/marble/src/lib:

Corrected Marble's atmosphere painting:
* We have to paint the atmosphere in any case (because we update the background, stars).
* We have to paint the atmosphere at the correct moment (between stars and ground).

Etienne Rebetez committed changes in /trunk/KDE/kdeedu/kalzium/plasmoid/applet/psePlasmoid:

fixing issues with the popupapplet.

Jasem Mutlaq committed changes in /trunk/KDE/kdeedu/kstars/kstars:

Fix INDI alignment issue and missing signal in SimClock

Graphics

Gilles Caulier committed changes in /trunk/extragear/graphics/digikam:

Fix color picker signals and slots in Curves Tool.
Reported by Thorsten Schnebeck on devel Mailling list

Diffs: 1, 2, 3, 4 Revision 1185795

KDE Base

Martin Gräßlin committed changes in /trunk/KDE/kdebase/workspace/kwin:

Make EffectFrames work with Nouveau driver.

This worksaround a problem with the nouveau driver causing the text frames to be incorrectly rendered. We need to keep the QPixmap around as long as we have a texture created from that texture.

This applies for the text and the unstyled effect frame. For the frames generated from Plasma's FrameSvgs it is not required.
Addresses freedesktop.org bug 30286.

David Faure committed changes in /branches/KDE/4.5/kdelibs/kio/kio/kdirlister.cpp:

Also dump more info when the crash from 213895 is about to happen - and make it more robust in release mode, only assert in debug mode.

This will be in 4.5.3, please paste the stderr from the app if this happens (e.g. looking in ~/.xsession-errors).

Ivan Čukić committed changes in /trunk/KDE/kdeplasma-addons/libs/lancelot-datamodels/BaseModel.cpp:
Aaron J. Seigo committed changes in /trunk/KDE/kdelibs/plasma:

handle the caching case in setImagePath properly; this is a significant increase in complexity in this rather fundamental method.

in combination with the change in Svg::setImagePath to call FrameSvg::setImagePath directly (due to an API wart i only today noticed), this has the potential to cause new issues, though it is running quite nicely on my system.

needs extensive testing, but should also hopefully take care of the remaining crash being seen related to the FrameData cache

Aaron J. Seigo committed changes in /trunk/KDE/kdebase/workspace/plasma/generic/applets/battery/battery.cpp:

check all batteries when setting the status, preventing toggling between states when there are multiple batteries

Lukáš Tinkl committed changes in /trunk/KDE/kdebase/workspace/powerdevil/daemon/backends/upower:

correctly implement remaining battery time (plus some reindent, mixing tabs and spaces is a mess)

Diffs: 1, 2, 3, 4 Revision 1185867
Rafael Fernández López committed changes in /trunk/KDE/kdelibs/solid/solid/backends/udev/udevmanager.cpp:

Add support for listing only those changes that are of interest.
Not closing the bug since I need to find out how to really list all devices in which we are interested for the UDev backend

David Faure committed changes in /trunk/KDE/kdelibs/kdecore/io/kzip.cpp:

Fix handling of large .zip files, the size determination ended up negative because of the implicit sign expansion
when doing ... | (uchar)buffer[3] << 24 (int is implicitely used).

Tested in isolation, but not with .zip files.

Raphael: please re-test and if this fixes all issues I'll backport and close the bug.

Marco Martin committed changes in /trunk/KDE/kdelibs/plasma/extenders/extendergroup.cpp:

reset the spacerWidget pointer, crash--

Björn Ruberg committed changes in /trunk/KDE/kdeplasma-addons/applets/plasmaboard:

Made the caps key a sticky key.
This will make layouts working that use the caps key as a normal modifier.
Hope that does not cause a regression for others.

FIXED-IN: 4.6

Björn Ruberg committed changes in /trunk/KDE/kdebase/workspace/kcontrol/keyboard:

Fixed sizing of applet.
It now correctly scales in the panel and on the desktop.
Text size is calculated by height or width (the smaller one) but not only by height anymore.

Björn Ruberg committed changes in /branches/KDE/4.5/kdebase/workspace/kcontrol/keyboard:

Backporting fixes from trunk.
Applet is now sized correctly (exspecially in the panel) and uses standard theme colors.

Björn Ruberg committed changes in /trunk/KDE/kdebase/workspace/kcontrol/keyboard/keyboard_applet.cpp:

Added signal to repaint applet when theme changes

Ivan Čukić committed changes in /trunk/KDE/kdebase/workspace/plasma/desktop/shell/activitymanager/activityicon.cpp:

fixed action icons layout

Ivan Čukić committed changes in /trunk/KDE/kdebase/workspace/plasma/desktop/shell/activitymanager/activityicon.cpp:

fixed mouse event icon-click detection

Pino Toscano committed changes in /branches/KDE/4.5/kdeplasma-addons/applets/rssnow/scroller.cpp:

use KToolInvocation::invokeBrowser() if you want to launch a web browser
FIXED-IN: 4.5.3

KDE-PIM

Volker Krause committed changes in /trunk/KDE/kdepim/mobile/mail/ConfigDialog.qml:

layouting fixes and workarounds, now we have a config dialog on the N900 as well

Volker Krause committed changes in /trunk/KDE/kdepim:
Volker Krause committed changes in /trunk/KDE/kdepim/runtime:

Remove the MIME type inheritance between notes and emails.
While technically using a derived format, it's something different semantically, causing all kinds of unexpected side-efects such as notes objects appearing in various places in the kmail(-mobile) UI.

Allen Winter committed changes in /branches/kdepim/enterprise/kdepim/kmail:

When DND an attachment to the desktop, make sure to give the resulting file write permission.

Part of kolab/issue3688

Allen Winter committed changes in /trunk/KDE/kdepimlibs/kcalutils:

In recurrenceString(), also print EXDATEs that are Dates, not DateTimes.
With more tests.

Office

Lassi Nieminen committed changes in /trunk/koffice/filters:

Fixed docx filter to support picture bullets.

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9 Revision 1185019
Cyrille Berger Skott committed changes in /trunk/koffice/krita/image/kis_rect_mask_generator.cpp:
Dag Andersen committed changes in /trunk/koffice/kplato:

Fix bugs in reports:
* Give access to data sources in report creator.
* Filter out resource groups in Resources model.

Johannes Simon committed changes in /trunk/koffice/plugins/chartshape/DataSet.cpp:

Add workaround for OOo.
It ignore table:cell-region-address attribute whenever an internal mable is used, it just interprets that table as consecutive data series.

Björn Breitmeyer committed changes in /trunk/koffice/filters:

removed the spreadsheet mode from the theme reader, the wrong colors in kspread came from a strange excel 2007 behavior that switches indexes for colors 0 to 1, 1 to 0, 2 to 3 and 3 to 2.

This seems to be hardcoded in excel.
Further explanation can be found as comments in the code.

Diffs: 1, 2, 3, 4 Revision 1186158
Lassi Nieminen committed changes in /trunk/koffice/filters:

Fixed pictures in xlsx files to have a graphics style.

Johannes Simon committed changes in /trunk/koffice/plugins/chartshape/DataSet.cpp:

Make bubble width relative to maximum bubble width in diagram and the maximum relative to the diagram's min(height,width), as done in OOo.

See http://qa.openoffice.org/issues/show_bug.cgi?id=64689

Johannes Simon committed changes in /trunk/koffice/plugins/chartshape/ChartShape.cpp:

Correctly save internal table.
First row always needs to be a header row, before the header row was simply empty.
Also save correct name of internal table, not just "local-table".

Johannes Simon committed changes in /trunk/koffice/plugins/chartshape/PlotArea.cpp:

Fix regression and add FIXME.
Last added odf unit test only passes with this line (not uncommented).

Alvaro Soliverez committed changes in /trunk/extragear/office/kmymoney/kmymoney/dialogs:

Show only valid payment types per transaction type when creating or editing a schedule

Features

Development Tools

Chris Burel committed changes in /trunk/KDE/kdebindings/perl/qtgui/examples:

Add tools/customcompleter

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

Educational

Jasem Mutlaq committed changes in /trunk/KDE/kdeedu/kstars/kstars:

Enable user to pre-select a port for each device in the device manager.

CCMAIL:

Niko Sams committed changes in /trunk/KDE/kdeedu/marble/src:

Implement configurable routing profiles

reviewed here: http://gitorious.org/~nsams/marble/nsams-marble/commits/configurable-routers

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 24 more) Revision 1185212
Aleix Pol Gonzalez committed changes in /trunk/KDE/kdeedu/kalgebra:

First approach for what I would like to become some day KAlgebra version for mobile devices.
There's no much stuff done yet, just the basics to make it easy to add new stuff.

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 20 more) Revision 1185648
Luca Tringali committed changes in /trunk/KDE/kdeedu/kalzium/src/calculator:

Edited the Save Plot function: now it saves the plot into a SVG file

Graphics

Nikhil Marathe committed changes in /trunk/KDE/kdegraphics/okular/ui/pageview.cpp:

More intuitive keyboard shortcuts for rotation

This patch manually assigns the accelerator for Rotate Left and Rotate Right.
The automatic acceleration sometimes assigns 'R' to Rotate Left due to it being first, which seems counter-intuitive to me.
This patch makes 'Rotate Right' as 'R' and 'Rotate Left' as 'L'.

Review request: http://svn.reviewboard.kde.org/r/5579/

Michael Georg Hansen committed changes in /branches/extragear/graphics/kipi-plugins/gpssync:

Display search results on both maps.

KDE Base

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

Add support for defining "helper protocols" (e.g. "mailto URLs should launch the executable kmailservice") using .desktop files (with a custom mimetype, x-scheme-handler/mailto, as added to shared-mime-info recently) rather than using .protocol files (which are KDE-specific).

Converted the two in KIO, but the code can still handle old-style .protocol files.
Unit-tested.

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 5 more) Revision 1184941
Alex Fiestas committed changes in /trunk/KDE/kdebase/workspace/powerdevil/daemon/backends/upower:

Added upower backend for PowerDevil 2, kbd backlight support is lacking, but upower 0.9.6+1 will has support for it, so we should wait.

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 1 more) Revision 1185337
Andrey Esin committed changes in /branches/work/~esin/choqok/plugins/imstatus:

Adding Skype support

Andrey Esin committed changes in /branches/work/~esin/choqok/branch/geolocation/choqok:

Initial support of Geolocation
- It works for Twitter
- It works only with Wi-Fi

Diffs: 1, 2, 3, 4, 5, 6, 7 Revision 1185445
Kevin Funk committed changes in /branches/work/komo/kdelibs/solid/solid/backends/wince:

Add minimal implementation of the Windows CE backend in solid.

This has been unnecessary work for me in the first place, committing it anyway so it doesn't get lost.
Maybe someone is interested and completes it.

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 2 more) Revision 1185798
Andras Mantia committed changes in /trunk/KDE/kdepim/mobile/mail:

Implement Reply Without Quoting.

Diffs: 1, 2, 3, 4 Revision 1185846
Kevin Ottens committed changes in /trunk/KDE/kdelibs/plasma:

Allow to build libplasma without KIO.
Only issue is that the copying/moving/removal of folders is defunct (so is the package install/uninstall).

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 1 more) Revision 1185865
Kevin Funk committed changes in /branches/work/komo/kdelibs/CMakeLists.txt:

Build solid on Windows CE

Kevin Funk committed changes in /branches/work/komo/kdelibs/solid/solid/backends/wince:

Introduce WinCEHelper class

David Faure committed changes in /trunk/KDE/kdebase/apps/dolphin/src/views/draganddrophelper.cpp:

Enable dropping of raw data, like one could do in KDE3.
It's actually working fine with text data for instance, only image data is still an issue due to bugs in Qt.

This will be in KDE 4.6.

Andras Mantia committed changes in /trunk/KDE/kdelibs/kdeui/dialogs:

Provide a global way to allow KDialogs being embedded in graphics view.
From now on, by default they do not get embedded.

Rationale:
1: embedding is broken as of now
2: in normal case it makes sense to dialogs appear is separate widgets.

Reviewed by dfaure.

Martin Gräßlin committed changes in /trunk/KDE/kdebase/workspace/kwin/effects:

New StartupFeedback effect

This is an OpenGL effect to replace the startup notification used by KRunner. It provides the same functionality without the need to move and shape windows and supports translucent icons.

The effect registers a manager selection which is honoured by KRunner to not start the startup notification if the effect has registered the selection.

See Review Request http://reviewboard.kde.org/r/5529/

Diffs: 1, 2, 3, 4, 5, 6 Revision 1186408
Martin Gräßlin committed changes in /trunk/KDE/kdebase/workspace/kcontrol/launch:

Reconfigure the KWin startup feedback effect on settings change.

See Review Request http://reviewboard.kde.org/r/5529/

Martin Gräßlin committed changes in /trunk/KDE/kdebase/workspace/krunner:

Interact with KWin startup feedback effect.

The kwin effect registers a manager selection when it is responsible for the startup feedback.
KRunner will not activate its startup feedback when the selection is claimed.

See also svn rev 1186408 and review request http://reviewboard.kde.org/r/5529/

Björn Ruberg committed changes in /branches/KDE/4.5/kdebase/workspace/kcontrol/keyboard/keyboard_applet.cpp:

Added signal to repaint applet when theme changes

Ivan Čukić committed changes in /trunk/KDE/kdebase:

new identicons

Diffs: 1, 2, 3, 4 Revision 1186501
Marco Martin committed changes in /trunk/KDE/kdelibs/plasma:

scroll around while dragging items on the extender, to make possible drop the item on any point

Ivan Čukić committed changes in /trunk/KDE/kdebase/workspace/plasma/desktop/shell/activitymanager:

started activity icon/name configuration panel

KDE-PIM

Andras Mantia committed changes in /trunk/KDE/kdepim/mobile/mail:

Implement Copy All Text to Clipboard action.

Diffs: 1, 2, 3, 4 Revision 1185913
Sergio Luis Martins committed changes in /trunk/KDE/kdepim/calendarviews/eventviews/agenda/agendaitem.cpp:

The alarm icon/indicator is back.

I saved some space in r973389, so it's not too cluttered, in fact agenda items are a little naked.

I think we could even re-add the recurring icon in agenda, monthview is the real problem.

Allen Winter committed changes in /branches/kdepim/enterprise/kdepim/libkcal/incidenceformatter.cpp:

add percent complete print to task invitations and support showing changed
percent completeness in updates.
kolab/issue4630

Tobias Koenig committed changes in /trunk/KDE/kdepim/mobile:

Use different colors for todo background depending on due state

Diffs: 1, 2, 3, 4, 5 Revision 1186455
Sergio Luis Martins committed changes in /trunk/KDE/kdepim/calendarsupport:

Add class to provide Undo/Redo support.

This will replace the one in korganizer because it's written with async operations in mind.

It also has less code, it's simpler, and has good error reporting, instead of just true|false.

Made room for two improvments:
- If you create an incidence and don't send invitation, then undo shouldn't ask.
- Group operations should be undone atomically, if the second change fails, the first one must be redone.

Diffs: 1, 2, 3, 4 Revision 1186505

Office

Stephane Mankowski committed changes in /trunk/extragear/office/skrooge:

FEATURE: New contextual menu in html pages for export as pdf, odt, image and copy

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 3 more) Revision 1184506
Guillaume de Bure committed changes in /trunk/extragear/office/skrooge/skgapplets/account:

More work on the plasmified account widget for the plasma dashboard. This time, clicking on the account does open a new tab containing the account's operations.

Next step, use the dataengine...

Johannes Simon committed changes in /trunk/koffice/plugins/chartshape/kdchart/src:

Implement different ways to specify marker size in KD Chart so that we can use a relative-to-diagram-size bubble size for bubble charts.

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

Networking Tools

Joris Guisson committed changes in /trunk/extragear/network/ktorrent:

Make ratio configurable at which the share ratio becomes green

User Interface

Nuno Fernades Pinheiro committed changes in /trunk/kdesupport/oxygen-icons:

new mimes

Nuno Fernades Pinheiro committed changes in /trunk/kdesupport/oxygen-icons:

new mimes

Diffs: 1, 2, 3, 4, 5 Revision 1186425
Nuno Fernades Pinheiro committed changes in /trunk/kdesupport/oxygen-icons:

new mimes only 90 to go

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 4 more) Revision 1186456
Nuno Fernades Pinheiro committed changes in /trunk/kdesupport/oxygen-icons:

new mimes only 83 to go

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

Utilities

Juan Luis Baptiste committed changes in /trunk/extragear/utils/rsibreak/src:

Added postpone break feature.

Jonathan Michael Thomas committed changes in /trunk/extragear/sysadmin/muon:

A new settings dialog baseclass + a shared Notify settings page that the manager and the updater can both use.
Give Muon Manager a config dialog using these new components

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 1 more) Revision 1186359
Jonathan Michael Thomas committed changes in /trunk/extragear/sysadmin/muon/updater:

Add a configuration dialog to the Muon Updater.
It likely won't go beyond notification settings, though.

Diffs: 1, 2, 3, 4, 5, 6 Revision 1186515
Lukas Appelhans committed changes in /trunk/playground/sysadmin/shaman/libshaman/backends/akabei:

Easier dep getting including versions

Optimization

KDE Base

Martin Gräßlin committed changes in /trunk/KDE/kdebase/workspace/kwin/effects/zoom/zoom.cpp:

Do not cause a full repaint on mouse movement when not zoomed.

KDE-PIM

Allen Winter committed changes in /branches/kdepim/enterprise/kdepim/libkcal/incidenceformatter.cpp:

changes when printing the attendees:
- in invitations, print the attendee list always
- in invitations, don't print the attendee rsvp status unless you are the organizer
- in invitations, don't print the organizer in the attendee list
- in displayView, don't print the attendee rsvp status unless you are the organizer
- in tooltips, don't print the attendee rsvp status unless you are the organizer
- factor out a new attendeeIsOrganizer() method

part of kolab/issue4578

Volker Krause committed changes in /trunk/KDE/kdepim/mobile:

Use send/save and cancel buttons that are big enough to be finger-usable and don't overflow with translated texts.

Tobias Koenig committed changes in /trunk/KDE/kdepim:

Include the 'References' header in the ENVELOPE query mode.

This allows us to use an Envelope query instead of an Headers query for the message list in kmail.
This makes loading a folder 20% faster.

Diffs: 1, 2, 3, 4 Revision 1186483
Volker Krause committed changes in /trunk/KDE/kdepim/kmail/kmkernel.cpp:

saving the configuration files once is enough

Volker Krause committed changes in /trunk/KDE/kdepim/kmail/kmreaderwin.cpp:

Avoid an extra set of config file writes on shutdown by using a queued connection here.

Volker Krause committed changes in /trunk/KDE/kdepim/messagelist/storagemodel.cpp:

reduce calls to the rather expensive stripOffPrefixes() method by half

Volker Krause committed changes in /trunk/KDE/kdepim/messagelist/storagemodel.cpp:

Don't ask for the content type header seven times in a row, once is more than enough.
Speeds up updateMessageItemData() by about 20%.

Volker Krause committed changes in /trunk/KDE/kdepimlibs/kmime:

Double the speed of Content::mainBodyPart(), which in turn speeds up updateMessageItemData() in the KMail message list by another 20%.

Volker Krause committed changes in /trunk/KDE/kdepim/messagecore/nodehelper.cpp:

Double the speed of isInvitation(), saves another few percent during message list view population in KMail.

Tobias Koenig committed changes in /trunk/KDE/kdepimlibs/kmime/kmime_util.cpp:

Reduce the amount of calls to content->contentType()

Volker Krause committed changes in /trunk/KDE/kdepim/messagelist/storagemodel.cpp:

Reduce calls to the expensive itemForRow() method by 40%, speeds up initial message list population by about 15%.

Tobias Koenig committed changes in /branches/KDE/4.5/kdepim/messagelist:

Optimize the SubjectUtils::stripOffSuffixes method

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

Office

Johannes Simon committed changes in /trunk/koffice/plugins/chartshape:

Improve CellRegion's intersection test and use it to vastly improve performance when loading large spreadsheet workbooks.

With the modification, only the chart that really uses a table is updated by a change in it, not all charts no matter what.

Johannes Simon committed changes in /trunk/koffice/plugins/chartshape/Axis.cpp:

Reduce logic to set and determine a diagram's KDChartModel considerably thanks to a comment from Sebastian.
This commit makes sure that a diagram's model is always set by doing this directly in registerDiagram().

By doing this I noticed that the d->kd*DiagramModel variable is actually redundant, as we can always get the model using d->kd*Diagram->model() and since it's now made sure that the existence of a diagram implies the existance of its model and the other way around.

Johannes Simon committed changes in /trunk/koffice/plugins/chartshape/Axis.cpp:

This is redundant with DataSet::dataValueAttributes() and has no additional effect

Utilities

Raphael Kubo da Costa committed changes in /trunk/KDE/kdeutils/ark/plugins/libarchive/libarchivehandler.cpp:

Manually call lstat() and pass the stat struct to libarchive.

archive_read_disk_entry_from_file() calls lstat() itself if it has been compiled with HAVE_LSTAT and it is set not to follow symlinks. These conditions do not always hold, so it is better to call lstat() ourselves to make sure symlinks are not followed.

Other

Development Tools

Peter Penz committed changes in /trunk/KDE/kdesdk/dolphin-plugins/git:

Apply initial version of the Git-plugin written by Sebastian Dörner and Johannes Steffen from http://gitorious.org/dolphin-plugins-git" target="_blank">http://gitorious.org/dolphin-plugins-git to kdesdk/dolphin-plugins/git.

The plugin will still be maintained at http://gitorious.org/dolphin-plugins-git" target="_blank">http://gitorious.org/dolphin-plugins-git until kdesdk has been switched to Git.

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

Educational

Etienne Rebetez committed changes in /trunk/KDE/kdeedu/kalzium/plasmoid/applet:

adding "setAssociatedApplication("kalzium");" for the kalzium plasmoids.

Diffs: 1, 2, 3, 4 Revision 1186473

KDE Base

Oswald Buddenhagen committed changes in /trunk/KDE/kdebase/workspace/libs/kdm/kgreet_winbind.cpp:

auto-add default domain to static domain list

this doesn't make much sense if a static domain list is provided anyway, as then the default domain should be listed there already.

however, if the user relies on the dynamic domain listing, needing to explicitly put the default domain into the otherwise empty static domain list is a bit counterintuitive.

the alternative would have been making the default domain work with the dynamically fetched domain list, but that kind of makes no sense, as we apparently know that domain, so it can be made static just as well.

Martin Gräßlin committed changes in /trunk/KDE/kdebase/workspace/kwin/compositingprefs.cpp:

Print useful version information for nouveau.

Unknown, unknown just looks bad given that we will have more nouveau users in future.
Neither the vendor, nor the renderer nor the version string contains a version number.
The information most close to a version number is the gallium number.

Other possible number would be OpenGL version or Mesa version in the GL version string, but those information is not used in other Mesa drivers.

Jonathan Riddell committed changes in /trunk/KDE/kdebase/runtime/localization/currency/inr.desktop:

Set new Rupee symbol as default for Indian Rupee
This requires a font which includes the symbol, e.g. Ubuntu Font or DejaVu 2.32
Patch by Rohan Garg.

Marco Martin committed changes in /trunk/KDE/kdelibs/plasma/extenders/extendergroup.cpp:

remove the spacer widget from groups on a dragLeaveEvent

KDE-PIM

Volker Krause committed changes in /trunk/KDE/kdepim/mobile/lib:

Use the same border image styling used in the style sheet for native widgets.
Also, support icons on the button.

Diffs: 1, 2, 3, 4, 5, 6, 7 Revision 1186181
Volker Krause committed changes in /trunk:

Recover and update some of the Akonadi documentation that was forgotten in kdepim/runtime (former kdepim/akonadi, the place where it all started) when the various components were moved out of there.

Sergio Luis Martins committed changes in /trunk/KDE/kdepim/calendarsupport/next:

Created the "next" sub-folder, where calendarsupport's clean/rewritten code will go into.

Don't add anything in here without unit tests.

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

Office

Jarosław Staniek committed changes in /branches/work/koffice-essen/tools/f-office:

KOffice UI Abstraction enables implementing various UIs on top of KOffice without in-depth knowledge of KOffice MVC APIs.
It's in par with efforts of making KOffice not dependent on QWidget-based interfaces (currently in koffice-essen branch).

It's effect of rather careful code cleanup and refactoring.
Published for review as early as possible.
The target is 2.4.

Reviewed in http://svn.reviewboard.kde.org/r/5615/

Diffs: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (+ 6 more) Revision 1185816
Stephane Mankowski committed changes in /trunk/extragear/office/skrooge:

Better detection of double during imports.
Better management of transactions.

Diffs: 1, 2, 3, 4, 5, 6, 7, 8 Revision 1186467
Johannes Simon committed changes in /trunk/koffice/plugins/chartshape:

Do not draw connecting lines in a bubble chart

Diffs: 1, 2, 3, 4, 5 Revision 1186492
Johannes Simon committed changes in /trunk/koffice/plugins/chartshape:

Remove choices "use first row/col as label" from chart table editor.
Unchecking this makes no sense as there would be no way anymore to modify labels. If they're *really* not needed, the first row and column can simply be left as is and ignored by the user.

This as a nice side-effect makes the chart table editor a bit less wide.

Diffs: 1, 2, 3, 4 Revision 1186493
Johannes Simon committed changes in /trunk/koffice/plugins/chartshape/tests/TestProxyModel.cpp:

Adjust ChartProxyModel test to new behaviour for bubble chart data

Other

Mehrdad Momeny committed changes in /trunk:

Moving YFrog plugin to playground due its functionality stopped and should been fixed to work again