Browse Source

GUI improvements and bugs fixes

PascalCoin 6 years ago
parent
commit
8050ff2acc

+ 2 - 0
src/gui-classic/UFRMAbout.pas

@@ -22,6 +22,8 @@ unit UFRMAbout;
 
 interface
 
+{$I ../config.inc}
+
 uses
 {$IFnDEF FPC}
   pngimage, Windows,

+ 23 - 24
src/gui-classic/UFRMAccountSelect.lfm

@@ -14,8 +14,7 @@ object FRMAccountSelect: TFRMAccountSelect
   OnCreate = FormCreate
   OnDestroy = FormDestroy
   Position = poOwnerFormCenter
-  LCLVersion = '1.8.4.0'
-  Visible = False
+  LCLVersion = '1.8.0.6'
   object pnlAccountsTop: TPanel
     Left = 395
     Height = 282
@@ -28,10 +27,10 @@ object FRMAccountSelect: TFRMAccountSelect
     TabOrder = 0
     object cbOnlyForSale: TCheckBox
       Left = 10
-      Height = 19
+      Height = 24
       Top = 65
-      Width = 81
-      Caption = 'Only for sale'
+      Width = 149
+      Caption = 'Only for sale or Swap'
       TabOrder = 0
     end
     object bbSearch: TBitBtn
@@ -103,25 +102,25 @@ object FRMAccountSelect: TFRMAccountSelect
     end
     object cbOnlyForPrivateSaleToMe: TCheckBox
       Left = 10
-      Height = 19
+      Height = 24
       Top = 111
-      Width = 148
+      Width = 206
       Caption = 'Only for private sale to me'
       TabOrder = 2
     end
     object cbAccountsBalance: TCheckBox
       Left = 10
-      Height = 19
+      Height = 24
       Top = 134
-      Width = 104
+      Width = 147
       Caption = 'Accounts Balance'
       TabOrder = 3
     end
     object cbMyAccounts: TCheckBox
       Left = 10
-      Height = 19
+      Height = 24
       Top = 10
-      Width = 81
+      Width = 113
       Caption = 'My Accounts'
       OnChange = cbMyAccountsChange
       OnClick = cbMyAccountsClick
@@ -129,25 +128,25 @@ object FRMAccountSelect: TFRMAccountSelect
     end
     object cbMyPrivateKeys: TComboBox
       Left = 10
-      Height = 21
+      Height = 31
       Top = 35
       Width = 176
-      ItemHeight = 13
+      ItemHeight = 0
       OnChange = cbMyPrivateKeysChange
       Style = csDropDownList
       TabOrder = 5
     end
     object cbOnlyForPublicSale: TCheckBox
       Left = 10
-      Height = 19
+      Height = 24
       Top = 88
-      Width = 111
+      Width = 157
       Caption = 'Only for public sale'
       TabOrder = 6
     end
     object ebMinBalance: TEdit
       Left = 16
-      Height = 21
+      Height = 23
       Top = 160
       Width = 73
       OnExit = ebMinBalanceExit
@@ -155,7 +154,7 @@ object FRMAccountSelect: TFRMAccountSelect
     end
     object ebMaxBalance: TEdit
       Left = 103
-      Height = 21
+      Height = 23
       Top = 160
       Width = 73
       OnExit = ebMaxBalanceExit
@@ -163,15 +162,15 @@ object FRMAccountSelect: TFRMAccountSelect
     end
     object cbAccountsName: TCheckBox
       Left = 10
-      Height = 19
+      Height = 24
       Top = 186
-      Width = 93
+      Width = 131
       Caption = 'Accounts name'
       TabOrder = 9
     end
     object ebAccountName: TEdit
       Left = 18
-      Height = 21
+      Height = 23
       Top = 209
       Width = 158
       TabOrder = 10
@@ -214,7 +213,7 @@ object FRMAccountSelect: TFRMAccountSelect
       Left = 5
       Height = 13
       Top = 10
-      Width = 48
+      Width = 55
       Caption = 'Accounts:'
       ParentColor = False
     end
@@ -222,7 +221,7 @@ object FRMAccountSelect: TFRMAccountSelect
       Left = 60
       Height = 13
       Top = 10
-      Width = 18
+      Width = 21
       Caption = '000'
       ParentColor = False
     end
