diff --git a/App/UI/AddShortcutWindow/AddShortcutWindow.cs b/App/UI/AddShortcutWindow/AddShortcutWindow.cs index c6655d9..89996fb 100644 --- a/App/UI/AddShortcutWindow/AddShortcutWindow.cs +++ b/App/UI/AddShortcutWindow/AddShortcutWindow.cs @@ -5,19 +5,42 @@ namespace Keychain.UI; public class AddShortcutWindow { public Dialog Dialog { get; } - private EntryRow? pathEntry; + private Gtk.Button? closeButton; + private Gtk.Button? iconPickerButton; private Gtk.Button? browseButton; + private Gtk.Button? clearSelectedFolderButton; + private Gtk.Button? saveButton; public AddShortcutWindow() { var builder = new Gtk.Builder("Keychain.UI.AddShortcutWindow.AddShortcutWindow.xml"); - var dialog = builder.GetObject("add_shortcut_dialog") as Dialog; - if (dialog == null) + Dialog = builder.GetObject("add_shortcut_dialog") as Dialog; + if (Dialog == null) { throw new Exception("Failed to load embedded resource AddShortcutWindow.xml"); } - Dialog = dialog; + + closeButton = builder.GetObject("close_button") as Gtk.Button; + if (closeButton == null) + { + throw new Exception("Failed to load UI element with ID: close_button"); + } + closeButton.OnClicked += Close; + + iconPickerButton = builder.GetObject("icon_picker_button") as Gtk.Button; + if (iconPickerButton == null) + { + throw new Exception("Failed to load UI element with ID: icon_picker_button"); + } + iconPickerButton.OnClicked += OpenIconPicker; + + clearSelectedFolderButton = builder.GetObject("clear_selected_folder_button") as Gtk.Button; + if (clearSelectedFolderButton == null) + { + throw new Exception("Failed to load UI element with ID: icon_picker_button"); + } + clearSelectedFolderButton.OnClicked += ClearSelectedFolder; browseButton = builder.GetObject("folder_browse_button") as Gtk.Button; if (browseButton == null) @@ -25,6 +48,35 @@ public class AddShortcutWindow throw new Exception("Failed to load UI element with ID: folder_browse_button"); } browseButton.OnClicked += BrowseFolder; + + saveButton = builder.GetObject("save_button") as Gtk.Button; + if (saveButton == null) + { + throw new Exception("Failed to load UI element with ID: save_button"); + } + } + + private void OpenIconPicker(object sender, EventArgs e) + { + var chooser = new Gtk.EmojiChooser(); + chooser.SetParent(iconPickerButton); + chooser.OnEmojiPicked += (s, e) => + { + iconPickerButton.Label = e.Text; + }; + chooser.Show(); + } + + private void Close(object sender, EventArgs e) + { + Dialog.Close(); + } + + private void ClearSelectedFolder(object sender, EventArgs e) + { + var buttonContent = (ButtonContent)browseButton.Child; + buttonContent.Label = "Browse"; + clearSelectedFolderButton.Sensitive = false; } private async void BrowseFolder(object sender, EventArgs e) @@ -35,6 +87,7 @@ public class AddShortcutWindow { var buttonContent = (ButtonContent)browseButton.Child; buttonContent.Label = selectedFolder.GetPath(); + clearSelectedFolderButton.Sensitive = true; } } } diff --git a/App/UI/AddShortcutWindow/AddShortcutWindow.xml b/App/UI/AddShortcutWindow/AddShortcutWindow.xml index 6609f0e..e1bebc5 100644 --- a/App/UI/AddShortcutWindow/AddShortcutWindow.xml +++ b/App/UI/AddShortcutWindow/AddShortcutWindow.xml @@ -2,7 +2,6 @@ 400 - 350 @@ -14,13 +13,13 @@ False - + center Cancel - + @@ -33,7 +32,7 @@ - + Name @@ -45,11 +44,8 @@ center - - - emoji-symbols-symbolic - - + center + emoji-symbols-symbolic @@ -97,4 +93,4 @@ - \ No newline at end of file +