private void ClearSettings()
 {
     modifiedSettings.Clear();
     Device.BeginInvokeOnMainThread(() => {
         SettingsTableSection.Clear();
     });
 }
        private void UpdateSettingsTable(Connection connection, string printerLanguage)
        {
            ZebraPrinter                 printer       = ZebraPrinterFactory.GetInstance(connection);
            ZebraPrinterLinkOs           linkOsPrinter = ZebraPrinterFactory.CreateLinkOsPrinter(printer);
            Dictionary <string, Setting> settings      = linkOsPrinter.GetAllSettings();

            if (settings.ContainsKey(DeviceLanguagesSgd))
            {
                settings[DeviceLanguagesSgd].Value = printerLanguage;
            }

            if (settings != null)
            {
                Device.BeginInvokeOnMainThread(() => {
                    foreach (string key in settings.Keys)
                    {
                        Entry entry = new Entry {
                            Text = settings[key].Value,
                        };
                        entry.TextChanged += (object s, TextChangedEventArgs e) => {
                            if (key != null)
                            {
                                if (modifiedSettings.ContainsKey(key))
                                {
                                    modifiedSettings[key] = e.NewTextValue;
                                }
                                else
                                {
                                    modifiedSettings.Add(key, e.NewTextValue);
                                }
                            }
                        };

                        SettingsTableSection.Add(new ViewCell {
                            View = new StackLayout {
                                Padding           = new Thickness(15),
                                HorizontalOptions = LayoutOptions.FillAndExpand,
                                Children          =
                                {
                                    new Label {
                                        Text           = key,
                                        FontSize       = Device.GetNamedSize(NamedSize.Default, typeof(Label)),
                                        FontAttributes = FontAttributes.Bold
                                    },
                                    entry,
                                    new Label {
                                        Text = $"Type: {linkOsPrinter.GetSettingType(key)}, Range: {linkOsPrinter.GetSettingRange(key)}"
                                    }
                                }
                            }
                        });
                    }
                });
            }
            else
            {
                Device.BeginInvokeOnMainThread(async() => {
                    await DisplayAlert("Settings Error", "Error reading settings", "OK");
                });
            }
        }