summaryrefslogtreecommitdiffabout
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/formatfactory.cpp2
-rw-r--r--kabc/formatplugin.h5
-rw-r--r--kabc/kabcE.pro2
-rw-r--r--kabc/stdaddressbook.cpp6
4 files changed, 9 insertions, 6 deletions
diff --git a/kabc/formatfactory.cpp b/kabc/formatfactory.cpp
index f107ebf..f2f03c6 100644
--- a/kabc/formatfactory.cpp
+++ b/kabc/formatfactory.cpp
@@ -1,182 +1,180 @@
/*
This file is part of libkabc.
Copyright (c) 2002 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., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#include <kdebug.h>
#include <klocale.h>
#include <ksimpleconfig.h>
#include <kstandarddirs.h>
#include <kstaticdeleter.h>
#include <qfile.h>
#include <qstringlist.h>
#include "vcardformatplugin.h"
#include "formatfactory.h"
using namespace KABC;
FormatFactory *FormatFactory::mSelf = 0;
static KStaticDeleter<FormatFactory> factoryDeleter;
FormatFactory *FormatFactory::self()
{
- kdDebug(5700) << "FormatFactory::self()" << endl;
-
if ( !mSelf ) {
//US factoryDeleter.setObject( mSelf, new FormatFactory );
mSelf = factoryDeleter.setObject( new FormatFactory );
}
return mSelf;
}
FormatFactory::FormatFactory()
{
mFormatList.setAutoDelete( true );
// dummy entry for default format
FormatInfo *info = new FormatInfo;
info->library = "<NoLibrary>";
info->nameLabel = i18n( "vCard" );
info->descriptionLabel = i18n( "vCard Format" );
mFormatList.insert( "vcard", info );
/*US lets enter all resources directly instead of using teh desktopfiles.
QStringList list = KGlobal::dirs()->findAllResources( "data" ,"kabc/formats/*.desktop", true, true );
for ( QStringList::ConstIterator it = list.begin(); it != list.end(); ++it )
{
//US KSimpleConfig config( *it, true );
KConfig config( *it );
if ( !config.hasGroup( "Misc" ) || !config.hasGroup( "Plugin" ) )
continue;
info = new FormatInfo;
config.setGroup( "Plugin" );
QString type = config.readEntry( "Type" );
info->library = config.readEntry( "X-KDE-Library" );
config.setGroup( "Misc" );
info->nameLabel = config.readEntry( "Name" );
info->descriptionLabel = config.readEntry( "Comment", i18n( "No description available." ) );
mFormatList.insert( type, info );
}
*/
//US we already have vcard as default format.
info = new FormatInfo;
info->library = i18n("microkabcformat_binary");
info->nameLabel = i18n( "Binary" );
info->descriptionLabel = i18n( "No description available." );
mFormatList.insert( "binary", info );
}
FormatFactory::~FormatFactory()
{
mFormatList.clear();
}
QStringList FormatFactory::formats()
{
QStringList retval;
// make sure 'vcard' is the first entry
retval << "vcard";
QDictIterator<FormatInfo> it( mFormatList );
for ( ; it.current(); ++it )
if ( it.currentKey() != "vcard" )
retval << it.currentKey();
return retval;
}
FormatInfo *FormatFactory::info( const QString &type )
{
if ( type.isEmpty() )
return 0;
else
return mFormatList[ type ];
}
FormatPlugin *FormatFactory::format( const QString& type )
{
FormatPlugin *format = 0;
if ( type.isEmpty() )
return 0;
if ( type == "vcard" ) {
format = new VCardFormatPlugin;
format->setType( type );
format->setNameLabel( i18n( "vCard" ) );
format->setDescriptionLabel( i18n( "vCard Format" ) );
return format;
}
FormatInfo *fi = mFormatList[ type ];
if (!fi)
return 0;
QString libName = fi->library;
#ifndef DESKTOP_VERSION
KLibrary *library = openLibrary( libName );
if ( !library )
return 0;
void *format_func = library->symbol( "format");
if ( format_func ) {
format = ((FormatPlugin* (*)())format_func)();
format->setType( type );
format->setNameLabel( fi->nameLabel );
format->setDescriptionLabel( fi->descriptionLabel );
} else {
kdDebug( 5700 ) << "'" << libName << "' is not a format plugin." << endl;
return 0;
}
#endif
return format;
}
#ifndef DESKTOP_VERSION
KLibrary *FormatFactory::openLibrary( const QString& libName )
{
KLibrary *library = 0;
QString path = KLibLoader::findLibrary( QFile::encodeName( libName ) );
if ( path.isEmpty() ) {
kdDebug( 5700 ) << "No format plugin library was found!" << endl;
return 0;
}
library = KLibLoader::self()->library( QFile::encodeName( path ) );
if ( !library ) {
kdDebug( 5700 ) << "Could not load library '" << libName << "'" << endl;
return 0;
}
return library;
}
#endif
diff --git a/kabc/formatplugin.h b/kabc/formatplugin.h
index d784daf..40a6922 100644
--- a/kabc/formatplugin.h
+++ b/kabc/formatplugin.h
@@ -1,81 +1,80 @@
/*
This file is part of libkabc.
Copyright (c) 2002 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., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
/*
Enhanced Version of the file for platform independent KDE tools.
Copyright (c) 2004 Ulf Schenk
$Id$
*/
#ifndef KABC_FORMATPLUGIN_H
#define KABC_FORMATPLUGIN_H
#include <qfile.h>
-//US #include "plugin.h"
+#include "plugin.h"
#include "resource.h"
namespace KABC {
class AddressBook;
class Addressee;
/**
* @short Base class for address book formats.
*
* This class provides an abstract interface for ResourceFile and
* ResourceDir formats.
*
* @internal
*/
-//US class FormatPlugin : public Plugin
-class FormatPlugin
+class FormatPlugin : public Plugin
{
public:
/**
* Load single addressee from file.
*/
virtual bool load( Addressee &, QFile *file ) = 0;
/**
* Load whole addressbook from file.
*/
virtual bool loadAll( AddressBook *, Resource *, QFile *file ) = 0;
/**
* Save a single Addressee to file.
*/
virtual void save( const Addressee &, QFile *file ) = 0;
/**
* Save whole addressbook to file.
*/
virtual void saveAll( AddressBook *, Resource *, QFile *file ) = 0;
/**
* Checks if given file contains the right format
*/
virtual bool checkFormat( QFile *file ) const = 0;
};
}
#endif
diff --git a/kabc/kabcE.pro b/kabc/kabcE.pro
index 6a3bbf1..840afb9 100644
--- a/kabc/kabcE.pro
+++ b/kabc/kabcE.pro
@@ -1,188 +1,188 @@
TEMPLATE = lib
CONFIG += qt warn_on
TARGET = microkabc
-INCLUDEPATH += . ./vcard/include ./vcard/include/generated ../microkde ../microkde/kdecore ../microkde/kdeui ../microkde/kio/kfile ../qtcompat
+INCLUDEPATH += . ./vcard/include ./vcard/include/generated ../microkde ../microkde/kdecore ../microkde/kdeui ../microkde/kio/kfile ../qtcompat $(QPEDIR)/include
OBJECTS_DIR = obj/$(PLATFORM)
MOC_DIR = moc/$(PLATFORM)
DESTDIR = $(QPEDIR)/lib
LIBS += -lmicrokde
#LIBS += -lldap
LIBS += -L$(QPEDIR)/lib
DEFINES += KAB_EMBEDDED
INTERFACES = \
HEADERS = \
address.h \
addressbook.h \
addressee.h \
addresseedialog.h \
addresseelist.h \
agent.h \
distributionlist.h \
distributionlistdialog.h \
distributionlisteditor.h \
field.h \
formatfactory.h \
formatplugin.h \
geo.h \
key.h \
phonenumber.h \
picture.h \
plugin.h \
resource.h \
secrecy.h \
sound.h \
stdaddressbook.h \
timezone.h \
vcardconverter.h \
vcard21parser.h \
vcardformatimpl.h \
vcardformatplugin.h \
vcardparser/vcardline.h \
vcardparser/vcard.h \
vcardparser/vcardtool.h \
vcardparser/vcardparser.h \
vcard/include/VCardAdrParam.h \
vcard/include/VCardAdrValue.h \
vcard/include/VCardAgentParam.h \
vcard/include/VCardContentLine.h \
vcard/include/VCardDateParam.h \
vcard/include/VCardDateValue.h \
vcard/include/VCardEmailParam.h \
vcard/include/VCardGeoValue.h \
vcard/include/VCardGroup.h \
vcard/include/VCardImageParam.h \
vcard/include/VCardImageValue.h \
vcard/include/VCardLangValue.h \
vcard/include/VCardNValue.h \
vcard/include/VCardParam.h \
vcard/include/VCardPhoneNumberValue.h \
vcard/include/VCardSourceParam.h \
vcard/include/VCardTelParam.h \
vcard/include/VCardTextParam.h \
vcard/include/VCardTextNSParam.h \
vcard/include/VCardTextValue.h \
vcard/include/VCardTextBinParam.h \
vcard/include/VCardURIValue.h \
vcard/include/VCardVCard.h \
vcard/include/VCardEntity.h \
vcard/include/VCardValue.h \
vcard/include/VCardSoundValue.h \
vcard/include/VCardAgentValue.h \
vcard/include/VCardTelValue.h \
vcard/include/VCardTextBinValue.h \
vcard/include/VCardOrgValue.h \
vcard/include/VCardUTCValue.h \
vcard/include/VCardClassValue.h \
vcard/include/VCardFloatValue.h \
vcard/include/VCardTextListValue.h \
vcard/include/generated/AdrParam-generated.h \
vcard/include/generated/AdrValue-generated.h \
vcard/include/generated/AgentParam-generated.h \
vcard/include/generated/ContentLine-generated.h \
vcard/include/generated/DateParam-generated.h \
vcard/include/generated/DateValue-generated.h \
vcard/include/generated/EmailParam-generated.h \
vcard/include/generated/GeoValue-generated.h \
vcard/include/generated/Group-generated.h \
vcard/include/generated/ImageParam-generated.h \
vcard/include/generated/ImageValue-generated.h \
vcard/include/generated/LangValue-generated.h \
vcard/include/generated/NValue-generated.h \
vcard/include/generated/Param-generated.h \
vcard/include/generated/PhoneNumberValue-generated.h \
vcard/include/generated/SourceParam-generated.h \
vcard/include/generated/TelParam-generated.h \
vcard/include/generated/TextParam-generated.h \
vcard/include/generated/TextNSParam-generated.h \
vcard/include/generated/TextValue-generated.h \
vcard/include/generated/TextBinParam-generated.h \
vcard/include/generated/URIValue-generated.h \
vcard/include/generated/VCard-generated.h \
vcard/include/generated/VCardEntity-generated.h \
vcard/include/generated/Value-generated.h \
vcard/include/generated/SoundValue-generated.h \
vcard/include/generated/AgentValue-generated.h \
vcard/include/generated/TelValue-generated.h \
vcard/include/generated/TextBinValue-generated.h \
vcard/include/generated/OrgValue-generated.h \
vcard/include/generated/UTCValue-generated.h \
vcard/include/generated/ClassValue-generated.h \
vcard/include/generated/FloatValue-generated.h \
vcard/include/generated/TextListValue-generated.h
SOURCES = \
address.cpp \
addressbook.cpp \
addressee.cpp \
addresseedialog.cpp \
addresseelist.cpp \
agent.cpp \
distributionlist.cpp \
distributionlistdialog.cpp \
distributionlisteditor.cpp \
field.cpp \
formatfactory.cpp \
geo.cpp \
key.cpp \
phonenumber.cpp \
picture.cpp \
plugin.cpp \
resource.cpp \
secrecy.cpp \
sound.cpp \
stdaddressbook.cpp \
timezone.cpp \
vcardconverter.cpp \
vcard21parser.cpp \
vcardformatimpl.cpp \
vcardformatplugin.cpp \
vcardparser/vcardline.cpp \
vcardparser/vcard.cpp \
vcardparser/vcardtool.cpp \
vcardparser/vcardparser.cpp \
vcard/AdrParam.cpp \
vcard/AdrValue.cpp \
vcard/AgentParam.cpp \
vcard/ContentLine.cpp \
vcard/DateParam.cpp \
vcard/DateValue.cpp \
vcard/EmailParam.cpp \
vcard/Entity.cpp \
vcard/Enum.cpp \
vcard/GeoValue.cpp \
vcard/ImageParam.cpp \
vcard/ImageValue.cpp \
vcard/LangValue.cpp \
vcard/NValue.cpp \
vcard/Param.cpp \
vcard/PhoneNumberValue.cpp \
vcard/RToken.cpp \
vcard/SourceParam.cpp \
vcard/TelParam.cpp \
vcard/TextParam.cpp \
vcard/TextValue.cpp \
vcard/TextBinParam.cpp \
vcard/URIValue.cpp \
vcard/VCardv.cpp \
vcard/VCardEntity.cpp \
vcard/Value.cpp \
vcard/SoundValue.cpp \
vcard/AgentValue.cpp \
vcard/TelValue.cpp \
vcard/TextBinValue.cpp \
vcard/OrgValue.cpp \
vcard/UTCValue.cpp \
vcard/ClassValue.cpp \
vcard/FloatValue.cpp \
vcard/TextListValue.cpp
# plugins/ldap/resourceldap.cpp \
# plugins/ldap/resourceldapconfig.cpp \
diff --git a/kabc/stdaddressbook.cpp b/kabc/stdaddressbook.cpp
index 8faaaef..144a9dc 100644
--- a/kabc/stdaddressbook.cpp
+++ b/kabc/stdaddressbook.cpp
@@ -1,233 +1,239 @@
/*
This file is part of libkabc.
Copyright (c) 2001 Cornelius Schumacher <schumacher@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., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
/*
Enhanced Version of the file for platform independent KDE tools.
Copyright (c) 2004 Ulf Schenk
$Id$
*/
/*US
#include <stdlib.h>
#include <kapplication.h>
#include <kcrash.h>
#include <ksimpleconfig.h>
*/
+#ifndef DESKTOP_VERSION
+#include <qpe/global.h>
+#else
+#include <qdir.h>
+#endif
+
#include "resource.h"
#include <kresources/manager.h>
#include <kdebug.h>
#include <klocale.h>
#include <kstaticdeleter.h>
#include <kstandarddirs.h>
#include "stdaddressbook.h"
using namespace KABC;
StdAddressBook *StdAddressBook::mSelf = 0;
bool StdAddressBook::mAutomaticSave = true;
static KStaticDeleter<StdAddressBook> addressBookDeleter;
QString StdAddressBook::fileName()
{
return locateLocal( "data", "kabc/std.vcf" );
}
QString StdAddressBook::directoryName()
{
return locateLocal( "data", "kabc/stdvcf" );
}
void StdAddressBook::handleCrash()
{
StdAddressBook::self()->cleanUp();
}
StdAddressBook *StdAddressBook::self()
{
if ( !mSelf )
{
QString appdir = StdAddressBook::setTempAppDir();
kdDebug(5700) << "StdAddressBook::self()" << endl;
// US im am not sure why I have to use the other format here??
#ifdef KAB_EMBEDDED
mSelf = addressBookDeleter.setObject( new StdAddressBook );
#else //KAB_EMBEDDED
addressBookDeleter.setObject( mSelf, new StdAddressBook );
#endif //KAB_EMBEDDED
KStandardDirs::setAppDir( appdir );
}
return mSelf;
}
QString StdAddressBook::setTempAppDir()
{
QString appDIR = KStandardDirs::appDir();
#ifdef DESKTOP_VERSION
QString appdir = QDir::homeDirPath();
if ( appdir.right(1) == "\\" || appdir.right(1) == "/" )
appdir += "kaddressbook/";
else
appdir += "/kaddressbook/";
KStandardDirs::setAppDir( QDir::convertSeparators( appdir ));
#else
KStandardDirs::setAppDir( Global::applicationFileName( "kaddressbook", "" ) );
#endif
return appDIR;
}
StdAddressBook *StdAddressBook::self( bool onlyFastResources )
{
if ( !mSelf )
{
QString appdir =StdAddressBook::setTempAppDir();
#ifdef KAB_EMBEDDED
mSelf = addressBookDeleter.setObject( new StdAddressBook( onlyFastResources ) );
#else //KAB_EMBEDDED
addressBookDeleter.setObject( mSelf, new StdAddressBook( onlyFastResources ) );
#endif //KAB_EMBEDDED
KStandardDirs::setAppDir( appdir );
}
return mSelf;
}
StdAddressBook::StdAddressBook()
//US : AddressBook( "kabcrc" )
: AddressBook( locateLocal( "config", "kabcrc") )
{
init( false );
}
StdAddressBook::StdAddressBook( bool onlyFastResources )
//US : AddressBook( "kabcrc" )
: AddressBook( locateLocal( "config", "kabcrc") )
{
init( onlyFastResources );
}
StdAddressBook::~StdAddressBook()
{
if ( mAutomaticSave )
save();
}
void StdAddressBook::init( bool )
{
KRES::Manager<Resource> *manager = resourceManager();
KRES::Manager<Resource>::ActiveIterator it;
for ( it = manager->activeBegin(); it != manager->activeEnd(); ++it ) {
(*it)->setAddressBook( this );
if ( !(*it)->open() )
error( QString( "Unable to open resource '%1'!" ).arg( (*it)->resourceName() ) );
}
Resource *res = standardResource();
if ( !res ) {
res = manager->createResource( "file" );
if ( res )
{
addResource( res );
}
else
kdDebug(5700) << "No resource available!!!" << endl;
}
setStandardResource( res );
manager->writeConfig();
load();
}
bool StdAddressBook::save()
{
kdDebug(5700) << "StdAddressBook::save()" << endl;
bool ok = true;
AddressBook *ab = self();
ab->deleteRemovedAddressees();
KRES::Manager<Resource>::ActiveIterator it;
KRES::Manager<Resource> *manager = ab->resourceManager();
for ( it = manager->activeBegin(); it != manager->activeEnd(); ++it ) {
if ( !(*it)->readOnly() && (*it)->isOpen() ) {
Ticket *ticket = ab->requestSaveTicket( *it );
// qDebug("StdAddressBook::save '%s'", (*it)->resourceName().latin1() );
if ( !ticket ) {
ab->error( i18n( "Unable to save to resource '%1'. It is locked." )
.arg( (*it)->resourceName() ) );
return false;
}
if ( !ab->save( ticket ) )
ok = false;
}
}
return ok;
}
void StdAddressBook::close()
{
//US destructObject is not defined on my system???. Is setObject(0) the same ???
//US addressBookDeleter.destructObject();
addressBookDeleter.setObject(0);
}
void StdAddressBook::setAutomaticSave( bool enable )
{
mAutomaticSave = enable;
}
bool StdAddressBook::automaticSave()
{
return mAutomaticSave;
}
// should get const for 4.X
Addressee StdAddressBook::whoAmI()
{
//US KConfig config( "kabcrc" );
KConfig config( locateLocal("config", "kabcrc") );
config.setGroup( "General" );
return findByUid( config.readEntry( "WhoAmI" ) );
}
void StdAddressBook::setWhoAmI( const Addressee &addr )
{
//US KConfig config( "kabcrc" );
KConfig config( locateLocal("config", "kabcrc") );
config.setGroup( "General" );
config.writeEntry( "WhoAmI", addr.uid() );
}