using System; using System.ComponentModel; using System.Device.Location; using System.Diagnostics; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Navigation; using GalaSoft.MvvmLight.Messaging; using MahTweets.Core; using MahTweets.Core.Events; using MahTweets.Extensions.Twitter.ViewModels; using Microsoft.Phone.Controls.Maps; namespace MahTweets.Extensions.Twitter.Views { public partial class SingleTweetView { private AbstractStatus _oldSelection; public SingleTweetView() { InitializeComponent(); Loaded += SingleTweetViewLoaded; } private void OpenCompositionEventHandler(OpenCompositionEvent obj) { Dispatcher.BeginInvoke(() => { ApplicationBar.IsVisible = false; composition.SetComposition(obj); pivot.Visibility = Visibility.Collapsed; composition.Visibility = Visibility.Visible; }); } private void CompostionViewClosedHandler(CloseCompostionEvent obj) { Dispatcher.BeginInvoke(() => { ApplicationBar.IsVisible = true; pivot.Visibility = Visibility.Visible; composition.Visibility = Visibility.Collapsed; }); } protected override void OnBackKeyPress(CancelEventArgs e) { try { if (composition.Visibility == Visibility.Visible) { e.Cancel = true; CompostionViewClosedHandler(null); } } catch (Exception ex) { //TODO: Logging Debug.WriteLine(ex); } base.OnBackKeyPress(e); } protected override void OnNavigatedFrom(NavigationEventArgs e) { Messenger.Default.Unregister(this, OpenCompositionEventHandler); base.OnNavigatedFrom(e); } public SingleTweetViewModel Vm { get; set; } private void SingleTweetViewLoaded(object sender, RoutedEventArgs e) { if (Vm.Update == null || Vm.Update.Location == null) return; map.Center = new GeoCoordinate(Vm.Update.Location.Latitude, Vm.Update.Location.Longitude); map.Visibility = Visibility.Visible; map.Children.Add(new Pushpin {Location = map.Center}); } protected override void OnNavigatedTo(NavigationEventArgs e) { Vm = (DataContext as SingleTweetViewModel); var UpdatesCollectionView = Resources["UpdatesCollectionView"] as CollectionViewSource; UpdatesCollectionView.Source = Vm.Conversation; Messenger.Default.Register(this, CompostionViewClosedHandler); Messenger.Default.Register(this, OpenCompositionEventHandler); base.OnNavigatedTo(e); } private void AbibReplyClick(object sender, EventArgs e) { OpenCompositionEventHandler(new OpenCompositionEvent(CompostionMode.All, Vm.Update)); } private void AbibRtClick(object sender, EventArgs e) { Vm.Retweet(); } private void AbibFavClick(object sender, EventArgs e) { Vm.Favourite(); } private void AbmiBlockClick(object sender, EventArgs e) { Vm.Block(); } private void AbmiDmClick(object sender, EventArgs e) { OpenCompositionEventHandler(new OpenCompositionEvent(CompostionMode.DM, Vm.Update.ID)); } private void AbmiViewProfileClick(object sender, EventArgs e) { NavigationService.Navigate(new Uri("/MahTweets.Extensions.Twitter;component/Views/ProfileView.xaml?Name=" + Vm.Update.Contact.Name, UriKind.RelativeOrAbsolute)); } private void AbmiInstapaperClick(object sender, EventArgs e) { Vm.InstapaperTweet(); } private void LbEverythingSelectionChanged(object sender, SelectionChangedEventArgs e) { if (!(lbEverything.SelectedItem is AbstractStatus)) return; var update = (AbstractStatus) lbEverything.SelectedItem; update.IsSelected = update.IsSelected != true; if (update != _oldSelection && _oldSelection != null) { _oldSelection.IsSelected = false; } _oldSelection = update; } } }