diff options
author | George Hazan <ghazan@miranda.im> | 2019-03-02 12:32:44 +0300 |
---|---|---|
committer | George Hazan <ghazan@miranda.im> | 2019-03-02 12:32:55 +0300 |
commit | 931a7dc1ac0dbc7e6c1083583ced915e572f5b47 (patch) | |
tree | 9fe9a6448d44030e26aa7107ce16044ed413e0d0 /plugins/CurrencyRates/src/Forex.cpp | |
parent | dd7d9954042254e66e3bbbec7195c6be8b1a0663 (diff) |
all protocols (even virtual ones) moved to the Protocols folder
Diffstat (limited to 'plugins/CurrencyRates/src/Forex.cpp')
-rw-r--r-- | plugins/CurrencyRates/src/Forex.cpp | 325 |
1 files changed, 0 insertions, 325 deletions
diff --git a/plugins/CurrencyRates/src/Forex.cpp b/plugins/CurrencyRates/src/Forex.cpp deleted file mode 100644 index b3b2424d48..0000000000 --- a/plugins/CurrencyRates/src/Forex.cpp +++ /dev/null @@ -1,325 +0,0 @@ -// Forex.cpp : Defines the exported functions for the DLL application. -// - -#include "stdafx.h" - -CMPlugin g_plugin; - -HANDLE g_hEventWorkThreadStop; -//int g_nStatus = ID_STATUS_OFFLINE; -bool g_bAutoUpdate = true; -HGENMENU g_hMenuEditSettings = nullptr; -HGENMENU g_hMenuOpenLogFile = nullptr; -#ifdef CHART_IMPLEMENT -HGENMENU g_hMenuChart = nullptr; -#endif -HGENMENU g_hMenuRefresh = nullptr, g_hMenuRoot = nullptr; - -#define DB_STR_AUTO_UPDATE "AutoUpdate" - -typedef std::vector<HANDLE> THandles; -THandles g_ahThreads; -HGENMENU g_hEnableDisableMenu; -HANDLE g_hTBButton; - -LPSTR g_pszAutoUpdateCmd = "CurrencyRates/Enable-Disable Auto Update"; -LPSTR g_pszCurrencyConverter = "CurrencyRates/CurrencyConverter"; - -void UpdateMenu(bool bAutoUpdate) -{ - if (bAutoUpdate) // to enable auto-update - Menu_ModifyItem(g_hEnableDisableMenu, LPGENW("Auto Update Enabled"), CurrencyRates_GetIconHandle(IDI_ICON_MAIN)); - else // to disable auto-update - Menu_ModifyItem(g_hEnableDisableMenu, LPGENW("Auto Update Disabled"), CurrencyRates_GetIconHandle(IDI_ICON_DISABLED)); - - CallService(MS_TTB_SETBUTTONSTATE, reinterpret_cast<WPARAM>(g_hTBButton), !bAutoUpdate ? TTBST_PUSHED : 0); -} - -INT_PTR CurrencyRatesMenu_RefreshAll(WPARAM, LPARAM) -{ - for (auto &pProvider : g_apProviders) - pProvider->RefreshAllContacts(); - return 0; -} - -INT_PTR CurrencyRatesMenu_EnableDisable(WPARAM, LPARAM) -{ - g_bAutoUpdate = (g_bAutoUpdate) ? false : true; - db_set_b(0, CURRENCYRATES_MODULE_NAME, DB_STR_AUTO_UPDATE, g_bAutoUpdate); - - for (auto &pProvider : g_apProviders) { - pProvider->RefreshSettings(); - if (g_bAutoUpdate) - pProvider->RefreshAllContacts(); - } - - UpdateMenu(g_bAutoUpdate); - return 0; -} - -void InitMenu() -{ - CMenuItem mi(&g_plugin); - mi.flags = CMIF_UNICODE; - mi.root = g_plugin.addRootMenu(MO_MAIN, LPGENW("Currency Rates"), 0, CurrencyRates_GetIconHandle(IDI_ICON_MAIN)); - Menu_ConfigureItem(mi.root, MCI_OPT_UID, "B474F556-22B6-42A1-A91E-22FE4F671388"); - - SET_UID(mi, 0x9de6716, 0x3591, 0x48c4, 0x9f, 0x64, 0x1b, 0xfd, 0xc6, 0xd1, 0x34, 0x97); - mi.name.w = LPGENW("Enable/Disable Auto Update"); - mi.position = 10100001; - mi.hIcolibItem = CurrencyRates_GetIconHandle(IDI_ICON_MAIN); - mi.pszService = g_pszAutoUpdateCmd; - g_hEnableDisableMenu = Menu_AddMainMenuItem(&mi); - CreateServiceFunction(mi.pszService, CurrencyRatesMenu_EnableDisable); - UpdateMenu(g_bAutoUpdate); - - SET_UID(mi, 0x91cbabf6, 0x5073, 0x4a78, 0x84, 0x8, 0x34, 0x61, 0xc1, 0x8a, 0x34, 0xd9); - mi.name.w = LPGENW("Refresh All Rates"); - mi.position = 20100001; - mi.hIcolibItem = CurrencyRates_GetIconHandle(IDI_ICON_MAIN); - mi.pszService = "CurrencyRates/RefreshAll"; - Menu_AddMainMenuItem(&mi); - CreateServiceFunction(mi.pszService, CurrencyRatesMenu_RefreshAll); - - SET_UID(mi, 0x3663409c, 0xbd36, 0x473b, 0x9b, 0x4f, 0xff, 0x80, 0xf6, 0x2c, 0xdf, 0x9b); - mi.name.w = LPGENW("Currency Converter..."); - mi.position = 20100002; - mi.hIcolibItem = CurrencyRates_GetIconHandle(IDI_ICON_CURRENCY_CONVERTER); - mi.pszService = g_pszCurrencyConverter; - Menu_AddMainMenuItem(&mi); - CreateServiceFunction(mi.pszService, CurrencyRatesMenu_CurrencyConverter); - - SET_UID(mi, 0x7cca4fd9, 0x903f, 0x4b7d, 0x93, 0x7a, 0x18, 0x63, 0x23, 0xd4, 0xa9, 0xa9); - mi.name.w = LPGENW("Export All Currency Rates"); - mi.hIcolibItem = CurrencyRates_GetIconHandle(IDI_ICON_EXPORT); - mi.pszService = MS_CURRENCYRATES_EXPORT; - mi.position = 20100003; - Menu_AddMainMenuItem(&mi); - - SET_UID(mi, 0xa994d3b, 0x77c2, 0x4612, 0x8d, 0x5, 0x6a, 0xae, 0x8c, 0x21, 0xbd, 0xc9); - mi.name.w = LPGENW("Import All Currency Rates"); - mi.hIcolibItem = CurrencyRates_GetIconHandle(IDI_ICON_IMPORT); - mi.pszService = MS_CURRENCYRATES_IMPORT; - mi.position = 20100004; - Menu_AddMainMenuItem(&mi); - - HookEvent(ME_CLIST_PREBUILDCONTACTMENU, CurrencyRates_PrebuildContactMenu); - - g_hMenuRoot = mi.root = g_plugin.addRootMenu(MO_CONTACT, LPGENW("Currency Rates"), 0, CurrencyRates_GetIconHandle(IDI_ICON_MAIN)); - Menu_ConfigureItem(mi.root, MCI_OPT_UID, "C259BE01-642C-461E-997D-0E756B2A3AD6"); - - SET_UID(mi, 0xb9812194, 0x3235, 0x4e76, 0xa3, 0xa4, 0x73, 0x32, 0x96, 0x1c, 0x1c, 0xf4); - mi.name.w = LPGENW("Refresh"); - mi.hIcolibItem = CurrencyRates_GetIconHandle(IDI_ICON_REFRESH); - mi.pszService = "CurrencyRates/RefreshContact"; - g_hMenuRefresh = Menu_AddContactMenuItem(&mi, CURRENCYRATES_PROTOCOL_NAME); - Menu_ConfigureItem(g_hMenuRefresh, MCI_OPT_EXECPARAM, INT_PTR(0)); - CreateServiceFunction(mi.pszService, CurrencyRatesMenu_RefreshContact); - - SET_UID(mi, 0x19a16fa2, 0xf370, 0x4201, 0x92, 0x9, 0x25, 0xde, 0x4e, 0x55, 0xf9, 0x1a); - mi.name.w = LPGENW("Open Log File..."); - mi.hIcolibItem = nullptr; - mi.pszService = "CurrencyRates/OpenLogFile"; - g_hMenuOpenLogFile = Menu_AddContactMenuItem(&mi, CURRENCYRATES_PROTOCOL_NAME); - Menu_ConfigureItem(g_hMenuOpenLogFile, MCI_OPT_EXECPARAM, 1); - CreateServiceFunction(mi.pszService, CurrencyRatesMenu_OpenLogFile); - - #ifdef CHART_IMPLEMENT - SET_UID(mi, 0x65da7256, 0x43a2, 0x4857, 0xac, 0x52, 0x1c, 0xb7, 0xff, 0xd7, 0x96, 0xfa); - mi.name.w = LPGENW("Chart..."); - mi.hIcolibItem = nullptr; - mi.pszService = "CurrencyRates/Chart"; - g_hMenuChart = Menu_AddContactMenuItem(&mi, CURRENCYRATES_PROTOCOL_NAME); - CreateServiceFunction(mi.pszService, CurrencyRatesMenu_Chart); - #endif - - SET_UID(mi, 0xac5fc17, 0x5640, 0x4f81, 0xa3, 0x44, 0x8c, 0xb6, 0x9a, 0x5c, 0x98, 0xf); - mi.name.w = LPGENW("Edit Settings..."); - mi.hIcolibItem = nullptr; - mi.pszService = "CurrencyRates/EditSettings"; - g_hMenuEditSettings = Menu_AddContactMenuItem(&mi, CURRENCYRATES_PROTOCOL_NAME); - #ifdef CHART_IMPLEMENT - Menu_ConfigureItem(g_hMenuEditSettings, MCI_OPT_EXECPARAM, 3); - #else - Menu_ConfigureItem(g_hMenuEditSettings, MCI_OPT_EXECPARAM, 2); - #endif - CreateServiceFunction(mi.pszService, CurrencyRatesMenu_EditSettings); -} - -int CurrencyRates_OnToolbarLoaded(WPARAM, LPARAM) -{ - TTBButton ttb = {}; - ttb.name = LPGEN("Enable/Disable Currency Rates Auto Update"); - ttb.pszService = g_pszAutoUpdateCmd; - ttb.pszTooltipUp = LPGEN("Currency Rates Auto Update Enabled"); - ttb.pszTooltipDn = LPGEN("Currency Rates Auto Update Disabled"); - ttb.hIconHandleUp = CurrencyRates_GetIconHandle(IDI_ICON_MAIN); - ttb.hIconHandleDn = CurrencyRates_GetIconHandle(IDI_ICON_DISABLED); - ttb.dwFlags = ((g_bAutoUpdate) ? 0 : TTBBF_PUSHED) | TTBBF_ASPUSHBUTTON | TTBBF_VISIBLE; - g_hTBButton = g_plugin.addTTB(&ttb); - - ttb.name = LPGEN("Currency Converter"); - ttb.pszService = g_pszCurrencyConverter; - ttb.pszTooltipUp = LPGEN("Currency Converter"); - ttb.pszTooltipDn = LPGEN("Currency Converter"); - ttb.hIconHandleUp = CurrencyRates_GetIconHandle(IDI_ICON_CURRENCY_CONVERTER); - ttb.hIconHandleDn = CurrencyRates_GetIconHandle(IDI_ICON_CURRENCY_CONVERTER); - ttb.dwFlags = TTBBF_VISIBLE; - g_plugin.addTTB(&ttb); - - return 0; -} - -static void WorkingThread(void *pParam) -{ - ICurrencyRatesProvider *pProvider = reinterpret_cast<ICurrencyRatesProvider*>(pParam); - assert(pProvider); - - if (pProvider) - pProvider->Run(); -} - -int CurrencyRatesEventFunc_OnModulesLoaded(WPARAM, LPARAM) -{ - CHTTPSession::Init(); - - g_hEventWorkThreadStop = ::CreateEvent(nullptr, TRUE, FALSE, nullptr); - HookEvent(ME_USERINFO_INITIALISE, CurrencyRatesEventFunc_OnUserInfoInit); - - HookEvent(ME_CLIST_DOUBLECLICKED, CurrencyRates_OnContactDoubleClick); - - HookEvent(ME_TTB_MODULELOADED, CurrencyRates_OnToolbarLoaded); - - g_bAutoUpdate = 1 == db_get_b(0, CURRENCYRATES_MODULE_NAME, DB_STR_AUTO_UPDATE, 1); - - InitMenu(); - - ::ResetEvent(g_hEventWorkThreadStop); - - for (auto &pProvider : g_apProviders) - g_ahThreads.push_back(mir_forkthread(WorkingThread, pProvider)); - return 0; -} - -int CurrencyRatesEventFunc_OnContactDeleted(WPARAM hContact, LPARAM) -{ - auto pProvider = GetContactProviderPtr(hContact); - if (pProvider) - pProvider->DeleteContact(hContact); - return 0; -} - -INT_PTR CurrencyRateProtoFunc_GetCaps(WPARAM wParam, LPARAM) -{ - switch (wParam) { - case PFLAG_UNIQUEIDTEXT: - return (INT_PTR)Translate("Currency Symbol"); - } - - return 0; -} - -INT_PTR CurrencyRateProtoFunc_GetStatus(WPARAM, LPARAM) -{ - return g_bAutoUpdate ? ID_STATUS_ONLINE : ID_STATUS_OFFLINE; -} - -void WaitForWorkingThreads() -{ - size_t cThreads = g_ahThreads.size(); - if (cThreads > 0) { - HANDLE* paHandles = &*(g_ahThreads.begin()); - ::WaitForMultipleObjects((DWORD)cThreads, paHandles, TRUE, INFINITE); - } -} - - -int CurrencyRatesEventFunc_PreShutdown(WPARAM, LPARAM) -{ - ::SetEvent(g_hEventWorkThreadStop); - - CModuleInfo::OnMirandaShutdown(); - return 0; -} - -int CurrencyRatesEventFunc_OptInitialise(WPARAM wp, LPARAM/* lp*/) -{ - OPTIONSDIALOGPAGE odp = {}; - odp.position = 910000000; - odp.szTitle.w = LPGENW("Currency Rates"); - odp.szGroup.w = LPGENW("Network"); - odp.flags = ODPF_USERINFOTAB | ODPF_UNICODE; - - for (auto &it : g_apProviders) - it->ShowPropertyPage(wp, odp); - return 0; -} - -inline int CurrencyRates_UnhookEvent(HANDLE h) -{ - return UnhookEvent(h); -} - -///////////////////////////////////////////////////////////////////////////////////////// - -EXTERN_C __declspec(dllexport) const MUUID MirandaInterfaces[] = { MIID_PROTOCOL, MIID_LAST }; - -///////////////////////////////////////////////////////////////////////////////////////// - -PLUGININFOEX pluginInfoEx = -{ - sizeof(PLUGININFOEX), - __PLUGIN_NAME, - PLUGIN_MAKE_VERSION(__MAJOR_VERSION, __MINOR_VERSION, __RELEASE_NUM, __BUILD_NUM), - __DESCRIPTION, - __AUTHOR, - __COPYRIGHT, - __AUTHORWEB, - UNICODE_AWARE, - // {E882056D-0D1D-4131-9A98-404CBAEA6A9C} - { 0xe882056d, 0xd1d, 0x4131, { 0x9a, 0x98, 0x40, 0x4c, 0xba, 0xea, 0x6a, 0x9c } } -}; - -CMPlugin::CMPlugin() : - PLUGIN<CMPlugin>(CURRENCYRATES_PROTOCOL_NAME, pluginInfoEx) -{ - RegisterProtocol(PROTOTYPE_VIRTUAL); - SetUniqueId(DB_STR_CURRENCYRATE_SYMBOL); -} - -///////////////////////////////////////////////////////////////////////////////////////// - -int CMPlugin::Load(void) -{ - if (!CModuleInfo::Verify()) - return 1; - - CurrencyRates_IconsInit(); - CurrencyRates_InitExtraIcons(); - - InitProviders(); - - CreateProtoServiceFunction(CURRENCYRATES_PROTOCOL_NAME, PS_GETCAPS, CurrencyRateProtoFunc_GetCaps); - CreateProtoServiceFunction(CURRENCYRATES_PROTOCOL_NAME, PS_GETSTATUS, CurrencyRateProtoFunc_GetStatus); - - HookEvent(ME_SYSTEM_MODULESLOADED, CurrencyRatesEventFunc_OnModulesLoaded); - HookEvent(ME_DB_CONTACT_DELETED, CurrencyRatesEventFunc_OnContactDeleted); - HookEvent(ME_SYSTEM_PRESHUTDOWN, CurrencyRatesEventFunc_PreShutdown); - HookEvent(ME_OPT_INITIALISE, CurrencyRatesEventFunc_OptInitialise); - - CreateServiceFunction(MS_CURRENCYRATES_EXPORT, CurrencyRates_Export); - CreateServiceFunction(MS_CURRENCYRATES_IMPORT, CurrencyRates_Import); - - return 0; -} - -///////////////////////////////////////////////////////////////////////////////////////// - -int CMPlugin::Unload(void) -{ - WaitForWorkingThreads(); - - ClearProviders(); - ::CloseHandle(g_hEventWorkThreadStop); - return 0; -} |