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(); }
public HomeWindow(params object[] options) { showTitle = false; widgets = new List <HomeWidget> (); tileBoard = new TileBoard(5, 7); emptySpaceGraphicalBox = new TouchGraphicalBox(); emptySpaceGraphicalBox.SetSizeRequest(800, 480); emptySpaceGraphicalBox.color.A = 0; emptySpaceGraphicalBox.ButtonPressEvent += OnEmptySpaceEventBoxButtonPressed; emptySpaceGraphicalBox.ButtonReleaseEvent += OnEmptySpaceEventBoxButtonReleased; Put(emptySpaceGraphicalBox, 0, 0); emptySpaceGraphicalBox.Show(); var path = System.IO.Path.Combine(Utils.AquaPicSettings, "mainScreen.json"); if (File.Exists(path)) { using (StreamReader reader = File.OpenText(path)) { var ja = (JArray)JToken.ReadFrom(new JsonTextReader(reader)); foreach (var jt in ja) { var jo = jt as JObject; var name = (string)jo["name"]; var type = (string)jo["type"]; var group = string.Empty; if (jo.ContainsKey("group")) { group = (string)jo["group"]; } var column = -1; var row = -1; try { column = Convert.ToInt32(jo["column"]); row = Convert.ToInt32(jo["row"]); } catch { Logger.AddWarning(string.Format("Invalid row or column for {0}", name)); continue; } var widget = HomeWindowWidgets.GetNewHomeWidget(type, name, group, row, column); if (widget != null) { Put(widget, widget.x, widget.y); widget.Show(); widgets.Add(widget); tileBoard.OccupyTiles(widget); widget.WidgetSelectedEvent += OnWidgetSelected; widget.WidgetUnselectedEvent += OnWidgetUnselected; widget.RequestNewTileLocationEvent += OnRequestNewTileLocation; } } } } else { Logger.Add("Home screen file did not exist, created new home screen file"); var file = File.Create(path); file.Close(); var ja = new JArray(); File.WriteAllText(path, ja.ToString()); } trashButton = new TouchButton(); trashButton.SetSizeRequest(40, 40); trashButton.text = "Trash"; trashButton.buttonColor = "compl"; trashButton.buttonColor.ModifyColor(0.75); trashButton.Visible = false; Put(trashButton, 755, 435); Update(); Show(); }