Example #1
0
        /// <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);
                    }
                }
Example #3
0
        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;
            }
        }
Example #4
0
 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, "");
 }
Example #5
0
 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);
            }
        }
Example #7
0
        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;
            }
        }
Example #8
0
        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();
        }
Example #9
0
        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;
                }
            }
        }
Example #10
0
        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();
            }
        }
Example #11
0
 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;
         }
     }
 }
Example #12
0
 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);
     }
 }
Example #13
0
        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);
            }
        }
Example #14
0
        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;
        }
Example #15
0
 private void PagePaneDisplayBreakpointBox_ValueChanged(object sender, double e)
 {
     if (!_isInit)
     {
         return;
     }
     AppTool.WriteLocalSetting(Settings.PagePanelDisplayBreakpoint, e.ToString());
 }
Example #16
0
 private void OpenDanmakuInCompactSwitch_Toggled(object sender, RoutedEventArgs e)
 {
     if (!_isInit)
     {
         return;
     }
     AppTool.WriteLocalSetting(Settings.IsShowDanmakuInCompactOverlay, OpenDanmakuInCompactSwitch.IsOn.ToString());
 }
Example #17
0
 private void PlayerSkipStepBox_ValueChanged(object sender, double e)
 {
     if (!_isInit)
     {
         return;
     }
     AppTool.WriteLocalSetting(Settings.PlayerSkipStep, e.ToString());
 }
Example #18
0
 private void ManualMTCSwitch_Toggled(object sender, RoutedEventArgs e)
 {
     if (!_isInit)
     {
         return;
     }
     AppTool.WriteLocalSetting(Settings.IsManualMediaTransportControls, ManualMTCSwitch.IsOn.ToString());
 }
Example #19
0
 private void AutoNextPartSwitch_Toggled(object sender, RoutedEventArgs e)
 {
     if (!_isInit)
     {
         return;
     }
     AppTool.WriteLocalSetting(Settings.IsAutoNextPart, AutoNextPartSwitch.IsOn.ToString());
 }
Example #20
0
 private void EnableAnimationSwitch_Toggled(object sender, RoutedEventArgs e)
 {
     if (!_isInit)
     {
         return;
     }
     AppTool.WriteLocalSetting(Settings.EnableAnimation, EnableAnimationSwitch.IsOn.ToString());
 }
Example #21
0
 private void OpenDanmakuBarInSeparateSwitch_Toggled(object sender, RoutedEventArgs e)
 {
     if (!_isInit)
     {
         return;
     }
     AppTool.WriteLocalSetting(Settings.IsShowDanmakuBarInSeparate, OpenDanmakuBarInSeparateSwitch.IsOn.ToString());
 }
Example #22
0
 private void StopPlayInBackgroundSwitch_Toggled(object sender, RoutedEventArgs e)
 {
     if (!_isInit)
     {
         return;
     }
     AppTool.WriteLocalSetting(Settings.IsStopInBackground, StopPlayInBackgroundSwitch.IsOn.ToString());
 }
Example #23
0
        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);
        }
Example #24
0
 private void First4KSwitch_Toggled(object sender, RoutedEventArgs e)
 {
     if (!_isInit)
     {
         return;
     }
     AppTool.WriteLocalSetting(Settings.IsFirst4K, First4KSwitch.IsOn.ToString());
 }
Example #25
0
 private void FontSizeBox_ValueChanged(object sender, double e)
 {
     if (!_isInit)
     {
         return;
     }
     AppTool.WriteLocalSetting(Settings.BasicFontSize, e.ToString());
 }
Example #26
0
        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;
        }
Example #27
0
 private async void DisableScaleInXboxSwitch_Toggled(object sender, RoutedEventArgs e)
 {
     if (!_isInit)
     {
         return;
     }
     AppTool.WriteLocalSetting(Settings.DisableXboxScale, DisableScaleInXboxSwitch.IsOn.ToString());
     await ShowRestartDialog();
 }
Example #28
0
        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;
        }
Example #29
0
        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();
        }
Example #30
0
        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);
        }