summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/addressbook/abtable.cpp13
-rw-r--r--core/pim/addressbook/abtable.h4
-rw-r--r--core/pim/addressbook/abview.cpp4
3 files changed, 19 insertions, 2 deletions
diff --git a/core/pim/addressbook/abtable.cpp b/core/pim/addressbook/abtable.cpp
index a829dc2..a2617fa 100644
--- a/core/pim/addressbook/abtable.cpp
+++ b/core/pim/addressbook/abtable.cpp
@@ -137,96 +137,102 @@ AbTable::AbTable( const QValueList<int> order, QWidget *parent, const char *name
137 137
138 contactList.clear(); 138 contactList.clear();
139 //qWarning("C'tor end"); 139 //qWarning("C'tor end");
140} 140}
141 141
142AbTable::~AbTable() 142AbTable::~AbTable()
143{ 143{
144} 144}
145 145
146void AbTable::init() 146void AbTable::init()
147{ 147{
148 // :SX showChar = '\0'; 148 // :SX showChar = '\0';
149 setNumRows( 0 ); 149 setNumRows( 0 );
150 setNumCols( 2 ); 150 setNumCols( 2 );
151 151
152 horizontalHeader()->setLabel( 0, tr( "Full Name" )); 152 horizontalHeader()->setLabel( 0, tr( "Full Name" ));
153 horizontalHeader()->setLabel( 1, tr( "Contact" )); 153 horizontalHeader()->setLabel( 1, tr( "Contact" ));
154 setLeftMargin( 0 ); 154 setLeftMargin( 0 );
155 verticalHeader()->hide(); 155 verticalHeader()->hide();
156 columnVisible = true; 156 columnVisible = true;
157} 157}
158 158
159void AbTable::setContacts( const OContactAccess::List& viewList ) 159void AbTable::setContacts( const OContactAccess::List& viewList )
160{ 160{
161 //qWarning("AbTable::setContacts()"); 161 //qWarning("AbTable::setContacts()");
162 162
163 clear(); 163 clear();
164 m_viewList = viewList; 164 m_viewList = viewList;
165 165
166 setSorting( false ); 166 setSorting( false );
167 setPaintingEnabled( FALSE ); 167 setPaintingEnabled( FALSE );
168 168
169 OContactAccess::List::Iterator it; 169 OContactAccess::List::Iterator it;
170 setNumRows( m_viewList.count() ); 170 setNumRows( m_viewList.count() );
171 int row = 0; 171 int row = 0;
172 for ( it = m_viewList.begin(); it != m_viewList.end(); ++it ) 172 for ( it = m_viewList.begin(); it != m_viewList.end(); ++it )
173 insertIntoTable( *it, row++ ); 173 insertIntoTable( *it, row++ );
174 174
175 setSorting( true ); 175 setSorting( true );
176 176
177 resort(); 177 resort();
178 178
179 updateVisible(); 179 updateVisible();
180 180
181 setPaintingEnabled( TRUE ); 181 setPaintingEnabled( TRUE );
182 182
183} 183}
184 184
185void AbTable::setOrderedList( const QValueList<int> ordered )
186{
187 intFields = ordered;
188}
189
190
185bool AbTable::selectContact( int UID ) 191bool AbTable::selectContact( int UID )
186{ 192{
187 //qWarning( "AbTable::selectContact( %d )", UID ); 193 //qWarning( "AbTable::selectContact( %d )", UID );
188 int rows = numRows(); 194 int rows = numRows();
189 AbTableItem *abi; 195 AbTableItem *abi;
190 OContact* foundContact = 0l; 196 OContact* foundContact = 0l;
191 bool found = false; 197 bool found = false;
192 198
193 setPaintingEnabled( FALSE ); 199 setPaintingEnabled( FALSE );
194 for ( int r = 0; r < rows; ++r ) { 200 for ( int r = 0; r < rows; ++r ) {
195 abi = static_cast<AbTableItem*>( item(r, 0) ); 201 abi = static_cast<AbTableItem*>( item(r, 0) );
196 foundContact = &contactList[abi]; 202 foundContact = &contactList[abi];
197 if ( foundContact -> uid() == UID ){ 203 if ( foundContact -> uid() == UID ){
198 ensureCellVisible( r, 0 ); 204 ensureCellVisible( r, 0 );
199 setCurrentCell( r, 0 ); 205 setCurrentCell( r, 0 );
200 found = true; 206 found = true;
201 break; 207 break;
202 } 208 }
203 } 209 }
204 210
205 if ( !found ){ 211 if ( !found ){
206 ensureCellVisible( 0,0 ); 212 ensureCellVisible( 0,0 );
207 setCurrentCell( 0, 0 ); 213 setCurrentCell( 0, 0 );
208 } 214 }
209 215
210 setPaintingEnabled( TRUE ); 216 setPaintingEnabled( TRUE );
211 217
212 return true; 218 return true;
213} 219}
214 220
215void AbTable::insertIntoTable( const OContact& cnt, int row ) 221void AbTable::insertIntoTable( const OContact& cnt, int row )
216{ 222{
217 //qWarning( "void AbTable::insertIntoTable( const OContact& cnt, %d )", row ); 223 //qWarning( "void AbTable::insertIntoTable( const OContact& cnt, %d )", row );
218 QString strName; 224 QString strName;
219 ContactItem contactItem; 225 ContactItem contactItem;
220 226
221 strName = findContactName( cnt ); 227 strName = findContactName( cnt );
222 contactItem = findContactContact( cnt, row ); 228 contactItem = findContactContact( cnt, row );
223 229
224 AbTableItem *ati; 230 AbTableItem *ati;
225 ati = new AbTableItem( this, QTableItem::Never, strName, contactItem.value ); 231 ati = new AbTableItem( this, QTableItem::Never, strName, contactItem.value );
226 contactList.insert( ati, cnt ); 232 contactList.insert( ati, cnt );
227 setItem( row, 0, ati ); 233 setItem( row, 0, ati );
228 ati = new AbTableItem( this, QTableItem::Never, contactItem.value, strName); 234 ati = new AbTableItem( this, QTableItem::Never, contactItem.value, strName);
229 if ( !contactItem.icon.isNull() ) 235 if ( !contactItem.icon.isNull() )
230 ati->setPixmap( contactItem.icon ); 236 ati->setPixmap( contactItem.icon );
231 setItem( row, 1, ati ); 237 setItem( row, 1, ati );
232 238
@@ -272,100 +278,103 @@ void AbTable::resort()
272OContact AbTable::currentEntry() 278OContact AbTable::currentEntry()
273{ 279{
274 //qWarning( "OContact AbTable::currentEntry()" ); 280 //qWarning( "OContact AbTable::currentEntry()" );
275 OContact cnt; 281 OContact cnt;
276 AbTableItem *abItem; 282 AbTableItem *abItem;
277 abItem = static_cast<AbTableItem*>(item( currentRow(), 0 )); 283 abItem = static_cast<AbTableItem*>(item( currentRow(), 0 ));
278 if ( abItem ) { 284 if ( abItem ) {
279 cnt = contactList[abItem]; 285 cnt = contactList[abItem];
280 //cnt = contactList[currentRow()]; 286 //cnt = contactList[currentRow()];
281 } 287 }
282 return cnt; 288 return cnt;
283} 289}
284 290
285int AbTable::currentEntry_UID() 291int AbTable::currentEntry_UID()
286{ 292{
287 return ( currentEntry().uid() ); 293 return ( currentEntry().uid() );
288} 294}
289 295
290void AbTable::clear() 296void AbTable::clear()
291{ 297{
292 //qWarning( "void AbTable::clear()" ); 298 //qWarning( "void AbTable::clear()" );
293 contactList.clear(); 299 contactList.clear();
294 300
295 setPaintingEnabled( FALSE ); 301 setPaintingEnabled( FALSE );
296 for ( int r = 0; r < numRows(); ++r ) { 302 for ( int r = 0; r < numRows(); ++r ) {
297 for ( int c = 0; c < numCols(); ++c ) { 303 for ( int c = 0; c < numCols(); ++c ) {
298 if ( cellWidget( r, c ) ) 304 if ( cellWidget( r, c ) )
299 clearCellWidget( r, c ); 305 clearCellWidget( r, c );
300 clearCell( r, c ); 306 clearCell( r, c );
301 } 307 }
302 } 308 }
303 setNumRows( 0 ); 309 setNumRows( 0 );
304 setPaintingEnabled( TRUE ); 310 setPaintingEnabled( TRUE );
305} 311}
306 312
307// Refresh updates column 2 if the contactsettings changed 313// Refresh updates column 2 if the contactsettings changed
308void AbTable::refresh() 314void AbTable::refresh()
309{ 315{
310 //qWarning( "void AbTable::refresh()" ); 316 //qWarning( "void AbTable::refresh()" );
311 int rows = numRows(); 317 int rows = numRows();
312 AbTableItem *abi; 318 AbTableItem *abi;
313 ContactItem contactItem; 319 ContactItem contactItem;
314 320
315 setPaintingEnabled( FALSE ); 321 setPaintingEnabled( FALSE );
316 for ( int r = 0; r < rows; ++r ) { 322 for ( int r = 0; r < rows; ++r ) {
317 abi = static_cast<AbTableItem*>( item(r, 0) ); 323 abi = static_cast<AbTableItem*>( item(r, 0) );
318 contactItem = findContactContact( contactList[abi], r ); 324 contactItem = findContactContact( contactList[abi], r );
319 static_cast<AbTableItem*>( item(r, 1) )->setItem( contactItem.value, abi->text() ); 325 static_cast<AbTableItem*>( item(r, 1) )->setItem( contactItem.value, abi->text() );
320 if ( !contactItem.icon.isNull() ) 326 if ( !contactItem.icon.isNull() ){
321 static_cast<AbTableItem*>( item(r, 1) )-> 327 static_cast<AbTableItem*>( item(r, 1) )->
322 setPixmap( contactItem.icon ); 328 setPixmap( contactItem.icon );
323 329 }else{
330 static_cast<AbTableItem*>( item(r, 1) )->
331 setPixmap( QPixmap() );
332 }
324 } 333 }
325 resort(); 334 resort();
326 setPaintingEnabled( TRUE ); 335 setPaintingEnabled( TRUE );
327} 336}
328 337
329void AbTable::keyPressEvent( QKeyEvent *e ) 338void AbTable::keyPressEvent( QKeyEvent *e )
330{ 339{
331 char key = toupper( e->ascii() ); 340 char key = toupper( e->ascii() );
332 341
333 if ( key >= 'A' && key <= 'Z' ) 342 if ( key >= 'A' && key <= 'Z' )
334 moveTo( key ); 343 moveTo( key );
335 344
336 //qWarning("Received key .."); 345 //qWarning("Received key ..");
337 switch( e->key() ) { 346 switch( e->key() ) {
338 case Qt::Key_Space: 347 case Qt::Key_Space:
339 case Qt::Key_Return: 348 case Qt::Key_Return:
340 case Qt::Key_Enter: 349 case Qt::Key_Enter:
341 emit signalSwitch(); 350 emit signalSwitch();
342 break; 351 break;
343 // case Qt::Key_Up: 352 // case Qt::Key_Up:
344 // qWarning("a"); 353 // qWarning("a");
345 // emit signalKeyUp(); 354 // emit signalKeyUp();
346 // break; 355 // break;
347 // case Qt::Key_Down: 356 // case Qt::Key_Down:
348 // qWarning("b"); 357 // qWarning("b");
349 // emit signalKeyDown(); 358 // emit signalKeyDown();
350 // break; 359 // break;
351 default: 360 default:
352 QTable::keyPressEvent( e ); 361 QTable::keyPressEvent( e );
353 } 362 }
354 363
355} 364}
356 365
357void AbTable::moveTo( char c ) 366void AbTable::moveTo( char c )
358{ 367{
359 qWarning( "void AbTable::moveTo( char c )" ); 368 qWarning( "void AbTable::moveTo( char c )" );
360 369
361 int rows = numRows(); 370 int rows = numRows();
362 QString value; 371 QString value;
363 AbTableItem *abi; 372 AbTableItem *abi;
364 int r; 373 int r;
365 if ( asc ) { 374 if ( asc ) {
366 r = 0; 375 r = 0;
367 while ( r < rows-1) { 376 while ( r < rows-1) {
368 abi = static_cast<AbTableItem*>( item(r, 0) ); 377 abi = static_cast<AbTableItem*>( item(r, 0) );
369 QChar first = abi->key()[0]; 378 QChar first = abi->key()[0];
370 //### is there a bug in QChar to char comparison??? 379 //### is there a bug in QChar to char comparison???
371 if ( first.row() || first.cell() >= c ) 380 if ( first.row() || first.cell() >= c )
diff --git a/core/pim/addressbook/abtable.h b/core/pim/addressbook/abtable.h
index 4e6b294..0f7bc29 100644
--- a/core/pim/addressbook/abtable.h
+++ b/core/pim/addressbook/abtable.h
@@ -33,96 +33,100 @@
33#include <qpixmap.h> 33#include <qpixmap.h>
34 34
35class AbTableItem : public QTableItem 35class AbTableItem : public QTableItem
36{ 36{
37public: 37public:
38 AbTableItem( QTable *t, EditType et, const QString &s, 38 AbTableItem( QTable *t, EditType et, const QString &s,
39 const QString &secondSortKey); 39 const QString &secondSortKey);
40 QString entryKey() const; 40 QString entryKey() const;
41 void setEntryKey( const QString & k ); 41 void setEntryKey( const QString & k );
42 virtual int alignment() const; 42 virtual int alignment() const;
43 virtual QString key() const; 43 virtual QString key() const;
44 void setItem( const QString &txt, const QString &secondKey ); 44 void setItem( const QString &txt, const QString &secondKey );
45 45
46private: 46private:
47 QString sortKey; 47 QString sortKey;
48}; 48};
49 49
50// This is a simple container, storing all contact 50// This is a simple container, storing all contact
51// information 51// information
52class ContactItem 52class ContactItem
53{ 53{
54 public: 54 public:
55 QPixmap icon; 55 QPixmap icon;
56 QString value; 56 QString value;
57}; 57};
58 58
59class AbPickItem : public QTableItem 59class AbPickItem : public QTableItem
60{ 60{
61public: 61public:
62 AbPickItem( QTable *t ); 62 AbPickItem( QTable *t );
63 63
64 QWidget *createEditor() const; 64 QWidget *createEditor() const;
65 void setContentFromEditor( QWidget *w ); 65 void setContentFromEditor( QWidget *w );
66 66
67private: 67private:
68 QGuardedPtr<QComboBox> cb; 68 QGuardedPtr<QComboBox> cb;
69}; 69};
70 70
71class AbTable : public QTable 71class AbTable : public QTable
72{ 72{
73 Q_OBJECT 73 Q_OBJECT
74 74
75public: 75public:
76 AbTable( const QValueList<int> ordered, QWidget *parent, const char *name=0 ); 76 AbTable( const QValueList<int> ordered, QWidget *parent, const char *name=0 );
77 ~AbTable(); 77 ~AbTable();
78 78
79 // Set the contacts shown in the table 79 // Set the contacts shown in the table
80 void setContacts( const OContactAccess::List& viewList ); 80 void setContacts( const OContactAccess::List& viewList );
81
82 // Set the list for primary contacts
83 void setOrderedList( const QValueList<int> ordered );
84
81 // Selects a contact of a specific UID 85 // Selects a contact of a specific UID
82 bool selectContact( int UID ); 86 bool selectContact( int UID );
83 87
84 // Get the current selected entry 88 // Get the current selected entry
85 OContact currentEntry(); 89 OContact currentEntry();
86 90
87 // Get the UID of the current selected Entry 91 // Get the UID of the current selected Entry
88 int currentEntry_UID(); 92 int currentEntry_UID();
89 93
90 QString findContactName( const OContact &entry ); 94 QString findContactName( const OContact &entry );
91 95
92 void init(); 96 void init();
93 void clear(); 97 void clear();
94 void refresh(); 98 void refresh();
95 99
96 void show(); 100 void show();
97 void setPaintingEnabled( bool e ); 101 void setPaintingEnabled( bool e );
98 void viewportPaintEvent( QPaintEvent* e); 102 void viewportPaintEvent( QPaintEvent* e);
99 void paintCell(QPainter* p, int row, int col, const QRect&, bool ); 103 void paintCell(QPainter* p, int row, int col, const QRect&, bool );
100 104
101 // addresspicker mode (What's that ? se) 105 // addresspicker mode (What's that ? se)
102 void setChoiceNames( const QStringList& list); 106 void setChoiceNames( const QStringList& list);
103 QStringList choiceNames() const; 107 QStringList choiceNames() const;
104 void setChoiceSelection( const QValueList<int>& list ); 108 void setChoiceSelection( const QValueList<int>& list );
105 QStringList choiceSelection(int index) const; 109 QStringList choiceSelection(int index) const;
106 110
107signals: 111signals:
108 void signalSwitch(); 112 void signalSwitch();
109 void signalEditor(); 113 void signalEditor();
110 void signalKeyDown(); 114 void signalKeyDown();
111 void signalKeyUp(); 115 void signalKeyUp();
112 116
113protected: 117protected:
114 virtual void keyPressEvent( QKeyEvent *e ); 118 virtual void keyPressEvent( QKeyEvent *e );
115 119
116// int rowHeight( int ) const; 120// int rowHeight( int ) const;
117// int rowPos( int row ) const; 121// int rowPos( int row ) const;
118// virtual int rowAt( int pos ) const; 122// virtual int rowAt( int pos ) const;
119 123
120 124
121protected slots: 125protected slots:
122 void moveTo( char ); 126 void moveTo( char );
123 virtual void columnClicked( int col ); 127 virtual void columnClicked( int col );
124 void itemClicked(int,int col); 128 void itemClicked(int,int col);
125 void rowHeightChanged( int row ); 129 void rowHeightChanged( int row );
126 130
127private: 131private:
128 void insertIntoTable( const OContact &cnt, int row ); 132 void insertIntoTable( const OContact &cnt, int row );
diff --git a/core/pim/addressbook/abview.cpp b/core/pim/addressbook/abview.cpp
index 7da0992..b89b794 100644
--- a/core/pim/addressbook/abview.cpp
+++ b/core/pim/addressbook/abview.cpp
@@ -198,96 +198,100 @@ void AbView::setShowByCategory( const QString& cat )
198 m_curr_category = intCat; 198 m_curr_category = intCat;
199 emit signalClearLetterPicker(); 199 emit signalClearLetterPicker();
200 200
201 load(); 201 load();
202 } 202 }
203 203
204} 204}
205 205
206void AbView::setShowToView( Views view ) 206void AbView::setShowToView( Views view )
207{ 207{
208 //qWarning("void AbView::setShowToView( View %d )", view); 208 //qWarning("void AbView::setShowToView( View %d )", view);
209 209
210 //qWarning ("Change the View (Category is: %d)", m_curr_category); 210 //qWarning ("Change the View (Category is: %d)", m_curr_category);
211 211
212 if ( m_curr_View != view ){ 212 if ( m_curr_View != view ){
213 m_prev_View = m_curr_View; 213 m_prev_View = m_curr_View;
214 m_curr_View = view; 214 m_curr_View = view;
215 215
216 updateView(); 216 updateView();
217 } 217 }
218 218
219} 219}
220 220
221void AbView::setShowByLetter( char c ) 221void AbView::setShowByLetter( char c )
222{ 222{
223 //qWarning("void AbView::setShowByLetter( %c )", c ); 223 //qWarning("void AbView::setShowByLetter( %c )", c );
224 OContact query; 224 OContact query;
225 if ( c == 0 ){ 225 if ( c == 0 ){
226 load(); 226 load();
227 return; 227 return;
228 }else{ 228 }else{
229 // If the current Backend is unable to solve the query, we will 229 // If the current Backend is unable to solve the query, we will
230 // ignore the request .. 230 // ignore the request ..
231 if ( ! m_contactdb->hasQuerySettings( OContactAccess::WildCards | OContactAccess::IgnoreCase ) ){ 231 if ( ! m_contactdb->hasQuerySettings( OContactAccess::WildCards | OContactAccess::IgnoreCase ) ){
232 return; 232 return;
233 } 233 }
234 234
235 query.setLastName( QString("%1*").arg(c) ); 235 query.setLastName( QString("%1*").arg(c) );
236 m_list = m_contactdb->queryByExample( query, OContactAccess::WildCards | OContactAccess::IgnoreCase ); 236 m_list = m_contactdb->queryByExample( query, OContactAccess::WildCards | OContactAccess::IgnoreCase );
237 clearForCategory(); 237 clearForCategory();
238 m_curr_Contact = 0; 238 m_curr_Contact = 0;
239 } 239 }
240 updateView( true ); 240 updateView( true );
241} 241}
242 242
243void AbView::setListOrder( const QValueList<int>& ordered ) 243void AbView::setListOrder( const QValueList<int>& ordered )
244{ 244{
245 m_orderedFields = ordered; 245 m_orderedFields = ordered;
246 if ( m_abTable ){
247 m_abTable->setOrderedList( ordered );
248 m_abTable->refresh();
249 }
246 updateView(); 250 updateView();
247} 251}
248 252
249 253
250QString AbView::showCategory() const 254QString AbView::showCategory() const
251{ 255{
252 return mCat.label( "Contacts", m_curr_category ); 256 return mCat.label( "Contacts", m_curr_category );
253} 257}
254 258
255void AbView::showPersonal( bool personal ) 259void AbView::showPersonal( bool personal )
256{ 260{
257 //qWarning ("void AbView::showPersonal( %d )", personal); 261 //qWarning ("void AbView::showPersonal( %d )", personal);
258 262
259 if ( personal ){ 263 if ( personal ){
260 264
261 if ( m_inPersonal ) 265 if ( m_inPersonal )
262 return; 266 return;
263 267
264 // Now switch to vCard Backend and load data. 268 // Now switch to vCard Backend and load data.
265 // The current default backend will be stored 269 // The current default backend will be stored
266 // to avoid unneeded load/stores. 270 // to avoid unneeded load/stores.
267 m_storedDB = m_contactdb; 271 m_storedDB = m_contactdb;
268 272
269 OContactAccessBackend* vcard_backend = new OContactAccessBackend_VCard( QString::null, 273 OContactAccessBackend* vcard_backend = new OContactAccessBackend_VCard( QString::null,
270 addressbookPersonalVCardName() ); 274 addressbookPersonalVCardName() );
271 m_contactdb = new OContactAccess ( "addressbook", QString::null , vcard_backend, true ); 275 m_contactdb = new OContactAccess ( "addressbook", QString::null , vcard_backend, true );
272 276
273 m_inPersonal = true; 277 m_inPersonal = true;
274 m_curr_View = CardView; 278 m_curr_View = CardView;
275 279
276 }else{ 280 }else{
277 281
278 if ( !m_inPersonal ) 282 if ( !m_inPersonal )
279 return; 283 return;
280 284
281 // Remove vCard Backend and restore default 285 // Remove vCard Backend and restore default
282 m_contactdb->save(); 286 m_contactdb->save();
283 delete m_contactdb; 287 delete m_contactdb;
284 288
285 m_contactdb = m_storedDB; 289 m_contactdb = m_storedDB;
286 m_storedDB = 0l; 290 m_storedDB = 0l;
287 291
288 m_curr_View = TableView; 292 m_curr_View = TableView;
289 m_inPersonal = false; 293 m_inPersonal = false;
290 294
291 } 295 }
292 load(); 296 load();
293} 297}