Diffstat (limited to 'noncore/tools/pimconverter/converter.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/tools/pimconverter/converter.cpp | 224 |
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 | |||
24 | using namespace Opie; | ||
25 | |||
26 | Converter::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 | |||
37 | void Converter::selectedDatabase( int num ) | ||
38 | { | ||
39 | m_selectedDatabase = num; | ||
40 | } | ||
41 | |||
42 | void Converter::selectedDestFormat( int num ) | ||
43 | { | ||
44 | m_selectedDestFormat = num; | ||
45 | } | ||
46 | |||
47 | void Converter::selectedSourceFormat( int num ) | ||
48 | { | ||
49 | m_selectedSourceFormat = num; | ||
50 | } | ||
51 | |||
52 | void 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 | |||
213 | int 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 | } | ||