summaryrefslogtreecommitdiffstats
path: root/kresources/egroupware/knotes_resourcexmlrpc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kresources/egroupware/knotes_resourcexmlrpc.cpp')
-rw-r--r--kresources/egroupware/knotes_resourcexmlrpc.cpp336
1 files changed, 0 insertions, 336 deletions
diff --git a/kresources/egroupware/knotes_resourcexmlrpc.cpp b/kresources/egroupware/knotes_resourcexmlrpc.cpp
deleted file mode 100644
index 1b19831bc..000000000
--- a/kresources/egroupware/knotes_resourcexmlrpc.cpp
+++ /dev/null
@@ -1,336 +0,0 @@
-/*
- This file is part of tdepim.
-
- Copyright (c) 2004 Tobias Koenig <tokoe@kde.org>
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public License
- along with this library; see the file COPYING.LIB. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA.
-*/
-
-#include <tqapplication.h>
-#include <tqstringlist.h>
-
-#include <kdebug.h>
-#include <klocale.h>
-#include <kstandarddirs.h>
-#include <kstringhandler.h>
-#include <kurl.h>
-
-#include "libkcal/journal.h"
-
-#include "knotes/resourcemanager.h"
-
-#include "knotes_egroupwareprefs.h"
-#include "knotes_resourcexmlrpc.h"
-#include "knotes_resourcexmlrpcconfig.h"
-
-#include "synchronizer.h"
-#include "xmlrpciface.h"
-
-using namespace KNotes;
-
-typedef KRES::PluginFactory< ResourceXMLRPC, ResourceXMLRPCConfig> XMLRPCFactory;
-K_EXPORT_COMPONENT_FACTORY( knotes_xmlrpc, XMLRPCFactory )
-
-static const TQString SearchNotesCommand = "infolog.boinfolog.search";
-static const TQString AddNoteCommand = "infolog.boinfolog.write";
-static const TQString DeleteNoteCommand = "infolog.boinfolog.delete";
-static const TQString LoadNoteCategoriesCommand = "infolog.boinfolog.categories";
-
-ResourceXMLRPC::ResourceXMLRPC( const TDEConfig* config )
- : ResourceNotes( config ), mCalendar( TQString::fromLatin1("UTC") ),
- mServer( 0 )
-{
- init();
-
- mPrefs->addGroupPrefix( identifier() );
-
- if ( config ) {
- readConfig( config );
- } else {
- setResourceName( i18n( "eGroupware Server" ) );
- }
-}
-
-ResourceXMLRPC::ResourceXMLRPC( )
- : ResourceNotes( 0 ), mCalendar( TQString::fromLatin1("UTC") ),
- mServer( 0 )
-{
- init();
-
- mPrefs->addGroupPrefix( identifier() );
-}
-
-ResourceXMLRPC::~ResourceXMLRPC()
-{
- delete mServer;
- mServer = 0;
-
- delete mPrefs;
- mPrefs = 0;
-
- delete mSynchronizer;
- mSynchronizer = 0;
-}
-
-void ResourceXMLRPC::init()
-{
- setType( "xmlrpc" );
-
- mPrefs = new EGroupwarePrefs;
-
- mSynchronizer = new Synchronizer;
-}
-
-void ResourceXMLRPC::readConfig( const TDEConfig* )
-{
- mPrefs->readConfig();
-}
-
-void ResourceXMLRPC::writeConfig( TDEConfig* config )
-{
- ResourceNotes::writeConfig( config );
-
- mPrefs->writeConfig();
-}
-
-bool ResourceXMLRPC::load()
-{
- mCalendar.close();
-
- if ( mServer )
- delete mServer;
-
- mServer = new KXMLRPC::Server( KURL(), this );
- mServer->setUrl( KURL( mPrefs->url() ) );
- mServer->setUserAgent( "KDE-Notes" );
-
- TQMap<TQString, TQVariant> args, columns;
- args.insert( "domain", mPrefs->domain() );
- args.insert( "username", mPrefs->user() );
- args.insert( "password", mPrefs->password() );
-
- mServer->call( "system.login", TQVariant( args ),
- this, TQT_SLOT( loginFinished( const TQValueList<TQVariant>&, const TQVariant& ) ),
- this, TQT_SLOT( fault( int, const TQString&, const TQVariant& ) ) );
-
- mSynchronizer->start();
-
- columns.insert( "type", "note" );
- args.clear();
- args.insert( "filter", "none" );
- args.insert( "col_filter", columns );
- args.insert( "order", "id_parent" );
-
- mServer->call( SearchNotesCommand, args,
- this, TQT_SLOT( listNotesFinished( const TQValueList<TQVariant>&, const TQVariant& ) ),
- this, TQT_SLOT( fault( int, const TQString&, const TQVariant& ) ) );
-
- mSynchronizer->start();
-
- return true;
-}
-
-bool ResourceXMLRPC::save()
-{
- mCalendar.close();
-
- return true;
-}
-
-bool ResourceXMLRPC::addNote( KCal::Journal *journal )
-{
- TQMap<TQString, TQVariant> args;
- writeNote( journal, args );
-
- KCal::Journal *oldJournal = mCalendar.journal( journal->uid() );
-
- bool added = false;
- if ( oldJournal ) {
- if ( !oldJournal->isReadOnly() ) {
- writeNote( journal, args );
- args.insert( "id", mUidMap[ journal->uid() ].toInt() );
- mServer->call( AddNoteCommand, TQVariant( args ),
- this, TQT_SLOT( updateNoteFinished( const TQValueList<TQVariant>&, const TQVariant& ) ),
- this, TQT_SLOT( fault( int, const TQString&, const TQVariant& ) ) );
- mCalendar.addJournal( journal );
- added = true;
- }
- } else {
- mServer->call( AddNoteCommand, TQVariant( args ),
- this, TQT_SLOT( addNoteFinished( const TQValueList<TQVariant>&, const TQVariant& ) ),
- this, TQT_SLOT( fault( int, const TQString&, const TQVariant& ) ),
- TQVariant( journal->uid() ) );
-
- mCalendar.addJournal( journal );
- added = true;
- }
-
- if ( added )
- mSynchronizer->start();
-
- return true;
-}
-
-bool ResourceXMLRPC::deleteNote( KCal::Journal *journal )
-{
- int id = mUidMap[ journal->uid() ].toInt();
-
- mServer->call( DeleteNoteCommand, id,
- this, TQT_SLOT( deleteNoteFinished( const TQValueList<TQVariant>&, const TQVariant& ) ),
- this, TQT_SLOT( fault( int, const TQString&, const TQVariant& ) ),
- TQVariant( journal->uid() ) );
- mSynchronizer->start();
-
- return true;
-}
-
-KCal::Alarm::List ResourceXMLRPC::alarms( const TQDateTime& from, const TQDateTime& to )
-{
- KCal::Alarm::List alarms;
- KCal::Journal::List notes = mCalendar.journals();
- KCal::Journal::List::ConstIterator note;
- for ( note = notes.begin(); note != notes.end(); ++note )
- {
- TQDateTime preTime = from.addSecs( -1 );
- KCal::Alarm::List::ConstIterator it;
- for( it = (*note)->alarms().begin(); it != (*note)->alarms().end(); ++it )
- {
- if ( (*it)->enabled() )
- {
- TQDateTime dt = (*it)->nextRepetition( preTime );
- if ( dt.isValid() && dt <= to )
- alarms.append( *it );
- }
- }
- }
-
- return alarms;
-}
-
-void ResourceXMLRPC::loginFinished( const TQValueList<TQVariant>& variant,
- const TQVariant& )
-{
- TQMap<TQString, TQVariant> map = variant[ 0 ].toMap();
-
- KURL url = KURL( mPrefs->url() );
- if ( map[ "GOAWAY" ].toString() == "XOXO" ) { // failed
- mSessionID = mKp3 = "";
- } else {
- mSessionID = map[ "sessionid" ].toString();
- mKp3 = map[ "kp3" ].toString();
- }
-
- url.setUser( mSessionID );
- url.setPass( mKp3 );
- mServer->setUrl( url );
-
- mSynchronizer->stop();
-}
-
-void ResourceXMLRPC::logoutFinished( const TQValueList<TQVariant>& variant,
- const TQVariant& )
-{
- TQMap<TQString, TQVariant> map = variant[ 0 ].toMap();
-
- if ( map[ "GOODBYE" ].toString() != "XOXO" )
- kdError() << "logout failed" << endl;
-
- KURL url = KURL( mPrefs->url() );
- mSessionID = mKp3 = "";
- url.setUser( mSessionID );
- url.setPass( mKp3 );
- mServer->setUrl( url );
-
- mSynchronizer->stop();
-}
-
-void ResourceXMLRPC::listNotesFinished( const TQValueList<TQVariant> &list, const TQVariant& )
-{
- TQMap<TQString, TQString>::Iterator uidIt;
- for ( uidIt = mUidMap.begin(); uidIt != mUidMap.end(); ++uidIt ) {
- KCal::Journal *journal = mCalendar.journal( uidIt.key() );
- mCalendar.deleteJournal( journal );
- }
-
- mUidMap.clear();
-
- TQValueList<TQVariant> noteList = list[ 0 ].toList();
- TQValueList<TQVariant>::Iterator noteIt;
-
- for ( noteIt = noteList.begin(); noteIt != noteList.end(); ++noteIt ) {
- TQMap<TQString, TQVariant> map = (*noteIt).toMap();
-
- KCal::Journal *journal = new KCal::Journal();
-
- TQString uid;
- readNote( map, journal, uid );
- mUidMap.insert( journal->uid(), uid );
-
- mCalendar.addJournal( journal );
- manager()->registerNote( this, journal );
- }
-
- mSynchronizer->stop();
-}
-
-void ResourceXMLRPC::addNoteFinished( const TQValueList<TQVariant> &list, const TQVariant &id )
-{
- int uid = list[ 0 ].toInt();
- mUidMap.insert( id.toString(), TQString::number( uid ) );
-
- mSynchronizer->stop();
-}
-
-void ResourceXMLRPC::updateNoteFinished( const TQValueList<TQVariant>&, const TQVariant& )
-{
- mSynchronizer->stop();
-}
-
-void ResourceXMLRPC::deleteNoteFinished( const TQValueList<TQVariant>&, const TQVariant &id )
-{
- mUidMap.erase( id.toString() );
-
- KCal::Journal *journal = mCalendar.journal( id.toString() );
- mCalendar.deleteJournal( journal );
-
- mSynchronizer->stop();
-}
-
-void ResourceXMLRPC::fault( int error, const TQString& errorMsg, const TQVariant& )
-{
- kdError() << "Server send error " << error << ": " << errorMsg << endl;
- mSynchronizer->stop();
-}
-
-void ResourceXMLRPC::writeNote( KCal::Journal* journal, TQMap<TQString, TQVariant>& args )
-{
- args.insert( "subject", journal->summary() );
- args.insert( "des", journal->description() );
- args.insert( "access",
- (journal->secrecy() == KCal::Journal::SecrecyPublic ? "public" : "private" ) );
-}
-
-void ResourceXMLRPC::readNote( const TQMap<TQString, TQVariant>& args, KCal::Journal *journal, TQString &uid )
-{
- uid = args[ "id" ].toString();
-
- journal->setSummary( args[ "subject" ].toString() );
- journal->setDescription( args[ "des" ].toString() );
- journal->setSecrecy( args[ "access" ].toString() == "public" ?
- KCal::Journal::SecrecyPublic : KCal::Journal::SecrecyPrivate );
-}
-
-#include "knotes_resourcexmlrpc.moc"