private void AsyncGetViewData(LoadingControlInterface lc) { lc.Current = 0; MessShortCorrespondence newMessShortCorrespondence = null; try { lc.Current = 5; newMessShortCorrespondence = Globals.BaseLogic.GetShortCorrespondence(true, false); lc.Current = 95; } catch (VKException ex) { //timerKeepAwake.Enabled = false; string error = ExceptionTranslation.TranslateException(ex); if (!string.IsNullOrEmpty(error)) { ViewData["LoadListResponseMessage"] = error; view.UpdateView("LoadListResponseNegative"); if (ex.LocalizedMessage.Equals(ExceptionMessage.IncorrectLoginOrPassword)) { Globals.BaseLogic.IDataLogic.SetToken(string.Empty); view.UpdateView("GoToLogin"); } } } catch (OutOfMemoryException) { ViewData["LoadListResponseMessage"] = Resources.OutOfMemory; view.UpdateView("LoadListResponseNegative"); } if (newMessShortCorrespondence != null) { FillListModel(newMessShortCorrespondence); } else { //view.Model.Clear(); } ViewData["ListID"] = Globals.BaseLogic.IDataLogic.GetUid(); // сохраняем ID пользователя для которого был построен список view.UpdateView("LoadListResponse"); // запускаем поток || прогрузки фотографий var t = new Thread(delegate { Globals.BaseLogic.ICommunicationLogic.LoadImagesInDictionary(); }) { IsBackground = true }; t.Start(); lc.Current = 100; }
private void AsyncGetViewData(LoadingControlInterface lc) { string isFirstStart = (string)ViewData["IsFirstStart"]; ViewData["IsFirstStart"] = "0"; lc.Current = 2; ActivityResponse newActivityResponse = null; UpdatesPhotosResponse newUpdatesPhotosResponse = null; // первичные данные формы try { // загружаем новые новости newActivityResponse = Globals.BaseLogic.LoadActivityDataList(25, true, false); lc.Current = 4; // загружаем новые фото newUpdatesPhotosResponse = Globals.BaseLogic.LoadUpdatesPhotos(25, true, false); lc.Current = 10; ViewData["FirstActivate"] = string.Empty; } catch (VKException ex) { timerKeepAwake.Enabled = false; string error = ExceptionTranslation.TranslateException(ex); if (!string.IsNullOrEmpty(error)) { ViewData["GetViewDataResponseMessage"] = error; view.UpdateView("GetViewDataResponseNegative"); if (ex.LocalizedMessage.Equals(ExceptionMessage.IncorrectLoginOrPassword)) { Globals.BaseLogic.IDataLogic.SetToken(string.Empty); //view.UpdateView("GoToLogin"); OnViewStateChanged("GoToLogin"); } } } catch (OutOfMemoryException) { ViewData["GetViewDataResponseMessage"] = Resources.OutOfMemory; view.UpdateView("GetViewDataResponseNegative"); } if (newActivityResponse != null) { FillListModel(newActivityResponse, true); } if (newUpdatesPhotosResponse != null) { FillListModel(newUpdatesPhotosResponse, true); } ViewData["ListID"] = Globals.BaseLogic.IDataLogic.GetUid(); // сохраняем ID пользователя для которого был построен список view.UpdateView("LoadListResponse"); // прочие данные при старте приложения if (isFirstStart.Equals("1") && Configuration.DataRenewType != DataRenewVariants.DontUpdate) { try { int totalCount; int alreadyGet; bool isData; // список друзей Globals.BaseLogic.LoadFriendsList(true, false); lc.Current = 12; // список комментариев к фотографиям пользователя Globals.BaseLogic.LoadPhotosComments(25, true, false); lc.Current = 14; // список заголовков цепочек сообщений пользователя Globals.BaseLogic.GetShortCorrespondence(true, false); lc.Current = 16; // список статусов пользователя (для формы поделиться) Globals.BaseLogic.LoadUserActivityDataList(25, true, false); lc.Current = 18; // список фотографий пользователя Globals.BaseLogic.ReloadUserPhotos(true, false); lc.Current = 20; // З А Г Р У З К А Ц Е П О Ч Е К П Е Р Е П И С О К Globals.BaseLogic.ClearMessageCorrespondence(); totalCount = Globals.BaseLogic.PredictCorrespondCount(); alreadyGet = 0; isData = false; MessShortCorrespondence newMessShortCorrespondence = DataModel.Data.MessageShortCorrespondence; if (newMessShortCorrespondence == null) { newMessShortCorrespondence = new MessShortCorrespondence(); } MessCorrespondence newMessCorrespondence = DataModel.Data.MessageCorrespondence; if (newMessCorrespondence == null) { newMessCorrespondence = new MessCorrespondence(); } do { isData = Globals.BaseLogic.UploadNextUserCorrespond(newMessShortCorrespondence, newMessCorrespondence); if (isData) { alreadyGet++; if (totalCount > 0) { lc.Current = 40 - (int)(20 * (((double)(totalCount - alreadyGet)) / ((double)totalCount))); } } }while (isData); DataModel.Data.MessageCorrespondence = newMessCorrespondence; // З А Г Р У З К А К О М М Е Н Т А Р И Е В Globals.BaseLogic.ClearAllPhotoComments(); totalCount = Globals.BaseLogic.PredictPhotoCommentsCount(); alreadyGet = 0; isData = false; PhotosCommentsResponseHistory newPhotosCommentsRespounseHistory = DataModel.Data.PhotosCommentsResponseHistoryData; if (newPhotosCommentsRespounseHistory == null) { newPhotosCommentsRespounseHistory = new PhotosCommentsResponseHistory(); } PhotosCommentsResponse newPhotosCommentsRespounse = DataModel.Data.PhotosCommentsResponseData; if (newPhotosCommentsRespounse == null) { newPhotosCommentsRespounse = new PhotosCommentsResponse(); } UpdatesPhotosResponse nwUpdatesPhotosResponse = DataModel.Data.UpdatesPhotosResponseData; if (nwUpdatesPhotosResponse == null) { nwUpdatesPhotosResponse = new UpdatesPhotosResponse(); } do { isData = Globals.BaseLogic.UploadNextPhotoComments(newPhotosCommentsRespounseHistory, newPhotosCommentsRespounse, nwUpdatesPhotosResponse); if (isData) { alreadyGet++; if (totalCount > 0) { lc.Current = 60 - (int)(20 * (((double)(totalCount - alreadyGet)) / ((double)totalCount))); } } }while (isData); DataModel.Data.PhotosCommentsResponseHistoryData = newPhotosCommentsRespounseHistory; // З А Г Р У З К А П Р О Ф И Л Е Й П О Л Ь З О В А Т Е Л Е Й totalCount = Globals.BaseLogic.PredictFriendsCount(); alreadyGet = 0; isData = false; FriendsListResponse additionalFriendsListResponse = additionalFriendsListResponse = DataModel.Data.FriendsListAdditionalResponseData; if (additionalFriendsListResponse == null) { additionalFriendsListResponse = new FriendsListResponse(); } FriendsListResponse oldFriendsListResponse = DataModel.Data.FriendsListResponseData; if (oldFriendsListResponse == null) { oldFriendsListResponse = new FriendsListResponse(); } do { isData = Globals.BaseLogic.GetNextFriendsInfo(true, false, additionalFriendsListResponse, oldFriendsListResponse); if (isData) { alreadyGet++; if (totalCount > 0) { lc.Current = 98 - (int)(38 * (((double)(totalCount - alreadyGet)) / ((double)totalCount))); } } } while (isData); DataModel.Data.FriendsListAdditionalResponseData = additionalFriendsListResponse; // все фото Globals.BaseLogic.DownloadAllPhotoData(); lc.Current = 99; } catch (VKException) { DebugHelper.WriteLogEntry("Ошибка при загрузке данных при старте приложения"); } catch (OutOfMemoryException) { DebugHelper.WriteLogEntry("Ошибка при загрузке данных при старте приложения"); } catch (Exception) { DebugHelper.WriteLogEntry("Ошибка при загрузке данных при старте приложения"); } } // запускаем поток || прогрузки фотографий var t = new Thread(delegate { Globals.BaseLogic.ICommunicationLogic.LoadImagesInDictionary(); }) { IsBackground = true }; t.Start(); lc.Current = 100; }
protected override void OnViewStateChanged(string key) { #region LoadList if (key == "LoadList") { bool isRefrsh = Convert.ToBoolean(ViewData["IsRefresh"]); if (isRefrsh) { LoadingControlInterface lc = LoadingControl.CreateLoading(Resources.DataLoading); Thread asyncDataThread = new Thread(delegate { AsyncGetViewData(lc); }); asyncDataThread.IsBackground = true; asyncDataThread.Start(); lc.ShowLoading(true); if (lc.Abort) { asyncDataThread.Abort(); } } else { try { MessShortCorrespondence newMessShortCorrespondence = Globals.BaseLogic.GetShortCorrespondence(false, false); if (newMessShortCorrespondence != null) { FillListModel(newMessShortCorrespondence); Globals.BaseLogic.ICommunicationLogic.ClearImagesInDictionary(); } else { view.Model.Clear(); } ViewData["ListID"] = Globals.BaseLogic.IDataLogic.GetUid(); // сохраняем ID пользователя для которого был построен список view.UpdateView("LoadListResponse"); } catch { // } } } #endregion #region ReloadList if (key == "ReloadList") { view.UpdateView("ReloadListResponse"); } #endregion #region RefreshList if (key == "RefreshList") { view.UpdateView("RefreshListResponse"); } #endregion #region ChangeReceiver if (key == "ChangeReceiver") { using (new WaitWrapper(false)) { MasterForm.Navigate <FriendsSearchListController>(""); } } #endregion #region перехеды #region GoToNews if (key == "GoToNews") { MasterForm.Navigate <StatusUpdatesListController>(); } #endregion #region GoToFriends if (key == "GoToFriends") { MasterForm.Navigate <FriendsListController>(); } #endregion #region GoToPhotos if (key == "GoToPhotos") { MasterForm.Navigate <ShareController>(); } #endregion #region GoToExtras if (key == "GoToExtras") { MasterForm.Navigate <ExtraController>(); } #endregion #endregion #region ListActualization if (key == "ListActualization") { //string currentID = Globals.BaseLogic.IDataLogic.GetUid(); //string listID = (string)ViewData["ListID"]; //if (currentID != listID) //{ // ViewData["IsRefresh"] = false; // OnViewStateChanged("LoadList"); //} ViewData["IsRefresh"] = false; OnViewStateChanged("LoadList"); } #endregion if (key == "GoGoToLogin") { MasterForm.Navigate <LoginController>(); } }
private void FillListModel(MessShortCorrespondence newMessShortCorrespondence) { view.Model.Clear(); foreach (MessShort newMessShort in newMessShortCorrespondence.MessList) { MessagesChainsListViewItem newMessagesChainsListViewItem = new MessagesChainsListViewItem(); newMessagesChainsListViewItem.Uid = newMessShort.mID.ToString(); newMessagesChainsListViewItem.UserID = newMessShort.mUserID; newMessagesChainsListViewItem.UserName = newMessShort.mUserName; newMessagesChainsListViewItem.MessageText = newMessShort.mLastMessageText; newMessagesChainsListViewItem.MessageWroteDate = newMessShort.mTime; // многострочное представление в однострочное newMessagesChainsListViewItem.MessageText = Regex.Replace(newMessagesChainsListViewItem.MessageText, "\n", " "); #region текстовое представление даты string datatimeText = string.Empty; if (newMessShort.mTime.Date == DateTime.Now.Date) { datatimeText += Resources.Today; } else if (newMessShort.mTime.Date == DateTime.Now.AddDays(-1).Date) { datatimeText += Resources.Yesterday; } else { datatimeText += newMessShort.mTime.ToString("dd.MM.yyyy"); } //datatimeText += newMessShort.mTime.ToString("HH:mm"); newMessagesChainsListViewItem.MessageWroteDateString = datatimeText; #endregion // значок исходящего if (newMessShort.mType == MessageIOType.Inbox) { newMessagesChainsListViewItem.IsMessageOutbox = false; } else { newMessagesChainsListViewItem.IsMessageOutbox = true; } // выделение непрочитанного if (!newMessShort.mIsRead) { newMessagesChainsListViewItem.IsMessageNew = true; } else { newMessagesChainsListViewItem.IsMessageNew = false; } #region изображение //newMessagesChainsListViewItem.UserPhoto = SystemConfiguration.AppInstallPath + @"\Cache\Files\Thumb\" + HttpUtility.GetMd5Hash(newMessShort.mUserPhotoURL); //bool result = Globals.BaseLogic.ICommunicationLogic.LoadImage(newMessShort.mUserPhotoURL, @"Thumb\" + HttpUtility.GetMd5Hash(newMessShort.mUserPhotoURL), false, _afterLoadImageEventHandler, UISettings.CalcPix(50), newMessShort.mTime, "DateTime"); //newMessagesChainsListViewItem.IsUserPhotoLoaded = result; #endregion view.Model.Add(newMessagesChainsListViewItem); } view.Model.Sort(); }