示例#1
0
        public override void Run(Window window)
        {
            Conformant conformant = new Conformant(window);

            conformant.Show();

            Background bg = new Background(window);

            bg.Color = Color.Black;
            bg.Show();
            conformant.SetContent(bg);

            DateTimeSelector dateTime = new DateTimeSelector(window)
            {
                DateTime = DateTime.Today,
                Style    = "time_layout",
                Format   = "%I:%M %p"
            };

            dateTime.Geometry = new Rect(0, 0, window.ScreenSize.Width, window.ScreenSize.Height);
            dateTime.Show();

            dateTime.DateTimeChanged += (object sender, DateChangedEventArgs e) =>
            {
                Log.Debug($"Old DateTime={e.OldDate}");
                Log.Debug($"New DateTime={e.NewDate}");
                Log.Debug($"Current DateTime={dateTime.DateTime}");
            };
        }
示例#2
0
        public void Should_Use_Custom_Boundaries_for_DateTime_Value_Injection()
        {
            //Create an instance of our test class
            var testInstance = new DateTimeTestClass();

            var dateTimeMax = DateTime.UtcNow.AddYears(1);
            var dateTimeMin = DateTime.UtcNow.AddYears(-1);

            //Create an instance of our IntSelector and set some custom bounds
            var selector =
                new DateTimeSelector().SetMax(() => Faker.Generators.DateTimes.GetDateTime(dateTimeMax, dateTimeMax))
                .SetMin(() => Faker.Generators.DateTimes.GetDateTime(dateTimeMin, dateTimeMin));

            //Iterate over the test object's properties
            foreach (var property in testInstance.GetType().GetProperties())
            {
                Assert.IsTrue(selector.CanBind(property),
                              string.Format("should have been able to bind to property {0}", property.Name));

                //Inject the value into this property on our test instance class
                selector.Generate(testInstance, property);

                //Get the value out of the property
                var fieldValue = (DateTime)property.GetValue(testInstance, null);
                Assert.IsNotNull(fieldValue);
                Assert.AreNotEqual(fieldValue, default(DateTime));
                Assert.IsTrue(fieldValue <= dateTimeMax && fieldValue >= dateTimeMin, "Custom range should have worked");
            }
        }
示例#3
0
        public void Should_Use_Custom_Boundaries_for_DateTime_Value_Injection()
        {
            //Create an instance of our test class
            var testInstance = new DateTimeTestClass();

            var dateTimeMax = DateTime.UtcNow.AddYears(1);
            var dateTimeMin = DateTime.UtcNow.AddYears(-1);

            //Create an instance of our IntSelector and set some custom bounds
            var selector =
                new DateTimeSelector().SetMax(() => Faker.Generators.DateTimes.GetDateTime(dateTimeMax, dateTimeMax))
                                 .SetMin(() => Faker.Generators.DateTimes.GetDateTime(dateTimeMin, dateTimeMin));

            //Iterate over the test object's properties
            foreach (var property in testInstance.GetType().GetProperties())
            {
                Assert.IsTrue(selector.CanBind(property),
                              string.Format("should have been able to bind to property {0}", property.Name));

                //Inject the value into this property on our test instance class
                selector.Generate(testInstance, property);

                //Get the value out of the property
                var fieldValue = (DateTime)property.GetValue(testInstance, null);
                Assert.IsNotNull(fieldValue);
                Assert.AreNotEqual(fieldValue, default(DateTime));
                Assert.IsTrue(fieldValue <= dateTimeMax && fieldValue >= dateTimeMin, "Custom range should have worked");
            }
        }
