Пример #1
0
        private async void ExportOpmlButton_Click(object sender, RoutedEventArgs e)
        {
            ExportOpmlButton.IsEnabled = false;
            ExportOpmlButton.Content   = AppTools.GetReswLanguage("Tip_Waiting");
            var allList = MainPage.Current.Categories.ToList();

            try
            {
                var    opml     = new Opml(allList);
                string content  = opml.ToString();
                string fileName = AppTools.GetLocalSetting(AppSettings.UserName, "") + "_" + DateTime.Now.ToString("yyyyMMdd_HH_mm_ss") + ".opml";
                var    file     = await IOTools.GetSaveFile(".opml", fileName, "OPML File");

                if (file != null)
                {
                    await FileIO.WriteTextAsync(file, content);

                    new PopupToast(AppTools.GetReswLanguage("Tip_ExportSuccess")).ShowPopup();
                }
            }
            catch (Exception)
            {
                new PopupToast(AppTools.GetReswLanguage("Tip_ImportError"), AppTools.GetThemeSolidColorBrush(ColorType.ErrorColor)).ShowPopup();
            }
            ExportOpmlButton.IsEnabled = true;
            ExportOpmlButton.Content   = AppTools.GetReswLanguage("Tip_Export");
        }
Пример #2
0
        private async Task ValidateChannelLink()
        {
            var    reg  = new Regex(@"(https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]");
            string link = ChannelLinkTextBox.Text.Trim();

            if (string.IsNullOrEmpty(link))
            {
                new PopupToast(AppTools.GetReswLanguage("Tip_FieldEmpty"), AppTools.GetThemeSolidColorBrush(ColorType.ErrorColor)).ShowPopup();
            }
            else
            {
                TryLinkButton.IsEnabled = false;
                LoadingRing.IsActive    = true;
                if (!reg.IsMatch(link))
                {
                    var results = await FeedlyResult.GetFeedlyResultFromText(link);

                    TryLinkButton.IsEnabled = true;
                    LoadingRing.IsActive    = false;
                    if (results.Count > 0)
                    {
                        SearchResultContainer.Visibility = Visibility.Visible;
                        FeedlyResults.Clear();
                        foreach (var item in results)
                        {
                            FeedlyResults.Add(item);
                        }
                    }
                    else
                    {
                        SearchResultContainer.Visibility = Visibility.Collapsed;
                        FeedlyResults.Clear();
                        new PopupToast(AppTools.GetReswLanguage("Tip_NoData"), AppTools.GetThemeSolidColorBrush(ColorType.ErrorColor)).ShowPopup();
                    }
                }
                else
                {
                    var channel = await AppTools.GetChannelFromUrl(link);

                    if (channel != null && !string.IsNullOrEmpty(channel.Name))
                    {
                        _sourceChannel             = channel;
                        LoadingRing.IsActive       = false;
                        TryLinkButton.IsEnabled    = true;
                        DetailContainer.Visibility = Visibility.Visible;
                        if (string.IsNullOrEmpty(ChannelNameTextBox.Text) && string.IsNullOrEmpty(ChannelDescriptionTextBox.Text))
                        {
                            ChannelNameTextBox.Text        = channel.Name;
                            ChannelDescriptionTextBox.Text = channel.Description;
                        }
                    }
                    else
                    {
                        LoadingRing.IsActive    = false;
                        TryLinkButton.IsEnabled = true;
                        new PopupToast(AppTools.GetReswLanguage("App_InvalidUrl"), AppTools.GetThemeSolidColorBrush(ColorType.ErrorColor)).ShowPopup();
                    }
                }
            }
        }
Пример #3
0
        private async Task AddCategory()
        {
            string icon = IconTextBlock.Text;
            string name = CategoryNameTextBox.Text;

            if (!string.IsNullOrEmpty(icon) && !string.IsNullOrEmpty(name))
            {
                IsPrimaryButtonEnabled = false;
                PrimaryButtonText      = AppTools.GetReswLanguage("Tip_Waiting");
                var cate = new Category(name, icon);
                MainPage.Current.Categories.Add(cate);
                MainPage.Current._categoryListCount += 1;
                new PopupToast(AppTools.GetReswLanguage("Tip_AddCategorySuccess")).ShowPopup();
                Hide();
                try
                {
                    await IOTools.AddCategory(cate);
                }
                catch (Exception)
                {
                    await Task.Delay(1000);

                    await IOTools.AddCategory(cate);
                }
            }
            else
            {
                new PopupToast(AppTools.GetReswLanguage("Tip_FieldEmpty"), AppTools.GetThemeSolidColorBrush(ColorType.ErrorColor)).ShowPopup();
            }
        }
