diff options
Diffstat (limited to 'fileplugin/kfile_kbarcode.cpp')
-rw-r--r-- | fileplugin/kfile_kbarcode.cpp | 84 |
1 files changed, 84 insertions, 0 deletions
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" |