summaryrefslogtreecommitdiff
path: root/protocols/WhatsAppWeb/src/proto.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/WhatsAppWeb/src/proto.cpp')
-rw-r--r--protocols/WhatsAppWeb/src/proto.cpp40
1 files changed, 24 insertions, 16 deletions
diff --git a/protocols/WhatsAppWeb/src/proto.cpp b/protocols/WhatsAppWeb/src/proto.cpp
index 3766f8f625..6beed4d91c 100644
--- a/protocols/WhatsAppWeb/src/proto.cpp
+++ b/protocols/WhatsAppWeb/src/proto.cpp
@@ -27,6 +27,11 @@ static int CompareUsers(const WAUser *p1, const WAUser *p2)
return strcmp(p1->szId, p2->szId);
}
+static int CompareCollections(const WACollection *p1, const WACollection *p2)
+{
+ return strcmp(p1->szName, p2->szName);
+}
+
WhatsAppProto::WhatsAppProto(const char *proto_name, const wchar_t *username) :
PROTO<WhatsAppProto>(proto_name, username),
m_impl(*this),
@@ -38,6 +43,8 @@ WhatsAppProto::WhatsAppProto(const char *proto_name, const wchar_t *username) :
m_arOwnMsgs(1, CompareOwnMsgs),
m_arPersistent(1),
m_arPacketQueue(10),
+ m_arCollections(10, CompareCollections),
+
m_wszNick(this, "Nick"),
m_wszDefaultGroup(this, "DefaultGroup", L"WhatsApp"),
m_bUsePopups(this, "UsePopups", true),
@@ -54,6 +61,7 @@ WhatsAppProto::WhatsAppProto(const char *proto_name, const wchar_t *username) :
HookProtoEvent(ME_OPT_INITIALISE, &WhatsAppProto::OnOptionsInit);
+ InitCollections();
InitPopups();
InitPersistentHandlers();
@@ -67,6 +75,9 @@ WhatsAppProto::WhatsAppProto(const char *proto_name, const wchar_t *username) :
nlu.szDescriptiveName.w = descr;
m_hNetlibUser = Netlib_RegisterUser(&nlu);
+ // Temporary folder
+ CreateDirectoryTreeW(CMStringW(VARSW(L"%miranda_userdata%")) + L"\\" + _A2T(m_szModuleName));
+
// Avatars folder
m_tszAvatarFolder = CMStringW(VARSW(L"%miranda_avatarcache%")) + L"\\" + m_tszUserName;
DWORD dwAttributes = GetFileAttributes(m_tszAvatarFolder.c_str());
@@ -298,25 +309,22 @@ HANDLE WhatsAppProto::SearchBasic(const wchar_t* id)
}
//////////////////////////////////////////////////////////////////////////////
-// EVENTS
-LRESULT CALLBACK PopupDlgProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
+static int enumCollections(const char *szSetting, void *param)
{
- switch (message) {
- case WM_COMMAND:
- // After a click, destroy popup
- PUDeletePopup(hwnd);
- break;
+ auto *pList = (LIST<char> *)param;
+ if (!memcmp(szSetting, "Collection_", 11))
+ pList->insert(mir_strdup(szSetting));
+ return 0;
+}
- case WM_CONTEXTMENU:
- PUDeletePopup(hwnd);
- break;
+void WhatsAppProto::InitCollections()
+{
+ LIST<char> settings(10);
+ db_enum_settings(0, enumCollections, m_szModuleName, &settings);
- case UM_FREEPLUGINDATA:
- // After close, free
- mir_free(PUGetPluginData(hwnd));
- return FALSE;
+ for (auto &it : settings) {
+ m_arCollections.insert(new WACollection(it + 11, getDword(it)));
+ mir_free(it);
}
-
- return DefWindowProc(hwnd, message, wParam, lParam);
}