summaryrefslogtreecommitdiffstats
path: root/kfile-plugins
diff options
context:
space:
mode:
Diffstat (limited to 'kfile-plugins')
-rw-r--r--kfile-plugins/Makefile.am6
-rw-r--r--kfile-plugins/RETURNED_ITEMS12
-rw-r--r--kfile-plugins/ics/Makefile.am24
-rw-r--r--kfile-plugins/ics/kfile_ics.cpp96
-rw-r--r--kfile-plugins/ics/kfile_ics.desktop57
-rw-r--r--kfile-plugins/ics/kfile_ics.h36
-rw-r--r--kfile-plugins/palm-databases/Makefile.am22
-rw-r--r--kfile-plugins/palm-databases/kfile_palm.cpp121
-rw-r--r--kfile-plugins/palm-databases/kfile_palm.desktop60
-rw-r--r--kfile-plugins/palm-databases/kfile_palm.h40
-rw-r--r--kfile-plugins/rfc822/Makefile.am22
-rw-r--r--kfile-plugins/rfc822/RETURNED_ITEMS14
-rw-r--r--kfile-plugins/rfc822/kfile_rfc822.cpp161
-rw-r--r--kfile-plugins/rfc822/kfile_rfc822.desktop63
-rw-r--r--kfile-plugins/rfc822/kfile_rfc822.h37
-rw-r--r--kfile-plugins/vcf/Makefile.am22
-rw-r--r--kfile-plugins/vcf/kfile_vcf.cpp100
-rw-r--r--kfile-plugins/vcf/kfile_vcf.desktop66
-rw-r--r--kfile-plugins/vcf/kfile_vcf.h37
19 files changed, 996 insertions, 0 deletions
diff --git a/kfile-plugins/Makefile.am b/kfile-plugins/Makefile.am
new file mode 100644
index 000000000..7ebdda704
--- /dev/null
+++ b/kfile-plugins/Makefile.am
@@ -0,0 +1,6 @@
+if compile_kpilot
+PILOTPLUGIN = palm-databases
+endif
+
+SUBDIRS=vcf ics $(PILOTPLUGIN)
+
diff --git a/kfile-plugins/RETURNED_ITEMS b/kfile-plugins/RETURNED_ITEMS
new file mode 100644
index 000000000..9985e36db
--- /dev/null
+++ b/kfile-plugins/RETURNED_ITEMS
@@ -0,0 +1,12 @@
+If you make a new plugin, please add the list of returned items to this list.
+
+
+vcf plugin:
+===========
+
+type key W/A details
+------------------------------------------------------------------------
+String Name -/- Name of person
+String Email -/- Email address
+
+
diff --git a/kfile-plugins/ics/Makefile.am b/kfile-plugins/ics/Makefile.am
new file mode 100644
index 000000000..7ff0281c6
--- /dev/null
+++ b/kfile-plugins/ics/Makefile.am
@@ -0,0 +1,24 @@
+# Makefile.am for ics file meta info plugin
+
+# set the include path for X, kdepim, qt and KDE
+INCLUDES = \
+ -I$(top_srcdir) \
+ $(all_includes)
+
+# these are the headers for your project
+noinst_HEADERS = kfile_ics.h
+
+kde_module_LTLIBRARIES = kfile_ics.la
+
+kfile_ics_la_SOURCES = kfile_ics.cpp
+kfile_ics_la_LDFLAGS = $(all_libraries) -module $(KDE_PLUGIN)
+kfile_ics_la_LIBADD = $(top_builddir)/libkcal/libkcal.la $(LIB_KSYCOCA)
+
+
+METASOURCES = AUTO
+
+messages: rc.cpp
+ $(XGETTEXT) kfile_ics.cpp -o $(podir)/kfile_ics.pot
+
+services_DATA = kfile_ics.desktop
+servicesdir = $(kde_servicesdir)
diff --git a/kfile-plugins/ics/kfile_ics.cpp b/kfile-plugins/ics/kfile_ics.cpp
new file mode 100644
index 000000000..a78ec0400
--- /dev/null
+++ b/kfile-plugins/ics/kfile_ics.cpp
@@ -0,0 +1,96 @@
+/* This file is part of the KDE project
+ * Copyright (C) 2004 Bram Schoenmakers <bramschoenmakers@kde.nl>
+ *
+ * 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
+t 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 <qdatetime.h>
+#include <qfile.h>
+
+#include <libkcal/calendarlocal.h>
+#include <libkcal/todo.h>
+
+#include "kfile_ics.h"
+
+#include <kgenericfactory.h>
+
+using namespace KCal;
+
+typedef KGenericFactory<ICSPlugin> ICSFactory;
+K_EXPORT_COMPONENT_FACTORY(kfile_ics, ICSFactory( "kfile_ics" ))
+
+ICSPlugin::ICSPlugin( QObject *parent, const char *name, const QStringList& args )
+ : KFilePlugin( parent, name, args )
+{
+ KFileMimeTypeInfo* info = addMimeTypeInfo( "text/calendar" ); //TODO: vcs !!
+
+ KFileMimeTypeInfo::GroupInfo* group = 0L;
+ group = addGroupInfo(info, "ICSInfo", i18n("Calendar Statistics"));
+
+ addItemInfo( group, "ProductID", i18n("Product ID"), QVariant::String );
+ addItemInfo( group, "Events", i18n("Events"), QVariant::Int );
+ addItemInfo( group, "Todos", i18n("To-dos"), QVariant::Int );
+ addItemInfo( group, "TodoCompleted", i18n("Completed To-dos"), QVariant::Int );
+ addItemInfo( group, "TodoOverdue", i18n("Overdue To-dos"), QVariant::Int );
+ addItemInfo( group, "Journals", i18n("Journals"), QVariant::Int );
+// addItemInfo( group, "Reminders", i18n("Reminders"), QVariant::Int );
+
+}
+
+/*
+I chose to use libkcal instead of reading the calendar manually. It's easier to
+maintain this way.
+*/
+bool ICSPlugin::readInfo( KFileMetaInfo& info, uint /*what*/ )
+{
+ KFileMetaInfoGroup group = appendGroup( info, "ICSInfo");
+
+ CalendarLocal cal ( QString::fromLatin1( "UTC" ) );
+ if( !cal.load( info.path() ) ) {
+ kdDebug() << "Could not load calendar" << endl;
+ return false;
+ }
+
+ appendItem( group, "ProductID", QVariant( cal.productId() ) );
+ appendItem( group, "Events", QVariant( int( cal.events().count() ) ) );
+ appendItem( group, "Journals", QVariant( int( cal.journals().count() ) ) );
+ Todo::List todos = cal.todos();
+
+ // count completed and overdue
+ Todo::List::ConstIterator it = todos.begin();
+ Todo::List::ConstIterator end = todos.end();
+
+ int completed = 0;
+ int overdue = 0;
+ for ( ; it != end ; ++it ) {
+ Todo *todo = *it;
+ if ( todo->isCompleted() )
+ ++completed;
+ else if ( todo->hasDueDate() && todo->dtDue().date() < QDate::currentDate() )
+ ++overdue;
+ }
+
+ appendItem( group, "Todos", QVariant( int(todos.count() ) ) );
+ appendItem( group, "TodoCompleted", QVariant( completed ) );
+ appendItem( group, "TodoOverdue", QVariant( overdue ) );
+
+ cal.close();
+
+ return true;
+}
+
+#include "kfile_ics.moc"
diff --git a/kfile-plugins/ics/kfile_ics.desktop b/kfile-plugins/ics/kfile_ics.desktop
new file mode 100644
index 000000000..2a530ce21
--- /dev/null
+++ b/kfile-plugins/ics/kfile_ics.desktop
@@ -0,0 +1,57 @@
+[Desktop Entry]
+Type=Service
+Name=ICS information
+Name[af]=ICS informasie
+Name[be]=Інфармацыя аб ICS
+Name[bg]=ICS информация
+Name[br]=Titouroù ICS
+Name[ca]=Informació ICS
+Name[cs]=Informace o ICS
+Name[da]=ICS-information
+Name[de]=ICS-Information
+Name[el]=Πληροφορίες ICS
+Name[eo]=ICS-Informo
+Name[es]=Información ICS
+Name[et]=ICS info
+Name[eu]=ICS informazioa
+Name[fa]=اطلاعات ICS
+Name[fi]=ICS-tiedot
+Name[fr]=Information sur ICS
+Name[fy]=ICS-ynformaasje
+Name[gl]=Información ICS
+Name[he]=מידע של ICS
+Name[hu]=ICS-jellemzők
+Name[is]=ICS upplýsingar
+Name[it]=Informazioni ICS
+Name[ja]=ICS 情報
+Name[ka]=ICS ინფორმაცია
+Name[kk]=ICS ақпараты
+Name[km]=ព័ត៌មាន ICS
+Name[lt]=ICS informacija
+Name[mk]=Информација за ICS
+Name[ms]=Maklumat ICS
+Name[nb]=ICS-informasjon
+Name[nds]=ICS-Informatschoon
+Name[ne]=ICS सूचना
+Name[nl]=ICS-informatie
+Name[nn]=ICS-informasjon
+Name[pa]=ICS ਜਾਣਕਾਰੀ
+Name[pl]=Informacja ICS
+Name[pt]=Informação ICS
+Name[pt_BR]=Informações ICS
+Name[ru]=Информация ICS
+Name[sk]=Informácie o ICS
+Name[sl]=Podatki ICS
+Name[sr]=ICS информације
+Name[sr@Latn]=ICS informacije
+Name[sv]=ICS-information
+Name[ta]=ICS தகவல்
+Name[tr]=ICS bilgisi
+Name[uk]=Інформація про ICS
+Name[zh_CN]=ICS 信息
+Name[zh_TW]=ICS 資訊
+ServiceTypes=KFilePlugin
+X-KDE-Library=kfile_ics
+MimeType=text/calendar
+PreferredGroups=ICSInfo
+PreferredItems=Events,Todos,Journals
diff --git a/kfile-plugins/ics/kfile_ics.h b/kfile-plugins/ics/kfile_ics.h
new file mode 100644
index 000000000..27e7e43db
--- /dev/null
+++ b/kfile-plugins/ics/kfile_ics.h
@@ -0,0 +1,36 @@
+ /* This file is part of the KDE project
+ * Copyright (C) 2004 Bram Schoenmakers <bramschoenmakers@kde.nl>
+ *
+ * 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_ICS_H
+#define KFILE_ICS_H
+
+#include <kfilemetainfo.h>
+
+class QStringList;
+
+class ICSPlugin : public KFilePlugin
+{
+ Q_OBJECT
+public:
+ ICSPlugin( QObject *parent, const char *name, const QStringList& args );
+
+ virtual bool readInfo( KFileMetaInfo& info, uint what );
+};
+
+#endif
diff --git a/kfile-plugins/palm-databases/Makefile.am b/kfile-plugins/palm-databases/Makefile.am
new file mode 100644
index 000000000..43dbc7496
--- /dev/null
+++ b/kfile-plugins/palm-databases/Makefile.am
@@ -0,0 +1,22 @@
+## Makefile.am for palm database meta info plugin
+
+# set the include path for X, qt and KDE
+INCLUDES = $(PISOCK_INCLUDE) $(all_includes)
+
+# these are the headers for your project
+noinst_HEADERS = kfile_palm.h
+
+kde_module_LTLIBRARIES = kfile_palm.la
+
+kfile_palm_la_SOURCES = kfile_palm.cpp
+kfile_palm_la_LDFLAGS = $(PISOCK_LDFLAGS) $(all_libraries) -module $(KDE_PLUGIN)
+kfile_palm_la_LIBADD = $(LIB_KSYCOCA) $(PISOCK_LIB)
+
+# let automoc handle all of the meta source files (moc)
+METASOURCES = AUTO
+
+messages: rc.cpp
+ $(XGETTEXT) kfile_palm.cpp -o $(podir)/kfile_palm.pot
+
+services_DATA = kfile_palm.desktop
+servicesdir = $(kde_servicesdir)
diff --git a/kfile-plugins/palm-databases/kfile_palm.cpp b/kfile-plugins/palm-databases/kfile_palm.cpp
new file mode 100644
index 000000000..3b6c13c3e
--- /dev/null
+++ b/kfile-plugins/palm-databases/kfile_palm.cpp
@@ -0,0 +1,121 @@
+/* This file is part of the KDE project
+ * Copyright (C) 2004 Reinhold Kainhofer <reinhold@kainhofer.com>
+ * Based on the vcf plugin:
+ * Copyright (C) 2002 Shane Wright <me@shanewright.co.uk>
+ *
+ * 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_palm.h"
+
+#include <klocale.h>
+#include <kgenericfactory.h>
+
+#include <qfile.h>
+#include <qdatetime.h>
+#include <pi-file.h>
+
+
+typedef KGenericFactory<KPalmPlugin> PalmFactory;
+
+K_EXPORT_COMPONENT_FACTORY(kfile_palm, PalmFactory( "kfile_palm" ))
+
+KPalmPlugin::KPalmPlugin(QObject *parent, const char *name,
+ const QStringList &args)
+
+ : KFilePlugin(parent, name, args)
+{
+ KFileMimeTypeInfo* info = addMimeTypeInfo( "application/vnd.palm" );
+
+ KFileMimeTypeInfo::GroupInfo* group;
+ KFileMimeTypeInfo::ItemInfo* item;
+
+ group = addGroupInfo(info, "General", i18n("General Information"));
+ item = addItemInfo(group, "Name", i18n("Name"), QVariant::String);
+ item = addItemInfo(group, "DBType", i18n("DB Type"), QVariant::String);
+ item = addItemInfo(group, "TypeID", i18n("Type ID"), QVariant::String);
+ item = addItemInfo(group, "CreatorID", i18n("Creator ID"), QVariant::String);
+ item = addItemInfo(group, "NrRecords", i18n("# of Records"), QVariant::Int);
+
+ group = addGroupInfo(info, "TimeStamps", i18n("Time Stamps"));
+ item = addItemInfo(group, "CreationDate", i18n("Creation Date"), QVariant::DateTime);
+ item = addItemInfo(group, "ModificationDate", i18n("Modification Date"), QVariant::DateTime);
+ item = addItemInfo(group, "BackupDate", i18n("Backup Date"), QVariant::DateTime);
+
+ group = addGroupInfo(info, "Flags", i18n("Flags"));
+ item = addItemInfo(group, "ReadOnly", i18n("Read-Only"), QVariant::String);
+ item = addItemInfo(group, "MakeBackup", i18n("Make Backup"), QVariant::String);
+ item = addItemInfo(group, "CopyProtected", i18n("Copy Protected"), QVariant::String);
+ item = addItemInfo(group, "Reset", i18n("Reset Handheld After Installing"), QVariant::String);
+ item = addItemInfo(group, "ExcludeFromSync", i18n("Exclude From Sync"), QVariant::String);
+}
+
+
+bool KPalmPlugin::readInfo( KFileMetaInfo& info, uint /*what*/ )
+{
+ int nrRec;
+ QString tempName = info.path();
+ QCString fileName = QFile::encodeName(tempName);
+ pi_file *dbFile = pi_file_open(const_cast < char *>((const char *) fileName));
+ if (dbFile == 0L) return false;
+
+ struct DBInfo dBInfo;
+ pi_file_get_info( dbFile, &dBInfo );
+ pi_file_get_entries( dbFile, &nrRec );
+ pi_file_close(dbFile);
+
+ KFileMetaInfoGroup generalGroup = appendGroup(info, "General");
+ appendItem(generalGroup, "Name", dBInfo.name );
+ appendItem(generalGroup, "DBType", (dBInfo.flags & dlpDBFlagResource)?i18n("PalmOS Application"):i18n("PalmOS Record Database") );
+
+ char buff[5];
+ set_long(buff, dBInfo.type);
+ buff[4]='\0';
+ appendItem(generalGroup, "TypeID", buff );
+
+ set_long(buff, dBInfo.creator);
+ buff[4]='\0';
+ appendItem(generalGroup, "CreatorID", buff );
+ appendItem(generalGroup, "NrRecords", nrRec );
+
+
+ KFileMetaInfoGroup timeGroup = appendGroup(info, "TimeStamps");
+ QDateTime tm;
+ tm.setTime_t( dBInfo.createDate );
+ appendItem(timeGroup, "CreationDate", tm);
+ tm.setTime_t( dBInfo.modifyDate );
+ appendItem(timeGroup, "ModificationDate", tm);
+ tm.setTime_t( dBInfo.backupDate );
+ appendItem(timeGroup, "BackupDate", tm);
+
+ KFileMetaInfoGroup flagGroup = appendGroup(info, "Flags");
+ appendItem(flagGroup, "ReadOnly", (dBInfo.flags & dlpDBFlagReadOnly)?i18n("Yes"):i18n("No") );
+ appendItem(flagGroup, "MakeBackup", (dBInfo.flags & dlpDBFlagBackup)?i18n("Yes"):i18n("No") );
+ appendItem(flagGroup, "CopyProtected", (dBInfo.flags & dlpDBFlagCopyPrevention)?i18n("Yes"):i18n("No") );
+ appendItem(flagGroup, "Reset", (dBInfo.flags & dlpDBFlagReset)?i18n("Yes"):i18n("No") );
+ appendItem(flagGroup, "ExcludeFromSync", (dBInfo.miscFlags & dlpDBMiscFlagExcludeFromSync)?i18n("Yes"):i18n("No") );
+
+ return true;
+}
+
+/*bool KPalmPlugin::writeInfo( const KFileMetaInfo& info ) const
+{
+// int pi_file_set_info((struct pi_file * pf, struct DBInfo * infop));
+//info["tuteTextTechnical"].value("An integer").toInt()
+// Do the stuff with low-level functions. See lines 1119-1142 of pi-file.cc for writing, 244-273 for reading.
+}*/
+
+#include "kfile_palm.moc"
diff --git a/kfile-plugins/palm-databases/kfile_palm.desktop b/kfile-plugins/palm-databases/kfile_palm.desktop
new file mode 100644
index 000000000..9d1fe121d
--- /dev/null
+++ b/kfile-plugins/palm-databases/kfile_palm.desktop
@@ -0,0 +1,60 @@
+[Desktop Entry]
+Type=Service
+Name=PalmOS Database Info
+Name[af]=PalmOS databasis informasie
+Name[be]=Інфармацыя аб базе дадзеных PalmOS
+Name[bg]=Информация за БД на PalmOS
+Name[br]=Titouroù diwar-benn ar stlennvon PalmOS
+Name[bs]=Informacije o PalmOS bazi podataka
+Name[ca]=Informació de base de dades PalmOS
+Name[cs]=Informace o databázi PalmOS
+Name[da]=PalmOS database-info
+Name[de]=PalmOS Datenbank-Informationen
+Name[el]=Πληροφορίες βάσης δεδομένων PalmOS
+Name[eo]=PalmOS-Datumbazinformo
+Name[es]=Info. de la base de datos de PalmOS
+Name[et]=PalmOS andmebaasi info
+Name[eu]=PalmOS datu-base informazioa
+Name[fa]=اطلاعات دادگان PalmOS
+Name[fi]=PalmOS-tietokannan tiedot
+Name[fr]=Informations sur les bases de données PalmOS
+Name[fy]=PalmOS-database ynformaasje
+Name[ga]=Eolas faoin Bhunachar Sonraí PalmOS
+Name[gl]=Información de Base de Datos de PalmOS
+Name[he]=מידע אודות בסיס הנתונים של PalmOS
+Name[hu]=PalmOS adatbázis-jellemzők
+Name[is]=PalmOS gagnagrunnsupplýsingar
+Name[it]=Informazioni database PalmOs
+Name[ja]=PalmOS データベース 情報
+Name[ka]=PalmOS-ს მონაცემთა ბაზის ინფორმაცია
+Name[kk]=PalmOS деректер қорының мәліметі
+Name[km]=ព័ត៌មាន​មូលដ្ឋាន​ទិន្នន័យ PalmOS
+Name[lt]=PalmOS duomenų bazės info
+Name[mk]=Информации за PalmOS-база на податоци
+Name[ms]=Maklumat Pangkalan Data PalmOS
+Name[nb]=PalmOS Database info
+Name[nds]=PalmOS-Datenbank-Informatschonen
+Name[ne]=PalmOS डाटाबेस सूचना
+Name[nl]=PalmOS-database informatie
+Name[nn]=PalmOS-databaseinfo
+Name[pl]=Baza danych PalmOS
+Name[pt]=Informações de Base de Dados PalmOS
+Name[pt_BR]=Informações da Base de Dados do PalmOS
+Name[ru]=Сведения о базе данных PalmOS
+Name[se]=PalmOS-diehtovuođđodieđut
+Name[sk]=Informácie o databázach PalmOS
+Name[sl]=Informacije zbirke podatkov za PalmOS
+Name[sr]=Информације о PalmOS базама података
+Name[sr@Latn]=Informacije o PalmOS bazama podataka
+Name[sv]=PalmOS-databasinformation
+Name[ta]=பால்ம்OS தரவுத்தள தகவல்
+Name[tg]=Иттилоот дар бораи бонки додаҳои PalmOS
+Name[tr]=PalmOS Veritabanı Bilgisi
+Name[uk]=Інформація про базу даних PalmOS
+Name[zh_CN]=PalmOS 数据库信息
+Name[zh_TW]=PalmOS 資料庫資訊
+ServiceTypes=KFilePlugin
+X-KDE-Library=kfile_palm
+MimeType=application/vnd.palm
+PreferredGroups=General
+PreferredItems=Name,DBType,TypeID,CreatorID,NrRecords,Size
diff --git a/kfile-plugins/palm-databases/kfile_palm.h b/kfile-plugins/palm-databases/kfile_palm.h
new file mode 100644
index 000000000..fcd928a00
--- /dev/null
+++ b/kfile-plugins/palm-databases/kfile_palm.h
@@ -0,0 +1,40 @@
+/* This file is part of the KDE project
+ * Copyright (C) 2004 Reinhold Kainhofer <reinhold@kainhofer.com>
+ * Based on the vcf plugin:
+ * Copyright (C) 2002 Shane Wright <me@shanewright.co.uk>
+ *
+ * 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_PALM_H__
+#define __KFILE_PALM_H__
+
+#include <kfilemetainfo.h>
+
+class QStringList;
+
+class KPalmPlugin: public KFilePlugin
+{
+ Q_OBJECT
+
+public:
+ KPalmPlugin( QObject *parent, const char *name, const QStringList& args );
+
+ virtual bool readInfo( KFileMetaInfo& info, uint what);
+// virtual bool writeInfo( const KFileMetaInfo& info ) const;
+};
+
+#endif
diff --git a/kfile-plugins/rfc822/Makefile.am b/kfile-plugins/rfc822/Makefile.am
new file mode 100644
index 000000000..f8fa6f941
--- /dev/null
+++ b/kfile-plugins/rfc822/Makefile.am
@@ -0,0 +1,22 @@
+## Makefile.am for rfc822 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_rfc822.h
+
+kde_module_LTLIBRARIES = kfile_rfc822.la
+
+kfile_rfc822_la_SOURCES = kfile_rfc822.cpp
+kfile_rfc822_la_LDFLAGS = $(all_libraries) -module $(KDE_PLUGIN)
+kfile_rfc822_la_LIBADD = $(LIB_KSYCOCA)
+
+# let automoc handle all of the meta source files (moc)
+METASOURCES = AUTO
+
+messages: rc.cpp
+ $(XGETTEXT) kfile_rfc822.cpp -o $(podir)/kfile_rfc822.pot
+
+services_DATA = kfile_rfc822.desktop
+servicesdir = $(kde_servicesdir)
diff --git a/kfile-plugins/rfc822/RETURNED_ITEMS b/kfile-plugins/rfc822/RETURNED_ITEMS
new file mode 100644
index 000000000..be8c9b7e7
--- /dev/null
+++ b/kfile-plugins/rfc822/RETURNED_ITEMS
@@ -0,0 +1,14 @@
+If you make a new plugin, please add the list of returned items to this list.
+
+
+rfc822 plugin:
+===========
+
+type key W/A details
+------------------------------------------------------------------------
+String From -/- Name/email of sender
+String To -/- Name/email of recipient
+String Subject -/- Subject line of message
+String Date -/- Date stamped in message
+String Content-Type -/- Content type declared in headers
+
diff --git a/kfile-plugins/rfc822/kfile_rfc822.cpp b/kfile-plugins/rfc822/kfile_rfc822.cpp
new file mode 100644
index 000000000..794d335d6
--- /dev/null
+++ b/kfile-plugins/rfc822/kfile_rfc822.cpp
@@ -0,0 +1,161 @@
+/* This file is part of the KDE project
+ * Copyright (C) 2002 Shane Wright <me@shanewright.co.uk>
+ *
+ * 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 <config.h>
+#include "kfile_rfc822.h"
+
+#include <kprocess.h>
+#include <klocale.h>
+#include <kgenericfactory.h>
+#include <kstringvalidator.h>
+#include <kdebug.h>
+
+#include <qdict.h>
+#include <qvalidator.h>
+#include <qcstring.h>
+#include <qfile.h>
+#include <qdatetime.h>
+
+#if !defined(__osf__)
+#include <inttypes.h>
+#else
+typedef unsigned short uint32_t;
+#endif
+
+typedef KGenericFactory<KRfc822Plugin> Rfc822Factory;
+
+K_EXPORT_COMPONENT_FACTORY(kfile_rfc822, Rfc822Factory( "kfile_rfc822" ))
+
+KRfc822Plugin::KRfc822Plugin(QObject *parent, const char *name,
+ const QStringList &args)
+
+ : KFilePlugin(parent, name, args)
+{
+ KFileMimeTypeInfo* info = addMimeTypeInfo( "message/rfc822" );
+
+ KFileMimeTypeInfo::GroupInfo* group = 0L;
+
+ group = addGroupInfo(info, "Technical", i18n("Technical Details"));
+
+ KFileMimeTypeInfo::ItemInfo* item;
+
+ item = addItemInfo(group, "From", i18n("From"), QVariant::String);
+ item = addItemInfo(group, "To", i18n("To"), QVariant::String);
+ item = addItemInfo(group, "Subject", i18n("Subject"), QVariant::String);
+ item = addItemInfo(group, "Date", i18n("Date"), QVariant::String);
+ item = addItemInfo(group, "Content-Type", i18n("Content-Type"), QVariant::String);
+}
+
+
+bool KRfc822Plugin::readInfo( KFileMetaInfo& info, uint /*what*/ )
+{
+
+ QFile file(info.path());
+
+ if (!file.open(IO_ReadOnly))
+ {
+ kdDebug(7034) << "Couldn't open " << QFile::encodeName(info.path()) << endl;
+ return false;
+ }
+
+ /*
+ Note to self: probably should use QCString for all this, but
+ what we're doing is simple and self-contained so never mind..
+ */
+
+ char id_from[] = "From: ";
+ char id_to[] = "To: ";
+ char id_subject[] = "Subject: ";
+ char id_date[] = "Date: ";
+ char id_contenttype[] = "Content-Type: ";
+
+ // we need a buffer for lines
+ char linebuf[4096];
+
+ // we need a buffer for other stuff
+ char buf_from[1000] = "";
+ char buf_to[1000] = "";
+ char buf_subject[1000] = "";
+ char buf_date[1000] = "";
+ char buf_contenttype[1000] = "";
+
+ memset(buf_from, 0, 999);
+ memset(buf_to, 0, 999);
+ memset(buf_subject, 0, 999);
+ memset(buf_date, 0, 999);
+ memset(buf_contenttype, 0, 999);
+ char * myptr;
+
+ bool done=false;
+ while (!done) {
+
+ // read a line
+ file.readLine(linebuf, sizeof( linebuf ));
+
+ // have we got something useful?
+ if (memcmp(linebuf, id_from, 6) == 0) {
+ // we have a name
+ myptr = linebuf + 6;
+ strncpy(buf_from, myptr, sizeof( buf_from ));
+ buf_from[998]='\0';
+ } else if (memcmp(linebuf, id_to, 4) == 0) {
+ // we have a name
+ myptr = linebuf + 4;
+ strncpy(buf_to, myptr, sizeof( buf_to ));
+ buf_to[998]='\0';
+ } else if (memcmp(linebuf, id_subject, 9) == 0) {
+ // we have a name
+ myptr = linebuf + 9;
+ strncpy(buf_subject, myptr, sizeof( buf_subject ));
+ buf_subject[998]='\0';
+ } else if (memcmp(linebuf, id_date, 6) == 0) {
+ // we have a name
+ myptr = linebuf + 6;
+ strncpy(buf_date, myptr, sizeof( buf_date ));
+ buf_date[998]='\0';
+ } else if (memcmp(linebuf, id_contenttype, 14) == 0) {
+ // we have a name
+ myptr = linebuf + 14;
+ strncpy(buf_contenttype, myptr, sizeof( buf_contenttype ));
+ buf_contenttype[998]='\0';
+ }
+
+ // are we done yet?
+ if (
+ ((strlen(buf_from) > 0) && (strlen(buf_to) > 0) &&
+ (strlen(buf_subject) > 0) && (strlen(buf_date) > 0) &&
+ (strlen(buf_contenttype) > 0)) ||
+ (file.atEnd())
+ )
+ done = true;
+
+ };
+
+ KFileMetaInfoGroup group = appendGroup(info, "Technical");
+
+ if (strlen(buf_from) > 0) appendItem(group, "From", buf_from);
+ if (strlen(buf_to) > 0) appendItem(group, "To", buf_to);
+ if (strlen(buf_subject) > 0) appendItem(group, "Subject", buf_subject);
+ if (strlen(buf_date) > 0) appendItem(group, "Date", buf_date);
+ if (strlen(buf_contenttype) > 0) appendItem(group, "Content-Type", buf_contenttype);
+
+ return true;
+}
+
+#include "kfile_rfc822.moc"
diff --git a/kfile-plugins/rfc822/kfile_rfc822.desktop b/kfile-plugins/rfc822/kfile_rfc822.desktop
new file mode 100644
index 000000000..1428c96f8
--- /dev/null
+++ b/kfile-plugins/rfc822/kfile_rfc822.desktop
@@ -0,0 +1,63 @@
+[Desktop Entry]
+Type=Service
+Name=Email Info
+Name[af]=E-pos informasie
+Name[be]=Інфармацыя аб паведамленні электроннай пошты
+Name[bg]=Информация за е-поща
+Name[br]=Titouroù postel
+Name[ca]=Informació de correu-e
+Name[cs]=Informace o emailu
+Name[cy]=Gwybodaeth Ebost
+Name[da]=E-mail-info
+Name[de]=E-Mail-Info
+Name[el]=Πληροφορίες Email
+Name[eo]=Retpoŝt-informo
+Name[es]=Info de correo electrónico
+Name[et]=Kirja info
+Name[eu]=E-posta informazioa
+Name[fa]=اطلاعات رایانامه
+Name[fi]=Sähköpostitiedot
+Name[fr]=Informations sur le courrier électronique
+Name[fy]=E-port-ynformaasje
+Name[gl]=Información de Correo-e
+Name[he]=מידע על דוא"ל
+Name[hi]=ई-मेल जानकारी
+Name[hr]=Email Informacije
+Name[hu]=E-mail-jellemzők
+Name[is]=Tölvupóst upplýsingar
+Name[it]=Informazioni di posta elettronica
+Name[ja]=Eメール 情報
+Name[ka]=ელფოსტის ინფორმაცია
+Name[kk]=Эл.пошта мәліметі
+Name[km]=ព័ត៌មាន​អ៊ីមែល
+Name[lt]=E. pašto info
+Name[mk]=Информации за е-пошта
+Name[ms]=Info Emel
+Name[nb]=E-post-info
+Name[nds]=Nettbreef-Informatschonen
+Name[ne]=इमेल सूचना
+Name[nl]=E-mail-informatie
+Name[nn]=Epost-info
+Name[pa]=ਈ-ਪੱਤਰ ਜਾਣਕਾਰੀ
+Name[pl]=Informacja o e-mailu
+Name[pt]=Informação do E-Mail
+Name[pt_BR]=Informações sobre E-mail
+Name[ro]=Informaţii e-mail
+Name[ru]=Сведения об электронной почте
+Name[se]=E-boastadieđut
+Name[sk]=Informácie o emaily
+Name[sl]=Informacije o e-pošti
+Name[sr]=Е-поштанске информације
+Name[sr@Latn]=E-poštanske informacije
+Name[sv]=E-postinformation
+Name[ta]=மின்னஞ்சல் தகவல்
+Name[tg]=Иттилоот дар бораи почтаи электронӣ
+Name[tr]=E-Posta Bilgisi
+Name[uk]=Інформація про повідомлення ел. пошти
+Name[zh_CN]=电子邮件信息
+Name[zh_TW]=電子郵件資訊
+ServiceTypes=KFilePlugin
+X-KDE-Library=kfile_rfc822
+MimeType=message/rfc822
+PreferredGroups=Technical
+PreferredItems=From,To,Subject,Date,Content-Type
diff --git a/kfile-plugins/rfc822/kfile_rfc822.h b/kfile-plugins/rfc822/kfile_rfc822.h
new file mode 100644
index 000000000..f2066754a
--- /dev/null
+++ b/kfile-plugins/rfc822/kfile_rfc822.h
@@ -0,0 +1,37 @@
+/* This file is part of the KDE project
+ * Copyright (C) 2002 Shane Wright <me@shanewright.co.uk>
+ *
+ * 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_RFC822_H__
+#define __KFILE_RFC822_H__
+
+#include <kfilemetainfo.h>
+
+class QStringList;
+
+class KRfc822Plugin: public KFilePlugin
+{
+ Q_OBJECT
+
+public:
+ KRfc822Plugin( QObject *parent, const char *name, const QStringList& args );
+
+ virtual bool readInfo( KFileMetaInfo& info, uint what);
+};
+
+#endif
diff --git a/kfile-plugins/vcf/Makefile.am b/kfile-plugins/vcf/Makefile.am
new file mode 100644
index 000000000..5350fb1c1
--- /dev/null
+++ b/kfile-plugins/vcf/Makefile.am
@@ -0,0 +1,22 @@
+## Makefile.am for vcf 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_vcf.h
+
+kde_module_LTLIBRARIES = kfile_vcf.la
+
+kfile_vcf_la_SOURCES = kfile_vcf.cpp
+kfile_vcf_la_LDFLAGS = $(all_libraries) -module $(KDE_PLUGIN)
+kfile_vcf_la_LIBADD = $(LIB_KSYCOCA) $(LIB_KABC)
+
+# let automoc handle all of the meta source files (moc)
+METASOURCES = AUTO
+
+messages: rc.cpp
+ $(XGETTEXT) kfile_vcf.cpp -o $(podir)/kfile_vcf.pot
+
+services_DATA = kfile_vcf.desktop
+servicesdir = $(kde_servicesdir)
diff --git a/kfile-plugins/vcf/kfile_vcf.cpp b/kfile-plugins/vcf/kfile_vcf.cpp
new file mode 100644
index 000000000..f9440f6d1
--- /dev/null
+++ b/kfile-plugins/vcf/kfile_vcf.cpp
@@ -0,0 +1,100 @@
+/* This file is part of the KDE project
+ * Copyright (C) 2002 Shane Wright <me@shanewright.co.uk>
+ *
+ * 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 <kdebug.h>
+#include <config.h>
+#include "kfile_vcf.h"
+
+#include <kprocess.h>
+#include <klocale.h>
+#include <kgenericfactory.h>
+#include <kabc/vcardconverter.h>
+
+#include <qdict.h>
+#include <qfile.h>
+
+typedef KGenericFactory<KVcfPlugin> VcfFactory;
+
+K_EXPORT_COMPONENT_FACTORY(kfile_vcf, VcfFactory( "kfile_vcf" ))
+
+KVcfPlugin::KVcfPlugin(QObject *parent, const char *name,
+ const QStringList &args)
+
+ : KFilePlugin(parent, name, args)
+{
+ KFileMimeTypeInfo* info = addMimeTypeInfo( "text/x-vcard" );
+
+ KFileMimeTypeInfo::GroupInfo* group = 0L;
+
+ group = addGroupInfo(info, "Technical", i18n("Technical Details"));
+
+ KFileMimeTypeInfo::ItemInfo* item;
+
+ item = addItemInfo(group, "Name", i18n("Name"), QVariant::String);
+ item = addItemInfo(group, "Email", i18n("Email"), QVariant::String);
+ item = addItemInfo(group, "Telephone", i18n("Telephone"), QVariant::String);
+}
+
+
+bool KVcfPlugin::readInfo( KFileMetaInfo& info, uint /*what*/ )
+{
+ QFile file(info.path());
+
+ if (!file.open(IO_ReadOnly))
+ {
+ kdDebug(7034) << "Couldn't open " << QFile::encodeName(info.path()) << endl;
+ return false;
+ }
+
+ // even the vcard thumbnail QString::fromUtf8(buf_name));creator reads the full file ...
+ // The following is partly copied from there
+ QString contents = file.readAll();
+ file.close();
+
+ KABC::VCardConverter converter;
+ KABC::Addressee addr = converter.parseVCard(contents);
+
+ KFileMetaInfoGroup group = appendGroup(info, "Technical");
+
+ // prepare the text
+ QString name = addr.formattedName().simplifyWhiteSpace();
+ if ( name.isEmpty() )
+ name = addr.givenName() + " " + addr.familyName();
+ name = name.simplifyWhiteSpace();
+
+ if ( ! name.isEmpty() )
+ appendItem(group, "Name", name);
+
+ if ( ! addr.preferredEmail().isEmpty() )
+ appendItem(group, "Email", addr.preferredEmail());
+
+ KABC::PhoneNumber::List pnList = addr.phoneNumbers();
+ QStringList phoneNumbers;
+ for (unsigned int no=0; no<pnList.count(); ++no) {
+ QString pn = pnList[no].number().simplifyWhiteSpace();
+ if (!pn.isEmpty() && !phoneNumbers.contains(pn))
+ phoneNumbers.append(pn);
+ }
+ if ( !phoneNumbers.isEmpty() )
+ appendItem(group, "Telephone", phoneNumbers.join("\n"));
+
+ return true;
+}
+
+#include "kfile_vcf.moc"
diff --git a/kfile-plugins/vcf/kfile_vcf.desktop b/kfile-plugins/vcf/kfile_vcf.desktop
new file mode 100644
index 000000000..ced0dfc34
--- /dev/null
+++ b/kfile-plugins/vcf/kfile_vcf.desktop
@@ -0,0 +1,66 @@
+[Desktop Entry]
+Type=Service
+Name=vCard Info
+Name[af]=Vkaart Inligting
+Name[be]=Інфармацыя аб vCard
+Name[bg]=Информация за vCard
+Name[br]=Titouroù diwar-benn vCard
+Name[ca]=Informació de vCard
+Name[cs]=VCard info
+Name[cy]=Gwybodaeth vCard
+Name[da]=VCard-info
+Name[de]=vCard-Info
+Name[el]=Πληροφορίες vCard
+Name[eo]=vCard-informo
+Name[es]=Info de vCard
+Name[et]=vCardi info
+Name[eu]=vCard informazioa
+Name[fa]=اطلاعات vCard
+Name[fi]=vCard-tiedot
+Name[fr]=Informations vCard
+Name[fy]=vCard-ynformaasje
+Name[gl]=Información de vCard
+Name[he]=מידע vCard
+Name[hi]=वी-कार्ड जानकारी
+Name[hu]=VCard-jellemzők
+Name[is]=vCard upplýsingar
+Name[it]=Informazioni vCard
+Name[ja]=vCard 情報
+Name[ka]=vCard ინფორმაცია
+Name[kk]=vCard мәліметі
+Name[km]=ព័ត៌មាន vCard
+Name[lt]=vCard informacija
+Name[mk]=Информации за vCard
+Name[ms]=Info vCard
+Name[mt]=Informazzjoni vCard
+Name[nb]=vCard info
+Name[nds]=vCard-Informatschonen
+Name[ne]=भी कार्ड सुचना
+Name[nl]=vCard-informatie
+Name[nn]=vCard-info
+Name[nso]=Tshedimoso ya vKarata
+Name[pa]=vCard ਜਾਣਕਾਰੀ
+Name[pl]=Informacja vCard
+Name[pt]=Informação do vCard
+Name[pt_BR]=Informações sobre vCard
+Name[ro]=Informaţii vCard
+Name[ru]=Сведения о визитке vCard
+Name[se]=vCard-dieđut
+Name[sl]=Informacije o vCard
+Name[sr]=vCard информације
+Name[sr@Latn]=vCard informacije
+Name[sv]=vCard-information
+Name[ta]=விஅட்டை தகவல்
+Name[tg]=Иттилоот дар бораи визиткаи vCard
+Name[tr]=VCard Bilgisi
+Name[uk]=Інформація про vCard
+Name[ven]=Mafhungo a vCard
+Name[xh]=Inkcukacha ye vCard
+Name[zh_CN]=vCard 信息
+Name[zh_TW]=vCard 資訊
+Name[zu]=Ulwazi lwe-vCard
+ServiceTypes=KFilePlugin
+X-KDE-Library=kfile_vcf
+MimeType=text/x-vcard
+PreferredGroups=Technical
+PreferredItems=Name,Email,Telephone
diff --git a/kfile-plugins/vcf/kfile_vcf.h b/kfile-plugins/vcf/kfile_vcf.h
new file mode 100644
index 000000000..a0b147c63
--- /dev/null
+++ b/kfile-plugins/vcf/kfile_vcf.h
@@ -0,0 +1,37 @@
+/* This file is part of the KDE project
+ * Copyright (C) 2002 Shane Wright <me@shanewright.co.uk>
+ *
+ * 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_VCF_H__
+#define __KFILE_VCF_H__
+
+#include <kfilemetainfo.h>
+
+class QStringList;
+
+class KVcfPlugin: public KFilePlugin
+{
+ Q_OBJECT
+
+public:
+ KVcfPlugin( QObject *parent, const char *name, const QStringList& args );
+
+ virtual bool readInfo( KFileMetaInfo& info, uint what);
+};
+
+#endif