summaryrefslogtreecommitdiff
path: root/protocols/VKontakte
diff options
context:
space:
mode:
authorSergey Bolhovskoy <elzorfox@ya.ru>2015-03-02 07:47:01 +0000
committerSergey Bolhovskoy <elzorfox@ya.ru>2015-03-02 07:47:01 +0000
commit8551a2e6a8e9e1f75056ddfdd6e0ae83f1845647 (patch)
treecdc367f19768c5d4169bdb815d21988e2667f971 /protocols/VKontakte
parentb6c1c9f09ada59b7f363b9f51e4a29fc15a7de37 (diff)
VKontakte:
wall.post support - part 2 (complete) version bump git-svn-id: http://svn.miranda-ng.org/main/trunk@12297 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'protocols/VKontakte')
-rw-r--r--protocols/VKontakte/res/resource.rc23
-rw-r--r--protocols/VKontakte/res/wall.icobin0 -> 1150 bytes
-rw-r--r--protocols/VKontakte/src/misc.cpp9
-rw-r--r--protocols/VKontakte/src/resource.h10
-rw-r--r--protocols/VKontakte/src/version.h2
-rw-r--r--protocols/VKontakte/src/vk.h2
-rw-r--r--protocols/VKontakte/src/vk_messages.cpp27
-rw-r--r--protocols/VKontakte/src/vk_options.cpp4
-rw-r--r--protocols/VKontakte/src/vk_proto.cpp16
-rw-r--r--protocols/VKontakte/src/vk_proto.h5
-rw-r--r--protocols/VKontakte/src/vk_wallpost.cpp122
-rw-r--r--protocols/VKontakte/vk_10.vcxproj2
-rw-r--r--protocols/VKontakte/vk_10.vcxproj.filters6
-rw-r--r--protocols/VKontakte/vk_12.vcxproj2
-rw-r--r--protocols/VKontakte/vk_12.vcxproj.filters6
15 files changed, 202 insertions, 34 deletions
diff --git a/protocols/VKontakte/res/resource.rc b/protocols/VKontakte/res/resource.rc
index f199e9e1aa..a883513268 100644
--- a/protocols/VKontakte/res/resource.rc
+++ b/protocols/VKontakte/res/resource.rc
@@ -36,6 +36,7 @@ IDI_HISTORY ICON "history.ico"
IDI_KEYS ICON "key.ico"
IDI_BROADCAST ICON "broadcast.ico"
IDI_STATUS ICON "status.ico"
+IDI_WALL ICON "wall.ico"
/////////////////////////////////////////////////////////////////////////////
//
@@ -104,6 +105,14 @@ BEGIN
TOPMARGIN, 7
BOTTOMMARGIN, 225
END
+
+ IDD_WALLPOST, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 309
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 137
+ END
END
#endif // APSTUDIO_INVOKED
@@ -291,6 +300,20 @@ BEGIN
PUSHBUTTON "Cancel",IDCANCEL,160,211,50,14
END
+IDD_WALLPOST DIALOGEX 0, 0, 316, 144
+STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
+CAPTION ""
+FONT 8, "MS Shell Dlg", 400, 0, 0x1
+BEGIN
+ DEFPUSHBUTTON "Share",IDOK,205,123,50,14
+ PUSHBUTTON "Cancel",IDCANCEL,259,123,50,14
+ EDITTEXT IDC_ED_MSG,7,7,302,70,ES_MULTILINE | ES_AUTOHSCROLL
+ EDITTEXT IDC_ED_URL,61,82,248,12,ES_AUTOHSCROLL
+ RTEXT "Url:",IDC_STATIC,7,84,49,8
+ CONTROL "Only for friends",IDC_ONLY_FRIENDS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,61,98,248,10
+ CTEXT "Attention",IDC_ST_WARNING,7,112,302,10
+END
+
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
diff --git a/protocols/VKontakte/res/wall.ico b/protocols/VKontakte/res/wall.ico
new file mode 100644
index 0000000000..a5adbf459d
--- /dev/null
+++ b/protocols/VKontakte/res/wall.ico
Binary files differ
diff --git a/protocols/VKontakte/src/misc.cpp b/protocols/VKontakte/src/misc.cpp
index 63bdf935e2..1be32e9de0 100644
--- a/protocols/VKontakte/src/misc.cpp
+++ b/protocols/VKontakte/src/misc.cpp
@@ -79,7 +79,8 @@ static IconItem iconList[] =
{ LPGEN("Report abuse icon"), "abuse", IDI_ABUSE },
{ LPGEN("Ban user icon"), "ban", IDI_BAN },
{ LPGEN("Broadcast icon"), "broadcast", IDI_BROADCAST },
- { LPGEN("Status icon"), "status", IDI_STATUS }
+ { LPGEN("Status icon"), "status", IDI_STATUS },
+ { LPGEN("Wall message icon"), "wall", IDI_WALL }
};
void InitIcons()
@@ -377,6 +378,12 @@ bool CVkProto::CheckJsonResult(AsyncHttpRequest *pReq, JSONNODE *pNode)
if (param)
param->iCount = iErrorCode;
break;
+ case VKERR_INVALID_PARAMETERS:
+ MsgPopup(NULL, TranslateT("One of the parameters specified was missing or invalid"), TranslateT("Error"), true);
+ break;
+ case VKERR_ACC_WALL_POST_DENIED:
+ MsgPopup(NULL, TranslateT("Access to adding post denied"), TranslateT("Error"), true);
+ break;
}
return iErrorCode == 0;
diff --git a/protocols/VKontakte/src/resource.h b/protocols/VKontakte/src/resource.h
index c9d06a8f0e..da2e728ec0 100644
--- a/protocols/VKontakte/src/resource.h
+++ b/protocols/VKontakte/src/resource.h
@@ -20,6 +20,8 @@
#define IDI_BROADCAST 117
#define IDD_OPT_VIEW 118
#define IDI_STATUS 119
+#define IDD_WALLPOST 120
+#define IDI_WALL 121
#define IDI_KEYS 203
#define IDC_LOGIN 1001
#define IDC_PASSWORD 1002
@@ -97,15 +99,19 @@
#define IDC_USENOSTDURLENCODE 1088
#define IDC_ED_INT_INVIS 1089
#define IDC_SPIN_INT_INVIS 1090
+#define IDC_ED_MSG 1091
+#define IDC_ED_URL 1092
+#define IDC_ONLY_FRIENDS 1093
+#define IDC_ST_WARNING 1095
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NO_MFC 1
-#define _APS_NEXT_RESOURCE_VALUE 120
+#define _APS_NEXT_RESOURCE_VALUE 122
#define _APS_NEXT_COMMAND_VALUE 40001
-#define _APS_NEXT_CONTROL_VALUE 1091
+#define _APS_NEXT_CONTROL_VALUE 1096
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
diff --git a/protocols/VKontakte/src/version.h b/protocols/VKontakte/src/version.h
index 531b952080..d44c6569b9 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 49
+#define __BUILD_NUM 50
#include <stdver.h>
diff --git a/protocols/VKontakte/src/vk.h b/protocols/VKontakte/src/vk.h
index cde70d8614..553171708d 100644
--- a/protocols/VKontakte/src/vk.h
+++ b/protocols/VKontakte/src/vk.h
@@ -56,11 +56,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define VKERR_COULD_NOT_SAVE_FILE 105 // Couldn't save file
#define VKERR_INVALID_ALBUM_ID 114 // Invalid album id
#define VKERR_INVALID_SERVER 118 // Invalid server
+#define VKERR_INVALID_PARAMETERS 100 // One of the parameters specified was missing or invalid
#define VKERR_INVALID_HASH 121 // Invalid hash
#define VKERR_INVALID_AUDIO 123 // Invalid audio
#define VKERR_HIMSELF_AS_FRIEND 174 // Cannot add user himself as friend
#define VKERR_YOU_ON_BLACKLIST 175 // Cannot add this user to friends as they have put you on their blacklist
#define VKERR_USER_ON_BLACKLIST 176 // Cannot add this user to friends as you put him on blacklist
+#define VKERR_ACC_WALL_POST_DENIED 214 // Access to adding post denied
#define VKERR_AUDIO_DEL_COPYRIGHT 270 // The audio file was removed by the copyright holder and cannot be reuploaded.
#define VKERR_INVALID_FILENAME 301 // Invalid filename
#define VKERR_INVALID_FILESIZE 302 // Invalid filesize
diff --git a/protocols/VKontakte/src/vk_messages.cpp b/protocols/VKontakte/src/vk_messages.cpp
index 73bb93fa61..80002277ac 100644
--- a/protocols/VKontakte/src/vk_messages.cpp
+++ b/protocols/VKontakte/src/vk_messages.cpp
@@ -345,31 +345,4 @@ void CVkProto::OnReceiveDlgs(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pReq)
RetrieveUsersInfo();
}
-INT_PTR __cdecl CVkProto::SvcWallPost(WPARAM hContact, LPARAM)
-{
- return 1;
-}
-void CVkProto::WallPost(MCONTACT hContact, TCHAR *ptszMsg, TCHAR *ptszUrl, bool bFriendsOnly)
-{
- debugLogA("CVkProto::WallPost");
- if (!IsOnline() || (IsEmpty(ptszMsg) && IsEmpty(ptszUrl)))
- return;
-
- LONG userID = hContact ? m_myUserId : getDword(hContact, "ID", -1);
- if (userID == -1 || userID == VK_FEED_USER)
- return;
-
- AsyncHttpRequest *pReq = new AsyncHttpRequest(this, REQUEST_POST, "/method/wall.post.json", true, &CVkProto::OnReceiveSmth)
- << INT_PARAM("owner_id", userID)
- << INT_PARAM("friends_only", bFriendsOnly ? 1 : 0)
- << VER_API;
-
- if (!IsEmpty(ptszMsg))
- pReq << TCHAR_PARAM("message", ptszMsg);
-
- if (!IsEmpty(ptszUrl))
- pReq << TCHAR_PARAM("attachments", ptszUrl);
-
- Push(pReq);
-}
diff --git a/protocols/VKontakte/src/vk_options.cpp b/protocols/VKontakte/src/vk_options.cpp
index 9ab932541a..7c82a41464 100644
--- a/protocols/VKontakte/src/vk_options.cpp
+++ b/protocols/VKontakte/src/vk_options.cpp
@@ -47,7 +47,7 @@ INT_PTR CALLBACK VKAccountProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lP
case WM_COMMAND:
switch (LOWORD(wParam)) {
case IDC_URL:
- CallService(MS_UTILS_OPENURL, OUF_NEWWINDOW, (LPARAM)"http://www.vk.com");
+ CallService(MS_UTILS_OPENURL, OUF_NEWWINDOW, (LPARAM)"http://vk.com");
break;
case IDC_LOGIN:
@@ -138,7 +138,7 @@ INT_PTR CALLBACK CVkProto::OptionsProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, L
case WM_COMMAND:
switch (LOWORD(wParam)) {
case IDC_URL:
- CallService(MS_UTILS_OPENURL, OUF_NEWWINDOW, (LPARAM)"http://www.vk.com");
+ CallService(MS_UTILS_OPENURL, OUF_NEWWINDOW, (LPARAM)"http://vk.com");
break;
case IDC_LOGIN:
diff --git a/protocols/VKontakte/src/vk_proto.cpp b/protocols/VKontakte/src/vk_proto.cpp
index a1b13558ad..dbfc7d026e 100644
--- a/protocols/VKontakte/src/vk_proto.cpp
+++ b/protocols/VKontakte/src/vk_proto.cpp
@@ -178,6 +178,7 @@ void CVkProto::InitMenus()
CreateProtoService(PS_OPENBROADCAST, &CVkProto::SvcOpenBroadcast);
CreateProtoService(PS_LOADVKNEWS, &CVkProto::SvcLoadVKNews);
CreateProtoService(PS_SETSTATUSMSG, &CVkProto::SvcSetStatusMsg);
+ CreateProtoService(PS_WALLPOST, &CVkProto::SvcWallPost);
CLISTMENUITEM mi = { sizeof(mi) };
char szService[100];
@@ -200,6 +201,13 @@ void CVkProto::InitMenus()
mi.pszName = LPGEN("Status message");
g_hProtoMenuItems[PMI_SETSTATUSMSG] = Menu_AddProtoMenuItem(&mi);
+ mir_snprintf(szService, SIZEOF(szService), "%s%s", m_szModuleName, PS_WALLPOST);
+ mi.pszService = szService;
+ mi.position = 10009 + PMI_WALLPOST;
+ mi.icolibItem = Skin_GetIconByHandle(GetIconHandle(IDI_WALL));
+ mi.pszName = LPGEN("Sent message to my wall");
+ g_hProtoMenuItems[PMI_WALLPOST] = Menu_AddProtoMenuItem(&mi);
+
mir_snprintf(szService, SIZEOF(szService), "%s%s", m_szModuleName, PS_LOADVKNEWS);
mi.pszService = szService;
mi.position = 10009 + PMI_LOADVKNEWS;
@@ -222,6 +230,13 @@ void CVkProto::InitMenus()
mi.ptszName = LPGENT("Visit profile");
g_hContactMenuItems[CMI_VISITPROFILE] = Menu_AddContactMenuItem(&mi);
+ mir_snprintf(szService, SIZEOF(szService), "%s%s", m_szModuleName, PS_WALLPOST);
+ mi.position = -200001000 + CMI_WALLPOST;
+ mi.icolibItem = Skin_GetIconByHandle(GetIconHandle(IDI_WALL));
+ mi.ptszName = LPGENT("Sent message to user\'s wall");
+ mi.pszService = szService;
+ g_hContactMenuItems[CMI_WALLPOST] = Menu_AddContactMenuItem(&mi);
+
mir_snprintf(szService, SIZEOF(szService), "%s%s", m_szModuleName, PS_ADDASFRIEND);
mi.position = -200001000 + CMI_ADDASFRIEND;
mi.icolibItem = Skin_GetIconByHandle(GetIconHandle(IDI_FRIENDADD));
@@ -331,6 +346,7 @@ int CVkProto::OnPreBuildContactMenu(WPARAM hContact, LPARAM)
bool bisFriend = (getByte(hContact, "Auth", -1) == 0);
bool bisBroadcast = !(IsEmpty(ptrT(db_get_tsa(hContact, m_szModuleName, "AudioUrl"))));
Menu_ShowItem(g_hContactMenuItems[CMI_VISITPROFILE], !isChatRoom(hContact));
+ Menu_ShowItem(g_hContactMenuItems[CMI_WALLPOST], !isChatRoom(hContact));
Menu_ShowItem(g_hContactMenuItems[CMI_ADDASFRIEND], !bisFriend && !isChatRoom(hContact) && userID != VK_FEED_USER);
Menu_ShowItem(g_hContactMenuItems[CMI_DELETEFRIEND], bisFriend && userID != VK_FEED_USER);
Menu_ShowItem(g_hContactMenuItems[CMI_BANUSER], !isChatRoom(hContact) && userID != VK_FEED_USER);
diff --git a/protocols/VKontakte/src/vk_proto.h b/protocols/VKontakte/src/vk_proto.h
index 37e70d37cb..3296e5d0a6 100644
--- a/protocols/VKontakte/src/vk_proto.h
+++ b/protocols/VKontakte/src/vk_proto.h
@@ -32,6 +32,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define PS_DESTROYKICKCHAT "/DestroyKickChat"
#define PS_OPENBROADCAST "/OpenBroadcast"
#define PS_SETSTATUSMSG "/SetStatusMsg"
+#define PS_WALLPOST "/WallPost"
#define MAXHISTORYMIDSPERONE 200
#define MAX_RETRIES 10
@@ -450,7 +451,7 @@ struct CVkProto : public PROTO<CVkProto>
void OnReceiveDlgs(NETLIBHTTPREQUEST*, AsyncHttpRequest*);
void OnSendMessage(NETLIBHTTPREQUEST*, AsyncHttpRequest*);
- void WallPost(MCONTACT hContact, TCHAR *ptszMsg, TCHAR *ptszUrl, bool bFriendsOnly = false);
+ void WallPost(MCONTACT hContact, TCHAR *ptszMsg, TCHAR *ptszUrl, bool bFriendsOnly);
void GetServerHistoryLastNDay(MCONTACT hContact, int NDay);
void GetServerHistory(MCONTACT hContact, int iOffset, int iCount, int iTime, int iLastMsgId, bool once = false);
@@ -491,6 +492,7 @@ private:
enum CLMenuIndexes {
CMI_VISITPROFILE,
+ CMI_WALLPOST,
CMI_ADDASFRIEND,
CMI_DELETEFRIEND,
CMI_BANUSER,
@@ -514,6 +516,7 @@ private:
enum ProtoMenuIndexes {
PMI_CREATECHAT,
PMI_SETSTATUSMSG,
+ PMI_WALLPOST,
PMI_LOADVKNEWS,
PMI_VISITPROFILE,
PMI_COUNT
diff --git a/protocols/VKontakte/src/vk_wallpost.cpp b/protocols/VKontakte/src/vk_wallpost.cpp
new file mode 100644
index 0000000000..2648d88af9
--- /dev/null
+++ b/protocols/VKontakte/src/vk_wallpost.cpp
@@ -0,0 +1,122 @@
+/*
+Copyright (c) 2013-15 Miranda NG project (http://miranda-ng.org)
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation version 2
+of the License.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "stdafx.h"
+
+struct WALLPOST_FORM_PARAMS
+{
+ TCHAR* ptszMsg;
+ TCHAR* ptszUrl;
+ TCHAR* ptszNick;
+ bool bFriendsOnly;
+
+ WALLPOST_FORM_PARAMS(TCHAR* nick) :
+ ptszNick(nick),
+ bFriendsOnly(false)
+ {
+ ptszMsg = ptszUrl = NULL;
+ }
+
+ ~WALLPOST_FORM_PARAMS()
+ {
+ mir_free(ptszMsg);
+ mir_free(ptszUrl);
+ mir_free(ptszNick);
+ }
+};
+
+static INT_PTR CALLBACK WallPostFormDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
+{
+ WALLPOST_FORM_PARAMS *param = (WALLPOST_FORM_PARAMS *)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
+ switch (msg) {
+ case WM_INITDIALOG:
+ param = (WALLPOST_FORM_PARAMS *)lParam;
+ TranslateDialogDefault(hwndDlg);
+ {
+ SetDlgItemText(hwndDlg, IDC_ST_WARNING, _T(""));
+ CMString tszTitle;
+ tszTitle.AppendFormat(_T("%s %s"), TranslateT("Wall message for"), param->ptszNick);
+ SetWindowText(hwndDlg, tszTitle.GetBuffer());
+ }
+ SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)param);
+ return TRUE;
+
+ case WM_COMMAND:
+ switch (LOWORD(wParam)) {
+ case IDCANCEL:
+ EndDialog(hwndDlg, 0);
+ return TRUE;
+
+ case IDOK:
+ TCHAR tszMsg[4096], tszUrl[4096];
+ GetDlgItemText(hwndDlg, IDC_ED_MSG, tszMsg, SIZEOF(tszMsg));
+ GetDlgItemText(hwndDlg, IDC_ED_URL, tszUrl, SIZEOF(tszUrl));
+
+ if (IsEmpty(tszMsg) && IsEmpty(tszUrl)) {
+ SetDlgItemText(hwndDlg, IDC_ST_WARNING, TranslateT("Attention! Message body or url should not be empty!"));
+ return FALSE;
+ }
+
+ if (!IsEmpty(tszMsg))
+ param->ptszMsg = mir_tstrdup(tszMsg);
+ if (!IsEmpty(tszUrl))
+ param->ptszUrl = mir_tstrdup(tszUrl);
+
+ param->bFriendsOnly = IsDlgButtonChecked(hwndDlg, IDC_ONLY_FRIENDS) == BST_CHECKED;
+ EndDialog(hwndDlg, (INT_PTR)param);
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+INT_PTR __cdecl CVkProto::SvcWallPost(WPARAM hContact, LPARAM)
+{
+ debugLogA("CVkProto::SvcWallPost");
+
+ WALLPOST_FORM_PARAMS param(db_get_tsa(hContact, m_szModuleName, "Nick"));
+ if (DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_WALLPOST), NULL, WallPostFormDlgProc, (LPARAM)&param) == 0)
+ return 1;
+
+ WallPost((MCONTACT)hContact, param.ptszMsg, param.ptszUrl, param.bFriendsOnly);
+ return 0;
+}
+
+void CVkProto::WallPost(MCONTACT hContact, TCHAR *ptszMsg, TCHAR *ptszUrl, bool bFriendsOnly)
+{
+ debugLogA("CVkProto::WallPost");
+ if (!IsOnline() || (IsEmpty(ptszMsg) && IsEmpty(ptszUrl)))
+ return;
+
+ LONG userID = hContact ? m_myUserId : getDword(hContact, "ID", -1);
+ if (userID == -1 || userID == VK_FEED_USER)
+ return;
+
+ AsyncHttpRequest *pReq = new AsyncHttpRequest(this, REQUEST_POST, "/method/wall.post.json", true, &CVkProto::OnReceiveSmth)
+ << INT_PARAM("owner_id", userID)
+ << INT_PARAM("friends_only", bFriendsOnly ? 1 : 0)
+ << VER_API;
+
+ if (!IsEmpty(ptszMsg))
+ pReq << TCHAR_PARAM("message", ptszMsg);
+
+ if (!IsEmpty(ptszUrl))
+ pReq << TCHAR_PARAM("attachments", ptszUrl);
+
+ Push(pReq);
+} \ No newline at end of file
diff --git a/protocols/VKontakte/vk_10.vcxproj b/protocols/VKontakte/vk_10.vcxproj
index 0a4ad33b08..f0b650c618 100644
--- a/protocols/VKontakte/vk_10.vcxproj
+++ b/protocols/VKontakte/vk_10.vcxproj
@@ -194,6 +194,7 @@
<ClCompile Include="src\vk_search.cpp" />
<ClCompile Include="src\vk_status.cpp" />
<ClCompile Include="src\vk_thread.cpp" />
+ <ClCompile Include="src\vk_wallpost.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="src\resource.h" />
@@ -218,6 +219,7 @@
<None Include="res\read.ico" />
<None Include="res\report.ico" />
<None Include="res\status.ico" />
+ <None Include="res\wall.ico" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
diff --git a/protocols/VKontakte/vk_10.vcxproj.filters b/protocols/VKontakte/vk_10.vcxproj.filters
index 8127a6664d..a6c92e438f 100644
--- a/protocols/VKontakte/vk_10.vcxproj.filters
+++ b/protocols/VKontakte/vk_10.vcxproj.filters
@@ -69,6 +69,9 @@
<ClCompile Include="src\vk_pollserver.cpp">
<Filter>Source Files</Filter>
</ClCompile>
+ <ClCompile Include="src\vk_wallpost.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="src\version.h">
@@ -129,5 +132,8 @@
<None Include="res\status.ico">
<Filter>Resource Files\Icons</Filter>
</None>
+ <None Include="res\wall.ico">
+ <Filter>Resource Files\Icons</Filter>
+ </None>
</ItemGroup>
</Project> \ No newline at end of file
diff --git a/protocols/VKontakte/vk_12.vcxproj b/protocols/VKontakte/vk_12.vcxproj
index 0676ebf4ab..85e663c82f 100644
--- a/protocols/VKontakte/vk_12.vcxproj
+++ b/protocols/VKontakte/vk_12.vcxproj
@@ -197,6 +197,7 @@
<ClCompile Include="src\vk_thread.cpp" />
<ClCompile Include="src\vk_history.cpp" />
<ClCompile Include="src\vk_feed.cpp" />
+ <ClCompile Include="src\vk_wallpost.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="src\resource.h" />
@@ -221,6 +222,7 @@
<Image Include="res\read.ico" />
<Image Include="res\report.ico" />
<Image Include="res\status.ico" />
+ <Image Include="res\wall.ico" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
diff --git a/protocols/VKontakte/vk_12.vcxproj.filters b/protocols/VKontakte/vk_12.vcxproj.filters
index 194a5b0c0d..c312492355 100644
--- a/protocols/VKontakte/vk_12.vcxproj.filters
+++ b/protocols/VKontakte/vk_12.vcxproj.filters
@@ -69,6 +69,9 @@
<ClCompile Include="src\vk_pollserver.cpp">
<Filter>Source Files</Filter>
</ClCompile>
+ <ClCompile Include="src\vk_wallpost.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="src\version.h">
@@ -129,5 +132,8 @@
<Image Include="res\status.ico">
<Filter>Resource Files\Icons</Filter>
</Image>
+ <Image Include="res\wall.ico">
+ <Filter>Resource Files\Icons</Filter>
+ </Image>
</ItemGroup>
</Project> \ No newline at end of file