summaryrefslogtreecommitdiffstats
path: root/fileplugin/kfile_kbarcode.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'fileplugin/kfile_kbarcode.cpp')
-rw-r--r--fileplugin/kfile_kbarcode.cpp84
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 <domseichter@web.de>
+ */
+
+#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"