示例#4
0
        public override void Run(Window window)
        {
            Conformant conformant = new Conformant(window);

            conformant.Show();

            Background bg = new Background(window);

            bg.Color = Color.Black;
            bg.Show();
            conformant.SetContent(bg);

            DateTimeSelector dateTime = new DateTimeSelector(window)
            {
                MinimumDateTime = new DateTime(2015, 1, 1),
                MaximumDateTime = DateTime.Now,
                DateTime        = DateTime.Now
            };

            dateTime.Geometry = new Rect(0, 0, window.ScreenSize.Width, window.ScreenSize.Height);
            dateTime.Show();

            dateTime.DateTimeChanged += (object sender, DateChangedEventArgs e) =>
            {
                Log.Debug($"Old DateTime={e.OldDate}");
                Log.Debug($"New DateTime={e.NewDate}");
                Log.Debug($"Current DateTime={dateTime.DateTime}");
            };

            Button btn_left = new Button(window)
            {
                Style    = "popup/circle/left",
                Text     = "Left",
                Geometry = new Rect(0, 0, 64, 360)
            };

            btn_left.Show();

            Button btn_right = new Button(window)
            {
                Style    = "popup/circle/right",
                Text     = "Right",
                Geometry = new Rect(window.ScreenSize.Width - 64, 0, 64, 360)
            };

            btn_right.Show();

            btn_left.Clicked += (s, e) =>
            {
                dateTime.DateTime -= new TimeSpan(1, 0, 0, 0, 0);
            };

            btn_right.Clicked += (s, e) =>
            {
                dateTime.DateTime += new TimeSpan(1, 0, 0, 0, 0);
            };
        }
示例#5
0
        /// <summary>
        /// Creates time picker in dialog window.
        /// </summary>
        public void InitializeTimePicker(TimeSpan time, string format)
        {
            var timePicker = new TimePicker(this)
            {
                Time           = time,
                DateTimeFormat = format
            };

            Content = DateTimePicker = timePicker;
        }
示例#6
0
        /// <summary>
        /// Creates date picker in dialog window.
        /// </summary>
        public void InitializeDatePicker(DateTime date, DateTime minimumDate, DateTime maximumDate)
        {
            var datePicker = new DatePicker(this)
            {
                Date        = date,
                MinimumDate = minimumDate,
                MaximumDate = maximumDate
            };

            Content = DateTimePicker = datePicker;
        }
示例#7
0
        public override void Run(Window window)
        {
            Background bg = new Background(window);

            bg.Color = Color.Gray;
            bg.Move(0, 0);
            bg.Resize(window.ScreenSize.Width, window.ScreenSize.Height);
            bg.Show();

            DateTimeSelector dateTime = new DateTimeSelector(window)
            {
                MinimumDateTime = new DateTime(2015, 1, 1),
                MaximumDateTime = DateTime.Now,
                DateTime        = DateTime.Now
            };

            Label label1 = new Label(window);

            Label label2 = new Label(window);

            Label label3 = new Label(window)
            {
                Text = string.Format("Current DateTime={0}", dateTime.DateTime),
            };

            dateTime.DateTimeChanged += (object sender, DateChangedEventArgs e) =>
            {
                label1.Text = string.Format("Old DateTime={0}", e.OldDate);
                label2.Text = string.Format("New DateTime={0}", e.NewDate);
                label3.Text = string.Format("Current DateTime={0}", dateTime.DateTime);
            };

            dateTime.Resize(720, 600);
            dateTime.Move(0, 300);
            dateTime.Show();

            label1.Resize(600, 100);
            label1.Move(0, 0);
            label1.Show();

            label2.Resize(600, 100);
            label2.Move(0, 100);
            label2.Show();

            label3.Resize(600, 100);
            label3.Move(0, 200);
            label3.Show();
        }
