Ejemplo n.º 1
0
        //Ta bort en pod ur listan och uppdatera UI
        public async Task RemovePod(string url)
        {
            await Task.Run(() =>
            {
                PodCastList.Remove(url);
            });

            FirePodUpdated();
        }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 3
0
        //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);
            }
        }
Ejemplo n.º 4
0
        //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);
            }
        }
Ejemplo n.º 5
0
        [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);
        }
Ejemplo n.º 6
0
 //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();
         }
     });
 }
Ejemplo n.º 7
0
        //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();
            }
        }