diff options
Diffstat (limited to 'plugins/CurrencyRates/src/QuotesProviderVisitorFormater.cpp')
-rw-r--r-- | plugins/CurrencyRates/src/QuotesProviderVisitorFormater.cpp | 122 |
1 files changed, 0 insertions, 122 deletions
diff --git a/plugins/CurrencyRates/src/QuotesProviderVisitorFormater.cpp b/plugins/CurrencyRates/src/QuotesProviderVisitorFormater.cpp deleted file mode 100644 index 50d3b7e8cc..0000000000 --- a/plugins/CurrencyRates/src/QuotesProviderVisitorFormater.cpp +++ /dev/null @@ -1,122 +0,0 @@ -#include "StdAfx.h" -#include "QuotesProviderCurrencyConverter.h" - -CQuotesProviderVisitorFormater::CQuotesProviderVisitorFormater(MCONTACT hContact, wchar_t chr, int nWidth) - : m_hContact(hContact), - m_chr(chr), - m_nWidth(nWidth) -{ -} - -CQuotesProviderVisitorFormater::~CQuotesProviderVisitorFormater() -{ -} - -const tstring& CQuotesProviderVisitorFormater::GetResult()const -{ - return m_sResult; -} - -static bool get_fetch_time(MCONTACT hContact, time_t& rTime) -{ - DBVARIANT dbv; - if (db_get(hContact, QUOTES_MODULE_NAME, DB_STR_QUOTE_FETCH_TIME, &dbv) || (DBVT_DWORD != dbv.type)) - return false; - - rTime = dbv.dVal; - return true; -} - -static tstring format_fetch_time(const CQuotesProviderBase&, MCONTACT hContact, const tstring& rsFormat) -{ - time_t nTime; - if (true == get_fetch_time(hContact, nTime)) { - boost::posix_time::ptime time = boost::date_time::c_local_adjustor<boost::posix_time::ptime>::utc_to_local(boost::posix_time::from_time_t(nTime)); - tostringstream k; - k.imbue(std::locale(GetSystemLocale(), new ttime_facet(rsFormat.c_str()))); - k << time; - return k.str(); - } - - return tstring(); -} - -void CQuotesProviderVisitorFormater::Visit(const CQuotesProviderBase& rProvider) -{ - switch (m_chr) { - case '%': - case '\t': - case '\\': - m_sResult = m_chr; - break; - case 'S': - m_sResult = Quotes_DBGetStringT(m_hContact, QUOTES_MODULE_NAME, DB_STR_QUOTE_PROVIDER); - break; - case 's': - m_sResult = Quotes_DBGetStringT(m_hContact, QUOTES_MODULE_NAME, DB_STR_QUOTE_SYMBOL); - break; - case 'X': - m_sResult = format_fetch_time(rProvider, m_hContact, Quotes_GetTimeFormat(true)); - break; - case 'x': - m_sResult = format_fetch_time(rProvider, m_hContact, Quotes_GetDateFormat(true)); - break; - case 't': - { - tstring sFrmt = Quotes_GetDateFormat(true); - sFrmt += L" "; - sFrmt += Quotes_GetTimeFormat(true); - m_sResult = format_fetch_time(rProvider, m_hContact, sFrmt); - } - break; - case 'r': - case 'R': - FormatDoubleHelper(DB_STR_QUOTE_CURR_VALUE); - break; - case 'p': - FormatDoubleHelper(DB_STR_QUOTE_PREV_VALUE); - break; - } -} - - -tstring format_double(double dValue, int nWidth) -{ - tostringstream o; - o.imbue(GetSystemLocale()); - - if (nWidth > 0 && nWidth <= 9) - o << std::setprecision(nWidth) << std::showpoint << std::fixed; - - o << dValue; - - return o.str(); -} - -void CQuotesProviderVisitorFormater::FormatDoubleHelper(LPCSTR pszDbSet, - const tstring sInvalid/* = L"-"*/) -{ - double d = 0.0; - if (true == Quotes_DBReadDouble(m_hContact, QUOTES_MODULE_NAME, pszDbSet, d)) - m_sResult = format_double(d, m_nWidth); - else - m_sResult = sInvalid; -} - -void CQuotesProviderVisitorFormater::Visit(const CQuotesProviderCurrencyConverter&) -{ - switch (m_chr) { - case 'F': - m_sResult = Quotes_DBGetStringT(m_hContact, QUOTES_MODULE_NAME, DB_STR_FROM_DESCRIPTION); - break; - case 'f': - m_sResult = Quotes_DBGetStringT(m_hContact, QUOTES_MODULE_NAME, DB_STR_FROM_ID); - break; - case 'I': - m_sResult = Quotes_DBGetStringT(m_hContact, QUOTES_MODULE_NAME, DB_STR_TO_DESCRIPTION); - break; - case 'i': - m_sResult = Quotes_DBGetStringT(m_hContact, QUOTES_MODULE_NAME, DB_STR_TO_ID); - break; - } -}
\ No newline at end of file |