@@ -230,7 +229,7 @@ object FRMAccountSelect: TFRMAccountSelect
       Left = 136
       Height = 13
       Top = 10
-      Width = 41
+      Width = 49
       Caption = 'Balance:'
       ParentColor = False
     end
@@ -238,7 +237,7 @@ object FRMAccountSelect: TFRMAccountSelect
       Left = 200
       Height = 13
       Top = 10
-      Width = 18
+      Width = 21
       Caption = '000'
       ParentColor = False
     end

+ 45 - 33
src/gui-classic/UFRMHashLock.pas

@@ -31,6 +31,7 @@ type
     FHashLock : T32Bytes;
     function GetError : String;
     procedure SetError(const AMsg : String);
+    procedure UpdateInfo;
   public
     { Public declarations }
     property Error : String read GetError write SetError;
@@ -52,43 +53,13 @@ uses UCrypto, UAccounts;
 procedure TFRMHashLock.btnCancelClick(Sender: TObject);
 begin
   Error := '';
+  ModalResult := mrCancel;
 end;
 
 procedure TFRMHashLock.btnSetClick(Sender: TObject);
-var
-  LData : TRawBytes;
-  LErr : string;
 begin
-  Try
-  Error := '';
-  if (NOT rbHashLock.Checked) AND (NOT rbHashLockKey.Checked) then begin
-    Error := 'Select the hash-lock mode';
-    Exit;
-  end;
-
-  if NOT TCrypto.IsHexString(meHashLockData.Text) then begin
-    Error := 'Data is not hexadecimal format';
-    Exit;
-  end;
-
-  LData := TCrypto.HexaToRaw(meHashLockData.Text);
-
-  if (rbHashLock.Checked) then begin
-    if Length(LData) <> 32 then begin
-      Error := 'Hash-lock must be 32bytes';
-      Exit;
-    end;
-    FHashLock := TBaseType.To32Bytes(LData);
-  end else if (rbHashLockKey.Checked) then begin
-    if NOT TAccountComp.IsValidHashLockKey(LData, LErr) then begin
-      Error := LErr;
-      Exit;
-    end;
-    FHashLock := TAccountComp.CalculateHashLock(LData);
-  end else Error := 'INTERNAL ERROR: 8356DE573BA748618EDD6603B22D9EAD';
-  Finally
-    if Error='' then ModalResult := MrOk;
-  end;
+  UpdateInfo;
+  if Error='' then ModalResult := MrOk;
 end;
 
 procedure TFRMHashLock.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
@@ -99,6 +70,8 @@ end;
 procedure TFRMHashLock.FormCreate(Sender: TObject);
 begin
   Error := '';
+  btnSet.ModalResult := MrNone;
+  btnSet.OnClick := btnSetClick;
 end;
 
 function TFRMHashLock.GetError : String;
@@ -111,4 +84,43 @@ begin
   lblError.Caption := AMsg;
 end;
 
+procedure TFRMHashLock.UpdateInfo;
+var
+  LData : TRawBytes;
+  LErr : string;
+begin
+  LErr := '';
+  Try
+    if (NOT rbHashLock.Checked) AND (NOT rbHashLockKey.Checked) then begin
+      LErr := 'Select the hash-lock mode';
+      Exit;
+    end;
+
+    if Length(Trim(meHashLockData.Text))<1 then begin
+      LErr := 'No Data value';
+      Exit;
+    end;
+
+    if NOT TCrypto.IsHexString(meHashLockData.Text) then begin
+      LErr := 'Data is not hexadecimal format';
+      Exit;
+    end;
+
+    LData := TCrypto.HexaToRaw(meHashLockData.Text);
+
+    if (rbHashLock.Checked) then begin
+      if Length(LData) <> 32 then begin
+        Lerr := 'Hash-lock must be 32bytes';
+        Exit;
+      end;
+      FHashLock := TBaseType.To32Bytes(LData);
+    end else if (rbHashLockKey.Checked) then begin
+      if NOT TAccountComp.IsValidHashLockKey(LData, LErr) then Exit;
+      FHashLock := TAccountComp.CalculateHashLock(LData);
+    end else LErr := 'INTERNAL ERROR: 8356DE573BA748618EDD6603B22D9EAD';
+  Finally
+    Error := LErr;
+  end;
+end;
+
 end.

