public WalletPage(INodeLauncherFactory nodeLauncherFactory, WalletInformation walletInformation,
                   BlockChainInformation blockChainInformation, MemoryPoolInformation memoryPoolInformation,
                   SmartContractPage smartContractPage)
 {
     _walletInformation                 = walletInformation;
     _blockChainInformation             = blockChainInformation;
     _memoryPoolInformation             = memoryPoolInformation;
     _smartContractPage                 = smartContractPage;
     _nodeLauncherFactory               = nodeLauncherFactory;
     _autoEvent                         = new AutoResetEvent(false);
     _refreshUiBackgroundWorker         = new BackgroundWorker();
     _refreshUiBackgroundWorker.DoWork += RefreshUi;
     RegisterEvts();
     InitializeComponent();
 }
        private void InitInstance()
        {
            engineTimer          = new DispatcherTimer();
            engineTimer.Tick    += dispatcherTimer_Tick;
            engineTimer.Interval = new TimeSpan(0, 0, 0, 0, 500);
            engineTimer.Start();

            currentVerificationContractList = new List <VerificationContract>();

            #region Pages Initializer
            sendPage          = new SendPages();
            receivePage       = new ReceivePage();
            historyPage       = new HistoryPage();
            settingsPage      = new SettingsPage();
            smartContractPage = new SmartContractPage();

            assetInfoPage = new AssetInfoPage();
            taskInfoPage  = new TaskInfoPage();
            #endregion

            #region Pages Event Handlers
            sendPage.TaskChangedEventHandler += TaskChangedEvent;

            settingsPage.ChangeLanguageEvent      += ChangeLanguageEvent;
            settingsPage.UpdateDownloadedFinished += UpdateDownloadedFinishedEvent;
            settingsPage.ResetHistoryEvent        += ResetHistoryEvent;
            settingsPage.TaskChangedEvent         += TaskChangedEvent;
            #endregion

            txHistoryItems = new List <HistoryItem>();
            assetItems     = new List <AssetItem>();

            #region Load Pages
            currentPageStatus = PageStatus.HistoryPage;
            pageMainTransitionControl.ShowPage(historyPage);

            currentSendOrReceivePageStatus = SendOrReceivePageStatus.None;
            currentMenuPageStatus          = MenuPageStatus.AssetPage;
            ShowCurrentMenu();

            #endregion

            if (File.Exists(Constant.PEER_STATE_PATH))
            {
                using (FileStream fs = new FileStream(Constant.PEER_STATE_PATH, FileMode.Open, FileAccess.Read, FileShare.Read))
                {
                    LocalNode.LoadState(fs);
                }
            }

            try
            {
                if (Constant.LocalNode == null)
                {
                    Constant.LocalNode             = new LocalNode();
                    Constant.LocalNode.UpnpEnabled = true;
                }
            }
            catch
            {
            }
            finally
            {
            }
        }