Port KAnimatedSystemTray into KSystemTray

Aaron J. Seigo aseigo at kde.org
Sat Sep 13 17:15:05 BST 2008

On Saturday 13 September 2008, Lukas Appelhans wrote:
> Oh sorry wrong patch


suggestion: remove isPlaying()

rationale: isPlaying() can be retrieved from the movie object, and only makes 
sense for icons with movies (so it's not a general purpose method) ... perhaps 
that should be something the application using it should handle then. it's a 
one liner, so isn't a big deal: if (icon->movie() && icon->movie()->state() == 

suggestion: use setMovie in the constructor rather than pass the movie into 
the private class

rationale: setMovie connects the movie's frameChanged signal, sets the cache 
mode, etc. this doesn't happen when passing the movie into the construtor! so 
either this code would need to be duplicated (not good =) or else just use 
setMovie in the KSystemTrayIcon constructor that takes a QMovie*

suggestion: reparent the movie to the tray icon

rationale: instead of deleting the movie member directly, reparent it in 
setMovie: movie->setParent(this); not only does this make the memory 
management a bit easier (less code), this will prevent crashes where people do 
something like:

new KSystemTrayIcon(new QMovie(pathToMovie, someObject), this);

and then later delete someObject, causing the movie to be deleted as well 
which would then lead to a crash in KSystemTrayIcon

suggestion: make slotNewFrame a Q_PRIVATE_SLOT, move to private class

rationale: avoid poluting the public API with private symbols

suggestion: (this is a minor one =) use the kdelibs coding style

rationale: we have a style guide for a reason =) mostly just be sure to use 
braces around even single liners, e.g.:

+    if (d->movie->state() == QMovie::Running)
+        return true;
+    else
+        return false;

should be:

+    if (d->movie->state() == QMovie::Running) {
+        return true;
+    } else {
+        return false;
+    }

there are some other bits of whitespace here and there, but i don't want to 
get too picky here ;)

Aaron J. Seigo
humru othro a kohnu se
GPG Fingerprint: 8B8B 2209 0C6F 7C47 B1EA  EE75 D6B7 2EB1 A7F1 DB43

KDE core developer sponsored by Trolltech

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 197 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20080913/7d91ac25/attachment.sig>

More information about the kde-core-devel mailing list