Files
TickerLib/Models/FeedItem.cs
2024-02-23 06:55:00 -05:00

153 lines
4.5 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Windows.Media;
using MarketData.Utils;
using Ticker.Helper;
namespace Ticker.Models
{
public class FeedBrushes
{
public enum BrushColor{Normal=0,Red=1,Green=2};
public static Brush[] ContextBrushes={
new SolidColorBrush((Color)ColorConverter.ConvertFromString("#00ABA9")),
new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FF0000")),
new SolidColorBrush((Color)ColorConverter.ConvertFromString("#008000"))
};
private FeedBrushes()
{
}
public static Brush GetContextBrush(BrushColor brushColor)
{
return ContextBrushes[(int)brushColor];
}
}
//
public class FeedItem : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private string title;
private string pubDate;
private string link;
private string description;
private string guid;
private string source;
private bool read;
private FeedBrushes.BrushColor brushAssignment;
public FeedItem()
{
brushAssignment=FeedBrushes.BrushColor.Normal;
}
// Don't save the link. Firstly, we don't need it, secondly, it contains '=' which are a keyword for NVP
public NVPCollection ToNVPCollection()
{
NVPCollection nvpCollection=new NVPCollection();
nvpCollection.Add(new NVP("Title",title));
nvpCollection.Add(new NVP("PubDate",pubDate));
String fixupLink=link.Replace("=","^");
nvpCollection.Add(new NVP("Link",fixupLink));
nvpCollection.Add(new NVP("Description",description));
nvpCollection.Add(new NVP("Guid",guid));
nvpCollection.Add(new NVP("Source",source));
nvpCollection.Add(new NVP("Read",read.ToString()));
return nvpCollection;
}
public static FeedItem FromString(String strFeedItem)
{
try
{
FeedItem feedItem=new FeedItem();
NVPCollection nvpCollection=new NVPCollection(strFeedItem);
NVPDictionary nvpDictionary=nvpCollection.ToDictionary();
feedItem.Title=nvpDictionary["Title"].Get<String>();
feedItem.PubDate=nvpDictionary["PubDate"].Get<String>();
String fixupLink=nvpDictionary["Link"].Get<String>();
feedItem.Link=fixupLink.Replace("^","=");
feedItem.Description=nvpDictionary["Description"].Get<String>();
feedItem.Guid=nvpDictionary["Guid"].Get<String>();
feedItem.Source=nvpDictionary["Source"].Get<String>();
feedItem.Read=nvpDictionary["Read"].Get<Boolean>();
return feedItem;
}
catch(Exception)
{
return null;
}
}
public Brush ForegroundBrush
{
get{return FeedBrushes.GetContextBrush(brushAssignment);}
}
public FeedBrushes.BrushColor BrushAssigment
{
get{return brushAssignment;}
set{brushAssignment=value;if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs("BrushAssigment"));}
}
public bool Read
{
get { return read; }
set
{
read = value;
if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs("Read"));
}
}
public string Source
{
get { return source; }
set
{
source = value;
if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs("Source"));
}
}
public string Guid
{
get { return guid; }
set
{
guid = value;
if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs("Guid"));
}
}
public string Description
{
get { return description; }
set
{
description = value;
if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs("Description"));
}
}
public string Link
{
get { return link; }
set
{
link = value;
if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs("Link"));
}
}
public string PubDate
{
get { return pubDate; }
set
{
pubDate = value;
if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs("PubDate"));
}
}
public string Title
{
get { return title; }
set
{
title = value;
if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs("Title"));
}
}
}
}