protected void OnEmptySpaceEventBoxButtonReleased(object sender, ButtonReleaseEventArgs args) { emptySpaceClicked = false; if (emptySpaceLongHeld) { var parent = Toplevel as Window; var addHomeWidgetDialog = new AddHomeWidgetDialog(parent); addHomeWidgetDialog.Run(); var newWidgetSettings = addHomeWidgetDialog.newWidget; emptySpaceGraphicalBox.color.A = 0; emptySpaceGraphicalBox.QueueDraw(); if (newWidgetSettings == null) { return; } var pair = HomeWidgetPlacement.GetRowColumn(args.Event.X.ToInt(), args.Event.Y.ToInt()); var row = pair.Item1; var column = pair.Item2; var widget = HomeWindowWidgets.GetNewHomeWidget( newWidgetSettings.type, newWidgetSettings.name, newWidgetSettings.group, row, column); if (widget != null) { if (row < 0 && (row + widget.rowHeight > 5) && column < 0 && (column + widget.columnWidth > 7)) { MessageBox.Show("Not enough room on the screen for widget"); } else { tileBoard.OccupyTiles(widget); if (tileBoard.containsConflictTiles) { tileBoard.FreeTiles(widget); MessageBox.Show("Widget conflicts with other widgets"); } else { Put(widget, widget.x, widget.y); widget.Show(); widgets.Add(widget); widget.WidgetSelectedEvent += OnWidgetSelected; widget.WidgetUnselectedEvent += OnWidgetUnselected; widget.RequestNewTileLocationEvent += OnRequestNewTileLocation; } } } } QueueDraw(); }
protected void OnRequestNewTileLocation(int x, int y) { if (x.WithinRange(755, 795) && y.WithinRange(435, 475)) { hoveredOverTrash = true; trashButton.buttonColor = "compl"; trashButton.QueueDraw(); return; } if (hoveredOverTrash) { hoveredOverTrash = false; trashButton.buttonColor.ModifyColor(0.75); trashButton.QueueDraw(); } var pair = HomeWidgetPlacement.GetRowColumn(x, y); var newRow = pair.Item1; var newColumn = pair.Item2; if (newRow == newWidgetLocation.placement.row && newColumn == newWidgetLocation.placement.column) { return; } if (newRow >= 0 && (newRow + newWidgetLocation.placement.rowHeight <= 5) && newColumn >= 0 && (newColumn + newWidgetLocation.placement.columnWidth <= 7)) { if (!newWidgetLocation.Visible) { newWidgetLocation.Visible = true; } tileBoard.FreeTiles(newWidgetLocation); newWidgetLocation.placement.row = newRow; newWidgetLocation.placement.column = newColumn; tileBoard.OccupyTiles(newWidgetLocation); if (tileBoard.containsConflictTiles) { newWidgetLocation.color = new TouchColor("compl", 0.5); } else { newWidgetLocation.color = new TouchColor("grey2", 0.5); } Remove(newWidgetLocation); Put(newWidgetLocation, newWidgetLocation.placement.x, newWidgetLocation.placement.y); newWidgetLocation.Show(); } }