Plasma/libplasma2/API Review: Difference between revisions
Line 25: | Line 25: | ||
bool isContainment() const; | bool isContainment() const; | ||
virtual bool isPopupShowing() const; | virtual bool isPopupShowing() const; | ||
QVariantList startupArguments() const; '''TODO''': templated config for startup | |||
bool hasFocus() const; | |||
void setFocus(Qt::FocusReason); | |||
==Configuration== | ==Configuration== | ||
Line 110: | Line 113: | ||
void activate(); | void activate(); | ||
bool hasAuthorization(const QString &constraint) const; | bool hasAuthorization(const QString &constraint) const; | ||
== Constructors == | |||
explicit Applet(QObject *parent = 0, const QString &serviceId = QString(), uint appletId = 0); | |||
Merge the following one into above explicit Applet(QObject *parent, const QString &serviceId, uint appletId, const QVariantList &args); | |||
explicit Applet(const KPluginInfo &info, QObject *parent = 0, uint appletId = 0); | |||
Applet(QObject *parent, const QVariantList &args); | |||
virtual void init(); | |||
== Associated Application == | |||
void setAssociatedApplication(const QString &string); | |||
void setAssociatedApplicationUrls(const QList<QUrl> &urls); | |||
QString associatedApplication() const; | |||
QList<QUrl> associatedApplicationUrls() const; | |||
bool hasValidAssociatedApplication() const; | |||
void runAssociatedApplication(); '''TODO''': ensure that setAssociatedApplication handles .desktop files | |||
== Other SIGNALS == | |||
=== Remove === | |||
void releaseVisualFocus(); | |||
void appletTransformedByUser(); | |||
void appletTransformedItself(); | |||
void appletDeleted(Plasma::Applet *applet); '''TODO''': fix usage in Containment | |||
== Sharing Widgets == | |||
Remote widgets will be completetely removed and eventually reimplemented again later from scratch. | |||
'''TODO''': a new and improved revisioned remove widgets (or probably just dataengines and services) system | |||
=== Remove === | |||
void publish(Plasma::AnnouncementMethods methods, const QString &resourceName); | |||
void unpublish(); | |||
bool isPublished() const; | |||
== To script engine == | |||
Move the following to the declarative scriptengine: | |||
void setBackgroundHints(const Plasma::BackgroundHints hint); | |||
Plasma::BackgroundHints backgroundHints() const; | |||
bool isBusy() const; | |||
void setBusy(bool busy); | |||
virtual void addAssociatedWidget(QWidget *widget); | |||
virtual void removeAssociatedWidget(QWidget *widget); | |||
void messageButtonPressed(const Plasma::MessageButton button); | |||
void showMessage(const QIcon &icon, const QString &message, const Plasma::MessageButtons buttons); | |||
SIGNAL void backgroundHintsChanged(Plasma::BackgroundHints backgroundHints); | |||
= Containment = | = Containment = |
Revision as of 14:57, 11 February 2013
Applet
QProperties
All Q_PROPERTY and Q_INVOKABLE will be removed from Applet, that is no more directly exposed in QML.
Bookkeeping
Keep
uint id() const; virtual FormFactor formFactor() const; -> not virtual virtual Location location() const; -> not virtual void setImmutability(const ImmutabilityType immutable); ImmutabilityType immutability() const; SIGNAL void immutabilityChanged(Plasma::ImmutabilityType immutable); bool hasFailedToLaunch() const; void setFailedToLaunch(bool failed, const QString &reason = QString()); -> TODO: show why the thing failed in the UI bool destroyed() const; virtual void destroy(); Containment *containment() const; NOTE: Containment is NOT an applet anymore ItemStatus status() const; → unslotify void setStatus(const ItemStatus stat); SIGNAL void newStatus(Plasma::ItemStatus status); -> TODO: change name to statusChanged
Remove
Plasma::AspectRatioMode aspectRatioMode() const; void setAspectRatioMode(Plasma::AspectRatioMode); bool isContainment() const; virtual bool isPopupShowing() const; QVariantList startupArguments() const; TODO: templated config for startup bool hasFocus() const; void setFocus(Qt::FocusReason);
Configuration
We should have a single configuration object binded to qml (either created by autogenerated qml, a model or a property hash)
KConfigGroup config() const; KConfigGroup globalConfig() const; ConfigLoader *configScheme() const;
Topic: can this be made flexible enough to replace config read/write? Topic: will need a global version (for globalConfig()) Topic: should we use QML for config, if so: how?
virtual void save(KConfigGroup &group) const; virtual void restore(KConfigGroup &group); virtual void configChanged(); -> to signal virtual void saveState(KConfigGroup &config) const; SIGNAL void configNeedsSaving(); bool hasConfigurationInterface() const; void setHasConfigurationInterface(bool hasInterface); void setConfigurationRequired(bool needsConfiguring, const QString &reason = QString()); bool configurationRequired() const; virtual void showConfigurationInterface();
Completely UI-specific, remove or move to scriptengine
void showConfigurationInterface(QWidget *widget); virtual void createConfigurationInterface(KConfigDialog *parent); bool isUserConfiguring() const Private class AppletConfigDialog is part of this
Utils
Keep
Package package() const; void updateConstraints(Plasma::Constraints constraints = Plasma::AllConstraints); void flushPendingConstraintsEvents(); virtual void constraintsEvent(Plasma::Constraints constraints);
Remove
DataEngine *dataEngine(const QString &name) const; QPoint popupPosition(const QSize &s) const; -> Dialog in bindings QPoint popupPosition(const QSize &s, Qt::AlignmentFlag alignment) const;
Metadata
Add
KPluginInfo pluginInfo() const;
Keep
QString name() const; -> becomes title() void setName(const QString &name) const; ->setTitle
To PluginLoader
Most metadata related functions will go into PluginLoader
static KPluginInfo::List listAppletInfo(const QString &category = QString(), const QString &parentApp = QString()); -> PluginLoader static KPluginInfo::List listAppletInfoForMimeType(const QString &mimetype); static KPluginInfo::List listAppletInfoForUrl(const QUrl &url); static QStringList listCategories(const QString &parentApp = QString(), bool visibleOnly = true);
just categories in PluginLoader? : currently stored in AppletPrivate::s_customCategories perhaps every shell should set what its categories are
void setCustomCategories(const QStringList &categories); QStringList customCategories() const;
Merged in PluginLoader::loadApplet: right now pluginloader instantiates only the right Applet*, it should try to load the package as well.
static Applet *loadPlasmoid(const QString &path, uint appletId = 0, const QVariantList &args = QVariantList());
static QString category(const QString &appletName); -> PluginLoader
QString icon() const; use case? QString category() const; QString pluginName() const;
Remove
static QString category(const KPluginInfo &applet); QFont font() const; bool shouldConserveResources() const;
Actions
Keep
virtual QList<QAction*> contextualActions(); QAction *action(QString name) const void addAction(QString name, QAction *action);
Remove
void setGlobalShortcut(const KShortcut &shortcut); KShortcut globalShortcut() const; void activate(); bool hasAuthorization(const QString &constraint) const;
Constructors
explicit Applet(QObject *parent = 0, const QString &serviceId = QString(), uint appletId = 0);
Merge the following one into above explicit Applet(QObject *parent, const QString &serviceId, uint appletId, const QVariantList &args);
explicit Applet(const KPluginInfo &info, QObject *parent = 0, uint appletId = 0); Applet(QObject *parent, const QVariantList &args); virtual void init();
Associated Application
void setAssociatedApplication(const QString &string); void setAssociatedApplicationUrls(const QList<QUrl> &urls); QString associatedApplication() const; QList<QUrl> associatedApplicationUrls() const; bool hasValidAssociatedApplication() const; void runAssociatedApplication(); TODO: ensure that setAssociatedApplication handles .desktop files
Other SIGNALS
Remove
void releaseVisualFocus();
void appletTransformedByUser(); void appletTransformedItself();
void appletDeleted(Plasma::Applet *applet); TODO: fix usage in Containment
Sharing Widgets
Remote widgets will be completetely removed and eventually reimplemented again later from scratch. TODO: a new and improved revisioned remove widgets (or probably just dataengines and services) system
Remove
void publish(Plasma::AnnouncementMethods methods, const QString &resourceName); void unpublish(); bool isPublished() const;
To script engine
Move the following to the declarative scriptengine:
void setBackgroundHints(const Plasma::BackgroundHints hint); Plasma::BackgroundHints backgroundHints() const; bool isBusy() const; void setBusy(bool busy); virtual void addAssociatedWidget(QWidget *widget); virtual void removeAssociatedWidget(QWidget *widget); void messageButtonPressed(const Plasma::MessageButton button); void showMessage(const QIcon &icon, const QString &message, const Plasma::MessageButtons buttons); SIGNAL void backgroundHintsChanged(Plasma::BackgroundHints backgroundHints);
Containment
Constructors
All still needed?
- explicit Containment(QObject *parent = 0, const QString &serviceId = QString(), uint containmentId = 0)
- Containment(QObject *parent, const QVariantList &args);
- private Containment(const QString &packagePath, uint appletId, const QVariantList &args);
Methods
- Applet *addApplet(const QString &name, const QVariantList &args = QVariantList(), const QRectF &geometry = QRectF(-1, -1, -1, -1)); Remove Geometry? not possible anymore
- void addApplet(Applet *applet, const QPointF &pos = QPointF(-1, -1)); Remove pos? (not possible anymore)
- void setScreen(int screen, int desktop = -1); Drop desktop? (that means dropping the per-virtual desktop views feature, it can be "emulated" with activities and would make things dramatically simpler)
- int desktop() const;
- int lastDesktop() const;
- void showContextMenu(const QPointF &containmentPos, const QPoint &screenPos);
- virtual void showDropZone(const QPoint pos);
- void contextMenuEvent(QContextMenuEvent *event);
- void keyPressEvent(QKeyEvent *event);
- void wheelEvent(QWheelEvent *event);
In PluginLoader?
- static KPluginInfo::List listContainments(const QString &category = QString(), const QString &parentApp = QString());
- static KPluginInfo::List listContainmentsOfType(const QString &type, const QString &category = QString(), const QString &parentApp = QString());
- static QStringList listContainmentTypes();
- static KPluginInfo::List listContainmentsForMimeType(const QString &mimeType);
Signals
- void toolBoxToggled();
- void toolBoxVisibilityChanged(bool);
- void showAddWidgetsInterface(const QPointF &pos); (cannot have a position, maybe not needed at all)
Corona
Methods
- Containment *containmentForScreen(int screen, int desktop = -1) const; Remove desktop?
- Containment *containmentForScreen(int screen, int desktop, const QString &defaultPluginIfNonExistent, const QVariantList &defaultArgs = QVariantList()); Remove desktop?
Still necassary?
- void setAppletMimeType(const QString &mimetype);
- QString appletMimeType();
- void setDialogManager(AbstractDialogManager *manager); DialogManager was fow main windows of config uis. If all config is going to be qml, this could go (alternative is that we do an AbstractDialogManager that is a declarative view: possible as well).
- AbstractDialogManager *dialogManager();
- QString preferredToolBoxPlugin(const Containment::Type type) const; Toolboxes, instead of plugin may come from the only corona QML package.
void setPreferredToolBoxPlugin(const Containment::Type type, const QString &plugin);
- void setDefaultContainmentPlugin(const QString &name); Default containment plugin also told in the one Corona QML package?
- void requestConfigSync(); Ugly api: are requestConfigSync and requireConfigSync still required both?
- void requireConfigSync();
Signals
- void releaseVisualFocus();