summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/tableviewer/db/common.cpp2
-rw-r--r--noncore/apps/tableviewer/db/csvsource.cpp1
-rw-r--r--noncore/apps/tableviewer/ui/commonwidgets.cpp6
-rw-r--r--noncore/apps/tableviewer/ui/tvbrowseview.cpp4
-rw-r--r--noncore/apps/tableviewer/ui/tveditview.cpp4
-rw-r--r--noncore/apps/tableviewer/ui/tvfilterview.cpp4
-rw-r--r--noncore/apps/tableviewer/ui/tvkeyedit.cpp4
-rw-r--r--noncore/apps/tableviewer/ui/tvlistview.cpp4
8 files changed, 15 insertions, 14 deletions
diff --git a/noncore/apps/tableviewer/db/common.cpp b/noncore/apps/tableviewer/db/common.cpp
index 71844a5..dbf9370 100644
--- a/noncore/apps/tableviewer/db/common.cpp
+++ b/noncore/apps/tableviewer/db/common.cpp
@@ -586,193 +586,193 @@ bool TVVariant::closer(TVVariant n, TVVariant o)
586 586
587 int diff1 = (i1 - iv); 587 int diff1 = (i1 - iv);
588 if (diff1 < 0) 588 if (diff1 < 0)
589 diff1 = -diff1; 589 diff1 = -diff1;
590 int diff2 = (i2 - iv); 590 int diff2 = (i2 - iv);
591 if (diff2 < 0) 591 if (diff2 < 0)
592 diff2 = -diff2; 592 diff2 = -diff2;
593 593
594 if (diff1 < diff2) 594 if (diff1 < diff2)
595 return TRUE; 595 return TRUE;
596 return FALSE; 596 return FALSE;
597 } 597 }
598 case Date: { 598 case Date: {
599 QDate i1 = n.toDate(); 599 QDate i1 = n.toDate();
600 QDate i2 = o.toDate(); 600 QDate i2 = o.toDate();
601 QDate iv = toDate(); 601 QDate iv = toDate();
602 602
603 /* definition of closer is the least difference in days */ 603 /* definition of closer is the least difference in days */
604 int diff1 = i1.daysTo(iv); 604 int diff1 = i1.daysTo(iv);
605 if (diff1 < 0) 605 if (diff1 < 0)
606 diff1 = -diff1; 606 diff1 = -diff1;
607 int diff2 = i2.daysTo(iv); 607 int diff2 = i2.daysTo(iv);
608 if (diff2 < 0) 608 if (diff2 < 0)
609 diff2 = -diff2; 609 diff2 = -diff2;
610 610
611 if (diff1 < diff2) 611 if (diff1 < diff2)
612 return TRUE; 612 return TRUE;
613 return FALSE; 613 return FALSE;
614 } 614 }
615 case Time: { 615 case Time: {
616 QTime i1 = n.toTime(); 616 QTime i1 = n.toTime();
617 QTime i2 = o.toTime(); 617 QTime i2 = o.toTime();
618 QTime iv = toTime(); 618 QTime iv = toTime();
619 619
620 /* definition of closer is the least difference in days */ 620 /* definition of closer is the least difference in days */
621 int diff1 = i1.msecsTo(iv); 621 int diff1 = i1.msecsTo(iv);
622 if (diff1 < 0) 622 if (diff1 < 0)
623 diff1 = -diff1; 623 diff1 = -diff1;
624 int diff2 = i2.msecsTo(iv); 624 int diff2 = i2.msecsTo(iv);
625 if (diff2 < 0) 625 if (diff2 < 0)
626 diff2 = -diff2; 626 diff2 = -diff2;
627 if (diff1 < diff2) 627 if (diff1 < diff2)
628 return TRUE; 628 return TRUE;
629 return FALSE; 629 return FALSE;
630 } 630 }
631 default: 631 default:
632 /* don't know how to do 'closer' on this type, hence never closer 632 /* don't know how to do 'closer' on this type, hence never closer
633 * or even close */ 633 * or even close */
634 break; 634 break;
635 } 635 }
636 return FALSE; 636 return FALSE;
637} 637}
638 638
639/*! True if n is close to this */ 639/*! True if n is close to this */
640bool TVVariant::close(TVVariant n) 640bool TVVariant::close(TVVariant n)
641{ 641{
642 /* Nothing is close to an invalid, so nothing can be closer */ 642 /* Nothing is close to an invalid, so nothing can be closer */
643 if(type() == Invalid) 643 if(type() == Invalid)
644 return FALSE; 644 return FALSE;
645 645
646 /* can't be close if of different type */ 646 /* can't be close if of different type */
647 if(n.type() != type()) 647 if(n.type() != type())
648 return FALSE; 648 return FALSE;
649 649
650 switch(type()){ 650 switch(type()){
651 case String: { 651 case String: {
652 /* case for strings is close is a substring.. closer is 652 /* case for strings is close is a substring.. closer is
653 * earlier alphabetically */ 653 * earlier alphabetically */
654 QString qs1 = n.toString().lower(); 654 QString qs1 = n.toString().lower();
655 QString qsv = toString().lower(); 655 QString qsv = toString().lower();
656 656
657 if (!qs1.startsWith(qsv)) 657 if (!qs1.startsWith(qsv))
658 return FALSE; 658 return FALSE;
659 return TRUE; 659 return TRUE;
660 } 660 }
661 case Int: 661 case Int:
662 case Date: 662 case Date:
663 case Time: 663 case Time:
664 return TRUE; 664 return TRUE;
665 default: 665 default:
666 /* don't know how to do 'closer' on this type, hence never closer 666 /* don't know how to do 'closer' on this type, hence never closer
667 * or even close */ 667 * or even close */
668 break; 668 break;
669 } 669 }
670 return FALSE; 670 return FALSE;
671} 671}
672 672
673/*! 673/*!
674 \class Key 674 \class Key
675 \brief document me! 675 \brief document me!
676 676
677 document me! 677 document me!
678*/ 678*/
679 679
680Key::Key() : kname(), kexample(), kflags(0) { } 680Key::Key() : kname(), kexample(), kflags(0) { }
681 681
682Key::Key(QString name, TVVariant example, int flags = 0) : 682Key::Key(QString name, TVVariant example, int flags) :
683 kname(name), kexample(example), kflags(flags) { } 683 kname(name), kexample(example), kflags(flags) { }
684 684
685Key::Key(const Key &other) 685Key::Key(const Key &other)
686{ 686{
687 kname = other.kname; 687 kname = other.kname;
688 kexample = other.kexample; 688 kexample = other.kexample;
689 kflags = other.kflags; 689 kflags = other.kflags;
690} 690}
691 691
692Key& Key::operator=(const Key& key) 692Key& Key::operator=(const Key& key)
693{ 693{
694 kname = key.kname; 694 kname = key.kname;
695 kexample = key.kexample; 695 kexample = key.kexample;
696 kflags = key.kflags; 696 kflags = key.kflags;
697 return *this; 697 return *this;
698} 698}
699 699
700QString Key::name() const 700QString Key::name() const
701{ 701{
702 return QString(kname); 702 return QString(kname);
703} 703}
704 704
705TVVariant Key::example() const 705TVVariant Key::example() const
706{ 706{
707 return TVVariant(kexample); 707 return TVVariant(kexample);
708} 708}
709 709
710TVVariant::KeyType Key::type() const 710TVVariant::KeyType Key::type() const
711{ 711{
712 return kexample.type(); 712 return kexample.type();
713} 713}
714 714
715void Key::setName(const QString &name) 715void Key::setName(const QString &name)
716{ 716{
717 kname = QString(name); 717 kname = QString(name);
718} 718}
719 719
720void Key::setExample(const TVVariant &e) 720void Key::setExample(const TVVariant &e)
721{ 721{
722 kexample = TVVariant(e); 722 kexample = TVVariant(e);
723} 723}
724 724
725int Key::flags() const 725int Key::flags() const
726{ 726{
727 return kflags; 727 return kflags;
728} 728}
729 729
730void Key::setFlags(int fl) 730void Key::setFlags(int fl)
731{ 731{
732 kflags = fl; 732 kflags = fl;
733} 733}
734 734
735bool Key::delFlag() const 735bool Key::delFlag() const
736{ 736{
737 if(kflags & del_flag) 737 if(kflags & del_flag)
738 return TRUE; 738 return TRUE;
739 return FALSE; 739 return FALSE;
740} 740}
741 741
742bool Key::newFlag() const 742bool Key::newFlag() const
743{ 743{
744 if(kflags & new_flag) 744 if(kflags & new_flag)
745 return TRUE; 745 return TRUE;
746 return FALSE; 746 return FALSE;
747} 747}
748 748
749void Key::setDelFlag(bool v) 749void Key::setDelFlag(bool v)
750{ 750{
751 if(delFlag() != v) 751 if(delFlag() != v)
752 kflags = kflags ^ del_flag; 752 kflags = kflags ^ del_flag;
753} 753}
754 754
755void Key::setNewFlag(bool v) 755void Key::setNewFlag(bool v)
756{ 756{
757 if(newFlag() != v) 757 if(newFlag() != v)
758 kflags = kflags ^ new_flag; 758 kflags = kflags ^ new_flag;
759} 759}
760 760
761/*! 761/*!
762 \class KeyList 762 \class KeyList
763 \brief A represntation of keys used for a table. 763 \brief A represntation of keys used for a table.
764 764
765 The KeyList class is used to store the representation of keys used in table 765 The KeyList class is used to store the representation of keys used in table
766 headings by DBStore. It stores the names and types of the keys 766 headings by DBStore. It stores the names and types of the keys
767*/ 767*/
768 768
769/*! 769/*!
770 Constructs a KeyList 770 Constructs a KeyList
771*/ 771*/
772KeyList::KeyList() : QIntDict<Key>(20) 772KeyList::KeyList() : QIntDict<Key>(20)
773{ 773{
774 setAutoDelete(TRUE); 774 setAutoDelete(TRUE);
775} 775}
776 776
777/* Should be deep copy, but isn't */ 777/* Should be deep copy, but isn't */
778KeyList::KeyList(const KeyList &k) : QIntDict<Key>(k) 778KeyList::KeyList(const KeyList &k) : QIntDict<Key>(k)
diff --git a/noncore/apps/tableviewer/db/csvsource.cpp b/noncore/apps/tableviewer/db/csvsource.cpp
index 2561b4b..ea36300 100644
--- a/noncore/apps/tableviewer/db/csvsource.cpp
+++ b/noncore/apps/tableviewer/db/csvsource.cpp
@@ -5,192 +5,193 @@
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20#include "csvsource.h" 20#include "csvsource.h"
21#include "common.h" 21#include "common.h"
22#include "datacache.h" 22#include "datacache.h"
23#include <qtextstream.h> 23#include <qtextstream.h>
24#include <qstringlist.h> 24#include <qstringlist.h>
25#include <qmap.h> 25#include <qmap.h>
26#include <qregexp.h> 26#include <qregexp.h>
27 27
28DBCsv::DBCsv(DBStore *d) 28DBCsv::DBCsv(DBStore *d)
29{ 29{
30 dstore = d; 30 dstore = d;
31} 31}
32 32
33DBCsv::~DBCsv() 33DBCsv::~DBCsv()
34{ 34{
35} 35}
36 36
37QString DBCsv::type() 37QString DBCsv::type()
38{ 38{
39 return "csv"; 39 return "csv";
40} 40}
41 41
42QStringList readElem(QString in) 42QStringList readElem(QString in)
43{ 43{
44 QStringList out; 44 QStringList out;
45 45
46 if (in.isEmpty()) 46 if (in.isEmpty())
47 return out; 47 return out;
48 48
49 bool firstChar = TRUE; 49 bool firstChar = TRUE;
50 bool quotedElem = FALSE; 50 bool quotedElem = FALSE;
51 uint index = 0; 51 uint index = 0;
52 while(index < in.length()) { 52 while(index < in.length()) {
53 if(firstChar) { 53 if(firstChar) {
54 /* skip whitespace */ 54 /* skip whitespace */
55 while(index < in.length() && in[index] == ' ') 55 while(index < in.length() && in[index] == ' ')
56 index++; 56 index++;
57 if(in[index] == '"') { 57 if(in[index] == '"') {
58 quotedElem = TRUE; 58 quotedElem = TRUE;
59 index++; 59 index++;
60 } 60 }
61 } 61 }
62 /* real first char */ 62 /* real first char */
63 QString elem; 63 QString elem;
64 if(quotedElem) { 64 if(quotedElem) {
65 while(index < in.length() && in[index] != '"') { 65 while(index < in.length() && in[index] != '"') {
66 /* check for escape character */ 66 /* check for escape character */
67 if (in[index] == '\\') { 67 if (in[index] == '\\') {
68 if (index++ < in.length()) { 68 if (index++ < in.length()) {
69 elem.append(in[index]); 69 elem.append(in[index]);
70 index++; 70 index++;
71 } 71 }
72 } else { 72 } else {
73 elem.append(in[index]); 73 elem.append(in[index]);
74 index++; 74 index++;
75 } 75 }
76 } 76 }
77 } else { 77 } else {
78 while(index < in.length() && in[index] != ',') { 78 while(index < in.length() && in[index] != ',') {
79 if (in[index] == '\\') { 79 if (in[index] == '\\') {
80 if (index++ < in.length()) { 80 if (index++ < in.length()) {
81 elem.append(in[index]); 81 elem.append(in[index]);
82 index++; 82 index++;
83 } 83 }
84 } else { 84 } else {
85 elem.append(in[index]); 85 elem.append(in[index]);
86 index++; 86 index++;
87 } 87 }
88 } 88 }
89 } 89 }
90 /* we have our current elem */ 90 /* we have our current elem */
91 out << elem.stripWhiteSpace(); 91 out << elem.stripWhiteSpace();
92 firstChar = TRUE; 92 firstChar = TRUE;
93 quotedElem = FALSE; 93 quotedElem = FALSE;
94 /* skip till a , or end of line */ 94 /* skip till a , or end of line */
95 while (index < in.length() && in[index] != ',') index++; 95 while (index < in.length() && in[index] != ',') index++;
96 if(index == in.length()) 96 if(index == in.length())
97 return out; 97 return out;
98 else 98 else
99 index++; 99 index++;
100 } 100 }
101 return out;
101} 102}
102 103
103bool DBCsv::openSource(QIODevice *inDev) 104bool DBCsv::openSource(QIODevice *inDev)
104{ 105{
105 QTextStream tsIn(inDev); 106 QTextStream tsIn(inDev);
106 QString in = tsIn.readLine().stripWhiteSpace(); 107 QString in = tsIn.readLine().stripWhiteSpace();
107 QStringList keys; 108 QStringList keys;
108 109
109 keys = readElem(in); 110 keys = readElem(in);
110 111
111 QMap<int,int> keyIndexes; 112 QMap<int,int> keyIndexes;
112 113
113 KeyList *keyR = new KeyList(); 114 KeyList *keyR = new KeyList();
114 QStringList::Iterator i = keys.begin(); 115 QStringList::Iterator i = keys.begin();
115 116
116 uint fileIndex = 0; 117 uint fileIndex = 0;
117 while(i != keys.end()) { 118 while(i != keys.end()) {
118 if ((*i).isEmpty()) 119 if ((*i).isEmpty())
119 keyIndexes.insert(fileIndex, keyR->addKey("Unamed", TVVariant::String)); 120 keyIndexes.insert(fileIndex, keyR->addKey("Unamed", TVVariant::String));
120 else 121 else
121 keyIndexes.insert(fileIndex, keyR->addKey(*i, TVVariant::String)); 122 keyIndexes.insert(fileIndex, keyR->addKey(*i, TVVariant::String));
122 i++; 123 i++;
123 fileIndex++; 124 fileIndex++;
124 } 125 }
125 dstore->setKeys(keyR); 126 dstore->setKeys(keyR);
126 127
127 in = tsIn.readLine().stripWhiteSpace(); 128 in = tsIn.readLine().stripWhiteSpace();
128 while(!in.isNull()) { 129 while(!in.isNull()) {
129 QStringList elems = readElem(in); 130 QStringList elems = readElem(in);
130 131
131 i = elems.begin(); 132 i = elems.begin();
132 fileIndex = 0; 133 fileIndex = 0;
133 DataElem *current_data = new DataElem(dstore); 134 DataElem *current_data = new DataElem(dstore);
134 while(i != elems.end()) { 135 while(i != elems.end()) {
135 if(!(*i).isEmpty()) { 136 if(!(*i).isEmpty()) {
136 current_data->setField(keyIndexes[fileIndex], *i); 137 current_data->setField(keyIndexes[fileIndex], *i);
137 } 138 }
138 fileIndex++; 139 fileIndex++;
139 i++; 140 i++;
140 } 141 }
141 dstore->addItem(current_data); 142 dstore->addItem(current_data);
142 in = tsIn.readLine().stripWhiteSpace(); 143 in = tsIn.readLine().stripWhiteSpace();
143 } 144 }
144 145
145 return TRUE; 146 return TRUE;
146} 147}
147 148
148bool DBCsv::saveSource(QIODevice *outDev) 149bool DBCsv::saveSource(QIODevice *outDev)
149{ 150{
150 /* try not to use the escape character when possible. */ 151 /* try not to use the escape character when possible. */
151 int i; 152 int i;
152 DataElem *elem; 153 DataElem *elem;
153 KeyList *k; 154 KeyList *k;
154 QTextStream outstream(outDev); 155 QTextStream outstream(outDev);
155 156
156 k = dstore->getKeys(); 157 k = dstore->getKeys();
157 KeyListIterator it(*k); 158 KeyListIterator it(*k);
158 while(it.current()) { 159 while(it.current()) {
159 if(!it.current()->delFlag()) { 160 if(!it.current()->delFlag()) {
160 QString name = it.current()->name(); 161 QString name = it.current()->name();
161 162
162 name.replace(QRegExp("\\"), "\\\\"); 163 name.replace(QRegExp("\\"), "\\\\");
163 name.replace(QRegExp("\""), "\\\""); 164 name.replace(QRegExp("\""), "\\\"");
164 if(name.find(',') != -1) { 165 if(name.find(',') != -1) {
165 name.prepend('\"'); 166 name.prepend('\"');
166 name.append('\"'); 167 name.append('\"');
167 } 168 }
168 169
169 outstream << name; 170 outstream << name;
170 } 171 }
171 ++it; 172 ++it;
172 if(it.current()) 173 if(it.current())
173 outstream << ", "; 174 outstream << ", ";
174 } 175 }
175 outstream << "\n"; 176 outstream << "\n";
176 177
177 dstore->first(); 178 dstore->first();
178 179
179 do { 180 do {
180 elem = dstore->getCurrentData(); 181 elem = dstore->getCurrentData();
181 if(!elem) 182 if(!elem)
182 break; 183 break;
183 it.toFirst(); 184 it.toFirst();
184 while(it.current()) { 185 while(it.current()) {
185 i = it.currentKey(); 186 i = it.currentKey();
186 if (elem->hasValidValue(i)) { 187 if (elem->hasValidValue(i)) {
187 QString name = elem->toQString(i); 188 QString name = elem->toQString(i);
188 189
189 name.replace(QRegExp("\\"), "\\\\"); 190 name.replace(QRegExp("\\"), "\\\\");
190 name.replace(QRegExp("\""), "\\\""); 191 name.replace(QRegExp("\""), "\\\"");
191 if(name.find(',') != -1) { 192 if(name.find(',') != -1) {
192 name.prepend('\"'); 193 name.prepend('\"');
193 name.append('\"'); 194 name.append('\"');
194 } 195 }
195 196
196 outstream << name; 197 outstream << name;
diff --git a/noncore/apps/tableviewer/ui/commonwidgets.cpp b/noncore/apps/tableviewer/ui/commonwidgets.cpp
index bf4c36f..4c47951 100644
--- a/noncore/apps/tableviewer/ui/commonwidgets.cpp
+++ b/noncore/apps/tableviewer/ui/commonwidgets.cpp
@@ -1,210 +1,210 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20 20
21#include <qlineedit.h> 21#include <qlineedit.h>
22#include <qlayout.h> 22#include <qlayout.h>
23#include <qlabel.h> 23#include <qlabel.h>
24#include <qcombobox.h> 24#include <qcombobox.h>
25 25
26#include <qpe/datebookmonth.h> 26#include <qpe/datebookmonth.h>
27#include <qpopupmenu.h> 27#include <qpopupmenu.h>
28#include <qspinbox.h> 28#include <qspinbox.h>
29#include "commonwidgets.h" 29#include "commonwidgets.h"
30 30
31DateEdit::DateEdit( QWidget *parent = 0, const char *name = 0, WFlags f = 0 ) 31DateEdit::DateEdit( QWidget *parent, const char *name, WFlags f )
32 : QToolButton(parent, name) 32 : QToolButton(parent, name)
33{ 33{
34 QPopupMenu *m1 = new QPopupMenu(this); 34 QPopupMenu *m1 = new QPopupMenu(this);
35 dateSelector = new DateBookMonth(m1, 0, TRUE); 35 dateSelector = new DateBookMonth(m1, 0, TRUE);
36 m1->insertItem(dateSelector); 36 m1->insertItem(dateSelector);
37 setPopup(m1); 37 setPopup(m1);
38 setPopupDelay(0); 38 setPopupDelay(0);
39 39
40 connect(dateSelector, SIGNAL(dateClicked(int, int, int)), 40 connect(dateSelector, SIGNAL(dateClicked(int, int, int)),
41 this, SLOT(subValueChanged())); 41 this, SLOT(subValueChanged()));
42 42
43 setText(dateSelector->selectedDate().toString()); 43 setText(dateSelector->selectedDate().toString());
44} 44}
45 45
46 46
47DateEdit::~DateEdit() {} 47DateEdit::~DateEdit() {}
48 48
49QDate DateEdit::date() const 49QDate DateEdit::date() const
50{ 50{
51 return dateSelector->selectedDate(); 51 return dateSelector->selectedDate();
52} 52}
53 53
54void DateEdit::setDate(QDate d) 54void DateEdit::setDate(QDate d)
55{ 55{
56 dateSelector->setDate(d.year(), d.month(), d.day()); 56 dateSelector->setDate(d.year(), d.month(), d.day());
57 setText(d.toString()); 57 setText(d.toString());
58} 58}
59 59
60QSizePolicy DateEdit::sizePolicy() const 60QSizePolicy DateEdit::sizePolicy() const
61{ 61{
62 QSizePolicy sp; 62 QSizePolicy sp;
63 sp.setHorData(QToolButton::sizePolicy().horData()); 63 sp.setHorData(QToolButton::sizePolicy().horData());
64 sp.setVerData(QSizePolicy::Fixed); 64 sp.setVerData(QSizePolicy::Fixed);
65 65
66 return sp; 66 return sp;
67} 67}
68 68
69void DateEdit::clear() 69void DateEdit::clear()
70{ 70{
71 QDate today = QDate::currentDate(); 71 QDate today = QDate::currentDate();
72 72
73 dateSelector->setDate(today.year(), today.month(), today.day()); 73 dateSelector->setDate(today.year(), today.month(), today.day());
74 setText(today.toString()); 74 setText(today.toString());
75} 75}
76 76
77void DateEdit::subValueChanged() 77void DateEdit::subValueChanged()
78{ 78{
79 QDate current = dateSelector->selectedDate(); 79 QDate current = dateSelector->selectedDate();
80 80
81 setText(current.toString()); 81 setText(current.toString());
82 emit valueChanged(current); 82 emit valueChanged(current);
83} 83}
84 84
85TimeEdit::TimeEdit( QWidget *parent = 0, const char *name = 0, WFlags f = 0 ) 85TimeEdit::TimeEdit( QWidget *parent, const char *name, WFlags f )
86 : QWidget(parent, name, f) 86 : QWidget(parent, name, f)
87{ 87{
88 QHBoxLayout *layout = new QHBoxLayout(this, 0); 88 QHBoxLayout *layout = new QHBoxLayout(this, 0);
89 89
90 layout->addWidget(hourKey = new QSpinBox(1, 12, 1, this)); 90 layout->addWidget(hourKey = new QSpinBox(1, 12, 1, this));
91 hourKey->setWrapping(true); 91 hourKey->setWrapping(true);
92 hourKey->setMinimumWidth(30); 92 hourKey->setMinimumWidth(30);
93 hourKey->setMaximumWidth(35); 93 hourKey->setMaximumWidth(35);
94 94
95 layout->addWidget(new QLabel(" : ", this)); 95 layout->addWidget(new QLabel(" : ", this));
96 layout->addWidget(minuteKey = new QSpinBox(0, 59, 1, this)); 96 layout->addWidget(minuteKey = new QSpinBox(0, 59, 1, this));
97 minuteKey->setWrapping(true); 97 minuteKey->setWrapping(true);
98 minuteKey->setMinimumWidth(30); 98 minuteKey->setMinimumWidth(30);
99 minuteKey->setMaximumWidth(35); 99 minuteKey->setMaximumWidth(35);
100 100
101 layout->addWidget(new QLabel(" : ", this)); 101 layout->addWidget(new QLabel(" : ", this));
102 layout->addWidget(secondKey = new QSpinBox(0, 59, 1, this, 0)); 102 layout->addWidget(secondKey = new QSpinBox(0, 59, 1, this, 0));
103 secondKey->setWrapping(true); 103 secondKey->setWrapping(true);
104 secondKey->setMinimumWidth(30); 104 secondKey->setMinimumWidth(30);
105 secondKey->setMaximumWidth(35); 105 secondKey->setMaximumWidth(35);
106 106
107 layout->addWidget(ampm = new QComboBox(this)); 107 layout->addWidget(ampm = new QComboBox(this));
108 ampm->insertItem("AM"); 108 ampm->insertItem("AM");
109 ampm->insertItem("PM"); 109 ampm->insertItem("PM");
110 110
111 layout->addStretch(-1); 111 layout->addStretch(-1);
112 112
113 clear(); 113 clear();
114 114
115 connect(secondKey, SIGNAL(valueChanged(const QString&)), 115 connect(secondKey, SIGNAL(valueChanged(const QString&)),
116 this, SLOT(subValueChanged())); 116 this, SLOT(subValueChanged()));
117 connect(minuteKey, SIGNAL(valueChanged(const QString&)), 117 connect(minuteKey, SIGNAL(valueChanged(const QString&)),
118 this, SLOT(subValueChanged())); 118 this, SLOT(subValueChanged()));
119 connect(hourKey, SIGNAL(valueChanged(const QString&)), 119 connect(hourKey, SIGNAL(valueChanged(const QString&)),
120 this, SLOT(subValueChanged())); 120 this, SLOT(subValueChanged()));
121 connect(ampm, SIGNAL(activated(int)), 121 connect(ampm, SIGNAL(activated(int)),
122 this, SLOT(subValueChanged())); 122 this, SLOT(subValueChanged()));
123} 123}
124 124
125 125
126TimeEdit::~TimeEdit() {} 126TimeEdit::~TimeEdit() {}
127 127
128QTime TimeEdit::time() const 128QTime TimeEdit::time() const
129{ 129{
130 int s,m,h; 130 int s,m,h;
131 131
132 s = secondKey->text().toInt(); 132 s = secondKey->text().toInt();
133 m = minuteKey->text().toInt(); 133 m = minuteKey->text().toInt();
134 h = hourKey->text().toInt(); 134 h = hourKey->text().toInt();
135 135
136 if(ampm->currentItem() == 1) { 136 if(ampm->currentItem() == 1) {
137 /* pm */ 137 /* pm */
138 h = h + 12; 138 h = h + 12;
139 } 139 }
140 /* hour now ranges 1->24 */ 140 /* hour now ranges 1->24 */
141 141
142 if (h == 12) 142 if (h == 12)
143 h = 0; 143 h = 0;
144 if (h == 24) 144 if (h == 24)
145 h = 12; 145 h = 12;
146 146
147 if(QTime::isValid(h, m, s)) 147 if(QTime::isValid(h, m, s))
148 return QTime(h, m, s); 148 return QTime(h, m, s);
149 return QTime(0, 0, 0); 149 return QTime(0, 0, 0);
150} 150}
151 151
152void TimeEdit::setTime(QTime t) 152void TimeEdit::setTime(QTime t)
153{ 153{
154 int h = t.hour(); 154 int h = t.hour();
155 secondKey->setValue(t.second()); 155 secondKey->setValue(t.second());
156 minuteKey->setValue(t.minute()); 156 minuteKey->setValue(t.minute());
157 157
158 /* h 0..23 */ 158 /* h 0..23 */
159 if (h > 11) { 159 if (h > 11) {
160 h -= 12; 160 h -= 12;
161 ampm->setCurrentItem(1); 161 ampm->setCurrentItem(1);
162 } else { 162 } else {
163 ampm->setCurrentItem(0); 163 ampm->setCurrentItem(0);
164 } 164 }
165 165
166 if (h == 0) h = 12; 166 if (h == 0) h = 12;
167 hourKey->setValue(h); 167 hourKey->setValue(h);
168} 168}
169 169
170QSizePolicy TimeEdit::sizePolicy() const 170QSizePolicy TimeEdit::sizePolicy() const
171{ 171{
172 QSizePolicy sp; 172 QSizePolicy sp;
173 sp.setHorData(QSizePolicy::Preferred); 173 sp.setHorData(QSizePolicy::Preferred);
174 sp.setVerData(QSizePolicy::Fixed); 174 sp.setVerData(QSizePolicy::Fixed);
175 175
176 return sp; 176 return sp;
177} 177}
178 178
179void TimeEdit::clear() 179void TimeEdit::clear()
180{ 180{
181 secondKey->setValue(0); 181 secondKey->setValue(0);
182 minuteKey->setValue(0); 182 minuteKey->setValue(0);
183 hourKey->setValue(12); 183 hourKey->setValue(12);
184 184
185 ampm->setCurrentItem(0); 185 ampm->setCurrentItem(0);
186} 186}
187 187
188void TimeEdit::subValueChanged() 188void TimeEdit::subValueChanged()
189{ 189{
190 emit valueChanged(time()); 190 emit valueChanged(time());
191} 191}
192 192
193IntEdit::IntEdit( QWidget *parent = 0, const char *name = 0, WFlags f = 0 ) 193IntEdit::IntEdit( QWidget *parent, const char *name, WFlags f )
194 : QSpinBox(INT_MIN, INT_MAX, 1, parent, name) 194 : QSpinBox(INT_MIN, INT_MAX, 1, parent, name)
195{ 195{
196 setValue(0); 196 setValue(0);
197} 197}
198 198
199 199
200IntEdit::~IntEdit() {} 200IntEdit::~IntEdit() {}
201 201
202int IntEdit::value() 202int IntEdit::value()
203{ 203{
204 return cleanText().toInt(); 204 return cleanText().toInt();
205} 205}
206 206
207void IntEdit::clear() 207void IntEdit::clear()
208{ 208{
209 setValue(0); 209 setValue(0);
210} 210}
diff --git a/noncore/apps/tableviewer/ui/tvbrowseview.cpp b/noncore/apps/tableviewer/ui/tvbrowseview.cpp
index 9bfc791..f5f2555 100644
--- a/noncore/apps/tableviewer/ui/tvbrowseview.cpp
+++ b/noncore/apps/tableviewer/ui/tvbrowseview.cpp
@@ -1,122 +1,122 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20#include "tvbrowseview.h" 20#include "tvbrowseview.h"
21#include "browsekeyentry.h" 21#include "browsekeyentry.h"
22#include <qtoolbutton.h> 22#include <qtoolbutton.h>
23#include <qtextview.h> 23#include <qtextview.h>
24#include <qtextbrowser.h> 24#include <qtextbrowser.h>
25#include <qlayout.h> 25#include <qlayout.h>
26 26
27/*! 27/*!
28 \class TVBrowseView 28 \class TVBrowseView
29 \brief The widget describing how to draw the browse view user interface 29 \brief The widget describing how to draw the browse view user interface
30 30
31 This widget allows for the user to browse through the table, one element 31 This widget allows for the user to browse through the table, one element
32 at a time, or search on a single key. Its main goal is to show a 32 at a time, or search on a single key. Its main goal is to show a
33 single element in a readable format and make it easy for the user to 33 single element in a readable format and make it easy for the user to
34 rapidly find specific elements in the table. 34 rapidly find specific elements in the table.
35*/ 35*/
36 36
37/*! 37/*!
38 Constructs a new TVBrowseView widget 38 Constructs a new TVBrowseView widget
39*/ 39*/
40TVBrowseView::TVBrowseView(TableState *t, QWidget* parent = 0, const char *name = 0, 40TVBrowseView::TVBrowseView(TableState *t, QWidget* parent, const char *name,
41 WFlags fl =0) 41 WFlags fl )
42{ 42{
43 if (!name) 43 if (!name)
44 setName("BrowseView"); 44 setName("BrowseView");
45 45
46// setSizePolicy(QSizePolicy( QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding, 0, 0, sizePolicy().hasHeightForWidth() ) ); 46// setSizePolicy(QSizePolicy( QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding, 0, 0, sizePolicy().hasHeightForWidth() ) );
47 QVBoxLayout *vlayout = new QVBoxLayout(this); 47 QVBoxLayout *vlayout = new QVBoxLayout(this);
48 textViewDisplay = new QTextBrowser(this, "textViewDisplay"); 48 textViewDisplay = new QTextBrowser(this, "textViewDisplay");
49 vlayout->addWidget( textViewDisplay ); 49 vlayout->addWidget( textViewDisplay );
50 50
51 keyEntry = new TVBrowseKeyEntry(this, "keyEntry"); 51 keyEntry = new TVBrowseKeyEntry(this, "keyEntry");
52 vlayout->addWidget( keyEntry ); 52 vlayout->addWidget( keyEntry );
53 53
54 /* connect the signals down */ 54 /* connect the signals down */
55 55
56 connect(keyEntry, SIGNAL(searchOnKey(int, TVVariant)), 56 connect(keyEntry, SIGNAL(searchOnKey(int, TVVariant)),
57 this, SIGNAL(searchOnKey(int, TVVariant))); 57 this, SIGNAL(searchOnKey(int, TVVariant)));
58 connect(keyEntry, SIGNAL(sortChanged(int)), 58 connect(keyEntry, SIGNAL(sortChanged(int)),
59 this, SIGNAL(sortChanged(int))); 59 this, SIGNAL(sortChanged(int)));
60 60
61 ts = t; 61 ts = t;
62 keyEntry->setTableState(t); 62 keyEntry->setTableState(t);
63} 63}
64 64
65/*! 65/*!
66 Destroys the TVBrowseView widget 66 Destroys the TVBrowseView widget
67*/ 67*/
68TVBrowseView::~TVBrowseView() 68TVBrowseView::~TVBrowseView()
69{ 69{
70} 70}
71 71
72void TVBrowseView::rebuildData() 72void TVBrowseView::rebuildData()
73{ 73{
74 if(!ts) 74 if(!ts)
75 return; 75 return;
76 if(!ts->current_elem) { 76 if(!ts->current_elem) {
77 /* also disable buttons */ 77 /* also disable buttons */
78 textViewDisplay->setText(""); 78 textViewDisplay->setText("");
79 return; 79 return;
80 } 80 }
81 81
82 setDisplayText(ts->current_elem); 82 setDisplayText(ts->current_elem);
83} 83}
84 84
85/* Reset to initial state */ 85/* Reset to initial state */
86void TVBrowseView::reset() 86void TVBrowseView::reset()
87{ 87{
88 textViewDisplay->setText(""); 88 textViewDisplay->setText("");
89 keyEntry->reset(); 89 keyEntry->reset();
90} 90}
91 91
92/*! 92/*!
93 sets the data element to be displayed to element 93 sets the data element to be displayed to element
94*/ 94*/
95void TVBrowseView::setDisplayText(const DataElem *element) 95void TVBrowseView::setDisplayText(const DataElem *element)
96{ 96{
97 QString rep = ""; 97 QString rep = "";
98 98
99 KeyListIterator it(*ts->kRep); 99 KeyListIterator it(*ts->kRep);
100 100
101 while (it.current()) { 101 while (it.current()) {
102 if (element->hasValidValue(it.currentKey())) { 102 if (element->hasValidValue(it.currentKey())) {
103 if(it.currentKey() == ts->current_column) { 103 if(it.currentKey() == ts->current_column) {
104 rep += "<A name=\"ckey\"></A><B><FONT COLOR=#FF0000>" 104 rep += "<A name=\"ckey\"></A><B><FONT COLOR=#FF0000>"
105 + it.current()->name() 105 + it.current()->name()
106 + ":</FONT></B> "; 106 + ":</FONT></B> ";
107 } else { 107 } else {
108 rep += "<B>" + it.current()->name() + ":</B> "; 108 rep += "<B>" + it.current()->name() + ":</B> ";
109 } 109 }
110 rep += element->toQString(it.currentKey()) + "<BR>"; 110 rep += element->toQString(it.currentKey()) + "<BR>";
111 } 111 }
112 ++it; 112 ++it;
113 } 113 }
114 114
115 textViewDisplay->setText(rep); 115 textViewDisplay->setText(rep);
116 textViewDisplay->scrollToAnchor("ckey"); 116 textViewDisplay->scrollToAnchor("ckey");
117} 117}
118 118
119void TVBrowseView::rebuildKeys() 119void TVBrowseView::rebuildKeys()
120{ 120{
121 keyEntry->rebuildKeys(); 121 keyEntry->rebuildKeys();
122} 122}
diff --git a/noncore/apps/tableviewer/ui/tveditview.cpp b/noncore/apps/tableviewer/ui/tveditview.cpp
index ba2bd06..23e2b42 100644
--- a/noncore/apps/tableviewer/ui/tveditview.cpp
+++ b/noncore/apps/tableviewer/ui/tveditview.cpp
@@ -1,140 +1,140 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20 20
21 21
22/* The edit view widget. For each key in the DB display an 22/* The edit view widget. For each key in the DB display an
23 * appropriate edit box, and a 'key' button to change that particular 23 * appropriate edit box, and a 'key' button to change that particular
24 * key information (delete or edit). 24 * key information (delete or edit).
25 * 25 *
26 * Bottem line should be a 'new key' button. Should be able to scroll 26 * Bottem line should be a 'new key' button. Should be able to scroll
27 * in both directions. 27 * in both directions.
28 */ 28 */
29 29
30#include "tveditview.h" 30#include "tveditview.h"
31#include "commonwidgets.h" 31#include "commonwidgets.h"
32 32
33#include <qlayout.h> 33#include <qlayout.h>
34#include <qgrid.h> 34#include <qgrid.h>
35#include <qvbox.h> 35#include <qvbox.h>
36#include <qlineedit.h> 36#include <qlineedit.h>
37#include <qcheckbox.h> 37#include <qcheckbox.h>
38#include <qlist.h> 38#include <qlist.h>
39#include <qlabel.h> 39#include <qlabel.h>
40#include <qscrollview.h> 40#include <qscrollview.h>
41#include <qsignalmapper.h> 41#include <qsignalmapper.h>
42 42
43TVEditView::TVEditView(TableState *s, DataElem *d, QWidget* parent = 0, 43TVEditView::TVEditView(TableState *s, DataElem *d, QWidget* parent,
44 const char *name = 0, WFlags fl =0) : QDialog(parent, name, true, fl) 44 const char *name, WFlags fl ) : QDialog(parent, name, true, fl)
45{ 45{
46 if (!name) 46 if (!name)
47 setName("TVEditView"); 47 setName("TVEditView");
48 48
49 QVBoxLayout *layout = new QVBoxLayout(this, 0); /* only so that will resize 49 QVBoxLayout *layout = new QVBoxLayout(this, 0); /* only so that will resize
50 correctly in other 50 correctly in other
51 widgets */ 51 widgets */
52 52
53 toggles = new QSignalMapper(this); 53 toggles = new QSignalMapper(this);
54 QScrollView *sv = new QScrollView(this, 0); 54 QScrollView *sv = new QScrollView(this, 0);
55 sv->setResizePolicy(QScrollView::AutoOneFit); 55 sv->setResizePolicy(QScrollView::AutoOneFit);
56 56
57 layout->addWidget(sv); 57 layout->addWidget(sv);
58 58
59 editDisplay = new QGrid(3, sv, 0); 59 editDisplay = new QGrid(3, sv, 0);
60 editDisplay->setSpacing(3); 60 editDisplay->setSpacing(3);
61 sv->addChild(editDisplay); 61 sv->addChild(editDisplay);
62 62
63 connect(toggles, SIGNAL(mapped(int)), this, SLOT(toggleEnabled(int))); 63 connect(toggles, SIGNAL(mapped(int)), this, SLOT(toggleEnabled(int)));
64 64
65 setData(s, d); 65 setData(s, d);
66#ifdef Q_WS_QWS 66#ifdef Q_WS_QWS
67 showMaximized(); 67 showMaximized();
68#endif 68#endif
69} 69}
70 70
71TVEditView::~TVEditView() 71TVEditView::~TVEditView()
72{ 72{
73} 73}
74 74
75/*! set up the widgets in the grid, Set up initial values */ 75/*! set up the widgets in the grid, Set up initial values */
76void TVEditView::setData(TableState *t, DataElem *d) 76void TVEditView::setData(TableState *t, DataElem *d)
77{ 77{
78 78
79 /* TODO need to somehow clear old children... a delete of each 79 /* TODO need to somehow clear old children... a delete of each
80 * child? */ 80 * child? */
81 keyIds.clear(); 81 keyIds.clear();
82 82
83 KeyListIterator it(*t->kRep); 83 KeyListIterator it(*t->kRep);
84 84
85 int i = 0; 85 int i = 0;
86 while(it.current()) { 86 while(it.current()) {
87 if (t->kRep->validIndex(it.currentKey())) { 87 if (t->kRep->validIndex(it.currentKey())) {
88 new QLabel(it.current()->name(), editDisplay); 88 new QLabel(it.current()->name(), editDisplay);
89 keyIds.insert(i, it.currentKey()); 89 keyIds.insert(i, it.currentKey());
90 if (d->hasValidValue(it.currentKey())) { 90 if (d->hasValidValue(it.currentKey())) {
91 switch(it.current()->type()) { 91 switch(it.current()->type()) {
92 case TVVariant::String: { 92 case TVVariant::String: {
93 QLineEdit *edit = new QLineEdit(editDisplay, 0); 93 QLineEdit *edit = new QLineEdit(editDisplay, 0);
94 edit->setText(d->getField(it.currentKey()).toString()); 94 edit->setText(d->getField(it.currentKey()).toString());
95 edits.append(edit); 95 edits.append(edit);
96 break; 96 break;
97 } 97 }
98 case TVVariant::Int: { 98 case TVVariant::Int: {
99 IntEdit *edit = new IntEdit(editDisplay, 0); 99 IntEdit *edit = new IntEdit(editDisplay, 0);
100 edit->setValue(d->getField(it.currentKey()).toInt()); 100 edit->setValue(d->getField(it.currentKey()).toInt());
101 edits.append(edit); 101 edits.append(edit);
102 break; 102 break;
103 } 103 }
104 case TVVariant::Time: { 104 case TVVariant::Time: {
105 TimeEdit *edit = new TimeEdit(editDisplay, 0); 105 TimeEdit *edit = new TimeEdit(editDisplay, 0);
106 edit->setTime(d->getField(it.currentKey()).toTime()); 106 edit->setTime(d->getField(it.currentKey()).toTime());
107 edits.append(edit); 107 edits.append(edit);
108 break; 108 break;
109 } 109 }
110 case TVVariant::Date: { 110 case TVVariant::Date: {
111 DateEdit *edit = new DateEdit(editDisplay, 0); 111 DateEdit *edit = new DateEdit(editDisplay, 0);
112 edit->setDate(d->getField(it.currentKey()).toDate()); 112 edit->setDate(d->getField(it.currentKey()).toDate());
113 edits.append(edit); 113 edits.append(edit);
114 break; 114 break;
115 } 115 }
116 default: 116 default:
117 edits.append(new QLabel("<B><I>Uknown key type</I></B>", editDisplay)); 117 edits.append(new QLabel("<B><I>Uknown key type</I></B>", editDisplay));
118 } 118 }
119 QCheckBox *tb = new QCheckBox(editDisplay); 119 QCheckBox *tb = new QCheckBox(editDisplay);
120 tb->setChecked(TRUE); 120 tb->setChecked(TRUE);
121 toggles->setMapping(tb, i); 121 toggles->setMapping(tb, i);
122 connect(tb, SIGNAL(clicked()), toggles, SLOT(map())); 122 connect(tb, SIGNAL(clicked()), toggles, SLOT(map()));
123 buttons.append(tb); 123 buttons.append(tb);
124 } else { 124 } else {
125 /* No valid value.. set to null */ 125 /* No valid value.. set to null */
126 switch(it.current()->type()) { 126 switch(it.current()->type()) {
127 case TVVariant::String: { 127 case TVVariant::String: {
128 QLineEdit *edit = new QLineEdit(editDisplay, 0); 128 QLineEdit *edit = new QLineEdit(editDisplay, 0);
129 edit->setEnabled(false); 129 edit->setEnabled(false);
130 edits.append(edit); 130 edits.append(edit);
131 break; 131 break;
132 } 132 }
133 case TVVariant::Int: { 133 case TVVariant::Int: {
134 IntEdit *edit = new IntEdit(editDisplay, 0); 134 IntEdit *edit = new IntEdit(editDisplay, 0);
135 edit->setEnabled(false); 135 edit->setEnabled(false);
136 edits.append(edit); 136 edits.append(edit);
137 break; 137 break;
138 } 138 }
139 case TVVariant::Time: { 139 case TVVariant::Time: {
140 TimeEdit *edit = new TimeEdit(editDisplay, 0); 140 TimeEdit *edit = new TimeEdit(editDisplay, 0);
diff --git a/noncore/apps/tableviewer/ui/tvfilterview.cpp b/noncore/apps/tableviewer/ui/tvfilterview.cpp
index 72d39d6..0182127 100644
--- a/noncore/apps/tableviewer/ui/tvfilterview.cpp
+++ b/noncore/apps/tableviewer/ui/tvfilterview.cpp
@@ -1,126 +1,126 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20#include "tvfilterview.h" 20#include "tvfilterview.h"
21#include <qtoolbutton.h> 21#include <qtoolbutton.h>
22#include <qcombobox.h> 22#include <qcombobox.h>
23#include <qlistview.h> 23#include <qlistview.h>
24#include <qlayout.h> 24#include <qlayout.h>
25#include <qheader.h> 25#include <qheader.h>
26#include <qpushbutton.h> 26#include <qpushbutton.h>
27#include <qlabel.h> 27#include <qlabel.h>
28 28
29TVFilterView::TVFilterView(TableState *t, QWidget* parent = 0, 29TVFilterView::TVFilterView(TableState *t, QWidget* parent,
30 const char *name = 0, WFlags fl =0) : QDialog(parent, name, TRUE, fl) 30 const char *name, WFlags fl ) : QDialog(parent, name, TRUE, fl)
31{ 31{
32 if ( !name ) 32 if ( !name )
33 setName( "Filter View" ); 33 setName( "Filter View" );
34 34
35 QVBoxLayout *vlayout = new QVBoxLayout(this); 35 QVBoxLayout *vlayout = new QVBoxLayout(this);
36 36
37 display = new QListView(this, "display"); 37 display = new QListView(this, "display");
38 display->addColumn("Key"); 38 display->addColumn("Key");
39 display->addColumn("Constraint"); 39 display->addColumn("Constraint");
40 display->addColumn("Value"); 40 display->addColumn("Value");
41 display->header()->setClickEnabled(FALSE); 41 display->header()->setClickEnabled(FALSE);
42 display->header()->setResizeEnabled(FALSE); 42 display->header()->setResizeEnabled(FALSE);
43 43
44 vlayout->addWidget(display); 44 vlayout->addWidget(display);
45 45
46 QHBoxLayout *hlayout = new QHBoxLayout; 46 QHBoxLayout *hlayout = new QHBoxLayout;
47 hlayout->addItem(new QSpacerItem(20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum)); 47 hlayout->addItem(new QSpacerItem(20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum));
48 48
49 newFilterButton = new QPushButton(this, "new Filter"); 49 newFilterButton = new QPushButton(this, "new Filter");
50 newFilterButton->setMaximumSize(QSize(50, 32767)); 50 newFilterButton->setMaximumSize(QSize(50, 32767));
51 newFilterButton->setText("New"); 51 newFilterButton->setText("New");
52 hlayout->addWidget(newFilterButton); 52 hlayout->addWidget(newFilterButton);
53 53
54 deleteFilterButton = new QPushButton(this, "delete Filter"); 54 deleteFilterButton = new QPushButton(this, "delete Filter");
55 deleteFilterButton->setMaximumSize(QSize(50, 32767)); 55 deleteFilterButton->setMaximumSize(QSize(50, 32767));
56 deleteFilterButton->setText("Delete"); 56 deleteFilterButton->setText("Delete");
57 hlayout->addWidget(deleteFilterButton); 57 hlayout->addWidget(deleteFilterButton);
58 58
59 clearFilterButton = new QPushButton(this, "delete Filter"); 59 clearFilterButton = new QPushButton(this, "delete Filter");
60 clearFilterButton->setMaximumSize(QSize(60, 32767)); 60 clearFilterButton->setMaximumSize(QSize(60, 32767));
61 clearFilterButton->setText("Clear All"); 61 clearFilterButton->setText("Clear All");
62 hlayout->addWidget(clearFilterButton); 62 hlayout->addWidget(clearFilterButton);
63 63
64 vlayout->addLayout(hlayout); 64 vlayout->addLayout(hlayout);
65 65
66 QHBoxLayout *hlayout2 = new QHBoxLayout; 66 QHBoxLayout *hlayout2 = new QHBoxLayout;
67 67
68 keyNameCombo = new QComboBox(FALSE, this, "key name"); 68 keyNameCombo = new QComboBox(FALSE, this, "key name");
69 keyNameCombo->setEnabled(FALSE); 69 keyNameCombo->setEnabled(FALSE);
70 hlayout2->addWidget(keyNameCombo); 70 hlayout2->addWidget(keyNameCombo);
71 71
72 QLabel *label = new QLabel(this); 72 QLabel *label = new QLabel(this);
73 label->setText("has value"); 73 label->setText("has value");
74 hlayout2->addWidget(label); 74 hlayout2->addWidget(label);
75 75
76 keyEntry = new TVFilterKeyEntry(this, "key entry"); 76 keyEntry = new TVFilterKeyEntry(this, "key entry");
77 keyEntry->setEnabled(FALSE); 77 keyEntry->setEnabled(FALSE);
78 78
79 vlayout->addLayout(hlayout2); 79 vlayout->addLayout(hlayout2);
80 vlayout->addWidget(keyEntry); 80 vlayout->addWidget(keyEntry);
81 81
82 connect(newFilterButton, SIGNAL( clicked() ), this, SLOT( newTerm() )); 82 connect(newFilterButton, SIGNAL( clicked() ), this, SLOT( newTerm() ));
83 connect(deleteFilterButton, SIGNAL( clicked() ), this, SLOT( deleteTerm())); 83 connect(deleteFilterButton, SIGNAL( clicked() ), this, SLOT( deleteTerm()));
84 connect(clearFilterButton, SIGNAL( clicked() ), this, SLOT( clearTerms())); 84 connect(clearFilterButton, SIGNAL( clicked() ), this, SLOT( clearTerms()));
85 85
86 connect(keyEntry, SIGNAL(valueChanged()), this, SLOT( updateTerm() )); 86 connect(keyEntry, SIGNAL(valueChanged()), this, SLOT( updateTerm() ));
87 connect(keyNameCombo, SIGNAL(activated(int)), this, SLOT( updateTerm() )); 87 connect(keyNameCombo, SIGNAL(activated(int)), this, SLOT( updateTerm() ));
88 88
89 connect(display, SIGNAL(selectionChanged(QListViewItem*)), this, 89 connect(display, SIGNAL(selectionChanged(QListViewItem*)), this,
90 SLOT(setTerm(QListViewItem *))); 90 SLOT(setTerm(QListViewItem *)));
91 91
92 ts = t; 92 ts = t;
93 current = 0; 93 current = 0;
94 terms.setAutoDelete(true); 94 terms.setAutoDelete(true);
95 do_filter = false; 95 do_filter = false;
96 96
97#ifdef Q_WS_QWS 97#ifdef Q_WS_QWS
98 showMaximized(); 98 showMaximized();
99#endif 99#endif
100} 100}
101 101
102/*! 102/*!
103 Destroys the TVFilterView widget 103 Destroys the TVFilterView widget
104*/ 104*/
105TVFilterView::~TVFilterView() 105TVFilterView::~TVFilterView()
106{ 106{
107} 107}
108 108
109void TVFilterView::rebuildData() 109void TVFilterView::rebuildData()
110{ 110{
111} 111}
112 112
113void TVFilterView::reset() 113void TVFilterView::reset()
114{ 114{
115 keyNameCombo->clear(); 115 keyNameCombo->clear();
116 keyIds.clear(); 116 keyIds.clear();
117} 117}
118 118
119void TVFilterView::rebuildKeys() 119void TVFilterView::rebuildKeys()
120{ 120{
121 int i; 121 int i;
122 122
123 if (!ts) return; 123 if (!ts) return;
124 if(!ts->kRep) return; 124 if(!ts->kRep) return;
125 keyEntry->setTableState(ts); 125 keyEntry->setTableState(ts);
126 126
diff --git a/noncore/apps/tableviewer/ui/tvkeyedit.cpp b/noncore/apps/tableviewer/ui/tvkeyedit.cpp
index fb7b7fe..4849e87 100644
--- a/noncore/apps/tableviewer/ui/tvkeyedit.cpp
+++ b/noncore/apps/tableviewer/ui/tvkeyedit.cpp
@@ -1,192 +1,192 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20#include "tvkeyedit.h" 20#include "tvkeyedit.h"
21#include <qtoolbutton.h> 21#include <qtoolbutton.h>
22#include <qlineedit.h> 22#include <qlineedit.h>
23#include <qcombobox.h> 23#include <qcombobox.h>
24#include <qlistview.h> 24#include <qlistview.h>
25#include <qmessagebox.h> 25#include <qmessagebox.h>
26#include <stdlib.h> 26#include <stdlib.h>
27#include <qpushbutton.h> 27#include <qpushbutton.h>
28 28
29/* QList view item... ?? that can store and update the values that I will 29/* QList view item... ?? that can store and update the values that I will
30 * be changing */ 30 * be changing */
31 31
32class TVKEListViewItem : public QListViewItem 32class TVKEListViewItem : public QListViewItem
33{ 33{
34public: 34public:
35 TVKEListViewItem(QString n, TVVariant::KeyType kt, int p, QListView *parent) : 35 TVKEListViewItem(QString n, TVVariant::KeyType kt, int p, QListView *parent) :
36 QListViewItem(parent) 36 QListViewItem(parent)
37 { 37 {
38 name = n; 38 name = n;
39 keyType = kt; 39 keyType = kt;
40 position = p; 40 position = p;
41 } 41 }
42 42
43 QString text(int i) const 43 QString text(int i) const
44 { 44 {
45 if(i) { 45 if(i) {
46 return TVVariant::typeToName(keyType); 46 return TVVariant::typeToName(keyType);
47 } 47 }
48 return name; 48 return name;
49 } 49 }
50 50
51 /* always sort by key index, ignore i */ 51 /* always sort by key index, ignore i */
52 QString key(int, bool) const 52 QString key(int, bool) const
53 { 53 {
54 return QString().sprintf("%08d", position); 54 return QString().sprintf("%08d", position);
55 } 55 }
56 56
57 void setText(int i, const QString &) 57 void setText(int i, const QString &)
58 { 58 {
59 ; 59 ;
60 } 60 }
61 61
62 QString getName() const 62 QString getName() const
63 { 63 {
64 return name; 64 return name;
65 } 65 }
66 66
67 void setName(QString n) 67 void setName(QString n)
68 { 68 {
69 name = n; 69 name = n;
70 repaint(); 70 repaint();
71 } 71 }
72 72
73 TVVariant::KeyType getKeyType() const 73 TVVariant::KeyType getKeyType() const
74 { 74 {
75 return keyType; 75 return keyType;
76 } 76 }
77 77
78 void setKeyType(TVVariant::KeyType k) 78 void setKeyType(TVVariant::KeyType k)
79 { 79 {
80 keyType = k; 80 keyType = k;
81 repaint(); 81 repaint();
82 } 82 }
83 83
84 inline int getPos() const 84 inline int getPos() const
85 { 85 {
86 return position; 86 return position;
87 } 87 }
88 88
89private: 89private:
90 QString name; 90 QString name;
91 TVVariant::KeyType keyType; 91 TVVariant::KeyType keyType;
92 int position; 92 int position;
93}; 93};
94 94
95TVKeyEdit::TVKeyEdit(TableState *t, QWidget* parent = 0, const char *name = 0, 95TVKeyEdit::TVKeyEdit(TableState *t, QWidget* parent, const char *name,
96 WFlags fl = 0) : TVKeyEdit_gen(parent, name, true, fl) 96 WFlags fl) : TVKeyEdit_gen(parent, name, true, fl)
97{ 97{
98 int i; 98 int i;
99 ts = t; 99 ts = t;
100 100
101 if(!ts) return; 101 if(!ts) return;
102 if(!ts->kRep) return; 102 if(!ts->kRep) return;
103 103
104 working_state = *ts->kRep; 104 working_state = *ts->kRep;
105 105
106 i = 1; 106 i = 1;
107 keyTypeEdit->insertItem(TVVariant::typeToName((TVVariant::KeyType)i)); 107 keyTypeEdit->insertItem(TVVariant::typeToName((TVVariant::KeyType)i));
108 i++; 108 i++;
109 keyTypeEdit->insertItem(TVVariant::typeToName((TVVariant::KeyType)i)); 109 keyTypeEdit->insertItem(TVVariant::typeToName((TVVariant::KeyType)i));
110 i++; 110 i++;
111 keyTypeEdit->insertItem(TVVariant::typeToName((TVVariant::KeyType)i)); 111 keyTypeEdit->insertItem(TVVariant::typeToName((TVVariant::KeyType)i));
112 i++; 112 i++;
113 keyTypeEdit->insertItem(TVVariant::typeToName((TVVariant::KeyType)i)); 113 keyTypeEdit->insertItem(TVVariant::typeToName((TVVariant::KeyType)i));
114 114
115 KeyListIterator it(*ts->kRep); 115 KeyListIterator it(*ts->kRep);
116 while(it.current()) { 116 while(it.current()) {
117 if(t->kRep->validIndex(it.currentKey())) { 117 if(t->kRep->validIndex(it.currentKey())) {
118 new TVKEListViewItem(it.current()->name(), 118 new TVKEListViewItem(it.current()->name(),
119 it.current()->type(), 119 it.current()->type(),
120 it.currentKey(), 120 it.currentKey(),
121 display); 121 display);
122 } 122 }
123 ++it; 123 ++it;
124 } 124 }
125 num_keys = ts->kRep->getNumFields(); 125 num_keys = ts->kRep->getNumFields();
126 if(display->childCount() > 0) { 126 if(display->childCount() > 0) {
127 display->setCurrentItem(display->firstChild()); 127 display->setCurrentItem(display->firstChild());
128 setTerm(display->currentItem()); 128 setTerm(display->currentItem());
129 } else { 129 } else {
130 deleteKeyButton->setEnabled(FALSE); 130 deleteKeyButton->setEnabled(FALSE);
131 clearKeysButton->setEnabled(FALSE); 131 clearKeysButton->setEnabled(FALSE);
132 keyNameEdit->setEnabled(FALSE); 132 keyNameEdit->setEnabled(FALSE);
133 keyTypeEdit->setEnabled(FALSE); 133 keyTypeEdit->setEnabled(FALSE);
134 } 134 }
135 135
136 display->setSorting(0); 136 display->setSorting(0);
137#ifdef Q_WS_QWS 137#ifdef Q_WS_QWS
138 showMaximized(); 138 showMaximized();
139#endif 139#endif
140} 140}
141 141
142/*! 142/*!
143 Destroys the TVKeyEdit widget 143 Destroys the TVKeyEdit widget
144*/ 144*/
145TVKeyEdit::~TVKeyEdit() 145TVKeyEdit::~TVKeyEdit()
146{ 146{
147} 147}
148 148
149/* SLOTS */ 149/* SLOTS */
150void TVKeyEdit::newTerm() 150void TVKeyEdit::newTerm()
151{ 151{
152 /* new item, make current Item */ 152 /* new item, make current Item */
153 int i; 153 int i;
154 154
155 i = working_state.addKey("<New Key>", TVVariant::String); 155 i = working_state.addKey("<New Key>", TVVariant::String);
156 //working_state.setNewFlag(i, TRUE); 156 //working_state.setNewFlag(i, TRUE);
157 TVKEListViewItem *nItem = new TVKEListViewItem("<New Key>", 157 TVKEListViewItem *nItem = new TVKEListViewItem("<New Key>",
158 TVVariant::String, 158 TVVariant::String,
159 i, 159 i,
160 display); 160 display);
161 display->setCurrentItem(nItem); 161 display->setCurrentItem(nItem);
162 setTerm(nItem); 162 setTerm(nItem);
163 163
164 num_keys++; 164 num_keys++;
165 if(display->childCount() == 1) { 165 if(display->childCount() == 1) {
166 deleteKeyButton->setEnabled(TRUE); 166 deleteKeyButton->setEnabled(TRUE);
167 clearKeysButton->setEnabled(TRUE); 167 clearKeysButton->setEnabled(TRUE);
168 keyNameEdit->setEnabled(TRUE); 168 keyNameEdit->setEnabled(TRUE);
169 keyTypeEdit->setEnabled(TRUE); 169 keyTypeEdit->setEnabled(TRUE);
170 } 170 }
171} 171}
172 172
173void TVKeyEdit::updateTerm(const QString &newName) 173void TVKeyEdit::updateTerm(const QString &newName)
174{ 174{
175 /* TODO if name matches a deleted term, prompt for 175 /* TODO if name matches a deleted term, prompt for
176 renewing old data instead */ 176 renewing old data instead */
177 TVKEListViewItem *i = (TVKEListViewItem *)display->currentItem(); 177 TVKEListViewItem *i = (TVKEListViewItem *)display->currentItem();
178 if(i) { 178 if(i) {
179 i->setName(newName); 179 i->setName(newName);
180 working_state.setKeyName(i->getPos(), newName); 180 working_state.setKeyName(i->getPos(), newName);
181 } 181 }
182} 182}
183 183
184void TVKeyEdit::updateTerm(int t) 184void TVKeyEdit::updateTerm(int t)
185{ 185{
186 /* t is an index to a combo in a menu, NOT a type */ 186 /* t is an index to a combo in a menu, NOT a type */
187 t++; /* menu counts from 0, types count from 1 */ 187 t++; /* menu counts from 0, types count from 1 */
188 TVKEListViewItem *i = (TVKEListViewItem *)display->currentItem(); 188 TVKEListViewItem *i = (TVKEListViewItem *)display->currentItem();
189 if (i) { 189 if (i) {
190 i->setKeyType((TVVariant::KeyType)t); 190 i->setKeyType((TVVariant::KeyType)t);
191 working_state.setKeyType(i->getPos(), (TVVariant::KeyType)t); 191 working_state.setKeyType(i->getPos(), (TVVariant::KeyType)t);
192 } 192 }
diff --git a/noncore/apps/tableviewer/ui/tvlistview.cpp b/noncore/apps/tableviewer/ui/tvlistview.cpp
index 82d67c6..b25e813 100644
--- a/noncore/apps/tableviewer/ui/tvlistview.cpp
+++ b/noncore/apps/tableviewer/ui/tvlistview.cpp
@@ -1,185 +1,185 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20#include "tvlistview.h" 20#include "tvlistview.h"
21#include "../db/common.h" 21#include "../db/common.h"
22#include <qtoolbutton.h> 22#include <qtoolbutton.h>
23#include <qlistview.h> 23#include <qlistview.h>
24#include <qlayout.h> 24#include <qlayout.h>
25 25
26void TVListViewPrivate::setColumnWidth(int column, int width) 26void TVListViewPrivate::setColumnWidth(int column, int width)
27{ 27{
28 if(width > 70) width = 70; 28 if(width > 70) width = 70;
29 QListView::setColumnWidth(column, width); 29 QListView::setColumnWidth(column, width);
30} 30}
31 31
32void TVListViewPrivate::setSorting(int column, bool increasing) 32void TVListViewPrivate::setSorting(int column, bool increasing)
33{ 33{
34 emit sortChanged(column); 34 emit sortChanged(column);
35 QListView::setSorting(column, increasing); 35 QListView::setSorting(column, increasing);
36} 36}
37 37
38TVListViewPrivate::TVListViewPrivate(QWidget *parent, const char* name, 38TVListViewPrivate::TVListViewPrivate(QWidget *parent, const char* name,
39 WFlags fl) : QListView(parent, name, fl) { 39 WFlags fl) : QListView(parent, name, fl) {
40 ; 40 ;
41} 41}
42 42
43class TVListViewItem : public QListViewItem 43class TVListViewItem : public QListViewItem
44{ 44{
45public: 45public:
46 46
47 TVListViewItem(QListView *parent, DataElem *d); 47 TVListViewItem(QListView *parent, DataElem *d);
48 ~TVListViewItem(); 48 ~TVListViewItem();
49 49
50 QString text(int i) const 50 QString text(int i) const
51 { 51 {
52 return data_reference->toQString(i); 52 return data_reference->toQString(i);
53 } 53 }
54 54
55 /* Do nothing... all data for this item should be generated */ 55 /* Do nothing... all data for this item should be generated */
56 void setText(int i, const QString &) 56 void setText(int i, const QString &)
57 { 57 {
58 ; 58 ;
59 } 59 }
60 QString key(int i, bool a) const 60 QString key(int i, bool a) const
61 { 61 {
62 return data_reference->toSortableQString(i); 62 return data_reference->toSortableQString(i);
63 } 63 }
64 64
65 void setDataElem(DataElem *d) 65 void setDataElem(DataElem *d)
66 { 66 {
67 data_reference = d; 67 data_reference = d;
68 } 68 }
69 69
70 DataElem *getDataElem() { 70 DataElem *getDataElem() {
71 return data_reference; 71 return data_reference;
72 } 72 }
73private: 73private:
74 DataElem *data_reference; 74 DataElem *data_reference;
75}; 75};
76 76
77TVListViewItem::TVListViewItem(QListView *parent, DataElem *d) 77TVListViewItem::TVListViewItem(QListView *parent, DataElem *d)
78 : QListViewItem(parent) 78 : QListViewItem(parent)
79{ 79{
80 data_reference = d; 80 data_reference = d;
81} 81}
82 82
83TVListViewItem::~TVListViewItem() 83TVListViewItem::~TVListViewItem()
84{ 84{
85 data_reference = 0; 85 data_reference = 0;
86} 86}
87 87
88TVListView::TVListView(TableState *t, QWidget* parent = 0, 88TVListView::TVListView(TableState *t, QWidget* parent,
89 const char *name = 0, WFlags fl =0) : QWidget(parent, name, fl) 89 const char *name, WFlags fl ) : QWidget(parent, name, fl)
90{ 90{
91 if (!name) 91 if (!name)
92 setName("TVListView"); 92 setName("TVListView");
93 93
94 // the next two lines need to be rationalized. 94 // the next two lines need to be rationalized.
95 resize(318,457); 95 resize(318,457);
96 setSizePolicy(QSizePolicy((QSizePolicy::SizeType)7, 96 setSizePolicy(QSizePolicy((QSizePolicy::SizeType)7,
97 (QSizePolicy::SizeType)7, sizePolicy().hasHeightForWidth())); 97 (QSizePolicy::SizeType)7, sizePolicy().hasHeightForWidth()));
98 setCaption(tr("List View")); 98 setCaption(tr("List View"));
99 99
100 QVBoxLayout *layout = new QVBoxLayout(this); 100 QVBoxLayout *layout = new QVBoxLayout(this);
101 layout->setSpacing(0); 101 layout->setSpacing(0);
102 layout->setMargin(0); 102 layout->setMargin(0);
103 103
104 listViewDisplay = new TVListViewPrivate(this, "listViewDisplay"); 104 listViewDisplay = new TVListViewPrivate(this, "listViewDisplay");
105 layout->addWidget(listViewDisplay); 105 layout->addWidget(listViewDisplay);
106 106
107 connect(listViewDisplay, SIGNAL(currentChanged(QListViewItem *)), this, 107 connect(listViewDisplay, SIGNAL(currentChanged(QListViewItem *)), this,
108 SLOT(setCurrent(QListViewItem *))); 108 SLOT(setCurrent(QListViewItem *)));
109 connect(listViewDisplay, SIGNAL(sortChanged(int)), this, 109 connect(listViewDisplay, SIGNAL(sortChanged(int)), this,
110 SLOT(setSorting(int))); 110 SLOT(setSorting(int)));
111 111
112 listViewDisplay->setShowSortIndicator(true); 112 listViewDisplay->setShowSortIndicator(true);
113 113
114 it = new QListViewItemIterator(listViewDisplay); 114 it = new QListViewItemIterator(listViewDisplay);
115 ts = t; 115 ts = t;
116} 116}
117 117
118TVListView::~TVListView() 118TVListView::~TVListView()
119{ 119{
120} 120}
121 121
122void TVListView::addItem(DataElem *d) 122void TVListView::addItem(DataElem *d)
123{ 123{
124 TVListViewItem *i = new TVListViewItem(listViewDisplay, d); 124 TVListViewItem *i = new TVListViewItem(listViewDisplay, d);
125 125
126 delete it; 126 delete it;
127 it = new QListViewItemIterator(i); 127 it = new QListViewItemIterator(i);
128} 128}
129 129
130/* remove current (it) item */ 130/* remove current (it) item */
131void TVListView::removeItem() 131void TVListView::removeItem()
132{ 132{
133 QListViewItemIterator other(*it); 133 QListViewItemIterator other(*it);
134 134
135 QListViewItemIterator tmp = *it; 135 QListViewItemIterator tmp = *it;
136 (*it)++; 136 (*it)++;
137 if (!it->current()) { 137 if (!it->current()) {
138 *it = tmp; 138 *it = tmp;
139 (*it)--; 139 (*it)--;
140 if (!it->current()) { 140 if (!it->current()) {
141 delete it; 141 delete it;
142 it = 0; 142 it = 0;
143 } 143 }
144 } 144 }
145 145
146 delete other.current(); 146 delete other.current();
147} 147}
148 148
149void TVListView::clearItems() 149void TVListView::clearItems()
150{ 150{
151 /* This is ok since the destructor for TVListItem does not know about 151 /* This is ok since the destructor for TVListItem does not know about
152 the data_reference pointer.. and hence will leave it alone */ 152 the data_reference pointer.. and hence will leave it alone */
153 listViewDisplay->clear(); 153 listViewDisplay->clear();
154 delete it; 154 delete it;
155 it = new QListViewItemIterator(listViewDisplay); 155 it = new QListViewItemIterator(listViewDisplay);
156} 156}
157 157
158void TVListView::first() 158void TVListView::first()
159{ 159{
160 delete it; 160 delete it;
161 it = new QListViewItemIterator(listViewDisplay); 161 it = new QListViewItemIterator(listViewDisplay);
162} 162}
163 163
164void TVListView::last() 164void TVListView::last()
165{ 165{
166 qWarning("TVListView::last not yet implemented"); 166 qWarning("TVListView::last not yet implemented");
167} 167}
168 168
169void TVListView::next() 169void TVListView::next()
170{ 170{
171 QListViewItemIterator tmp = *it; 171 QListViewItemIterator tmp = *it;
172 (*it)++; 172 (*it)++;
173 if (!it->current()) { 173 if (!it->current()) {
174 *it = tmp; 174 *it = tmp;
175 } 175 }
176} 176}
177 177
178void TVListView::previous() 178void TVListView::previous()
179{ 179{
180 QListViewItemIterator tmp = *it; 180 QListViewItemIterator tmp = *it;
181 (*it)--; 181 (*it)--;
182 if (!it->current()) { 182 if (!it->current()) {
183 *it = tmp; 183 *it = tmp;
184 } 184 }
185} 185}