summaryrefslogtreecommitdiff
path: root/Juick/MainPage.xaml.cs
diff options
context:
space:
mode:
authorGravatar Vitaly Takmazov2012-03-13 02:47:51 +0400
committerGravatar Vitaly Takmazov2012-03-13 02:47:51 +0400
commitea1bc13e7a6bbef3d16fb630ed7cd348d8a9e67c (patch)
tree04362f97bac727c5d35053be0d1db9c0fcad30f1 /Juick/MainPage.xaml.cs
parentadfdd7c1afd794fab5013fdad95aad8654326d3f (diff)
add push notifications stub
fix refreshing fix images fix orientation
Diffstat (limited to 'Juick/MainPage.xaml.cs')
-rw-r--r--Juick/MainPage.xaml.cs91
1 files changed, 91 insertions, 0 deletions
diff --git a/Juick/MainPage.xaml.cs b/Juick/MainPage.xaml.cs
index a7ba541..a279a83 100644
--- a/Juick/MainPage.xaml.cs
+++ b/Juick/MainPage.xaml.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Net;
+using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
@@ -11,6 +12,7 @@ using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Juick.Classes;
using Microsoft.Phone.Controls;
+using Microsoft.Phone.Notification;
namespace Juick
{
@@ -19,8 +21,51 @@ namespace Juick
// Constructor
public MainPage()
{
+ // Holds the push channel that is created or found.
+ HttpNotificationChannel pushChannel;
+
+ // The name of our push channel.
+ string channelName = "JuickChannel";
+
InitializeComponent();
+ /* // Try to find the push channel.
+ pushChannel = HttpNotificationChannel.Find(channelName);
+
+ // If the channel was not found, then create a new connection to the push service.
+ if (pushChannel == null)
+ {
+ pushChannel = new HttpNotificationChannel(channelName);
+
+ // Register for all the events before attempting to open the channel.
+ pushChannel.ChannelUriUpdated += new EventHandler<NotificationChannelUriEventArgs>(PushChannel_ChannelUriUpdated);
+ pushChannel.ErrorOccurred += new EventHandler<NotificationChannelErrorEventArgs>(PushChannel_ErrorOccurred);
+
+ // Register for this notification only if you need to receive the notifications while your application is running.
+ pushChannel.ShellToastNotificationReceived += new EventHandler<NotificationEventArgs>(PushChannel_ShellToastNotificationReceived);
+
+ pushChannel.Open();
+
+ // Bind this new channel for toast events.
+ pushChannel.BindToShellToast();
+
+ }
+ else
+ {
+ // The channel was already open, so just register for all the events.
+ pushChannel.ChannelUriUpdated += new EventHandler<NotificationChannelUriEventArgs>(PushChannel_ChannelUriUpdated);
+ pushChannel.ErrorOccurred += new EventHandler<NotificationChannelErrorEventArgs>(PushChannel_ErrorOccurred);
+
+ // Register for this notification only if you need to receive the notifications while your application is running.
+ pushChannel.ShellToastNotificationReceived += new EventHandler<NotificationEventArgs>(PushChannel_ShellToastNotificationReceived);
+
+ // Display the URI for testing purposes. Normally, the URI would be passed back to your web service at this point.
+ System.Diagnostics.Debug.WriteLine(pushChannel.ChannelUri.ToString());
+ MessageBox.Show(String.Format("Channel Uri is {0}",
+ pushChannel.ChannelUri.ToString()));
+
+ }*/
+
// Set the data context of the listbox control to the sample data
Home.DataContext = App.MyFeedView;
Last.DataContext = App.LastView;
@@ -42,6 +87,52 @@ namespace Juick
}
}
+ void PushChannel_ChannelUriUpdated(object sender, NotificationChannelUriEventArgs e)
+ {
+
+ Dispatcher.BeginInvoke(() =>
+ {
+ // Display the new URI for testing purposes. Normally, the URI would be passed back to your web service at this point.
+ System.Diagnostics.Debug.WriteLine(e.ChannelUri.ToString());
+ MessageBox.Show(String.Format("Channel Uri is {0}",
+ e.ChannelUri.ToString()));
+
+ });
+ }
+ void PushChannel_ShellToastNotificationReceived(object sender, NotificationEventArgs e)
+ {
+ StringBuilder message = new StringBuilder();
+ string relativeUri = string.Empty;
+
+ message.AppendFormat("Received Toast {0}:\n", DateTime.Now.ToShortTimeString());
+
+ // Parse out the information that was part of the message.
+ foreach (string key in e.Collection.Keys)
+ {
+ message.AppendFormat("{0}: {1}\n", key, e.Collection[key]);
+
+ if (string.Compare(
+ key,
+ "wp:Param",
+ System.Globalization.CultureInfo.InvariantCulture,
+ System.Globalization.CompareOptions.IgnoreCase) == 0)
+ {
+ relativeUri = e.Collection[key];
+ }
+ }
+
+ // Display a dialog of all the fields in the toast.
+ Dispatcher.BeginInvoke(() => MessageBox.Show(message.ToString()));
+
+ }
+ void PushChannel_ErrorOccurred(object sender, NotificationChannelErrorEventArgs e)
+ {
+ // Error handling logic for your particular application would be here.
+ Dispatcher.BeginInvoke(() =>
+ MessageBox.Show(String.Format("A push notification {0} error occurred. {1} ({2}) {3}",
+ e.ErrorType, e.Message, e.ErrorCode, e.ErrorAdditionalData))
+ );
+ }
private void ListBoxSelectionChanged(object sender, SelectionChangedEventArgs e)
{