summaryrefslogtreecommitdiffabout
path: root/kaddressbook/xxport/qtopia/qtopia_xxport.cpp
Unidiff
Diffstat (limited to 'kaddressbook/xxport/qtopia/qtopia_xxport.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/xxport/qtopia/qtopia_xxport.cpp191
1 files changed, 191 insertions, 0 deletions
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}