Amoeba.Windows.OptionsWindow.OptionsWindow C# (CSharp) Method

OptionsWindow() public method

public OptionsWindow ( AmoebaManager amoebaManager, ConnectionSettingManager connectionSettingManager, OverlayNetworkManager overlayNetworkManager, TransfarLimitManager transfarLimitManager, BufferManager bufferManager ) : System
amoebaManager Library.Net.Amoeba.AmoebaManager
connectionSettingManager ConnectionSettingManager
overlayNetworkManager OverlayNetworkManager
transfarLimitManager TransfarLimitManager
bufferManager Library.BufferManager
return System
        public OptionsWindow(AmoebaManager amoebaManager, ConnectionSettingManager connectionSettingManager, OverlayNetworkManager overlayNetworkManager, TransfarLimitManager transfarLimitManager, BufferManager bufferManager)
        {
            _bufferManager = bufferManager;
            _amoebaManager = amoebaManager;
            _connectionSettingManager = connectionSettingManager;
            _overlayNetworkManager = overlayNetworkManager;
            _transferLimitManager = transfarLimitManager;

            InitializeComponent();

            _baseNodeTextBox.MaxLength = UriCollection.MaxUriLength;

            {
                var icon = new BitmapImage();

                icon.BeginInit();
                icon.StreamSource = new FileStream(Path.Combine(_serviceManager.Paths["Icons"], "Amoeba.ico"), FileMode.Open, FileAccess.Read, FileShare.Read);
                icon.EndInit();
                if (icon.CanFreeze) icon.Freeze();

                this.Icon = icon;
            }

            {
                foreach (var item in Enum.GetValues(typeof(ConnectionType)).Cast<ConnectionType>())
                {
                    _clientFiltersConnectionTypeComboBox.Items.Add(item);
                }

                foreach (var item in Enum.GetValues(typeof(TransferLimitType)).Cast<TransferLimitType>())
                {
                    _transferLimitTypeComboBox.Items.Add(item);
                }

                foreach (var u in new string[] { "Byte", "KB", "MB", "GB", "TB" })
                {
                    _dataCacheSizeComboBox.Items.Add(u);
                }

                _dataCacheSizeComboBox.SelectedItem = Settings.Instance.OptionsWindow_DataCacheSize_Unit;

                foreach (var u in new string[] { "Byte", "KB", "MB", "GB", })
                {
                    _bandwidthLimitComboBox.Items.Add(u);
                }

                _bandwidthLimitComboBox.SelectedItem = Settings.Instance.OptionsWindow_BandwidthLimit_Unit;

                foreach (var u in new string[] { "Byte", "KB", "MB", "GB", })
                {
                    _transferLimitSizeComboBox.Items.Add(u);
                }

                _transferLimitSizeComboBox.SelectedItem = Settings.Instance.OptionsWindow_TransferLimit_Unit;
            }

            {
                lock (_amoebaManager.ThisLock)
                {
                    var baseNode = _amoebaManager.BaseNode;

                    _baseNode_Id = baseNode.Id;
                    _baseNode_Uris.AddRange(baseNode.Uris);
                    _otherNodes.AddRange(_amoebaManager.OtherNodes);
                    _clientFilters.AddRange(_amoebaManager.Filters);
                    _serverListenUris.AddRange(_amoebaManager.ListenUris);

                    try
                    {
                        _dataCacheSizeTextBox.Text = NetworkConverter.ToSizeString(_amoebaManager.Size, Settings.Instance.OptionsWindow_DataCacheSize_Unit);
                    }
                    catch (Exception)
                    {
                        _dataCacheSizeTextBox.Text = "";
                    }

                    _dataDownloadDirectoryTextBox.Text = _amoebaManager.DownloadDirectory;

                    _bandwidthConnectionCountTextBox.Text = _amoebaManager.ConnectionCountLimit.ToString();

                    try
                    {
                        _bandwidthLimitTextBox.Text = NetworkConverter.ToSizeString(_amoebaManager.BandwidthLimit, Settings.Instance.OptionsWindow_BandwidthLimit_Unit);
                    }
                    catch (Exception)
                    {
                        _bandwidthLimitTextBox.Text = "";
                    }
                }

                _baseNodeUrisListView.ItemsSource = _baseNode_Uris;
                _baseNodeUpdate();

                _otherNodesListView.ItemsSource = _otherNodes;
                _otherNodesUpdate();

                _clientFiltersListView.ItemsSource = _clientFilters;
                _clientFiltersListViewUpdate();

                _serverListenUrisListView.ItemsSource = _serverListenUris;
                _serverListenUrisUpdate();
            }

            {
                lock (_transferLimitManager.TransferLimit.ThisLock)
                {
                    _transferLimitTypeComboBox.SelectedItem = _transferLimitManager.TransferLimit.Type;
                    _transferLimitSpanTextBox.Text = _transferLimitManager.TransferLimit.Span.ToString();

                    try
                    {
                        _transferLimitSizeTextBox.Text = NetworkConverter.ToSizeString(_transferLimitManager.TransferLimit.Size, Settings.Instance.OptionsWindow_TransferLimit_Unit);
                    }
                    catch (Exception)
                    {
                        _transferLimitSizeTextBox.Text = "";
                    }
                }

                {
                    var uploadSize = _transferLimitManager.TotalUploadSize;
                    var downloadSize = _transferLimitManager.TotalDownloadSize;

                    _transferInfoUploadedLabel.Content = NetworkConverter.ToSizeString(uploadSize);
                    _transferInfoDownloadedLabel.Content = NetworkConverter.ToSizeString(downloadSize);
                    _transferInfoTotalLabel.Content = NetworkConverter.ToSizeString(uploadSize + downloadSize);
                }
            }

            {
                _eventOpenPortAndGetIpAddressCheckBox.IsChecked = Settings.Instance.Global_ConnectionSetting_IsEnabled;
                _eventUseI2pCheckBox.IsChecked = Settings.Instance.Global_I2p_SamBridge_IsEnabled;

                {
                    _eventSamBridgeUriTextBox.Text = _overlayNetworkManager.SamBridgeUri;
                }
            }

            {
                _updateUrlTextBox.Text = Settings.Instance.Global_Update_Url;
                _updateProxyUriTextBox.Text = Settings.Instance.Global_Update_ProxyUri;
                _updateSignatureTextBox.Text = Settings.Instance.Global_Update_Signature;

                if (Settings.Instance.Global_Update_Option == UpdateOption.None)
                {
                    _updateOptionNoneRadioButton.IsChecked = true;
                }
                else if (Settings.Instance.Global_Update_Option == UpdateOption.Check)
                {
                    _updateOptionAutoCheckRadioButton.IsChecked = true;
                }
                else if (Settings.Instance.Global_Update_Option == UpdateOption.Update)
                {
                    _updateOptionAutoUpdateRadioButton.IsChecked = true;
                }
            }

            {
                _signatureListViewItemCollection.AddRange(Settings.Instance.Global_DigitalSignatures.Select(n => new SignatureListViewItem(n)));
                _signatureListView.ItemsSource = _signatureListViewItemCollection;
                _signatureListViewUpdate();
            }

            {
                _keywordCollection.AddRange(Settings.Instance.Global_SearchKeywords);
                _keywordListView.ItemsSource = _keywordCollection;
                _keywordListViewUpdate();
            }

            {
                try
                {
                    string extension = ".box";
                    string commandline = "\"" + Path.GetFullPath(Path.Combine(_serviceManager.Paths["Core"], "Amoeba.exe")) + "\" \"%1\"";
                    string fileType = "Amoeba";
                    string verb = "open";

                    using (var regkey = Microsoft.Win32.Registry.ClassesRoot.OpenSubKey(extension))
                    {
                        if (fileType != (string)regkey.GetValue("")) throw new Exception();
                    }

                    using (var shellkey = Microsoft.Win32.Registry.ClassesRoot.OpenSubKey(fileType))
                    {
                        using (var shellkey2 = shellkey.OpenSubKey("shell\\" + verb))
                        {
                            using (var shellkey3 = shellkey2.OpenSubKey("command"))
                            {
                                if (commandline != (string)shellkey3.GetValue("")) throw new Exception();
                            }
                        }
                    }

                    Settings.Instance.Global_RelateBoxFile_IsEnabled = true;
                    _boxRelateFileCheckBox.IsChecked = true;
                }
                catch
                {
                    Settings.Instance.Global_RelateBoxFile_IsEnabled = false;
                    _boxRelateFileCheckBox.IsChecked = false;
                }

                _boxOpenCheckBox.IsChecked = Settings.Instance.Global_OpenBox_IsEnabled;
                _boxExtractToTextBox.Text = Settings.Instance.Global_BoxExtractTo_Path;
            }

            {
                _MiningTimeTextBox.Text = Settings.Instance.Global_MiningTime.TotalMinutes.ToString();
            }

            {
                _fontMessageFontFamilyComboBoxItemCollection.AddRange(Fonts.SystemFontFamilies.Select(n => n.ToString()));
                _fontMessageFontFamilyComboBoxItemCollection.Sort();
                _fontMessageFontFamilyComboBox.ItemsSource = _fontMessageFontFamilyComboBoxItemCollection;
                _fontMessageFontFamilyComboBox.SelectedItem = Settings.Instance.Global_Fonts_Message_FontFamily;

                _fontMessageFontSizeTextBox.Text = Settings.Instance.Global_Fonts_Message_FontSize.ToString();
            }
        }
OptionsWindow