Diffstat (limited to 'core/pim/addressbook/abtable.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | core/pim/addressbook/abtable.cpp | 85 |
1 files changed, 42 insertions, 43 deletions
diff --git a/core/pim/addressbook/abtable.cpp b/core/pim/addressbook/abtable.cpp index 29f4383..cd77b13 100644 --- a/core/pim/addressbook/abtable.cpp +++ b/core/pim/addressbook/abtable.cpp @@ -11,44 +11,43 @@ ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ +#include <opie2/opimrecordlist.h> + #include <qpe/timestring.h> #include <qpe/resource.h> -#include <opie/orecordlist.h> - - #include "abtable.h" #include <errno.h> #include <fcntl.h> #include <unistd.h> #include <stdlib.h> #include <ctype.h> //toupper() for key hack #if 0 /*! \class AbTableItem abtable.h - + \brief QTableItem based class for showing a field of an entry */ AbTableItem::AbTableItem( QTable *t, EditType et, const QString &s, const QString &secondSortKey) : QTableItem( t, et, s ) { // sortKey = s.lower() + QChar( '\0' ) + secondSortKey.lower(); sortKey = Qtopia::buildSortKey( s, secondSortKey ); } int AbTableItem::alignment() const @@ -57,31 +56,31 @@ int AbTableItem::alignment() const } QString AbTableItem::key() const { return sortKey; } // A way to reset the item, without out doing a delete or a new... void AbTableItem::setItem( const QString &txt, const QString &secondKey ) { setText( txt ); sortKey = Qtopia::buildSortKey( txt, secondKey ); - + // sortKey = txt.lower() + QChar( '\0' ) + secondKey.lower(); } /*! \class AbPickItem abtable.h - + \brief QTableItem based class for showing slection of an entry */ AbPickItem::AbPickItem( QTable *t ) : QTableItem(t, WhenCurrent, "?") { } QWidget *AbPickItem::createEditor() const { QComboBox* combo = new QComboBox( table()->viewport() ); ( (AbPickItem*)this )->cb = combo; @@ -100,25 +99,25 @@ QWidget *AbPickItem::createEditor() const void AbPickItem::setContentFromEditor( QWidget *w ) { if ( w->inherits("QComboBox") ) setText( ( (QComboBox*)w )->currentText() ); else QTableItem::setContentFromEditor( w ); } #endif /*! \class AbTable abtable.h - + \brief QTable based class for showing a list of entries */ AbTable::AbTable( const QValueList<int> order, QWidget *parent, const char *name ) : QTable( parent, name ), lastSortCol( -1 ), asc( TRUE ), intFields( order ), enablePainting( true ), columnVisible( true ), countNested( 0 ) { @@ -134,69 +133,69 @@ AbTable::AbTable( const QValueList<int> order, QWidget *parent, const char *name // qWarning("C'tor end"); } AbTable::~AbTable() { } void AbTable::init() { // :SX showChar = '\0'; setNumRows( 0 ); setNumCols( 2 ); - + horizontalHeader()->setLabel( 0, tr( "Full Name" )); horizontalHeader()->setLabel( 1, tr( "Contact" )); setLeftMargin( 0 ); verticalHeader()->hide(); columnVisible = true; } -void AbTable::setContacts( const OContactAccess::List& viewList ) +void AbTable::setContacts( const Opie::OPimContactAccess::List& viewList ) { qWarning("AbTable::setContacts()"); clear(); m_viewList = viewList; setSorting( false ); setPaintingEnabled( FALSE ); - - OContactAccess::List::Iterator it; + + Opie::OPimContactAccess::List::Iterator it; setNumRows( m_viewList.count() ); // int row = 0; // for ( it = m_viewList.begin(); it != m_viewList.end(); ++it ) // insertIntoTable( *it, row++ ); - + // setSorting( true ); // resort(); updateVisible(); setPaintingEnabled( TRUE ); } void AbTable::setOrderedList( const QValueList<int> ordered ) { intFields = ordered; } bool AbTable::selectContact( int UID ) { qWarning( "AbTable::selectContact( %d )", UID ); int rows = numRows(); - OContact* foundContact = 0l; + Opie::OPimContact* foundContact = 0l; bool found = false; setPaintingEnabled( FALSE ); qWarning( "search start" ); for ( int r = 0; r < rows; ++r ) { if ( m_viewList.uidAt( r ) == UID ){ ensureCellVisible( r, 0 ); setCurrentCell( r, 0 ); found = true; break; } } @@ -204,57 +203,57 @@ bool AbTable::selectContact( int UID ) if ( !found ){ ensureCellVisible( 0,0 ); setCurrentCell( 0, 0 ); } setPaintingEnabled( TRUE ); return true; } #if 0 -void AbTable::insertIntoTable( const OContact& cnt, int row ) +void AbTable::insertIntoTable( const Opie::OPimContact& cnt, int row ) { - qWarning( "void AbTable::insertIntoTable( const OContact& cnt, %d )", row ); + qWarning( "void AbTable::insertIntoTable( const Opie::OPimContact& cnt, %d )", row ); QString strName; ContactItem contactItem; - + strName = findContactName( cnt ); contactItem = findContactContact( cnt, row ); - + AbTableItem *ati; ati = new AbTableItem( this, QTableItem::Never, strName, contactItem.value ); contactList.insert( ati, cnt ); setItem( row, 0, ati ); ati = new AbTableItem( this, QTableItem::Never, contactItem.value, strName); if ( !contactItem.icon.isNull() ) ati->setPixmap( contactItem.icon ); setItem( row, 1, ati ); - + //### cannot do this; table only has two columns at this point // setItem( row, 2, new AbPickItem( this ) ); - + } #endif void AbTable::columnClicked( int col ) { if ( !sorting() ) return; - + if ( lastSortCol == -1 ) lastSortCol = col; - + if ( col == lastSortCol ) { asc = !asc; } else { lastSortCol = col; asc = TRUE; } //QMessageBox::information( this, "resort", "columnClicked" ); resort(); } void AbTable::resort() { @@ -263,26 +262,26 @@ void AbTable::resort() setPaintingEnabled( FALSE ); if ( sorting() ) { if ( lastSortCol == -1 ) lastSortCol = 0; sortColumn( lastSortCol, asc, TRUE ); //QMessageBox::information( this, "resort", "resort" ); updateVisible(); } setPaintingEnabled( TRUE ); #endif } -OContact AbTable::currentEntry() -{ +Opie::OPimContact AbTable::currentEntry() +{ return m_viewList[currentRow()]; } int AbTable::currentEntry_UID() { return ( currentEntry().uid() ); } void AbTable::clear() { qWarning( "void AbTable::clear()" ); // contactList.clear(); @@ -322,53 +321,53 @@ void AbTable::refresh() setPixmap( QPixmap() ); } } resort(); setPaintingEnabled( TRUE ); #endif } void AbTable::keyPressEvent( QKeyEvent *e ) { char key = toupper( e->ascii() ); - + if ( key >= 'A' && key <= 'Z' ) moveTo( key ); - + // qWarning("Received key .."); switch( e->key() ) { case Qt::Key_Space: case Qt::Key_Return: case Qt::Key_Enter: emit signalSwitch(); break; // case Qt::Key_Up: // qWarning("a"); // emit signalKeyUp(); // break; // case Qt::Key_Down: // qWarning("b"); // emit signalKeyDown(); // break; default: QTable::keyPressEvent( e ); } - + } void AbTable::moveTo( char c ) { qWarning( "void AbTable::moveTo( char c ) NOT IMPLEMENTED !!" ); - + #if 0 int rows = numRows(); QString value; AbTableItem *abi; int r; if ( asc ) { r = 0; while ( r < rows-1) { abi = static_cast<AbTableItem*>( item(r, 0) ); QChar first = abi->key()[0]; //### is there a bug in QChar to char comparison??? if ( first.row() || first.cell() >= c ) @@ -385,25 +384,25 @@ void AbTable::moveTo( char c ) if ( first.row() || first.cell() >= c ) break; r--; } } setCurrentCell( r, currentColumn() ); #endif } #if 0 // Useless.. Nobody uses it .. (se) -QString AbTable::findContactName( const OContact &entry ) +QString AbTable::findContactName( const Opie::OPimContact &entry ) { // We use the fileAs, then company, defaultEmail QString str; str = entry.fileAs(); if ( str.isEmpty() ) { str = entry.company(); if ( str.isEmpty() ) { str = entry.defaultEmail(); } } return str; } @@ -466,35 +465,35 @@ void QTable::paintEmptyArea( QPainter *p, int cx, int cy, int cw, int ch ) // } // int AbTable::rowAt( int pos ) const // { // return QMIN( pos/18, numRows()-1 ); // } void AbTable::fitColumns() { qWarning( "void AbTable::fitColumns()" ); - int contentsWidth = visibleWidth() / 2; + int contentsWidth = visibleWidth() / 2; // Fix to better value - // contentsWidth = 130; + // contentsWidth = 130; setPaintingEnabled( FALSE ); - + if ( columnVisible == false ){ showColumn(0); columnVisible = true; } - + // qWarning("Width: %d", contentsWidth); setColumnWidth( 0, contentsWidth ); adjustColumn(1); if ( columnWidth(1) < contentsWidth ) setColumnWidth( 1, contentsWidth ); setPaintingEnabled( TRUE ); } void AbTable::show() { @@ -538,70 +537,70 @@ QStringList AbTable::choiceNames() const } #endif void AbTable::setChoiceSelection( const QValueList<int>& list ) { intFields = list; } QStringList AbTable::choiceSelection(int /*index*/) const { QStringList r; /* ###### - + QString selname = choicenames.at(index); for (each row) { - OContact *c = contactForRow(row); + Opie::OPimContact *c = contactForRow(row); if ( text(row,2) == selname ) { r.append(c->email); } } - + */ return r; } void AbTable::updateVisible() { // qWarning("void AbTable::updateVisible()"); int visible, totalRows, row, selectedRow = 0; - + visible = 0; - + setPaintingEnabled( FALSE ); realignTable(); totalRows = numRows(); for ( row = 0; row < totalRows; row++ ) { if ( rowHeight(row) == 0 ) { showRow( row ); adjustRow( row ); if ( isSelected( row,0 ) || isSelected( row,1 ) ) selectedRow = row; } visible++; } if ( selectedRow ) setCurrentCell( selectedRow, 0 ); if ( !visible ) setCurrentCell( -1, 0 ); - + setPaintingEnabled( TRUE ); } void AbTable::setPaintingEnabled( bool e ) { // qWarning("IN void AbTable::setPaintingEnabled( %d )->Nested: %d", e, countNested ); if ( e ) { if ( countNested > 0 ) --countNested; if ( ! countNested ){ @@ -622,78 +621,78 @@ void AbTable::viewportPaintEvent( QPaintEvent* e ) { // qWarning(" void AbTable::viewportPaintEvent( QPaintEvent* e ) -> %d", enablePainting); if ( enablePainting ) QTable::viewportPaintEvent( e ); } void AbTable::paintCell(QPainter* p, int row, int col, const QRect& cr, bool ) { const QColorGroup &cg = colorGroup(); p->save(); //qWarning( "Paint row: %d", row ); - OContact act_contact = m_viewList[row]; + Opie::OPimContact act_contact = m_viewList[row]; // Paint alternating background bars if ( (row % 2 ) == 0 ) { p->fillRect( 0, 0, cr.width(), cr.height(), cg.brush( QColorGroup::Base ) ); p->setPen( QPen( cg.text() ) ); } else { p->fillRect( 0, 0, cr.width(), cr.height(), cg.brush( QColorGroup::Background ) ); p->setPen( QPen( cg.buttonText() ) ); } QFont f = p->font(); QFontMetrics fm(f); int marg = 2; int x = 0; int y = ( cr.height() - 14 ) / 2; QString nameText = act_contact.fileAs(); switch( col ){ - case 0: + case 0: p->drawText( x + marg,2 + fm.ascent(), nameText ); break; case 1:{ ContactItem contactItem = findContactContact( act_contact, 0 ); QPixmap contactPic = contactItem.icon; /* pixmap( row, col ); */ QString contactText = contactItem.value; - + if ( !contactPic.isNull() ) { p->drawPixmap( x + marg, y, contactPic ); - p->drawText( x + marg + contactPic.width() + p->drawText( x + marg + contactPic.width() + 4,2 + fm.ascent(), contactText ); } else { p->drawText( x + marg,2 + fm.ascent(), contactText ); } } break; } p->restore(); } void AbTable::rowHeightChanged( int row ) { if ( enablePainting ) QTable::rowHeightChanged( row ); } -ContactItem AbTable::findContactContact( const OContact &entry, int /* row */ ) +ContactItem AbTable::findContactContact( const Opie::OPimContact &entry, int /* row */ ) { ContactItem item; item.value = ""; for ( QValueList<int>::ConstIterator it = intFields.begin(); it != intFields.end(); ++it ) { switch ( *it ) { default: break; case Qtopia::Title: |