summaryrefslogtreecommitdiffabout
authorulf69 <ulf69>2004-07-14 15:00:42 (UTC)
committer ulf69 <ulf69>2004-07-14 15:00:42 (UTC)
commit39df2ac65017a41891cd8f856d100378129faa4b (patch) (unidiff)
tree57a896982561249bd6093ee7ac525ace9860debf
parent9e6a053635b009926903d32255ffa2b0fd0ac34c (diff)
downloadkdepimpi-39df2ac65017a41891cd8f856d100378129faa4b.zip
kdepimpi-39df2ac65017a41891cd8f856d100378129faa4b.tar.gz
kdepimpi-39df2ac65017a41891cd8f856d100378129faa4b.tar.bz2
added support for qtopia import and export
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--kaddressbook/xxport/qtopia/qtopiaE.pro26
-rw-r--r--kaddressbook/xxport/qtopia/qtopia_xxport.cpp191
-rw-r--r--kaddressbook/xxport/qtopia/qtopia_xxport.h51
3 files changed, 268 insertions, 0 deletions
diff --git a/kaddressbook/xxport/qtopia/qtopiaE.pro b/kaddressbook/xxport/qtopia/qtopiaE.pro
new file mode 100644
index 0000000..c77b40d
--- a/dev/null
+++ b/kaddressbook/xxport/qtopia/qtopiaE.pro
@@ -0,0 +1,26 @@
1TEMPLATE = lib
2CONFIG += qt warn_on
3TARGET = microkaddrbk_qtopia_xxport
4
5OBJECTS_DIR = obj/$(PLATFORM)
6MOC_DIR = moc/$(PLATFORM)
7DESTDIR = $(QPEDIR)/lib
8
9DEFINES += KAB_EMBEDDED
10
11INCLUDEPATH += ../.. ../../.. ../../../kabc ../../../kabc/converter/qtopia ../../../microkde ../../../microkde/kdeui ../../../microkde/kdecore ../../../microkde/kio/kfile ../../../qtcompat $(QPEDIR)/include
12LIBS += -L$(QPEDIR)/lib
13LIBS += -lmicrokde
14LIBS += -lmicrokabc
15LIBS += -lqpe
16LIBS += -lqte
17LIBS += -lmicrokabc_qtopiaconverter
18
19INTERFACES = \
20
21HEADERS = \
22 qtopia_xxport.h \
23
24SOURCES = \
25 qtopia_xxport.cpp \
26
diff --git a/kaddressbook/xxport/qtopia/qtopia_xxport.cpp b/kaddressbook/xxport/qtopia/qtopia_xxport.cpp
new file mode 100644
index 0000000..3d830df
--- a/dev/null
+++ b/kaddressbook/xxport/qtopia/qtopia_xxport.cpp
@@ -0,0 +1,191 @@
1/*
2 This file is part of KAddressbook.
3 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org>
4
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18
19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution.
22*/
23
24/*
25Enhanced Version of the file for platform independent KDE tools.
26Copyright (c) 2004 Ulf Schenk
27
28$Id$
29*/
30
31#include <qdir.h>
32
33#include <kfiledialog.h>
34#include <kmessagebox.h>
35
36#include <qpe/pim/addressbookaccess.h>
37
38#include "stdaddressbook.h"
39
40/*US
41#include <qfile.h>
42#include <qtextstream.h>
43
44#include <kabc/vcardconverter.h>
45#ifndef KAB_EMBEDDED
46#include <kio/netaccess.h>
47#endif //KAB_EMBEDDED
48
49#include <klocale.h>
50#include <kmessagebox.h>
51#include <ktempfile.h>
52#include <kurl.h>
53*/
54
55#include "xxportmanager.h"
56#include "qtopiaconverter.h"
57
58#include "qtopia_xxport.h"
59
60
61class QtopiaXXPortFactory : public XXPortFactory
62{
63 public:
64 XXPortObject *xxportObject( KABC::AddressBook *ab, QWidget *parent, const char *name )
65 {
66 return new QtopiaXXPort( ab, parent, name );
67 }
68};
69
70
71extern "C"
72{
73 void *init_microkaddrbk_qtopia_xxport()
74 {
75 return ( new QtopiaXXPortFactory() );
76 }
77}
78
79
80QtopiaXXPort::QtopiaXXPort( KABC::AddressBook *ab, QWidget *parent, const char *name )
81 : XXPortObject( ab, parent, name )
82{
83 createImportAction( i18n( "Import Qtopia..." ) );
84 createExportAction( i18n( "Export Qtopia..." ) );
85}
86
87bool QtopiaXXPort::exportContacts( const KABC::AddresseeList &list, const QString &data )
88{
89 // we can not choose the filename. Therefore use the default to display
90 QString fileName = QDir::homeDirPath() + "/Applications/addressbook/addressbook.xml";
91
92 AddressBookAccess* access = new AddressBookAccess();
93
94 if ( !access ) {
95 QString text( i18n( "Unable to access file '%1'." ).arg( fileName ) );
96 qDebug(text.latin1());
97 KMessageBox::error( parentWidget(), text );
98 addressBook()->error( text );
99 return false;
100 }
101
102 KABC::QtopiaConverter mConverter;
103
104 bool res = mConverter.init();
105 if (!res)
106 {
107 QString text( i18n( "Unable to initialize qtopia converter.<br>Most likely a problem with the category file." ) );
108 qDebug(text);
109 KMessageBox::error( parentWidget(), text );
110 delete access;
111 return false;
112 }
113
114 //Now check if the file has already entries, and ask the user if he wants to delete them first.
115 { //create a new scope
116 AddressBookIterator it(*access);
117 const PimContact* firstcontact = it.toFirst();
118 if (firstcontact)
119 {
120 QString text( i18n( "Do you want to remove<br>all existing entries from<br>%1<br>before exporting.?" ) );
121 if ( KMessageBox::questionYesNo( parentWidget(), text.arg( fileName ) ) == KMessageBox::Yes ) {
122 // Clean the database..
123
124 AddressBookIterator it2(*access);
125 for (it2.toFirst(); it2.current(); ++it2) {
126 access->removeContact(*it2.current());
127 }
128 }
129 }
130 }
131
132 KABC::Addressee::List::ConstIterator it;
133 for ( it = list.begin(); it != list.end(); ++it ) {
134 PimContact c;
135 KABC::Addressee addressee = (*it);
136
137 res = mConverter.addresseeToQtopia( *it, c );
138 if (res == true)
139 {
140 access->addContact(c);
141 }
142 }
143
144 delete access;
145
146 return true;
147}
148
149KABC::AddresseeList QtopiaXXPort::importContacts( const QString& ) const
150{
151 KABC::AddresseeList adrlst;
152
153 QString fileName = QDir::homeDirPath() + "/Applications/addressbook/addressbook.xml";
154
155 AddressBookAccess* access = new AddressBookAccess();
156
157 if ( !access ) {
158 QString text( i18n( "Unable to access file '%1'." ).arg( fileName ) );
159 qDebug(text.latin1());
160 addressBook()->error( text );
161 KMessageBox::error( parentWidget(), text );
162 return KABC::AddresseeList();
163 }
164
165 KABC::QtopiaConverter mConverter;
166 bool res = false;
167
168
169 { //create a new scope
170 AddressBookIterator it(*access);
171
172 for (it.toFirst(); it.current(); ++it) {
173 const PimContact*contact = it.current();
174
175 KABC::Addressee addressee;
176
177 res = mConverter.qtopiaToAddressee( (*contact), addressee );
178
179 if ( !addressee.isEmpty() && res )
180 {
181 adrlst.append( addressee );
182 }
183 }
184 }
185
186 delete access;
187//US the deletion of the access object deletes the backend object as well.
188
189 return adrlst;
190
191}
diff --git a/kaddressbook/xxport/qtopia/qtopia_xxport.h b/kaddressbook/xxport/qtopia/qtopia_xxport.h
new file mode 100644
index 0000000..689afd2
--- a/dev/null
+++ b/kaddressbook/xxport/qtopia/qtopia_xxport.h
@@ -0,0 +1,51 @@
1/*
2 This file is part of KAddressbook.
3 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org>
4
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18
19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution.
22*/
23
24/*
25Enhanced Version of the file for platform independent KDE tools.
26Copyright (c) 2004 Ulf Schenk
27
28$Id$
29*/
30
31#ifndef QTOPIA_XXPORT_H
32#define QTOPIA_XXPORT_H
33
34#include <xxportobject.h>
35
36class QtopiaXXPort : public XXPortObject
37{
38 Q_OBJECT
39
40 public:
41 QtopiaXXPort( KABC::AddressBook *ab, QWidget *parent, const char *name = 0 );
42
43 QString identifier() const { return "qtopia"; }
44
45 public slots:
46 bool exportContacts( const KABC::AddresseeList &list, const QString &data );
47 KABC::AddresseeList importContacts( const QString &data ) const;
48
49};
50
51#endif