| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Net;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Documents;
- using System.Windows.Input;
- using System.Windows.Media;
- using System.Windows.Media.Animation;
- using System.Windows.Shapes;
- using System.IO.IsolatedStorage;
- using System.Windows.Navigation;
- using Microsoft.Phone.Controls;
- using WindowsPhone.Recipes.Push.Client.Views;
- using WindowsPhone.Recipes.Push.Client.Controls;
- namespace WindowsPhone.Recipes.Push.Client
- {
- public partial class MainPage : PhoneApplicationPage
- {
- #region Fields
- private readonly IsolatedStorageSettings Settings = IsolatedStorageSettings.ApplicationSettings;
- private const string ChannelName = "OneTimePatternChannel";
- private const string ServiceName = "WindowsPhone.Recipes.Push.Server.PushService";
- private static readonly Uri[] AllowedDomains =
- {
- new Uri(App.ServerAddress)
- };
- private readonly ViewTransitions<ViewState> _viewTransitions;
- #endregion
- #region Properties
- private UIElement ActiveView
- {
- get { return activeView.Child; }
- set { activeView.Child = value; }
- }
- #endregion
- #region Ctor
- public MainPage()
- {
- InitializeComponent();
- var viewState = CheckIfFirstTimeLoaded() ? ViewState.FirstInitial : ViewState.Initial;
- _viewTransitions = new ViewTransitions<ViewState>(viewState);
- InitializeViewTransitions();
- }
- #endregion
- #region Overrides
- protected override void OnNavigatedTo(NavigationEventArgs e)
- {
- var pushContext = new PushContext(ChannelName, ServiceName, AllowedDomains, Dispatcher);
- _viewTransitions.Transition();
- base.OnNavigatedTo(e);
- }
- #endregion
- #region Event Handlers
- private void userLoginView_Login(object sender, LoginEventArgs e)
- {
- if (e.Exception != null)
- {
- e.Exception.Show("Login");
- return;
- }
- var userLoginView = sender as UserLoginView;
- userLoginView.Login -= userLoginView_Login;
- _viewTransitions.Transition();
- }
- private void button_Click(object sender, RoutedEventArgs e)
- {
- _viewTransitions.Transition();
- }
- #endregion
- #region Privates
- private bool CheckIfFirstTimeLoaded()
- {
- object unused;
- if (!Settings.TryGetValue("MainPage.Loaded", out unused))
- {
- Settings["MainPage.Loaded"] = null;
- return true;
- }
- return false;
- }
- private void DisplayUserLoginView()
- {
- PageTitle.Text = "registration";
- button.Visibility = Visibility.Collapsed;
- var userLoginView = new UserLoginView
- {
- UserName = "tomer.shamam"
- };
- userLoginView.Login += userLoginView_Login;
- ActiveView = userLoginView;
- }
- private void DisplayPushSettingsView()
- {
- PageTitle.Text = "push settings";
- button.Content = "OK";
- button.Visibility = Visibility.Visible;
- ActiveView = new PushSettingsView();
- }
- private void DisplayInboxView()
- {
- PageTitle.Text = "server status";
- button.Content = "Settings";
- button.Visibility = Visibility.Visible;
- ActiveView = new InboxView();
- }
- private void InitializeViewTransitions()
- {
- _viewTransitions.AddTransition(ViewState.FirstInitial, ViewState.FirstSettings, DisplayPushSettingsView);
- _viewTransitions.AddTransition(ViewState.Initial, ViewState.Login, DisplayUserLoginView);
- _viewTransitions.AddTransition(ViewState.FirstSettings, ViewState.Login, DisplayUserLoginView);
- _viewTransitions.AddTransition(ViewState.Login, ViewState.Inbox, DisplayInboxView);
- _viewTransitions.AddTransition(ViewState.Settings, ViewState.Inbox, DisplayInboxView);
- _viewTransitions.AddTransition(ViewState.Inbox, ViewState.Settings, DisplayPushSettingsView);
- }
- #endregion
- #region ViewState
- [Flags]
- private enum ViewState
- {
- FirstTime = 1,
- Initial = 2,
- Settings = 4,
- Login = 8,
- Inbox = 16,
- FirstInitial = FirstTime | Initial,
- FirstSettings = FirstTime | Settings
- }
- #endregion
- }
- }
|