Пример #1
0
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;
}
Пример #2
0
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);
}
Пример #3
0
void LVL_Section::queryItems(double x, double y, R_itemList *resultList)
{
    PGE_RectF zone=PGE_RectF(x, y, 1, 1);
    queryItems(zone, resultList);
}