/*************************************************************************** copyright : (C) 2003-2006 by Robby Stephenson email : robby@periapsis.org ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of version 2 of the GNU General Public License as * * published by the Free Software Foundation; * * * ***************************************************************************/ #include "xsltexporter.h" #include "xslthandler.h" #include "tellicoxmlexporter.h" #include "../filehandler.h" #include #include #include #include #include #include #include #include #include #include using Tellico::Export::XSLTExporter; XSLTExporter::XSLTExporter() : Export::Exporter(), m_widget(0), m_URLRequester(0) { } TQString XSLTExporter::formatString() const { return i18n("XSLT"); } TQString XSLTExporter::fileFilter() const { return i18n("*|All Files"); } bool XSLTExporter::exec() { KURL u = m_URLRequester->url(); if(u.isEmpty() || !u.isValid()) { return false; } // XSLTHandler handler(FileHandler::readXMLFile(url)); XSLTHandler handler(u); handler.addStringParam("date", TQDate::currentDate().toString(TQt::ISODate).latin1()); handler.addStringParam("time", TQTime::currentTime().toString(TQt::ISODate).latin1()); handler.addStringParam("user", KUser(KUser::UseRealUserID).loginName().latin1()); TellicoXMLExporter exporter; exporter.setEntries(entries()); exporter.setOptions(options()); TQDomDocument dom = exporter.exportXML(); return FileHandler::writeTextURL(url(), handler.applyStylesheet(dom.toString()), options() & ExportUTF8, options() & Export::ExportForce); } TQWidget* XSLTExporter::widget(TQWidget* parent_, const char* name_/*=0*/) { if(m_widget && m_widget->parent() == parent_) { return m_widget; } m_widget = new TQWidget(parent_, name_); TQVBoxLayout* l = new TQVBoxLayout(m_widget); TQGroupBox* group = new TQGroupBox(1, Qt::Horizontal, i18n("XSLT Options"), m_widget); l->addWidget(group); TQHBox* box = new TQHBox(group); box->setSpacing(4); (void) new TQLabel(i18n("XSLT file:"), box); m_URLRequester = new KURLRequester(box); TQWhatsThis::add(m_URLRequester, i18n("Choose the XSLT file used to transform the Tellico XML data.")); TQString filter = i18n("*.xsl|XSL Files (*.xsl)") + TQChar('\n'); filter += i18n("*|All Files"); m_URLRequester->setFilter(filter); m_URLRequester->setMode(static_cast(KFile::File | KFile::ExistingOnly)); if(!m_xsltFile.isEmpty()) { m_URLRequester->setURL(m_xsltFile); } l->addStretch(1); return m_widget; } void XSLTExporter::readOptions(TDEConfig* config_) { TDEConfigGroup group(config_, TQString::fromLatin1("ExportOptions - %1").arg(formatString())); m_xsltFile = group.readEntry("Last File", TQString()); } void XSLTExporter::saveOptions(TDEConfig* config_) { TDEConfigGroup group(config_, TQString::fromLatin1("ExportOptions - %1").arg(formatString())); m_xsltFile = m_URLRequester->url(); group.writeEntry("Last File", m_xsltFile); }