public void UpdatePublicationStatus() { LogHelper.Debug("dbg", "UpdatePublicationStatus[" + Publication.Value.BookId + "]"); // A publication with downloaded status should be always shown as Download Successfully. // In few case, the publication's status is inconsistent with the download status, due to unknown reason. // So add [Publication.Value.PublicationStatus != PublicationStatusEnum.Downloaded] to fix: // http://wiki.lexiscn.com/issues/12947 if (DataCache.INSTATNCE.PublicationManager.IsDownloadFailed(Publication.Value) && Publication.Value.PublicationStatus != PublicationStatusEnum.Downloaded) { LogHelper.Debug("dbg", "IsDownloadFailed"); switch (Publication.Value.PublicationStatus) { case PublicationStatusEnum.RequireUpdate: { // Require update tvPubInfo_1stLine.Text = MainApp.ThisApp.Resources.GetString(Resource.String.PubCover_Upload_Failed); imgPubInfo_1stLine.SetImageResource(Resource.Drawable.mypub_info); tvPubInfo_2ndLine.Text = String.Format( MainApp.ThisApp.Resources.GetString(Resource.String.PubCover_CurrencyDate), Publication.Value.CurrencyDate.Value.ToString("dd MMM yyyy")); } break; case PublicationStatusEnum.NotDownloaded: { // NeedDownload tvPubInfo_1stLine.Text = MainApp.ThisApp.Resources.GetString(Resource.String.PubCover_Download_Failed); imgPubInfo_1stLine.SetImageResource(Resource.Drawable.mypub_info_disable); tvPubInfo_2ndLine.Text = Conversion.Byte2ReadableString(Publication.Value.Size); } break; default: throw new InvalidProgramException("Unknown publication status."); } imgPubInfo_2ndLine.Visibility = ViewStates.Visible; imgPubInfo_2ndLine.SetImageResource(Resource.Drawable.mypub_downloadupdate_failed); } else if (DataCache.INSTATNCE.PublicationManager.IsDownloading(Publication.Value)) { // Downloading tvPubInfo_1stLine.Text = MainApp.ThisApp.Resources.GetString(Resource.String.PubCover_Downloading); tvPubInfo_2ndLine.Text = Conversion.Byte2ReadableString(Publication.Value.Size); imgPubInfo_1stLine.SetImageResource(Resource.Drawable.mypub_info_disable); imgPubInfo_2ndLine.Visibility = ViewStates.Visible; imgPubInfo_2ndLine.SetImageResource(Resource.Drawable.mypub_download_progress); UpdateProgressBar(); } else { switch (Publication.Value.PublicationStatus) { case PublicationStatusEnum.RequireUpdate: { // Require update tvPubInfo_2ndLine.Text = String.Format( MainApp.ThisApp.Resources.GetString(Resource.String.PubCover_CurrencyDate), Publication.Value.CurrencyDate.Value.ToString("dd MMM yyyy")); imgPubInfo_1stLine.SetImageResource(Resource.Drawable.mypub_info); if (Publication.Value.DaysRemaining < 0) { // Expired tvPubInfo_1stLine.Text = MainApp.ThisApp.Resources.GetString(Resource.String.PubCover_Expired); imgPubInfo_2ndLine.Visibility = ViewStates.Visible; imgPubInfo_2ndLine.SetImageResource(Resource.Drawable.mypub_expired); } else { // Not expired tvPubInfo_1stLine.Text = Publication.Value.UpdateCount == 1 ? String.Format(MainApp.ThisApp.Resources.GetString(Resource.String.PubCover_UpdateAvailable), Publication.Value.UpdateCount) : String.Format(MainApp.ThisApp.Resources.GetString(Resource.String.PubCover_UpdatesAvailable), Publication.Value.UpdateCount); imgPubInfo_2ndLine.Visibility = ViewStates.Visible; imgPubInfo_2ndLine.SetImageResource(Resource.Drawable.mypub_update_available); } } break; case PublicationStatusEnum.NotDownloaded: { // NeedDownload //tvPubInfo_1stLine.Text = MainApp.ThisApp.Resources.GetString(Resource.String.PubCover_Download); tvPubInfo_1stLine.Text = coverHolder.Publication.Value.Name; // tvPubInfo_2ndLine.Text = Conversion.Byte2ReadableString(Publication.Value.Size); tvPubInfo_2ndLine.Text = coverHolder.Publication.Value.Author; imgPubInfo_1stLine.SetImageResource(Resource.Drawable.mypub_info_disable); imgPubInfo_2ndLine.Visibility = ViewStates.Visible; imgPubInfo_2ndLine.SetImageResource(Resource.Drawable.mypub_download); } break; case PublicationStatusEnum.Downloaded: { // Download finished tvPubInfo_2ndLine.Text = String.Format( MainApp.ThisApp.Resources.GetString(Resource.String.PubCover_CurrencyDate), Publication.Value.CurrencyDate.HasValue ? Publication.Value.CurrencyDate.Value.ToString("dd MMM yyyy") : Publication.Value.LastUpdatedDate.Value.ToString("dd MMM yyyy")); imgPubInfo_1stLine.SetImageResource(Resource.Drawable.mypub_info); if (Publication.Value.DaysRemaining < 0) { // Expired tvPubInfo_1stLine.Text = MainApp.ThisApp.Resources.GetString(Resource.String.PubCover_Expired); imgPubInfo_2ndLine.Visibility = ViewStates.Visible; imgPubInfo_2ndLine.SetImageResource(Resource.Drawable.mypub_expired); } else { // Not expired tvPubInfo_1stLine.Text = MainApp.ThisApp.Resources.GetString(Resource.String.PubCover_UpToDate); imgPubInfo_2ndLine.Visibility = ViewStates.Invisible; } } break; default: throw new InvalidProgramException("Unknown publication status."); } tvPubInfo_1stLine.Text = coverHolder.Publication.Value.Name; tvPubInfo_2ndLine.Text = coverHolder.Publication.Value.Author; } }