From ed9ff6d1bc050d99341d471351578294dbeca269 Mon Sep 17 00:00:00 2001 From: wrongway88 Date: Thu, 16 Feb 2017 20:30:22 +0100 Subject: [PATCH] ui: plugin ping added update pings on token activation (just to have a somewhat regularly reoccuring event to trigger the ping) --- .../controller/IDECommunicationController.cpp | 24 ++++++++++++++++--- .../controller/IDECommunicationController.h | 5 ++++ .../controller/StatusBarController.cpp | 9 +++++-- 3 files changed, 33 insertions(+), 5 deletions(-) diff --git a/src/lib/component/controller/IDECommunicationController.cpp b/src/lib/component/controller/IDECommunicationController.cpp index 791433b1..357e1883 100644 --- a/src/lib/component/controller/IDECommunicationController.cpp +++ b/src/lib/component/controller/IDECommunicationController.cpp @@ -71,7 +71,7 @@ void IDECommunicationController::setEnabled(const bool enabled) void IDECommunicationController::sendInitialPing() { - sendMessage(NetworkProtocolHelper::buildPingMessage()); + sendUpdatePing(); } void IDECommunicationController::handleSetActiveTokenMessage( @@ -179,11 +179,12 @@ void IDECommunicationController::handlePing(const NetworkProtocolHelper::PingMes if (msg.ideId == "vs") { - ideName = "Visual Studio"; - msg.ideName = ideName; + ideName = "Visual Studio"; } // TODO: add the other ides + msg.ideName = ideName; + std::string statusMessage = ideName + " instance detected via plugin port"; MessageStatus(statusMessage, false, false).dispatch(); @@ -195,6 +196,11 @@ void IDECommunicationController::handlePing(const NetworkProtocolHelper::PingMes } } +void IDECommunicationController::handleMessage(MessageActivateTokens* message) +{ + sendUpdatePing(); +} + void IDECommunicationController::handleMessage(MessageIDECreateCDB* message) { std::string networkMessage = NetworkProtocolHelper::buildCreateCDBMessage(); @@ -223,3 +229,15 @@ void IDECommunicationController::handleMessage(MessagePluginPortChange* message) stopListening(); startListening(); } + +void IDECommunicationController::sendUpdatePing() +{ + // first reset connection status + MessagePingReceived msg; + msg.ideId = ""; + msg.ideName = ""; + msg.dispatch(); + + // send ping to update connection status + sendMessage(NetworkProtocolHelper::buildPingMessage()); +} diff --git a/src/lib/component/controller/IDECommunicationController.h b/src/lib/component/controller/IDECommunicationController.h index 15855cdb..1c0ec5f0 100644 --- a/src/lib/component/controller/IDECommunicationController.h +++ b/src/lib/component/controller/IDECommunicationController.h @@ -7,6 +7,7 @@ #include "component/controller/helper/NetworkProtocolHelper.h" #include "utility/messaging/MessageListener.h" +#include "utility/messaging/type/MessageActivateTokens.h" #include "utility/messaging/type/MessageIDECreateCDB.h" #include "utility/messaging/type/MessageMoveIDECursor.h" #include "utility/messaging/type/MessagePluginPortChange.h" @@ -15,6 +16,7 @@ class StorageAccess; class IDECommunicationController : public Controller + , public MessageListener , public MessageListener , public MessageListener , public MessageListener @@ -43,11 +45,14 @@ private: void handleCreateCDBProjectMessage(const NetworkProtocolHelper::CreateCDBProjectMessage& message); void handlePing(const NetworkProtocolHelper::PingMessage& message); + virtual void handleMessage(MessageActivateTokens* message); // use this to send update pings virtual void handleMessage(MessageIDECreateCDB* message); virtual void handleMessage(MessageMoveIDECursor* message); virtual void handleMessage(MessagePluginPortChange* message); virtual void sendMessage(const std::string& message) const = 0; + void sendUpdatePing(); + StorageAccess* m_storageAccess; bool m_enabled; diff --git a/src/lib/component/controller/StatusBarController.cpp b/src/lib/component/controller/StatusBarController.cpp index 0128a1f6..9b0f2f16 100644 --- a/src/lib/component/controller/StatusBarController.cpp +++ b/src/lib/component/controller/StatusBarController.cpp @@ -37,8 +37,13 @@ void StatusBarController::handleMessage(MessageFinishedParsing* message) void StatusBarController::handleMessage(MessagePingReceived* message) { - std::string status = "Connected to "; - status += message->ideName; + std::string status = "No IDE connected"; + + if (message->ideName.length() > 0) + { + status = "Connected to "; + status += message->ideName; + } getView()->showIdeStatus(status); }