summaryrefslogtreecommitdiffstats
path: root/kresources/slox/sloxfoldermanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kresources/slox/sloxfoldermanager.cpp')
-rw-r--r--kresources/slox/sloxfoldermanager.cpp172
1 files changed, 0 insertions, 172 deletions
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"