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); }
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(); }