diff options
author | George Hazan <george.hazan@gmail.com> | 2023-12-13 20:19:46 +0300 |
---|---|---|
committer | George Hazan <george.hazan@gmail.com> | 2023-12-13 20:19:46 +0300 |
commit | 054bb1949247445a29a68812579800904edf6a02 (patch) | |
tree | 6aecd3e738de818d45e703325b17f571baf02ee0 /src/mir_app | |
parent | 7657cf3cd9f3ae33e29091a947d76234997ebfd9 (diff) |
MS_FILE_* services became useless since StdFile died
Diffstat (limited to 'src/mir_app')
-rw-r--r-- | src/mir_app/src/file.cpp | 58 | ||||
-rw-r--r-- | src/mir_app/src/file.h | 10 | ||||
-rw-r--r-- | src/mir_app/src/fileopts.cpp | 2 | ||||
-rw-r--r-- | src/mir_app/src/filerecvdlg.cpp | 7 | ||||
-rw-r--r-- | src/mir_app/src/filesenddlg.cpp | 14 | ||||
-rw-r--r-- | src/mir_app/src/mir_app.def | 3 | ||||
-rw-r--r-- | src/mir_app/src/mir_app64.def | 3 | ||||
-rw-r--r-- | src/mir_app/src/srmm_util.cpp | 2 | ||||
-rw-r--r-- | src/mir_app/src/utils.cpp | 2 |
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]);
|