FemboyBanking.NET/FemboyBanking/EthAddressPrompt.h
2020-08-22 14:28:54 -07:00

238 lines
8.8 KiB
C++

#pragma once
#include <stdio.h>
#include "Etherscan.h"
#include "Main.h"
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
namespace FemboyBanking {
/// <summary>
/// Summary for EthAddressPrompt
///
/// WARNING: If you change the name of this class, you will need to change the
/// 'Resource File Name' property for the managed resource compiler tool
/// associated with all .resx files this class depends on. Otherwise,
/// the designers will not be able to interact properly with localized
/// resources associated with this form.
/// </summary>
public ref class EthAddressPrompt : public System::Windows::Forms::Form
{
public:
EthAddressPrompt(void)
{
InitializeComponent();
//
//TODO: Add the constructor code here
//
InitializeBackgoundWorker();
}
protected:
/// <summary>
/// Clean up any resources being used.
/// </summary>
~EthAddressPrompt()
{
if (components)
{
delete components;
}
}
private:
System::Windows::Forms::Button^ doneBtn;
System::Windows::Forms::Button^ cancelBtn;
System::Windows::Forms::TextBox^ ethTextBox;
System::Windows::Forms::CheckBox^ privacyCheckBox;
System::Windows::Forms::Label^ label1;
System::Windows::Forms::Label^ label2;
System::ComponentModel::BackgroundWorker^ etherscanWorker;
System::Windows::Forms::ProgressBar^ progressBar;
private: System::Windows::Forms::Label^ label3;
private:
/// <summary>
/// Required designer variable.
/// </summary>
System::ComponentModel::Container ^components;
#pragma region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
void InitializeComponent(void)
{
System::ComponentModel::ComponentResourceManager^ resources = (gcnew System::ComponentModel::ComponentResourceManager(EthAddressPrompt::typeid));
this->doneBtn = (gcnew System::Windows::Forms::Button());
this->cancelBtn = (gcnew System::Windows::Forms::Button());
this->ethTextBox = (gcnew System::Windows::Forms::TextBox());
this->privacyCheckBox = (gcnew System::Windows::Forms::CheckBox());
this->label1 = (gcnew System::Windows::Forms::Label());
this->label2 = (gcnew System::Windows::Forms::Label());
this->etherscanWorker = (gcnew System::ComponentModel::BackgroundWorker());
this->progressBar = (gcnew System::Windows::Forms::ProgressBar());
this->label3 = (gcnew System::Windows::Forms::Label());
this->SuspendLayout();
//
// doneBtn
//
this->doneBtn->Location = System::Drawing::Point(235, 70);
this->doneBtn->Name = L"doneBtn";
this->doneBtn->Size = System::Drawing::Size(75, 23);
this->doneBtn->TabIndex = 0;
this->doneBtn->Text = L"Done";
this->doneBtn->UseVisualStyleBackColor = true;
this->doneBtn->Click += gcnew System::EventHandler(this, &EthAddressPrompt::doneBtn_Click);
//
// cancelBtn
//
this->cancelBtn->Location = System::Drawing::Point(154, 70);
this->cancelBtn->Name = L"cancelBtn";
this->cancelBtn->Size = System::Drawing::Size(75, 23);
this->cancelBtn->TabIndex = 1;
this->cancelBtn->Text = L"Cancel";
this->cancelBtn->UseVisualStyleBackColor = true;
this->cancelBtn->Click += gcnew System::EventHandler(this, &EthAddressPrompt::cancelBtn_Click);
//
// ethTextBox
//
this->ethTextBox->AllowDrop = true;
this->ethTextBox->Location = System::Drawing::Point(12, 42);
this->ethTextBox->MaxLength = 42;
this->ethTextBox->Name = L"ethTextBox";
this->ethTextBox->Size = System::Drawing::Size(298, 20);
this->ethTextBox->TabIndex = 2;
//
// privacyCheckBox
//
this->privacyCheckBox->AutoSize = true;
this->privacyCheckBox->Location = System::Drawing::Point(12, 74);
this->privacyCheckBox->Name = L"privacyCheckBox";
this->privacyCheckBox->Size = System::Drawing::Size(78, 17);
this->privacyCheckBox->TabIndex = 3;
this->privacyCheckBox->Text = L"Hard mode";
this->privacyCheckBox->UseVisualStyleBackColor = true;
this->privacyCheckBox->CheckedChanged += gcnew System::EventHandler(this, &EthAddressPrompt::privacyCheckBox_CheckedChanged);
//
// label1
//
this->label1->AutoSize = true;
this->label1->Location = System::Drawing::Point(9, 9);
this->label1->Name = L"label1";
this->label1->Size = System::Drawing::Size(146, 13);
this->label1->TabIndex = 4;
this->label1->Text = L"Enter your Ethereum address.";
//
// label2
//
this->label2->AutoSize = true;
this->label2->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 8, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point,
static_cast<System::Byte>(0)));
this->label2->Location = System::Drawing::Point(9, 26);
this->label2->Name = L"label2";
this->label2->Size = System::Drawing::Size(207, 13);
this->label2->TabIndex = 5;
this->label2->Text = L"NOTE: The only token we accept is LINK.";
//
// etherscanWorker
//
this->etherscanWorker->WorkerReportsProgress = true;
//
// progressBar
//
this->progressBar->Location = System::Drawing::Point(12, 112);
this->progressBar->Name = L"progressBar";
this->progressBar->Size = System::Drawing::Size(298, 18);
this->progressBar->TabIndex = 6;
this->progressBar->UseWaitCursor = true;
//
// label3
//
this->label3->AutoSize = true;
this->label3->Location = System::Drawing::Point(9, 133);
this->label3->Name = L"label3";
this->label3->Size = System::Drawing::Size(243, 13);
this->label3->TabIndex = 7;
this->label3->Text = L"Connecting to the Femboy Network... Please wait.";
//
// EthAddressPrompt
//
this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->ClientSize = System::Drawing::Size(322, 103);
this->Controls->Add(this->label3);
this->Controls->Add(this->progressBar);
this->Controls->Add(this->label2);
this->Controls->Add(this->label1);
this->Controls->Add(this->privacyCheckBox);
this->Controls->Add(this->ethTextBox);
this->Controls->Add(this->cancelBtn);
this->Controls->Add(this->doneBtn);
this->FormBorderStyle = System::Windows::Forms::FormBorderStyle::FixedDialog;
this->Icon = (cli::safe_cast<System::Drawing::Icon^ >(resources->GetObject(L"$this.Icon")));
this->MaximizeBox = false;
this->Name = L"EthAddressPrompt";
this->StartPosition = System::Windows::Forms::FormStartPosition::CenterScreen;
this->Text = L"Connect Ethereum Wallet";
this->ResumeLayout(false);
this->PerformLayout();
}
#pragma endregion
private:
void InitializeBackgoundWorker()
{
this->etherscanWorker->DoWork += gcnew System::ComponentModel::DoWorkEventHandler( this, &EthAddressPrompt::etherscanWorker_DoWork );
this->etherscanWorker->RunWorkerCompleted += gcnew RunWorkerCompletedEventHandler( this, &EthAddressPrompt::etherscanWorker_RunWorkerCompleted );
this->etherscanWorker->ProgressChanged += gcnew ProgressChangedEventHandler( this, &EthAddressPrompt::etherscanWorker_ProgressChanged );
}
System::Void privacyCheckBox_CheckedChanged(System::Object^ sender, System::EventArgs^ e) {
this->ethTextBox->UseSystemPasswordChar = this->privacyCheckBox->Checked;
}
System::Void cancelBtn_Click(System::Object^ sender, System::EventArgs^ e) {
Application::Exit();
}
System::Void doneBtn_Click(System::Object^ sender, System::EventArgs^ e) {
this->ethTextBox->Enabled = false;
this->Height += 50;
etherscanWorker->RunWorkerAsync( this->ethTextBox->Text );
}
System::Void etherscanWorker_DoWork(System::Object^ sender, System::ComponentModel::DoWorkEventArgs^ e) {
// Get the BackgroundWorker that raised this event.
BackgroundWorker^ worker = dynamic_cast<BackgroundWorker^>(sender);
// Assign the result of the computation
// to the Result property of the DoWorkEventArgs
// object. This is will be available to the
// RunWorkerCompleted eventhandler.
e->Result = Etherscan::FetchLinkBalance( e->Argument->ToString(), worker, e );
}
System::Void etherscanWorker_RunWorkerCompleted(System::Object^ sender, System::ComponentModel::RunWorkerCompletedEventArgs^ e) {
if ((UInt64) e->Result != -1)
{
Double balance = (UInt64) e->Result / 1e18;
String^ balanceMsg = String::Format("You have {0} LINK", balance);
Main^ form = gcnew Main(this->ethTextBox->Text, balance);
this->Owner = form;
this->Owner->Show();
this->Hide();
}
this->ethTextBox->Enabled = true;
this->Height -= 50;
}
System::Void etherscanWorker_ProgressChanged(System::Object^ sender, System::ComponentModel::ProgressChangedEventArgs^ e) {
this->progressBar->Value = e->ProgressPercentage;
}
};
}