private async void Updated(PTTClient sender, LiPttEventArgs e) { switch (e.State) { case PttState.MainPage: await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { if (pivot_index != pivot.SelectedIndex) { MainFuncFrame.Navigate(typeof(MainFunctionPage)); } }); break; case PttState.Favorite: await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { if (pivot_index != pivot.SelectedIndex) { FavoriteFrame.Navigate(typeof(FavoritePage)); } }); break; } await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { pivot_index = pivot.SelectedIndex; }); }
private void BrowseArticle(PTTClient sender, LiPttEventArgs e) { switch (e.State) { case PttState.Article: LiPTT.PttEventEchoed -= BrowseArticle; LoadArticle(); break; } }
private void DialogOpen_PttEventEchoed(PTTClient sender, LiPttEventArgs e) { var x = LiPTT.Screen.ToStringArray(); if (e.State == PttState.EchoType) { LiPTT.PttEventEchoed -= DialogOpen_PttEventEchoed; LiPTT.Send(new byte[] { 0x0D, 0x0D }); } }
private void InitBoard(PTTClient sender, LiPttEventArgs e) { if (e.State == PttState.Board) { LiPTT.PttEventEchoed -= InitBoard; var action = Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { ContentCollection.BeginLoad(); }); } }
private void PttUpdated(PTTClient sender, LiPttEventArgs e) { LiPTT.PttEventEchoed -= PttUpdated; if (e.State == PttState.Board) { var action = LiPTT.RunInUIThread(() => { Parse(); sem.Release(); }); } }
private void Exit_echoed(PTTClient sender, LiPttEventArgs e) { if (e.State == PttState.Exit) { LiPTT.SendMessage('y', 0x0D); } else if (e.State == PttState.PressAny) { LiPTT.PttEventEchoed -= Exit_echoed; LiPTT.RemoveHandlerStateChecker(); LiPTT.PressAnyKey(); LiPTT.Client.Disconnected += GoToLogin; } }
private void PttEventEchoed_UpdateArticleTag(PTTClient client, LiPttEventArgs e) { if (e.State == PttState.Board) { LiPTT.PttEventEchoed -= PttEventEchoed_UpdateArticleTag; ReLoadArticleTag(client.Screen); LiPTT.PageEnd(); //LiPTT.SendMessage(LiPTT.ArticleCollection.CurrentIndex.ToString(), 0x0D); var action = LiPTT.RunInUIThread(() => { LiPTT.Frame.Navigate(typeof(BoardPage)); }); } }
private void ReadAIDandExtra(PTTClient client, LiPttEventArgs e) { if (e.State == PttState.Article && !LoadingExtraData) { LoadingExtraData = true; LiPTT.SendMessage('Q'); } else if (!pressAny && e.State == PttState.AID && LoadingExtraData) { pressAny = true; ReadExtraData(client.Screen, (int)e.Others); LiPTT.PressAnyKey(); } else if (e.State == PttState.Board && LoadingExtraData) { LiPTT.PttEventEchoed -= ReadAIDandExtra; LiPTT.PttEventEchoed += BrowseArticle; LiPTT.Right(); } }
private void GoToBoard(PTTClient sender, LiPttEventArgs e) { switch (e.State) { case PttState.PressAny: if (!pressAny) { pressAny = true; LiPTT.PressAnyKey(); } break; case PttState.Board: LiPTT.PageEnd(); LiPTT.PttEventEchoed -= GoToBoard; var t = LiPTT.RunInUIThread(() => { LiPTT.Frame.Navigate(typeof(BoardPage)); }); break; } }
private void LiPTT_PttEventEchoed(PTTClient sender, LiPttEventArgs e) { switch (e.State) { case PttState.Disconnected: if (!LiPTT.Client.PTTWrongResponse) { State = "未連線"; } break; case PttState.Connecting: State = "連線中..."; break; case PttState.ConnectFailedTCP: State = "TCP 連線失敗"; break; case PttState.ConnectFailedWebSocket: State = "WebSocket 連線失敗"; break; case PttState.Board: State = "看板"; break; case PttState.SearchBoard: State = "搜尋看板"; break; case PttState.Disconnecting: if (!LiPTT.Client.PTTWrongResponse) { State = "斷線中..."; } break; case PttState.Login: State = "(請輸入帳號)"; break; case PttState.Password: State = "(請輸入密碼)"; break; case PttState.Loginning: State = "登入中..."; break; case PttState.Synchronizing: State = "更新與同步個人資訊中..."; break; case PttState.Accept: State = "密碼正確"; break; case PttState.AlreadyLogin: State = "有重複登入,踢掉中..."; break; case PttState.OverLoading: State = "PTT被你玩壞惹?"; break; case PttState.LoginSoMany: State = "登入太頻繁 請稍後在試"; break; case PttState.Kicked: State = "誰踢我"; break; case PttState.WrongPassword: State = "密碼不對或無此帳號"; break; case PttState.Angel: State = "小天使?"; break; case PttState.WrongLog: State = "要刪除登入錯誤資訊嗎?"; break; case PttState.MainPage: State = "主功能表"; break; case PttState.PressAny: State = "(請按任意鍵繼續...)"; break; default: State = "未定義狀態"; break; } }
private void EnterAccount(PTTClient sender, LiPttEventArgs e) { switch (e.State) { case PttState.Login: if (!enteruser) { enteruser = true; var action = LiPTT.RunInUIThread(() => { LiPTT.UserName = UserText.Text; LiPTT.EnterUserName(); }); } break; case PttState.Password: if (!enterpswd) { enterpswd = true; var action = LiPTT.RunInUIThread(() => { LiPTT.Password = PasswordText.Password; LiPTT.EnterPassword(); }); } break; case PttState.WrongPassword: { LiPTT.Client.Dispose(); var action = LiPTT.RunInUIThread(() => { UserText.IsEnabled = true; PasswordText.IsEnabled = true; MemoAcount.IsEnabled = true; AutoLogin.IsEnabled = true; }); } break; case PttState.AlreadyLogin: if (!enterAlreadyLogin) { enterAlreadyLogin = true; LiPTT.Yes(); } break; case PttState.WrongLog: if (!enterWrongLog) { enterWrongLog = true; LiPTT.Yes(); } break; case PttState.Accept: { LiPTT.Logined = true; } break; case PttState.Loginning: break; case PttState.Synchronizing: break; case PttState.LoginSoMany: { LiPTT.Client.Dispose(); var action = LiPTT.RunInUIThread(() => { UserText.IsEnabled = true; PasswordText.IsEnabled = true; MemoAcount.IsEnabled = true; AutoLogin.IsEnabled = true; }); } break; case PttState.OverLoading: { LiPTT.Client.Dispose(); var action = LiPTT.RunInUIThread(() => { UserText.IsEnabled = true; PasswordText.IsEnabled = true; MemoAcount.IsEnabled = true; AutoLogin.IsEnabled = true; }); } break; case PttState.ConnectFailedTCP: case PttState.ConnectFailedWebSocket: { var action = LiPTT.RunInUIThread(() => { UserText.IsEnabled = true; PasswordText.IsEnabled = true; MemoAcount.IsEnabled = true; AutoLogin.IsEnabled = true; }); } break; case PttState.PressAny: LiPTT.PressAnyKey(); break; case PttState.MainPage: LiPTT.PttEventEchoed -= EnterAccount; { var action = LiPTT.RunInUIThread(() => { LiPTT.Frame.Navigate(typeof(PTTPage)); }); action.AsTask().Wait(); } break; } }
private void ReadBoardInfo(PTTClient client, LiPttEventArgs e) { ScreenBuffer screen = client.Screen; if (e.State == PttState.BoardInfomation) { LiPTT.PttEventEchoed -= ReadBoardInfo; var action = Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { var Board = CurrentBoard; //看板名稱 string str = screen.ToString(3); Match match = new Regex(LiPTT.bracket_regex).Match(str); if (match.Success) { Board.Name = str.Substring(match.Index + 1, match.Length - 2); Board.Nick = LiPTT.GetBoardNick(Board.Name); } //看板分類 中文敘述 Board.Category = screen.ToString(5, 15, 4); Board.Description = client.Screen.ToString(5, 22, screen.Width - 22).Replace('\0', ' ').Trim(); //版主名單 str = screen.ToString(6, 15, screen.Width - 15).Replace('\0', ' ').Trim(); if (!new Regex(LiPTT.bound_regex).Match(str).Success) //(無) { Board.Leaders = str.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries); } if (screen.ToString(7, 25, 4) == "公開") { Board.公開 = true; } if (screen.ToString(8, 12, 4) == "可以") { Board.可進入十大排行榜 = true; } if (screen.ToString(9, 5, 4) == "開放") { Board.開放非看板會員發文 = true; } if (screen.ToString(10, 5, 4) == "開放") { Board.開放回文 = true; } if (screen.ToString(11, 5, 4) == "開放") { Board.開放自刪 = true; } if (screen.ToString(12, 5, 4) == "開放") { Board.開放推文 = true; } if (screen.ToString(13, 5, 4) == "開放") { Board.開放噓文 = true; } if (screen.ToString(14, 5, 4) == "開放") { Board.開放快速連推 = true; } if (screen.ToString(15, 12, 4) == "自動") { Board.IPVisible = true; } if (screen.ToString(16, 12, 4) == "對齊") { Board.自動對齊 = true; } if (screen.ToString(17, 10, 2) == "可") { Board.板主可刪除違規文字 = true; } if (screen.ToString(18, 14, 2) == "會") { Board.轉文自動記錄 = true; } if (screen.ToString(19, 5, 2) == "已") { Board.冷靜模式 = true; } if (screen.ToString(20, 5, 4) == "允許") { Board.允許十八歲進入 = true; } //發文限制 - 登入次數 str = screen.ToString(12); match = new Regex(@"\d+").Match(str); if (match.Success) { try { Board.LimitLogin = Convert.ToInt32(str.Substring(match.Index, match.Length)); } catch { Debug.WriteLine(str.Substring(match.Index, match.Length)); } } //發文限制 - 退文篇數 str = screen.ToString(13); match = new Regex(@"\d+").Match(str); if (match.Success) { try { Board.LimitReject = Convert.ToInt32(str.Substring(match.Index, match.Length)); } catch { Debug.WriteLine(str.Substring(match.Index, match.Length)); } } if (LiPTT.CacheBoard) { ControlVisible = true; Window.Current.CoreWindow.KeyDown += CoreWindow_KeyDown; Window.Current.CoreWindow.PointerPressed += Board_PointerPressed; } else { ContentCollection.Clear(); LiPTT.PttEventEchoed += InitBoard; } LiPTT.PressAnyKey(); }); } }
private void SearchBoard(PTTClient sender, LiPttEventArgs e) { Regex regex = new Regex(@"([\w-_]+)"); Match match; ScreenBuffer screen = sender.Screen; switch (e.State) { case PttState.SearchBoard: LiPTT.PttEventEchoed -= SearchBoard; var msg = screen.ToString(1, 34, 20).Trim(); match = regex.Match(msg); if (match.Success) { string suggestion = msg.Substring(match.Index, match.Length); var action = LiPTT.RunInUIThread(() => { if (BoardAutoSuggestBox.Text.Length <= suggestion.Length) { RelatedTable.Add(suggestion); } }); } ClearSearch(); var a = LiPTT.RunInUIThread(() => { BoardAutoSuggestBox.ItemsSource = RelatedTable; }); break; case PttState.RelatedBoard: for (int i = 3; i < 23; i++) { string k = screen.ToString(i).Replace('\0', ' '); match = regex.Match(k, 0); if (match.Success) { RelatedTable.Add(k.Substring(match.Index, match.Length)); } match = regex.Match(k, 22); if (match.Success) { RelatedTable.Add(k.Substring(match.Index, match.Length)); } match = regex.Match(k, 44); if (match.Success) { RelatedTable.Add(k.Substring(match.Index, match.Length)); } } if (new Regex("按空白鍵可列出更多項目").Match(screen.ToString(23)).Success) { LiPTT.PressSpace(); } else { LiPTT.PttEventEchoed -= SearchBoard; RelatedTable.Sort(); ClearSearch(); var t = LiPTT.RunInUIThread(() => { BoardAutoSuggestBox.ItemsSource = RelatedTable; }); } break; } }