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

From KDE Community Wiki
No edit summary
No edit summary
Line 69: Line 69:
{{FeatureTodo|Remove| bool hasFocus() const;}}
{{FeatureTodo|Remove| bool hasFocus() const;}}
{{FeatureTodo|Remove| void setFocus(Qt::FocusReason);}}
{{FeatureTodo|Remove| void setFocus(Qt::FocusReason);}}
{{FeatureTodo|Remove| QFont font() const;}}


|}
|}
Line 92: Line 93:


= Metadata =
= Metadata =
== Add ==
{| cellspacing="0" cellpadding="5" border="1" style="border: 1px solid gray; border-collapse: collapse; text-align: left; width: 100%;" class="sortable"
      KPluginInfo pluginInfo() const;
|- 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;"


== Keep ==
! Status
        QString name() const;  -> becomes title()
! Action
        void setName(const QString &name) const; ->setTitle
! Method


== To PluginLoader ==
{{FeatureTodo|Add| KPluginInfo pluginInfo() const;}}
Most metadata related functions will go into PluginLoader
{{FeatureTodo|Rename| QString name() const;  -> becomes title()}}
 
{{FeatureTodo|Rename| void setName(const QString &name) const; ->setTitle()}}
        static KPluginInfo::List listAppletInfo(const QString &category = QString(),
{{FeatureTodo|Move to PluginLoader| static KPluginInfo::List listAppletInfo(const QString &category = QString(), const QString &parentApp = QString());  -> PluginLoader}}
                                                const QString &parentApp = QString());  -> PluginLoader
{{FeatureTodo|Move to PluginLoader| static KPluginInfo::List listAppletInfoForMimeType(const QString &mimetype);}}
        static KPluginInfo::List listAppletInfoForMimeType(const QString &mimetype);
{{FeatureTodo|Move to PluginLoader| static KPluginInfo::List listAppletInfoForUrl(const QUrl &url);}}
        static KPluginInfo::List listAppletInfoForUrl(const QUrl &url);
{{FeatureTodo|Move to PluginLoader| static QStringList listCategories(const QString &parentApp = QString(), bool visibleOnly = true);}}
        static QStringList listCategories(const QString &parentApp = QString(),
{{FeatureTodo|Move to PluginLoader| void setCustomCategories(const QStringList &categories); just categories in PluginLoader? : currently stored in AppletPrivate::s_customCategories perhaps every shell should set what its categories are}}
                                          bool visibleOnly = true);
{{FeatureTodo|Move to PluginLoader| QStringList customCategories() const;}}
 
{{FeatureTodo|Move to PluginLoader| static Applet *loadPlasmoid(const QString &path, uint appletId = 0,  const QVariantList &args = QVariantList()); -> Merged in PluginLoader::loadApplet: right now pluginloader instantiates only the right Applet*, it should try to load the package as well.}}
just categories in PluginLoader? : currently stored in AppletPrivate::s_customCategories perhaps every shell should set what its categories are
{{FeatureTodo|Move to PluginLoader| static QString category(const QString &appletName); -> PluginLoader}}
 
{{FeatureTodo|Remove| QString icon() const; '''Maybe''' there is an use case?}}
        void setCustomCategories(const QStringList &categories);
{{FeatureTodo|Remove| QString category() const;}}
        QStringList customCategories() const;
{{FeatureTodo|Remove| QString pluginName() const;}}
 
{{FeatureTodo|Remove| static QString category(const KPluginInfo &applet); }}
Merged in PluginLoader::loadApplet: right now pluginloader instantiates only the right Applet*, it should try to load the package as well.
{{FeatureTodo|Remove| bool shouldConserveResources() const;}}
        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 =
= Actions =

Revision as of 15:59, 11 February 2013

QProperties

All Q_PROPERTY and Q_INVOKABLE will be removed from Applet, that is no more directly exposed in QML.

Bookkeeping

Status Action Method
DONE Keep uint id() const;
DONE Keep  void setImmutability(const ImmutabilityType immutable);
DONE Keep  ImmutabilityType immutability() const;
DONE Keep  SIGNAL void immutabilityChanged(Plasma::ImmutabilityType immutable);
DONE Keep  bool hasFailedToLaunch() const;
TO DO Keep  void setFailedToLaunch(bool failed, const QString &reason); TODO: show why the thing failed in the UI <{{{3}}}>
DONE Keep  bool destroyed() const;
DONE Keep  virtual void destroy();
TO DO Keep Containment *containment() const; NOTE: Containment is NOT an applet anymore <{{{3}}}>
TO DO Not Slot  ItemStatus status() const; → unslotify <{{{3}}}>
DONE Keep  void setStatus(const ItemStatus stat);
TO DO Change name  SIGNAL void newStatus(Plasma::ItemStatus status); TODO: change name to statusChanged <{{{3}}}>
TO DO Not virtual  virtual FormFactor formFactor() const;   -> not virtual <{{{3}}}>
TO DO Not virtual  virtual Location location() const;    -> not virtual <{{{3}}}>


TO DO Remove  Plasma::AspectRatioMode aspectRatioMode() const; <{{{3}}}>
TO DO Remove   void setAspectRatioMode(Plasma::AspectRatioMode); <{{{3}}}>
TO DO Remove  bool isContainment() const; <{{{3}}}>
TO DO Remove  virtual bool isPopupShowing() const; <{{{3}}}>
TO DO Remove  QVariantList startupArguments() const; TODO: templated config for startup <{{{3}}}>


       

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

Status Action Method
TO DO Remove  void showConfigurationInterface(QWidget *widget); <{{{3}}}>
TO DO Remove  virtual void createConfigurationInterface(KConfigDialog *parent); <{{{3}}}>
TO DO Remove  bool isUserConfiguring() const <{{{3}}}>
TO DO Remove  Private class AppletConfigDialog is part of this <{{{3}}}>
TO DO Remove  bool hasFocus() const; <{{{3}}}>
TO DO Remove  void setFocus(Qt::FocusReason); <{{{3}}}>
TO DO Remove  QFont font() const; <{{{3}}}>


Utils

Status Action Method
DONE Keep  Package package() const;
DONE Keep {{{2}}}
DONE Keep  void flushPendingConstraintsEvents();
TO DO Keep virtual void constraintsEvent(Plasma::Constraints constraints); TODO Should this become a signal? <{{{3}}}>
TO DO Remove  DataEngine *dataEngine(const QString &name) const; <{{{3}}}>
TO DO Move  QPoint popupPosition(const QSize &s) const; -> Dialog in bindings <{{{3}}}>
TO DO Move  QPoint popupPosition(const QSize &s, Qt::AlignmentFlag alignment) const; <{{{3}}}>


Metadata

Status Action Method
TO DO Add  KPluginInfo pluginInfo() const; <{{{3}}}>
TO DO Rename  QString name() const; -> becomes title() <{{{3}}}>
TO DO Rename  void setName(const QString &name) const; ->setTitle() <{{{3}}}>
TO DO Move to PluginLoader {{{2}}} <{{{3}}}>
TO DO Move to PluginLoader  static KPluginInfo::List listAppletInfoForMimeType(const QString &mimetype); <{{{3}}}>
TO DO Move to PluginLoader static KPluginInfo::List listAppletInfoForUrl(const QUrl &url); <{{{3}}}>
TO DO Move to PluginLoader {{{2}}} <{{{3}}}>
TO DO Move to PluginLoader  void setCustomCategories(const QStringList &categories); just categories in PluginLoader? : currently stored in AppletPrivate::s_customCategories perhaps every shell should set what its categories are <{{{3}}}>
TO DO Move to PluginLoader  QStringList customCategories() const; <{{{3}}}>
TO DO Move to PluginLoader {{{2}}} <{{{3}}}>
TO DO Move to PluginLoader  static QString category(const QString &appletName); -> PluginLoader <{{{3}}}>
TO DO Remove  QString icon() const; Maybe there is an use case? <{{{3}}}>
TO DO Remove  QString category() const; <{{{3}}}>
TO DO Remove  QString pluginName() const; <{{{3}}}>
TO DO Remove  static QString category(const KPluginInfo &applet); <{{{3}}}>
TO DO Remove  bool shouldConserveResources() const; <{{{3}}}>


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);