mirror of
https://github.com/ShareX/ShareX.git
synced 2024-10-01 09:47:22 +13:00
Mark all read after close news panel
This commit is contained in:
parent
91c5d50ea3
commit
ac40d70195
4 changed files with 48 additions and 13 deletions
|
@ -38,7 +38,8 @@ namespace ShareX
|
|||
{
|
||||
public partial class NewsListControl : UserControl
|
||||
{
|
||||
private NewsManager newsManager;
|
||||
public NewsManager NewsManager { get; private set; }
|
||||
|
||||
private ToolTip tooltip;
|
||||
|
||||
public NewsListControl()
|
||||
|
@ -56,14 +57,16 @@ public NewsListControl()
|
|||
|
||||
TaskEx.Run(() =>
|
||||
{
|
||||
newsManager = new NewsManager();
|
||||
newsManager.UpdateNews();
|
||||
NewsManager = new NewsManager();
|
||||
NewsManager.LastReadDate = Program.Settings.NewsLastReadDate;
|
||||
NewsManager.UpdateNews();
|
||||
NewsManager.UpdateUnread();
|
||||
},
|
||||
() =>
|
||||
{
|
||||
if (newsManager != null && newsManager.NewsItems != null)
|
||||
if (NewsManager != null && NewsManager.NewsItems != null)
|
||||
{
|
||||
foreach (NewsItem item in newsManager.NewsItems)
|
||||
foreach (NewsItem item in NewsManager.NewsItems)
|
||||
{
|
||||
if (item != null)
|
||||
{
|
||||
|
@ -74,6 +77,15 @@ public NewsListControl()
|
|||
});
|
||||
}
|
||||
|
||||
public void MarkRead()
|
||||
{
|
||||
if (NewsManager != null && NewsManager.NewsItems != null && NewsManager.NewsItems.Count > 0)
|
||||
{
|
||||
Program.Settings.NewsLastReadDate = NewsManager.LastReadDate = NewsManager.NewsItems.OrderByDescending(x => x.DateTime).First().DateTime;
|
||||
NewsManager.UpdateUnread();
|
||||
}
|
||||
}
|
||||
|
||||
private void TlpMain_Layout(object sender, LayoutEventArgs e)
|
||||
{
|
||||
TaskEx.RunDelayed(() =>
|
||||
|
@ -107,7 +119,8 @@ private void TlpMain_CellPaint(object sender, TableLayoutCellPaintEventArgs e)
|
|||
e.Graphics.FillRectangle(brush, e.CellBounds);
|
||||
}
|
||||
|
||||
if (newsManager.NewsItems.IsValidIndex(e.Row) && newsManager.NewsItems[e.Row].IsUnread(newsManager.LastReadDate) && e.Column == 0)
|
||||
if (NewsManager != null && NewsManager.NewsItems != null & NewsManager.NewsItems.IsValidIndex(e.Row) &&
|
||||
NewsManager.NewsItems[e.Row].IsUnread && e.Column == 0)
|
||||
{
|
||||
e.Graphics.FillRectangle(Brushes.LimeGreen, new Rectangle(e.CellBounds.X, e.CellBounds.Y, 5, e.CellBounds.Height));
|
||||
}
|
||||
|
|
|
@ -927,6 +927,12 @@ private void RunPuushTasks()
|
|||
}
|
||||
}
|
||||
|
||||
private void HideNews()
|
||||
{
|
||||
pNews.Visible = false;
|
||||
ucNews.MarkRead();
|
||||
}
|
||||
|
||||
private void PrepareCaptureMenuAsync(ToolStripMenuItem tsmiWindow, EventHandler handlerWindow, ToolStripMenuItem tsmiMonitor, EventHandler handlerMonitor)
|
||||
{
|
||||
tsmiWindow.DropDownItems.Clear();
|
||||
|
@ -1266,7 +1272,7 @@ private void pbPatreonHide_Click(object sender, EventArgs e)
|
|||
|
||||
private void btnCloseNews_Click(object sender, EventArgs e)
|
||||
{
|
||||
pNews.Visible = false;
|
||||
HideNews();
|
||||
}
|
||||
|
||||
#region Menu events
|
||||
|
@ -1553,7 +1559,14 @@ private void tsmiTestURLSharing_Click(object sender, EventArgs e)
|
|||
|
||||
private void tsbNews_Click(object sender, EventArgs e)
|
||||
{
|
||||
pNews.Visible = !pNews.Visible;
|
||||
if (!pNews.Visible)
|
||||
{
|
||||
pNews.Visible = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
HideNews();
|
||||
}
|
||||
}
|
||||
|
||||
private void tsbDonate_Click(object sender, EventArgs e)
|
||||
|
|
|
@ -37,9 +37,7 @@ public class NewsItem
|
|||
public string Text { get; set; }
|
||||
public string URL { get; set; }
|
||||
|
||||
public bool IsUnread(DateTime lastReadDate)
|
||||
{
|
||||
return DateTime > lastReadDate;
|
||||
}
|
||||
[JsonIgnore]
|
||||
public bool IsUnread { get; set; }
|
||||
}
|
||||
}
|
|
@ -38,7 +38,7 @@ public class NewsManager
|
|||
{
|
||||
public List<NewsItem> NewsItems { get; private set; } = new List<NewsItem>();
|
||||
public DateTime LastReadDate { get; set; }
|
||||
public bool IsUnread => NewsItems != null && NewsItems.Any(x => x.IsUnread(LastReadDate));
|
||||
public bool IsUnread => NewsItems != null && NewsItems.Any(x => x.IsUnread);
|
||||
|
||||
public void UpdateNews()
|
||||
{
|
||||
|
@ -52,6 +52,17 @@ public void UpdateNews()
|
|||
}
|
||||
}
|
||||
|
||||
public void UpdateUnread()
|
||||
{
|
||||
if (NewsItems != null)
|
||||
{
|
||||
foreach (NewsItem newsItem in NewsItems)
|
||||
{
|
||||
newsItem.IsUnread = newsItem.DateTime > LastReadDate;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private List<NewsItem> GetNews()
|
||||
{
|
||||
using (WebClient wc = new WebClient())
|
||||
|
|
Loading…
Reference in a new issue