summaryrefslogtreecommitdiff
path: root/src/mir_app
diff options
context:
space:
mode:
authorGeorge Hazan <george.hazan@gmail.com>2023-12-13 20:19:46 +0300
committerGeorge Hazan <george.hazan@gmail.com>2023-12-13 20:19:46 +0300
commit054bb1949247445a29a68812579800904edf6a02 (patch)
tree6aecd3e738de818d45e703325b17f571baf02ee0 /src/mir_app
parent7657cf3cd9f3ae33e29091a947d76234997ebfd9 (diff)
MS_FILE_* services became useless since StdFile died
Diffstat (limited to 'src/mir_app')
-rw-r--r--src/mir_app/src/file.cpp58
-rw-r--r--src/mir_app/src/file.h10
-rw-r--r--src/mir_app/src/fileopts.cpp2
-rw-r--r--src/mir_app/src/filerecvdlg.cpp7
-rw-r--r--src/mir_app/src/filesenddlg.cpp14
-rw-r--r--src/mir_app/src/mir_app.def3
-rw-r--r--src/mir_app/src/mir_app64.def3
-rw-r--r--src/mir_app/src/srmm_util.cpp2
-rw-r--r--src/mir_app/src/utils.cpp2
9 files changed, 41 insertions, 60 deletions
diff --git a/src/mir_app/src/file.cpp b/src/mir_app/src/file.cpp
index 9410615939..8fa9291276 100644
--- a/src/mir_app/src/file.cpp
+++ b/src/mir_app/src/file.cpp
@@ -46,48 +46,20 @@ CMOption<uint32_t> File::iOfflineSize(SRFILEMODULE, "OfflineSize", 2000);
static HGENMENU hSRFileMenuItem;
-static INT_PTR SendFileCommand(WPARAM hContact, LPARAM)
-{
- FileSendData fsd;
- fsd.hContact = hContact;
- fsd.ppFiles = nullptr;
- return (INT_PTR)CreateDialogParam(g_plugin.getInst(), MAKEINTRESOURCE(IDD_FILESEND), NULL, DlgProcSendFile, (LPARAM)&fsd);
-}
+/////////////////////////////////////////////////////////////////////////////////////////
+// remove this piece of shit when we get rid of h++
-static INT_PTR SendSpecificFiles(WPARAM hContact, LPARAM lParam)
+EXTERN_C MIR_APP_DLL(void) GetFileReceivedFolder(MCONTACT hContact, wchar_t *buf)
{
- FileSendData fsd;
- fsd.hContact = hContact;
-
- char** ppFiles = (char**)lParam;
- int count = 0;
- while (ppFiles[count] != nullptr)
- count++;
-
- fsd.ppFiles = (const wchar_t**)alloca((count + 1) * sizeof(void*));
- for (int i = 0; i < count; i++)
- fsd.ppFiles[i] = mir_a2u(ppFiles[i]);
- fsd.ppFiles[count] = nullptr;
-
- HWND hWnd = CreateDialogParam(g_plugin.getInst(), MAKEINTRESOURCE(IDD_FILESEND), NULL, DlgProcSendFile, (LPARAM)&fsd);
- for (int j = 0; j < count; j++)
- mir_free((void*)fsd.ppFiles[j]);
- return (INT_PTR)hWnd;
+ File::GetReceivedFolder(hContact, buf, MAX_PATH);
}
-static INT_PTR SendSpecificFilesT(WPARAM hContact, LPARAM lParam)
-{
- FileSendData fsd;
- fsd.hContact = hContact;
- fsd.ppFiles = (const wchar_t**)lParam;
- return (INT_PTR)CreateDialogParam(g_plugin.getInst(), MAKEINTRESOURCE(IDD_FILESEND), NULL, DlgProcSendFile, (LPARAM)&fsd);
-}
+/////////////////////////////////////////////////////////////////////////////////////////
+// Services
-static INT_PTR GetReceivedFilesFolder(WPARAM hContact, LPARAM lParam)
+static INT_PTR SendFileCommand(WPARAM hContact, LPARAM)
{
- wchar_t buf[MAX_PATH];
- GetContactReceivedFilesDir(hContact, buf, _countof(buf), TRUE);
- mir_wstrncpy((wchar_t *)lParam, buf, MAX_PATH);
+ File::Send(hContact);
return 0;
}
@@ -97,6 +69,9 @@ static INT_PTR RecvFileCommand(WPARAM, LPARAM lParam)
return 0;
}
+/////////////////////////////////////////////////////////////////////////////////////////
+// Events
+
static void RemoveUnreadFileEvents(void)
{
for (auto &hContact : Contacts()) {
@@ -148,7 +123,7 @@ static int OnToolbarButtonPressed(WPARAM, LPARAM lParam)
return 0;
if (cbcd->dwButtonId == 1) {
- CallService(MS_FILE_SENDFILE, cbcd->hContact);
+ File::Send(cbcd->hContact);
return 0;
}
return 1;
@@ -162,8 +137,9 @@ static int SRFileModulesLoaded(WPARAM, LPARAM)
mi.position = -2000020000;
mi.hIcolibItem = Skin_GetIconHandle(SKINICON_EVENT_FILE);
mi.name.a = LPGEN("&File");
- mi.pszService = MS_FILE_SENDFILE;
+ mi.pszService = "SRFile/SendCommand";
hSRFileMenuItem = Menu_AddContactMenuItem(&mi);
+ CreateServiceFunction(mi.pszService, SendFileCommand);
// SRMM toolbar button
BBButton bbd = {};
@@ -220,7 +196,7 @@ INT_PTR FtMgrShowCommand(WPARAM, LPARAM)
INT_PTR openContRecDir(WPARAM hContact, LPARAM)
{
wchar_t szContRecDir[MAX_PATH];
- GetContactReceivedFilesDir(hContact, szContRecDir, _countof(szContRecDir), TRUE);
+ File::GetReceivedFolder(hContact, szContRecDir, _countof(szContRecDir));
ShellExecute(nullptr, L"open", szContRecDir, nullptr, nullptr, SW_SHOW);
return 0;
}
@@ -357,10 +333,6 @@ int LoadSendRecvFileModule(void)
hDlgSucceeded = CreateHookableEvent(ME_FILEDLG_SUCCEEDED);
hDlgCanceled = CreateHookableEvent(ME_FILEDLG_CANCELED);
- CreateServiceFunction(MS_FILE_SENDFILE, SendFileCommand);
- CreateServiceFunction(MS_FILE_SENDSPECIFICFILES, SendSpecificFiles);
- CreateServiceFunction(MS_FILE_SENDSPECIFICFILEST, SendSpecificFilesT);
- CreateServiceFunction(MS_FILE_GETRECEIVEDFILESFOLDER, GetReceivedFilesFolder);
CreateServiceFunction("SRFile/RecvFile", RecvFileCommand);
CreateServiceFunction("SRFile/OpenContRecDir", openContRecDir);
diff --git a/src/mir_app/src/file.h b/src/mir_app/src/file.h
index 62931d81b4..20985753c8 100644
--- a/src/mir_app/src/file.h
+++ b/src/mir_app/src/file.h
@@ -40,12 +40,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#define M_FILEEXISTSDLGREPLY (WM_USER+200)
-struct FileSendData
-{
- MCONTACT hContact;
- const wchar_t **ppFiles;
-};
-
#define BYTESRECVEDHISTORYCOUNT 10 //the number of bytes recved is sampled once a second and the last 10 are used to get the transfer speed
struct FileDlgData : public MZeroedObject
@@ -76,14 +70,10 @@ struct FileDlgData : public MZeroedObject
// file.c
MEVENT Proto_RecvFile(MCONTACT hContact, PROTORECVFILE *pre);
-// filesenddlg.c
-INT_PTR CALLBACK DlgProcSendFile(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam);
-
// filerecv.c
void LaunchRecvDialog(CLISTEVENT *cle);
void RemoveInvalidFilenameChars(wchar_t *tszString);
void RemoveInvalidPathChars(wchar_t *tszString);
-void GetContactReceivedFilesDir(MCONTACT hContact, wchar_t *szDir, int cchDir, BOOL substVars);
void GetContactSentFilesDir(MCONTACT hContact, wchar_t *szDir, int cchDir);
void GetReceivedFilesDir(wchar_t *szDir, int cchDir);
int BrowseForFolder(HWND hwnd, wchar_t *szPath);
diff --git a/src/mir_app/src/fileopts.cpp b/src/mir_app/src/fileopts.cpp
index eaac150a16..3685e9f4b0 100644
--- a/src/mir_app/src/fileopts.cpp
+++ b/src/mir_app/src/fileopts.cpp
@@ -73,7 +73,7 @@ public:
cmbFileExists.SelectData(File::iIfExists);
wchar_t str[MAX_PATH];
- GetContactReceivedFilesDir(NULL, str, _countof(str), FALSE);
+ File::GetReceivedFolder(NULL, str, _countof(str));
SetDlgItemText(m_hwnd, IDC_FILEDIR, str);
return true;
}
diff --git a/src/mir_app/src/filerecvdlg.cpp b/src/mir_app/src/filerecvdlg.cpp
index 58ef04afa6..e02a34f708 100644
--- a/src/mir_app/src/filerecvdlg.cpp
+++ b/src/mir_app/src/filerecvdlg.cpp
@@ -121,7 +121,7 @@ static void patchDir(wchar_t *str, size_t strSize)
mir_wstrcpy(str + len, L"\\");
}
-void GetContactReceivedFilesDir(MCONTACT hContact, wchar_t *szDir, int cchDir, BOOL patchVars)
+MIR_APP_DLL(wchar_t*) File::GetReceivedFolder(MCONTACT hContact, wchar_t *szDir, size_t cchDir, bool patchVars)
{
wchar_t tszTemp[MAX_PATH];
@@ -158,6 +158,7 @@ void GetContactReceivedFilesDir(MCONTACT hContact, wchar_t *szDir, int cchDir, B
patchDir(tszTemp, _countof(tszTemp));
RemoveInvalidPathChars(tszTemp);
mir_wstrncpy(szDir, tszTemp, cchDir);
+ return szDir;
}
void GetReceivedFilesDir(wchar_t *szDir, int cchDir)
@@ -223,7 +224,7 @@ public:
SetDlgItemText(m_hwnd, IDC_FROM, contactName);
wchar_t szPath[450];
- GetContactReceivedFilesDir(dat->hContact, szPath, _countof(szPath), TRUE);
+ File::GetReceivedFolder(dat->hContact, szPath, _countof(szPath), TRUE);
SetDlgItemText(m_hwnd, IDC_FILEDIR, szPath);
SHAutoComplete(GetWindow(GetDlgItem(m_hwnd, IDC_FILEDIR), GW_CHILD), 1);
@@ -280,7 +281,7 @@ public:
wchar_t szRecvDir[MAX_PATH], szDefaultRecvDir[MAX_PATH];
GetDlgItemText(m_hwnd, IDC_FILEDIR, szRecvDir, _countof(szRecvDir));
RemoveInvalidPathChars(szRecvDir);
- GetContactReceivedFilesDir(NULL, szDefaultRecvDir, _countof(szDefaultRecvDir), TRUE);
+ File::GetReceivedFolder(NULL, szDefaultRecvDir, _countof(szDefaultRecvDir), TRUE);
if (wcsnicmp(szRecvDir, szDefaultRecvDir, mir_wstrlen(szDefaultRecvDir))) {
char idstr[32];
ptrW wszValue;
diff --git a/src/mir_app/src/filesenddlg.cpp b/src/mir_app/src/filesenddlg.cpp
index 3f19d4d5f7..b13e07d375 100644
--- a/src/mir_app/src/filesenddlg.cpp
+++ b/src/mir_app/src/filesenddlg.cpp
@@ -27,6 +27,12 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include <sys/stat.h>
#include "file.h"
+struct FileSendData
+{
+ MCONTACT hContact;
+ wchar_t** const ppFiles;
+};
+
static void SetFileListAndSizeControls(HWND hwndDlg, FileDlgData *dat)
{
int fileCount = 0, dirCount = 0, i;
@@ -198,7 +204,7 @@ static LRESULT CALLBACK SendEditSubclassProc(HWND hwnd, UINT msg, WPARAM wParam,
return mir_callNextSubclass(hwnd, SendEditSubclassProc, msg, wParam, lParam);
}
-INT_PTR CALLBACK DlgProcSendFile(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
+static INT_PTR CALLBACK DlgProcSendFile(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
FileDlgData *dat = (FileDlgData *)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
switch (msg) {
@@ -333,3 +339,9 @@ INT_PTR CALLBACK DlgProcSendFile(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM l
}
return FALSE;
}
+
+MIR_APP_DLL(MWindow) File::Send(MCONTACT hContact, wchar_t** const ppFiles)
+{
+ FileSendData fsd = { hContact, ppFiles };
+ return CreateDialogParamW(g_plugin.getInst(), MAKEINTRESOURCE(IDD_FILESEND), NULL, DlgProcSendFile, (LPARAM)&fsd);
+}
diff --git a/src/mir_app/src/mir_app.def b/src/mir_app/src/mir_app.def
index a37fbe8acb..6d7da2e47a 100644
--- a/src/mir_app/src/mir_app.def
+++ b/src/mir_app/src/mir_app.def
@@ -115,6 +115,7 @@ ProtoGetAvatarFileFormat @120
ProtoGetAvatarFormat @121
ProtoGetBufferFormat @122
ProtoHookEvent @123
+GetFileReceivedFolder @124
Proto_IsProtocolLoaded @128
GetPluginLangId @129
Proto_GetAccount @130
@@ -917,3 +918,5 @@ Clist_GroupSaveExpanded @1003 NONAME
?fetch@EventInfo@DB@@QAE_NI_N@Z @1035 NONAME
?unload@EventInfo@DB@@QAEXXZ @1036 NONAME
?isAlertable@EventInfo@DB@@QBE_NXZ @1037 NONAME
+?Send@File@@YGPAUHWND__@@IQAPA_W@Z @1038 NONAME
+?GetReceivedFolder@File@@YGPA_WIPA_WI_N@Z @1039 NONAME
diff --git a/src/mir_app/src/mir_app64.def b/src/mir_app/src/mir_app64.def
index 374e1a3e7c..c6da8544fd 100644
--- a/src/mir_app/src/mir_app64.def
+++ b/src/mir_app/src/mir_app64.def
@@ -115,6 +115,7 @@ ProtoGetAvatarFileFormat @120
ProtoGetAvatarFormat @121
ProtoGetBufferFormat @122
ProtoHookEvent @123
+GetFileReceivedFolder @124
Proto_IsProtocolLoaded @128
GetPluginLangId @129
Proto_GetAccount @130
@@ -917,3 +918,5 @@ Clist_GroupSaveExpanded @1003 NONAME
?fetch@EventInfo@DB@@QEAA_NI_N@Z @1035 NONAME
?unload@EventInfo@DB@@QEAAXXZ @1036 NONAME
?isAlertable@EventInfo@DB@@QEBA_NXZ @1037 NONAME
+?Send@File@@YAPEAUHWND__@@IQEAPEA_W@Z @1038 NONAME
+?GetReceivedFolder@File@@YAPEA_WIPEA_W_K_N@Z @1039 NONAME
diff --git a/src/mir_app/src/srmm_util.cpp b/src/mir_app/src/srmm_util.cpp
index c8e1747e67..978ebd8aa8 100644
--- a/src/mir_app/src/srmm_util.cpp
+++ b/src/mir_app/src/srmm_util.cpp
@@ -165,7 +165,7 @@ static void GenerateLocalName(const DB::EventInfo &dbei, DB::FILE_BLOB &blob, MC
if (dbei.flags & DBEF_SENT) // don't mix sent & received files
GetContactSentFilesDir(hContact, wszReceiveFolder, _countof(wszReceiveFolder));
else
- GetContactReceivedFilesDir(hContact, wszReceiveFolder, _countof(wszReceiveFolder), true);
+ File::GetReceivedFolder(hContact, wszReceiveFolder, _countof(wszReceiveFolder), true);
CreateDirectoryTreeW(wszReceiveFolder);
MFilePath wszFullName(wszReceiveFolder);
diff --git a/src/mir_app/src/utils.cpp b/src/mir_app/src/utils.cpp
index 1c23ded07a..0449381f16 100644
--- a/src/mir_app/src/utils.cpp
+++ b/src/mir_app/src/utils.cpp
@@ -364,7 +364,7 @@ bool ProcessFileDrop(HDROP hDrop, MCONTACT hContact)
AddToFileList(ppFiles, totalCount, szFilename);
}
- CallService(MS_FILE_SENDSPECIFICFILEST, hContact, (LPARAM)ppFiles);
+ File::Send(hContact, ppFiles);
for (int i=0; ppFiles[i]; i++)
mir_free(ppFiles[i]);