Ejemplo n.º 1
0
        protected override void OnElementChanged(ElementChangedEventArgs <ExtendedDatePicker> e)
        {
            base.OnElementChanged(e);
            NoCaretField entry = new NoCaretField {
                BorderStyle = UITextBorderStyle.RoundedRect
            };

            entry.Started += new EventHandler(this.OnStarted);
            entry.Ended   += new EventHandler(this.OnEnded);
            this.picker    = new UIDatePicker {
                Mode     = UIDatePickerMode.Date,
                TimeZone = new NSTimeZone("UTC")
            };
            float     width     = UIScreen.MainScreen.Bounds.Width;
            UIToolbar uIToolbar = new UIToolbar(new RectangleF(0, 0, width, 44))
            {
                BarStyle    = UIBarStyle.Default,
                Translucent = true
            };
            UIBarButtonItem uIBarButtonItem  = new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace);
            UIBarButtonItem uIBarButtonItem2 = new UIBarButtonItem(UIBarButtonSystemItem.Done, delegate(object o, EventArgs a) {
                entry.ResignFirstResponder();
            });

            uIToolbar.SetItems(new UIBarButtonItem[] {
                uIBarButtonItem,
                uIBarButtonItem2
            }, false);

            if (Device.Idiom == TargetIdiom.Phone)
            {
                entry.InputView          = this.picker;
                entry.InputAccessoryView = uIToolbar;
            }
            else
            {
                entry.InputView          = new UIView(RectangleF.Empty);
                entry.InputAccessoryView = new UIView(RectangleF.Empty);
            }

            base.SetNativeControl(entry);
            this.UpdateDateFromModel(false);
            this.UpdateMaximumDate();
            this.UpdateMinimumDate();
            this.picker.ValueChanged += new EventHandler(this.HandleValueChanged);

            var view = (ExtendedDatePicker)Element;

            SetBorder(view);
        }
