mirror of
https://github.com/Nathanwoodburn/FireWallet.git
synced 2024-12-25 23:38:15 +11:00
main: Added sending to address
This commit is contained in:
parent
8d75f308fc
commit
e74a6bdbb1
254
FireWallet/MainForm.Designer.cs
generated
254
FireWallet/MainForm.Designer.cs
generated
@ -37,7 +37,7 @@
|
||||
timerNodeStatus = new System.Windows.Forms.Timer(components);
|
||||
panelaccount = new Panel();
|
||||
groupBoxaccount = new GroupBox();
|
||||
label1 = new Label();
|
||||
labelloginprompt = new Label();
|
||||
comboBoxaccount = new ComboBox();
|
||||
textBoxaccountpassword = new TextBox();
|
||||
buttonaccountlogin = new Button();
|
||||
@ -45,9 +45,9 @@
|
||||
labelaccountusername = new Label();
|
||||
buttonaccountnew = new Button();
|
||||
panelNav = new Panel();
|
||||
buttonReceive = new Button();
|
||||
buttonSend = new Button();
|
||||
buttonPortfolio = new Button();
|
||||
buttonNavReceive = new Button();
|
||||
buttonNavSend = new Button();
|
||||
buttonNavPortfolio = new Button();
|
||||
panelPortfolio = new Panel();
|
||||
groupBoxTransactions = new GroupBox();
|
||||
groupBoxinfo = new GroupBox();
|
||||
@ -59,6 +59,17 @@
|
||||
labelLocked = new Label();
|
||||
labelBalance = new Label();
|
||||
panelSend = new Panel();
|
||||
checkBoxSendSubFee = new CheckBox();
|
||||
buttonSendMax = new Button();
|
||||
buttonSendHNS = new Button();
|
||||
labelSendingError = new Label();
|
||||
labelSendingFee = new Label();
|
||||
textBoxSendingAmount = new TextBox();
|
||||
textBoxSendingTo = new TextBox();
|
||||
labelSendingMax = new Label();
|
||||
labelSendingAmount = new Label();
|
||||
labelSendingTo = new Label();
|
||||
labelSendPrompt = new Label();
|
||||
statusStripmain.SuspendLayout();
|
||||
panelaccount.SuspendLayout();
|
||||
groupBoxaccount.SuspendLayout();
|
||||
@ -66,6 +77,7 @@
|
||||
panelPortfolio.SuspendLayout();
|
||||
groupBoxinfo.SuspendLayout();
|
||||
groupBoxbalance.SuspendLayout();
|
||||
panelSend.SuspendLayout();
|
||||
SuspendLayout();
|
||||
//
|
||||
// statusStripmain
|
||||
@ -128,7 +140,7 @@
|
||||
//
|
||||
// groupBoxaccount
|
||||
//
|
||||
groupBoxaccount.Controls.Add(label1);
|
||||
groupBoxaccount.Controls.Add(labelloginprompt);
|
||||
groupBoxaccount.Controls.Add(comboBoxaccount);
|
||||
groupBoxaccount.Controls.Add(textBoxaccountpassword);
|
||||
groupBoxaccount.Controls.Add(buttonaccountlogin);
|
||||
@ -143,15 +155,15 @@
|
||||
groupBoxaccount.TabStop = false;
|
||||
groupBoxaccount.Text = "Login";
|
||||
//
|
||||
// label1
|
||||
// labelloginprompt
|
||||
//
|
||||
label1.AutoSize = true;
|
||||
label1.Font = new Font("Segoe UI", 15.75F, FontStyle.Regular, GraphicsUnit.Point);
|
||||
label1.Location = new Point(6, 19);
|
||||
label1.Name = "label1";
|
||||
label1.Size = new Size(281, 30);
|
||||
label1.TabIndex = 7;
|
||||
label1.Text = "Please Login to your account";
|
||||
labelloginprompt.AutoSize = true;
|
||||
labelloginprompt.Font = new Font("Segoe UI", 15.75F, FontStyle.Regular, GraphicsUnit.Point);
|
||||
labelloginprompt.Location = new Point(6, 19);
|
||||
labelloginprompt.Name = "labelloginprompt";
|
||||
labelloginprompt.Size = new Size(281, 30);
|
||||
labelloginprompt.TabIndex = 7;
|
||||
labelloginprompt.Text = "Please Login to your account";
|
||||
//
|
||||
// comboBoxaccount
|
||||
//
|
||||
@ -216,49 +228,52 @@
|
||||
//
|
||||
// panelNav
|
||||
//
|
||||
panelNav.Controls.Add(buttonReceive);
|
||||
panelNav.Controls.Add(buttonSend);
|
||||
panelNav.Controls.Add(buttonPortfolio);
|
||||
panelNav.Controls.Add(buttonNavReceive);
|
||||
panelNav.Controls.Add(buttonNavSend);
|
||||
panelNav.Controls.Add(buttonNavPortfolio);
|
||||
panelNav.Dock = DockStyle.Left;
|
||||
panelNav.Location = new Point(0, 22);
|
||||
panelNav.Name = "panelNav";
|
||||
panelNav.Size = new Size(114, 553);
|
||||
panelNav.TabIndex = 6;
|
||||
//
|
||||
// buttonReceive
|
||||
// buttonNavReceive
|
||||
//
|
||||
buttonReceive.FlatStyle = FlatStyle.Flat;
|
||||
buttonReceive.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
|
||||
buttonReceive.Location = new Point(12, 134);
|
||||
buttonReceive.Name = "buttonReceive";
|
||||
buttonReceive.Size = new Size(89, 30);
|
||||
buttonReceive.TabIndex = 1;
|
||||
buttonReceive.Text = "Receive";
|
||||
buttonReceive.UseVisualStyleBackColor = true;
|
||||
buttonNavReceive.FlatStyle = FlatStyle.Flat;
|
||||
buttonNavReceive.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
|
||||
buttonNavReceive.Location = new Point(12, 134);
|
||||
buttonNavReceive.Name = "buttonNavReceive";
|
||||
buttonNavReceive.Size = new Size(89, 30);
|
||||
buttonNavReceive.TabIndex = 1;
|
||||
buttonNavReceive.TabStop = false;
|
||||
buttonNavReceive.Text = "Receive";
|
||||
buttonNavReceive.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// buttonSend
|
||||
// buttonNavSend
|
||||
//
|
||||
buttonSend.FlatStyle = FlatStyle.Flat;
|
||||
buttonSend.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
|
||||
buttonSend.Location = new Point(12, 80);
|
||||
buttonSend.Name = "buttonSend";
|
||||
buttonSend.Size = new Size(89, 30);
|
||||
buttonSend.TabIndex = 1;
|
||||
buttonSend.Text = "Send";
|
||||
buttonSend.UseVisualStyleBackColor = true;
|
||||
buttonSend.Click += buttonSend_Click;
|
||||
buttonNavSend.FlatStyle = FlatStyle.Flat;
|
||||
buttonNavSend.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
|
||||
buttonNavSend.Location = new Point(12, 80);
|
||||
buttonNavSend.Name = "buttonNavSend";
|
||||
buttonNavSend.Size = new Size(89, 30);
|
||||
buttonNavSend.TabIndex = 1;
|
||||
buttonNavSend.TabStop = false;
|
||||
buttonNavSend.Text = "Send";
|
||||
buttonNavSend.UseVisualStyleBackColor = true;
|
||||
buttonNavSend.Click += SendPanel_Click;
|
||||
//
|
||||
// buttonPortfolio
|
||||
// buttonNavPortfolio
|
||||
//
|
||||
buttonPortfolio.FlatStyle = FlatStyle.Flat;
|
||||
buttonPortfolio.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
|
||||
buttonPortfolio.Location = new Point(12, 25);
|
||||
buttonPortfolio.Name = "buttonPortfolio";
|
||||
buttonPortfolio.Size = new Size(89, 30);
|
||||
buttonPortfolio.TabIndex = 0;
|
||||
buttonPortfolio.Text = "Portfolio";
|
||||
buttonPortfolio.UseVisualStyleBackColor = true;
|
||||
buttonPortfolio.Click += buttonPortfolio_Click;
|
||||
buttonNavPortfolio.FlatStyle = FlatStyle.Flat;
|
||||
buttonNavPortfolio.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
|
||||
buttonNavPortfolio.Location = new Point(12, 25);
|
||||
buttonNavPortfolio.Name = "buttonNavPortfolio";
|
||||
buttonNavPortfolio.Size = new Size(89, 30);
|
||||
buttonNavPortfolio.TabIndex = 0;
|
||||
buttonNavPortfolio.TabStop = false;
|
||||
buttonNavPortfolio.Text = "Portfolio";
|
||||
buttonNavPortfolio.UseVisualStyleBackColor = true;
|
||||
buttonNavPortfolio.Click += PortfolioPanel_Click;
|
||||
//
|
||||
// panelPortfolio
|
||||
//
|
||||
@ -367,12 +382,138 @@
|
||||
//
|
||||
// panelSend
|
||||
//
|
||||
panelSend.Controls.Add(checkBoxSendSubFee);
|
||||
panelSend.Controls.Add(buttonSendMax);
|
||||
panelSend.Controls.Add(buttonSendHNS);
|
||||
panelSend.Controls.Add(labelSendingError);
|
||||
panelSend.Controls.Add(labelSendingFee);
|
||||
panelSend.Controls.Add(textBoxSendingAmount);
|
||||
panelSend.Controls.Add(textBoxSendingTo);
|
||||
panelSend.Controls.Add(labelSendingMax);
|
||||
panelSend.Controls.Add(labelSendingAmount);
|
||||
panelSend.Controls.Add(labelSendingTo);
|
||||
panelSend.Controls.Add(labelSendPrompt);
|
||||
panelSend.Location = new Point(120, 25);
|
||||
panelSend.Name = "panelSend";
|
||||
panelSend.Size = new Size(200, 100);
|
||||
panelSend.Size = new Size(974, 521);
|
||||
panelSend.TabIndex = 2;
|
||||
panelSend.Visible = false;
|
||||
//
|
||||
// checkBoxSendSubFee
|
||||
//
|
||||
checkBoxSendSubFee.AutoSize = true;
|
||||
checkBoxSendSubFee.CheckAlign = ContentAlignment.MiddleRight;
|
||||
checkBoxSendSubFee.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
|
||||
checkBoxSendSubFee.Location = new Point(254, 258);
|
||||
checkBoxSendSubFee.Name = "checkBoxSendSubFee";
|
||||
checkBoxSendSubFee.Size = new Size(206, 25);
|
||||
checkBoxSendSubFee.TabIndex = 16;
|
||||
checkBoxSendSubFee.Text = "Subtract Fee from Output";
|
||||
checkBoxSendSubFee.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// buttonSendMax
|
||||
//
|
||||
buttonSendMax.FlatStyle = FlatStyle.Flat;
|
||||
buttonSendMax.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
|
||||
buttonSendMax.Location = new Point(609, 159);
|
||||
buttonSendMax.Name = "buttonSendMax";
|
||||
buttonSendMax.Size = new Size(81, 29);
|
||||
buttonSendMax.TabIndex = 15;
|
||||
buttonSendMax.Text = "Max";
|
||||
buttonSendMax.UseVisualStyleBackColor = true;
|
||||
buttonSendMax.Click += buttonSendMax_Click;
|
||||
//
|
||||
// buttonSendHNS
|
||||
//
|
||||
buttonSendHNS.FlatStyle = FlatStyle.Flat;
|
||||
buttonSendHNS.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
|
||||
buttonSendHNS.Location = new Point(361, 315);
|
||||
buttonSendHNS.Name = "buttonSendHNS";
|
||||
buttonSendHNS.Size = new Size(150, 46);
|
||||
buttonSendHNS.TabIndex = 14;
|
||||
buttonSendHNS.Text = "Send";
|
||||
buttonSendHNS.UseVisualStyleBackColor = true;
|
||||
buttonSendHNS.Click += buttonSendHNS_Click;
|
||||
//
|
||||
// labelSendingError
|
||||
//
|
||||
labelSendingError.AutoSize = true;
|
||||
labelSendingError.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
|
||||
labelSendingError.Location = new Point(615, 131);
|
||||
labelSendingError.Name = "labelSendingError";
|
||||
labelSendingError.Size = new Size(52, 21);
|
||||
labelSendingError.TabIndex = 13;
|
||||
labelSendingError.Text = "label1";
|
||||
labelSendingError.Visible = false;
|
||||
//
|
||||
// labelSendingFee
|
||||
//
|
||||
labelSendingFee.AutoSize = true;
|
||||
labelSendingFee.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
|
||||
labelSendingFee.Location = new Point(254, 234);
|
||||
labelSendingFee.Name = "labelSendingFee";
|
||||
labelSendingFee.Size = new Size(109, 21);
|
||||
labelSendingFee.TabIndex = 12;
|
||||
labelSendingFee.Text = "Estimated Fee:";
|
||||
//
|
||||
// textBoxSendingAmount
|
||||
//
|
||||
textBoxSendingAmount.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
|
||||
textBoxSendingAmount.Location = new Point(346, 159);
|
||||
textBoxSendingAmount.Name = "textBoxSendingAmount";
|
||||
textBoxSendingAmount.Size = new Size(344, 29);
|
||||
textBoxSendingAmount.TabIndex = 11;
|
||||
textBoxSendingAmount.Leave += textBoxSendingAmount_Leave;
|
||||
//
|
||||
// textBoxSendingTo
|
||||
//
|
||||
textBoxSendingTo.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
|
||||
textBoxSendingTo.Location = new Point(346, 98);
|
||||
textBoxSendingTo.Name = "textBoxSendingTo";
|
||||
textBoxSendingTo.Size = new Size(344, 29);
|
||||
textBoxSendingTo.TabIndex = 11;
|
||||
textBoxSendingTo.Leave += textBoxSendingTo_Leave;
|
||||
//
|
||||
// labelSendingMax
|
||||
//
|
||||
labelSendingMax.AutoSize = true;
|
||||
labelSendingMax.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
|
||||
labelSendingMax.Location = new Point(254, 204);
|
||||
labelSendingMax.Name = "labelSendingMax";
|
||||
labelSendingMax.Size = new Size(99, 21);
|
||||
labelSendingMax.TabIndex = 10;
|
||||
labelSendingMax.Text = "Max Amount";
|
||||
//
|
||||
// labelSendingAmount
|
||||
//
|
||||
labelSendingAmount.AutoSize = true;
|
||||
labelSendingAmount.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
|
||||
labelSendingAmount.Location = new Point(254, 162);
|
||||
labelSendingAmount.Name = "labelSendingAmount";
|
||||
labelSendingAmount.Size = new Size(66, 21);
|
||||
labelSendingAmount.TabIndex = 9;
|
||||
labelSendingAmount.Text = "Amount";
|
||||
//
|
||||
// labelSendingTo
|
||||
//
|
||||
labelSendingTo.AutoSize = true;
|
||||
labelSendingTo.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
|
||||
labelSendingTo.Location = new Point(254, 101);
|
||||
labelSendingTo.Name = "labelSendingTo";
|
||||
labelSendingTo.Size = new Size(86, 21);
|
||||
labelSendingTo.TabIndex = 8;
|
||||
labelSendingTo.Text = "Sending To";
|
||||
//
|
||||
// labelSendPrompt
|
||||
//
|
||||
labelSendPrompt.AutoSize = true;
|
||||
labelSendPrompt.Font = new Font("Segoe UI", 15F, FontStyle.Regular, GraphicsUnit.Point);
|
||||
labelSendPrompt.Location = new Point(395, 38);
|
||||
labelSendPrompt.Name = "labelSendPrompt";
|
||||
labelSendPrompt.Size = new Size(101, 28);
|
||||
labelSendPrompt.TabIndex = 0;
|
||||
labelSendPrompt.Text = "Send HNS";
|
||||
//
|
||||
// MainForm
|
||||
//
|
||||
AutoScaleDimensions = new SizeF(7F, 15F);
|
||||
@ -399,6 +540,8 @@
|
||||
groupBoxinfo.PerformLayout();
|
||||
groupBoxbalance.ResumeLayout(false);
|
||||
groupBoxbalance.PerformLayout();
|
||||
panelSend.ResumeLayout(false);
|
||||
panelSend.PerformLayout();
|
||||
ResumeLayout(false);
|
||||
PerformLayout();
|
||||
}
|
||||
@ -415,15 +558,15 @@
|
||||
private Label labelaccountusername;
|
||||
private Label labelaccountpassword;
|
||||
private GroupBox groupBoxaccount;
|
||||
private Label label1;
|
||||
private Label labelloginprompt;
|
||||
private ComboBox comboBoxaccount;
|
||||
private TextBox textBoxaccountpassword;
|
||||
private ToolStripStatusLabel toolStripStatusLabelstatus;
|
||||
private ToolStripSplitButton toolStripSplitButtonlogout;
|
||||
private Panel panelNav;
|
||||
private Button buttonPortfolio;
|
||||
private Button buttonSend;
|
||||
private Button buttonReceive;
|
||||
private Button buttonNavPortfolio;
|
||||
private Button buttonNavSend;
|
||||
private Button buttonNavReceive;
|
||||
private Panel panelPortfolio;
|
||||
private Label labelLocked;
|
||||
private Label labelBalance;
|
||||
@ -435,5 +578,16 @@
|
||||
private Label labelSyncPercent;
|
||||
private GroupBox groupBoxTransactions;
|
||||
private Panel panelSend;
|
||||
private Label labelSendPrompt;
|
||||
private Label labelSendingMax;
|
||||
private Label labelSendingAmount;
|
||||
private Label labelSendingTo;
|
||||
private TextBox textBoxSendingTo;
|
||||
private TextBox textBoxSendingAmount;
|
||||
private Label labelSendingFee;
|
||||
private Label labelSendingError;
|
||||
private Button buttonSendHNS;
|
||||
private Button buttonSendMax;
|
||||
private CheckBox checkBoxSendSubFee;
|
||||
}
|
||||
}
|
@ -16,8 +16,8 @@ namespace FireWallet
|
||||
int Network;
|
||||
string account;
|
||||
string password;
|
||||
double balance;
|
||||
double balanceLocked;
|
||||
decimal balance;
|
||||
decimal balanceLocked;
|
||||
int screen; // 0 = login, 1 = portfolio
|
||||
int height;
|
||||
double syncProgress;
|
||||
@ -288,6 +288,7 @@ namespace FireWallet
|
||||
sw.WriteLine("transparency-percent: 90");
|
||||
sw.WriteLine("selected-bg: #000000");
|
||||
sw.WriteLine("selected-fg: #ffffff");
|
||||
sw.WriteLine("error: #ff0000");
|
||||
|
||||
sw.Dispose();
|
||||
AddLog("Created theme file");
|
||||
@ -415,7 +416,7 @@ namespace FireWallet
|
||||
toolStripSplitButtonlogout.Visible = true;
|
||||
panelNav.Visible = true;
|
||||
screen = 1;
|
||||
buttonPortfolio.PerformClick();
|
||||
buttonNavPortfolio.PerformClick();
|
||||
}
|
||||
}
|
||||
|
||||
@ -449,6 +450,7 @@ namespace FireWallet
|
||||
}
|
||||
panelaccount.Visible = true;
|
||||
panelNav.Visible = false;
|
||||
panelSend.Visible = false;
|
||||
toolStripStatusLabelaccount.Text = "Account: Not Logged In";
|
||||
screen = 0;
|
||||
|
||||
@ -476,15 +478,21 @@ namespace FireWallet
|
||||
|
||||
JObject resp = JObject.Parse(response);
|
||||
|
||||
double available = Convert.ToDouble(resp["unconfirmed"].ToString()) / 1000000;
|
||||
double locked = Convert.ToDouble(resp["lockedUnconfirmed"].ToString()) / 1000000;
|
||||
decimal available = Convert.ToDecimal(resp["unconfirmed"].ToString()) / 1000000;
|
||||
decimal locked = Convert.ToDecimal(resp["lockedUnconfirmed"].ToString()) / 1000000;
|
||||
available = available - locked;
|
||||
available = Math.Round(available, 2);
|
||||
locked = Math.Round(locked, 2);
|
||||
available = decimal.Round(available, 2);
|
||||
locked = decimal.Round(locked, 2);
|
||||
balance = available;
|
||||
balanceLocked = locked;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Post to HSD API
|
||||
/// </summary>
|
||||
/// <param name="path">Path to post to</param>
|
||||
/// <param name="wallet">Whether to use port 12039</param>
|
||||
/// <param name="content">Content to post</param>
|
||||
/// <returns></returns>
|
||||
private async Task<string> APIPost(string path, bool wallet, string content)
|
||||
{
|
||||
string key = nodeSettings["Key"];
|
||||
@ -516,6 +524,12 @@ namespace FireWallet
|
||||
|
||||
return await resp.Content.ReadAsStringAsync();
|
||||
}
|
||||
/// <summary>
|
||||
/// Get from HSD API
|
||||
/// </summary>
|
||||
/// <param name="path">Path to get</param>
|
||||
/// <param name="wallet">Whether to use port 12039</param>
|
||||
/// <returns></returns>
|
||||
private async Task<string> APIGet(string path, bool wallet)
|
||||
{
|
||||
string key = nodeSettings["Key"];
|
||||
@ -548,7 +562,7 @@ namespace FireWallet
|
||||
}
|
||||
}
|
||||
|
||||
private async void GetInfo()
|
||||
private async void GetTXHistory()
|
||||
{
|
||||
// Get height and progress
|
||||
String APIresponse = await APIGet("", false);
|
||||
@ -650,6 +664,32 @@ namespace FireWallet
|
||||
|
||||
|
||||
}
|
||||
private async Task<string> GetFee()
|
||||
{
|
||||
try
|
||||
{
|
||||
string response = await APIGet("fee", false);
|
||||
JObject resp = JObject.Parse(response);
|
||||
decimal fee = Convert.ToDecimal(resp["rate"].ToString());
|
||||
fee = fee / 1000000;
|
||||
if (fee < 0.0001m) fee = 1;
|
||||
|
||||
return fee.ToString();
|
||||
//return resp["rate"].ToString();
|
||||
}
|
||||
catch
|
||||
{
|
||||
return "1";
|
||||
}
|
||||
}
|
||||
private async Task<bool> ValidAddress(string address)
|
||||
{
|
||||
string output = await APIPost("", false, "{\"method\": \"validateaddress\",\"params\": [ \"" + address + "\" ]}");
|
||||
JObject APIresp = JObject.Parse(output);
|
||||
JObject result = JObject.Parse(APIresp["result"].ToString());
|
||||
if (result["isvalid"].ToString() == "True") return true;
|
||||
else return false;
|
||||
}
|
||||
|
||||
#endregion
|
||||
#region Timers
|
||||
@ -659,42 +699,173 @@ namespace FireWallet
|
||||
// If logged in, update info
|
||||
if (panelaccount.Visible == false)
|
||||
{
|
||||
GetInfo();
|
||||
GetTXHistory();
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Nav
|
||||
private async void buttonPortfolio_Click(object sender, EventArgs e)
|
||||
private async void PortfolioPanel_Click(object sender, EventArgs e)
|
||||
{
|
||||
buttonSend.BackColor = ColorTranslator.FromHtml(theme["background"]);
|
||||
buttonSend.ForeColor = ColorTranslator.FromHtml(theme["foreground"]);
|
||||
buttonNavSend.BackColor = ColorTranslator.FromHtml(theme["background"]);
|
||||
buttonNavSend.ForeColor = ColorTranslator.FromHtml(theme["foreground"]);
|
||||
panelSend.Hide();
|
||||
panelPortfolio.Show();
|
||||
await UpdateBalance();
|
||||
GetInfo();
|
||||
GetTXHistory();
|
||||
labelBalance.Text = "Available: " + balance.ToString() + " HNS";
|
||||
labelLocked.Text = "Locked: " + balanceLocked.ToString() + " HNS";
|
||||
labelBalanceTotal.Text = "Total: " + (balance + balanceLocked).ToString() + " HNS";
|
||||
if (theme.ContainsKey("selected-bg") && theme.ContainsKey("selected-fg"))
|
||||
{
|
||||
buttonPortfolio.BackColor = ColorTranslator.FromHtml(theme["selected-bg"]);
|
||||
buttonPortfolio.ForeColor = ColorTranslator.FromHtml(theme["selected-fg"]);
|
||||
buttonNavPortfolio.BackColor = ColorTranslator.FromHtml(theme["selected-bg"]);
|
||||
buttonNavPortfolio.ForeColor = ColorTranslator.FromHtml(theme["selected-fg"]);
|
||||
}
|
||||
}
|
||||
|
||||
private async void SendPanel_Click(object sender, EventArgs e)
|
||||
{
|
||||
panelPortfolio.Hide();
|
||||
panelSend.Show();
|
||||
buttonNavPortfolio.BackColor = ColorTranslator.FromHtml(theme["background"]);
|
||||
buttonNavPortfolio.ForeColor = ColorTranslator.FromHtml(theme["foreground"]);
|
||||
if (theme.ContainsKey("selected-bg") && theme.ContainsKey("selected-fg"))
|
||||
{
|
||||
buttonNavSend.BackColor = ColorTranslator.FromHtml(theme["selected-bg"]);
|
||||
buttonNavSend.ForeColor = ColorTranslator.FromHtml(theme["selected-fg"]);
|
||||
}
|
||||
if (theme.ContainsKey("error"))
|
||||
{
|
||||
labelSendingError.ForeColor = ColorTranslator.FromHtml(theme["error"]);
|
||||
}
|
||||
|
||||
labelSendPrompt.Left = (panelSend.Width - labelSendPrompt.Width) / 2;
|
||||
buttonSendHNS.Left = (panelSend.Width - buttonSendHNS.Width) / 2;
|
||||
labelSendingTo.Left = (panelSend.Width - labelSendingTo.Width - textBoxSendingTo.Width) / 2;
|
||||
labelSendingAmount.Left = labelSendingTo.Left;
|
||||
textBoxSendingTo.Left = labelSendingTo.Left + labelSendingTo.Width + 10;
|
||||
textBoxSendingAmount.Left = textBoxSendingTo.Left;
|
||||
labelSendingMax.Left = labelSendingTo.Left;
|
||||
labelSendingError.Left = textBoxSendingTo.Left + textBoxSendingTo.Width + 10;
|
||||
labelSendingFee.Left = labelSendingTo.Left;
|
||||
buttonSendMax.Left = textBoxSendingAmount.Left + textBoxSendingAmount.Width - buttonSendMax.Width;
|
||||
checkBoxSendSubFee.Left = labelSendingTo.Left;
|
||||
|
||||
labelSendingMax.Text = "Max: " + balance.ToString() + " HNS";
|
||||
textBoxSendingTo.Focus();
|
||||
string fee = await GetFee();
|
||||
labelSendingFee.Text = "Est. Fee: " + fee + " HNS";
|
||||
labelSendingError.Hide();
|
||||
|
||||
}
|
||||
#endregion
|
||||
#region Send
|
||||
private async void textBoxSendingTo_Leave(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
bool valid = await ValidAddress(textBoxSendingTo.Text);
|
||||
if (valid)
|
||||
{
|
||||
labelSendingError.Hide();
|
||||
labelSendingError.Text = "";
|
||||
}
|
||||
else
|
||||
{
|
||||
labelSendingError.Show();
|
||||
labelSendingError.Text = "Invalid Address";
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
labelSendingError.Show();
|
||||
labelSendingError.Text = ex.Message;
|
||||
}
|
||||
}
|
||||
|
||||
private void textBoxSendingAmount_Leave(object sender, EventArgs e)
|
||||
{
|
||||
decimal amount = 0;
|
||||
if (decimal.TryParse(textBoxSendingAmount.Text, out amount))
|
||||
{
|
||||
labelSendingError.Hide();
|
||||
labelSendingError.Text = "";
|
||||
}
|
||||
else
|
||||
{
|
||||
labelSendingError.Show();
|
||||
labelSendingError.Text = "Invalid Amount";
|
||||
}
|
||||
}
|
||||
|
||||
private async void buttonSendMax_Click(object sender, EventArgs e)
|
||||
{
|
||||
string fee = await GetFee();
|
||||
decimal feeDecimal = decimal.Parse(fee);
|
||||
textBoxSendingAmount.Text = (balance - feeDecimal).ToString();
|
||||
}
|
||||
|
||||
private async void buttonSendHNS_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
string address = textBoxSendingTo.Text;
|
||||
bool valid = await ValidAddress(address);
|
||||
if (!valid)
|
||||
{
|
||||
labelSendingError.Show();
|
||||
labelSendingError.Text = "Invalid Address";
|
||||
return;
|
||||
}
|
||||
decimal amount = 0;
|
||||
if (!decimal.TryParse(textBoxSendingAmount.Text, out amount))
|
||||
{
|
||||
labelSendingError.Show();
|
||||
labelSendingError.Text += " Invalid Amount";
|
||||
return;
|
||||
}
|
||||
string feeString = await GetFee();
|
||||
decimal fee = decimal.Parse(feeString);
|
||||
string subtractFee = "false";
|
||||
if (checkBoxSendSubFee.Checked) subtractFee = "true";
|
||||
else if (amount > (balance - fee))
|
||||
{
|
||||
labelSendingError.Show();
|
||||
labelSendingError.Text += " Insufficient Funds";
|
||||
return;
|
||||
}
|
||||
|
||||
AddLog("Sending " + amount.ToString() + " HNS to " + address);
|
||||
string content = "{\"method\": \"sendtoaddress\",\"params\": [ \"" + address + "\", " +
|
||||
amount.ToString() + ", \"\", \"\", " + subtractFee + " ]}";
|
||||
string output = await APIPost("", true, content);
|
||||
JObject APIresp = JObject.Parse(output);
|
||||
if (APIresp["error"].ToString() == "null")
|
||||
{
|
||||
NotifyForm notify = new NotifyForm("Error Transaction Failed");
|
||||
notify.ShowDialog();
|
||||
return;
|
||||
}
|
||||
string hash = APIresp["result"].ToString();
|
||||
string link = userSettings["explorer-tx"] + hash;
|
||||
NotifyForm notifySuccess = new NotifyForm("Transaction Sent\nThis transaction could take up to 20 minutes to mine",
|
||||
"Explorer",link);
|
||||
notifySuccess.ShowDialog();
|
||||
textBoxSendingTo.Text = "";
|
||||
textBoxSendingAmount.Text = "";
|
||||
labelSendingError.Hide();
|
||||
labelSendingError.Text = "";
|
||||
buttonNavPortfolio.PerformClick();
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
AddLog(ex.Message);
|
||||
labelSendingError.Show();
|
||||
labelSendingError.Text = ex.Message;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
private void buttonSend_Click(object sender, EventArgs e)
|
||||
{
|
||||
panelPortfolio.Hide();
|
||||
panelSend.Show();
|
||||
buttonPortfolio.BackColor = ColorTranslator.FromHtml(theme["background"]);
|
||||
buttonPortfolio.ForeColor = ColorTranslator.FromHtml(theme["foreground"]);
|
||||
if (theme.ContainsKey("selected-bg") && theme.ContainsKey("selected-fg"))
|
||||
{
|
||||
buttonSend.BackColor = ColorTranslator.FromHtml(theme["selected-bg"]);
|
||||
buttonSend.ForeColor = ColorTranslator.FromHtml(theme["selected-fg"]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user