示例#8
0
        public override void Run(Window window)
        {
            Background bg = new Background(window);

            bg.Color = Color.Gray;
            bg.Move(0, 0);
            bg.Resize(window.ScreenSize.Width, window.ScreenSize.Height);
            bg.Show();

            DateTimeSelector dateTime = new DateTimeSelector(window)
            {
                DateTime = DateTime.Today,
                Style    = "time_layout",
                Format   = "%d/%b/%Y %I:%M %p"
            };

            Label label1 = new Label(window);

            Label label2 = new Label(window);

            Label label3 = new Label(window)
            {
                Text = string.Format("Current DateTime={0}", dateTime.DateTime),
            };

            dateTime.DateTimeChanged += (object sender, DateChangedEventArgs e) =>
            {
                label1.Text = string.Format("Old DateTime={0}", e.OldDate);
                label2.Text = string.Format("New DateTime={0}", e.NewDate);
                label3.Text = string.Format("Current DateTime={0}", dateTime.DateTime);
            };

            dateTime.Resize(720, 600);
            dateTime.Move(0, 300);
            dateTime.Show();

            label1.Resize(600, 100);
            label1.Move(0, 0);
            label1.Show();

            label2.Resize(600, 100);
            label2.Move(0, 100);
            label2.Show();

            label3.Resize(600, 100);
            label3.Move(0, 200);
            label3.Show();
        }
示例#9
0
        public void DateTime_Selector_Injects_All_DateTime_Values()
        {
            var dateTimeSelector  = new DateTimeSelector();
            var dateTimeTestClass = new DateTimeTestClass();

            //Iterate over all of the properties in the fullNameClass object...
            foreach (var property in dateTimeTestClass.GetType().GetProperties())
            {
                //Inject the value into the property
                dateTimeSelector.Generate(dateTimeTestClass, property);
            }

            //Iterate over all of the properties again
            foreach (var property in dateTimeTestClass.GetType().GetProperties())
            {
                var fieldValue = (DateTime)property.GetValue(dateTimeTestClass, null);

                Assert.IsAssignableFrom <DateTime>(fieldValue, "Should be type of DateTime...");
                Assert.AreNotEqual(fieldValue, default(DateTime));
            }
        }
示例#10
0
        public void DateTime_Selector_Injects_All_DateTime_Values()
        {
            var dateTimeSelector = new DateTimeSelector();
            var dateTimeTestClass = new DateTimeTestClass();

            //Iterate over all of the properties in the fullNameClass object...
            foreach (var property in dateTimeTestClass.GetType().GetProperties())
            {
                //Inject the value into the property
                dateTimeSelector.Generate(dateTimeTestClass, property);
            }

            //Iterate over all of the properties again
            foreach (var property in dateTimeTestClass.GetType().GetProperties())
            {
                var fieldValue = (DateTime)property.GetValue(dateTimeTestClass, null);

                Assert.IsAssignableFrom<DateTime>(fieldValue, "Should be type of DateTime...");
                Assert.AreNotEqual(fieldValue, default(DateTime));
            }
        }
示例#11
0
 public DateTimeSelectorAssert(DateTimeSelector dateTimeSelector) : base(dateTimeSelector)
 {
     DateTimeSelector = dateTimeSelector;
 }
示例#12
0
        public override void Run(Window window)
        {
            Conformant conformant = new Conformant(window);

            conformant.Show();
            Box box = new Box(window);

            box.Show();
            Button btn = new Button(window)
            {
                AlignmentX = -1,
                WeightX    = 1,
                Text       = "Open"
            };

            btn.Show();

            Popup            popup    = new Popup(window);
            DateTimeSelector dateTime = new DateTimeSelector(window)
            {
                MinimumDateTime = new DateTime(2015, 1, 1),
                MaximumDateTime = DateTime.Now,
                DateTime        = DateTime.Now
            };

            popup.SetPartContent("default", dateTime, true);

            popup.Dismissed += (s, e) =>
            {
                Console.WriteLine("Popup dismissed");
            };

            popup.ShowAnimationFinished += (s, e) =>
            {
                Console.WriteLine("Popup show animation finished");
            };

            popup.OutsideClicked += (s, e) =>
            {
                Console.WriteLine("Popup outside clicked");
            };

            popup.TimedOut += (s, e) =>
            {
                Console.WriteLine("Popup time out");
            };

            popup.BackButtonPressed += (s, e) =>
            {
                Console.WriteLine("!!! BackButtonPressed Event on Popup!!");
                popup.Hide();
            };

            btn.Clicked += (s, e) =>
            {
                popup.Show();
            };

            Button close = new Button(popup)
            {
                Text = "Close"
            };

            popup.SetPartContent("button1", close, true);

            Button ok = new Button(popup)
            {
                Text = "Ok"
            };

            popup.SetPartContent("button3", ok, true);

            close.Clicked += (s, e) =>
            {
                popup.Hide();
            };

            box.PackEnd(btn);
            conformant.SetContent(box);
        }
