From d7e0bbcc76bd6548975dfd30a50910d4967cad55 Mon Sep 17 00:00:00 2001
From: Andrei Karas <akaras@inbox.ru>
Date: Sat, 9 Mar 2013 15:32:04 +0300
Subject: Add new notifications to tradehandler.

---
 src/net/ea/tradehandler.cpp | 44 +++++++++++++++++-----------------
 src/notifications.h         | 57 +++++++++++++++++++++++++++++++--------------
 2 files changed, 61 insertions(+), 40 deletions(-)

diff --git a/src/net/ea/tradehandler.cpp b/src/net/ea/tradehandler.cpp
index 01bbeb45e..12f29c4e7 100644
--- a/src/net/ea/tradehandler.cpp
+++ b/src/net/ea/tradehandler.cpp
@@ -26,6 +26,7 @@
 #include "inventory.h"
 #include "item.h"
 #include "logger.h"
+#include "notifymanager.h"
 #include "playerinfo.h"
 #include "playerrelations.h"
 
@@ -132,15 +133,15 @@ void TradeHandler::processTradeResponse(Net::MessageIn &msg)
     switch (msg.readInt8())
     {
         case 0: // Too far away
-            SERVER_NOTICE(strprintf(_("Trading with %s isn't possible."
-                " Trade partner is too far away."), tradePartnerName.c_str()))
+            NotifyManager::notify(NotifyManager::TRADE_FAIL_FAR_AWAY,
+                tradePartnerName);
             break;
         case 1: // Character doesn't exist
-            SERVER_NOTICE(strprintf(_("Trading with %s isn't possible."
-                " Character doesn't exist."), tradePartnerName.c_str()))
+            NotifyManager::notify(NotifyManager::TRADE_FAIL_CHAR_NOT_EXISTS,
+                tradePartnerName);
             break;
         case 2: // Invite request check failed...
-            SERVER_NOTICE(_("Trade cancelled due to an unknown reason."))
+            NotifyManager::notify(NotifyManager::TRADE_CANCELLED_ERROR);
             break;
         case 3: // Trade accepted
             if (tradeWindow)
@@ -156,8 +157,8 @@ void TradeHandler::processTradeResponse(Net::MessageIn &msg)
             if (player_relations.hasPermission(tradePartnerName,
                 PlayerRelation::SPEECH_LOG))
             {
-                SERVER_NOTICE(strprintf(_("Trade with %s cancelled."),
-                    tradePartnerName.c_str()))
+                NotifyManager::notify(NotifyManager::TRADE_CANCELLED_NAME,
+                    tradePartnerName);
             }
             // otherwise ignore silently
 
@@ -169,8 +170,8 @@ void TradeHandler::processTradeResponse(Net::MessageIn &msg)
             PlayerInfo::setTrading(false);
             break;
         default: // Shouldn't happen as well, but to be sure
-            SERVER_NOTICE(strprintf(_("Unhandled trade cancel packet with %s"),
-                tradePartnerName.c_str()))
+            NotifyManager::notify(NotifyManager::TRADE_ERROR_UNKNOWN,
+                tradePartnerName);
             if (tradeWindow)
                 tradeWindow->clear();
             break;
@@ -235,22 +236,19 @@ void TradeHandler::processTradeItemAddResponse(Net::MessageIn &msg)
             break;
         case 1:
             // Add item failed - player overweighted
-            SERVER_NOTICE(_("Failed adding item. Trade "
-                    "partner is over weighted."))
+            NotifyManager::notify(NotifyManager::
+                TRADE_ADD_PARTNER_OVER_WEIGHT);
             break;
         case 2:
-              // Add item failed - player has no free slot
-              SERVER_NOTICE(_("Failed adding item. Trade "
-                      "partner has no free slot."))
-              break;
+            // Add item failed - player has no free slot
+            NotifyManager::notify(NotifyManager::TRADE_ADD_PARTNER_NO_SLOTS);
+            break;
         case 3:
-              // Add item failed - non tradable item
-              SERVER_NOTICE(_("Failed adding item. You "
-                      "can't trade this item."))
-              break;
+            // Add item failed - non tradable item
+            NotifyManager::notify(NotifyManager::TRADE_ADD_UNTRADABLE_ITEM);
+            break;
         default:
-            SERVER_NOTICE(_("Failed adding item for "
-                    "unknown reason."))
+            NotifyManager::notify(NotifyManager::TRADE_ADD_ERROR);
             logger->log("QQQ SMSG_TRADE_ITEM_ADD_RESPONSE: "
                         + toString(res));
             break;
@@ -268,7 +266,7 @@ void TradeHandler::processTradeOk(Net::MessageIn &msg)
 
 void TradeHandler::processTradeCancel(Net::MessageIn &msg A_UNUSED)
 {
-    SERVER_NOTICE(_("Trade canceled."))
+    NotifyManager::notify(NotifyManager::TRADE_CANCELLED);
     if (tradeWindow)
     {
         tradeWindow->setVisible(false);
@@ -279,7 +277,7 @@ void TradeHandler::processTradeCancel(Net::MessageIn &msg A_UNUSED)
 
 void TradeHandler::processTradeComplete(Net::MessageIn &msg A_UNUSED)
 {
-    SERVER_NOTICE(_("Trade completed."))
+    NotifyManager::notify(NotifyManager::TRADE_COMPLETE);
     if (tradeWindow)
     {
         tradeWindow->setVisible(false);
diff --git a/src/notifications.h b/src/notifications.h
index f73651a06..41c0734b4 100644
--- a/src/notifications.h
+++ b/src/notifications.h
@@ -25,6 +25,23 @@
 
 namespace NotifyManager
 {
+    enum NotifyFlags
+    {
+        EMPTY,
+        INT,
+        STRING,
+        GUILD,
+        GUILD_STRING,
+        PARTY,
+        PARTY_STRING
+    };
+
+    struct NotificationInfo
+    {
+        const char *text;
+        const NotifyFlags flags;
+    };
+
     enum NotifyTypes
     {
         BUY_DONE,
@@ -72,27 +89,21 @@ namespace NotifyManager
         MONEY_SPENT,
         SKILL_RAISE_ERROR,
         ARROWS_EQUIP_NEEDED,
+        TRADE_FAIL_FAR_AWAY,
+        TRADE_FAIL_CHAR_NOT_EXISTS,
+        TRADE_CANCELLED_ERROR,
+        TRADE_CANCELLED_NAME,
+        TRADE_ERROR_UNKNOWN,
+        TRADE_ADD_PARTNER_OVER_WEIGHT,
+        TRADE_ADD_PARTNER_NO_SLOTS,
+        TRADE_ADD_UNTRADABLE_ITEM,
+        TRADE_ADD_ERROR,
+        TRADE_CANCELLED,
+        TRADE_COMPLETE,
 
         TYPE_END
     };
 
-    enum NotifyFlags
-    {
-        EMPTY,
-        INT,
-        STRING,
-        GUILD,
-        GUILD_STRING,
-        PARTY,
-        PARTY_STRING
-    };
-
-    struct NotificationInfo
-    {
-        const char *text;
-        const NotifyFlags flags;
-    };
-
     static const NotificationInfo notifications[] =
     {
         {N_("Thanks for buying."), EMPTY},
@@ -140,6 +151,18 @@ namespace NotifyManager
         {N_("You spent %s."), STRING},
         {N_("Cannot raise skill!"), EMPTY},
         {N_("Equip arrows first."), EMPTY},
+        {N_("Trading with %s isn't possible. Trade partner is too far away."),
+            STRING},
+        {N_("Trading with %s isn't possible. Character doesn't exist."), STRING},
+        {N_("Trade cancelled due to an unknown reason."), EMPTY},
+        {N_("Trade with %s cancelled."), STRING},
+        {N_("Unhandled trade cancel packet with %s"), STRING},
+        {N_("Failed adding item. Trade partner is over weighted."), EMPTY},
+        {N_("Failed adding item. Trade partner has no free slot."), EMPTY},
+        {N_("Failed adding item. You can't trade this item."), EMPTY},
+        {N_("Failed adding item for unknown reason."), EMPTY},
+        {N_("Trade canceled."), EMPTY},
+        {N_("Trade completed."), EMPTY},
     };
 }
 #endif
-- 
cgit v1.2.3-70-g09d2