forked from qt-creator/qt-creator
PluginManager: Introduce a getObjects() function taking a predicate
Change-Id: I8a822d76a3dc358de48e96801e4e531f3bbb8669 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@digia.com> Reviewed-by: hjk <hjk121@nokiamail.com> Reviewed-by: Eike Ziller <eike.ziller@digia.com>
This commit is contained in:
@@ -75,6 +75,19 @@ public:
|
||||
}
|
||||
return results;
|
||||
}
|
||||
template <typename T, typename Predicate>
|
||||
static QList<T *> getObjects(Predicate predicate)
|
||||
{
|
||||
QReadLocker lock(listLock());
|
||||
QList<T *> results;
|
||||
QList<QObject *> all = allObjects();
|
||||
foreach (QObject *obj, all) {
|
||||
T *result = qobject_cast<T *>(obj);
|
||||
if (result && predicate(result))
|
||||
results += result;
|
||||
}
|
||||
return results;
|
||||
}
|
||||
template <typename T> static T *getObject()
|
||||
{
|
||||
QReadLocker lock(listLock());
|
||||
@@ -85,6 +98,17 @@ public:
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
template <typename T, typename Predicate> static T *getObject(Predicate predicate)
|
||||
{
|
||||
QReadLocker lock(listLock());
|
||||
QList<QObject *> all = allObjects();
|
||||
foreach (QObject *obj, all) {
|
||||
if (T *result = qobject_cast<T *>(obj))
|
||||
if (predicate(result))
|
||||
return result;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static QObject *getObjectByName(const QString &name);
|
||||
static QObject *getObjectByClassName(const QString &className);
|
||||
|
||||
Reference in New Issue
Block a user