//virtual void MTAssetDetails::AddButtonClicked() { MTWizardAddContract theWizard(this); theWizard.setWindowTitle(tr("Add Asset Contract")); QString qstrDefaultValue("https://raw.github.com/FellowTraveler/Open-Transactions/master/sample-data/sample-contracts/btc.otc"); QVariant varDefault(qstrDefaultValue); theWizard.setField(QString("URL"), varDefault); if (QDialog::Accepted == theWizard.exec()) { bool bIsImporting = theWizard.field("isImporting").toBool(); bool bIsCreating = theWizard.field("isCreating").toBool(); if (bIsImporting) { bool bIsURL = theWizard.field("isURL").toBool(); bool bIsFilename = theWizard.field("isFilename").toBool(); bool bIsContents = theWizard.field("isContents").toBool(); if (bIsURL) { QString qstrURL = theWizard.field("URL").toString(); // -------------------------------- if (qstrURL.isEmpty()) { QMessageBox::warning(this, tr("URL is Empty"), tr("No URL was provided.")); return; } QUrl theURL(qstrURL); // -------------------------------- if (m_pDownloader) { m_pDownloader->deleteLater(); m_pDownloader = NULL; } // -------------------------------- m_pDownloader = new FileDownloader(theURL, this); connect(m_pDownloader, SIGNAL(downloaded()), SLOT(DownloadedURL())); } // -------------------------------- else if (bIsFilename) { QString fileName = theWizard.field("Filename").toString(); if (fileName.isEmpty()) { QMessageBox::warning(this, tr("Filename is Empty"), tr("No filename was provided.")); return; } // ----------------------------------------------- QString qstrContents; QFile plainFile(fileName); if (plainFile.open(QIODevice::ReadOnly))//| QIODevice::Text)) // Text flag translates /n/r to /n { QTextStream in(&plainFile); // Todo security: check filesize here and place a maximum size. qstrContents = in.readAll(); plainFile.close(); // ---------------------------- if (qstrContents.isEmpty()) { QMessageBox::warning(this, tr("File Was Empty"), QString("%1: %2").arg(tr("File was apparently empty")).arg(fileName)); return; } // ---------------------------- } else { QMessageBox::warning(this, tr("Failed Reading File"), QString("%1: %2").arg(tr("Failed trying to read file")).arg(fileName)); return; } // ----------------------------------------------- ImportContract(qstrContents); } // -------------------------------- else if (bIsContents) { QString qstrContents = theWizard.getContents(); if (qstrContents.isEmpty()) { QMessageBox::warning(this, tr("Empty Contract"), tr("Failure Importing: Contract is Empty.")); return; } // ------------------------- ImportContract(qstrContents); } } // -------------------------------- else if (bIsCreating) { // Todo } } }
//virtual void MTAccountDetails::AddButtonClicked() { MTWizardAddAccount theWizard(this); theWizard.setWindowTitle(tr("Create Account")); if (QDialog::Accepted == theWizard.exec()) { QString qstrName = theWizard.field("Name") .toString(); QString qstrAssetID = theWizard.field("AssetID") .toString(); QString qstrNymID = theWizard.field("NymID") .toString(); QString qstrServerID = theWizard.field("ServerID").toString(); // --------------------------------------------------- QString qstrAssetName = QString::fromStdString(OTAPI_Wrap::It()->GetAssetType_Name(qstrAssetID .toStdString())); QString qstrNymName = QString::fromStdString(OTAPI_Wrap::It()->GetNym_Name (qstrNymID .toStdString())); QString qstrServerName = QString::fromStdString(OTAPI_Wrap::It()->GetServer_Name (qstrServerID.toStdString())); // --------------------------------------------------- QMessageBox::information(this, tr("Confirm Create Account"), QString("%1: '%2'<br/>%3: %4<br/>%5: %6<br/>%7: %8").arg(tr("Confirm Create Account:<br/>Name")). arg(qstrName).arg(tr("Asset")).arg(qstrAssetName).arg(tr("Nym")).arg(qstrNymName).arg(tr("Server")).arg(qstrServerName)); // --------------------------------------------------- // NOTE: theWizard won't allow each page to finish unless the ID is provided. // (Therefore we don't have to check here to see if any of the IDs are empty.) // ------------------------------ // First make sure the Nym is registered at the server, and if not, register him. // bool bIsRegiseredAtServer = OTAPI_Wrap::It()->IsNym_RegisteredAtServer(qstrNymID.toStdString(), qstrServerID.toStdString()); if (!bIsRegiseredAtServer) { OT_ME madeEasy; // If the Nym's not registered at the server, then register him first. // int32_t nSuccess = 0; { MTSpinner theSpinner; std::string strResponse = madeEasy.register_nym(qstrServerID.toStdString(), qstrNymID .toStdString()); // This also does getRequest internally, if success. nSuccess = madeEasy.VerifyMessageSuccess(strResponse); } // -1 is error, // 0 is reply received: failure // 1 is reply received: success // switch (nSuccess) { case (1): { bIsRegiseredAtServer = true; break; // SUCCESS } case (0): { QMessageBox::warning(this, tr("Failed Registration"), tr("Failed while trying to register Nym at Server.")); break; } default: { QMessageBox::warning(this, tr("Error in Registration"), tr("Error while trying to register Nym at Server.")); break; } } // switch // -------------------------- if (1 != nSuccess) { Moneychanger::HasUsageCredits(this, qstrServerID, qstrNymID); return; } } // -------------------------- // Send the request. // (Create Account here...) // OT_ME madeEasy; // Send the 'create_asset_acct' message to the server. // std::string strResponse; { MTSpinner theSpinner; strResponse = madeEasy.create_asset_acct(qstrServerID.toStdString(), qstrNymID .toStdString(), qstrAssetID .toStdString()); } // -1 error, 0 failure, 1 success. // if (1 != madeEasy.VerifyMessageSuccess(strResponse)) { const int64_t lUsageCredits = Moneychanger::HasUsageCredits(this, qstrServerID, qstrNymID); // HasUsageCredits already pops up an error box in the cases of -2 and 0. // if (((-2) != lUsageCredits) && (0 != lUsageCredits)) QMessageBox::warning(this, tr("Failed Creating Account"), tr("Failed trying to create Account at Server.")); return; } // ------------------------------------------------------ // Get the ID of the new account. // QString qstrID = QString::fromStdString(OTAPI_Wrap::It()->Message_GetNewAcctID(strResponse)); if (qstrID.isEmpty()) { QMessageBox::warning(this, tr("Failed Getting new Account ID"), tr("Failed trying to get the new account's ID from the server response.")); return; } // ------------------------------------------------------ // Set the Name of the new account. // //bool bNameSet = OTAPI_Wrap::It()->SetAccountWallet_Name(qstrID .toStdString(), qstrNymID.toStdString(), qstrName .toStdString()); // ----------------------------------------------- // Commenting out for now. // // QMessageBox::information(this, tr("Success!"), QString("%1: '%2'<br/>%3: %4").arg(tr("Success Creating Account!<br/>Name")). // arg(qstrName).arg(tr("ID")).arg(qstrID)); // ---------- m_pOwner->m_map.insert(qstrID, qstrName); m_pOwner->SetPreSelected(qstrID); // ------------------------------------------------ emit RefreshRecordsAndUpdateMenu(); // ------------------------------------------------ } }
//virtual void MTAssetDetails::AddButtonClicked() { MTWizardAddContract theWizard(this); theWizard.setWindowTitle(tr("Add Asset Contract")); QString qstrDefaultValue("https://raw.github.com/FellowTraveler/Open-Transactions/master/sample-data/sample-contracts/btc.otc"); QVariant varDefault(qstrDefaultValue); theWizard.setField(QString("URL"), varDefault); theWizard.setField(QString("contractType"), QString("asset")); // So the wizard knows it's creating an asset contract. QString qstrDefaultContract( "<instrumentDefinition version=\"2.0\">\n" "\n" "<entity shortname=\"Fed\"\n" " longname=\"The Rothschilds\"\n" " email=\"[email protected]\"/>\n" "\n" "<issue company=\"Federal Reserve, a private company\"\n" " email=\"[email protected]\"\n" " contractUrl=\"https://fed.gov/sucker\"\n" " type=\"currency\"/>\n" "\n" "<currency name=\"US Dollars\" tla=\"USD\" symbol=\"$\" type=\"decimal\" factor=\"100\" decimalPower=\"2\" fraction=\"cents\"/>\n" "\n" "</instrumentDefinition>\n" ); theWizard.setField(QString("contractXML"), qstrDefaultContract); if (QDialog::Accepted == theWizard.exec()) { bool bIsImporting = theWizard.field("isImporting").toBool(); bool bIsCreating = theWizard.field("isCreating").toBool(); if (bIsImporting) { bool bIsURL = theWizard.field("isURL").toBool(); bool bIsFilename = theWizard.field("isFilename").toBool(); bool bIsContents = theWizard.field("isContents").toBool(); if (bIsURL) { QString qstrURL = theWizard.field("URL").toString(); // -------------------------------- if (qstrURL.isEmpty()) { QMessageBox::warning(this, tr("URL is Empty"), tr("No URL was provided.")); return; } QUrl theURL(qstrURL); // -------------------------------- if (m_pDownloader) { m_pDownloader->deleteLater(); m_pDownloader = NULL; } // -------------------------------- m_pDownloader = new FileDownloader(theURL, this); connect(m_pDownloader, SIGNAL(downloaded()), SLOT(DownloadedURL())); } // -------------------------------- else if (bIsFilename) { QString fileName = theWizard.field("Filename").toString(); if (fileName.isEmpty()) { QMessageBox::warning(this, tr("Filename is Empty"), tr("No filename was provided.")); return; } // ----------------------------------------------- QString qstrContents; QFile plainFile(fileName); if (plainFile.open(QIODevice::ReadOnly))//| QIODevice::Text)) // Text flag translates /n/r to /n { QTextStream in(&plainFile); // Todo security: check filesize here and place a maximum size. qstrContents = in.readAll(); plainFile.close(); // ---------------------------- if (qstrContents.isEmpty()) { QMessageBox::warning(this, tr("File Was Empty"), QString("%1: %2").arg(tr("File was apparently empty")).arg(fileName)); return; } // ---------------------------- } else { QMessageBox::warning(this, tr("Failed Reading File"), QString("%1: %2").arg(tr("Failed trying to read file")).arg(fileName)); return; } // ----------------------------------------------- ImportContract(qstrContents); } // -------------------------------- else if (bIsContents) { QString qstrContents = theWizard.getContents(); if (qstrContents.isEmpty()) { QMessageBox::warning(this, tr("Empty Contract"), tr("Failure Importing: Contract is Empty.")); return; } // ------------------------- ImportContract(qstrContents); } } // -------------------------------- else if (bIsCreating) { QString qstrXMLContents = theWizard.field("contractXML").toString(); QString qstrNymID = theWizard.field("NymID").toString(); std::string strContractID = opentxs::OTAPI_Wrap::It()->CreateAssetContract(qstrNymID.toStdString(), qstrXMLContents.toStdString()); if ("" == strContractID) { QMessageBox::warning(this, tr("Failed Creating Contract"), tr("Unable to create contract. Perhaps the XML contents were bad?")); return; } else { std::string strNewContract = opentxs::OTAPI_Wrap::It()->GetAssetType_Contract(strContractID); if ("" == strNewContract) { QMessageBox::warning(this, tr("Unable to Load"), tr("While the contract was apparently created, Moneychanger is unable to load it up. (Strange.)")); return; } else { // Success. QString qstrContractID = QString::fromStdString(strContractID); QString qstrContractName = QString::fromStdString(opentxs::OTAPI_Wrap::It()->GetAssetType_Name(strContractID)); m_pOwner->m_map.insert(qstrContractID, qstrContractName); m_pOwner->SetPreSelected(qstrContractID); // ------------------------------------------------ emit newAssetAdded(qstrContractID); return; } } } } }
//virtual void MTNymDetails::AddButtonClicked() { MTWizardAddNym theWizard(this); theWizard.setWindowTitle(tr("Create Nym (a.k.a. Create Identity)")); if (QDialog::Accepted == theWizard.exec()) { QString qstrName = theWizard.field("Name") .toString(); int nKeysizeIndex = theWizard.field("Keysize") .toInt(); int nAuthorityIndex = theWizard.field("Authority").toInt(); QString qstrSource = theWizard.field("Source") .toString(); QString qstrLocation = theWizard.field("Location") .toString(); // --------------------------------------------------- // NOTE: theWizard won't allow each page to finish unless the data is provided. // (Therefore we don't have to check here to see if any of the data is empty.) int32_t nKeybits = 1024; switch (nKeysizeIndex) { case 0: // 1024 nKeybits = 1024; break; case 1: // 2048 nKeybits = 2048; break; case 2: // 4096 nKeybits = 4096; break; default: qDebug() << QString("%1: %2").arg(tr("Error in keysize selection. Using default")).arg(nKeybits); break; } // ------------------------------------------- std::string NYM_ID_SOURCE(""); if (0 != nAuthorityIndex) // Zero would be Self-Signed, which needs no source. NYM_ID_SOURCE = qstrSource.toStdString(); // ------------------------------------------- std::string ALT_LOCATION(""); if (!qstrLocation.isEmpty()) ALT_LOCATION = qstrLocation.toStdString(); // ------------------------------------------- // Create Nym here... // OT_ME madeEasy; std::string str_id = madeEasy.create_pseudonym(nKeybits, NYM_ID_SOURCE, ALT_LOCATION); if (str_id.empty()) { QMessageBox::warning(this, tr("Failed Creating Nym"), tr("Failed trying to create Nym.")); return; } // ------------------------------------------------------ // Get the ID of the new nym. // QString qstrID = QString::fromStdString(str_id); // ------------------------------------------------------ // Register the Namecoin name. if (nAuthorityIndex == 1) { const unsigned cnt = OTAPI_Wrap::GetNym_CredentialCount (str_id); if (cnt != 1) { qDebug () << "Expected one master credential, got " << cnt << ". Skipping Namecoin registration."; } else { const std::string cred = OTAPI_Wrap::GetNym_CredentialID (str_id, 0); const QString qCred = QString::fromStdString (cred); NMC_NameManager& nmc = NMC_NameManager::getInstance (); nmc.startRegistration (qstrID, qCred); } } // ------------------------------------------------------ // Set the Name of the new Nym. // //bool bNameSet = OTAPI_Wrap::SetNym_Name(qstrID.toStdString(), qstrID.toStdString(), qstrName.toStdString()); // ----------------------------------------------- // Commenting this out for now. // // QMessageBox::information(this, tr("Success!"), QString("%1: '%2' %3: %4").arg(tr("Success Creating Nym! Name")). // arg(qstrName).arg(tr("ID")).arg(qstrID)); // ---------- m_pOwner->m_map.insert(qstrID, qstrName); m_pOwner->SetPreSelected(qstrID); // ------------------------------------------------ emit RefreshRecordsAndUpdateMenu(); // ------------------------------------------------ } }