コード例 #1
0
        public TabbedViewValidationFlow()
        {
            _input = new IntroduceItemForm();

            var confirmView = new InformationalMessageFormView();

            confirmView.Message.Widget.AddClasses(Magics.CssClassPreserveNewlines);
            _msg = new InformationalMessageForm(confirmView);
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: todo-it/philadelphia
        private void OnReadyIAWApp()
        {
            var chooseActivity = new VerticalMenuForm <MenuItems>(
                "Demo choice",
                EnumExtensions.GetEnumValues <MenuItems>(),
                x => x.GetLabel(),
                lbl => new InputTypeButtonActionView(lbl),
                isCancellable: false);

            var inputName = new TextInputForm("Name", "What's your nickname?");

            var greetUser      = new InformationalMessageForm("", "Greetings!");
            var scanResultView = new InformationalMessageFormView(customActionBuilder: x => new AnchorBasedActionView(x));
            var scanResult     = new InformationalMessageForm(scanResultView, "", "Scan result");

            //quick hack for sake of demo
            var photoTakenResultView = new InformationalMessageFormView(customActionBuilder: x => new AnchorBasedActionView(x));

            photoTakenResultView.Message.Widget.RemoveAllChildren();
            var photoTakenResult = new InformationalMessageForm(photoTakenResultView, "", "Your photo");

            var scanCodeView = new QrScannerFormView();
            var performScan  = new QrScannerForm <string>(
                scanCodeView, "Scan QR code", "Any QR is fine", x => Task.FromResult(x));

            var takePhotoView = new PhotoTakerFormView();
            var takePhoto     = new PhotoTakerForm(takePhotoView);

            chooseActivity.Ended += (x, outcome) => {
                _renderer.ClearMaster();
                switch (outcome)
                {
                case CompletedOrCanceled.Completed:
                    switch (x.Chosen)
                    {
                    case MenuItems.DataInput:
                        _renderer.ReplaceMaster(inputName);
                        break;

                    case MenuItems.QrCodeScanner:
                        _renderer.ReplaceMaster(performScan);
                        break;

                    case MenuItems.PhotoTaker:
                        takePhoto.ClearImage();
                        _renderer.ReplaceMaster(takePhoto);
                        break;

                    default: throw new Exception("unsupported MenuItems");
                    }
                    break;
                }
            };

            inputName.Ended += async(x, outcome) => {
                switch (outcome)
                {
                case CompletedOrCanceled.Completed:
                    await greetUser.Init("Hi " + inputName.Introduced + "!");

                    _renderer.ReplaceMaster(greetUser);
                    break;

                case CompletedOrCanceled.Canceled:
                    _renderer.ReplaceMaster(chooseActivity);
                    break;
                }
            };

            greetUser.Ended += (x, _) => _renderer.ReplaceMaster(inputName);

            performScan.Ended += async(x, outcome) => {
                switch (outcome)
                {
                case CompletedOrCanceled.Completed:
                    await scanResult.Init("QR content: " + performScan.ScannedCode);

                    _renderer.AddPopup(scanResult);
                    break;

                case CompletedOrCanceled.Canceled:
                    _renderer.ReplaceMaster(chooseActivity);
                    break;
                }
            };
            scanResult.Ended += (x, _) => {
                _renderer.Remove(x);
                _renderer.ReplaceMaster(chooseActivity);
            };

            takePhoto.Ended += (x, outcome) => {
                switch (outcome)
                {
                case CompletedOrCanceled.Completed:
                    var img = new HTMLImageElement();
                    img.Style.MaxWidth  = "50vw";
                    img.Style.MaxHeight = "50vh";

                    var fr = new FileReader();
                    fr.OnLoad += _ => img.Src = (string)fr.Result;
                    fr.ReadAsDataURL(takePhoto.PhotoAsFile);

                    photoTakenResultView.Message.Widget.ReplaceChildren(new[] { img });
                    _renderer.AddPopup(photoTakenResult);
                    break;

                case CompletedOrCanceled.Canceled:
                    _renderer.ReplaceMaster(chooseActivity);
                    break;
                }
            };
            photoTakenResult.Ended += (x, _) => {
                _renderer.Remove(x);
                _renderer.ReplaceMaster(chooseActivity);
            };

            _renderer.ReplaceMaster(chooseActivity);
        }