summaryrefslogtreecommitdiffabout
authorulf69 <ulf69>2004-09-29 01:43:15 (UTC)
committer ulf69 <ulf69>2004-09-29 01:43:15 (UTC)
commitcd2cb3a9e2ea93909efc9efa16ddd80c2d2b5408 (patch) (unidiff)
treeab401f13f26d7f72ebd2a53deb3a67e97adad8a1
parentaf63a131d742aff8e448e5fe0f3e62b11a4d9a33 (diff)
downloadkdepimpi-cd2cb3a9e2ea93909efc9efa16ddd80c2d2b5408.zip
kdepimpi-cd2cb3a9e2ea93909efc9efa16ddd80c2d2b5408.tar.gz
kdepimpi-cd2cb3a9e2ea93909efc9efa16ddd80c2d2b5408.tar.bz2
needs to be fixed
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--microkde/kdecore/klocale.cpp32
1 files changed, 28 insertions, 4 deletions
diff --git a/microkde/kdecore/klocale.cpp b/microkde/kdecore/klocale.cpp
index 4960b9a..7bd8a70 100644
--- a/microkde/kdecore/klocale.cpp
+++ b/microkde/kdecore/klocale.cpp
@@ -237,200 +237,208 @@ QString KLocale::formatTime(const QTime &pTime, bool includeSecs, IntDateFormat
237 QString s; 237 QString s;
238 if ( pTime.hour() >= 12 ) 238 if ( pTime.hour() >= 12 )
239 put_it_in( buffer, index, i18n("pm") ); 239 put_it_in( buffer, index, i18n("pm") );
240 else 240 else
241 put_it_in( buffer, index, i18n("am") ); 241 put_it_in( buffer, index, i18n("am") );
242 break; 242 break;
243 } 243 }
244 default: 244 default:
245 buffer[index++] = rst.at( format_index ); 245 buffer[index++] = rst.at( format_index );
246 break; 246 break;
247 } 247 }
248 escape = false; 248 escape = false;
249 } 249 }
250 } 250 }
251 QString ret( buffer, index ); 251 QString ret( buffer, index );
252 delete [] buffer; 252 delete [] buffer;
253 return ret; 253 return ret;
254} 254}
255 255
256QString KLocale::formatDate(const QDate &pDate, bool shortFormat, IntDateFormat intIntDateFormat) const 256QString KLocale::formatDate(const QDate &pDate, bool shortFormat, IntDateFormat intIntDateFormat) const
257{ 257{
258 const QString rst = shortFormat?dateFormatShort(intIntDateFormat):dateFormat(intIntDateFormat); 258 const QString rst = shortFormat?dateFormatShort(intIntDateFormat):dateFormat(intIntDateFormat);
259 259
260 // I'm rather safe than sorry 260 // I'm rather safe than sorry
261 QChar *buffer = new QChar[rst.length() * 3 / 2 + 50]; 261 QChar *buffer = new QChar[rst.length() * 3 / 2 + 50];
262 262
263 unsigned int index = 0; 263 unsigned int index = 0;
264 bool escape = false; 264 bool escape = false;
265 int number = 0; 265 int number = 0;
266 266
267 for ( uint format_index = 0; format_index < rst.length(); ++format_index ) 267 for ( uint format_index = 0; format_index < rst.length(); ++format_index )
268 { 268 {
269 if ( !escape ) 269 if ( !escape )
270 { 270 {
271 if ( rst.at( format_index ).unicode() == '%' ) 271 if ( rst.at( format_index ).unicode() == '%' )
272 escape = true; 272 escape = true;
273 else 273 else
274 buffer[index++] = rst.at( format_index ); 274 buffer[index++] = rst.at( format_index );
275 } 275 }
276 else 276 else
277 { 277 {
278 switch ( rst.at( format_index ).unicode() ) 278 switch ( rst.at( format_index ).unicode() )
279 { 279 {
280 case '%': 280 case '%':
281 buffer[index++] = '%'; 281 buffer[index++] = '%';
282 break; 282 break;
283 case 'Y': 283 case 'Y':
284 put_it_in( buffer, index, pDate.year() / 100 ); 284 put_it_in( buffer, index, pDate.year() / 100 );
285 case 'y': 285 case 'y':
286 put_it_in( buffer, index, pDate.year() % 100 ); 286 put_it_in( buffer, index, pDate.year() % 100 );
287 break; 287 break;
288 case 'n': 288 case 'n':
289 number = pDate.month(); 289 number = pDate.month();
290 case 'e': 290 case 'e':
291 // to share the code 291 // to share the code
292 if ( rst.at( format_index ).unicode() == 'e' ) 292 if ( rst.at( format_index ).unicode() == 'e' )
293 number = pDate.day(); 293 number = pDate.day();
294 if ( number / 10 ) 294 if ( number / 10 )
295 buffer[index++] = number / 10 + '0'; 295 buffer[index++] = number / 10 + '0';
296 buffer[index++] = number % 10 + '0'; 296 buffer[index++] = number % 10 + '0';
297 break; 297 break;
298 case 'm': 298 case 'm':
299 put_it_in( buffer, index, pDate.month() ); 299 put_it_in( buffer, index, pDate.month() );
300 break; 300 break;
301 case 'b': 301 case 'b':
302 put_it_in( buffer, index, monthName(pDate.month(), true) ); 302 put_it_in( buffer, index, monthName(pDate.month(), true) );
303 break; 303 break;
304 case 'B': 304 case 'B':
305 put_it_in( buffer, index, monthName(pDate.month(), false) ); 305 put_it_in( buffer, index, monthName(pDate.month(), false) );
306 break; 306 break;
307 case 'd': 307 case 'd':
308 put_it_in( buffer, index, pDate.day() ); 308 put_it_in( buffer, index, pDate.day() );
309 break; 309 break;
310 case 'a': 310 case 'a':
311 put_it_in( buffer, index, weekDayName(pDate.dayOfWeek(), true) ); 311 put_it_in( buffer, index, weekDayName(pDate.dayOfWeek(), true) );
312 break; 312 break;
313 case 'A': 313 case 'A':
314 put_it_in( buffer, index, weekDayName(pDate.dayOfWeek(), false) ); 314 put_it_in( buffer, index, weekDayName(pDate.dayOfWeek(), false) );
315 break; 315 break;
316 default: 316 default:
317 buffer[index++] = rst.at( format_index ); 317 buffer[index++] = rst.at( format_index );
318 break; 318 break;
319 } 319 }
320 escape = false; 320 escape = false;
321 } 321 }
322 } 322 }
323 QString ret( buffer, index ); 323 QString ret( buffer, index );
324 delete [] buffer; 324 delete [] buffer;
325 return ret; 325 return ret;
326} 326}
327 327
328QString KLocale::formatDateTime(const QDateTime &pDateTime, 328QString KLocale::formatDateTime(const QDateTime &pDateTime,
329 bool shortFormat, 329 bool shortFormat,
330 bool includeSeconds, 330 bool includeSeconds,
331 IntDateFormat intIntDateFormat) const 331 IntDateFormat intIntDateFormat) const
332{ 332{
333 return QString( "%1 %2") 333 QString format("%1 %2");
334 .arg( formatDate( pDateTime.date(), shortFormat, intIntDateFormat ) ) 334
335 .arg( formatTime( pDateTime.time(), includeSeconds , intIntDateFormat ) ); 335 if ( intIntDateFormat == Default )
336 format = "%1 %2";
337 else if ( intIntDateFormat == Format1 )
338 format = "%1 %2";
339 else if ( intIntDateFormat == ISODate )
340 format = "%1T%2";
341
342 return format.arg(formatDate( pDateTime.date(), shortFormat, intIntDateFormat ))
343 .arg(formatTime( pDateTime.time(), includeSeconds , intIntDateFormat ));
336} 344}
337 345
338QString KLocale::formatDateTime(const QDateTime &pDateTime, IntDateFormat intIntDateFormat) const 346QString KLocale::formatDateTime(const QDateTime &pDateTime, IntDateFormat intIntDateFormat) const
339{ 347{
340 return formatDateTime(pDateTime, true, intIntDateFormat); 348 return formatDateTime(pDateTime, true, true, intIntDateFormat);
341} 349}
342 350
343QDate KLocale::readDate(const QString &intstr, bool* ok) const 351QDate KLocale::readDate(const QString &intstr, bool* ok) const
344{ 352{
345 QDate date; 353 QDate date;
346 date = readDate(intstr, true, ok); 354 date = readDate(intstr, true, ok);
347 if (date.isValid()) return date; 355 if (date.isValid()) return date;
348 return readDate(intstr, false, ok); 356 return readDate(intstr, false, ok);
349} 357}
350 358
351QDate KLocale::readDate(const QString &intstr, bool shortFormat, bool* ok) const 359QDate KLocale::readDate(const QString &intstr, bool shortFormat, bool* ok) const
352{ 360{
353 QString fmt = (shortFormat ? dateFormatShort() : dateFormat()).simplifyWhiteSpace(); 361 QString fmt = (shortFormat ? dateFormatShort() : dateFormat()).simplifyWhiteSpace();
354 return readDate( intstr, fmt, ok ); 362 return readDate( intstr, fmt, ok );
355} 363}
356 364
357QDate KLocale::readDate(const QString &intstr, const QString &fmt, bool* ok) const 365QDate KLocale::readDate(const QString &intstr, const QString &fmt, bool* ok) const
358{ 366{
359 //kdDebug(173) << "KLocale::readDate intstr=" << intstr << " fmt=" << fmt << endl; 367 //kdDebug(173) << "KLocale::readDate intstr=" << intstr << " fmt=" << fmt << endl;
360 QString str = intstr.simplifyWhiteSpace().lower(); 368 QString str = intstr.simplifyWhiteSpace().lower();
361 int day = -1, month = -1; 369 int day = -1, month = -1;
362 // allow the year to be omitted if not in the format 370 // allow the year to be omitted if not in the format
363 int year = QDate::currentDate().year(); 371 int year = QDate::currentDate().year();
364 uint strpos = 0; 372 uint strpos = 0;
365 uint fmtpos = 0; 373 uint fmtpos = 0;
366 374
367 while (fmt.length() > fmtpos || str.length() > strpos) 375 while (fmt.length() > fmtpos || str.length() > strpos)
368 { 376 {
369 if ( !(fmt.length() > fmtpos && str.length() > strpos) ) 377 if ( !(fmt.length() > fmtpos && str.length() > strpos) )
370 goto error; 378 goto error;
371 379
372 QChar c = fmt.at(fmtpos++); 380 QChar c = fmt.at(fmtpos++);
373 381
374 if (c != '%') { 382 if (c != '%') {
375 if (c.isSpace()) 383 if (c.isSpace())
376 strpos++; 384 strpos++;
377 else if (c != str.at(strpos++)) 385 else if (c != str.at(strpos++))
378 goto error; 386 goto error;
379 continue; 387 continue;
380 } 388 }
381 389
382 // remove space at the begining 390 // remove space at the begining
383 if (str.length() > strpos && str.at(strpos).isSpace()) 391 if (str.length() > strpos && str.at(strpos).isSpace())
384 strpos++; 392 strpos++;
385 393
386 c = fmt.at(fmtpos++); 394 c = fmt.at(fmtpos++);
387 switch (c) 395 switch (c)
388 { 396 {
389 case 'a': 397 case 'a':
390 case 'A': 398 case 'A':
391 // this will just be ignored 399 // this will just be ignored
392 { // Cristian Tache: porting to Win: Block added because of "j" redefinition 400 { // Cristian Tache: porting to Win: Block added because of "j" redefinition
393 for (int j = 1; j < 8; j++) { 401 for (int j = 1; j < 8; j++) {
394 QString s = weekDayName(j, c == 'a').lower(); 402 QString s = weekDayName(j, c == 'a').lower();
395 int len = s.length(); 403 int len = s.length();
396 if (str.mid(strpos, len) == s) 404 if (str.mid(strpos, len) == s)
397 strpos += len; 405 strpos += len;
398 } 406 }
399 break; 407 break;
400 } 408 }
401 case 'b': 409 case 'b':
402 case 'B': 410 case 'B':
403 { // Cristian Tache: porting to Win: Block added because of "j" redefinition 411 { // Cristian Tache: porting to Win: Block added because of "j" redefinition
404 for (int j = 1; j < 13; j++) { 412 for (int j = 1; j < 13; j++) {
405 QString s = monthName(j, c == 'b').lower(); 413 QString s = monthName(j, c == 'b').lower();
406 int len = s.length(); 414 int len = s.length();
407 if (str.mid(strpos, len) == s) { 415 if (str.mid(strpos, len) == s) {
408 month = j; 416 month = j;
409 strpos += len; 417 strpos += len;
410 } 418 }
411 } 419 }
412 break; 420 break;
413 } 421 }
414 case 'd': 422 case 'd':
415 case 'e': 423 case 'e':
416 day = readInt(str, strpos); 424 day = readInt(str, strpos);
417 if (day < 1 || day > 31) 425 if (day < 1 || day > 31)
418 goto error; 426 goto error;
419 427
420 break; 428 break;
421 429
422 case 'n': 430 case 'n':
423 case 'm': 431 case 'm':
424 month = readInt(str, strpos); 432 month = readInt(str, strpos);
425 if (month < 1 || month > 12) 433 if (month < 1 || month > 12)
426 goto error; 434 goto error;
427 435
428 break; 436 break;
429 437
430 case 'Y': 438 case 'Y':
431 case 'y': 439 case 'y':
432 year = readInt(str, strpos); 440 year = readInt(str, strpos);
433 if (year < 0) 441 if (year < 0)
434 goto error; 442 goto error;
435 // Qt treats a year in the range 0-100 as 1900-1999. 443 // Qt treats a year in the range 0-100 as 1900-1999.
436 // It is nicer for the user if we treat 0-68 as 2000-2068 444 // It is nicer for the user if we treat 0-68 as 2000-2068
@@ -477,192 +485,208 @@ QTime KLocale::readTime(const QString &intstr, bool seconds, bool *ok) const
477 485
478 while (Format.length() > Formatpos || str.length() > strpos) 486 while (Format.length() > Formatpos || str.length() > strpos)
479 { 487 {
480 if ( !(Format.length() > Formatpos && str.length() > strpos) ) goto error; 488 if ( !(Format.length() > Formatpos && str.length() > strpos) ) goto error;
481 489
482 QChar c = Format.at(Formatpos++); 490 QChar c = Format.at(Formatpos++);
483 491
484 if (c != '%') 492 if (c != '%')
485 { 493 {
486 if (c.isSpace()) 494 if (c.isSpace())
487 strpos++; 495 strpos++;
488 else if (c != str.at(strpos++)) 496 else if (c != str.at(strpos++))
489 goto error; 497 goto error;
490 continue; 498 continue;
491 } 499 }
492 500
493 // remove space at the begining 501 // remove space at the begining
494 if (str.length() > strpos && str.at(strpos).isSpace()) 502 if (str.length() > strpos && str.at(strpos).isSpace())
495 strpos++; 503 strpos++;
496 504
497 c = Format.at(Formatpos++); 505 c = Format.at(Formatpos++);
498 switch (c) 506 switch (c)
499 { 507 {
500 case 'p': 508 case 'p':
501 { 509 {
502 QString s; 510 QString s;
503 s = i18n("pm").lower(); 511 s = i18n("pm").lower();
504 int len = s.length(); 512 int len = s.length();
505 if (str.mid(strpos, len) == s) 513 if (str.mid(strpos, len) == s)
506 { 514 {
507 pm = true; 515 pm = true;
508 strpos += len; 516 strpos += len;
509 } 517 }
510 else 518 else
511 { 519 {
512 s = i18n("am").lower(); 520 s = i18n("am").lower();
513 len = s.length(); 521 len = s.length();
514 if (str.mid(strpos, len) == s) { 522 if (str.mid(strpos, len) == s) {
515 pm = false; 523 pm = false;
516 strpos += len; 524 strpos += len;
517 } 525 }
518 else 526 else
519 goto error; 527 goto error;
520 } 528 }
521 } 529 }
522 break; 530 break;
523 531
524 case 'k': 532 case 'k':
525 case 'H': 533 case 'H':
526 g_12h = false; 534 g_12h = false;
527 hour = readInt(str, strpos); 535 hour = readInt(str, strpos);
528 if (hour < 0 || hour > 23) 536 if (hour < 0 || hour > 23)
529 goto error; 537 goto error;
530 538
531 break; 539 break;
532 540
533 case 'l': 541 case 'l':
534 case 'I': 542 case 'I':
535 g_12h = true; 543 g_12h = true;
536 hour = readInt(str, strpos); 544 hour = readInt(str, strpos);
537 if (hour < 1 || hour > 12) 545 if (hour < 1 || hour > 12)
538 goto error; 546 goto error;
539 547
540 break; 548 break;
541 549
542 case 'M': 550 case 'M':
543 minute = readInt(str, strpos); 551 minute = readInt(str, strpos);
544 if (minute < 0 || minute > 59) 552 if (minute < 0 || minute > 59)
545 goto error; 553 goto error;
546 554
547 break; 555 break;
548 556
549 case 'S': 557 case 'S':
550 second = readInt(str, strpos); 558 second = readInt(str, strpos);
551 if (second < 0 || second > 59) 559 if (second < 0 || second > 59)
552 goto error; 560 goto error;
553 561
554 break; 562 break;
555 } 563 }
556 } 564 }
557 if (g_12h) 565 if (g_12h)
558 { 566 {
559 hour %= 12; 567 hour %= 12;
560 if (pm) hour += 12; 568 if (pm) hour += 12;
561 } 569 }
562 570
563 if (ok) *ok = true; 571 if (ok) *ok = true;
564 return QTime(hour, minute, second); 572 return QTime(hour, minute, second);
565 573
566 error: 574 error:
567 if (ok) *ok = false; 575 if (ok) *ok = false;
568 return QTime(-1, -1, -1); // return invalid date if it didn't work 576 return QTime(-1, -1, -1); // return invalid date if it didn't work
569 // This will be removed in the near future, since it gives a warning on stderr. 577 // This will be removed in the near future, since it gives a warning on stderr.
570 // The presence of the bool* (since KDE-3.0) removes the need for an invalid QTime. 578 // The presence of the bool* (since KDE-3.0) removes the need for an invalid QTime.
571} 579}
572 580
581QDateTime KLocale::readDateTime(const QString &intstr,
582 bool shortFormat,
583 bool includeSeconds,
584 IntDateFormat intIntDateFormat,
585 bool* ok) const
586{
587 bool ok1, ok2;
588
589 QDate m_date = readDate(date, &ok1);
590 QTime m_time = KGlobal::locale()->readTime(time, &ok2);
591 if ((ok1 == false) || (ok2 == false))
592 qDebug("Serializer::extractMeta invalid date or time !!!!!!!!!!!!!");
593
594}
595
596
573bool KLocale::use12Clock() const 597bool KLocale::use12Clock() const
574{ 598{
575 return !mHourF24Format ;; 599 return !mHourF24Format ;;
576} 600}
577 601
578bool KLocale::weekStartsMonday() const 602bool KLocale::weekStartsMonday() const
579{ 603{
580 return mWeekStartsMonday; 604 return mWeekStartsMonday;
581} 605}
582 606
583int KLocale::weekStartDay() const 607int KLocale::weekStartDay() const
584{ 608{
585 if ( mWeekStartsMonday ) 609 if ( mWeekStartsMonday )
586 return 1; 610 return 1;
587 return 7; 611 return 7;
588} 612}
589 613
590QString KLocale::weekDayName(int i,bool shortName) const 614QString KLocale::weekDayName(int i,bool shortName) const
591{ 615{
592 if ( shortName ) 616 if ( shortName )
593 switch ( i ) 617 switch ( i )
594 { 618 {
595 case 1: return i18n("Monday", "Mon"); 619 case 1: return i18n("Monday", "Mon");
596 case 2: return i18n("Tuesday", "Tue"); 620 case 2: return i18n("Tuesday", "Tue");
597 case 3: return i18n("Wednesday", "Wed"); 621 case 3: return i18n("Wednesday", "Wed");
598 case 4: return i18n("Thursday", "Thu"); 622 case 4: return i18n("Thursday", "Thu");
599 case 5: return i18n("Friday", "Fri"); 623 case 5: return i18n("Friday", "Fri");
600 case 6: return i18n("Saturday", "Sat"); 624 case 6: return i18n("Saturday", "Sat");
601 case 7: return i18n("Sunday", "Sun"); 625 case 7: return i18n("Sunday", "Sun");
602 } 626 }
603 else 627 else
604 switch ( i ) 628 switch ( i )
605 { 629 {
606 case 1: return i18n("Monday"); 630 case 1: return i18n("Monday");
607 case 2: return i18n("Tuesday"); 631 case 2: return i18n("Tuesday");
608 case 3: return i18n("Wednesday"); 632 case 3: return i18n("Wednesday");
609 case 4: return i18n("Thursday"); 633 case 4: return i18n("Thursday");
610 case 5: return i18n("Friday"); 634 case 5: return i18n("Friday");
611 case 6: return i18n("Saturday"); 635 case 6: return i18n("Saturday");
612 case 7: return i18n("Sunday"); 636 case 7: return i18n("Sunday");
613 } 637 }
614 638
615 return QString::null; 639 return QString::null;
616} 640}
617 641
618QString KLocale::monthName(int i,bool shortName) const 642QString KLocale::monthName(int i,bool shortName) const
619{ 643{
620 if ( shortName ) 644 if ( shortName )
621 switch ( i ) 645 switch ( i )
622 { 646 {
623 case 1: return i18n("January", "Jan"); 647 case 1: return i18n("January", "Jan");
624 case 2: return i18n("February", "Feb"); 648 case 2: return i18n("February", "Feb");
625 case 3: return i18n("March", "Mar"); 649 case 3: return i18n("March", "Mar");
626 case 4: return i18n("April", "Apr"); 650 case 4: return i18n("April", "Apr");
627 case 5: return i18n("May short", "May"); 651 case 5: return i18n("May short", "May");
628 case 6: return i18n("June", "Jun"); 652 case 6: return i18n("June", "Jun");
629 case 7: return i18n("July", "Jul"); 653 case 7: return i18n("July", "Jul");
630 case 8: return i18n("August", "Aug"); 654 case 8: return i18n("August", "Aug");
631 case 9: return i18n("September", "Sep"); 655 case 9: return i18n("September", "Sep");
632 case 10: return i18n("October", "Oct"); 656 case 10: return i18n("October", "Oct");
633 case 11: return i18n("November", "Nov"); 657 case 11: return i18n("November", "Nov");
634 case 12: return i18n("December", "Dec"); 658 case 12: return i18n("December", "Dec");
635 } 659 }
636 else 660 else
637 switch (i) 661 switch (i)
638 { 662 {
639 case 1: return i18n("January"); 663 case 1: return i18n("January");
640 case 2: return i18n("February"); 664 case 2: return i18n("February");
641 case 3: return i18n("March"); 665 case 3: return i18n("March");
642 case 4: return i18n("April"); 666 case 4: return i18n("April");
643 case 5: return i18n("May long", "May"); 667 case 5: return i18n("May long", "May");
644 case 6: return i18n("June"); 668 case 6: return i18n("June");
645 case 7: return i18n("July"); 669 case 7: return i18n("July");
646 case 8: return i18n("August"); 670 case 8: return i18n("August");
647 case 9: return i18n("September"); 671 case 9: return i18n("September");
648 case 10: return i18n("October"); 672 case 10: return i18n("October");
649 case 11: return i18n("November"); 673 case 11: return i18n("November");
650 case 12: return i18n("December"); 674 case 12: return i18n("December");
651 } 675 }
652 676
653 return QString::null; 677 return QString::null;
654} 678}
655 679
656QString KLocale::country() const 680QString KLocale::country() const
657{ 681{
658 return QString::null; 682 return QString::null;
659} 683}
660 684
661QString KLocale::dateFormat(IntDateFormat intIntDateFormat) const 685QString KLocale::dateFormat(IntDateFormat intIntDateFormat) const
662{ 686{
663 const IntDateFormat dformat = (intIntDateFormat == Undefined)?mIntDateFormat:intIntDateFormat; 687 const IntDateFormat dformat = (intIntDateFormat == Undefined)?mIntDateFormat:intIntDateFormat;
664 688
665 if ( QApplication::desktop()->width() < 480 ) { 689 if ( QApplication::desktop()->width() < 480 ) {
666 if ( dformat == Default ) 690 if ( dformat == Default )
667 return "%a %d %b %Y"; 691 return "%a %d %b %Y";
668 else if ( dformat == Format1 ) 692 else if ( dformat == Format1 )