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();
}
}