//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 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; } } } } }