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 } } }
public MouseButtonEventArgs(global::Avalonia.Input.PointerReleasedEventArgs e) { _e = e; }