-rw-r--r-- | library/backend/contact.h | 4 | ||||
-rw-r--r-- | library/backend/timeconversion.cpp | 12 |
2 files changed, 8 insertions, 8 deletions
diff --git a/library/backend/contact.h b/library/backend/contact.h index 2294986..4999430 100644 --- a/library/backend/contact.h +++ b/library/backend/contact.h | |||
@@ -110,197 +110,197 @@ public: | |||
110 | #ifdef QTOPIA_INTERNAL_CONTACT_MRE | 110 | #ifdef QTOPIA_INTERNAL_CONTACT_MRE |
111 | bool match( const QRegExp ®exp ) const; | 111 | bool match( const QRegExp ®exp ) const; |
112 | #endif | 112 | #endif |
113 | 113 | ||
114 | // // custom | 114 | // // custom |
115 | // void setCustomField( const QString &key, const QString &v ) | 115 | // void setCustomField( const QString &key, const QString &v ) |
116 | // { replace(Custom- + key, v ); } | 116 | // { replace(Custom- + key, v ); } |
117 | 117 | ||
118 | // name | 118 | // name |
119 | QString fullName() const; | 119 | QString fullName() const; |
120 | QString title() const { return find( Qtopia::Title ); } | 120 | QString title() const { return find( Qtopia::Title ); } |
121 | QString firstName() const { return find( Qtopia::FirstName ); } | 121 | QString firstName() const { return find( Qtopia::FirstName ); } |
122 | QString middleName() const { return find( Qtopia::MiddleName ); } | 122 | QString middleName() const { return find( Qtopia::MiddleName ); } |
123 | QString lastName() const { return find( Qtopia::LastName ); } | 123 | QString lastName() const { return find( Qtopia::LastName ); } |
124 | QString suffix() const { return find( Qtopia::Suffix ); } | 124 | QString suffix() const { return find( Qtopia::Suffix ); } |
125 | QString fileAs() const { return find( Qtopia::FileAs ); } | 125 | QString fileAs() const { return find( Qtopia::FileAs ); } |
126 | 126 | ||
127 | 127 | ||
128 | QString defaultEmail() const { return find( Qtopia::DefaultEmail ); } | 128 | QString defaultEmail() const { return find( Qtopia::DefaultEmail ); } |
129 | QStringList emailList() const; | 129 | QStringList emailList() const; |
130 | 130 | ||
131 | // home | 131 | // home |
132 | QString homeStreet() const { return find( Qtopia::HomeStreet ); } | 132 | QString homeStreet() const { return find( Qtopia::HomeStreet ); } |
133 | QString homeCity() const { return find( Qtopia::HomeCity ); } | 133 | QString homeCity() const { return find( Qtopia::HomeCity ); } |
134 | QString homeState() const { return find( Qtopia::HomeState ); } | 134 | QString homeState() const { return find( Qtopia::HomeState ); } |
135 | QString homeZip() const { return find( Qtopia::HomeZip ); } | 135 | QString homeZip() const { return find( Qtopia::HomeZip ); } |
136 | QString homeCountry() const { return find( Qtopia::HomeCountry ); } | 136 | QString homeCountry() const { return find( Qtopia::HomeCountry ); } |
137 | QString homePhone() const { return find( Qtopia::HomePhone ); } | 137 | QString homePhone() const { return find( Qtopia::HomePhone ); } |
138 | QString homeFax() const { return find( Qtopia::HomeFax ); } | 138 | QString homeFax() const { return find( Qtopia::HomeFax ); } |
139 | QString homeMobile() const { return find( Qtopia::HomeMobile ); } | 139 | QString homeMobile() const { return find( Qtopia::HomeMobile ); } |
140 | QString homeWebpage() const { return find( Qtopia::HomeWebPage ); } | 140 | QString homeWebpage() const { return find( Qtopia::HomeWebPage ); } |
141 | /** Multi line string containing all non-empty address info in the form | 141 | /** Multi line string containing all non-empty address info in the form |
142 | * Street | 142 | * Street |
143 | * City, State Zip | 143 | * City, State Zip |
144 | * Country | 144 | * Country |
145 | */ | 145 | */ |
146 | QString displayHomeAddress() const; | 146 | QString displayHomeAddress() const; |
147 | 147 | ||
148 | // business | 148 | // business |
149 | QString company() const { return find( Qtopia::Company ); } | 149 | QString company() const { return find( Qtopia::Company ); } |
150 | QString businessStreet() const { return find( Qtopia::BusinessStreet ); } | 150 | QString businessStreet() const { return find( Qtopia::BusinessStreet ); } |
151 | QString businessCity() const { return find( Qtopia::BusinessCity ); } | 151 | QString businessCity() const { return find( Qtopia::BusinessCity ); } |
152 | QString businessState() const { return find( Qtopia::BusinessState ); } | 152 | QString businessState() const { return find( Qtopia::BusinessState ); } |
153 | QString businessZip() const { return find( Qtopia::BusinessZip ); } | 153 | QString businessZip() const { return find( Qtopia::BusinessZip ); } |
154 | QString businessCountry() const { return find( Qtopia::BusinessCountry ); } | 154 | QString businessCountry() const { return find( Qtopia::BusinessCountry ); } |
155 | QString businessWebpage() const { return find( Qtopia::BusinessWebPage ); } | 155 | QString businessWebpage() const { return find( Qtopia::BusinessWebPage ); } |
156 | QString jobTitle() const { return find( Qtopia::JobTitle ); } | 156 | QString jobTitle() const { return find( Qtopia::JobTitle ); } |
157 | QString department() const { return find( Qtopia::Department ); } | 157 | QString department() const { return find( Qtopia::Department ); } |
158 | QString office() const { return find( Qtopia::Office ); } | 158 | QString office() const { return find( Qtopia::Office ); } |
159 | QString businessPhone() const { return find( Qtopia::BusinessPhone ); } | 159 | QString businessPhone() const { return find( Qtopia::BusinessPhone ); } |
160 | QString businessFax() const { return find( Qtopia::BusinessFax ); } | 160 | QString businessFax() const { return find( Qtopia::BusinessFax ); } |
161 | QString businessMobile() const { return find( Qtopia::BusinessMobile ); } | 161 | QString businessMobile() const { return find( Qtopia::BusinessMobile ); } |
162 | QString businessPager() const { return find( Qtopia::BusinessPager ); } | 162 | QString businessPager() const { return find( Qtopia::BusinessPager ); } |
163 | QString profession() const { return find( Qtopia::Profession ); } | 163 | QString profession() const { return find( Qtopia::Profession ); } |
164 | QString assistant() const { return find( Qtopia::Assistant ); } | 164 | QString assistant() const { return find( Qtopia::Assistant ); } |
165 | QString manager() const { return find( Qtopia::Manager ); } | 165 | QString manager() const { return find( Qtopia::Manager ); } |
166 | /** Multi line string containing all non-empty address info in the form | 166 | /** Multi line string containing all non-empty address info in the form |
167 | * Street | 167 | * Street |
168 | * City, State Zip | 168 | * City, State Zip |
169 | * Country | 169 | * Country |
170 | */ | 170 | */ |
171 | QString displayBusinessAddress() const; | 171 | QString displayBusinessAddress() const; |
172 | 172 | ||
173 | //personal | 173 | //personal |
174 | QString spouse() const { return find( Qtopia::Spouse ); } | 174 | QString spouse() const { return find( Qtopia::Spouse ); } |
175 | QString gender() const { return find( Qtopia::Gender ); } | 175 | QString gender() const { return find( Qtopia::Gender ); } |
176 | QString birthday() const { return find( Qtopia::Birthday ); } | 176 | QString birthday() const { return find( Qtopia::Birthday ); } |
177 | QString anniversary() const { return find( Qtopia::Anniversary ); } | 177 | QString anniversary() const { return find( Qtopia::Anniversary ); } |
178 | QString nickname() const { return find( Qtopia::Nickname ); } | 178 | QString nickname() const { return find( Qtopia::Nickname ); } |
179 | QString children() const { return find( Qtopia::Children ); } | 179 | QString children() const { return find( Qtopia::Children ); } |
180 | QStringList childrenList() const; | 180 | QStringList childrenList() const; |
181 | 181 | ||
182 | // other | 182 | // other |
183 | QString notes() const { return find( Qtopia::Notes ); } | 183 | QString notes() const { return find( Qtopia::Notes ); } |
184 | QString groups() const { return find( Qtopia::Groups ); } | 184 | QString groups() const { return find( Qtopia::Groups ); } |
185 | QStringList groupList() const; | 185 | QStringList groupList() const; |
186 | 186 | ||
187 | // // custom | 187 | // // custom |
188 | // const QString &customField( const QString &key ) | 188 | // const QString &customField( const QString &key ) |
189 | // { return find( Custom- + key ); } | 189 | // { return find( Custom- + key ); } |
190 | 190 | ||
191 | static QStringList fields(); | 191 | static QStringList fields(); |
192 | static QStringList trfields(); | 192 | static QStringList trfields(); |
193 | 193 | ||
194 | QString toRichText() const; | 194 | QString toRichText() const; |
195 | QMap<int, QString> toMap() const; | 195 | QMap<int, QString> toMap() const; |
196 | QString field( int key ) const { return find( key ); } | 196 | QString field( int key ) const { return find( key ); } |
197 | 197 | ||
198 | 198 | ||
199 | // journaling... | 199 | // journaling... |
200 | void saveJournal( journal_action action, const QString &key = QString::null ); | 200 | void saveJournal( journal_action action, const QString &key = QString::null ); |
201 | void save( QString &buf ) const; | 201 | void save( QString &buf ) const; |
202 | 202 | ||
203 | void setUid( int i ) | 203 | void setUid( int i ) |
204 | { Record::setUid(i); replace( Qtopia::AddressUid , QString::number(i)); } | 204 | { Record::setUid(i); replace( Qtopia::AddressUid , QString::number(i)); } |
205 | 205 | ||
206 | void setEmails( const QString &v ); | ||
207 | QString emails() const { return find( Qtopia::Emails ); } | ||
208 | private: | 206 | private: |
209 | friend class AbEditor; | 207 | friend class AbEditor; |
210 | friend class AbTable; | 208 | friend class AbTable; |
211 | friend class AddressBookAccessPrivate; | 209 | friend class AddressBookAccessPrivate; |
212 | friend class XMLIO; | 210 | friend class XMLIO; |
213 | 211 | ||
214 | QString emailSeparator() const { return " "; } | 212 | QString emailSeparator() const { return " "; } |
215 | // the emails should be seperated by a comma | 213 | // the emails should be seperated by a comma |
214 | void setEmails( const QString &v ); | ||
215 | QString emails() const { return find( Qtopia::Emails ); } | ||
216 | 216 | ||
217 | void insert( int key, const QString &value ); | 217 | void insert( int key, const QString &value ); |
218 | void replace( int key, const QString &value ); | 218 | void replace( int key, const QString &value ); |
219 | QString find( int key ) const; | 219 | QString find( int key ) const; |
220 | 220 | ||
221 | QString displayAddress( const QString &street, | 221 | QString displayAddress( const QString &street, |
222 | const QString &city, | 222 | const QString &city, |
223 | const QString &state, | 223 | const QString &state, |
224 | const QString &zip, | 224 | const QString &zip, |
225 | const QString &country ) const; | 225 | const QString &country ) const; |
226 | 226 | ||
227 | Qtopia::UidGen &uidGen() { return sUidGen; } | 227 | Qtopia::UidGen &uidGen() { return sUidGen; } |
228 | static Qtopia::UidGen sUidGen; | 228 | static Qtopia::UidGen sUidGen; |
229 | QMap<int, QString> mMap; | 229 | QMap<int, QString> mMap; |
230 | ContactPrivate *d; | 230 | ContactPrivate *d; |
231 | }; | 231 | }; |
232 | 232 | ||
233 | // these methods are inlined to keep binary compatability with Qtopia 1.5 | 233 | // these methods are inlined to keep binary compatability with Qtopia 1.5 |
234 | inline void Contact::insertEmail( const QString &v ) | 234 | inline void Contact::insertEmail( const QString &v ) |
235 | { | 235 | { |
236 | //qDebug("insertEmail %s", v.latin1()); | 236 | //qDebug("insertEmail %s", v.latin1()); |
237 | QString e = v.simplifyWhiteSpace(); | 237 | QString e = v.simplifyWhiteSpace(); |
238 | QString def = defaultEmail(); | 238 | QString def = defaultEmail(); |
239 | 239 | ||
240 | // if no default, set it as the default email and don't insert | 240 | // if no default, set it as the default email and don't insert |
241 | if ( def.isEmpty() ) { | 241 | if ( def.isEmpty() ) { |
242 | setDefaultEmail( e ); // will insert into the list for us | 242 | setDefaultEmail( e ); // will insert into the list for us |
243 | return; | 243 | return; |
244 | } | 244 | } |
245 | 245 | ||
246 | // otherwise, insert assuming doesn't already exist | 246 | // otherwise, insert assuming doesn't already exist |
247 | QString emailsStr = find( Qtopia::Emails ); | 247 | QString emailsStr = find( Qtopia::Emails ); |
248 | if ( emailsStr.contains( e )) | 248 | if ( emailsStr.contains( e )) |
249 | return; | 249 | return; |
250 | if ( !emailsStr.isEmpty() ) | 250 | if ( !emailsStr.isEmpty() ) |
251 | emailsStr += emailSeparator(); | 251 | emailsStr += emailSeparator(); |
252 | emailsStr += e; | 252 | emailsStr += e; |
253 | replace( Qtopia::Emails, emailsStr ); | 253 | replace( Qtopia::Emails, emailsStr ); |
254 | } | 254 | } |
255 | 255 | ||
256 | inline void Contact::removeEmail( const QString &v ) | 256 | inline void Contact::removeEmail( const QString &v ) |
257 | { | 257 | { |
258 | QString e = v.simplifyWhiteSpace(); | 258 | QString e = v.simplifyWhiteSpace(); |
259 | QString def = defaultEmail(); | 259 | QString def = defaultEmail(); |
260 | QString emailsStr = find( Qtopia::Emails ); | 260 | QString emailsStr = find( Qtopia::Emails ); |
261 | QStringList emails = emailList(); | 261 | QStringList emails = emailList(); |
262 | 262 | ||
263 | // otherwise, must first contain it | 263 | // otherwise, must first contain it |
264 | if ( !emailsStr.contains( e ) ) | 264 | if ( !emailsStr.contains( e ) ) |
265 | return; | 265 | return; |
266 | 266 | ||
267 | // remove it | 267 | // remove it |
268 | //qDebug(" removing email from list %s", e.latin1()); | 268 | //qDebug(" removing email from list %s", e.latin1()); |
269 | emails.remove( e ); | 269 | emails.remove( e ); |
270 | // reset the string | 270 | // reset the string |
271 | emailsStr = emails.join(emailSeparator()); // Sharp's brain dead separator | 271 | emailsStr = emails.join(emailSeparator()); // Sharp's brain dead separator |
272 | replace( Qtopia::Emails, emailsStr ); | 272 | replace( Qtopia::Emails, emailsStr ); |
273 | 273 | ||
274 | // if default, then replace the default email with the first one | 274 | // if default, then replace the default email with the first one |
275 | if ( def == e ) { | 275 | if ( def == e ) { |
276 | //qDebug("removeEmail is default; setting new default"); | 276 | //qDebug("removeEmail is default; setting new default"); |
277 | if ( !emails.count() ) | 277 | if ( !emails.count() ) |
278 | clearEmails(); | 278 | clearEmails(); |
279 | else // setDefaultEmail will remove e from the list | 279 | else // setDefaultEmail will remove e from the list |
280 | setDefaultEmail( emails.first() ); | 280 | setDefaultEmail( emails.first() ); |
281 | } | 281 | } |
282 | } | 282 | } |
283 | inline void Contact::clearEmails() | 283 | inline void Contact::clearEmails() |
284 | { | 284 | { |
285 | mMap.remove( Qtopia::DefaultEmail ); | 285 | mMap.remove( Qtopia::DefaultEmail ); |
286 | mMap.remove( Qtopia::Emails ); | 286 | mMap.remove( Qtopia::Emails ); |
287 | } | 287 | } |
288 | inline void Contact::setDefaultEmail( const QString &v ) | 288 | inline void Contact::setDefaultEmail( const QString &v ) |
289 | { | 289 | { |
290 | QString e = v.simplifyWhiteSpace(); | 290 | QString e = v.simplifyWhiteSpace(); |
291 | 291 | ||
292 | //qDebug("Contact::setDefaultEmail %s", e.latin1()); | 292 | //qDebug("Contact::setDefaultEmail %s", e.latin1()); |
293 | replace( Qtopia::DefaultEmail, e ); | 293 | replace( Qtopia::DefaultEmail, e ); |
294 | 294 | ||
295 | if ( !e.isEmpty() ) | 295 | if ( !e.isEmpty() ) |
296 | insertEmail( e ); | 296 | insertEmail( e ); |
297 | 297 | ||
298 | } | 298 | } |
299 | 299 | ||
300 | inline void Contact::insertEmails( const QStringList &v ) | 300 | inline void Contact::insertEmails( const QStringList &v ) |
301 | { | 301 | { |
302 | for ( QStringList::ConstIterator it = v.begin(); it != v.end(); ++it ) | 302 | for ( QStringList::ConstIterator it = v.begin(); it != v.end(); ++it ) |
303 | insertEmail( *it ); | 303 | insertEmail( *it ); |
304 | } | 304 | } |
305 | 305 | ||
306 | #endif | 306 | #endif |
diff --git a/library/backend/timeconversion.cpp b/library/backend/timeconversion.cpp index df7b0d5..6551697 100644 --- a/library/backend/timeconversion.cpp +++ b/library/backend/timeconversion.cpp | |||
@@ -1,140 +1,140 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** Copyright (C) 2000 Trolltech AS. All rights reserved. | 2 | ** Copyright (C) 2000 Trolltech AS. All rights reserved. |
3 | ** | 3 | ** |
4 | ** This file is part of Qtopia Environment. | 4 | ** This file is part of Qtopia Environment. |
5 | ** | 5 | ** |
6 | ** This file may be distributed and/or modified under the terms of the | 6 | ** This file may be distributed and/or modified under the terms of the |
7 | ** GNU General Public License version 2 as published by the Free Software | 7 | ** GNU General Public License version 2 as published by the Free Software |
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | 8 | ** Foundation and appearing in the file LICENSE.GPL included in the |
9 | ** packaging of this file. | 9 | ** packaging of this file. |
10 | ** | 10 | ** |
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
13 | ** | 13 | ** |
14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | 14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. |
15 | ** | 15 | ** |
16 | ** Contact info@trolltech.com if any conditions of this licensing are | 16 | ** Contact info@trolltech.com if any conditions of this licensing are |
17 | ** not clear to you. | 17 | ** not clear to you. |
18 | ** | 18 | ** |
19 | **********************************************************************/ | 19 | **********************************************************************/ |
20 | 20 | ||
21 | #include <qglobal.h> | 21 | #include <qglobal.h> |
22 | #include <qtopia/timeconversion.h> | 22 | #include <qtopia/timeconversion.h> |
23 | #include <qregexp.h> | 23 | #include <qregexp.h> |
24 | #include <stdlib.h> | 24 | #include <stdlib.h> |
25 | 25 | ||
26 | QString TimeConversion::toString( const QDate &d ) | 26 | QString TimeConversion::toString( const QDate &d ) |
27 | { | 27 | { |
28 | QString empty; | 28 | // QString empty; |
29 | if ( d.isNull() ) | 29 | // if ( d.isNull() ) |
30 | return empty; | 30 | // return empty; |
31 | 31 | ||
32 | QString r = QString::number( d.day() ) + "." + | 32 | QString r = QString::number( d.day() ) + "." + |
33 | QString::number( d.month() ) + "." + | 33 | QString::number( d.month() ) + "." + |
34 | QString::number( d.year() ); | 34 | QString::number( d.year() ); |
35 | //qDebug("TimeConversion::toString %s", r.latin1()); | 35 | //qDebug("TimeConversion::toString %s", r.latin1()); |
36 | 36 | ||
37 | return r; | 37 | return r; |
38 | } | 38 | } |
39 | 39 | ||
40 | QDate TimeConversion::fromString( const QString &datestr ) | 40 | QDate TimeConversion::fromString( const QString &datestr ) |
41 | { | 41 | { |
42 | QDate empty; | 42 | // QDate empty; |
43 | if ( datestr.isEmpty() ) | 43 | // if ( datestr.isEmpty() ) |
44 | return empty; | 44 | // return empty; |
45 | 45 | ||
46 | int monthPos = datestr.find('.'); | 46 | int monthPos = datestr.find('.'); |
47 | int yearPos = datestr.find('.', monthPos+1 ); | 47 | int yearPos = datestr.find('.', monthPos+1 ); |
48 | if ( monthPos == -1 || yearPos == -1 ) { | 48 | if ( monthPos == -1 || yearPos == -1 ) { |
49 | qDebug("fromString didn't find . in str = %s; mpos = %d ypos = %d", datestr.latin1(), monthPos, yearPos ); | 49 | qDebug("fromString didn't find . in str = %s; mpos = %d ypos = %d", datestr.latin1(), monthPos, yearPos ); |
50 | return QDate(); | 50 | return QDate(); |
51 | } | 51 | } |
52 | int d = datestr.left( monthPos ).toInt(); | 52 | int d = datestr.left( monthPos ).toInt(); |
53 | int m = datestr.mid( monthPos+1, yearPos - monthPos - 1 ).toInt(); | 53 | int m = datestr.mid( monthPos+1, yearPos - monthPos - 1 ).toInt(); |
54 | int y = datestr.mid( yearPos+1 ).toInt(); | 54 | int y = datestr.mid( yearPos+1 ).toInt(); |
55 | QDate date ( y,m,d ); | 55 | QDate date ( y,m,d ); |
56 | //qDebug("TimeConversion::fromString ymd = %s => %d %d %d; mpos = %d ypos = %d", datestr.latin1(), y, m, d, monthPos, yearPos); | 56 | //qDebug("TimeConversion::fromString ymd = %s => %d %d %d; mpos = %d ypos = %d", datestr.latin1(), y, m, d, monthPos, yearPos); |
57 | return date; | 57 | return date; |
58 | } | 58 | } |
59 | 59 | ||
60 | time_t TimeConversion::toUTC( const QDateTime& dt ) | 60 | time_t TimeConversion::toUTC( const QDateTime& dt ) |
61 | { | 61 | { |
62 | time_t tmp; | 62 | time_t tmp; |
63 | struct tm *lt; | 63 | struct tm *lt; |
64 | 64 | ||
65 | #if defined(_OS_WIN32) || defined (Q_OS_WIN32) || defined (Q_OS_WIN64) | 65 | #if defined(_OS_WIN32) || defined (Q_OS_WIN32) || defined (Q_OS_WIN64) |
66 | _tzset(); | 66 | _tzset(); |
67 | #else | 67 | #else |
68 | tzset(); | 68 | tzset(); |
69 | #endif | 69 | #endif |
70 | 70 | ||
71 | // get a tm structure from the system to get the correct tz_name | 71 | // get a tm structure from the system to get the correct tz_name |
72 | tmp = time( 0 ); | 72 | tmp = time( 0 ); |
73 | lt = localtime( &tmp ); | 73 | lt = localtime( &tmp ); |
74 | 74 | ||
75 | lt->tm_sec = dt.time().second(); | 75 | lt->tm_sec = dt.time().second(); |
76 | lt->tm_min = dt.time().minute(); | 76 | lt->tm_min = dt.time().minute(); |
77 | lt->tm_hour = dt.time().hour(); | 77 | lt->tm_hour = dt.time().hour(); |
78 | lt->tm_mday = dt.date().day(); | 78 | lt->tm_mday = dt.date().day(); |
79 | lt->tm_mon = dt.date().month() - 1; // 0-11 instead of 1-12 | 79 | lt->tm_mon = dt.date().month() - 1; // 0-11 instead of 1-12 |
80 | lt->tm_year = dt.date().year() - 1900; // year - 1900 | 80 | lt->tm_year = dt.date().year() - 1900; // year - 1900 |
81 | //lt->tm_wday = dt.date().dayOfWeek(); ignored anyway | 81 | //lt->tm_wday = dt.date().dayOfWeek(); ignored anyway |
82 | //lt->tm_yday = dt.date().dayOfYear(); ignored anyway | 82 | //lt->tm_yday = dt.date().dayOfYear(); ignored anyway |
83 | lt->tm_wday = -1; | 83 | lt->tm_wday = -1; |
84 | lt->tm_yday = -1; | 84 | lt->tm_yday = -1; |
85 | // tm_isdst negative -> mktime will find out about DST | 85 | // tm_isdst negative -> mktime will find out about DST |
86 | lt->tm_isdst = -1; | 86 | lt->tm_isdst = -1; |
87 | // keep tm_zone and tm_gmtoff | 87 | // keep tm_zone and tm_gmtoff |
88 | tmp = mktime( lt ); | 88 | tmp = mktime( lt ); |
89 | return tmp; | 89 | return tmp; |
90 | } | 90 | } |
91 | 91 | ||
92 | QDateTime TimeConversion::fromUTC( time_t time ) | 92 | QDateTime TimeConversion::fromUTC( time_t time ) |
93 | { | 93 | { |
94 | struct tm *lt; | 94 | struct tm *lt; |
95 | 95 | ||
96 | #if defined(_OS_WIN32) || defined (Q_OS_WIN32) || defined (Q_OS_WIN64) | 96 | #if defined(_OS_WIN32) || defined (Q_OS_WIN32) || defined (Q_OS_WIN64) |
97 | _tzset(); | 97 | _tzset(); |
98 | #else | 98 | #else |
99 | tzset(); | 99 | tzset(); |
100 | #endif | 100 | #endif |
101 | lt = localtime( &time ); | 101 | lt = localtime( &time ); |
102 | QDateTime dt; | 102 | QDateTime dt; |
103 | dt.setDate( QDate( lt->tm_year + 1900, lt->tm_mon + 1, lt->tm_mday ) ); | 103 | dt.setDate( QDate( lt->tm_year + 1900, lt->tm_mon + 1, lt->tm_mday ) ); |
104 | dt.setTime( QTime( lt->tm_hour, lt->tm_min, lt->tm_sec ) ); | 104 | dt.setTime( QTime( lt->tm_hour, lt->tm_min, lt->tm_sec ) ); |
105 | return dt; | 105 | return dt; |
106 | } | 106 | } |
107 | 107 | ||
108 | 108 | ||
109 | int TimeConversion::secsTo( const QDateTime &from, const QDateTime &to ) | 109 | int TimeConversion::secsTo( const QDateTime &from, const QDateTime &to ) |
110 | { | 110 | { |
111 | return toUTC( to ) - toUTC( from ); | 111 | return toUTC( to ) - toUTC( from ); |
112 | } | 112 | } |
113 | 113 | ||
114 | QCString TimeConversion::toISO8601( const QDate &d ) | 114 | QCString TimeConversion::toISO8601( const QDate &d ) |
115 | { | 115 | { |
116 | time_t tmp = toUTC( d ); | 116 | time_t tmp = toUTC( d ); |
117 | struct tm *utc = gmtime( &tmp ); | 117 | struct tm *utc = gmtime( &tmp ); |
118 | 118 | ||
119 | QCString str; | 119 | QCString str; |
120 | str.sprintf("%04d%02d%02d", (utc->tm_year + 1900), utc->tm_mon+1, utc->tm_mday ); | 120 | str.sprintf("%04d%02d%02d", (utc->tm_year + 1900), utc->tm_mon+1, utc->tm_mday ); |
121 | return str; | 121 | return str; |
122 | } | 122 | } |
123 | 123 | ||
124 | QCString TimeConversion::toISO8601( const QDateTime &dt ) | 124 | QCString TimeConversion::toISO8601( const QDateTime &dt ) |
125 | { | 125 | { |
126 | time_t tmp = toUTC( dt ); | 126 | time_t tmp = toUTC( dt ); |
127 | struct tm *utc = gmtime( &tmp ); | 127 | struct tm *utc = gmtime( &tmp ); |
128 | 128 | ||
129 | QCString str; | 129 | QCString str; |
130 | str.sprintf("%04d%02d%02dT%02d%02d%02dZ", | 130 | str.sprintf("%04d%02d%02dT%02d%02d%02dZ", |
131 | (utc->tm_year + 1900), utc->tm_mon+1, utc->tm_mday, | 131 | (utc->tm_year + 1900), utc->tm_mon+1, utc->tm_mday, |
132 | utc->tm_hour, utc->tm_min, utc->tm_sec ); | 132 | utc->tm_hour, utc->tm_min, utc->tm_sec ); |
133 | return str; | 133 | return str; |
134 | } | 134 | } |
135 | 135 | ||
136 | QDateTime TimeConversion::fromISO8601( const QCString &s ) | 136 | QDateTime TimeConversion::fromISO8601( const QCString &s ) |
137 | { | 137 | { |
138 | 138 | ||
139 | #if defined(_OS_WIN32) || defined (Q_OS_WIN32) || defined (Q_OS_WIN64) | 139 | #if defined(_OS_WIN32) || defined (Q_OS_WIN32) || defined (Q_OS_WIN64) |
140 | _tzset(); | 140 | _tzset(); |