void AddressesDialog::updateAvailableAddressees() { d->ui->mAvailableView->clear(); d->groupDict.clear(); static const QString &personalGroup = KGlobal::staticQString( i18n( "Other Addresses" ) ); d->personal = new AddresseeViewItem( d->ui->mAvailableView, personalGroup ); d->personal->setHidden( true ); d->groupDict.insert( personalGroup, d->personal ); KABC::AddressBook *addressBook = KABC::StdAddressBook::self( true ); for( KABC::AddressBook::Iterator it = addressBook->begin(); it != addressBook->end(); ++it ) { addAddresseeToAvailable( *it, d->personal ); } d->recent = 0; updateRecentAddresses(); addDistributionLists(); if ( d->personal->childCount() > 0 ) { d->personal->setHidden( false ); } checkForSingleAvailableGroup(); }
/** Select a mail address, using the KabApi */ void TagMailDlg::slotSelectAddress() { //Based on KMail QString addr, email, emailString; QStringList result; KABC::AddressBook *addressBook = KABC::StdAddressBook::self(); KABC::AddressBook::Iterator it; for( it = addressBook->begin(); it != addressBook->end(); ++it ) { QStringList emails = (*it).emails(); QString n = (*it).prefix() + " " + (*it).givenName() + " " + (*it).additionalName() + " " + (*it).familyName() + " " + (*it).suffix(); n = n.simplifyWhiteSpace(); for( unsigned int i = 0; i < emails.count(); ++i ) { if (!emails[i].isEmpty()) { if (n.isEmpty() || (emails[i].find( "<" ) != -1)) addr = ""; else { /* do we really need quotes around this name ? */ if (n.find(QRegExp("[^ 0-9A-Za-z\\x0080-\\xFFFF]")) != -1) addr = qConfig.attrValueQuotation + n + qConfig.attrValueQuotation + " "; else addr = n + " "; } email = emails[i]; if (!addr.isEmpty() && (email.find( "<" ) == -1) && (email.find( ">" ) == -1) && (email.find( "," ) == -1)) addr += "<" + email + ">"; else addr += email; addr.stripWhiteSpace(); result.append( addr ); } } } result.sort(); if ( result.count() > 0 ) { ListDlg listDlg(result); listDlg.setCaption(i18n("Select Address")); if (!listDlg.exec()) return; emailString = listDlg.getEntry(); lineEmail->setText(emailString); } else { //Actually this may mean also other erros, but the result is the same for us: cannot get the //e-mail address KMessageBox::error(this,i18n("No addresses found.")); } }
KAB::Book::Book (Ekiga::ContactCore &_core): core(_core) { KABC::AddressBook *kab = KABC::StdAddressBook::self (); kab->load (); // FIXME: turn async! for (KABC::AddressBook::Iterator iter = kab->begin (); iter != kab->end (); iter++) { add_contact (ContactPtr (new Contact (core, &(*iter)))); } }
void JumpButtonBar::updateButtons() { int currentButton = mGroupBox->selectedId(); // the easiest way to remove all buttons ;) mButtons.setAutoDelete( true ); mButtons.clear(); mButtons.setAutoDelete( false ); QStringList characters; // calculate how many buttons are possible QFontMetrics fm = fontMetrics(); QPushButton *btn = new QPushButton( "", this ); btn->hide(); QSize buttonSize = style().sizeFromContents( QStyle::CT_PushButton, btn, fm.size( ShowPrefix, "X - X") ). expandedTo( QApplication::globalStrut() ); delete btn; int buttonHeight = buttonSize.height() + 8; uint possibleButtons = (height() / buttonHeight) - 1; QString character; KABC::AddressBook *ab = mCore->addressBook(); KABC::AddressBook::Iterator it; for ( it = ab->begin(); it != ab->end(); ++it ) { KABC::Field *field = 0; field = mCore->currentSortField(); if ( field ) { setEnabled( true ); if ( !field->value( *it ).isEmpty() ) character = field->value( *it )[ 0 ].lower(); } else { setEnabled( false ); return; } if ( !character.isEmpty() && !characters.contains( character ) ) characters.append( character ); } sortListLocaleAware( characters ); if ( characters.count() <= possibleButtons ) { // at first the easy case: all buttons fits in window for ( uint i = 0; i < characters.count(); ++i ) { JumpButton *button = new JumpButton( characters[ i ], QString::null, mGroupBox ); connect( button, SIGNAL( clicked() ), this, SLOT( letterClicked() ) ); mButtons.append( button ); button->show(); } } else { if ( possibleButtons == 0 ) // to avoid crashes on startup return; int offset = characters.count() / possibleButtons; int odd = characters.count() % possibleButtons; if ( odd ) offset++; int current = 0; for ( uint i = 0; i < possibleButtons; ++i ) { if ( characters.count() - current == 0 ) continue; if ( characters.count() - current <= possibleButtons - i ) { JumpButton *button = new JumpButton( characters[ current ], QString::null, mGroupBox ); connect( button, SIGNAL( clicked() ), this, SLOT( letterClicked() ) ); mButtons.append( button ); button->show(); current++; } else { int pos = ( current + offset >= (int)characters.count() ? characters.count() - 1 : current + offset - 1 ); QString range; for ( int j = current; j < pos + 1; ++j ) range.append( characters[ j ] ); JumpButton *button = new JumpButton( characters[ current ], characters[ pos ], mGroupBox ); connect( button, SIGNAL( clicked() ), this, SLOT( letterClicked() ) ); mButtons.append( button ); button->show(); current = ( i + 1 ) * offset; } } } if ( currentButton != -1 ) mGroupBox->setButton( currentButton ); else mGroupBox->setButton( 0 ); int maxWidth = 0; QPushButton *button; for ( button = mButtons.first(); button; button = mButtons.next() ) maxWidth = QMAX( maxWidth, button->sizeHint().width() ); setFixedWidth( maxWidth ); }