-rw-r--r-- | noncore/apps/tableviewer/db/common.cpp | 2 | ||||
-rw-r--r-- | noncore/apps/tableviewer/db/csvsource.cpp | 1 | ||||
-rw-r--r-- | noncore/apps/tableviewer/ui/commonwidgets.cpp | 6 | ||||
-rw-r--r-- | noncore/apps/tableviewer/ui/tvbrowseview.cpp | 4 | ||||
-rw-r--r-- | noncore/apps/tableviewer/ui/tveditview.cpp | 4 | ||||
-rw-r--r-- | noncore/apps/tableviewer/ui/tvfilterview.cpp | 4 | ||||
-rw-r--r-- | noncore/apps/tableviewer/ui/tvkeyedit.cpp | 4 | ||||
-rw-r--r-- | noncore/apps/tableviewer/ui/tvlistview.cpp | 4 |
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 */ |
640 | bool TVVariant::close(TVVariant n) | 640 | bool 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 | ||
680 | Key::Key() : kname(), kexample(), kflags(0) { } | 680 | Key::Key() : kname(), kexample(), kflags(0) { } |
681 | 681 | ||
682 | Key::Key(QString name, TVVariant example, int flags = 0) : | 682 | Key::Key(QString name, TVVariant example, int flags) : |
683 | kname(name), kexample(example), kflags(flags) { } | 683 | kname(name), kexample(example), kflags(flags) { } |
684 | 684 | ||
685 | Key::Key(const Key &other) | 685 | Key::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 | ||
692 | Key& Key::operator=(const Key& key) | 692 | Key& 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 | ||
700 | QString Key::name() const | 700 | QString Key::name() const |
701 | { | 701 | { |
702 | return QString(kname); | 702 | return QString(kname); |
703 | } | 703 | } |
704 | 704 | ||
705 | TVVariant Key::example() const | 705 | TVVariant Key::example() const |
706 | { | 706 | { |
707 | return TVVariant(kexample); | 707 | return TVVariant(kexample); |
708 | } | 708 | } |
709 | 709 | ||
710 | TVVariant::KeyType Key::type() const | 710 | TVVariant::KeyType Key::type() const |
711 | { | 711 | { |
712 | return kexample.type(); | 712 | return kexample.type(); |
713 | } | 713 | } |
714 | 714 | ||
715 | void Key::setName(const QString &name) | 715 | void Key::setName(const QString &name) |
716 | { | 716 | { |
717 | kname = QString(name); | 717 | kname = QString(name); |
718 | } | 718 | } |
719 | 719 | ||
720 | void Key::setExample(const TVVariant &e) | 720 | void Key::setExample(const TVVariant &e) |
721 | { | 721 | { |
722 | kexample = TVVariant(e); | 722 | kexample = TVVariant(e); |
723 | } | 723 | } |
724 | 724 | ||
725 | int Key::flags() const | 725 | int Key::flags() const |
726 | { | 726 | { |
727 | return kflags; | 727 | return kflags; |
728 | } | 728 | } |
729 | 729 | ||
730 | void Key::setFlags(int fl) | 730 | void Key::setFlags(int fl) |
731 | { | 731 | { |
732 | kflags = fl; | 732 | kflags = fl; |
733 | } | 733 | } |
734 | 734 | ||
735 | bool Key::delFlag() const | 735 | bool 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 | ||
742 | bool Key::newFlag() const | 742 | bool 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 | ||
749 | void Key::setDelFlag(bool v) | 749 | void 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 | ||
755 | void Key::setNewFlag(bool v) | 755 | void 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 | */ |
772 | KeyList::KeyList() : QIntDict<Key>(20) | 772 | KeyList::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 */ |
778 | KeyList::KeyList(const KeyList &k) : QIntDict<Key>(k) | 778 | KeyList::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 | ||
28 | DBCsv::DBCsv(DBStore *d) | 28 | DBCsv::DBCsv(DBStore *d) |
29 | { | 29 | { |
30 | dstore = d; | 30 | dstore = d; |
31 | } | 31 | } |
32 | 32 | ||
33 | DBCsv::~DBCsv() | 33 | DBCsv::~DBCsv() |
34 | { | 34 | { |
35 | } | 35 | } |
36 | 36 | ||
37 | QString DBCsv::type() | 37 | QString DBCsv::type() |
38 | { | 38 | { |
39 | return "csv"; | 39 | return "csv"; |
40 | } | 40 | } |
41 | 41 | ||
42 | QStringList readElem(QString in) | 42 | QStringList 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 | ||
103 | bool DBCsv::openSource(QIODevice *inDev) | 104 | bool 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 | ||
148 | bool DBCsv::saveSource(QIODevice *outDev) | 149 | bool 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 | ||
31 | DateEdit::DateEdit( QWidget *parent = 0, const char *name = 0, WFlags f = 0 ) | 31 | DateEdit::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 | ||
47 | DateEdit::~DateEdit() {} | 47 | DateEdit::~DateEdit() {} |
48 | 48 | ||
49 | QDate DateEdit::date() const | 49 | QDate DateEdit::date() const |
50 | { | 50 | { |
51 | return dateSelector->selectedDate(); | 51 | return dateSelector->selectedDate(); |
52 | } | 52 | } |
53 | 53 | ||
54 | void DateEdit::setDate(QDate d) | 54 | void 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 | ||
60 | QSizePolicy DateEdit::sizePolicy() const | 60 | QSizePolicy 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 | ||
69 | void DateEdit::clear() | 69 | void 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 | ||
77 | void DateEdit::subValueChanged() | 77 | void 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 | ||
85 | TimeEdit::TimeEdit( QWidget *parent = 0, const char *name = 0, WFlags f = 0 ) | 85 | TimeEdit::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 | ||
126 | TimeEdit::~TimeEdit() {} | 126 | TimeEdit::~TimeEdit() {} |
127 | 127 | ||
128 | QTime TimeEdit::time() const | 128 | QTime 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 | ||
152 | void TimeEdit::setTime(QTime t) | 152 | void 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 | ||
170 | QSizePolicy TimeEdit::sizePolicy() const | 170 | QSizePolicy 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 | ||
179 | void TimeEdit::clear() | 179 | void 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 | ||
188 | void TimeEdit::subValueChanged() | 188 | void TimeEdit::subValueChanged() |
189 | { | 189 | { |
190 | emit valueChanged(time()); | 190 | emit valueChanged(time()); |
191 | } | 191 | } |
192 | 192 | ||
193 | IntEdit::IntEdit( QWidget *parent = 0, const char *name = 0, WFlags f = 0 ) | 193 | IntEdit::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 | ||
200 | IntEdit::~IntEdit() {} | 200 | IntEdit::~IntEdit() {} |
201 | 201 | ||
202 | int IntEdit::value() | 202 | int IntEdit::value() |
203 | { | 203 | { |
204 | return cleanText().toInt(); | 204 | return cleanText().toInt(); |
205 | } | 205 | } |
206 | 206 | ||
207 | void IntEdit::clear() | 207 | void 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 | */ |
40 | TVBrowseView::TVBrowseView(TableState *t, QWidget* parent = 0, const char *name = 0, | 40 | TVBrowseView::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 | */ |
68 | TVBrowseView::~TVBrowseView() | 68 | TVBrowseView::~TVBrowseView() |
69 | { | 69 | { |
70 | } | 70 | } |
71 | 71 | ||
72 | void TVBrowseView::rebuildData() | 72 | void 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 */ |
86 | void TVBrowseView::reset() | 86 | void 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 | */ |
95 | void TVBrowseView::setDisplayText(const DataElem *element) | 95 | void 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 | ||
119 | void TVBrowseView::rebuildKeys() | 119 | void 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 | ||
43 | TVEditView::TVEditView(TableState *s, DataElem *d, QWidget* parent = 0, | 43 | TVEditView::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 | ||
71 | TVEditView::~TVEditView() | 71 | TVEditView::~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 */ |
76 | void TVEditView::setData(TableState *t, DataElem *d) | 76 | void 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 | ||
29 | TVFilterView::TVFilterView(TableState *t, QWidget* parent = 0, | 29 | TVFilterView::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 | */ |
105 | TVFilterView::~TVFilterView() | 105 | TVFilterView::~TVFilterView() |
106 | { | 106 | { |
107 | } | 107 | } |
108 | 108 | ||
109 | void TVFilterView::rebuildData() | 109 | void TVFilterView::rebuildData() |
110 | { | 110 | { |
111 | } | 111 | } |
112 | 112 | ||
113 | void TVFilterView::reset() | 113 | void TVFilterView::reset() |
114 | { | 114 | { |
115 | keyNameCombo->clear(); | 115 | keyNameCombo->clear(); |
116 | keyIds.clear(); | 116 | keyIds.clear(); |
117 | } | 117 | } |
118 | 118 | ||
119 | void TVFilterView::rebuildKeys() | 119 | void 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 | ||
32 | class TVKEListViewItem : public QListViewItem | 32 | class TVKEListViewItem : public QListViewItem |
33 | { | 33 | { |
34 | public: | 34 | public: |
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 | ||
89 | private: | 89 | private: |
90 | QString name; | 90 | QString name; |
91 | TVVariant::KeyType keyType; | 91 | TVVariant::KeyType keyType; |
92 | int position; | 92 | int position; |
93 | }; | 93 | }; |
94 | 94 | ||
95 | TVKeyEdit::TVKeyEdit(TableState *t, QWidget* parent = 0, const char *name = 0, | 95 | TVKeyEdit::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 | */ |
145 | TVKeyEdit::~TVKeyEdit() | 145 | TVKeyEdit::~TVKeyEdit() |
146 | { | 146 | { |
147 | } | 147 | } |
148 | 148 | ||
149 | /* SLOTS */ | 149 | /* SLOTS */ |
150 | void TVKeyEdit::newTerm() | 150 | void 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 | ||
173 | void TVKeyEdit::updateTerm(const QString &newName) | 173 | void 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 | ||
184 | void TVKeyEdit::updateTerm(int t) | 184 | void 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 | ||
26 | void TVListViewPrivate::setColumnWidth(int column, int width) | 26 | void 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 | ||
32 | void TVListViewPrivate::setSorting(int column, bool increasing) | 32 | void 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 | ||
38 | TVListViewPrivate::TVListViewPrivate(QWidget *parent, const char* name, | 38 | TVListViewPrivate::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 | ||
43 | class TVListViewItem : public QListViewItem | 43 | class TVListViewItem : public QListViewItem |
44 | { | 44 | { |
45 | public: | 45 | public: |
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 | } |
73 | private: | 73 | private: |
74 | DataElem *data_reference; | 74 | DataElem *data_reference; |
75 | }; | 75 | }; |
76 | 76 | ||
77 | TVListViewItem::TVListViewItem(QListView *parent, DataElem *d) | 77 | TVListViewItem::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 | ||
83 | TVListViewItem::~TVListViewItem() | 83 | TVListViewItem::~TVListViewItem() |
84 | { | 84 | { |
85 | data_reference = 0; | 85 | data_reference = 0; |
86 | } | 86 | } |
87 | 87 | ||
88 | TVListView::TVListView(TableState *t, QWidget* parent = 0, | 88 | TVListView::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 | ||
118 | TVListView::~TVListView() | 118 | TVListView::~TVListView() |
119 | { | 119 | { |
120 | } | 120 | } |
121 | 121 | ||
122 | void TVListView::addItem(DataElem *d) | 122 | void 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 */ |
131 | void TVListView::removeItem() | 131 | void 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 | ||
149 | void TVListView::clearItems() | 149 | void 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 | ||
158 | void TVListView::first() | 158 | void TVListView::first() |
159 | { | 159 | { |
160 | delete it; | 160 | delete it; |
161 | it = new QListViewItemIterator(listViewDisplay); | 161 | it = new QListViewItemIterator(listViewDisplay); |
162 | } | 162 | } |
163 | 163 | ||
164 | void TVListView::last() | 164 | void TVListView::last() |
165 | { | 165 | { |
166 | qWarning("TVListView::last not yet implemented"); | 166 | qWarning("TVListView::last not yet implemented"); |
167 | } | 167 | } |
168 | 168 | ||
169 | void TVListView::next() | 169 | void 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 | ||
178 | void TVListView::previous() | 178 | void 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 | } |