26 #include <QtCore/QDir>
27 #include <QtCore/QFileInfo>
41 KDesktopFilePrivate(
const char * resourceType,
const QString &fileName);
45 KDesktopFilePrivate::KDesktopFilePrivate(
const char * resourceType,
const QString &fileName)
49 bDynamicBackend =
false;
50 changeFileName(fileName, resourceType);
54 :
KConfig(*new KDesktopFilePrivate(resourceType, fileName))
62 :
KConfig(*new KDesktopFilePrivate(
"apps", fileName))
76 return d->desktopGroup;
82 if (path.endsWith(QLatin1String(
".directory")))
85 if (!QDir::isRelativePath(local))
91 if (QDir::isRelativePath(local))
100 if (!QDir::isRelativePath(local))
104 local = path.mid(path.lastIndexOf(QLatin1Char(
'/'))+1);
111 if (QDir::isRelativePath(path))
120 if (!QDir::isRelativePath(local))
123 local = path.mid(path.lastIndexOf(QLatin1Char(
'/'))+1);
133 return (path.length() > 8
134 && path.endsWith(QLatin1String(
".desktop")));
142 if (QDir::isRelativePath(path))
156 if (realPath.startsWith(prefix))
162 kWarning() <<
"Access to '" << path <<
"' denied because of 'run_desktop_files' restriction." << endl;
168 QFileInfo entryInfo( path );
169 if (entryInfo.isExecutable() || entryInfo.ownerId() == 0)
172 kWarning() <<
"Access to '" << path <<
"' denied, not owned by root, executable flag not set." << endl;
179 return d->desktopGroup.readEntry(
"Type",
QString());
185 return d->desktopGroup.readEntry(
"Icon",
QString());
191 return d->desktopGroup.readEntry(
"Name",
QString());
197 return d->desktopGroup.readEntry(
"Comment",
QString());
203 return d->desktopGroup.readEntry(
"GenericName",
QString());
211 return d->desktopGroup.readEntry(
"Path",
QString());
217 return d->desktopGroup.readEntry(
"Dev",
QString());
224 return d->desktopGroup.readEntry(
"MountPoint",
QString());
228 if ( !url.isEmpty() && !QDir::isRelativePath(url) )
240 return d->desktopGroup.readXdgListEntry(
"Actions");
245 return KConfigGroup(
this, QLatin1String(
"Desktop Action ") + group);
255 return hasGroup(
QString(QLatin1String(
"Desktop Action ") + group).toUtf8().constData());
260 return readType() == QLatin1String(
"Link");
265 return readType() == QLatin1String(
"Application");
270 return readType() == QLatin1String(
"MimeType");
275 return readType() == QLatin1String(
"FSDevice");
286 if (!QDir::isRelativePath(te)) {
294 .split(QLatin1Char(KPATH_SEPARATOR), QString::SkipEmptyParts);
295 QStringList::ConstIterator it(dirs.begin());
297 for (; it != dirs.end(); ++it) {
298 QString fName = *it + QLatin1Char(KDIR_SEPARATOR) + te;
313 for(QStringList::ConstIterator it = list.begin();
323 bool su = d->desktopGroup.readEntry(
"X-KDE-SubstituteUID",
false);
326 QString user = d->desktopGroup.readEntry(
"X-KDE-Username",
QString());
328 user = QString::fromLocal8Bit(qgetenv(
"ADMIN_ACCOUNT"));
330 user = QString::fromLatin1(
"root");
353 return d->desktopGroup.readEntry(
"SortOrder",
QStringList());
363 if(d->desktopGroup.hasKey(
"DocPath" ))
364 return d->desktopGroup.readPathEntry(
"DocPath",
QString() );
365 return d->desktopGroup.readPathEntry(
"X-DocPath",
QString() );
379 return d->resourceType;
390 if (d->desktopGroup.readEntry(
"NoDisplay",
false)) {
393 if (d->desktopGroup.hasKey(
"OnlyShowIn")) {
394 if (!d->desktopGroup.readXdgListEntry(
"OnlyShowIn").contains(QLatin1String(
"KDE")))
397 if (d->desktopGroup.hasKey(
"NotShowIn")) {
398 if (d->desktopGroup.readXdgListEntry(
"NotShowIn").contains(QLatin1String(
"KDE")))