00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
#include <qtimer.h>
00023
00024
#include <addressbooksyncee.h>
00025
00026
#include <kabc/resource.h>
00027
#include <kabc/resourcefile.h>
00028
#include <kapabilities.h>
00029
#include <kconfig.h>
00030
#include <kgenericfactory.h>
00031
#include <konnectorinfo.h>
00032
#include <libkdepim/kabcresourcenull.h>
00033
00034
#include "kabckonnector.h"
00035
#include "kabckonnectorconfig.h"
00036
00037
using namespace KSync;
00038
00039
extern "C"
00040 {
00041
void *init_libkabckonnector()
00042 {
00043
return new KRES::PluginFactory<KABCKonnector,KABCKonnectorConfig>();
00044 }
00045 }
00046
00047
00048 KABCKonnector::KABCKonnector(
const KConfig *config )
00049 :
Konnector( config ), mConfigWidget( 0 ), mResource( 0 )
00050 {
00051
if ( config ) {
00052 mResourceIdentifier = config->readEntry(
"CurrentResource" );
00053 }
00054
00055 mManager =
new KRES::Manager<KABC::Resource>(
"contact" );
00056 mManager->readConfig();
00057
00058 mAddressBook.addResource(
new KABC::ResourceNull() );
00059
00060 mAddressBookSyncee =
new AddressBookSyncee( &mAddressBook );
00061 mAddressBookSyncee->setSource( i18n(
"Address Book" ) );
00062
00063 mSyncees.append( mAddressBookSyncee );
00064
00065 KRES::Manager<KABC::Resource>::ActiveIterator it;
00066
for ( it = mManager->activeBegin(); it != mManager->activeEnd(); ++it ) {
00067
if ( (*it)->identifier() == mResourceIdentifier ) {
00068 mResource = *it;
00069
break;
00070 }
00071 }
00072
00073
if ( mResource ) {
00074 connect( mResource, SIGNAL( loadingFinished( Resource* ) ),
00075 SLOT( loadingFinished() ) );
00076
00077 mResource->setAddressBook( &mAddressBook );
00078 }
00079 }
00080
00081 KABCKonnector::~KABCKonnector()
00082 {
00083
delete mManager;
00084 }
00085
00086
void KABCKonnector::writeConfig( KConfig *config )
00087 {
00088
Konnector::writeConfig( config );
00089
00090 config->writeEntry(
"CurrentResource", mResourceIdentifier );
00091 }
00092
00093 KSync::Kapabilities KABCKonnector::capabilities()
00094 {
00095 KSync::Kapabilities caps;
00096
00097 caps.setSupportMetaSyncing(
false );
00098 caps.setSupportsPushSync(
false );
00099 caps.setNeedsConnection(
false );
00100 caps.setSupportsListDir(
false );
00101 caps.setNeedsIPs(
false );
00102 caps.setNeedsSrcIP(
false );
00103 caps.setNeedsDestIP(
false );
00104 caps.setAutoHandle(
false );
00105 caps.setNeedAuthentication(
false );
00106 caps.setNeedsModelName(
false );
00107
00108
return caps;
00109 }
00110
00111
void KABCKonnector::setCapabilities(
const KSync::Kapabilities& )
00112 {
00113 }
00114
00115
bool KABCKonnector::readSyncees()
00116 {
00117
if ( !mResource )
00118
return false;
00119
00120
if ( !mResource->open() )
00121
return false;
00122
00123 mResource->asyncLoad();
00124
00125
return true;
00126 }
00127
00128
bool KABCKonnector::connectDevice()
00129 {
00130
return true;
00131 }
00132
00133
bool KABCKonnector::disconnectDevice()
00134 {
00135
return true;
00136 }
00137
00138
KSync::KonnectorInfo KABCKonnector::info()
const
00139
{
00140
return KonnectorInfo( i18n(
"Address Book Konnector" ),
00141
QIconSet(),
00142 QString::fromLatin1(
"KABCKonnector" ),
00143
"Address Book Konnector",
00144
"kaddressbook",
00145
false );
00146 }
00147
00148
void KABCKonnector::download(
const QString& )
00149 {
00150 error( StdError::downloadNotSupported() );
00151 }
00152
00153
bool KABCKonnector::writeSyncees()
00154 {
00155
if ( !mResource )
00156
return false;
00157
00158 KABC::AddressBook::Iterator it;
00159
for ( it = mAddressBook.begin(); it != mAddressBook.end(); ++it )
00160 mResource->insertAddressee( *it );
00161
00162
if ( !mResource->readOnly() ) {
00163 KABC::Ticket *ticket;
00164 ticket = mResource->requestSaveTicket();
00165
if ( !ticket ) {
00166 kdWarning() <<
"KABCKonnector::writeSyncees(). Couldn't get ticket for "
00167 <<
"resource." << endl;
00168
return false;
00169 }
00170
00171
if ( !mResource->save( ticket ) ) {
00172 kdWarning() <<
"KABCKonnector::writeSyncees(). Couldn't save resource." << endl;
00173
return false;
00174 }
00175 }
00176
00177 emit synceesWritten(
this );
00178
00179
return true;
00180 }
00181
00182
void KABCKonnector::loadingFinished()
00183 {
00184 mAddressBookSyncee->reset();
00185
00186 KABC::Resource::Iterator it;
00187
for ( it = mResource->begin(); it != mResource->end(); ++it ) {
00188 KSync::AddressBookSyncEntry entry( *it, mAddressBookSyncee );
00189 mAddressBookSyncee->addEntry( &entry );
00190 }
00191
00192 emit synceesRead(
this );
00193 }
00194
00195
#include "kabckonnector.moc"