Пример #4
0
        private static void Data_Changed(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            var data = e.NewValue as RssSchema;

            if (data != null)
            {
                var  c      = d as Feed_Card;
                bool isRead = MainPage.Current.ReadIds.Any(p => p.Equals(data.InternalID, StringComparison.OrdinalIgnoreCase));
                c.TitleBlock.Text       = data.Title;
                c.TitleBlock.Foreground = isRead ? AppTools.GetThemeSolidColorBrush(ColorType.TipTextColor) : AppTools.GetThemeSolidColorBrush(ColorType.ImportantTextColor);
                c.SummaryBlock.Text     = data.Summary;
                c.FavIconImage.Source   = new BitmapImage(new Uri(AppTools.GetFavIcon(data.FeedUrl)));
                if (!string.IsNullOrEmpty(data.ImageUrl))
                {
                    string imageUrl = data.ImageUrl.StartsWith("//") ? "http" + data.ImageUrl : data.ImageUrl;
                    c.Hold.Source = imageUrl;
                }
                else
                {
                    c.ContentContainer.VerticalAlignment = VerticalAlignment.Top;
                    c.SummaryBlock.MaxLines    = 5;
                    c.CardContainer.Background = AppTools.GetThemeSolidColorBrush(ColorType.CardBackground);
                    c.MainContainer.Background = AppTools.GetThemeSolidColorBrush(ColorType.TransparentBackground);
                }
            }
        }
Пример #5
0
        private async void ContentDialog_PrimaryButtonClick(ContentDialog sender, ContentDialogButtonClickEventArgs args)
        {
            args.Cancel = true;
            string icon = IconTextBlock.Text;
            string name = CategoryNameTextBox.Text;

            if (!string.IsNullOrEmpty(icon) && !string.IsNullOrEmpty(name))
            {
                IsPrimaryButtonEnabled = false;
                PrimaryButtonText      = AppTools.GetReswLanguage("Tip_Waiting");
                _sourceCategory.Name   = name;
                _sourceCategory.Icon   = icon;
                foreach (var item in MainPage.Current.Categories)
                {
                    if (item.Id == _sourceCategory.Id)
                    {
                        item.Name = _sourceCategory.Name;
                        item.Icon = _sourceCategory.Icon;
                    }
                }
                new PopupToast(AppTools.GetReswLanguage("Tip_UpdateCategorySuccess")).ShowPopup();
                Hide();
                await IOTools.UpdateCategory(_sourceCategory);
            }
            else
            {
                new PopupToast(AppTools.GetReswLanguage("Tip_FieldEmpty"), AppTools.GetThemeSolidColorBrush(ColorType.ErrorColor)).ShowPopup();
            }
        }
Пример #6
0
        /// <summary>
        /// 文章详情页面,主体是WebView
        /// </summary>
        public FeedDetailPage()
        {
            this.InitializeComponent();
            Current             = this;
            NavigationCacheMode = NavigationCacheMode.Enabled;
            ToolTipService.SetToolTip(AddTodoButton, AppTools.GetReswLanguage("Tip_AddTodoList"));
            ToolTipService.SetToolTip(RemoveTodoButton, AppTools.GetReswLanguage("Tip_DeleteTodoList"));
            ToolTipService.SetToolTip(AddStarButton, AppTools.GetReswLanguage("Tip_AddStarList"));
            ToolTipService.SetToolTip(RemoveStarButton, AppTools.GetReswLanguage("Tip_DeleteStarList"));
            ToolTipService.SetToolTip(ReadabilityButton, AppTools.GetReswLanguage("Tip_Readability"));
            bool isSideLocked = Convert.ToBoolean(AppTools.GetLocalSetting(AppSettings.SideListLocked, "False"));

            if (!isSideLocked)
            {
                LockButton.Foreground = AppTools.GetThemeSolidColorBrush(ColorType.ImportantTextColor);
            }
            else
            {
                LockButton.Foreground = AppTools.GetThemeSolidColorBrush(ColorType.PrimaryColor);
            }
            if (_latestPoint == null)
            {
                this.PointerPressed += (_s, _e) =>
                {
                };
            }
        }
Пример #7
0
        private async Task FeedReInit(RssSchema data)
        {
            bool isUnread = Convert.ToBoolean(AppTools.GetLocalSetting(AppSettings.IsJustUnread, "False"));

            if (!isUnread)
            {
                ShowFeeds.Insert(0, _sourceFeed);
            }
            ShowFeeds.Remove(data);
            _sourceFeed          = data;
            LoadingRing.IsActive = true;
            if (MainPage.Current.ChannelListView.SelectedItem != null)
            {
                var selectChannel = MainPage.Current.ChannelListView.SelectedItem as Channel;
                if (MainPage.Current.ReadableList.Any(c => c.Id == selectChannel.Id))
                {
                    DetailWebView.NavigateToString("");
                    SmartReader.Article article = await SmartReader.Reader.ParseArticleAsync(_sourceFeed.FeedUrl);

                    if (article.IsReadable || !string.IsNullOrEmpty(article.TextContent))
                    {
                        _sourceFeed.Content = article.Content;
                    }
                    else
                    {
                        new PopupToast(AppTools.GetReswLanguage("Tip_ReadError"), AppTools.GetThemeSolidColorBrush(ColorType.ErrorColor)).ShowPopup();
                    }
                }
            }
            await UpdateFeed();

            LoadingRing.IsActive = false;
        }
