| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 | using System;using System.Collections.Generic;using Xamarin.Forms;using InABox.Core;using InABox.Configuration;using InABox.Clients;namespace InABox.Mobile{    class SettingsBinding : ConnectionSettings    {        public String DeviceID { get; set; }        public String AppVersion { get; set; }        public void Load(ConnectionSettings settings)        {            URL = settings.URL;            Port = settings.Port;            UserID = settings.UserID;            Password = settings.Password;            AutoUpdateLocation = settings.AutoUpdateLocation;        }        public void Unload(ConnectionSettings settings)        {            settings.URL = URL;            settings.Port = Port;            settings.UserID = UserID;            settings.Password = Password;            settings.AutoUpdateLocation = AutoUpdateLocation;        }    }    public partial class Settings : ContentPage    {        SettingsBinding binding = new SettingsBinding();        ConnectionSettings settings = null;        public Settings(ConnectionSettings Settings, bool Modal = false)        {            InitializeComponent();            settings = Settings;            binding.Load(settings);            binding.DeviceID = MobileUtils.GetDeviceID();            IAppVersion appversion = DependencyService.Get<IAppVersion>();            binding.AppVersion = appversion.GetVersion();            this.BindingContext = binding;            if ((SaveButton != null) && Modal)            {                CancelButton.IsVisible = true;                SaveButton.IsVisible = true;                SettingsGrid.Margin = new Thickness(10, 25, 10, 10);            }            else            {                SettingsGrid.Margin = new Thickness(10, 10, 10, 10);                NavigationPage.SetBackButtonTitle(this, "Cancel");                ToolbarItems.Clear();                ToolbarItems.Add(new ToolbarItem("Save", "", () =>                {                    binding.Unload(settings);                    new LocalConfiguration<ConnectionSettings>().Save(settings);                    ClientFactory.SetClientType(typeof(RemoteClient<>), settings.URL, settings.Port);                    ClientFactory.ValidateUser(settings.UserID, settings.Password);                    Navigation.PopAsync();                }));            }            Title = "Settings";        }        void CancelClicked(object sender, System.EventArgs e)        {            Navigation.PopModalAsync();        }        void SaveClicked(object sender, System.EventArgs e)        {            binding.Unload(settings);            new LocalConfiguration<ConnectionSettings>().Save(settings);            ClientFactory.SetClientType(typeof(RemoteClient<>), settings.URL, settings.Port);            ClientFactory.ValidateUser(settings.UserID, settings.Password);            Navigation.PopModalAsync();        }    }}
 |