/ src / modules / cmdpal / ext / Microsoft.CmdPal.Ext.Bookmark / Pages / AddBookmarkPage.cs
AddBookmarkPage.cs
 1  // Copyright (c) Microsoft Corporation
 2  // The Microsoft Corporation licenses this file to you under the MIT license.
 3  // See the LICENSE file in the project root for more information.
 4  
 5  using Microsoft.CmdPal.Ext.Bookmarks.Persistence;
 6  using Microsoft.CommandPalette.Extensions;
 7  using Windows.Foundation;
 8  
 9  namespace Microsoft.CmdPal.Ext.Bookmarks.Pages;
10  
11  internal sealed partial class AddBookmarkPage : ContentPage
12  {
13      internal event TypedEventHandler<object, BookmarkData>? AddedCommand
14      {
15          add => _addBookmarkForm.AddedCommand += value;
16          remove => _addBookmarkForm.AddedCommand -= value;
17      }
18  
19      private readonly AddBookmarkForm _addBookmarkForm;
20  
21      public AddBookmarkPage(BookmarkData? bookmark)
22      {
23          var name = bookmark?.Name ?? string.Empty;
24          var url = bookmark?.Bookmark ?? string.Empty;
25  
26          Icon = Icons.BookmarkIcon;
27          var isAdd = string.IsNullOrEmpty(name) && string.IsNullOrEmpty(url);
28          Title = isAdd ? Resources.bookmarks_add_title : Resources.bookmarks_edit_name;
29          Name = isAdd ? Resources.bookmarks_add_name : Resources.bookmarks_edit_name;
30          _addBookmarkForm = new AddBookmarkForm(bookmark);
31      }
32  
33      public override IContent[] GetContent() => [_addBookmarkForm];
34  }