diff options
author | George Hazan <ghazan@miranda.im> | 2019-02-21 14:59:21 +0300 |
---|---|---|
committer | George Hazan <ghazan@miranda.im> | 2019-02-21 14:59:21 +0300 |
commit | 98e5dab950ab976bbf244dc21e7bfe2353722d45 (patch) | |
tree | 5f937fa1375e3803091fbf984fd983aaf3d0527b /plugins/CurrencyRates/src/ImportExport.cpp | |
parent | a7d1b6c89d200736226183753ffc88f094c3bc16 (diff) |
crap with Visitor class totally destroyed
Diffstat (limited to 'plugins/CurrencyRates/src/ImportExport.cpp')
-rw-r--r-- | plugins/CurrencyRates/src/ImportExport.cpp | 49 |
1 files changed, 1 insertions, 48 deletions
diff --git a/plugins/CurrencyRates/src/ImportExport.cpp b/plugins/CurrencyRates/src/ImportExport.cpp index 47bb3e1b40..03d35eadb7 100644 --- a/plugins/CurrencyRates/src/ImportExport.cpp +++ b/plugins/CurrencyRates/src/ImportExport.cpp @@ -1,5 +1,4 @@ #include "StdAfx.h" -#include "CurrencyRatesProviderCurrencyConverter.h" const char g_szXmlValue[] = "Value"; const char g_szXmlName[] = "Name"; @@ -385,7 +384,6 @@ const TiXmlNode* find_currencyrates_module(const TiXmlNode *pXmlContact) return nullptr; } -typedef std::pair<const char*, const char*> TNameValue; // first is name,second is value TNameValue parse_setting_node(const TiXmlNode *pXmlSetting) { assert(pXmlSetting); @@ -414,49 +412,6 @@ CCurrencyRatesProviders::TCurrencyRatesProviderPtr find_provider(const TiXmlNode bool get_contact_state(const TiXmlNode *pXmlContact, CContactState& cst) { - class visitor : public CCurrencyRatesProviderVisitor - { - public: - visitor(const TiXmlNode *pXmlCurrencyRates) - : m_hContact(NULL), m_pXmlCurrencyRates(pXmlCurrencyRates) - { - } - - MCONTACT GetContact() const { return m_hContact; } - - private: - void Visit(const CCurrencyRatesProviderCurrencyConverter &rProvider) override - { - const char *sFromID = nullptr, *sToID = nullptr; - - for (auto *pNode : TiXmlFilter(m_pXmlCurrencyRates, g_szXmlSetting)) { - TNameValue Item = parse_setting_node(pNode); - if (!mir_strcmpi(Item.first, DB_STR_FROM_ID)) - sFromID = Item.second; - else if (!mir_strcmpi(Item.first, DB_STR_TO_ID)) - sToID = Item.second; - } - - if (sFromID && sToID) - m_hContact = rProvider.GetContactByID(Utf2T(sFromID).get(), Utf2T(sToID).get()); - } - - tstring GetXMLNodeValue(const char* pszXMLNodeName) const - { - for (auto *pNode : TiXmlFilter(m_pXmlCurrencyRates, g_szXmlSetting)) { - TNameValue Item = parse_setting_node(pNode); - if (!mir_strcmpi(Item.first, pszXMLNodeName)) - return Utf2T(Item.second).get(); - } - - return tstring(); - } - - private: - MCONTACT m_hContact; - const TiXmlNode *m_pXmlCurrencyRates; - }; - auto *pXmlCurrencyRates = find_currencyrates_module(pXmlContact); if (!pXmlCurrencyRates) return false; @@ -465,9 +420,7 @@ bool get_contact_state(const TiXmlNode *pXmlContact, CContactState& cst) if (!cst.m_pProvider) return false; - visitor vs(pXmlCurrencyRates); - cst.m_pProvider->Accept(vs); - cst.m_hContact = vs.GetContact(); + cst.m_hContact = cst.m_pProvider->ImportContact(pXmlCurrencyRates); return true; } |