relation_data_t Query::getRelationModel(list_t values, Model * & model) { relation_data_t rData; QList <Model *> list; if(!values.empty()) { QStringList fields = model->getSchema()->getFields(); int i = 0; while(i < values.size()) { int j = i; Model * temp = new Model(); temp->setSchema(model->getSchema()); temp->setIsNew(false); while(values[j] != QPair <QString, QVariant> ("", "")) { if((fields.contains(values[j].first)) && (values[j].second != "")) { temp->setField(values[j].first, values[j].second); } j++; } list.append(temp); i = j + 1; } } rData.insert(rName, list); return rData; }
string View::formatList(list_t &list, const string d1, const string sep, const string d2) { string output = ""; if(list.empty()) return output; FOR_l(i,list) output = output + (i==0 || is_dir(list[i-1]) || is_opt(list[i-1]) ? "" : sep) + list.at(i); return d1 + output + d2; }
list_t View::chopList(list_t list, const string prefix) { if(list.empty()) return list; FOR_l(i,list) { string item = list[i]; // normal chop if(!item.compare(0,prefix.length(),prefix)) list.at(i) = item.substr(prefix.length()); else list.at(i) = "["+item+"]"; }
string View::formatList(list_t &list, const string d1, const string sep, const string d2,const unsigned int length) { string output = ""; if(list.empty()) return output; if(list.size()==1 && list.front().size()==0) return output; FOR_l(i,list) if(output.length() + list.at(i).length() + sep.length()*2 + d2.length()*2 + string("... ").length() > length) { output = output + sep + "... "; break; } else output = output + (i==0 ? "" : sep) + list.at(i);; return d1 + output + d2; }
void prune_if (size_t max_size, pred op) { if (list_.empty()) return; auto i (std::prev(list_.end())); while (size_ > max_size) { if (op(*i)) { map_.erase(i->first); i = list_.erase(i); --size_; } if (i == list_.begin()) return; --i; } }