using System.Windows; using System.Windows.Controls; using System.Windows.Input; using System.Windows.Media; namespace JJServiceManager { /// 설정 화면 public sealed class SettingsWindow : Window { private readonly AppSettings _s; private readonly CheckBox _startup, _hotkey, _opLog, _shutdownButtons; private readonly TextBox _hotkeyBox; private readonly ComboBox _logMode, _esc; private ModifierKeys _mods; private Key _key; public SettingsWindow(AppSettings current) { _s = current; Title = "설정"; Width = 640; SizeToContent = SizeToContent.Height; ResizeMode = ResizeMode.NoResize; FontFamily = new FontFamily("Malgun Gothic"); FontSize = 13; Background = Brushes2.Make("#FAFAFA"); WindowStartupLocation = WindowStartupLocation.CenterOwner; ShowInTaskbar = false; AppIcon.Apply(this); var root = XamlLoader.LoadElement("Settings.xaml"); Content = root; _startup = root.Find("chkStartup"); _hotkey = root.Find("chkHotkey"); _opLog = root.Find("chkOpLog"); _shutdownButtons = root.Find("chkShutdownButtons"); _hotkeyBox = root.Find("txtHotkey"); _logMode = root.Find("cmbLogMode"); _esc = root.Find("cmbEsc"); root.Find("txtDataPath").Text = "설정 파일: " + SettingsStore.SettingsPath + "\n작업 로그 파일: " + OperationLogFile.Folder; // 현재 값 표시 _startup.IsChecked = current.RunAtStartup; _hotkey.IsChecked = current.HotkeyEnabled; _opLog.IsChecked = current.ShowOperationLog; _shutdownButtons.IsChecked = current.ShowShutdownButtons; _logMode.SelectedIndex = (int)current.LogWindowMode; _esc.SelectedIndex = (int)current.EscAction; _mods = (ModifierKeys)current.HotkeyModifiers; _key = (Key)current.HotkeyKey; ShowHotkey(); // 단축키: 클릭 후 직접 눌러서 지정 _hotkeyBox.GotKeyboardFocus += (s, e) => _hotkeyBox.Background = Brushes2.Make("#FFF8E1"); _hotkeyBox.LostKeyboardFocus += (s, e) => { _hotkeyBox.Background = Brushes2.Make("#FAFAFA"); ShowHotkey(); }; _hotkeyBox.PreviewKeyDown += OnHotkeyKeyDown; root.Find