示例#1
0
        private async Task InitUI()
        {
            m_refresher.Refreshing = true;
            AndHUD.Shared.Show(this, Resources.GetString(Resource.String.loading_in_progress), -1, MaskType.Black);
            m_handler_DismissHandHUDIfNeeded.RemoveCallbacks(m_workRunnable_DismissHandHUDIfNeeded);

            //Get trajet from local database
            try
            {
                m_trajet = await Trajet.GettrajetDetailsToShowOnScreen(new FileAccessManager(), m_itrajetLocalID);

                //To never get empty listview
                while (m_trajet.m_lsarret.Count < 22)
                {
                    m_trajet.m_lsarret.Add(new Arret());
                }

                m_trajet.m_lsarret.Reverse();
            }
            catch (Exception)
            {
                DynamicUIBuild_Utils.ShowSnackBar_WithOKButtonToClose(this, m_layoutRoot, Resource.String.snackbar_errorHappened);

                if (m_trajet == null || m_trajet.m_lsarret == null)
                {
                    m_refresher.Refreshing = false;
                    return;
                }
            }

            try
            {
                string stextviewLocationStartText = m_trajet.m_sLocationStart;
                string stextviewTimeStartText     = m_trajet.m_sTimeStart;
                string stextviewLocationEndText   = m_trajet.m_sLocationEnd;
                string stextviewTimeEndText       = m_trajet.m_sTimeEnd;

                //update ui (add empty items if mode conduite to avoid showing white screen when there is not enouth Arret)
                List <Arret> tmp = new List <Arret>();
                if (m_bIsModeConduite)
                {
                    for (int i = 0; i < 20; i++)
                    {
                        tmp.Add(new Arret());
                    }
                }
                tmp.AddRange(m_trajet.m_lsarret);
                m_adapter.RefreshListArret(tmp);
                UpdateGpsLayout();
                UpdateAltimeter();

                //Start
                m_textviewLocationStart.Text = stextviewLocationStartText;
                m_textviewTimeStart.Text     = stextviewTimeStartText;

                //End
                m_textviewLocationEnd.Text = stextviewLocationEndText;
                m_textviewTimeEnd.Text     = stextviewTimeEndText;

                //Time before start
                UpdateTimeBeforeStart();

                //Canal radio.... always hiden for the moment (reunion début Mars 2018
                m_textviewRadio.Text = string.Format(Resources.GetString(Resource.String.activitytrajetDetails_textview_radio), m_trajet.m_lsarret[0]?.m_sRadioCanal);

                //Next stop and Current stop
                if (m_bIsModeConduite && m_nextArret == null)
                {
                    m_nextArret = m_adapter[m_adapter.Count - 1];
                }
                UpdateLayoutNextStop();
                UpdateLayoutCurrentStop();

                //Btn valid preparation
                if (m_bIsModeConduite)
                {
                    m_btnValidPreparation.Visibility = ViewStates.Gone;
                }
                else
                {
                    m_btnValidPreparation.Visibility = ViewStates.Visible;
                }

                //Disable listview scrolling
                if (m_bIsModeConduite)
                {
                    m_listview.Enabled = false;
                }
                else
                {
                    m_listview.Enabled = true;
                }

                //If activity has been reloading, remove all old Arret
                if (m_currentArret != null)
                {
                    m_adapter.RemoveLastItemsUntilCurrentStop(m_currentArret);
                }

                //In every case, scroll the list view to the very bottom
                m_listview.SmoothScrollToPosition(m_adapter.Count);

                //Verify if a arret has already been passed in that trajet. If yes, go to it directly
                GoToLatestStopPassedIfNeeded();
            }
            catch (Exception e)
            {
                DynamicUIBuild_Utils.ShowSnackBar_WithOKButtonToClose(this, m_layoutRoot, Resource.String.snackbar_errorHappened);
                MobileCenter_Helper.ReportError(new FileAccessManager(), e, GetType().Name, MethodBase.GetCurrentMethod().Name);
            }
            finally
            {
                m_refresher.Refreshing = false;
                m_handler_DismissHandHUDIfNeeded.PostDelayed(m_workRunnable_DismissHandHUDIfNeeded, 15000);
            }
        }