Review Request 109611: Add option to show "Recently Installed" apps in kickoff plasmoid

David Faure faure at kde.org
Tue Apr 16 15:45:02 BST 2013


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://git.reviewboard.kde.org/r/109611/#review31163
-----------------------------------------------------------



plasma/desktop/applets/kickoff/core/applicationmodel.h
<http://git.reviewboard.kde.org/r/109611/#comment23185>

    Why is this a slot? It doesn't seem to be used as one?  -> make it private.



plasma/desktop/applets/kickoff/core/applicationmodel.h
<http://git.reviewboard.kde.org/r/109611/#comment23167>

    const QString &
    
    Also, don't name this the same as the slot without argument, it's really confusing.
    See below for a naming suggestion.



plasma/desktop/applets/kickoff/core/applicationmodel.cpp
<http://git.reviewboard.kde.org/r/109611/#comment23168>

    begin -> constBegin, end -> constEnd, to avoid detaching.
    
    Or use Q_FOREACH, more readable.



plasma/desktop/applets/kickoff/core/applicationmodel.cpp
<http://git.reviewboard.kde.org/r/109611/#comment23170>

    foo.count() -> !foo.isEmpty()



plasma/desktop/applets/kickoff/core/applicationmodel.cpp
<http://git.reviewboard.kde.org/r/109611/#comment23169>

    This line serves no purpose (I presume the string is already empty, in the AppNode ctor). Same for other similar lines.



plasma/desktop/applets/kickoff/core/applicationmodel.cpp
<http://git.reviewboard.kde.org/r/109611/#comment23171>

    remove trailing space



plasma/desktop/applets/kickoff/core/applicationmodel.cpp
<http://git.reviewboard.kde.org/r/109611/#comment23172>

    d->seenPrograms.isEmpty()



plasma/desktop/applets/kickoff/core/applicationmodel.cpp
<http://git.reviewboard.kde.org/r/109611/#comment23173>

    QString() for a null string.
    
    QString::null is a Qt3 leftover.
    
    OK, so clearly this is a helper for the slot, separated so it can be recursive. So call this createNewProgramListForPath(), or createNewProgramListHelper()?



plasma/desktop/applets/kickoff/core/applicationmodel.cpp
<http://git.reviewboard.kde.org/r/109611/#comment23174>

    What is "-" for?



plasma/desktop/applets/kickoff/core/applicationmodel.cpp
<http://git.reviewboard.kde.org/r/109611/#comment23183>

    Can it really be null? Did you see this elsewhere, or did you add it "just in case"?
    It seems unnecessary to me.



