private void InfoEntryTextChanged(EntryCell entry, OrderParameterType paramType, OrderParameter param, Picker infoPicker) { param.Value = entry.Text; if (infoData.ContainsKey (paramType.InfoType)) { Dictionary<string,InfoData> data = infoData [paramType.InfoType]; if(data.Count > 0) { Task.Factory.StartNew(() => { int i = 0; foreach(string value in data.Keys){ if(entry.Text == data[value].NexusId.ToString()){ if(infoPicker.Items.Count > i){ Device.BeginInvokeOnMainThread(() => { infoPicker.SelectedIndex = i; infoPicker.Title = data[value].ToString(); }); } break; } i += 1; } }); } else { Device.BeginInvokeOnMainThread(() => { infoPicker.Title = param.Value; }); } } else { Device.BeginInvokeOnMainThread(() => { infoPicker.Title = param.Value; }); } }
private void AddStringParam(OrderParameterType paramType, OrderParameter param) { EntryCell entry = new EntryCell { Label = paramType.Name, Text = param.Value }; entry.PropertyChanged += (object sender, System.ComponentModel.PropertyChangedEventArgs e) => { if(e.PropertyName == "Text"){ param.Value = entry.Text; } }; LastSection.Add (entry); }
private void AddInfoParam(OrderParameterType paramType, OrderParameter param) { if (paramType.InfoType == 0) { AddIntegerParam (paramType, param); return; } string displayValue = string.IsNullOrWhiteSpace (param.DisplayValue) ? "Select " + paramType.Name : param.DisplayValue; Picker infoPicker = new Picker { Title = displayValue, VerticalOptions = LayoutOptions.Center, HorizontalOptions = LayoutOptions.Center, BackgroundColor = Color.Silver }; EntryCell entry = new EntryCell { Text = param.Value, Label = paramType.Name }; if (string.IsNullOrWhiteSpace (param.Value)) { entry.Placeholder = paramType.DataType.ToString(); } if (paramType.DataType != OrderType.DataTypes.String) { entry.Keyboard = Keyboard.Numeric; } // entry.Completed += (sender, e) => { // InfoEntryTextChanged(entry,paramType,param,infoPicker); // }; entry.PropertyChanged += (object sender, System.ComponentModel.PropertyChangedEventArgs e) => { if(e.PropertyName == "Text"){ InfoEntryTextChanged(entry,paramType,param,infoPicker); } }; LastSection.Add (entry); LastSection.Add (new ViewCell { View = infoPicker }); if (infoData.ContainsKey (paramType.InfoType)) { Task.Factory.StartNew (() => { Dictionary<string,InfoData> data = infoData [paramType.InfoType]; if (data.Count > 0) { int i = 0; foreach (string value in data.Keys) { infoPicker.Items.Add (value.ToString()); if (param.Value != null && param.Value == data[value].ToString()) { Device.BeginInvokeOnMainThread(() => { infoPicker.SelectedIndex = i; }); } i += 1; } } }); } else { Phoenix.Application.InfoManager.GetInfoDataByGroupId (paramType.InfoType, (results) => { Dictionary<string,InfoData> data = new Dictionary<string,InfoData>(); int i = 0; foreach(InfoData info in results){ if(!data.ContainsKey(info.ToString())){ data.Add(info.ToString(),info); Device.BeginInvokeOnMainThread(() => { infoPicker.Items.Add(info.ToString()); if (param.Value != null && param.Value == info.NexusId.ToString()) { infoPicker.SelectedIndex = i; } }); i += 1; } } infoData.Add(paramType.InfoType,data); if(data.Count < 1){ Device.BeginInvokeOnMainThread(() => { infoPicker.IsEnabled = false; infoPicker.IsVisible = false; }); } }); } infoPicker.Unfocused += (sender, e) => { if(infoPicker.SelectedIndex > 0){ if (infoData.ContainsKey (paramType.InfoType)) { Dictionary<string,InfoData> data = infoData [paramType.InfoType]; string value = infoPicker.Items[infoPicker.SelectedIndex]; if(data.ContainsKey(value)){ param.Value = data[value].NexusId.ToString(); param.DisplayValue = data[value].ToString(); Device.BeginInvokeOnMainThread(() => { entry.Text = data[value].NexusId.ToString(); }); } } } }; }
private void AddParameter(OrderParameterType paramType, OrderParameter param = null) { if (param == null) { param = new OrderParameter (); switch (paramType.DataType) { case OrderType.DataTypes.Integer: param.Value = "0"; break; case OrderType.DataTypes.Boolean: param.Value = "False"; break; case OrderType.DataTypes.String: param.Value = ""; break; default: param.Value = ""; break; } CurrentOrder.Parameters.Add (param); } if (paramType.InfoType > 0) { AddInfoParam (paramType, param); return; } switch (paramType.DataType) { case OrderType.DataTypes.Integer: AddIntegerParam (paramType, param); break; case OrderType.DataTypes.String: AddStringParam (paramType, param); break; case OrderType.DataTypes.Boolean: AddBooleanParam (paramType, param); break; default: AddIntegerParam (paramType, param); break; } }
private void AddBooleanParam(OrderParameterType paramType, OrderParameter param) { SwitchCell switchCell = new SwitchCell { Text = paramType.Name, On = param.Value == "True" }; switchCell.OnChanged += (sender, e) => { param.Value = switchCell.On ? "True" : "False"; }; LastSection.Add (switchCell); }