using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Globalization; using System.IO; using System.Linq; using System.Net; using System.Windows; using HandyControl.Data; using HandyControlDemo.Data; using HandyControlDemo.Properties.Langs; using HandyControlDemo.Tools.Converter; using Newtonsoft.Json; namespace HandyControlDemo.Service; public class DataService { internal ObservableCollection GetTabControlDemoDataList() { return new() { new TabControlDemoModel { Header = "Success", BackgroundToken = ResourceToken.SuccessBrush }, new TabControlDemoModel { Header = "Primary", BackgroundToken = ResourceToken.PrimaryBrush }, new TabControlDemoModel { Header = "Warning", BackgroundToken = ResourceToken.WarningBrush }, new TabControlDemoModel { Header = "Danger", BackgroundToken = ResourceToken.DangerBrush }, new TabControlDemoModel { Header = "Info", BackgroundToken = ResourceToken.InfoBrush } }; } internal List GetDemoDataList() { var list = new List(); for (var i = 1; i <= 20; i++) { var dataList = new List(); for (var j = 0; j < 3; j++) { dataList.Add(new DemoDataModel { Index = j, IsSelected = j % 2 == 0, Name = $"SubName{j}", Type = (DemoType) j }); } var model = new DemoDataModel { Index = i, IsSelected = i % 2 == 0, Name = $"Name{i}", Type = (DemoType) (i % 6 + 1), DataList = dataList, ImgPath = $"/HandyControlDemo;component/Resources/Img/Avatar/avatar{i % 6 + 1}.png", Remark = new string(i.ToString()[0], 10) }; list.Add(model); } return list; } internal List GetDemoDataList(int count) { var list = new List(); for (var i = 1; i <= count; i++) { var index = i % 6 + 1; var model = new DemoDataModel { Index = i, IsSelected = i % 2 == 0, Name = $"Name{i}", Type = (DemoType) index, ImgPath = $"/HandyControlDemo;component/Resources/Img/Avatar/avatar{index}.png", Remark = new string(i.ToString()[0], 10) }; list.Add(model); } return list; } internal List GetContributorDataList() { var client = new WebClient(); client.Headers.Add("User-Agent", "request"); var list = new List(); try { var json = client.DownloadString(new Uri("https://api.github.com/repos/nabian/handycontrol/contributors")); var objList = JsonConvert.DeserializeObject>(json); list.AddRange(objList.Select(item => new AvatarModel { DisplayName = item.login, AvatarUri = item.avatar_url, Link = item.html_url })); } catch (Exception e) { HandyControl.Controls.MessageBox.Error(e.Message, Lang.Error); } return list; } internal List GetBlogDataList() { return new() { new AvatarModel { DisplayName = "林德熙", AvatarUri = "https://avatars3.githubusercontent.com/u/16054566?s=400&v=4", Link = "https://blog.lindexi.com/" }, new AvatarModel { DisplayName = "吕毅", AvatarUri = "https://avatars2.githubusercontent.com/u/9959623?s=400&v=4", Link = "https://blog.walterlv.com/" }, new AvatarModel { DisplayName = "DinoChan", AvatarUri = "https://avatars1.githubusercontent.com/u/6076257?s=400&v=4", Link = "https://www.cnblogs.com/dino623/" }, new AvatarModel { DisplayName = "noctwolf", AvatarUri = "https://avatars3.githubusercontent.com/u/21022467?s=400&v=4", Link = "https://www.cnblogs.com/noctwolf/" }, new AvatarModel { DisplayName = "关关长语", AvatarUri = "https://avatars3.githubusercontent.com/u/25916858?s=400&v=4", Link = "https://blog.csdn.net/qq_28806349/category_11213909.html" } }; } internal List GetProjectDataList() { return new() { new AvatarModel { DisplayName = "phpEnv", AvatarUri = "https://cdn.phpenv.cn:444/logo.png", Link = "https://www.phpenv.cn/" }, new AvatarModel { DisplayName = "AutumnBox", AvatarUri = "https://raw.githubusercontent.com/zsh2401/AutumnBox/master/src/AutumnBox.GUI/Resources/Images/icon.png", Link = "https://github.com/zsh2401/AutumnBox" }, new AvatarModel { DisplayName = "quicker", AvatarUri = "https://files.getquicker.net/_sitefiles/quicker_round_128.png", Link = "https://getquicker.net" } }; } internal List GetWebsiteDataList() { return new() { new AvatarModel { DisplayName = "Dotnet9", AvatarUri = "https://pic.cnblogs.com/avatar/1663243/20191124121029.png", Link = "https://dotnet9.com/" } }; } internal ObservableCollection GetCardDataList() { return new() { new CardModel { Header = "Atomic", Content = "/HandyControlDemo;component/Resources/Img/Album/1.jpg", Footer = "Stive Morgan" }, new CardModel { Header = "Zinderlong", Content = "/HandyControlDemo;component/Resources/Img/Album/2.jpg", Footer = "Zonderling" }, new CardModel { Header = "Busy Doin' Nothin'", Content = "/HandyControlDemo;component/Resources/Img/Album/3.jpg", Footer = "Ace Wilder" }, new CardModel { Header = "Wrong", Content = "/HandyControlDemo;component/Resources/Img/Album/4.jpg", Footer = "Blaxy Girls" }, new CardModel { Header = "The Lights", Content = "/HandyControlDemo;component/Resources/Img/Album/5.jpg", Footer = "Panda Eyes" }, new CardModel { Header = "EA7-50-Cent Disco", Content = "/HandyControlDemo;component/Resources/Img/Album/6.jpg", Footer = "еяхат музыка" }, new CardModel { Header = "Monsters", Content = "/HandyControlDemo;component/Resources/Img/Album/7.jpg", Footer = "Different Heaven" }, new CardModel { Header = "Gangsta Walk", Content = "/HandyControlDemo;component/Resources/Img/Album/8.jpg", Footer = "Illusionize" }, new CardModel { Header = "Won't Back Down", Content = "/HandyControlDemo;component/Resources/Img/Album/9.jpg", Footer = "Boehm / Benjamin Francis Leftwich" }, new CardModel { Header = "Katchi", Content = "/HandyControlDemo;component/Resources/Img/Album/10.jpg", Footer = "Ofenbach / Nick Waterhouse" } }; } internal CardModel GetCardData() { return new() { Content = $"/HandyControlDemo;component/Resources/Img/Album/{DateTime.Now.Second % 10 + 1}.jpg" }; } internal List GetStepBarDemoDataList() { return new() { new StepBarDemoModel { Header = LangKeys.Step, Content = LangKeys.Register }, new StepBarDemoModel { Header = LangKeys.Step, Content = LangKeys.BasicInfo }, new StepBarDemoModel { Header = LangKeys.Step, Content = LangKeys.UploadFile }, new StepBarDemoModel { Header = LangKeys.Step, Content = LangKeys.Complete } }; } internal ObservableCollection GetCoverViewDemoDataList() { return new() { new CoverViewDemoModel { ImgPath = "/HandyControlDemo;component/Resources/Img/Album/1.jpg", BackgroundToken = ResourceToken.SuccessBrush }, new CoverViewDemoModel { ImgPath = "/HandyControlDemo;component/Resources/Img/Album/2.jpg", BackgroundToken = ResourceToken.PrimaryBrush }, new CoverViewDemoModel { ImgPath = "/HandyControlDemo;component/Resources/Img/Album/3.jpg", BackgroundToken = ResourceToken.WarningBrush }, new CoverViewDemoModel { ImgPath = "/HandyControlDemo;component/Resources/Img/Album/4.jpg", BackgroundToken = ResourceToken.DangerBrush }, new CoverViewDemoModel { ImgPath = "/HandyControlDemo;component/Resources/Img/Album/5.jpg", BackgroundToken = ResourceToken.SuccessBrush }, new CoverViewDemoModel { ImgPath = "/HandyControlDemo;component/Resources/Img/Album/6.jpg", BackgroundToken = ResourceToken.PrimaryBrush }, new CoverViewDemoModel { ImgPath = "/HandyControlDemo;component/Resources/Img/Album/7.jpg", BackgroundToken = ResourceToken.InfoBrush }, new CoverViewDemoModel { ImgPath = "/HandyControlDemo;component/Resources/Img/Album/8.jpg", BackgroundToken = ResourceToken.WarningBrush }, new CoverViewDemoModel { ImgPath = "/HandyControlDemo;component/Resources/Img/Album/9.jpg", BackgroundToken = ResourceToken.PrimaryBrush }, new CoverViewDemoModel { ImgPath = "/HandyControlDemo;component/Resources/Img/Album/10.jpg", BackgroundToken = ResourceToken.DangerBrush } }; } internal List GetDemoInfo() { var infoList = new List(); var stream = Application.GetResourceStream(new Uri("Data/DemoInfo.json", UriKind.Relative))?.Stream; if (stream == null) return infoList; string jsonStr; using (var reader = new StreamReader(stream)) { jsonStr = reader.ReadToEnd(); } var jsonObj = JsonConvert.DeserializeObject(jsonStr); foreach (var item in jsonObj) { var titleKey = (string) item.title; var title = titleKey; List list = Convert2DemoItemList(item.demoItemList); var demoInfoModel = new DemoInfoModel { Key = titleKey, Title = title, DemoItemList = list, SelectedIndex = (int) item.selectedIndex, IsGroupEnabled = (bool) item.group }; infoList.Add(demoInfoModel); } return infoList; } private List Convert2DemoItemList(dynamic list) { var resultList = new List(); foreach (var item in list) { var name = (string) item[0]; string targetCtlName = item[1]; string imageName = item[2]; var isNew = !string.IsNullOrEmpty((string) item[3]); var groupName = (string) item[4]; if (string.IsNullOrEmpty(groupName)) { groupName = "Misc"; } resultList.Add(new DemoItemModel { Name = name, TargetCtlName = targetCtlName, ImageName = $"../../Resources/Img/LeftMainContent/{imageName}.png", IsNew = isNew, GroupName = groupName }); } return resultList; } public string GetDemoUrl(DemoInfoModel demoInfo, DemoItemModel demoItem) { var key = demoInfo.Key switch { "Styles" => "native_controls", "Controls" => "extend_controls", "Tools" => "tools", _ => string.Empty }; var domainName = LangProvider.Culture == null || LangProvider.Culture.Name.ToLower() == "zh-cn" ? "handyorg" : "ghost1372"; return $"https://{domainName}.github.io/handycontrol/{key}/{demoItem.Name[0].ToString().ToLower()}{demoItem.Name.Substring(1)}"; } }