Пример #8
0
        private async void ContentDialog_PrimaryButtonClick(ContentDialog sender, ContentDialogButtonClickEventArgs args)
        {
            args.Cancel = true;
            string name = ChannelNameTextBox.Text?.Trim();
            string des  = ChannelDescriptionTextBox.Text?.Trim();
            string link = ChannelLinkTextBox.Text?.Trim();
            var    reg  = new Regex(@"(https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]");

            if (string.IsNullOrEmpty(name) || string.IsNullOrEmpty(des) || string.IsNullOrEmpty(link))
            {
                new PopupToast(AppTools.GetReswLanguage("Tip_FieldEmpty"), AppTools.GetThemeSolidColorBrush(ColorType.ErrorColor)).ShowPopup();
                return;
            }
            else if (!reg.IsMatch(link))
            {
                new PopupToast(AppTools.GetReswLanguage("Tip_FieldFormatError"), AppTools.GetThemeSolidColorBrush(ColorType.ErrorColor)).ShowPopup();
                return;
            }
            else
            {
                _sourceChannel.Name        = name;
                _sourceChannel.Description = des;
                _sourceChannel.Link        = link;
                var sourceCategory = MainPage.Current.CategoryListView.SelectedItem as Category;
                if (sourceCategory != null)
                {
                    IsPrimaryButtonEnabled = false;
                    PrimaryButtonText      = AppTools.GetReswLanguage("Tip_Waiting");
                    foreach (var item in sourceCategory.Channels)
                    {
                        if (item.Id == _sourceChannel.Id)
                        {
                            item.Name        = name;
                            item.Description = des;
                            item.Link        = link;
                        }
                    }
                    if (MainPage.Current.MainFrame.Content is Pages.ChannelDetailPage)
                    {
                        if (Pages.ChannelDetailPage.Current._sourceData.Id == _sourceChannel.Id)
                        {
                            Pages.ChannelDetailPage.Current.ChannelNameTextBlock.Text        = name;
                            Pages.ChannelDetailPage.Current.ChannelDescriptionTextBlock.Text = des;
                            Pages.ChannelDetailPage.Current._sourceData.Name        = name;
                            Pages.ChannelDetailPage.Current._sourceData.Description = des;
                            Pages.ChannelDetailPage.Current._sourceData.Link        = link;
                        }
                    }
                    new PopupToast(AppTools.GetReswLanguage("Tip_UpdateChannelSuccess")).ShowPopup();
                    Hide();
                    await IOTools.UpdateCategory(sourceCategory);
                }
                else
                {
                    new PopupToast(AppTools.GetReswLanguage("Tip_NoCategorySelected"), AppTools.GetThemeSolidColorBrush(ColorType.ErrorColor)).ShowPopup();
                    return;
                }
            }
        }
Пример #9
0
        private async void ContentDialog_PrimaryButtonClick(ContentDialog sender, ContentDialogButtonClickEventArgs args)
        {
            args.Cancel = true;
            if (_sourceChannel != null)
            {
                string showName        = ChannelNameTextBox.Text;
                string showDescription = ChannelDescriptionTextBox.Text;
                if (!string.IsNullOrEmpty(showName))
                {
                    _sourceChannel.Name = showName;
                }
                if (!string.IsNullOrEmpty(showDescription))
                {
                    _sourceChannel.Description = showDescription;
                }
                var selectCategory = MainPage.Current.CategoryListView.SelectedItem as Category;
                if (selectCategory != null)
                {
                    if (selectCategory.Channels.Any(c => c.Link.ToLower() == _sourceChannel.Link))
                    {
                        new PopupToast(AppTools.GetReswLanguage("Tip_ChannelRepeat"), AppTools.GetThemeSolidColorBrush(ColorType.ErrorColor)).ShowPopup();
                        return;
                    }
                    else
                    {
                        IsPrimaryButtonEnabled = false;
                        PrimaryButtonText      = AppTools.GetReswLanguage("Tip_Waiting");
                        selectCategory.Channels.Add(_sourceChannel);
                        MainPage.Current.Channels.Add(_sourceChannel);
                        MainPage.Current._channelListCount += 1;
                        int count = Convert.ToInt32(MainPage.Current.TotalSourceNumRun.Text);
                        count++;
                        MainPage.Current.TotalSourceNumRun.Text = count.ToString();
                        new PopupToast(AppTools.GetReswLanguage("Tip_AddChannelSuccess")).ShowPopup();
                        Hide();
                        try
                        {
                            await IOTools.UpdateCategory(selectCategory);
                        }
                        catch (Exception)
                        {
                            await Task.Delay(1000);

                            await IOTools.UpdateCategory(selectCategory);
                        }
                    }
                }
                else
                {
                    new PopupToast(AppTools.GetReswLanguage("Tip_NoCategorySelected"), AppTools.GetThemeSolidColorBrush(ColorType.ErrorColor)).ShowPopup();
                    return;
                }
            }
            else
            {
                new PopupToast(AppTools.GetReswLanguage("Tip_TryLinkFirst"), AppTools.GetThemeSolidColorBrush(ColorType.ErrorColor)).ShowPopup();
            }
        }
Пример #10
0
 private async void SelectMenu_Mark_Click(object sender, RoutedEventArgs e)
 {
     try
     {
         await DetailWebView.InvokeScriptAsync("setMark", new string[] { });
     }
     catch (Exception)
     {
         new PopupToast(AppTools.GetReswLanguage("Tip_DoNotMarkAgain"), AppTools.GetThemeSolidColorBrush(ColorType.ErrorColor)).ShowPopup();
     }
 }
Пример #11
0
 private async void OpenChannelButton_Click(object sender, RoutedEventArgs e)
 {
     if (!string.IsNullOrEmpty(_sourceData.SourceUrl))
     {
         await Launcher.LaunchUriAsync(new Uri(_sourceData.SourceUrl));
     }
     else
     {
         new PopupToast(AppTools.GetReswLanguage("App_InvalidUrl"), AppTools.GetThemeSolidColorBrush(ColorType.ErrorColor)).ShowPopup();
     }
 }
