diff options
Diffstat (limited to 'fileplugin')
-rw-r--r-- | fileplugin/Makefile.am | 18 | ||||
-rw-r--r-- | fileplugin/kfile_kbarcode.cpp | 84 | ||||
-rw-r--r-- | fileplugin/kfile_kbarcode.desktop | 9 | ||||
-rw-r--r-- | fileplugin/kfile_kbarcode.h | 23 |
4 files changed, 134 insertions, 0 deletions
diff --git a/fileplugin/Makefile.am b/fileplugin/Makefile.am new file mode 100644 index 0000000..83e54db --- /dev/null +++ b/fileplugin/Makefile.am @@ -0,0 +1,18 @@ +# set the include path for X, qt and KDE +INCLUDES = $(all_includes) + +kde_module_LTLIBRARIES = kfile_kbarcode.la + +kfile_kbarcode_la_SOURCES = kfile_kbarcode.cpp +kfile_kbarcode_la_LDFLAGS = -module $(KDE_PLUGIN) $(all_libraries) +kfile_kbarcode_la_LIBADD = $(LIB_KSYCOCA) $(LIB_KDECORE) + +# let automoc handle all of the meta source files (moc) +METASOURCES = AUTO + +# messages: rc.cpp +# $(XGETTEXT) *.cpp -o $(podir)/kfile_kbarcode.pot + +services_DATA = kfile_kbarcode.desktop +servicesdir = $(kde_servicesdir) + diff --git a/fileplugin/kfile_kbarcode.cpp b/fileplugin/kfile_kbarcode.cpp new file mode 100644 index 0000000..bd2c1c8 --- /dev/null +++ b/fileplugin/kfile_kbarcode.cpp @@ -0,0 +1,84 @@ +/* + * Copyright (C) 2003 Dominik Seichter <[email protected]> + */ + +#include "kfile_kbarcode.h" + +#include <kgenericfactory.h> +#include <klocale.h> + +#include <qfile.h> +#include <qdom.h> + +K_EXPORT_COMPONENT_FACTORY(kfile_kbarcode, KGenericFactory<KBarcodePlugin>( "kfile_kbarcode" )); + +KBarcodePlugin::KBarcodePlugin(QObject *parent, const char *name, + const QStringList &args) + + : KFilePlugin(parent, name, args) +{ + KFileMimeTypeInfo* info = addMimeTypeInfo( "application/kbarcode-label" ); + + KFileMimeTypeInfo::GroupInfo* group = 0L; + + group = addGroupInfo(info, "Label", i18n("Label")); + + KFileMimeTypeInfo::ItemInfo* item; + + item = addItemInfo(group, "Manufacturer", i18n("Manufacturer"), QVariant::String ); + item = addItemInfo(group, "Type", i18n("Type"), QVariant::String); + item = addItemInfo(group, "Description", i18n("Description"), QVariant::String ); + item = addItemInfo(group, "Id", i18n("Label Id"), QVariant::String ); + item = addItemInfo(group, "Dimensions", i18n("Dimensions"), QVariant::Size); + setHint( item, KFileMimeTypeInfo::Size ); + setUnit(item, KFileMimeTypeInfo::Centimeters ); +} + + +bool KBarcodePlugin::readInfo( KFileMetaInfo& info, uint ) +{ + QFile f( info.path() ); + if ( !f.open( IO_ReadOnly ) ) + return false; + + QDomDocument doc( "KBarcodeLabel" ); + if ( !doc.setContent( &f ) ) { + f.close(); + return false; + } + + KFileMetaInfoGroup group = appendGroup(info, "Label"); + + QDomNode n = doc.documentElement().firstChild(); + while( !n.isNull() ) { + QDomElement e = n.toElement(); // try to convert the node to an element. + if( !e.isNull() ) + if( e.tagName() == "label" ) { + QDomNode node = e.firstChild(); + while( !node.isNull() ) { + QDomElement e = node.toElement(); // try to convert the node to an element. + if( !e.isNull() ) + if( e.tagName() == "description" ) + appendItem(group, "Description", e.text() ); + else if( e.tagName() == "id" ) { + appendItem(group, "Manufacturer", e.attribute("producer", "") ); + appendItem(group, "Type", e.attribute("type", "") ); + appendItem(group, "Id", e.text() ); + appendItem(group, "Dimensions", + QSize( int(e.attribute("width", "0").toDouble()/10), int(e.attribute("height", "0").toDouble()/10) ) ); + } + + node = node.nextSibling(); + } + n = n.nextSibling(); + } + + n = n.nextSibling(); + } + + + f.close(); + return true; +} + +#include "kfile_kbarcode.moc" diff --git a/fileplugin/kfile_kbarcode.desktop b/fileplugin/kfile_kbarcode.desktop new file mode 100644 index 0000000..e9a9d33 --- /dev/null +++ b/fileplugin/kfile_kbarcode.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Type=Service +Name=KBarcode Info +Comment=KBarcode Info +Icon=kbarcode +ServiceTypes=KFilePlugin +MimeType=application/kbarcode-label +X-KDE-Library=kfile_kbarcode +SupportsThumbnail= diff --git a/fileplugin/kfile_kbarcode.h b/fileplugin/kfile_kbarcode.h new file mode 100644 index 0000000..fd71ada --- /dev/null +++ b/fileplugin/kfile_kbarcode.h @@ -0,0 +1,23 @@ +/* + * Copyright (C) 2003 Dominik Seichter <[email protected]> + */ + +#ifndef _PLUGIN_KBARCODEFILEPLUGIN_H_ +#define _PLUGIN_KBARCODEFILEPLUGIN_H_ + +#include <kfilemetainfo.h> + +class QStringList; + +class KBarcodePlugin: public KFilePlugin +{ + Q_OBJECT + +public: + KBarcodePlugin( QObject *parent, const char *name, const QStringList& args ); + + virtual bool readInfo( KFileMetaInfo& info, uint ); +}; + + +#endif // _PLUGIN_KBARCODEFILEPLUGIN_H_ |