summaryrefslogtreecommitdiff
authordwmw2 <dwmw2>2002-05-09 10:59:41 (UTC)
committer dwmw2 <dwmw2>2002-05-09 10:59:41 (UTC)
commitc094cc02af3a6b3f1aaec5ee8de6d377da9b8fe1 (patch) (unidiff)
tree175282ff017c4a7f3503d78268eddd1d7b7349ca
parenta6c915bbd6d77e9c10da9358e381ce03ac9fe5fc (diff)
downloadopie-c094cc02af3a6b3f1aaec5ee8de6d377da9b8fe1.zip
opie-c094cc02af3a6b3f1aaec5ee8de6d377da9b8fe1.tar.gz
opie-c094cc02af3a6b3f1aaec5ee8de6d377da9b8fe1.tar.bz2
#include <qregexp.h>
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/addressbook/abtable.cpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/core/pim/addressbook/abtable.cpp b/core/pim/addressbook/abtable.cpp
index 124ff6c..e9e6a0b 100644
--- a/core/pim/addressbook/abtable.cpp
+++ b/core/pim/addressbook/abtable.cpp
@@ -1,222 +1,223 @@
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 Qt Palmtop Environment. 4** This file is part of Qt Palmtop 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#define QTOPIA_INTERNAL_CONTACT_MRE 21#define QTOPIA_INTERNAL_CONTACT_MRE
22 22
23#include <qpe/categoryselect.h> 23#include <qpe/categoryselect.h>
24#include <qpe/config.h> 24#include <qpe/config.h>
25#include <qpe/stringutil.h> 25#include <qpe/stringutil.h>
26#include <qpe/qcopenvelope_qws.h> 26#include <qpe/qcopenvelope_qws.h>
27 27
28#include <qasciidict.h> 28#include <qasciidict.h>
29#include <qdatetime.h> 29#include <qdatetime.h>
30#include <qfile.h> 30#include <qfile.h>
31#include <qregexp.h>
31 32
32#include "abtable.h" 33#include "abtable.h"
33 34
34#include <errno.h> 35#include <errno.h>
35#include <fcntl.h> 36#include <fcntl.h>
36#include <unistd.h> 37#include <unistd.h>
37#include <stdlib.h> 38#include <stdlib.h>
38 39
39#include <ctype.h> //toupper() for key hack 40#include <ctype.h> //toupper() for key hack
40 41
41static bool contactCompare( const Contact &cnt, const QRegExp &r, int category ); 42static bool contactCompare( const Contact &cnt, const QRegExp &r, int category );
42 43
43//### qtmail/addresslist.cpp hardcodes this filename as well 44//### qtmail/addresslist.cpp hardcodes this filename as well
44static QString journalFileName() 45static QString journalFileName()
45{ 46{
46 QString str = getenv("HOME"); 47 QString str = getenv("HOME");
47 str +="/.abjournal"; 48 str +="/.abjournal";
48 return str; 49 return str;
49} 50}
50 51
51 52
52 53
53/*! 54/*!
54 \class AbTableItem abtable.h 55 \class AbTableItem abtable.h
55 56
56 \brief QTableItem based class for showing a field of an entry 57 \brief QTableItem based class for showing a field of an entry
57*/ 58*/
58 59
59AbTableItem::AbTableItem( QTable *t, EditType et, const QString &s, 60AbTableItem::AbTableItem( QTable *t, EditType et, const QString &s,
60 const QString &secondSortKey) 61 const QString &secondSortKey)
61 : QTableItem( t, et, s ) 62 : QTableItem( t, et, s )
62{ 63{
63 // sortKey = s.lower() + QChar( '\0' ) + secondSortKey.lower(); 64 // sortKey = s.lower() + QChar( '\0' ) + secondSortKey.lower();
64 sortKey = Qtopia::buildSortKey( s, secondSortKey ); 65 sortKey = Qtopia::buildSortKey( s, secondSortKey );
65} 66}
66 67
67int AbTableItem::alignment() const 68int AbTableItem::alignment() const
68{ 69{
69 return AlignLeft|AlignVCenter; 70 return AlignLeft|AlignVCenter;
70} 71}
71 72
72QString AbTableItem::key() const 73QString AbTableItem::key() const
73{ 74{
74 return sortKey; 75 return sortKey;
75} 76}
76 77
77// A way to reset the item, without out doing a delete or a new... 78// A way to reset the item, without out doing a delete or a new...
78void AbTableItem::setItem( const QString &txt, const QString &secondKey ) 79void AbTableItem::setItem( const QString &txt, const QString &secondKey )
79{ 80{
80 setText( txt ); 81 setText( txt );
81 sortKey = Qtopia::buildSortKey( txt, secondKey ); 82 sortKey = Qtopia::buildSortKey( txt, secondKey );
82 83
83 // sortKey = txt.lower() + QChar( '\0' ) + secondKey.lower(); 84 // sortKey = txt.lower() + QChar( '\0' ) + secondKey.lower();
84} 85}
85 86
86/*! 87/*!
87 \class AbPickItem abtable.h 88 \class AbPickItem abtable.h
88 89
89 \brief QTableItem based class for showing slection of an entry 90 \brief QTableItem based class for showing slection of an entry
90*/ 91*/
91 92
92AbPickItem::AbPickItem( QTable *t ) : 93AbPickItem::AbPickItem( QTable *t ) :
93 QTableItem(t, WhenCurrent, "?") 94 QTableItem(t, WhenCurrent, "?")
94{ 95{
95} 96}
96 97
97QWidget *AbPickItem::createEditor() const 98QWidget *AbPickItem::createEditor() const
98{ 99{
99 QComboBox* combo = new QComboBox( table()->viewport() ); 100 QComboBox* combo = new QComboBox( table()->viewport() );
100 ( (AbPickItem*)this )->cb = combo; 101 ( (AbPickItem*)this )->cb = combo;
101 AbTable* t = static_cast<AbTable*>(table()); 102 AbTable* t = static_cast<AbTable*>(table());
102 QStringList c = t->choiceNames(); 103 QStringList c = t->choiceNames();
103 int cur = 0; 104 int cur = 0;
104 for (QStringList::ConstIterator it = c.begin(); it!=c.end(); ++it) { 105 for (QStringList::ConstIterator it = c.begin(); it!=c.end(); ++it) {
105 if ( *it == text() ) 106 if ( *it == text() )
106 cur = combo->count(); 107 cur = combo->count();
107 combo->insertItem(*it); 108 combo->insertItem(*it);
108 } 109 }
109 combo->setCurrentItem(cur); 110 combo->setCurrentItem(cur);
110 return combo; 111 return combo;
111} 112}
112 113
113void AbPickItem::setContentFromEditor( QWidget *w ) 114void AbPickItem::setContentFromEditor( QWidget *w )
114{ 115{
115 if ( w->inherits("QComboBox") ) 116 if ( w->inherits("QComboBox") )
116 setText( ( (QComboBox*)w )->currentText() ); 117 setText( ( (QComboBox*)w )->currentText() );
117 else 118 else
118 QTableItem::setContentFromEditor( w ); 119 QTableItem::setContentFromEditor( w );
119} 120}
120 121
121/*! 122/*!
122 \class AbTable abtable.h 123 \class AbTable abtable.h
123 124
124 \brief QTable based class for showing a list of entries 125 \brief QTable based class for showing a list of entries
125*/ 126*/
126 127
127AbTable::AbTable( const QValueList<int> *order, QWidget *parent, const char *name ) 128AbTable::AbTable( const QValueList<int> *order, QWidget *parent, const char *name )
128// #ifdef QT_QTABLE_NOHEADER_CONSTRUCTOR 129// #ifdef QT_QTABLE_NOHEADER_CONSTRUCTOR
129// : QTable( 0, 0, parent, name, TRUE ), 130// : QTable( 0, 0, parent, name, TRUE ),
130// #else 131// #else
131 : QTable( parent, name ), 132 : QTable( parent, name ),
132// #endif 133// #endif
133 lastSortCol( -1 ), 134 lastSortCol( -1 ),
134 asc( TRUE ), 135 asc( TRUE ),
135 intFields( order ), 136 intFields( order ),
136 currFindRow( -2 ), 137 currFindRow( -2 ),
137 mCat( 0 ) 138 mCat( 0 )
138{ 139{
139 mCat.load( categoryFileName() ); 140 mCat.load( categoryFileName() );
140 setSelectionMode( NoSelection ); 141 setSelectionMode( NoSelection );
141 init(); 142 init();
142 setSorting( TRUE ); 143 setSorting( TRUE );
143 connect( this, SIGNAL(clicked(int,int,int,const QPoint &)), 144 connect( this, SIGNAL(clicked(int,int,int,const QPoint &)),
144 this, SLOT(itemClicked(int,int)) ); 145 this, SLOT(itemClicked(int,int)) );
145} 146}
146 147
147AbTable::~AbTable() 148AbTable::~AbTable()
148{ 149{
149} 150}
150 151
151void AbTable::init() 152void AbTable::init()
152{ 153{
153 showChar = '\0'; 154 showChar = '\0';
154 setNumRows( 0 ); 155 setNumRows( 0 );
155 setNumCols( 2 ); 156 setNumCols( 2 );
156 157
157 horizontalHeader()->setLabel( 0, tr( "Full Name" )); 158 horizontalHeader()->setLabel( 0, tr( "Full Name" ));
158 horizontalHeader()->setLabel( 1, tr( "Contact" )); 159 horizontalHeader()->setLabel( 1, tr( "Contact" ));
159 setLeftMargin( 0 ); 160 setLeftMargin( 0 );
160 verticalHeader()->hide(); 161 verticalHeader()->hide();
161} 162}
162 163
163void AbTable::columnClicked( int col ) 164void AbTable::columnClicked( int col )
164{ 165{
165 if ( !sorting() ) 166 if ( !sorting() )
166 return; 167 return;
167 168
168 if ( lastSortCol == -1 ) 169 if ( lastSortCol == -1 )
169 lastSortCol = col; 170 lastSortCol = col;
170 171
171 if ( col == lastSortCol ) { 172 if ( col == lastSortCol ) {
172 asc = !asc; 173 asc = !asc;
173 } else { 174 } else {
174 lastSortCol = col; 175 lastSortCol = col;
175 asc = TRUE; 176 asc = TRUE;
176 } 177 }
177 resort(); 178 resort();
178} 179}
179 180
180void AbTable::resort() 181void AbTable::resort()
181{ 182{
182 if ( sorting() ) { 183 if ( sorting() ) {
183 if ( lastSortCol == -1 ) 184 if ( lastSortCol == -1 )
184 lastSortCol = 0; 185 lastSortCol = 0;
185 sortColumn( lastSortCol, asc, TRUE ); 186 sortColumn( lastSortCol, asc, TRUE );
186 updateVisible(); 187 updateVisible();
187 } 188 }
188} 189}
189 190
190Contact AbTable::currentEntry() 191Contact AbTable::currentEntry()
191{ 192{
192 Contact cnt; 193 Contact cnt;
193 AbTableItem *abItem; 194 AbTableItem *abItem;
194 abItem = static_cast<AbTableItem*>(item( currentRow(), 0 )); 195 abItem = static_cast<AbTableItem*>(item( currentRow(), 0 ));
195 if ( abItem ) { 196 if ( abItem ) {
196 cnt = contactList[abItem]; 197 cnt = contactList[abItem];
197 } 198 }
198 return cnt; 199 return cnt;
199} 200}
200 201
201void AbTable::replaceCurrentEntry( const Contact &newContact ) 202void AbTable::replaceCurrentEntry( const Contact &newContact )
202{ 203{
203 int row = currentRow(); 204 int row = currentRow();
204 updateJournal( newContact, Contact::ACTION_REPLACE, row ); 205 updateJournal( newContact, Contact::ACTION_REPLACE, row );
205 updateVisible(); 206 updateVisible();
206 207
207 journalFreeReplace( newContact, row ); 208 journalFreeReplace( newContact, row );
208} 209}
209 210
210void AbTable::deleteCurrentEntry() 211void AbTable::deleteCurrentEntry()
211{ 212{
212 int row = currentRow(); 213 int row = currentRow();
213 AbTableItem *abItem; 214 AbTableItem *abItem;
214 abItem = static_cast<AbTableItem*>(item( row, 0 )); 215 abItem = static_cast<AbTableItem*>(item( row, 0 ));
215 Contact oldContact; 216 Contact oldContact;
216 oldContact = contactList[abItem]; 217 oldContact = contactList[abItem];
217 updateJournal( oldContact, Contact::ACTION_REMOVE, row ); 218 updateJournal( oldContact, Contact::ACTION_REMOVE, row );
218 219
219 // a little wasteful, but it ensure's there is only one place 220 // a little wasteful, but it ensure's there is only one place
220 // where we delete. 221 // where we delete.
221 journalFreeRemove( row ); 222 journalFreeRemove( row );
222 updateVisible(); 223 updateVisible();