diff --git a/App.xaml.cs b/App.xaml.cs index 0b54f9e..5925094 100644 --- a/App.xaml.cs +++ b/App.xaml.cs @@ -114,7 +114,10 @@ private void Application_Deactivated(object sender, DeactivatedEventArgs e) // This code will not execute when the application is deactivated private void Application_Closing(object sender, ClosingEventArgs e) { - LocalCache.Set>("Favorates", ViewModel.FavoratesItems); + if (ViewModel.FavoratesDirectory.First != null) + LocalCache.Set>("Favorates", ViewModel.FavoratesDirectory.First.Value); + else + LocalCache.Set>("Favorates", ViewModel.FavoratesItems); LocalCache.Set>("Topten", ViewModel.ToptenItems); } diff --git a/MainPage.xaml.cs b/MainPage.xaml.cs index 445db20..e6d2914 100644 --- a/MainPage.xaml.cs +++ b/MainPage.xaml.cs @@ -76,14 +76,27 @@ private void RefreshFavorates_Click(object sender, MouseButtonEventArgs e) } // 点击收藏夹 + private void Favorates_Selected(object sender, SelectionChangedEventArgs e) { if (e.AddedItems.Count == 1) { + ListBox list = sender as ListBox; BoardViewModel board = e.AddedItems[0] as BoardViewModel; - // 收藏夹目录暂时不管 - if (board.Leaf != true) + + // 收藏夹目录 + if (board.Leaf != true && board.EnglishName != "..") + { + App.ViewModel.FavoratesDirectory.AddLast(App.ViewModel.FavoratesItems); + App.ViewModel.FavoratesItems = board.Boards; + return; + } + else if (board.EnglishName == "..") + { + App.ViewModel.FavoratesItems = App.ViewModel.FavoratesDirectory.Last.Value; + App.ViewModel.FavoratesDirectory.RemoveLast(); return; + } this.NavigationService.Navigate(new Uri("/BoardPage.xaml?board=" + board.EnglishName + "&description=" + board.Description, UriKind.Relative)); @@ -119,14 +132,6 @@ private void LoadFavorates() if (error != null) return; - // 对目录版面进行处理 - foreach (BoardViewModel board in boards) - { - if (!board.Leaf) { - board.EnglishName = board.Description; - board.Description = "[目录]"; - } - } App.ViewModel.FavoratesItems = boards; }); } diff --git a/Sbbs/BoardViewModel.cs b/Sbbs/BoardViewModel.cs index 5e80bbe..3b0bc43 100644 --- a/Sbbs/BoardViewModel.cs +++ b/Sbbs/BoardViewModel.cs @@ -15,6 +15,7 @@ public class BoardViewModel : INotifyPropertyChanged private uint users; private uint count; private bool leaf = true; + private ObservableCollection boards; [DataMember(Name = "name")] public string EnglishName @@ -118,6 +119,23 @@ public bool Leaf } } + [DataMember(Name = "boards")] + public ObservableCollection Boards + { + get + { + return boards; + } + set + { + if (value != boards) + { + boards = value; + NotifyPropertyChanged("Boards"); + } + } + } + public event PropertyChangedEventHandler PropertyChanged; private void NotifyPropertyChanged(String propertyName) { diff --git a/Sbbs/Service.cs b/Sbbs/Service.cs index fd8ecae..ebd9489 100644 --- a/Sbbs/Service.cs +++ b/Sbbs/Service.cs @@ -52,7 +52,7 @@ public void Topten(Action callback) public void Favorates(Action callback) { WebClient wc = new WebClient(); - Uri uri = new Uri(apiBase + "fav/list" + apiPost + "?token=" + HttpUtility.UrlEncode(Token)); + Uri uri = new Uri(apiBase + "fav/list" + apiPost + "?up=1&token=" + HttpUtility.UrlEncode(Token)); wc.DownloadStringCompleted += DownloadedAndParse; wc.DownloadStringAsync(uri, new ServiceArg() { Callback = callback }); diff --git a/ViewModels/MainViewModel.cs b/ViewModels/MainViewModel.cs index f24a513..9f5cf1a 100644 --- a/ViewModels/MainViewModel.cs +++ b/ViewModels/MainViewModel.cs @@ -27,6 +27,7 @@ public MainViewModel() // 初始化 CurrentBoard = new CurrentBoardViewModel(); CurrentTopic = new CurrentTopicViewModel(); + FavoratesDirectory = new LinkedList>(); } // 十大热帖 @@ -95,6 +96,8 @@ public ObservableCollection FavoratesItems } } } + // --收藏夹浏览栈 + public LinkedList> FavoratesDirectory { get; set; } // 当前版面 public CurrentBoardViewModel CurrentBoard { get; set; }