This Windows Phone 7.1(5) app is your source for WinSource (which comes with the source)
Today's Mobile Monday post is a Windows Phone 7.x app WinSource reader app by Sébastien Lachance.
"A Windows Phone 7.x App! What are you thinking, Greg? Windows Phone 8 should be in days! Why highlight a 7.x app? Are you smoking dope?"
No, no... The point I'm trying to make is that Windows Phone 7.x app's "will just work" on Windows Phone 8 (at least that's the intent and goal). So you don't have to wait for the Windows Phone 8 SDK to be released, you don't have to wait for Windows Phone 8 to take off, you can start coding today, releasing app's today. And if you release a Windows Phone 7.x app you will not only b e able to run on Windows Phone 8, but also on all the existing Windows Phone 7x devices too. See, I'm no smoking dope!
In the summer 2012, the WinSource website held a contest among the Windows Phone developers to create an official application for their website.
I was a participant in the contest and I can tell you that it was a really interesting and challenging contest. My application finished in third position.
You can download the application from the winner at here.
Before I decided to put the full source code of my complete application. I asked the owners of the WinSource from the Neverstill company if I can publish the source code of my application. They accepted my idea, because it is a great way to help the Windows Phone community.
In the current form, the application has enough features that it can be an alternate WinSource application. The only restriction is a user cannot publish or use the WinSource’s logo, the assets or the content from the WinSource. NOTE, this project is licensed under a slightly modified MIT license which reflects the above restriction.
The purpose of having this open project is to help the community creating a professional news reader for any other websites that give the permissions. It also shows different concepts which can be applied in different type of applications.
The app provides a working example of a number of cool features
My application contains the following features:
- The metro design is used throughout the app, while the main page is showcased using the panorama design.
- Fast navigation between pages.
- Articles classified by date.
- Play YouTube videos.
- A description of each team member, including a display of the author name & image on each author’s page. Also included is the option to send the author an email.
- Article links can be shared on Twitter, Windows Live, Facebook, or by email.
- The application bar contains shortcuts to the Facebook page and the Twitter page of the website.
- The About page provides a way to send an email and to write a review of the app.
- Option to automatically refresh articles when the application launches.
The following list contains advanced features:
- Offline mode. Articles can be read even when no internet connection is available.
- Unlimited space for saving articles, which can then be accessed using the Saved Articles page.
- Articles can be periodically downloaded(every ~4 hours) in the background, even when the app is not running. This feature does not require server support.
- Toast notification will display the number of new articles available, and a badge count in the application live tile will also display this number.
- The back of the live tile will display the latest article title.
It also relies on a number of open source libraries;
Open source libraries
I used three open source libraries that are well known in the developer community:
- GalaSoft MvvmLight (http://mvvmlight.codeplex.com/): Used to architecture a modular application and to easily add future features.
- Newtonsoft.Json (http://json.codeplex.com/): Used to save and love articles for the offline mode.
- Silverlight Toolkit (http://silverlight.codeplex.com/): Used for hub tile control and for the optimized list control.
The source (which you can get by clicking through and scrolling to the bottom of the page, compiled and ran for me the vey first time, with no hassles or tweaks.
Here's a snap of it running on my machine;
Here's a snap of the Solution;
What can you do with the source files of the application?
Simple answer: create your own news application! The source files provided are the best starting point to get your news application ready. The mechanism is ready and your tasks are:
- Replace the assets in the Assets folder of the WinSource assembly.
- Modify the classes in the WinSource.Client assembly in order to fetch the article descriptions and videos from your news source.
- Remove or add sections in the Panorama.
Also, if you read the code you can learn a lot about the Windows Phone SDK and about some best practices. The application is more complete than the ones in the MSDN samples.
I think that sums it up well. There's a good bit you can learn from in this app, from MVVM, to keeping your UI responsive when doing network calls to interfacing with Facebook/Twitter and more. And that's nice is that you can leverage this code and knowledge if you're building apps for other platforms like Windows 8 or WPF on Windows 7...