/* This file is part of the KDE project * Copyright (C) 2005 Laurent Montel * * 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 #include "kfile_abiword.h" #include #include #include #include #include #include #include typedef KGenericFactory AbiwordFactory; K_EXPORT_COMPONENT_FACTORY(kfile_abiword, AbiwordFactory( "kfile_abiword" )) AbiwordPlugin::AbiwordPlugin(TQObject *parent, const char *name, const TQStringList &args) : KFilePlugin(parent, name, args) { init(); } void AbiwordPlugin::init() { KFileMimeTypeInfo* info = addMimeTypeInfo( "application/x-abiword" ); KFileMimeTypeInfo::GroupInfo* group = 0L; group = addGroupInfo(info, "DocumentInfo", i18n("Document Information")); KFileMimeTypeInfo::ItemInfo* item; item = addItemInfo(group, "Author", i18n("Author"), TQVariant::String); setHint(item, KFileMimeTypeInfo::Author); item = addItemInfo(group, "Title", i18n("Title"), TQVariant::String); setHint(item, KFileMimeTypeInfo::Name); item = addItemInfo(group, "Abstract", i18n("Abstract"), TQVariant::String); setHint(item, KFileMimeTypeInfo::Description); } bool AbiwordPlugin::readInfo( KFileMetaInfo& info, uint what) { if ( info.path().isEmpty() ) // remote file return false; //Find the last extension TQString strExt; const int result=info.path().findRev('.'); if (result>=0) { strExt=info.path().mid(result); } TQString strMime; // Mime type of the compressor (default: unknown) if ((strExt==".gz")||(strExt==".GZ") //in case of .abw.gz (logical extension) ||(strExt==".zabw")||(strExt==".ZABW")) //in case of .zabw (extension used prioritary with AbiWord) { // Compressed with gzip strMime="application/x-gzip"; kdDebug() << "Compression: gzip" << endl; } else if ((strExt==".bz2")||(strExt==".BZ2") //in case of .abw.bz2 (logical extension) ||(strExt==".bzabw")||(strExt==".BZABW")) //in case of .bzabw (extension used prioritary with AbiWord) { // Compressed with bzip2 strMime="application/x-bzip2"; kdDebug() << "Compression: bzip2" << endl; } KFileMetaInfoGroup group = appendGroup(info, "DocumentInfo"); TQIODevice* in = KFilterDev::deviceForFile(info.path(),strMime); if ( !in ) { kdError() << "Cannot create device for uncompressing! Aborting!" << endl; return false; } if (!in->open(IO_ReadOnly)) { kdError() << "Cannot open file for uncompressing! Aborting!" << endl; delete in; return false; } TQDomDocument doc; doc.setContent( in ); in->close(); TQDomElement docElem = doc.documentElement(); TQDomNode summary = docElem.namedItem("metadata"); TQDomNode m_item = summary.namedItem("m"); TQString author; TQString title; TQString abstract; while( !m_item.isNull() ) { kdDebug()<<" m_item.toElement().text: "<