summaryrefslogtreecommitdiff
path: root/noncore/tools/pimconverter/converter.cpp
authoreilers <eilers>2004-04-28 10:40:10 (UTC)
committer eilers <eilers>2004-04-28 10:40:10 (UTC)
commit0c9020f9016ec7058b6aef3fda36865f293f4f4a (patch) (unidiff)
tree1aa0de19d395ebf5ff5a7339bb4f24d37a91b6fa /noncore/tools/pimconverter/converter.cpp
parent7784d05b07dc65eab1754497e71fbf56d714b048 (diff)
downloadopie-0c9020f9016ec7058b6aef3fda36865f293f4f4a.zip
opie-0c9020f9016ec7058b6aef3fda36865f293f4f4a.tar.gz
opie-0c9020f9016ec7058b6aef3fda36865f293f4f4a.tar.bz2
First demo release of the PIM database conversion tool..
Diffstat (limited to 'noncore/tools/pimconverter/converter.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/tools/pimconverter/converter.cpp224
1 files changed, 224 insertions, 0 deletions
diff --git a/noncore/tools/pimconverter/converter.cpp b/noncore/tools/pimconverter/converter.cpp
new file mode 100644
index 0000000..1091f4a
--- a/dev/null
+++ b/noncore/tools/pimconverter/converter.cpp
@@ -0,0 +1,224 @@
1#include "converter.h"
2
3#include <qdatetime.h>
4#include <qprogressbar.h>
5#include <qcombobox.h>
6#include <qcheckbox.h>
7
8#include <qpe/qpeapplication.h>
9
10#include <opie2/ocontactaccess.h>
11#include <opie2/ocontactaccessbackend_xml.h>
12#include <opie2/ocontactaccessbackend_sql.h>
13
14#include <opie2/otodoaccess.h>
15#include <opie2/otodoaccessxml.h>
16#include <opie2/otodoaccesssql.h>
17
18#include <opie2/odatebookaccess.h>
19#include <opie2/odatebookaccessbackend_xml.h>
20#include <opie2/odatebookaccessbackend_sql.h>
21
22// #define _ADDRESSBOOK_ACCESS
23
24using namespace Opie;
25
26Converter::Converter():
27 m_selectedDatabase( ADDRESSBOOK ),
28 m_selectedSourceFormat( XML ),
29 m_selectedDestFormat( SQL )
30{
31 m_dataBaseSelector -> setCurrentItem( m_selectedDatabase );
32 m_sourceFormatSelector -> setCurrentItem( m_selectedSourceFormat );
33 m_destFormatSelector -> setCurrentItem( m_selectedDestFormat );
34 m_eraseDB -> setChecked( true ); // Default erase on copy
35}
36
37void Converter::selectedDatabase( int num )
38{
39 m_selectedDatabase = num;
40}
41
42void Converter::selectedDestFormat( int num )
43{
44 m_selectedDestFormat = num;
45}
46
47void Converter::selectedSourceFormat( int num )
48{
49 m_selectedSourceFormat = num;
50}
51
52void Converter::start_conversion(){
53
54 // Creating backends to the requested databases..
55 OPimBase* sourceDB;
56 OPimBase* destDB;
57
58 switch( m_selectedSourceFormat ){
59 case XML:
60 qDebug("XMLSourceDB = %d", m_selectedDatabase);
61 switch( m_selectedDatabase ){
62 case ADDRESSBOOK:{
63 OPimContactAccessBackend* sourceBackend = new OPimContactAccessBackend_XML( "Converter", QString::null );
64 sourceDB = new OPimContactAccess ( "addressbook_xml", QString::null , sourceBackend, true );
65 }
66 break;
67 case TODOLIST:{
68 OPimTodoAccessBackend* sourceBackend = new OPimTodoAccessXML( "Converter" );
69 sourceDB = new OPimTodoAccess( sourceBackend );
70 }break;
71 case DATEBOOK:{
72 ODateBookAccessBackend_XML* sourceBackend = new ODateBookAccessBackend_XML( "Converter", QString::null );
73 sourceDB = new ODateBookAccess ( sourceBackend );
74 }
75 break;
76 default:
77 qWarning( "Unknown database selected (%d)", m_selectedDatabase );
78 return;
79 }
80 break;
81 case SQL:
82 qDebug("SQLSourceDB = %d", m_selectedDatabase);
83 switch( m_selectedDatabase ){
84 case ADDRESSBOOK:{
85 qDebug("SQLSourceDB = %d", m_selectedDatabase);
86 OPimContactAccessBackend* sourceBackend = new OPimContactAccessBackend_SQL( QString::null, QString::null );
87 sourceDB = new OPimContactAccess ( "Converter", QString::null, sourceBackend, true );
88 }
89 break;
90 case TODOLIST:{
91 OPimTodoAccessBackend* sourceBackend = new OPimTodoAccessBackendSQL( QString::null );
92 sourceDB = new OPimTodoAccess( sourceBackend );
93 }break;
94 case DATEBOOK: {
95 ODateBookAccessBackend_SQL* sourceBackend = new ODateBookAccessBackend_SQL( "Converter", QString::null );
96 sourceDB = new ODateBookAccess ( sourceBackend );
97 }
98 break;
99 default:
100 qWarning( "Unknown database selected (%d)", m_selectedDatabase );
101 return;
102 }
103 break;
104 default:
105 qWarning( "Unknown source format selected (%d) !!", m_selectedSourceFormat );
106 return;
107 }
108
109 switch ( m_selectedDestFormat ){
110 case XML:
111 qDebug("XMLDestDB = %d", m_selectedDatabase);
112 switch( m_selectedDatabase ){
113 case ADDRESSBOOK:{
114 OPimContactAccessBackend* destBackend = new OPimContactAccessBackend_XML( "Converter", QString::null );
115 destDB = new OPimContactAccess ( "Converter", QString::null , destBackend, true );
116 }
117 break;
118 case TODOLIST:{
119 OPimTodoAccessBackend* destBackend = new OPimTodoAccessXML( "Converter" );
120 destDB = new OPimTodoAccess( destBackend );
121 }break;
122 case DATEBOOK:{
123 ODateBookAccessBackend_XML* destBackend = new ODateBookAccessBackend_XML( "Converter", QString::null );
124 destDB = new ODateBookAccess ( destBackend );
125 }
126 break;
127 default:
128 qWarning( "Unknown database selected (%d)", m_selectedDatabase );
129 return;
130 }
131 break;
132 case SQL:
133 qDebug("SQLDestDB = %d", m_selectedDatabase);
134 switch( m_selectedDatabase ){
135 case ADDRESSBOOK:{
136 OPimContactAccessBackend* destBackend = new OPimContactAccessBackend_SQL( QString::null, QString::null );
137 destDB = new OPimContactAccess ( "addressbook_xml", QString::null , destBackend, true );
138 }
139 break;
140 case TODOLIST:{
141 OPimTodoAccessBackend* destBackend = new OPimTodoAccessBackendSQL( QString::null );
142 destDB = new OPimTodoAccess( destBackend );
143 }break;
144 case DATEBOOK:{
145 ODateBookAccessBackend_SQL* destBackend = new ODateBookAccessBackend_SQL( "Converter", QString::null );
146 destDB = new ODateBookAccess ( destBackend );
147 }
148 break;
149 default:
150 qWarning( "Unknown database selected (%d)", m_selectedDatabase );
151 return;
152 }
153 break;
154 default:
155 qWarning( "Unknown destination format selected (%d)!!", m_selectedDestFormat );
156 return;
157 }
158
159 if ( !sourceDB || !destDB )
160 return;
161
162 sourceDB -> load();
163 destDB -> load();
164
165 QTime t;
166 t.start();
167
168 // Clean the dest-database if requested (isChecked)
169 if ( m_eraseDB -> isChecked() ){
170 qDebug( "Clearing destination database!" );
171 destDB -> clear();
172 }
173
174 // Now transmit every pim-item from the source database to the destination -database
175 QArray<int> uidList = sourceDB->records();
176 qDebug( "Try to move data for addressbook.. (%d items) ", uidList.count() );
177 m_progressBar->setTotalSteps( uidList.count() );
178 int count = 0;
179 for ( uint i = 0; i < uidList.count(); ++i ){
180 qDebug( "Adding uid: %d", uidList[i] );
181 OPimRecord* rec = sourceDB -> record( uidList[i] );
182 destDB -> add( rec );
183 m_progressBar->setProgress( ++count );
184 }
185
186 // Now commit data..
187 destDB -> save();
188
189 // Delete the frontends. Backends will be deleted automatically, too !
190 // We have to cast them back to delete them properly !
191 switch( m_selectedDatabase ){
192 case ADDRESSBOOK:
193 delete static_cast<OPimContactAccess*> (sourceDB);
194 delete static_cast<OPimContactAccess*> (destDB);
195 break;
196 case TODOLIST:
197 delete static_cast<OPimTodoAccess*> (sourceDB);
198 delete static_cast<OPimTodoAccess*> (destDB);
199 break;
200 case DATEBOOK:
201 delete static_cast<ODateBookAccess*> (sourceDB);
202 delete static_cast<ODateBookAccess*> (destDB);
203 break;
204 default:
205 qWarning( "Unknown database selected (%d)", m_selectedDatabase );
206 return;
207 }
208
209
210 qWarning("Conversion is finished and needed %d ms !", t.elapsed());
211}
212
213int main( int argc, char** argv ) {
214
215 QPEApplication a( argc, argv );
216
217 Converter dlg;
218
219 a.showMainWidget( &dlg );
220 // dlg. showMaximized ( );
221
222 return a.exec();
223
224}