Ejemplo n.º 1
0
        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;
            }
        }