static int TSAPI LoadFromIconLib() { for (int n = 0; n < SIZEOF(ICONBLOCKS); n++) for (int i=0; i < ICONBLOCKS[n].nItems; i++) *(ICONBLOCKS[n].idesc[i].phIcon) = Skin_GetIcon(ICONBLOCKS[n].idesc[i].szName); PluginConfig.g_buttonBarIcons[0] = LoadSkinnedIcon(SKINICON_OTHER_ADDCONTACT); PluginConfig.g_buttonBarIcons[1] = LoadSkinnedIcon(SKINICON_OTHER_HISTORY); PluginConfig.g_buttonBarIconHandles[0] = LoadSkinnedIconHandle(SKINICON_OTHER_HISTORY); PluginConfig.g_buttonBarIconHandles[1] = LoadSkinnedIconHandle(SKINICON_OTHER_ADDCONTACT); PluginConfig.g_buttonBarIconHandles[20] = LoadSkinnedIconHandle(SKINICON_OTHER_USERDETAILS); PluginConfig.g_buttonBarIcons[ICON_DEFAULT_TYPING] = PluginConfig.g_buttonBarIcons[12] = LoadSkinnedIcon(SKINICON_OTHER_TYPING); PluginConfig.g_IconChecked = LoadSkinnedIcon(SKINICON_OTHER_TICK); PluginConfig.g_IconUnchecked = LoadSkinnedIcon(SKINICON_OTHER_NOTICK); PluginConfig.g_IconFolder = LoadSkinnedIcon(SKINICON_OTHER_GROUPOPEN); PluginConfig.g_iconOverlayEnabled = Skin_GetIcon("tabSRMM_overlay_enabled"); PluginConfig.g_iconOverlayDisabled = Skin_GetIcon("tabSRMM_overlay_disabled"); PluginConfig.g_iconClock = Skin_GetIcon("tabSRMM_clock_symbol"); CacheMsgLogIcons(); M.BroadcastMessage(DM_LOADBUTTONBARICONS, 0, 0); return 0; }
int IconsChanged(WPARAM wParam, LPARAM lParam) { CreateImageList(FALSE); CacheMsgLogIcons(); M.BroadcastMessage(DM_OPTIONSAPPLIED, 0, 0); M.BroadcastMessage(DM_UPDATEWINICON, 0, 0); return 0; }
int FontServiceFontsChanged(WPARAM, LPARAM) { PluginConfig.reloadSettings(); CSkin::initAeroEffect(); CacheMsgLogIcons(); CacheLogFonts(); FreeTabConfig(); ReloadTabConfig(); Skin->setupAeroSkins(); M.BroadcastMessage(DM_OPTIONSAPPLIED, 1, 0); return 0; }
int IcoLibIconsChanged(WPARAM wParam, LPARAM lParam) { LoadFromIconLib(); CacheMsgLogIcons(); return 0; }
int IcoLibIconsChanged(WPARAM, LPARAM) { LoadFromIconLib(); CacheMsgLogIcons(); return 0; }
INT_PTR CALLBACK DlgProcOptions2(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_INITDIALOG: TranslateDialogDefault(hwndDlg); { SendDlgItemMessage(hwndDlg, IDC_CHAT_SPIN2, UDM_SETRANGE, 0, MAKELONG(5000, 0)); SendDlgItemMessage(hwndDlg, IDC_CHAT_SPIN2, UDM_SETPOS, 0, MAKELONG(db_get_w(NULL, CHAT_MODULE, "LogLimit", 100), 0)); SendDlgItemMessage(hwndDlg, IDC_CHAT_SPIN3, UDM_SETRANGE, 0, MAKELONG(255, 10)); SendDlgItemMessage(hwndDlg, IDC_CHAT_SPIN3, UDM_SETPOS, 0, MAKELONG(M.GetByte(CHAT_MODULE, "NicklistRowDist", 12), 0)); SetDlgItemText(hwndDlg, IDC_LOGTIMESTAMP, g_Settings.pszTimeStampLog); SetDlgItemText(hwndDlg, IDC_TIMESTAMP, g_Settings.pszTimeStamp); SetDlgItemText(hwndDlg, IDC_OUTSTAMP, g_Settings.pszOutgoingNick); SetDlgItemText(hwndDlg, IDC_INSTAMP, g_Settings.pszIncomingNick); CheckDlgButton(hwndDlg, IDC_LOGGING, g_Settings.bLoggingEnabled ? BST_CHECKED : BST_UNCHECKED); SetDlgItemText(hwndDlg, IDC_LOGDIRECTORY, g_Settings.pszLogDir); Utils::enableDlgControl(hwndDlg, IDC_LOGDIRECTORY, g_Settings.bLoggingEnabled); Utils::enableDlgControl(hwndDlg, IDC_FONTCHOOSE, g_Settings.bLoggingEnabled); SendDlgItemMessage(hwndDlg, IDC_CHAT_SPIN4, UDM_SETRANGE, 0, MAKELONG(10000, 0)); SendDlgItemMessage(hwndDlg, IDC_CHAT_SPIN4, UDM_SETPOS, 0, MAKELONG(db_get_w(NULL, CHAT_MODULE, "LoggingLimit", 100), 0)); Utils::enableDlgControl(hwndDlg, IDC_LIMIT, g_Settings.bLoggingEnabled); TCHAR tszTooltipText[2048]; mir_sntprintf(tszTooltipText, _T("%s - %s\n%s - %s\n%s - %s\n%s - %s\n\n") _T("%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n\n") _T("%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s\n%s - %s"), // contact vars _T("%nick%"), TranslateT("nick of current contact (if defined)"), _T("%proto%"), TranslateT("protocol name of current contact (if defined). Account name is used when protocol supports multiple accounts"), _T("%accountname%"), TranslateT("user-defined account name of current contact (if defined)."), _T("%userid%"), TranslateT("user ID of current contact (if defined). It is like UIN for ICQ, JID for Jabber, etc."), // global vars _T("%miranda_path%"), TranslateT("path to Miranda root folder"), _T("%miranda_profilesdir%"), TranslateT("path to folder containing Miranda profiles"), _T("%miranda_profilename%"), TranslateT("name of current Miranda profile (filename, without extension)"), _T("%miranda_userdata%"), TranslateT("will return parsed string %miranda_profilesdir%\\%miranda_profilename%"), _T("%miranda_logpath%"), TranslateT("will return parsed string %miranda_userdata%\\Logs"), _T("%appdata%"), TranslateT("same as environment variable %APPDATA% for currently logged-on Windows user"), _T("%username%"), TranslateT("username for currently logged-on Windows user"), _T("%mydocuments%"), TranslateT("\"My Documents\" folder for currently logged-on Windows user"), _T("%desktop%"), TranslateT("\"Desktop\" folder for currently logged-on Windows user"), _T("%xxxxxxx%"), TranslateT("any environment variable defined in current Windows session (like %systemroot%, %allusersprofile%, etc.)"), // date/time vars _T("%d%"), TranslateT("day of month, 1-31"), _T("%dd%"), TranslateT("day of month, 01-31"), _T("%m%"), TranslateT("month number, 1-12"), _T("%mm%"), TranslateT("month number, 01-12"), _T("%mon%"), TranslateT("abbreviated month name"), _T("%month%"), TranslateT("full month name"), _T("%yy%"), TranslateT("year without century, 01-99"), _T("%yyyy%"), TranslateT("year with century, 1901-9999"), _T("%wday%"), TranslateT("abbreviated weekday name"), _T("%weekday%"), TranslateT("full weekday name")); hPathTip = CreateToolTip(GetDlgItem(hwndDlg, IDC_LOGDIRECTORY), tszTooltipText, TranslateT("Variables")); } if (hPathTip) SetTimer(hwndDlg, 0, 3000, NULL); break; case WM_COMMAND: if ((LOWORD(wParam) == IDC_INSTAMP || LOWORD(wParam) == IDC_OUTSTAMP || LOWORD(wParam) == IDC_TIMESTAMP || LOWORD(wParam) == IDC_LOGLIMIT || LOWORD(wParam) == IDC_NICKROW2 || LOWORD(wParam) == IDC_LOGDIRECTORY || LOWORD(wParam) == IDC_LIMIT || LOWORD(wParam) == IDC_LOGTIMESTAMP) && (HIWORD(wParam) != EN_CHANGE || (HWND)lParam != GetFocus())) return 0; // open the base directory for MUC logs, using a standard file selector // dialog. Simply allows the user to view what log files are there // and possibly delete archived logs. switch (LOWORD(wParam)) { case IDC_MUC_OPENLOGBASEDIR: { TCHAR tszTemp[MAX_PATH + 20]; _tcsncpy_s(tszTemp, g_Settings.pszLogDir, _TRUNCATE); TCHAR *p = tszTemp; while (*p && (*p == '\\' || *p == '.')) p++; if (*p) if (TCHAR *p1 = _tcschr(p, '\\')) *p1 = 0; TCHAR tszInitialDir[_MAX_DRIVE + _MAX_PATH + 10]; mir_sntprintf(tszInitialDir, _T("%s%s"), M.getChatLogPath(), p); if (!PathFileExists(tszInitialDir)) _tcsncpy_s(tszInitialDir, M.getChatLogPath(), _TRUNCATE); TCHAR tszReturnName[MAX_PATH]; tszReturnName[0] = 0; mir_sntprintf(tszTemp, _T("%s%c*.*%c%c"), TranslateT("All files"), 0, 0, 0); OPENFILENAME ofn = { 0 }; ofn.lpstrInitialDir = tszInitialDir; ofn.lpstrFilter = tszTemp; ofn.lStructSize = OPENFILENAME_SIZE_VERSION_400; ofn.lpstrFile = tszReturnName; ofn.nMaxFile = MAX_PATH; ofn.nMaxFileTitle = MAX_PATH; ofn.Flags = OFN_HIDEREADONLY | OFN_DONTADDTORECENT; ofn.lpstrDefExt = _T("log"); GetOpenFileName(&ofn); } break; case IDC_FONTCHOOSE: { TCHAR tszDirectory[MAX_PATH]; LPMALLOC psMalloc; if (SUCCEEDED(CoGetMalloc(1, &psMalloc))) { BROWSEINFO bi = { 0 }; bi.hwndOwner = hwndDlg; bi.pszDisplayName = tszDirectory; bi.lpszTitle = TranslateT("Select folder"); bi.ulFlags = BIF_NEWDIALOGSTYLE | BIF_EDITBOX | BIF_RETURNONLYFSDIRS; bi.lpfn = BrowseCallbackProc; bi.lParam = (LPARAM)tszDirectory; LPITEMIDLIST idList = SHBrowseForFolder(&bi); if (idList) { const TCHAR *szUserDir = M.getUserDir(); SHGetPathFromIDList(idList, tszDirectory); mir_tstrcat(tszDirectory, _T("\\")); TCHAR tszTemp[MAX_PATH]; PathToRelativeT(tszDirectory, tszTemp, szUserDir); SetDlgItemText(hwndDlg, IDC_LOGDIRECTORY, mir_tstrlen(tszTemp) > 1 ? tszTemp : DEFLOGFILENAME); } psMalloc->Free(idList); psMalloc->Release(); } } break; case IDC_LOGGING: Utils::enableDlgControl(hwndDlg, IDC_LOGDIRECTORY, IsDlgButtonChecked(hwndDlg, IDC_LOGGING) == BST_CHECKED ? TRUE : FALSE); Utils::enableDlgControl(hwndDlg, IDC_FONTCHOOSE, IsDlgButtonChecked(hwndDlg, IDC_LOGGING) == BST_CHECKED ? TRUE : FALSE); Utils::enableDlgControl(hwndDlg, IDC_LIMIT, IsDlgButtonChecked(hwndDlg, IDC_LOGGING) == BST_CHECKED ? TRUE : FALSE); break; } if (lParam != 0) SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); break; case WM_NOTIFY: if (((LPNMHDR)lParam)->idFrom == 0 && ((LPNMHDR)lParam)->code == PSN_APPLY) { char *pszText = NULL; int iLen = GetWindowTextLength(GetDlgItem(hwndDlg, IDC_LOGDIRECTORY)); if (iLen > 0) { TCHAR *pszText1 = (TCHAR*)mir_alloc(iLen*sizeof(TCHAR) + 2); GetDlgItemText(hwndDlg, IDC_LOGDIRECTORY, pszText1, iLen + 1); db_set_ts(NULL, CHAT_MODULE, "LogDirectory", pszText1); mir_free(pszText1); g_Settings.bLoggingEnabled = IsDlgButtonChecked(hwndDlg, IDC_LOGGING) == BST_CHECKED; db_set_b(0, CHAT_MODULE, "LoggingEnabled", g_Settings.bLoggingEnabled); } else { db_unset(NULL, CHAT_MODULE, "LogDirectory"); db_set_b(0, CHAT_MODULE, "LoggingEnabled", 0); } pci->SM_InvalidateLogDirectories(); iLen = SendDlgItemMessage(hwndDlg, IDC_CHAT_SPIN4, UDM_GETPOS, 0, 0); db_set_w(NULL, CHAT_MODULE, "LoggingLimit", (WORD)iLen); iLen = SendDlgItemMessage(hwndDlg, IDC_CHAT_SPIN3, UDM_GETPOS, 0, 0); if (iLen > 0) db_set_b(0, CHAT_MODULE, "NicklistRowDist", (BYTE)iLen); else db_unset(NULL, CHAT_MODULE, "NicklistRowDist"); iLen = GetWindowTextLength(GetDlgItem(hwndDlg, IDC_LOGTIMESTAMP)); if (iLen > 0) { pszText = (char *)mir_realloc(pszText, iLen + 1); GetDlgItemTextA(hwndDlg, IDC_LOGTIMESTAMP, pszText, iLen + 1); db_set_s(NULL, CHAT_MODULE, "LogTimestamp", pszText); } else db_unset(NULL, CHAT_MODULE, "LogTimestamp"); iLen = GetWindowTextLength(GetDlgItem(hwndDlg, IDC_TIMESTAMP)); if (iLen > 0) { pszText = (char *)mir_realloc(pszText, iLen + 1); GetDlgItemTextA(hwndDlg, IDC_TIMESTAMP, pszText, iLen + 1); db_set_s(NULL, CHAT_MODULE, "HeaderTime", pszText); } else db_unset(NULL, CHAT_MODULE, "HeaderTime"); iLen = GetWindowTextLength(GetDlgItem(hwndDlg, IDC_INSTAMP)); if (iLen > 0) { pszText = (char *)mir_realloc(pszText, iLen + 1); GetDlgItemTextA(hwndDlg, IDC_INSTAMP, pszText, iLen + 1); db_set_s(NULL, CHAT_MODULE, "HeaderIncoming", pszText); } else db_unset(NULL, CHAT_MODULE, "HeaderIncoming"); iLen = GetWindowTextLength(GetDlgItem(hwndDlg, IDC_OUTSTAMP)); if (iLen > 0) { pszText = (char *)mir_realloc(pszText, iLen + 1); GetDlgItemTextA(hwndDlg, IDC_OUTSTAMP, pszText, iLen + 1); db_set_s(NULL, CHAT_MODULE, "HeaderOutgoing", pszText); } else db_unset(NULL, CHAT_MODULE, "HeaderOutgoing"); iLen = SendDlgItemMessage(hwndDlg, IDC_CHAT_SPIN2, UDM_GETPOS, 0, 0); db_set_w(NULL, CHAT_MODULE, "LogLimit", (WORD)iLen); mir_free(pszText); if (pci->hListBkgBrush) DeleteObject(pci->hListBkgBrush); pci->hListBkgBrush = CreateSolidBrush(M.GetDword(CHAT_MODULE, "ColorNicklistBG", SRMSGDEFSET_BKGCOLOUR)); pci->ReloadSettings(); pci->MM_FontsChanged(); pci->MM_FixColors(); pci->SM_BroadcastMessage(NULL, GC_SETWNDPROPS, 0, 0, TRUE); PluginConfig.reloadSettings(); CacheMsgLogIcons(); CacheLogFonts(); return TRUE; } break; case WM_TIMER: if (IsWindow(hPathTip)) KillTimer(hPathTip, 4); // It will prevent tooltip autoclosing break; case WM_DESTROY: if (hPathTip) { KillTimer(hwndDlg, 0); DestroyWindow(hPathTip); hPathTip = 0; } break; } return FALSE; }