History

Add HMD friendly window for the ESS log

Atlante45 committed 9 years ago

Commit 43d25011 parent 0f393566 files · +165 −63Browse files

Showing the changes to interface/src/ui/EntityScriptServerLogDialog.cpp (1 of 6 files). Show all

Unified · Split

interface/src/ui/EntityScriptServerLogDialog.cpp+5−50
@@ -11,58 +11,13 @@ · 10 unmodified lines
11 11
12#include "EntityScriptServerLogDialog.h"12#include "EntityScriptServerLogDialog.h"
13 13
14#include <EntityScriptServerLogClient.h>
15
14EntityScriptServerLogDialog::EntityScriptServerLogDialog(QWidget* parent) : BaseLogDialog(parent) {16EntityScriptServerLogDialog::EntityScriptServerLogDialog(QWidget* parent) : BaseLogDialog(parent) {
15 setWindowTitle("Entity Script Server Log");17 setWindowTitle("Entity Script Server Log");
16 18
17 auto nodeList = DependencyManager::get<NodeList>();
18 auto& packetReceiver = nodeList->getPacketReceiver();
19 packetReceiver.registerListener(PacketType::EntityServerScriptLog, this, "handleEntityServerScriptLogPacket");
20
21 QObject::connect(nodeList.data(), &NodeList::nodeActivated, this, &EntityScriptServerLogDialog::nodeActivated);
22 QObject::connect(nodeList.data(), &NodeList::nodeKilled, this, &EntityScriptServerLogDialog::nodeKilled);
23
24 QObject::connect(nodeList.data(), &NodeList::canRezChanged, this, &EntityScriptServerLogDialog::enableToEntityServerScriptLog);
25 enableToEntityServerScriptLog(nodeList->getThisNodeCanRez());
26}
27
28EntityScriptServerLogDialog::~EntityScriptServerLogDialog() {
29 enableToEntityServerScriptLog(false);
30}
31void EntityScriptServerLogDialog::enableToEntityServerScriptLog(bool enable) {
32 auto nodeList = DependencyManager::get<NodeList>();
33
34 if (auto node = nodeList->soloNodeOfType(NodeType::EntityScriptServer)) {
35 auto packet = NLPacket::create(PacketType::EntityServerScriptLog, sizeof(bool), true);
36 packet->writePrimitive(enable);
37 nodeList->sendPacket(std::move(packet), *node);
38
39 if (_subscribed != enable) {
40 if (enable) {
41 appendLogLine("====================== Subscribded to the Entity Script Server's log ======================");
42 } else {
43 appendLogLine("==================== Unsubscribded from the Entity Script Server's log ====================");
44 }
45 }
46 _subscribed = enable;
47 } else {
48 qWarning() << "Entity Script Server not found";
49 }
50}
51
52void EntityScriptServerLogDialog::handleEntityServerScriptLogPacket(QSharedPointer<ReceivedMessage> message, SharedNodePointer senderNode) {
53 auto lines = QString::fromUtf8(message->readAll());
54 QMetaObject::invokeMethod(this, "appendLogLine", Q_ARG(QString, lines));
55}
56
57void EntityScriptServerLogDialog::nodeActivated(SharedNodePointer activatedNode) {
58 if (_subscribed && activatedNode->getType() == NodeType::EntityScriptServer) {
59 _subscribed = false;
60 enableToEntityServerScriptLog(DependencyManager::get<NodeList>()->getThisNodeCanRez());
61 }
62}
63 19
64void EntityScriptServerLogDialog::nodeKilled(SharedNodePointer killedNode) {20 auto client = DependencyManager::get<EntityScriptServerLogClient>();
65 if (killedNode->getType() == NodeType::EntityScriptServer) {21 QObject::connect(client.data(), &EntityScriptServerLogClient::receivedNewLogLines,
66 appendLogLine("====================== Connection to the Entity Script Server lost ======================");22 this, &EntityScriptServerLogDialog::appendLogLine);
67 }
68}23}