void TrackerDocumentProvider::searchFinished() { QSparqlResult *r = qobject_cast<QSparqlResult*>(sender()); if (!r->hasError()) { // d->model->clear(); // Mark all current entries in the model dirty. d->model->setAllItemsDirty(true); while (r->next()) { // This will remove the dirty flag for already // existing entries. d->model->addItem( r->binding(0).value().toString(), r->binding(1).value().toString(), r->binding(1).value().toString().split('.').last(), r->binding(2).value().toInt(), r->binding(3).value().toDateTime(), r->binding(4).value().toString() ); } // Remove all entries with the dirty mark. d->model->removeItemsDirty(); if (!d->ready) { d->ready = true; emit readyChanged(); } } emit countChanged(); }
void PlaylistModel::onQueryFinished() { QSparqlResult *result = static_cast<QSparqlResult*>(sender()); if (result->size() > 0) { result->next(); QSparqlResultRow row(result->current()); PlaylistTrack *track = m_tracks.at(result->property("trackIndex").toInt()); track->title = row.value("title").toString(); track->duration = row.value("duration").toLongLong(); QVariant artist(row.value("artist")); if (artist.isValid()) { track->artist = artist.toString(); } else { track->artist = tr("Unknown artist"); track->unknownArtist = true; } QVariant album(row.value("album")); if (album.isValid()) { track->album = album.toString(); } else { track->album = tr("Unknown album"); track->unknownAlbum = true; } } m_loadedTracks++; if (m_loadedTracks == m_tracks.size()) { m_loaded = true; emit loadedChanged(); beginResetModel(); m_rowCount = m_tracks.size(); endResetModel(); qDeleteAll(m_queries); m_queries.clear(); } }