/// <summary> /// Emoji表情初始化 /// </summary> /// <param name="isRefresh">是否强制刷新</param> /// <returns></returns> public async Task InitEmoji(bool isRefresh = false) { bool isInit = AppTool.GetBoolSetting(Settings.IsInitEmoji, false); if (!isInit || isRefresh) { var emojis = await _client.GetTotalEmojiAsync(); if (emojis != null && emojis.Count > 0) { var emo = new List <EmojiItem>(); foreach (var item in emojis) { emo = emo.Concat(item.emojis).ToList(); } _emojis = emo; AppTool.WriteLocalSetting(Settings.IsInitEmoji, "True"); await IOTool.SetLocalDataAsync("emoji.json", JsonConvert.SerializeObject(_emojis)); } } else { var emojis = await IOTool.GetLocalDataAsync <List <EmojiItem> >("emoji.json"); _emojis = emojis; } }
protected async override void OnNavigatedTo(NavigationEventArgs e) { Window.Current.SetTitleBar(TitleContainer); if (e.NavigationMode == NavigationMode.Back || _isInit) { return; } bool isSideOpen = AppTool.GetBoolSetting(BiliBili_Lib.Enums.Settings.IsLastSidePanelOpen); AppSplitView.IsPaneOpen = isSideOpen; App.AppViewModel.CheckAppUpdate(); var popup = new WaitingPopup("正在初始化"); popup.ShowPopup(); bool isCanRequest = await App.BiliViewModel._client.ValidateRequestAsync(); if (isCanRequest) { try { await App.BiliViewModel.GetRegionsAsync(); App.AppViewModel.FontInit(); Window.Current.Dispatcher.AcceleratorKeyActivated += App.AppViewModel.AccelertorKeyActivedHandle; if (e.Parameter != null && e.Parameter is string argument && !string.IsNullOrEmpty(argument) && argument.Contains("action")) { App.AppViewModel.AppInitByActivated(argument); } else { PagePanel.NavigateToPage(Models.Enums.AppMenuItemType.Home); } }
private async Task LoadDynamic() { if (!App.BiliViewModel.IsLogin) { DynamicCollection.Clear(); DynamicHolderText.Visibility = Visibility.Visible; } if (!_isDynamicRequesting) { _isDynamicRequesting = true; Tuple <string, List <Topic> > data = null; if (string.IsNullOrEmpty(offset)) { string lastSeemId = AppTool.GetLocalSetting(BiliBili_Lib.Enums.Settings.LastSeemDynamicId, "0"); var temp = await _topicService.GetNewDynamicAsync(lastSeemId); if (temp != null) { data = new Tuple <string, List <Topic> >(temp.history_offset, temp.cards); } } else { data = await _topicService.GetHistoryDynamicAsync(offset); } if (data != null) { offset = data.Item1; data.Item2.ForEach(p => TotalList.Add(p)); DynamicCollectionInit(); } DynamicHolderText.Visibility = DynamicCollection.Count == 0 ? Visibility.Visible : Visibility.Collapsed; _isDynamicRequesting = false; } }
private void TokenChanged(object sender, TokenPackage e) { AppTool.WriteLocalSetting(Settings.AccessToken, e.AccessToken); AppTool.WriteLocalSetting(Settings.RefreshToken, e.RefreshToken); AppTool.WriteLocalSetting(Settings.TokenExpiry, e.Expiry.ToString()); AppTool.WriteLocalSetting(Settings.UserId, ""); }
private async void OnlyVideoSwitch_Toggled(object sender, RoutedEventArgs e) { if (!_isInit) { return; } _isOnlyVideo = (sender as ToggleSwitch).IsOn; AppTool.WriteLocalSetting(BiliBili_Lib.Enums.Settings.IsDynamicOnlyVideo, _isOnlyVideo.ToString()); if (_isOnlyVideo) { for (int i = DynamicCollection.Count - 1; i >= 0; i--) { if (DynamicCollection[i].desc.type != 8 && DynamicCollection[i].desc.type != 512) { DynamicCollection.RemoveAt(i); } } //判断过滤后的动态是否能让滚动条显示,不能则再请求一次 if (DynamicCollection.Count < 10) { await LoadDynamic(); } } else { DynamicCollectionInit(); } }
private void MyInfoInit(bool isSlimRefresh = false) { var me = App.BiliViewModel._client.Account.Me; if (me != null) { if (!isSlimRefresh) { UserAvatar.ProfilePicture = new BitmapImage(new Uri(me.face)) { DecodePixelWidth = 55 }; UserAvatarNarrrow.ProfilePicture = new BitmapImage(new Uri(me.face)) { DecodePixelWidth = 55 }; if (me.pendant != null && !string.IsNullOrEmpty(me.pendant.image)) { PendantImage.Visibility = Visibility.Visible; PendantImage.Source = new BitmapImage(new Uri(me.pendant.image)); UserNameBlock.Margin = new Thickness(0); } else { PendantImage.Visibility = Visibility.Collapsed; UserNameBlock.Margin = new Thickness(0, 20, 0, 0); } } UserNameBlock.Text = me.name; LevelBlock.Level = me.level; DynamicBlock.Text = AppTool.GetNumberAbbreviation(me.dynamic); FollowBlock.Text = AppTool.GetNumberAbbreviation(me.following); FanBlock.Text = AppTool.GetNumberAbbreviation(me.follower); } }
public App() { this.InitializeComponent(); bool isDisableScale = AppTool.GetBoolSetting(Settings.DisableXboxScale); if (SystemInformation.DeviceFamily == "Windows.Xbox" && isDisableScale) { Windows.UI.ViewManagement.ApplicationView.GetForCurrentView().SetDesiredBoundsMode(Windows.UI.ViewManagement.ApplicationViewBoundsMode.UseCoreWindow); Windows.UI.ViewManagement.ApplicationViewScaling.TrySetDisableLayoutScaling(true); } CustomXamlResourceLoader.Current = new CustomResourceLoader(); this.Suspending += OnSuspending; UnhandledException += OnUnhandleException; EnteredBackground += App_EnteredBackground; LeavingBackground += App_LeavingBackground; App.AppViewModel = new AppViewModel(); App.BiliViewModel = new BiliViewModel(); bool isThemeWithSystem = AppTool.GetBoolSetting(Settings.IsThemeWithSystem); _isTabletMode = AppTool.GetLocalSetting(Settings.DisplayMode, "") == "Tablet"; if (!isThemeWithSystem) { string theme = AppTool.GetLocalSetting(Settings.Theme, "Light"); RequestedTheme = theme == "Light" ? ApplicationTheme.Light : ApplicationTheme.Dark; } }
private static void IsCompactOverlay_Changed(DependencyObject d, DependencyPropertyChangedEventArgs e) { var instance = d as VideoTransportControls; var v = (bool)e.NewValue; if (!instance.IsInit) { return; } if (instance.IsFullWindow && v) { instance.IsFullWindow = false; } else if (instance.IsCinema && v) { instance.IsCinema = false; } if (instance.DanmakuControls != null) { bool isShow = AppTool.GetBoolSetting(BiliBili_Lib.Enums.Settings.IsShowDanmakuInCompactOverlay, false); if (!isShow && v) { instance.DanmakuControls.Visibility = Visibility.Collapsed; } else { instance.DanmakuControls.Visibility = Visibility.Visible; } } instance.CompactOverlayButtonClick?.Invoke(instance, v); instance.DanmakuControls.UpdateLayout(); }
private async void GetFollowerUnread() { if (App.BiliViewModel.IsLogin) { var count = await App.BiliViewModel._client.GetFollowerUnreadCountAsync(); if (count > 0) { //刷新动态 if (_isDynamicRequesting) { return; } _isDynamicRequesting = true; string lastSeemId = AppTool.GetLocalSetting(BiliBili_Lib.Enums.Settings.LastSeemDynamicId, "0"); var data = await _topicService.GetNewDynamicAsync(lastSeemId); if (data != null) { for (int i = data.cards.Count - 1; i >= 0; i--) { if (!TotalList.Contains(data.cards[i])) { TotalList.Insert(0, data.cards[i]); } } DynamicCollectionInit(); } _isDynamicRequesting = false; } } }
private async void InitDetail(UserResponse detail) { var acc = detail.card; _user = acc; UserAvatar.ProfilePicture = new BitmapImage(new Uri(acc.face + "@50w.jpg")); PendantImage.Visibility = Visibility.Collapsed; if (acc.pendant != null) { PendantImage.Visibility = Visibility.Visible; PendantImage.Source = acc.pendant.image; } FanBlock.Text = AppTool.GetNumberAbbreviation(acc.fans); FollowBlock.Text = AppTool.GetNumberAbbreviation(acc.attention); LikeBlock.Text = AppTool.GetNumberAbbreviation(acc.likes.like_num); CheckFollowButtonStatus(); UserNameBlock.Text = acc.name; SignBlock.Text = acc.sign; LevelImage.Source = new BitmapImage(new Uri($"ms-appx:///Assets/Level/level_{acc.level_info.current_level}.png")); if (detail.archive.count > 0) { _videoCount = detail.archive.count; var videos = detail.archive.item; videos.ForEach(p => VideoCollection.Add(p)); } else { await LoadMoreVideo(); } }
private static void Data_Changed(DependencyObject d, DependencyPropertyChangedEventArgs e) { if (e.NewValue != null && e.NewValue is Reply data) { var instance = d as ReplyMainBlock; instance.UserAvatar.Source = new BitmapImage(new Uri(data.member.avatar + "@50w.jpg")); instance.UserNameBlock.Text = data.member.uname; instance.LevelImage.Source = new BitmapImage(new Uri($"ms-appx:///Assets/Level/level_{data.member.level_info.current_level}.png")); instance.TimeBlock.Text = AppTool.GetReadDateString(data.ctime); instance.ContentBlock.EmoteSource = data.content.emote; instance.ContentBlock.Text = data.content.message; instance.LikeBlock.Text = AppTool.GetNumberAbbreviation(data.like); instance.LikeIcon.Foreground = data.action == 1 ? UIHelper.GetThemeBrush(Models.Enums.ColorType.PrimaryColor) : UIHelper.GetThemeBrush(Models.Enums.ColorType.TipTextColor); if (data.rcount > 0 && instance.SubReplyVisibility == Visibility.Visible) { instance.SubReplyContainer.Visibility = Visibility.Visible; instance.SubReplyItemsControl.ItemsSource = data.replies; instance.TotalReplyCount.Text = $"共{AppTool.GetNumberAbbreviation(data.rcount)}条回复"; instance.MoreReplyButton.Visibility = data.rcount > 3 ? Visibility.Visible : Visibility.Collapsed; } else { instance.SubReplyContainer.Visibility = Visibility.Collapsed; } } }
private void ViewModel_MyInfoChanged(object sender, BiliBili_Core.Models.BiliBili.Me me) { if (me != null) { CheckElementStatus(); UserAvatar.ProfilePicture = new BitmapImage(new Uri(me.face)) { DecodePixelWidth = 55 }; UserAvatarNarrrow.ProfilePicture = new BitmapImage(new Uri(me.face)) { DecodePixelWidth = 55 }; if (me.pendant != null && !string.IsNullOrEmpty(me.pendant.image)) { PendantImage.Visibility = Visibility.Visible; PendantImage.Source = new BitmapImage(new Uri(me.pendant.image)); UserNameBlock.Margin = new Thickness(0); } else { PendantImage.Visibility = Visibility.Collapsed; UserNameBlock.Margin = new Thickness(0, 20, 0, 0); } UserNameBlock.Text = me.name; LevelBlock.Level = me.level; DynamicBlock.Text = AppTool.GetNumberAbbreviation(me.dynamic); FollowBlock.Text = AppTool.GetNumberAbbreviation(me.following); FanBlock.Text = AppTool.GetNumberAbbreviation(me.follower); } }
private async void NewDynamicToastSwitch_Toggled(object sender, RoutedEventArgs e) { if (!_isInit) { return; } if (NewDynamicToastSwitch.IsOn) { bool isSuccess = await App.AppViewModel.RegisterBackgroundTask(StaticString.NOTIFICATION_NEWDYNAMIC); if (isSuccess) { AppTool.WriteLocalSetting(Settings.IsOpenNewDynamicNotification, "True"); } else { AppTool.WriteLocalSetting(Settings.IsOpenNewDynamicNotification, "False"); NewDynamicToastSwitch.IsOn = false; } } else { App.AppViewModel.UnRegisterBackgroundTask(StaticString.NOTIFICATION_NEWDYNAMIC); } }
private async Task LoadFans(bool isIncrease = false) { if (_isRequesting || (_isInit && _total == FansCollection.Count)) { return; } if (isIncrease) { _page += 1; } _isRequesting = true; var data = await _accountService.GetMyFansAsync(_page, _reversion); if (data != null) { _reversion = data.re_version; _total = data.total; TotalBlock.Text = $"共 {AppTool.GetNumberAbbreviation(_total)} 个粉丝"; if (data.list != null && data.list.Count > 0) { data.list.ForEach(p => FansCollection.Add(p)); } } _isRequesting = false; HolderText.Visibility = FansCollection.Count == 0 ? Visibility.Visible : Visibility.Collapsed; }
private void PagePaneDisplayBreakpointBox_ValueChanged(object sender, double e) { if (!_isInit) { return; } AppTool.WriteLocalSetting(Settings.PagePanelDisplayBreakpoint, e.ToString()); }
private void OpenDanmakuInCompactSwitch_Toggled(object sender, RoutedEventArgs e) { if (!_isInit) { return; } AppTool.WriteLocalSetting(Settings.IsShowDanmakuInCompactOverlay, OpenDanmakuInCompactSwitch.IsOn.ToString()); }
private void PlayerSkipStepBox_ValueChanged(object sender, double e) { if (!_isInit) { return; } AppTool.WriteLocalSetting(Settings.PlayerSkipStep, e.ToString()); }
private void ManualMTCSwitch_Toggled(object sender, RoutedEventArgs e) { if (!_isInit) { return; } AppTool.WriteLocalSetting(Settings.IsManualMediaTransportControls, ManualMTCSwitch.IsOn.ToString()); }
private void AutoNextPartSwitch_Toggled(object sender, RoutedEventArgs e) { if (!_isInit) { return; } AppTool.WriteLocalSetting(Settings.IsAutoNextPart, AutoNextPartSwitch.IsOn.ToString()); }
private void EnableAnimationSwitch_Toggled(object sender, RoutedEventArgs e) { if (!_isInit) { return; } AppTool.WriteLocalSetting(Settings.EnableAnimation, EnableAnimationSwitch.IsOn.ToString()); }
private void OpenDanmakuBarInSeparateSwitch_Toggled(object sender, RoutedEventArgs e) { if (!_isInit) { return; } AppTool.WriteLocalSetting(Settings.IsShowDanmakuBarInSeparate, OpenDanmakuBarInSeparateSwitch.IsOn.ToString()); }
private void StopPlayInBackgroundSwitch_Toggled(object sender, RoutedEventArgs e) { if (!_isInit) { return; } AppTool.WriteLocalSetting(Settings.IsStopInBackground, StopPlayInBackgroundSwitch.IsOn.ToString()); }
private async void UpdateVideoInfo() { var data = await _videoService.GetVideoSlimAsync(_detail.aid); LikeButton.Text = AppTool.GetNumberAbbreviation(data.like); CoinButton.Text = AppTool.GetNumberAbbreviation(data.coin); FavoriteButton.Text = AppTool.GetNumberAbbreviation(data.favorite); }
private void First4KSwitch_Toggled(object sender, RoutedEventArgs e) { if (!_isInit) { return; } AppTool.WriteLocalSetting(Settings.IsFirst4K, First4KSwitch.IsOn.ToString()); }
private void FontSizeBox_ValueChanged(object sender, double e) { if (!_isInit) { return; } AppTool.WriteLocalSetting(Settings.BasicFontSize, e.ToString()); }
private void UserControl_SizeChanged(object sender, SizeChangedEventArgs e) { var width = e.NewSize.Width; double OpenWidth = 400 + ((App.AppViewModel.BasicFontSize - 14) * App.AppViewModel.BasicFontSize); double breakpoint = Convert.ToDouble(AppTool.GetLocalSetting(Settings.PagePanelDisplayBreakpoint, "1500")); PageSplitView.DisplayMode = width < breakpoint ? SplitViewDisplayMode.CompactOverlay : SplitViewDisplayMode.CompactInline; PageSplitView.OpenPaneLength = width < OpenWidth + 200 ? width : OpenWidth; }
private async void DisableScaleInXboxSwitch_Toggled(object sender, RoutedEventArgs e) { if (!_isInit) { return; } AppTool.WriteLocalSetting(Settings.DisableXboxScale, DisableScaleInXboxSwitch.IsOn.ToString()); await ShowRestartDialog(); }
public void ClientInit() { _webClient = new BiliWebClient(); _secure = new BiliSecure(); string _access = AppTool.GetLocalSetting(Settings.AccessToken, ""); string _refresh = AppTool.GetLocalSetting(Settings.RefreshToken, ""); int _expiry = Convert.ToInt32(AppTool.GetLocalSetting(Settings.TokenExpiry, "0")); _client = new BiliBiliClient(_access, _refresh, _expiry); _client.Account.TokenChanged += TokenChanged; }
private async void DisplayModeComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (!_isInit) { return; } var item = DisplayModeComboBox.SelectedItem as ComboBoxItem; AppTool.WriteLocalSetting(Settings.DisplayMode, item.Tag.ToString()); await ShowRestartDialog(); }
private void PlayerModeComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (!_isInit) { return; } var item = PlayerModeComboBox.SelectedItem as ComboBoxItem; string tag = item.Tag.ToString(); AppTool.WriteLocalSetting(Settings.PlayerMode, tag); }