+ 1 - 25
src/gui-classic/UFRMOperation.dfm

@@ -105,10 +105,6 @@ object FRMOperation: TFRMOperation
     TabOrder = 1
     object tsOperation: TTabSheet
       TabVisible = False
-      ExplicitLeft = 0
-      ExplicitTop = 0
-      ExplicitWidth = 0
-      ExplicitHeight = 0
       object lblFee: TLabel
         Left = 15
         Top = 220
@@ -299,7 +295,7 @@ object FRMOperation: TFRMOperation
         Top = 7
         Width = 524
         Height = 204
-        ActivePage = tsChangeInfo
+        ActivePage = tsListAccount
         TabOrder = 0
         OnChange = PageControlOpTypeChange
         object tsTransaction: TTabSheet
@@ -394,10 +390,6 @@ object FRMOperation: TFRMOperation
         object tsChangePrivateKey: TTabSheet
           Caption = 'Change Key'
           ImageIndex = 1
-          ExplicitLeft = 0
-          ExplicitTop = 0
-          ExplicitWidth = 0
-          ExplicitHeight = 0
           object lblNewPrivateKey: TLabel
             Left = 57
             Top = 40
@@ -537,10 +529,6 @@ object FRMOperation: TFRMOperation
         object tsListAccount: TTabSheet
           Caption = 'List Account'
           ImageIndex = 3
-          ExplicitLeft = 0
-          ExplicitTop = 0
-          ExplicitWidth = 0
-          ExplicitHeight = 0
           object lblListAccountErrors: TLabel
             Left = 11
             Top = 7
@@ -809,10 +797,6 @@ object FRMOperation: TFRMOperation
         object tsBuyAccount: TTabSheet
           Caption = 'Buy Account'
           ImageIndex = 4
-          ExplicitLeft = 0
-          ExplicitTop = 0
-          ExplicitWidth = 0
-          ExplicitHeight = 0
           object lblAccountToBuy: TLabel
             Left = 13
             Top = 32
@@ -988,10 +972,6 @@ object FRMOperation: TFRMOperation
         end
         object tsChangeInfo: TTabSheet
           Caption = 'Change Info'
-          ExplicitLeft = 0
-          ExplicitTop = 0
-          ExplicitWidth = 0
-          ExplicitHeight = 0
           object lblChangeInfoErrors: TLabel
             Left = 13
             Top = 10
@@ -1078,10 +1058,6 @@ object FRMOperation: TFRMOperation
     object tsGlobalError: TTabSheet
       ImageIndex = 1
       TabVisible = False
-      ExplicitLeft = 0
-      ExplicitTop = 0
-      ExplicitWidth = 0
-      ExplicitHeight = 0
       object lblGlobalErrors: TLabel
         Left = 40
         Top = 50

+ 19 - 0
src/gui-classic/UFRMOperation.pas

@@ -152,6 +152,7 @@ type
     procedure bbBuyNewKeyClick(Sender: TObject);
     procedure ebAccountNumberExit(Sender: TObject);
     procedure ebCurrencyExit(Sender: TObject);
+    procedure sbTimeLockClick(Sender: TObject);
   private
     FNode : TNode;
     FWalletKeys: TWalletKeys;
@@ -590,6 +591,7 @@ begin
   sbSearchListerSellerAccount.OnClick := sbSearchListerSellerAccountClick;
   btnHashLock.OnClick := sbHashLockClick;
   sbSearchBuyAccount.OnClick := sbSearchBuyAccountClick;
+  sbTimeLock.OnClick := sbTimeLockClick;
   //
   ebFee.Text := TAccountComp.FormatMoney(0);
   ebFee.OnExit:= ebCurrencyExit;
@@ -710,6 +712,23 @@ begin
   searchAccount(ebSignerAccount);
 end;
 
