/*public Timetable ShallowCopy() * { * Timetable t = new Timetable(); * t.SubjectList.AddRange(this.SubjectList); * t.TypeList.AddRange(this.TypeList); * t.StreamList.AddRange(this.StreamList); * t.ClassList.AddRange(this.ClassList); * }*/ // construct a new timetable object with enough information to render a preview public Timetable PreviewSolution(Solver.Solver.Solution solution) { var t = new Timetable(); for (var i = 0; i < StreamList.Count; i++) { var stream = new Stream(StreamList[i]); if (solution.Streams.Contains(StreamList[i])) { stream.Selected = true; } t.StreamList.Add(stream); stream.Classes.Clear(); stream.Incompatible.Clear(); stream.Equivalent.Clear(); for (var j = 0; j < StreamList[i].Classes.Count; j++) { var session = new Session(StreamList[i].Classes[j]) { Stream = stream }; stream.Classes.Add(session); t.ClassList.Add(session); } } t.UnavailableList = UnavailableList; return(t); }
public bool LoadSolution(Solver.Solver.Solution solution) { var result = true; foreach (var stream in solution.Streams) { // attempt to add it, return false if failed if (!SelectStream(stream)) { result = false; } } Update(); return(result); }