[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: branches/work/komo/kdelibs/kutils
From: Marc Mutz <mutz () kde ! org>
Date: 2010-12-06 16:57:36
Message-ID: 20101206165736.EF996AC8A4 () svn ! kde ! org
[Download RAW message or body]
SVN commit 1204293 by mutz:
KCMultiDialog: allow to add modules that are already instantiated, for WINCE
M +32 -15 kcmultidialog.cpp
M +7 -0 kcmultidialog.h
M +1 -0 kcmultidialog_p.h
--- branches/work/komo/kdelibs/kutils/kcmultidialog.cpp #1204292:1204293
@@ -328,11 +328,28 @@
//KAuthorized::authorizeControlModule( moduleInfo.service()->menuId() ) is
//checked in noDisplay already
- if ( moduleInfo.service()->noDisplay() )
+ if ( moduleInfo.noDisplay() )
return 0;
- KCModuleProxy *kcm = new KCModuleProxy(moduleInfo, 0, args);
+ Q_D(KCMultiDialog);
+ return d->addModuleInternal( moduleInfo, new KCModuleProxy(moduleInfo, 0, args), \
parentItem ); +}
+KPageWidgetItem* KCMultiDialog::addModule( const KCModuleInfo& moduleInfo, KCModule \
* module, KPageWidgetItem *parentItem ) +{
+ Q_D(KCMultiDialog);
+ if ( moduleInfo.noDisplay() )
+ return 0;
+ else
+ return d->addModuleInternal( moduleInfo, new KCModuleProxy( moduleInfo, \
module ), parentItem ); +}
+
+KPageWidgetItem* KCMultiDialogPrivate::addModuleInternal( const KCModuleInfo& \
moduleInfo, KCModuleProxy * kcm, KPageWidgetItem *parentItem ) +{
+ Q_Q(KCMultiDialog);
+ if ( !kcm )
+ return 0;
+
kDebug(710) << moduleInfo.moduleName();
KPageWidgetItem *item = new KPageWidgetItem(kcm, moduleInfo.moduleName());
@@ -346,7 +363,7 @@
item->setProperty("_k_weight", moduleInfo.weight());
bool updateCurrentPage = false;
- const KPageWidgetModel *model = qobject_cast<const KPageWidgetModel \
*>(pageWidget()->model()); + const KPageWidgetModel *model = qobject_cast<const \
KPageWidgetModel *>(q->pageWidget()->model()); Q_ASSERT(model);
if (parentItem) {
const QModelIndex parentIndex = model->index(parentItem);
@@ -357,14 +374,14 @@
if (siblingItem->property("_k_weight").toInt() > moduleInfo.weight()) {
// the item we found is heavier than the new module
kDebug(710) << "adding KCM " << item->name() << " before " << \
siblingItem->name();
- insertPage(siblingItem, item);
+ q->insertPage(siblingItem, item);
break;
}
}
if (row >= siblingCount) {
// the new module is either the first or the heaviest item
kDebug(710) << "adding KCM " << item->name() << " with parent " << \
parentItem->name();
- addSubPage(parentItem, item);
+ q->addSubPage(parentItem, item);
}
} else {
const int siblingCount = model->rowCount();
@@ -374,8 +391,8 @@
if (siblingItem->property("_k_weight").toInt() > moduleInfo.weight()) {
// the item we found is heavier than the new module
kDebug(710) << "adding KCM " << item->name() << " before " << \
siblingItem->name();
- insertPage(siblingItem, item);
- if ( siblingItem == currentPage() )
+ q->insertPage(siblingItem, item);
+ if ( siblingItem == q->currentPage() )
updateCurrentPage = true;
break;
@@ -384,24 +401,24 @@
if (row == siblingCount) {
// the new module is either the first or the heaviest item
kDebug(710) << "adding KCM " << item->name() << " at the top level";
- addPage(item);
+ q->addPage(item);
}
}
- connect(kcm, SIGNAL(changed(bool)), this, SLOT(_k_clientChanged()));
- connect(kcm->realModule(), SIGNAL(rootOnlyMessageChanged(bool,QString)), this, \
SLOT(_k_updateHeader(bool,QString))); + QObject::connect(kcm, \
SIGNAL(changed(bool)), q, SLOT(_k_clientChanged())); + \
QObject::connect(kcm->realModule(), SIGNAL(rootOnlyMessageChanged(bool,QString)), q, \
SLOT(_k_updateHeader(bool,QString)));
- Q_D(KCMultiDialog);
KCMultiDialogPrivate::CreatedModule cm;
cm.kcm = kcm;
cm.item = item;
+ if ( moduleInfo.service() )
cm.componentNames = moduleInfo.service()->property( "X-KDE-ParentComponents" \
).toStringList();
- d->modules.append( cm );
+ modules.append( cm );
- if ( d->modules.count() == 1 || updateCurrentPage )
+ if ( modules.count() == 1 || updateCurrentPage )
{
- setCurrentPage( item );
- d->updateButtons(kcm);
+ q->setCurrentPage( item );
+ updateButtons(kcm);
}
return item;
}
--- branches/work/komo/kdelibs/kutils/kcmultidialog.h #1204292:1204293
@@ -27,6 +27,7 @@
#include <kpagedialog.h>
class KCMultiDialogPrivate;
+class KCModule;
/**
* @short A class that offers a KPageDialog containing arbitrary
@@ -88,6 +89,12 @@
const QStringList& args = QStringList() );
/**
+ * \overload
+ * Takes an already-loaded KCModule as parameter.
+ **/
+ KPageWidgetItem* addModule( const KCModuleInfo& moduleinfo, KCModule *module, \
KPageWidgetItem *parent = 0 ); +
+ /**
* Removes all modules from the dialog.
*/
void clear();
--- branches/work/komo/kdelibs/kutils/kcmultidialog_p.h #1204292:1204293
@@ -58,6 +58,7 @@
private:
void init();
void apply();
+ KPageWidgetItem* addModuleInternal( const KCModuleInfo& moduleInfo, \
KCModuleProxy * kcm, KPageWidgetItem *parentItem ); };
#endif // KCMULTIDIALOG_P_H
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic