private void UpdateTranslations()
        {
            _logger.Write("Updating UI...", LogLevel.Debug);

            _mainControl.LanguageLabel.Text         = _localizationRepository.GetText("ui-language-display-text");
            _mainControl.ClearLogButton.Text        = _localizationRepository.GetText("ui-log-clear-display-text");
            _mainControl.EnableTestEnvironment.Text = _localizationRepository.GetText("ui-enable-test-environment");
            _mainControl.FlashTaskbar.Text          = _localizationRepository.GetText("ui-flash-taskbar");
            _mainControl.TtsCheckBox.Text           = _localizationRepository.GetText("ui-enable-tts");
            _mainControl.PersistToasts.Text         = _localizationRepository.GetText("ui-persist-toasts");
            _mainControl.EnableActToast.Text        = _localizationRepository.GetText("ui-enable-act-toasts");
            _mainControl.DisableToasts.Text         = _localizationRepository.GetText("ui-disable-toasts");
            _mainControl.AppTitle.Text                = $"{nameof(DFAssist)} v{Assembly.GetExecutingAssembly().GetName().Version} | ";
            _mainControl.GeneralSettings.Text         = _localizationRepository.GetText("ui-general-settings-group");
            _mainControl.ToastSettings.Text           = _localizationRepository.GetText("ui-toast-settings-group");
            _mainControl.TtsSettings.Text             = _localizationRepository.GetText("ui-tts-settings-group");
            _mainControl.TtsVoiceSelectionLabel.Text  = _localizationRepository.GetText("ui-tts-voice-selection-label");
            _mainControl.TelegramSettings.Text        = _localizationRepository.GetText("ui-telegram-settings-group");
            _mainControl.TelegramCheckBox.Text        = _localizationRepository.GetText("ui-telegram-display-text");
            _mainControl.TelegramChatIdLabel.Text     = _localizationRepository.GetText("ui-telegram-chatid-display-text");
            _mainControl.TelegramTokenLabel.Text      = _localizationRepository.GetText("ui-telegram-token-display-text");
            _mainControl.PushBulletSettings.Text      = _localizationRepository.GetText("ui-pushbullet-settings-group");
            _mainControl.PushBulletCheckbox.Text      = _localizationRepository.GetText("ui-pushbullet-display-text");
            _mainControl.PushBulletDeviceIdlabel.Text = _localizationRepository.GetText("ui-pushbullet-deviceid-display-text");
            _mainControl.PushBulletTokenLabel.Text    = _localizationRepository.GetText("ui-pushbullet-token-display-text");
            _mainControl.DiscordSettings.Text         = _localizationRepository.GetText("ui-discord-settings-group");
            _mainControl.DiscordCheckBox.Text         = _localizationRepository.GetText("ui-discord-display-text");
            _mainControl.DiscordUsernameLabel.Text    = _localizationRepository.GetText("ui-discord-username-display-text");
            _mainControl.DiscordWebhookLabel.Text     = _localizationRepository.GetText("ui-discord-webhook-display-text");
            _mainControl.TestSettings.Text            = _localizationRepository.GetText("ui-test-settings-group");
            _mainControl.LogLevelSelectionLabel.Text  = _localizationRepository.GetText("ui-test-log-level-selction-label");

            _logger.Write("UI Updated!", LogLevel.Debug);
        }