plasma/desktop/applets/kickoff/core/applicationmodel.cpp
<http://git.reviewboard.kde.org/r/109611/#comment23177>

    |= is a bitwise operator, for booleans you have to write a = foo || a (in this order to avoid shortcut-evaluation).
    In this particular case it would be more readable to write
      if (createNewProgramList(...))
         seenProgramsChanged = true;
    
    (shouldn't this variable be named seenNewPrograms, rather?)



plasma/desktop/applets/kickoff/core/applicationmodel.cpp
<http://git.reviewboard.kde.org/r/109611/#comment23176>

    Use QString::remove instead.
    
    But is there any purpose in removing the .desktop, actually? It's part of the storageId, which is the best key to use, I see no reason to do extra string manipulation just to shorten it.



plasma/desktop/applets/kickoff/core/applicationmodel.cpp
<http://git.reviewboard.kde.org/r/109611/#comment23178>

    This whole for() loop could be replaced with something like
     index = d->seenPrograms.indexOf(shortStorageId);
    no?



plasma/desktop/applets/kickoff/core/applicationmodel.cpp
<http://git.reviewboard.kde.org/r/109611/#comment23175>

    Why not just use QDate::currentDate here, and remove the member variable?
    
    If this was due to performance, a local variable is enough, IMHO, rather than polluting the class with an extra member var.



plasma/desktop/applets/kickoff/core/applicationmodel.cpp
<http://git.reviewboard.kde.org/r/109611/#comment23179>

    If you don't use the resulting index, then  contains() is faster than indexOf().



plasma/desktop/applets/kickoff/core/applicationmodel.cpp
<http://git.reviewboard.kde.org/r/109611/#comment23180>

    This is really an unexpected data structure.
    It took me some time to figure out that it's a list where odd and even items don't have the same meaning:
    (storageId1, date1, storageId2, date2, ...)
    
    This requires some reverse-engineering skills to understand.
    
    I would have suggested the obvious QHash<QString, QDate>, but I see why you did this: in order to save the list into KConfig.
    
    Well, I would have done the conversion from/to QStringList at the time of the readEntry/writeEntry, but I would have used the QHash for everything else, it makes algorithms much easier to write.
    
    It makes things a bit faster too, since this code (create...) is going to be called every time a desktop file is added/modified, while the KConfig code is only called once on startup and once every time a new desktop file is installed. (but not when desktop files are updated, e.g. make install with new translations).
    
    The indexOf() that I suggested (linear search in the large list of all desktop files) would become a QHash lookup. Major performance improvement. 
    
    Maybe the storage to KConfig should be a separate group in fact, rather than one humongous value. It must be huge, no? Two strings per desktop file, all concatenated into one big string... I think I would use a group, and just write
    entries into it like desktopId=date. By iterating over the QHash, obviously.
    And to avoid bloating up plasmarc, I would even move this to a separate config file.
    If parsing the file takes too much time, we could even replace it with a binary cache one day.
    



plasma/desktop/applets/kickoff/core/applicationmodel.cpp
<http://git.reviewboard.kde.org/r/109611/#comment23181>

    see above.



plasma/desktop/applets/kickoff/core/applicationmodel.cpp
<http://git.reviewboard.kde.org/r/109611/#comment23184>

    Space before and after operators (here and on many other lines).



plasma/desktop/applets/kickoff/simpleapplet/simpleapplet.cpp
<http://git.reviewboard.kde.org/r/109611/#comment23182>

    Please open your own patch in reviewboard to see trailing slashes, or configure your editor to remove them (on lines that you actually add/modify). At least QtCreator can do this, maybe kdevelop too.


- David Faure


On April 2, 2013, 6:07 p.m., Wolfgang Bauer wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://git.reviewboard.kde.org/r/109611/
> -----------------------------------------------------------
> 
> (Updated April 2, 2013, 6:07 p.m.)
> 
> 
> Review request for kde-workspace.
> 
> 
> Description
> -------
> 
> (This comes from a patch included in openSUSE)
> 
> This patch makes kickoff remember all the .desktop files it sees (in kickoffrc). 
> New ones are additionally shown in a seperate submenu named "Recently Installed" (for 3 days).
> 
> This can be toggled on and off in the plasmoid's settings.
> 
> 
> This addresses bug 316916.
>     http://bugs.kde.org/show_bug.cgi?id=316916
> 
> 
> Diffs
> -----
> 
>   plasma/desktop/applets/kickoff/applet/applet.cpp a6f7379 
>   plasma/desktop/applets/kickoff/applet/kickoffConfig.ui 8664ac8 
>   plasma/desktop/applets/kickoff/core/applicationmodel.h f0f8872 
>   plasma/desktop/applets/kickoff/core/applicationmodel.cpp 57b6ba5 
>   plasma/desktop/applets/kickoff/simpleapplet/simpleapplet.cpp 28fba18 
>   plasma/desktop/applets/kickoff/ui/launcher.h 2a234c3 
>   plasma/desktop/applets/kickoff/ui/launcher.cpp 4425bcc 
> 
> Diff: http://git.reviewboard.kde.org/r/109611/diff/
> 
> 
> Testing
> -------
> 
> Created a new .desktop file in ~/.local/share/applications, ran kbuildsycoca4 and the menu "Recently Installed" appeared with this entry.
> After logout/login this is still present.
> Deleted the .desktop file again, ran kbuildsycoca4 and the menu "Recently Installed" disappeared again.
> 
> I have been using the (vanilla KDE) kickoff applet with this patch for about a week now.
> 
> Also this patch is already part of openSUSE for several years...
> 
> 
> File Attachments
> ----------------
> 
> Settings dialog (kickoff style) with patch
>   http://git.reviewboard.kde.org/media/uploaded/files/2013/04/02/kickoff-settings.png
> Plasmoid (kickoff style) showing the "Recently Installed" submenu
>   http://git.reviewboard.kde.org/media/uploaded/files/2013/04/02/kickoff.png
> Settings dialog (classic style) with patch
>   http://git.reviewboard.kde.org/media/uploaded/files/2013/04/02/classic-settings.png
> Plasmoid (classic style) showing the "Recently Installed" submenu
>   http://git.reviewboard.kde.org/media/uploaded/files/2013/04/02/classic.png
> 
> 
> Thanks,
> 
> Wolfgang Bauer
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20130416/7e9d0ee8/attachment.htm>


More information about the kde-core-devel mailing list