2013-06-15 16:17:37 +01:00
|
|
|
|
using System;
|
|
|
|
|
using System.Collections;
|
|
|
|
|
using System.ComponentModel;
|
|
|
|
|
using System.Windows;
|
|
|
|
|
using System.Windows.Media;
|
2013-06-15 16:26:30 +01:00
|
|
|
|
using IF.Lastfm.Demo.Apollo.ViewModels.UserApi;
|
2013-06-15 16:17:37 +01:00
|
|
|
|
using Microsoft.Phone.Controls;
|
|
|
|
|
using Microsoft.Phone.Shell;
|
|
|
|
|
|
2013-06-15 16:26:30 +01:00
|
|
|
|
namespace IF.Lastfm.Demo.Apollo.Pages.UserApi
|
2013-06-15 16:17:37 +01:00
|
|
|
|
{
|
|
|
|
|
public partial class History : PhoneApplicationPage
|
|
|
|
|
{
|
|
|
|
|
private HistoryTestViewModel _viewModel;
|
|
|
|
|
|
|
|
|
|
public History()
|
|
|
|
|
{
|
|
|
|
|
_viewModel = new HistoryTestViewModel();
|
|
|
|
|
|
|
|
|
|
DataContext = _viewModel;
|
|
|
|
|
|
|
|
|
|
InitializeComponent();
|
|
|
|
|
|
|
|
|
|
_viewModel.PropertyChanged += OnViewModelPropertyChanged;
|
2013-06-15 16:26:30 +01:00
|
|
|
|
|
|
|
|
|
Loaded += OnLoaded;
|
2013-06-15 16:17:37 +01:00
|
|
|
|
}
|
|
|
|
|
|
2013-06-15 16:26:30 +01:00
|
|
|
|
private async void OnLoaded(object sender, RoutedEventArgs e)
|
2013-06-15 16:17:37 +01:00
|
|
|
|
{
|
|
|
|
|
await _viewModel.NavigatedTo();
|
|
|
|
|
await _viewModel.GetHistory();
|
|
|
|
|
|
|
|
|
|
var element = VisualTreeHelper.GetChild(PageScroller, 0) as FrameworkElement;
|
|
|
|
|
if (element != null)
|
|
|
|
|
{
|
|
|
|
|
var vgroup = FindVisualState(element, "VerticalCompression");
|
|
|
|
|
if (vgroup != null)
|
|
|
|
|
{
|
|
|
|
|
vgroup.CurrentStateChanging += OnScrolled;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void OnViewModelPropertyChanged(object sender, PropertyChangedEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (e.PropertyName == "InProgress")
|
|
|
|
|
{
|
|
|
|
|
if (_viewModel.InProgress)
|
|
|
|
|
{
|
|
|
|
|
SystemTray.ProgressIndicator = new ProgressIndicator
|
|
|
|
|
{
|
|
|
|
|
IsVisible = _viewModel.InProgress,
|
|
|
|
|
IsIndeterminate = _viewModel.InProgress
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
SystemTray.ProgressIndicator = null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private async void OnScrolled(object sender, VisualStateChangedEventArgs visualStateChangedEventArgs)
|
|
|
|
|
{
|
|
|
|
|
if (PageScroller.VerticalOffset >= PageScroller.ScrollableHeight - 10)
|
|
|
|
|
{
|
|
|
|
|
if (!_viewModel.InProgress)
|
|
|
|
|
{
|
|
|
|
|
await _viewModel.GetHistory();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private VisualStateGroup FindVisualState(FrameworkElement element, string name)
|
|
|
|
|
{
|
|
|
|
|
if (element == null)
|
2013-06-15 17:02:11 +01:00
|
|
|
|
{
|
2013-06-15 16:17:37 +01:00
|
|
|
|
return null;
|
2013-06-15 17:02:11 +01:00
|
|
|
|
}
|
2013-06-15 16:17:37 +01:00
|
|
|
|
|
|
|
|
|
IList groups = VisualStateManager.GetVisualStateGroups(element);
|
|
|
|
|
foreach (VisualStateGroup group in groups)
|
2013-06-15 17:02:11 +01:00
|
|
|
|
{
|
2013-06-15 16:17:37 +01:00
|
|
|
|
if (group.Name == name)
|
2013-06-15 17:02:11 +01:00
|
|
|
|
{
|
2013-06-15 16:17:37 +01:00
|
|
|
|
return group;
|
2013-06-15 17:02:11 +01:00
|
|
|
|
}
|
|
|
|
|
}
|
2013-06-15 16:17:37 +01:00
|
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|