예제 #2
0
        public void LoadSettings()
        {
            _logger.Write("Settings Loading...", LogLevel.Debug);
            // All the settings to deserialize
            _xmlSettingsSerializer.AddControlSetting(_mainControl.DisableToasts.Name, _mainControl.DisableToasts);
            _xmlSettingsSerializer.AddControlSetting(_mainControl.LanguageValue.Name, _mainControl.LanguageValue);
            _xmlSettingsSerializer.AddControlSetting(_mainControl.FlashTaskbar.Name, _mainControl.FlashTaskbar);
            _xmlSettingsSerializer.AddControlSetting(_mainControl.TtsCheckBox.Name, _mainControl.TtsCheckBox);
            _xmlSettingsSerializer.AddControlSetting(_mainControl.TtsVoicesComboBox.Name, _mainControl.TtsVoicesComboBox);
            _xmlSettingsSerializer.AddControlSetting(_mainControl.PersistToasts.Name, _mainControl.PersistToasts);
            _xmlSettingsSerializer.AddControlSetting(_mainControl.EnableTestEnvironment.Name, _mainControl.EnableTestEnvironment);
            _xmlSettingsSerializer.AddControlSetting(_mainControl.LogLevelComboBox.Name, _mainControl.LogLevelComboBox);
            _xmlSettingsSerializer.AddControlSetting(_mainControl.EnableActToast.Name, _mainControl.EnableActToast);
            _xmlSettingsSerializer.AddControlSetting(_mainControl.TelegramCheckBox.Name, _mainControl.TelegramCheckBox);
            _xmlSettingsSerializer.AddControlSetting(_mainControl.TelegramTokenTextBox.Name, _mainControl.TelegramTokenTextBox);
            _xmlSettingsSerializer.AddControlSetting(_mainControl.TelegramChatIdTextBox.Name, _mainControl.TelegramChatIdTextBox);
            _xmlSettingsSerializer.AddControlSetting(_mainControl.PushBulletCheckbox.Name, _mainControl.PushBulletCheckbox);
            _xmlSettingsSerializer.AddControlSetting(_mainControl.PushBulletTokenTextBox.Name, _mainControl.PushBulletTokenTextBox);
            _xmlSettingsSerializer.AddControlSetting(_mainControl.PushBulletDeviceIdTextBox.Name, _mainControl.PushBulletDeviceIdTextBox);
            _xmlSettingsSerializer.AddControlSetting(_mainControl.DiscordCheckBox.Name, _mainControl.DiscordCheckBox);
            _xmlSettingsSerializer.AddControlSetting(_mainControl.DiscordWebhookTextBox.Name, _mainControl.DiscordWebhookTextBox);
            _xmlSettingsSerializer.AddControlSetting(_mainControl.DiscordUsernameTextBox.Name, _mainControl.DiscordUsernameTextBox);

            if (File.Exists(_settingsFile))
            {
                using (var fileStream = new FileStream(_settingsFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
                    using (var xmlTextReader = new XmlTextReader(fileStream))
                    {
                        try
                        {
                            while (xmlTextReader.Read())
                            {
                                if (xmlTextReader.NodeType != XmlNodeType.Element)
                                {
                                    continue;
                                }

                                if (xmlTextReader.LocalName != "SettingsSerializer")
                                {
                                    continue;
                                }

                                if (_xmlSettingsSerializer.ImportFromXml(xmlTextReader) == 0)
                                {
                                    break;
                                }

                                InternalCreateDefaultConfiguration();
                                break;
                            }
                        }
                        catch (Exception)
                        {
                            _pluginData.lblPluginStatus.Text = "Error loading settings";
                        }

                        xmlTextReader.Close();
                    }
            }
            else
            {
                InternalCreateDefaultConfiguration();
            }

            foreach (var language in _mainControl.LanguageComboBox.Items.OfType <Language>())
            {
                if (!language.Name.Equals(_mainControl.LanguageValue.Text))
                {
                    continue;
                }

                _mainControl.LanguageComboBox.SelectedItem = language;
                break;
            }

            _logger.Write($"Language: {_mainControl.LanguageValue.Text}", LogLevel.Debug);
            _logger.Write($"Disable Toasts: {_mainControl.DisableToasts.Checked}", LogLevel.Debug);
            _logger.Write($"Make Toasts Persistent: {_mainControl.PersistToasts.Checked}", LogLevel.Debug);
            _logger.Write($"Enable Legacy Toasts: {_mainControl.EnableActToast.Checked}", LogLevel.Debug);
            _logger.Write($"Enable Text To Speech: {_mainControl.TtsCheckBox.Checked}", LogLevel.Debug);
            if (_mainControl.TtsCheckBox.Checked)
            {
                _logger.Write($"Selected TTS Voice: {_mainControl.TtsVoicesComboBox.SelectedValue}", LogLevel.Debug);
            }
            _logger.Write($"Enable Discord Notifications: {_mainControl.DiscordCheckBox.Checked}", LogLevel.Debug);
            if (_mainControl.DiscordCheckBox.Checked)
            {
                _logger.Write($"Discord Webhook URL: {_mainControl.DiscordWebhookTextBox.Text}", LogLevel.Debug);
                _logger.Write($"Discord Username: {_mainControl.DiscordUsernameTextBox.Text}", LogLevel.Debug);
            }
            _logger.Write($"Enable Telegram Notifications: {_mainControl.TelegramCheckBox.Checked}", LogLevel.Debug);
            if (_mainControl.TelegramCheckBox.Checked)
            {
                _logger.Write($"Telegram Token: {_mainControl.TelegramTokenTextBox.Text}", LogLevel.Debug);
                _logger.Write($"Telegram ChatId: {_mainControl.TelegramChatIdTextBox.Text}", LogLevel.Debug);
            }
            _logger.Write($"Enable Pushbullet Notifications: {_mainControl.PushBulletCheckbox.Checked}", LogLevel.Debug);
            if (_mainControl.TelegramCheckBox.Checked)
            {
                _logger.Write($"Pushbullet Token: {_mainControl.PushBulletTokenTextBox.Text}", LogLevel.Debug);
                _logger.Write($"Pushbullet ChatId: {_mainControl.PushBulletDeviceIdTextBox.Text}", LogLevel.Debug);
            }
            _logger.Write($"Enable Test Environment: {_mainControl.EnableTestEnvironment.Checked}", LogLevel.Debug);
            _logger.Write($"Log Level Selected: {_mainControl.LogLevelComboBox.SelectedValue}", LogLevel.Debug);
            _logger.Write("Settings Loaded!", LogLevel.Debug);
        }
예제 #3
0
 private void FlashTaskbarOnCheckedChanged(object sender, EventArgs e)
 {
     _logger.Write($"UI: [FlashTaskbar] Desired Value: {_mainControl.FlashTaskbar.Checked}", LogLevel.Debug);
     TaskbarFlashHelper.Instance.SendNotification();
 }
        public void InitPlugin(MainControl mainControl)
        {
            if (_pluginInitializing)
            {
                return;
            }

            InitializePluginVariables(mainControl);

            if (!EnsureActMainFormIsLoaded())
            {
                return;
            }

            if (!FFXIVPluginHelper.Instance.Check(_pluginData, ffPluginIsEnabled =>
            {
                if (ffPluginIsEnabled)
                {
                    return;
                }

                _pluginData.cbEnabled.Checked = false;
            }))
            {
                return;
            }

            _pluginInitializing            = true;
            ActGlobals.oFormActMain.Shown -= ActMainFormOnShown;

            _localizationRepository = Locator.Current.GetService <ILocalizationRepository>();
            _dataRepository         = Locator.Current.GetService <IDataRepository>();

            _logger.SetTextBox(_mainControl.LoggingRichTextBox);
            _logger.Write("Plugin Init", LogLevel.Debug);
            _logger.Write($"Plugin Version: {Assembly.GetExecutingAssembly().GetName().Version}", LogLevel.Debug);

            _mainControl.LanguageComboBox.DataSource = new[]
            {
                new Language {
                    Name = "English", Code = "en-us"
                },
                new Language {
                    Name = "한국어", Code = "ko-kr"
                },
                new Language {
                    Name = "日本語", Code = "ja-jp"
                },
                new Language {
                    Name = "Français", Code = "fr-fr"
                },
                new Language {
                    Name = "Deutsch", Code = "de-de"
                },
            };
            _mainControl.LanguageComboBox.DisplayMember = "Name";
            _mainControl.LanguageComboBox.ValueMember   = "Code";

            _mainControl.TtsVoicesComboBox.DataSource = TTSHelper.Instance.AvailableVoices.Select(x => x.VoiceInfo.Name).ToArray();
            _mainControl.LogLevelComboBox.DataSource  = new []
            {
                "Debug",
                "Info",
                "Warn",
                "Error",
                "Fatal",
            };

            _pluginData.tpPluginSpace.Controls.Add(_mainControl);

            ACTPluginSettingsHelper.Instance.LoadSettings();
            var updateTask = DFAssistRepositoriesHelper.Instance.UpdateData();

            updateTask.ContinueWith(_ =>
            {
                DFAssistRepositoriesHelper.Instance.LoadData();
                DFAssistUIInteractionHelper.Instance.Subscribe();

                _pluginData.lblPluginStatus.Text = "Starting...";
                _pluginData.lblPluginStatus.Text = "Plugin Started!";
                _pluginData.tpPluginSpace.Text   = nameof(DFAssist);

                _logger.Write("Plugin Started!", LogLevel.Debug);

                FFXIVNetworkProcessHelper.Instance.Subscribe();

                IsPluginEnabled = true;
                _logger.Write("Plugin Enabled", LogLevel.Debug);

                ACTPluginUpdateHelper.Instance.Subscribe();

                _pluginInitializing = false;
            });
            updateTask.Start();
        }
예제 #5
0
        private void LogLevelComboBoxOnSelectedValueChanged(object sender, EventArgs e)
        {
            var selectedValue = _mainControl.LogLevelComboBox.SelectedValue as string;

            if (string.IsNullOrWhiteSpace(selectedValue) || !Enum.TryParse(selectedValue, out LogLevel logLevel))
            {
                _logger.Write($"UI: [LogLevel] Unable to change log level", LogLevel.Error);
                return;
            }

            _logger.SetLoggingLevel(logLevel);
            _logger.Write($"UI: [LogLevel] Desired Value: {_mainControl.LogLevelComboBox.SelectedValue}", LogLevel.Debug);
        }
예제 #6
0
        private void UpdateProcesses()
        {
            var process = Process.GetProcessesByName("ffxiv_dx11").FirstOrDefault();

            if (process == null)
            {
                return;
            }

            ActiveProcess = process;

            try
            {
                if (!_networks.ContainsKey(process.Id))
                {
                    var pn = new ProcessNetwork(process, new Network());
                    _packetHandler.OnEventReceived += Network_onReceiveEvent;
                    _networks.TryAdd(process.Id, pn);
                    _logger.Write($"P: FFXIV Process Selected: {process.Id}", LogLevel.Info);
                }
            }
            catch (Exception e)
            {
                _logger.Write(e, "P: Failed to set FFXIV Process", LogLevel.Error);
            }

            var toDelete = new List <int>();

            foreach (var entry in _networks)
            {
                if (entry.Value.Process.HasExited)
                {
                    entry.Value.Network.StopCapture();
                    toDelete.Add(entry.Key);
                }
                else
                {
                    if (entry.Value.Network.IsRunning)
                    {
                        entry.Value.Network.UpdateGameConnections(entry.Value.Process);
                    }
                    else
                    {
                        if (!entry.Value.Network.StartCapture(entry.Value.Process))
                        {
                            toDelete.Add(entry.Key);
                        }
                    }
                }
            }

            foreach (var t in toDelete)
            {
                try
                {
                    _networks.TryRemove(t, out _);
                    _packetHandler.OnEventReceived -= Network_onReceiveEvent;
                }
                catch (Exception e)
                {
                    _logger.Write(e, "P: Failed to remove FFXIV Process", LogLevel.Error);
                }
            }
        }