Пример #1
0
        protected void SaveActivityStateAndTransition <ToViewModel>()
        {
            DebugLog.Info("Save state");
            navigator.Reveal <ProgressIndicatorViewModel>().Then((vm, onRevealed, onRevealError) =>
            {
                ProgressIndicatorViewModel progressIndicatorViewModel = vm.ResultAs <ProgressIndicatorViewModel>();
                ProgressIndicatorViewModel.ProgressInfo busyIndicator = progressIndicatorViewModel.Begin("Saving...");
                activityService.SaveActivityState(ActivityState)
                .Then((prevResult, onCompleted, onError) =>
                {
                    navigator.Transition(this, typeof(ToViewModel));
                    onCompleted(true);
                })
                .Catch((Exception e) =>
                {
                    navigator.Reveal <AlertViewModel>(alert =>
                    {
                        alert.Title           = "Unable to save";
                        alert.Message         = e.Message;
                        alert.Error           = e;
                        alert.AlertDismissed += ((int index) => DebugLog.Info("Button {0} pressed", index));
                    }).Start();
                }).Finally(() =>
                {
                    busyIndicator.Dispose();
                }).Start();

                onRevealed(true);
            }).Start();
        }
        private void RefreshActivityList()
        {
            try
            {
                Contract.PropertyNotNull("sessionState.CourseSettings", sessionState.CourseSettings);

                DebugLog.Info("RefreshActivityList");
                navigator.Reveal <ProgressIndicatorViewModel>().Then((vm, onRevealed, onRevealError) =>
                {
                    ProgressIndicatorViewModel progressIndicatorViewModel = vm.ResultAs <ProgressIndicatorViewModel>();
                    ProgressIndicatorViewModel.ProgressInfo busyIndicator = progressIndicatorViewModel.Begin("Loading...");
                    activityService.LoadActivities(sessionState.CourseSettings.CourseId)
                    .Then((prevResult, onCompleted, onError) =>
                    {
                        DebugLog.Info("Activities loaded");
                        Activities = prevResult.ResultAs <List <Activity> >();
                        IEnumerable <string> activityIds = Activities.Select(a => a.Id);
                        activityService.LoadActivityStates(sessionState.Student.Id, activityIds).Start(onCompleted, onError);
                    })
                    .Then((prevResult, onCompleted, onError) =>
                    {
                        DebugLog.Info("Activity States loaded");
                        ActivityStates = prevResult.ResultAs <List <ActivityState> >();
                        onCompleted(true);
                    })
                    .Catch((Exception e) =>
                    {
                        DebugLog.Error("Can't load activitues: {0}", e.Message);
                        navigator.Reveal <AlertViewModel>(alert =>
                        {
                            alert.Title           = "Unable to load activity information.";
                            alert.Message         = e.Message;
                            alert.Error           = e;
                            alert.AlertDismissed += ((int index) => DebugLog.Info("Button {0} pressed", index));
                        }).Start();
                    }).Finally(() =>
                    {
                        busyIndicator.Dispose();
                    }).Start();

                    onRevealed(true);
                }).Start();
            }
            catch (Exception e)
            {
                navigator.Reveal <AlertViewModel>(alert =>
                {
                    alert.Title   = "Unable load activity information";
                    alert.Message = e.Message;
                    alert.Error   = e;
                }).Start();
            }
        }
Пример #3
0
            public ProgressInfo(ProgressIndicatorViewModel busyViewModel, string message, bool isBlocking = true)
            {
                Contract.ArgumentNotNull("busyViewModel", busyViewModel);
                Contract.ArgumentNotNull("message", message);

                StartTime = DateTime.Now;

                ViewModel  = busyViewModel;
                Message    = message;
                IsBlocking = isBlocking;

                busyViewModel.Add(this);
            }
        public void StartActivity(Activity activity)
        {
            try
            {
                Contract.ArgumentNotNull("activity", activity);

                DebugLog.Info("Started Activity {0}", activity.Name);

                navigator.Reveal <ProgressIndicatorViewModel>().Then((vm, onRevealed, onRevealError) =>
                {
                    ProgressIndicatorViewModel progressIndicatorViewModel = vm.ResultAs <ProgressIndicatorViewModel>();
                    ProgressIndicatorViewModel.ProgressInfo busyIndicator = progressIndicatorViewModel.Begin("Starting...");
                    activityLauncher.Start(sessionState.Student, activity, false)
                    .Then((prevResult, onCompleted, onError) =>
                    {
                        navigator.Transition(this, prevResult.ResultAs <ActivityViewModel>());
                        onCompleted(true);
                    })
                    .Catch((Exception e) =>
                    {
                        navigator.Reveal <AlertViewModel>(alert =>
                        {
                            alert.Title           = "Unable to start activity";
                            alert.Message         = e.Message;
                            alert.Error           = e;
                            alert.AlertDismissed += ((int index) => DebugLog.Info("Button {0} pressed", index));
                        }).Start();
                    }).Finally(() =>
                    {
                        busyIndicator.Dispose();
                    }).Start();
                }).Start();
            }
            catch (Exception e)
            {
                navigator.Reveal <AlertViewModel>(alert =>
                {
                    alert.Title   = "Unable to start activity";
                    alert.Message = e.Message;
                    alert.Error   = e;
                }).Start();
            }
        }
