|
|
| Line 9: |
Line 9: |
| | * Akonadi (default) tag provider (Dmitry, in process) - '''basically done but the resource needs adaptation''' | | * Akonadi (default) tag provider (Dmitry, in process) - '''basically done but the resource needs adaptation''' |
| | * Use Tag class everywhere (Dmitry, in process) - '''done''' | | * Use Tag class everywhere (Dmitry, in process) - '''done''' |
| − | * Refactor the chain: KRss::Item should hold Akonadi::Item which in turn should hold shared_ptr<KRss::ItemPayload> (as payload) and make the RSS serializer plugin work with KRss::ItemPayload instead of KRss::Item (Dmitry) | + | * Refactor the chain: KRss::Item should hold Akonadi::Item which in turn should hold KRss::ItemPayload (as payload) and make the RSS serializer plugin work with KRss::ItemPayload instead of KRss::Item (Dmitry) - '''done''' |
| | * Finish the virtual RSS resource for managing virtual/search RSS feeds (Dmitry. The code floats around somewhere on my disk. There were two blockers on the Akonadi side - the DBus deadlocks and support for link/unlink jobs - which are finally resolved) | | * Finish the virtual RSS resource for managing virtual/search RSS feeds (Dmitry. The code floats around somewhere on my disk. There were two blockers on the Akonadi side - the DBus deadlocks and support for link/unlink jobs - which are finally resolved) |
| | * Proper handling of icons in feed/item/tag classes (Dmitry) | | * Proper handling of icons in feed/item/tag classes (Dmitry) |
| | * Replace the hard-coded values with consts ("application/rss+xml" and so on) (Dmitry) | | * Replace the hard-coded values with consts ("application/rss+xml" and so on) (Dmitry) |
| | * Use stl algorithms instead of Q_FOREACH (Dmitry) | | * Use stl algorithms instead of Q_FOREACH (Dmitry) |
| | + | * Split the item into 2 parts: Headers and Content (Dmitry) - '''done but ItemFetchJob is missing to load the item's content)''' |
| | | | |
| | == Long-term project goals == | | == Long-term project goals == |
Revision as of 20:28, 2 March 2009
Needs research
- What are possible settings for the resource?
- Read up on OPML/RSS/Atom spec (+ on the itunes podcast extension so we can set appropriate attributes; other extensions?)
- Possible Nepomuk RSS ontology (I found one on the web, not sure if it's correct)
TODO
- Akonadi (default) tag provider (Dmitry, in process) - basically done but the resource needs adaptation
- Use Tag class everywhere (Dmitry, in process) - done
- Refactor the chain: KRss::Item should hold Akonadi::Item which in turn should hold KRss::ItemPayload (as payload) and make the RSS serializer plugin work with KRss::ItemPayload instead of KRss::Item (Dmitry) - done
- Finish the virtual RSS resource for managing virtual/search RSS feeds (Dmitry. The code floats around somewhere on my disk. There were two blockers on the Akonadi side - the DBus deadlocks and support for link/unlink jobs - which are finally resolved)
- Proper handling of icons in feed/item/tag classes (Dmitry)
- Replace the hard-coded values with consts ("application/rss+xml" and so on) (Dmitry)
- Use stl algorithms instead of Q_FOREACH (Dmitry)
- Split the item into 2 parts: Headers and Content (Dmitry) - done but ItemFetchJob is missing to load the item's content)
Long-term project goals
- Port Akregator to this framework
- Create a generic RSS Akonadi resource that allows to easily add other types of RSS sources (RSS feeds from an Openchange server, online feed readers)
- Implement an RSS resource for the Newsgator.com online reader
- Get KDE4/Akonadi/this RSS framework up and running on my N800 so I can *finally* read feeds everywhere and sync them via NG.com
Bugs to track down
- aboutToQuit() is not called when manually removing the resource via akonadiconsole (tracked down). aboutToQuit() is called from within AgentBase::quit() so it's invoked only in the second case:
- When removing a resource via akonadiconsole the calling sequence is:
- AgentManager::removeInstance(instance)
- org::freedesktop::Akonadi::AgentManager::removeAgentInstance(id) - via D-Bus
- org::freedesktop::Akonadi::Agent::Control::cleanup() - via D-Bus
- When removing a resource at 'akonadictl stop' the calling sequence is:
- org::freedesktop::Akonadi::AgentManager::~AgentManager() - from akonadictl
- org::freedesktop::Akonadi::AgentManager::AgentManager::cleanup()
- org::freedesktop::Akonadi::Agent::Control::quit() - via D-Bus for every agent
Akonadi wishlist
Now at the core TODO-List