예제 #1
0
 protected override void OnNavigatedTo(NavigationEventArgs e)
 {
     m_busName               = NavigationContext.QueryString["busName"];
     m_stationPair           = DataService.AllBuses[m_busName];
     m_dir                   = BusDir.go;
     llsStations.ItemsSource = CurStations().Select(x => new StringVM(x)).ToList();
     tbBusName.Text          = m_busName;
 }
예제 #2
0
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            m_busName      = NavigationContext.QueryString["busName"];
            m_station      = NavigationContext.QueryString["station"];
            m_dir          = (BusDir)Enum.Parse(typeof(BusDir), NavigationContext.QueryString["dir"]);
            tbBusName.Text = m_busName;
            tbStation.Text = m_station;

            llsTags.ItemsSource = DataService.BusTags.GroupBy(x => x.tag).Select(g => new StringVM(g.Key)).ToList();
        }
예제 #3
0
 protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
 {
     Log.Debug("e.Cancel=" + e.Cancel);
     if (tbTag.Text != m_orig_tag)
     {
         Log.Debug("m_orig_tag={0}, tbTag.Text={1}".Fmt(m_orig_tag, tbTag.Text));
         BusDir dir = (tbDir.Text == "往↓" ? BusDir.go : BusDir.back);
         DataService.BusTags.First(x
                                   => x.busName == tbBusName.Text &&
                                   x.station == tbStation.Text &&
                                   x.dir == dir &&
                                   x.tag == m_orig_tag).tag = tbTag.Text;
     }
     base.OnBackKeyPress(e);
     //NavigationService.GoBack();
 }
예제 #4
0
 private void btnDir_Tap(object sender, System.Windows.Input.GestureEventArgs e)
 {
     if (m_dir == BusDir.go)
     {
         if (m_stationPair.stations_back.Length == 0)
         {
             return;
         }
         btnDirText.Text         = "返↑";
         m_dir                   = BusDir.back;
         llsStations.ItemsSource = CurStations().Select(x => new StringVM(x)).ToList();
     }
     else
     {
         btnDirText.Text         = "往↓";
         m_dir                   = BusDir.go;
         llsStations.ItemsSource = CurStations().Select(x => new StringVM(x)).ToList();
     }
 }
예제 #5
0
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            tbBusName.Text = NavigationContext.QueryString["busName"];
            tbStation.Text = NavigationContext.QueryString["station"];
            BusDir dir = (BusDir)Enum.Parse(typeof(BusDir), NavigationContext.QueryString["dir"]);

            tbDir.Text = (dir == BusDir.go?"往↓":"返↑");
            tbTag.Text = NavigationContext.QueryString["tag"];
            m_orig_tag = tbTag.Text;

            var stpair = DataService.AllBuses[tbBusName.Text];

            if (dir == BusDir.go && stpair.stations_go.Length > 0)
            {
                tbDir.Text += stpair.stations_go.LastElement();
            }
            else if (dir == BusDir.back && stpair.stations_back.Length > 0)
            {
                tbDir.Text += stpair.stations_back.LastElement();
            }
        }
예제 #6
0
        private void ApplicationBarIconButton_Click(object sender, EventArgs e)
        {
            BusDir dir = (tbDir.Text == "往↓" ? BusDir.go : BusDir.back);

            try
            {
                BusTagVM bt = DataService.BusTags.First(x
                                                        => x.busName == tbBusName.Text &&
                                                        x.station == tbStation.Text &&
                                                        x.dir == dir &&
                                                        x.tag == m_orig_tag);

                bool bRemoveSuccess = DataService.BusTags.Remove(bt);
                Log.Debug("bRemoveSuccess=" + bRemoveSuccess);
                NavigationService.GoBack();
            }
            catch (Exception ex)
            {
                Log.Error("{0} {1} {2} {3} cannot be found!".Fmt(tbBusName.Text, tbStation.Text, dir, m_orig_tag));
                Log.Error("BusTags={" + ",".Joyn(DataService.BusTags.Select(x => x.ToString())) + "}");
                Log.Error("ex=" + ex.DumpStr());
            }
        }
예제 #7
0
        public static async Task <string> GetBusDueTime(string busName, string stationName, BusDir busDir)
        {
            string url = @"http://pda.5284.com.tw/MQS/businfo3.jsp?Mode=1&Dir={1}&Route={0}&Stop={2}".Fmt(
                Uri.EscapeUriString(busName), busDir == BusDir.go?1:0, Uri.EscapeUriString(stationName));

            var    client    = new HttpClient();
            string strResult = await client.GetStringAsync(new Uri(url));

            var doc = new HtmlDocument();

            doc.LoadHtml(strResult);

            HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes(
                "/html/body/center/table/tr[6]/td");

            if (nodes.Count == 0)
            {
                Log.Debug("nodes.Count == 0");
                return("網路障礙");
            }
            return(nodes[0].InnerText);
        }