示例#13
0
        public override void Run(Window window)
        {
            Conformant conformant = new Conformant(window);

            conformant.Show();
            Box box = new Box(window);

            box.Show();
            Button btn = new Button(window)
            {
                AlignmentX = -1,
                WeightX    = 1,
                Text       = "Open"
            };

            btn.Show();

            Button btn2 = new Button(window)
            {
                AlignmentX = -1,
                WeightX    = 1,
                Text       = "set now"
            };

            btn2.Show();

            Popup            popup    = new Popup(window);
            DateTimeSelector dateTime = new DateTimeSelector(window)
            {
                Style    = "time_layout",
                Format   = "%d/%b/%Y %I:%M %p",
                DateTime = DateTime.Now
            };

            popup.SetPartContent("default", dateTime, true);

            btn.Clicked += (s, e) =>
            {
                popup.Show();
            };

            btn2.Clicked += (s, e) =>
            {
                btn.Text          = DateTime.Now.ToString("t");
                dateTime.DateTime = DateTime.Now;
            };

            Button close = new Button(popup)
            {
                Text = "Close"
            };

            popup.SetPartContent("button1", close, true);

            Button ok = new Button(popup)
            {
                Text = "Ok"
            };

            popup.SetPartContent("button3", ok, true);

            ok.Clicked += (s, e) =>
            {
                btn.Text = dateTime.DateTime.ToString("t");
                popup.Hide();
            };

            close.Clicked += (s, e) =>
            {
                popup.Hide();
            };

            box.PackEnd(btn);
            box.PackEnd(btn2);

            conformant.SetContent(box);
        }
示例#14
0
        public CreateRouteActivity() : base(Resource.Layout.create_route_layout)
        {
            OnLoaded += delegate
            {
                AllowBackNavigation();

                var intent = Intent;

                departureTimeSelector = FindViewById <DateTimeSelector>(Resource.Id.depature_date_picker);
                arrivalTimeSelector   = FindViewById <DateTimeSelector>(Resource.Id.arrival_date_picker);

                if (intent.HasExtra("route"))
                {
                    routeInfo = JsonConvert.DeserializeObject <RouteInfo>(intent.GetStringExtra("route"));
                    departureTimeSelector.Date = routeInfo.DepartureTime;
                    arrivalTimeSelector.Date   = routeInfo.ArrivalTime;
                }

                bus = JsonConvert.DeserializeObject <BusInfo>(intent.GetStringExtra("bus"));

                //  Are we editing the route
                var isEdit = intent.GetBooleanExtra("edit", false);


                var btnSubmit = FindViewById <Button>(Resource.Id.btn_submit);
                btnSubmit.Text         = isEdit ? "Save Changes" : "Add Route";
                SupportActionBar.Title = isEdit ? "Edit Route" : "Add Route";

                var handler = new InputHandler();
                handler.SetBindings(new InputBinding[]
                {
                    new InputBinding("From", Resource.Id.tb_from, true)
                    {
                        OnBind = (view) => ((TextInputLayout)view).EditText.Text = routeInfo?.From
                    },
                    new InputBinding("Destination", Resource.Id.tb_destination, true)
                    {
                        OnBind = (view) => ((TextInputLayout)view).EditText.Text = routeInfo?.Destination
                    },
                    new InputBinding("Cost", Resource.Id.tb_cost, true, min: 1, max: 999999, compare: null)
                    {
                        OnBind = (view) => ((TextInputLayout)view).EditText.Text = routeInfo?.Cost.ToString()
                    },
                }, FindViewById <ViewGroup>(global::Android.Resource.Id.Content));

                bool ValidateInputs()
                {
                    if (handler.ValidateInputs(true).Count != 0)
                    {
                        return(false);
                    }

                    //  Validate departure and arrival dates
                    if (departureTimeSelector.Date == null)
                    {
                        Toast.MakeText(this, "Please select departure time!", ToastLength.Short).Show();
                        return(false);
                    }

                    if (arrivalTimeSelector.Date == null)
                    {
                        Toast.MakeText(this, "Please select arrival time!", ToastLength.Short).Show();
                        return(false);
                    }

                    if (departureTimeSelector.Date >= arrivalTimeSelector.Date)
                    {
                        Toast.MakeText(this, "Departure time cannot be greater or the same as the arrival time!", ToastLength.Short).Show();
                        return(false);
                    }

                    return(true);
                }

                btnSubmit.Click += async(s, e) =>
                {
                    if (ValidateInputs())
                    {
                        var proxy      = ProxyFactory.GetProxyInstace();
                        var formInputs = handler.GetInputs();
                        if (isEdit)
                        {
                            //  Update
                            var editRoute = new EditRouteInfo();

                            if (routeInfo.From != formInputs["From"])
                            {
                                editRoute.From = formInputs["From"];
                            }

                            if (routeInfo.Destination != formInputs["Destination"])
                            {
                                editRoute.Destination = formInputs["Destination"];
                            }

                            if (double.TryParse(formInputs["Cost"], out var cost) && routeInfo.Cost != cost)
                            {
                                editRoute.Cost = cost;
                            }

                            if (departureTimeSelector.Date != routeInfo.DepartureTime)
                            {
                                editRoute.DepartureTime = departureTimeSelector.Date;
                            }

                            if (arrivalTimeSelector.Date != routeInfo.ArrivalTime)
                            {
                                editRoute.ArrivalTime = arrivalTimeSelector.Date;
                            }

                            if (editRoute.AnyUpdate())
                            {
                                var response = await proxy.ExecuteAsync(API.Endpoints.RoutesEndpoints.UpdateRoute(routeInfo.Id, editRoute));

                                if (response.Successful)
                                {
                                    var bundle = new Intent();
                                    bundle.PutExtra("action", "edit");
                                    SetResult(Result.Ok, bundle);
                                    Finish();
                                }
                                else
                                {
                                    Toast.MakeText(this, response.GetErrorDescription(), ToastLength.Short).Show();
                                }
                            }
                        }
                        else
                        {
                            //  Add new route
                            var response = await proxy.ExecuteAsync(API.Endpoints.RoutesEndpoints.CreateRoute(bus.Id, new CreateRouteInfo()
                            {
                                From          = formInputs["From"],
                                Destination   = formInputs["Destination"],
                                Cost          = double.Parse(formInputs["Cost"]),
                                DepartureTime = departureTimeSelector.Date.Value,
                                ArrivalTime   = arrivalTimeSelector.Date.Value,
                                Comments      = ""
                            }));

                            if (response.Successful)
                            {
                                var bundle = new Intent();
                                bundle.PutExtra("action", "create");
                                SetResult(Result.Ok, bundle);
                                Finish();
                            }
                            else
                            {
                                Toast.MakeText(this, response.GetErrorDescription(), ToastLength.Short).Show();
                            }
                        }
                    }
                };
            };
        }
示例#15
0
 void ApplyDateTimePicker(DateTimeSelector dateTimePicker)
 {
     _dateTimePicker = dateTimePicker;
     Content         = _dateTimePicker;
 }