From acb14d7db321ba26c085872a96c48e7434332154 Mon Sep 17 00:00:00 2001 From: Konstantin Date: Thu, 25 Apr 2013 23:35:23 +0400 Subject: merge again --- Juick/ThreadView.xaml | 2 + Juick/ThreadView.xaml.cs | 199 +++++++++++++++++++++++++---------------------- 2 files changed, 109 insertions(+), 92 deletions(-) diff --git a/Juick/ThreadView.xaml b/Juick/ThreadView.xaml index 14a6f75..2778e2f 100644 --- a/Juick/ThreadView.xaml +++ b/Juick/ThreadView.xaml @@ -83,6 +83,8 @@ + + diff --git a/Juick/ThreadView.xaml.cs b/Juick/ThreadView.xaml.cs index 4e1da97..354a3cd 100644 --- a/Juick/ThreadView.xaml.cs +++ b/Juick/ThreadView.xaml.cs @@ -1,93 +1,108 @@ -using System; -using System.Linq; -using System.Windows.Controls; -using System.Windows.Navigation; -using Juick.ViewModels; -using Microsoft.Phone.Controls; -using Microsoft.Phone.Shell; -using System.Windows.Data; -using System.Windows; -using RestSharp; -using System.Net; - -namespace Juick -{ - public partial class ThreadView : PhoneApplicationPage - { - public ThreadView() - { - InitializeComponent(); - Model = new ThreadViewModel(App.AppContext); - DataContext = Model; - Loaded += (o, args) => - { - var progressIndicator = SystemTray.ProgressIndicator; - - if (progressIndicator != null) - { - return; - } - progressIndicator = new ProgressIndicator(); - - SystemTray.SetProgressIndicator(this, progressIndicator); - - Binding binding = new Binding("IsDataLoading") { Source = App.AppContext }; - - BindingOperations.SetBinding( - progressIndicator, ProgressIndicator.IsVisibleProperty, binding); - - binding = new Binding("IsDataLoading") { Source = App.AppContext }; - - BindingOperations.SetBinding( - progressIndicator, ProgressIndicator.IsIndeterminateProperty, binding); - }; - } - - public ThreadViewModel Model; - - // When page is navigated to set data context to selected item in list - protected override void OnNavigatedTo(NavigationEventArgs e) - { - if (Model.Items.Count > 0) - return; - string _mid = ""; - if (NavigationContext.QueryString.TryGetValue("mid", out _mid)) - { - Model.Mid = int.Parse(_mid); - } - Model.RefreshData(); - } - - private void ListBox_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e) - { - // If selected index is -1 (no selection) do nothing - if (((ListBox)sender).SelectedIndex == -1) - return; - - // Navigate to the new page - var item = Model.Items[((ListBox)sender).SelectedIndex]; - var destUri = string.Format("/NewPostView.xaml?mid={0}", item.MID); - if (item.RID > 0) - destUri += string.Format("&rid={0}", item.RID); - NavigationService.Navigate(new Uri(destUri, UriKind.Relative)); - - // Reset selected index to -1 (no selection) - ((ListBox)sender).SelectedIndex = -1; - } - - void RecommendBarMenuItem_Click(object sender, EventArgs e) - { - var request = new RestRequest("/post", Method.POST); - request.AddParameter("body", "! #" + Model.Mid); - App.AppContext.Client.ExecuteAsync(request, response => - { - App.AppContext.IsDataLoading = false; - if (response.StatusCode != HttpStatusCode.OK && !string.IsNullOrEmpty(response.Content)) - { - MessageBox.Show(string.Concat(response.StatusCode, ": ", response.Content)); - } - }); - App.AppContext.IsDataLoading = true; - } - } +using System; +using System.Linq; +using System.Windows.Controls; +using System.Windows.Navigation; +using Juick.ViewModels; +using Microsoft.Phone.Controls; +using Microsoft.Phone.Shell; +using System.Windows.Data; +using System.Windows; +using RestSharp; +using System.Net; + +namespace Juick +{ + public partial class ThreadView : PhoneApplicationPage + { + public ThreadView() + { + InitializeComponent(); + Model = new ThreadViewModel(App.AppContext); + DataContext = Model; + Loaded += (o, args) => + { + var progressIndicator = SystemTray.ProgressIndicator; + + if (progressIndicator != null) + { + return; + } + progressIndicator = new ProgressIndicator(); + + SystemTray.SetProgressIndicator(this, progressIndicator); + + Binding binding = new Binding("IsDataLoading") { Source = App.AppContext }; + + BindingOperations.SetBinding( + progressIndicator, ProgressIndicator.IsVisibleProperty, binding); + + binding = new Binding("IsDataLoading") { Source = App.AppContext }; + + BindingOperations.SetBinding( + progressIndicator, ProgressIndicator.IsIndeterminateProperty, binding); + }; + } + + public ThreadViewModel Model; + + // When page is navigated to set data context to selected item in list + protected override void OnNavigatedTo(NavigationEventArgs e) + { + if (Model.Items.Count > 0) + return; + string _mid = ""; + if (NavigationContext.QueryString.TryGetValue("mid", out _mid)) + { + Model.Mid = int.Parse(_mid); + } + Model.RefreshData(); + } + + private void ListBox_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e) + { + // If selected index is -1 (no selection) do nothing + if (((ListBox)sender).SelectedIndex == -1) + return; + + // Navigate to the new page + var item = Model.Items[((ListBox)sender).SelectedIndex]; + var destUri = string.Format("/NewPostView.xaml?mid={0}", item.MID); + if (item.RID > 0) + destUri += string.Format("&rid={0}", item.RID); + NavigationService.Navigate(new Uri(destUri, UriKind.Relative)); + + // Reset selected index to -1 (no selection) + ((ListBox)sender).SelectedIndex = -1; + } + + void RecommendBarMenuItem_Click(object sender, EventArgs e) + { + ExecuteJuickAction("!"); + } + + void SubscribeBarMenuItem_Click(object sender, EventArgs e) + { + ExecuteJuickAction("S"); + } + + void UnsubscribeBarMenuItem_Click(object sender, EventArgs e) + { + ExecuteJuickAction("U"); + } + + void ExecuteJuickAction(string action) + { + var request = new RestRequest("/post", Method.POST); + request.AddParameter("body", string.Concat(action, " #", Model.Mid)); + App.AppContext.Client.ExecuteAsync(request, response => + { + App.AppContext.IsDataLoading = false; + if(response.StatusCode != HttpStatusCode.OK || !string.IsNullOrEmpty(response.Content)) + { + MessageBox.Show(string.Concat(response.StatusCode, ": ", response.Content)); + } + }); + App.AppContext.IsDataLoading = true; + } + } } \ No newline at end of file -- cgit v1.2.3