From 829c4ca618d393e194f075d641a55c75a58dfa66 Mon Sep 17 00:00:00 2001 From: Kirill Volinsky Date: Thu, 14 Mar 2013 11:40:03 +0000 Subject: files renaming git-svn-id: http://svn.miranda-ng.org/main/trunk@4019 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/WhoUsesMyFiles/src/wumfplug.cpp | 628 ++++++++++++++++++++++++++++++++ 1 file changed, 628 insertions(+) create mode 100644 plugins/WhoUsesMyFiles/src/wumfplug.cpp (limited to 'plugins/WhoUsesMyFiles/src/wumfplug.cpp') diff --git a/plugins/WhoUsesMyFiles/src/wumfplug.cpp b/plugins/WhoUsesMyFiles/src/wumfplug.cpp new file mode 100644 index 0000000000..545909511a --- /dev/null +++ b/plugins/WhoUsesMyFiles/src/wumfplug.cpp @@ -0,0 +1,628 @@ +#include "wumf.h" + +HINSTANCE hInst; +WUMF_OPTIONS WumfOptions = { 0 }; +const char ModuleName[] = "WUMF Plugin"; +HANDLE hMenuItem = 0; +extern HANDLE hLog; +static HWND hDlg; +static HANDLE hWumfBut; +extern PWumf list; +int hLangpack; + +static PLUGININFOEX pluginInfo = { + sizeof(PLUGININFOEX), + "WUMF: Who Use My Files?", + PLUGIN_MAKE_VERSION(0,1,0,1), + "Scans for network users of your shared files and notify you with popups. Uses PopUps Interoperability by Luca Santarelli. PopUps plugin must be activated!", + "Nikolay Redko", + "nike000@users.sf.net", + "© 2003 Nike. Freeware. Please mail me all bugs & your suggestions.", + "http://miranda-ng.org/", + UNICODE_AWARE, + // {80DCA515-973A-4A7E-8B85-5D8EC88FC5A7} + { 0x80dca515, 0x973a, 0x4a7e, { 0x8b, 0x85, 0x5d, 0x8e, 0xc8, 0x8f, 0xc5, 0xa7 } } +}; + +void LoadOptions() +{ + DBVARIANT dbv = { 0 }; + dbv.type = DBVT_ASCIIZ; + ZeroMemory(&WumfOptions, sizeof(WumfOptions)); + if (DBGetContactSetting(NULL, ModuleName, OPT_FILE, &dbv) == 0) + { + strncpy(WumfOptions.LogFile, dbv.pszVal, 255); + } + else + { + WumfOptions.LogFile[0] = '\0'; + }; + WumfOptions.PopupsEnabled = DBGetContactSettingByte(NULL,ModuleName, POPUPS_ENABLED, TRUE); + + WumfOptions.UseDefColor = DBGetContactSettingByte(NULL,ModuleName, COLOR_DEF, TRUE); + WumfOptions.UseWinColor = DBGetContactSettingByte(NULL,ModuleName, COLOR_WIN, FALSE); + WumfOptions.SelectColor = DBGetContactSettingByte(NULL,ModuleName, COLOR_SET, FALSE); + + WumfOptions.ColorText = DBGetContactSettingDword(NULL,ModuleName, COLOR_TEXT, RGB(0,0,0)); + WumfOptions.ColorBack = DBGetContactSettingDword(NULL,ModuleName, COLOR_BACK, RGB(255,255,255)); + + WumfOptions.DelayDef = DBGetContactSettingByte(NULL,ModuleName, DELAY_DEF, TRUE); + WumfOptions.DelayInf = DBGetContactSettingByte(NULL,ModuleName, DELAY_INF, FALSE); + WumfOptions.DelaySet = DBGetContactSettingByte(NULL,ModuleName, DELAY_SET, FALSE); + WumfOptions.DelaySec = DBGetContactSettingByte(NULL,ModuleName, DELAY_SEC, 0); + if(!ServiceExists(MS_POPUP_ADDPOPUPEX)) + { + WumfOptions.DelayDef = TRUE; + WumfOptions.DelaySet = FALSE; + WumfOptions.DelayInf = FALSE; + } + WumfOptions.LogToFile = DBGetContactSettingByte(NULL,ModuleName, LOG_INTO_FILE, FALSE); + WumfOptions.LogFolders = DBGetContactSettingByte(NULL,ModuleName, LOG_FOLDER, TRUE); + WumfOptions.AlertFolders = DBGetContactSettingByte(NULL,ModuleName, ALERT_FOLDER, TRUE); + WumfOptions.LogUNC = DBGetContactSettingByte(NULL,ModuleName, LOG_UNC, FALSE); + WumfOptions.AlertUNC = DBGetContactSettingByte(NULL,ModuleName, ALERT_UNC, FALSE); + WumfOptions.LogComp = DBGetContactSettingByte(NULL,ModuleName, LOG_COMP, FALSE); + WumfOptions.AlertComp = DBGetContactSettingByte(NULL,ModuleName, ALERT_COMP, FALSE); + return; +} + + +void ExecuteMenu(HWND hWnd) +{ + HMENU hMenu; + POINT point; + + hMenu=CreatePopupMenu(); + if(!hMenu) + { + MessageBox(NULL, "Error crerating menu", "WUMF",MB_OK); + return; + }; + AppendMenu(hMenu,MF_STRING,IDM_ABOUT, "About\0"); + AppendMenu(hMenu,MF_SEPARATOR,0,NULL);//------------------ + AppendMenu(hMenu,MF_STRING,IDM_SHOW, "Show connections\0"); + AppendMenu(hMenu,MF_SEPARATOR,0,NULL);//------------------ + AppendMenu(hMenu,MF_STRING,IDM_EXIT, "Dismiss popup\0"); + + GetCursorPos (&point); + SetForegroundWindow (hWnd); + + TrackPopupMenu (hMenu, TPM_LEFTBUTTON | TPM_RIGHTBUTTON | TPM_RIGHTALIGN | TPM_TOPALIGN, + point.x, point.y, 0, hWnd, NULL); + + PostMessage (hWnd, WM_USER, 0, 0); + DestroyMenu(hMenu); +} + +static int CALLBACK PopupDlgProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) +{ +// PWumf w = NULL; + switch(message) { + case WM_COMMAND: + switch (LOWORD(wParam)) + { + case IDM_ABOUT: + break; + case IDM_EXIT: + PUDeletePopUp(hWnd); + break; + case IDM_SHOW: + CallService(MS_WUMF_CONNECTIONSSHOW, (WPARAM)0, (LPARAM)0); + return TRUE; + } + switch (HIWORD(wParam)) + { + case STN_CLICKED: + PUDeletePopUp(hWnd); + return TRUE; + } + break; + case WM_CONTEXTMENU: +// ExecuteMenu(hWnd); + CallService(MS_WUMF_CONNECTIONSSHOW, (WPARAM)0, (LPARAM)0); + break; + case UM_FREEPLUGINDATA: { +/* w = (PWumf)CallService(MS_POPUP_GETPLUGINDATA, (WPARAM)hWnd,(LPARAM)w); + if(w) free(w);*/ + return TRUE; //TRUE or FALSE is the same, it gets ignored. + } + default: + break; + } + return DefWindowProc(hWnd, message, wParam, lParam); +}; + +void ShowWumfPopUp(PWumf w) +{ + char text[512], title[512]; + + if(!WumfOptions.AlertFolders && (w->dwAttr & FILE_ATTRIBUTE_DIRECTORY)) return; + mir_snprintf(title, sizeof(title)/sizeof(title[0]), "%s (%s)", w->szComp, w->szUser); + mir_snprintf(text, sizeof(text)/sizeof(text[0]), "%s (%s)", w->szPath, w->szPerm); + ShowThePopUp(w, title, text); +} +void ShowThePopUp(PWumf w, LPSTR title, LPSTR text) +{ + POPUPDATAEX ppd = { 0 }; + COLORREF colorBack; + COLORREF colorText; + + colorBack = GetSysColor(COLOR_BTNFACE); + colorText = RGB(0,0,0); + + ppd.lchContact = NULL; + ppd.lchIcon = LoadIcon(hInst,MAKEINTRESOURCE(IDI_DRIVE)); + ppd.iSeconds = -1; + + if(WumfOptions.DelayInf) + { + ppd.iSeconds = -1; + } + else if(WumfOptions.DelayDef) + { + ppd.iSeconds = 0; + } + else if(WumfOptions.DelaySet) + { + ppd.iSeconds = WumfOptions.DelaySec; + } + + lstrcpyn(ppd.lpzContactName, title, 128); + lstrcpyn(ppd.lpzText, text, 128); + if(WumfOptions.UseWinColor) + { + ppd.colorBack = GetSysColor(COLOR_WINDOW); + ppd.colorText = GetSysColor(COLOR_WINDOWTEXT); + } + else if(WumfOptions.UseDefColor) + { + ppd.colorBack = 0L; + ppd.colorText = 0L; + } + else if(WumfOptions.SelectColor) + { + ppd.colorBack = WumfOptions.ColorBack; + ppd.colorText = WumfOptions.ColorText; + } + + ppd.PluginWindowProc = (WNDPROC)PopupDlgProc; + ppd.PluginData = w; + if(CALLSERVICE_NOTFOUND == CallService(MS_POPUP_ADDPOPUPEX, (WPARAM)&ppd, 0)) + CallService(MS_POPUP_ADDPOPUP, (WPARAM)&ppd, 0); +} + +void ShowThePreview() +{ + if(!ServiceExists(MS_POPUP_ADDPOPUP)) + { + MessageBox(NULL,"PopUp plugin not found!", "WUMF plugin", MB_OK|MB_ICONSTOP); + return; + }; + if(WumfOptions.AlertFolders) + { + ShowThePopUp(NULL, "Guest", "C:\\My Share"); + Sleep(300); + ShowThePopUp(NULL, "Guest", "C:\\My Share\\Photos"); + Sleep(300); + } + ShowThePopUp(NULL, "Guest", "C:\\Share\\My Photos\\photo.jpg"); + Sleep(300); + if(WumfOptions.AlertFolders) + { + ShowThePopUp(NULL, "User", "C:\\My Share"); + Sleep(300); + ShowThePopUp(NULL, "User", "C:\\My Share\\Movies"); + Sleep(300); + } + ShowThePopUp(NULL, "User", "C:\\My Share\\Movies\\The Two Towers.avi"); + Sleep(300); + if(WumfOptions.AlertFolders) + { + ShowThePopUp(NULL, "Administrator", "C:\\Distributives"); + Sleep(300); + ShowThePopUp(NULL, "Administrator", "C:\\Distributives\\Win2k"); + Sleep(300); + } + ShowThePopUp(NULL, "Administrator", "C:\\Distributives\\Win2k\\setup.exe"); +}; + + + +BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved) +{ + hInst=hinstDLL; + return TRUE; +} + +DWORD WINAPI ThreadProc(LPVOID lpParameter) +{ + MSG msg; //Message pump. + if(hDlg) + { + ShowWindow(hDlg, SW_SHOWNORMAL); + SetForegroundWindow(hDlg); + return (int)(1); + } + hDlg = CreateDialog(hInst, MAKEINTRESOURCE(IDD_CONNLIST), NULL, (DLGPROC)ConnDlgProc); + SendMessage(hDlg, WM_SETICON, ICON_SMALL, (LPARAM)LoadIcon(hInst,MAKEINTRESOURCE(IDI_DRIVE))); + ShowWindow(hDlg, SW_SHOW); + while(GetMessage(&msg, NULL, 0, 0) == TRUE) + { + TranslateMessage(&msg); + DispatchMessage(&msg); + } + hDlg = NULL; + ExitThread(0); + + return (int)(1); +} + + +static INT_PTR WumfShowConnections(WPARAM wParam,LPARAM lParam) +{ + DWORD threadID = 0; + CloseHandle(CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadProc, (LPVOID)NULL,0,&threadID)); + Sleep(100); + CallService(MS_TTB_SETBUTTONSTATE, (WPARAM)hWumfBut, TTBST_RELEASED); + return 0; +} + +static INT_PTR WumfMenuCommand(WPARAM wParam,LPARAM lParam) +{ + BOOL MajorTo0121 = FALSE; + int iResult = 0; + + CLISTMENUITEM mi = { sizeof(mi) }; + if (WumfOptions.PopupsEnabled == TRUE) { + WumfOptions.PopupsEnabled = FALSE; + mi.pszName = LPGEN("Enable WUMF popups"); + mi.hIcon = LoadIcon(hInst,MAKEINTRESOURCE(IDI_NOPOPUP)); + } + else { + WumfOptions.PopupsEnabled = TRUE; + mi.pszName = LPGEN("Disable WUMF popups"); + mi.hIcon = LoadIcon(hInst,MAKEINTRESOURCE(IDI_POPUP)); + } + DBWriteContactSettingByte(NULL, ModuleName, POPUPS_ENABLED, (BYTE)WumfOptions.PopupsEnabled); + mi.flags = CMIM_NAME | CMIM_ICON; + iResult = CallService(MS_CLIST_MODIFYMENUITEM,(WPARAM)hMenuItem,(LPARAM)&mi); + return iResult; +} + +__declspec(dllexport) PLUGININFOEX* MirandaPluginInfoEx(DWORD mirandaVersion) +{ + return &pluginInfo; +} + +void DisableDelayOptions(HWND hwndDlg) +{ + CheckDlgButton(hwndDlg, IDC_DELAY_INF,BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_DELAY_SET,BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_DELAY_DEF,BST_CHECKED); + EnableWindow(GetDlgItem(hwndDlg, IDC_DELAY_INF), FALSE); + EnableWindow(GetDlgItem(hwndDlg, IDC_DELAY_SET), FALSE); + EnableWindow(GetDlgItem(hwndDlg, IDC_DELAY_DEF), FALSE); + EnableWindow(GetDlgItem(hwndDlg, IDC_DELAY_SEC), FALSE); + EnableWindow(GetDlgItem(hwndDlg, IDC_TX_DELAY_SEC), FALSE); + EnableWindow(GetDlgItem(hwndDlg, IDC_DELAY_NOTE), TRUE); +} +void ChooseFile(HWND hDlg) +{ + OPENFILENAME ofn; // common dialog box structure + char szFile[260]; // buffer for filename + HANDLE hf; // file handle + // Initialize OPENFILENAME + ZeroMemory(&ofn, sizeof(OPENFILENAME)); + ofn.lStructSize = sizeof(OPENFILENAME); + ofn.hwndOwner =hDlg; + szFile[0]=0; + ofn.lpstrFile = szFile; + ofn.nMaxFile = 260; + ofn.lpstrFilter = "All files (*.*)\0*.*\0Text files (*.txt)\0*.txt\0Log files (*.log)\0*.log\0\0"; + ofn.nFilterIndex = 2; + ofn.lpstrFileTitle = NULL; + ofn.nMaxFileTitle = 0; + ofn.lpstrInitialDir = NULL; + ofn.Flags = OFN_CREATEPROMPT; + // Display the Open dialog box. + if (GetSaveFileName(&ofn)==TRUE) + { + hf = CreateFile(ofn.lpstrFile, + GENERIC_WRITE, + 0, + (LPSECURITY_ATTRIBUTES) NULL, + OPEN_ALWAYS, + FILE_ATTRIBUTE_NORMAL, + (HANDLE) NULL); + if(hf!=INVALID_HANDLE_VALUE) + { + SetDlgItemText(hDlg,IDC_FILE,ofn.lpstrFile); + lstrcpyn(WumfOptions.LogFile, ofn.lpstrFile, 255); + CloseHandle(hf); + } + } + else if(CommDlgExtendedError()!=0L) + { + char str[256]; + wsprintf(str,"Common Dialog Error 0x%lx",CommDlgExtendedError()); + MessageBox(hDlg,str,"Wumf plugin",MB_OK|MB_ICONSTOP); + }; + +}; + +INT_PTR CALLBACK OptionsDlgProc(HWND hwndDlg,UINT msg,WPARAM wparam,LPARAM lparam) +{ + WORD wControlId = LOWORD(wparam); + WORD wNotifyCode = HIWORD(wparam); + int seconds; + + switch(msg) + { + case WM_INITDIALOG: + TranslateDialogDefault(hwndDlg); + CheckDlgButton(hwndDlg, IDC_COLOR_WIN, WumfOptions.UseWinColor?BST_CHECKED:BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_COLOR_DEF, WumfOptions.UseDefColor?BST_CHECKED:BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_COLOR_SET, WumfOptions.SelectColor?BST_CHECKED:BST_UNCHECKED); + EnableWindow(GetDlgItem(hwndDlg, IDC_COLOR_BACK), WumfOptions.SelectColor); + EnableWindow(GetDlgItem(hwndDlg, IDC_COLOR_TEXT), WumfOptions.SelectColor); + if(WumfOptions.SelectColor) + { + SendDlgItemMessage(hwndDlg,IDC_COLOR_BACK,CPM_SETCOLOUR,0,WumfOptions.ColorBack); + SendDlgItemMessage(hwndDlg,IDC_COLOR_TEXT,CPM_SETCOLOUR,0,WumfOptions.ColorText); + } + if(!ServiceExists(MS_POPUP_ADDPOPUPEX)) + { + DisableDelayOptions(hwndDlg); + break; + } + CheckDlgButton(hwndDlg, IDC_DELAY_INF, WumfOptions.DelayInf?BST_CHECKED:BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_DELAY_DEF, WumfOptions.DelayDef?BST_CHECKED:BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_DELAY_SET, WumfOptions.DelaySet?BST_CHECKED:BST_UNCHECKED); + EnableWindow(GetDlgItem(hwndDlg, IDC_DELAY_SEC), WumfOptions.DelaySet); + SetDlgItemInt(hwndDlg, IDC_DELAY_SEC, WumfOptions.DelaySec, FALSE); + //Logging & alerts + CheckDlgButton(hwndDlg, IDC_LOG_FOLDER, WumfOptions.LogFolders?BST_CHECKED:BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_ALERT_FOLDER, WumfOptions.AlertFolders?BST_CHECKED:BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_LOG_UNC, WumfOptions.LogUNC?BST_CHECKED:BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_ALERT_UNC, WumfOptions.AlertUNC?BST_CHECKED:BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_LOG_COMP, WumfOptions.LogComp?BST_CHECKED:BST_UNCHECKED); + + if(WumfOptions.LogToFile) + { + CheckDlgButton(hwndDlg,IDC_LOG_INTO_FILE,BST_CHECKED); + EnableWindow(GetDlgItem(hwndDlg, IDC_FILE), TRUE); + EnableWindow(GetDlgItem(hwndDlg, IDC_SEL_FILE), TRUE); + SetDlgItemText(hwndDlg,IDC_FILE,WumfOptions.LogFile); + } + else + { + CheckDlgButton(hwndDlg,IDC_LOG_INTO_FILE,BST_UNCHECKED); + EnableWindow(GetDlgItem(hwndDlg, IDC_FILE), FALSE); + EnableWindow(GetDlgItem(hwndDlg, IDC_SEL_FILE), FALSE); + SetDlgItemText(hwndDlg,IDC_FILE,""); + }; + + break; + case WM_COMMAND: + switch(wNotifyCode) + { + case BN_CLICKED : + switch(wControlId) + { + case IDC_DELAY_SET: + case IDC_DELAY_DEF: + case IDC_DELAY_INF: + WumfOptions.DelaySet = (IsDlgButtonChecked(hwndDlg, IDC_DELAY_SET) == BST_CHECKED); + WumfOptions.DelayDef = (IsDlgButtonChecked(hwndDlg, IDC_DELAY_DEF) == BST_CHECKED); + WumfOptions.DelayInf = (IsDlgButtonChecked(hwndDlg, IDC_DELAY_INF) == BST_CHECKED); + EnableWindow(GetDlgItem(hwndDlg, IDC_DELAY_SEC), WumfOptions.DelaySet); + SetDlgItemInt(hwndDlg, IDC_DELAY_SEC, WumfOptions.DelaySec, TRUE); + SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_COLOR_SET: + case IDC_COLOR_DEF: + case IDC_COLOR_WIN: + WumfOptions.SelectColor = (IsDlgButtonChecked(hwndDlg, IDC_COLOR_SET) == BST_CHECKED); + WumfOptions.UseDefColor = (IsDlgButtonChecked(hwndDlg, IDC_COLOR_DEF) == BST_CHECKED); + WumfOptions.UseWinColor = (IsDlgButtonChecked(hwndDlg, IDC_COLOR_WIN) == BST_CHECKED); + EnableWindow(GetDlgItem(hwndDlg, IDC_COLOR_BACK),WumfOptions.SelectColor); + EnableWindow(GetDlgItem(hwndDlg, IDC_COLOR_TEXT), WumfOptions.SelectColor); + SendDlgItemMessage(hwndDlg,IDC_COLOR_BACK,CPM_SETCOLOUR,0,WumfOptions.ColorBack); + SendDlgItemMessage(hwndDlg,IDC_COLOR_TEXT,CPM_SETCOLOUR,0,WumfOptions.ColorText); + SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + /* not implemented */ + case IDC_LOG_COMP: + case IDC_ALERT_COMP: + case IDC_LOG_UNC: + case IDC_ALERT_UNC: + MessageBox(NULL, "Not implemented yet...", "WUMF", MB_OK|MB_ICONINFORMATION); + break; + /* end */ + case IDC_LOG_INTO_FILE: + WumfOptions.LogToFile = (IsDlgButtonChecked(hwndDlg, IDC_LOG_INTO_FILE) == BST_CHECKED); + EnableWindow(GetDlgItem(hwndDlg, IDC_FILE), WumfOptions.LogToFile); + EnableWindow(GetDlgItem(hwndDlg, IDC_SEL_FILE), WumfOptions.LogToFile); + SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_SEL_FILE: + ChooseFile(hwndDlg); + SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_LOG_FOLDER: + WumfOptions.LogFolders = (IsDlgButtonChecked(hwndDlg, IDC_LOG_FOLDER) == BST_CHECKED); + SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_ALERT_FOLDER: + WumfOptions.AlertFolders = (IsDlgButtonChecked(hwndDlg, IDC_ALERT_FOLDER) == BST_CHECKED); + break; +/* case IDC_LOG_COMP: + WumfOptions.LogComp = (IsDlgButtonChecked(hwndDlg, IDC_LOG_COMP) == BST_CHECKED); + break; + case IDC_ALERT_COMP: + WumfOptions.AlertComp = (IsDlgButtonChecked(hwndDlg, IDC_ALERT_COMP) == BST_CHECKED); + break; + case IDC_LOG_UNC: + WumfOptions.LogUNC = (IsDlgButtonChecked(hwndDlg, IDC_LOG_UNC) == BST_CHECKED); + break; + case IDC_ALERT_UNC: + WumfOptions.AlertUNC = (IsDlgButtonChecked(hwndDlg, IDC_ALERT_UNC) == BST_CHECKED); + break; +*/ case IDC_PREVIEW: + ShowThePreview(); + break; + case IDC_CONN: + CallService(MS_WUMF_CONNECTIONSSHOW, (WPARAM)0, (LPARAM)0); + break; + } + break; + case CPN_COLOURCHANGED: + WumfOptions.ColorText = SendDlgItemMessage(hwndDlg,IDC_COLOR_TEXT,CPM_GETCOLOUR,0,0); + WumfOptions.ColorBack = SendDlgItemMessage(hwndDlg,IDC_COLOR_BACK,CPM_GETCOLOUR,0,0); + SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case EN_CHANGE: + switch(wControlId) + { + case IDC_DELAY_SEC: + seconds = GetDlgItemInt(hwndDlg, IDC_DELAY_SEC, NULL, FALSE); + if (seconds > LIFETIME_MAX) + WumfOptions.DelaySec = LIFETIME_MAX; + else if (seconds < LIFETIME_MIN) + WumfOptions.DelaySec = LIFETIME_MIN; + else if (seconds <= LIFETIME_MAX || seconds >= LIFETIME_MIN) + WumfOptions.DelaySec = seconds; + SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + case IDC_FILE: + GetDlgItemText(hwndDlg,IDC_FILE,WumfOptions.LogFile, sizeof(WumfOptions.LogFile)); + SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + break; + } + break; + case EN_KILLFOCUS: + switch(wControlId) + { + case IDC_DELAY_SEC: + SetDlgItemInt(hwndDlg, IDC_DELAY_SEC, WumfOptions.DelaySec, FALSE); + break; + }; + break; + } + break; + case WM_NOTIFY: + switch(((LPNMHDR)lparam)->idFrom) { + case 0: + switch (((LPNMHDR)lparam)->code) { + case PSN_RESET: + LoadOptions(); + return TRUE; + case PSN_APPLY: + DBWriteContactSettingByte(NULL,ModuleName, COLOR_DEF, (BYTE)WumfOptions.UseDefColor); + DBWriteContactSettingByte(NULL,ModuleName, COLOR_WIN, (BYTE)WumfOptions.UseWinColor); + DBWriteContactSettingByte(NULL,ModuleName, COLOR_SET, (BYTE)WumfOptions.SelectColor ); + DBWriteContactSettingDword(NULL,ModuleName, COLOR_TEXT, (DWORD)WumfOptions.ColorText); + DBWriteContactSettingDword(NULL,ModuleName, COLOR_BACK, (DWORD)WumfOptions.ColorBack); + DBWriteContactSettingByte(NULL,ModuleName, DELAY_DEF, (BYTE)WumfOptions.DelayDef); + DBWriteContactSettingByte(NULL,ModuleName, DELAY_INF, (BYTE)WumfOptions.DelayInf); + DBWriteContactSettingByte(NULL,ModuleName, DELAY_SET, (BYTE)WumfOptions.DelaySet); + DBWriteContactSettingByte(NULL,ModuleName, DELAY_SEC, (BYTE)WumfOptions.DelaySec); + DBWriteContactSettingByte(NULL,ModuleName, LOG_INTO_FILE, (BYTE)WumfOptions.LogToFile); + DBWriteContactSettingByte(NULL,ModuleName, LOG_FOLDER, (BYTE)WumfOptions.LogFolders); + DBWriteContactSettingByte(NULL,ModuleName, ALERT_FOLDER, (BYTE)WumfOptions.AlertFolders); + DBWriteContactSettingByte(NULL,ModuleName, LOG_UNC, (BYTE)WumfOptions.LogUNC); + DBWriteContactSettingByte(NULL,ModuleName, ALERT_UNC, (BYTE)WumfOptions.AlertUNC); + DBWriteContactSettingByte(NULL,ModuleName, LOG_COMP, (BYTE)WumfOptions.LogComp); + DBWriteContactSettingByte(NULL,ModuleName, ALERT_COMP, (BYTE)WumfOptions.AlertComp); + GetDlgItemText(hwndDlg,IDC_FILE,WumfOptions.LogFile, 255); + DBWriteContactSettingString(NULL,ModuleName, OPT_FILE, WumfOptions.LogFile); + break; + } + break; + } + break; + } + return 0; +} + +int InitTopToolbar(WPARAM wparam,LPARAM lparam) +{ + TTBButton ttb = { 0 }; + ttb.cbSize = sizeof(ttb); + ttb.hIconUp = LoadIcon(hInst, MAKEINTRESOURCE(IDI_DRIVE)); + ttb.pszService = MS_WUMF_CONNECTIONSSHOW; + ttb.dwFlags = TTBBF_VISIBLE|TTBBF_SHOWTOOLTIP; + ttb.name = ttb.pszTooltipUp = LPGEN("Show connections list"); + hWumfBut = TopToolbar_AddButton(&ttb); + return 0; +} + +int OptionsInit(WPARAM wparam,LPARAM lparam) +{ + OPTIONSDIALOGPAGE odp = { 0 }; + + + odp.cbSize=sizeof(odp); + odp.position=945000000; + odp.hInstance=hInst; + odp.pszTemplate=MAKEINTRESOURCE(IDD_OPTIONS); + odp.pszTitle=LPGEN("Wumf"); + odp.pfnDlgProc=OptionsDlgProc; + odp.pszGroup=LPGEN("Services"); + odp.flags=ODPF_BOLDGROUPS; + Options_AddPage(wparam, &odp); + return 0; +} + +__declspec(dllexport) int Load(void) +{ + mir_getLP(&pluginInfo); + + LoadOptions(); + + CreateServiceFunction(MS_WUMF_SWITCHPOPUP, WumfMenuCommand); + CreateServiceFunction(MS_WUMF_CONNECTIONSSHOW, WumfShowConnections); + { + CLISTMENUITEM mi = { sizeof(mi) }; + if (WumfOptions.PopupsEnabled == FALSE) { + mi.pszName = LPGEN("Enable WUMF popups"); + mi.hIcon = LoadIcon(hInst,MAKEINTRESOURCE(IDI_NOPOPUP)); + } + else { + mi.pszName = LPGEN("Disable WUMF popups"); + mi.hIcon = LoadIcon(hInst,MAKEINTRESOURCE(IDI_POPUP)); + } + mi.pszService = MS_WUMF_SWITCHPOPUP; + mi.popupPosition = 1999990000; + mi.pszPopupName = LPGEN("PopUps"); + hMenuItem = Menu_AddMainMenuItem(&mi); + + mi.pszName = LPGEN("WUMF: Show connections"); + mi.hIcon = LoadIcon(hInst,MAKEINTRESOURCE(IDI_DRIVE)); + mi.pszService = MS_WUMF_CONNECTIONSSHOW; + mi.popupPosition = 1999990000; + mi.pszPopupName = NULL; + Menu_AddMainMenuItem(&mi); + } + + HookEvent(ME_OPT_INITIALISE,OptionsInit); + HookEvent(ME_TTB_MODULELOADED, InitTopToolbar); + setlocale( LC_ALL, ".ACP"); +// _setmbcp(_MB_CP_ANSI); + + if (IsUserAnAdmin()) { + SetTimer(NULL, 777, TIME,(TIMERPROC) TimerProc); + } else { + MessageBox(NULL, "Plugin WhoUsesMyFiles requires admin privileges in order to work.", "Miranda NG", MB_OK); + } + + return 0; +} + +__declspec(dllexport) int Unload(void) +{ + KillTimer(NULL, 777); + CloseHandle(hLog); + FreeAll(); + return 0; +} \ No newline at end of file -- cgit v1.2.3