Пример #12
0
        /// <summary>
        /// 选中文本翻译
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private async void TextMenu_Translate_Click(object sender, RoutedEventArgs e)
        {
            if (!NetworkHelper.Instance.ConnectionInformation.IsInternetAvailable)
            {
                new PopupToast(AppTools.GetReswLanguage("Tip_FailedWithoutInternet"), AppTools.GetThemeSolidColorBrush(ColorType.ErrorColor)).ShowPopup();
                return;
            }
            string language = (sender as MenuFlyoutItem).Name.Replace("SelectMenu_Translate_", "");
            string appId    = AppTools.GetRoamingSetting(AppSettings.Translate_BaiduAppId, "");
            string appKey   = AppTools.GetRoamingSetting(AppSettings.Translate_BaiduKey, "");

            if (string.IsNullOrEmpty(appId))
            {
                new PopupToast(AppTools.GetReswLanguage("Tip_NeedLinkTranslateService"), AppTools.GetThemeSolidColorBrush(ColorType.ErrorColor)).ShowPopup();
                return;
            }
            else
            {
                LoadingRing.IsActive = true;
                string output = await TranslateTools.Translate(_selectText, appId, appKey, "auto", language.ToLower());

                if (!string.IsNullOrEmpty(output))
                {
                    var pos = new Point();
                    if (_latestPoint == null)
                    {
                        pos = Window.Current.CoreWindow.PointerPosition;
                    }
                    else
                    {
                        pos = _latestPoint.Position;
                    }
                    double x = pos.X - Window.Current.Bounds.X;
                    double y = pos.Y - Window.Current.Bounds.Y;
                    if (_latestPoint == null)
                    {
                        x -= 30;
                        y -= 50;
                    }
                    var option = new FlyoutShowOptions();
                    option.Position       = new Point(x, y);
                    TranslateContent.Text = output;
                    TranslateFlyout.ShowAt(MainPage.Current.RootGrid, option);
                }
                else
                {
                    new PopupToast(AppTools.GetReswLanguage("Tip_TranslateFailed"), AppTools.GetThemeSolidColorBrush(ColorType.ErrorColor)).ShowPopup();
                }
                LoadingRing.IsActive = false;
            }
        }
Пример #13
0
        private async void UnhandleExceptionHandle(object sender, Windows.UI.Xaml.UnhandledExceptionEventArgs e)
        {
            e.Handled = true;
            string msg = e.Exception.Message;

            if (e.Exception is UnauthorizedAccessException)
            {
                if (NetworkHelper.Instance.ConnectionInformation.IsInternetAvailable)
                {
                    await OneDrive.OneDriveAuthorize();
                }
            }
            new PopupToast(msg, AppTools.GetThemeSolidColorBrush(ColorType.ErrorColor)).ShowPopup();
        }
Пример #14
0
 private async void OpenWeb_MenuItemClicked(object sender, RoutedEventArgs e)
 {
     if (Data != null)
     {
         if (!string.IsNullOrEmpty(Data.FeedUrl))
         {
             await Launcher.LaunchUriAsync(new Uri(Data.FeedUrl));
         }
         else
         {
             new PopupToast(AppTools.GetReswLanguage("App_InvalidUrl"), AppTools.GetThemeSolidColorBrush(ColorType.ErrorColor)).ShowPopup();
         }
     }
 }
Пример #15
0
        private void LockButton_Click(object sender, RoutedEventArgs e)
        {
            bool isSideLocked = Convert.ToBoolean(AppTools.GetLocalSetting(AppSettings.SideListLocked, "False"));

            if (isSideLocked)
            {
                LockButton.Foreground = AppTools.GetThemeSolidColorBrush(ColorType.ImportantTextColor);
            }
            else
            {
                LockButton.Foreground = AppTools.GetThemeSolidColorBrush(ColorType.PrimaryColor);
            }
            AppTools.WriteLocalSetting(AppSettings.SideListLocked, (!isSideLocked).ToString());
        }
Пример #16
0
        public async void NextArticle()
        {
            if (AllFeeds.Count > 0)
            {
                var index = AllFeeds.IndexOf(_sourceFeed);
                if (index < AllFeeds.Count - 1)
                {
                    var data = AllFeeds[index + 1];
                    await FeedReInit(data);

                    return;
                }
            }
            new PopupToast(AppTools.GetReswLanguage("Tip_NoNextArticle"), AppTools.GetThemeSolidColorBrush(ColorType.ErrorColor)).ShowPopup();
        }
Пример #17
0
        private static void Data_Changed(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            var data = e.NewValue as RssSchema;

            if (data != null)
            {
                var  c      = d as Feed_List;
                bool isRead = MainPage.Current.ReadIds.Any(p => p.Equals(data.InternalID, StringComparison.OrdinalIgnoreCase));
                c.TitleBlock.Text       = data.Title;
                c.TitleBlock.Foreground = isRead ? AppTools.GetThemeSolidColorBrush(ColorType.TipTextColor) : AppTools.GetThemeSolidColorBrush(ColorType.ImportantTextColor);
                c.DateBlock.Text        = data.PublishDate.ToString(AppTools.GetReswLanguage("App_DateFormat"));
                c.FavIconImage.Source   = new BitmapImage(new Uri(AppTools.GetFavIcon(data.FeedUrl)));
                ToolTipService.SetToolTip(c.TitleBlock, data.Title);
            }
        }
