From b61ba851da0157ace3bdfc1ebbf87156b0b76413 Mon Sep 17 00:00:00 2001 From: Kirill Volinsky Date: Wed, 6 Jun 2012 08:58:27 +0000 Subject: protocols plugins moved to protocols git-svn-id: http://svn.miranda-ng.org/main/trunk@327 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/Quotes/QuotesProviderFinance.cpp | 318 ------------------------------- 1 file changed, 318 deletions(-) delete mode 100644 plugins/Quotes/QuotesProviderFinance.cpp (limited to 'plugins/Quotes/QuotesProviderFinance.cpp') diff --git a/plugins/Quotes/QuotesProviderFinance.cpp b/plugins/Quotes/QuotesProviderFinance.cpp deleted file mode 100644 index 99d6127b32..0000000000 --- a/plugins/Quotes/QuotesProviderFinance.cpp +++ /dev/null @@ -1,318 +0,0 @@ -#include "stdafx.h" -#include "QuotesProviderFinance.h" -#include "EconomicRateInfo.h" -#include "DBUtils.h" -#include "QuotesProviderVisitor.h" -#include "ModuleInfo.h" -#include "QuotesProviders.h" -#include "CommonOptionDlg.h" -#include "resource.h" -#include "WinCtrlHelper.h" - -void CQuotesProviderFinance::GetWatchedQuotes(TQuotes& raQuotes)const -{ - raQuotes.clear(); - BOOST_FOREACH(HANDLE hContact,m_aContacts) - { - tstring sID = Quotes_DBGetStringT(hContact,QUOTES_MODULE_NAME,DB_STR_QUOTE_ID); - tstring sSymbol = Quotes_DBGetStringT(hContact,QUOTES_MODULE_NAME,DB_STR_QUOTE_SYMBOL,sID.c_str()); - tstring sDescr = Quotes_DBGetStringT(hContact,QUOTES_MODULE_NAME,DB_STR_QUOTE_DESCRIPTION); - CQuotesProviderBase::CQuote quote(sID,sSymbol,sDescr); - - raQuotes.push_back(quote); - } -} - -namespace -{ - inline tstring get_quote_id(HANDLE hContact) - { - return Quotes_DBGetStringT(hContact,QUOTES_MODULE_NAME,DB_STR_QUOTE_ID); - } - - inline bool is_quote_id_equal(HANDLE hContact,const tstring& sID) - { - return sID == get_quote_id(hContact); - } -} - -bool CQuotesProviderFinance::WatchForQuote(const CQuote& rQuote,bool bWatch) -{ - const tstring& sQuoteID = rQuote.GetID(); - TContracts::iterator i = std::find_if(m_aContacts.begin(),m_aContacts.end(), - boost::bind(is_quote_id_equal,_1,sQuoteID)); - - if ((false == bWatch) && (i != m_aContacts.end())) - { - HANDLE hContact = *i; - {// for CCritSection - CGuard cs(m_cs); - m_aContacts.erase(i); - } - - CallService(MS_DB_CONTACT_DELETE,reinterpret_cast(hContact),0); - return true; - } - else if ((true == bWatch) && (i == m_aContacts.end())) - { - HANDLE hContact = CreateNewContact(rQuote.GetSymbol()); - if(hContact) - { - DBWriteContactSettingTString(hContact,QUOTES_PROTOCOL_NAME,DB_STR_QUOTE_ID,sQuoteID.c_str()); - if(false == rQuote.GetName().empty()) - { - DBWriteContactSettingTString(hContact,QUOTES_PROTOCOL_NAME,DB_STR_QUOTE_DESCRIPTION,rQuote.GetName().c_str()); - } - - return true; - } - } - - return false; -} - -HANDLE CQuotesProviderFinance::GetContactByQuoteID(const tstring& rsQuoteID)const -{ - CGuard cs(m_cs); - - TContracts::const_iterator i = std::find_if(m_aContacts.begin(),m_aContacts.end(), - boost::bind(std::equal_to(),rsQuoteID,boost::bind(get_quote_id,_1))); - if(i != m_aContacts.end()) - { - return *i; - } - else - { - return NULL; - } -} - -void CQuotesProviderFinance::Accept(CQuotesProviderVisitor& visitor)const -{ - CQuotesProviderBase::Accept(visitor); - visitor.Visit(*this); -} - -namespace -{ - inline tstring make_quote_name(const CQuotesProviderBase::CQuote& rQuote) - { - const tstring& rsDesc = rQuote.GetName(); - return((false == rsDesc.empty()) ? rsDesc : rQuote.GetSymbol()); - } - - int add_quote_to_wnd(const CQuotesProviderBase::CQuote& rQuote,HWND hwnd) - { - tstring sName = make_quote_name(rQuote); - int nIndex = ::SendMessage(hwnd,LB_ADDSTRING,0,reinterpret_cast(sName.c_str())); - if(nIndex >= 0) - { - CQuotesProviderBase::CQuote* pQuote = new CQuotesProviderBase::CQuote(rQuote); - if(LB_ERR == ::SendMessage(hwnd,LB_SETITEMDATA,nIndex,reinterpret_cast(pQuote))) - { - delete pQuote; - } - } - return nIndex; - } - -// typedef CQuotesProviderFinance::TQuotes TQuotes; -// TQuotes g_aWatchedQuotes; - -// inline bool cmp_quotes(const tstring& rsQuoteId,const CQuotesProviderBase::CQuote& quote) -// { -// return (0 == quotes_stricmp(rsQuoteId.c_str(),quote.GetID().c_str())); -// } - - CQuotesProviderBase::CQuote* get_quote_ptr_from_lb_index(HWND hwndListBox,int nIndex) - { - LRESULT lResult = ::SendMessage(hwndListBox,LB_GETITEMDATA,nIndex,0); - return (((LB_ERR != lResult) && (0 != lResult)) ? (reinterpret_cast(lResult)) : nullptr); - } - - int is_quote_added(HWND hwndList,const tstring& rsQuoteID) - { - int cItems = ::SendMessage(hwndList,LB_GETCOUNT,0,0); - for(int i = 0;i < cItems;++i) - { - const CQuotesProviderBase::CQuote* pQuote = get_quote_ptr_from_lb_index(hwndList,i); - if ((nullptr != pQuote) - && ((0 == quotes_stricmp(rsQuoteID.c_str(),pQuote->GetID().c_str())) - || (0 == quotes_stricmp(rsQuoteID.c_str(),pQuote->GetName().c_str())) - || (0 == quotes_stricmp(rsQuoteID.c_str(),pQuote->GetSymbol().c_str())))) - { - return i; - } - } - return LB_ERR; - } - - INT_PTR CALLBACK GoogleFinanceOptDlgProc(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam) - { - CQuotesProviderFinance* pProvider = nullptr; - if(WM_INITDIALOG == message) - { - pProvider = reinterpret_cast(lParam); - SetWindowLongPtr(hDlg,GWLP_USERDATA,lParam); - } - else - { - pProvider = reinterpret_cast(GetWindowLongPtr(hDlg,GWLP_USERDATA)); - } - - CCommonDlgProcData d(pProvider); - CommonOptionDlgProc(hDlg,message,wParam,lParam,d); - - switch(message) - { - case WM_INITDIALOG: - { - TranslateDialogDefault(hDlg); - - CQuotesProviderFinance::TQuotes aQuotes; - pProvider->GetWatchedQuotes(aQuotes); - - HWND hwndList = GetDlgItem(hDlg,IDC_LIST_RATES); - std::for_each(aQuotes.begin(),aQuotes.end(), - boost::bind(add_quote_to_wnd,_1,hwndList)); - - ::EnableWindow(::GetDlgItem(hDlg,IDC_BUTTON_ADD),FALSE); - ::EnableWindow(::GetDlgItem(hDlg,IDC_BUTTON_REMOVE),FALSE); - } - return (TRUE); - case WM_COMMAND: - switch (LOWORD(wParam)) - { - case IDC_EDIT_QUOTE: - if(EN_CHANGE == HIWORD(wParam)) - { - ::EnableWindow(::GetDlgItem(hDlg,IDC_BUTTON_ADD),GetWindowTextLength(GetDlgItem(hDlg,IDC_EDIT_QUOTE)) > 0); - } - return (TRUE); - case IDC_BUTTON_ADD: - if(BN_CLICKED == HIWORD(wParam)) - { - HWND hEdit = GetDlgItem(hDlg,IDC_EDIT_QUOTE); - tstring sQuoteSymbol = get_window_text(hEdit); - assert(false == sQuoteSymbol.empty()); - HWND hwndList = GetDlgItem(hDlg,IDC_LIST_RATES); - if(LB_ERR == is_quote_added(hwndList,sQuoteSymbol)) - { - CQuotesProviderBase::CQuote quote(sQuoteSymbol,sQuoteSymbol); - if(add_quote_to_wnd(quote,hwndList) >= 0) - { - SetDlgItemText(hDlg,IDC_EDIT_QUOTE,_T("")); - SetFocus(hEdit); - PropSheet_Changed(::GetParent(hDlg),hDlg); - } - else - { - ::MessageBeep(MB_ICONERROR); - } - } - } - return (TRUE); - case IDC_BUTTON_REMOVE: - if(BN_CLICKED == HIWORD(wParam)) - { - HWND hWnd = ::GetDlgItem(hDlg,IDC_LIST_RATES); - int nSel = ::SendMessage(hWnd,LB_GETCURSEL,0,0); - if(LB_ERR != nSel) - { - CQuotesProviderBase::CQuote* pQuote = get_quote_ptr_from_lb_index(hWnd,nSel); - delete pQuote; - if(LB_ERR != ::SendMessage(hWnd,LB_DELETESTRING,nSel,0)) - { - PropSheet_Changed(::GetParent(hDlg),hDlg); - } - } - - nSel = ::SendMessage(hWnd,LB_GETCURSEL,0,0); - ::EnableWindow(::GetDlgItem(hDlg,IDC_BUTTON_REMOVE),(LB_ERR != nSel)); - } - return (TRUE); - case IDC_LIST_RATES: - if(CBN_SELCHANGE == HIWORD(wParam)) - { - int nSel = ::SendMessage(::GetDlgItem(hDlg,IDC_LIST_RATES),LB_GETCURSEL,0,0); - ::EnableWindow(::GetDlgItem(hDlg,IDC_BUTTON_REMOVE),(LB_ERR != nSel)); - } - return (TRUE); - } - return (FALSE); - - case WM_NOTIFY: - { - LPNMHDR pNMHDR = reinterpret_cast(lParam); - switch(pNMHDR->code) - { - case PSN_APPLY: - if(pProvider) - { - CQuotesProviderFinance::TQuotes aTemp; - pProvider->GetWatchedQuotes(aTemp); - - typedef std::vector TQuotesPtr; - TQuotesPtr apCurrent; - HWND hwndListBox = GetDlgItem(hDlg,IDC_LIST_RATES); - int cItems = ::SendMessage(hwndListBox,LB_GETCOUNT,0,0); - for(int i = 0;i < cItems;++i) - { - const CQuotesProviderBase::CQuote* pQuote = get_quote_ptr_from_lb_index(hwndListBox,i); - if(pQuote) - { - apCurrent.push_back(pQuote); - } - } - - std::for_each(aTemp.begin(),aTemp.end(), - [&apCurrent,pProvider](const CQuotesProviderBase::CQuote& quote) - { - if(apCurrent.end() == std::find_if(apCurrent.begin(),apCurrent.end(), - ["e](const CQuotesProviderBase::CQuote* pQuote){return 0 == quotes_stricmp(pQuote->GetID().c_str(),quote.GetID().c_str());})) - { - pProvider->WatchForQuote(quote,false); - } - }); - - std::for_each(apCurrent.begin(),apCurrent.end(), - [&aTemp,pProvider](const CQuotesProviderBase::CQuote* pQuote) - { - if(aTemp.end() == - std::find_if(aTemp.begin(),aTemp.end(), - [pQuote](const CQuotesProviderBase::CQuote& quote){return 0 == quotes_stricmp(pQuote->GetID().c_str(),quote.GetID().c_str());})) - { - pProvider->WatchForQuote(*pQuote,true); - } - - }); - - pProvider->RefreshAll(); - } - - return (TRUE); - } - } - return (FALSE); - case WM_DESTROY: - HWND hwndListBox = GetDlgItem(hDlg,IDC_LIST_RATES); - int cItems = ::SendMessage(hwndListBox,LB_GETCOUNT,0,0); - for(int i = 0;i < cItems;++i) - { - const CQuotesProviderBase::CQuote* pQuote = get_quote_ptr_from_lb_index(hwndListBox,i); - delete pQuote; - } - return (FALSE); - } - return (FALSE); - } -} - -void CQuotesProviderFinance::ShowPropertyPage(WPARAM wp,OPTIONSDIALOGPAGE& odp) -{ - odp.pszTemplate = MAKEINTRESOURCEA(IDD_DIALOG_OPT_FINANCE); - odp.pfnDlgProc = GoogleFinanceOptDlgProc; - odp.dwInitParam = reinterpret_cast(static_cast(this)); - odp.ptszTab = const_cast(GetInfo().m_sName.c_str()); - CallService(MS_OPT_ADDPAGE,wp,reinterpret_cast(&odp)); -} -- cgit v1.2.3