public void LoadingData() { try { #region 로딩 제외 후 테스트 /* * var controller = new JsonController("data_info"); * var json = controller.ReadString(); * * if (json != null) * dataInfo = JsonConvert.DeserializeObject<Dictionary<string, Dictionary<string, string>>>(json); * * InitUI(); * * await GetData(); * await GetArticle(); * * var appInfo = GetAppInfo(); * * if (appInfo != null && appInfo["Version"] != App.Version) * { * var store = ""; * var uri = ""; * * switch (Device.RuntimePlatform) * { * case Device.Android: * store = "Google Play 스토어"; * uri = "market://details?id=io.github.banb3515.hanyang"; * break; * case Device.iOS: * store = "앱 스토어"; * uri = "itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=io.github.banb3515.hanyang&onlyLatestVersion=true&pageNumber=0&sortOrdering=1&type=Purple+Software"; * break; * } * * var result = await DisplayAlert("업데이트", "최신 버전(v" + appInfo["Version"] + ")으로 업데이트할 수 있습니다.\n\n" + * "※ 업데이트 내용\n" + appInfo["UpdateContent"] + "\n\n" + * "[이동] 버튼 클릭 시 " + store + "로 이동합니다.", "이동", "취소"); * * if (result) * await Launcher.OpenAsync(new Uri(uri)); * } */ #endregion Configurations.LoadingConfig = new LoadingConfig { IndicatorColor = Color.White, OverlayColor = Color.Black, Opacity = 0.75, DefaultMessage = "잠시만 기다려주세요 ...", }; Device.BeginInvokeOnMainThread(async() => { await Loading.Instance.StartAsync(async progress => { try { var per = 0; var ran = new Random(); for (; per < 10; per++) { await Task.Delay(ran.Next(5, 21)); progress.Report((per + 1) * 0.01d); } // 데이터 정보 파일 읽기 Loading.Instance.SetMessage("로컬 파일을 읽는 중입니다 ..."); var controller = new JsonController("data_info"); for (; per < 15; per++) { await Task.Delay(ran.Next(5, 21)); progress.Report((per + 1) * 0.01d); } var json = controller.ReadString(); for (; per < 20; per++) { await Task.Delay(ran.Next(5, 21)); progress.Report((per + 1) * 0.01d); } if (json != null) { dataInfo = JsonConvert.DeserializeObject <Dictionary <string, Dictionary <string, string> > >(json); } for (; per < 30; per++) { await Task.Delay(ran.Next(5, 21)); progress.Report((per + 1) * 0.01d); } Loading.Instance.SetMessage("데이터를 가져오는 중입니다 ..."); await GetData(); for (; per < 50; per++) { await Task.Delay(ran.Next(5, 21)); progress.Report((per + 1) * 0.01d); } Loading.Instance.SetMessage("게시글을 가져오는 중입니다 ..."); await GetArticle(); for (; per < 70; per++) { await Task.Delay(ran.Next(5, 21)); progress.Report((per + 1) * 0.01d); } Loading.Instance.SetMessage("UI를 초기화하는 중입니다 ..."); InitUI(); for (; per < 90; per++) { await Task.Delay(ran.Next(5, 21)); progress.Report((per + 1) * 0.01d); } #region 앱 정보 가져오기 Loading.Instance.SetMessage("앱 정보를 가져오는 중입니다 ..."); var appInfo = GetAppInfo(); for (; per < 99; per++) { await Task.Delay(ran.Next(5, 21)); progress.Report((per + 1) * 0.01d); } if (appInfo != null && appInfo["Version"] != App.Version) { var store = ""; var uri = ""; switch (Device.RuntimePlatform) { case Device.Android: store = "Google Play 스토어"; uri = "market://details?id=io.github.banb3515.hanyang"; break; case Device.iOS: store = "앱 스토어"; uri = "itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=io.github.banb3515.hanyang&onlyLatestVersion=true&pageNumber=0&sortOrdering=1&type=Purple+Software"; break; } var result = await DisplayAlert("업데이트", "최신 버전(v" + appInfo["Version"] + ")으로 업데이트할 수 있습니다.\n\n" + "※ 업데이트 내용\n" + appInfo["UpdateContent"] + "\n\n" + "[이동] 버튼 클릭 시 " + store + "로 이동합니다.", "이동", "취소"); if (result) { await Launcher.OpenAsync(new Uri(uri)); } } #endregion Loading.Instance.SetMessage("로딩이 완료되었습니다."); for (; per < 100; per++) { await Task.Delay(ran.Next(5, 21)); progress.Report((per + 1) * 0.01d); } await Task.Delay(250); } catch (Exception e) { _ = ErrorAlert("로딩", "알 수 없는 오류가 발생했습니다:\n" + e.Message); } }); }); } catch (Exception) { } }
public async void InitUI() { try { string timetableJson = null; if (App.Class != 0) { var timetableCtrl = new JsonController("timetable-" + App.GetClassName()); timetableJson = timetableCtrl.ReadString(); } var lunchMenuCtrl = new JsonController("lunch_menu"); var lunchMenuJson = lunchMenuCtrl.ReadString(); var schoolScheduleCtrl = new JsonController("school_schedule"); var schoolScheduleJson = schoolScheduleCtrl.ReadString(); var schoolNoticeCtrl = new JsonController("school_notice"); var schoolNoticeJson = schoolNoticeCtrl.ReadString(); var schoolNewsletterCtrl = new JsonController("school_newsletter"); var schoolNewsletterJson = schoolNewsletterCtrl.ReadString(); var appNoticeCtrl = new JsonController("app_notice"); var appNoticeJson = appNoticeCtrl.ReadString(); #region 시간표 파일 읽기 if (timetableJson != null) { App.Timetable = JsonConvert.DeserializeObject <Timetable>(timetableJson); TabbedSchedulePage.GetInstance().task = true; _ = TabbedSchedulePage.GetInstance().ViewScheduleAnimation(); } #endregion #region 식 메뉴 파일 읽기 if (lunchMenuJson != null) { App.LunchMenu = JsonConvert.DeserializeObject <LunchMenu>(lunchMenuJson); TabbedSchedulePage.GetInstance().InitLunchMenu(); } #endregion #region 학사 일정 파일 읽기 if (schoolScheduleJson != null) { App.SchoolSchedule = JsonConvert.DeserializeObject <Dictionary <string, SchoolSchedule> >(schoolScheduleJson); TabbedSchedulePage.GetInstance().InitSchoolSchedule(); } #endregion #region 학교 공지사항 파일 읽기 if (schoolNoticeJson != null) { App.SchoolNotice = JsonConvert.DeserializeObject <Dictionary <string, Dictionary <string, string> > >(schoolNoticeJson); TabbedHomePage.GetInstance().InitSchoolNotice(); } #endregion #region 가정통신문 파일 읽기 if (schoolNewsletterJson != null) { App.SchoolNewsletter = JsonConvert.DeserializeObject <Dictionary <string, Dictionary <string, string> > >(schoolNewsletterJson); TabbedHomePage.GetInstance().InitSchoolNewsletter(); } #endregion #region 앱 공지사항 파일 읽기 if (appNoticeJson != null) { App.AppNotice = JsonConvert.DeserializeObject <Dictionary <string, Dictionary <string, string> > >(appNoticeJson); TabbedHomePage.GetInstance().InitAppNotice(); } #endregion } catch (Exception e) { await ErrorAlert("UI 초기화", "UI를 초기화하는 도중 오류가 발생했습니다.\n" + e.Message); } }