diff options
author | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2013-01-26 13:17:50 -0600 |
---|---|---|
committer | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2013-01-26 13:17:50 -0600 |
commit | b363d2579af0a11b77e698aed2e1021c2233b644 (patch) | |
tree | f4a47b87354b7a6a3b266c8121bd8ddaeb7accaa /kresources/slox | |
parent | 61bddfe3a7226b18c68a76124b727c736f431688 (diff) | |
download | tdepim-b363d2579af0a11b77e698aed2e1021c2233b644.tar.gz tdepim-b363d2579af0a11b77e698aed2e1021c2233b644.zip |
Rename a number of libraries and executables to avoid conflicts with KDE4
Diffstat (limited to 'kresources/slox')
33 files changed, 0 insertions, 4713 deletions
diff --git a/kresources/slox/CMakeLists.txt b/kresources/slox/CMakeLists.txt deleted file mode 100644 index 423569785..000000000 --- a/kresources/slox/CMakeLists.txt +++ /dev/null @@ -1,81 +0,0 @@ -################################################# -# -# (C) 2010-2011 Serghei Amelian -# serghei (DOT) amelian (AT) gmail.com -# -# Improvements and feedback are welcome -# -# This file is released under GPL >= 2 -# -################################################# - -include_directories( - ${CMAKE_CURRENT_BINARY_DIR} - ${CMAKE_BINARY_DIR} - ${CMAKE_SOURCE_DIR} - ${CMAKE_SOURCE_DIR}/libtdepim - ${TDE_INCLUDE_DIR} - ${TQT_INCLUDE_DIRS} -) - -link_directories( - ${TQT_LIBRARY_DIRS} -) - - -##### other data ################################ - -install( FILES kcal_slox.desktop kcal_ox.desktop DESTINATION ${SERVICES_INSTALL_DIR}/kresources/kcal ) -install( FILES kabc_slox.desktop kabc_ox.desktop DESTINATION ${SERVICES_INSTALL_DIR}/kresources/kabc ) - - -##### kcal_slox (module) ######################## - -tde_add_kpart( kcal_slox AUTOMOC - SOURCES kcalresourceslox_plugin.cpp - LINK kcal_slox-shared - DESTINATION ${PLUGIN_INSTALL_DIR} -) - - -##### kabc_slox (module) ######################## - -tde_add_kpart( kabc_slox AUTOMOC - SOURCES kabcresourceslox_plugin.cpp - LINK kabc_slox-shared - DESTINATION ${PLUGIN_INSTALL_DIR} -) - - -##### kslox (shared) ############################ - -tde_add_library( kslox SHARED AUTOMOC - SOURCES - sloxaccounts.cpp webdavhandler.cpp sloxfolder.cpp sloxfoldermanager.cpp - sloxfolderdialog.cpp sloxbase.cpp - VERSION 0.0.0 - LINK tdepim-shared - DESTINATION ${LIB_INSTALL_DIR} -) - - -##### kabc_slox (shared) ######################## - -tde_add_library( kabc_slox SHARED AUTOMOC - SOURCES - kabcresourceslox.cpp kabcresourcesloxconfig.cpp kabcsloxprefs.kcfgc - VERSION 0.0.0 - LINK kslox-shared - DESTINATION ${LIB_INSTALL_DIR} -) - - -##### kcal_slox (shared) ######################## - -tde_add_library( kcal_slox SHARED AUTOMOC - SOURCES - kcalresourceslox.cpp kcalresourcesloxconfig.cpp kcalsloxprefs.kcfgc - VERSION 0.0.0 - LINK kslox-shared - DESTINATION ${LIB_INSTALL_DIR} -) diff --git a/kresources/slox/Makefile.am b/kresources/slox/Makefile.am deleted file mode 100644 index 2367ec786..000000000 --- a/kresources/slox/Makefile.am +++ /dev/null @@ -1,51 +0,0 @@ -INCLUDES = -I$(top_srcdir) $(all_includes) - - -lib_LTLIBRARIES = libkslox.la libkabc_slox.la libkcal_slox.la - -libkslox_la_SOURCES = sloxaccounts.cpp webdavhandler.cpp \ - sloxfolder.cpp sloxfoldermanager.cpp \ - sloxfolderdialog.cpp sloxbase.cpp -libkslox_la_LDFLAGS = $(all_libraries) -libkslox_la_LIBADD = $(top_builddir)/libkcal/libkcal.la \ - $(top_builddir)/libtdepim/libtdepim.la - -libkcal_slox_la_SOURCES = kcalresourceslox.cpp kcalresourcesloxconfig.cpp \ - kcalsloxprefs.kcfgc -libkcal_slox_la_LDFLAGS = $(all_libraries) -libkcal_slox_la_LIBADD = libkslox.la $(top_builddir)/libkcal/libkcal.la - -libkabc_slox_la_SOURCES = kabcresourceslox.cpp kabcresourcesloxconfig.cpp \ - kabcsloxprefs.kcfgc -libkabc_slox_la_LDFLAGS = $(all_libraries) -libkabc_slox_la_LIBADD = libkslox.la -lkabc - - -kde_module_LTLIBRARIES = kcal_slox.la kabc_slox.la - -kcal_slox_la_SOURCES = kcalresourceslox_plugin.cpp -kcal_slox_la_LDFLAGS = $(all_libraries) -module $(KDE_PLUGIN) -kcal_slox_la_LIBADD = libkcal_slox.la - -kabc_slox_la_SOURCES = kabcresourceslox_plugin.cpp -kabc_slox_la_LDFLAGS = $(all_libraries) -module $(KDE_PLUGIN) -kabc_slox_la_LIBADD = libkabc_slox.la - - -EXTRA_PROGRAMS = testsloxaccounts - -testsloxaccounts_LDFLAGS = $(all_libraries) $(KDE_RPATH) $(LIB_QT) -lDCOP $(LIB_TDECORE) $(LIB_TDEUI) -ltdefx $(LIB_KIO) -lktexteditor -testsloxaccounts_LDADD = libkslox.la -testsloxaccounts_SOURCES = testsloxaccounts.cpp - - -kcal_servicedir = $(kde_servicesdir)/kresources/kcal -kcal_service_DATA = kcal_slox.desktop kcal_ox.desktop - -kabc_servicedir = $(kde_servicesdir)/kresources/kabc -kabc_service_DATA = kabc_slox.desktop kabc_ox.desktop - -METASOURCES = AUTO - -messages: rc.cpp - $(XGETTEXT) *.cpp -o $(podir)/kabc_slox.pot diff --git a/kresources/slox/kabc_ox.desktop b/kresources/slox/kabc_ox.desktop deleted file mode 100644 index 39570ad29..000000000 --- a/kresources/slox/kabc_ox.desktop +++ /dev/null @@ -1,46 +0,0 @@ -[Desktop Entry] -Name=OpenXchange Server -Name[af]=OpenXchange bediener -Name[bg]=Сървър OpenXchange -Name[br]=Servijer OpenXchange -Name[ca]=Servidor OpenXchange -Name[da]=Openxchange-server -Name[el]=Εξυπηρετητής OpenXchange -Name[es]=Servidor OpenXchange -Name[et]=OpenXchange server -Name[eu]=OpenXchange zerbitzaria -Name[fa]=کارساز OpenXchange -Name[fi]=OpenXchange-palvelin -Name[fr]=Serveur OpenXchange -Name[fy]=OpenXchange-tsjinner -Name[ga]=Freastalaí Openexchange -Name[gl]=Servidor OpenXchange -Name[hu]=OpenXchange-kiszolgáló -Name[is]=OpenXchange þjónn -Name[ja]=OpenXchange サーバ -Name[kk]=OpenXchange сервері -Name[km]=ម៉ាស៊ីនបម្រើ OpenXchange -Name[lt]=OpenXchange serveris -Name[mk]=OpenXchange-сервер -Name[nb]=OpenExchange-tjener -Name[nds]=OpenXchange-Server -Name[ne]=ओपन एक्सचेन्ज सर्भर -Name[nl]=OpenXchange-server -Name[nn]=OpenXchange-tenar -Name[pl]=Server OpenXchange -Name[pt]=Servidor OpenXchange -Name[pt_BR]=Servidor OpenXchange -Name[ru]=Сервер OpenXchange -Name[sl]=Strežnik OpenXchange -Name[sr]=Openexchange сервер -Name[sr@Latn]=Openexchange server -Name[sv]=Openxchange-server -Name[tr]=OpenXchange Sunucusu -Name[uk]=Сервер OpenXchange -Name[zh_CN]=OpenXchange 服务器 -Name[zh_TW]=OpenXchange 伺服器 -X-TDE-Library=kabc_slox -Type=Service -ServiceTypes=KResources/Plugin -X-TDE-ResourceFamily=contact -X-TDE-ResourceType=ox diff --git a/kresources/slox/kabc_slox.desktop b/kresources/slox/kabc_slox.desktop deleted file mode 100644 index 6c7b0352c..000000000 --- a/kresources/slox/kabc_slox.desktop +++ /dev/null @@ -1,51 +0,0 @@ -[Desktop Entry] -Name=SUSE LINUX Openexchange Server -Name[af]=SuSE Linux OpenExchange bediener -Name[bg]=Сървър SUSE LINUX Openexchange -Name[br]=Servijer Openexchange SUSE LINUX -Name[ca]=Servidor SUSE LINUX Openexchange -Name[cs]=SUSE LINUX Openexchange server -Name[da]=SUSE Linux Openexchange-server -Name[de]=SUSE LINUX Openexchange-Server -Name[el]=Εξυπηρετητή SUSE LINUX Openexchange -Name[es]=Servidor Openexchange de SUSE LINUX -Name[et]=SUSE LINUX Openexchange server -Name[eu]=SUSE LINUX Openexchange zerbitzaria -Name[fa]=کارساز SUSE LINUX Openexchange -Name[fi]=Suse Linux Openexchange -palvelin -Name[fr]=Serveur SUSE Linux Openexchange -Name[fy]=SUSE LINUX Openexchange-tsjinner -Name[ga]=Freastalaí Openexchange SUSE LINUX -Name[gl]=Servidor SUSE LINUX Openexchange -Name[hu]=SUSE LINUX Openexchange-kiszolgáló -Name[is]=SUSE LINUX Openexchange þjónn -Name[it]=Server SUSE LINUX Openexchange -Name[ja]=SUSE LINUX Openexchange サーバ -Name[kk]=SUSE LINUX Openexchange сервері -Name[km]=ម៉ាស៊ីនបម្រើ Openexchange របស់ស៊ូស៊ីលីនីក -Name[lt]=SUSE LINUX Openexchange serveris -Name[mk]=SUSE LINUX Openexchange-сервер -Name[ms]=Pelayan SUSE LINUX Openexchange -Name[nb]=SUSE LINUX Openexchange-tjener -Name[nds]=SUSE-Openexchangeserver -Name[ne]=SUSE LINUX ओपन एक्सचेन्ज सर्भर -Name[nl]=SUSE LINUX Openexchange-server -Name[nn]=SUSE LINUX Openexchange-tenar -Name[pl]=Server SUSE LINUX Openexchange -Name[pt]=Servidor SUSE LINUX Openexchange -Name[pt_BR]=Servidor OpenExchange do SUSE Linux (SLOX) -Name[ru]=Сервер SUSE LINUX Openexchange -Name[sl]=Strežnik SUSE LINUX Openexchange -Name[sr]=Openexchange сервер SUSE-овог Linux-а -Name[sr@Latn]=Openexchange server SUSE-ovog Linux-a -Name[sv]=SUSE Linux Openexchange-server -Name[ta]=SUSE LINUX திறந்த பரிமாற்ற சேவகன் -Name[tr]=SUSE LINUX Openexchange Sunucusu -Name[uk]=Сервер SUSE LINUX Openexchange -Name[zh_CN]=SUSE LINUX Openexchange 服务器 -Name[zh_TW]=SUSE LINUX Openexchange 伺服器 -X-TDE-Library=kabc_slox -Type=Service -ServiceTypes=KResources/Plugin -X-TDE-ResourceFamily=contact -X-TDE-ResourceType=slox diff --git a/kresources/slox/kabcresourceslox.cpp b/kresources/slox/kabcresourceslox.cpp deleted file mode 100644 index b83c0b957..000000000 --- a/kresources/slox/kabcresourceslox.cpp +++ /dev/null @@ -1,684 +0,0 @@ -/* - This file is part of tdepim. - - Copyright (c) 2004 Cornelius Schumacher <schumacher@kde.org> - Copyright (c) 2005 Volker Krause <volker.krause@rwth-aachen.de> - - 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; either version 2 of the License, or - (at your option) any later version. - - 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; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -*/ - -#include <tqapplication.h> - -#include <kabc/picture.h> -#include <kconfig.h> -#include <kdebug.h> -#include <klocale.h> -#include <kmdcodec.h> -#include <kstandarddirs.h> -#include <kstringhandler.h> -#include <libtdepim/kpimprefs.h> -#include <libtdepim/progressmanager.h> -#include <kio/davjob.h> - -#include "webdavhandler.h" -#include "sloxaccounts.h" -#include "kabcsloxprefs.h" - -#include "kabcresourceslox.h" - -using namespace KABC; - -ResourceSlox::ResourceSlox( const TDEConfig *config ) - : ResourceCached( config ), SloxBase( this ) -{ - init(); - - mPrefs->addGroupPrefix( identifier() ); - - if ( config ) { - readConfig( config ); - } else { - setResourceName( i18n( "OpenXchange Server" ) ); - } -} - -ResourceSlox::ResourceSlox( const KURL &url, - const TQString &user, const TQString &password ) - : ResourceCached( 0 ), SloxBase( this ) -{ - init(); - - mPrefs->addGroupPrefix( identifier() ); - - mPrefs->setUrl( url.url() ); - mPrefs->setUser( user ); - mPrefs->setPassword( password ); -} - -void ResourceSlox::init() -{ - mPrefs = new SloxPrefs; - mWebdavHandler.setResource( this ); - - mDownloadJob = 0; - mUploadJob = 0; - mDownloadProgress = 0; - mUploadProgress = 0; - - // phone number mapping for SLOX - mPhoneNumberSloxMap[PhoneNumber::Work] << "phone" << "phone2"; - mPhoneNumberSloxMap[PhoneNumber::Home] << "privatephone" << "privatephone2"; - mPhoneNumberSloxMap[PhoneNumber::Cell | PhoneNumber::Work] << "mobile" << "mobile2"; - mPhoneNumberSloxMap[PhoneNumber::Cell | PhoneNumber::Home] << "privatemobile" << "privatemobile2"; - mPhoneNumberSloxMap[PhoneNumber::Fax | PhoneNumber::Work] << "fax" << "fax2"; - mPhoneNumberSloxMap[PhoneNumber::Fax | PhoneNumber::Home] << "privatefax" << "privatefax2"; - - // phone number mapping for OX (mapping partly taken from Kolab) - mPhoneNumberOxMap[PhoneNumber::Work] << "phone_business" << "phone_business2"; - mPhoneNumberOxMap[PhoneNumber::Home] << "phone_home" << "phone_home2"; - mPhoneNumberOxMap[PhoneNumber::Cell] << "mobile1"<< "mobile2"; - mPhoneNumberOxMap[PhoneNumber::Fax | PhoneNumber::Work] << "fax_business"; - mPhoneNumberOxMap[PhoneNumber::Fax | PhoneNumber::Home] << "fax_home"; - mPhoneNumberOxMap[PhoneNumber::Fax] << "fax_other"; - mPhoneNumberOxMap[PhoneNumber::Car] << "phone_car"; - mPhoneNumberOxMap[PhoneNumber::Isdn] << "isdn"; - mPhoneNumberOxMap[PhoneNumber::Pager] << "pager"; - mPhoneNumberOxMap[PhoneNumber::Pref] << "primary"; - mPhoneNumberOxMap[PhoneNumber::Voice] << "callback"; - mPhoneNumberOxMap[PhoneNumber::Video] << "radio"; - mPhoneNumberOxMap[PhoneNumber::Bbs] << "tty_tdd"; - mPhoneNumberOxMap[PhoneNumber::Modem] << "telex"; - mPhoneNumberOxMap[PhoneNumber::Pcs] << "phone_assistant"; - mPhoneNumberOxMap[PhoneNumber::Msg] << "phone_company"; -} - -ResourceSlox::~ResourceSlox() -{ - kdDebug() << "KABC::~ResourceSlox()" << endl; - - if ( mDownloadJob ) mDownloadJob->kill(); - - delete mPrefs; - - kdDebug() << "KABC::~ResourceSlox() done" << endl; -} - -void ResourceSlox::readConfig( const TDEConfig * ) -{ - mPrefs->readConfig(); -} - -void ResourceSlox::writeConfig( TDEConfig *config ) -{ - kdDebug() << "ResourceSlox::writeConfig() " << endl; - kdDebug() << mPrefs->url() << endl; - - Resource::writeConfig( config ); - - mPrefs->writeConfig(); -} - -Ticket *ResourceSlox::requestSaveTicket() -{ - if ( !addressBook() ) { - kdDebug(5700) << "no addressbook" << endl; - return 0; - } - - return createTicket( this ); -} - -void ResourceSlox::releaseSaveTicket( Ticket *ticket ) -{ - delete ticket; -} - -bool ResourceSlox::doOpen() -{ - return true; -} - -void ResourceSlox::doClose() -{ - cancelDownload(); - cancelUpload(); -} - -bool ResourceSlox::load() -{ - kdDebug() << "KABC::ResourceSlox::load()" << endl; - -#if 0 - return asyncLoad(); -#else - kdDebug() << "KABC::ResourceSlox::load() is a nop." << endl; - return true; -#endif -} - -bool ResourceSlox::asyncLoad() -{ - kdDebug() << "KABC::ResourceSlox::asyncLoad()" << endl; - - if ( mDownloadJob ) { - kdDebug() << "KABC::ResourceSlox::asyncLoad(): Loading still in progress." - << endl; - return true; - } - - loadCache(); - clearChanges(); - - KURL url = mPrefs->url(); - url.setPath( "/servlet/webdav.contacts/" ); - url.setUser( mPrefs->user() ); - url.setPass( mPrefs->password() ); - - TQString lastsync = "0"; - if ( mPrefs->useLastSync() ) { - TQDateTime dt = mPrefs->lastSync(); - if ( dt.isValid() ) - lastsync = WebdavHandler::qDateTimeToSlox( dt.addDays( -1 ) ); - } - - TQDomDocument doc; - TQDomElement root = WebdavHandler::addDavElement( doc, doc, "propfind" ); - TQDomElement prop = WebdavHandler::addDavElement( doc, root, "prop" ); - WebdavHandler::addSloxElement( this, doc, prop, fieldName( LastSync ), lastsync ); - WebdavHandler::addSloxElement( this, doc, prop, fieldName( FolderId ), mPrefs->folderId() ); - if ( type() == "ox" ) { - WebdavHandler::addSloxElement( this, doc, prop, fieldName( ObjectType ), "NEW_AND_MODIFIED" ); - WebdavHandler::addSloxElement( this, doc, prop, fieldName( ObjectType ), "DELETED" ); - } else - WebdavHandler::addSloxElement( this, doc, prop, fieldName( ObjectType ), "all" ); - - kdDebug() << "REQUEST CONTACTS: \n" << doc.toString( 2 ) << endl; - - mDownloadJob = TDEIO::davPropFind( url, doc, "0", false ); - connect( mDownloadJob, TQT_SIGNAL( result( TDEIO::Job * ) ), - TQT_SLOT( slotResult( TDEIO::Job * ) ) ); - connect( mDownloadJob, TQT_SIGNAL( percent( TDEIO::Job *, unsigned long ) ), - TQT_SLOT( slotProgress( TDEIO::Job *, unsigned long ) ) ); - - mDownloadProgress = KPIM::ProgressManager::instance()->createProgressItem( - KPIM::ProgressManager::getUniqueID(), i18n("Downloading contacts") ); - connect( mDownloadProgress, - TQT_SIGNAL( progressItemCanceled( KPIM::ProgressItem * ) ), - TQT_SLOT( cancelDownload() ) ); - - mPrefs->setLastSync( TQDateTime::currentDateTime() ); - - return true; -} - -void ResourceSlox::slotResult( TDEIO::Job *job ) -{ - kdDebug() << "ResourceSlox::slotResult()" << endl; - - if ( job->error() ) { - job->showErrorDialog( 0 ); - } else { - kdDebug() << "ResourceSlox::slotResult() success" << endl; - - TQDomDocument doc = mDownloadJob->response(); - - mWebdavHandler.log( doc.toString( 2 ) ); - - TQValueList<SloxItem> items = WebdavHandler::getSloxItems( this, doc ); - - bool changed = false; - - TQValueList<SloxItem>::ConstIterator it; - for( it = items.begin(); it != items.end(); ++it ) { - SloxItem item = *it; - TQString uid = "kresources_slox_kabc_" + item.sloxId; - if ( item.status == SloxItem::Delete ) { - TQMap<TQString,Addressee>::Iterator it; - it = mAddrMap.find( uid ); - if ( it != mAddrMap.end() ) { - mAddrMap.remove( it ); - changed = true; - } - } else if ( item.status == SloxItem::Create ) { - Addressee a; - a.setUid( uid ); - - mWebdavHandler.clearSloxAttributeStatus(); - - TQDomNode n; - for( n = item.domNode.firstChild(); !n.isNull(); n = n.nextSibling() ) { - TQDomElement e = n.toElement(); - mWebdavHandler.parseSloxAttribute( e ); - parseContactAttribute( e, a ); - } - - mWebdavHandler.setSloxAttributes( a ); - - a.setResource( this ); - a.setChanged( false ); - - mAddrMap.replace( a.uid(), a ); - - // TODO: Do we need to try to associate addressees with slox accounts? - - changed = true; - } - } - - clearChanges(); - saveCache(); - } - - mDownloadJob = 0; - mDownloadProgress->setComplete(); - mDownloadProgress = 0; - - emit loadingFinished( this ); -} - -void ResourceSlox::slotUploadResult( TDEIO::Job *job ) -{ - kdDebug() << "ResourceSlox::slotUploadResult()" << endl; - - if ( job->error() ) { - job->showErrorDialog( 0 ); - } else { - kdDebug() << "ResourceSlox::slotUploadResult() success" << endl; - - TQDomDocument doc = mUploadJob->response(); - kdDebug() << k_funcinfo << "Upload result: " << endl; - kdDebug() << doc.toString() << endl; - - TQValueList<SloxItem> items = WebdavHandler::getSloxItems( this, doc ); - - TQValueList<SloxItem>::ConstIterator it; - for( it = items.begin(); it != items.end(); ++it ) { - SloxItem item = *it; - if ( !item.response.contains( "200" ) ) { - savingError( this, item.response + "\n" + item.responseDescription ); - continue; - } - if ( item.status == SloxItem::New ) { - TQMap<TQString,Addressee>::Iterator search_res; - search_res = mAddrMap.find( item.clientId ); - if ( search_res != mAddrMap.end() ) { - // use the id provided by the server - Addressee a = *search_res; - mAddrMap.remove( search_res ); - a.setUid( "kresources_slox_kabc_" + item.sloxId ); - a.setResource( this ); - a.setChanged( false ); - mAddrMap.replace( a.uid(), a ); - saveCache(); - } - } - } - } - - clearChange( mUploadAddressee ); - - mUploadJob = 0; - mUploadProgress->setComplete(); - mUploadProgress = 0; - - uploadContacts(); -} - -void ResourceSlox::parseContactAttribute( const TQDomElement &e, Addressee &a ) -{ - TQString text = decodeText( e.text() ); - if ( text.isEmpty() ) return; - TQString tag = e.tagName(); - int pnType = 0; - - if ( tag == fieldName( Birthday ) ) { - TQDateTime dt = WebdavHandler::sloxToTQDateTime( text ); - a.setBirthday( dt.date() ); - } else if ( tag == fieldName( Role ) ) { - a.setRole( text ); - } else if ( tag == "salutation" ) { // what's this in OX? - a.setPrefix( text ); - } else if ( tag == fieldName( Title ) ) { - a.setTitle( text ); - } else if ( tag == fieldName( Organization ) ) { - a.setOrganization( text ); - } else if ( tag == fieldName( Department ) ) { -#if KDE_IS_VERSION(3,5,8) - a.setDepartment( text ); -#else - a.insertCustom( "KADDRESSBOOK", "X-Department", text ); -#endif - } else if ( tag == fieldName( FamilyName ) ) { - a.setFamilyName( text ); - } else if ( tag == fieldName( GivenName) ) { - a.setGivenName( text ); - } else if ( tag == fieldName( SecondName ) ) { - a.setAdditionalName( text ); - } else if ( tag == fieldName( DisplayName ) ) { - a.setFormattedName( text ); - } else if ( tag == fieldName( Suffix ) ) { - a.setSuffix( text ); - } else if ( tag == fieldName( PrimaryEmail ) ) { - a.insertEmail( text, true ); - } else if ( (pnType = phoneNumberType( tag )) ) { - a.insertPhoneNumber( PhoneNumber( text, pnType ) ); - } else if ( tag == fieldName( Comment ) ) { - a.setNote( text ); - } else if ( tag == fieldName( SecondaryEmail1 ) || tag == fieldName( SecondaryEmail2 ) || - tag == fieldName( SecondaryEmail3 ) ) { - a.insertEmail( text ); - } else if ( tag == fieldName( Url ) ) { - a.setUrl( text ); - } else if ( tag == fieldName( Image ) ) { - TQByteArray decodedPicture; - KCodecs::base64Decode( text.utf8(), decodedPicture ); - a.setPhoto( Picture( TQImage( decodedPicture ) ) ); - } else if ( tag == fieldName( NickName ) ) { - a.setNickName( text ); - } else if ( tag == fieldName( InstantMsg ) ) { - a.insertCustom( "KADDRESSBOOK", "X-IMAddress", text ); - } else if ( tag == fieldName( Office ) ) { - a.insertCustom( "KADDRESSBOOK", "X-Office", text ); - } else if ( tag == fieldName( Profession ) ) { - a.insertCustom( "KADDRESSBOOK", "X-Profession", text ); - } else if ( tag == fieldName( ManagersName ) ) { - a.insertCustom( "KADDRESSBOOK", "X-ManagersName", text ); - } else if ( tag == fieldName( AssistantsName ) ) { - a.insertCustom( "KADDRESSBOOK", "X-AssistantsName", text ); - } else if ( tag == fieldName( SpousesName ) ) { - a.insertCustom( "KADDRESSBOOK", "X-SpousesName", text ); - } else if ( tag == fieldName( Anniversary ) ) { - TQDateTime dt = WebdavHandler::sloxToTQDateTime( text ); - a.insertCustom( "KADDRESSBOOK", "X-Anniversary", dt.toString( Qt::ISODate ) ); - } else if ( tag == fieldName( Categories ) ) { - a.setCategories( TQStringList::split( TQRegExp(",\\s*"), text ) ); - } else if ( type() == "ox" ) { // FIXME: Address reading is missing for SLOX - // read addresses - Address addr; - if ( tag.startsWith( fieldName( BusinessPrefix ) ) ) { - addr = a.address( KABC::Address::Work ); - } else if ( tag.startsWith( fieldName( OtherPrefix ) ) ) { - addr = a.address( 0 ); - } else { - addr = a.address( KABC::Address::Home ); - } - if ( tag.endsWith( fieldName( Street ) ) ) { - addr.setStreet( text ); - } else if ( tag.endsWith( fieldName( PostalCode ) ) ) { - addr.setPostalCode( text ); - } else if ( tag.endsWith( fieldName( City ) ) ) { - addr.setLocality( text ); - } else if ( tag.endsWith( fieldName( State ) ) ) { - addr.setRegion( text ); - } else if ( tag.endsWith( fieldName( Country ) ) ) { - addr.setCountry( text ); - } - a.insertAddress( addr ); - } -} - -int ResourceSlox::phoneNumberType( const TQString &fieldName ) const -{ - TQMap<int, TQStringList> pnmap; - if ( type() == "ox" ) - pnmap = mPhoneNumberOxMap; - else - pnmap = mPhoneNumberSloxMap; - TQMap<int, TQStringList>::ConstIterator it; - for ( it = pnmap.begin(); it != pnmap.end(); ++it ) { - TQStringList l = it.data(); - TQStringList::ConstIterator it2; - for ( it2 = l.begin(); it2 != l.end(); ++it2 ) - if ( (*it2) == fieldName ) - return it.key(); - } - return 0; -} - -bool ResourceSlox::save( Ticket* ) -{ - kdDebug() << k_funcinfo << endl; - - if ( readOnly() || !hasChanges() || type() != "ox" ) { - emit savingFinished( this ); - return true; - } - - if ( mDownloadJob ) { - kdWarning() << k_funcinfo << "download still in progress" << endl; - return false; - } - if ( mUploadJob ) { - kdWarning() << k_funcinfo << "upload still in progress" << endl; - return false; - } - - saveCache(); - uploadContacts(); - return true; -} - -bool ResourceSlox::asyncSave( Ticket* ) -{ - return false; // readonly -} - -void ResourceSlox::uploadContacts() -{ - TQDomDocument doc; - TQDomElement root = WebdavHandler::addDavElement( doc, doc, "propertyupdate" ); - TQDomElement set = WebdavHandler::addDavElement( doc, root, "set" ); - TQDomElement prop = WebdavHandler::addDavElement( doc, set, "prop" ); - - bool isDelete = false; - - KABC::Addressee::List addedAddr = addedAddressees(); - KABC::Addressee::List changedAddr = changedAddressees(); - KABC::Addressee::List deletedAddr = deletedAddressees(); - - if ( !addedAddr.isEmpty() ) { - mUploadAddressee = addedAddr.first(); - WebdavHandler::addSloxElement( this, doc, prop, fieldName( ClientId ), mUploadAddressee.uid() ); - } else if ( !changedAddr.isEmpty() ) { - mUploadAddressee = changedAddr.first(); - WebdavHandler::addSloxElement( this, doc, prop, fieldName( ObjectId ), - mUploadAddressee.uid().remove( 0, sizeof("kresources_slox_kabc_") - 1) ); - } else if ( !deletedAddr.isEmpty() ) { - mUploadAddressee = deletedAddr.first(); - isDelete = true; - } else { - kdDebug() << k_funcinfo << "Upload finished." << endl; - emit savingFinished( this ); - return; - } - - if ( !isDelete ) { - createAddresseeFields( doc, prop, mUploadAddressee ); - } else { - TQString tmp_uid = mUploadAddressee.uid().remove( 0, sizeof("kresources_slox_kabc_") - 1); // remove prefix from uid - WebdavHandler::addSloxElement( this, doc, prop, fieldName( ObjectId ), tmp_uid ); - WebdavHandler::addSloxElement( this, doc, prop, "method", "DELETE" ); - } - - kdDebug() << k_funcinfo << doc.toString() << endl; - - KURL url = mPrefs->url(); - url.setPath( "/servlet/webdav.contacts/" ); - url.setUser( mPrefs->user() ); - url.setPass( mPrefs->password() ); - - mUploadJob = TDEIO::davPropPatch( url, doc, false ); - connect( mUploadJob, TQT_SIGNAL( result( TDEIO::Job * ) ), - TQT_SLOT( slotUploadResult( TDEIO::Job * ) ) ); - connect( mUploadJob, TQT_SIGNAL( percent( TDEIO::Job *, unsigned long ) ), - TQT_SLOT( slotProgress( TDEIO::Job *, unsigned long ) ) ); - - mUploadProgress = KPIM::ProgressManager::instance()->createProgressItem( - KPIM::ProgressManager::getUniqueID(), i18n("Uploading contacts") ); - connect( mUploadProgress, - TQT_SIGNAL( progressItemCanceled( KPIM::ProgressItem * ) ), - TQT_SLOT( cancelUpload() ) ); -} - -void ResourceSlox::createAddresseeFields( TQDomDocument &doc, TQDomElement &prop, - const Addressee &a ) -{ - // choose addressbook - WebdavHandler::addSloxElement( this, doc, prop, fieldName( FolderId ), mPrefs->folderId() ); - - // person - WebdavHandler::addSloxElement( this, doc, prop, fieldName( GivenName ), a.givenName() ); - WebdavHandler::addSloxElement( this, doc, prop, fieldName( FamilyName ), a.familyName() ); - WebdavHandler::addSloxElement( this, doc, prop, fieldName( Title ), a.title() ); - if ( !a.birthday().isNull() ) - WebdavHandler::addSloxElement( this, doc, prop, fieldName( Birthday ), - WebdavHandler::qDateTimeToSlox( a.birthday() ) ); - else - WebdavHandler::addSloxElement( this, doc, prop, fieldName( Birthday ) ); - WebdavHandler::addSloxElement( this, doc, prop, fieldName( Role ), a.role() ); -#if KDE_IS_VERSION(3,5,8) - WebdavHandler::addSloxElement( this, doc, prop, fieldName( Department ), - a.department( ) ); -#else - WebdavHandler::addSloxElement( this, doc, prop, fieldName( Department ), - a.custom( "KADDRESSBOOK", "X-Department" ) ); -#endif - if ( type() == "ox" ) { // OX only fields - WebdavHandler::addSloxElement( this, doc, prop, fieldName( DisplayName ), a.formattedName() ); - WebdavHandler::addSloxElement( this, doc, prop, fieldName( SecondName ), a.additionalName() ); - WebdavHandler::addSloxElement( this, doc, prop, fieldName( Suffix ), a.suffix() ); - WebdavHandler::addSloxElement( this, doc, prop, fieldName( Organization ), a.organization() ); - WebdavHandler::addSloxElement( this, doc, prop, fieldName( NickName ), a.nickName() ); - WebdavHandler::addSloxElement( this, doc, prop, fieldName( InstantMsg ), - a.custom( "KADDRESSBOOK", "X-IMAddress" ) ); - WebdavHandler::addSloxElement( this, doc, prop, fieldName( Office ), - a.custom( "KADDRESSBOOK", "X-Office" ) ); - WebdavHandler::addSloxElement( this, doc, prop, fieldName( Profession ), - a.custom( "KADDRESSBOOK", "X-Profession" ) ); - WebdavHandler::addSloxElement( this, doc, prop, fieldName( ManagersName ), - a.custom( "KADDRESSBOOK", "X-ManagersName" ) ); - WebdavHandler::addSloxElement( this, doc, prop, fieldName( AssistantsName ), - a.custom( "KADDRESSBOOK", "X-AssistantsName" ) ); - WebdavHandler::addSloxElement( this, doc, prop, fieldName( SpousesName ), - a.custom( "KADDRESSBOOK", "X-SpousesName" ) ); - TQString anniversary = a.custom( "KADDRESSBOOK", "X-Anniversary" ); - if ( !anniversary.isEmpty() ) - WebdavHandler::addSloxElement( this, doc, prop, fieldName( Anniversary ), - WebdavHandler::qDateTimeToSlox( TQDateTime::fromString( anniversary, Qt::ISODate ).date() ) ); - else - WebdavHandler::addSloxElement( this, doc, prop, fieldName( Anniversary ) ); - } - - WebdavHandler::addSloxElement( this, doc, prop, fieldName( Url ), a.url().url() ); - WebdavHandler::addSloxElement( this, doc, prop, fieldName( Comment ), a.note() ); - WebdavHandler::addSloxElement( this, doc, prop, fieldName( Categories ), a.categories().join( ", " ) ); - - // emails - TQStringList email_list = a.emails(); - TQStringList::const_iterator emails_it = email_list.begin(); - if ( emails_it != email_list.end() ) - WebdavHandler::addSloxElement( this, doc, prop, fieldName( PrimaryEmail ), *(emails_it++) ); - if ( emails_it != email_list.end() ) - WebdavHandler::addSloxElement( this, doc, prop, fieldName( SecondaryEmail1 ), *(emails_it++) ); - if ( emails_it != email_list.end() ) - WebdavHandler::addSloxElement( this, doc, prop, fieldName( SecondaryEmail2 ), *(emails_it++) ); - - // phone numbers - PhoneNumber::List pnlist = a.phoneNumbers(); - TQMap<int, TQStringList> pnSaveMap; - if ( type() == "ox" ) - pnSaveMap = mPhoneNumberOxMap; - else - pnSaveMap = mPhoneNumberSloxMap; - for ( PhoneNumber::List::ConstIterator it = pnlist.begin() ; it != pnlist.end(); ++it ) { - if ( pnSaveMap.contains( (*it).type() ) ) { - TQStringList l = pnSaveMap[(*it).type()]; - TQString fn = l.first(); - l.remove( l.begin() ); - if ( !l.isEmpty() ) - pnSaveMap[(*it).type()] = l; - else - pnSaveMap.remove( (*it).type() ); - WebdavHandler::addSloxElement( this, doc, prop, fn, (*it).number() ); - } else - kdDebug() << k_funcinfo << "Can't save phone number " << (*it).number() << " of type " << (*it).type() << endl; - } - // send empty fields for the remaining ohone number fields - // it's not possible to delete phone numbers otherwise - for ( TQMap<int, TQStringList>::ConstIterator it = pnSaveMap.begin(); it != pnSaveMap.end(); ++it ) { - TQStringList l = it.data(); - for ( TQStringList::ConstIterator it2 = l.begin(); it2 != l.end(); ++it2 ) - WebdavHandler::addSloxElement( this, doc, prop, (*it2) ); - } - - // write addresses - createAddressFields( doc, prop, fieldName( HomePrefix ), a.address( KABC::Address::Home ) ); - if ( type() == "ox" ) { - createAddressFields( doc, prop, fieldName( BusinessPrefix ), a.address( KABC::Address::Work ) ); - createAddressFields( doc, prop, fieldName( OtherPrefix ), a.address( 0 ) ); - } -} - -void KABC::ResourceSlox::createAddressFields( TQDomDocument &doc, TQDomElement &parent, - const TQString &prefix, const KABC::Address &addr ) -{ - WebdavHandler::addSloxElement( this, doc, parent, prefix + fieldName( Street ), addr.street() ); - WebdavHandler::addSloxElement( this, doc, parent, prefix + fieldName( PostalCode ), addr.postalCode() ); - WebdavHandler::addSloxElement( this, doc, parent, prefix + fieldName( City ), addr.locality() ); - WebdavHandler::addSloxElement( this, doc, parent, prefix + fieldName( State ), addr.region() ); - WebdavHandler::addSloxElement( this, doc, parent, prefix + fieldName( Country ), addr.country() ); -} - -void ResourceSlox::slotProgress( TDEIO::Job *job, unsigned long percent ) -{ - if ( mDownloadProgress && job == mDownloadJob ) - mDownloadProgress->setProgress( percent ); - else if ( mUploadProgress && job == mUploadJob ) - mUploadProgress->setProgress( percent ); -} - -void ResourceSlox::cancelDownload() -{ - if ( mDownloadJob ) mDownloadJob->kill(); - mDownloadJob = 0; - if ( mDownloadProgress ) mDownloadProgress->setComplete(); - mDownloadProgress = 0; -} - -void ResourceSlox::cancelUpload() -{ - if ( mUploadJob ) mUploadJob->kill(); - mUploadJob = 0; - if ( mUploadProgress ) mUploadProgress->setComplete(); - mUploadProgress = 0; -} - -void ResourceSlox::setReadOnly( bool b ) -{ - if ( type() == "ox" ) - KABC::Resource::setReadOnly( b ); - else - KABC::Resource::setReadOnly( true ); -} - -bool ResourceSlox::readOnly() const -{ - if ( type() == "ox" ) - return KABC::Resource::readOnly(); - else - return true; -} - -#include "kabcresourceslox.moc" diff --git a/kresources/slox/kabcresourceslox.h b/kresources/slox/kabcresourceslox.h deleted file mode 100644 index d5251bdc7..000000000 --- a/kresources/slox/kabcresourceslox.h +++ /dev/null @@ -1,114 +0,0 @@ -/* - This file is part of tdepim. - - Copyright (c) 2004 Cornelius Schumacher <schumacher@kde.org> - - 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; either version 2 of the License, or - (at your option) any later version. - - 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; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -*/ -#ifndef KABC_RESOURCESLOX_H -#define KABC_RESOURCESLOX_H - -#include "sloxbase.h" -#include "webdavhandler.h" - -#include <libtdepim/kabcresourcecached.h> -#include <tdepimmacros.h> -#include <kabc/addressee.h> - -#include <tqmap.h> -#include <tqdom.h> - -namespace TDEIO { -class DavJob; -class Job; -} - -namespace KPIM { -class ProgressItem; -} - -class TDEConfig; - -namespace KABC { - -class SloxPrefs; - -class KDE_EXPORT ResourceSlox : public ResourceCached, public SloxBase -{ - Q_OBJECT - - public: - ResourceSlox( const TDEConfig * ); - ResourceSlox( const KURL &url, - const TQString &user, const TQString &password ); - ~ResourceSlox(); - - void readConfig( const TDEConfig * ); - void writeConfig( TDEConfig * ); - - SloxPrefs *prefs() const { return mPrefs; } - - bool doOpen(); - void doClose(); - - Ticket *requestSaveTicket(); - void releaseSaveTicket( Ticket* ); - - bool load(); - bool asyncLoad(); - bool save( Ticket * ); - bool asyncSave( Ticket * ); - - void setReadOnly( bool ); - bool readOnly() const; - - protected: - void init(); - - int phoneNumberType( const TQString &fieldName ) const; - void parseContactAttribute( const TQDomElement &e, Addressee &a ); - - void createAddresseeFields( TQDomDocument &doc, TQDomElement &prop, const Addressee &a ); - void createAddressFields( TQDomDocument &doc, TQDomElement &parent, - const TQString &prefix, const KABC::Address &addr ); - - void uploadContacts(); - - protected slots: - void slotResult( TDEIO::Job *job ); - void slotUploadResult( TDEIO::Job *job ); - void slotProgress( TDEIO::Job *job, unsigned long percent ); - - void cancelDownload(); - void cancelUpload(); - - private: - SloxPrefs *mPrefs; - - TDEIO::DavJob *mDownloadJob; - TDEIO::DavJob *mUploadJob; - KPIM::ProgressItem *mDownloadProgress; - KPIM::ProgressItem *mUploadProgress; - - WebdavHandler mWebdavHandler; - - KABC::Addressee mUploadAddressee; - - TQMap<int, TQStringList> mPhoneNumberSloxMap, mPhoneNumberOxMap; -}; - -} - -#endif diff --git a/kresources/slox/kabcresourceslox_plugin.cpp b/kresources/slox/kabcresourceslox_plugin.cpp deleted file mode 100644 index cbc02f25e..000000000 --- a/kresources/slox/kabcresourceslox_plugin.cpp +++ /dev/null @@ -1,39 +0,0 @@ -/* - This file is part of tdepim. - - Copyright (c) 2004 Cornelius Schumacher <schumacher@kde.org> - - 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; either version 2 of the License, or - (at your option) any later version. - - 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; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -*/ - -#include "kabcresourceslox.h" -#include "kabcresourcesloxconfig.h" - -#include <kglobal.h> -#include <klocale.h> - -using namespace KABC; - -typedef KRES::PluginFactory< ResourceSlox, ResourceSloxConfig > SloxFactory; - -extern "C" -{ - void *init_kabc_slox() - { - TDEGlobal::locale()->insertCatalogue( "libkcal" ); - TDEGlobal::locale()->insertCatalogue( "kabc_slox" ); - return new SloxFactory; - } -} diff --git a/kresources/slox/kabcresourcesloxconfig.cpp b/kresources/slox/kabcresourcesloxconfig.cpp deleted file mode 100644 index d9e32a556..000000000 --- a/kresources/slox/kabcresourcesloxconfig.cpp +++ /dev/null @@ -1,121 +0,0 @@ -/* - This file is part of tdepim. - - Copyright (c) 2004 Cornelius Schumacher <schumacher@kde.org> - - 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; either version 2 of the License, or - (at your option) any later version. - - 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; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -*/ - -#include "kabcresourcesloxconfig.h" - -#include "kabcresourceslox.h" -#include "kabcsloxprefs.h" -#include "sloxbase.h" -#include "sloxfolder.h" -#include "sloxfolderdialog.h" -#include "sloxfoldermanager.h" - -#include <kdebug.h> -#include <kdialog.h> -#include <klocale.h> -#include <klineedit.h> -#include <kurlrequester.h> - -#include <tqcheckbox.h> -#include <tqlabel.h> -#include <tqlayout.h> - -using namespace KABC; - -ResourceSloxConfig::ResourceSloxConfig( TQWidget* parent, const char* name ) - : KRES::ConfigWidget( parent, name ), mRes( 0 ) -{ - TQGridLayout *mainLayout = new TQGridLayout( this, 5, 2, 0, KDialog::spacingHint() ); - - TQLabel *label = new TQLabel( i18n( "URL:" ), this ); - mURL = new KURLRequester( this ); - - mainLayout->addWidget( label, 0, 0 ); - mainLayout->addWidget( mURL, 0, 1 ); - - label = new TQLabel( i18n( "User:" ), this ); - mUser = new KLineEdit( this ); - - mainLayout->addWidget( label, 1, 0 ); - mainLayout->addWidget( mUser, 1, 1 ); - - label = new TQLabel( i18n( "Password:" ), this ); - mPassword = new KLineEdit( this ); - mPassword->setEchoMode( TQLineEdit::Password ); - - mainLayout->addWidget( label, 2, 0 ); - mainLayout->addWidget( mPassword, 2, 1 ); - - mLastSyncCheck = new TQCheckBox( i18n("Only load data since last sync"), - this ); - mainLayout->addMultiCellWidget( mLastSyncCheck, 3, 3, 0, 1 ); - - mFolderButton = new KPushButton( i18n("Select Folder..."), this ); - mainLayout->addMultiCellWidget( mFolderButton, 4, 4, 0, 1 ); - connect( mFolderButton, TQT_SIGNAL( clicked() ), TQT_SLOT( selectAddressFolder() ) ); - -} - -void ResourceSloxConfig::loadSettings( KRES::Resource *res ) -{ - ResourceSlox *resource = dynamic_cast<ResourceSlox*>( res ); - mRes = resource; - - if ( !resource ) { - kdDebug(5700) << "ResourceSloxConfig::loadSettings(): cast failed" << endl; - return; - } - - if ( mRes->resType() == "slox" ) - mFolderButton->setEnabled( false ); // TODO folder selection for SLOX - - mURL->setURL( resource->prefs()->url() ); - mUser->setText( resource->prefs()->user() ); - mPassword->setText( resource->prefs()->password() ); - mLastSyncCheck->setChecked( resource->prefs()->useLastSync() ); - mFolderId = resource->prefs()->folderId(); -} - -void ResourceSloxConfig::saveSettings( KRES::Resource *res ) -{ - ResourceSlox *resource = dynamic_cast<ResourceSlox*>( res ); - - if ( !resource ) { - kdDebug(5700) << "ResourceSloxConfig::saveSettings(): cast failed" << endl; - return; - } - - resource->prefs()->setUrl( mURL->url() ); - resource->prefs()->setUser( mUser->text() ); - resource->prefs()->setPassword( mPassword->text() ); - resource->prefs()->setUseLastSync( mLastSyncCheck->isChecked() ); - resource->prefs()->setFolderId( mFolderId ); -} - -void KABC::ResourceSloxConfig::selectAddressFolder( ) -{ - SloxFolderManager *manager = new SloxFolderManager( mRes, mURL->url() ); - SloxFolderDialog *dialog = new SloxFolderDialog( manager, Contacts, this ); - dialog->setSelectedFolder( mFolderId ); - if ( dialog->exec() == TQDialog::Accepted ) - mFolderId = dialog->selectedFolder(); -} - -#include "kabcresourcesloxconfig.moc" diff --git a/kresources/slox/kabcresourcesloxconfig.h b/kresources/slox/kabcresourcesloxconfig.h deleted file mode 100644 index b845321a2..000000000 --- a/kresources/slox/kabcresourcesloxconfig.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - This file is part of tdepim. - - Copyright (c) 2004 Cornelius Schumacher <schumacher@kde.org> - - 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; either version 2 of the License, or - (at your option) any later version. - - 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; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -*/ -#ifndef RESOURCESLOXCONFIG_H -#define RESOURCESLOXCONFIG_H - -#include <kresources/configwidget.h> -#include <tdepimmacros.h> - -class TQCheckBox; -class KLineEdit; -class KURLRequester; -class KPushButton; - -class SloxBase; - -namespace KABC { - -class KDE_EXPORT ResourceSloxConfig : public KRES::ConfigWidget -{ - Q_OBJECT - - - public: - ResourceSloxConfig( TQWidget* parent = 0, const char* name = 0 ); - - public slots: - void loadSettings( KRES::Resource* ); - void saveSettings( KRES::Resource* ); - - private slots: - void selectAddressFolder(); - - private: - KURLRequester *mURL; - KLineEdit *mUser; - KLineEdit *mPassword; - TQCheckBox *mLastSyncCheck; - KPushButton *mFolderButton; - TQString mFolderId; - SloxBase *mRes; -}; - -} - -#endif diff --git a/kresources/slox/kabcsloxprefs.kcfgc b/kresources/slox/kabcsloxprefs.kcfgc deleted file mode 100644 index 5e5d89696..000000000 --- a/kresources/slox/kabcsloxprefs.kcfgc +++ /dev/null @@ -1,11 +0,0 @@ -# Code generation options for kconfig_compiler -File=kresources_kabc_slox.kcfg -ClassName=SloxPrefs -NameSpace=KABC -Singleton=false -Mutators=true -Inherits=KResourcePrefs -IncludeFiles=libtdepim/kresourceprefs.h -GlobalEnums=true -#ItemAccessors=true -#SetUserTexts=true diff --git a/kresources/slox/kcal_ox.desktop b/kresources/slox/kcal_ox.desktop deleted file mode 100644 index 6d0e5ec66..000000000 --- a/kresources/slox/kcal_ox.desktop +++ /dev/null @@ -1,46 +0,0 @@ -[Desktop Entry] -Name=OpenXchange Server -Name[af]=OpenXchange bediener -Name[bg]=Сървър OpenXchange -Name[br]=Servijer OpenXchange -Name[ca]=Servidor OpenXchange -Name[da]=Openxchange-server -Name[el]=Εξυπηρετητής OpenXchange -Name[es]=Servidor OpenXchange -Name[et]=OpenXchange server -Name[eu]=OpenXchange zerbitzaria -Name[fa]=کارساز OpenXchange -Name[fi]=OpenXchange-palvelin -Name[fr]=Serveur OpenXchange -Name[fy]=OpenXchange-tsjinner -Name[ga]=Freastalaí Openexchange -Name[gl]=Servidor OpenXchange -Name[hu]=OpenXchange-kiszolgáló -Name[is]=OpenXchange þjónn -Name[ja]=OpenXchange サーバ -Name[kk]=OpenXchange сервері -Name[km]=ម៉ាស៊ីនបម្រើ OpenXchange -Name[lt]=OpenXchange serveris -Name[mk]=OpenXchange-сервер -Name[nb]=OpenExchange-tjener -Name[nds]=OpenXchange-Server -Name[ne]=ओपन एक्सचेन्ज सर्भर -Name[nl]=OpenXchange-server -Name[nn]=OpenXchange-tenar -Name[pl]=Server OpenXchange -Name[pt]=Servidor OpenXchange -Name[pt_BR]=Servidor OpenXchange -Name[ru]=Сервер OpenXchange -Name[sl]=Strežnik OpenXchange -Name[sr]=Openexchange сервер -Name[sr@Latn]=Openexchange server -Name[sv]=Openxchange-server -Name[tr]=OpenXchange Sunucusu -Name[uk]=Сервер OpenXchange -Name[zh_CN]=OpenXchange 服务器 -Name[zh_TW]=OpenXchange 伺服器 -X-TDE-Library=kcal_slox -Type=Service -ServiceTypes=KResources/Plugin -X-TDE-ResourceFamily=calendar -X-TDE-ResourceType=ox diff --git a/kresources/slox/kcal_slox.desktop b/kresources/slox/kcal_slox.desktop deleted file mode 100644 index 9b9198d73..000000000 --- a/kresources/slox/kcal_slox.desktop +++ /dev/null @@ -1,51 +0,0 @@ -[Desktop Entry] -Name=SUSE LINUX Openexchange Server -Name[af]=SuSE Linux OpenExchange bediener -Name[bg]=Сървър SUSE LINUX Openexchange -Name[br]=Servijer Openexchange SUSE LINUX -Name[ca]=Servidor SUSE LINUX Openexchange -Name[cs]=SUSE LINUX Openexchange server -Name[da]=SUSE Linux Openexchange-server -Name[de]=SUSE LINUX Openexchange-Server -Name[el]=Εξυπηρετητή SUSE LINUX Openexchange -Name[es]=Servidor Openexchange de SUSE LINUX -Name[et]=SUSE LINUX Openexchange server -Name[eu]=SUSE LINUX Openexchange zerbitzaria -Name[fa]=کارساز SUSE LINUX Openexchange -Name[fi]=Suse Linux Openexchange -palvelin -Name[fr]=Serveur SUSE Linux Openexchange -Name[fy]=SUSE LINUX Openexchange-tsjinner -Name[ga]=Freastalaí Openexchange SUSE LINUX -Name[gl]=Servidor SUSE LINUX Openexchange -Name[hu]=SUSE LINUX Openexchange-kiszolgáló -Name[is]=SUSE LINUX Openexchange þjónn -Name[it]=Server SUSE LINUX Openexchange -Name[ja]=SUSE LINUX Openexchange サーバ -Name[kk]=SUSE LINUX Openexchange сервері -Name[km]=ម៉ាស៊ីនបម្រើ Openexchange របស់ស៊ូស៊ីលីនីក -Name[lt]=SUSE LINUX Openexchange serveris -Name[mk]=SUSE LINUX Openexchange-сервер -Name[ms]=Pelayan SUSE LINUX Openexchange -Name[nb]=SUSE LINUX Openexchange-tjener -Name[nds]=SUSE-Openexchangeserver -Name[ne]=SUSE LINUX ओपन एक्सचेन्ज सर्भर -Name[nl]=SUSE LINUX Openexchange-server -Name[nn]=SUSE LINUX Openexchange-tenar -Name[pl]=Server SUSE LINUX Openexchange -Name[pt]=Servidor SUSE LINUX Openexchange -Name[pt_BR]=Servidor OpenExchange do SUSE Linux (SLOX) -Name[ru]=Сервер SUSE LINUX Openexchange -Name[sl]=Strežnik SUSE LINUX Openexchange -Name[sr]=Openexchange сервер SUSE-овог Linux-а -Name[sr@Latn]=Openexchange server SUSE-ovog Linux-a -Name[sv]=SUSE Linux Openexchange-server -Name[ta]=SUSE LINUX திறந்த பரிமாற்ற சேவகன் -Name[tr]=SUSE LINUX Openexchange Sunucusu -Name[uk]=Сервер SUSE LINUX Openexchange -Name[zh_CN]=SUSE LINUX Openexchange 服务器 -Name[zh_TW]=SUSE LINUX Openexchange 伺服器 -X-TDE-Library=kcal_slox -Type=Service -ServiceTypes=KResources/Plugin -X-TDE-ResourceFamily=calendar -X-TDE-ResourceType=slox diff --git a/kresources/slox/kcalresourceslox.cpp b/kresources/slox/kcalresourceslox.cpp deleted file mode 100644 index 98ca90ea4..000000000 --- a/kresources/slox/kcalresourceslox.cpp +++ /dev/null @@ -1,1328 +0,0 @@ -/* - This file is part of tdepim. - - Copyright (c) 2004 Cornelius Schumacher <schumacher@kde.org> - Copyright (c) 2005 Volker Krause <volker.krause@rwth-aachen.de> - - 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; either version 2 of the License, or - (at your option) any later version. - - 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; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -*/ - -#include <typeinfo> -#include <stdlib.h> - -#include <tqdatetime.h> -#include <tqstring.h> -#include <tqptrlist.h> -#include <tqfile.h> -#include <tqregexp.h> - -#include <kdebug.h> -#include <kurl.h> -#include <kio/job.h> -#include <kio/davjob.h> -#include <klocale.h> -#include <kstandarddirs.h> - -#include <libtdepim/progressmanager.h> - -#include <libkcal/vcaldrag.h> -#include <libkcal/vcalformat.h> -#include <libkcal/icalformat.h> -#include <libkcal/exceptions.h> -#include <libkcal/incidence.h> -#include <libkcal/event.h> -#include <libkcal/todo.h> -#include <libkcal/journal.h> -#include <libkcal/filestorage.h> -#include <libkcal/confirmsavedialog.h> - -#include <kabc/locknull.h> -#include <kabc/stdaddressbook.h> - -#include <kresources/configwidget.h> - -#include "webdavhandler.h" -#include "kcalsloxprefs.h" -#include "sloxaccounts.h" - -#include "kcalresourceslox.h" - -using namespace KCal; - -KCalResourceSlox::KCalResourceSlox( const TDEConfig *config ) - : ResourceCached( config ), SloxBase( this ) -{ - init(); - - mPrefs->addGroupPrefix( identifier() ); - - if ( config ) { - readConfig( config ); - } else { - setResourceName( i18n( "OpenXchange Server" ) ); - } -} - -KCalResourceSlox::KCalResourceSlox( const KURL &url ) - : ResourceCached( 0 ), SloxBase( this ) -{ - init(); - - mPrefs->addGroupPrefix( identifier() ); - - mPrefs->setUrl( url.url() ); -} - -KCalResourceSlox::~KCalResourceSlox() -{ - kdDebug() << "~KCalResourceSlox()" << endl; - - disableChangeNotification(); - - close(); - - if ( mLoadEventsJob ) mLoadEventsJob->kill(); - if ( mLoadTodosJob ) mLoadTodosJob->kill(); - if ( mUploadJob ) mUploadJob->kill(); - - delete mLock; - - kdDebug() << "~KCalResourceSlox() done" << endl; -} - -void KCalResourceSlox::init() -{ - mPrefs = new SloxPrefs; - mWebdavHandler.setResource( this ); - - mLoadEventsJob = 0; - mLoadTodosJob = 0; - - mUploadJob = 0; - - mLoadEventsProgress = 0; - mLoadTodosProgress = 0; - - mAccounts = 0; - - mLock = new KABC::LockNull( true ); - - enableChangeNotification(); -} - -void KCalResourceSlox::readConfig( const TDEConfig *config ) -{ - mPrefs->readConfig(); - - mWebdavHandler.setUserId( mPrefs->user() ); - - ResourceCached::readConfig( config ); - - KURL url = mPrefs->url(); - url.setUser( mPrefs->user() ); - url.setPass( mPrefs->password() ); - - delete mAccounts; - mAccounts = new SloxAccounts( this, url ); -} - -void KCalResourceSlox::writeConfig( TDEConfig *config ) -{ - kdDebug() << "KCalResourceSlox::writeConfig()" << endl; - - ResourceCalendar::writeConfig( config ); - - mPrefs->writeConfig(); - - ResourceCached::writeConfig( config ); -} - -bool KCalResourceSlox::doLoad() -{ - kdDebug() << "KCalResourceSlox::load() " << long( this ) << endl; - - if ( mLoadEventsJob || mLoadTodosJob ) { - kdDebug() << "KCalResourceSlox::load(): download still in progress." - << endl; - return true; - } - if ( mUploadJob ) { - kdWarning() << "KCalResourceSlox::load(): upload still in progress." - << endl; - loadError( "Upload still in progress." ); - return false; - } - - mCalendar.close(); - - disableChangeNotification(); - loadCache(); - enableChangeNotification(); - - emit resourceChanged( this ); - - clearChanges(); - - TQString p = KURL( mPrefs->url() ).protocol(); - if ( p != "http" && p != "https" && p != "webdav" && p != "webdavs" ) { - TQString err = i18n("Non-http protocol: '%1'").arg( p ); - kdDebug() << "KCalResourceSlox::load(): " << err << endl; - loadError( err ); - return false; - } - - // The SLOX contacts are loaded asynchronously, so make sure that they are - // actually loaded. - KABC::StdAddressBook::self( true )->asyncLoad(); - -#if 1 - requestEvents(); -#endif - requestTodos(); - - return true; -} - -void KCalResourceSlox::requestEvents() -{ - KURL url = mPrefs->url(); - url.setPath( "/servlet/webdav.calendar/" ); - url.setUser( mPrefs->user() ); - url.setPass( mPrefs->password() ); - - kdDebug() << "KCalResourceSlox::requestEvents(): " << url << endl; - - TQString lastsync = "0"; - if ( mPrefs->useLastSync() ) { - TQDateTime dt = mPrefs->lastEventSync(); - if ( dt.isValid() ) { - lastsync = WebdavHandler::qDateTimeToSlox( dt.addDays( -1 ) ); - } - } - - TQDomDocument doc; - TQDomElement root = WebdavHandler::addDavElement( doc, doc, "propfind" ); - TQDomElement prop = WebdavHandler::addDavElement( doc, root, "prop" ); - WebdavHandler::addSloxElement( this, doc, prop, fieldName( LastSync ), lastsync ); - WebdavHandler::addSloxElement( this, doc, prop, fieldName( FolderId ), mPrefs->calendarFolderId() ); - if ( type() == "ox" ) { - WebdavHandler::addSloxElement( this, doc, prop, fieldName( ObjectType ), "NEW_AND_MODIFIED" ); - WebdavHandler::addSloxElement( this, doc, prop, fieldName( ObjectType ), "DELETED" ); - } else - WebdavHandler::addSloxElement( this, doc, prop, fieldName( ObjectType ), "all" ); - - kdDebug() << "REQUEST CALENDAR: \n" << doc.toString( 2 ) << endl; - - mLoadEventsJob = TDEIO::davPropFind( url, doc, "0", false ); - connect( mLoadEventsJob, TQT_SIGNAL( result( TDEIO::Job * ) ), - TQT_SLOT( slotLoadEventsResult( TDEIO::Job * ) ) ); - connect( mLoadEventsJob, TQT_SIGNAL( percent( TDEIO::Job *, unsigned long ) ), - TQT_SLOT( slotEventsProgress( TDEIO::Job *, unsigned long ) ) ); - - mLoadEventsProgress = KPIM::ProgressManager::instance()->createProgressItem( - KPIM::ProgressManager::getUniqueID(), i18n("Downloading events") ); - connect( mLoadEventsProgress, - TQT_SIGNAL( progressItemCanceled( KPIM::ProgressItem * ) ), - TQT_SLOT( cancelLoadEvents() ) ); - - mPrefs->setLastEventSync( TQDateTime::currentDateTime() ); -} - -void KCalResourceSlox::requestTodos() -{ - KURL url = mPrefs->url(); - url.setPath( "/servlet/webdav.tasks/" ); - url.setUser( mPrefs->user() ); - url.setPass( mPrefs->password() ); - - kdDebug() << "KCalResourceSlox::requestTodos(): " << url << endl; - - TQString lastsync = "0"; - if ( mPrefs->useLastSync() ) { - TQDateTime dt = mPrefs->lastTodoSync(); - if ( dt.isValid() ) { - lastsync = WebdavHandler::qDateTimeToSlox( dt.addDays( -1 ) ); - } - } - - TQDomDocument doc; - TQDomElement root = WebdavHandler::addDavElement( doc, doc, "propfind" ); - TQDomElement prop = WebdavHandler::addDavElement( doc, root, "prop" ); - WebdavHandler::addSloxElement( this, doc, prop, fieldName( LastSync ), lastsync ); - WebdavHandler::addSloxElement( this, doc, prop, fieldName( FolderId ), mPrefs->taskFolderId() ); - if ( type() == "ox" ) { - WebdavHandler::addSloxElement( this, doc, prop, fieldName( ObjectType ), "NEW_AND_MODIFIED" ); - WebdavHandler::addSloxElement( this, doc, prop, fieldName( ObjectType ), "DELETED" ); - } else - WebdavHandler::addSloxElement( this, doc, prop, fieldName( ObjectType ), "all" ); - - kdDebug() << "REQUEST TASKS: \n" << doc.toString( 2 ) << endl; - - mLoadTodosJob = TDEIO::davPropFind( url, doc, "0", false ); - connect( mLoadTodosJob, TQT_SIGNAL( result( TDEIO::Job * ) ), - TQT_SLOT( slotLoadTodosResult( TDEIO::Job * ) ) ); - connect( mLoadTodosJob, TQT_SIGNAL( percent( TDEIO::Job *, unsigned long ) ), - TQT_SLOT( slotTodosProgress( TDEIO::Job *, unsigned long ) ) ); - - mLoadTodosProgress = KPIM::ProgressManager::instance()->createProgressItem( - KPIM::ProgressManager::getUniqueID(), i18n("Downloading to-dos") ); - connect( mLoadTodosProgress, - TQT_SIGNAL( progressItemCanceled( KPIM::ProgressItem * ) ), - TQT_SLOT( cancelLoadTodos() ) ); - - mPrefs->setLastTodoSync( TQDateTime::currentDateTime() ); -} - -void KCalResourceSlox::uploadIncidences() -{ - TQDomDocument doc; - TQDomElement ms = WebdavHandler::addDavElement( doc, doc, "multistatus" ); - TQDomElement pu = WebdavHandler::addDavElement( doc, ms, "propertyupdate" ); - TQDomElement set = WebdavHandler::addElement( doc, pu, "D:set" ); - TQDomElement prop = WebdavHandler::addElement( doc, set, "D:prop" ); - - mUploadIsDelete = false; - Incidence::List added = addedIncidences(); - Incidence::List changed = changedIncidences(); - Incidence::List deleted = deletedIncidences(); - if ( !added.isEmpty() ) { - mUploadedIncidence = added.first(); - } else if ( !changed.isEmpty() ) { - mUploadedIncidence = changed.first(); - } else if ( !deleted.isEmpty() ) { - mUploadedIncidence = deleted.first(); - mUploadIsDelete = true; - } else { - mUploadedIncidence = 0; - kdDebug() << "uploadIncidences(): FINISHED" << endl; - emit resourceSaved( this ); - return; - } - - // Don't try to upload recurring incidences as long as the resource doesn't - // correctly write them in order to avoid corrupting data on the server. - // FIXME: Remove when recurrences are correctly written. - if ( mUploadedIncidence->doesRecur() && type() == "slox" ) { - clearChange( mUploadedIncidence ); - uploadIncidences(); - return; - } - - KURL url = mPrefs->url(); - - TQString sloxId = mUploadedIncidence->customProperty( "SLOX", "ID" ); - if ( !sloxId.isEmpty() ) { - WebdavHandler::addSloxElement( this, doc, prop, fieldName( ObjectId ), sloxId ); - } else { - if ( mUploadIsDelete ) { - kdError() << "Incidence to delete doesn't have a SLOX id" << endl; - clearChange( mUploadedIncidence ); - uploadIncidences(); - return; - } - } - WebdavHandler::addSloxElement( this, doc, prop, fieldName( ClientId ), - mUploadedIncidence->uid() ); - - if ( mUploadIsDelete ) { - if ( mUploadedIncidence->type() == "Event" ) { - url.setPath( "/servlet/webdav.calendar/" + sloxId ); - } else if ( mUploadedIncidence->type() == "Todo" ) { - url.setPath( "/servlet/webdav.tasks/" + sloxId ); - } else { - kdWarning() << "uploadIncidences(): Unsupported incidence type: " - << mUploadedIncidence->type() << endl; - return; - } - - if ( type() == "ox" ) { - WebdavHandler::addSloxElement( this, doc, prop, "method", "DELETE" ); - } else { - TQDomElement remove = WebdavHandler::addElement( doc, pu, "D:remove" ); - TQDomElement prop = WebdavHandler::addElement( doc, remove, "D:prop" ); - WebdavHandler::addSloxElement( this, doc, prop, "sloxid", sloxId ); - } - } else { - createIncidenceAttributes( doc, prop, mUploadedIncidence ); - // FIXME: Use a visitor - if ( mUploadedIncidence->type() == "Event" ) { - url.setPath( "/servlet/webdav.calendar/file.xml" ); - createEventAttributes( doc, prop, static_cast<Event *>( mUploadedIncidence ) ); - // TODO: OX supports recurrences also for tasks - createRecurrenceAttributes( doc, prop, mUploadedIncidence ); - } else if ( mUploadedIncidence->type() == "Todo" ) { - url.setPath( "/servlet/webdav.tasks/file.xml" ); - createTodoAttributes( doc, prop, static_cast<Todo *>( mUploadedIncidence ) ); - } else { - kdWarning() << "uploadIncidences(): Unsupported incidence type: " - << mUploadedIncidence->type() << endl; - return; - } - } - - url.setUser( mPrefs->user() ); - url.setPass( mPrefs->password() ); - - kdDebug() << "KCalResourceSlox::uploadIncidences(): " << url << endl; - - kdDebug() << "UPLOAD: \n" << doc.toString( 2 ) << endl; - - mUploadJob = TDEIO::davPropPatch( url, doc, false ); - connect( mUploadJob, TQT_SIGNAL( result( TDEIO::Job * ) ), - TQT_SLOT( slotUploadResult( TDEIO::Job * ) ) ); - connect( mUploadJob, TQT_SIGNAL( percent( TDEIO::Job *, unsigned long ) ), - TQT_SLOT( slotUploadProgress( TDEIO::Job *, unsigned long ) ) ); - - mUploadProgress = KPIM::ProgressManager::instance()->createProgressItem( - KPIM::ProgressManager::getUniqueID(), i18n("Uploading incidence") ); - connect( mUploadProgress, - TQT_SIGNAL( progressItemCanceled( KPIM::ProgressItem * ) ), - TQT_SLOT( cancelUpload() ) ); -} - -void KCalResourceSlox::createIncidenceAttributes( TQDomDocument &doc, - TQDomElement &parent, - Incidence *incidence ) -{ - WebdavHandler::addSloxElement( this, doc, parent, fieldName( IncidenceTitle ), - incidence->summary() ); - - WebdavHandler::addSloxElement( this, doc, parent, fieldName( Description ), - incidence->description() ); - - if ( incidence->attendeeCount() > 0 ) { - TQDomElement members = WebdavHandler::addSloxElement( this, doc, parent, - fieldName( Participants ) ); - Attendee::List attendees = incidence->attendees(); - Attendee::List::ConstIterator it; - for( it = attendees.begin(); it != attendees.end(); ++it ) { - if ( mAccounts ) { - TQString userId = mAccounts->lookupId( (*it)->email() ); - TQString status; - switch ( (*it)->status() ) { - case Attendee::Accepted: status = "accept"; break; - case Attendee::Declined: status = "decline"; break; - default: status = "none"; break; - } - TQDomElement el = WebdavHandler::addSloxElement( this, doc, members, fieldName( Participant ), userId ); - el.setAttribute( "confirm", status ); - } else { - kdError() << "KCalResourceSlox: No accounts set." << endl; - } - } - } - - // set read attributes - if SecrecyPublic, set it to users - // TODO OX support - if ( incidence->secrecy() == Incidence::SecrecyPublic && type() != "ox" ) - { - TQDomElement rights = WebdavHandler::addSloxElement( this, doc, parent, "readrights" ); - WebdavHandler::addSloxElement( this, doc, rights, "group", "users" ); - } - - // set reminder as the number of minutes to the start of the event - KCal::Alarm::List alarms = incidence->alarms(); - if ( !alarms.isEmpty() && alarms.first()->hasStartOffset() && alarms.first()->enabled() ) - WebdavHandler::addSloxElement( this, doc, parent, fieldName( Reminder ), - TQString::number( (-1) * alarms.first()->startOffset().asSeconds() / 60 ) ); - else - WebdavHandler::addSloxElement( this, doc, parent, fieldName( Reminder ), "0" ); - - // categories - WebdavHandler::addSloxElement( this, doc, parent, fieldName( Categories ), incidence->categories().join( ", " ) ); -} - -void KCalResourceSlox::createEventAttributes( TQDomDocument &doc, - TQDomElement &parent, - Event *event ) -{ - TQString folderId = mPrefs->calendarFolderId(); - if ( folderId.isEmpty() && type() == "ox" ) // SLOX and OX use diffrent default folders - folderId = "-1"; - WebdavHandler::addSloxElement( this, doc, parent, fieldName( FolderId ), folderId ); - - WebdavHandler::addSloxElement( this, doc, parent, fieldName( EventBegin ), - WebdavHandler::qDateTimeToSlox( event->dtStart(), timeZoneId() ) ); - - WebdavHandler::addSloxElement( this, doc, parent, fieldName( EventEnd ), - WebdavHandler::qDateTimeToSlox( event->dtEnd(), timeZoneId() ) ); - - WebdavHandler::addSloxElement( this, doc, parent, fieldName( Location ), event->location() ); - - if ( event->doesFloat() ) { - WebdavHandler::addSloxElement( this, doc, parent, fieldName( FullTime ), boolToStr( true ) ); - } else { - WebdavHandler::addSloxElement( this, doc, parent, fieldName( FullTime ), boolToStr( false ) ); - } -} - -void KCalResourceSlox::createTodoAttributes( TQDomDocument &doc, - TQDomElement &parent, - Todo *todo ) -{ - TQString folderId = mPrefs->taskFolderId(); - if ( folderId.isEmpty() && type() == "ox" ) // SLOX and OX use diffrent default folders - folderId = "-1"; - WebdavHandler::addSloxElement( this, doc, parent, fieldName( FolderId ), folderId ); - - if ( todo->hasStartDate() ) { - WebdavHandler::addSloxElement( this, doc, parent, fieldName( TaskBegin ), - WebdavHandler::qDateTimeToSlox( todo->dtStart(), timeZoneId() ) ); - } - - if ( todo->hasDueDate() ) { - WebdavHandler::addSloxElement( this, doc, parent, fieldName( TaskEnd ), - WebdavHandler::qDateTimeToSlox( todo->dtDue(), timeZoneId() ) ); - } - - int priority = todo->priority(); - TQString txt; - switch ( priority ) { - case 9: - case 8: - txt = "1"; - break; - case 2: - case 1: - txt = "3"; - break; - default: - txt = "2"; - break; - } - WebdavHandler::addSloxElement( this, doc, parent, fieldName( Priority ), txt ); - - WebdavHandler::addSloxElement( this, doc, parent, fieldName( PercentComplete ), - TQString::number( todo->percentComplete() ) ); -} - -void KCalResourceSlox::createRecurrenceAttributes( TQDomDocument &doc, - TQDomElement &parent, - KCal::Incidence *incidence ) -{ - if ( !incidence->doesRecur() ) { - WebdavHandler::addSloxElement( this, doc, parent, fieldName( RecurrenceType ), - type() == "ox" ? "none" : "no" ); - return; - } - Recurrence *r = incidence->recurrence(); - int monthOffset = ( type() == "ox" ? -1 : 0 ); - switch ( r->recurrenceType() ) { - case Recurrence::rDaily: - WebdavHandler::addSloxElement( this, doc, parent, fieldName( RecurrenceType ), "daily" ); - WebdavHandler::addSloxElement( this, doc, parent, fieldName( RecurrenceDailyFreq ), - TQString::number( r->frequency() ) ); - break; - case Recurrence::rWeekly: { - WebdavHandler::addSloxElement( this, doc, parent, fieldName( RecurrenceType ), "weekly" ); - WebdavHandler::addSloxElement( this, doc, parent, fieldName( RecurrenceWeeklyFreq ), - TQString::number( r->frequency() ) ); - // TODO: SLOX support - int oxDays = 0; - for ( int i = 0; i < 7; ++i ) { - if ( r->days()[i] ) - oxDays += 1 << ( ( i + 1 ) % 7 ); - } - if ( type() == "ox" ) - WebdavHandler::addSloxElement( this, doc, parent, "days", TQString::number( oxDays ) ); - break; } - case Recurrence::rMonthlyDay: - WebdavHandler::addSloxElement( this, doc, parent, fieldName( RecurrenceType ), "monthly" ); - WebdavHandler::addSloxElement( this, doc, parent, fieldName( RecurrenceMonthlyFreq ), - TQString::number( r->frequency() ) ); - WebdavHandler::addSloxElement( this, doc, parent, fieldName( RecurrenceMonthlyDay ), - TQString::number( r->monthDays().first() ) ); - break; - case Recurrence::rMonthlyPos: { - WebdavHandler::addSloxElement( this, doc, parent, fieldName( RecurrenceType ), - type() == "ox" ? "monthly" : "monthly2" ); - WebdavHandler::addSloxElement( this, doc, parent, fieldName( RecurrenceMonthly2Freq ), - TQString::number( r->frequency() ) ); - RecurrenceRule::WDayPos wdp = r->monthPositions().first(); - // TODO: SLOX support - WebdavHandler::addSloxElement( this, doc, parent, fieldName( RecurrenceMonthly2Day ), - TQString::number( 1 << wdp.day() ) ); - WebdavHandler::addSloxElement( this, doc, parent, fieldName( RecurrenceMonthly2Pos ), - TQString::number( wdp.pos() ) ); - break; } - case Recurrence::rYearlyMonth: - WebdavHandler::addSloxElement( this, doc, parent, fieldName( RecurrenceType ), "yearly" ); - WebdavHandler::addSloxElement( this, doc, parent, fieldName( RecurrenceYearlyDay ), - TQString::number( r->yearDates().first() ) ); - WebdavHandler::addSloxElement( this, doc, parent, fieldName( RecurrenceYearlyMonth ), - TQString::number( r->yearMonths().first() + monthOffset ) ); - if ( type() == "ox" ) - WebdavHandler::addSloxElement( this, doc, parent, "interval", "1" ); - break; - case Recurrence::rYearlyPos: { - WebdavHandler::addSloxElement( this, doc, parent, fieldName( RecurrenceType ), - type() == "ox" ? "yearly" : "yearly2" ); - RecurrenceRule::WDayPos wdp = r->monthPositions().first(); - // TODO: SLOX support - WebdavHandler::addSloxElement( this, doc, parent, fieldName( RecurrenceYearly2Day ), - TQString::number( 1 << wdp.day() ) ); - WebdavHandler::addSloxElement( this, doc, parent, fieldName( RecurrenceYearly2Pos ), - TQString::number( wdp.pos() ) ); - WebdavHandler::addSloxElement( this, doc, parent, fieldName( RecurrenceYearly2Month ), - TQString::number( r->yearMonths().first() + monthOffset ) ); - if ( type() == "ox" ) - WebdavHandler::addSloxElement( this, doc, parent, "interval", "1" ); - break; } - default: - kdDebug() << k_funcinfo << "unsupported recurrence type: " << r->recurrenceType() << endl; - } - WebdavHandler::addSloxElement( this, doc, parent, fieldName( RecurrenceEnd ), - WebdavHandler::qDateTimeToSlox( r->endDateTime() ) ); - // delete exceptions - DateList exlist = r->exDates(); - TQStringList res; - for ( DateList::Iterator it = exlist.begin(); it != exlist.end(); ++it ) - res.append( WebdavHandler::qDateTimeToSlox( *it ) ); - WebdavHandler::addSloxElement( this, doc, parent, fieldName( RecurrenceDelEx ), res.join( "," ) ); -} - -void KCalResourceSlox::parseMembersAttribute( const TQDomElement &e, - Incidence *incidence ) -{ - incidence->clearAttendees(); - - TQDomNode n; - for( n = e.firstChild(); !n.isNull(); n = n.nextSibling() ) { - TQDomElement memberElement = n.toElement(); - if ( memberElement.tagName() == fieldName( Participant ) ) { - TQString member = memberElement.text(); - KABC::Addressee account; - if ( mAccounts ) account = mAccounts->lookupUser( member ); - else kdError() << "KCalResourceSlox: no accounts set" << endl; - TQString name; - TQString email; - Attendee *a = incidence->attendeeByUid( member ); - if ( account.isEmpty() ) { - if ( a ) continue; - - name = member; - email = member + "@" + KURL( mPrefs->url() ).host(); - } else { - name = account.realName(); - email = account.preferredEmail(); - } - if ( a ) { - a->setName( name ); - a->setEmail( email ); - } else { - a = new Attendee( name, email ); - a->setUid( member ); - incidence->addAttendee( a ); - } - TQString status = memberElement.attribute( "confirm" ); - if ( !status.isEmpty() ) { - if ( status == "accept" ) { - a->setStatus( Attendee::Accepted ); - } else if ( status == "decline" ) { - a->setStatus( Attendee::Declined ); - } else { - a->setStatus( Attendee::NeedsAction ); - } - } - } else { - kdDebug() << "Unknown tag in members attribute: " - << memberElement.tagName() << endl; - } - } -} - -void KCalResourceSlox::parseReadRightsAttribute( const TQDomElement &e, - Incidence *incidence ) -{ - TQDomNode n; - for( n = e.firstChild(); !n.isNull(); n = n.nextSibling() ) { - TQDomElement rightElement = n.toElement(); - if ( rightElement.tagName() == "group" ) { - TQString groupName = rightElement.text(); - if ( groupName == "users" ) - incidence->setSecrecy( Incidence::SecrecyPublic ); - } - } -} - -void KCalResourceSlox::parseIncidenceAttribute( const TQDomElement &e, - Incidence *incidence ) -{ - TQString tag = e.tagName(); - TQString text = decodeText( e.text() ); - if ( text.isEmpty() ) return; - - if ( tag == fieldName( IncidenceTitle ) ) { - incidence->setSummary( text ); - } else if ( e.tagName() == fieldName( Description ) ) { - incidence->setDescription( text ); - } else if ( tag == fieldName( Reminder ) ) { - int minutes = text.toInt(); - if ( minutes != 0 ) { - Alarm::List alarms = incidence->alarms(); - Alarm *alarm; - if ( alarms.isEmpty() ) alarm = incidence->newAlarm(); - else alarm = alarms.first(); - if ( alarm->type() == Alarm::Invalid ) { - alarm->setType( Alarm::Display ); - } - Duration d( minutes * -60 ); - alarm->setStartOffset( d ); - alarm->setEnabled( true ); - } else { - // 0 reminder -> disable alarm - incidence->clearAlarms(); - } - } else if ( tag == fieldName( CreatedBy ) ) { - KABC::Addressee a; - if ( mAccounts ) a = mAccounts->lookupUser( text ); - else kdDebug() << "KCalResourceSlox: no accounts set" << endl; - incidence->setOrganizer( Person( a.formattedName(), a.preferredEmail() ) ); - } else if ( tag == fieldName( Participants ) ) { - parseMembersAttribute( e, incidence ); - } else if ( tag == "readrights" ) { - parseReadRightsAttribute( e, incidence ); - } else if ( tag == fieldName( Categories ) ) { - incidence->setCategories( TQStringList::split( TQRegExp(",\\s*"), text ) ); - } -} - -void KCalResourceSlox::parseEventAttribute( const TQDomElement &e, - Event *event ) -{ - TQString tag = e.tagName(); - TQString text = decodeText( e.text() ); - if ( text.isEmpty() ) return; - - if ( tag == fieldName( EventBegin ) ) { - TQDateTime dt; - if ( event->doesFloat() ) { - if ( type() == "ox" ) - dt = WebdavHandler::sloxToTQDateTime( text, timeZoneId() ); - else - dt = WebdavHandler::sloxToTQDateTime( text ); // ### is this really correct for SLOX? - } else - dt = WebdavHandler::sloxToTQDateTime( text, timeZoneId() ); - event->setDtStart( dt ); - } else if ( tag == fieldName( EventEnd ) ) { - TQDateTime dt; - if ( event->doesFloat() ) { - dt = WebdavHandler::sloxToTQDateTime( text ); - dt = dt.addSecs( -1 ); - } - else dt = WebdavHandler::sloxToTQDateTime( text, timeZoneId() ); - event->setDtEnd( dt ); - } else if ( tag == fieldName( Location ) ) { - event->setLocation( text ); - } -} - -void KCalResourceSlox::parseRecurrence( const TQDomNode &node, Event *event ) -{ - TQString type; - - int dailyValue = -1; - TQDateTime end; - - int weeklyValue = -1; - TQBitArray days( 7 ); // days, starting with monday - bool daysSet = false; - - int monthlyValueDay = -1; - int monthlyValueMonth = -1; - - int yearlyValueDay = -1; - int yearlyMonth = -1; - - int monthly2Recurrency = 0; - int monthly2Day = 0; - int monthly2ValueMonth = -1; - - int yearly2Recurrency = 0; - int yearly2Day = 0; - int yearly2Month = -1; - - DateList deleteExceptions; - - TQDomNode n; - - for( n = node.firstChild(); !n.isNull(); n = n.nextSibling() ) { - TQDomElement e = n.toElement(); - TQString tag = e.tagName(); - TQString text = decodeText( e.text() ); - kdDebug() << k_funcinfo << tag << ": " << text << endl; - - if ( tag == fieldName( RecurrenceType ) ) { - type = text; - } else if ( tag == "daily_value" ) { - dailyValue = text.toInt(); - } else if ( tag == fieldName( RecurrenceEnd ) ) { - end = WebdavHandler::sloxToTQDateTime( text ); - } else if ( tag == "weekly_value" ) { - weeklyValue = text.toInt(); - } else if ( tag.left( 11 ) == "weekly_day_" ) { - int day = tag.mid( 11, 1 ).toInt(); - int index; - if ( day == 1 ) index = 0; - else index = day - 2; - days.setBit( index ); - } else if ( tag == "monthly_value_day" ) { - monthlyValueDay = text.toInt(); - } else if ( tag == "monthly_value_month" ) { - monthlyValueMonth = text.toInt(); - } else if ( tag == "yearly_value_day" ) { - yearlyValueDay = text.toInt(); - } else if ( tag == "yearly_month" ) { - yearlyMonth = text.toInt(); - } else if ( tag == "monthly2_recurrency" ) { - monthly2Recurrency = text.toInt(); - } else if ( tag == "monthly2_day" ) { - monthly2Day = text.toInt(); - } else if ( tag == "monthly2_value_month" ) { - monthly2ValueMonth = text.toInt(); - } else if ( tag == "yearly2_reccurency" ) { // this is not a typo, this is what SLOX really sends! - yearly2Recurrency = text.toInt(); - } else if ( tag == "yearly2_day" ) { - yearly2Day = text.toInt(); - } else if ( tag == "yearly2_month" ) { - yearly2Month = text.toInt() + 1; - // OX recurrence fields - } else if ( tag == "interval" ) { - dailyValue = text.toInt(); - weeklyValue = text.toInt(); - monthlyValueMonth = text.toInt(); - monthly2ValueMonth = text.toInt(); - } else if ( tag == "days" ) { - int tmp = text.toInt(); // OX encodes days binary: 1=Su, 2=Mo, 4=Tu, ... - for ( int i = 0; i < 7; ++i ) { - if ( tmp & (1 << i) ) - days.setBit( (i + 6) % 7 ); - } - daysSet = true; - } else if ( tag == "day_in_month" ) { - monthlyValueDay = text.toInt(); - monthly2Recurrency = text.toInt(); - yearlyValueDay = text.toInt(); - yearly2Recurrency = text.toInt(); - } else if ( tag == "month" ) { - yearlyMonth = text.toInt() + 1; // starts at 0 - yearly2Month = text.toInt() + 1; - } else if ( tag == fieldName( RecurrenceDelEx ) ) { - TQStringList exdates = TQStringList::split( ",", text ); - TQStringList::Iterator it; - for ( it = exdates.begin(); it != exdates.end(); ++it ) - deleteExceptions.append( WebdavHandler::sloxToTQDateTime( *it ).date() ); - } - } - - if ( daysSet && type == "monthly" ) - type = "monthly2"; // HACK: OX doesn't cleanly distinguish between monthly and monthly2 - if ( daysSet && type == "yearly" ) - type = "yearly2"; - - Recurrence *r = event->recurrence(); - - if ( type == "daily" ) { - r->setDaily( dailyValue ); - } else if ( type == "weekly" ) { - r->setWeekly( weeklyValue, days ); - } else if ( type == "monthly" ) { - r->setMonthly( monthlyValueMonth ); - r->addMonthlyDate( monthlyValueDay ); - } else if ( type == "yearly" ) { - r->setYearly( 1 ); - r->addYearlyDate( yearlyValueDay ); - r->addYearlyMonth( yearlyMonth ); - } else if ( type == "monthly2" ) { - r->setMonthly( monthly2ValueMonth ); - TQBitArray _days( 7 ); - if ( daysSet ) - _days = days; - else - _days.setBit( event->dtStart().date().dayOfWeek() ); - r->addMonthlyPos( monthly2Recurrency, _days ); - } else if ( type == "yearly2" ) { - r->setYearly( 1 ); - r->addYearlyMonth( yearly2Month ); - TQBitArray _days( 7 ); - if ( daysSet ) - _days = days; - else - _days.setBit( ( yearly2Day + 5 ) % 7 ); - r->addYearlyPos( yearly2Recurrency, _days ); - } - r->setEndDate( end.date() ); - r->setExDates( deleteExceptions ); -} - -void KCalResourceSlox::parseTodoAttribute( const TQDomElement &e, - Todo *todo ) -{ - TQString tag = e.tagName(); - TQString text = decodeText( e.text() ); - if ( text.isEmpty() ) return; - - if ( tag == fieldName( TaskBegin ) ) { - TQDateTime dt = WebdavHandler::sloxToTQDateTime( text ); - if ( dt.isValid() ) { - todo->setDtStart( dt ); - todo->setHasStartDate( true ); - } - } else if ( tag == fieldName( TaskEnd ) ) { - TQDateTime dt = WebdavHandler::sloxToTQDateTime( text ); - if ( dt.isValid() ) { - todo->setDtDue( dt ); - todo->setHasDueDate( true ); - } - } else if ( tag == fieldName( Priority ) ) { - int p = text.toInt(); - if ( p < 1 || p > 3 ) { - kdError() << "Unknown priority: " << text << endl; - } else { - int priority; - switch ( p ) { - case 1: - priority = 9; - break; - default: - case 2: - priority = 5; - break; - case 3: - priority = 1; - break; - } - todo->setPriority( priority ); - } - } else if ( tag == fieldName( PercentComplete ) ) { - int completed = text.toInt(); - todo->setPercentComplete( completed ); - } -} - -void KCalResourceSlox::slotLoadTodosResult( TDEIO::Job *job ) -{ - kdDebug() << "KCalResourceSlox::slotLoadTodosJobResult()" << endl; - - if ( job->error() ) { - loadError( job->errorString() ); - } else { - kdDebug() << "KCalResourceSlox::slotLoadTodosJobResult() success" << endl; - - TQDomDocument doc = mLoadTodosJob->response(); - - mWebdavHandler.log( doc.toString( 2 ) ); - - TQValueList<SloxItem> items = WebdavHandler::getSloxItems( this, doc ); - - bool changed = false; - - disableChangeNotification(); - - TQValueList<SloxItem>::ConstIterator it; - for( it = items.begin(); it != items.end(); ++it ) { - SloxItem item = *it; - TQString uid = sloxIdToTodoUid( item.sloxId ); - if ( item.status == SloxItem::Delete ) { - Todo *todo = mCalendar.todo( uid ); - if ( todo ) { - mCalendar.deleteTodo( todo ); - changed = true; - } - } else if ( item.status == SloxItem::Create ) { - Todo *newTodo = 0; - Todo *todo = mCalendar.todo( uid ); - if ( !todo ) { - newTodo = new Todo; - todo = newTodo; - todo->setUid( uid ); - todo->setSecrecy( Incidence::SecrecyPrivate ); - } - - todo->setCustomProperty( "SLOX", "ID", item.sloxId ); - - mWebdavHandler.clearSloxAttributeStatus(); - - TQDomNode n; - for( n = item.domNode.firstChild(); !n.isNull(); n = n.nextSibling() ) { - TQDomElement e = n.toElement(); - mWebdavHandler.parseSloxAttribute( e ); - parseIncidenceAttribute( e, todo ); - parseTodoAttribute( e, todo ); - } - - mWebdavHandler.setSloxAttributes( todo ); - - if ( newTodo ) mCalendar.addTodo( todo ); - - changed = true; - } - } - - enableChangeNotification(); - - clearChanges(); - - if ( changed ) emit resourceChanged( this ); - - emit resourceLoaded( this ); - } - - mLoadTodosJob = 0; - - if ( mLoadTodosProgress ) mLoadTodosProgress->setComplete(); - mLoadTodosProgress = 0; -} - -void KCalResourceSlox::slotLoadEventsResult( TDEIO::Job *job ) -{ - kdDebug() << "KCalResourceSlox::slotLoadEventsResult() " << long( this ) << endl; - - if ( job->error() ) { - loadError( job->errorString() ); - } else { - kdDebug() << "KCalResourceSlox::slotLoadEventsResult() success" << endl; - - TQDomDocument doc = mLoadEventsJob->response(); - - mWebdavHandler.log( doc.toString( 2 ) ); - - TQValueList<SloxItem> items = WebdavHandler::getSloxItems( this, doc ); - - bool changed = false; - - disableChangeNotification(); - - TQValueList<SloxItem>::ConstIterator it; - for( it = items.begin(); it != items.end(); ++it ) { - SloxItem item = *it; - TQString uid = sloxIdToEventUid( item.sloxId ); - if ( item.status == SloxItem::Delete ) { - Event *event = mCalendar.event( uid ); - if ( event ) { - mCalendar.deleteEvent( event ); - changed = true; - } - } else if ( item.status == SloxItem::Create ) { - Event *newEvent = 0; - Event *event = mCalendar.event( uid ); - if ( !event ) { - newEvent = new Event; - event = newEvent; - event->setUid( uid ); - event->setSecrecy( Incidence::SecrecyPrivate ); - } - - event->setCustomProperty( "SLOX", "ID", item.sloxId ); - - TQDomNode n = item.domNode.namedItem( fieldName( FullTime ) ); - event->setFloats( n.toElement().text() == boolToStr( true ) ); - - bool doesRecur = false; - - mWebdavHandler.clearSloxAttributeStatus(); - - for( n = item.domNode.firstChild(); !n.isNull(); n = n.nextSibling() ) { - TQDomElement e = n.toElement(); - mWebdavHandler.parseSloxAttribute( e ); - parseIncidenceAttribute( e, event ); - parseEventAttribute( e, event ); - if ( e.tagName() == fieldName( RecurrenceType ) && e.text() != "no" ) { - doesRecur = true; - } - } - - if ( doesRecur ) - parseRecurrence( item.domNode, event ); - else - event->recurrence()->unsetRecurs(); - - mWebdavHandler.setSloxAttributes( event ); - -// kdDebug() << "EVENT " << item.uid << " " << event->summary() << endl; - - if ( newEvent ) mCalendar.addEvent( event ); - - changed = true; - } - } - - enableChangeNotification(); - - saveCache(); - - clearChanges(); - - if ( changed ) emit resourceChanged( this ); - - emit resourceLoaded( this ); - } - - mLoadEventsJob = 0; - - if ( mLoadEventsProgress ) mLoadEventsProgress->setComplete(); - mLoadEventsProgress = 0; -} - -void KCalResourceSlox::slotUploadResult( TDEIO::Job *job ) -{ - kdDebug() << "KCalResourceSlox::slotUploadResult()" << endl; - - if ( job->error() ) { - saveError( job->errorString() ); - } else { - kdDebug() << "KCalResourceSlox::slotUploadResult() success" << endl; - - if ( !mUploadJob ) - { - kdDebug() << "KCalResourceSlox::slotUploadResult() - mUploadJob was 0" << endl; - return; - } - - TQDomDocument doc = mUploadJob->response(); - - kdDebug() << "UPLOAD RESULT:" << endl; - kdDebug() << doc.toString( 2 ) << endl; - - TQDomElement docElement = doc.documentElement(); - - TQDomNode responseNode; - for( responseNode = docElement.firstChild(); !responseNode.isNull(); - responseNode = responseNode.nextSibling() ) { - TQDomElement responseElement = responseNode.toElement(); - if ( responseElement.tagName() == "response" ) { - TQDomNode propstat = responseElement.namedItem( "propstat" ); - if ( propstat.isNull() ) { - kdError() << "Unable to find propstat tag." << endl; - continue; - } - - TQDomNode status = propstat.namedItem( "status" ); - if ( !status.isNull() ) { - TQDomElement statusElement = status.toElement(); - TQString response = statusElement.text(); - if ( !response.contains( "200" ) ) { - TQString error = "'" + mUploadedIncidence->summary() + "'\n"; - error += response; - TQDomNode dn = propstat.namedItem( "responsedescription" ); - TQString d = dn.toElement().text(); - if ( !d.isEmpty() ) error += "\n" + d; - saveError( error ); - continue; - } - } - - TQDomNode prop = propstat.namedItem( "prop" ); - if ( prop.isNull() ) { - kdError() << "Unable to find WebDAV property" << endl; - continue; - } - - TQDomNode sloxIdNode = prop.namedItem( fieldName( ObjectId ) ); - if ( sloxIdNode.isNull() ) { - kdError() << "Unable to find SLOX id." << endl; - continue; - } - TQDomElement sloxIdElement = sloxIdNode.toElement(); - TQString sloxId = sloxIdElement.text(); - kdDebug() << "SLOXID: " << sloxId << endl; - - if ( mUploadIsDelete ) { - kdDebug() << "Incidence deleted" << endl; - } else { - TQDomNode clientIdNode = prop.namedItem( fieldName( ClientId ) ); - if ( clientIdNode.isNull() ) { - kdError() << "Unable to find client id." << endl; - continue; - } - TQDomElement clientidElement = clientIdNode.toElement(); - TQString clientId = clientidElement.text(); - - kdDebug() << "CLIENTID: " << clientId << endl; - - Incidence *i = mUploadedIncidence->clone(); - TQString uid; - if ( i->type() == "Event" ) uid = sloxIdToEventUid( sloxId ); - else if ( i->type() == "Todo" ) uid = sloxIdToTodoUid( sloxId ); - else { - kdError() << "KCalResourceSlox::slotUploadResult(): Unknown type: " - << i->type() << endl; - } - i->setUid( uid ); - i->setCustomProperty( "SLOX", "ID", sloxId ); - - disableChangeNotification(); - mCalendar.deleteIncidence( mUploadedIncidence ); - mCalendar.addIncidence( i ); - saveCache(); - enableChangeNotification(); - - emit resourceChanged( this ); - } - } - } - } - - mUploadJob = 0; - - mUploadProgress->setComplete(); - mUploadProgress = 0; - - clearChange( mUploadedIncidence ); - - uploadIncidences(); -} - -void KCalResourceSlox::slotEventsProgress( TDEIO::Job *job, - unsigned long percent ) -{ -#if 0 - kdDebug() << "PROGRESS: events " << int( job ) << ": " << percent << endl; -#else - Q_UNUSED( job ); - Q_UNUSED( percent ); -#endif - if ( mLoadEventsProgress ) mLoadEventsProgress->setProgress( percent ); -} - -void KCalResourceSlox::slotTodosProgress( TDEIO::Job *job, unsigned long percent ) -{ -#if 0 - kdDebug() << "PROGRESS: todos " << int( job ) << ": " << percent << endl; -#else - Q_UNUSED( job ); - Q_UNUSED( percent ); -#endif - if ( mLoadTodosProgress ) mLoadTodosProgress->setProgress( percent ); -} - -void KCalResourceSlox::slotUploadProgress( TDEIO::Job *job, unsigned long percent ) -{ -#if 0 - kdDebug() << "PROGRESS: upload " << int( job ) << ": " << percent << endl; -#else - Q_UNUSED( job ); - Q_UNUSED( percent ); -#endif - if ( mUploadProgress ) mUploadProgress->setProgress( percent ); -} - -bool KCalResourceSlox::confirmSave() -{ - if ( !hasChanges() ) return true; - - ConfirmSaveDialog dlg( resourceName(), 0 ); - - dlg.addIncidences( addedIncidences(), i18n("Added") ); - dlg.addIncidences( changedIncidences(), i18n("Changed") ); - dlg.addIncidences( deletedIncidences(), i18n("Deleted") ); - - int result = dlg.exec(); - return result == TQDialog::Accepted; -} - -bool KCalResourceSlox::doSave() -{ - kdDebug() << "KCalResourceSlox::save()" << endl; - - if ( readOnly() || !hasChanges() ) { - emit resourceSaved( this ); - return true; - } - - if ( mLoadEventsJob || mLoadTodosJob ) { - kdWarning() << "KCalResourceSlox::save(): download still in progress." - << endl; - return false; - } - if ( mUploadJob ) { - kdWarning() << "KCalResourceSlox::save(): upload still in progress." - << endl; - return false; - } - - if ( !confirmSave() ) return false; - - saveCache(); - - uploadIncidences(); - - return true; -} - -bool KCalResourceSlox::isSaving() -{ - return mUploadJob; -} - -void KCalResourceSlox::doClose() -{ - kdDebug() << "KCalResourceSlox::doClose()" << endl; - - cancelLoadEvents(); - cancelLoadTodos(); - - if ( mUploadJob ) { - kdError() << "KCalResourceSlox::doClose() Still saving" << endl; - } else { - mCalendar.close(); - } -} - -KABC::Lock *KCalResourceSlox::lock() -{ - return mLock; -} - -void KCalResourceSlox::dump() const -{ - ResourceCalendar::dump(); - kdDebug(5800) << " Url: " << mPrefs->url() << endl; -} - -void KCalResourceSlox::cancelLoadEvents() -{ - if ( mLoadEventsJob ) mLoadEventsJob->kill(); - mLoadEventsJob = 0; - if ( mLoadEventsProgress ) mLoadEventsProgress->setComplete(); - mLoadEventsProgress = 0; -} - -void KCalResourceSlox::cancelLoadTodos() -{ - if ( mLoadTodosJob ) mLoadTodosJob->kill(); - mLoadTodosJob = 0; - if ( mLoadTodosProgress ) mLoadTodosProgress->setComplete(); - mLoadTodosProgress = 0; -} - -void KCalResourceSlox::cancelUpload() -{ - if ( mUploadJob ) mUploadJob->kill(); - mUploadJob = 0; - if ( mUploadProgress ) mUploadProgress->setComplete(); -} - -TQString KCalResourceSlox::sloxIdToEventUid( const TQString &sloxId ) -{ - return "KResources_SLOX_Event_" + sloxId; -} - -TQString KCalResourceSlox::sloxIdToTodoUid( const TQString &sloxId ) -{ - return "KResources_SLOX_Todo_" + sloxId; -} - -#include "kcalresourceslox.moc" diff --git a/kresources/slox/kcalresourceslox.h b/kresources/slox/kcalresourceslox.h deleted file mode 100644 index 6735b9934..000000000 --- a/kresources/slox/kcalresourceslox.h +++ /dev/null @@ -1,168 +0,0 @@ -/* - This file is part of tdepim. - - Copyright (c) 2004 Cornelius Schumacher <schumacher@kde.org> - - 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; either version 2 of the License, or - (at your option) any later version. - - 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; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -*/ -#ifndef KCALRESOURCESLOX_H -#define KCALRESOURCESLOX_H - -#include "sloxbase.h" -#include "webdavhandler.h" - -#include <tqptrlist.h> -#include <tqstring.h> -#include <tqdatetime.h> -#include <tqdom.h> - -#include <kurl.h> -#include <kconfig.h> -#include <kdirwatch.h> -#include <tdepimmacros.h> - -#include <libkcal/incidence.h> -#include <libkcal/todo.h> -#include <libkcal/calendarlocal.h> -#include <libkcal/icalformat.h> -#include <libkcal/resourcecached.h> - -namespace TDEIO { -class FileCopyJob; -class Job; -class DavJob; -} - -namespace KCal { -class SloxPrefs; -} - -namespace KPIM { -class ProgressItem; -} - -class SloxAccounts; - -/** - This class provides a calendar stored as a remote file. -*/ -class KDE_EXPORT KCalResourceSlox : public KCal::ResourceCached, public SloxBase -{ - Q_OBJECT - - - friend class KCalResourceSloxConfig; - - public: - /** - Reload policy. - - @see setReloadPolicy(), reloadPolicy() - */ - enum { ReloadNever, ReloadOnStartup, ReloadOnceADay, ReloadAlways }; - - /** - Create resource from configuration information stored in TDEConfig object. - */ - KCalResourceSlox( const TDEConfig * ); - KCalResourceSlox( const KURL &url ); - ~KCalResourceSlox(); - - void readConfig( const TDEConfig *config ); - void writeConfig( TDEConfig *config ); - - KCal::SloxPrefs *prefs() const { return mPrefs; } - - KABC::Lock *lock(); - - bool isSaving(); - - void dump() const; - - protected slots: - void slotLoadEventsResult( TDEIO::Job * ); - void slotLoadTodosResult( TDEIO::Job * ); - void slotUploadResult( TDEIO::Job * ); - - void slotEventsProgress( TDEIO::Job *job, unsigned long percent ); - void slotTodosProgress( TDEIO::Job *job, unsigned long percent ); - void slotUploadProgress( TDEIO::Job *job, unsigned long percent ); - - void cancelLoadEvents(); - void cancelLoadTodos(); - void cancelUpload(); - - protected: - void doClose(); - bool doLoad(); - bool doSave(); - - void requestEvents(); - void requestTodos(); - - void uploadIncidences(); - - void parseMembersAttribute( const TQDomElement &e, - KCal::Incidence *incidence ); - void parseReadRightsAttribute( const TQDomElement &e, - KCal::Incidence *incidence ); - void parseIncidenceAttribute( const TQDomElement &e, - KCal::Incidence *incidence ); - void parseTodoAttribute( const TQDomElement &e, KCal::Todo *todo ); - void parseEventAttribute( const TQDomElement &e, KCal::Event *event ); - void parseRecurrence( const TQDomNode &n, KCal::Event *event ); - - void createIncidenceAttributes( TQDomDocument &doc, - TQDomElement &parent, - KCal::Incidence *incidence ); - void createEventAttributes( TQDomDocument &doc, - TQDomElement &parent, - KCal::Event *event ); - void createTodoAttributes( TQDomDocument &doc, - TQDomElement &parent, - KCal::Todo *todo ); - void createRecurrenceAttributes( TQDomDocument &doc, - TQDomElement &parent, - KCal::Incidence *incidence ); - - bool confirmSave(); - - TQString sloxIdToEventUid( const TQString &sloxId ); - TQString sloxIdToTodoUid( const TQString &sloxId ); - - private: - void init(); - - KCal::SloxPrefs *mPrefs; - - TDEIO::DavJob *mLoadEventsJob; - TDEIO::DavJob *mLoadTodosJob; - TDEIO::DavJob *mUploadJob; - - KPIM::ProgressItem *mLoadEventsProgress; - KPIM::ProgressItem *mLoadTodosProgress; - KPIM::ProgressItem *mUploadProgress; - - KCal::Incidence *mUploadedIncidence; - bool mUploadIsDelete; - - KABC::Lock *mLock; - - WebdavHandler mWebdavHandler; - - SloxAccounts *mAccounts; -}; - -#endif diff --git a/kresources/slox/kcalresourceslox_plugin.cpp b/kresources/slox/kcalresourceslox_plugin.cpp deleted file mode 100644 index 8a5cf6906..000000000 --- a/kresources/slox/kcalresourceslox_plugin.cpp +++ /dev/null @@ -1,40 +0,0 @@ -/* - This file is part of tdepim. - - Copyright (c) 2004 Cornelius Schumacher <schumacher@kde.org> - - 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; either version 2 of the License, or - (at your option) any later version. - - 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; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -*/ - -#include "kcalresourcesloxconfig.h" -#include "kcalresourceslox.h" - -#include <kglobal.h> -#include <klocale.h> - -using namespace KCal; - -typedef KRES::PluginFactory<KCalResourceSlox,KCalResourceSloxConfig> SLOXFactory; -// FIXME: Use K_EXPORT_COMPONENT_FACTORY( kcal_slox, SLOXFactory ); here -// Problem: How do I insert the catalogue??? -extern "C" -{ - void *init_kcal_slox() - { - TDEGlobal::locale()->insertCatalogue( "libkcal" ); - TDEGlobal::locale()->insertCatalogue( "kabc_slox" ); - return new SLOXFactory; - } -} diff --git a/kresources/slox/kcalresourcesloxconfig.cpp b/kresources/slox/kcalresourcesloxconfig.cpp deleted file mode 100644 index e09cf85c1..000000000 --- a/kresources/slox/kcalresourcesloxconfig.cpp +++ /dev/null @@ -1,145 +0,0 @@ -/* - This file is part of tdepim. - - Copyright (c) 2004 Cornelius Schumacher <schumacher@kde.org> - - 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; either version 2 of the License, or - (at your option) any later version. - - 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; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -*/ - -#include <typeinfo> - -#include <tqlabel.h> -#include <tqlayout.h> -#include <tqcheckbox.h> - -#include <klocale.h> -#include <kdebug.h> -#include <kstandarddirs.h> -#include <klineedit.h> -#include <kpushbutton.h> - -#include <libkcal/resourcecachedconfig.h> - -#include "kcalresourceslox.h" -#include "kcalsloxprefs.h" -#include "sloxfolder.h" -#include "sloxfolderdialog.h" -#include "sloxfoldermanager.h" - -#include "kcalresourcesloxconfig.h" - -KCalResourceSloxConfig::KCalResourceSloxConfig( TQWidget* parent, const char* name ) : - KRES::ConfigWidget( parent, name ), mRes( 0 ) -{ - resize( 245, 115 ); - TQGridLayout *mainLayout = new TQGridLayout( this, 6, 2, KDialog::spacingHint(), KDialog::spacingHint() ); - - TQLabel *label = new TQLabel( i18n( "Download from:" ), this ); - - mDownloadUrl = new KURLRequester( this ); - mDownloadUrl->setMode( KFile::File ); - mainLayout->addWidget( label, 1, 0 ); - mainLayout->addWidget( mDownloadUrl, 1, 1 ); - - label = new TQLabel( i18n("User:"), this ); - mainLayout->addWidget( label, 2, 0 ); - - mUserEdit = new KLineEdit( this ); - mainLayout->addWidget( mUserEdit, 2, 1 ); - - label = new TQLabel( i18n("Password:"), this ); - mainLayout->addWidget( label, 3, 0 ); - - mPasswordEdit = new KLineEdit( this ); - mainLayout->addWidget( mPasswordEdit, 3, 1 ); - mPasswordEdit->setEchoMode( KLineEdit::Password ); - - mLastSyncCheck = new TQCheckBox( i18n("Only load data since last sync"), - this ); - mainLayout->addMultiCellWidget( mLastSyncCheck, 4, 4, 0, 1 ); - - mCalButton = new KPushButton( i18n("Calendar Folder..."), this ); - mainLayout->addWidget( mCalButton, 5, 0 ); - connect( mCalButton, TQT_SIGNAL( clicked() ), TQT_SLOT( selectCalendarFolder() ) ); - - mTaskButton = new KPushButton( i18n("Task Folder..."), this ); - mainLayout->addWidget( mTaskButton, 5, 1 ); - connect( mTaskButton, TQT_SIGNAL( clicked() ), TQT_SLOT( selectTaskFolder() ) ); - - mReloadConfig = new KCal::ResourceCachedReloadConfig( this ); - mainLayout->addMultiCellWidget( mReloadConfig, 6, 6, 0, 1 ); - - mSaveConfig = new KCal::ResourceCachedSaveConfig( this ); - mainLayout->addMultiCellWidget( mSaveConfig, 7, 7, 0, 1 ); -} - -void KCalResourceSloxConfig::loadSettings( KRES::Resource *resource ) -{ - KCalResourceSlox *res = static_cast<KCalResourceSlox *>( resource ); - mRes = res; - if ( mRes->resType() == "slox" ) { // we don't have folder selection for SLOX - mCalButton->setEnabled( false ); - mTaskButton->setEnabled( false ); - } - if ( res ) { - mDownloadUrl->setURL( res->prefs()->url() ); - mLastSyncCheck->setChecked( res->prefs()->useLastSync() ); - mUserEdit->setText( res->prefs()->user() ); - mPasswordEdit->setText( res->prefs()->password() ); - mCalendarFolderId = res->prefs()->calendarFolderId(); - mTaskFolderId = res->prefs()->taskFolderId(); - mReloadConfig->loadSettings( res ); - mSaveConfig->loadSettings( res ); - } else { - kdError(5700) << "KCalResourceSloxConfig::loadSettings(): no KCalResourceSlox, cast failed" << endl; - } -} - -void KCalResourceSloxConfig::saveSettings( KRES::Resource *resource ) -{ - KCalResourceSlox *res = static_cast<KCalResourceSlox*>( resource ); - if ( res ) { - res->prefs()->setUrl( mDownloadUrl->url() ); - res->prefs()->setUseLastSync( mLastSyncCheck->isChecked() ); - res->prefs()->setUser( mUserEdit->text() ); - res->prefs()->setPassword( mPasswordEdit->text() ); - res->prefs()->setCalendarFolderId( mCalendarFolderId ); - res->prefs()->setTaskFolderId( mTaskFolderId ); - mReloadConfig->saveSettings( res ); - mSaveConfig->saveSettings( res ); - } else { - kdError(5700) << "KCalResourceSloxConfig::saveSettings(): no KCalResourceSlox, cast failed" << endl; - } -} - -void KCalResourceSloxConfig::selectCalendarFolder() -{ - SloxFolderManager *manager = new SloxFolderManager( mRes, mDownloadUrl->url() ); - SloxFolderDialog *dialog = new SloxFolderDialog( manager, ::Calendar, this ); - dialog->setSelectedFolder( mCalendarFolderId ); - if ( dialog->exec() == TQDialog::Accepted ) - mCalendarFolderId = dialog->selectedFolder(); -} - -void KCalResourceSloxConfig::selectTaskFolder( ) -{ - SloxFolderManager *manager = new SloxFolderManager( mRes, mDownloadUrl->url() ); - SloxFolderDialog *dialog = new SloxFolderDialog( manager, Tasks, this ); - dialog->setSelectedFolder( mTaskFolderId ); - if ( dialog->exec() == TQDialog::Accepted ) - mTaskFolderId = dialog->selectedFolder(); -} - -#include "kcalresourcesloxconfig.moc" diff --git a/kresources/slox/kcalresourcesloxconfig.h b/kresources/slox/kcalresourcesloxconfig.h deleted file mode 100644 index 619854a8a..000000000 --- a/kresources/slox/kcalresourcesloxconfig.h +++ /dev/null @@ -1,76 +0,0 @@ -/* - This file is part of tdepim. - - Copyright (c) 2004 Cornelius Schumacher <schumacher@kde.org> - - 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; either version 2 of the License, or - (at your option) any later version. - - 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; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -*/ -#ifndef KCALRESOURCESLOXCONFIG_H -#define KCALRESOURCESLOXCONFIG_H - -#include <kurlrequester.h> -#include <tdepimmacros.h> - -#include <kresources/resource.h> -#include <kresources/configwidget.h> - -class TQCheckBox; -class KLineEdit; -class KPushButton; - -namespace KCal { -class ResourceCachedReloadConfig; -class ResourceCachedSaveConfig; -} - -class SloxBase; - -/** - Configuration widget for SLOX resource. - - @see KCalResourceSlox -*/ -class KDE_EXPORT KCalResourceSloxConfig : public KRES::ConfigWidget -{ - Q_OBJECT - - public: - KCalResourceSloxConfig( TQWidget *parent = 0, const char *name = 0 ); - - public slots: - virtual void loadSettings( KRES::Resource *resource ); - virtual void saveSettings( KRES::Resource *resource ); - - private slots: - void selectCalendarFolder(); - void selectTaskFolder(); - - private: - KURLRequester *mDownloadUrl; - KLineEdit *mUserEdit; - KLineEdit *mPasswordEdit; - TQCheckBox *mLastSyncCheck; - KPushButton *mCalButton; - KPushButton *mTaskButton; - TQString mCalendarFolderId; - TQString mTaskFolderId; - - KCal::ResourceCachedReloadConfig *mReloadConfig; - KCal::ResourceCachedSaveConfig *mSaveConfig; - - SloxBase *mRes; -}; - -#endif diff --git a/kresources/slox/kcalsloxprefs.kcfgc b/kresources/slox/kcalsloxprefs.kcfgc deleted file mode 100644 index 11bbd60af..000000000 --- a/kresources/slox/kcalsloxprefs.kcfgc +++ /dev/null @@ -1,11 +0,0 @@ -# Code generation options for kconfig_compiler -File=kresources_kcal_slox.kcfg -ClassName=SloxPrefs -NameSpace=KCal -Singleton=false -Mutators=true -Inherits=KResourcePrefs -IncludeFiles=libtdepim/kresourceprefs.h -GlobalEnums=true -#ItemAccessors=true -#SetUserTexts=true diff --git a/kresources/slox/kresources_kabc_slox.kcfg b/kresources/slox/kresources_kabc_slox.kcfg deleted file mode 100644 index 159605ba3..000000000 --- a/kresources/slox/kresources_kabc_slox.kcfg +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<kcfg xmlns="http://www.kde.org/standards/kcfg/1.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0 - http://www.kde.org/standards/kcfg/1.0/kcfg.xsd" > - <kcfgfile name="kresources_kabc_sloxrc"/> - - <group name="General"> - <entry type="String" name="Url"> - <label>Base Url</label> - </entry> - <entry type="String" name="User"> - <label>User Name</label> - </entry> - <entry type="Password" name="Password"> - <label>Password</label> - </entry> - <entry type="Bool" name="UseLastSync"> - <label>Only load data since last sync</label> - <default>true</default> - </entry> - <entry type="String" name="FolderId"> - <label>Folder ID</label> - <default></default> - </entry> - <entry type="DateTime" name="LastSync"> - <label>Last Sync</label> - </entry> - </group> - -</kcfg> diff --git a/kresources/slox/kresources_kcal_slox.kcfg b/kresources/slox/kresources_kcal_slox.kcfg deleted file mode 100644 index 9e4e6f4eb..000000000 --- a/kresources/slox/kresources_kcal_slox.kcfg +++ /dev/null @@ -1,38 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<kcfg xmlns="http://www.kde.org/standards/kcfg/1.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0 - http://www.kde.org/standards/kcfg/1.0/kcfg.xsd" > - <kcfgfile name="kresources_kcal_sloxrc"/> - - <group name="General"> - <entry type="String" name="Url"> - <label>Base Url</label> - </entry> - <entry type="String" name="User"> - <label>User Name</label> - </entry> - <entry type="Password" name="Password"> - <label>Password</label> - </entry> - <entry type="DateTime" name="LastEventSync"> - <label>Last Event Sync</label> - </entry> - <entry type="DateTime" name="LastTodoSync"> - <label>Last To-do Sync</label> - </entry> - <entry type="Bool" name="UseLastSync"> - <label>Only load data since last sync</label> - <default>true</default> - </entry> - <entry type="String" name="CalendarFolderId"> - <label>Calendar Folder</label> - <default></default> - </entry> - <entry type="String" name="TaskFolderId"> - <label>Task Folder</label> - <default></default> - </entry> - </group> - -</kcfg> diff --git a/kresources/slox/sloxaccounts.cpp b/kresources/slox/sloxaccounts.cpp deleted file mode 100644 index aa648d1bc..000000000 --- a/kresources/slox/sloxaccounts.cpp +++ /dev/null @@ -1,222 +0,0 @@ -/* - This file is part of tdepim. - - Copyright (c) 2004 Cornelius Schumacher <schumacher@kde.org> - Copyright (c) 2005 Volker Krause <volker.krause@rwth-aachen.de> - - 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; either version 2 of the License, or - (at your option) any later version. - - 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; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -*/ - -#include "sloxaccounts.h" -#include "sloxbase.h" -#include "webdavhandler.h" - -#include <libkcal/freebusyurlstore.h> - -#include <kstaticdeleter.h> -#include <kdebug.h> -#include <kstandarddirs.h> -#include <kio/job.h> -#include <kio/davjob.h> -#include <kstringhandler.h> -#include <kconfig.h> - -#include <tqfile.h> -#include <tqdom.h> -#include <tqstring.h> - -SloxAccounts::SloxAccounts( SloxBase *res, const KURL &baseUrl ) - : mBaseUrl( baseUrl ), mRes( res ) -{ - kdDebug() << "SloxAccounts(): " << baseUrl << endl; - - mDownloadJob = 0; - - TQString server = mBaseUrl.host(); - - TQStringList l = TQStringList::split( '.', server ); - - if ( l.count() < 2 ) mDomain = server; - else mDomain = l[ l.count() - 2 ] + "." + l[ l.count() - 1 ]; - - readAccounts(); -} - -SloxAccounts::~SloxAccounts() -{ - kdDebug() << "~SloxAccounts()" << endl; - - if ( mDownloadJob ) mDownloadJob->kill(); -} - -void SloxAccounts::insertUser( const TQString &id, const KABC::Addressee &a ) -{ - kdDebug() << "SloxAccount::insertUser() " << id << endl; - - mUsers.replace( id, a ); - - TQString email = a.preferredEmail(); - - TQString url = "http://" + mBaseUrl.host() + "/servlet/webdav.freebusy?username="; - url += id + "&server=" + mDomain; - - KCal::FreeBusyUrlStore::self()->writeUrl( email, url ); -} - -KABC::Addressee SloxAccounts::lookupUser( const TQString &id ) -{ - TQMap<TQString, KABC::Addressee>::ConstIterator it; - it = mUsers.find( id ); - if ( it == mUsers.end() ) { - requestAccounts(); - return KABC::Addressee(); - } else { - return *it; - } -} - -TQString SloxAccounts::lookupId( const TQString &email ) -{ - kdDebug() << "SloxAccounts::lookupId() " << email << endl; - - TQMap<TQString, KABC::Addressee>::ConstIterator it; - for( it = mUsers.begin(); it != mUsers.end(); ++it ) { - kdDebug() << "PREF: " << (*it).preferredEmail() << endl; - kdDebug() << "KEY: " << it.key() << endl; - if ( (*it).preferredEmail() == email ) return it.key(); - } - requestAccounts(); - - int pos = email.find( '@' ); - if ( pos < 0 ) return email; - else return email.left( pos ); -} - -void SloxAccounts::requestAccounts() -{ - kdDebug() << "SloxAccounts::requestAccounts()" << endl; - - if ( mDownloadJob ) { - kdDebug() << "SloxAccount::requestAccounts(): Download still in progress" - << endl; - return; - } - - if ( mRes->resType() == "slox" ) { - KURL url = mBaseUrl; - url.addPath( "/servlet/webdav.groupuser" ); - url.setQuery( "?user=*&group=*&groupres=*&res=*&details=t" ); - - kdDebug() << "SloxAccounts::requestAccounts() URL: " << url << endl; - - mDownloadJob = TDEIO::file_copy( url, cacheFile(), -1, true, false, false ); - } else if ( mRes->resType() == "ox" ) { - KURL url = mBaseUrl; - url.setPath( "/servlet/webdav.groupuser/" ); - - TQDomDocument doc; - TQDomElement root = WebdavHandler::addDavElement( doc, doc, "propfind" ); - TQDomElement prop = WebdavHandler::addDavElement( doc, root, "prop" ); - WebdavHandler::addSloxElement( mRes, doc, prop, "user", "*" ); - WebdavHandler::addSloxElement( mRes, doc, prop, "group", "*" ); - WebdavHandler::addSloxElement( mRes, doc, prop, "resource", "*" ); - WebdavHandler::addSloxElement( mRes, doc, prop, "resourcegroup", "*" ); - - kdDebug() << k_funcinfo << doc.toString( 2 ) << endl; - - mDownloadJob = TDEIO::davPropFind( url, doc, "0", false ); - } - - connect( mDownloadJob, TQT_SIGNAL( result( TDEIO::Job * ) ), - TQT_SLOT( slotResult( TDEIO::Job * ) ) ); -} - -void SloxAccounts::slotResult( TDEIO::Job *job ) -{ - kdDebug() << "SloxAccounts::slotResult()" << endl; - - if ( job->error() ) { - job->showErrorDialog( 0 ); - } else { - if ( mRes->resType() == "ox" ) { - TQFile f( cacheFile() ); - if ( !f.open( IO_WriteOnly ) ) { - kdWarning() << "Unable to open '" << cacheFile() << "'" << endl; - return; - } - TQTextStream stream ( &f ); - stream << static_cast<TDEIO::DavJob*>( mDownloadJob )->response(); - f.close(); - } - readAccounts(); - } - - mDownloadJob = 0; -} - -TQString SloxAccounts::cacheFile() const -{ - TQString host = mBaseUrl.host(); - - TQString file = locateLocal( "cache", "slox/accounts_" + host ); - - kdDebug() << "SloxAccounts::cacheFile(): " << file << endl; - - return file; -} - -void SloxAccounts::readAccounts() -{ - kdDebug() << "SloxAccounts::readAccounts()" << endl; - - TQFile f( cacheFile() ); - if ( !f.open( IO_ReadOnly ) ) { - kdDebug() << "Unable to open '" << cacheFile() << "'" << endl; - requestAccounts(); - return; - } - - TQDomDocument doc; - doc.setContent( &f ); - -// kdDebug() << "SLOX ACCOUNTS: " << doc.toString( 2 ) << endl; - - TQDomElement docElement = doc.documentElement(); - - mUsers.clear(); - - TQDomNodeList nodes = doc.elementsByTagName( mRes->resType() == "ox" ? "ox:user" : "user" ); - for( uint i = 0; i < nodes.count(); ++i ) { - TQDomElement element = nodes.item(i).toElement(); - TQString id; - KABC::Addressee a; - TQDomNode n; - for( n = element.firstChild(); !n.isNull(); n = n.nextSibling() ) { - TQDomElement e = n.toElement(); - TQString tag = e.tagName(); - // remove XML namespace - tag = tag.right( tag.length() - ( tag.find( ':' ) + 1 ) ); - TQString value = e.text(); - if ( tag == "uid" ) id = value; - else if ( tag == "mail" ) a.insertEmail( value, true ); - else if ( tag == "forename" ) a.setGivenName( value ); - else if ( tag == "surename" ) a.setFamilyName( value ); - } -// kdDebug() << "MAIL: " << a.preferredEmail() << endl; - insertUser( id, a ); - } -} - -#include "sloxaccounts.moc" diff --git a/kresources/slox/sloxaccounts.h b/kresources/slox/sloxaccounts.h deleted file mode 100644 index 214e3c707..000000000 --- a/kresources/slox/sloxaccounts.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - This file is part of tdepim. - - Copyright (c) 2004 Cornelius Schumacher <schumacher@kde.org> - - 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; either version 2 of the License, or - (at your option) any later version. - - 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; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -*/ -#ifndef SLOXACCOUNTS_H -#define SLOXACCOUNTS_H - -#include <kabc/addressee.h> -#include <tdepimmacros.h> -#include <tqobject.h> - -namespace TDEIO { -class Job; -} - -class SloxBase; - -class KDE_EXPORT SloxAccounts : public TQObject -{ - Q_OBJECT - - public: - SloxAccounts( SloxBase *res, const KURL &baseUrl ); - ~SloxAccounts(); - - void insertUser( const TQString &id, const KABC::Addressee &a ); - - KABC::Addressee lookupUser( const TQString &id ); - - TQString lookupId( const TQString &email ); - - protected: - void requestAccounts(); - void readAccounts(); - - TQString cacheFile() const; - - protected slots: - void slotResult( TDEIO::Job * ); - - private: - TQString mDomain; - - TDEIO::Job *mDownloadJob; - - TQMap<TQString, KABC::Addressee> mUsers; // map users ids to addressees. - - KURL mBaseUrl; - SloxBase *mRes; -}; - -#endif diff --git a/kresources/slox/sloxbase.cpp b/kresources/slox/sloxbase.cpp deleted file mode 100644 index 3871a2c7a..000000000 --- a/kresources/slox/sloxbase.cpp +++ /dev/null @@ -1,139 +0,0 @@ -/* - Copyright (c) 2005 by Volker Krause <volker.krause@rwth-aachen.de> - Copyright (c) 2005 by Florian Schröder <florian@deltatauchi.de> - - 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; either version 2 of the License, or - (at your option) any later version. - - 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; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -*/ - -#include "sloxbase.h" - -#include <kdebug.h> -#include <kresources/resource.h> - -static TQString mFieldNameMap[][2] = -{ - // SLOX, OX - {"sloxid", "object_id"}, // system fields - {"clientid", "client_id"}, - {"folderid", "folder_id"}, - {"lastsync", "lastsync"}, - {"objecttype", "objectmode"}, - {"sloxstatus", "object_status"}, - {"createfrom", "created_by"}, - {"categories", "categories"}, - // incidence fields - {"title", "title"}, - {"description", "note"}, - {"members", "participants"}, - {"member", "user"}, - {"reminder", "alarm"}, - // recurrence fields - {"date_sequence", "recurrence_type"}, - {"ds_ends", "until"}, - {"daily_value", "interval"}, - {"weekly_value", "interval"}, - {"monthly_value_month", "interval"}, - {"monthly_value_day", "day_in_month"}, - {"yearly_value_day", "day_in_month"}, - {"yearly_month", "month"}, - {"monthly2_value_month", "interval"}, - {"monthly2_day", "days"}, - {"monthly2_recurrency", "day_in_month"}, - {"yearly2_day", "days"}, - {"yearly2_reccurency", "day_in_month"}, // this is not a typo, this is what SLOX erally sends! - {"yearly2_month", "month"}, - {"deleteexceptions", "deleteexceptions"}, - // event fields - {"begins", "start_date"}, - {"ends", "end_date"}, - {"location", "location"}, - {"full_time", "full_time"}, - // task fields - {"startdate", "start_date"}, - {"deadline", "end_date"}, - {"priority", "priority"}, - {"status", "percent_complete"}, - // contact fields - {"lastname", "last_name"}, - {"firstname", "first_name"}, - {"n/a", "second_name"}, - {"displayname", "displayname"}, // FIXME: what's this in SLOX? - {"title", "title"}, - {"n/a", "suffix"}, - {"position", "position"}, - {"n/a", "company"}, // SLOX handles company separately - {"department", "department"}, - {"email", "email1"}, - {"email2", "email2"}, - {"privateemail", "email3"}, - {"privateemail2", "email3"}, // OX has only three email fields - {"birthday", "birthday"}, - {"privateurl", "url"}, - {"comment", "note"}, - {"n/a", "image1"}, // not supported by SLOX - {"n/a", "instant_messenger"}, - {"n/a", "room_number"}, - {"n/a", "profession"}, - {"n/a", "managers_name"}, - {"n/a", "assistants_name"}, - {"n/a", "spouse_name"}, - {"n/a", "anniversary"}, - {"n/a", "nickname"}, - {"street", "street"}, // address fields - {"zipcode", "postal_code"}, - {"city", "city"}, - {"state", "state"}, - {"country", "country"}, - {"private", ""}, // address type prefix - {"business_", "business_"}, // doesn't work with SLOX - {"second_", "second_"}, -}; - -SloxBase::SloxBase( KRES::Resource * res ) : - mRes( res ) -{ -} - -TQString SloxBase::decodeText( const TQString & text ) -{ - if ( mRes->type() == "ox" ) - return text; - return TQString::fromUtf8( text.latin1() ); -} - -TQString SloxBase::fieldName( Field f ) -{ - int t = 0; - if ( mRes->type() == "ox" ) - t = 1; - return mFieldNameMap[f][t]; -} - -TQString SloxBase::resType( ) const -{ - return mRes->type(); -} - -TQString SloxBase::boolToStr( bool b ) -{ - if ( mRes->type() == "ox" ) { - if ( b ) - return "true"; - return "false"; - } - if ( b ) - return "yes"; - return "no"; -} diff --git a/kresources/slox/sloxbase.h b/kresources/slox/sloxbase.h deleted file mode 100644 index 8e9309c9d..000000000 --- a/kresources/slox/sloxbase.h +++ /dev/null @@ -1,115 +0,0 @@ -/* - Copyright (c) 2005 by Volker Krause <volker.krause@rwth-aachen.de> - Copyright (c) 2005 by Florian Schröder <florian@deltatauchi.de> - - 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; either version 2 of the License, or - (at your option) any later version. - - 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; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -*/ - -#ifndef SLOXUTILS_H -#define SLOXUTILS_H - -#include <tqstring.h> -#include <tdepimmacros.h> - -namespace KRES { -class Resource; -} - -class KDE_EXPORT SloxBase { - public: - enum Field { - ObjectId = 0, // system fields - ClientId, - FolderId, - LastSync, - ObjectType, - ObjecStatus, - CreatedBy, - Categories, - IncidenceTitle, // incidence fields - Description, - Participants, - Participant, - Reminder, - RecurrenceType, // recurrence fields - RecurrenceEnd, - RecurrenceDailyFreq, - RecurrenceWeeklyFreq, - RecurrenceMonthlyFreq, - RecurrenceMonthlyDay, - RecurrenceYearlyDay, - RecurrenceYearlyMonth, - RecurrenceMonthly2Freq, - RecurrenceMonthly2Day, - RecurrenceMonthly2Pos, - RecurrenceYearly2Day, - RecurrenceYearly2Pos, - RecurrenceYearly2Month, - RecurrenceDelEx, - EventBegin, // event fields - EventEnd, - Location, - FullTime, - TaskBegin, // task fields - TaskEnd, - Priority, - PercentComplete, - FamilyName, // contact fields - GivenName, - SecondName, - DisplayName, - Title, - Suffix, - Role, - Organization, - Department, - PrimaryEmail, - SecondaryEmail1, - SecondaryEmail2, - SecondaryEmail3, - Birthday, - Url, - Comment, - Image, - InstantMsg, - Office, - Profession, - ManagersName, - AssistantsName, - SpousesName, - Anniversary, - NickName, - Street, // address fields - PostalCode, - City, - State, - Country, - HomePrefix, // address type prefixes - BusinessPrefix, - OtherPrefix - }; - - SloxBase( KRES::Resource *res ); - - TQString decodeText( const TQString &text ); - TQString fieldName( Field f ); - TQString resType() const; - TQString boolToStr( bool b ); - - private: - KRES::Resource *mRes; -}; - -#endif diff --git a/kresources/slox/sloxfolder.cpp b/kresources/slox/sloxfolder.cpp deleted file mode 100644 index fbfb9f051..000000000 --- a/kresources/slox/sloxfolder.cpp +++ /dev/null @@ -1,49 +0,0 @@ -/* - Copyright (c) 2005 by Volker Krause <volker.krause@rwth-aachen.de> - Copyright (c) 2005 by Florian Schröder <florian@deltatauchi.de> - - 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; either version 2 of the License, or - (at your option) any later version. - - 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; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -*/ - -#include <klocale.h> - -#include "sloxfolder.h" - -SloxFolder::SloxFolder( const TQString &id, const TQString &parentId, const TQString &type, const TQString &name, bool def ) : - item( 0 ), - mId( id ), - mParentId( parentId ), - mName( name ), - mDefault( def ) -{ - if ( type == "calendar" ) - mType = Calendar; - else if ( type == "task" ) - mType = Tasks; - else if ( type == "contact" ) - mType = Contacts; - else - mType = Unbound; -} - -TQString SloxFolder::name( ) const -{ - // special cases for system folders - if ( mName == "system_global" ) - return i18n( "Global Addressbook" ); - if ( mName == "system_ldap" ) - return i18n( "Internal Addressbook" ); - return mName; -} diff --git a/kresources/slox/sloxfolder.h b/kresources/slox/sloxfolder.h deleted file mode 100644 index e722dfd4c..000000000 --- a/kresources/slox/sloxfolder.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - Copyright (c) 2005 by Volker Krause <volker.krause@rwth-aachen.de> - Copyright (c) 2005 by Florian Schröder <florian@deltatauchi.de> - - 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; either version 2 of the License, or - (at your option) any later version. - - 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; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -*/ - -#ifndef SLOXFOLDER_H -#define SLOXFOLDER_H - -#include <tqstring.h> -#include <tdepimmacros.h> - -class KListViewItem; - -enum FolderType { - Unbound, - Calendar, - Tasks, - Contacts -}; - -class KDE_EXPORT SloxFolder -{ - public: - SloxFolder( const TQString &id, const TQString &parentId, const TQString &type, const TQString &name, bool def = false ); - - TQString id() const { return mId; } - TQString parentId() const { return mParentId; } - FolderType type() const { return mType; } - TQString name() const; - bool isDefault() const { return mDefault; } - - KListViewItem *item; - - private: - TQString mId, mParentId; - FolderType mType; - TQString mName; - bool mDefault; -}; - -#endif diff --git a/kresources/slox/sloxfolderdialog.cpp b/kresources/slox/sloxfolderdialog.cpp deleted file mode 100644 index 4d21c2307..000000000 --- a/kresources/slox/sloxfolderdialog.cpp +++ /dev/null @@ -1,125 +0,0 @@ -/* - Copyright (c) 2005 by Volker Krause <volker.krause@rwth-aachen.de> - - 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; either version 2 of the License, or - (at your option) any later version. - - 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; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -*/ - - -#include <kiconloader.h> -#include <kguiitem.h> -#include <klistview.h> -#include <klocale.h> - -#include "sloxfolderdialog.h" -#include "sloxfoldermanager.h" - -SloxFolderDialog::SloxFolderDialog( SloxFolderManager *manager, FolderType type, TQWidget *parent, const char *name ) : - KDialogBase( parent, name, true, i18n("Select Folder"), Ok|Cancel|User1, Ok, false, KGuiItem( i18n("Reload"), "reload" ) ), - mManager( manager ), - mFolderType( type ) -{ - mListView = new KListView( this ); - mListView->setRootIsDecorated( true ); - mListView->setShowSortIndicator( true ); - mListView->addColumn( i18n("Folder") ); - mListView->addColumn( i18n("Folder ID"), 0 ); - setMainWidget( mListView ); - updateFolderView(); - connect( manager, TQT_SIGNAL( foldersUpdated() ), TQT_SLOT( updateFolderView() ) ); -} - -SloxFolderDialog::~SloxFolderDialog() -{ - TQMap<TQString, SloxFolder*> folders = mManager->folders(); - TQMap<TQString, SloxFolder*>::Iterator it; - for ( it = folders.begin(); it != folders.end(); ++it ) - (*it)->item = 0; -} - -void SloxFolderDialog::updateFolderView() -{ - TQString selected = selectedFolder(); - mListView->clear(); - TQMap<TQString, SloxFolder*> folders = mManager->folders(); - TQMap<TQString, SloxFolder*>::Iterator it; - for ( it = folders.begin(); it != folders.end(); ++it ) - createFolderViewItem( *it ); - setSelectedFolder( selected ); -} - -void SloxFolderDialog::slotUser1( ) -{ - mManager->requestFolders(); -} - -void SloxFolderDialog::createFolderViewItem( SloxFolder *folder ) -{ - if ( folder->item ) - return; - if ( folder->type() != mFolderType && folder->type() != Unbound ) - return; - if( mManager->folders().contains( folder->parentId() ) ) { - SloxFolder *parent = mManager->folders()[folder->parentId()]; - createFolderViewItem( parent ); - if ( parent->item ) - folder->item = new KListViewItem( parent->item ); - else - folder->item = new KListViewItem( mListView ); - } else { - folder->item = new KListViewItem( mListView ); - } - folder->item->setText( 0, folder->name() ); - folder->item->setText( 1, folder->id() ); - TDEGlobal::instance()->iconLoader()->addAppDir( "kmail" ); - switch ( folder->type() ) { - case Calendar: - folder->item->setPixmap( 0, SmallIcon( "kmgroupware_folder_calendar" ) ); - break; - case Tasks: - folder->item->setPixmap( 0, SmallIcon( "kmgroupware_folder_tasks" ) ); - break; - case Contacts: - folder->item->setPixmap( 0, SmallIcon( "kmgroupware_folder_contacts" ) ); - break; - default: - folder->item->setPixmap( 0, SmallIcon( "folder" ) ); - break; - } -} - -TQString SloxFolderDialog::selectedFolder() const -{ - TQListViewItem *item = mListView->selectedItem(); - if ( item ) - return item->text( 1 ); - return "-1"; // OX default folder -} - -void SloxFolderDialog::setSelectedFolder( const TQString &id ) -{ - TQMap<TQString, SloxFolder*> folders = mManager->folders(); - TQMap<TQString, SloxFolder*>::Iterator it; - for ( it = folders.begin(); it != folders.end(); ++it ) { - if ( !(*it)->item ) - continue; - if ( (*it)->id() == id || ( ( id.isEmpty() || id == "-1" ) && (*it)->isDefault() ) ) { - mListView->setSelected( (*it)->item, true ); - mListView->ensureItemVisible( (*it)->item ); - break; - } - } -} - -#include "sloxfolderdialog.moc" diff --git a/kresources/slox/sloxfolderdialog.h b/kresources/slox/sloxfolderdialog.h deleted file mode 100644 index 69b8126bd..000000000 --- a/kresources/slox/sloxfolderdialog.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - Copyright (c) 2005 by Volker Krause <volker.krause@rwth-aachen.de> - - 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; either version 2 of the License, or - (at your option) any later version. - - 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; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -*/ - -#ifndef SLOXFOLDERDIALOG_H -#define SLOXFOLDERDIALOG_H - -#include <tqstring.h> -#include <kdialogbase.h> - -#include "sloxfolder.h" - -class KListView; -class SloxFolder; -class SloxFolderManager; - -class SloxFolderDialog : public KDialogBase -{ - Q_OBJECT - - public: - SloxFolderDialog( SloxFolderManager *manager, FolderType type, TQWidget* parent = 0, const char *name = 0 ); - ~SloxFolderDialog(); - - TQString selectedFolder() const; - void setSelectedFolder( const TQString &id ); - - protected slots: - virtual void slotUser1(); - void updateFolderView(); - - private: - void createFolderViewItem( SloxFolder *folder ); - - private: - KListView *mListView; - SloxFolderManager *mManager; - TQString mFolderId; - FolderType mFolderType; -}; - -#endif diff --git a/kresources/slox/sloxfoldermanager.cpp b/kresources/slox/sloxfoldermanager.cpp deleted file mode 100644 index a60cd7885..000000000 --- a/kresources/slox/sloxfoldermanager.cpp +++ /dev/null @@ -1,172 +0,0 @@ -/* - Copyright (c) 2005 by Volker Krause <volker.krause@rwth-aachen.de> - Copyright (c) 2005 by Florian Schröder <florian@deltatauchi.de> - - 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; either version 2 of the License, or - (at your option) any later version. - - 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; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -*/ - -#include <tqfile.h> -#include <tqdom.h> -#include <tqstring.h> - -#include <kdebug.h> -#include <kio/job.h> -#include <kio/davjob.h> -#include <klocale.h> -#include <kstandarddirs.h> - -#include "sloxbase.h" -#include "sloxfolder.h" -#include "sloxfoldermanager.h" -#include "webdavhandler.h" - - -SloxFolderManager::SloxFolderManager( SloxBase *res, const KURL & baseUrl ) : - mDownloadJob( 0 ), - mBaseUrl( baseUrl ), - mRes( res ) -{ - kdDebug() << k_funcinfo << baseUrl << endl; - readFolders(); -} - -SloxFolderManager::~SloxFolderManager() -{ - if ( mDownloadJob ) - mDownloadJob->kill(); - TQMap<TQString, SloxFolder*>::Iterator it; - for ( it = mFolders.begin(); it != mFolders.end(); ++it ) - delete *it; - mFolders.clear(); -} - -void SloxFolderManager::requestFolders() -{ - kdDebug() << k_funcinfo << endl; - - if ( mDownloadJob ) { - kdDebug() << k_funcinfo << "Download still in progress" << endl; - return; - } - - KURL url = mBaseUrl; - url.setPath( "/servlet/webdav.folders/file.xml" ); - - TQDomDocument doc; - TQDomElement root = WebdavHandler::addDavElement( doc, doc, "propfind" ); - TQDomElement prop = WebdavHandler::addDavElement( doc, root, "prop" ); - WebdavHandler::addSloxElement( mRes, doc, prop, "objectmode", "NEW_AND_MODIFIED" ); - WebdavHandler::addSloxElement( mRes, doc, prop, "lastsync", "0" ); - WebdavHandler::addSloxElement( mRes, doc, prop, "foldertype", "PRIVATE" ); - WebdavHandler::addSloxElement( mRes, doc, prop, "foldertype", "PUBLIC" ); - WebdavHandler::addSloxElement( mRes, doc, prop, "foldertype", "SHARED" ); - WebdavHandler::addSloxElement( mRes, doc, prop, "foldertype", "GLOBALADDRESSBOOK" ); - WebdavHandler::addSloxElement( mRes, doc, prop, "foldertype", "INTERNALUSERS" ); - - kdDebug() << k_funcinfo << doc.toString( 2 ) << endl; - - mDownloadJob = TDEIO::davPropFind( url, doc, "0", false ); - - connect( mDownloadJob, TQT_SIGNAL( result( TDEIO::Job * ) ), - TQT_SLOT( slotResult( TDEIO::Job * ) ) ); -} - -void SloxFolderManager::slotResult( TDEIO::Job *job ) -{ - kdDebug() << k_funcinfo << endl; - - if ( job->error() ) { - job->showErrorDialog( 0 ); - } else { - kdDebug() << k_funcinfo << " success, writing to " << cacheFile() << endl; - TQFile f( cacheFile() ); - if ( !f.open( IO_WriteOnly ) ) { - kdDebug() << "Unable to open '" << cacheFile() << "'" << endl; - return; - } - TQTextStream stream ( &f ); - stream << mDownloadJob->response(); - f.close(); - readFolders(); - } - - mDownloadJob = 0; - emit foldersUpdated(); -} - -TQString SloxFolderManager::cacheFile() const -{ - TQString host = mBaseUrl.host(); - - TQString file = locateLocal( "cache", "slox/folders_" + host ); - - kdDebug() << k_funcinfo << file << endl; - - return file; -} - -void SloxFolderManager::readFolders() -{ - kdDebug() << k_funcinfo << endl; - - TQFile f( cacheFile() ); - if ( !f.open( IO_ReadOnly ) ) { - kdDebug() << "Unable to open '" << cacheFile() << "'" << endl; - requestFolders(); - return; - } - - TQDomDocument doc; - doc.setContent( &f ); - - mFolders.clear(); - - TQDomNodeList nodes = doc.elementsByTagName( "D:prop" ); - for( uint i = 0; i < nodes.count(); ++i ) { - TQDomElement element = nodes.item(i).toElement(); - TQString id = "-1", parentId = "-1"; // OX default folder - bool def = false; - TQString name, type; - TQDomNode n; - for( n = element.firstChild(); !n.isNull(); n = n.nextSibling() ) { - TQDomElement e = n.toElement(); - TQString tag = e.tagName(); - TQString value = e.text(); - if ( tag == "ox:object_id" ) id = value; - else if ( tag == "ox:folder_id" ) parentId = value; - else if ( tag == "ox:title" ) name = value; - else if ( tag == "ox:module" ) type = value; - else if ( tag == "ox:defaultfolder" ) def = (value == "true"); - } - if ( id != "-1" && parentId != "-1" ) { - SloxFolder *folder = new SloxFolder( id, parentId, type, name, def ); - mFolders[id] = folder; - kdDebug() << k_funcinfo << "Found folder: " << folder->name() << endl; - } - } - - // add top-level system folders that are not contained in the folder listing - SloxFolder *folder = new SloxFolder( "1", "0", "unbound", i18n("Private Folder") ); - mFolders[folder->id()] = folder; - folder = new SloxFolder( "2", "0", "unbound", i18n("Public Folder") ); - mFolders[folder->id()] = folder; - folder = new SloxFolder( "3", "0", "unbound", i18n("Shared Folder") ); - mFolders[folder->id()] = folder; - folder = new SloxFolder( "4", "0", "unbound", i18n("System Folder") ); - mFolders[folder->id()] = folder; -} - - -#include "sloxfoldermanager.moc" diff --git a/kresources/slox/sloxfoldermanager.h b/kresources/slox/sloxfoldermanager.h deleted file mode 100644 index f31c212c7..000000000 --- a/kresources/slox/sloxfoldermanager.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - Copyright (c) 2005 by Volker Krause <volker.krause@rwth-aachen.de> - Copyright (c) 2005 by Florian Schröder <florian@deltatauchi.de> - - 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; either version 2 of the License, or - (at your option) any later version. - - 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; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -*/ - -#ifndef SLOXFOLDERMANAGER_H -#define SLOXFOLDERMANAGER_H - -#include <tqmap.h> -#include <tqobject.h> - -#include <kurl.h> - -#include <tdepimmacros.h> - -namespace TDEIO { -class Job; -class DavJob; -} - -class SloxBase; -class SloxFolder; - -class KDE_EXPORT SloxFolderManager : public TQObject -{ - Q_OBJECT - - public: - SloxFolderManager( SloxBase *res, const KURL &baseUrl ); - ~SloxFolderManager(); - - TQMap<TQString, SloxFolder*> folders() const { return mFolders; } - void requestFolders(); - - signals: - void foldersUpdated(); - - protected: - void readFolders(); - - TQString cacheFile() const; - - protected slots: - void slotResult( TDEIO::Job * ); - - private: - TDEIO::DavJob *mDownloadJob; - KURL mBaseUrl; - TQMap<TQString, SloxFolder*> mFolders; - SloxBase *mRes; -}; - -#endif diff --git a/kresources/slox/testsloxaccounts.cpp b/kresources/slox/testsloxaccounts.cpp deleted file mode 100644 index e173134c5..000000000 --- a/kresources/slox/testsloxaccounts.cpp +++ /dev/null @@ -1,61 +0,0 @@ -/* - This file is part of tdepim. - - Copyright (c) 2004 Cornelius Schumacher <schumacher@kde.org> - - 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; either version 2 of the License, or - (at your option) any later version. - - 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; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -*/ - -#include "sloxaccounts.h" - -#include <kaboutdata.h> -#include <kapplication.h> -#include <kdebug.h> -#include <kcmdlineargs.h> - -#include <tqpushbutton.h> - -static const KCmdLineOptions options[] = -{ - {"verbose", "Verbose output", 0}, - KCmdLineLastOption -}; - -int main(int argc,char **argv) -{ - TDEAboutData aboutData( "textsloxaccounts", - "SUSE LINUX Openexchange Server Configuration Wizard", - "0.1" ); - TDECmdLineArgs::init( argc, argv, &aboutData ); - TDECmdLineArgs::addCmdLineOptions( options ); - - TDEApplication app; - - TDECmdLineArgs *args = TDECmdLineArgs::parsedArgs(); - - bool verbose = false; - if ( args->isSet( "verbose" ) ) verbose = true; - - TQPushButton button( "Close", 0 ); - - SloxAccounts::setServer( "f85.suse.de" ); - SloxAccounts::self(); - - app.setMainWidget( &button ); - button.show(); - TQObject::connect( &button, TQT_SIGNAL( clicked() ), &app, TQT_SLOT( quit() ) ); - - app.exec(); -} diff --git a/kresources/slox/webdavhandler.cpp b/kresources/slox/webdavhandler.cpp deleted file mode 100644 index 32d3c4167..000000000 --- a/kresources/slox/webdavhandler.cpp +++ /dev/null @@ -1,295 +0,0 @@ -/* - This file is part of tdepim. - - Copyright (c) 2004 Cornelius Schumacher <schumacher@kde.org> - - 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; either version 2 of the License, or - (at your option) any later version. - - 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; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -*/ - -#include "webdavhandler.h" -#include "sloxbase.h" - -#ifdef HAVE_VALUES_H -#include <values.h> -#else -#ifdef HAVE_SYS_LIMITS_H -#include <sys/limits.h> -#endif -#endif - -#include <config.h> -#include <stdlib.h> - -#include <libkcal/incidence.h> - -#include <libtdepim/kpimprefs.h> - -#include <kdebug.h> -#include <kconfig.h> - -#include <tqfile.h> - -SloxItem::SloxItem() - : status( Invalid ) -{ -} - -WebdavHandler::WebdavHandler() - : mLogCount( 0 ) -{ - TDEConfig cfg( "sloxrc" ); - - cfg.setGroup( "General" ); - mLogFile = cfg.readEntry( "LogFile" ); - - kdDebug() << "LOG FILE: " << mLogFile << endl; -} - -void WebdavHandler::setUserId( const TQString &id ) -{ - mUserId = id; -} - -TQString WebdavHandler::userId() const -{ - return mUserId; -} - - -void WebdavHandler::log( const TQString &text ) -{ - if ( mLogFile.isEmpty() ) return; - - TQString filename = mLogFile + "-" + TQString::number( mLogCount ); - TQFile file( filename ); - if ( !file.open( IO_WriteOnly ) ) { - kdWarning() << "Unable to open log file '" << filename << "'" << endl; - return; - } - - TQCString textUtf8 = text.utf8(); - file.writeBlock( textUtf8.data(), textUtf8.size() - 1 ); - - if ( ++mLogCount > 5 ) mLogCount = 0; -} - -TQValueList<SloxItem> WebdavHandler::getSloxItems( SloxBase *res, const TQDomDocument &doc ) -{ - kdDebug() << "getSloxItems" << endl; - - TQValueList<SloxItem> items; - - TQDomElement docElement = doc.documentElement(); - - TQDomNode responseNode; - for( responseNode = docElement.firstChild(); !responseNode.isNull(); - responseNode = responseNode.nextSibling() ) { - TQDomElement responseElement = responseNode.toElement(); - if ( responseElement.tagName() == "response" ) { - SloxItem item; - - TQDomNode propstat = responseElement.namedItem( "propstat" ); - if ( propstat.isNull() ) { - kdError() << "Unable to find propstat tag." << endl; - continue; - } - - TQDomNode prop = propstat.namedItem( "prop" ); - if ( prop.isNull() ) { - kdError() << "Unable to find WebDAV property" << endl; - continue; - } - item.domNode = prop; - - TQDomNode sloxIdNode = prop.namedItem( res->fieldName( SloxBase::ObjectId ) ); - if ( sloxIdNode.isNull() ) { - kdError() << "Unable to find SLOX id." << endl; - continue; - } - TQDomElement sloxIdElement = sloxIdNode.toElement(); - item.sloxId = sloxIdElement.text(); - - TQDomNode clientIdNode = prop.namedItem( res->fieldName( SloxBase::ClientId ) ); - if ( !clientIdNode.isNull() ) { - TQDomElement clientIdElement = clientIdNode.toElement(); - item.clientId = clientIdElement.text(); - if ( item.clientId != item.sloxId ) - item.status = SloxItem::New; - } - - TQDomNode sloxStatus = prop.namedItem( res->fieldName( SloxBase::ObjecStatus ) ); - if ( !sloxStatus.isNull() ) { - TQDomElement sloxStatusElement = sloxStatus.toElement(); - if ( sloxStatusElement.text() == "DELETE" ) { - item.status = SloxItem::Delete; - } else if ( sloxStatusElement.text() == "CREATE" ) { - item.status = SloxItem::Create; - } - } - - TQDomNode status = propstat.namedItem( "status" ); - if ( status.isNull() ) { - kdError() << "Unable to find WebDAV status" << endl; - continue; - } - item.response = status.toElement().text(); - - TQDomNode desc = propstat.namedItem( "responsedescription" ); - if ( desc.isNull() ) { - kdError() << "Unable to find WebDAV responsedescription" << endl; - continue; - } - item.responseDescription = desc.toElement().text(); - - items.append( item ); - } - } - - return items; -} - -TQString WebdavHandler::qDateTimeToSlox( const TQDateTime &dt ) -{ - uint ticks = -dt.secsTo( TQDateTime( TQDate( 1970, 1, 1 ), TQTime( 0, 0 ) ) ); - - return TQString::number( ticks ) + "000"; -} - -TQString WebdavHandler::qDateTimeToSlox( const TQDateTime &dt, - const TQString &timeZoneId ) -{ - TQDateTime utc = KPimPrefs::localTimeToUtc( dt, timeZoneId ); - - // secsTo and toTime_t etc also perform a timezone conversion using the system timezone, - // but we want to use the calendar timezone, so we have to convert ourself and spoof the tz to UTC before - // converting to ticks to prevent this - TQCString origTz = getenv("TZ"); - setenv( "TZ", "UTC", 1 ); - uint ticks = utc.toTime_t(); - if ( origTz.isNull() ) - unsetenv( "TZ" ); - else - setenv( "TZ", origTz, 1 ); - - return TQString::number( ticks ) + "000"; -} - -TQDateTime WebdavHandler::sloxToTQDateTime( const TQString &str ) -{ - TQString s = str.mid( 0, str.length() - 3 ); - - bool preEpoch = s.startsWith("-"); - if (preEpoch) - s = s.mid(1); - - unsigned long ticks = s.toULong(); - - TQDateTime dt; - - if (preEpoch) { - dt.setTime_t( 0, Qt::UTC ); - if (ticks > INT_MAX) { - dt = dt.addSecs(-INT_MAX); - ticks -= INT_MAX; - } - dt = dt.addSecs(-((long) ticks)); - } - else - { - dt.setTime_t( ticks, Qt::UTC ); - } - - return dt; -} - -TQDateTime WebdavHandler::sloxToTQDateTime( const TQString &str, - const TQString &timeZoneId ) -{ - return KPimPrefs::utcToLocalTime( sloxToTQDateTime(str), timeZoneId ); -} - -TQDomElement WebdavHandler::addElement( TQDomDocument &doc, TQDomNode &node, - const TQString &tag ) -{ - TQDomElement el = doc.createElement( tag ); - node.appendChild( el ); - return el; -} - -TQDomElement WebdavHandler::addDavElement( TQDomDocument &doc, TQDomNode &node, - const TQString &tag ) -{ - TQDomElement el = doc.createElementNS( "DAV:", "D:" + tag ); - node.appendChild( el ); - return el; -} - -TQDomElement WebdavHandler::addSloxElement( SloxBase *res, - TQDomDocument &doc, TQDomNode &node, - const TQString &tag, - const TQString &text ) -{ - TQDomElement el; - if ( res->resType() == "ox" ) - el = doc.createElementNS( "http://www.open-xchange.org", "ox:" + tag ); - else - el = doc.createElementNS( "SLOX", "S:" + tag ); - if ( !text.isEmpty() ) { - TQDomText textnode = doc.createTextNode( text ); - el.appendChild( textnode ); - } - node.appendChild( el ); - return el; -} - -void WebdavHandler::parseSloxAttribute( const TQDomElement &e ) -{ -// kdDebug() << "parseSloxAttribute" << endl; - - TQString tag = e.tagName(); - TQString text = TQString::fromUtf8( e.text().latin1() ); - if ( text.isEmpty() ) return; - - if ( tag == "owner" ) { - if ( text == mUserId ) mWritable = true; - } else if ( tag == "writerights" ) { - TQDomNode n; - for( n = e.firstChild(); !n.isNull(); n = n.nextSibling() ) { - TQDomElement e2 = n.toElement(); - if ( e2.tagName() == "member" ) { - if ( e2.text() == mUserId ) mWritable = true; - } - // TODO: Process group write rights - } - } -} - -void WebdavHandler::clearSloxAttributeStatus() -{ - if ( mRes->resType() == "ox" ) - mWritable = true; // parseSloxAttribute() won't work for OX - else - mWritable = false; -} - -void WebdavHandler::setSloxAttributes( KCal::Incidence *i ) -{ - i->setReadOnly( !mWritable ); -} - -void WebdavHandler::setSloxAttributes( KABC::Addressee & ) -{ - // FIXME: libkabc doesn't allow to set an individual addressee to read-only -} diff --git a/kresources/slox/webdavhandler.h b/kresources/slox/webdavhandler.h deleted file mode 100644 index 136be879e..000000000 --- a/kresources/slox/webdavhandler.h +++ /dev/null @@ -1,96 +0,0 @@ -/* - This file is part of tdepim. - - Copyright (c) 2004 Cornelius Schumacher <schumacher@kde.org> - - 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; either version 2 of the License, or - (at your option) any later version. - - 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; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -*/ -#ifndef WEBDAVHANDLER_H -#define WEBDAVHANDLER_H - -#include <tqvaluelist.h> -#include <tqstring.h> -#include <tqdatetime.h> -#include <tqdom.h> - -#include <tdepimmacros.h> -#include <kabc/addressee.h> - -namespace KCal { -class Incidence; -} - -class SloxBase; - -class KDE_EXPORT SloxItem -{ - public: - enum Status { Invalid, Delete, Create, New }; - - SloxItem(); - - TQDomNode domNode; - TQString sloxId; - TQString clientId; - Status status; - TQString response; - TQString responseDescription; -}; - -class KDE_EXPORT WebdavHandler -{ - public: - WebdavHandler(); - - void setUserId( const TQString & ); - TQString userId() const; - void setResource( SloxBase *res ) { mRes = res; } - - void log( const TQString & ); - - static TQDomElement addElement( TQDomDocument &, TQDomNode &, - const TQString &tag ); - static TQDomElement addDavElement( TQDomDocument &, TQDomNode &, - const TQString &tag ); - static TQDomElement addSloxElement( SloxBase *res, - TQDomDocument &, TQDomNode &, - const TQString &tag, - const TQString &text = TQString() ); - - static TQDateTime sloxToTQDateTime( const TQString &str ); - static TQDateTime sloxToTQDateTime( const TQString &str, - const TQString &timeZoneId ); - static TQString qDateTimeToSlox( const TQDateTime &dt ); - static TQString qDateTimeToSlox( const TQDateTime &dt, - const TQString &timeZoneId ); - - static TQValueList<SloxItem> getSloxItems( SloxBase *res, const TQDomDocument &doc ); - - void clearSloxAttributeStatus(); - void parseSloxAttribute( const TQDomElement & ); - void setSloxAttributes( KCal::Incidence * ); - void setSloxAttributes( KABC::Addressee & ); - - private: - TQString mLogFile; - int mLogCount; - SloxBase *mRes; - - TQString mUserId; - - bool mWritable; -}; - -#endif |