コード例 #1
0
        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();
        }
コード例 #2
0
        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();
        }