QModelIndex ListModel::indexFromId(int itemId) const { ListItem* found = itemFromId(itemId); if (found) return indexFromItem(found); return QModelIndex(); }
QModelIndexList TvChannelModel::itemListFromIds(const QStringList &ids) const { QModelIndexList list; for (int index = 0; index < ids.size(); ++index) { QModelIndex itemIndex = itemFromId(ids.at(index)); if (itemIndex.isValid()) list.append(itemIndex); } return list; }
ListItem* ListModel::itemFromId(int itemId, ListItem* parent) const { if (!parent) parent = root(); for (int i = 0, n = parent->childCount(); i < n; ++i) { ListItem* child = parent->child(i); if (child->id() == itemId) return child; } for (int i = 0, n = parent->childCount(); i < n; ++i) { ListItem* found = itemFromId(itemId, parent->child(i)); if (found) return found; } return nullptr; }