Ejemplo n.º 2
0
        //protected void HandleImageDownload()
        //{
        //    UIImage img = new UIImage();

        //    //var webClient = new WebClient();
        //    //webClient.DownloadDataCompleted += (s, e) =>
        //    //{
        //    //    var bytes = e.Result; // get the downloaded data
        //    //    string documentsPath = Path.GetTempPath(); //Environment.GetFolderPath(Environment.SpecialFolder.Personal);
        //    //    string localFilename = MREditName;
        //    //    string localPath = Path.Combine(documentsPath, localFilename);
        //    //    File.WriteAllBytes(localPath, bytes); // writes to local storage

        //    //    InvokeOnMainThread(() =>
        //    //    {
        //    //        if (!string.IsNullOrEmpty(localPath))
        //    //        {
        //    //            var imgView = new UIImageView(contentView.Bounds);
        //    //            imgView.Image = UIImage.FromFile(localPath);
        //    //            imgView.ContentMode = UIViewContentMode.ScaleAspectFit; // or ScaleAspectFill
        //    //            contentView.BackgroundColor = UIColor.FromPatternImage(img);
        //    //        }
        //    //    });
        //    //};
        //    //var url = new Uri(MREditPath); // Html home page
        //    //webClient.DownloadStringAsync(url);



        //    string fileIdentifier = "value to remember";
        //    string documentsPath = Path.GetTempPath();
        //    string localFilename = MREditName;
        //    string localFilePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), localFilename);
        //    WebClient webClient = new WebClient();
        //    webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(DownloadFileCompleted);
        //    webClient.QueryString.Add("file", fileIdentifier); // here you can add values
        //    //webClient.DownloadFileAsync(new Uri((string)MREditPath), localFilePath);
        //    webClient.DownloadFile(new Uri((string)MREditPath), MREditName);
        //}

        //private void DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
        //{
        //    string fileIdentifier = ((System.Net.WebClient)(sender)).QueryString["file"];
        //    // process with fileIdentifier

        //    UIImage img = new UIImage();
        //    string localFilePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), MREditName);
        //    img =  UIImage.FromFile(localFilePath);
        //    var imgView = new UIImageView(contentView.Bounds);
        //    imgView.Image = img;
        //    imgView.ContentMode = UIViewContentMode.ScaleAspectFit; // or ScaleAspectFill
        //    contentView.BackgroundColor = UIColor.FromPatternImage(img);
        //}



        public override void LoadView()
        {
            base.LoadView();

            // White view covering entire screen
            contentView = new UIView();
            //{
            //    BackgroundColor = UIColor.White
            //};
            if (!MREditing)
            {
                contentView.BackgroundColor = UIColor.White;
                filename = "Doctor-Notes" + "_" + doctorId + "-" + patientId + "_" + DateTime.Now.ToString("s").Replace(":", "_") + ".jpg";
            }



            //var img = UIImage.FromFile("dynapadscreenshot.png");
            //var imgView = new UIImageView(contentView.Bounds);
            //imgView.Image = img;
            //imgView.ContentMode = UIViewContentMode.ScaleAspectFit; // or ScaleAspectFill
            ////contentView.AddSubview(imgView);
            ////contentView.SendSubviewToBack(imgView);
            //contentView.BackgroundColor = UIColor.FromPatternImage(img);


            if (MREditing)
            {
                filename = MREditName + "_" + "edit" + "_" + DateTime.Now.ToString("s").Replace(":", "_") + ".jpg";
                //var img = UIImage.FromFile("dynapadscreenshot.png");
                UIImage img = new UIImage();

                //switch (MREditType)
                //{
                //    case "jpg":
                //    case "gif":
                //    case "png":
                //        img = FromUrl(MREditPath);
                //        break;
                //    case "pdf":
                //    case "doc":
                //    case "docx":
                //        var dps = new DynaPadService.DynaPadService();
                //        //img = dps.ConvertToJPG(CommonFunctions.GetUserConfig(), MREditPath);
                //        break;
                //    default:
                //        img = FromUrl(MREditPath);
                //        break;
                //}


                try
                {
                    loadingOverlay = new LoadingOverlay(contentView.Bounds);
                    contentView.Add(loadingOverlay);

                    ////string localPath = "";
                    var webClient = new WebClient();
                    //webClient.DownloadDataCompleted += (s, e) =>
                    //{
                    //    var bytes = e.Result; // get the downloaded data
                    //    string documentsPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal); //Path.GetTempPath(); //Environment.GetFolderPath(Environment.SpecialFolder.Personal);
                    //    string localFilename = MREditName;
                    //    string localPath = Path.Combine(documentsPath, localFilename);
                    //    File.WriteAllBytes(localPath, bytes); // writes to local storage

                    //    InvokeOnMainThread(() =>
                    //    {
                    //        if (!string.IsNullOrEmpty(localPath))
                    //        {
                    //            var imgView = new UIImageView(contentView.Bounds);
                    //            imgView.Image = UIImage.FromFile(localPath);
                    //            imgView.ContentMode = UIViewContentMode.ScaleAspectFit; // or ScaleAspectFill
                    //            contentView.BackgroundColor = UIColor.FromPatternImage(img);
                    //        }
                    //    });
                    //};
                    var url = new Uri(MREditPath);
                    // Html home page
                    ////webClient.DownloadStringAsync(url);
                    ////webClient.DownloadFileAsync(url, MREditName);
                    //webClient.DownloadFile(url, Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), MREditName));
                    ////HandleImageDownload();
                    //img = UIImage.FromFile(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), MREditName));
                    //var imgView2 = new UIImageView(contentView.Bounds);
                    //imgView2.Image = UIImage.FromFile(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), MREditName));
                    //imgView2.ContentMode = UIViewContentMode.ScaleAspectFit; // or ScaleAspectFill
                    //contentView.BackgroundColor = UIColor.White;
                    //contentView.BackgroundColor = UIColor.FromPatternImage(img);



                    var downloadPath = Path.Combine(Path.GetTempPath(), MREditName);

                    var bw = new BackgroundWorker();

                    // this allows our worker to report progress during work
                    bw.WorkerReportsProgress = true;

                    // what to do in the background thread
                    bw.DoWork += delegate(object o, DoWorkEventArgs argss)
                    {
                        var b = o as BackgroundWorker;

                        webClient.DownloadFile(url, downloadPath);
                    };

                    // what to do when worker completes its task (notify the user)
                    bw.RunWorkerCompleted += delegate
                    {
                        var imgPath = Path.Combine(Path.GetTempPath(), MREditName);
                        //NSData imageData = NSData.FromArray(UIImage.FromFile(downloadPath).AsJPEG(1).ToArray());
                        //img = UIImage.FromFile(downloadPath);
                        //img = UIImage.LoadFromData(imageData);
                        img = UIImage.LoadFromData(UIImage.FromFile(downloadPath).AsJPEG(0), 0);
                        var imgView = new UIImageView(contentView.Bounds);
                        imgView.Image       = UIImage.LoadFromData(UIImage.FromFile(downloadPath).AsJPEG());
                        imgView.ContentMode = UIViewContentMode.Center; // or ScaleAspectFill
                        //contentView.BackgroundColor = UIColor.White;
                        contentView.BackgroundColor = UIColor.FromPatternImage(img);
                    };

                    bw.RunWorkerAsync();



                    ////img = UIImage.FromFile("dynapadscreenshot.png");
                    ////img = UIImage.FromFile("telerikautocomplete.png");
                    ////img = UIImage.FromFile("dynapad_danestreet_screenshot.jpg");
                    ////img = UIImage.FromFile("Dane Street_COLOR.png");
                    ////img = UIImage.FromFile("John_Doe_True_sig_2017-05-09T10_59_08.gif");
                    ////img = UIImage.FromFile(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), MREditName));
                    ////var imgarray = UIImage.FromFile("John_Doe_True_sig_2017-05-09T10_59_08.gif").AsPNG();
                    ////var imgarray = UIImage.FromFile(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), MREditName)).AsPNG();
                    ////img = UIImage.LoadFromData(imgarray);
                    //var imgView = new UIImageView(contentView.Bounds);
                    //imgView.Image = img;
                    //imgView.ContentMode = UIViewContentMode.ScaleAspectFit; // or ScaleAspectFill
                    //contentView.BackgroundColor = UIColor.FromPatternImage(img);
                }
                catch (Exception ex)
                {
                    DismissViewController(true, null);
                    CommonFunctions.sendErrorEmail(ex);
                    PresentViewController(CommonFunctions.ExceptionAlertPrompt(), true, null);
                }
                finally
                {
                    loadingOverlay.Hide();
                }
            }



            View = contentView;


            // Vertical UIStackView offset from status bar
            CGRect rect = UIScreen.MainScreen.Bounds;

            rect.Y      += 20;
            rect.Height -= 20;

            UIStackView vertStackView = new UIStackView(rect)
            {
                Axis = UILayoutConstraintAxis.Vertical,
            };

            contentView.Add(vertStackView);

            // Horizontal UIStackView for tools
            UIStackView horzStackView = new UIStackView
            {
                Axis         = UILayoutConstraintAxis.Horizontal,
                Alignment    = UIStackViewAlignment.Center,
                Distribution = UIStackViewDistribution.EqualSpacing
            };

            vertStackView.AddArrangedSubview(horzStackView);

            // FingerPaintCanvasView for drawing
            FingerPaintCanvasView canvasView = new FingerPaintCanvasView();

            vertStackView.AddArrangedSubview(canvasView);

            // Add space at left to horizontal UIStackView
            horzStackView.AddArrangedSubview(new UILabel(new CGRect(0, 0, 10, 10)));

            // Construct UIPickerView for choosing color, but don't add it to any view
            PickerDataModel <UIColor> colorModel = new PickerDataModel <UIColor>
            {
                Items =
                {
                    new NamedValue <UIColor>("Red",       UIColor.Red),
                    new NamedValue <UIColor>("Green",     UIColor.Green),
                    new NamedValue <UIColor>("Blue",      UIColor.Blue),
                    //new NamedValue<UIColor>("Cyan", UIColor.Cyan),
                    //new NamedValue<UIColor>("Magenta", UIColor.Magenta),
                    new NamedValue <UIColor>("Yellow",    UIColor.Yellow),
                    new NamedValue <UIColor>("Black",     UIColor.Black),
                    //new NamedValue<UIColor>("Gray", UIColor.Gray),
                    new NamedValue <UIColor>("White",     UIColor.White),
                    new NamedValue <UIColor>("Highlight", UIColor.FromRGBA(255, 0, 255, 0.2f)),
                    new NamedValue <UIColor>("Clear",     new UIColor(0, 0))
                }
            };

            UIPickerView colorPicker = new UIPickerView
            {
                Model = colorModel
            };

            // Ditto for UIPickerView for stroke thickness
            PickerDataModel <float> thicknessModel = new PickerDataModel <float>
            {
                Items =
                {
                    new NamedValue <float>("Pen",       1),
                    new NamedValue <float>("Thin",      2),
                    new NamedValue <float>("Thinish",   5),
                    new NamedValue <float>("Medium",   10),
                    new NamedValue <float>("Thickish", 20),
                    new NamedValue <float>("Thick", 50)
                }
            };

            UIPickerView thicknessPicker = new UIPickerView
            {
                Model = thicknessModel
            };

            // Create UIToolbar for dismissing picker when it's displayed
            var toolbar = new UIToolbar(new CGRect(0, 0, UIScreen.MainScreen.Bounds.Width, 44))
            {
                BarStyle    = UIBarStyle.Default,
                Translucent = true
            };

            // Set Font to be used in tools
            UIFont font = UIFont.SystemFontOfSize(24);

            // Create a NoCaretField text field for invoking color picker & add to horizontal UIStackView
            //  (technique from Xamarin.Forms iOS PickerRenderer
            UITextField colorTextField = new NoCaretField
            {
                Text               = "Red",
                InputView          = colorPicker,
                InputAccessoryView = toolbar,
                Font               = font
            };

            horzStackView.AddArrangedSubview(colorTextField);

            // Use ValueChanged handler to change the color
            colorModel.ValueChanged += (sender, args) =>
            {
                colorTextField.Text    = colorModel.SelectedItem.Name;
                canvasView.StrokeColor = colorModel.SelectedItem.Value.CGColor;
            };

            // Ditto for the thickness
            UITextField thicknessTextField = new NoCaretField
            {
                Text               = "Pen",
                InputView          = thicknessPicker,
                InputAccessoryView = toolbar,
                Font               = font
            };

            horzStackView.AddArrangedSubview(thicknessTextField);

            thicknessModel.ValueChanged += (sender, args) =>
            {
                thicknessTextField.Text = thicknessModel.SelectedItem.Name;
                canvasView.StrokeWidth  = thicknessModel.SelectedItem.Value;
            };

            // Now add a Done button to the toolbar to rest text fields
            var spacer     = new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace);
            var doneButton = new UIBarButtonItem(UIBarButtonSystemItem.Done, (o, a) =>
            {
                colorTextField.ResignFirstResponder();
                thicknessTextField.ResignFirstResponder();
            });

            toolbar.SetItems(new[] { spacer, doneButton }, false);

            // Create the Clear button
            UIButton button = new UIButton(UIButtonType.RoundedRect)
            {
                Font = font
            };

            horzStackView.AddArrangedSubview(button);

            button.Layer.BorderColor  = UIColor.Black.CGColor;
            button.Layer.BorderWidth  = 1;
            button.Layer.CornerRadius = 10;
            button.SetTitle("Clear", UIControlState.Normal);
            button.SetTitleColor(UIColor.Black, UIControlState.Normal);

            button.TouchUpInside += (sender, args) =>
            {
                canvasView.Clear();
            };


            UIButton savebutton = new UIButton(UIButtonType.RoundedRect)
            {
                Font = font
            };

            horzStackView.AddArrangedSubview(savebutton);

            savebutton.Layer.BorderColor  = UIColor.Black.CGColor;
            savebutton.Layer.BorderWidth  = 1;
            savebutton.Layer.CornerRadius = 10;
            savebutton.SetTitle("Save", UIControlState.Normal);
            savebutton.SetTitleColor(UIColor.Black, UIControlState.Normal);

            savebutton.TouchUpInside += SaveButtonAction;


            UIButton closebutton = new UIButton(UIButtonType.RoundedRect)
            {
                Font = font
            };

            horzStackView.AddArrangedSubview(closebutton);

            closebutton.Layer.BorderColor  = UIColor.Black.CGColor;
            closebutton.Layer.BorderWidth  = 1;
            closebutton.Layer.CornerRadius = 10;
            closebutton.SetTitle("Close", UIControlState.Normal);
            closebutton.SetTitleColor(UIColor.Black, UIControlState.Normal);

            closebutton.TouchUpInside += (sender, args) =>
            {
                DismissViewController(true, null);
            };

            // Add space at right to horizontal UIStackView
            horzStackView.AddArrangedSubview(new UILabel(new CGRect(0, 0, 10, 10)));
        }
