summaryrefslogtreecommitdiff
path: root/noncore/apps/tableviewer
authorar <ar>2004-05-31 15:26:50 (UTC)
committer ar <ar>2004-05-31 15:26:50 (UTC)
commit27dfc34d411dee76f09f5e516c60b0a64eb35948 (patch) (unidiff)
treeb7f7259497630390e352a1257cac5dc59f5399a6 /noncore/apps/tableviewer
parent27b09fe4f930b96e82cea9fb0eb1a9b87f7ec062 (diff)
downloadopie-27dfc34d411dee76f09f5e516c60b0a64eb35948.zip
opie-27dfc34d411dee76f09f5e516c60b0a64eb35948.tar.gz
opie-27dfc34d411dee76f09f5e516c60b0a64eb35948.tar.bz2
- convert qWarning to owarn
Diffstat (limited to 'noncore/apps/tableviewer') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/tableviewer/browsekeyentry.cpp53
-rw-r--r--noncore/apps/tableviewer/db/common.cpp165
-rw-r--r--noncore/apps/tableviewer/db/datacache.cpp68
-rw-r--r--noncore/apps/tableviewer/db/datacache.h24
-rw-r--r--noncore/apps/tableviewer/ui/browsekeyentry.cpp49
-rw-r--r--noncore/apps/tableviewer/ui/filterkeyentry.cpp42
-rw-r--r--noncore/apps/tableviewer/ui/tvfilterview.cpp55
7 files changed, 234 insertions, 222 deletions
diff --git a/noncore/apps/tableviewer/browsekeyentry.cpp b/noncore/apps/tableviewer/browsekeyentry.cpp
index 04e7902..bab9af6 100644
--- a/noncore/apps/tableviewer/browsekeyentry.cpp
+++ b/noncore/apps/tableviewer/browsekeyentry.cpp
@@ -16,9 +16,14 @@
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#include "browsekeyentry.h" 20#include "browsekeyentry.h"
21 21
22/* OPIE */
23#include <opie2/odebug.h>
24using namespace Opie::Core;
25
26/* QT */
22#include <qtoolbutton.h> 27#include <qtoolbutton.h>
23#include <qwidgetstack.h> 28#include <qwidgetstack.h>
24#include <qlayout.h> 29#include <qlayout.h>
@@ -28,9 +33,6 @@
28#include <qhbox.h> 33#include <qhbox.h>
29#include <qdatetime.h> 34#include <qdatetime.h>
30 35
31//#include <iostream.h>
32#include <qheader.h>
33// For qWarning(const char *)
34 36
35/*! 37/*!
36 \class TVBrowseKeyEntry 38 \class TVBrowseKeyEntry
@@ -42,7 +44,7 @@
42*/ 44*/
43 45
44/*! 46/*!
45 Constructs the widget 47 Constructs the widget
46*/ 48*/
47TVBrowseKeyEntry::TVBrowseKeyEntry(QWidget *parent, const char *name, WFlags f) 49TVBrowseKeyEntry::TVBrowseKeyEntry(QWidget *parent, const char *name, WFlags f)
48 : QWidget(parent, name, f) 50 : QWidget(parent, name, f)
@@ -80,37 +82,37 @@ TVBrowseKeyEntry::TVBrowseKeyEntry(QWidget *parent, const char *name, WFlags f)
80 ws->addWidget(dateKey, stack_elem++); 82 ws->addWidget(dateKey, stack_elem++);
81 83
82 ws->raiseWidget(0); 84 ws->raiseWidget(0);
83 85
84 // TODO connect slots and signals.... 86 // TODO connect slots and signals....
85 connect(changeKeyButton, SIGNAL(clicked()), 87 connect(changeKeyButton, SIGNAL(clicked()),
86 this, SLOT(changeKeyMenuSlot())); 88 this, SLOT(changeKeyMenuSlot()));
87 connect(resetButton, SIGNAL(clicked()), 89 connect(resetButton, SIGNAL(clicked()),
88 this, SLOT(resetKeySlot())); 90 this, SLOT(resetKeySlot()));
89 91
90 connect(textKey, SIGNAL(textChanged(const QString&)), 92 connect(textKey, SIGNAL(textChanged(const QString&)),
91 this, SLOT(searchOnText())); 93 this, SLOT(searchOnText()));
92 94
93 connect(dayKey, SIGNAL(textChanged(const QString&)), 95 connect(dayKey, SIGNAL(textChanged(const QString&)),
94 this, SLOT(searchOnText())); 96 this, SLOT(searchOnText()));
95 connect(monthKey, SIGNAL(textChanged(const QString&)), 97 connect(monthKey, SIGNAL(textChanged(const QString&)),
96 this, SLOT(searchOnText())); 98 this, SLOT(searchOnText()));
97 connect(yearKey, SIGNAL(textChanged(const QString&)), 99 connect(yearKey, SIGNAL(textChanged(const QString&)),
98 this, SLOT(searchOnText())); 100 this, SLOT(searchOnText()));
99 101
100 connect(secondKey, SIGNAL(textChanged(const QString&)), 102 connect(secondKey, SIGNAL(textChanged(const QString&)),
101 this, SLOT(searchOnText())); 103 this, SLOT(searchOnText()));
102 connect(minuteKey, SIGNAL(textChanged(const QString&)), 104 connect(minuteKey, SIGNAL(textChanged(const QString&)),
103 this, SLOT(searchOnText())); 105 this, SLOT(searchOnText()));
104 connect(hourKey, SIGNAL(textChanged(const QString&)), 106 connect(hourKey, SIGNAL(textChanged(const QString&)),
105 this, SLOT(searchOnText())); 107 this, SLOT(searchOnText()));
106 108
107 h_layout->addWidget(ws); 109 h_layout->addWidget(ws);
108 h_layout->addWidget(resetButton); 110 h_layout->addWidget(resetButton);
109 h_layout->addWidget(changeKeyButton); 111 h_layout->addWidget(changeKeyButton);
110} 112}
111 113
112/*! 114/*!
113 Destructs the widget 115 Destructs the widget
114*/ 116*/
115TVBrowseKeyEntry::~TVBrowseKeyEntry() 117TVBrowseKeyEntry::~TVBrowseKeyEntry()
116{ 118{
@@ -136,8 +138,8 @@ void TVBrowseKeyEntry::changeKeySlot(int id_param)
136 case kt_date: 138 case kt_date:
137 ws->raiseWidget(2); 139 ws->raiseWidget(2);
138 break; 140 break;
139 default: 141 default:
140 return; 142 return;
141 } 143 }
142} 144}
143 145
@@ -146,7 +148,7 @@ void TVBrowseKeyEntry::changeKeySlot(int id_param)
146*/ 148*/
147void TVBrowseKeyEntry::changeKeyMenuSlot() 149void TVBrowseKeyEntry::changeKeyMenuSlot()
148{ 150{
149 if(ts) 151 if(ts)
150 keyMenu->exec(changeKeyButton->mapToGlobal(QPoint(0,0))); 152 keyMenu->exec(changeKeyButton->mapToGlobal(QPoint(0,0)));
151} 153}
152/*! 154/*!
@@ -165,15 +167,15 @@ void TVBrowseKeyEntry::setTableState(TableState *t) {
165 keyMenu->clear(); 167 keyMenu->clear();
166 168
167 for (i = 0; i < t->kRep->getNumFields(); i++) { 169 for (i = 0; i < t->kRep->getNumFields(); i++) {
168 keyMenu->insertItem(ts->kRep->getKeyName(i), this, 170 keyMenu->insertItem(ts->kRep->getKeyName(i), this,
169 SLOT(changeKeySlot(int)), 0, i); 171 SLOT(changeKeySlot(int)), 0, i);
170 keyMenu->setItemParameter(i, i); 172 keyMenu->setItemParameter(i, i);
171 } 173 }
172} 174}
173 175
174/*! 176/*!
175 Searches on the current value of the key entry provided that the 177 Searches on the current value of the key entry provided that the
176 current key is of type text WARNING, TODO fix memory leaks 178 current key is of type text WARNING, TODO fix memory leaks
177*/ 179*/
178void TVBrowseKeyEntry::searchOnText() 180void TVBrowseKeyEntry::searchOnText()
179{ 181{
@@ -228,8 +230,7 @@ void TVBrowseKeyEntry::searchOnText()
228 break; 230 break;
229 } 231 }
230 default: 232 default:
231 qWarning("TVBrowseKeyEntry::searchOnText() " 233 owarn << "TVBrowseKeyEntry::searchOnText() cannot work out data type" << oendl;
232 "cannot work out data type");
233 return; 234 return;
234 } 235 }
235 emit searchOnKey(ts->current_column, sendkey); 236 emit searchOnKey(ts->current_column, sendkey);
@@ -239,4 +240,4 @@ void TVBrowseKeyEntry::searchOnText()
239 240
240 This signal indicates that a search on key index currentKeyId should be 241 This signal indicates that a search on key index currentKeyId should be
241 done searching for the value v. 242 done searching for the value v.
242*/ 243*/
diff --git a/noncore/apps/tableviewer/db/common.cpp b/noncore/apps/tableviewer/db/common.cpp
index b58af85..c35dbea 100644
--- a/noncore/apps/tableviewer/db/common.cpp
+++ b/noncore/apps/tableviewer/db/common.cpp
@@ -16,8 +16,8 @@
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#include "common.h" 20#include "common.h"
21#include "datacache.h" 21#include "datacache.h"
22 22
23/* OPIE */ 23/* OPIE */
@@ -88,13 +88,13 @@ int QStringVector::compareItems(Item a, Item b)
88{ 88{
89 QString *qa = (QString *)a; 89 QString *qa = (QString *)a;
90 QString *qb = (QString *)b; 90 QString *qb = (QString *)b;
91 91
92 return QString::compare(*qa, *qb); 92 return QString::compare(*qa, *qb);
93} 93}
94 94
95/*! 95/*!
96 \class TVVariant 96 \class TVVariant
97 A way of abstracting void * and keeping information on 97 A way of abstracting void * and keeping information on
98 the keytypes and behaviours in one place 98 the keytypes and behaviours in one place
99*/ 99*/
100 100
@@ -320,7 +320,7 @@ void TVVariant::load(QDataStream &s )
320 } 320 }
321 break; 321 break;
322 default: 322 default:
323 ofatal << "Unrecognized data type" << oendl; 323 ofatal << "Unrecognized data type" << oendl;
324 } 324 }
325} 325}
326 326
@@ -382,7 +382,7 @@ const QString TVVariant::toString() const
382 return ((QDate*)d->value.ptr)->toString(); 382 return ((QDate*)d->value.ptr)->toString();
383 case Time: 383 case Time:
384 return ((QTime*)d->value.ptr)->toString(); 384 return ((QTime*)d->value.ptr)->toString();
385 case Int: 385 case Int:
386 return QString::number(d->value.i); 386 return QString::number(d->value.i);
387 case Invalid: 387 case Invalid:
388 default: 388 default:
@@ -424,7 +424,7 @@ const QDate TVVariant::toDate() const
424 return QDate(); 424 return QDate();
425 return QDate(year, month, day); 425 return QDate(year, month, day);
426 } 426 }
427 427
428 428
429 return QDate(); 429 return QDate();
430} 430}
@@ -433,7 +433,7 @@ const QTime TVVariant::toTime() const
433{ 433{
434 if(d->typ == Time) 434 if(d->typ == Time)
435 return *((QTime *)d->value.ptr); 435 return *((QTime *)d->value.ptr);
436 436
437 if(d->typ == String) { 437 if(d->typ == String) {
438 QString q = toString(); 438 QString q = toString();
439 int hour = parseNextNumber(&q); 439 int hour = parseNextNumber(&q);
@@ -454,7 +454,7 @@ const QTime TVVariant::toTime() const
454 else \ 454 else \
455 detach(); \ 455 detach(); \
456 return *((Q##f*)d->value.ptr); } 456 return *((Q##f*)d->value.ptr); }
457 457
458TV_VARIANT_AS(String) 458TV_VARIANT_AS(String)
459TV_VARIANT_AS(Date) 459TV_VARIANT_AS(Date)
460TV_VARIANT_AS(Time) 460TV_VARIANT_AS(Time)
@@ -560,7 +560,7 @@ bool TVVariant::closer(TVVariant n, TVVariant o)
560{ 560{
561 /* Nothing is close to an invalid, so nothing can be closer */ 561 /* Nothing is close to an invalid, so nothing can be closer */
562 if(d->typ == Invalid) 562 if(d->typ == Invalid)
563 return FALSE; 563 return FALSE;
564 564
565 /* can't be closer if of different type */ 565 /* can't be closer if of different type */
566 if(n.type() != type()) 566 if(n.type() != type())
@@ -572,7 +572,7 @@ bool TVVariant::closer(TVVariant n, TVVariant o)
572 572
573 switch(type()){ 573 switch(type()){
574 case String: { 574 case String: {
575 /* case for strings is close is a substring.. closer is 575 /* case for strings is close is a substring.. closer is
576 * earlier alphabetically */ 576 * earlier alphabetically */
577 QString qs1 = n.toString().lower(); 577 QString qs1 = n.toString().lower();
578 QString qs2 = o.toString().lower(); 578 QString qs2 = o.toString().lower();
@@ -582,7 +582,7 @@ bool TVVariant::closer(TVVariant n, TVVariant o)
582 return FALSE; 582 return FALSE;
583 583
584 /* contains sub-str, if later than is not closer */ 584 /* contains sub-str, if later than is not closer */
585 if(QString::compare(qs1, qs2) > 0) 585 if(QString::compare(qs1, qs2) > 0)
586 return FALSE; 586 return FALSE;
587 return TRUE; 587 return TRUE;
588 } 588 }
@@ -593,13 +593,13 @@ bool TVVariant::closer(TVVariant n, TVVariant o)
593 int iv = toInt(); 593 int iv = toInt();
594 594
595 int diff1 = (i1 - iv); 595 int diff1 = (i1 - iv);
596 if (diff1 < 0) 596 if (diff1 < 0)
597 diff1 = -diff1; 597 diff1 = -diff1;
598 int diff2 = (i2 - iv); 598 int diff2 = (i2 - iv);
599 if (diff2 < 0) 599 if (diff2 < 0)
600 diff2 = -diff2; 600 diff2 = -diff2;
601 601
602 if (diff1 < diff2) 602 if (diff1 < diff2)
603 return TRUE; 603 return TRUE;
604 return FALSE; 604 return FALSE;
605 } 605 }
@@ -610,10 +610,10 @@ bool TVVariant::closer(TVVariant n, TVVariant o)
610 610
611 /* definition of closer is the least difference in days */ 611 /* definition of closer is the least difference in days */
612 int diff1 = i1.daysTo(iv); 612 int diff1 = i1.daysTo(iv);
613 if (diff1 < 0) 613 if (diff1 < 0)
614 diff1 = -diff1; 614 diff1 = -diff1;
615 int diff2 = i2.daysTo(iv); 615 int diff2 = i2.daysTo(iv);
616 if (diff2 < 0) 616 if (diff2 < 0)
617 diff2 = -diff2; 617 diff2 = -diff2;
618 618
619 if (diff1 < diff2) 619 if (diff1 < diff2)
@@ -627,10 +627,10 @@ bool TVVariant::closer(TVVariant n, TVVariant o)
627 627
628 /* definition of closer is the least difference in days */ 628 /* definition of closer is the least difference in days */
629 int diff1 = i1.msecsTo(iv); 629 int diff1 = i1.msecsTo(iv);
630 if (diff1 < 0) 630 if (diff1 < 0)
631 diff1 = -diff1; 631 diff1 = -diff1;
632 int diff2 = i2.msecsTo(iv); 632 int diff2 = i2.msecsTo(iv);
633 if (diff2 < 0) 633 if (diff2 < 0)
634 diff2 = -diff2; 634 diff2 = -diff2;
635 if (diff1 < diff2) 635 if (diff1 < diff2)
636 return TRUE; 636 return TRUE;
@@ -649,7 +649,7 @@ bool TVVariant::close(TVVariant n)
649{ 649{
650 /* Nothing is close to an invalid, so nothing can be closer */ 650 /* Nothing is close to an invalid, so nothing can be closer */
651 if(type() == Invalid) 651 if(type() == Invalid)
652 return FALSE; 652 return FALSE;
653 653
654 /* can't be close if of different type */ 654 /* can't be close if of different type */
655 if(n.type() != type()) 655 if(n.type() != type())
@@ -657,7 +657,7 @@ bool TVVariant::close(TVVariant n)
657 657
658 switch(type()){ 658 switch(type()){
659 case String: { 659 case String: {
660 /* case for strings is close is a substring.. closer is 660 /* case for strings is close is a substring.. closer is
661 * earlier alphabetically */ 661 * earlier alphabetically */
662 QString qs1 = n.toString().lower(); 662 QString qs1 = n.toString().lower();
663 QString qsv = toString().lower(); 663 QString qsv = toString().lower();
@@ -666,7 +666,7 @@ bool TVVariant::close(TVVariant n)
666 return FALSE; 666 return FALSE;
667 return TRUE; 667 return TRUE;
668 } 668 }
669 case Int: 669 case Int:
670 case Date: 670 case Date:
671 case Time: 671 case Time:
672 return TRUE; 672 return TRUE;
@@ -681,14 +681,14 @@ bool TVVariant::close(TVVariant n)
681/*! 681/*!
682 \class Key 682 \class Key
683 \brief document me! 683 \brief document me!
684 684
685 document me! 685 document me!
686*/ 686*/
687 687
688Key::Key() : kname(), kexample(), kflags(0) { } 688Key::Key() : kname(), kexample(), kflags(0) { }
689 689
690Key::Key(QString name, TVVariant example, int flags) : 690Key::Key(QString name, TVVariant example, int flags) :
691 kname(name), kexample(example), kflags(flags) { } 691 kname(name), kexample(example), kflags(flags) { }
692 692
693Key::Key(const Key &other) 693Key::Key(const Key &other)
694{ 694{
@@ -697,7 +697,7 @@ Key::Key(const Key &other)
697 kflags = other.kflags; 697 kflags = other.kflags;
698} 698}
699 699
700Key& Key::operator=(const Key& key) 700Key& Key::operator=(const Key& key)
701{ 701{
702 kname = key.kname; 702 kname = key.kname;
703 kexample = key.kexample; 703 kexample = key.kexample;
@@ -777,13 +777,13 @@ void Key::setNewFlag(bool v)
777/*! 777/*!
778 Constructs a KeyList 778 Constructs a KeyList
779*/ 779*/
780KeyList::KeyList() : QIntDict<Key>(20) 780KeyList::KeyList() : QIntDict<Key>(20)
781{ 781{
782 setAutoDelete(TRUE); 782 setAutoDelete(TRUE);
783} 783}
784 784
785/* Should be deep copy, but isn't */ 785/* Should be deep copy, but isn't */
786KeyList::KeyList(const KeyList &k) : QIntDict<Key>(k) 786KeyList::KeyList(const KeyList &k) : QIntDict<Key>(k)
787{ 787{
788 KeyListIterator it(k); 788 KeyListIterator it(k);
789 while(it.current()) { 789 while(it.current()) {
@@ -822,7 +822,7 @@ bool KeyList::operator!=(const KeyList &other)
822/*! 822/*!
823 Returns the number of keys stored in the KeyList 823 Returns the number of keys stored in the KeyList
824*/ 824*/
825int KeyList::getNumFields() const 825int KeyList::getNumFields() const
826{ 826{
827 return count(); 827 return count();
828} 828}
@@ -847,27 +847,26 @@ int KeyList::addKey(QString name, TVVariant::KeyType type)
847 /* generate a valid type for the example? */ 847 /* generate a valid type for the example? */
848 TVVariant e = TVVariant("0"); 848 TVVariant e = TVVariant("0");
849 switch(type) { 849 switch(type) {
850 case TVVariant::String: 850 case TVVariant::String:
851 return addKey(name, TVVariant("<undefined>").asString()); 851 return addKey(name, TVVariant("<undefined>").asString());
852 break; 852 break;
853 case TVVariant::Date: 853 case TVVariant::Date:
854 return addKey(name, TVVariant(QDate::currentDate()).asDate()); 854 return addKey(name, TVVariant(QDate::currentDate()).asDate());
855 break; 855 break;
856 case TVVariant::Time: 856 case TVVariant::Time:
857 return addKey(name, TVVariant(QTime(0,0,0)).toTime()); 857 return addKey(name, TVVariant(QTime(0,0,0)).toTime());
858 break; 858 break;
859 case TVVariant::Int: 859 case TVVariant::Int:
860 return addKey(name, TVVariant(0).toInt()); 860 return addKey(name, TVVariant(0).toInt());
861 break; 861 break;
862 default: 862 default:
863 qWarning(QObject::tr("KeyList::addKey() Cannot make default " 863 owarn << "KeyList::addKey() Cannot make default value for type " << type << ", Key not added." << oendl;
864 "value for type %1, Key not added.").arg(type));
865 break; 864 break;
866 } 865 }
867 return -1; 866 return -1;
868} 867}
869 868
870void KeyList::setKeyFlags(int i, int flag) 869void KeyList::setKeyFlags(int i, int flag)
871{ 870{
872 if(find(i)) 871 if(find(i))
873 find(i)->setFlags(flag); 872 find(i)->setFlags(flag);
@@ -880,28 +879,28 @@ int KeyList::getKeyFlags(int i) const
880 return 0; 879 return 0;
881} 880}
882 881
883bool KeyList::checkNewFlag(int i) const 882bool KeyList::checkNewFlag(int i) const
884{ 883{
885 if (find(i)) 884 if (find(i))
886 return find(i)->newFlag(); 885 return find(i)->newFlag();
887 return false; 886 return false;
888} 887}
889 888
890void KeyList::setNewFlag(int i, bool f) 889void KeyList::setNewFlag(int i, bool f)
891{ 890{
892 if(!find(i)) 891 if(!find(i))
893 return; 892 return;
894 find(i)->setNewFlag(f); 893 find(i)->setNewFlag(f);
895} 894}
896 895
897bool KeyList::checkDeleteFlag(int i) const 896bool KeyList::checkDeleteFlag(int i) const
898{ 897{
899 if (find(i)) 898 if (find(i))
900 return find(i)->delFlag(); 899 return find(i)->delFlag();
901 return false; 900 return false;
902} 901}
903 902
904void KeyList::setDeleteFlag(int i, bool f) 903void KeyList::setDeleteFlag(int i, bool f)
905{ 904{
906 if(!find(i)) 905 if(!find(i))
907 return; 906 return;
@@ -918,7 +917,7 @@ QString KeyList::getKeyName(int i) const
918 return QString(); 917 return QString();
919} 918}
920 919
921void KeyList::setKeyName(int i, const QString &n) 920void KeyList::setKeyName(int i, const QString &n)
922{ 921{
923 if(find(i)) 922 if(find(i))
924 find(i)->setName(n); 923 find(i)->setName(n);
@@ -934,7 +933,7 @@ TVVariant::KeyType KeyList::getKeyType(int i) const
934 return TVVariant::Invalid; 933 return TVVariant::Invalid;
935} 934}
936 935
937void KeyList::setKeyType(int i, TVVariant::KeyType t) 936void KeyList::setKeyType(int i, TVVariant::KeyType t)
938{ 937{
939 if(!find(i)) 938 if(!find(i))
940 return; 939 return;
@@ -1040,9 +1039,9 @@ QDataStream &operator>>( QDataStream &s, KeyList &k)
1040 1039
1041 1040
1042/*! 1041/*!
1043 Constructs a DataElem. This function needs a container because the 1042 Constructs a DataElem. This function needs a container because the
1044 size, types of keys and primary key are all defined by the containing 1043 size, types of keys and primary key are all defined by the containing
1045 database 1044 database
1046*/ 1045*/
1047DataElem::DataElem(DBStore *c) : values(20) 1046DataElem::DataElem(DBStore *c) : values(20)
1048{ 1047{
@@ -1086,7 +1085,7 @@ QDataStream &operator>>( QDataStream &s, DataElem &d)
1086 1085
1087 s >> size; /* redundent data but makes streaming easier */ 1086 s >> size; /* redundent data but makes streaming easier */
1088 if (size != d.getNumFields()) { 1087 if (size != d.getNumFields()) {
1089 owarn << "DataSize mis-match" << oendl; 1088 owarn << "DataSize mis-match" << oendl;
1090 return s; /* sanity check failed.. don't load */ 1089 return s; /* sanity check failed.. don't load */
1091 } 1090 }
1092 1091
@@ -1109,37 +1108,37 @@ KeyList DataElem::getKeys() const
1109 return *(contained->getKeys()); 1108 return *(contained->getKeys());
1110} 1109}
1111 1110
1112/*! 1111/*!
1113 This function determines whether field index i of the element has been 1112 This function determines whether field index i of the element has been
1114 set yet. 1113 set yet.
1115 1114
1116 \return A boolean value that is TRUE if the specfied field of this 1115 \return A boolean value that is TRUE if the specfied field of this
1117 element has been set and FALSE if the field has not yet been set 1116 element has been set and FALSE if the field has not yet been set
1118*/ 1117*/
1119bool DataElem::hasValidValue(int i) const 1118bool DataElem::hasValidValue(int i) const
1120{ 1119{
1121 if(!values.find(i)) 1120 if(!values.find(i))
1122 return FALSE; 1121 return FALSE;
1123 if(!contained->getKeys()->validIndex(i)) 1122 if(!contained->getKeys()->validIndex(i))
1124 return FALSE; 1123 return FALSE;
1125 return values.find(i)->isValid(); 1124 return values.find(i)->isValid();
1126} 1125}
1127 1126
1128/*! 1127/*!
1129 This function determines whether field name qs of the element has been 1128 This function determines whether field name qs of the element has been
1130 set yet. 1129 set yet.
1131 1130
1132 \return A boolean value that is TRUE if the specfied field of this 1131 \return A boolean value that is TRUE if the specfied field of this
1133 element has been set and FALSE if the field has not yet been set 1132 element has been set and FALSE if the field has not yet been set
1134*/ 1133*/
1135bool DataElem::hasValidValue(QString qs) const 1134bool DataElem::hasValidValue(QString qs) const
1136{ 1135{
1137 int i = contained->getKeyIndex(qs); 1136 int i = contained->getKeyIndex(qs);
1138 return hasValidValue(i); 1137 return hasValidValue(i);
1139} 1138}
1140 1139
1141/*! returns the type of the field specified by index i */ 1140/*! returns the type of the field specified by index i */
1142TVVariant::KeyType DataElem::getFieldType(int i) const 1141TVVariant::KeyType DataElem::getFieldType(int i) const
1143{ 1142{
1144 return contained->getKeyType(i); 1143 return contained->getKeyType(i);
1145} 1144}
@@ -1151,9 +1150,9 @@ TVVariant::KeyType DataElem::getFieldType(QString qs) const
1151 return contained->getKeyType(i); 1150 return contained->getKeyType(i);
1152} 1151}
1153 1152
1154/*! 1153/*!
1155 returns a pointer to the data stored in field index i for this 1154 returns a pointer to the data stored in field index i for this
1156 data element, (value may not be valid) 1155 data element, (value may not be valid)
1157*/ 1156*/
1158TVVariant DataElem::getField(int i) const 1157TVVariant DataElem::getField(int i) const
1159{ 1158{
@@ -1162,9 +1161,9 @@ TVVariant DataElem::getField(int i) const
1162 return TVVariant(); 1161 return TVVariant();
1163} 1162}
1164 1163
1165/*! 1164/*!
1166 returns a pointer to the data stored in field name qs for this 1165 returns a pointer to the data stored in field name qs for this
1167 data element, (value may not be valid) 1166 data element, (value may not be valid)
1168*/ 1167*/
1169TVVariant DataElem::getField(QString qs) const 1168TVVariant DataElem::getField(QString qs) const
1170{ 1169{
@@ -1179,7 +1178,7 @@ TVVariant DataElem::getField(QString qs) const
1179 \param i index of the field to set 1178 \param i index of the field to set
1180 \param q a string that can be parsed to get the value to be set 1179 \param q a string that can be parsed to get the value to be set
1181*/ 1180*/
1182void DataElem::setField(int i, QString q) 1181void DataElem::setField(int i, QString q)
1183{ 1182{
1184 /* from the type of the field, parse q and store */ 1183 /* from the type of the field, parse q and store */
1185 TVVariant::KeyType kt = contained->getKeyType(i); 1184 TVVariant::KeyType kt = contained->getKeyType(i);
@@ -1208,9 +1207,7 @@ void DataElem::setField(int i, QString q)
1208 return; 1207 return;
1209 } 1208 }
1210 default: 1209 default:
1211 qWarning( 1210 owarn << "DataElem::setField(" << i << ", " << q << ") No valid type found" << oendl;
1212 QObject::tr("DataElem::setField(%1, %2) No valid type found").arg(i).arg(q)
1213 );
1214 } 1211 }
1215} 1212}
1216 1213
@@ -1219,9 +1216,9 @@ void DataElem::setField(int i, QString q)
1219 value. 1216 value.
1220 1217
1221 \param i index of the field to set 1218 \param i index of the field to set
1222 \param value a pointer to the (already allocated) value to set 1219 \param value a pointer to the (already allocated) value to set
1223*/ 1220*/
1224void DataElem::setField(int i, TVVariant value) 1221void DataElem::setField(int i, TVVariant value)
1225{ 1222{
1226 if (value.isValid()) { 1223 if (value.isValid()) {
1227 values.remove(i); 1224 values.remove(i);
@@ -1236,7 +1233,7 @@ void DataElem::setField(int i, TVVariant value)
1236 \param qs name of the field to set 1233 \param qs name of the field to set
1237 \param q a string that can be parsed to get the value to be set 1234 \param q a string that can be parsed to get the value to be set
1238*/ 1235*/
1239void DataElem::setField(QString qs, QString q) 1236void DataElem::setField(QString qs, QString q)
1240{ 1237{
1241 /* from the type of the field, parse q and store */ 1238 /* from the type of the field, parse q and store */
1242 int i = contained->getKeyIndex(qs); 1239 int i = contained->getKeyIndex(qs);
@@ -1248,7 +1245,7 @@ void DataElem::setField(QString qs, QString q)
1248 value. 1245 value.
1249 1246
1250 \param qs name of the field to set 1247 \param qs name of the field to set
1251 \param value a pointer to the (already allocated) value to set 1248 \param value a pointer to the (already allocated) value to set
1252*/ 1249*/
1253void DataElem::setField(QString qs, TVVariant value) 1250void DataElem::setField(QString qs, TVVariant value)
1254{ 1251{
@@ -1267,7 +1264,7 @@ void DataElem::unsetField(QString qs)
1267} 1264}
1268 1265
1269/*! 1266/*!
1270 Converts the data element to a Rich Text QString 1267 Converts the data element to a Rich Text QString
1271*/ 1268*/
1272QString DataElem::toQString() const 1269QString DataElem::toQString() const
1273{ 1270{
@@ -1290,7 +1287,7 @@ QString DataElem::toQString() const
1290} 1287}
1291 1288
1292/*! formats individual fields to strings so can be displayed */ 1289/*! formats individual fields to strings so can be displayed */
1293QString DataElem::toQString(int i) const 1290QString DataElem::toQString(int i) const
1294{ 1291{
1295 if(hasValidValue(i)) { 1292 if(hasValidValue(i)) {
1296 return getField(i).toString(); 1293 return getField(i).toString();
@@ -1298,7 +1295,7 @@ QString DataElem::toQString(int i) const
1298 return ""; 1295 return "";
1299} 1296}
1300/*! formats individual fields to strings so can be sorted by QListView */ 1297/*! formats individual fields to strings so can be sorted by QListView */
1301QString DataElem::toSortableQString(int i) const 1298QString DataElem::toSortableQString(int i) const
1302{ 1299{
1303 QString scratch = ""; 1300 QString scratch = "";
1304 if(hasValidValue(i)) { 1301 if(hasValidValue(i)) {
@@ -1313,13 +1310,13 @@ QString DataElem::toSortableQString(int i) const
1313 } 1310 }
1314 case TVVariant::Date: { 1311 case TVVariant::Date: {
1315 static QDate epochD(1800, 1, 1); 1312 static QDate epochD(1800, 1, 1);
1316 scratch.sprintf("%08d", 1313 scratch.sprintf("%08d",
1317 epochD.daysTo(getField(i).toDate())); 1314 epochD.daysTo(getField(i).toDate()));
1318 break; 1315 break;
1319 } 1316 }
1320 case TVVariant::Time: { 1317 case TVVariant::Time: {
1321 static QTime epochT(0, 0, 0); 1318 static QTime epochT(0, 0, 0);
1322 scratch.sprintf("%08d", 1319 scratch.sprintf("%08d",
1323 epochT.msecsTo(getField(i).toTime())); 1320 epochT.msecsTo(getField(i).toTime()));
1324 break; 1321 break;
1325 } 1322 }
@@ -1380,12 +1377,12 @@ bool DataElem::contains(int i, TVVariant v) const
1380 /* meaningless for ints */ 1377 /* meaningless for ints */
1381 /* meaningless for time */ 1378 /* meaningless for time */
1382 /* meaningless for dates */ 1379 /* meaningless for dates */
1383 case TVVariant::Int: 1380 case TVVariant::Int:
1384 case TVVariant::Time: 1381 case TVVariant::Time:
1385 case TVVariant::Date: 1382 case TVVariant::Date:
1386 break; 1383 break;
1387 default: 1384 default:
1388 owarn << "Tried to compare unknown data type" << oendl; 1385 owarn << "Tried to compare unknown data type" << oendl;
1389 } 1386 }
1390 return FALSE; 1387 return FALSE;
1391} 1388}
@@ -1406,12 +1403,12 @@ bool DataElem::startsWith(int i, TVVariant v) const
1406 /* meaningless for ints */ 1403 /* meaningless for ints */
1407 /* meaningless for time */ 1404 /* meaningless for time */
1408 /* meaningless for dates */ 1405 /* meaningless for dates */
1409 case TVVariant::Int: 1406 case TVVariant::Int:
1410 case TVVariant::Time: 1407 case TVVariant::Time:
1411 case TVVariant::Date: 1408 case TVVariant::Date:
1412 return FALSE; 1409 return FALSE;
1413 default: 1410 default:
1414 owarn << "Tried to compare unknown data type" << oendl; 1411 owarn << "Tried to compare unknown data type" << oendl;
1415 } 1412 }
1416 return FALSE; 1413 return FALSE;
1417} 1414}
@@ -1432,12 +1429,12 @@ bool DataElem::endsWith(int i, TVVariant v) const
1432 /* meaningless for ints */ 1429 /* meaningless for ints */
1433 /* meaningless for time */ 1430 /* meaningless for time */
1434 /* meaningless for dates */ 1431 /* meaningless for dates */
1435 case TVVariant::Int: 1432 case TVVariant::Int:
1436 case TVVariant::Time: 1433 case TVVariant::Time:
1437 case TVVariant::Date: 1434 case TVVariant::Date:
1438 return FALSE; 1435 return FALSE;
1439 default: 1436 default:
1440 owarn << "Tried to compare unknown data type" << oendl; 1437 owarn << "Tried to compare unknown data type" << oendl;
1441 } 1438 }
1442 return FALSE; 1439 return FALSE;
1443} 1440}
@@ -1446,9 +1443,9 @@ bool DataElem::endsWith(int i, TVVariant v) const
1446 Determins which of the first to parameters are closer to the third, target 1443 Determins which of the first to parameters are closer to the third, target
1447 parameter. 1444 parameter.
1448 1445
1449 \return 1446 \return
1450 <UL> 1447 <UL>
1451 <LI>TRUE if the first element is a closer match to the target than the 1448 <LI>TRUE if the first element is a closer match to the target than the
1452 second element</LI> 1449 second element</LI>
1453 <LI>FALSE if the first element is not a closer match to the target than 1450 <LI>FALSE if the first element is not a closer match to the target than
1454 the second element</LI> 1451 the second element</LI>
@@ -1456,7 +1453,7 @@ bool DataElem::endsWith(int i, TVVariant v) const
1456*/ 1453*/
1457bool DataElem::closer(DataElem*d1, DataElem *d2, TVVariant target, int column) 1454bool DataElem::closer(DataElem*d1, DataElem *d2, TVVariant target, int column)
1458{ 1455{
1459 int type; 1456 int type;
1460 1457
1461 if(!d1) return FALSE; 1458 if(!d1) return FALSE;
1462 1459
@@ -1469,10 +1466,10 @@ bool DataElem::closer(DataElem*d1, DataElem *d2, TVVariant target, int column)
1469 if(d2) { 1466 if(d2) {
1470 if (type != d2->getField(column).type()) { 1467 if (type != d2->getField(column).type()) {
1471 /* can't do compare */ 1468 /* can't do compare */
1472 owarn << "Tried to compare two incompatable types" << oendl; 1469 owarn << "Tried to compare two incompatable types" << oendl;
1473 return FALSE; 1470 return FALSE;
1474 } 1471 }
1475 return target.closer(d1->getField(column), d2->getField(column)); 1472 return target.closer(d1->getField(column), d2->getField(column));
1476 } 1473 }
1477 return target.close(d1->getField(column)); 1474 return target.close(d1->getField(column));
1478} 1475}
diff --git a/noncore/apps/tableviewer/db/datacache.cpp b/noncore/apps/tableviewer/db/datacache.cpp
index 6380e1b..de57961 100644
--- a/noncore/apps/tableviewer/db/datacache.cpp
+++ b/noncore/apps/tableviewer/db/datacache.cpp
@@ -16,7 +16,7 @@
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 * This file is used to load the xml files that represent the database. 21 * This file is used to load the xml files that represent the database.
22 * The main requirment for said file is each data entry must contain a key, 22 * The main requirment for said file is each data entry must contain a key,
@@ -63,10 +63,10 @@ DBStore::DBStore()
63 archive = 0; 63 archive = 0;
64} 64}
65 65
66//TODO 66//TODO
67/*! 67/*!
68 Reinitializes the table to empty (include a resize of the master table, 68 Reinitializes the table to empty (include a resize of the master table,
69 which should free some memory) 69 which should free some memory)
70*/ 70*/
71void DBStore::freeTable() 71void DBStore::freeTable()
72{ 72{
@@ -93,7 +93,7 @@ DBStore::~DBStore()
93} 93}
94 94
95/*! 95/*!
96 This function opens the given xml file, loads it and sets up the 96 This function opens the given xml file, loads it and sets up the
97 appropriate data structures. 97 appropriate data structures.
98 98
99 \param file_name A string representing the name of the file to be opened 99 \param file_name A string representing the name of the file to be opened
@@ -101,7 +101,7 @@ DBStore::~DBStore()
101*/ 101*/
102bool DBStore::openSource(QIODevice *inDev, const QString &source) { 102bool DBStore::openSource(QIODevice *inDev, const QString &source) {
103 103
104 /* first check if db is already open, if contains data.. then clear */ 104 /* first check if db is already open, if contains data.. then clear */
105 if(number_elems > 0) { 105 if(number_elems > 0) {
106 freeTable(); 106 freeTable();
107 } 107 }
@@ -109,23 +109,23 @@ bool DBStore::openSource(QIODevice *inDev, const QString &source) {
109 if (source == "text/x-xml-tableviewer") { 109 if (source == "text/x-xml-tableviewer") {
110 archive = new DBXml(this); 110 archive = new DBXml(this);
111 } else if (source == "text/csv") { 111 } else if (source == "text/csv") {
112 archive = new DBCsv(this); 112 archive = new DBCsv(this);
113 } else 113 } else
114 return false; 114 return false;
115 115
116 return (archive->openSource(inDev)); 116 return (archive->openSource(inDev));
117} 117}
118 118
119bool DBStore::saveSource(QIODevice *outDev, const QString &source) 119bool DBStore::saveSource(QIODevice *outDev, const QString &source)
120{ 120{
121 /* saving a new file */ 121 /* saving a new file */
122 if(!archive) { 122 if(!archive) {
123 if (source == "text/x-xml-tableviewer") { 123 if (source == "text/x-xml-tableviewer") {
124 archive = new DBXml(this); 124 archive = new DBXml(this);
125 } else if (source == "text/x-xml-tableviewer") { 125 } else if (source == "text/x-xml-tableviewer") {
126 archive = new DBCsv(this); 126 archive = new DBCsv(this);
127 } else 127 } else
128 return false; 128 return false;
129 } 129 }
130 130
131 /* changing file type */ 131 /* changing file type */
@@ -133,16 +133,16 @@ bool DBStore::saveSource(QIODevice *outDev, const QString &source)
133 delete archive; 133 delete archive;
134 if (source == "text/x-xml-tableviewer") { 134 if (source == "text/x-xml-tableviewer") {
135 archive = new DBXml(this); 135 archive = new DBXml(this);
136 } else if (source == "text/x-xml-tableviewer") { 136 } else if (source == "text/x-xml-tableviewer") {
137 archive = new DBCsv(this); 137 archive = new DBCsv(this);
138 } else 138 } else
139 return false; 139 return false;
140 } 140 }
141 141
142 return (archive->saveSource(outDev)); 142 return (archive->saveSource(outDev));
143} 143}
144 144
145/*! 145/*!
146 This function is used to add new elements to the database. If the database 146 This function is used to add new elements to the database. If the database
147 has already reached the maximum allowable size this function does not alter 147 has already reached the maximum allowable size this function does not alter
148 the database. 148 the database.
@@ -156,9 +156,9 @@ void DBStore::addItem(DataElem *delem)
156 156
157void DBStore::addItemInternal(DataElem *delem) 157void DBStore::addItemInternal(DataElem *delem)
158{ 158{
159 /* if already full, don't over fill, do a qWarning though */ 159 /* if already full, don't over fill, do a owarn though */
160 if (full) { 160 if (full) {
161 owarn << "Attempted to add items to already full table" << oendl; 161 owarn << "Attempted to add items to already full table" << oendl;
162 return; 162 return;
163 } 163 }
164 164
@@ -185,13 +185,13 @@ void DBStore::addItemInternal(DataElem *delem)
185void DBStore::removeItem(DataElem *r) 185void DBStore::removeItem(DataElem *r)
186{ 186{
187 int position = master_table.findRef(r); 187 int position = master_table.findRef(r);
188 if(position != -1) { 188 if(position != -1) {
189 /* there is at least one item, this is it */ 189 /* there is at least one item, this is it */
190 /* replace this with the last element, decrease the element count */ 190 /* replace this with the last element, decrease the element count */
191 master_table.insert(position, master_table.at(--number_elems)); 191 master_table.insert(position, master_table.at(--number_elems));
192 master_table.remove(number_elems); 192 master_table.remove(number_elems);
193 delete r; 193 delete r;
194 } 194 }
195} 195}
196 196
197/*! 197/*!
@@ -201,7 +201,7 @@ void DBStore::removeItem(DataElem *r)
201*/ 201*/
202void DBStore::setName(const QString &n) 202void DBStore::setName(const QString &n)
203{ 203{
204 name = n; 204 name = n;
205} 205}
206 206
207/*! 207/*!
@@ -211,11 +211,11 @@ void DBStore::setName(const QString &n)
211*/ 211*/
212QString DBStore::getName() 212QString DBStore::getName()
213{ 213{
214 return name; 214 return name;
215} 215}
216 216
217/*! 217/*!
218 Retrieves a pointer to the key representation of the database for 218 Retrieves a pointer to the key representation of the database for
219 other classes to use as reference. 219 other classes to use as reference.
220 220
221 \return a pointer to the databases key representaion 221 \return a pointer to the databases key representaion
@@ -235,7 +235,7 @@ void DBStore::setKeys(KeyList *k)
235} 235}
236 236
237/*! 237/*!
238 Sets the current element to the first element of the database 238 Sets the current element to the first element of the database
239*/ 239*/
240void DBStore::first() 240void DBStore::first()
241{ 241{
@@ -243,7 +243,7 @@ void DBStore::first()
243} 243}
244 244
245/*! 245/*!
246 Sets the current element to the last element of the database 246 Sets the current element to the last element of the database
247*/ 247*/
248void DBStore::last() 248void DBStore::last()
249{ 249{
@@ -257,7 +257,7 @@ void DBStore::last()
257bool DBStore::next() 257bool DBStore::next()
258{ 258{
259 unsigned int new_current_elem = current_elem + 1; 259 unsigned int new_current_elem = current_elem + 1;
260 if (current_elem < number_elems) 260 if (current_elem < number_elems)
261 /* was valid before inc (it is possible but unlikely that inc current 261 /* was valid before inc (it is possible but unlikely that inc current
262 elem will change it from invalid to valid) */ 262 elem will change it from invalid to valid) */
263 if (new_current_elem < number_elems) { 263 if (new_current_elem < number_elems) {
@@ -278,7 +278,7 @@ bool DBStore::previous()
278 if (current_elem < number_elems) 278 if (current_elem < number_elems)
279 /* was valid */ 279 /* was valid */
280 if (new_current_elem < number_elems) { 280 if (new_current_elem < number_elems) {
281 /* still is (if was 0, then now -1, but as is unsigned will wrap 281 /* still is (if was 0, then now -1, but as is unsigned will wrap
282 and hence be invalid */ 282 and hence be invalid */
283 current_elem = new_current_elem; 283 current_elem = new_current_elem;
284 return true; 284 return true;
@@ -288,14 +288,14 @@ bool DBStore::previous()
288 288
289/*! 289/*!
290 Returns the current data element in the database. Which element is current 290 Returns the current data element in the database. Which element is current
291 is affected by newly added items, findItem, next, previous, first and 291 is affected by newly added items, findItem, next, previous, first and
292 last functions 292 last functions
293 293
294 \return a pointer to the current data element 294 \return a pointer to the current data element
295*/ 295*/
296DataElem *DBStore::getCurrentData() 296DataElem *DBStore::getCurrentData()
297{ 297{
298 if (current_elem >= number_elems) 298 if (current_elem >= number_elems)
299 return NULL; 299 return NULL;
300 return master_table[current_elem]; 300 return master_table[current_elem];
301} 301}
diff --git a/noncore/apps/tableviewer/db/datacache.h b/noncore/apps/tableviewer/db/datacache.h
index c5dc637..e38050c 100644
--- a/noncore/apps/tableviewer/db/datacache.h
+++ b/noncore/apps/tableviewer/db/datacache.h
@@ -27,9 +27,15 @@
27#ifndef __DATACACHE_H__ 27#ifndef __DATACACHE_H__
28#define __DATACACHE_H__ 28#define __DATACACHE_H__
29 29
30#include "common.h"
31
32/* OPIE */
33#include <opie2/odebug.h>
34using namespace Opie::Core;
35
36/* QT */
30#include <qstring.h> 37#include <qstring.h>
31#include <qvector.h> 38#include <qvector.h>
32#include "common.h"
33 39
34class DBStore; 40class DBStore;
35 41
@@ -45,12 +51,12 @@ public:
45 } 51 }
46 52
47 virtual bool openSource(QIODevice *) { 53 virtual bool openSource(QIODevice *) {
48 qWarning("DBAccess::openSource not yet implemented"); 54 owarn << "DBAccess::openSource not yet implemented" << oendl;
49 return false; 55 return false;
50 } 56 }
51 57
52 virtual bool saveSource(QIODevice *) { 58 virtual bool saveSource(QIODevice *) {
53 qWarning("DBAccess::saveSource(QString) not yet implemented"); 59 owarn << "DBAccess::saveSource(QString) not yet implemented" << oendl;
54 return false; 60 return false;
55 } 61 }
56 62
@@ -70,7 +76,7 @@ public:
70 // Add an item 76 // Add an item
71 void addItem(DataElem *); 77 void addItem(DataElem *);
72 void addItemInternal(DataElem *); 78 void addItemInternal(DataElem *);
73 void removeItem(DataElem *); 79 void removeItem(DataElem *);
74 80
75 // Set the name of the database 81 // Set the name of the database
76 void setName(const QString &name); 82 void setName(const QString &name);
@@ -106,15 +112,15 @@ public:
106 void first(); 112 void first();
107 void last(); 113 void last();
108 114
109 bool next(); 115 bool next();
110 bool previous(); 116 bool previous();
111 117
112 DataElem* getCurrentData(); 118 DataElem* getCurrentData();
113 119
114private: 120private:
115 /* does the work of freeing used memory */ 121 /* does the work of freeing used memory */
116 void freeTable(); 122 void freeTable();
117 QString name; 123 QString name;
118 124
119 QVector<DataElem> master_table; 125 QVector<DataElem> master_table;
120 DBAccess *archive; 126 DBAccess *archive;
@@ -123,7 +129,7 @@ private:
123 129
124 unsigned int number_elems; 130 unsigned int number_elems;
125 unsigned int table_size; /* should always be a power of 2 */ 131 unsigned int table_size; /* should always be a power of 2 */
126 bool full; /* since because we are using an int for indexing there is 132 bool full; /* since because we are using an int for indexing there is
127 an upper limit on the number of items we can store. */ 133 an upper limit on the number of items we can store. */
128 unsigned int current_elem; 134 unsigned int current_elem;
129}; 135};
diff --git a/noncore/apps/tableviewer/ui/browsekeyentry.cpp b/noncore/apps/tableviewer/ui/browsekeyentry.cpp
index 42e24dd..6b78437 100644
--- a/noncore/apps/tableviewer/ui/browsekeyentry.cpp
+++ b/noncore/apps/tableviewer/ui/browsekeyentry.cpp
@@ -16,10 +16,13 @@
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#include "browsekeyentry.h" 20#include "browsekeyentry.h"
21#include "commonwidgets.h" 21#include "commonwidgets.h"
22 22
23#include <opie2/odebug.h>
24using namespace Opie::Core;
25
23#include <qtoolbutton.h> 26#include <qtoolbutton.h>
24#include <qwidgetstack.h> 27#include <qwidgetstack.h>
25#include <qlayout.h> 28#include <qlayout.h>
@@ -29,9 +32,6 @@
29#include <qhbox.h> 32#include <qhbox.h>
30#include <qdatetime.h> 33#include <qdatetime.h>
31 34
32#include <qheader.h>
33// For qWarning(const char *)
34
35/*! 35/*!
36 \class TVBrowseKeyEntry 36 \class TVBrowseKeyEntry
37 \brief a Widget used enter keys into the TVBrowseViewWidget 37 \brief a Widget used enter keys into the TVBrowseViewWidget
@@ -42,7 +42,7 @@
42*/ 42*/
43 43
44/*! 44/*!
45 Constructs the widget 45 Constructs the widget
46*/ 46*/
47TVBrowseKeyEntry::TVBrowseKeyEntry(QWidget *parent, const char *name, WFlags f) 47TVBrowseKeyEntry::TVBrowseKeyEntry(QWidget *parent, const char *name, WFlags f)
48 : QWidget(parent, name, f) 48 : QWidget(parent, name, f)
@@ -73,36 +73,36 @@ TVBrowseKeyEntry::TVBrowseKeyEntry(QWidget *parent, const char *name, WFlags f)
73 ws->addWidget(dateKey, TVVariant::Date); 73 ws->addWidget(dateKey, TVVariant::Date);
74 74
75 ws->raiseWidget(TVVariant::String); 75 ws->raiseWidget(TVVariant::String);
76 76
77 // TODO connect slots and signals.... 77 // TODO connect slots and signals....
78 connect(changeKeyButton, SIGNAL(clicked()), 78 connect(changeKeyButton, SIGNAL(clicked()),
79 this, SLOT(changeKeyMenuSlot())); 79 this, SLOT(changeKeyMenuSlot()));
80 80
81 connect(resetButton, SIGNAL(clicked()), 81 connect(resetButton, SIGNAL(clicked()),
82 textKey, SLOT(clear())); 82 textKey, SLOT(clear()));
83 connect(resetButton, SIGNAL(clicked()), 83 connect(resetButton, SIGNAL(clicked()),
84 intKey, SLOT(clear())); 84 intKey, SLOT(clear()));
85 connect(resetButton, SIGNAL(clicked()), 85 connect(resetButton, SIGNAL(clicked()),
86 dateKey, SLOT(clear())); 86 dateKey, SLOT(clear()));
87 connect(resetButton, SIGNAL(clicked()), 87 connect(resetButton, SIGNAL(clicked()),
88 timeKey, SLOT(clear())); 88 timeKey, SLOT(clear()));
89 89
90 h_layout->addWidget(ws); 90 h_layout->addWidget(ws);
91 h_layout->addWidget(resetButton); 91 h_layout->addWidget(resetButton);
92 h_layout->addWidget(changeKeyButton); 92 h_layout->addWidget(changeKeyButton);
93 93
94 connect(textKey, SIGNAL(textChanged(const QString&)), 94 connect(textKey, SIGNAL(textChanged(const QString&)),
95 this, SLOT(searchOnText())); 95 this, SLOT(searchOnText()));
96 connect(intKey, SIGNAL(valueChanged(int)), 96 connect(intKey, SIGNAL(valueChanged(int)),
97 this, SLOT(searchOnText())); 97 this, SLOT(searchOnText()));
98 connect(dateKey, SIGNAL(valueChanged(const QDate&)), 98 connect(dateKey, SIGNAL(valueChanged(const QDate&)),
99 this, SLOT(searchOnText())); 99 this, SLOT(searchOnText()));
100 connect(timeKey, SIGNAL(valueChanged(const QTime&)), 100 connect(timeKey, SIGNAL(valueChanged(const QTime&)),
101 this, SLOT(searchOnText())); 101 this, SLOT(searchOnText()));
102} 102}
103 103
104/*! 104/*!
105 Destructs the widget 105 Destructs the widget
106*/ 106*/
107TVBrowseKeyEntry::~TVBrowseKeyEntry() 107TVBrowseKeyEntry::~TVBrowseKeyEntry()
108{ 108{
@@ -126,7 +126,7 @@ void TVBrowseKeyEntry::changeKeySlot(int id_param)
126*/ 126*/
127void TVBrowseKeyEntry::changeKeyMenuSlot() 127void TVBrowseKeyEntry::changeKeyMenuSlot()
128{ 128{
129 if(ts) 129 if(ts)
130 keyMenu->exec(changeKeyButton->mapToGlobal(QPoint(0,0))); 130 keyMenu->exec(changeKeyButton->mapToGlobal(QPoint(0,0)));
131} 131}
132 132
@@ -146,7 +146,7 @@ void TVBrowseKeyEntry::rebuildKeys() {
146 KeyListIterator it(*ts->kRep); 146 KeyListIterator it(*ts->kRep);
147 147
148 for (i = 0; i < ts->kRep->getNumFields(); i++) { 148 for (i = 0; i < ts->kRep->getNumFields(); i++) {
149 keyMenu->insertItem(it.current()->name(), this, 149 keyMenu->insertItem(it.current()->name(), this,
150 SLOT(changeKeySlot(int)), 0, i); 150 SLOT(changeKeySlot(int)), 0, i);
151 keyMenu->setItemParameter(i, it.currentKey()); 151 keyMenu->setItemParameter(i, it.currentKey());
152 ++it; 152 ++it;
@@ -163,8 +163,8 @@ void TVBrowseKeyEntry::reset()
163 keyMenu->clear(); 163 keyMenu->clear();
164} 164}
165/*! 165/*!
166 Searches on the current value of the key entry provided that the 166 Searches on the current value of the key entry provided that the
167 current key is of type text WARNING, TODO fix memory leaks 167 current key is of type text WARNING, TODO fix memory leaks
168*/ 168*/
169void TVBrowseKeyEntry::searchOnText() 169void TVBrowseKeyEntry::searchOnText()
170{ 170{
@@ -189,11 +189,10 @@ void TVBrowseKeyEntry::searchOnText()
189 sendkey = TVVariant(QDate(dateKey->date())); 189 sendkey = TVVariant(QDate(dateKey->date()));
190 break; 190 break;
191 } 191 }
192 case TVVariant::Invalid: 192 case TVVariant::Invalid:
193 break; 193 break;
194 default: 194 default:
195 qWarning("TVBrowseKeyEntry::searchOnText() " 195 owarn << "TVBrowseKeyEntry::searchOnText() cannot work out data type" << oendl;
196 "cannot work out data type");
197 return; 196 return;
198 } 197 }
199 emit searchOnKey(ts->current_column, sendkey); 198 emit searchOnKey(ts->current_column, sendkey);
@@ -203,4 +202,4 @@ void TVBrowseKeyEntry::searchOnText()
203 202
204 This signal indicates that a search on key index currentKeyId should be 203 This signal indicates that a search on key index currentKeyId should be
205 done searching for the value v. 204 done searching for the value v.
206*/ 205*/
diff --git a/noncore/apps/tableviewer/ui/filterkeyentry.cpp b/noncore/apps/tableviewer/ui/filterkeyentry.cpp
index d108fbd..4d74d6b 100644
--- a/noncore/apps/tableviewer/ui/filterkeyentry.cpp
+++ b/noncore/apps/tableviewer/ui/filterkeyentry.cpp
@@ -16,10 +16,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#include "filterkeyentry.h" 20#include "filterkeyentry.h"
21#include "commonwidgets.h" 21#include "commonwidgets.h"
22 22
23/* OPIE */
24#include <opie2/odebug.h>
25using namespace Opie::Core;
26
27/* QT */
23#include <qwidgetstack.h> 28#include <qwidgetstack.h>
24#include <qcombobox.h> 29#include <qcombobox.h>
25#include <qlayout.h> 30#include <qlayout.h>
@@ -98,13 +103,13 @@ TVFilterKeyEntry::TVFilterKeyEntry(QWidget *parent, const char *name, WFlags f)
98 ws->addWidget(dateEntry, TVVariant::Date); 103 ws->addWidget(dateEntry, TVVariant::Date);
99 104
100 /* connect the signals down */ 105 /* connect the signals down */
101 connect(textKey, SIGNAL(textChanged(const QString&)), 106 connect(textKey, SIGNAL(textChanged(const QString&)),
102 this, SIGNAL(valueChanged())); 107 this, SIGNAL(valueChanged()));
103 connect(intKey, SIGNAL(valueChanged(int)), 108 connect(intKey, SIGNAL(valueChanged(int)),
104 this, SIGNAL(valueChanged())); 109 this, SIGNAL(valueChanged()));
105 connect(dateKey, SIGNAL(valueChanged(const QDate&)), 110 connect(dateKey, SIGNAL(valueChanged(const QDate&)),
106 this, SIGNAL(valueChanged())); 111 this, SIGNAL(valueChanged()));
107 connect(timeKey, SIGNAL(valueChanged(const QTime&)), 112 connect(timeKey, SIGNAL(valueChanged(const QTime&)),
108 this, SIGNAL(valueChanged())); 113 this, SIGNAL(valueChanged()));
109 114
110 connect(intCombo, SIGNAL(activated(int)), this, SIGNAL(valueChanged())); 115 connect(intCombo, SIGNAL(activated(int)), this, SIGNAL(valueChanged()));
@@ -119,13 +124,13 @@ TVFilterKeyEntry::TVFilterKeyEntry(QWidget *parent, const char *name, WFlags f)
119} 124}
120 125
121/*! 126/*!
122 Destructs the widget 127 Destructs the widget
123*/ 128*/
124TVFilterKeyEntry::~TVFilterKeyEntry() 129TVFilterKeyEntry::~TVFilterKeyEntry()
125{ 130{
126} 131}
127 132
128void TVFilterKeyEntry::setKey(int i) 133void TVFilterKeyEntry::setKey(int i)
129{ 134{
130 135
131 if (!ts) return; 136 if (!ts) return;
@@ -183,25 +188,24 @@ TVVariant TVFilterKeyEntry::getCompareValue()
183 int tmp; 188 int tmp;
184 189
185 switch(current_type) { 190 switch(current_type) {
186 case TVVariant::String: 191 case TVVariant::String:
187 sendkey = TVVariant(QString(textKey->text())); 192 sendkey = TVVariant(QString(textKey->text()));
188 break; 193 break;
189 case TVVariant::Int: { 194 case TVVariant::Int: {
190 sendkey = TVVariant(intKey->value()); 195 sendkey = TVVariant(intKey->value());
191 break; 196 break;
192 } 197 }
193 case TVVariant::Time: { 198 case TVVariant::Time: {
194 sendkey = TVVariant(QTime(timeKey->time())); 199 sendkey = TVVariant(QTime(timeKey->time()));
195 break; 200 break;
196 } 201 }
197 case TVVariant::Date: { 202 case TVVariant::Date: {
198 sendkey = TVVariant(QDate(dateKey->date())); 203 sendkey = TVVariant(QDate(dateKey->date()));
199 break; 204 break;
200 } 205 }
201 default: { 206 default: {
202 sendkey = TVVariant(0); 207 sendkey = TVVariant(0);
203 qWarning("TVFilterKeyEntry::getCompareValue() " 208 owarn << "TVFilterKeyEntry::getCompareValue() cannot work out data type" << oendl;
204 "cannot work out data type");
205 } 209 }
206 } 210 }
207 return sendkey; 211 return sendkey;
diff --git a/noncore/apps/tableviewer/ui/tvfilterview.cpp b/noncore/apps/tableviewer/ui/tvfilterview.cpp
index 22f1fb7..198c8b5 100644
--- a/noncore/apps/tableviewer/ui/tvfilterview.cpp
+++ b/noncore/apps/tableviewer/ui/tvfilterview.cpp
@@ -18,6 +18,13 @@
18** 18**
19**********************************************************************/ 19**********************************************************************/
20#include "tvfilterview.h" 20#include "tvfilterview.h"
21
22/* OPIE */
23#include <opie2/odebug.h>
24#include <qpe/qpeapplication.h>
25using namespace Opie::Core;
26
27/* QT */
21#include <qtoolbutton.h> 28#include <qtoolbutton.h>
22#include <qcombobox.h> 29#include <qcombobox.h>
23#include <qlistview.h> 30#include <qlistview.h>
@@ -26,13 +33,12 @@
26#include <qpushbutton.h> 33#include <qpushbutton.h>
27#include <qlabel.h> 34#include <qlabel.h>
28 35
29#include <qpe/qpeapplication.h>
30 36
31TVFilterView::TVFilterView(TableState *t, QWidget* parent, 37TVFilterView::TVFilterView(TableState *t, QWidget* parent,
32 const char *name, WFlags fl ) : QDialog(parent, name, TRUE, fl) 38 const char *name, WFlags fl ) : QDialog(parent, name, TRUE, fl)
33{ 39{
34 if ( !name ) 40 if ( !name )
35 setName( "Filter View" ); 41 setName( "Filter View" );
36 42
37 QVBoxLayout *vlayout = new QVBoxLayout(this); 43 QVBoxLayout *vlayout = new QVBoxLayout(this);
38 44
@@ -88,8 +94,8 @@ TVFilterView::TVFilterView(TableState *t, QWidget* parent,
88 connect(keyEntry, SIGNAL(valueChanged()), this, SLOT( updateTerm() )); 94 connect(keyEntry, SIGNAL(valueChanged()), this, SLOT( updateTerm() ));
89 connect(keyNameCombo, SIGNAL(activated(int)), this, SLOT( updateTerm() )); 95 connect(keyNameCombo, SIGNAL(activated(int)), this, SLOT( updateTerm() ));
90 96
91 connect(display, SIGNAL(selectionChanged(QListViewItem*)), this, 97 connect(display, SIGNAL(selectionChanged(QListViewItem*)), this,
92 SLOT(setTerm(QListViewItem*))); 98 SLOT(setTerm(QListViewItem*)));
93 99
94 ts = t; 100 ts = t;
95 current = 0; 101 current = 0;
@@ -102,7 +108,7 @@ TVFilterView::TVFilterView(TableState *t, QWidget* parent,
102} 108}
103 109
104/*! 110/*!
105 Destroys the TVFilterView widget 111 Destroys the TVFilterView widget
106*/ 112*/
107TVFilterView::~TVFilterView() 113TVFilterView::~TVFilterView()
108{ 114{
@@ -118,26 +124,26 @@ void TVFilterView::reset()
118 keyIds.clear(); 124 keyIds.clear();
119} 125}
120 126
121void TVFilterView::rebuildKeys() 127void TVFilterView::rebuildKeys()
122{ 128{
123 int i; 129 int i;
124 130
125 if (!ts) return; 131 if (!ts) return;
126 if(!ts->kRep) return; 132 if(!ts->kRep) return;
127 keyEntry->setTableState(ts); 133 keyEntry->setTableState(ts);
128 134
129 /* set up the list of keys that can be compared on */ 135 /* set up the list of keys that can be compared on */
130 keyNameCombo->clear(); 136 keyNameCombo->clear();
131 KeyListIterator it(*ts->kRep); 137 KeyListIterator it(*ts->kRep);
132 138
133 i = 0; 139 i = 0;
134 while(it.current()) { 140 while(it.current()) {
135 if(ts->kRep->validIndex(it.currentKey())) { 141 if(ts->kRep->validIndex(it.currentKey())) {
136 keyNameCombo->insertItem(it.current()->name()); 142 keyNameCombo->insertItem(it.current()->name());
137 keyIds.insert(i, it.currentKey()); 143 keyIds.insert(i, it.currentKey());
138 ++i; 144 ++i;
139 } 145 }
140 ++it; 146 ++it;
141 } 147 }
142} 148}
143 149
@@ -146,7 +152,7 @@ bool TVFilterView::passesFilter(DataElem *d) {
146 152
147 153
148 FilterTerm *t; 154 FilterTerm *t;
149 155
150 for (t = terms.first(); t != 0; t = terms.next() ) { 156 for (t = terms.first(); t != 0; t = terms.next() ) {
151 /* check against filter */ 157 /* check against filter */
152 switch(t->ct) { 158 switch(t->ct) {
@@ -175,8 +181,7 @@ bool TVFilterView::passesFilter(DataElem *d) {
175 return false; 181 return false;
176 break; 182 break;
177 default: 183 default:
178 qWarning("TVFilterView::passesFilter() " 184 owarn << "TVFilterView::passesFilter() unrecognized filter type" << oendl;
179 "unrecognized filter type");
180 return false; 185 return false;
181 } 186 }
182 } 187 }
@@ -194,7 +199,7 @@ bool TVFilterView::filterActive() const
194} 199}
195 200
196/* SLOTS */ 201/* SLOTS */
197void TVFilterView::newTerm() 202void TVFilterView::newTerm()
198{ 203{
199 if (!ts) return; 204 if (!ts) return;
200 205
@@ -212,7 +217,7 @@ void TVFilterView::newTerm()
212 keyNameCombo->setEnabled(true); 217 keyNameCombo->setEnabled(true);
213} 218}
214 219
215void TVFilterView::updateTerm() 220void TVFilterView::updateTerm()
216{ 221{
217 FilterTerm *term; 222 FilterTerm *term;
218 /* Read the widget values (keyname, compare type, value) 223 /* Read the widget values (keyname, compare type, value)
@@ -231,7 +236,7 @@ void TVFilterView::updateTerm()
231 keyEntry->setKey(term->keyIndex); /* so the next two items make sense */ 236 keyEntry->setKey(term->keyIndex); /* so the next two items make sense */
232 term->ct = keyEntry->getCompareType(), 237 term->ct = keyEntry->getCompareType(),
233 term->value = keyEntry->getCompareValue(); 238 term->value = keyEntry->getCompareValue();
234 239
235 keyString = keyNameCombo->currentText(); 240 keyString = keyNameCombo->currentText();
236 241
237 switch(term->ct) { 242 switch(term->ct) {
@@ -260,14 +265,14 @@ void TVFilterView::updateTerm()
260 vString = term->value.toString(); 265 vString = term->value.toString();
261 266
262 /* remove old view */ 267 /* remove old view */
263 if (term->view) 268 if (term->view)
264 delete(term->view); 269 delete(term->view);
265 term->view = new QListViewItem(display, 0, keyString, cmpString, vString); 270 term->view = new QListViewItem(display, 0, keyString, cmpString, vString);
266 display->setSelected(term->view, true); 271 display->setSelected(term->view, true);
267} 272}
268 273
269/* deletes current term */ 274/* deletes current term */
270void TVFilterView::deleteTerm() 275void TVFilterView::deleteTerm()
271{ 276{
272 if(!current) return; 277 if(!current) return;
273 if (current->view) 278 if (current->view)
@@ -284,7 +289,7 @@ void TVFilterView::deleteTerm()
284} 289}
285 290
286/* clears all terminations */ 291/* clears all terminations */
287void TVFilterView::clearTerms() 292void TVFilterView::clearTerms()
288{ 293{
289 while(current) 294 while(current)
290 deleteTerm(); 295 deleteTerm();
@@ -292,7 +297,7 @@ void TVFilterView::clearTerms()
292 297
293void TVFilterView::setTerm(QListViewItem *target) 298void TVFilterView::setTerm(QListViewItem *target)
294{ 299{
295 /* Iterate through the list to find item with view=target.. 300 /* Iterate through the list to find item with view=target..
296 * set as current, delete */ 301 * set as current, delete */
297 FilterTerm *term = current; 302 FilterTerm *term = current;
298 303
@@ -301,6 +306,6 @@ void TVFilterView::setTerm(QListViewItem *target)
301 break; 306 break;
302 307
303 if (!current) { 308 if (!current) {
304 current = term; 309 current = term;
305 } 310 }
306} 311}