⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 contactfieldlist.cpp

📁 Trolltech公司发布的图形界面操作系统。可在qt-embedded-2.3.10平台上编译为嵌入式图形界面操作系统。
💻 CPP
📖 第 1 页 / 共 2 页
字号:
    m_noMatches = tr("No matches.");}void ContactFieldList::viewportPaintEvent( QPaintEvent *e ){    QListBox::viewportPaintEvent( e );    if( !count() )    {	QWidget *vp = viewport();	QPainter p( vp );	QFont f = p.font();	f.setBold( TRUE );	f.setItalic( TRUE );	p.setFont( f );	p.drawText( 0, 0, vp->width(), vp->height(), Qt::AlignCenter, 		( filter().isEmpty() ? tr("No items.") : m_noMatches ) );    }}void ContactFieldList::contactsChanged(){    mAllContacts = contacts.sortedContacts();    refresh();}void ContactFieldList::focusInEvent( QFocusEvent * ){#ifdef QTOPIA_PHONE    if( !Global::mousePreferred() ) {	if( !isModalEditing() )	    setModalEditing( TRUE );    }#endif}void ContactFieldList::setFilter( const QString &f ){    if( f != mFilter )    {	mFilter = f;	refresh();    }}QString ContactFieldList::filter() const{    return mFilter;}void ContactFieldList::refresh(){    clear();    mIndexToContact.clear();}QPixmap ContactFieldList::fieldTypePixmap( ContactFieldListItem::FieldType type ){    if( type == ContactFieldListItem::None )	return QPixmap();    QString pixString = "addressbook/";    switch( type )    {	case ContactFieldListItem::HomePhone:	    pixString += "homephone";	    break;	case ContactFieldListItem::HomeFax:	    pixString += "homefax";	    break;	case ContactFieldListItem::HomeMobile:	    pixString += "homemobile";	    break;	case ContactFieldListItem::BusinessPhone:	    pixString += "businessphone";	    break;	case ContactFieldListItem::BusinessFax:	    pixString += "businessfax";	    break;	case ContactFieldListItem::BusinessMobile:	    pixString += "businessmobile";	    break;	case ContactFieldListItem::BusinessPager:	    pixString += "businesspager";	    break;	case ContactFieldListItem::Email:	    pixString += "email";	    break;	default:	    qDebug("pixmap for unknown field type not yet implemented TODO");	    return QPixmap();    }    QPixmap fieldTypePix;    QPixmap *cached = QPixmapCache::find( pixString + "-cfl" );    if( cached )    {	fieldTypePix = *cached;    }    else    {	fieldTypePix.convertFromImage( Image::loadScaled( Resource::findPixmap( pixString ), 24, 24 ) );	QPixmapCache::insert( pixString + "-cfl", fieldTypePix );    }    return fieldTypePix;}QPixmap ContactFieldList::contactPixmap( const PimContact &cnt ){    // XXX : Copied from the addressbook -mrb    //try and get the contact's pixmap if it has it, otherwise load the generic one    QString pFileName = cnt.customField("photofile");    if( !pFileName.isEmpty() )    {	QPixmap *cached = QPixmapCache::find( "pimcontact"+cnt.uid().toString()+"-cfl" );	if( cached )	{	    return *cached;	}	else	{	    QString baseDirStr = Global::applicationFileName( "addressbook", "contactimages/" );	    QImage port = Image::loadPortrait(baseDirStr+pFileName, 24, 30);	    if( !port.isNull() )	    {		QPixmap cp;		if( cp.convertFromImage( port ) )		{		    QPixmapCache::insert( "pimcontact"+cnt.uid().toString()+"-cfl", cp );		    return cp;		}	    }	}    }    /* at this point the contact doesn't have an image or loading of cached image failed */    QPixmap *cached = QPixmapCache::find( "addressbook/generic-contact-cfl" );    if( cached )    {	return *cached;    }    else    {	QPixmap gp;	gp.convertFromImage( Image::loadPortrait( 			    Resource::findPixmap( "addressbook/generic-contact" ), 24, 30 ) );	QPixmapCache::insert( "addressbook/generic-contact-cfl", gp );	return gp;    }}void ContactFieldList::reset(){    mAllContacts = contacts.sortedContacts();    mIndexToContact.clear();    mSelected.clear();    clear();    setFilter( QString::null );}QString ContactFieldList::extraInfoText( int ) const{    return QString::null;}void ContactFieldList::setAllowMultiple( bool allowMultiple ){    mAllowMultiple = allowMultiple;}bool ContactFieldList::allowMultiple() const{    return mAllowMultiple;}void ContactFieldList::itemClicked( QListBoxItem *i ){    int idx = index( i );    if( idx < 0 )	return;    itemClicked( idx );}void ContactFieldList::itemClicked( int idx ){    QString clickedId = ((ContactFieldListItem *)item( idx ))->id();    if( mSelected.contains( clickedId ) && allowMultiple() ) //previously selected and in multiple mode - deselect    {	mSelected.remove( clickedId );    }    else // may contain item in single mode, or no selection for this in either mode    {	if( !allowMultiple() )	    mSelected.clear();	mSelected += clickedId;    }    triggerUpdate( FALSE );}void ContactFieldList::setSelectionMode( QListBox::SelectionMode m ){    //always set single selection mode on the list box    QListBox::setSelectionMode( QListBox::Single );    if( m == QListBox::Single )    {	setAllowMultiple( FALSE );    }    else if( m == QListBox::Multi || m == QListBox::Extended )    {	setAllowMultiple( TRUE );    }    else    {	qWarning("ContactFieldlist::setSelectionMode - NoSelection mode not supported.");    }}QValueList<int> ContactFieldList::selected() const{    if( filter().length() && allowMultiple() )	qDebug("BUG : ContactFieldList::selected() called on a filtered list that allows multiple selection.");    QValueList<int> selectedIndices;    QValueList<QString> selectedIds = mSelected;    for( uint i = 0 ; i < count() ; ++i )    {	ContactFieldListItem *ci = (ContactFieldListItem *)item( i );	for( uint j = 0 ; j < selectedIds.count() ; ++j )	{	    if( selectedIds[j] == ci->id() )	    {		selectedIndices += i;		selectedIds.remove( selectedIds.at( j ) );		break;	    }	}	if( !selectedIds.count() )	    break;    }    return selectedIndices;}PimContact ContactFieldList::contactAt( int idx ) const{    // int(count()) as count will never be past end of ints    if( idx >= 0 && idx < int(count()) && mIndexToContact.contains( idx ) )	return PimContact( *(mIndexToContact[idx] ) );    else	return PimContact();}int ContactFieldList::fieldTypeAt( int idx ) const{    // int(count()) as count will never be past end of ints    if( idx < 0 || idx >= int(count()) )	return -1;    return (int)((ContactFieldListItem *)item(idx))->fieldType();}QString ContactFieldList::fieldDataAt( int idx ) const{    int ft = fieldTypeAt( idx );    if( ft == -1 || !mIndexToContact.contains( idx ) )	return QString::null;    return mIndexToContact[idx]->field( ft );}void ContactFieldList::setSelectedFields( const QStringList &fieldData ){    if( filter().length() )    {	qWarning("ContactFieldList::setSelectedFields called on filtered list - reseting filter.");	setFilter( QString::null );    }    mSelected.clear();    QStringList fd = fieldData;    if( !allowMultiple() && fd.count() > 1 )    {	qWarning("ContactFieldList::setSelectedFields - Passed multiple fields in single selection mode. Only using first field.");	QString tmp = fd.first();	fd.clear();	fd += tmp;    }    for( uint i = 0 ; i < count() ; ++i )    {	QString itemFieldData = fieldDataAt( i );	ContactFieldListItem *ci = (ContactFieldListItem *)item( i );	for( uint j = 0 ; j < fd.count() ; ++j )	{	    if( itemFieldData == fd[j] )	    {		mSelected += ci->id();		QStringList::Iterator rit = fd.at( j );		fd.remove( rit );		if( !allowMultiple() )		    //physically select the list box item in single mode		    setSelected( i, TRUE );		break;	    }	}	if( !fd.count() )	    break;    }    //for everything that's remaining in fd, couldn't find matching items in the list    //just store it and make it available to the caller    mUnknownFieldData = fd;}QStringList ContactFieldList::unknownFieldData() const{    return mUnknownFieldData;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -