From f5718dda9247abb9e735fbf60e975d6d0662363a Mon Sep 17 00:00:00 2001 From: Sergey Bolhovskoy Date: Tue, 16 Dec 2014 05:12:06 +0000 Subject: =?UTF-8?q?VKontakte:=20vk=20feeds=20support=20(wall)=20=E2=80=93?= =?UTF-8?q?=20part=202=20version=20bump?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://svn.miranda-ng.org/main/trunk@11443 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- protocols/VKontakte/res/resource.rc | 43 ++++++++++++------ protocols/VKontakte/src/resource.h | 8 +++- protocols/VKontakte/src/version.h | 2 +- protocols/VKontakte/src/vk_feed.cpp | 7 +-- protocols/VKontakte/src/vk_options.cpp | 79 ++++++++++++++++++++++++++++++++++ protocols/VKontakte/src/vk_proto.cpp | 5 ++- protocols/VKontakte/src/vk_proto.h | 2 + 7 files changed, 126 insertions(+), 20 deletions(-) (limited to 'protocols/VKontakte') diff --git a/protocols/VKontakte/res/resource.rc b/protocols/VKontakte/res/resource.rc index 3375a0542a..290e159da7 100644 --- a/protocols/VKontakte/res/resource.rc +++ b/protocols/VKontakte/res/resource.rc @@ -12,11 +12,11 @@ #undef APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// -// Русский (Россия) resources +// Английский (США) resources -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS) -LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT -#pragma code_page(1251) +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) ///////////////////////////////////////////////////////////////////////////// // @@ -35,16 +35,6 @@ IDI_VISITPROFILE ICON "home.ico" IDI_HISTORY ICON "history.ico" IDI_KEYS ICON "key.ico" IDI_BROADCAST ICON "broadcast.ico" -#endif // Русский (Россия) resources -///////////////////////////////////////////////////////////////////////////// - - -///////////////////////////////////////////////////////////////////////////// -// Английский (США) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) ///////////////////////////////////////////////////////////////////////////// // @@ -54,6 +44,15 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US #ifdef APSTUDIO_INVOKED GUIDELINES DESIGNINFO BEGIN + IDD_OPT_FEEDS, DIALOG + BEGIN + LEFTMARGIN, 4 + RIGHTMARGIN, 297 + TOPMARGIN, 7 + BOTTOMMARGIN, 97 + HORZGUIDE, 77 + END + IDD_ACCMGRUI, DIALOG BEGIN LEFTMARGIN, 7 @@ -106,6 +105,22 @@ END // Dialog // +IDD_OPT_FEEDS DIALOGEX 0, 0, 309, 106 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD +EXSTYLE WS_EX_CONTROLPARENT +FONT 8, "MS Shell Dlg", 0, 0, 0x1 +BEGIN + GROUPBOX "News and event notifications",IDC_STATIC,4,8,293,83 + CTEXT "WARNING: Causes excessive network traffic!!!",IDC_STATIC,12,19,278,8 + CONTROL "Enable news feeds",IDC_NEWS_ENBL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,30,278,10 + CONTROL "Enable event notifications",IDC_NOTIF_ENBL,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,12,41,278,10 + CONTROL "BBCode support on news and event notifications",IDC_BBC_NEWS, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,52,278,10 + LTEXT "Interval for updates (min):",IDC_STATIC,16,67,97,8 + EDITTEXT IDC_ED_INT,118,63,40,14,ES_RIGHT | ES_AUTOHSCROLL | ES_NUMBER + CONTROL "",IDC_SPIN_INT,"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS,158,63,14,14 +END + IDD_ACCMGRUI DIALOGEX 0, 0, 186, 68 STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD EXSTYLE WS_EX_CONTROLPARENT diff --git a/protocols/VKontakte/src/resource.h b/protocols/VKontakte/src/resource.h index f4532a417e..9ce31f0f30 100644 --- a/protocols/VKontakte/src/resource.h +++ b/protocols/VKontakte/src/resource.h @@ -8,6 +8,7 @@ #define IDD_INVITE 104 #define IDD_GC_CREATE 105 #define IDD_OPT_ADV 106 +#define IDD_OPT_FEEDS 107 #define IDI_NOTIFICATION 109 #define IDI_FRIENDADD 110 #define IDI_BAN 111 @@ -58,6 +59,11 @@ #define IDC_SYNC_AUTO 1051 #define IDC_SYNC_LAST1DAY 1052 #define IDC_SYNC_LAST3DAY 1053 +#define IDC_NEWS_ENBL 1054 +#define IDC_NOTIF_ENBL 1055 +#define IDC_BBC_NEWS 1056 +#define IDC_ED_INT 1057 +#define IDC_SPIN_INT 1058 // Next default values for new objects // @@ -66,7 +72,7 @@ #define _APS_NO_MFC 1 #define _APS_NEXT_RESOURCE_VALUE 118 #define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1054 +#define _APS_NEXT_CONTROL_VALUE 1059 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif diff --git a/protocols/VKontakte/src/version.h b/protocols/VKontakte/src/version.h index d2776a5e3a..e765d64d4f 100644 --- a/protocols/VKontakte/src/version.h +++ b/protocols/VKontakte/src/version.h @@ -1,7 +1,7 @@ #define __MAJOR_VERSION 0 #define __MINOR_VERSION 1 #define __RELEASE_NUM 0 -#define __BUILD_NUM 30 +#define __BUILD_NUM 31 #include diff --git a/protocols/VKontakte/src/vk_feed.cpp b/protocols/VKontakte/src/vk_feed.cpp index d2d22e21bd..791c423d6b 100644 --- a/protocols/VKontakte/src/vk_feed.cpp +++ b/protocols/VKontakte/src/vk_feed.cpp @@ -22,8 +22,9 @@ static char* szImageTypes[] = { "photo_2560", "photo_1280", "photo_807", "photo_ void CVkProto::AddFeedSpecialUser() { - MCONTACT hContact = FindUser(VK_FEED_USER, m_bNewsEnabled); - if (!m_bNewsEnabled) { + bool bSpecialContact = m_bNewsEnabled || m_bNotificationsEnabled; + MCONTACT hContact = FindUser(VK_FEED_USER, bSpecialContact); + if (!bSpecialContact) { if (hContact) CallService(MS_DB_CONTACT_DELETE, (WPARAM)hContact, 0); return; @@ -64,7 +65,7 @@ void CVkProto::AddFeedEvent(CMString& tszBody, time_t tTime) void CVkProto::RetrieveUnreadNews() { debugLogA("CVkProto::RetrieveUnreadNews"); - if (!IsOnline() || !m_bNewsEnabled) + if (!IsOnline() || !(m_bNewsEnabled || m_bNotificationsEnabled)) return; time_t tLastNewsTime = getDword("LastNewsTime", time(NULL) - 24 * 60 * 60); diff --git a/protocols/VKontakte/src/vk_options.cpp b/protocols/VKontakte/src/vk_options.cpp index 380e3a5d3e..19037329f3 100644 --- a/protocols/VKontakte/src/vk_options.cpp +++ b/protocols/VKontakte/src/vk_options.cpp @@ -338,6 +338,79 @@ INT_PTR CALLBACK CVkProto::OptionsAdvProc(HWND hwndDlg, UINT uMsg, WPARAM wParam return FALSE; } +INT_PTR CALLBACK CVkProto::OptionsFeedsProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) +{ + CVkProto *ppro = (CVkProto*)GetWindowLongPtr(hwndDlg, GWLP_USERDATA); + + switch (uMsg) { + case WM_INITDIALOG: + TranslateDialogDefault(hwndDlg); + + ppro = (CVkProto*)lParam; + SetWindowLongPtr(hwndDlg, GWLP_USERDATA, lParam); + + SendMessage(hwndDlg, WM_SETICON, ICON_BIG, (LPARAM)Skin_GetIconByHandle(ppro->m_hProtoIcon, 1)); + SendMessage(hwndDlg, WM_SETICON, ICON_SMALL, (LPARAM)Skin_GetIconByHandle(ppro->m_hProtoIcon)); + + CheckDlgButton(hwndDlg, IDC_NEWS_ENBL, ppro->m_bNewsEnabled ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_NOTIF_ENBL, ppro->m_bNotificationsEnabled ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_BBC_NEWS, ppro->m_bBBCOnNews ? BST_CHECKED : BST_UNCHECKED); + + SendDlgItemMessage(hwndDlg, IDC_SPIN_INT, UDM_SETRANGE, 0, MAKELONG(60*24, 1)); + SendDlgItemMessage(hwndDlg, IDC_SPIN_INT, UDM_SETPOS, 0, ppro->m_iNewsInterval); + + return TRUE; + + case WM_COMMAND: + switch (LOWORD(wParam)) { + case IDC_ED_INT: + if ((HWND)lParam == GetFocus() && (HIWORD(wParam) == EN_CHANGE)) + SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + + case IDC_NEWS_ENBL: + case IDC_NOTIF_ENBL: + case IDC_BBC_NEWS: + if (HIWORD(wParam) == BN_CLICKED && (HWND)lParam == GetFocus()) + SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + } + break; + + case WM_NOTIFY: + if (((LPNMHDR)lParam)->code == UDN_DELTAPOS) + SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + + if (((LPNMHDR)lParam)->code == PSN_APPLY) { + ppro->m_bNewsEnabled = IsDlgButtonChecked(hwndDlg, IDC_NEWS_ENBL) == BST_CHECKED; + ppro->setByte("NewsEnabled", ppro->m_bNewsEnabled); + + ppro->m_bNotificationsEnabled = IsDlgButtonChecked(hwndDlg, IDC_NOT_ENBL) == BST_CHECKED; + ppro->setByte("NotificationsEnabled", ppro->m_bNotificationsEnabled); + + ppro->m_bBBCOnNews = IsDlgButtonChecked(hwndDlg, IDC_BBC_NEWS) == BST_CHECKED; + ppro->setByte("BBCOnNews", ppro->m_bBBCOnNews); + + TCHAR buffer[5] = { 0 }; + GetDlgItemText(hwndDlg, IDC_ED_INT, buffer, SIZEOF(buffer)); + ppro->setDword("NewsInterval", ppro->m_iNewsInterval = _ttoi(buffer)); + + } + break; + + case WM_CLOSE: + EndDialog(hwndDlg, 0); + break; + + case WM_DESTROY: + Skin_ReleaseIcon((HICON)SendMessage(hwndDlg, WM_GETICON, ICON_BIG, 0)); + Skin_ReleaseIcon((HICON)SendMessage(hwndDlg, WM_GETICON, ICON_SMALL, 0)); + break; + } + + return FALSE; +} + int CVkProto::OnOptionsInit(WPARAM wParam, LPARAM) { OPTIONSDIALOGPAGE odp = { sizeof(odp) }; @@ -358,5 +431,11 @@ int CVkProto::OnOptionsInit(WPARAM wParam, LPARAM) odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_ADV); odp.pfnDlgProc = &CVkProto::OptionsAdvProc; Options_AddPage(wParam, &odp); + + odp.ptszTab = LPGENT("News and notifications"); + odp.position = 3; + odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_FEEDS); + odp.pfnDlgProc = &CVkProto::OptionsFeedsProc; + Options_AddPage(wParam, &odp); return 0; } diff --git a/protocols/VKontakte/src/vk_proto.cpp b/protocols/VKontakte/src/vk_proto.cpp index 6238e399a5..5786d5aa0e 100644 --- a/protocols/VKontakte/src/vk_proto.cpp +++ b/protocols/VKontakte/src/vk_proto.cpp @@ -79,6 +79,7 @@ CVkProto::CVkProto(const char *szModuleName, const TCHAR *ptszUserName) : szListeningTo += "Enabled"; db_set_b(NULL, "ListeningTo", szListeningTo.GetBuffer(), m_iMusicSendMetod == 0 ? 0 : 1); m_bNewsEnabled = getBool("NewsEnabled", false); + m_bNotificationsEnabled = getBool("NotificationsEnabled", false); m_bBBCOnNews = getBool("BBCOnNews", false); m_iNewsInterval = getDword("NewsInterval", 15); @@ -424,8 +425,10 @@ int CVkProto::SendMsg(MCONTACT hContact, int flags, const char *msg) if (!IsOnline()) return 0; LONG userID = getDword(hContact, "ID", -1); - if (userID == -1 || userID == VK_FEED_USER) + if (userID == -1 || userID == VK_FEED_USER){ + ForkThread(&CVkProto::SendMsgAck, new TFakeAckParams(hContact, 0)); return 0; + } ptrA szMsg; if (flags & PREF_UTF) diff --git a/protocols/VKontakte/src/vk_proto.h b/protocols/VKontakte/src/vk_proto.h index 2e906bb011..8167a0b47d 100644 --- a/protocols/VKontakte/src/vk_proto.h +++ b/protocols/VKontakte/src/vk_proto.h @@ -476,6 +476,7 @@ private: m_bStikersAsSmyles, m_bUserForceOnlineOnActivity, m_bNewsEnabled, + m_bNotificationsEnabled, m_bBBCOnNews; int m_iNewsInterval; @@ -511,6 +512,7 @@ private: static INT_PTR CALLBACK OptionsProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); static INT_PTR CALLBACK OptionsAdvProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); + static INT_PTR CALLBACK OptionsFeedsProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); OBJLIST m_chats; CVkChatInfo* AppendChat(int id, JSONNODE *pNode); -- cgit v1.2.3