summaryrefslogtreecommitdiffabout
path: root/kabc
authorulf69 <ulf69>2004-07-14 18:42:43 (UTC)
committer ulf69 <ulf69>2004-07-14 18:42:43 (UTC)
commitb371433c634ad75d5a66cd876e062888f1b3c761 (patch) (side-by-side diff)
tree614c319c5e752a7884b8a761cdc80541809c7584 /kabc
parent7868ec2225272318048026a602b842b38a05347f (diff)
downloadkdepimpi-b371433c634ad75d5a66cd876e062888f1b3c761.zip
kdepimpi-b371433c634ad75d5a66cd876e062888f1b3c761.tar.gz
kdepimpi-b371433c634ad75d5a66cd876e062888f1b3c761.tar.bz2
implemented qtopia support
Diffstat (limited to 'kabc') (more/less context) (show whitespace changes)
-rw-r--r--kabc/plugins/qtopia/qtopiaE.pro18
-rw-r--r--kabc/plugins/qtopia/resourceqtopia.cpp157
-rw-r--r--kabc/plugins/qtopia/resourceqtopia.h20
-rw-r--r--kabc/plugins/qtopia/resourceqtopiaconfig.cpp25
-rw-r--r--kabc/plugins/qtopia/resourceqtopiaconfig.h4
5 files changed, 80 insertions, 144 deletions
diff --git a/kabc/plugins/qtopia/qtopiaE.pro b/kabc/plugins/qtopia/qtopiaE.pro
index d945c31..d9fa87f 100644
--- a/kabc/plugins/qtopia/qtopiaE.pro
+++ b/kabc/plugins/qtopia/qtopiaE.pro
@@ -1,32 +1,26 @@
TEMPLATE = lib
CONFIG += qt warn_on
-#release debug
-TARGET = microkabc_qtopia
-INCLUDEPATH += ../.. ../../converter/opie ../../../microkde ../../../microkde/kdecore ../../../microkde/kio/kfile ../../../qtcompat $(QPEDIR)/include $(OPIEDIR)/include
+TARGET = microkabc_qtopia
+INCLUDEPATH += ../.. ../../converter/qtopia ../../../microkde ../../../microkde/kdecore ../../../microkde/kio/kfile ../../../microkde/kio/kio ../../../qtcompat $(QPEDIR)/include
OBJECTS_DIR = obj/$(PLATFORM)
MOC_DIR = moc/$(PLATFORM)
DESTDIR = $(QPEDIR)/lib
LIBS += -lmicrokde
LIBS += -lmicrokabc
LIBS += -L$(QPEDIR)/lib
-LIBS += -L$(OPIEDIR)/lib
-LIBS += -lopie
+LIBS += -lqpepim
LIBS += -lqpe
-LIBS += -lqte
-LIBS += -lmicrokabc_opieconverter
-#LIBS += -L../../lib/$(PLATFORM)
-
+LIBS += -lmicrokabc_qtopiaconverter
INTERFACES = \
HEADERS = \
resourceqtopia.h \
- resourceqtopiaconfig.h \
+ resourceqtopiaconfig.h
SOURCES = \
resourceqtopia.cpp \
- resourceqtopiaconfig.cpp \
-
+ resourceqtopiaconfig.cpp
diff --git a/kabc/plugins/qtopia/resourceqtopia.cpp b/kabc/plugins/qtopia/resourceqtopia.cpp
index 3d9d28b..4854197 100644
--- a/kabc/plugins/qtopia/resourceqtopia.cpp
+++ b/kabc/plugins/qtopia/resourceqtopia.cpp
@@ -11,303 +11,262 @@
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$
*/
-
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <qdir.h>
#include <qfile.h>
#include <qfileinfo.h>
#include <qregexp.h>
-#include <qtimer.h>
+//US #include <qtimer.h>
#include <kapplication.h>
#include <kconfig.h>
#include <kdebug.h>
#include <klocale.h>
//US #include <ksavefile.h>
#include <kstandarddirs.h>
-//US #include "formatfactory.h"
-//US #include <qpe/qpeapplication.h>
+#include <qpe/pim/addressbookaccess.h>
-#include <opie/ocontactaccess.h>
-#include <opie/ocontactaccessbackend_xml.h>
-#include "resource.h"
#include "resourceqtopiaconfig.h"
#include "stdaddressbook.h"
-#include "opieconverter.h"
+#include "qtopiaconverter.h"
#include "resourceqtopia.h"
using namespace KABC;
extern "C"
{
void *init_microkabc_qtopia()
{
- return new KRES::PluginFactory<ResourceOpie,ResourceOpieConfig>();
+ return new KRES::PluginFactory<ResourceQtopia,ResourceQtopiaConfig>();
}
}
-ResourceOpie::ResourceOpie( const KConfig *config )
+ResourceQtopia::ResourceQtopia( const KConfig *config )
: Resource( config ), mConverter (0)
{
+ // we can not choose the filename. Therefore use the default to display
QString fileName = QDir::homeDirPath() + "/Applications/addressbook/addressbook.xml";
- KConfig *cfg = (KConfig *)config;
- if ( cfg ) {
- fileName = cfg->readEntry( "FileName", fileName );
-
- }
-
-// qDebug("ResourceOpie::ResourceOpie : %s", fileName.latin1() );
-
init( fileName );
}
-ResourceOpie::ResourceOpie( const QString &fileName )
+ResourceQtopia::ResourceQtopia( const QString &fileName )
: Resource( 0 )
{
-// qDebug("ResourceOpie::ResourceOpie : 3 %s", fileName.latin1());
+// qDebug("ResourceFile::ResourceFile : 3 %s, %s", fileName.latin1(), formatName.latin1());
init( fileName );
}
-void ResourceOpie::init( const QString &fileName )
+void ResourceQtopia::init( const QString &fileName )
{
-/*US we have no KDirWatch. SO simulate the signals from inside the apropriate methods
connect( &mDirWatch, SIGNAL( dirty(const QString&) ), SLOT( fileChanged() ) );
connect( &mDirWatch, SIGNAL( created(const QString&) ), SLOT( fileChanged() ) );
connect( &mDirWatch, SIGNAL( deleted(const QString&) ), SLOT( fileChanged() ) );
-*/
- //US opie addressbook is always readonly
-//US setReadOnly( true );
setFileName( fileName );
-
}
-ResourceOpie::~ResourceOpie()
+ResourceQtopia::~ResourceQtopia()
{
if (mConverter != 0)
delete mConverter;
+
}
-void ResourceOpie::writeConfig( KConfig *config )
+void ResourceQtopia::writeConfig( KConfig *config )
{
- //US opie addressbook is always readonly
-//US setReadOnly( true );
-
Resource::writeConfig( config );
-
- config->writeEntry( "FileName", mFileName );
-
-// qDebug("ResourceFile::writeConfig format %s, %s", mFileName.latin1(), mFormatName.latin1());
-
}
-Ticket *ResourceOpie::requestSaveTicket()
+Ticket *ResourceQtopia::requestSaveTicket()
{
- kdDebug(5700) << "ResourceOpie::requestSaveTicket()" << endl;
+ kdDebug(5700) << "ResourceQtopia::requestSaveTicket()" << endl;
if ( !addressBook() ) return 0;
if ( !lock( mFileName ) ) {
- kdDebug(5700) << "ResourceOpie::requestSaveTicket(): Unable to lock file '"
+ kdDebug(5700) << "ResourceQtopia::requestSaveTicket(): Unable to lock file '"
<< mFileName << "'" << endl;
return 0;
}
return createTicket( this );
}
-bool ResourceOpie::doOpen()
+bool ResourceQtopia::doOpen()
{
-// qDebug("ResourceOpie::doOpen() %s", mFileName.latin1());
/*US
QFile file( mFileName );
if ( !file.exists() ) {
// try to create the file
bool ok = file.open( IO_WriteOnly );
if ( ok )
file.close();
return ok;
} else {
if ( !file.open( IO_ReadWrite ) )
return false;
if ( file.size() == 0 ) {
file.close();
return true;
}
//US bool ok = mFormat->checkFormat( &file );
bool ok = true;
file.close();
return ok;
}
*/
- qDebug("ResourceOpie::doOpen() has to be fixed - %s", mFileName.latin1());
return true;
}
-void ResourceOpie::doClose()
+void ResourceQtopia::doClose()
{
-// qDebug("ResourceOpie::doClose() %s", mFileName.latin1());
}
-bool ResourceOpie::load()
+bool ResourceQtopia::load()
{
-// qDebug("ResourceOpie::load() %s", mFileName.latin1());
- kdDebug(5700) << "ResourceOpie::load(): '" << mFileName << "'" << endl;
+ kdDebug(5700) << "ResourceQtopia::load(): '" << mFileName << "'" << endl;
- qDebug("ResourceOpie::load: Try to load file() %s", mFileName.latin1());
+// qDebug("ResourceQtopia::load: Try to load file() %s", mFileName.latin1());
- OContactAccessBackend_XML* backend = new OContactAccessBackend_XML( "KDEPim/Pi", mFileName );
- OContactAccess* access = new OContactAccess("KDEPim/Pi", 0l, backend, false);
+ AddressBookAccess* access = new AddressBookAccess();
if ( !access ) {
qDebug("Unable to load file() %s", mFileName.latin1());
addressBook()->error( i18n( "Unable to load file '%1'." ).arg( mFileName ) );
return false;
}
- access -> setReadAhead( 32 ); // Use ReadAhead-Cache if available
-
bool res = false;
if (mConverter == 0)
{
- mConverter = new OpieConverter();
+ mConverter = new QtopiaConverter();
res = mConverter->init();
if ( !res )
{
- qDebug("Unable to initialize opie converter. Most likely a problem with the category file");
- addressBook()->error( i18n( "Unable to initialize opie converter. Most likely a problem with the category file" ) );
+ qDebug("Unable to initialize qtopia converter. Most likely a problem with the category file");
+ addressBook()->error( i18n( "Unable to initialize qtopia converter. Most likely a problem with the category file" ) );
delete access;
return false;
}
}
+ { //create a new scope
+ AddressBookIterator it(*access);
+ const PimContact* contact;
- OContactAccess::List::Iterator it;
- OContactAccess::List allList = access->allRecords();
- for ( it = allList.begin(); it != allList.end(); ++it )
- {
- OContact c = (*it);
+ for (contact=it.toFirst(); it.current(); ++it) {
+ contact = it.current();
KABC::Addressee addressee;
- res = mConverter->opieToAddressee( c, addressee );
+ res = mConverter->qtopiaToAddressee( (*contact), addressee );
if ( !addressee.isEmpty() && res )
{
addressee.setResource( this );
addressBook()->insertAddressee( addressee );
}
-
-// qDebug("found %s", c.fullName().latin1());
+ }
}
delete access;
- // it seems so, that deletion of access deletes backend as well
- //delete backend;
-
return true;
}
-bool ResourceOpie::save( Ticket *ticket )
+bool ResourceQtopia::save( Ticket *ticket )
{
- qDebug("ResourceOpie::save() has to be fixed - %s", mFileName.latin1());
/*US
-
- qDebug("ResourceOpie::save %s", mFileName.latin1());
- kdDebug(5700) << "ResourceOpie::save()" << endl;
+// qDebug("ResourceFile::save format %s, %s", mFileName.latin1(), mFormatName.latin1());
+ kdDebug(5700) << "ResourceQtopia::save()" << endl;
// create backup file
QString extension = "_" + QString::number( QDate::currentDate().dayOfWeek() );
-*/
+
/*US we use a simpler method to create a backupfile
(void) KSaveFile::backupFile( mFileName, QString::null
,extension );
KSaveFile saveFile( mFileName );
bool ok = false;
if ( saveFile.status() == 0 && saveFile.file() )
{
mFormat->saveAll( addressBook(), this, saveFile.file() );
ok = saveFile.close();
}
*/
+
/*US
//US ToDo: write backupfile
QFile info;
info.setName( mFileName );
bool ok = info.open( IO_WriteOnly );
if ( ok ) {
//US mFormat->saveAll( addressBook(), this, &info );
info.close();
ok = true;
}
else {
}
if ( !ok )
addressBook()->error( i18n( "Unable to save file '%1'." ).arg( mFileName ) );
delete ticket;
unlock( mFileName );
return ok;
- qDebug("ResourceOpie::save has to be changed");
+ qDebug("ResourceQtopia::save has to be changed");
*/
return true;
-
}
-bool ResourceOpie::lock( const QString &fileName )
+bool ResourceQtopia::lock( const QString &fileName )
{
- qDebug("ResourceOpie::lock() has to be fixed - %s", mFileName.latin1());
-
-/*US
-// qDebug("ResourceOpie::lock() %s", fileName.latin1());
- kdDebug(5700) << "ResourceOpie::lock()" << endl;
+ kdDebug(5700) << "ResourceQtopia::lock()" << endl;
QString fn = fileName;
//US change the implementation how the lockfilename is getting created
//US fn.replace( QRegExp("/"), "_" );
//US QString lockName = locateLocal( "data", "kabc/lock/" + fn + ".lock" );
KURL url(fn);
QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" );
kdDebug(5700) << "-- lock name: " << lockName << endl;
if (QFile::exists( lockName )) return false;
QString lockUniqueName;
lockUniqueName = fn + KApplication::randomString( 8 );
@@ -321,90 +280,72 @@ bool ResourceOpie::lock( const QString &fileName )
QFile file( mLockUniqueName );
file.open( IO_WriteOnly );
file.close();
// Create lock file
int result = ::link( QFile::encodeName( mLockUniqueName ),
QFile::encodeName( lockName ) );
if ( result == 0 ) {
addressBook()->emitAddressBookLocked();
return true;
}
// TODO: check stat
return false;
-*/
-
- return true;
}
-void ResourceOpie::unlock( const QString &fileName )
+void ResourceQtopia::unlock( const QString &fileName )
{
- qDebug("ResourceOpie::unlock() has to be fixed - %s", mFileName.latin1());
-/*US
-// qDebug("ResourceOpie::unlock() %s", fileName.latin1());
-
QString fn = fileName;
//US change the implementation how the lockfilename is getting created
//US fn.replace( QRegExp( "/" ), "_" );
//US QString lockName = locateLocal( "data", "kabc/lock/" + fn + ".lock" );
//US QString lockName = fn + ".lock";
KURL url(fn);
QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" );
QFile::remove( lockName );
QFile::remove( mLockUniqueName );
addressBook()->emitAddressBookUnlocked();
-*/
}
-void ResourceOpie::setFileName( const QString &fileName )
+void ResourceQtopia::setFileName( const QString &fileName )
{
-/*US ToDo: no synchronization so far. Has to be changed in the future
mDirWatch.stopScan();
mDirWatch.removeFile( mFileName );
-*/
- mFileName = fileName;
+ mFileName = fileName;
-/*US ToDo: no synchronization so far. Has to be changed in the future
mDirWatch.addFile( mFileName );
mDirWatch.startScan();
-*/
+
//US simulate KDirWatch event
- fileChanged();
+//US fileChanged();
}
-QString ResourceOpie::fileName() const
+QString ResourceQtopia::fileName() const
{
return mFileName;
}
-void ResourceOpie::fileChanged()
+void ResourceQtopia::fileChanged()
{
// There is a small theoretical chance that KDirWatch calls us before
// we are fully constructed
if (!addressBook())
return;
load();
addressBook()->emitAddressBookChanged();
}
-void ResourceOpie::removeAddressee( const Addressee &addr )
+void ResourceQtopia::removeAddressee( const Addressee &addr )
{
-/*US
- QFile::remove( QFile::encodeName( locateLocal( "data", "kabc/photos/" ) + addr.uid() ) );
- QFile::remove( QFile::encodeName( locateLocal( "data", "kabc/logos/" ) + addr.uid() ) );
- QFile::remove( QFile::encodeName( locateLocal( "data", "kabc/sounds/" ) + addr.uid() ) );
-*/
}
-void ResourceOpie::cleanUp()
+void ResourceQtopia::cleanUp()
{
-// qDebug("ResourceOpie::cleanup() %s", mFileName.latin1());
-
unlock( mFileName );
}
-//US #include "resourceopie.moc"
+//US #include "resourceqtopia.moc"
diff --git a/kabc/plugins/qtopia/resourceqtopia.h b/kabc/plugins/qtopia/resourceqtopia.h
index ea0b5ee..bf9dd45 100644
--- a/kabc/plugins/qtopia/resourceqtopia.h
+++ b/kabc/plugins/qtopia/resourceqtopia.h
@@ -13,76 +13,74 @@
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_RESOURCEQTOPIA_H
-#define KABC_RESOURCEQTOPIA_H
+#ifndef KABC_RESOURCEOPIE_H
+#define KABC_RESOURCEOPIE_H
#include <kconfig.h>
#include <kdirwatch.h>
#include <sys/types.h>
#include "resource.h"
-//class QTimer;
-//class FormatPlugin;
-
namespace KABC {
//US class FormatPlugin;
class ResourceConfigWidget;
-class OpieConverter;
+class QtopiaConverter;
+
/**
@internal
*/
-class ResourceOpie : public Resource
+class ResourceQtopia : public Resource
{
Q_OBJECT
public:
/**
Constructor.
@param cfg The config object where custom resource settings are stored.
*/
- ResourceOpie( const KConfig *cfg );
+ ResourceQtopia( const KConfig *cfg );
/**
Construct file resource on file @arg fileName using format @arg formatName.
*/
- ResourceOpie( const QString &fileName );
+ ResourceQtopia( const QString &fileName );
/**
* Destructor.
*/
- ~ResourceOpie();
+ ~ResourceQtopia();
/**
Writes the config back.
*/
virtual void writeConfig( KConfig *cfg );
/**
* Tries to open the file and checks for the proper format.
* This method should be called before @ref load().
*/
virtual bool doOpen();
/**
* Closes the file again.
*/
virtual void doClose();
@@ -125,28 +123,28 @@ public:
/**
* This method is called by an error handler if the application
* crashed
*/
virtual void cleanUp();
protected slots:
void fileChanged();
protected:
void init( const QString &fileName );
bool lock( const QString &fileName );
void unlock( const QString &fileName );
private:
- OpieConverter* mConverter;
+ QtopiaConverter* mConverter;
QString mFileName;
QString mLockUniqueName;
KDirWatch mDirWatch;
};
}
#endif
diff --git a/kabc/plugins/qtopia/resourceqtopiaconfig.cpp b/kabc/plugins/qtopia/resourceqtopiaconfig.cpp
index 8cb8505..b2310c4 100644
--- a/kabc/plugins/qtopia/resourceqtopiaconfig.cpp
+++ b/kabc/plugins/qtopia/resourceqtopiaconfig.cpp
@@ -33,75 +33,78 @@ $Id$
#include <kstandarddirs.h>
#include <kdialog.h>
#include <unistd.h>
#include <qdir.h>
#include <qfile.h>
#include "resourceqtopia.h"
//US #include <qpe/qpeapplication.h>
//US #include "stdaddressbook.h"
#include "resourceqtopiaconfig.h"
using namespace KABC;
-ResourceOpieConfig::ResourceOpieConfig( QWidget* parent, const char* name )
+ResourceQtopiaConfig::ResourceQtopiaConfig( QWidget* parent, const char* name )
: ConfigWidget( parent, name )
{
-//qDebug("ResourceFileConfig::ResourceFileConfig");
-
QGridLayout *mainLayout = new QGridLayout( this, 1, 2, 0,
KDialog::spacingHint() );
QLabel *label = new QLabel( i18n( "Location:" ), this );
mFileNameEdit = new KURLRequester( this );
connect( mFileNameEdit, SIGNAL( textChanged( const QString & ) ),
SLOT( checkFilePermissions( const QString & ) ) );
mainLayout->addWidget( label, 0, 0 );
mainLayout->addWidget( mFileNameEdit, 0, 1 );
+
}
-void ResourceOpieConfig::loadSettings( KRES::Resource *res )
+void ResourceQtopiaConfig::loadSettings( KRES::Resource *res )
{
//US ResourceFile *resource = dynamic_cast<ResourceFile*>( res );
- ResourceOpie *resource = (ResourceOpie*)( res );
+ ResourceQtopia *resource = (ResourceQtopia*)( res );
if ( !resource ) {
- kdDebug(5700) << "ResourceOpieConfig::loadSettings(): cast failed" << endl;
+ kdDebug(5700) << "ResourceQtopiaConfig::loadSettings(): cast failed" << endl;
return;
}
mFileNameEdit->setURL( resource->fileName() );
if ( mFileNameEdit->url().isEmpty() )
mFileNameEdit->setURL( QDir::homeDirPath() + "/Applications/addressbook/addressbook.xml" );
- //US Opie resources are ReadOnly by definition
+ //US Qtopia resources are ReadOnly by definition
emit setPersistentReadOnly( true );
+
+ //US we can not choose the filename for the qtopia backend => make it readonly.
+ mFileNameEdit->setEnabled( false );
+
}
-void ResourceOpieConfig::saveSettings( KRES::Resource *res )
+void ResourceQtopiaConfig::saveSettings( KRES::Resource *res )
{
//US ResourceFile *resource = dynamic_cast<ResourceFile*>( res );
- ResourceOpie *resource = (ResourceOpie*)( res );
+ ResourceQtopia *resource = (ResourceQtopia*)( res );
if ( !resource ) {
- kdDebug(5700) << "ResourceOpieConfig::saveSettings(): cast failed" << endl;
+ kdDebug(5700) << "ResourceQtopiaConfig::saveSettings(): cast failed" << endl;
return;
}
resource->setFileName( mFileNameEdit->url() );
}
-void ResourceOpieConfig::checkFilePermissions( const QString& fileName )
+void ResourceQtopiaConfig::checkFilePermissions( const QString& fileName )
{
// If file exist but is not writeable...
/*US
if ( access( QFile::encodeName( fileName ), F_OK ) == 0 )
emit setReadOnly( access( QFile::encodeName( fileName ), W_OK ) < 0 );
*/
}
//US #include "resourceopieconfig.moc"
diff --git a/kabc/plugins/qtopia/resourceqtopiaconfig.h b/kabc/plugins/qtopia/resourceqtopiaconfig.h
index 0d80625..6b90b64 100644
--- a/kabc/plugins/qtopia/resourceqtopiaconfig.h
+++ b/kabc/plugins/qtopia/resourceqtopiaconfig.h
@@ -22,37 +22,37 @@
/*
Enhanced Version of the file for platform independent KDE tools.
Copyright (c) 2004 Ulf Schenk
$Id$
*/
#ifndef RESOURCEQTOPIACONFIG_H
#define RESOURCEQTOPIACONFIG_H
#include <kurlrequester.h>
#include <kresources/configwidget.h>
namespace KABC {
-class ResourceOpieConfig : public KRES::ConfigWidget
+class ResourceQtopiaConfig : public KRES::ConfigWidget
{
Q_OBJECT
public:
- ResourceOpieConfig( QWidget* parent = 0, const char* name = 0 );
+ ResourceQtopiaConfig( QWidget* parent = 0, const char* name = 0 );
public slots:
void loadSettings( KRES::Resource *resource );
void saveSettings( KRES::Resource *resource );
protected slots:
void checkFilePermissions( const QString& fileName );
private:
KURLRequester* mFileNameEdit;
};
}
#endif