Пример #18
0
 private async void RemoveStarButton_Click(object sender, RoutedEventArgs e)
 {
     (sender as Button).IsEnabled = false;
     try
     {
         MainPage.Current.StarList.RemoveAll(p => p.Equals(_sourceFeed));
         AddStarButton.Visibility    = Visibility.Visible;
         RemoveStarButton.Visibility = Visibility.Collapsed;
         new PopupToast(AppTools.GetReswLanguage("Tip_DeleteStarListSuccess")).ShowPopup();
         await IOTools.DeleteStar(_sourceFeed);
     }
     catch (Exception ex)
     {
         new PopupToast(ex.Message, AppTools.GetThemeSolidColorBrush(ColorType.ErrorColor)).ShowPopup();
     }
     (sender as Button).IsEnabled = true;
 }
Пример #19
0
 private async void AddTodoButton_Click(object sender, RoutedEventArgs e)
 {
     (sender as Button).IsEnabled = false;
     try
     {
         MainPage.Current.TodoList.Add(_sourceFeed);
         AddTodoButton.Visibility    = Visibility.Collapsed;
         RemoveTodoButton.Visibility = Visibility.Visible;
         new PopupToast(AppTools.GetReswLanguage("Tip_AddTodoListSuccess")).ShowPopup();
         await IOTools.AddTodoRead(_sourceFeed);
     }
     catch (Exception ex)
     {
         new PopupToast(ex.Message, AppTools.GetThemeSolidColorBrush(ColorType.ErrorColor)).ShowPopup();
     }
     (sender as Button).IsEnabled = true;
 }
Пример #20
0
        private void ContentDialog_PrimaryButtonClick(ContentDialog sender, ContentDialogButtonClickEventArgs args)
        {
            args.Cancel            = true;
            IsPrimaryButtonEnabled = false;
            PrimaryButtonText      = AppTools.GetReswLanguage("Tip_Waiting");
            string appId = AppIdTextBox.Text;
            string key   = KeyTextBox.Text;

            if (!string.IsNullOrEmpty(appId) && !string.IsNullOrEmpty(key))
            {
                AppTools.WriteRoamingSetting(AppSettings.Translate_BaiduAppId, appId);
                AppTools.WriteRoamingSetting(AppSettings.Translate_BaiduKey, key);
                Hide();
            }
            else
            {
                IsPrimaryButtonEnabled = true;
                PrimaryButtonText      = AppTools.GetReswLanguage("Tip_Confirm");
                new PopupToast(AppTools.GetReswLanguage("Tip_FieldEmpty"), AppTools.GetThemeSolidColorBrush(ColorType.ErrorColor)).ShowPopup();
            }
        }
Пример #21
0
        public async Task TranslateArticle(string language)
        {
            if (!NetworkHelper.Instance.ConnectionInformation.IsInternetAvailable)
            {
                new PopupToast(AppTools.GetReswLanguage("Tip_FailedWithoutInternet"), AppTools.GetThemeSolidColorBrush(ColorType.ErrorColor)).ShowPopup();
                return;
            }
            string appId = AppTools.GetRoamingSetting(AppSettings.Translate_BaiduAppId, "");

            if (string.IsNullOrEmpty(appId))
            {
                var dialog = new Dialog.BaiduTranslateDialog();
                await dialog.ShowAsync();
            }
            appId = AppTools.GetRoamingSetting(AppSettings.Translate_BaiduAppId, "");
            string appKey = AppTools.GetRoamingSetting(AppSettings.Translate_BaiduKey, "");

            if (string.IsNullOrEmpty(appId) || string.IsNullOrEmpty(appKey))
            {
                return;
            }
            else
            {
                LoadingRing.IsActive = true;
                string output = await TranslateTools.Translate(_sourceFeed.Content, appId, appKey, "auto", language.ToLower());

                if (!string.IsNullOrEmpty(output))
                {
                    string html = await PackageHTML(output);

                    DetailWebView.NavigateToString(html);
                }
                else
                {
                    new PopupToast(AppTools.GetReswLanguage("Tip_TranslateFailed"), AppTools.GetThemeSolidColorBrush(ColorType.ErrorColor)).ShowPopup();
                }
                LoadingRing.IsActive = false;
            }
        }
Пример #22
0
        private static void Data_Changed(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            var data = e.NewValue as RssSchema;

            if (data != null)
            {
                var c = d as Feed_Waterful;
                if (string.IsNullOrEmpty(data.ImageUrl))
                {
                    c.HoldImageControl.Visibility = Visibility.Collapsed;
                }
                else
                {
                    c.HoldImageControl.Visibility = Visibility.Visible;
                    c.HoldImageControl.Source     = data.ImageUrl.StartsWith("//") ? "http:" + data.ImageUrl : data.ImageUrl;
                }
                bool isRead = MainPage.Current.ReadIds.Any(p => p.Equals(data.InternalID, StringComparison.OrdinalIgnoreCase));
                c.TitleBlock.Text       = data.Title;
                c.TitleBlock.Foreground = isRead ? AppTools.GetThemeSolidColorBrush(ColorType.TipTextColor) : AppTools.GetThemeSolidColorBrush(ColorType.ImportantTextColor);
                c.AuthorNameBlock.Text  = data.Author ?? "Yo!";
                c.SummaryBlock.Text     = data.Summary;
                c.DateBlock.Text        = data.PublishDate.ToString(AppTools.GetReswLanguage("App_DateFormat"));
                if (data.Categories.Count() > 0)
                {
                    c.TagListView.Visibility = Visibility.Visible;
                    foreach (var item in data.Categories)
                    {
                        c.Categories.Add(item);
                    }
                }
                else
                {
                    c.TagListView.Visibility = Visibility.Collapsed;
                }
                c.FavIconImage.Source = new BitmapImage(new Uri(AppTools.GetFavIcon(data.FeedUrl)));
                ToolTipService.SetToolTip(c.TitleBlock, data.Title);
            }
        }
