QVariant PlaceListModel::data (const QModelIndex &index, int role) const { int idx = index.row (); if (idx < 0 || m_data.count () <= idx) return QVariant(); Place *place = m_data[idx]; switch (role) { case NAME: return place->name (); case PUBKEY: return place->pubKeyString (); case TYPE: return place->type (); case DESC: return place->desc (); case THREADS: return &m_threads[idx]; default: return QVariant(); } }
/*! From QAbstractListModel. Returns data from model by \a index by \a role. */ QVariant PlacesModel::data(const QModelIndex &index, int role /* Qt::DisplayRole */) const { if (!index.isValid()) { return QVariant(); } const int itemIndex(index.row()); const int placesCount(mPlaces.count()); int virtualIndex(0); Place *place = 0; // Skip all invisible places for (int i = 0; i < placesCount; ++i) { if (mPlaces[i]->visible()) { if (itemIndex == virtualIndex) { place = mPlaces[i]; break; } else { virtualIndex++; } } } if (!place) { return QVariant(); } QVariant value = QVariant(); switch (role) { case NameRole: value = QVariant::fromValue(place->name()); break; case StreetAddressRole: value = QVariant::fromValue(place->address().street()); break; case LatitudeRole: value = QVariant::fromValue(place->coordinate().latitude()); break; case LongitudeRole: value = QVariant::fromValue(place->coordinate().longitude()); break; case IconUrlRole: value = QVariant::fromValue(place->iconUrl()); break; case PlaceObjectRole: value = QVariant::fromValue((QObject*)place); break; default: break; } return value; }