-rw-r--r-- | plugindtmkabc/plugindtmkabcE.pro | 20 | ||||
-rw-r--r-- | plugindtmkabc/qtopiaaddressbookplugin.cpp | 167 | ||||
-rw-r--r-- | plugindtmkabc/qtopiaaddressbookplugin.h | 24 | ||||
-rw-r--r-- | plugindtmkabc/qtopiaaddressee.cpp | 26 | ||||
-rw-r--r-- | plugindtmkabc/qtopiaaddressee.h | 20 |
5 files changed, 257 insertions, 0 deletions
diff --git a/plugindtmkabc/plugindtmkabcE.pro b/plugindtmkabc/plugindtmkabcE.pro new file mode 100644 index 0000000..56c08fa --- a/dev/null +++ b/plugindtmkabc/plugindtmkabcE.pro @@ -0,0 +1,20 @@ +TEMPLATE = lib +#TEMPLATE = app +CONFIG = qt warn_on release + +TARGET = dtmkabc +OBJECTS_DIR = obj/$(PLATFORM) +MOC_DIR = moc +DESTDIR=$(QPEDIR)/plugins/korganizer +#DESTDIR=. +INCLUDEPATH += ../libkabcwrap $(QPEDIR)/include +DEFINES += +LIBS += -lmicrokabc + +HEADERS = \ + qtopiaaddressbookplugin.h \ + qtopiaaddressee.h + +SOURCES = \ + qtopiaaddressbookplugin.cpp \ + qtopiaaddressee.cpp diff --git a/plugindtmkabc/qtopiaaddressbookplugin.cpp b/plugindtmkabc/qtopiaaddressbookplugin.cpp new file mode 100644 index 0000000..37dd4e2 --- a/dev/null +++ b/plugindtmkabc/qtopiaaddressbookplugin.cpp @@ -0,0 +1,167 @@ +#include <qwidget.h> +#include <qlayout.h> +#include <qlistbox.h> +#include <qstring.h> +#include <qfile.h> +#include <qtextstream.h> +#include <qtextcodec.h> +#include <stdlib.h> +#include "qtopiaaddressbookplugin.h" +#include "qtopiaaddressee.h" + +QtopiaAddressBookPlugin::QtopiaAddressBookPlugin() : ref(0) { + qDebug("DTMAddressBookPlugin::DTMAddressBookPlugin"); + QString command ="db2file address -r -c utf8 > /tmp/addressDTM.txt"; + system ( command.latin1() ); +} + +QtopiaAddressBookPlugin::~QtopiaAddressBookPlugin() { +} + +KABC::Addressee::List QtopiaAddressBookPlugin::getAddressees() { + + qDebug("Start: DTMAddressBookPlugin::getAddressees"); + + KABC::Addressee::List result; + QString text; + QString fileName = "/tmp/addressDTM.txt"; + QFile file( fileName ); + if (!file.open( IO_ReadOnly ) ) { + return result; + } + QTextStream ts( &file ); + ts.setCodec( QTextCodec::codecForName("utf8") ); + text = ts.read(); + file.close(); + + QStringList templist; + QString tempString; + int start = 0; + int len = text.length(); + int end = text.find ("\n",start)+1; + bool ok = true; + start = end; + int lastStart1 = -1; + int lastStart2 = -1; + while ( start > 0 ) { + //qDebug("while start %d ", start); + if ( lastStart1 == start ) + break; + lastStart1 =start; + templist.clear(); + ok = true; + int iii = 0; + while ( ok ) { + + // qDebug("while ok %d ", start); + + if ( lastStart2 == start ) + break; + lastStart2 =start; + tempString = getPart( text, ok, start ); + //if ( ! tempString.isEmpty() ) + //qDebug("tempString %s %d",tempString.latin1(), iii); + iii++; + if ( start >= len || start == 0 ) { + start = 0; + ok = false; + } + if ( tempString.right(1) =="\n" ) + tempString = tempString.left( tempString.length()-1); + //if ( ok ) + templist.append( tempString ); + //qDebug("%d ---%s---", templist.count(),tempString.latin1() ); + } + result.append(QtopiaAddressee(templist)); + //qDebug("name %s ",templist[2].latin1() ); + //qDebug("name %s ",templist[4].latin1() ); + //qDebug("name %s ",templist[5].latin1() ); + //qDebug("name %s ",templist[40].latin1() ); + } + + + qDebug("End: DTMAddressBookPlugin::getAddressees"); + + return result; +} + +QString QtopiaAddressBookPlugin::getPart( const QString& text , bool &ok, int &start ) +{ + //qDebug("start %d ", start); + + QString retval =""; + if ( text.at(start) == '"' ) { + if ( text.mid( start,2) == "\"\"" && !( text.mid( start+2,1) == "\"")) { + start = start +2; + if ( text.mid( start,1) == "," ) { + start += 1; + } + retval = ""; + if ( text.mid( start,1) == "\n" ) { + start += 1; + ok = false; + } + return retval; + } + int hk = start+1; + hk = text.find ('"',hk); + while ( text.at(hk+1) == '"' ) + hk = text.find ('"',hk+2); + retval = text.mid( start+1, hk-start-1); + start = hk+1; + retval.replace( QRegExp("\"\""), "\""); + if ( text.mid( start,1) == "," ) { + start += 1; + } + if ( text.mid( start,1) == "\n" ) { + start += 1; + ok = false; + } + //qDebug("retval***%s*** ",retval.latin1() ); + return retval; + + } else { + int nl = text.find ("\n",start); + int kom = text.find (',',start); + if ( kom < nl ) { + // qDebug("kom < nl %d ", kom); + retval = text.mid(start, kom-start); + start = kom+1; + return retval; + } else { + if ( nl == kom ) { + // qDebug(" nl == kom "); + start = 0; + ok = false; + return "0"; + } + // qDebug(" nl < kom ", nl); + retval = text.mid( start, nl-start); + ok = false; + start = nl+1; + return retval; + } + } + +} +QString QtopiaAddressBookPlugin::name() { + return "DTM addressbook plugin"; +} + +QRESULT QtopiaAddressBookPlugin::queryInterface( const QUuid &uuid, QUnknownInterface **iface ) +{ + *iface = 0; + if ( uuid == IID_QUnknown ) + *iface = this; + else if ( uuid == IID_KOAddressBookInterface ) + *iface = this; + if ( *iface ) + (*iface)->addRef(); + return QS_OK; +} + +Q_EXPORT_INTERFACE() +{ + Q_CREATE_INSTANCE( QtopiaAddressBookPlugin ) +} + diff --git a/plugindtmkabc/qtopiaaddressbookplugin.h b/plugindtmkabc/qtopiaaddressbookplugin.h new file mode 100644 index 0000000..abedf73 --- a/dev/null +++ b/plugindtmkabc/qtopiaaddressbookplugin.h @@ -0,0 +1,24 @@ +#ifndef QTOPIA_ADDRESS_BOOK_PLUGIN_H +#define QTOPIA_ADDRESS_BOOK_PLUGIN_H +#include <kabc/koaddressbookinterface.h> +#include <kabc/addressee.h> +#include <qstring.h> + + +class QtopiaAddressBookPlugin : public KOAddressBookInterface { + + public: + QtopiaAddressBookPlugin(); + virtual ~QtopiaAddressBookPlugin(); + QString name(); + KABC::Addressee::List getAddressees(); + QRESULT queryInterface( const QUuid&, QUnknownInterface** ); + Q_REFCOUNT + + protected: + ulong ref; + QString getPart( const QString & , bool& , int &start ); + private: +}; +#endif + diff --git a/plugindtmkabc/qtopiaaddressee.cpp b/plugindtmkabc/qtopiaaddressee.cpp new file mode 100644 index 0000000..e8e49f5 --- a/dev/null +++ b/plugindtmkabc/qtopiaaddressee.cpp @@ -0,0 +1,26 @@ +#include "qtopiaaddressee.h" + +QtopiaAddressee::QtopiaAddressee(const QStringList& contact) { + setPimContact(contact); +} + +QtopiaAddressee::QtopiaAddressee() { + empty = true; +} + +void QtopiaAddressee::setPimContact(const QStringList& contact) { + if ( contact[40].isEmpty() ) + id = contact[0]; + else + id = contact[40]; + fName = contact[2]; + rName = contact[2]; + pEmail = contact[40]; + empty = false; + mails.clear(); + mobilehomephone = contact[30] ; + workphone = contact[16]; + homephone = contact[31]; + //mails = pimContact.emailList(); +} + diff --git a/plugindtmkabc/qtopiaaddressee.h b/plugindtmkabc/qtopiaaddressee.h new file mode 100644 index 0000000..f7d18a3 --- a/dev/null +++ b/plugindtmkabc/qtopiaaddressee.h @@ -0,0 +1,20 @@ +#include <qstringlist.h> +#include <kabc/addressee.h> + +#ifndef QTOPIA_ADDRESSE_H +#define QTOPIA_ADDRESSE_H + +class QtopiaAddressee : public KABC::Addressee { + + public: + + QtopiaAddressee(const QStringList& contact); + QtopiaAddressee(); + void setPimContact(const QStringList& contact); + + private: + +}; + +#endif + |