Example #1
0
        private async Task <bool> OpenBoardView(string uri)
        {
            var file = new FileInfo(uri);

            if (!file.Exists)
            {
                appConfig.RemoveRecent(uri);
                appModel.Remove(uri);

                await dialCoord.ShowMessageAsync(this, "Error", "File was deleted or moved");

                return(false);
            }

            var box = await appModel.Load(uri);

            if (!box.Loaded)
            {
                appConfig.RemoveRecent(uri);
                appModel.Remove(uri);

                await dialCoord.ShowMessageAsync(this, "Error", "File was damaged");

                return(false);
            }

            var title = file.FullName;

            shell.ShowView <BoardView>(
                viewRequest: new BoardViewRequest {
                ViewId = title, Box = box
            },
                options: new UiShowOptions {
                Title = title
            });


            //   shell.ShowView<LogView>( viewRequest: new LogViewRequest() { ViewId = "[LOG] " + title, Box = box };,
            //          options: new UiShowOptions { Title = "[LOG] " + title });

            return(true);
        }
Example #2
0
        private async Task CreateCommandExecute()
        {
            // 1. Checks
            if (string.IsNullOrWhiteSpace(BoardName) || string.IsNullOrWhiteSpace(FileName) ||
                string.IsNullOrWhiteSpace(FolderName))
            {
                await dialCoord.ShowMessageAsync(this, "Error", "Empty string");

                return;
            }

            if (!Directory.Exists(FolderName))
            {
                await dialCoord.ShowMessageAsync(this, "Error", "Directory does not exists");

                return;
            }

            string uri = FolderName + "\\" + FileName;

            if (!IsNewFile && !File.Exists(uri))
            {
                await dialCoord.ShowMessageAsync(this, "Error", "File not found");

                return;
            }

            if (IsNewFile && File.Exists(uri))
            {
                await dialCoord.ShowMessageAsync(this, "Error", "File already exists");

                return;
            }

            if (Columns.Count == 0)
            {
                await dialCoord.ShowMessageAsync(this, "Error", "Need add columns");

                return;
            }

            if (Rows.Count == 0)
            {
                await dialCoord.ShowMessageAsync(this, "Error", "Need add rows");

                return;
            }

            // 2. Create board (or get from preloaded)
            BoxViewModel box;

            if (IsNewFile)
            {
                box = await appModel.Create(uri);

                if (!box.Loaded)
                {
                    throw new Exception("File not loaded");
                }

                appConfig.UpdateRecent(uri, false);
            }
            else
            {
                box = await appModel.Load(uri);

                if (!box.Loaded)
                {
                    appConfig.RemoveRecent(uri);
                    appModel.Remove(uri);
                    await dialCoord.ShowMessageAsync(this, "Error", "File was damaged");

                    return;
                }

                if (box.Boards.Items.Any(x => x.Name == BoardName))
                {
                    await dialCoord.ShowMessageAsync(this, "Error", "Board name already used");

                    return;
                }
            }

            var bvm = new BoardViewModel
            {
                Name     = BoardName,
                Created  = DateTime.Now,
                Modified = DateTime.Now
            };

            box.Boards.Add(bvm);

            // 3. Normalize grid
            double colSize = Columns.Count == 1 ? 100 : 100 / (Columns.Count - 1);

            for (var i = 0; i < Columns.Count; i++)
            {
                Columns[i].Order = i;
            }

            double rowSize = Rows.Count == 1 ? 100 : 100 / (Rows.Count - 1);

            for (var i = 0; i < Rows.Count; i++)
            {
                Rows[i].Order = i;
            }

            // 4. Create columns
            foreach (var cvm in Columns)
            {
                var colToAdd = new ColumnViewModel
                {
                    BoardId = bvm.Id,
                    Size    = (int)colSize * 10,
                    Order   = cvm.Order,
                    Name    = cvm.Name
                };

                box.Columns.Add(colToAdd);
            }

            // 5. Create rows
            foreach (var rvm in Rows)
            {
                var rowToAdd = new RowViewModel
                {
                    BoardId = bvm.Id,
                    Size    = (int)rowSize * 10,
                    Order   = rvm.Order,
                    Name    = rvm.Name
                };

                box.Rows.Add(rowToAdd);
            }

            shell.ShowView <BoardView>(
                viewRequest: new BoardViewRequest {
                ViewId = uri, Box = box, Board = bvm
            },
                options: new UiShowOptions {
                Title = BoardName
            });

            this.Close();
        }