Sense RSS Tab Project
- 1 Welcome to the RSS Tab Developer Wiki
- 1.1 RTFM - Read The Fantastic Manual
- 1.2 Installation
- 1.3 Themes, Icons & Colours
- 1.4 RSS Feed Tips and Guides
- 1.5 Related Projects
- 1.6 Development Progress
- 1.7 Concepts and Ideas
Welcome to the RSS Tab Developer Wiki
Back to WM6 HTC Sense Developer Wiki
The plan is for this project will be open as possible and allow new developers to have a go, I would like to make this accessible as possible. There is plenty which can be done, by all ranges of skill levels so have a look through and give things a try and ask some questions if you get stuck. The aim initially is to develop a fully working RSS Tab, which everyone can add and contribute to then, using the same methods, many other tabs can be created.
This wiki page will contain the details for the project when it has started. Until the project has started properly the role of the wiki and thread is yet to become clear.
This page is open for editing, so please edit as you see fit
- This is an open project so please post ideas and concepts on here or on the Development Thread
- Modifying manila means various levels of messing around with the files on the device so, as with most of the mods on here, back-up often and be prepared to screw it up and hard-reset your device. All the changes explained here may or may-not work on your particular device/version of manila or perhaps it's just not going to happen today.
RTFM - Read The Fantastic Manual
This tab is under development, as such, it is changing so although I will attempt to keep this manual up to date, the code will always change first. If you feel you can add something useful (a tip, screenshot etc) then please go ahead.
Themes, Icons & Colours
The following wiki has details on how to change the tab to fit in with any theme.
RSS Feed Tips and Guides
The following wiki will explain RSS Feeds in more detail and useful ways you can use them (plus how to generate your own!).
I-RSS_Project Windows Phone 7 - I-RSS Reader App Wiki Page
What can it do?
Once set up, the tab will display your list of feeds from the RSSHub directly in sense and allow you to view the list of items in the feed and then you can view a particular item and/or play a previously downloaded podcast file (video etc).
The tab is very much under-development, which means I am focusing on building in the important functions and features at the moment, extra features will be added over time.
Presently, the tab will not change anything in your RSSHub files, so an unread item will stay unread and your files will not be harmed (the tab will only create some thumbnails etc in sub directories of the Channel Data folder). I might even keep this as an option even when the ability to update such things are completed.
There are a number of areas which will be improved over time, such as: Settings - as more options and settings are supported, they will be configured via the settings pages of the tab Additional features and functions will be developed.
However it does demonstrate the mechanism by which the tab can function with a bit more coding and time.
How does it work?
To the side is rough idea of how it could work, the current code isn't quite the same but the concept is based on the same design.
The concept tab works by using two separate sections, the tab itself (coded in Sense - mode9 & lauc files) which displays what it is told to and returns user actions/events to a utility program (coded in C# compact .Net) which controls what things should be displayed and ensures the data is changed according to the user actions and events. The facebook tab kinda uses the same idea but on a smaller scale at the moment.
To ease development and perhaps to allow better integration the tab is using the RSSHub data as a data source, whether the final tab will create it's own data source or update and maintain the RSSHub one we shall have to see what the best option is.
To Do List
Please add features and items which you feel will be important for future versions of the Tab
Obviously I can not promise I will implement any particular features or in what order I tackle them, but it is useful to know which items people are missing most. If your the item needs a little more information, then please put further detail in the concept section too.
- Display & Update Read/UnRead Items (option to set All in 2.1 for Donated Users)
- Improved item view (working internal links, next/previous item selection - 2.0 Improved)
- Filtering of feeds according to the selected category's (2.2 Done!)
- Provide ordering options (chronological, read/unread, media attached)
- Full settings pages (2.0 Done!)
- Tab Text Colour Customisation (beyond the GTXTheme option) (2.0 Done!)
- Static Header (optional, perhaps with different layout choices) (2.0 Improved)
- Direct download updates of feeds (4.Beta.0 Done)
- Manage feeds, add/remove etc
- Download Options (see concepts below)
- Archive old items (see concepts below)
- Streamline, xml reading
- Remove the facebook related "junk" from the sense files
- Replace media icons with better (will need to extend icon top/bottom for each feed item, may need different icon for each ViewMode if height changes)
Concepts and Ideas
Feel free to add ideas to this section (add user name to each point so comments can be added by others):
- It is intended that related podcast media can be downloaded and viewed directly from the tab, via side icon.meltwater
- Will require detection of which item has been pressed and within which region (i.e. media icon -> play or text -> details). so far able to detect horizontal position of mouse when clicked but not vertical within the selected item itself (so icon may need to cover top-bottom of the selected item) meltwater
- Requires tab to check for media file type and status to display correct icon (status information included in reg data) meltwater
- Not only would I like the tab to support offline browsing of the feed information, and related (Podcast) media but also to scan the details for links to pictures etc and ensure they are viewable offline too (rather than embedded links). meltwater
- Idea to have layers to move up and down within (data/layout selection handled by supporting app). Top layer will show Categories of feeds, next down (by selecting one) will show each feed, next down (again by selecting one) will show each feed item and then finally the full detail of the feed (with final link to online page etc). To go up, perhaps the top header on each page will link to the level up etc. meltwater
Categories of feeds <-> RSS Feeds <-> RSS Feed Items <-> Item Detail \--->Category Setting \--->Feed Setting \---> Download/Play Media \---> Go Online to feed page
- Some feeds only return the last 10 or 20 items, which means when you update you lose the older items. I hope to have a feature which will allow you to automatically save all previous or all unread items into an archive for each channel, so that they are not replaced. I find quite often I am reluctant to update a feed since I have not finished reading the current entries, so this will be a useful feature. meltwater
5. Cached Levels
- Depends on how the data transfer works out which changing between levels, although option to hold data for the level above still in registry if required. meltwater
6. Custom Search RSS Feeds Bing search has a useful feature (well it has to have something useful) which allows search results to be reported as a RSS Feed. Details on Bing Search
We can make use of this to generate feeds as follows: http://www.bing.com/search?q=RSSTab+Sense+Project+site:forum.xda-developers.com&format=rss
You can also create feeds via Google, using Google Alerts. These custom feeds appear to include better quality feed items, but results appear to be limited.
7. Wall of Images
For feeds which include images for each post item, the option to view the whole feed as a wall of images may be interesting, where selecting a particular image takes you to that feed. Possible this could be extended to feeds which include Tag words too. meltwater
8. Automatic/Manual Update Via Feed
More than an "idea" this should be available in the next release. The tab will check the version number stored matches the latest feed item and if it is different the tab can use the attached link to download the latest version. meltwater
9. Feed of feeds
I will experiment at some point with a "feed of feeds"...the idea being that new podcasts and rss feeds will be put in a feed and the RSSTab will then detect the feed urls in the rss posts and give you the option to add it to your feeds. It could be an interesting way to share and enjoy new rss feeds and podcasts. The processing of this shouldn't be much different to using an opml file. I've not seen it before, but I would be interested to know if it has been done or not. meltwater
RSS Tab Graphical concepts
Concept by Drakknar
- Template 1: Update button on the top for easy updating of the RSS Tab; status panel with new and unread feeds to give the user full informations about his feeds; Highlights panel for quick view of new feeds; Updates panel for a list of all the remaining feeds (the ones in bold are still unread). In the Home Conept #1 there is also a "Movie button" for quick view of podcasts and embedded videos.
- Template 2: Update button on the top for easy updating of the RSS Tab; Simplified status panel with unread feeds count; Highlights panel for quick view of new feeds (with unread/total counter); Updates panel for a list of all the remaining feeds (with unread/total counter; the ones in bold are still unread). In the Home Conept #2 alt there is also a "Movie button" for quick view of podcasts and embedded videos.
Control Design Ideas
App Calls (made by the sense tab on user action):
RSSUtil.exe -HeaderSelected RSSUtil.exe -HeaderSelectedLink RSSUtil.exe -ItemSelected -n RSSUtil.exe -ItemSelectedLink -n
Page Status & Control (set by and read by the sense code and the supporting app):
RSSFeed.RefreshState 0 - None [Set by SenseTab following screen refresh] 1 - Wait for RSSUtil [Set by SenseTab following request which needs new data] 2 - Processing data [Set by RSSUtil to indicate it is working on getting the data] 3 - Data ready [Set by RSSUtil to indicate it has finished and SenseTab can refresh the screen] RSSFeed.ViewMode Each page will have one or more layouts suited to the data, the RSSUtil will select the correct one for the data. RSSFeed.PageLevel Determines if Categories, RSS Feed List, RSS Item List or RSS Item Detail etc is currently active. Used by the RSSUtil to determine action on receiving ItemSelected call etc and what ViewMode to set. 2=feed list [view of each of the available feeds] 1=item list [view of all the items within a feed] 0=item detail [view of a particular item within a feed]
The sense tab shall send events to the RSSUtil application, stating which item has been selected and wait until signalled via RSSFeed.RefreshState to refresh (which will re-load the screen with the new data). The RSSUtil will determine the action required in response to the indicated item (open feed list, play file etc). This way the sense tab will stay as generic as possible with the main control made by the RSSUtil.
File Location & Handling Ideas
The storage of the image files (for icons and feeds) will be carefully handled to avoid repeated processing.
Feed list icons:
- created from ChXXX-Logo.img files located in the RSS Hub data location, or from feed url details: \Storage Card\Program Files\RSSHub\ChannelData\
- resized & converted to png or jpg to fit the correct icon size on the right hand side of the feed list
- stored in the following location ChannelData\FeedIcons\ChXXX-Logo.png [XXX=feed id number]
Process for setting icon location in registry:
- Check ChannelData\FeedIcons\ChXXX.png for file.
- If not present, check ChannelData\ChXXX.img for file, if present, resize and store in ChannelData\FeedIcons\ChXXX.png
- If not present, download new icon from feed XML url details [...find object in code...], store file in ChannelData\ChXXX.img and then process as above.
- created from feed item embedded urls
- downloaded to: ChannelData\FeedImages\ChXXX\YYYImZZZ.jpg etc [XXX=feed id number, YYY=feed item number, ZZZ=feed image number]
Process for fetching and displaying images in a feed item:
- Check ChannelData\FeedImages\ChXXX\YYYImZZZ.jpg
- If present, over-ride url in feed item to display local version
- If not present, download image and then display local version. [or display directly - perhaps as an option]
Ideally images will be checked for and downloaded as part of the general feed update process. Filenames, may instead be set to the filename of the file in the feed, this will avoid re-downloading the same/similar files.
Location of files in folders could be based upon the number of images per a feed item, i.e. more than 5 gets a feeditem specific folder, otherwise a single folder for the whole feed.
Will aim to provide the following levels of options for viewing pages & caching data:
RSSFeed.DataDownload 0 - Do not download any external data (look for and use local cached data only) 1 - Download any missing data as required (i.e on view) 2 - Download and store images for RSS Feed Item on view 3 - Pre-download images for whole RSS Feed on feed listing 4 - Pre-download images for whole RSS Feed on update 5 - Download and store images and linked webpage html on view 6 - Pre-download images & linked webpage for whole RSS Feed on feed listing 7 - Pre-download images & linked webpage for whole RSS Feed on update
Management of the data which has been downloaded should be provided with indication of the space taken up etc.
There are two options for this:
1. Single Updated Feed File
The tab will maintain a copy of the ChXXX.xml feed file which will be updated when the original feed is updated, if enabled, any items which need to be achieved will then be inserted into this file (by looking for items which aren't in the copy). The original feed file could then be updated to include these extra items, so they would then appear in RSSHub too.
2. Separate Archive Feed File
The tab will keep a separate Archive file which will be updated when a copy of the feed file does not match the RSSHub version. Any items which have been removed will be inserted into the Archive file. Would make it easy to remove an archive by simply deleting the file, as well as identify items within the archive. Archive items could still be re-inserted back into the feed, but might make things quite complicated.