author | eilers <eilers> | 2004-08-29 12:42:03 (UTC) |
---|---|---|
committer | eilers <eilers> | 2004-08-29 12:42:03 (UTC) |
commit | dd159675e6e3c361bc20eaa6994265e73b6599ef (patch) (unidiff) | |
tree | 70cf91b669307ae39e020ce4257b60b2de9acd42 | |
parent | 496157cb35b8f90e73770fc43c9a63534baebf33 (diff) | |
download | opie-dd159675e6e3c361bc20eaa6994265e73b6599ef.zip opie-dd159675e6e3c361bc20eaa6994265e73b6599ef.tar.gz opie-dd159675e6e3c361bc20eaa6994265e73b6599ef.tar.bz2 |
Minor but important changes in API. Improved SQL performance: contactsbackend now
supports look-ahead caching to speed up access.
Fixed and improved look-ahead cache in todo-backend.
Datebook backend will follow, soon !
-rw-r--r-- | libopie2/opiecore/device/odevice.cpp | 4 | ||||
-rw-r--r-- | libopie2/opiedb/osqlresult.cpp | 8 | ||||
-rw-r--r-- | libopie2/opiedb/osqlresult.h | 4 | ||||
-rw-r--r-- | libopie2/opiepim/TODO | 1 |
4 files changed, 11 insertions, 6 deletions
diff --git a/libopie2/opiecore/device/odevice.cpp b/libopie2/opiecore/device/odevice.cpp index 26c6dca..129215b 100644 --- a/libopie2/opiecore/device/odevice.cpp +++ b/libopie2/opiecore/device/odevice.cpp | |||
@@ -566,220 +566,224 @@ OHingeStatus ODevice::readHingeSensor() | |||
566 | const QStrList &ODevice::allowedCpuFrequencies() const | 566 | const QStrList &ODevice::allowedCpuFrequencies() const |
567 | { | 567 | { |
568 | return *d->m_cpu_frequencies; | 568 | return *d->m_cpu_frequencies; |
569 | } | 569 | } |
570 | 570 | ||
571 | 571 | ||
572 | /** | 572 | /** |
573 | * Set desired CPU frequency | 573 | * Set desired CPU frequency |
574 | * | 574 | * |
575 | * @param index index into d->m_cpu_frequencies of the frequency to be set | 575 | * @param index index into d->m_cpu_frequencies of the frequency to be set |
576 | */ | 576 | */ |
577 | bool ODevice::setCurrentCpuFrequency(uint index) | 577 | bool ODevice::setCurrentCpuFrequency(uint index) |
578 | { | 578 | { |
579 | if (index >= d->m_cpu_frequencies->count()) | 579 | if (index >= d->m_cpu_frequencies->count()) |
580 | return false; | 580 | return false; |
581 | 581 | ||
582 | char *freq = d->m_cpu_frequencies->at(index); | 582 | char *freq = d->m_cpu_frequencies->at(index); |
583 | qWarning("set freq to %s", freq); | 583 | qWarning("set freq to %s", freq); |
584 | 584 | ||
585 | int fd; | 585 | int fd; |
586 | 586 | ||
587 | if ((fd = ::open("/proc/sys/cpu/0/speed", O_WRONLY)) >= 0) { | 587 | if ((fd = ::open("/proc/sys/cpu/0/speed", O_WRONLY)) >= 0) { |
588 | char writeCommand[50]; | 588 | char writeCommand[50]; |
589 | const int count = sprintf(writeCommand, "%s\n", freq); | 589 | const int count = sprintf(writeCommand, "%s\n", freq); |
590 | int res = (::write(fd, writeCommand, count) != -1); | 590 | int res = (::write(fd, writeCommand, count) != -1); |
591 | ::close(fd); | 591 | ::close(fd); |
592 | return res; | 592 | return res; |
593 | } | 593 | } |
594 | 594 | ||
595 | return false; | 595 | return false; |
596 | } | 596 | } |
597 | 597 | ||
598 | 598 | ||
599 | /** | 599 | /** |
600 | * @return a list of hardware buttons | 600 | * @return a list of hardware buttons |
601 | */ | 601 | */ |
602 | const QValueList <ODeviceButton> &ODevice::buttons() | 602 | const QValueList <ODeviceButton> &ODevice::buttons() |
603 | { | 603 | { |
604 | initButtons(); | 604 | initButtons(); |
605 | 605 | ||
606 | return *d->m_buttons; | 606 | return *d->m_buttons; |
607 | } | 607 | } |
608 | 608 | ||
609 | /** | 609 | /** |
610 | * @return The amount of time that would count as a hold | 610 | * @return The amount of time that would count as a hold |
611 | */ | 611 | */ |
612 | uint ODevice::buttonHoldTime() const | 612 | uint ODevice::buttonHoldTime() const |
613 | { | 613 | { |
614 | return d->m_holdtime; | 614 | return d->m_holdtime; |
615 | } | 615 | } |
616 | 616 | ||
617 | /** | 617 | /** |
618 | * This method return a ODeviceButton for a key code | 618 | * This method return a ODeviceButton for a key code |
619 | * or 0 if no special hardware button is available for the device | 619 | * or 0 if no special hardware button is available for the device |
620 | * | 620 | * |
621 | * @return The devicebutton or 0l | 621 | * @return The devicebutton or 0l |
622 | * @see ODeviceButton | 622 | * @see ODeviceButton |
623 | */ | 623 | */ |
624 | const ODeviceButton *ODevice::buttonForKeycode ( ushort code ) | 624 | const ODeviceButton *ODevice::buttonForKeycode ( ushort code ) |
625 | { | 625 | { |
626 | initButtons(); | 626 | initButtons(); |
627 | 627 | ||
628 | for ( QValueListConstIterator<ODeviceButton> it = d->m_buttons->begin(); it != d->m_buttons->end(); ++it ) { | 628 | for ( QValueListConstIterator<ODeviceButton> it = d->m_buttons->begin(); it != d->m_buttons->end(); ++it ) { |
629 | if ( (*it). keycode() == code ) | 629 | if ( (*it). keycode() == code ) |
630 | return &(*it); | 630 | return &(*it); |
631 | } | 631 | } |
632 | return 0; | 632 | return 0; |
633 | } | 633 | } |
634 | 634 | ||
635 | void ODevice::reloadButtonMapping() | 635 | void ODevice::reloadButtonMapping() |
636 | { | 636 | { |
637 | initButtons(); | 637 | initButtons(); |
638 | 638 | ||
639 | Config cfg ( "ButtonSettings" ); | 639 | Config cfg ( "ButtonSettings" ); |
640 | 640 | ||
641 | for ( uint i = 0; i < d->m_buttons->count(); i++ ) { | 641 | for ( uint i = 0; i < d->m_buttons->count(); i++ ) { |
642 | ODeviceButton &b = ( *d->m_buttons ) [i]; | 642 | ODeviceButton &b = ( *d->m_buttons ) [i]; |
643 | QString group = "Button" + QString::number ( i ); | 643 | QString group = "Button" + QString::number ( i ); |
644 | 644 | ||
645 | QCString pch, hch; | 645 | QCString pch, hch; |
646 | QCString pm, hm; | 646 | QCString pm, hm; |
647 | QByteArray pdata, hdata; | 647 | QByteArray pdata, hdata; |
648 | 648 | ||
649 | if ( cfg. hasGroup ( group )) { | 649 | if ( cfg. hasGroup ( group )) { |
650 | cfg. setGroup ( group ); | 650 | cfg. setGroup ( group ); |
651 | pch = cfg. readEntry ( "PressedActionChannel" ). latin1(); | 651 | pch = cfg. readEntry ( "PressedActionChannel" ). latin1(); |
652 | pm = cfg. readEntry ( "PressedActionMessage" ). latin1(); | 652 | pm = cfg. readEntry ( "PressedActionMessage" ). latin1(); |
653 | // pdata = decodeBase64 ( buttonFile. readEntry ( "PressedActionArgs" )); | 653 | // pdata = decodeBase64 ( buttonFile. readEntry ( "PressedActionArgs" )); |
654 | 654 | ||
655 | hch = cfg. readEntry ( "HeldActionChannel" ). latin1(); | 655 | hch = cfg. readEntry ( "HeldActionChannel" ). latin1(); |
656 | hm = cfg. readEntry ( "HeldActionMessage" ). latin1(); | 656 | hm = cfg. readEntry ( "HeldActionMessage" ). latin1(); |
657 | // hdata = decodeBase64 ( buttonFile. readEntry ( "HeldActionArgs" )); | 657 | // hdata = decodeBase64 ( buttonFile. readEntry ( "HeldActionArgs" )); |
658 | } | 658 | } |
659 | 659 | ||
660 | b. setPressedAction ( OQCopMessage ( pch, pm, pdata )); | 660 | b. setPressedAction ( OQCopMessage ( pch, pm, pdata )); |
661 | 661 | ||
662 | b. setHeldAction ( OQCopMessage ( hch, hm, hdata )); | 662 | b. setHeldAction ( OQCopMessage ( hch, hm, hdata )); |
663 | } | 663 | } |
664 | } | 664 | } |
665 | 665 | ||
666 | void ODevice::remapPressedAction ( int button, const OQCopMessage &action ) | 666 | void ODevice::remapPressedAction ( int button, const OQCopMessage &action ) |
667 | { | 667 | { |
668 | initButtons(); | 668 | initButtons(); |
669 | 669 | ||
670 | QString mb_chan; | 670 | QString mb_chan; |
671 | 671 | ||
672 | if ( button >= (int) d->m_buttons->count()) | 672 | if ( button >= (int) d->m_buttons->count()) |
673 | return; | 673 | return; |
674 | 674 | ||
675 | ODeviceButton &b = ( *d->m_buttons ) [button]; | 675 | ODeviceButton &b = ( *d->m_buttons ) [button]; |
676 | b. setPressedAction ( action ); | 676 | b. setPressedAction ( action ); |
677 | 677 | ||
678 | mb_chan=b. pressedAction(). channel(); | 678 | mb_chan=b. pressedAction(). channel(); |
679 | 679 | ||
680 | Config buttonFile ( "ButtonSettings" ); | 680 | Config buttonFile ( "ButtonSettings" ); |
681 | buttonFile. setGroup ( "Button" + QString::number ( button )); | 681 | buttonFile. setGroup ( "Button" + QString::number ( button )); |
682 | buttonFile. writeEntry ( "PressedActionChannel", (const char*) mb_chan); | 682 | buttonFile. writeEntry ( "PressedActionChannel", (const char*) mb_chan); |
683 | buttonFile. writeEntry ( "PressedActionMessage", (const char*) b. pressedAction(). message()); | 683 | buttonFile. writeEntry ( "PressedActionMessage", (const char*) b. pressedAction(). message()); |
684 | 684 | ||
685 | // buttonFile. writeEntry ( "PressedActionArgs", encodeBase64 ( b. pressedAction(). data())); | 685 | // buttonFile. writeEntry ( "PressedActionArgs", encodeBase64 ( b. pressedAction(). data())); |
686 | 686 | ||
687 | QCopEnvelope ( "QPE/System", "deviceButtonMappingChanged()" ); | 687 | QCopEnvelope ( "QPE/System", "deviceButtonMappingChanged()" ); |
688 | } | 688 | } |
689 | 689 | ||
690 | void ODevice::remapHeldAction ( int button, const OQCopMessage &action ) | 690 | void ODevice::remapHeldAction ( int button, const OQCopMessage &action ) |
691 | { | 691 | { |
692 | initButtons(); | 692 | initButtons(); |
693 | 693 | ||
694 | if ( button >= (int) d->m_buttons->count()) | 694 | if ( button >= (int) d->m_buttons->count()) |
695 | return; | 695 | return; |
696 | 696 | ||
697 | ODeviceButton &b = ( *d->m_buttons ) [button]; | 697 | ODeviceButton &b = ( *d->m_buttons ) [button]; |
698 | b. setHeldAction ( action ); | 698 | b. setHeldAction ( action ); |
699 | 699 | ||
700 | Config buttonFile ( "ButtonSettings" ); | 700 | Config buttonFile ( "ButtonSettings" ); |
701 | buttonFile. setGroup ( "Button" + QString::number ( button )); | 701 | buttonFile. setGroup ( "Button" + QString::number ( button )); |
702 | buttonFile. writeEntry ( "HeldActionChannel", (const char *) b. heldAction(). channel()); | 702 | buttonFile. writeEntry ( "HeldActionChannel", (const char *) b. heldAction(). channel()); |
703 | buttonFile. writeEntry ( "HeldActionMessage", (const char *) b. heldAction(). message()); | 703 | buttonFile. writeEntry ( "HeldActionMessage", (const char *) b. heldAction(). message()); |
704 | 704 | ||
705 | // buttonFile. writeEntry ( "HeldActionArgs", decodeBase64 ( b. heldAction(). data())); | 705 | // buttonFile. writeEntry ( "HeldActionArgs", decodeBase64 ( b. heldAction(). data())); |
706 | 706 | ||
707 | QCopEnvelope ( "QPE/System", "deviceButtonMappingChanged()" ); | 707 | QCopEnvelope ( "QPE/System", "deviceButtonMappingChanged()" ); |
708 | } | 708 | } |
709 | void ODevice::virtual_hook(int, void* ){ | 709 | void ODevice::virtual_hook(int, void* ){ |
710 | 710 | ||
711 | } | 711 | } |
712 | 712 | ||
713 | /** | 713 | /** |
714 | * Sends a QCOP message to channel QPE/System | 714 | * Sends a QCOP message to channel QPE/System |
715 | * with the message "aboutToSuspend()" if this | 715 | * with the message "aboutToSuspend()" if this |
716 | * is the windowing server | 716 | * is the windowing server |
717 | */ | 717 | */ |
718 | void ODevice::sendSuspendmsg() | 718 | void ODevice::sendSuspendmsg() |
719 | { | 719 | { |
720 | if ( isQWS() ) | 720 | if ( isQWS() ) |
721 | return; | 721 | return; |
722 | 722 | ||
723 | QCopEnvelope ( "QPE/System", "aboutToSuspend()" ); | 723 | QCopEnvelope ( "QPE/System", "aboutToSuspend()" ); |
724 | } | 724 | } |
725 | 725 | ||
726 | /** | 726 | /** |
727 | * \brief Prepend the QWSServer::KeyboardFilter to the list of installed KeyFilters | 727 | * \brief Prepend the QWSServer::KeyboardFilter to the list of installed KeyFilters |
728 | * | 728 | * |
729 | * Prepend a QWSServer::KeyboardFilter to the List of Keyboard | 729 | * Prepend a QWSServer::KeyboardFilter to the List of Keyboard |
730 | * Filters. This function is the only way to prepend a KeyFilter. | 730 | * Filters. This function is the only way to prepend a KeyFilter. |
731 | * | 731 | * |
732 | * @param aFilter The KeyFilter to be prepended to the list of filters | 732 | * @param aFilter The KeyFilter to be prepended to the list of filters |
733 | * | 733 | * |
734 | * @see Opie::Core::OKeyFilter | 734 | * @see Opie::Core::OKeyFilter |
735 | * @see Opie::Core::OKeyFilter::inst() | 735 | * @see Opie::Core::OKeyFilter::inst() |
736 | */ | 736 | */ |
737 | void ODevice::addPreHandler(QWSServer::KeyboardFilter*aFilter) | 737 | void ODevice::addPreHandler(QWSServer::KeyboardFilter*aFilter) |
738 | { | 738 | { |
739 | Opie::Core::OKeyFilter::inst()->addPreHandler(aFilter); | 739 | Opie::Core::OKeyFilter::inst()->addPreHandler(aFilter); |
740 | } | 740 | } |
741 | 741 | ||
742 | /** | 742 | /** |
743 | * \brief Remove the QWSServer::KeyboardFilter in the param from the list | 743 | * \brief Remove the QWSServer::KeyboardFilter in the param from the list |
744 | * | 744 | * |
745 | * Remove the QWSServer::KeyboardFilter \par aFilter from the List | 745 | * Remove the QWSServer::KeyboardFilter \par aFilter from the List |
746 | * of Keyfilters. Call this when you delete the KeyFilter! | 746 | * of Keyfilters. Call this when you delete the KeyFilter! |
747 | * | 747 | * |
748 | * @param aFilter The filter to be removed from the Opie::Core::OKeyFilter | 748 | * @param aFilter The filter to be removed from the Opie::Core::OKeyFilter |
749 | * @see Opie::Core::ODevice::addPreHandler | 749 | * @see Opie::Core::ODevice::addPreHandler |
750 | */ | 750 | */ |
751 | void ODevice::remPreHandler(QWSServer::KeyboardFilter*aFilter) | 751 | void ODevice::remPreHandler(QWSServer::KeyboardFilter*aFilter) |
752 | { | 752 | { |
753 | Opie::Core::OKeyFilter::inst()->remPreHandler(aFilter); | 753 | Opie::Core::OKeyFilter::inst()->remPreHandler(aFilter); |
754 | } | 754 | } |
755 | 755 | ||
756 | void ODevice::playingStopped() { | 756 | void ODevice::playingStopped() { |
757 | const_cast<QObject*>(sender())->disconnect( this ); | 757 | const_cast<QObject*>(sender())->disconnect( this ); |
758 | #ifndef QT_NO_SOUND | ||
758 | if ( d->m_sound >= 0 ) { | 759 | if ( d->m_sound >= 0 ) { |
759 | ::ioctl ( d->m_sound, MIXER_WRITE( d->m_mixer ), &d->m_vol ); | 760 | ::ioctl ( d->m_sound, MIXER_WRITE( d->m_mixer ), &d->m_vol ); |
760 | ::close ( d->m_sound ); | 761 | ::close ( d->m_sound ); |
761 | } | 762 | } |
763 | #endif | ||
762 | } | 764 | } |
763 | 765 | ||
764 | void ODevice::changeMixerForAlarm( int mixer, const char* file, Sound *snd ) { | 766 | void ODevice::changeMixerForAlarm( int mixer, const char* file, Sound *snd ) { |
767 | #ifndef QT_NO_SOUND | ||
765 | if (( d->m_sound = ::open ( file, O_RDWR )) >= 0 ) { | 768 | if (( d->m_sound = ::open ( file, O_RDWR )) >= 0 ) { |
766 | if ( ::ioctl ( d->m_sound, MIXER_READ( mixer ), &d->m_vol ) >= 0 ) { | 769 | if ( ::ioctl ( d->m_sound, MIXER_READ( mixer ), &d->m_vol ) >= 0 ) { |
767 | Config cfg ( "qpe" ); | 770 | Config cfg ( "qpe" ); |
768 | cfg. setGroup ( "Volume" ); | 771 | cfg. setGroup ( "Volume" ); |
769 | 772 | ||
770 | int volalarm = cfg. readNumEntry ( "AlarmPercent", 50 ); | 773 | int volalarm = cfg. readNumEntry ( "AlarmPercent", 50 ); |
771 | if ( volalarm < 0 ) | 774 | if ( volalarm < 0 ) |
772 | volalarm = 0; | 775 | volalarm = 0; |
773 | else if ( volalarm > 100 ) | 776 | else if ( volalarm > 100 ) |
774 | volalarm = 100; | 777 | volalarm = 100; |
775 | volalarm |= ( volalarm << 8 ); | 778 | volalarm |= ( volalarm << 8 ); |
776 | 779 | ||
777 | if ( ::ioctl ( d->m_sound, MIXER_WRITE( mixer ), &volalarm ) >= 0 ) | 780 | if ( ::ioctl ( d->m_sound, MIXER_WRITE( mixer ), &volalarm ) >= 0 ) |
778 | register_qpe_sound_finished(snd, this, SLOT(playingStopped())); | 781 | register_qpe_sound_finished(snd, this, SLOT(playingStopped())); |
779 | } | 782 | } |
780 | d->m_mixer = mixer; | 783 | d->m_mixer = mixer; |
781 | } | 784 | } |
785 | #endif | ||
782 | } | 786 | } |
783 | 787 | ||
784 | } | 788 | } |
785 | } | 789 | } |
diff --git a/libopie2/opiedb/osqlresult.cpp b/libopie2/opiedb/osqlresult.cpp index bad7d8b..268ac8e 100644 --- a/libopie2/opiedb/osqlresult.cpp +++ b/libopie2/opiedb/osqlresult.cpp | |||
@@ -1,128 +1,128 @@ | |||
1 | 1 | ||
2 | #include "osqlresult.h" | 2 | #include "osqlresult.h" |
3 | 3 | ||
4 | using namespace Opie::DB; | 4 | using namespace Opie::DB; |
5 | 5 | ||
6 | OSQLResultItem::OSQLResultItem( const TableString& string, | 6 | OSQLResultItem::OSQLResultItem( const TableString& string, |
7 | const TableInt& Int) | 7 | const TableInt& Int) |
8 | : m_string( string ), m_int( Int ) | 8 | : m_string( string ), m_int( Int ) |
9 | { | 9 | { |
10 | 10 | ||
11 | } | 11 | } |
12 | OSQLResultItem::~OSQLResultItem() { | 12 | OSQLResultItem::~OSQLResultItem() { |
13 | } | 13 | } |
14 | OSQLResultItem::OSQLResultItem( const OSQLResultItem& item) { | 14 | OSQLResultItem::OSQLResultItem( const OSQLResultItem& item) { |
15 | *this = item; | 15 | *this = item; |
16 | } | 16 | } |
17 | OSQLResultItem &OSQLResultItem::operator=( const OSQLResultItem& other) { | 17 | OSQLResultItem &OSQLResultItem::operator=( const OSQLResultItem& other) { |
18 | m_string = other.m_string; | 18 | m_string = other.m_string; |
19 | m_int = other.m_int; | 19 | m_int = other.m_int; |
20 | return *this; | 20 | return *this; |
21 | } | 21 | } |
22 | OSQLResultItem::TableString OSQLResultItem::tableString()const{ | 22 | OSQLResultItem::TableString OSQLResultItem::tableString()const{ |
23 | return m_string; | 23 | return m_string; |
24 | } | 24 | } |
25 | OSQLResultItem::TableInt OSQLResultItem::tableInt()const { | 25 | OSQLResultItem::TableInt OSQLResultItem::tableInt()const { |
26 | return m_int; | 26 | return m_int; |
27 | } | 27 | } |
28 | QString OSQLResultItem::data( const QString& columnName, bool *ok ) { | 28 | QString OSQLResultItem::data( const QString& columnName, bool *ok ) const { |
29 | TableString::Iterator it = m_string.find( columnName ); | 29 | TableString::ConstIterator it = m_string.find( columnName ); |
30 | 30 | ||
31 | /* if found */ | 31 | /* if found */ |
32 | if ( it != m_string.end() ) { | 32 | if ( it != m_string.end() ) { |
33 | if ( ok ) *ok = true; | 33 | if ( ok ) *ok = true; |
34 | return it.data(); | 34 | return it.data(); |
35 | }else{ | 35 | }else{ |
36 | if ( ok ) *ok = false; | 36 | if ( ok ) *ok = false; |
37 | return QString::null; | 37 | return QString::null; |
38 | } | 38 | } |
39 | 39 | ||
40 | } | 40 | } |
41 | QString OSQLResultItem::data( int column, bool *ok ) { | 41 | QString OSQLResultItem::data( int column, bool *ok ) const { |
42 | TableInt::Iterator it = m_int.find( column ); | 42 | TableInt::ConstIterator it = m_int.find( column ); |
43 | 43 | ||
44 | /* if found */ | 44 | /* if found */ |
45 | if ( it != m_int.end() ) { | 45 | if ( it != m_int.end() ) { |
46 | if ( ok ) *ok = true; | 46 | if ( ok ) *ok = true; |
47 | return it.data(); | 47 | return it.data(); |
48 | }else{ | 48 | }else{ |
49 | if ( ok ) *ok = false; | 49 | if ( ok ) *ok = false; |
50 | return QString::null; | 50 | return QString::null; |
51 | } | 51 | } |
52 | } | 52 | } |
53 | /* | 53 | /* |
54 | * DateFormat is 'YYYY-MM-DD' | 54 | * DateFormat is 'YYYY-MM-DD' |
55 | */ | 55 | */ |
56 | QDate OSQLResultItem::dataToDate( const QString& column, bool *ok ) { | 56 | QDate OSQLResultItem::dataToDate( const QString& column, bool *ok ) { |
57 | QDate date = QDate::currentDate(); | 57 | QDate date = QDate::currentDate(); |
58 | QString str = data( column, ok ); | 58 | QString str = data( column, ok ); |
59 | if (!str.isEmpty() ) { | 59 | if (!str.isEmpty() ) { |
60 | ;// convert | 60 | ;// convert |
61 | } | 61 | } |
62 | return date; | 62 | return date; |
63 | } | 63 | } |
64 | QDate OSQLResultItem::dataToDate( int column, bool *ok ) { | 64 | QDate OSQLResultItem::dataToDate( int column, bool *ok ) { |
65 | QDate date = QDate::currentDate(); | 65 | QDate date = QDate::currentDate(); |
66 | QString str = data( column, ok ); | 66 | QString str = data( column, ok ); |
67 | if (!str.isEmpty() ) { | 67 | if (!str.isEmpty() ) { |
68 | ;// convert | 68 | ;// convert |
69 | } | 69 | } |
70 | return date; | 70 | return date; |
71 | 71 | ||
72 | } | 72 | } |
73 | QDateTime OSQLResultItem::dataToDateTime( const QString& column, bool *ok ) { | 73 | QDateTime OSQLResultItem::dataToDateTime( const QString& column, bool *ok ) { |
74 | QDateTime time = QDateTime::currentDateTime(); | 74 | QDateTime time = QDateTime::currentDateTime(); |
75 | return time; | 75 | return time; |
76 | } | 76 | } |
77 | QDateTime OSQLResultItem::dataToDateTime( int column, bool *ok ) { | 77 | QDateTime OSQLResultItem::dataToDateTime( int column, bool *ok ) { |
78 | QDateTime time = QDateTime::currentDateTime(); | 78 | QDateTime time = QDateTime::currentDateTime(); |
79 | return time; | 79 | return time; |
80 | } | 80 | } |
81 | 81 | ||
82 | OSQLResult::OSQLResult( enum State state, | 82 | OSQLResult::OSQLResult( enum State state, |
83 | const OSQLResultItem::ValueList& list, | 83 | const OSQLResultItem::ValueList& list, |
84 | const OSQLError::ValueList& error ) | 84 | const OSQLError::ValueList& error ) |
85 | : m_state( state ), m_list( list ), m_error( error ) | 85 | : m_state( state ), m_list( list ), m_error( error ) |
86 | { | 86 | { |
87 | 87 | ||
88 | } | 88 | } |
89 | OSQLResult::~OSQLResult() { | 89 | OSQLResult::~OSQLResult() { |
90 | 90 | ||
91 | } | 91 | } |
92 | OSQLResult::State OSQLResult::state()const { | 92 | OSQLResult::State OSQLResult::state()const { |
93 | return m_state; | 93 | return m_state; |
94 | } | 94 | } |
95 | void OSQLResult::setState( OSQLResult::State state ) { | 95 | void OSQLResult::setState( OSQLResult::State state ) { |
96 | m_state = state; | 96 | m_state = state; |
97 | } | 97 | } |
98 | OSQLError::ValueList OSQLResult::errors()const { | 98 | OSQLError::ValueList OSQLResult::errors()const { |
99 | return m_error; | 99 | return m_error; |
100 | } | 100 | } |
101 | void OSQLResult::setErrors( const OSQLError::ValueList& err ) { | 101 | void OSQLResult::setErrors( const OSQLError::ValueList& err ) { |
102 | m_error = err; | 102 | m_error = err; |
103 | } | 103 | } |
104 | OSQLResultItem::ValueList OSQLResult::results()const { | 104 | OSQLResultItem::ValueList OSQLResult::results()const { |
105 | return m_list; | 105 | return m_list; |
106 | } | 106 | } |
107 | void OSQLResult::setResults( const OSQLResultItem::ValueList& result ) { | 107 | void OSQLResult::setResults( const OSQLResultItem::ValueList& result ) { |
108 | m_list = result; | 108 | m_list = result; |
109 | } | 109 | } |
110 | OSQLResultItem OSQLResult::first() { | 110 | OSQLResultItem OSQLResult::first() { |
111 | it = m_list.begin(); | 111 | it = m_list.begin(); |
112 | return (*it); | 112 | return (*it); |
113 | } | 113 | } |
114 | OSQLResultItem OSQLResult::next(){ | 114 | OSQLResultItem OSQLResult::next(){ |
115 | ++it; | 115 | ++it; |
116 | return (*it); | 116 | return (*it); |
117 | } | 117 | } |
118 | bool OSQLResult::atEnd(){ | 118 | bool OSQLResult::atEnd(){ |
119 | if ( it == m_list.end() ) | 119 | if ( it == m_list.end() ) |
120 | return true; | 120 | return true; |
121 | 121 | ||
122 | return false; | 122 | return false; |
123 | } | 123 | } |
124 | OSQLResultItem::ValueList::ConstIterator OSQLResult::iterator()const { | 124 | OSQLResultItem::ValueList::ConstIterator OSQLResult::iterator()const { |
125 | OSQLResultItem::ValueList::ConstIterator it; | 125 | OSQLResultItem::ValueList::ConstIterator it; |
126 | it = m_list.begin(); | 126 | it = m_list.begin(); |
127 | return it; | 127 | return it; |
128 | } | 128 | } |
diff --git a/libopie2/opiedb/osqlresult.h b/libopie2/opiedb/osqlresult.h index fc6f01a..92b65a0 100644 --- a/libopie2/opiedb/osqlresult.h +++ b/libopie2/opiedb/osqlresult.h | |||
@@ -1,120 +1,120 @@ | |||
1 | #ifndef OSQL_RESULT_H | 1 | #ifndef OSQL_RESULT_H |
2 | #define OSQL_RESULT_H | 2 | #define OSQL_RESULT_H |
3 | 3 | ||
4 | #include <qdatetime.h> | 4 | #include <qdatetime.h> |
5 | #include <qmap.h> | 5 | #include <qmap.h> |
6 | #include <qvaluelist.h> | 6 | #include <qvaluelist.h> |
7 | 7 | ||
8 | 8 | ||
9 | #include "osqlerror.h" | 9 | #include "osqlerror.h" |
10 | 10 | ||
11 | namespace Opie { | 11 | namespace Opie { |
12 | namespace DB { | 12 | namespace DB { |
13 | 13 | ||
14 | /** | 14 | /** |
15 | * ResultItem represents one row of the resulting answer | 15 | * ResultItem represents one row of the resulting answer |
16 | */ | 16 | */ |
17 | class OSQLResultItem { | 17 | class OSQLResultItem { |
18 | public: | 18 | public: |
19 | typedef QValueList<OSQLResultItem> ValueList; | 19 | typedef QValueList<OSQLResultItem> ValueList; |
20 | /** | 20 | /** |
21 | * TableString is used to establish the relations | 21 | * TableString is used to establish the relations |
22 | * between the column name and the real item | 22 | * between the column name and the real item |
23 | */ | 23 | */ |
24 | typedef QMap<QString, QString> TableString; | 24 | typedef QMap<QString, QString> TableString; |
25 | 25 | ||
26 | /** | 26 | /** |
27 | * TableInt is used to establish a relation between a | 27 | * TableInt is used to establish a relation between a |
28 | * position of a column and the row value | 28 | * position of a column and the row value |
29 | */ | 29 | */ |
30 | typedef QMap<int, QString> TableInt; | 30 | typedef QMap<int, QString> TableInt; |
31 | 31 | ||
32 | /** | 32 | /** |
33 | * Default c'tor. It has a TableString and a TableInt | 33 | * Default c'tor. It has a TableString and a TableInt |
34 | */ | 34 | */ |
35 | OSQLResultItem(const TableString& = TableString(), | 35 | OSQLResultItem(const TableString& = TableString(), |
36 | const TableInt& = TableInt() ); | 36 | const TableInt& = TableInt() ); |
37 | OSQLResultItem( const OSQLResultItem& ); | 37 | OSQLResultItem( const OSQLResultItem& ); |
38 | ~OSQLResultItem(); | 38 | ~OSQLResultItem(); |
39 | OSQLResultItem &operator=( const OSQLResultItem& ); | 39 | OSQLResultItem &operator=( const OSQLResultItem& ); |
40 | /** | 40 | /** |
41 | * returns the TableString | 41 | * returns the TableString |
42 | */ | 42 | */ |
43 | TableString tableString()const; | 43 | TableString tableString()const; |
44 | 44 | ||
45 | /** | 45 | /** |
46 | * returns the TableInt | 46 | * returns the TableInt |
47 | */ | 47 | */ |
48 | TableInt tableInt() const; | 48 | TableInt tableInt() const; |
49 | 49 | ||
50 | /** | 50 | /** |
51 | * retrieves the Data from columnName | 51 | * retrieves the Data from columnName |
52 | * | 52 | * |
53 | */ | 53 | */ |
54 | QString data( const QString& columnName, bool *ok = 0); | 54 | QString data( const QString& columnName, bool *ok = 0) const; |
55 | 55 | ||
56 | /** | 56 | /** |
57 | * QString for column number | 57 | * QString for column number |
58 | */ | 58 | */ |
59 | QString data(int columnNumber, bool *ok = 0); | 59 | QString data(int columnNumber, bool *ok = 0) const; |
60 | 60 | ||
61 | /** | 61 | /** |
62 | * Date conversion from columnName | 62 | * Date conversion from columnName |
63 | */ | 63 | */ |
64 | QDate dataToDate( const QString& columnName, bool *ok = 0 ); | 64 | QDate dataToDate( const QString& columnName, bool *ok = 0 ); |
65 | 65 | ||
66 | /** | 66 | /** |
67 | * Date conversion from column-number | 67 | * Date conversion from column-number |
68 | */ | 68 | */ |
69 | QDate dataToDate( int columnNumber, bool *ok = 0 ); | 69 | QDate dataToDate( int columnNumber, bool *ok = 0 ); |
70 | 70 | ||
71 | QDateTime dataToDateTime( const QString& columName, bool *ok = 0 ); | 71 | QDateTime dataToDateTime( const QString& columName, bool *ok = 0 ); |
72 | QDateTime dataToDateTime( int columnNumber, bool *ok = 0 ); | 72 | QDateTime dataToDateTime( int columnNumber, bool *ok = 0 ); |
73 | private: | 73 | private: |
74 | TableString m_string; | 74 | TableString m_string; |
75 | TableInt m_int; | 75 | TableInt m_int; |
76 | }; | 76 | }; |
77 | 77 | ||
78 | /** | 78 | /** |
79 | * the OSQLResult | 79 | * the OSQLResult |
80 | * either a SQL statement failed or succeeded | 80 | * either a SQL statement failed or succeeded |
81 | */ | 81 | */ |
82 | class OSQLResult { | 82 | class OSQLResult { |
83 | public: | 83 | public: |
84 | /** The State of a Result */ | 84 | /** The State of a Result */ |
85 | enum State{ Success = 0, Failure,Undefined }; | 85 | enum State{ Success = 0, Failure,Undefined }; |
86 | 86 | ||
87 | /** | 87 | /** |
88 | * default c'tor | 88 | * default c'tor |
89 | * @param state The State of the Result | 89 | * @param state The State of the Result |
90 | * @param r ResultItems | 90 | * @param r ResultItems |
91 | * @prarm errors the Errors a OSQLResult created | 91 | * @prarm errors the Errors a OSQLResult created |
92 | */ | 92 | */ |
93 | OSQLResult( enum State state = Undefined, | 93 | OSQLResult( enum State state = Undefined, |
94 | const OSQLResultItem::ValueList& r= OSQLResultItem::ValueList(), | 94 | const OSQLResultItem::ValueList& r= OSQLResultItem::ValueList(), |
95 | const OSQLError::ValueList& errors = OSQLError::ValueList() ); | 95 | const OSQLError::ValueList& errors = OSQLError::ValueList() ); |
96 | ~OSQLResult(); | 96 | ~OSQLResult(); |
97 | State state()const; | 97 | State state()const; |
98 | OSQLError::ValueList errors()const; | 98 | OSQLError::ValueList errors()const; |
99 | OSQLResultItem::ValueList results()const; | 99 | OSQLResultItem::ValueList results()const; |
100 | 100 | ||
101 | void setState( enum State state ); | 101 | void setState( enum State state ); |
102 | void setErrors( const OSQLError::ValueList& error ); | 102 | void setErrors( const OSQLError::ValueList& error ); |
103 | void setResults( const OSQLResultItem::ValueList& result ); | 103 | void setResults( const OSQLResultItem::ValueList& result ); |
104 | 104 | ||
105 | OSQLResultItem first(); | 105 | OSQLResultItem first(); |
106 | OSQLResultItem next(); | 106 | OSQLResultItem next(); |
107 | bool atEnd(); | 107 | bool atEnd(); |
108 | OSQLResultItem::ValueList::ConstIterator iterator()const; | 108 | OSQLResultItem::ValueList::ConstIterator iterator()const; |
109 | private: | 109 | private: |
110 | enum State m_state; | 110 | enum State m_state; |
111 | OSQLResultItem::ValueList m_list; | 111 | OSQLResultItem::ValueList m_list; |
112 | OSQLError::ValueList m_error; | 112 | OSQLError::ValueList m_error; |
113 | OSQLResultItem::ValueList::Iterator it; | 113 | OSQLResultItem::ValueList::Iterator it; |
114 | class Private; | 114 | class Private; |
115 | Private *d; | 115 | Private *d; |
116 | }; | 116 | }; |
117 | 117 | ||
118 | } | 118 | } |
119 | } | 119 | } |
120 | #endif | 120 | #endif |
diff --git a/libopie2/opiepim/TODO b/libopie2/opiepim/TODO index c3420cf..b520370 100644 --- a/libopie2/opiepim/TODO +++ b/libopie2/opiepim/TODO | |||
@@ -1,63 +1,64 @@ | |||
1 | As to popular request.... | 1 | As to popular request.... |
2 | 2 | ||
3 | 1.) fix up the core/backend mess. | 3 | 1.) fix up the core/backend mess. |
4 | The actual Backend Implementation + Interface should be there | 4 | The actual Backend Implementation + Interface should be there |
5 | The API frontend used by the developer should not be used | 5 | The API frontend used by the developer should not be used |
6 | 6 | ||
7 | Rename ODateBookAccess* to OPimDateBookAccess* | 7 | Rename ODateBookAccess* to OPimDateBookAccess* |
8 | Rename OContactAccess* to OpimContactAccess* | ||
8 | Fix filenames to OPim* ... | 9 | Fix filenames to OPim* ... |
9 | 10 | ||
10 | 2.) Move sorting, Query By Example, Exposing of Attributes of a Record | 11 | 2.) Move sorting, Query By Example, Exposing of Attributes of a Record |
11 | available to the Ptr base class and have sane implementation | 12 | available to the Ptr base class and have sane implementation |
12 | on the template level | 13 | on the template level |
13 | 14 | ||
14 | 3.) Have something like QProperty to expose attributes from OPimRecord. | 15 | 3.) Have something like QProperty to expose attributes from OPimRecord. |
15 | This would include exporting,importing of data, and translated names. | 16 | This would include exporting,importing of data, and translated names. |
16 | This can be used for Cross Reference, Selector Widget, Generic Table | 17 | This can be used for Cross Reference, Selector Widget, Generic Table |
17 | Shower | 18 | Shower |
18 | 19 | ||
19 | 4.) Marshall/Demarshall all PIM Records correctly | 20 | 4.) Marshall/Demarshall all PIM Records correctly |
20 | 21 | ||
21 | 5.) Add the Private Backend to the OPimRecord ( private ) make the base | 22 | 5.) Add the Private Backend to the OPimRecord ( private ) make the base |
22 | access class friend and allow retrieving the backend. Make it virtual | 23 | access class friend and allow retrieving the backend. Make it virtual |
23 | so the template gets the right pointer. So it can only be accessed from | 24 | so the template gets the right pointer. So it can only be accessed from |
24 | the inside | 25 | the inside |
25 | 26 | ||
26 | 6.) Add signals for updating/adding/removing records to the access template | 27 | 6.) Add signals for updating/adding/removing records to the access template |
27 | Internal connect method | 28 | Internal connect method |
28 | 29 | ||
29 | 7.) internal QCOP communication between the interfaces | 30 | 7.) internal QCOP communication between the interfaces |
30 | 31 | ||
31 | 8.) GUI:Better and Improved Recurrence Widget | 32 | 8.) GUI:Better and Improved Recurrence Widget |
32 | 33 | ||
33 | 9.) GUI:Improved Alarm Widget and handling classes | 34 | 9.) GUI:Improved Alarm Widget and handling classes |
34 | 35 | ||
35 | 10.) GUI:Undo/Redo template look at KDE | 36 | 10.) GUI:Undo/Redo template look at KDE |
36 | 37 | ||
37 | 11.) GUI: Generic X-Ref Selector using the factory and pointer interface | 38 | 11.) GUI: Generic X-Ref Selector using the factory and pointer interface |
38 | 39 | ||
39 | 12.) GUI: Factory and also registration of foreign services. generate a records of type | 40 | 12.) GUI: Factory and also registration of foreign services. generate a records of type |
40 | 41 | ||
41 | 13.) Multiple Backends for an Access Template | 42 | 13.) Multiple Backends for an Access Template |
42 | 43 | ||
43 | 14.) ReadOnly Access | 44 | 14.) ReadOnly Access |
44 | 45 | ||
45 | 15.) GUI: Generic Table Widget maybe even baed on Selector with | 46 | 15.) GUI: Generic Table Widget maybe even baed on Selector with |
46 | configuration of shown Attribute | 47 | configuration of shown Attribute |
47 | 48 | ||
48 | 16.) Multiple Categories with Sub Categories including popup selector | 49 | 16.) Multiple Categories with Sub Categories including popup selector |
49 | Widget. Fix Bug with changing visible. Both helper class + gui. | 50 | Widget. Fix Bug with changing visible. Both helper class + gui. |
50 | Also group PopupNames Like in Function Menu of XEmacs | 51 | Also group PopupNames Like in Function Menu of XEmacs |
51 | 52 | ||
52 | 17.) ListView for TodolIst At least introduce parents and child | 53 | 17.) ListView for TodolIst At least introduce parents and child |
53 | And query for them | 54 | And query for them |
54 | 55 | ||
55 | 18.) Add querieng to Ptr Level for dates and date ranges. | 56 | 18.) Add querieng to Ptr Level for dates and date ranges. |
56 | Return OEffectiveEvents or such which is also only loaded | 57 | Return OEffectiveEvents or such which is also only loaded |
57 | if required. | 58 | if required. |
58 | 59 | ||
59 | 19.) Clean Up | 60 | 19.) Clean Up |
60 | 61 | ||
61 | 20.) Datebook Classes | 62 | 20.) Datebook Classes |
62 | 63 | ||
63 | 22.) Better helper for AlarmServer \ No newline at end of file | 64 | 22.) Better helper for AlarmServer \ No newline at end of file |