Skip to content
Snippets Groups Projects
Commit 1a7d3d08 authored by Rainer Kartmann's avatar Rainer Kartmann
Browse files

Add auto update with timing

parent 0b50b54e
No related branches found
No related tags found
1 merge request!96ArMemMemoryViewer
......@@ -23,6 +23,26 @@
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="updateAutoCheckBox">
<property name="text">
<string>Auto Update</string>
</property>
</widget>
</item>
<item>
<widget class="QDoubleSpinBox" name="updateFrequencySpinBox">
<property name="suffix">
<string> Hz</string>
</property>
<property name="maximum">
<double>60.000000000000000</double>
</property>
<property name="value">
<double>2.000000000000000</double>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
......
......@@ -24,6 +24,8 @@
#include <string>
#include <QTimer>
#include <ArmarXCore/observers/variant/Variant.h>
......@@ -39,10 +41,36 @@ namespace armarx
{
widget.setupUi(getWidget());
// Update timer
updateTimer = new QTimer(this);
updateTimer->setInterval(static_cast<int>(std::round(1000 / widget.updateFrequencySpinBox->value())));
using This = ArMemMemoryViewerWidgetController;
connect(this, &This::connected, this, &This::update);
connect(widget.updateButton, &QPushButton::pressed, this, &This::update);
connect(updateTimer, &QTimer::timeout, this, &This::update);
widget.updateFrequencySpinBox->setEnabled(widget.updateAutoCheckBox->isChecked());
connect(widget.updateAutoCheckBox, &QCheckBox::toggled, widget.updateFrequencySpinBox, &QDoubleSpinBox::setEnabled);
connect(widget.updateFrequencySpinBox, &QDoubleSpinBox::editingFinished, [this]()
{
updateTimer->setInterval(static_cast<int>(std::round(1000 / widget.updateFrequencySpinBox->value())));
});
connect(widget.updateAutoCheckBox, &QCheckBox::toggled, this, [this](bool checked)
{
if (checked)
{
updateTimer->start();
}
else
{
updateTimer->stop();
}
});
}
ArMemMemoryViewerWidgetController::~ArMemMemoryViewerWidgetController()
......@@ -77,11 +105,22 @@ namespace armarx
getProxy(debugObserver, debugObserverName, false, "", false);
}
if (widget.updateAutoCheckBox->isChecked())
{
updateTimer->stop();
}
emit connected();
}
void ArMemMemoryViewerWidgetController::onDisconnectComponent()
{
if (updateTimer)
{
updateTimer->stop();
}
}
void ArMemMemoryViewerWidgetController::update()
......@@ -97,7 +136,7 @@ namespace armarx
ARMARX_VERBOSE << "Memory query took " << (armem::Time::now() - start).toMilliSecondsDouble() << " ms.";
if (debugObserver)
{
debugObserver->setDebugDatafield(getName(), "Memory Query [ms]", new Variant((armem::Time::now() - start).toMilliSecondsDouble()));
debugObserver->setDebugDatafield(debugObserverChannelName, "Memory Query [ms]", new Variant((armem::Time::now() - start).toMilliSecondsDouble()));
}
if (queryResult)
......@@ -119,7 +158,7 @@ namespace armarx
ARMARX_VERBOSE << "GUI update took " << (armem::Time::now() - start).toMilliSecondsDouble() << " ms.";
if (debugObserver)
{
debugObserver->setDebugDatafield(getName(), "GUI Update [ms]", new Variant((armem::Time::now() - start).toMilliSecondsDouble()));
debugObserver->setDebugDatafield(debugObserverChannelName, "GUI Update [ms]", new Variant((armem::Time::now() - start).toMilliSecondsDouble()));
}
}
......
......@@ -91,6 +91,7 @@ namespace armarx
void onInitComponent() override;
void onConnectComponent() override;
void onDisconnectComponent() override;
public slots:
......@@ -125,8 +126,11 @@ namespace armarx
armem::MemoryTreeWidgetBuilder builder;
std::string debugObserverName;
std::string debugObserverChannelName = "ArMemMemoryViewer";
DebugObserverInterfacePrx debugObserver;
QTimer* updateTimer;
};
}
......
......@@ -318,7 +318,6 @@ namespace armarx
// Remove superfluous items.
while (int(elements.size()) < api::getItemCount(parent))
{
ARMARX_IMPORTANT << "Removing item " << api::getItemCount(parent) - 1;
delete api::takeItem(parent, api::getItemCount(parent) - 1);
}
ARMARX_CHECK_EQUAL(int(elements.size()), api::getItemCount(parent));
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment