From acf85f968e633f4a2cf52a19ef85a83e7bda26f2 Mon Sep 17 00:00:00 2001 From: "Valeriano A.R" Date: Sat, 5 Sep 2020 13:47:05 +0200 Subject: [PATCH] FrmMain: Better user information. --- BasicBlockChain/FrmMain.Designer.cs | 106 +++++++++++++++++++++------- BasicBlockChain/FrmMain.cs | 55 ++++++++++++++- 2 files changed, 132 insertions(+), 29 deletions(-) diff --git a/BasicBlockChain/FrmMain.Designer.cs b/BasicBlockChain/FrmMain.Designer.cs index b5b4890..942e5e8 100644 --- a/BasicBlockChain/FrmMain.Designer.cs +++ b/BasicBlockChain/FrmMain.Designer.cs @@ -40,34 +40,36 @@ this.txtMinerName = new System.Windows.Forms.TextBox(); this.txtFrom = new System.Windows.Forms.TextBox(); this.txtTo = new System.Windows.Forms.TextBox(); - this.txtAmount = new System.Windows.Forms.TextBox(); + this.numAmount = new System.Windows.Forms.NumericUpDown(); + this.btnClearFrom = new System.Windows.Forms.Button(); + this.btnClearTo = new System.Windows.Forms.Button(); + this.btnClearAmount = new System.Windows.Forms.Button(); + this.lsbUsers = new System.Windows.Forms.ListBox(); this.grpAddTransaction.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numAmount)).BeginInit(); this.SuspendLayout(); // // lsbTransactions // - this.lsbTransactions.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + this.lsbTransactions.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left))); this.lsbTransactions.FormattingEnabled = true; - this.lsbTransactions.Location = new System.Drawing.Point(12, 12); + this.lsbTransactions.Location = new System.Drawing.Point(12, 129); this.lsbTransactions.Name = "lsbTransactions"; - this.lsbTransactions.Size = new System.Drawing.Size(225, 303); + this.lsbTransactions.Size = new System.Drawing.Size(225, 368); this.lsbTransactions.TabIndex = 0; // // lsbPendingTransactions // - this.lsbPendingTransactions.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left))); this.lsbPendingTransactions.FormattingEnabled = true; - this.lsbPendingTransactions.Location = new System.Drawing.Point(243, 12); + this.lsbPendingTransactions.Location = new System.Drawing.Point(12, 12); this.lsbPendingTransactions.Name = "lsbPendingTransactions"; - this.lsbPendingTransactions.Size = new System.Drawing.Size(225, 277); + this.lsbPendingTransactions.Size = new System.Drawing.Size(225, 82); this.lsbPendingTransactions.TabIndex = 1; // // btnMine // - this.btnMine.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.btnMine.Location = new System.Drawing.Point(393, 297); + this.btnMine.Location = new System.Drawing.Point(162, 100); this.btnMine.Name = "btnMine"; this.btnMine.Size = new System.Drawing.Size(75, 23); this.btnMine.TabIndex = 2; @@ -77,23 +79,26 @@ // // grpAddTransaction // - this.grpAddTransaction.Controls.Add(this.txtAmount); + this.grpAddTransaction.Controls.Add(this.btnClearAmount); + this.grpAddTransaction.Controls.Add(this.btnClearTo); + this.grpAddTransaction.Controls.Add(this.btnClearFrom); + this.grpAddTransaction.Controls.Add(this.numAmount); this.grpAddTransaction.Controls.Add(this.txtTo); this.grpAddTransaction.Controls.Add(this.txtFrom); this.grpAddTransaction.Controls.Add(this.lblAmount); this.grpAddTransaction.Controls.Add(this.lblTo); this.grpAddTransaction.Controls.Add(this.lblFrom); this.grpAddTransaction.Controls.Add(this.btnAdd); - this.grpAddTransaction.Location = new System.Drawing.Point(474, 12); + this.grpAddTransaction.Location = new System.Drawing.Point(243, 12); this.grpAddTransaction.Name = "grpAddTransaction"; - this.grpAddTransaction.Size = new System.Drawing.Size(155, 135); + this.grpAddTransaction.Size = new System.Drawing.Size(175, 132); this.grpAddTransaction.TabIndex = 3; this.grpAddTransaction.TabStop = false; this.grpAddTransaction.Text = "Add transaction"; // // btnAdd // - this.btnAdd.Location = new System.Drawing.Point(72, 97); + this.btnAdd.Location = new System.Drawing.Point(94, 97); this.btnAdd.Name = "btnAdd"; this.btnAdd.Size = new System.Drawing.Size(75, 23); this.btnAdd.TabIndex = 0; @@ -130,38 +135,82 @@ // // txtMinerName // - this.txtMinerName.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.txtMinerName.Location = new System.Drawing.Point(287, 300); + this.txtMinerName.Location = new System.Drawing.Point(69, 103); this.txtMinerName.Name = "txtMinerName"; - this.txtMinerName.Size = new System.Drawing.Size(100, 20); + this.txtMinerName.Size = new System.Drawing.Size(87, 20); this.txtMinerName.TabIndex = 4; // // txtFrom // this.txtFrom.Location = new System.Drawing.Point(47, 19); this.txtFrom.Name = "txtFrom"; - this.txtFrom.Size = new System.Drawing.Size(100, 20); + this.txtFrom.Size = new System.Drawing.Size(95, 20); this.txtFrom.TabIndex = 4; // // txtTo // this.txtTo.Location = new System.Drawing.Point(47, 45); this.txtTo.Name = "txtTo"; - this.txtTo.Size = new System.Drawing.Size(100, 20); + this.txtTo.Size = new System.Drawing.Size(95, 20); this.txtTo.TabIndex = 5; // - // txtAmount + // numAmount // - this.txtAmount.Location = new System.Drawing.Point(47, 71); - this.txtAmount.Name = "txtAmount"; - this.txtAmount.Size = new System.Drawing.Size(100, 20); - this.txtAmount.TabIndex = 6; + this.numAmount.Location = new System.Drawing.Point(47, 71); + this.numAmount.Maximum = new decimal(new int[] { + -1, + 2147483647, + 0, + 0}); + this.numAmount.Name = "numAmount"; + this.numAmount.Size = new System.Drawing.Size(95, 20); + this.numAmount.TabIndex = 7; + // + // btnClearFrom + // + this.btnClearFrom.Location = new System.Drawing.Point(148, 19); + this.btnClearFrom.Name = "btnClearFrom"; + this.btnClearFrom.Size = new System.Drawing.Size(21, 20); + this.btnClearFrom.TabIndex = 8; + this.btnClearFrom.Text = "X"; + this.btnClearFrom.UseVisualStyleBackColor = true; + this.btnClearFrom.Click += new System.EventHandler(this.btnClearFrom_Click); + // + // btnClearTo + // + this.btnClearTo.Location = new System.Drawing.Point(148, 45); + this.btnClearTo.Name = "btnClearTo"; + this.btnClearTo.Size = new System.Drawing.Size(21, 20); + this.btnClearTo.TabIndex = 9; + this.btnClearTo.Text = "X"; + this.btnClearTo.UseVisualStyleBackColor = true; + this.btnClearTo.Click += new System.EventHandler(this.btnClearTo_Click); + // + // btnClearAmount + // + this.btnClearAmount.Location = new System.Drawing.Point(148, 71); + this.btnClearAmount.Name = "btnClearAmount"; + this.btnClearAmount.Size = new System.Drawing.Size(21, 20); + this.btnClearAmount.TabIndex = 10; + this.btnClearAmount.Text = "X"; + this.btnClearAmount.UseVisualStyleBackColor = true; + this.btnClearAmount.Click += new System.EventHandler(this.btnClearAmount_Click); + // + // lsbUsers + // + this.lsbUsers.FormattingEnabled = true; + this.lsbUsers.Location = new System.Drawing.Point(243, 150); + this.lsbUsers.Name = "lsbUsers"; + this.lsbUsers.Size = new System.Drawing.Size(175, 134); + this.lsbUsers.TabIndex = 5; + this.lsbUsers.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.lsbUsers_MouseDoubleClick); // // FrmMain // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(651, 338); + this.ClientSize = new System.Drawing.Size(430, 521); + this.Controls.Add(this.lsbUsers); this.Controls.Add(this.txtMinerName); this.Controls.Add(this.grpAddTransaction); this.Controls.Add(this.btnMine); @@ -172,6 +221,7 @@ this.Text = "BasicBlockChain"; this.grpAddTransaction.ResumeLayout(false); this.grpAddTransaction.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numAmount)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); @@ -183,7 +233,6 @@ private System.Windows.Forms.ListBox lsbPendingTransactions; private System.Windows.Forms.Button btnMine; private System.Windows.Forms.GroupBox grpAddTransaction; - private System.Windows.Forms.TextBox txtAmount; private System.Windows.Forms.TextBox txtTo; private System.Windows.Forms.TextBox txtFrom; private System.Windows.Forms.Label lblAmount; @@ -191,5 +240,10 @@ private System.Windows.Forms.Label lblFrom; private System.Windows.Forms.Button btnAdd; private System.Windows.Forms.TextBox txtMinerName; + private System.Windows.Forms.Button btnClearAmount; + private System.Windows.Forms.Button btnClearTo; + private System.Windows.Forms.Button btnClearFrom; + private System.Windows.Forms.NumericUpDown numAmount; + private System.Windows.Forms.ListBox lsbUsers; } } \ No newline at end of file diff --git a/BasicBlockChain/FrmMain.cs b/BasicBlockChain/FrmMain.cs index c0b7761..40a9e91 100644 --- a/BasicBlockChain/FrmMain.cs +++ b/BasicBlockChain/FrmMain.cs @@ -16,12 +16,12 @@ namespace BasicBlockChain private void btnAdd_Click(object sender, EventArgs e) { - if (string.IsNullOrEmpty(txtTo.Text) || string.IsNullOrEmpty(txtFrom.Text) || string.IsNullOrEmpty(txtAmount.Text)) { return; } - long amount = Convert.ToInt64(txtAmount.Text); + if (string.IsNullOrEmpty(txtTo.Text) || string.IsNullOrEmpty(txtFrom.Text)) { return; } + long amount = (long)numAmount.Value; _nullCoin.AddTransaction(new Transaction(txtFrom.Text, txtTo.Text, amount, DateTime.UtcNow)); txtTo.Text = string.Empty; txtFrom.Text = string.Empty; - txtAmount.Text = string.Empty; + numAmount.Value = 0; Lists_Update(); } @@ -32,6 +32,21 @@ namespace BasicBlockChain Lists_Update(); } + private void btnClearFrom_Click(object sender, EventArgs e) + { + txtFrom.Text = string.Empty; + } + + private void btnClearTo_Click(object sender, EventArgs e) + { + txtTo.Text = string.Empty; + } + + private void btnClearAmount_Click(object sender, EventArgs e) + { + numAmount.Value = 0; + } + private void Lists_Update() { lsbTransactions.Items.Clear(); @@ -48,11 +63,45 @@ namespace BasicBlockChain { lsbPendingTransactions.Items.Add(Transaction_ToString(transaction)); } + + lsbUsers.Items.Clear(); + foreach (string user in _nullCoin.Users) + { + long amount = _nullCoin.GetMicroCoinBalance(user); + lsbUsers.Items.Add(new Wallet { User = user, Amount = amount }); + } + } + + public class Wallet + { + public string User { get; set; } + public long Amount { get; set; } + + public override string ToString() + { + return string.Format("{0} - {1}", User, Amount); + } } private string Transaction_ToString(Transaction transaction) { return string.Format("{0} - {1} - {2} - {3}", transaction.Date, transaction.Sender, transaction.Receiver, transaction.MicroCoinAmount); } + + private void lsbUsers_MouseDoubleClick(object sender, MouseEventArgs e) + { + Wallet wallet = (Wallet)lsbUsers.SelectedItem; + if (wallet == null) { return; } + if (string.IsNullOrEmpty(txtFrom.Text)) + { + txtFrom.Text = wallet.User; + return; + } + if (string.IsNullOrEmpty(txtTo.Text)) + { + txtTo.Text = wallet.User; + return; + } + } } }