Пример #23
0
        private async void ContentDialog_PrimaryButtonClick(ContentDialog sender, ContentDialogButtonClickEventArgs args)
        {
            args.Cancel = true;
            var selectCategory = CategoryListView.SelectedItem as Category;

            if (selectCategory == null)
            {
                new PopupToast(AppTools.GetReswLanguage("Tip_NoCategorySelected"), AppTools.GetThemeSolidColorBrush(ColorType.ErrorColor)).ShowPopup();
                return;
            }
            else
            {
                var sourceCategory = MainPage.Current.CategoryListView.SelectedItem as Category;

                if (sourceCategory == null)
                {
                    new PopupToast(AppTools.GetReswLanguage("Tip_NoCategorySelected"), AppTools.GetThemeSolidColorBrush(ColorType.ErrorColor)).ShowPopup();
                    return;
                }
                else
                {
                    IsPrimaryButtonEnabled = false;
                    PrimaryButtonText      = AppTools.GetReswLanguage("Tip_Waiting");
                    if (selectCategory.Id != sourceCategory.Id)
                    {
                        sourceCategory.Channels.RemoveAll(p => p.Id == _sourceChannel.Id);
                        selectCategory.Channels.Add(_sourceChannel);
                        new PopupToast(AppTools.GetReswLanguage("Tip_MoveChannelSuccess")).ShowPopup();
                        MainPage.Current.Channels.Remove(MainPage.Current.Channels.Where(p => p.Id == _sourceChannel.Id).FirstOrDefault());
                        MainPage.Current._channelListCount -= 1;
                        Hide();
                        await IOTools.UpdateCategory(sourceCategory);

                        await IOTools.UpdateCategory(selectCategory);
                    }
                }
            }
        }
Пример #24
0
        private void RuleComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (!_isInit)
            {
                return;
            }
            var comboBox = sender as ComboBox;

            if (comboBox.SelectedIndex == -1)
            {
                return;
            }
            var data       = comboBox.DataContext as FilterItem;
            var temp       = FilterCollection.Where(p => p.Rule.Type == data.Rule.Type);
            var collection = FilterCollection;

            if (temp.Count() > 1)
            {
                data.Rule = null;
                comboBox.SelectedIndex = -1;
                new PopupToast(AppTools.GetReswLanguage("Tip_RuleRepeat"), AppTools.GetThemeSolidColorBrush(CoreLib.Enums.ColorType.ErrorColor)).ShowPopup();
            }
        }
Пример #25
0
        private static void Data_Changed(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            var data = e.NewValue as RssSchema;

            if (data != null)
            {
                var c = d as Feed_SideList;
                if (string.IsNullOrEmpty(data.ImageUrl))
                {
                    c.HoldImageControl.Visibility = Visibility.Collapsed;
                }
                else
                {
                    c.HoldImageControl.Visibility = Visibility.Visible;
                    c.HoldImageControl.Source     = data.ImageUrl.StartsWith("//") ? "http:" + data.ImageUrl : data.ImageUrl;
                }
                bool isRead = MainPage.Current.ReadIds.Any(p => p.Equals(data.InternalID, StringComparison.OrdinalIgnoreCase));
                c.TitleBlock.Text       = data.Title;
                c.TitleBlock.Foreground = isRead ? AppTools.GetThemeSolidColorBrush(ColorType.TipTextColor) : AppTools.GetThemeSolidColorBrush(ColorType.ImportantTextColor);
                c.SummaryBlock.Text     = data.Summary;
                ToolTipService.SetToolTip(c.TitleBlock, data.Title);
            }
        }
Пример #26
0
        private async void ImportLocalListButton_Click(object sender, RoutedEventArgs e)
        {
            ImportLocalListButton.IsEnabled = false;
            ImportLocalListButton.Content   = AppTools.GetReswLanguage("Tip_Waiting");
            var file = await IOTools.OpenLocalFile(".json");

            if (file != null)
            {
                try
                {
                    await IOTools.ImportLocalList(file);

                    ToastChannels.Clear();
                    var toastList = await IOTools.GetNeedToastChannels();

                    if (toastList.Count > 0)
                    {
                        foreach (var item in toastList)
                        {
                            ToastChannels.Add(item);
                        }
                    }
                    MainPage.Current.TodoList = await IOTools.GetLocalTodoReadList();

                    MainPage.Current.StarList = await IOTools.GetLocalStarList();

                    MainPage.Current.ToastList = toastList;
                    new PopupToast(AppTools.GetReswLanguage("Tip_ImportSuccess")).ShowPopup();
                }
                catch (Exception ex)
                {
                    new PopupToast(ex.Message, AppTools.GetThemeSolidColorBrush(ColorType.ErrorColor)).ShowPopup();
                }
            }
            ImportLocalListButton.IsEnabled = true;
            ImportLocalListButton.Content   = AppTools.GetReswLanguage("Tip_Import");
        }
