public void Reload()
        {
            var progress = new ProgressDialog(Activity);

            progress.SetTitle(Resource.String.please_wait);
            progress.SetMessage(GetString(Resource.String.loading));
            progress.Indeterminate = true;
            progress.Show();

            Task.Factory.StartNew(async() => {
                var db   = ion.database;
                var jobs = new Dictionary <JobRow, List <SessionRow> >();

                // Add the "Default" job that sessions are assigned to
                jobs.Add(new JobRow()
                {
                    _id     = 0,
                    jobName = GetString(Resource.String.report_session_unassigned),
                }, new List <SessionRow>());

                foreach (var job in await db.QueryForAllAsync <JobRow>())
                {
                    jobs[job] = new List <SessionRow>();
                }

                foreach (var job in jobs.Keys)
                {
                    var sessions = jobs[job];
                    sessions.AddRange(db.Table <SessionRow>().Where(x => x.frn_JID == job._id).AsEnumerable());
                }

                var records = new List <RecordAdapter.IRecord>();

                foreach (var job in jobs.Keys)
                {
                    records.Add(new ReportJobHeaderRecord(job, jobs[job]));
                    foreach (var session in jobs[job])
                    {
                        records.Add(await ReportSessionRecord.NewAsync(ion, session));
                    }
                }

                return(records);
            }).ContinueWith((arg) => {
                progress.Dismiss();

                if (arg.Result.IsFaulted)
                {
                    Error(GetString(Resource.String.report_error_unknown), arg.Exception);
                }
                else
                {
                    adapter.Set(arg.Result.Result);
                }
                InvalidateDelete();
                SyncCheckedSessions();
            }, TaskScheduler.FromCurrentSynchronizationContext());
        }
Пример #2
0
        private void Reload()
        {
            var progress = new ProgressDialog(Activity);

            progress.SetTitle(Resource.String.please_wait);
            progress.SetMessage(GetString(Resource.String.loading));
            progress.Indeterminate = true;
            progress.Show();

            LoadAllSessionsAsync().ContinueWith((arg) => {
                if (arg.IsFaulted)
                {
                    Error(GetString(Resource.String.report_error_failed_to_load_sessions), arg.Exception);
                }
                else
                {
                    adapter.Set(arg.Result);
                }
                progress.Dismiss();
                InvalidateDelete();
                SyncCheckedSessions();
            }, TaskScheduler.FromCurrentSynchronizationContext());
        }