You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
koffice/tools/tdefile-plugins/koffice/tdefile_koffice.cpp

117 lines
3.9 KiB

/* This file is part of the KDE project
* Copyright (C) 2002 Simon MacMullen
*
* 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 "tdefile_koffice.h"
#include <tdelocale.h>
#include <kgenericfactory.h>
#include <KoStore.h>
#include <KoStoreDevice.h>
#include <tqdom.h>
#include <tqfile.h>
#include <tqdatetime.h>
typedef KGenericFactory<KOfficePlugin> KOfficeFactory;
K_EXPORT_COMPONENT_FACTORY(tdefile_koffice, KOfficeFactory( "tdefile_koffice" ))
KOfficePlugin::KOfficePlugin(TQObject *parent, const char *name,
const TQStringList &args)
: KFilePlugin(parent, name, args)
{
makeMimeTypeInfo( "application/x-kword" );
makeMimeTypeInfo( "application/x-kpresenter" );
makeMimeTypeInfo( "application/x-kspread" );
makeMimeTypeInfo( "application/x-karbon" );
makeMimeTypeInfo( "application/x-kontour" );
makeMimeTypeInfo( "application/x-kchart" );
makeMimeTypeInfo( "application/x-kivio" );
makeMimeTypeInfo( "application/x-chalk" );
makeMimeTypeInfo( "application/x-kformula" );
/*makeMimeTypeInfo( "application/vnd.kde.kword" );
makeMimeTypeInfo( "application/vnd.kde.kpresenter" );
makeMimeTypeInfo( "application/vnd.kde.kspread" );
makeMimeTypeInfo( "application/vnd.kde.karbon" );
makeMimeTypeInfo( "application/vnd.kde.kontour" );*/
}
void KOfficePlugin::makeMimeTypeInfo(const TQString& mimeType)
{
KFileMimeTypeInfo* info = addMimeTypeInfo( mimeType );
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 KOfficePlugin::readInfo( KFileMetaInfo& info, uint what)
{
if ( info.path().isEmpty() ) // remote file
return false;
KFileMetaInfoGroup group = appendGroup(info, "DocumentInfo");
KoStore* store = KoStore::createStore(info.path(), KoStore::Read);
if ( store && store->open( TQString("documentinfo.xml") ) )
{
KoStoreDevice dev( store );
TQDomDocument doc;
doc.setContent( &dev );
TQDomNode authorNode = doc.namedItem("document-info").namedItem("author");
TQDomNode aboutNode = doc.namedItem("document-info").namedItem("about");
TQString author = stringFromNode(authorNode, "full-name");
TQString title = stringFromNode(aboutNode, "title");
TQString abstract = stringFromNode(aboutNode, "abstract");
appendItem(group, "Author", author);
appendItem(group, "Title", title);
appendItem(group, "Abstract", abstract);
store->close();
delete store;
return true;
}
delete store;
return false;
}
TQString KOfficePlugin::stringFromNode(const TQDomNode &node, const TQString &name)
{
TQString value = node.namedItem(name).toElement().text();
return value.isEmpty() ? i18n("*Unknown*") : value;
}
#include "tdefile_koffice.moc"