-rw-r--r-- | libopie/pim/odatebookaccessbackend_xml.cpp | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/libopie/pim/odatebookaccessbackend_xml.cpp b/libopie/pim/odatebookaccessbackend_xml.cpp index 5239d84..bc51996 100644 --- a/libopie/pim/odatebookaccessbackend_xml.cpp +++ b/libopie/pim/odatebookaccessbackend_xml.cpp | |||
@@ -90,170 +90,168 @@ namespace { | |||
90 | buf += " start=\"" + QString::number( zone.fromUTCDateTime( zone.toDateTime( ev.startDateTime(), OTimeZone::utc() ) ) ) + "\""; | 90 | buf += " start=\"" + QString::number( zone.fromUTCDateTime( zone.toDateTime( ev.startDateTime(), OTimeZone::utc() ) ) ) + "\""; |
91 | buf += " end=\"" + QString::number( zone.fromUTCDateTime( zone.toDateTime( ev.endDateTime() , OTimeZone::utc() ) ) ) + "\""; | 91 | buf += " end=\"" + QString::number( zone.fromUTCDateTime( zone.toDateTime( ev.endDateTime() , OTimeZone::utc() ) ) ) + "\""; |
92 | if (!ev.note().isEmpty() ) { | 92 | if (!ev.note().isEmpty() ) { |
93 | buf += " note=\"" + Qtopia::escapeString( ev.note() ) + "\""; | 93 | buf += " note=\"" + Qtopia::escapeString( ev.note() ) + "\""; |
94 | } | 94 | } |
95 | 95 | ||
96 | buf += " timezone=\""; | 96 | buf += " timezone=\""; |
97 | if ( ev.timeZone().isEmpty() ) | 97 | if ( ev.timeZone().isEmpty() ) |
98 | buf += "None"; | 98 | buf += "None"; |
99 | else | 99 | else |
100 | buf += ev.timeZone(); | 100 | buf += ev.timeZone(); |
101 | 101 | ||
102 | if (ev.parent() != 0 ) { | 102 | if (ev.parent() != 0 ) { |
103 | buf += " recparent=\""+QString::number(ev.parent() )+"\""; | 103 | buf += " recparent=\""+QString::number(ev.parent() )+"\""; |
104 | } | 104 | } |
105 | 105 | ||
106 | if (ev.children().count() != 0 ) { | 106 | if (ev.children().count() != 0 ) { |
107 | QArray<int> children = ev.children(); | 107 | QArray<int> children = ev.children(); |
108 | buf += " recchildren=\""; | 108 | buf += " recchildren=\""; |
109 | for ( uint i = 0; i < children.count(); i++ ) { | 109 | for ( uint i = 0; i < children.count(); i++ ) { |
110 | if ( i != 0 ) buf += " "; | 110 | if ( i != 0 ) buf += " "; |
111 | buf += QString::number( children[i] ); | 111 | buf += QString::number( children[i] ); |
112 | } | 112 | } |
113 | buf+= "\""; | 113 | buf+= "\""; |
114 | } | 114 | } |
115 | 115 | ||
116 | // skip custom writing | 116 | // skip custom writing |
117 | } | 117 | } |
118 | 118 | ||
119 | inline bool forAll( const QMap<int, OEvent>& list, QFile& file ) { | 119 | inline bool forAll( const QMap<int, OEvent>& list, QFile& file ) { |
120 | QMap<int, OEvent>::ConstIterator it; | 120 | QMap<int, OEvent>::ConstIterator it; |
121 | QString buf; | 121 | QString buf; |
122 | QCString str; | 122 | QCString str; |
123 | int total_written; | 123 | int total_written; |
124 | for ( it = list.begin(); it != list.end(); ++it ) { | 124 | for ( it = list.begin(); it != list.end(); ++it ) { |
125 | buf = "<event"; | 125 | buf = "<event"; |
126 | save( it.data(), buf ); | 126 | save( it.data(), buf ); |
127 | buf += " />\n"; | 127 | buf += " />\n"; |
128 | str = buf.utf8(); | 128 | str = buf.utf8(); |
129 | 129 | ||
130 | total_written = file.writeBlock(str.data(), str.length() ); | 130 | total_written = file.writeBlock(str.data(), str.length() ); |
131 | if ( total_written != int(str.length() ) ) | 131 | if ( total_written != int(str.length() ) ) |
132 | return false; | 132 | return false; |
133 | } | 133 | } |
134 | return true; | 134 | return true; |
135 | } | 135 | } |
136 | } | 136 | } |
137 | 137 | ||
138 | ODateBookAccessBackend_XML::ODateBookAccessBackend_XML( const QString& , | 138 | ODateBookAccessBackend_XML::ODateBookAccessBackend_XML( const QString& , |
139 | const QString& fileName ) | 139 | const QString& fileName ) |
140 | : ODateBookAccessBackend() { | 140 | : ODateBookAccessBackend() { |
141 | m_name = fileName.isEmpty() ? Global::applicationFileName( "datebook", "datebook.xml" ) : fileName; | 141 | m_name = fileName.isEmpty() ? Global::applicationFileName( "datebook", "datebook.xml" ) : fileName; |
142 | m_changed = false; | 142 | m_changed = false; |
143 | } | 143 | } |
144 | ODateBookAccessBackend_XML::~ODateBookAccessBackend_XML() { | 144 | ODateBookAccessBackend_XML::~ODateBookAccessBackend_XML() { |
145 | } | 145 | } |
146 | bool ODateBookAccessBackend_XML::load() { | 146 | bool ODateBookAccessBackend_XML::load() { |
147 | return loadFile(); | 147 | return loadFile(); |
148 | } | 148 | } |
149 | bool ODateBookAccessBackend_XML::reload() { | 149 | bool ODateBookAccessBackend_XML::reload() { |
150 | clear(); | 150 | clear(); |
151 | return load(); | 151 | return load(); |
152 | } | 152 | } |
153 | bool ODateBookAccessBackend_XML::save() { | 153 | bool ODateBookAccessBackend_XML::save() { |
154 | qWarning("going to save now"); | 154 | if (!m_changed) return true; |
155 | // if (!m_changed) return true; | ||
156 | 155 | ||
157 | int total_written; | 156 | int total_written; |
158 | QString strFileNew = m_name + ".new"; | 157 | QString strFileNew = m_name + ".new"; |
159 | 158 | ||
160 | QFile f( strFileNew ); | 159 | QFile f( strFileNew ); |
161 | if (!f.open( IO_WriteOnly | IO_Raw ) ) return false; | 160 | if (!f.open( IO_WriteOnly | IO_Raw ) ) return false; |
162 | 161 | ||
163 | QString buf( "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" ); | 162 | QString buf( "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" ); |
164 | buf += "<!DOCTYPE DATEBOOK><DATEBOOK>\n"; | 163 | buf += "<!DOCTYPE DATEBOOK><DATEBOOK>\n"; |
165 | buf += "<events>\n"; | 164 | buf += "<events>\n"; |
166 | QCString str = buf.utf8(); | 165 | QCString str = buf.utf8(); |
167 | total_written = f.writeBlock( str.data(), str.length() ); | 166 | total_written = f.writeBlock( str.data(), str.length() ); |
168 | if ( total_written != int(str.length() ) ) { | 167 | if ( total_written != int(str.length() ) ) { |
169 | f.close(); | 168 | f.close(); |
170 | QFile::remove( strFileNew ); | 169 | QFile::remove( strFileNew ); |
171 | return false; | 170 | return false; |
172 | } | 171 | } |
173 | 172 | ||
174 | if (!forAll( m_raw, f ) ) { | 173 | if (!forAll( m_raw, f ) ) { |
175 | f.close(); | 174 | f.close(); |
176 | QFile::remove( strFileNew ); | 175 | QFile::remove( strFileNew ); |
177 | return false; | 176 | return false; |
178 | } | 177 | } |
179 | if (!forAll( m_rep, f ) ) { | 178 | if (!forAll( m_rep, f ) ) { |
180 | f.close(); | 179 | f.close(); |
181 | QFile::remove( strFileNew ); | 180 | QFile::remove( strFileNew ); |
182 | return false; | 181 | return false; |
183 | } | 182 | } |
184 | 183 | ||
185 | buf = "</events>\n</DATEBOOK>\n"; | 184 | buf = "</events>\n</DATEBOOK>\n"; |
186 | str = buf.utf8(); | 185 | str = buf.utf8(); |
187 | total_written = f.writeBlock( str.data(), str.length() ); | 186 | total_written = f.writeBlock( str.data(), str.length() ); |
188 | if ( total_written != int(str.length() ) ) { | 187 | if ( total_written != int(str.length() ) ) { |
189 | f.close(); | 188 | f.close(); |
190 | QFile::remove( strFileNew ); | 189 | QFile::remove( strFileNew ); |
191 | return false; | 190 | return false; |
192 | } | 191 | } |
193 | f.close(); | 192 | f.close(); |
194 | 193 | ||
195 | exit(0); | ||
196 | if ( ::rename( strFileNew, m_name ) < 0 ) { | 194 | if ( ::rename( strFileNew, m_name ) < 0 ) { |
197 | QFile::remove( strFileNew ); | 195 | QFile::remove( strFileNew ); |
198 | return false; | 196 | return false; |
199 | } | 197 | } |
200 | 198 | ||
201 | m_changed = false; | 199 | m_changed = false; |
202 | return true; | 200 | return true; |
203 | } | 201 | } |
204 | QArray<int> ODateBookAccessBackend_XML::allRecords()const { | 202 | QArray<int> ODateBookAccessBackend_XML::allRecords()const { |
205 | QArray<int> ints( m_raw.count()+ m_rep.count() ); | 203 | QArray<int> ints( m_raw.count()+ m_rep.count() ); |
206 | uint i = 0; | 204 | uint i = 0; |
207 | QMap<int, OEvent>::ConstIterator it; | 205 | QMap<int, OEvent>::ConstIterator it; |
208 | 206 | ||
209 | for ( it = m_raw.begin(); it != m_raw.end(); ++it ) { | 207 | for ( it = m_raw.begin(); it != m_raw.end(); ++it ) { |
210 | ints[i] = it.key(); | 208 | ints[i] = it.key(); |
211 | i++; | 209 | i++; |
212 | } | 210 | } |
213 | for ( it = m_rep.begin(); it != m_rep.end(); ++it ) { | 211 | for ( it = m_rep.begin(); it != m_rep.end(); ++it ) { |
214 | ints[i] = it.key(); | 212 | ints[i] = it.key(); |
215 | i++; | 213 | i++; |
216 | } | 214 | } |
217 | 215 | ||
218 | return ints; | 216 | return ints; |
219 | } | 217 | } |
220 | QArray<int> ODateBookAccessBackend_XML::queryByExample(const OEvent&, int ) { | 218 | QArray<int> ODateBookAccessBackend_XML::queryByExample(const OEvent&, int ) { |
221 | return QArray<int>(); | 219 | return QArray<int>(); |
222 | } | 220 | } |
223 | void ODateBookAccessBackend_XML::clear() { | 221 | void ODateBookAccessBackend_XML::clear() { |
224 | m_raw.clear(); | 222 | m_raw.clear(); |
225 | m_rep.clear(); | 223 | m_rep.clear(); |
226 | } | 224 | } |
227 | OEvent ODateBookAccessBackend_XML::find( int uid ) const{ | 225 | OEvent ODateBookAccessBackend_XML::find( int uid ) const{ |
228 | if ( m_raw.contains( uid ) ) | 226 | if ( m_raw.contains( uid ) ) |
229 | return m_raw[uid]; | 227 | return m_raw[uid]; |
230 | else | 228 | else |
231 | return m_rep[uid]; | 229 | return m_rep[uid]; |
232 | } | 230 | } |
233 | bool ODateBookAccessBackend_XML::add( const OEvent& ev ) { | 231 | bool ODateBookAccessBackend_XML::add( const OEvent& ev ) { |
234 | m_changed = true; | 232 | m_changed = true; |
235 | if (ev.hasRecurrence() ) | 233 | if (ev.hasRecurrence() ) |
236 | m_rep.insert( ev.uid(), ev ); | 234 | m_rep.insert( ev.uid(), ev ); |
237 | else | 235 | else |
238 | m_raw.insert( ev.uid(), ev ); | 236 | m_raw.insert( ev.uid(), ev ); |
239 | 237 | ||
240 | return true; | 238 | return true; |
241 | } | 239 | } |
242 | bool ODateBookAccessBackend_XML::remove( int uid ) { | 240 | bool ODateBookAccessBackend_XML::remove( int uid ) { |
243 | m_changed = true; | 241 | m_changed = true; |
244 | m_rep.remove( uid ); | 242 | m_rep.remove( uid ); |
245 | m_rep.remove( uid ); | 243 | m_rep.remove( uid ); |
246 | 244 | ||
247 | return true; | 245 | return true; |
248 | } | 246 | } |
249 | bool ODateBookAccessBackend_XML::replace( const OEvent& ev ) { | 247 | bool ODateBookAccessBackend_XML::replace( const OEvent& ev ) { |
250 | replace( ev.uid() ); | 248 | replace( ev.uid() ); |
251 | return add( ev ); | 249 | return add( ev ); |
252 | } | 250 | } |
253 | QArray<int> ODateBookAccessBackend_XML::rawEvents()const { | 251 | QArray<int> ODateBookAccessBackend_XML::rawEvents()const { |
254 | return allRecords(); | 252 | return allRecords(); |
255 | } | 253 | } |
256 | QArray<int> ODateBookAccessBackend_XML::rawRepeats()const { | 254 | QArray<int> ODateBookAccessBackend_XML::rawRepeats()const { |
257 | QArray<int> ints( m_rep.count() ); | 255 | QArray<int> ints( m_rep.count() ); |
258 | uint i = 0; | 256 | uint i = 0; |
259 | QMap<int, OEvent>::ConstIterator it; | 257 | QMap<int, OEvent>::ConstIterator it; |