diff --git a/EduNetworkBuilder/NB.cs b/EduNetworkBuilder/NB.cs index 929be3e..7dc7dad 100644 --- a/EduNetworkBuilder/NB.cs +++ b/EduNetworkBuilder/NB.cs @@ -292,7 +292,7 @@ namespace EduNetworkBuilder } - class NB + static class NB { public static string BroadcastMACString = "FF:FF:FF:FF:FF:FF"; //The broadcast MAC address @@ -877,5 +877,25 @@ namespace EduNetworkBuilder return randomizedList; } + public static List GetAllNodes(this TreeView _self) + { + List result = new List(); + foreach (TreeNode child in _self.Nodes) + { + result.AddRange(child.GetAllNodes()); + } + return result; + } + public static List GetAllNodes(this TreeNode _self) + { + List result = new List(); + result.Add(_self); + foreach (TreeNode child in _self.Nodes) + { + result.AddRange(child.GetAllNodes()); + } + return result; + } + } } diff --git a/EduNetworkBuilder/NBSettings.cs b/EduNetworkBuilder/NBSettings.cs index 9c9dc90..1d3908d 100644 --- a/EduNetworkBuilder/NBSettings.cs +++ b/EduNetworkBuilder/NBSettings.cs @@ -28,6 +28,7 @@ namespace EduNetworkBuilder public int MainWindowWidth = -1; public int MainWindowHeight = -1; public string ProcessingLevel = "none"; + protected UInt32 NextID = 100; public NBSettings() { @@ -140,6 +141,11 @@ namespace EduNetworkBuilder Save(NB.IsRunningOnMono()); } + public UInt64 IssueID() + { + //return the id and increment it. + return NextID++; + } public void Save(bool UsingMono) { if(UsingMono) diff --git a/EduNetworkBuilder/PersonProfileForm.cs b/EduNetworkBuilder/PersonProfileForm.cs index b4a3ab9..2617b66 100644 --- a/EduNetworkBuilder/PersonProfileForm.cs +++ b/EduNetworkBuilder/PersonProfileForm.cs @@ -124,9 +124,29 @@ namespace EduNetworkBuilder { if (CurrentUser == null) return CurrentUser; BuilderWindow BW = NB.GetBuilderWin(); - SchoolworkClass NewWork = new SchoolworkClass(ToAdd); + SchoolworkClass NewWork = new SchoolworkClass(ToAdd, CurrentUser); CurrentUser.Projects.Add(NewWork); UpdateFormFromUser(); //make sure we list the right homeworks. + + + ChangeTreeDataTab(TreeDataTab.homeworktab); + tvClasswork.ExpandAll(); + tvClasswork.Update(); + + //Now we want to select the item. + foreach(TreeNode TN in tvClasswork.GetAllNodes()) + { + TN.ExpandAll(); //Expand everything until we get to what we need. + if(TN.Tag is SchoolworkClass) + { + SchoolworkClass Check = (SchoolworkClass)TN.Tag; + if(Check == NewWork) + { + tvClasswork.SelectedNode = TN; + break; + } + } + } if (BW != null) { @@ -296,6 +316,7 @@ namespace EduNetworkBuilder } if (ViewedSchoolwork.DueDate < dtpHWDue.MinDate) ViewedSchoolwork.DueDate = dtpHWDue.MinDate; dtpHWDue.Value = ViewedSchoolwork.DueDate; - } + } + } } \ No newline at end of file diff --git a/EduNetworkBuilder/SchoolworkClass.cs b/EduNetworkBuilder/SchoolworkClass.cs index 23fa2ae..5126b7e 100644 --- a/EduNetworkBuilder/SchoolworkClass.cs +++ b/EduNetworkBuilder/SchoolworkClass.cs @@ -36,14 +36,17 @@ namespace EduNetworkBuilder public bool IsSumbitted = false; //Is the student submitting this? If so, date-stamp it and lock it. public DateTime SaveDate; //The date this file was saved. + public UInt64 ThisID { get; protected set; } public SchoolworkClass(XmlNode TheNode) { Load(TheNode); } - public SchoolworkClass(Network ToAdd) + public SchoolworkClass(Network ToAdd, PersonClass WhoFor) { + if(WhoFor != null && WhoFor.UserSettings != null) + ThisID = WhoFor.UserSettings.IssueID(); theProject = ToAdd.Clone(); Name = theProject.PuzzleName; Description = theProject.PuzzleName; @@ -72,6 +75,11 @@ namespace EduNetworkBuilder { switch (Individual.Name.ToLower()) { + case "id": + UInt64 tID; + UInt64.TryParse(Individual.InnerText, out tID); + ThisID = tID; + break; case "name": Name = Individual.InnerText; break; @@ -114,6 +122,7 @@ namespace EduNetworkBuilder //save the number of items //Save all the items writer.WriteStartElement("schoolwork"); + writer.WriteElementString("ID", ThisID.ToString()); writer.WriteElementString("Name", Name); writer.WriteElementString("Description", Description); writer.WriteElementString("Class", Class);