RSSReader

Differences between revisions 19 and 27 (spanning 8 versions)
Revision 19 as of 2013-06-19 03:06:27
Size: 8907
Editor: t108-6
Comment:
Revision 27 as of 2015-07-10 19:24:03
Size: 68
Editor: 173-109-70-164
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
<<Include(Touch/Menu)>>

## page was renamed from UbuntuPhone/CoreApps/RSSReader
<<Include(Touch/CoreApps/Contents)>>

= RSS Reader =

||<tablestyle="float:right; font-size: 0.9em; width:40%; background:#F1F1ED; margin: 0 0 1em 1em;" style="padding:0.5em;"><<TableOfContents>>||

This web page is where we are coordinating the work to build an '''RSS Reader''' application for the Ubuntu Phone that could also extend to other form factors too with the responsive design features built into the [[http://developer.ubuntu.com/get-started/gomobile/|Ubuntu SDK]]

||<tablestyle="font-size: 0.9em; width:40%; background:#F1F1ED; margin: 0 0 1em 1em;" style="padding:0.5em;" colspan="2">'''The Details'''||
|| Launchpad Project || [[https://launchpad.net/ubuntu-rssreader-app|ubuntu-rssreader-app]] ||
|| Launchpad Team || [[https://launchpad.net/~ubuntu-rssreader-dev|ubuntu-rssreader-dev]] ||
|| IRC Channel || [[http://webchat.freenode.net/?channels=%23ubuntu-touch|#ubuntu-touch]] on Freenode ||
|| Blueprint || [[https://blueprints.launchpad.net/ubuntu-phone-commons/+spec/initial-rssreader-development|initial-rssreader-development]] ||
|| Burndown Chart|| [[http://status.ubuntu.com/coreapps-13.10/ubuntu-rssreader-dev.html|coreapps-13.10]] ||

== Release Schedule ==

||<tablestyle="font-size: 0.9em; width:40%; background:#F1F1ED; margin: 0 0 1em 1em;" style="padding:0.5em;">'''Date''' || '''Milestone''' || '''Release''' ||
|| 2013-04-15 || [[http://status.ubuntu.com/coreapps-13.10/ubuntu-rssreader-dev-coreapps-13.10-month-0.html|coreapps-13.10-month-0]] || ||
|| 2013-05-15 || [[http://status.ubuntu.com/coreapps-13.10/ubuntu-rssreader-dev-coreapps-13.10-month-1.html|coreapps-13.10-month-1]] || ||
|| 2013-06-15 || [[http://status.ubuntu.com/coreapps-13.10/ubuntu-rssreader-dev-coreapps-13.10-month-2.html|coreapps-13.10-month-2]] || Alpha ||
|| 2013-07-15 || [[http://status.ubuntu.com/coreapps-13.10/ubuntu-rssreader-dev-coreapps-13.10-month-3.html|coreapps-13.10-month-3]] || ||
|| 2013-08-15 || [[http://status.ubuntu.com/coreapps-13.10/ubuntu-rssreader-dev-coreapps-13.10-month-4.html|coreapps-13.10-month-4]] || Beta ||
|| 2013-09-15 || [[http://status.ubuntu.com/coreapps-13.10/ubuntu-rssreader-dev-coreapps-13.10-month-5.html|coreapps-13.10-month-5]] || Final ||
|| 2013-10-15 || [[http://status.ubuntu.com/coreapps-13.10/ubuntu-rssreader-dev-coreapps-13.10-month-6.html|coreapps-13.10-month-6]] || ||


== Meetings ==

Meetings are held in the #ubuntu-touch channel on Freenode IRC.

 * Next Meeting:
  * TDB
 * Previous Meetings:
  * [[Touch/CoreApps/RSSReader/Meetings#A2013-02-19|2013-02-19]]


== User Stories ==

'''Note''': please don't add user stories here. We are defining these as a limited set to keep the scope more limited to get out a first version.

 * Must Have: I want to see a specific RSS feed
 * Must Have: I want to manage my feeds (add, modify, delete)
 * Must Have: I want to view a list of my current feeds
 * Should/Could Have: Share feed, tagged list etc.
 * Should/Could Have: Tagging?
 * Could Have: Add page as a bookmark (i.e. before opening the url in a browser)

== Functional Requirements ==

'''Note''': likewise, please don't add functional requirements here. We are defining these as a limited set to keep the scope more limited to get out a first version.


 * Sync/update a feed
 * Managing feeds (e.g. configuration)
 * Select a feed from a list for viewing
 * Select an entry from the currently viewed feed
 * Should/Could Have: Add tags to records
 * Should/Could Have: View list based on tags

== Design ==

Some early designs based on the mockups from MyBalsamiq have been added below:

=== Article List View ===

{{attachment:today.png||width=50%}}

[[http://dragly.org/projects/ubuntu-rss-reader/design/alpha/today.png|News feed]], by dragly

=== Article Content view ===

{{attachment:toolbar.png||width=20%}}

[[http://dragly.org/projects/ubuntu-rss-reader/design/alpha/toolbar.png|Content view with toolbar]], by dragly

=== Add Feed ===

 * Needed

=== Edit Feed ===

 * Needed

=== Delete Feed ===

 * Needed

=== Filter list by Feed ===

 * Needed

=== Add Tag ===

 * Needed

=== Edit Tag ===

 * Needed

=== Delete Tag ===

 * Needed

=== Tag/Untag an Article ===

 * Needed

=== Filter list by Tags ===

 * Needed

=== How To Add Your Design ===

<<Include(Touch/CoreApps/AddDesign)>>

== Implementation ==

 * Contributors: [[LaunchpadHome:qqworini|Joey Chan]]

=== Architecture ===
 * I assume that pure qml is the primary solution for Ubuntu touch development, so the architecture I talk about here is base on pure qml

==== Database ====

===== Description =====
database is one of the most important part of RSS project, because most of functions depend on the data stored in the database. For example, RSS feeds should be stored in the database in case no Internet access available, and management of those feeds.

===== Functions =====
 * feeds management, like add, modify or delete feeds;
 * offline mode, like reed the RSS feeds after download them;
 * tags(kind of category), like tag a feed as “Ubuntu”, so this feed belongs to “Ubuntu” category;
 * favourite, mark an item of an RSS feed, this item should be save into database;
 * etc.

===== Implementation =====
 * `QtQuick.LocalStorage` can be a good solution, some say it works much slower than the C++, if so, we should consider other options;
 * Another good option is U1DB, which is a qml database plugin created by Canonical, stay tuned;

===== SQL code =====
CREATE TABLE IF NOT EXISTS article (
 id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
 title VARCHAR(99) NULL,
 link VARCHAR(99) NULL,
 content TEXT NULL,
 description TEXT NULL,
 pubdate INTEGER NULL,
 status char(1) NULL DEFAULT '0',
 favourite char(1) NULL DEFAULT '0',
 image VARCHAR(99) NULL,
 guid VARCHAR(99) NULL,
 feed_id INTEGER NULL,
 count INTEGER NULL DEFAULT 0
);

CREATE TABLE IF NOT EXISTS feed (
 id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
 source VARCHAR(99) NULL,
 title VARCHAR(99) NULL,
 link VARCHAR(99) NULL,
 description TEXT NULL,
 status char(1) NULL DEFAULT '0',
 pubdate INTEGER NULL,
 image VARCHAR(99) NULL,
 count INTEGER NULL DEFAULT 0
);

CREATE TABLE IF NOT EXISTS feed_tag (
 id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
 feed_id INTEGER NULL,
 tag_id INTEGER NULL,
FOREIGN KEY(feed_id) REFERENCES feed(id) on delete cascade
);

CREATE TABLE IF NOT EXISTS tag (
 id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
 name VARCHAR(99) NOT NULL UNIQUE
);

CREATE TABLE IF NOT EXISTS settings (
 id INTEGER,
 current_database_version VARCHAR(99) NULL,
 database_last_updated VARCHAR(99) NULL,
 view_mode char(1) NULL DEFAULT '0',
 update_interval INTEGER NULL DEFAULT 0,
 network_mode char(1) NULL DEFAULT '0'
);


==== Network ====

===== Description =====
 * network is important for RSS project because all data comes from Internet, so far I think the only function in this part is just “download feeds”.

===== Functions =====
 * download the content of RSS feeds, download the content of a xml file
 * download image for offline use

===== Implementation =====
 * XmlHttpRequest which is well known as Ajax could do this, but seems XmlHttpRequest in Qt5 is not the level 2 version which can download binary data directly.

 * We are waiting for a "powerful backend" created by the Ubuntu-SDK team, stay tuned;

 * 2013-06-18 updated:

we created a qml file as an alternative which contains xml download and xml parse functions, no image download function, will available in alpha version soon.

functions include:
xml downloader
download manager(list)
xml parser
store data to database

==== UI ====

===== Description =====
 * I assume that the UI structure use “tabs” as primary, we can put all main functions to these tabs

 * 2013-06-18 updated:
we have a concept from designer Lisette(from Canonical)

===== Functions =====
 * view RSS feeds
 * feeds management
 * tags
 * favourite (or read later)
 * setting
 * etc.....................

===== Implementation and designs =====
(concept from Lisette)

=== Main functions ===

==== View RSS feeds ====
(concept)

==== Feed management ====
Search, add, modify and delete RSS feeds.

==== Tags ====
Mark an RSS feed to classify it to a specific category.

==== Favourite (or read later) ====
Mark an item and save it to local database.

==== Settings ====
Settings of view mode, refresh interval, network access mode, database etc..

=== Next steps ===

==== Database design ====
Progress: done, bug fixing

==== Alpha release ====
We plan to release the alpha version within June, 2013
#REFRESH 0 https://developer.ubuntu.com/community/core-apps/shorts

Touch/CoreApps/RSSReader (last edited 2015-07-10 19:24:03 by 173-109-70-164)