From b363d2579af0a11b77e698aed2e1021c2233b644 Mon Sep 17 00:00:00 2001 From: Timothy Pearson Date: Sat, 26 Jan 2013 13:17:50 -0600 Subject: Rename a number of libraries and executables to avoid conflicts with KDE4 --- tderesources/groupdav/groupdavglobals.cpp | 287 ++++++++++++++++++++++++++++++ 1 file changed, 287 insertions(+) create mode 100644 tderesources/groupdav/groupdavglobals.cpp (limited to 'tderesources/groupdav/groupdavglobals.cpp') diff --git a/tderesources/groupdav/groupdavglobals.cpp b/tderesources/groupdav/groupdavglobals.cpp new file mode 100644 index 000000000..5088bca96 --- /dev/null +++ b/tderesources/groupdav/groupdavglobals.cpp @@ -0,0 +1,287 @@ +/* + This file is part of tdepim. + + Copyright (c) 2004 Cornelius Schumacher + Copyright (c) 2004 Till Adam + Copyright (c) 2005 Reinhold Kainhofer + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include "groupdavglobals.h" +#include "groupwaredataadaptor.h" +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include + +TQString GroupDavGlobals::extractFingerprint( TDEIO::Job *job, const TQString &/*jobData*/ ) +{ + const TQString& headers = job->queryMetaData( "HTTP-Headers" ); + return WebdavHandler::getEtagFromHeaders( headers ); +} + + +KPIM::FolderLister::ContentType GroupDavGlobals::getContentType( const TQDomElement &prop ) +{ + TQDomElement ctype = prop.namedItem("getcontenttype").toElement(); + if ( ctype.isNull() ) return KPIM::FolderLister::Unknown; + const TQString &type = ctype.text(); +kdDebug()<<"Found content type: "<... + TQDomElement e = folderNode.namedItem("resourcetype").toElement(); + if ( !e.namedItem( "collection" ).isNull() ) + return true; + else return false; +} + + + + +TDEIO::Job *GroupDavGlobals::createListFoldersJob( const KURL &url ) +{ + TQDomDocument doc; + TQDomElement root = WebdavHandler::addDavElement( doc, doc, "d:propfind" ); + TQDomElement prop = WebdavHandler::addElement( doc, root, "d:prop" ); + WebdavHandler::addElement( doc, prop, "d:displayname" ); + WebdavHandler::addElement( doc, prop, "d:resourcetype" ); +// WebdavHandler::addElement( doc, prop, "d:hassubs" ); + + kdDebug(7000) << "props: " << doc.toString() << endl; + return TDEIO::davPropFind( url, doc, "1", false ); +} + + +TDEIO::TransferJob *GroupDavGlobals::createListItemsJob( const KURL &url ) +{ + TQDomDocument doc; + TQDomElement root = WebdavHandler::addDavElement( doc, doc, "propfind" ); + TQDomElement prop = WebdavHandler::addDavElement( doc, root, "prop" ); + WebdavHandler::addDavElement( doc, prop, "getetag" ); +// WebdavHandler::addDavElement( doc, prop, "getcontenttype" ); + kdDebug(5800) << "props = "<< doc.toString() << endl; + TDEIO::TransferJob *job = TDEIO::davPropFind( url, doc, "1", false ); + if ( job ) { + job->addMetaData( "accept", "text/xml" ); + job->addMetaData( "customHTTPHeader", "accept-encoding: " ); + } + return job; +} + + +TDEIO::TransferJob *GroupDavGlobals::createDownloadJob( KPIM::GroupwareDataAdaptor *adaptor, + const KURL &url, KPIM::FolderLister::ContentType /*ctype*/ ) +{ +kdDebug()<<"GroupDavGlobals::createDownloadJob, url="<mimeType(); + job->addMetaData( "accept", mt ); + } + job->addMetaData( "PropagateHttpHeader", "true" ); + return job; +} + + +TDEIO::Job *GroupDavGlobals::createRemoveJob( KPIM::GroupwareDataAdaptor *adaptor, const KURL &/*uploadurl*/, + KPIM::GroupwareUploadItem *deletedItem ) +{ + if ( !deletedItem ) return 0; + //kdDebug(7000) << "Delete: " << endl << format.toICalString(*it) << endl; + KURL url( deletedItem->url() ); + if ( adaptor ) { + adaptor->adaptUploadUrl( url ); + } + TDEIO::Job *delJob = 0; + if ( !url.isEmpty() ) { + kdDebug(5700) << "Delete: " << url.url() << endl; + delJob = TDEIO::file_delete( url, false ); + } + if ( delJob && adaptor && adaptor->idMapper() ) { + kdDebug(5800 ) << "Adding If-Match metadata: " << adaptor->idMapper()->fingerprint( deletedItem->uid() ) << endl; + delJob->addMetaData( "customHTTPHeader", "If-Match: " + adaptor->idMapper()->fingerprint( deletedItem->uid() ) ); + } + return delJob; + +/* TQStringList urls; + KPIM::GroupwareUploadItem::List::const_iterator it; + kdDebug(5800) << " GroupDavGlobals::createRemoveJob, BaseURL="<url() ); + if ( adaptor ) { + adaptor->adaptUploadUrl( url ); + }*/ +/* KURL url( uploadurl ); + url.setPath( (*it)->url().path() ); + if ( !(*it)->url().isEmpty() )*/ +/* if ( !url.isEmpty() ) { +kdDebug() << "Deleting item at "<< url.url() << endl; + urls << url.url(); + } + kdDebug(5700) << "Delete (Mod) : " << url.url() << endl; + } + return TDEIO::file_del( urls, false, false );*/ +} + + + + +bool GroupDavGlobals::interpretListItemsJob( KPIM::GroupwareDataAdaptor *adaptor, + TDEIO::Job *job ) +{ + TDEIO::DavJob *davjob = dynamic_cast(job); + + if ( !davjob ) { + return false; + } + TQDomDocument doc = davjob->response(); + + kdDebug(7000) << " Doc: " << doc.toString() << endl; + kdDebug(7000) << " IdMapper: " << adaptor->idMapper()->asString() << endl; + + TQDomElement docElem = doc.documentElement(); + TQDomNode n = docElem.firstChild(); + while( !n.isNull() ) { + TQDomElement e = n.toElement(); // try to convert the node to an element. + n = n.nextSibling(); + if ( e.isNull() ) + continue; + + const KURL &entry( e.namedItem("href").toElement().text() ); + TQDomElement propstat = e.namedItem("propstat").toElement(); + if ( propstat.isNull() ) + continue; + TQDomElement prop = propstat.namedItem( "prop" ).toElement(); + if ( prop.isNull() ) + continue; + TQDomElement elem = prop.namedItem("getetag").toElement(); + const TQString &newFingerprint = elem.text(); + if ( elem.isNull() || newFingerprint.isEmpty() ) + continue; + + KPIM::FolderLister::ContentType type = getContentType( prop ); + + adaptor->processDownloadListItem( entry, newFingerprint, type ); + } + + return true; +} + + +bool GroupDavGlobals::interpretCalendarDownloadItemsJob( KCal::CalendarAdaptor *adaptor, + TDEIO::Job *job, const TQString &jobData ) +{ +kdDebug(5800) << "GroupDavGlobals::interpretCalendarDownloadItemsJob, iCalendar=" << endl; +kdDebug(5800) << jobData << endl; + if ( !adaptor || !job ) return false; + KCal::CalendarLocal calendar( TQString::fromLatin1("UTC") ); + KCal::ICalFormat ical; + calendar.setTimeZoneId( adaptor->resource()->timeZoneId() ); + KCal::Incidence::List incidences; + if ( ical.fromString( &calendar, jobData ) ) { + KCal::Incidence::List raw = calendar.rawIncidences(); + KCal::Incidence::List::Iterator it = raw.begin(); + if ( raw.count() != 1 ) { + kdError() << "Parsed iCalendar does not contain exactly one event." << endl; + return false; + } + + KCal::Incidence *inc = (raw.front())->clone(); + if ( !inc ) return false; + TDEIO::SimpleJob *sjob = dynamic_cast(job); + KURL remoteId; + if ( sjob ) remoteId = sjob->url(); + TQString fingerprint = extractFingerprint( job, jobData ); + adaptor->calendarItemDownloaded( inc, inc->uid(), remoteId, fingerprint, + remoteId.prettyURL() ); + return true; + } else { + kdError() << "Unable to parse iCalendar" << endl; + } + return false; +} + + +bool GroupDavGlobals::interpretAddressBookDownloadItemsJob( + KABC::AddressBookAdaptor *adaptor, TDEIO::Job *job, const TQString &jobData ) +{ +kdDebug(5800) << "GroupDavGlobals::interpretAddressBookDownloadItemsJob, vCard=" << endl; +kdDebug(5800) << jobData << endl; + if ( !adaptor || !job ) return false; + + KABC::VCardConverter conv; + KABC::Addressee::List addrs( conv.parseVCards( jobData ) ); + + if ( addrs.count() != 1 ) { + kdError() << "Parsed vCard does not contain exactly one addressee." << endl; + return false; + } + + KABC::Addressee a = addrs.first(); + + TDEIO::SimpleJob *sjob = dynamic_cast(job); + KURL remoteId; + if ( sjob ) remoteId = sjob->url(); + TQString fingerprint = extractFingerprint( job, jobData ); + adaptor->addressbookItemDownloaded( a, a.uid(), remoteId, fingerprint, + remoteId.prettyURL() ); + return true; +} + + -- cgit v1.2.1