Ejemplo n.º 3
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();
            UIView contentView = new UIView()
            {
                BackgroundColor = UIColor.White
            };

            View = contentView;
            CGRect rect = UIScreen.MainScreen.Bounds;

            rect.Y      += 0;
            rect.Height -= 50;


            UIStackView vertStackView = new UIStackView(rect)
            {
                Axis = UILayoutConstraintAxis.Vertical
            };

            contentView.Add(vertStackView);

            UIStackView horizStackView = new UIStackView(rect)
            {
                Axis         = UILayoutConstraintAxis.Horizontal,
                Alignment    = UIStackViewAlignment.Center,
                Distribution = UIStackViewDistribution.EqualSpacing
            };

            vertStackView.AddArrangedSubview(horizStackView);
            CanvasView canvasView = new CanvasView();

            vertStackView.AddArrangedSubview(canvasView);
            horizStackView.AddArrangedSubview(new UILabel(new CGRect(0, 0, 10, 10)));

            PickerDataModel <UIColor> colorModel = new PickerDataModel <UIColor>
            {
                Items =
                {
                    new NamedValue <UIColor>("Rot",  UIColor.Red),
                    new NamedValue <UIColor>("Grün", UIColor.Green),
                    new NamedValue <UIColor>("Blau", UIColor.Blue),
                    new NamedValue <UIColor>("Gelb", UIColor.Yellow)
                }
            };

            UIPickerView colorPicker = new UIPickerView
            {
                Model = colorModel
            };

            PickerDataModel <float> thicknessModel = new PickerDataModel <float>
            {
                Items =
                {
                    new NamedValue <float>("Dünn",    2),
                    new NamedValue <float>("Medium", 10),
                    new NamedValue <float>("Dick",   20),
                    new NamedValue <float>("Fett", 50)
                }
            };

            UIPickerView thicknessPicker = new UIPickerView
            {
                Model = thicknessModel
            };

            var toolbar = new UIToolbar(new CGRect(0, 0, UIScreen.MainScreen.Bounds.Width, 45))
            {
                BarStyle    = UIBarStyle.BlackTranslucent,
                Translucent = true
            };

            UIFont font = UIFont.SystemFontOfSize(24);

            UITextField colorTextField = new NoCaretField
            {
                Text               = "Rot",
                InputView          = colorPicker,
                InputAccessoryView = toolbar,
                Font               = font
            };

            horizStackView.AddArrangedSubview(colorTextField);
            colorModel.ValueChanged += (sender, args) =>
            {
                colorTextField.Text    = colorModel.SelectedItem.Name;
                canvasView.StrokeColor = colorModel.SelectedItem.Value.CGColor;
            };

            UITextField thicknessTextField = new NoCaretField
            {
                Text               = "Dünn",
                InputView          = thicknessPicker,
                InputAccessoryView = toolbar,
                Font               = font
            };

            horizStackView.AddArrangedSubview(thicknessTextField);
            thicknessModel.ValueChanged += (sender, args) =>
            {
                thicknessTextField.Text = thicknessModel.SelectedItem.Name;
                canvasView.StrokeWidth  = thicknessModel.SelectedItem.Value;
            };

            var spacer     = new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace);
            var doneButton = new UIBarButtonItem(UIBarButtonSystemItem.Done, (sender, args) =>
            {
                colorTextField.ResignFirstResponder();
                thicknessTextField.ResignFirstResponder();
            });

            toolbar.SetItems(new[] { spacer, doneButton }, true);

            UIButton button = new UIButton(UIButtonType.RoundedRect)
            {
                Font = font
            };

            horizStackView.AddArrangedSubview(button);

            button.Layer.BorderColor  = UIColor.Blue.CGColor;
            button.Layer.BorderWidth  = 1;
            button.Layer.CornerRadius = 10;
            button.SetTitle("Clear", UIControlState.Normal);
            button.SetTitleColor(UIColor.Black, UIControlState.Normal);

            button.TouchUpInside += (sender, args) =>
            {
                canvasView.clear();
            };
        }
        public PickerTableViewCell(
            string labelName,
            nfloat?height = null)
            : base(UITableViewCellStyle.Default, nameof(PickerTableViewCell))
        {
            var descriptor = UIFontDescriptor.PreferredBody;
            var pointSize  = descriptor.PointSize;

            Label = new UILabel
            {
                Text = labelName,
                TranslatesAutoresizingMaskIntoConstraints = false,
                Font      = UIFont.FromDescriptor(descriptor, 0.8f * pointSize),
                TextColor = new UIColor(red: 0.47f, green: 0.47f, blue: 0.47f, alpha: 1.0f)
            };

            ContentView.Add(Label);

            TextField = new NoCaretField
            {
                BorderStyle = UITextBorderStyle.None,
                TranslatesAutoresizingMaskIntoConstraints = false,
                Font = UIFont.FromDescriptor(descriptor, pointSize)
            };

            var width   = (float)UIScreen.MainScreen.Bounds.Width;
            var toolbar = new UIToolbar(new RectangleF(0, 0, width, 44))
            {
                BarStyle    = UIBarStyle.Default,
                Translucent = true
            };
            var spacer     = new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace);
            var doneButton = new UIBarButtonItem(UIBarButtonSystemItem.Done, (o, a) =>
            {
                var s = (PickerSource)Picker.Model;
                if (s.SelectedIndex == -1 && Items != null && Items.Count > 0)
                {
                    UpdatePickerSelectedIndex(0);
                }
                TextField.Text = s.SelectedItem;
                TextField.ResignFirstResponder();
            });

            toolbar.SetItems(new[] { spacer, doneButton }, false);

            TextField.InputView          = Picker;
            TextField.InputAccessoryView = toolbar;

            ContentView.Add(TextField);

            ContentView.AddConstraints(new NSLayoutConstraint[] {
                NSLayoutConstraint.Create(TextField, NSLayoutAttribute.Leading, NSLayoutRelation.Equal, ContentView, NSLayoutAttribute.Leading, 1f, 15f),
                NSLayoutConstraint.Create(ContentView, NSLayoutAttribute.Trailing, NSLayoutRelation.Equal, TextField, NSLayoutAttribute.Trailing, 1f, 15f),
                NSLayoutConstraint.Create(ContentView, NSLayoutAttribute.Bottom, NSLayoutRelation.Equal, TextField, NSLayoutAttribute.Bottom, 1f, 10f),
                NSLayoutConstraint.Create(TextField, NSLayoutAttribute.Top, NSLayoutRelation.Equal, Label, NSLayoutAttribute.Bottom, 1f, 10f),
                NSLayoutConstraint.Create(Label, NSLayoutAttribute.Leading, NSLayoutRelation.Equal, ContentView, NSLayoutAttribute.Leading, 1f, 15f),
                NSLayoutConstraint.Create(Label, NSLayoutAttribute.Top, NSLayoutRelation.Equal, ContentView, NSLayoutAttribute.Top, 1f, 10f),
                NSLayoutConstraint.Create(ContentView, NSLayoutAttribute.Trailing, NSLayoutRelation.Equal, Label, NSLayoutAttribute.Trailing, 1f, 15f)
            });

            if (height.HasValue)
            {
                ContentView.AddConstraint(
                    NSLayoutConstraint.Create(TextField, NSLayoutAttribute.Height, NSLayoutRelation.Equal, null, NSLayoutAttribute.NoAttribute, 1f, height.Value));
            }

            Picker.Model = new PickerSource(this);
        }
