1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
app executable
man pages
known/found config files (eg kde rc files, /etc/, /usr/local/etc)
folders in home dir?
later:
if app is running, known network connections?
files referenced in man pages
use desktop files where possible
create and cache desktop files?
for kde apps:
apps - Applications menu (.desktop files).
config - Configuration files.
data - Where applications store data.
exe - Executables in $prefix/bin. findExe() for a function that takes $PATH into account.
mime - Mime types.
tmp - Temporary files (specific for both current host and current user)
socket - UNIX Sockets (specific for both current host and current user)
use
#include <kservice.h>
#include <kservicegroup.h>
KService::Ptr service = KService::serviceByDesktopName( url.fileName() );
if (service && service->isValid()) {
// KURL newUrl;
// newUrl.setPath(locate("apps", service->desktopEntryPath()));
// createFileEntry(entry, service->name(), newUrl, "application/x-desktop", service->icon());
createFileEntry(entry, service->name(), url.url(1)+service->desktopEntryName(),
"application/x-desktop", service->icon(), locate("apps", service->desktopEntryPath()) );
overlay:
// Not using KIconEffect::overlay as that requires the same size
// for the icon and the overlay, also the overlay definately doesn't
// have a more that one-bit alpha channel here
QPixmap overlay( locate ( "icon", KMimeType::favIconForURL( m_filterData->uri() ) + ".png" ) );
if ( !overlay.isNull() )
{
int x = icon.width() - overlay.width();
int y = icon.height() - overlay.height();
if ( icon.mask() )
{
QBitmap mask = *icon.mask();
bitBlt( &mask, x, y,
overlay.mask() ? const_cast<QBitmap *>(overlay.mask()) : &overlay,
0, 0, overlay.width(), overlay.height(),
overlay.mask() ? OrROP : SetROP );
icon.setMask(mask);
}
bitBlt( &icon, x, y, &overlay );
}
|