bool parseBitcoinURI(const QUrl &uri, SendCoinsRecipient *out) { // return if URI is not valid or is no bitcoin URI if(!uri.isValid() || uri.scheme() != QString("cryptotest")) return false; SendCoinsRecipient rv; // WTF Qt? const int addrlen = 34; QString address = uri.path().left(addrlen); rv.address = address; rv.amount = 0; #if QT_VERSION < 0x050000 QList<QPair<QString, QString> > items = uri.queryItems(); #else // Apparently Qt 5 is broken a *lot* // QUrlQuery uriQuery(uri); // QList<QPair<QString, QString> > items = uriQuery.queryItems(); QString uriString = uri.path(); QList<QPair<QString, QString> > items = queryItems(uriString.right(uriString.size() - addrlen - 1)); #endif for (QList<QPair<QString, QString> >::iterator i = items.begin(); i != items.end(); i++) { bool fShouldReturnFalse = false; if (i->first.startsWith("req-")) { i->first.remove(0, 4); fShouldReturnFalse = true; } if (i->first == "label") { rv.label = i->second; fShouldReturnFalse = false; } else if (i->first == "amount") { if(!i->second.isEmpty()) { if(!BitcoinUnits::parse(BitcoinUnits::BTC, i->second, &rv.amount)) { return false; } } fShouldReturnFalse = false; } if (fShouldReturnFalse) return false; } if(out) { *out = rv; } return true; }
void LevelScene::queryItems(double x, double y, std::vector<PGE_Phys_Object* > *resultList, std::function<bool(PGE_Phys_Object*)> *validator) { PGE_RectF zone = PGE_RectF(x, y, 1, 1); queryItems(zone, resultList, validator); }
void LVL_Section::queryItems(double x, double y, R_itemList *resultList) { PGE_RectF zone=PGE_RectF(x, y, 1, 1); queryItems(zone, resultList); }