From 2538267ce30c5cfe3bbf23442e7c3a80e647f260 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Thu, 7 Apr 2016 17:12:59 +0300 Subject: For commands in links in chat ask before executing command. --- src/gui/widgets/itemlinkhandler.cpp | 21 +++++++++++++++++++-- src/gui/widgets/itemlinkhandler.h | 9 +++++++-- 2 files changed, 26 insertions(+), 4 deletions(-) (limited to 'src/gui/widgets') diff --git a/src/gui/widgets/itemlinkhandler.cpp b/src/gui/widgets/itemlinkhandler.cpp index a8e90acd7..47314ca5c 100644 --- a/src/gui/widgets/itemlinkhandler.cpp +++ b/src/gui/widgets/itemlinkhandler.cpp @@ -42,6 +42,7 @@ #include "resources/db/itemdb.h" +#include "listeners/inputactionremotelistener.h" #include "listeners/openurllistener.h" #include "debug.h" @@ -52,7 +53,8 @@ namespace } // namespace ItemLinkHandler::ItemLinkHandler() : - LinkHandler() + LinkHandler(), + mAllowCommands(true) { } @@ -72,7 +74,22 @@ void ItemLinkHandler::handleCommandLink(const std::string &link, cmd = cmdStr; args.clear(); } - inputManager.executeRemoteChatCommand(cmd, args, nullptr); + if (mAllowCommands) + { + inputManager.executeRemoteChatCommand(cmd, args, nullptr); + } + else + { + inputActionRemoteListener.setCommand(cmd, args); + ConfirmDialog *const confirmDlg = CREATEWIDGETR(ConfirmDialog, + // TRANSLATORS: dialog message + _("Run command"), + strprintf("/%s %s", cmd.c_str(), args.c_str()), + SOUND_REQUEST, + false, + Modal_true); + confirmDlg->addActionListener(&inputActionRemoteListener); + } } void ItemLinkHandler::handleHelpLink(const std::string &link) diff --git a/src/gui/widgets/itemlinkhandler.h b/src/gui/widgets/itemlinkhandler.h index 6350b9fc3..6a0f87cb7 100644 --- a/src/gui/widgets/itemlinkhandler.h +++ b/src/gui/widgets/itemlinkhandler.h @@ -39,9 +39,12 @@ class ItemLinkHandler final : public LinkHandler void handleLink(const std::string &link, MouseEvent *event) override final; + void setAllowCommands(const bool b) + { mAllowCommands = b; } + private: - static void handleCommandLink(const std::string &link, - const std::string &prefix); + void handleCommandLink(const std::string &link, + const std::string &prefix); static void handleHelpLink(const std::string &link); @@ -51,6 +54,8 @@ class ItemLinkHandler final : public LinkHandler static void handleItemLink(const std::string &link); static void handleSearchLink(const std::string &link); + + bool mAllowCommands; }; #endif // GUI_WIDGETS_ITEMLINKHANDLER_H -- cgit v1.2.3-70-g09d2