MainViewModel.cs 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Collections.ObjectModel;
  6. using System.ComponentModel.Composition;
  7. using System.ServiceModel;
  8. using WindowsPhone.Recipes.Push.Server.Services;
  9. namespace WindowsPhone.Recipes.Push.Server.ViewModels
  10. {
  11. [Export, PartCreationPolicy(CreationPolicy.Shared)]
  12. internal class MainViewModel : ViewModelBase
  13. {
  14. private PushService _pushService;
  15. private ImageService _imageService;
  16. private PushPatternViewModel _activePattern;
  17. [ImportingConstructor]
  18. public MainViewModel([ImportMany(typeof(PushPatternViewModel))] IEnumerable<PushPatternViewModel> pushPatterns)
  19. {
  20. PushPatterns = pushPatterns;
  21. ActivePattern = pushPatterns.FirstOrDefault();
  22. }
  23. [Import]
  24. private PushService PushService
  25. {
  26. get { return _pushService; }
  27. set
  28. {
  29. _pushService = value;
  30. _pushService.Subscribed += (s, e) => NotifyPropertyChanged("Subscribers");
  31. _pushService.Host();
  32. }
  33. }
  34. [Import]
  35. private ImageService ImageService
  36. {
  37. get { return _imageService; }
  38. set
  39. {
  40. _imageService = value;
  41. _imageService.Host();
  42. }
  43. }
  44. public IEnumerable<PushPatternViewModel> PushPatterns { get; private set; }
  45. [Import]
  46. public MessageStatusViewModel MessageStatus { get; private set; }
  47. public PushPatternViewModel ActivePattern
  48. {
  49. get { return _activePattern; }
  50. set
  51. {
  52. if (_activePattern != value)
  53. {
  54. if (_activePattern != null)
  55. {
  56. // Deactivate old pattern.
  57. _activePattern.IsActive = false;
  58. }
  59. _activePattern = value;
  60. if (_activePattern != null)
  61. {
  62. // Activate new pattern.
  63. _activePattern.IsActive = true;
  64. }
  65. NotifyPropertyChanged("ActivePattern");
  66. }
  67. }
  68. }
  69. public int Subscribers
  70. {
  71. get { return PushService.SubscribersCount; }
  72. }
  73. }
  74. }