NOISSUE Various changes from multiauth that are unrelated to it
This commit is contained in:
parent
161dc66c2c
commit
3a8b238052
65 changed files with 2661 additions and 333 deletions
55
logic/resources/ResourceObserver.cpp
Normal file
55
logic/resources/ResourceObserver.cpp
Normal file
|
@ -0,0 +1,55 @@
|
|||
#include "ResourceObserver.h"
|
||||
|
||||
#include <QDebug>
|
||||
|
||||
#include "Resource.h"
|
||||
|
||||
static const char *defaultPropertyForTarget(QObject *target)
|
||||
{
|
||||
if (target->inherits("QLabel"))
|
||||
{
|
||||
return "pixmap";
|
||||
}
|
||||
else if (target->inherits("QAction") ||
|
||||
target->inherits("QMenu") ||
|
||||
target->inherits("QAbstractButton"))
|
||||
{
|
||||
return "icon";
|
||||
}
|
||||
// for unit tests
|
||||
else if (target->inherits("DummyObserverObject"))
|
||||
{
|
||||
return "property";
|
||||
}
|
||||
else
|
||||
{
|
||||
Q_ASSERT_X(false, "ResourceObserver.cpp: defaultPropertyForTarget", "Unrecognized QObject subclass");
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
QObjectResourceObserver::QObjectResourceObserver(QObject *target, const char *property)
|
||||
: QObject(target), m_target(target)
|
||||
{
|
||||
const QMetaObject *mo = m_target->metaObject();
|
||||
m_property = mo->property(mo->indexOfProperty(
|
||||
property ?
|
||||
property
|
||||
: defaultPropertyForTarget(target)));
|
||||
}
|
||||
void QObjectResourceObserver::resourceUpdated()
|
||||
{
|
||||
m_property.write(m_target, getInternal(m_property.type()));
|
||||
}
|
||||
|
||||
|
||||
ResourceObserver::~ResourceObserver()
|
||||
{
|
||||
m_resource->notifyObserverDeleted(this);
|
||||
}
|
||||
|
||||
QVariant ResourceObserver::getInternal(const int typeId) const
|
||||
{
|
||||
Q_ASSERT(m_resource);
|
||||
return m_resource->getResourceInternal(typeId);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue