private void dataGrid1_SelectionChanged(object sender, SelectionChangedEventArgs e) { TimeCapsule tc = (TimeCapsule)this.dataGrid1.SelectedItem; if (tc != null) { Window w = new TimeCapsuleWindow(tc); w.Closed += new EventHandler(window_Closed); this._windows.Add(w); w.Show(); } // Clear selected items. this.dataGrid1.UnselectAll(); }
public List <TimeCapsule> getTimeCapsules(int fromPage, int toPage) { bool work = true; string jsonText = ""; int cnt = fromPage; string url = "https://subnautica.unknownworlds.com/api/time-capsules-voting-queue?page="; string splitA = "{\"capsules\":["; string splitB = "},{\\\"_id\\\":"; List <string> capsules = new List <string>(); List <TimeCapsule> timecapsules = new List <TimeCapsule>(); using (WebClient wc = new WebClient()) { while (work) { capsules.Clear(); jsonText = wc.DownloadString(url + cnt.ToString()); if (jsonText.CompareTo("{\"capsules\":[]}") == 0) { work = false; } else { jsonText = jsonText.Substring(splitA.Length); jsonText = jsonText.Substring(0, jsonText.Length - 2); string[] lines = Regex.Split(jsonText, splitB); if (lines.Length > 0) { capsules.Add(lines[0] + "}"); int i = 1; while (i < lines.Length) { capsules.Add("{\"_id\":" + lines[i] + "}"); ++i; } } foreach (string capsule in capsules) { TimeCapsule tmp = parseTimeCapsule(capsule); if (tmp != null) { timecapsules.Add(tmp); } } } // Go to next page ++cnt; if (cnt > toPage) { work = false; } } } return(timecapsules); }
public TimeCapsule parseTimeCapsule(string timecapsulejson) { TimeCapsule result = new TimeCapsule(); JsonTextParser parser = new JsonTextParser(); JsonObject obj = parser.Parse(timecapsulejson); foreach (JsonObject field in obj as JsonObjectCollection) { string name = field.Name; string value = string.Empty; string type = string.Empty; if (field.GetValue() == null) { type = "null"; } else { type = field.GetValue().GetType().Name; } // Try to get value. switch (type) { case "String": value = (string)field.GetValue(); break; case "Double": value = field.GetValue().ToString(); break; case "Boolean": value = field.GetValue().ToString(); break; case "null": value = "null"; break; default: value = "NotSupportedException"; break; // DEBUG: in this sample we'll not parse nested arrays or objects. //throw new NotSupportedException(); } switch (name) { case "_id": result._id = value; break; case "platform": result.platform = value; break; case "platform_user_id": result.platform_user_id = value; break; case "user_name": result.user_name = value; break; case "title": result.title = value; break; case "text": result.text = value; break; case "language": result.language = value; break; case "items": result.items = value; break; case "is_active": result.is_active = Convert.ToBoolean(value); break; case "votes_up": result.votes_up = Convert.ToInt32(value); break; case "votes_down": result.votes_down = Convert.ToInt32(value); break; case "copies_found": result.copies_found = Convert.ToInt32(value); break; case "class_id": result.class_id = value; break; case "modified_at": result.modified_at = value; break; case "updated_at": result.updated_at = value; break; case "created_at": result.created_at = value; break; case "image": result.image = value; break; case "time_ago": result.time_ago = value; break; case "item_list": result.item_list = value; break; default: throw new NotSupportedException(); } // DEBUG //Console.WriteLine("{0} {1} {2}", name.PadLeft(15), type.PadLeft(10), value.PadLeft(15)); } if (obj != null) { obj = null; } if (parser != null) { parser = null; } return(result); }
public TimeCapsuleWindow(TimeCapsule tc) { InitializeComponent(); this._tc = tc; // Set capsule title if there is one, otherwise remove it. if (tc.title.Length > 0) { this.lbl_CapsuleTitle.Content = tc.title; } else { rootStackPanel.Children.RemoveAt(0); } // Set capsule image. string imgURL = tc.getImageUrl(); if (imgURL.Length > 0) { this.img_CapsuleImage.Source = new BitmapImage(new Uri(imgURL)); } // Set capsule text. this.tb_CapsuleText.Text = tc.text; // Set capsule items list. this.tb_CapsuleItems.Text = "TimeCapsule items: " + tc.item_list; // Set capsule author. string authorStr = "Created"; if (tc.platform.Length > 0 && tc.platform.CompareTo("Null") != 0) { authorStr += " on " + tc.platform; } authorStr += " by "; if (tc.user_name.Length > 0) { authorStr += tc.user_name; if (tc.platform_user_id.Length > 0) { authorStr += " (ID: " + tc.platform_user_id + ")"; } } else if (tc.platform_user_id.Length > 0) { authorStr += tc.platform_user_id; } else { authorStr += "?"; } if (tc.time_ago.Length > 0) { authorStr += " " + tc.time_ago; } authorStr += "."; this.tb_CapsuleAuthor.Text = authorStr; // Set capsule upvotes. this.tb_CapsuleUpVotes.Text = "Up votes: " + Convert.ToString(tc.votes_up); // Set capsule downvotes. this.tb_CapsuleDownVotes.Text = "Down votes: " + Convert.ToString(tc.votes_down); // Set capsule creation datetime. this.tb_CapsuleCreated.Text = "Created at: " + tc.created_at; // Set capsule update datetime. this.tb_CapsuleUpdated.Text = "Updated at: " + tc.updated_at; // Set capsule modification datetime. this.tb_CapsuleModified.Text = "Modified at: " + tc.modified_at; // Set capsule language. this.tb_CapsuleLanguage.Text = "Language: " + tc.language; // Set number of capsule copies found. this.tb_CapsuleCopies.Text = "Copies found: " + Convert.ToString(tc.copies_found); // Set capsule "is active?". this.tb_CapsuleIsActive.Text = "Is active: " + Convert.ToString(tc.is_active); }