private async void DestinationInput_PointerReleased(object?sender, global::Avalonia.Input.PointerReleasedEventArgs e)
        {
            OpenFolderDialog?dialog = new OpenFolderDialog()
            {
                Directory = Environment.CurrentDirectory,
                Title     = "Choose download destination"
            };

            string result = await dialog.ShowAsync(_mainWindow);

            if (result != string.Empty)
            {
                _destinationInput.Text = result;
            }
        }
        //event handlers
        private static void Item_PointerReleased(object?sender, global::Avalonia.Input.PointerReleasedEventArgs e)
        {
            //cast the sender as a stackpanel
            StackPanel stackPanel = sender as StackPanel;

            //check if it is a left click or right click
            if (e.InitialPressMouseButton == MouseButton.Left)
            {
                //left click

                //check if the item is a websiteitem, fileitem, or folderitem
                if (stackPanel.Tag.ToString().StartsWith("https://") || stackPanel.Tag.ToString().StartsWith("http://"))
                {
                    //the stackpanel is a website tile, start the website
                    PV_OpenBrowser(stackPanel.Tag.ToString());
                }
                else
                {
                    //the stackpanel is a file/folder tile
                }
            }
            else if (e.InitialPressMouseButton == MouseButton.Right)
            {
                //right click

                //check if the stackpanel is a file, website, or folder tile
                if (stackPanel.Tag.ToString().StartsWith("https://") || stackPanel.Tag.ToString().StartsWith("http://"))
                {
                    //the stackpanel is a website tile, create appropriate menuflyout items

                    //init a menuflyout
                    MenuFlyout WebsitesMenuFlyout = new MenuFlyout();

                    //TODO: FIX ICONS NOT SHOWING UP ON LINUX
                    //create menuflyoutitem icons
                    FontIcon OpenWebsiteIcon = new FontIcon();
                    OpenWebsiteIcon.FontFamily = new FontFamily("avares://LauncherX/Fonts#FluentSystemIcons-Regular");
                    OpenWebsiteIcon.FontSize   = 18;
                    OpenWebsiteIcon.Glyph      = "\xF45A";

                    FontIcon RemoveIcon = new FontIcon();
                    RemoveIcon.FontFamily = new FontFamily("avares://LauncherX/Fonts#FluentSystemIcons-Regular");
                    RemoveIcon.FontSize   = 18;
                    RemoveIcon.Glyph      = "\xF34C";

                    MenuItem OpenWebsiteItem = new MenuItem();
                    OpenWebsiteItem.Header = "Open website";
                    OpenWebsiteItem.Icon   = OpenWebsiteIcon;

                    MenuItem RemoveWebsiteItem = new MenuItem();
                    RemoveWebsiteItem.Header = "Remove website from LauncherX";
                    RemoveWebsiteItem.Icon   = RemoveIcon;

                    //configure event handlers
                    OpenWebsiteIcon.PointerReleased += (s, e) => PV_OpenBrowser(stackPanel.Tag.ToString());
                    //TODO: UPDATE THE WEBSITESGRIDVIEW EVERYTIME ALLITEMSGRIDVIEW ITEM CHANGE
                    RemoveWebsiteItem.PointerReleased += (s, e) =>
                    {
                        List <StackPanel> AllItemsGridViewItems = new List <StackPanel>();
                        foreach (StackPanel AllItemsStack in PV_MainWindow.AllItemsGridView.Items)
                        {
                            AllItemsGridViewItems.Add(AllItemsStack);
                        }
                        AllItemsGridViewItems.Remove(stackPanel);
                        PV_MainWindow.AllItemsGridView.Items = AllItemsGridViewItems;
                    };

                    //add the menuflyout items to the menuflyout
                    WebsitesMenuFlyout.Items = new List <MenuItem>()
                    {
                        OpenWebsiteItem, RemoveWebsiteItem
                    };

                    //show the menuflyout
                    WebsitesMenuFlyout.ShowAt(stackPanel, true);
                }
                else
                {
                    //TODO: stackpanel is a file/folder tile, implement specific checks here
                }
            }
        }
Beispiel #3
0
 public MouseButtonEventArgs(global::Avalonia.Input.PointerReleasedEventArgs e)
 {
     _e = e;
 }