in XamlControlsGallery/DataModel/ControlInfoDataSource.cs [180:269]
private async Task GetControlInfoDataAsync()
{
lock (_lock)
{
if (this.Groups.Count() != 0)
{
return;
}
}
Uri dataUri = new Uri("ms-appx:///DataModel/ControlInfoData.json");
StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(dataUri);
string jsonText = await FileIO.ReadTextAsync(file);
JsonObject jsonObject = JsonObject.Parse(jsonText);
JsonArray jsonArray = jsonObject["Groups"].GetArray();
lock (_lock)
{
foreach (JsonValue groupValue in jsonArray)
{
JsonObject groupObject = groupValue.GetObject();
ControlInfoDataGroup group = new ControlInfoDataGroup(groupObject["UniqueId"].GetString(),
groupObject["Title"].GetString(),
groupObject["Subtitle"].GetString(),
groupObject["ImagePath"].GetString(),
groupObject["Description"].GetString());
foreach (JsonValue itemValue in groupObject["Items"].GetArray())
{
JsonObject itemObject = itemValue.GetObject();
string badgeString = null;
bool isNew = itemObject.ContainsKey("IsNew") ? itemObject["IsNew"].GetBoolean() : false;
bool isUpdated = itemObject.ContainsKey("IsUpdated") ? itemObject["IsUpdated"].GetBoolean() : false;
bool isPreview = itemObject.ContainsKey("IsPreview") ? itemObject["IsPreview"].GetBoolean() : false;
if (isNew)
{
badgeString = "New";
}
else if (isUpdated)
{
badgeString = "Updated";
}
else if (isPreview)
{
badgeString = "Preview";
}
var item = new ControlInfoDataItem(itemObject["UniqueId"].GetString(),
itemObject["Title"].GetString(),
itemObject["Subtitle"].GetString(),
itemObject["ImagePath"].GetString(),
badgeString,
itemObject["Description"].GetString(),
itemObject["Content"].GetString(),
isNew,
isUpdated,
isPreview);
if (itemObject.ContainsKey("Docs"))
{
foreach (JsonValue docValue in itemObject["Docs"].GetArray())
{
JsonObject docObject = docValue.GetObject();
item.Docs.Add(new ControlInfoDocLink(docObject["Title"].GetString(), docObject["Uri"].GetString()));
}
}
if (itemObject.ContainsKey("RelatedControls"))
{
foreach (JsonValue relatedControlValue in itemObject["RelatedControls"].GetArray())
{
item.RelatedControls.Add(relatedControlValue.GetString());
}
}
group.Items.Add(item);
}
if (!Groups.Any(g => g.Title == group.Title))
{
Groups.Add(group);
}
}
}
}