On Thursday 11 September 2008 17:47:27 Aaron J. Seigo wrote: > On Thursday 11 September 2008, Petri Damstén wrote: > > Applets connect to apply & ok to know when user accepted config, but if > > AppletScript uses configxml there seems to be no way to do that? Maybe > > configAccepted signal in applet? I guess this could be good for Applets > > too so they don't have to rely parent to have ok/apply. > > there is a configChanged() signal from KCoreConfigSkeleton as well; we > might be able to use that. it gets emitted when writeConfig() is called... > soooo ... we could do sth like: > > * connect d->configXml configChanged to a configChanged signal (or slot?) > * create dialog using d->configXml > * writeConfig gets called by the dialog (for free) and that triggers things
patch for: - configChanged functions in Applet and AppletScript - connected to configXml configChanged() and applyClicked/okClicked (for C++ applets) - package typo mainconfiggui -> mainconfigui - and some Q_UNUSED to remove warnings Petri
Index: scripting/appletscript.h
===================================================================
--- scripting/appletscript.h (revision 860110)
+++ scripting/appletscript.h (working copy)
@@ -125,6 +125,11 @@
*/
virtual void showConfigurationInterface();
+ /**
+ * Configure was changed.
+ */
+ virtual void configChanged();
+
protected:
/**
* @arg engine name of the engine
Index: scripting/appletscript.cpp
===================================================================
--- scripting/appletscript.cpp (revision 860110)
+++ scripting/appletscript.cpp (working copy)
@@ -93,6 +93,7 @@
void AppletScript::setHasConfigurationInterface(bool hasInterface)
{
+ Q_UNUSED(hasInterface)
if (applet()) {
applet()->setHasConfigurationInterface(true);
}
@@ -102,6 +103,10 @@
{
}
+void AppletScript::configChanged()
+{
+}
+
DataEngine* AppletScript::dataEngine(const QString &engine) const
{
Q_ASSERT(d->applet);
Index: applet.h
===================================================================
--- applet.h (revision 860110)
+++ applet.h (working copy)
@@ -594,6 +594,11 @@
virtual void init();
/**
+ * Called when applet configuration values has changed.
+ */
+ virtual void configChanged();
+
+ /**
* Get's called when and extender item has to be initialized after a plasma restart. If you
* create ExtenderItems in your applet, you should implement this function to again create
* the widget that should be shown in this extender item. This function might look something
Index: applet.cpp
===================================================================
--- applet.cpp (revision 860110)
+++ applet.cpp (working copy)
@@ -190,7 +190,7 @@
//which isn't very nice.
foreach (ExtenderItem *item, extender()->attachedItems()) {
if (!item->isDetached() || item->autoExpireDelay()) {
- //destroy temporary extender items, or items that aren't detached, so their
+ //destroy temporary extender items, or items that aren't detached, so their
//configuration won't linger after a plasma restart.
item->destroy();
}
@@ -443,7 +443,7 @@
QGraphicsView *found = 0;
QGraphicsView *possibleFind = 0;
foreach (QGraphicsView *view, scene()->views()) {
- kDebug() << "checking" << view->sceneRect() << "against" << sceneBoundingRect()
+ kDebug() << "checking" << view->sceneRect() << "against" << sceneBoundingRect()
<< scenePos();
if (view->sceneRect().intersects(sceneBoundingRect()) ||
view->sceneRect().contains(scenePos())) {
@@ -651,6 +651,9 @@
void Applet::paintWindowFrame(QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget)
{
+ Q_UNUSED(painter)
+ Q_UNUSED(option)
+ Q_UNUSED(widget)
//Here come the code for the window frame
//kDebug() << windowFrameGeometry();
//painter->drawRoundedRect(windowFrameGeometry(), 5, 5);
@@ -1238,12 +1241,21 @@
connect(dialog, SIGNAL(finished()), nullManager, SLOT(deleteLater()));
//TODO: Apply button does not correctly work for now, so do not show it
dialog->showButton( KDialog::Apply, false );
+ connect(dialog, SIGNAL(applyClicked()), this, SLOT(configChanged()));
+ connect(dialog, SIGNAL(okClicked()), this, SLOT(configChanged()));
dialog->show();
}
emit releaseVisualFocus();
}
+void Applet::configChanged()
+{
+ if (d->script) {
+ d->script->configChanged();
+ }
+}
+
void Applet::createConfigurationInterface(KConfigDialog *parent)
{
Q_UNUSED(parent)
@@ -1642,6 +1654,7 @@
// FIXME: KConfigSkeleton doesn't play well with KConfigGroup =/
KConfigGroup config = q->config();
configXml = new ConfigXml(&config, &file);
+ QObject::connect(configXml, SIGNAL(configChanged()), q, SLOT(configChanged()));
}
if (!package->filePath("mainconfigui").isEmpty()) {
Index: private/packages.cpp
===================================================================
--- private/packages.cpp (revision 860110)
+++ private/packages.cpp (working copy)
@@ -48,7 +48,7 @@
mimetypes << "text/*";
setMimetypes("scripts", mimetypes);
- addFileDefinition("mainconfiggui", "ui/config.ui", i18n("Main Config UI File"));
+ addFileDefinition("mainconfigui", "ui/config.ui", i18n("Main Config UI File"));
addFileDefinition("mainconfigxml", "config/main.xml", i18n("Configuration XML file"));
addFileDefinition("mainscript", "code/main", i18n("Main Script File"));
setRequired("mainscript", true);
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ Plasma-devel mailing list [email protected] https://mail.kde.org/mailman/listinfo/plasma-devel
