summaryrefslogtreecommitdiffstats
path: root/kfile-plugins/desktop
diff options
context:
space:
mode:
Diffstat (limited to 'kfile-plugins/desktop')
-rw-r--r--kfile-plugins/desktop/Makefile.am22
-rw-r--r--kfile-plugins/desktop/kfile_desktop.cpp128
-rw-r--r--kfile-plugins/desktop/kfile_desktop.desktop68
-rw-r--r--kfile-plugins/desktop/kfile_desktop.h39
4 files changed, 257 insertions, 0 deletions
diff --git a/kfile-plugins/desktop/Makefile.am b/kfile-plugins/desktop/Makefile.am
new file mode 100644
index 0000000..4fdfa7f
--- /dev/null
+++ b/kfile-plugins/desktop/Makefile.am
@@ -0,0 +1,22 @@
+## Makefile.am for .desktop file meta info plugin
+
+# set the include path for X, qt and KDE
+INCLUDES = $(all_includes)
+
+# these are the headers for your project
+noinst_HEADERS = kfile_desktop.h
+
+kde_module_LTLIBRARIES = kfile_desktop.la
+
+kfile_desktop_la_SOURCES = kfile_desktop.cpp
+kfile_desktop_la_LDFLAGS = $(all_libraries) -module $(KDE_PLUGIN)
+kfile_desktop_la_LIBADD = $(LIB_KIO)
+
+# let automoc handle all of the meta source files (moc)
+METASOURCES = AUTO
+
+messages:
+ $(XGETTEXT) *.cpp -o $(podir)/kfile_desktop.pot
+
+services_DATA = kfile_desktop.desktop
+servicesdir = $(kde_servicesdir)
diff --git a/kfile-plugins/desktop/kfile_desktop.cpp b/kfile-plugins/desktop/kfile_desktop.cpp
new file mode 100644
index 0000000..3a78dbc
--- /dev/null
+++ b/kfile-plugins/desktop/kfile_desktop.cpp
@@ -0,0 +1,128 @@
+/* This file is part of the KDE project
+ * Copyright (C) 2002 Rolf Magnus <ramagnus@kde.org>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation version 2.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "kfile_desktop.h"
+
+#include <kurl.h>
+#include <klocale.h>
+#include <kgenericfactory.h>
+#include <kdebug.h>
+#include <kdesktopfile.h>
+#include <kmimetype.h>
+
+typedef KGenericFactory<KDotDesktopPlugin> DotDesktopFactory;
+
+K_EXPORT_COMPONENT_FACTORY(kfile_desktop, DotDesktopFactory("kfile_desktop"))
+
+KDotDesktopPlugin::KDotDesktopPlugin(QObject *parent, const char *name,
+ const QStringList &preferredItems)
+ : KFilePlugin(parent, name, preferredItems)
+{
+ kdDebug(7034) << ".desktop plugin\n";
+
+ KFileMimeTypeInfo* info;
+ KFileMimeTypeInfo::GroupInfo* group;
+ KFileMimeTypeInfo::ItemInfo* item;
+
+ info = addMimeTypeInfo("application/x-desktop");
+ group = addGroupInfo(info, "General", i18n("General"));
+
+ item = addItemInfo(group, "Name", i18n("Name"), QVariant::String);
+ setHint(item, KFileMimeTypeInfo::Name);
+ item = addItemInfo(group, "Comment", i18n("Comment"), QVariant::String);
+ setHint(item, KFileMimeTypeInfo::Description);
+
+ addItemInfo(group, "Type", i18n("Type"), QVariant::String);
+
+ addItemInfo(group, "Device", i18n("Device"), QVariant::String);
+ addItemInfo(group, "Mount Point", i18n("Mount Point"), QVariant::String);
+ addItemInfo(group, "File System", i18n("File System"), QVariant::String);
+ addItemInfo(group, "Writable", i18n("Writable"), QVariant::Bool);
+
+ addItemInfo(group, "File Type", i18n("File Type"), QVariant::String);
+ addItemInfo(group, "Service Type", i18n("Service Type"), QVariant::String);
+ addItemInfo(group, "Preferred Items", i18n("Preferred Items"), QVariant::String);
+ addItemInfo(group, "Link To", i18n("Link To"), QVariant::String);
+}
+
+bool KDotDesktopPlugin::readInfo( KFileMetaInfo& info, uint )
+{
+ if ( info.path().isEmpty() ) // remote file
+ return false;
+
+ KDesktopFile file(info.path(), true);
+
+ QString s;
+
+ KFileMetaInfoGroup group = appendGroup(info, "General");
+
+ s = file.readName();
+ if (!s.isEmpty()) appendItem(group, "Name", s);
+
+ s = file.readComment();
+ if (!s.isEmpty()) appendItem(group, "Comment", s);
+
+ QString type = file.readType();
+ if (type == "FSDevice")
+ {
+ appendItem(group, "Type", i18n("Device"));
+
+ s = file.readDevice();
+ if (!s.isEmpty()) appendItem(group, "Device", s);
+
+ s = file.readEntry("MountPoint");
+ if (!s.isEmpty()) appendItem(group, "Mount Point", s);
+
+ s = i18n(file.readEntry("FSType").local8Bit());
+ if (!s.isEmpty()) appendItem(group, "File System", s);
+
+ appendItem(group, "Writable",
+ QVariant(!file.readBoolEntry("ReadOnly", true), 42));
+
+ }
+ else if (type == "Service")
+ {
+ appendItem(group, "Type", i18n("Service"));
+
+ s = file.readEntry("MimeType");
+ if (!s.isEmpty())
+ {
+ KMimeType::Ptr mt = KMimeType::mimeType(s);
+ appendItem(group, "File Type", mt->comment());
+ }
+
+ QString sType = file.readEntry("ServiceTypes");
+ appendItem(group, "Service Type", sType);
+
+ if (sType == "KFilePlugin")
+ {
+ QStringList preferred = file.readListEntry("PreferredItems");
+ appendItem(group, "Preferred Items", preferred);
+ }
+ }
+ else if (type == "Link")
+ {
+ QString url = file.readPathEntry("URL");
+ appendItem(group, "Link To", url);
+ }
+
+ return true;
+}
+
+#include "kfile_desktop.moc"
diff --git a/kfile-plugins/desktop/kfile_desktop.desktop b/kfile-plugins/desktop/kfile_desktop.desktop
new file mode 100644
index 0000000..4bcb494
--- /dev/null
+++ b/kfile-plugins/desktop/kfile_desktop.desktop
@@ -0,0 +1,68 @@
+[Desktop Entry]
+Type=Service
+Name=Desktop Entry Info
+Name[af]=Werkskerm Inskrywing Inligting
+Name[ar]=معلومات مدخل سطح المكتب
+Name[az]=Masa Üstü Girişi Mə'lumatı
+Name[bg]=Информация за файл Desktop
+Name[br]=Titouroù diwar-benn ar vouetadur burev
+Name[bs]=Informacije o desktop stavci
+Name[ca]=Informació de l'entrada a l'escriptori
+Name[cs]=Info o položce pracovní plochy
+Name[cy]=Gwybodaeth Cofnod Penbwrdd
+Name[da]=Information om desktopindgang
+Name[de]=Information zum Arbeitsflächeneintrag
+Name[el]=Πληροφορίες καταχώρησης επιφάνειας εργασίας
+Name[eo]=Tabula ero informo
+Name[es]=Información de la entrada del escritorio
+Name[et]=Töölaua kirje info
+Name[eu]=Mahaigainaren sarreraren informazioa
+Name[fa]=اطلاعات مدخل رومیزی
+Name[fi]=Työpöytätietueen tiedot
+Name[fo]=Upplýsingar um inngang á skriviborði
+Name[fr]=Informations sur l'entrée du bureau
+Name[fy]=Buroblêdyngong-ynformaasje
+Name[gl]=Información do Campo Desktop
+Name[he]=מידע רשומת שולחן עבודה
+Name[hi]=डेस्कटॉप एन्ट्री जानकारी
+Name[hr]=Podaci o stavki radne površine
+Name[hu]=Információ a munkaasztali bejegyzésekről
+Name[is]=Upplýsingar un skjáborðsfærslu
+Name[it]=Informazioni sulle voci Desktop
+Name[ja]=デスクトップエントリ情報
+Name[ka]=სამუშაო მაგიდის ჩანაწერის ინფორმაცია
+Name[kk]=.desktop жазуының мәліметі
+Name[km]=ព័ត៌មាន​ធាតុ​ផ្ទៃ​តុ
+Name[lt]=Darbastalio įrašo informacija
+Name[mk]=Информации за елемент од работната околина
+Name[ms]=Maklumat Entri Desktop
+Name[nb]=Informasjon om skrivebordsoppføring
+Name[nds]=Schriefdischindrag-Informatschonen
+Name[ne]=डेस्कटप प्रविष्टि सूचना
+Name[nl]=Bureaubladingang-informatie
+Name[nn]=Informasjon om skrivebordsoppføring
+Name[nso]=Tshedimoso Tsenelo ya Desktop
+Name[pa]=ਵੇਹੜਾ ਇੰਦਰਾਜ਼ ਜਾਣਕਾਰੀ
+Name[pl]=Informacja o plikach Desktop
+Name[pt]=Informação do Campo do 'Desktop'
+Name[pt_BR]=Informações sobre a entrada desktop
+Name[ro]=Informaţii înregistrare ecran
+Name[ru]=Информация об элементе .desktop
+Name[sk]=Informácie o položke pracovnej plochy
+Name[sl]=Informacije o vnosu namizja
+Name[sr]=Информације о уносу на радној површини
+Name[sr@Latn]=Informacije o unosu na radnoj površini
+Name[sv]=Information om skrivbordsfil
+Name[ta]=மேல்மேசை உள்ளிடு தகவல்
+Name[tg]=Ахборот дар бораи ҷузъи мизи корӣ
+Name[th]=ข้อมูลรายการพื้นที่ทำงาน
+Name[tr]=Masaüstü Girdi Bilgisi
+Name[uk]=Інформація про елемент стільниці
+Name[vi]=Thông tin mục nhập môi trường
+Name[xh]=Ungeniso Lolwazi lwe Desktop
+Name[zh_CN]=桌面项目信息
+Name[zh_TW]=桌面項目資訊
+ServiceTypes=KFilePlugin
+X-KDE-Library=kfile_desktop
+MimeType=application/x-desktop
+PreferredItems=Name,Comment,Type,Service Type
diff --git a/kfile-plugins/desktop/kfile_desktop.h b/kfile-plugins/desktop/kfile_desktop.h
new file mode 100644
index 0000000..1001e22
--- /dev/null
+++ b/kfile-plugins/desktop/kfile_desktop.h
@@ -0,0 +1,39 @@
+/* This file is part of the KDE project
+ * Copyright (C) 2002 Rolf Magnus <ramagnus@kde.org>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation version 2.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef __KFILE_DESKTOP_H__
+#define __KFILE_DESKTOP_H__
+
+#include <kfilemetainfo.h>
+#include <kurl.h>
+
+class QStringList;
+
+class KDotDesktopPlugin: public KFilePlugin
+{
+ Q_OBJECT
+
+public:
+ KDotDesktopPlugin( QObject *parent, const char *name,
+ const QStringList& args );
+
+ virtual bool readInfo ( KFileMetaInfo& info, uint what );
+};
+
+#endif