Just over a month ago I introduced my WPF podcatcher project, Podder. Shortly after the initial release of Podder I began collaborating with Grant Hinkson, Visual Designer extraordinare. He has been working on a new skin for Podder, actually a new “structural skin,” as I call it. I designed Podder to allow for structural skinning, meaning the entire UI can be swapped out at runtime or compile time. It has been very exciting to see Grant turn Podder into a thing of true beauty, by substituting my UI with his own! 😀
Part of this process has required me to change the way Podder works, as well as implement several new features. At this point, I have implemented all of the new functionality and refactored some of the previous code. I’m not sure how long it will take Grant to finish his Podder skin, so I decided to release the new build of Podder as a beta.
Here it is: Podder v2 Beta
NOTE: You will need to change the file’s extension from .DOC to .ZIP and then decompress it. This is a workaround for a limitation imposed by WordPress. Podder requires .NET 3.5
If you have already been using Podder, you must erase the files it stores in your AppData/Local/Podder directory. On my Vista machine, those files are located here:
C:\Users\joshs\AppData\Local\Podder
I am not sure where the equivalent directory would be on XP. If you do not delete those files, Podder will not work correctly.
I added quite a few features between v1 and v2. Here are some of the big ticket items:
- Vastly improved podcast management dialog.
- The Podder process runs at a high priority so that it does not freeze under heavy CPU load (thanks to Marlon Grech for that tip).
- Episode tooltips now contain a summary, duration, file size, and more.
- The app has a system tray icon and minimizes to the system tray.
- No matter which podcast is selected, you can click on a link to return to the active episode.
- The app detects when it does and does not have internet access (hacky…).
- The app can load and apply skins from DLLs at runtime (this feature is disabled in the Beta).
- Lots of tweaky bug fixes and better error handling.
Here are some screenshots of the Podder v2 Beta, still using my plain old skin. Click on the images to view them at full size.
Podder’s main window
Podder in the system tray
Adding a new podcast to your list – Processing…
Adding a new podcast to your list – Finished!
I hope you have as much fun using Podder v2 Beta as I had making and using it. If you find any bugs, please drop a comment on this post and let me know. I appreciate all the help I can get. 🙂
By the way, I have seen the skin that Grant is making. OMG it looks good! Once it is ready, I will write the next article in the Podder series on CodeProject, and show you why WPF rocks so hard!
Josh,
Fantastic release! A lot of thought and hard work went into this version of Podder.
Thanks for sharing this with us!
Cheers,
Karl
Thanks a lot, Karl! Have fun.
Josh
looking good Josh
Much appreciated, Sacha. Please let me know if you find any bugs. Thanks.
Can you use the ‘let’ keyword in your XML parsing? That way you don’t call GetMediaFileUrl() three times for every element… Something like:
var episodes = from item in rssFeed.Element(“channel”).Elements(“item”)
let mfu = GetMediaFileUrl(item)
select new Episode(
item.Element(“title”).Value,
mfu,
GetMediaFileLength(item),
item.Element(“pubDate”).Value,
GetWebPageUrl(item)) {
IsFavorite = PodderDataSource.Instance.IsFavoriteEpisode(mfu),
IsFinished = PodderDataSource.Instance.IsFinishedEpisode(mfu)
};
Very cool!!!
Scott,
Thanks for the great piece of advice! That works like a charm. I didn’t know about the ‘let’ statement in LINQ, so thanks for the LINQ lesson as well. 😀
Josh
Thanks a lot, Rhonda. I’m glad you like Podder. Have fun with it! 🙂
Josh
Nice. I’m looking forward to reading about how the skinning works (and seeing what a real designer can make of it!). I keep finding that my attempts at doing something visually appealing generally end up being ok but definitely not great.
Matt,
Most of the material necessary to understand how the structural skinning works has already been covered by two articles I published on CodeProject:
http://www.codeproject.com/KB/WPF/SkinningInWPF.aspx
http://www.codeproject.com/KB/WPF/MVCtoUnitTestinWPF.aspx
The next article in the Podder series will assume that the reader has already digested those two articles. It will be like a case study in how my “design patterns for WPF” can be put to use in a more realistic scenario. So if you have not already read those two articles, they are a good place to start.
Thanks,
Josh
[…] Podder: the WPF podcast player [EDIT] The beta of Podder v2 is available for download here. […]
always getting better 🙂 great job !!!!!
Thanks Marlon! Nice post today, on the lamba value converters. There’s a lot of potential there…
josh
Great work, as always!
Btw, It’s just mean to tease us with the new design and not even give us a screenshot… Looking forward to seeing Grant’s magic! 😀
Doc,
I had considered showing a screenshot of Grant’s skin, but I’d rather wait until it’s done. I don’t know if Grant would want me to show his work-in-progress.
Thanks,
Josh
I like the data about the podcast.
I did some visual changes to the displays and then trashed something and put it back to a simple little change in the two skins.
When the skins are done will you release source?
TIA
Stephen,
Yes, when Grant’s skin is complete I will publish an article to CodeProject about Podder’s skinning and Grant’s skin. At that time the new source code will be released.
Thanks,
Josh
Suggestion: Add some kind of processing indicator when you change the “Select a podcase” dropdown (some of them are slow to load up).
Thanks Michael. I’ve thought about it before, but just can’t decide what I want to display for that purpose. I’ll give it some more thought…
Thanks,
Josh
Hi Josh,
Question unrelated to the above discussion.
can I use parts of your WPF library in a commercial product?
Can I also use the MouseUtilities class written by Dan Crevier?
If you can, please reply via e-mail.
Thanks
Nick
[…] to stop by Grant Hinkson’s office. Grant is the Visual Designer working on a new skin for Podder. I wanted to check in with him, and work through any issues or questions that might have cropped […]
Hi Josh,
Could you give me suggestion for this requirement.
I dont have idea about Design patterns even little bit.
I have plan to start Design Pattern for WPF (i have 1 1/2 yrs experience WPF).
Could you please let me know which book and site is better for WPF design pattern. Where i need to start?.
Thanks in advance.
Regards,
Venu.
Venu,
There are no sites or books, that I know of, showing WPF design patterns. Perhaps the occasional blog post or article, but nothing “authoritative” on the subject. Have you read my article about using MVC in WPF yet?
http://www.codeproject.com/KB/WPF/MVCtoUnitTestinWPF.aspx
Josh
[…] Content Introducing Podder: the WPF podcast player Podder v2 Beta The WPF Podcatcher Series – Part 1 (Introducing […]
[…] have been working away on Podder, my WPF podcast player. Grant Hinkson, my favorite Visual Designer in the world, has spent some […]
Why you do not create a WPF UI for doppler ?
Take a look : http://www.codeplex.com/doppler
It sounds to be the most advanced Podcast manager in .NET
[…] important concepts, but really don’t have practical uses (with the exception of the awesome Podder podcast tool). That leads me to this series of […]
[…] episodes = from item in rssFeed.Element???channel … josh smith Says: February 11, 2008 at 12:31 pmhttps://joshsmithonwpf.wordpress.com/2008/02/10/podder-v2-beta/YouTube – NBA Josh Smith 05-06 Season MixJosh smith 05-06 Season Mixmade by […]