Jump to content

Plasma/libplasma2/API Review/DataEngine: Difference between revisions

From KDE Community Wiki
Notmart (talk | contribs)
No edit summary
Notmart (talk | contribs)
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