public void Refresh(ChangeRef changeRef) { AdditionalDataExpander.IsExpanded = false; openChangeRef = changeRef; Change change = changeRef.GetChange().Result; versionRef = change.ReleaseVersion; VersionText.Text = $"Version: {change.ReleaseVersion.VersionName}"; eventBlock = true; ChangeTitleField.Text = change.Title; eventBlock = true; DescriptionField.Text = change.Description; if (change.AdditionalData == null) { change.AdditionalData = JObject.Parse("{}"); } eventBlock = true; AdditionalDataField.Text = change.AdditionalData.ToString(Newtonsoft.Json.Formatting.Indented); }
public void Duplicate(ChangeControl control) { int index = ChangeParent.Children.IndexOf(control); if (index == -1) { return; } VersionController versionController = MainWindow.GetInstance().VersionController; Version version = openVersionRef.GetVersion().Result; ChangeRef oldChangeRef = version.Changes[index]; string guid = Guid.NewGuid().ToString(); string relativePath = Path.Combine(version.VersionName, "changes", $"{guid}.json"); ChangeRef newChangeRef = new ChangeRef(versionController, guid, relativePath); version.Changes.Insert(index + 1, newChangeRef); Change oldChange = oldChangeRef.GetChange(false).Result; VersionRef releaseVersion = new VersionRef(versionController, oldChange.ReleaseVersion.RelativeFilePath, oldChange.ReleaseVersion.VersionName); Change newChange = new Change(versionController, guid, relativePath, oldChange.Title, oldChange.Description, releaseVersion); if (oldChange.AdditionalData != null) { newChange.AdditionalData = (JObject)oldChange.AdditionalData.DeepClone(); } versionController.CacheChange(newChange); ChangeControl newControl = new ChangeControl(newChangeRef); ChangeParent.Children.Insert(index + 1, newControl); }
public async Task PostSerializeReload(VersionController versionController) { ChangeLog changeLog = await versionController.GetChangeLog(); if (EmptyPage.Visibility == Visibility.Visible) { return; } if (ChangeLogPage.Visibility == Visibility.Visible) { OpenPage(PageType.ChangeLog); return; } if (VersionPage.Visibility == Visibility.Visible) { VersionRef oldRef = VersionPage.GetRef(); foreach (VersionRef versionRef in changeLog.Versions) { if (versionRef.VersionName == oldRef.VersionName) { OpenPage(PageType.Version, versionRef); return; } } OpenPage(PageType.ChangeLog); return; } if (ChangePage.Visibility == Visibility.Visible) { VersionRef oldVersionRef = VersionPage.GetRef(); ChangeRef oldChangeRef = ChangePage.GetChangeRef(); foreach (VersionRef versionRef in changeLog.Versions) { if (versionRef.VersionName == oldVersionRef.VersionName) { Version version = await versionRef.GetVersion(); foreach (ChangeRef changeRef in version.Changes) { if (changeRef.Guid == oldChangeRef.Guid) { OpenPage(PageType.Change, versionRef, changeRef); return; } } OpenPage(PageType.Version, versionRef); return; } } OpenPage(PageType.ChangeLog); return; } }
public async void BackButtonPressed(object sender, RoutedEventArgs args) { Change change = await openChangeRef.GetChange(); VersionRef versionRef = change.ReleaseVersion; openChangeRef = null; ContentArea.GetInstance().OpenPage(ContentArea.PageType.Version, versionRef); }
public void Duplicate(VersionControl control) { int index = VersionParent.Children.IndexOf(control); if (index == -1) { return; } VersionController versionController = MainWindow.GetInstance().VersionController; ChangeLog changeLog = versionController.GetChangeLog().Result; VersionRef oldVersionRef = changeLog.Versions[index]; string duplicateName = GetDuplicateName(oldVersionRef.VersionName); VersionRef newVersionRef = new VersionRef(versionController, oldVersionRef.RelativeFilePath, duplicateName); changeLog.Versions.Insert(index + 1, newVersionRef); VersionControl newControl = new VersionControl(newVersionRef); VersionParent.Children.Insert(index + 1, newControl); Version oldVersion = oldVersionRef.GetVersion(false).Result; Version version = new Version(versionController, duplicateName, oldVersion.Description, oldVersion.DownloadLink, oldVersion.ReleaseDate, new System.Collections.Generic.List <ChangeRef>()); if (oldVersion.AdditionalData != null) { version.AdditionalData = (JObject)oldVersion.AdditionalData.DeepClone(); } foreach (ChangeRef oldChangeRef in oldVersion.Changes) { string guid = Guid.NewGuid().ToString(); string newChangePath = Path.Combine(version.VersionName, "changes", $"{guid}.json"); ChangeRef newChangeRef = new ChangeRef(versionController, guid, newChangePath); Change oldChange = oldChangeRef.GetChange(false).Result; Change newChange = new Change(versionController, guid, newChangePath, oldChange.Title, oldChange.Description, newVersionRef); if (oldChange.ReleaseVersion != null) { newChange.ReleaseVersion = new VersionRef(versionController, newVersionRef.RelativeFilePath, newVersionRef.VersionName); } if (oldChange.AdditionalData != null) { newChange.AdditionalData = (JObject)oldChange.AdditionalData.DeepClone(); } version.Changes.Add(newChangeRef); versionController.CacheChange(newChange); } versionController.CacheVersion(version); }
public void Refresh(VersionRef versionRef) { AdditionalDataExpander.IsExpanded = false; openVersionRef = versionRef; Version version = versionRef.GetVersion().Result; VersionField.Foreground = whiteColor; VersionTitle.Foreground = whiteColor; AdditionalDataExpander.IsExpanded = false; eventBlock = true; VersionField.Text = versionRef.VersionName; eventBlock = true; DescriptionField.Text = version.Description; eventBlock = true; LinkField.Text = version.DownloadLink; eventBlock = true; ReleaseDateField.SelectedDate = version.ReleaseDate; if (FunctioningField.IsChecked == !version.IsFunctioning) { eventBlock = true; FunctioningField.IsChecked = version.IsFunctioning; } if (version.AdditionalData == null) { version.AdditionalData = JObject.Parse("{}"); } eventBlock = true; AdditionalDataField.Text = version.AdditionalData.ToString(Newtonsoft.Json.Formatting.Indented); ChangeParent.Children.Clear(); foreach (ChangeRef changeRef in version.Changes) { ChangeControl changeControl = new ChangeControl(changeRef); ChangeParent.Children.Add(changeControl); } }
public void CreateVersionPressed(object sender, RoutedEventArgs args) { VersionController versionController = MainWindow.GetInstance().VersionController; string newVersionName = GetNewVersionName(); VersionRef versionRef = new VersionRef(versionController, Path.Combine(newVersionName, "version.json"), newVersionName); VersionControl newControl = new VersionControl(versionRef); VersionParent.Children.Insert(0, newControl); ChangeLog changeLog = versionController.GetChangeLog().Result; changeLog.Versions.Insert(0, versionRef); Version version = new Version(versionController, newVersionName, string.Empty, string.Empty, DateTime.Now, new System.Collections.Generic.List <ChangeRef>()); versionController.CacheVersion(version); ContentArea.GetInstance().OpenPage(ContentArea.PageType.Version, versionRef); }
public void MoveDown(VersionControl control) { int index = VersionParent.Children.IndexOf(control); if (index == -1 || index == VersionParent.Children.Count - 1) { return; } ChangeLog changeLog = MainWindow.GetInstance().VersionController.GetChangeLog().Result; VersionRef versionRef = changeLog.Versions[index]; changeLog.Versions.Remove(versionRef); VersionParent.Children.Remove(control); changeLog.Versions.Insert(index + 1, versionRef); VersionParent.Children.Insert(index + 1, control); }
public void OpenPage(PageType pageType, VersionRef versionRef = null, ChangeRef changeRef = null) { EmptyPage.Visibility = Visibility.Collapsed; ChangeLogPage.Visibility = Visibility.Collapsed; VersionPage.Visibility = Visibility.Collapsed; ChangePage.Visibility = Visibility.Collapsed; switch (pageType) { case PageType.Empty: EmptyPage.Visibility = Visibility.Visible; break; case PageType.ChangeLog: ChangeLogPage.Visibility = Visibility.Visible; ChangeLogPage.Refresh(); break; case PageType.Version: if (versionRef == null) { return; } VersionPage.Visibility = Visibility.Visible; VersionPage.Refresh(versionRef); break; case PageType.Change: if (changeRef == null) { return; } ChangePage.Visibility = Visibility.Visible; ChangePage.Refresh(changeRef); break; } }
private static async Task <int> MainAsync(string[] args) { string currentVersion = "1.0.0"; string baseUrl = "https://start-menu-manager.jam-es.com/versions"; // Create instance of VersionController by passing in this version of the application, and the URL of the directory containing changelog file: VersionController versionController = new VersionController(currentVersion, baseUrl); Console.WriteLine($"This Version: {currentVersion}"); // Check this is the latest version bool isLatestVersion = await versionController.IsLatestVersion(); Console.WriteLine($"Is Latest Version: {isLatestVersion}"); // If not latest, you can check this version is still meant to function correctly bool isFunctioningVersion = await versionController.IsFunctioningVersion(); Console.WriteLine($"Is Version Functioning: {isFunctioningVersion}"); // The ChangeLog object contains a list of all versions that have been released // We can list version properties like this: ChangeLog changeLog = await versionController.GetChangeLog(); Console.WriteLine(); Console.WriteLine("All Versions:"); foreach (VersionRef versionRef in changeLog.Versions) { Version version = await versionRef.GetVersion(); Console.WriteLine($"Version Name: {version.VersionName}"); Console.WriteLine($"Version Description: {version.Description}"); Console.WriteLine($"Version Download Link: {version.DownloadLink}"); Console.WriteLine($"Version Release Date: {version.ReleaseDate}"); // You can get all changes in a version with version.Changes } // Get individual versions with: VersionRef firstAppVersionRef = await versionController.GetFirstVersionRef(); Version latestAppVersionRef = await versionController.GetLatestVersion(); VersionRef specificVersionRef = await versionController.GetVersionRef("1.0.0b4"); Console.WriteLine(); Console.WriteLine($"First Version: {firstAppVersionRef.VersionName}"); Console.WriteLine($"Latest Version: {latestAppVersionRef.VersionName}"); Console.WriteLine($"Found Version 1.0.0b4: {specificVersionRef != null}"); // Convert references to Version objects to get all the properties Version firstVersion = await firstAppVersionRef.GetVersion(); Console.WriteLine($"First Version Description: {firstVersion.Description}"); // ChangeLog, Version and Change objects can all have additional data stored within them (set in the WPF app) // You can access this data by deserializing the AdditionalData property (it is a JObject) // For example, to retrieve additional data from a version ExtraVersionData extraData = firstVersion.AdditionalData.ToObject <ExtraVersionData>(); // ^ The version files with the given URI don't actually use additional data so this is null // You could use this to order lists of versions or changes using Linq: /* * List<Task<Version>> getVersionTasks = changeLog.Versions.Select(async v => await v.GetVersion()).ToList(); * IEnumerable<Version> versions = await Task.WhenAll(getVersionTasks); * versions.OrderBy(v => v.AdditionalData.ToObject<ExtraVersionData>().Importance); * // It is gerenally a good idea to surround this in try{}catch{} in case ToObject throws an error */ Console.ReadKey(); return(0); }
public VersionControl(VersionRef versionRef) { InitializeComponent(); VersionText.Text = versionRef.VersionName; }
public void BackButtonPressed(object sender, RoutedEventArgs args) { openVersionRef = null; ContentArea.GetInstance().OpenPage(ContentArea.PageType.ChangeLog); }