/** * @brief Get the names of the peers of a group */ QList<QString> Core::getGroupPeerNames(int groupId) const { if (!tox) { qWarning() << "Can't get group peer names, tox is null"; return {}; } uint32_t nPeers = getGroupNumberPeers(groupId); if (nPeers == std::numeric_limits<uint32_t>::max()) { qWarning() << "getGroupPeerNames: Unable to get number of peers"; return {}; } // TODO: Change to std::vector std::unique_ptr<uint8_t[][TOX_MAX_NAME_LENGTH]> namesArray{ new uint8_t[nPeers][TOX_MAX_NAME_LENGTH]}; std::unique_ptr<uint16_t[]> lengths{new uint16_t[nPeers]}; TOX_ERR_CONFERENCE_PEER_QUERY error; uint32_t count = tox_conference_peer_count(tox, groupId, &error); if (!parsePeerQueryError(error)) { return {}; } if (count != nPeers) { qWarning() << "getGroupPeerNames: Unexpected peer count"; return {}; } QList<QString> names; for (uint32_t i = 0; i < nPeers; ++i) { lengths[i] = tox_conference_peer_get_name_size(tox, groupId, i, &error); bool ok = tox_conference_peer_get_name(tox, groupId, i, namesArray[i], &error); if (parsePeerQueryError(error) && ok) { names.push_back(CString::toString(namesArray[i], lengths[i])); } } return names; }
/** * @brief Get the name of a peer of a group */ QString Core::getGroupPeerName(int groupId, int peerId) const { uint8_t nameArray[TOX_MAX_NAME_LENGTH]; TOX_ERR_CONFERENCE_PEER_QUERY error; size_t length = tox_conference_peer_get_name_size(tox, groupId, peerId, &error); if (!parsePeerQueryError(error)) { return QString{}; } bool success = tox_conference_peer_get_name(tox, groupId, peerId, nameArray, &error); if (!parsePeerQueryError(error) || !success) { qWarning() << "getGroupPeerName: Unknown error"; return QString{}; } return ToxString(nameArray, length).getQString(); }
/** * Return the name of a group chat peer as a null terminated string. Must be * freed. */ char * twc_get_peer_name_nt(Tox *tox, int32_t group_number, int32_t peer_number) { uint8_t name[TOX_MAX_NAME_LENGTH + 1] = {0}; TOX_ERR_CONFERENCE_PEER_QUERY err = TOX_ERR_CONFERENCE_PEER_QUERY_OK; int length = tox_conference_peer_get_name_size(tox, group_number, peer_number, &err); if ((err == TOX_ERR_CONFERENCE_PEER_QUERY_OK) && (length <= TOX_MAX_NAME_LENGTH)) { tox_conference_peer_get_name(tox, group_number, peer_number, name, &err); if (err == TOX_ERR_CONFERENCE_PEER_QUERY_OK) return twc_null_terminate(name, length); else return "<unknown>"; } else return "<unknown>"; }
/** * @brief Get the names of the peers of a group */ QStringList Core::getGroupPeerNames(int groupId) const { if (!tox) { qWarning() << "Can't get group peer names, tox is null"; return {}; } uint32_t nPeers = getGroupNumberPeers(groupId); if (nPeers == std::numeric_limits<uint32_t>::max()) { qWarning() << "getGroupPeerNames: Unable to get number of peers"; return {}; } TOX_ERR_CONFERENCE_PEER_QUERY error; uint32_t count = tox_conference_peer_count(tox, groupId, &error); if (!parsePeerQueryError(error)) { return {}; } if (count != nPeers) { qWarning() << "getGroupPeerNames: Unexpected peer count"; return {}; } QStringList names; for (uint32_t i = 0; i < nPeers; ++i) { uint8_t name[TOX_MAX_NAME_LENGTH] = {0}; size_t length = tox_conference_peer_get_name_size(tox, groupId, i, &error); bool ok = tox_conference_peer_get_name(tox, groupId, i, name, &error); if (ok && parsePeerQueryError(error)) { names.append(ToxString(name, length).getQString()); } } return names; }