using System; using System.Collections.Generic; using System.Windows; using System.Windows.Data; using Microsoft.Phone.Controls; using Microsoft.Phone.Shell; using Juick.ViewModels; using RestSharp; namespace Juick { public partial class MainPage : PhoneApplicationPage { // Constructor public MainPage() { // Holds the push channel that is created or found. InitializeComponent(); DataContext = App.AppContext; Loaded += (o, args) => { var progressIndicator = SystemTray.ProgressIndicator; if (progressIndicator != null) { return; } progressIndicator = new ProgressIndicator(); SystemTray.SetProgressIndicator(this, progressIndicator); Binding binding = new Binding("IsDataLoading") { Source = DataContext }; BindingOperations.SetBinding( progressIndicator, ProgressIndicator.IsVisibleProperty, binding); binding = new Binding("IsDataLoading") { Source = DataContext }; BindingOperations.SetBinding( progressIndicator, ProgressIndicator.IsIndeterminateProperty, binding); if (App.AppContext.Account.IsAuthenticated) { App.AppContext.Pages[0].RefreshData(); } }; } protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) { var loginUriPart = "/LoginView.xaml"; var newPostUriPart = "/NewPostView.xaml"; var navigateUri = string.Empty; var FileId = string.Empty; // Get a dictionary of query string keys and values. IDictionary queryStrings = NavigationContext.QueryString; // Ensure that there is at least one key in the query string, and check // whether the "FileId" key is present. navigateUri = App.AppContext.Account.IsAuthenticated ? newPostUriPart : loginUriPart; if (queryStrings.ContainsKey("FileId")) { FileId = queryStrings["FileId"]; navigateUri = string.Format("{0}?FileId={1}", navigateUri, FileId); } if (!string.IsNullOrEmpty(FileId) || navigateUri.StartsWith(loginUriPart)) { ((App)Application.Current).NavigateTo(new Uri(navigateUri, UriKind.Relative), true); } if (queryStrings.ContainsKey("mid")) { var mid = queryStrings["mid"]; navigateUri = string.Format("/ThreadView.xaml?mid={0}", mid); ((App)Application.Current).NavigateTo(new Uri(navigateUri, UriKind.Relative), true); } App.AppContext.Client.Authenticator = new HttpBasicAuthenticator(App.AppContext.Account.UserName, App.AppContext.Account.Password); } private void ApplicationBarIconButtonClick(object sender, EventArgs e) { App.AppContext.Pages[Pages.SelectedIndex].Items.Clear(); App.AppContext.Pages[Pages.SelectedIndex].RefreshData(); } private void ApplicationBarMenuItemClick(object sender, EventArgs e) { App.AppContext.Account.SignOut(this); } private void ApplicationBarIconButtonClick1(object sender, EventArgs e) { NavigationService.Navigate(new Uri("/NewPostView.xaml", UriKind.Relative)); } } }