void HelpWindow::Ids(int pid, Vector<int>& r) { int n = tree.GetChildCount(pid); for(int i = 0; i < n; i++) { int id = tree.GetChild(pid, i); if(!IsNull(tree.GetValue(id))) { r.Add(id); Ids(id, r); } } }
DcOptions::Ids DcOptions::sortedDcIds() const { auto result = Ids(); { QReadLocker lock(&_mutex); result.reserve(_data.size()); for (auto &item : _data) { if (!base::contains(result, item.second.id)) { result.push_back(item.second.id); } } } std::sort(result.begin(), result.end()); return result; }
bool HelpWindow::PrevNext(int d, bool allowempty) { Vector<int> r = Ids(); int id = tree.GetCursor(); if(id < 0) return false; int ii = FindIndex(r, id); if(ii < 0) return false; for(;;) { ii += d; if(ii >= r.GetCount() || ii < 0) return false; if(!IsNull(tree.Get(r[ii])) || allowempty) { tree.SetCursor(r[ii]); return true; } } }
Vector<int> HelpWindow::Ids() { Vector<int> r; Ids(0, r); return r; }