SharpRSS/WebSharpRSS/Models/TreeItemData.cs
2023-05-18 01:27:11 +02:00

64 lines
2.0 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using CodeHollow.FeedReader;
using MudBlazor;
using SharpRss.Models;
using ToolQit;
namespace WebSharpRSS.Models
{
public class TreeItemData
{
public TreeItemData(CategoryModel catModel)
{
CategoryModel = catModel;
//Feeds = CategoryModel.Feeds.Where(x => x.Base != null).Select(x => new TreeItemData(x)).ToHashSet();
Title = CategoryModel.Name;
Icon = Icons.Material.Filled.RssFeed;
}
public TreeItemData(FeedModel feedModel)
{
FeedModel = feedModel;
//Feed = FeedModel.Base;
Title = Feed.Title;
string faviconAddress = Feed.Link.Remove(Feed.Link.IndexOf("http", StringComparison.Ordinal), Feed.Link.IndexOf("://", StringComparison.Ordinal) + 3);
FaviconUrl = string.Format(Caretaker.Settings["Paths"].GetString("FaviconResolveUrl"), faviconAddress);
}
public readonly CategoryModel? CategoryModel;
public readonly FeedModel? FeedModel;
public string Title { get; set; } = string.Empty;
public bool IsSelected { get; set; }
public string? Icon { get; set; }
public string? FaviconUrl { get; set; }
// Category
public bool HasChild => Feeds != null;
public bool IsExpanded { get; set; }
public HashSet<TreeItemData>? Feeds { get; set; }
// Feed
public Feed? Feed { get; set; }
public int FeeditemCount
{
get
{
if (CategoryModel != null && Feeds != null)
{
int feedsCount = 0;
foreach (var item in Feeds)
{
if (item.Feed != null)
feedsCount += item.FeeditemCount;
}
return feedsCount;
}
else if (Feed != null)
return Feed.Items.Count;
return 0;
}
}
}
}