//Ta bort en pod ur listan och uppdatera UI public async Task RemovePod(string url) { await Task.Run(() => { PodCastList.Remove(url); }); FirePodUpdated(); }
public void RenameCategory(string categoryName, string newCategoryName) { CategoryList.Rename(categoryName, newCategoryName); var podsToUpdate = PodCastList.GetPodsByCategory(categoryName); podsToUpdate.Where((p) => p.Category == categoryName).ToList() .ForEach((p) => p.Category = newCategoryName); FirePodUpdated(); }
//Anropas av timern; kollar vilka pods vars uppdateringsintervall stämmer överrens med timern public async void RefreshPods(object source, ElapsedEventArgs eArgs) { ElapsedMinutes += 5; var podsToUpdate = PodCastList.GetAll().Where((p) => (ElapsedMinutes % p.UpdateInterval == 0)).ToList(); foreach (PodCast p in podsToUpdate) { await CheckForPodUpdates(p); } }
//Tar bort en kategori; kollar först att kategorin inte används public void RemoveCategory(string category) { bool isUsed = PodCastList.GetAll().Any((p) => p.Category == category); if (isUsed) { OnError("Kategorin används av en eller flera podcasts."); } else { CategoryList.Remove(category); } }
[JsonConstructor] public PodManager() { CategoryList = new CategoryList <Category>(); PodCastList = new PodCastList <PodCast>(); //Timer anropar Elapsed-eventet var 5:e minut, //RefreshPods kollar vilka pods behöver uppdatering //Användaren kan enbart välja uppdateringsintervaller med 5-minutersintervall t = new Timer(); t.Interval = 30000; t.Elapsed += new ElapsedEventHandler(RefreshPods); t.Start(); ExceptionHandler = new ExceptionHandler(); RSSManager = new RSSManager(ExceptionHandler); }
//Lägger till en ny podcast public async Task AddNewPod(string url, string category, int updateInterval) { //Läser in RSS-feed, skapar och skapar PodCast under förutsättning att //ingenting gått fel await RSSManager.GetPodCast(url).ContinueWith((t) => { //Lägger bara till poden om ingenting gick fel if (t.Exception == null && t.Result != null) { var pod = t.Result; pod.Category = category; pod.UpdateInterval = updateInterval; PodCastList.Add(pod); FirePodUpdated(); } }); }
//Uppdaterar egenskaper hos en existerande podcast public async Task UpdatePodProperties(int index, string newUrl, int newInterval, string newCategory) { var pod = PodCastList.Get(index); pod.UpdateInterval = newInterval; pod.Category = newCategory; //Om podens URL är uppdaterad; kolla efter nya avsnitt if (newUrl != pod.Url) { pod.Url = newUrl; await CheckForPodUpdates(pod); } else { FirePodUpdated(); } }