private async Task OnEmotionalStatusSelectedAnimations(EmotionalStatus selectedEmotionalStatus)
        {
            if (_moveSelectedStatusToTop)
            {
                var notSelected = _emotionalStatesIcons.Where(x => x.EmotionalStatus != selectedEmotionalStatus);

                var selected = _emotionalStatesIcons.First(x => x.EmotionalStatus == selectedEmotionalStatus);

                await Task.WhenAll
                (
                    notSelected.Select(x => x.Image.FadeTo(0, Configuration.AnimationSpeed, Easing.SinIn))
                );

                double imageY = _emotionalIconsLayout.Y + _mainLayoutMargin + ((selected.Image.Height + _emotionalIconsLayout.RowSpacing) * (int)selectedEmotionalStatus);

                int distanceToTop = -(int)Math.Ceiling(imageY - (130 + EmoticonOffset));

                EmotionalIconSize = new Size(selected.Image.Width, selected.Image.Height);

                await Task.WhenAll
                (
                    _titleLayout.DisappearLeft(Configuration.AnimationSpeed),
                    selected.Image.TranslateTo(0, distanceToTop, Configuration.AnimationSpeed, Easing.CubicInOut)
                );
            }
            else
            {
                await Task.WhenAll
                (
                    _titleLayout.DisappearLeft(Configuration.AnimationSpeed),
                    _emotionalIconsLayout.DisappearLeft(Configuration.AnimationSpeed)
                );
            }
        }
        public EndProcessSummaryPage(Configuration configuration, EmotionalStatus emotionalStatus, bool useSelectedColor = false) : base(configuration)
        {
            _emotionalStatus = emotionalStatus;

            MiddleHeightProportion = 0.5; // 350;

            EnableBackButton = false;
            EnableNextButton = false;

            this.useSelectedColor = useSelectedColor;
        }
        private Image ConfigureEmotionalStatusButton(EmotionalStatus emotionalStatus, char set, Size?size = null)
        {
            Image imageButton = FormsHelper.ConfigureImageButton($"{ emotionalStatus.ToString().ToLower() }.png", (s, e) => { var t = OnEmotionalStatusSelected(emotionalStatus); }, size);

            imageButton.WidthRequest      = 100;
            imageButton.HorizontalOptions = LayoutOptions.Center;
            imageButton.VerticalOptions   = LayoutOptions.FillAndExpand;
            imageButton.Aspect            = Aspect.AspectFit;

            return(imageButton);
        }
        private async Task OnEmotionalStatusSelected(EmotionalStatus selectedEmotionalStatus)
        {
            //await OnEmotionalStatusSelectedAnimations(selectedEmotionalStatus).ContinueWith((t) => { Device.BeginInvokeOnMainThread(() => { EmotionalStatusSelected?.Invoke(selectedEmotionalStatus); }); });

            foreach (EmotionalStateIcon esi in _emotionalStatesIcons)
            {
                esi.Image.IsEnabled = false;
            }

            await OnEmotionalStatusSelectedAnimations(selectedEmotionalStatus).ContinueWith((t) =>
            {
                //await Task.Delay(1);

                Task.Run(() => Device.BeginInvokeOnMainThread(() => { EmotionalStatusSelected?.Invoke(selectedEmotionalStatus); }));

                //Device.BeginInvokeOnMainThread(() => { EmotionalStatusSelected?.Invoke(selectedEmotionalStatus); });
            });
        }
Exemple #5
0
        internal void EndProcess(EmotionalStatus emotionalStatus)
        {
            SaveEventData(new DistractionEventData()
            {
                EventType = DistractionEventType.SelectEndEmotionalStatus,
                Time      = DateTime.UtcNow,
                UserId    = _configuration.UserId,
                Data      = emotionalStatus.ToString(),
            });

            SaveEventData(new DistractionEventData()
            {
                EventType = DistractionEventType.EndSession,
                Time      = DateTime.UtcNow,
                UserId    = _configuration.UserId,
            });

            EndProcessSummaryPage endProcessSummaryPage = new EndProcessSummaryPage(_configuration, emotionalStatus, true);

            endProcessSummaryPage.StartAgainPressed += () => {
                //StartProcess();

                //ShowSelectFirstEmotionalStatusPage();

                _configuration.FirstEmoticons = "true";
                ShowSelectChallengeTypePage(null);
            };


            endProcessSummaryPage.ExitPressed += () => {
                System.Diagnostics.Process.GetCurrentProcess().Kill();
            };

            endProcessSummaryPage.Initialize();

            Device.BeginInvokeOnMainThread(() => { Xamarin.Forms.Application.Current.MainPage = endProcessSummaryPage; });

            currentPage = null;
        }