+procedure TFRMOperation.sbTimeLockClick(Sender: TObject);
+begin
+  Application.MessageBox(PChar(Format('Current block is %d'
+    +#10
+    +#10+'Average seconds per block %d'
+    +#10
+    +#10+'Average Blocks per day %d (Next 24 hours = block %d)'
+    +#10+'Average Blocks per week %d (Next 24*7 hours = block %d)'
+    ,[TNode.Node.Bank.BlocksCount,
+      CT_NewLineSecondsAvg,
+     (86400 DIV CT_NewLineSecondsAvg),
+     ((86400 DIV CT_NewLineSecondsAvg) + TNode.Node.Bank.BlocksCount),
+     ((86400 DIV CT_NewLineSecondsAvg)*7),
+     (((86400 DIV CT_NewLineSecondsAvg)*7) + TNode.Node.Bank.BlocksCount)])),
+    PChar(Application.Title),MB_OK);
+end;
+
 procedure TFRMOperation.sbHashLockClick(Sender: TObject);
 var
   LFRM : TFRMHashLock;

+ 29 - 4
src/gui-classic/UGridUtils.pas

@@ -42,6 +42,7 @@ Type
     ColumnType : TAccountColumnType;
     width : Integer;
   End;
+  TAccountColumnArray = Array of TAccountColumn;
 
   TAccountsGrid = Class;
 
@@ -73,7 +74,7 @@ Type
   private
     FAccountsBalance : Int64;
     FAccountsList : TOrderedCardinalList;
-    FColumns : Array of TAccountColumn;
+    FColumns : TAccountColumnArray;
     FDrawGrid : TDrawGrid;
     FNodeNotifyEvents : TNodeNotifyEvents;
     FOnUpdated: TNotifyEvent;
@@ -125,6 +126,8 @@ Type
     function IsUpdatingData : Boolean;
     property OnAccountsGridUpdatedData : TNotifyEvent read FOnAccountsGridUpdatedData write FOnAccountsGridUpdatedData;
     property AccountsGridDatasource : TAccountsGridDatasource read FAccountsGridDatasource write SetAccountsGridDatasource;
+    function GetColumns : TAccountColumnArray;
+    procedure SetColumns(const AColumns : TAccountColumnArray);
   End;
 
   TOperationsGrid = Class;
@@ -425,13 +428,13 @@ begin
   FColumns[2].ColumnType := act_balance;
   FColumns[2].width := 80;
   FColumns[3].ColumnType := act_n_operation;
-  FColumns[3].width := 40;
+  FColumns[3].width := 35;
   FColumns[4].ColumnType := act_type;
-  FColumns[4].width := 40;
+  FColumns[4].width := 35;
   FColumns[5].ColumnType := act_saleprice;
   FColumns[5].width := 45;
   FColumns[6].ColumnType := act_updated_state;
-  FColumns[6].width := 25;
+  FColumns[6].width := 20;
   FNodeNotifyEvents := TNodeNotifyEvents.Create(Self);
   FNodeNotifyEvents.OnOperationsChanged := OnNodeNewOperation;
   FAccountsGridUpdateThread := Nil;
@@ -460,6 +463,11 @@ begin
   end;
 end;
 
+function TAccountsGrid.GetColumns: TAccountColumnArray;
+begin
+  Result := FColumns;
+end;
+
 function TAccountsGrid.GetNode: TNode;
 begin
   Result := FNodeNotifyEvents.Node;
@@ -734,6 +742,17 @@ begin
             end else begin
               DrawGrid.Canvas.Font.Color := clGrayText
             end;
+          end else if TAccountComp.IsAccountForSwap(account.accountInfo) then begin
+            if TAccountComp.IsAccountForAccountSwap(account.accountInfo) then begin
+              s := 'Account SWAP';
+            end else if TAccountComp.IsAccountForCoinSwap(account.accountInfo) then begin
+              s := 'SWAP '+TAccountComp.FormatMoney(account.accountInfo.price);
+            end else s := 'SWAP';
+            if TAccountComp.IsAccountLocked(account.accountInfo,LNodeBlocksCount) then begin
+              DrawGrid.Canvas.Font.Color := clNavy;
+            end else begin
+              DrawGrid.Canvas.Font.Color := clRed;
+            end;
           end else s := '';
           Canvas_TextRect(DrawGrid.Canvas,Rect,s,State,[tfLeft,tfVerticalCenter,tfSingleLine]);
         end;
@@ -809,6 +828,12 @@ begin
   InitGrid;
 end;
 
+procedure TAccountsGrid.SetColumns(const AColumns: TAccountColumnArray);
+begin
+  FColumns := AColumns;
+  InitGrid;
+end;
+
 procedure TAccountsGrid.SetDrawGrid(const Value: TDrawGrid);
 begin
   if FDrawGrid=Value then exit;