Settings.xaml.cs 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. using System;
  2. using System.Collections.Generic;
  3. using Xamarin.Forms;
  4. using InABox.Core;
  5. using InABox.Configuration;
  6. using InABox.Clients;
  7. namespace InABox.Mobile
  8. {
  9. class SettingsBinding : ConnectionSettings
  10. {
  11. public String DeviceID { get; set; }
  12. public String AppVersion { get; set; }
  13. public void Load(ConnectionSettings settings)
  14. {
  15. URL = settings.URL;
  16. Port = settings.Port;
  17. UserID = settings.UserID;
  18. Password = settings.Password;
  19. AutoUpdateLocation = settings.AutoUpdateLocation;
  20. }
  21. public void Unload(ConnectionSettings settings)
  22. {
  23. settings.URL = URL;
  24. settings.Port = Port;
  25. settings.UserID = UserID;
  26. settings.Password = Password;
  27. settings.AutoUpdateLocation = AutoUpdateLocation;
  28. }
  29. }
  30. public partial class Settings : ContentPage
  31. {
  32. SettingsBinding binding = new SettingsBinding();
  33. ConnectionSettings settings = null;
  34. public Settings(ConnectionSettings Settings, bool Modal = false)
  35. {
  36. InitializeComponent();
  37. settings = Settings;
  38. binding.Load(settings);
  39. binding.DeviceID = MobileUtils.GetDeviceID();
  40. IAppVersion appversion = DependencyService.Get<IAppVersion>();
  41. binding.AppVersion = appversion.GetVersion();
  42. this.BindingContext = binding;
  43. if ((SaveButton != null) && Modal)
  44. {
  45. CancelButton.IsVisible = true;
  46. SaveButton.IsVisible = true;
  47. SettingsGrid.Margin = new Thickness(10, 25, 10, 10);
  48. }
  49. else
  50. {
  51. SettingsGrid.Margin = new Thickness(10, 10, 10, 10);
  52. NavigationPage.SetBackButtonTitle(this, "Cancel");
  53. ToolbarItems.Clear();
  54. ToolbarItems.Add(new ToolbarItem("Save", "", () =>
  55. {
  56. binding.Unload(settings);
  57. new LocalConfiguration<ConnectionSettings>().Save(settings);
  58. ClientFactory.SetClientType(typeof(RemoteClient<>), settings.URL, settings.Port);
  59. ClientFactory.ValidateUser(settings.UserID, settings.Password);
  60. Navigation.PopAsync();
  61. }));
  62. }
  63. Title = "Settings";
  64. }
  65. void CancelClicked(object sender, System.EventArgs e)
  66. {
  67. Navigation.PopModalAsync();
  68. }
  69. void SaveClicked(object sender, System.EventArgs e)
  70. {
  71. binding.Unload(settings);
  72. new LocalConfiguration<ConnectionSettings>().Save(settings);
  73. ClientFactory.SetClientType(typeof(RemoteClient<>), settings.URL, settings.Port);
  74. ClientFactory.ValidateUser(settings.UserID, settings.Password);
  75. Navigation.PopModalAsync();
  76. }
  77. }
  78. }