Plasma/libplasma2/API Review/DataEngine: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
=API= | |||
{| cellspacing="0" cellpadding="5" border="1" style="border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;" class="sortable" | {| cellspacing="0" cellpadding="5" border="1" style="border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;" class="sortable" | ||
|- style="background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;" | |- style="background: rgb(236, 236, 236) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; white-space: nowrap;" | ||
Line 56: | Line 57: | ||
|} | |} | ||
=DataEngine functionality currently:= | |||
* Timed updates | |||
* Ease of item creation and update | |||
* Item destruction when not used | |||
* Service integration | |||
=DataEngine functionality missing:= | |||
* Introspection / self-documenting structures | |||
* Ability to represent as model internally | |||
=QML Access= | |||
* Can haz a model? | |||
DataEngine { | |||
public: | |||
QAbstractItemModel *model() const; | |||
} | |||
DataSource { | |||
engine: “keystate” | |||
sources: “*Button” | |||
fields: {“Pressed”} | |||
} | |||
Source Data | |||
Windows Model | |||
Source Data Service | |||
Account Model Posting service | |||
Twitter tweets posting | |||
identi.ca 1 dents posting | |||
identi.ca 2 dents posting | |||
avatars model { name : picture } | |||
TwitterModel *model = new TwitterModel(“twitter account foo”); | |||
setData(“twitter account foo”, model); | |||
bool pressedState = false; | |||
setData(“key”, “pressed”, pressedState); | |||
DataContainer -> model, or contains a model … | |||
=What do we want?= | |||
- lifecycle management | |||
- ondemand creation | |||
- keep existing API (setData, service-related stuff) | |||
- make it easy to use “3rd party models” (e.g. some akonadi model) | |||
What should be a model | |||
akonadi - Akonadi PIM data engine | |||
applicationjobs - Application job updates (via kuiserver) | |||
apps - Information and launching of all applications in the app menu. | |||
calendar - Calendar data engine | |||
comic - Online comic strips | |||
devicenotifications - Passive device notifications for the user. | |||
dict - Look up word meanings | |||
executable - Run Executable Data Engine | |||
favicons - Data Engine for getting favicons of web sites | |||
filebrowser - Information about files and directories. | |||
geolocation - Geolocation Data Engine | |||
hotplug - Tracks hot-pluggable devices as they appear and disappear. | |||
kdeobservatory - A Data Engine for acquiring consolidated data about KDE projects | |||
keystate - Keyboard modifier and mouse buttons states | |||
kget - No description available | |||
kimpanel - DataEngine for Kimpanel | |||
kremotecontrol - Data engine for kremotecontrol | |||
ktorrent - KTorrent data engine, for getting information from KTorrent | |||
metadata - No description available | |||
microblog - identi.ca and twitter micro-blogging services | |||
mixer - No description available | |||
mouse - Mouse position and cursor | |||
mpris2 - Provides information from and control over media players via MPRIS2 | |||
network - Network interface information | |||
networkmanagement - Network Manager data engine | |||
notifications - Passive visual notifications for the user. | |||
nowplaying - Lists currently playing music | |||
obsdataengine - DataEngine to make API Calls to the Open Build Service | |||
ocs - No description available | |||
openstreetmap - The OpenStreetMap data engine can be used to query things near the user. | |||
org.kde.active.apps - Information and launching of all applications in the app menu. | |||
org.kde.active.bookmarks - Bookmarks from Nepomuk | |||
org.kde.active.capabilities - Provides information and services for device-specific aspects | |||
org.kde.active.customsearch - Provides metadata for custom searches in semantic resources | |||
org.kde.active.metadata - Provides metadata for semantic resources | |||
org.kde.active.persons - Provides metadata for custom searches in semantic resources | |||
org.kde.activities - Information on Plasma Activities | |||
org.kde.alarms - List and set Akonadi Alarms | |||
org.kde.devicecapabilities - Provides information and services for device-specific aspects | |||
org.kde.examples.customDataContainers - A demonstration of how to subclass DataContainer | |||
org.kde.examples.simpleEngine - A very basic DataEngine implementation | |||
org.kde.examples.sourcesOnRequest - A DataEngine example showing how to respond to requests for source creation and updates | |||
org.kde.konqprofiles - List and launch Konqueror profiles | |||
org.kde.konsoleprofiles - List and launch Konsole profiles | |||
org.kde.mobilenetworkengine - Mobile network engine | |||
org.kde.mobileprofileengine - No description available | |||
org.kde.plasma.dataengine.share - Engine to share content using different services | |||
org.kde.preview - Shows previews for webpages | |||
org.kde.printers - No description available | |||
org.kde.printjobs - No description available | |||
org.kde.runner - Query KRunner and execute the results | |||
org.kde.sharelikeconnect - Provider of actions for sharing resources | |||
parley - Vocabulary data for Plasmoids | |||
places - Places, as seen in the file manager and in file dialogs. | |||
potd - Data Engine for getting various online Pictures of The Day. | |||
powermanagement - Battery, AC, sleep and PowerDevil information. | |||
publictransport - Plasma data engine for public transport | |||
rss - RSS News Data Engine | |||
rtm - An engine to work with Remember the Milk. | |||
searchlaunch - Engine to handle queries to SAL containment | |||
soliddevice - Device data via Solid | |||
statusnotifieritem - Engine for applications' status information, based on the Status Notifier protocol. | |||
systemmonitor - System status information | |||
tasks - Information and management services for all available windows. | |||
time - Date and time by timezone | |||
weather - Weather data from multiple online sources | |||
workareas - Workareas Data Engine, as described in the WorkFlow Project |
Revision as of 17:36, 25 March 2013
API
Status | Action | Method | |
---|---|---|---|
TO DO | Remove | explicit DataEngine(QObject *parent , KService::Ptr service); | <{{{3}}}> |
TO DO | Add | explicit DataEngine(QObject *parent, const KPluginInfo &info); | <{{{3}}}> |
TO DO | Remove | DataEngine(QObject *parent, const QVariantList &args); | <{{{3}}}> |
DONE | Keep | ~DataEngine(); | |
TO DO | Remove? | virtual void init(); can be removed is there will be only one constructor | <{{{3}}}> |
DONE | Keep | virtual QStringList sources() const; | |
DONE | Keep | virtual Service *serviceForSource(const QString &source); | |
TO DO | Add | KPluginInfo pluginInfo() const; | <{{{3}}}> |
TO DO | Remove | QString name() const; | <{{{3}}}> |
TO DO | Remove | QString icon() const; | <{{{3}}}> |
TO DO | Remove | QString pluginName() const; | <{{{3}}}> |
DONE | Keep | void connectSource(const QString &source, QObject *visualization, uint pollingInterval, Plasma::IntervalAlignment intervalAlignment ) const; | |
DONE | Keep | void connectAllSources(QObject *visualization, uint pollingInterval, Plasma::IntervalAlignment intervalAlignment) const; | |
DONE | Keep | void disconnectSource(const QString &source, QObject *visualization) const; | |
DONE | Keep | DataContainer *containerForSource(const QString &source); | |
TO DO | Remove | DataEngine::Data query(const QString &source) const; | <{{{3}}}> |
DONE | Keep | bool isValid() const; | |
DONE | Keep | bool isEmpty() const; | |
DONE | Keep | Package package() const; | |
TO DO | Remove | Service* createDefaultService(QObject *parent ); | <{{{3}}}> |
TO DO | Move | static QStringList listAllEngines(const QString &parentApp); -> in PluginLoader | <{{{3}}}> |
TO DO | Move | static KPluginInfo::List listEngineInfo(const QString &parentApp); -> in PluginLoader | <{{{3}}}> |
TO DO | Move | static KPluginInfo::List listEngineInfoByCategory(const QString &category, const QString &parentApp); | <{{{3}}}> |
DONE | Keep | void sourceAdded(const QString &source); | |
DONE | Keep | void sourceRemoved(const QString &source); | |
DONE | Keep | virtual bool sourceRequestEvent(const QString &source); | |
DONE | Keep | virtual bool updateSourceEvent(const QString &source); | |
DONE | Keep | void setData(const QString &source, const QVariant &value); | |
DONE | Keep | void setData(const QString &source, const QString &key, const QVariant &value); | |
TO DO | Signature | void setData(const QString &source, const Data ->QHash<QString, QVariant> &data); -> Data becomes QHash<QString, QVariant> | <{{{3}}}> |
DONE | Keep | void removeAllData(const QString &source); | |
DONE | Keep | void removeData(const QString &source, const QString &key); | |
DONE | Keep | void addSource(DataContainer *source); | |
DONE | Keep | void setMinimumPollingInterval(int minimumMs); | |
DONE | Keep | int minimumPollingInterval() const; | |
DONE | Keep | void setPollingInterval(uint frequency); | |
DONE | Keep | void removeAllSources(); | |
DONE | Keep | void setValid(bool valid); | |
TO DO | Signature | SourceDict -> QHash<QString, DataContainer*> containerDict() const; | <{{{3}}}> |
DONE | Keep | void timerEvent(QTimerEvent *event); | |
TO DO | Remove | void setName(const QString &name); | <{{{3}}}> |
TO DO | Remove | void setIcon(const QString &icon); | <{{{3}}}> |
TO DO | Remove | void setDefaultService(const QString &serviceName); | <{{{3}}}> |
DONE | Keep | void setStorageEnabled(const QString &source, bool store); | |
TO DO | Move | slot void scheduleSourcesUpdated(); -> to private class | <{{{3}}}> |
DONE | Keep | slot void removeSource(const QString &source); | |
DONE | Keep | slot void updateAllSources(); | |
DONE | Keep | slot void forceImmediateUpdateOfAllVisualizations();
|
DataEngine functionality currently:
* Timed updates * Ease of item creation and update * Item destruction when not used * Service integration
DataEngine functionality missing:
* Introspection / self-documenting structures * Ability to represent as model internally
QML Access
* Can haz a model?
DataEngine { public:
QAbstractItemModel *model() const;
}
DataSource {
engine: “keystate” sources: “*Button” fields: {“Pressed”}
}
Source Data
Windows Model
Source Data Service Account Model Posting service
Twitter tweets posting identi.ca 1 dents posting identi.ca 2 dents posting avatars model { name : picture }
TwitterModel *model = new TwitterModel(“twitter account foo”); setData(“twitter account foo”, model);
bool pressedState = false; setData(“key”, “pressed”, pressedState);
DataContainer -> model, or contains a model …
What do we want?
- lifecycle management - ondemand creation - keep existing API (setData, service-related stuff) - make it easy to use “3rd party models” (e.g. some akonadi model)
What should be a model
akonadi - Akonadi PIM data engine
applicationjobs - Application job updates (via kuiserver)
apps - Information and launching of all applications in the app menu.
calendar - Calendar data engine
comic - Online comic strips
devicenotifications - Passive device notifications for the user.
dict - Look up word meanings
executable - Run Executable Data Engine
favicons - Data Engine for getting favicons of web sites
filebrowser - Information about files and directories.
geolocation - Geolocation Data Engine
hotplug - Tracks hot-pluggable devices as they appear and disappear.
kdeobservatory - A Data Engine for acquiring consolidated data about KDE projects
keystate - Keyboard modifier and mouse buttons states
kget - No description available
kimpanel - DataEngine for Kimpanel
kremotecontrol - Data engine for kremotecontrol
ktorrent - KTorrent data engine, for getting information from KTorrent
metadata - No description available
microblog - identi.ca and twitter micro-blogging services
mixer - No description available
mouse - Mouse position and cursor
mpris2 - Provides information from and control over media players via MPRIS2
network - Network interface information
networkmanagement - Network Manager data engine
notifications - Passive visual notifications for the user.
nowplaying - Lists currently playing music
obsdataengine - DataEngine to make API Calls to the Open Build Service
ocs - No description available
openstreetmap - The OpenStreetMap data engine can be used to query things near the user.
org.kde.active.apps - Information and launching of all applications in the app menu.
org.kde.active.bookmarks - Bookmarks from Nepomuk
org.kde.active.capabilities - Provides information and services for device-specific aspects
org.kde.active.customsearch - Provides metadata for custom searches in semantic resources
org.kde.active.metadata - Provides metadata for semantic resources
org.kde.active.persons - Provides metadata for custom searches in semantic resources
org.kde.activities - Information on Plasma Activities
org.kde.alarms - List and set Akonadi Alarms
org.kde.devicecapabilities - Provides information and services for device-specific aspects
org.kde.examples.customDataContainers - A demonstration of how to subclass DataContainer
org.kde.examples.simpleEngine - A very basic DataEngine implementation
org.kde.examples.sourcesOnRequest - A DataEngine example showing how to respond to requests for source creation and updates
org.kde.konqprofiles - List and launch Konqueror profiles
org.kde.konsoleprofiles - List and launch Konsole profiles
org.kde.mobilenetworkengine - Mobile network engine
org.kde.mobileprofileengine - No description available
org.kde.plasma.dataengine.share - Engine to share content using different services
org.kde.preview - Shows previews for webpages
org.kde.printers - No description available
org.kde.printjobs - No description available
org.kde.runner - Query KRunner and execute the results
org.kde.sharelikeconnect - Provider of actions for sharing resources
parley - Vocabulary data for Plasmoids
places - Places, as seen in the file manager and in file dialogs.
potd - Data Engine for getting various online Pictures of The Day.
powermanagement - Battery, AC, sleep and PowerDevil information.
publictransport - Plasma data engine for public transport
rss - RSS News Data Engine
rtm - An engine to work with Remember the Milk.
searchlaunch - Engine to handle queries to SAL containment
soliddevice - Device data via Solid
statusnotifieritem - Engine for applications' status information, based on the Status Notifier protocol.
systemmonitor - System status information
tasks - Information and management services for all available windows.
time - Date and time by timezone
weather - Weather data from multiple online sources
workareas - Workareas Data Engine, as described in the WorkFlow Project