/// <summary> /// Initialize the public static object of the interface for share the object with every class. /// </summary> /// <param name="wallet"></param> public static void InitializeMainInterface(WalletXiropht wallet) { WalletXiropht = wallet; WalletXiropht.SwitchForm(ClassFormPhaseEnumeration.Main); }
/// <summary> /// Start update block sync. /// </summary> public void StartUpdateBlockSync(WalletXiropht walletXiropht) { if (!ClassBlockCache.OnLoad) { try { if (!walletXiropht.ClassWalletObject.InSyncBlock || ClassBlockCache.ListBlock.Count >= walletXiropht.ClassWalletObject.TotalBlockInSync) { if (this.IsShowed) { this.HideWaitingSyncBlockPanel(); var minShow = (walletXiropht.CurrentBlockExplorerPage - 1) * walletXiropht.MaxBlockPerPage; var maxShow = walletXiropht.CurrentBlockExplorerPage * walletXiropht.MaxBlockPerPage; for (var i = minShow; i < maxShow; i++) { if (i < ClassBlockCache.ListBlockIndex.Count) { var blockTarget = ClassBlockCache.ListBlock.Count - 1 - i; if (ClassBlockCache.ListBlockIndex.ContainsKey(blockTarget)) { if (ClassBlockCache.ListBlock.ContainsKey(ClassBlockCache.ListBlockIndex[blockTarget])) { var blockObject = ClassBlockCache.ListBlock[ClassBlockCache.ListBlockIndex[blockTarget]]; var blockId = int.Parse(blockObject.BlockHeight); if (!walletXiropht.ListBlockHashShowed.ContainsKey(blockId)) { walletXiropht.ListBlockHashShowed.Add(blockId, blockObject.BlockHash); var dateTimeCreate = new DateTime(1970, 1, 1, 0, 0, 0, 0); dateTimeCreate = dateTimeCreate.AddSeconds( int.Parse(blockObject.BlockTimestampCreate)); dateTimeCreate = dateTimeCreate.ToLocalTime(); var dateTimeFound = new DateTime(1970, 1, 1, 0, 0, 0, 0); dateTimeFound = dateTimeFound.AddSeconds( int.Parse(blockObject.BlockTimestampFound)); dateTimeFound = dateTimeFound.ToLocalTime(); string[] row = { blockObject.BlockHeight, blockObject.BlockHash, blockObject.BlockReward, blockObject.BlockDifficulty, dateTimeCreate.ToString(CultureInfo.InvariantCulture), dateTimeFound.ToString(CultureInfo.InvariantCulture), blockObject.BlockTransactionHash }; var listViewItem = new ListViewItem(row); if (walletXiropht.TotalBlockRead < maxShow) { void Invoker() { this.listViewBlockExplorer.Items.Add( listViewItem); } BeginInvoke((MethodInvoker)Invoker); walletXiropht.TotalBlockRead++; } else { void Invoker() { this.listViewBlockExplorer.Items.Insert( 0, listViewItem); } BeginInvoke((MethodInvoker)Invoker); walletXiropht.TotalBlockRead++; } } } } } if (ClassFormPhase.FormPhase == ClassFormPhaseEnumeration.BlockExplorer) { if (walletXiropht.ClassWalletObject.InSyncBlock) { walletXiropht.UpdateLabelSyncInformation( "Total blocks synced: " + ClassBlockCache.ListBlock.Count + "/" + walletXiropht.ClassWalletObject.TotalBlockInSync + "."); } else { walletXiropht.UpdateLabelSyncInformation( "Total blocks loaded: " + ClassBlockCache.ListBlock.Count + "/" + walletXiropht.ClassWalletObject.TotalBlockInSync + "."); } } } if (this.IsShowed) { if (this.listViewBlockExplorer.Items.Count > 0) { this.SortingBlockExplorer(); } } } } else { if (this.IsShowed) { this.ShowWaitingSyncBlockPanel(); } } } catch (Exception error) { #if DEBUG Log.WriteLine("Error loading blocks: " + error.Message); #endif Console.WriteLine("Error loading blocks: " + error.Message); } try { if (ClassFormPhase.FormPhase == ClassFormPhaseEnumeration.BlockExplorer) { if (walletXiropht.ClassWalletObject.InSyncBlock) { walletXiropht.UpdateLabelSyncInformation( "Total blocks synced: " + ClassBlockCache.ListBlock.Count + "/" + walletXiropht.ClassWalletObject.TotalBlockInSync + "."); } else { walletXiropht.UpdateLabelSyncInformation( "Total blocks loaded: " + ClassBlockCache.ListBlock.Count + "/" + walletXiropht.ClassWalletObject.TotalBlockInSync + "."); } } if (ClassFormPhase.FormPhase == ClassFormPhaseEnumeration.Overview) { if (walletXiropht.ClassWalletObject.InSyncBlock && !walletXiropht.ClassWalletObject.InSyncTransactionAnonymity && !walletXiropht.ClassWalletObject.InSyncTransaction) { try { if (ClassConnectorSetting.SeedNodeIp.ContainsKey(walletXiropht.ClassWalletObject .ListWalletConnectToRemoteNode[9].RemoteNodeHost)) { walletXiropht.UpdateLabelSyncInformation( "Total blocks synced: " + ClassBlockCache.ListBlock.Count + "/" + walletXiropht.ClassWalletObject.TotalBlockInSync + " from Seed Node: " + walletXiropht.ClassWalletObject.ListWalletConnectToRemoteNode[9] .RemoteNodeHost + " | " + ClassConnectorSetting .SeedNodeIp[walletXiropht.ClassWalletObject.ListWalletConnectToRemoteNode[0] .RemoteNodeHost].Item1 + "."); } else { walletXiropht.UpdateLabelSyncInformation( "Total blocks synced: " + ClassBlockCache.ListBlock.Count + "/" + walletXiropht.ClassWalletObject.TotalBlockInSync + " from node: " + walletXiropht.ClassWalletObject.ListWalletConnectToRemoteNode[0] .RemoteNodeHost + "."); } } catch { } } } } catch { } } }