allow applets to note whether or not they provide a configure interface
and pay attention to that when creating the context menu svn path=/trunk/KDE/kdebase/workspace/libs/plasma/; revision=682287
This commit is contained in:
parent
32ea32d1c7
commit
8e6578bf18
16
applet.cpp
16
applet.cpp
@ -45,6 +45,7 @@ class Applet::Private
|
|||||||
appletConfig( 0 ),
|
appletConfig( 0 ),
|
||||||
appletDescription(new KPluginInfo(appletDescription)),
|
appletDescription(new KPluginInfo(appletDescription)),
|
||||||
immutable(false),
|
immutable(false),
|
||||||
|
hasConfigurationInterface(false),
|
||||||
background(0)
|
background(0)
|
||||||
{
|
{
|
||||||
if (appletId > s_maxAppletId) {
|
if (appletId > s_maxAppletId) {
|
||||||
@ -75,6 +76,7 @@ class Applet::Private
|
|||||||
QStringList loadedEngines;
|
QStringList loadedEngines;
|
||||||
static uint s_maxAppletId;
|
static uint s_maxAppletId;
|
||||||
bool immutable;
|
bool immutable;
|
||||||
|
bool hasConfigurationInterface;
|
||||||
Plasma::Svg *background;
|
Plasma::Svg *background;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -269,6 +271,16 @@ void Applet::needsFocus(bool focus)
|
|||||||
emit requestFocus(focus);
|
emit requestFocus(focus);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Applet::hasConfigurationInterface()
|
||||||
|
{
|
||||||
|
return d->hasConfigurationInterface;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Applet::setHasConfigurationInterface(bool hasInterface)
|
||||||
|
{
|
||||||
|
d->hasConfigurationInterface = hasInterface;
|
||||||
|
}
|
||||||
|
|
||||||
bool Applet::eventFilter( QObject *o, QEvent * e )
|
bool Applet::eventFilter( QObject *o, QEvent * e )
|
||||||
{
|
{
|
||||||
if ( !d->watchedForFocus.contains( o ) )
|
if ( !d->watchedForFocus.contains( o ) )
|
||||||
@ -284,6 +296,10 @@ bool Applet::eventFilter( QObject *o, QEvent * e )
|
|||||||
return QObject::eventFilter(o, e);
|
return QObject::eventFilter(o, e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Applet::configureDialog()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
KPluginInfo::List Applet::knownApplets()
|
KPluginInfo::List Applet::knownApplets()
|
||||||
{
|
{
|
||||||
QHash<QString, KPluginInfo> applets;
|
QHash<QString, KPluginInfo> applets;
|
||||||
|
18
applet.h
18
applet.h
@ -135,12 +135,17 @@ class PLASMA_EXPORT Applet : public QObject, public QGraphicsItem
|
|||||||
**/
|
**/
|
||||||
static KPluginInfo::List knownApplets();
|
static KPluginInfo::List knownApplets();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return true if this plasmoid provides a GUI configuration
|
||||||
|
**/
|
||||||
|
bool hasConfigurationInterface();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reimplement this slot to show a configuration dialog and let the user
|
* Reimplement this slot to show a configuration dialog and let the user
|
||||||
* play with the plasmoid options. Called when the user selects the configure entry
|
* play with the plasmoid options. Called when the user selects the configure entry
|
||||||
* from the contextual menu.
|
* from the context menu.
|
||||||
*/
|
*/
|
||||||
virtual void configureDialog(){} //default implementation is empty
|
virtual void configureDialog();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Attempts to load an applet, returning a pointer to the applet if
|
* Attempts to load an applet, returning a pointer to the applet if
|
||||||
@ -259,6 +264,15 @@ class PLASMA_EXPORT Applet : public QObject, public QGraphicsItem
|
|||||||
*/
|
*/
|
||||||
void needsFocus(bool focus);
|
void needsFocus(bool focus);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets whether or not this applet provides a user interface for configuring
|
||||||
|
* the applet. It defaults to false, and if true is passed in you should
|
||||||
|
* also reimplement configureDialog()
|
||||||
|
*
|
||||||
|
* @arg hasInterface whether or not there is a user interface available
|
||||||
|
**/
|
||||||
|
void setHasConfigurationInterface(bool hasInterface);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @internal event filter; used for focus watching
|
* @internal event filter; used for focus watching
|
||||||
**/
|
**/
|
||||||
|
19
corona.cpp
19
corona.cpp
@ -313,17 +313,26 @@ void Corona::contextMenuEvent(QGraphicsSceneContextMenuEvent *contextMenuEvent)
|
|||||||
} else if (applet->immutable()) {
|
} else if (applet->immutable()) {
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
desktopMenu.addSeparator();
|
//desktopMenu.addSeparator();
|
||||||
|
bool hasEntries = false;
|
||||||
QAction* configureApplet = new QAction(i18n("Settings..."), this);
|
if (applet->hasConfigurationInterface()) {
|
||||||
|
QAction* configureApplet = new QAction(i18n("%1 Settings...", applet->name()), this);
|
||||||
connect(configureApplet, SIGNAL(triggered(bool)),
|
connect(configureApplet, SIGNAL(triggered(bool)),
|
||||||
applet, SLOT(configureDialog())); //This isn't implemented in Applet yet...
|
applet, SLOT(configureDialog()));
|
||||||
desktopMenu.addAction(configureApplet);
|
desktopMenu.addAction(configureApplet);
|
||||||
|
hasEntries = true;
|
||||||
|
}
|
||||||
|
|
||||||
if (!d->immutable) {
|
if (!d->immutable) {
|
||||||
QAction* closeApplet = new QAction(i18n("Close"), this);
|
QAction* closeApplet = new QAction(i18n("Close this %1", applet->name()), this);
|
||||||
connect(closeApplet, SIGNAL(triggered(bool)),
|
connect(closeApplet, SIGNAL(triggered(bool)),
|
||||||
applet, SLOT(deleteLater()));
|
applet, SLOT(deleteLater()));
|
||||||
desktopMenu.addAction(closeApplet);
|
desktopMenu.addAction(closeApplet);
|
||||||
|
hasEntries = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!hasEntries) {
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
desktopMenu.exec(point.toPoint());
|
desktopMenu.exec(point.toPoint());
|
||||||
|
Loading…
Reference in New Issue
Block a user