Пример #27
0
        private async void ImportOpmlButton_Click(object sender, RoutedEventArgs e)
        {
            ImportOpmlButton.IsEnabled = false;
            ImportOpmlButton.Content   = AppTools.GetReswLanguage("Tip_Waiting");
            var file = await IOTools.OpenLocalFile(".opml");

            if (file != null)
            {
                try
                {
                    var list = await AppTools.GetRssListFromFile(file);

                    if (list != null && list.Count > 0)
                    {
                        var allList = MainPage.Current.Categories.ToList();
                        foreach (var item in list)
                        {
                            allList.Add(item);
                        }
                        await IOTools.ReplaceCategory(allList, true);

                        MainPage.Current.ReplaceList(allList);
                        new PopupToast(AppTools.GetReswLanguage("Tip_ImportSuccess")).ShowPopup();
                    }
                    else
                    {
                        new PopupToast(AppTools.GetReswLanguage("Tip_ImportError"), AppTools.GetThemeSolidColorBrush(ColorType.ErrorColor)).ShowPopup();
                    }
                }
                catch (Exception ex)
                {
                    new PopupToast(ex.Message, AppTools.GetThemeSolidColorBrush(ColorType.ErrorColor)).ShowPopup();
                }
            }
            ImportOpmlButton.IsEnabled = true;
            ImportOpmlButton.Content   = AppTools.GetReswLanguage("Tip_Import");
        }
Пример #28
0
        public async Task <Article> ReadabilityFromUrl(string url)
        {
            if (!NetworkHelper.Instance.ConnectionInformation.IsInternetAvailable)
            {
                new PopupToast(AppTools.GetReswLanguage("Tip_FailedWithoutInternet"), AppTools.GetThemeSolidColorBrush(ColorType.ErrorColor)).ShowPopup();
                return(null);
            }
            LoadingRing.IsActive = true;
            try
            {
                ReadabilityButton.IsEnabled = false;
                Article article = await Reader.ParseArticleAsync(url);

                if (article.IsReadable || !string.IsNullOrEmpty(article.TextContent))
                {
                    if (_sourceFeed != null)
                    {
                        _sourceFeed.Content = article.Content ?? article.TextContent;
                    }
                }
                else
                {
                    new PopupToast(AppTools.GetReswLanguage("Tip_ReadError"), AppTools.GetThemeSolidColorBrush(ColorType.ErrorColor)).ShowPopup();
                }
                ReadabilityButton.IsEnabled = true;
                LoadingRing.IsActive        = false;
                return(article);
            }
            catch (Exception ex)
            {
                ReadabilityButton.IsEnabled = true;
                LoadingRing.IsActive        = false;
                new PopupToast(ex.Message, AppTools.GetThemeSolidColorBrush(ColorType.ErrorColor)).ShowPopup();
                return(null);
            }
        }
Пример #29
0
        private async void CacheAllButton_Click(object sender, RoutedEventArgs e)
        {
            if (!NetworkHelper.Instance.ConnectionInformation.IsInternetAvailable)
            {
                new PopupToast(AppTools.GetReswLanguage("Tip_FailedWithoutInternet"), AppTools.GetThemeSolidColorBrush(ColorType.ErrorColor)).ShowPopup();
                return;
            }
            CacheAllButton.IsEnabled    = false;
            CacheProgressBar.Visibility = Visibility.Visible;

            var list = new List <Channel>();

            foreach (var item in MainPage.Current.Categories)
            {
                foreach (var cha in item.Channels)
                {
                    list.Add(cha);
                }
            }
            var pageList = MainPage.Current.CustomPages;

            if (list.Count > 0)
            {
                try
                {
                    CacheProgressBar.Maximum = list.Count + pageList.Count;
                    int channelCount = 0;
                    int pageCount    = 0;
                    var tasks        = new Task[2];
                    tasks[0] = Task.Run(async() => {
                        await IOTools.AddCacheChannel(async(count) =>
                        {
                            await DispatcherHelper.ExecuteOnUIThreadAsync(() =>
                            {
                                channelCount           = count;
                                CacheProgressBar.Value = channelCount + pageCount;
                            });
                        }, list.ToArray());
                    });
                    tasks[1] = Task.Run(async() => {
                        await IOTools.AddCachePage(async(count) =>
                        {
                            await DispatcherHelper.ExecuteOnUIThreadAsync(() =>
                            {
                                pageCount = count;
                                CacheProgressBar.Value = channelCount + pageCount;
                            });
                        }, pageList.ToArray());
                    });
                    await Task.WhenAll(tasks);

                    new PopupToast(AppTools.GetReswLanguage("Tip_CacheSuccess")).ShowPopup();
                }
                catch (Exception ex)
                {
                    new PopupToast(ex.Message).ShowPopup();
                }
            }
            CacheSizeTextBlock.Text = await IOTools.GetCacheSize();

            CacheAllButton.IsEnabled    = true;
            CacheProgressBar.Visibility = Visibility.Collapsed;
        }
