bool PublicHubsFrame::matchFilter(const HubEntry& entry, const int& sel, bool doSizeCompare, const FilterModes& mode, const double& size) { if(filter.empty()) return true; double entrySize = 0; string entryString = ""; switch(sel) { case COLUMN_NAME: entryString = entry.getName(); doSizeCompare = false; break; case COLUMN_DESCRIPTION: entryString = entry.getDescription(); doSizeCompare = false; break; case COLUMN_USERS: entrySize = entry.getUsers(); break; case COLUMN_SERVER: entryString = entry.getServer(); doSizeCompare = false; break; case COLUMN_COUNTRY: entryString = entry.getCountry(); doSizeCompare = false; break; case COLUMN_SHARED: entrySize = (double)entry.getShared(); break; case COLUMN_MINSHARE: entrySize = (double)entry.getMinShare(); break; case COLUMN_MINSLOTS: entrySize = entry.getMinSlots(); break; case COLUMN_MAXHUBS: entrySize = entry.getMaxHubs(); break; case COLUMN_MAXUSERS: entrySize = entry.getMaxUsers(); break; case COLUMN_RELIABILITY: entrySize = entry.getReliability(); break; case COLUMN_RATING: entryString = entry.getRating(); doSizeCompare = false; break; default: break; } bool insert = false; if(doSizeCompare) { switch(mode) { case EQUAL: insert = (size == entrySize); break; case GREATER_EQUAL: insert = (size <= entrySize); break; case LESS_EQUAL: insert = (size >= entrySize); break; case GREATER: insert = (size < entrySize); break; case LESS: insert = (size > entrySize); break; case NOT_EQUAL: insert = (size != entrySize); break; } } else { if(sel >= COLUMN_LAST) { if( Util::findSubString(entry.getName(), filter) != string::npos || Util::findSubString(entry.getDescription(), filter) != string::npos || Util::findSubString(entry.getServer(), filter) != string::npos || Util::findSubString(entry.getCountry(), filter) != string::npos || Util::findSubString(entry.getRating(), filter) != string::npos ) { insert = true; } } if(Util::findSubString(entryString, filter) != string::npos) insert = true; } return insert; }
void PublicHubs::updateList(){ if (!model) return; model->clearModel(); QList<QVariant> data; for (auto i = entries.begin(); i != entries.end(); ++i) { HubEntry *entry = const_cast<HubEntry*>(&(*i)); data.clear(); data << _q(entry->getName()) << _q(entry->getDescription()) << entry->getUsers() << _q(entry->getServer()) << _q(entry->getCountry()) << (qlonglong)entry->getShared() << (qint64)entry->getMinShare() << (qint64)entry->getMinSlots() << (qint64)entry->getMaxHubs() << (qint64)entry->getMaxUsers() << static_cast<double>(entry->getReliability()) << _q(entry->getRating()); model->addResult(data, entry); } }