Пример #5
0
        protected override void OnBindingContextChanged(ViewModel oldViewModel, ViewModel newViewModel)
        {
            Contract.PropertyNotNull("message", message);
            Contract.PropertyNotNull("cancelButton", cancelButton);

            base.OnBindingContextChanged(oldViewModel, newViewModel);
            ProgressIndicatorViewModel previousViewModel = oldViewModel as ProgressIndicatorViewModel;

            if (previousViewModel != null)
            {
                previousViewModel.ProgressUpdated -= UpdateControls;
            }

            if (ViewModel != null)
            {
                ViewModel.ProgressUpdated += UpdateControls;
            }

            UpdateControls();
        }
Пример #6
0
        public void SignIn(string group, string username, string password)
        {
            try
            {
                if (string.IsNullOrEmpty(username))
                {
                    throw new Exception("Username is blank");
                }

                if (string.IsNullOrEmpty(password))
                {
                    throw new Exception("Password is blank");
                }

                sessionState.Student = null;
                sessionState.Session = null;

                DebugLog.Info("SignIn {0}...", username);
                navigator.Reveal <ProgressIndicatorViewModel>().Then((vm, onRevealed, onRevealError) =>
                {
                    ProgressIndicatorViewModel progressIndicatorViewModel = vm.ResultAs <ProgressIndicatorViewModel>();
                    ProgressIndicatorViewModel.ProgressInfo busyIndicator = progressIndicatorViewModel.Begin("Signing in...");
                    // TODO rgtaylor 2015-12-10 Replace hardcoded 'domain'
                    authenticator.SignIn(group, username, password)
                    .Then((prevResult, onCompleted, onError) =>
                    {
                        DebugLog.Info("Signed in {0}", username);
                        sessionState.Student = prevResult.ResultAs <Student>();
                        sessionService.Start(sessionState.Student.SessionGuid).Start(onCompleted, onError);
                    })
                    .Then((prevResult, onCompleted, onError) =>
                    {
                        DebugLog.Info("Session started");
                        sessionState.Session = prevResult.ResultAs <Session>();
                        courseSettingsService.LoadSettings(sessionState.Student.Id).Start(onCompleted, onError);
                    })
                    .Then((prevResult, onCompleted, onError) =>
                    {
                        DebugLog.Info("Settings loaded");
                        sessionState.CourseSettings = prevResult.ResultAs <CourseSettings>();
                        navigator.Transition(this, typeof(MainMenuViewModel));
                        onCompleted(true);
                    }).Catch((Exception e) =>
                    {
                        navigator.Reveal <AlertViewModel>(alert =>
                        {
                            alert.Title           = "Unable to sign in";
                            alert.Message         = e.Message;
                            alert.Error           = e;
                            alert.AlertDismissed += ((int index) => DebugLog.Info("Button {0} pressed", index));
                        });
                    }).Finally(() =>
                    {
                        busyIndicator.Dispose();
                    }).Start();

                    onRevealed(true);
                }).Start();
            }
            catch (Exception e)
            {
                navigator.Reveal <AlertViewModel>(alert =>
                {
                    alert.Title   = "Unable to sign in";
                    alert.Message = e.Message;
                    alert.Error   = e;
                }).Start();
            }
        }
			public ProgressInfo(ProgressIndicatorViewModel busyViewModel, string message, bool isBlocking = true)
			{
				Contract.ArgumentNotNull("busyViewModel",busyViewModel);
				Contract.ArgumentNotNull("message", message );
				
				StartTime = DateTime.Now;
				
				ViewModel = busyViewModel;
				Message = message;
				IsBlocking = isBlocking;
				
				busyViewModel.Add(this);
			}