Ejemplo n.º 5
0
        public override void LoadView()
        {
            base.LoadView();

            // White view covering entire screen
            UIView contentView = new UIView()
            {
                BackgroundColor = UIColor.White
            };

            View = contentView;

            // Vertical UIStackView offset from status bar
            CGRect rect = UIScreen.MainScreen.Bounds;

            rect.Y      += 20;
            rect.Height -= 20;

            UIStackView vertStackView = new UIStackView(rect)
            {
                Axis = UILayoutConstraintAxis.Vertical,
            };

            contentView.Add(vertStackView);

            // Horizontal UIStackView for tools
            UIStackView horzStackView = new UIStackView
            {
                Axis         = UILayoutConstraintAxis.Horizontal,
                Alignment    = UIStackViewAlignment.Center,
                Distribution = UIStackViewDistribution.EqualSpacing
            };

            vertStackView.AddArrangedSubview(horzStackView);

            // FingerPaintCanvasView for drawing
            FingerPaintCanvasView canvasView = new FingerPaintCanvasView();

            vertStackView.AddArrangedSubview(canvasView);

            // Add space at left to horizontal UIStackView
            horzStackView.AddArrangedSubview(new UILabel(new CGRect(0, 0, 10, 10)));

            // Construct UIPickerView for choosing color, but don't add it to any view
            PickerDataModel <UIColor> colorModel = new PickerDataModel <UIColor>
            {
                Items =
                {
                    new NamedValue <UIColor>("Red",     UIColor.Red),
                    new NamedValue <UIColor>("Green",   UIColor.Green),
                    new NamedValue <UIColor>("Blue",    UIColor.Blue),
                    new NamedValue <UIColor>("Cyan",    UIColor.Cyan),
                    new NamedValue <UIColor>("Magenta", UIColor.Magenta),
                    new NamedValue <UIColor>("Yellow",  UIColor.Yellow),
                    new NamedValue <UIColor>("Black",   UIColor.Black),
                    new NamedValue <UIColor>("Gray",    UIColor.Gray),
                    new NamedValue <UIColor>("White",   UIColor.White)
                }
            };

            UIPickerView colorPicker = new UIPickerView
            {
                Model = colorModel
            };

            // Ditto for UIPickerView for stroke thickness
            PickerDataModel <float> thicknessModel = new PickerDataModel <float>
            {
                Items =
                {
                    new NamedValue <float>("Thin",      2),
                    new NamedValue <float>("Thinish",   5),
                    new NamedValue <float>("Medium",   10),
                    new NamedValue <float>("Thickish", 20),
                    new NamedValue <float>("Thick", 50)
                }
            };

            UIPickerView thicknessPicker = new UIPickerView
            {
                Model = thicknessModel
            };

            // Create UIToolbar for dismissing picker when it's displayed
            var toolbar = new UIToolbar(new CGRect(0, 0, UIScreen.MainScreen.Bounds.Width, 44))
            {
                BarStyle    = UIBarStyle.Default,
                Translucent = true
            };

            // Set Font to be used in tools
            UIFont font = UIFont.SystemFontOfSize(24);

            // Create a NoCaretField text field for invoking color picker & add to horizontal UIStackView
            //  (technique from Xamarin.Forms iOS PickerRenderer
            UITextField colorTextField = new NoCaretField
            {
                Text               = "Red",
                InputView          = colorPicker,
                InputAccessoryView = toolbar,
                Font               = font
            };

            horzStackView.AddArrangedSubview(colorTextField);

            // Use ValueChanged handler to change the color
            colorModel.ValueChanged += (sender, args) =>
            {
                colorTextField.Text    = colorModel.SelectedItem.Name;
                canvasView.StrokeColor = colorModel.SelectedItem.Value.CGColor;
            };

            // Ditto for the thickness
            UITextField thicknessTextField = new NoCaretField
            {
                Text               = "Thin",
                InputView          = thicknessPicker,
                InputAccessoryView = toolbar,
                Font               = font
            };

            horzStackView.AddArrangedSubview(thicknessTextField);

            thicknessModel.ValueChanged += (sender, args) =>
            {
                thicknessTextField.Text = thicknessModel.SelectedItem.Name;
                canvasView.StrokeWidth  = thicknessModel.SelectedItem.Value;
            };

            // Now add a Done button to the toolbar to rest text fields
            var spacer     = new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace);
            var doneButton = new UIBarButtonItem(UIBarButtonSystemItem.Done, (o, a) =>
            {
                colorTextField.ResignFirstResponder();
                thicknessTextField.ResignFirstResponder();
            });

            toolbar.SetItems(new[] { spacer, doneButton }, false);

            // Create the Clear button
            UIButton button = new UIButton(UIButtonType.RoundedRect)
            {
                Font = font
            };

            horzStackView.AddArrangedSubview(button);

            button.Layer.BorderColor  = UIColor.Black.CGColor;
            button.Layer.BorderWidth  = 1;
            button.Layer.CornerRadius = 10;
            button.SetTitle("Clear", UIControlState.Normal);
            button.SetTitleColor(UIColor.Black, UIControlState.Normal);

            button.TouchUpInside += (sender, args) =>
            {
                canvasView.Clear();
            };

            // Add space at right to horizontal UIStackView
            horzStackView.AddArrangedSubview(new UILabel(new CGRect(0, 0, 10, 10)));
        }
        protected override void OnElementChanged(ElementChangedEventArgs <ExtendedDatePicker> e)
        {
            base.OnElementChanged(e);

            if (e.NewElement == null)
            {
                return;
            }

            if (Control == null)
            {
                var entry = new NoCaretField {
                    BorderStyle = UITextBorderStyle.RoundedRect
                };
                entry.EditingDidBegin += OnStarted;
                entry.EditingDidEnd   += OnEnded;

                _picker = new UIDatePicker
                {
                    Mode     = UIDatePickerMode.Date,
                    TimeZone = new NSTimeZone("UTC")
                };
                _picker.ValueChanged += HandleValueChanged;

                var uiToolbar = new UIToolbar(new CGRect(0, 0, UIScreen.MainScreen.Bounds.Width, 44))
                {
                    BarStyle    = UIBarStyle.Default,
                    Translucent = true
                };

                var clearButton = new UIBarButtonItem(UIBarButtonSystemItem.Trash, (o, a) =>
                {
                    //Clear the date.
                    Element.SelectedDate = null;
                    Element.UpdateDate();
                    SetText(false);

                    entry.ResignFirstResponder();
                });
                clearButton.Title = "Clear";

                var space        = new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace);
                var cancelButton = new UIBarButtonItem(UIBarButtonSystemItem.Cancel, (o, a) =>
                {
                    entry.ResignFirstResponder();
                });
                var doneButton = new UIBarButtonItem(UIBarButtonSystemItem.Done, (o, a) =>
                {
                    //Set the date.
                    Element.SelectedDate = _picker.Date.ToDateTime();
                    Element.UpdateDate();
                    SetText(false);

                    entry.ResignFirstResponder();
                });

                uiToolbar.SetItems(new[] { clearButton, space, cancelButton, doneButton }, false);

                entry.InputView                                  = _picker;
                entry.InputAccessoryView                         = uiToolbar;
                entry.InputView.AutoresizingMask                 = UIViewAutoresizing.FlexibleHeight;
                entry.InputAccessoryView.AutoresizingMask        = UIViewAutoresizing.FlexibleHeight;
                entry.InputAssistantItem.LeadingBarButtonGroups  = null;
                entry.InputAssistantItem.TrailingBarButtonGroups = null;

                _defaultTextColor         = entry.TextColor;
                _useLegacyColorManagement = e.NewElement.UseLegacyColorManagement <DatePicker>();
                SetNativeControl(entry);
            }

            SetText(false);
            UpdateFont();
            UpdateMaximumDate();
            UpdateMinimumDate();
            UpdateTextColor();
            UpdateFlowDirection();
            UpdatePlaceholder();
        }