mirror of
https://github.com/ShareX/ShareX.git
synced 2024-10-02 18:26:27 +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
|
public partial class NewsListControl : UserControl
|
||||||
{
|
{
|
||||||
private NewsManager newsManager;
|
public NewsManager NewsManager { get; private set; }
|
||||||
|
|
||||||
private ToolTip tooltip;
|
private ToolTip tooltip;
|
||||||
|
|
||||||
public NewsListControl()
|
public NewsListControl()
|
||||||
|
@ -56,14 +57,16 @@ public NewsListControl()
|
||||||
|
|
||||||
TaskEx.Run(() =>
|
TaskEx.Run(() =>
|
||||||
{
|
{
|
||||||
newsManager = new NewsManager();
|
NewsManager = new NewsManager();
|
||||||
newsManager.UpdateNews();
|
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)
|
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)
|
private void TlpMain_Layout(object sender, LayoutEventArgs e)
|
||||||
{
|
{
|
||||||
TaskEx.RunDelayed(() =>
|
TaskEx.RunDelayed(() =>
|
||||||
|
@ -107,7 +119,8 @@ private void TlpMain_CellPaint(object sender, TableLayoutCellPaintEventArgs e)
|
||||||
e.Graphics.FillRectangle(brush, e.CellBounds);
|
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));
|
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)
|
private void PrepareCaptureMenuAsync(ToolStripMenuItem tsmiWindow, EventHandler handlerWindow, ToolStripMenuItem tsmiMonitor, EventHandler handlerMonitor)
|
||||||
{
|
{
|
||||||
tsmiWindow.DropDownItems.Clear();
|
tsmiWindow.DropDownItems.Clear();
|
||||||
|
@ -1266,7 +1272,7 @@ private void pbPatreonHide_Click(object sender, EventArgs e)
|
||||||
|
|
||||||
private void btnCloseNews_Click(object sender, EventArgs e)
|
private void btnCloseNews_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
pNews.Visible = false;
|
HideNews();
|
||||||
}
|
}
|
||||||
|
|
||||||
#region Menu events
|
#region Menu events
|
||||||
|
@ -1553,7 +1559,14 @@ private void tsmiTestURLSharing_Click(object sender, EventArgs e)
|
||||||
|
|
||||||
private void tsbNews_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)
|
private void tsbDonate_Click(object sender, EventArgs e)
|
||||||
|
|
|
@ -37,9 +37,7 @@ public class NewsItem
|
||||||
public string Text { get; set; }
|
public string Text { get; set; }
|
||||||
public string URL { get; set; }
|
public string URL { get; set; }
|
||||||
|
|
||||||
public bool IsUnread(DateTime lastReadDate)
|
[JsonIgnore]
|
||||||
{
|
public bool IsUnread { get; set; }
|
||||||
return DateTime > lastReadDate;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -38,7 +38,7 @@ public class NewsManager
|
||||||
{
|
{
|
||||||
public List<NewsItem> NewsItems { get; private set; } = new List<NewsItem>();
|
public List<NewsItem> NewsItems { get; private set; } = new List<NewsItem>();
|
||||||
public DateTime LastReadDate { get; set; }
|
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()
|
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()
|
private List<NewsItem> GetNews()
|
||||||
{
|
{
|
||||||
using (WebClient wc = new WebClient())
|
using (WebClient wc = new WebClient())
|
||||||
|
|
Loading…
Reference in a new issue