mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2025-02-20 10:54:14 +01:00
LP-567 use common timestamp when updating an object and its field
this ensures that highlihhting will be synchronized
This commit is contained in:
parent
f27258a598
commit
e215e6fd2e
@ -78,7 +78,7 @@ public:
|
|||||||
TreeItem::setData(value, column);
|
TreeItem::setData(value, column);
|
||||||
}
|
}
|
||||||
|
|
||||||
void update()
|
void update(const QTime &ts)
|
||||||
{
|
{
|
||||||
bool updated = false;
|
bool updated = false;
|
||||||
|
|
||||||
@ -90,7 +90,7 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (changed() || updated) {
|
if (changed() || updated) {
|
||||||
setHighlighted(true);
|
setHighlighted(true, ts);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -238,10 +238,10 @@ void TreeItem::setData(QVariant value, int column)
|
|||||||
m_itemData.replace(column, value);
|
m_itemData.replace(column, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TreeItem::update()
|
void TreeItem::update(const QTime &ts)
|
||||||
{
|
{
|
||||||
foreach(TreeItem * child, children()) {
|
foreach(TreeItem * child, children()) {
|
||||||
child->update();
|
child->update(ts);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -255,7 +255,7 @@ void TreeItem::apply()
|
|||||||
/*
|
/*
|
||||||
* Called after a value has changed to trigger highlighting of tree item.
|
* Called after a value has changed to trigger highlighting of tree item.
|
||||||
*/
|
*/
|
||||||
void TreeItem::setHighlighted(bool highlighted)
|
void TreeItem::setHighlighted(bool highlighted, const QTime &ts)
|
||||||
{
|
{
|
||||||
m_changed = false;
|
m_changed = false;
|
||||||
if (m_highlighted != highlighted) {
|
if (m_highlighted != highlighted) {
|
||||||
@ -264,7 +264,7 @@ void TreeItem::setHighlighted(bool highlighted)
|
|||||||
// Add to highlight manager
|
// Add to highlight manager
|
||||||
m_highlightManager->add(this);
|
m_highlightManager->add(this);
|
||||||
// Update expiration timeout
|
// Update expiration timeout
|
||||||
m_highlightExpires = QTime::currentTime().addMSecs(m_highlightTimeMs);
|
m_highlightExpires = ts.addMSecs(m_highlightTimeMs);
|
||||||
// start expiration timer if necessary
|
// start expiration timer if necessary
|
||||||
m_highlightManager->startTimer(m_highlightExpires);
|
m_highlightManager->startTimer(m_highlightExpires);
|
||||||
} else {
|
} else {
|
||||||
@ -276,8 +276,7 @@ void TreeItem::setHighlighted(bool highlighted)
|
|||||||
// This will ensure that the root of a leaf that is changed also is highlighted.
|
// This will ensure that the root of a leaf that is changed also is highlighted.
|
||||||
// Only updates that really changes values will trigger highlight of parents.
|
// Only updates that really changes values will trigger highlight of parents.
|
||||||
if (m_parentItem) {
|
if (m_parentItem) {
|
||||||
// FIXME: need to pass m_highlightExpires
|
m_parentItem->setHighlighted(highlighted, ts);
|
||||||
m_parentItem->setHighlighted(highlighted);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -139,7 +139,7 @@ public:
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void update();
|
virtual void update(const QTime &ts);
|
||||||
virtual void apply();
|
virtual void apply();
|
||||||
|
|
||||||
bool changed() const
|
bool changed() const
|
||||||
@ -157,7 +157,7 @@ public:
|
|||||||
return m_highlighted;
|
return m_highlighted;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setHighlighted(bool highlighted);
|
void setHighlighted(bool highlighted, const QTime &ts);
|
||||||
|
|
||||||
static void setHighlightTime(int time)
|
static void setHighlightTime(int time)
|
||||||
{
|
{
|
||||||
@ -275,13 +275,13 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void update()
|
virtual void update(const QTime &ts)
|
||||||
{
|
{
|
||||||
foreach(TreeItem * child, children()) {
|
foreach(TreeItem * child, children()) {
|
||||||
MetaObjectTreeItem *metaChild = dynamic_cast<MetaObjectTreeItem *>(child);
|
MetaObjectTreeItem *metaChild = dynamic_cast<MetaObjectTreeItem *>(child);
|
||||||
|
|
||||||
if (!metaChild) {
|
if (!metaChild) {
|
||||||
child->update();
|
child->update(ts);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -301,15 +301,15 @@ public:
|
|||||||
DataObjectTreeItem(object, data)
|
DataObjectTreeItem(object, data)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
virtual void update(const QTime &ts)
|
||||||
|
{
|
||||||
|
TreeItem::update(ts);
|
||||||
|
}
|
||||||
|
|
||||||
virtual void apply()
|
virtual void apply()
|
||||||
{
|
{
|
||||||
TreeItem::apply();
|
TreeItem::apply();
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void update()
|
|
||||||
{
|
|
||||||
TreeItem::update();
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class ArrayFieldTreeItem : public TreeItem {
|
class ArrayFieldTreeItem : public TreeItem {
|
||||||
|
@ -79,10 +79,10 @@ public:
|
|||||||
m_recentlyUpdatedTimeout = timeout;
|
m_recentlyUpdatedTimeout = timeout;
|
||||||
m_model->setRecentlyUpdatedTimeout(timeout);
|
m_model->setRecentlyUpdatedTimeout(timeout);
|
||||||
}
|
}
|
||||||
void setOnlyHighlightChangedValues(bool hilight)
|
void setOnlyHighlightChangedValues(bool highlight)
|
||||||
{
|
{
|
||||||
m_onlyHighlightChangedValues = hilight;
|
m_onlyHighlightChangedValues = highlight;
|
||||||
m_model->setOnlyHighlightChangedValues(hilight);
|
m_model->setOnlyHighlightChangedValues(highlight);
|
||||||
}
|
}
|
||||||
void setViewOptions(bool showCategories, bool showMetadata, bool useScientificNotation, bool showDescription);
|
void setViewOptions(bool showCategories, bool showMetadata, bool useScientificNotation, bool showDescription);
|
||||||
void setSplitterState(QByteArray state);
|
void setSplitterState(QByteArray state);
|
||||||
|
@ -634,9 +634,10 @@ void UAVObjectTreeModel::updateObject(UAVObject *obj)
|
|||||||
ObjectTreeItem *item = findObjectTreeItem(obj->getObjID());
|
ObjectTreeItem *item = findObjectTreeItem(obj->getObjID());
|
||||||
Q_ASSERT(item);
|
Q_ASSERT(item);
|
||||||
// TODO don't update meta object if they are not shown
|
// TODO don't update meta object if they are not shown
|
||||||
item->update();
|
QTime ts = QTime::currentTime();
|
||||||
|
item->update(ts);
|
||||||
if (!onlyHighlightChangedValues()) {
|
if (!onlyHighlightChangedValues()) {
|
||||||
item->setHighlighted(true);
|
item->setHighlighted(true, ts);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user