QString SeasidePerson::sectionBucket() const { if (displayLabel().isEmpty()) return QString(); // TODO: won't be at all correct for localisation // for some locales (asian in particular), we may need multiple bytes - not // just the first - also, we should use QLocale (or ICU) to uppercase, not // QString, as QString uses C locale. return displayLabel().at(0).toUpper(); }
void SeasidePerson::recalculateDisplayLabel() { QString oldDisplayLabel = displayLabel(); QString newDisplayLabel = generateDisplayLabel(mContact); // TODO: would be lovely if mobility would let us store this somehow if (oldDisplayLabel != newDisplayLabel) { mDisplayLabel = newDisplayLabel; emit displayLabelChanged(); } }
/*! * Generate the display label * \a contact to read the data from . * \a detailList contains the details to be read from the contact * \return synthesised display label */ QString CntDisplayLabel::generateDisplayLabel( const QContact &contact, const QList<QList<QPair<QLatin1String, QLatin1String> > > detailList) const { // Default to empty display label. It is up to the client to create a // localised presentation of a contact without a name. QString displayLabel(""); //loop through the details and create display label for(int i = 0; i < detailList.count() && displayLabel.isEmpty(); i++ ) { QList<QPair<QLatin1String, QLatin1String> > detailPairList = detailList.at(i); QContactDetail contactDetail; for(int j = 0; j < detailPairList.count(); j++) { contactDetail = contact.detail(detailPairList.at(j).first); if(displayLabel.isEmpty()){ //read the value and set it as display label displayLabel = contactDetail.value(detailPairList.at(j).second); } else{ //read the value and append it to the display label QString label = contactDetail.value(detailPairList.at(j).second); if(!label.isEmpty()) { #ifdef SYMBIAN_BACKEND_USE_SQLITE // Inlcude a comma if needed in the display label if (m_nameOrder == CntOrderLastCommaFirst) displayLabel.append(comma()); #endif displayLabel.append(delimiter()); displayLabel.append(label); } } } } return displayLabel; }