Пример #30
0
        private async void ForceSyncButton_Click(object sender, RoutedEventArgs e)
        {
            if (!NetworkHelper.Instance.ConnectionInformation.IsInternetAvailable)
            {
                new PopupToast(AppTools.GetReswLanguage("Tip_FailedWithoutInternet"), AppTools.GetThemeSolidColorBrush(ColorType.ErrorColor)).ShowPopup();
                return;
            }
            var btn = sender as Button;

            btn.IsEnabled = false;
            btn.Content   = AppTools.GetReswLanguage("Tip_Waiting");
            var tasks        = new List <Task>();
            var cateList     = new List <Category>();
            var toastList    = new List <Channel>();
            var pageList     = new List <CustomPage>();
            var readList     = new List <string>();
            var readableList = new List <Channel>();
            var cate         = Task.Run(async() =>
            {
                cateList = await App.OneDrive.GetCategoryList();
                await IOTools.ReplaceCategory(cateList);
            });
            var todo = Task.Run(async() =>
            {
                var TodoList = await App.OneDrive.GetTodoList();
                await IOTools.ReplaceTodo(TodoList);
            });
            var star = Task.Run(async() =>
            {
                var StarList = await App.OneDrive.GetStarList();
                await IOTools.ReplaceStar(StarList);
            });
            var toast = Task.Run(async() =>
            {
                toastList = await App.OneDrive.GetToastList();
                await IOTools.ReplaceToast(toastList);
            });
            var page = Task.Run(async() =>
            {
                pageList = await App.OneDrive.GetPageList();
                await IOTools.ReplacePage(pageList);
            });
            var read = Task.Run(async() =>
            {
                readList = await App.OneDrive.GetReadList();
                await IOTools.ReplaceReadIds(readList);
            });
            var readable = Task.Run(async() =>
            {
                readableList = await App.OneDrive.GetReadableList();
                await IOTools.ReplaceReadable(readableList);
            });

            tasks.Add(cate);
            tasks.Add(todo);
            tasks.Add(star);
            tasks.Add(toast);
            tasks.Add(page);
            tasks.Add(read);
            tasks.Add(readable);
            try
            {
                await Task.WhenAll(tasks.ToArray());

                string basicUpdateTime    = AppTools.GetRoamingSetting(AppSettings.BasicUpdateTime, "1");
                string todoUpdateTime     = AppTools.GetRoamingSetting(AppSettings.TodoUpdateTime, "1");
                string starUpdateTime     = AppTools.GetRoamingSetting(AppSettings.StarUpdateTime, "1");
                string toastUpdateTime    = AppTools.GetRoamingSetting(AppSettings.ToastUpdateTime, "1");
                string pageUpdateTime     = AppTools.GetRoamingSetting(AppSettings.PageUpdateTime, "1");
                string readUpdateTime     = AppTools.GetRoamingSetting(AppSettings.ReadUpdateTime, "1");
                string readableUpdateTime = AppTools.GetRoamingSetting(AppSettings.ReadableUpdateTime, "1");
                AppTools.WriteLocalSetting(AppSettings.BasicUpdateTime, basicUpdateTime);
                AppTools.WriteLocalSetting(AppSettings.TodoUpdateTime, todoUpdateTime);
                AppTools.WriteLocalSetting(AppSettings.StarUpdateTime, starUpdateTime);
                AppTools.WriteLocalSetting(AppSettings.ToastUpdateTime, toastUpdateTime);
                AppTools.WriteLocalSetting(AppSettings.PageUpdateTime, pageUpdateTime);
                AppTools.WriteLocalSetting(AppSettings.ReadUpdateTime, readUpdateTime);
                AppTools.WriteLocalSetting(AppSettings.ReadableUpdateTime, readableUpdateTime);
                AppTools.WriteLocalSetting(AppSettings.IsChannelsChangeInOffline, "False");
                AppTools.WriteLocalSetting(AppSettings.IsTodoChangeInOffline, "False");
                AppTools.WriteLocalSetting(AppSettings.IsStarChangeInOffline, "False");
                AppTools.WriteLocalSetting(AppSettings.IsToastChangeInOffline, "False");
                AppTools.WriteLocalSetting(AppSettings.IsPageChangeInOffline, "False");
                AppTools.WriteLocalSetting(AppSettings.IsReadChangeInOffline, "False");
                AppTools.WriteLocalSetting(AppSettings.IsReadableChangeInOffline, "False");
                MainPage.Current.ReplaceList(cateList);
                MainPage.Current.ReplacePageList(pageList);
                MainPage.Current.ReadIds      = readList;
                MainPage.Current.ReadableList = readableList;
                ToastChannels.Clear();
                foreach (var item in toastList)
                {
                    ToastChannels.Add(item);
                }
                ReadableChannels.Clear();
                foreach (var item in readableList)
                {
                    ReadableChannels.Add(item);
                }
                btn.IsEnabled = true;
                btn.Content   = AppTools.GetReswLanguage("Tip_ForceSync");
                new PopupToast(AppTools.GetReswLanguage("Tip_SyncSuccess")).ShowPopup();
            }
            catch (Exception ex)
            {
                btn.IsEnabled = true;
                btn.Content   = AppTools.GetReswLanguage("Tip_ForceSync");
                new PopupToast(ex.Message, AppTools.GetThemeSolidColorBrush(ColorType.ErrorColor)).ShowPopup();
            }
        }