Advertisement
TechnoTalkative

Untitled

Jan 7th, 2013
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Net;
  5. using System.Windows;
  6. using System.Windows.Controls;
  7. using System.Windows.Documents;
  8. using System.Windows.Input;
  9. using System.Windows.Media;
  10. using System.Windows.Media.Animation;
  11. using System.Windows.Shapes;
  12. using Microsoft.Phone.Controls;
  13. using PIC.Utils;
  14. using Microsoft.Phone.Net.NetworkInformation;
  15. using System.Runtime.Serialization.Json;
  16. using System.IO;
  17. using System.Text;
  18. using System.Windows.Navigation;
  19. using System.ComponentModel;
  20. using System.Collections.ObjectModel;
  21.  
  22. namespace Paresh.Activities
  23. {
  24.     public partial class Activities : PhoneApplicationPage
  25.     {
  26.         WebClient client = new WebClient();
  27.         RootPageItem[] items;
  28.         ObservableCollection<RootPageItem> listRootPageItems;
  29.         ObservableCollection<ObservableCollection<RootPageItem>> dataStack;
  30.  
  31.         public Activities()
  32.         {
  33.             InitializeComponent();
  34.             listRootPageItems = new ObservableCollection<RootPageItem>();
  35.           //  listSubPageItems = new List<SubPageItem>();
  36.             dataStack = new ObservableCollection<ObservableCollection<RootPageItem>>();
  37.  
  38.             if (NetworkInterface.GetIsNetworkAvailable())
  39.             {
  40.                 client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client_DownloadStringCompleted);
  41.                 ProgBar.Visibility = Visibility.Visible;
  42.                 client.DownloadStringAsync("webUrl");
  43.             }
  44.             else
  45.             {
  46.                 MessageBox.Show("No internet connection!!");
  47.             }
  48.         }
  49.  
  50.         void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
  51.         {
  52.             if (e.Error != null)
  53.                 return;
  54.  
  55.             else if (e.Error == null && !e.Cancelled)
  56.             {
  57.                 ProgBar.Visibility = Visibility.Collapsed;
  58.  
  59.                 String response = GlobalCls.getJsonData(e.Result);
  60.                 var ds = new DataContractJsonSerializer(typeof(RootPageItem[]));
  61.                 var msnew = new MemoryStream(Encoding.UTF8.GetBytes(response));
  62.                 items = (RootPageItem[])ds.ReadObject(msnew);
  63.  
  64.                 RootPageItem item;
  65.                 listRootPageItems = new ObservableCollection<RootPageItem>();
  66.  
  67.                 foreach (var ev in items)
  68.                 {
  69.                     item = new RootPageItem();
  70.                     item.Title = HttpUtility.HtmlDecode(ev.Title);
  71.                     item.isParent = ev.isParent;
  72.  
  73.                     listRootPageItems.Add(item);
  74.                 }
  75.  
  76.                 listBox1.ItemsSource = listRootPageItems;
  77.             }
  78.         }
  79.  
  80.         /**
  81.          * Making a web call on clicking of an item
  82.          *  - If response is with ListBox data, then filling data inside the same ListBox
  83.          *  - else display detail data inside WebBrowser
  84.          * */
  85.         private void ListBoxClick(object sender, SelectionChangedEventArgs e)
  86.         {
  87.             if (listBox1.SelectedIndex != -1)
  88.             {
  89.                 String title = items[listBox1.SelectedIndex].Title;
  90.                 int isParent = Convert.ToInt32(items[listBox1.SelectedIndex].isParent);
  91.  
  92.                 dataStack.Add(listRootPageItems);
  93.                 PageTitle.Text = title;
  94.  
  95.                 if (isParent > 0)
  96.                 {
  97.                     webBrowser1.Visibility = Visibility.Collapsed;
  98.                     listBox1.Visibility = Visibility.Visible;
  99.  
  100.                     listBox1.ItemsSource = null;
  101.  
  102.                     Uri webUrl = new Uri("WebURL");
  103.                     client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client_DownloadStringCompleted);
  104.                     ProgBar.Visibility = Visibility.Visible;
  105.                     client.DownloadStringAsync(webUrl);
  106.                 }
  107.                 else
  108.                 {
  109.                     webBrowser1.Visibility = Visibility.Visible;
  110.                     listBox1.Visibility = Visibility.Collapsed;
  111.                     String content= items[listBox1.SelectedIndex].content;
  112.                     webBrowser1.NavigateToString(HttpUtility.HtmlDecode(content));
  113.                 }
  114.  
  115.                 listBox1.SelectedIndex = -1;
  116.             }
  117.         }
  118.  
  119.          /**
  120.          * While moving back, taking data from stack and displayed inside the same ListBox
  121.          * */
  122.         protected override void OnBackKeyPress(CancelEventArgs e)
  123.         {
  124.            listBox1.Visibility = Visibility.Visible;
  125.            webBrowser1.Visibility = Visibility.Collapsed;
  126.            listBox1.SelectedIndex = -1;
  127.  
  128.             if (dataStack.Count != 0)
  129.             {
  130.                 listBox1.ItemsSource = null;
  131.                 listRootPageItems = dataStack[dataStack.Count-1];
  132.                 listBox1.ItemsSource = listRootPageItems;
  133.                 dataStack.Remove(listRootPageItems);
  134.  
  135.                e.Cancel = true;
  136.             }
  137.         }
  138.     }
  139. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement