bool ManageEscrowDialog::isYourAlias(const QString &alias) { string strMethod = string("aliasinfo"); UniValue params(UniValue::VARR); UniValue result ; string name_str; int expired = 0; params.push_back(alias.toStdString()); try { result = tableRPC.execute(strMethod, params); if (result.type() == UniValue::VOBJ) { const UniValue& o = result.get_obj(); const UniValue& mine_value = find_value(o, "ismine"); if (mine_value.type() == UniValue::VBOOL) return mine_value.get_bool(); } } catch (UniValue& objError) { string strError = find_value(objError, "message").get_str(); QMessageBox::critical(this, windowTitle(), tr("Could not refresh cert list: %1").arg(QString::fromStdString(strError)), QMessageBox::Ok, QMessageBox::Ok); } catch(std::exception& e) { QMessageBox::critical(this, windowTitle(), tr("There was an exception trying to refresh the cert list: ") + QString::fromStdString(e.what()), QMessageBox::Ok, QMessageBox::Ok); } return false; }
void ManageEscrowDialog::on_refundButton_clicked() { UniValue params(UniValue::VARR); string strMethod = string("escrowrefund"); params.push_back(escrow.toStdString()); try { UniValue result = tableRPC.execute(strMethod, params); QMessageBox::information(this, windowTitle(), tr("Escrow refunded successfully!"), QMessageBox::Ok, QMessageBox::Ok); ManageEscrowDialog::accept(); } catch (UniValue& objError) { string strError = find_value(objError, "message").get_str(); QMessageBox::critical(this, windowTitle(), tr("Error refunding escrow: \"%1\"").arg(QString::fromStdString(strError)), QMessageBox::Ok, QMessageBox::Ok); } catch(std::exception& e) { QMessageBox::critical(this, windowTitle(), tr("General exception refunding escrow"), QMessageBox::Ok, QMessageBox::Ok); } }
void OfferAcceptDialogBTC::acceptOffer(){ UniValue params(UniValue::VARR); UniValue valError; UniValue valResult; UniValue valId; UniValue result ; string strReply; string strError; string strMethod = string("offeraccept"); if(this->quantity.toLong() <= 0) { QMessageBox::critical(this, windowTitle(), tr("Invalid quantity when trying to accept offer!"), QMessageBox::Ok, QMessageBox::Ok); return; } this->offerPaid = false; params.push_back(this->alias.toStdString()); params.push_back(this->offer.toStdString()); params.push_back(this->quantity.toStdString()); params.push_back(this->notes.toStdString()); params.push_back(ui->btctxidEdit->text().trimmed().toStdString()); try { result = tableRPC.execute(strMethod, params); if (result.type() != UniValue::VNULL) { const UniValue &arr = result.get_array(); string strResult = arr[0].get_str(); QString offerAcceptTXID = QString::fromStdString(strResult); if(offerAcceptTXID != QString("")) { OfferPayDialog dlg(platformStyle, this->title, this->quantity, this->price, "BTC", this); dlg.exec(); this->offerPaid = true; OfferAcceptDialogBTC::accept(); return; } } } catch (UniValue& objError) { strError = find_value(objError, "message").get_str(); QMessageBox::critical(this, windowTitle(), tr("Error accepting offer: \"%1\"").arg(QString::fromStdString(strError)), QMessageBox::Ok, QMessageBox::Ok); return; } catch(std::exception& e) { QMessageBox::critical(this, windowTitle(), tr("General exception when accepting offer"), QMessageBox::Ok, QMessageBox::Ok); return; } }
bool ManageEscrowDialog::loadEscrow(const QString &escrow, QString &buyer, QString &seller, QString &arbiter, QString &status, QString &offertitle, QString &total) { string strMethod = string("escrowlist"); UniValue params(UniValue::VARR); UniValue result ; string name_str; try { result = tableRPC.execute(strMethod, params); if (result.type() == UniValue::VARR) { const UniValue &arr = result.get_array(); for (unsigned int idx = 0; idx < arr.size(); idx++) { name_str = ""; const UniValue& input = arr[idx]; if (input.type() != UniValue::VOBJ) continue; const UniValue& o = input.get_obj(); const UniValue& name_value = find_value(o, "escrow"); if (name_value.type() == UniValue::VSTR) name_str = name_value.get_str(); if(QString::fromStdString(name_str) != escrow) continue; const UniValue& seller_value = find_value(o, "seller"); if (seller_value.type() == UniValue::VSTR) seller = QString::fromStdString(seller_value.get_str()); const UniValue& arbiter_value = find_value(o, "arbiter"); if (arbiter_value.type() == UniValue::VSTR) arbiter = QString::fromStdString(arbiter_value.get_str()); const UniValue& buyer_value = find_value(o, "buyer"); if (buyer_value.type() == UniValue::VSTR) buyer = QString::fromStdString(buyer_value.get_str()); const UniValue& offertitle_value = find_value(o, "offertitle"); if (offertitle_value.type() == UniValue::VSTR) offertitle = QString::fromStdString(offertitle_value.get_str()); const UniValue& total_value = find_value(o, "total"); if (total_value.type() == UniValue::VSTR) total = QString::fromStdString(total_value.get_str()); const UniValue& status_value = find_value(o, "status"); if (status_value.type() == UniValue::VSTR) status = QString::fromStdString(status_value.get_str()); return true; } } } catch (UniValue& objError) { return false; } catch(std::exception& e) { return false; } return false; }
void NewMessageDialog::loadAliases() { ui->aliasEdit->clear(); string strMethod = string("aliaslist"); UniValue params(UniValue::VARR); UniValue result ; string name_str; int expired = 0; try { result = tableRPC.execute(strMethod, params); if (result.type() == UniValue::VARR) { name_str = ""; expired = 0; const UniValue &arr = result.get_array(); for (unsigned int idx = 0; idx < arr.size(); idx++) { const UniValue& input = arr[idx]; if (input.type() != UniValue::VOBJ) continue; const UniValue& o = input.get_obj(); name_str = ""; expired = 0; const UniValue& name_value = find_value(o, "name"); if (name_value.type() == UniValue::VSTR) name_str = name_value.get_str(); const UniValue& expired_value = find_value(o, "expired"); if (expired_value.type() == UniValue::VNUM) expired = expired_value.get_int(); if(expired == 0) { QString name = QString::fromStdString(name_str); ui->aliasEdit->addItem(name); } } } } catch (UniValue& objError) { string strError = find_value(objError, "message").get_str(); QMessageBox::critical(this, windowTitle(), tr("Could not refresh alias list: %1").arg(QString::fromStdString(strError)), QMessageBox::Ok, QMessageBox::Ok); } catch(std::exception& e) { QMessageBox::critical(this, windowTitle(), tr("There was an exception trying to refresh the alias list: ") + QString::fromStdString(e.what()), QMessageBox::Ok, QMessageBox::Ok); } }
bool NewMessageDialog::saveCurrentRow() { if(walletModel) { WalletModel::UnlockContext ctx(walletModel->requestUnlock()); if(model && !ctx.isValid()) { model->editStatus = MessageTableModel::WALLET_UNLOCK_FAILURE; return false; } } UniValue params(UniValue::VARR); string strMethod; switch(mode) { case NewMessage: if (ui->messageEdit->toPlainText().trimmed().isEmpty()) { QMessageBox::information(this, windowTitle(), tr("Empty message not allowed. Please try again"), QMessageBox::Ok, QMessageBox::Ok); return false; } strMethod = string("messagenew"); params.push_back(ui->topicEdit->text().toStdString()); params.push_back(ui->messageEdit->toPlainText().trimmed().toStdString()); params.push_back(ui->aliasEdit->currentText().toStdString()); params.push_back(ui->toEdit->text().toStdString()); try { UniValue result = tableRPC.execute(strMethod, params); if (result.type() != UniValue::VNULL) { message = ui->messageEdit->toPlainText(); } } catch (UniValue& objError) { string strError = find_value(objError, "message").get_str(); QMessageBox::critical(this, windowTitle(), tr("Error creating new message: \"%1\"").arg(QString::fromStdString(strError)), QMessageBox::Ok, QMessageBox::Ok); break; } catch(std::exception& e) { QMessageBox::critical(this, windowTitle(), tr("General exception creating new message"), QMessageBox::Ok, QMessageBox::Ok); break; } break; case ReplyMessage: if (ui->messageEdit->toPlainText().trimmed().isEmpty()) { QMessageBox::information(this, windowTitle(), tr("Empty message not allowed. Please try again"), QMessageBox::Ok, QMessageBox::Ok); return false; } if(mapper->submit()) { strMethod = string("messagenew"); params.push_back(ui->topicEdit->text().toStdString()); params.push_back(ui->messageEdit->toPlainText().trimmed().toStdString()); params.push_back(ui->aliasEdit->currentText().toStdString()); params.push_back(ui->toEdit->text().toStdString()); try { UniValue result = tableRPC.execute(strMethod, params); if (result.type() != UniValue::VNULL) { message = ui->messageEdit->toPlainText(); } } catch (UniValue& objError) { string strError = find_value(objError, "message").get_str(); QMessageBox::critical(this, windowTitle(), tr("Error replying to message: \"%1\"").arg(QString::fromStdString(strError)), QMessageBox::Ok, QMessageBox::Ok); break; } catch(std::exception& e) { QMessageBox::critical(this, windowTitle(), tr("General exception replying to message"), QMessageBox::Ok, QMessageBox::Ok); break; } } break; } return !message.isEmpty(); }
void refreshEscrowTable(EscrowModelType type) { cachedEscrowTable.clear(); { string strMethod = string("escrowlist"); UniValue params(UniValue::VARR); UniValue result ; string name_str; string time_str; string seller_str; string arbiter_str; string status_str; string offeraccept_str; string offer_str; string offertitle_str; string total_str; string buyer_str; int unixTime; QDateTime dateTime; try { result = tableRPC.execute(strMethod, params); if (result.type() == UniValue::VARR) { name_str = ""; time_str = ""; seller_str = ""; arbiter_str = ""; status_str = ""; offeraccept_str = ""; offer_str = ""; offertitle_str = ""; total_str = ""; buyer_str = ""; const UniValue &arr = result.get_array(); for (unsigned int idx = 0; idx < arr.size(); idx++) { const UniValue& input = arr[idx]; if (input.type() != UniValue::VOBJ) continue; const UniValue& o = input.get_obj(); name_str = ""; name_str = ""; seller_str = ""; arbiter_str = ""; status_str = ""; offeraccept_str = ""; offer_str = ""; total_str = ""; const UniValue& name_value = find_value(o, "escrow"); if (name_value.type() == UniValue::VSTR) name_str = name_value.get_str(); const UniValue& time_value = find_value(o, "time"); if (time_value.type() == UniValue::VSTR) time_str = time_value.get_str(); const UniValue& seller_value = find_value(o, "seller"); if (seller_value.type() == UniValue::VSTR) seller_str = seller_value.get_str(); const UniValue& arbiter_value = find_value(o, "arbiter"); if (arbiter_value.type() == UniValue::VSTR) arbiter_str = arbiter_value.get_str(); const UniValue& buyer_value = find_value(o, "buyer"); if (buyer_value.type() == UniValue::VSTR) buyer_str = buyer_value.get_str(); const UniValue& offer_value = find_value(o, "offer"); if (offer_value.type() == UniValue::VSTR) offer_str = offer_value.get_str(); const UniValue& offertitle_value = find_value(o, "offertitle"); if (offertitle_value.type() == UniValue::VSTR) offertitle_str = offertitle_value.get_str(); const UniValue& offeraccept_value = find_value(o, "offeracceptlink"); if (offeraccept_value.type() == UniValue::VSTR) offeraccept_str = offeraccept_value.get_str(); const UniValue& total_value = find_value(o, "total"); if (total_value.type() == UniValue::VSTR) total_str = total_value.get_str(); const UniValue& status_value = find_value(o, "status"); if (status_value.type() == UniValue::VSTR) status_str = status_value.get_str(); unixTime = atoi(time_str.c_str()); dateTime.setTime_t(unixTime); time_str = dateTime.toString().toStdString(); updateEntry(QString::fromStdString(name_str), QString::fromStdString(time_str), QString::fromStdString(seller_str), QString::fromStdString(arbiter_str), QString::fromStdString(offer_str), QString::fromStdString(offertitle_str), QString::fromStdString(offeraccept_str), QString::fromStdString(total_str), QString::fromStdString(status_str), QString::fromStdString(buyer_str), type, CT_NEW); } } } catch (UniValue& objError) { return; } catch(std::exception& e) { return; } } // qLowerBound() and qUpperBound() require our cachedEscrowTable list to be sorted in asc order qSort(cachedEscrowTable.begin(), cachedEscrowTable.end(), EscrowTableEntryLessThan()); }
bool AcceptandPayOfferListPage::lookup(const QString &lookupid) { QString id = lookupid; if(id == QString("")) { id = ui->offeridEdit->text(); } string strError; string strMethod = string("offerinfo"); UniValue params(UniValue::VARR); UniValue result; params.push_back(id.toStdString()); try { result = tableRPC.execute(strMethod, params); if (result.type() == UniValue::VOBJ) { const UniValue &offerObj = result.get_obj(); COffer offerOut; const string &strRand = find_value(offerObj, "offer").get_str(); const string &strAddress = find_value(offerObj, "address").get_str(); offerOut.vchCert = vchFromString(find_value(offerObj, "cert").get_str()); string alias = find_value(offerObj, "alias").get_str(); offerOut.sTitle = vchFromString(find_value(offerObj, "title").get_str()); offerOut.sCategory = vchFromString(find_value(offerObj, "category").get_str()); offerOut.sCurrencyCode = vchFromString(find_value(offerObj, "currency").get_str()); offerOut.vchAliasPeg = vchFromString(find_value(offerObj, "alias_peg").get_str()); if(find_value(offerObj, "quantity").get_str() == "unlimited") offerOut.nQty = -1; else offerOut.nQty = QString::fromStdString(find_value(offerObj, "quantity").get_str()).toUInt(); offerOut.bOnlyAcceptBTC = find_value(offerObj, "btconly").get_str() == "Yes"? true: false; string descString = find_value(offerObj, "description").get_str(); offerOut.sDescription = vchFromString(descString); UniValue outerDescValue(UniValue::VSTR); bool read = outerDescValue.read(descString); if (read) { if(outerDescValue.type() == UniValue::VOBJ) { const UniValue &outerDescObj = outerDescValue.get_obj(); const UniValue &descValue = find_value(outerDescObj, "description"); if (descValue.type() == UniValue::VSTR) { offerOut.sDescription = vchFromString(descValue.get_str()); } } } setValue(QString::fromStdString(alias), QString::fromStdString(strRand), offerOut, QString::fromStdString(find_value(offerObj, "price").get_str()), QString::fromStdString(strAddress)); return true; } } catch (UniValue& objError) { QMessageBox::critical(this, windowTitle(), tr("Could not find this offer, please check the offer ID and that it has been confirmed by the blockchain: ") + id, QMessageBox::Ok, QMessageBox::Ok); } catch(std::exception& e) { QMessageBox::critical(this, windowTitle(), tr("There was an exception trying to locate this offer, please check the offer ID and that it has been confirmed by the blockchain: ") + QString::fromStdString(e.what()), QMessageBox::Ok, QMessageBox::Ok); } return false; }
bool EditAliasDialog::saveCurrentRow() { if(!model || !walletModel) return false; WalletModel::UnlockContext ctx(walletModel->requestUnlock()); if(!ctx.isValid()) { model->editStatus = AliasTableModel::WALLET_UNLOCK_FAILURE; return false; } UniValue params(UniValue::VARR); string strMethod; switch(mode) { case NewDataAlias: case NewAlias: if (ui->aliasEdit->text().trimmed().isEmpty()) { ui->aliasEdit->setText(""); QMessageBox::information(this, windowTitle(), tr("Empty name for Alias not allowed. Please try again"), QMessageBox::Ok, QMessageBox::Ok); return false; } strMethod = string("aliasnew"); params.push_back(ui->aliasEdit->text().trimmed().toStdString()); params.push_back(ui->nameEdit->text().toStdString()); try { UniValue result = tableRPC.execute(strMethod, params); if (result.type() != UniValue::VNULL) { alias = ui->nameEdit->text() + ui->aliasEdit->text(); } } catch (UniValue& objError) { string strError = find_value(objError, "message").get_str(); QMessageBox::critical(this, windowTitle(), tr("Error creating new Alias: \"%1\"").arg(QString::fromStdString(strError)), QMessageBox::Ok, QMessageBox::Ok); break; } catch(std::exception& e) { QMessageBox::critical(this, windowTitle(), tr("General exception creating new Alias"), QMessageBox::Ok, QMessageBox::Ok); break; } break; case EditDataAlias: case EditAlias: if(mapper->submit()) { strMethod = string("aliasupdate"); params.push_back(ui->aliasEdit->text().toStdString()); params.push_back(ui->nameEdit->text().toStdString()); try { UniValue result = tableRPC.execute(strMethod, params); if (result.type() != UniValue::VNULL) { alias = ui->nameEdit->text() + ui->aliasEdit->text(); } } catch (UniValue& objError) { string strError = find_value(objError, "message").get_str(); QMessageBox::critical(this, windowTitle(), tr("Error updating Alias: \"%1\"").arg(QString::fromStdString(strError)), QMessageBox::Ok, QMessageBox::Ok); break; } catch(std::exception& e) { QMessageBox::critical(this, windowTitle(), tr("General exception updating Alias"), QMessageBox::Ok, QMessageBox::Ok); break; } } break; case TransferAlias: if(mapper->submit()) { strMethod = string("aliasupdate"); params.push_back(ui->aliasEdit->text().toStdString()); params.push_back(ui->nameEdit->text().toStdString()); params.push_back(""); params.push_back(ui->transferEdit->text().toStdString()); try { UniValue result = tableRPC.execute(strMethod, params); if (result.type() != UniValue::VNULL) { alias = ui->nameEdit->text() + ui->aliasEdit->text()+ui->transferEdit->text(); } } catch (UniValue& objError) { string strError = find_value(objError, "message").get_str(); QMessageBox::critical(this, windowTitle(), tr("Error transferring Alias: \"%1\"").arg(QString::fromStdString(strError)), QMessageBox::Ok, QMessageBox::Ok); break; } catch(std::exception& e) { QMessageBox::critical(this, windowTitle(), tr("General exception transferring Alias"), QMessageBox::Ok, QMessageBox::Ok); break; } } break; } return !alias.isEmpty(); }