From 5d2730f1fb7c3d79ce55292f1d5d7bb5dc33cb44 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Wed, 8 Mar 2017 15:39:07 +0300 Subject: code reordering --- plugins/TabSRMM/src/chat/options.cpp | 1006 ---------------------------------- 1 file changed, 1006 deletions(-) delete mode 100644 plugins/TabSRMM/src/chat/options.cpp (limited to 'plugins/TabSRMM/src/chat/options.cpp') diff --git a/plugins/TabSRMM/src/chat/options.cpp b/plugins/TabSRMM/src/chat/options.cpp deleted file mode 100644 index d44966e935..0000000000 --- a/plugins/TabSRMM/src/chat/options.cpp +++ /dev/null @@ -1,1006 +0,0 @@ -///////////////////////////////////////////////////////////////////////////////////////// -// Miranda NG: the free IM client for Microsoft* Windows* -// -// Copyright (ñ) 2012-17 Miranda NG project, -// Copyright (c) 2000-09 Miranda ICQ/IM project, -// all portions of this codebase are copyrighted to the people -// listed in contributors.txt. -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 2 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// you should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -// -// part of tabSRMM messaging plugin for Miranda. -// -// (C) 2005-2010 by silvercircle _at_ gmail _dot_ com and contributors -// -// group chat options and generic font handling - -#include "../stdafx.h" - -#define FONTF_BOLD 1 -#define FONTF_ITALIC 2 - -struct FontOptionsList -{ - wchar_t *szDescr; - COLORREF defColour; - wchar_t *szDefFace; - BYTE defCharset, defStyle; - char defSize; - COLORREF colour; - wchar_t szFace[LF_FACESIZE]; - BYTE charset, style; - char size; -}; - -struct ColorOptionsList -{ - int order; - wchar_t *tszGroup; - wchar_t *tszName; - char *szSetting; - COLORREF def; -}; - -/* -* note: bits 24-31 in default color indicates that color is a system color index -* (GetSysColor(default_color & 0x00ffffff)), not a rgb value. -*/ -static ColorOptionsList _clrs[] = { - { 0, LPGENW("Message Sessions"), LPGENW("Input area background"), "inputbg", SRMSGDEFSET_BKGCOLOUR }, - { 1, LPGENW("Message Sessions"), LPGENW("Log background"), SRMSGSET_BKGCOLOUR, SRMSGDEFSET_BKGCOLOUR }, - { 0, LPGENW("Message Sessions") L"/" LPGENW("Single Messaging"), LPGENW("Outgoing background"), "outbg", SRMSGDEFSET_BKGOUTCOLOUR }, - { 1, LPGENW("Message Sessions") L"/" LPGENW("Single Messaging"), LPGENW("Incoming background"), "inbg", SRMSGDEFSET_BKGINCOLOUR }, - { 2, LPGENW("Message Sessions") L"/" LPGENW("Single Messaging"), LPGENW("Status background"), "statbg", SRMSGDEFSET_BKGCOLOUR }, - { 3, LPGENW("Message Sessions") L"/" LPGENW("Single Messaging"), LPGENW("Incoming background(old)"), "oldinbg", SRMSGDEFSET_BKGINCOLOUR }, - { 4, LPGENW("Message Sessions") L"/" LPGENW("Single Messaging"), LPGENW("Outgoing background(old)"), "oldoutbg", SRMSGDEFSET_BKGOUTCOLOUR }, - { 5, LPGENW("Message Sessions") L"/" LPGENW("Single Messaging"), LPGENW("Horizontal Grid Lines"), "hgrid", RGB(224, 224, 224) }, - { 0, LPGENW("Message Sessions") L"/" LPGENW("Info Panel"), LPGENW("Panel background low"), "ipfieldsbg", 0x62caff }, - { 1, LPGENW("Message Sessions") L"/" LPGENW("Info Panel"), LPGENW("Panel background high"), "ipfieldsbgHigh", 0xf0f0f0 }, - { 0, LPGENW("Message Sessions") L"/" LPGENW("Common colors"), LPGENW("Toolbar background high"), "tbBgHigh", 0 }, - { 1, LPGENW("Message Sessions") L"/" LPGENW("Common colors"), LPGENW("Toolbar background low"), "tbBgLow", 0 }, - { 2, LPGENW("Message Sessions") L"/" LPGENW("Common colors"), LPGENW("Window fill color"), "fillColor", 0 }, - { 3, LPGENW("Message Sessions") L"/" LPGENW("Common colors"), LPGENW("Text area borders"), "cRichBorders", 0 }, - { 4, LPGENW("Message Sessions") L"/" LPGENW("Common colors"), LPGENW("Aero glow effect"), "aeroGlow", RGB(40, 40, 255) }, - { 4, LPGENW("Message Sessions") L"/" LPGENW("Common colors"), LPGENW("Generic text color (only when fill color is set)"), "genericTxtClr", 0xff000000 | COLOR_BTNTEXT }, -}; - -static ColorOptionsList _tabclrs[] = { - { 0, LPGENW("Message Sessions") L"/" LPGENW("Tabs"), LPGENW("Normal text"), "tab_txt_normal", 0xff000000 | COLOR_BTNTEXT }, - { 1, LPGENW("Message Sessions") L"/" LPGENW("Tabs"), LPGENW("Active text"), "tab_txt_active", 0xff000000 | COLOR_BTNTEXT }, - { 2, LPGENW("Message Sessions") L"/" LPGENW("Tabs"), LPGENW("Hovered text"), "tab_txt_hottrack", 0xff000000 | COLOR_HOTLIGHT }, - { 3, LPGENW("Message Sessions") L"/" LPGENW("Tabs"), LPGENW("Unread text"), "tab_txt_unread", 0xff000000 | COLOR_HOTLIGHT }, - - { 4, LPGENW("Message Sessions") L"/" LPGENW("Tabs"), LPGENW("Normal background"), "tab_bg_normal", 0xff000000 | COLOR_3DFACE }, - { 5, LPGENW("Message Sessions") L"/" LPGENW("Tabs"), LPGENW("Active background"), "tab_bg_active", 0xff000000 | COLOR_3DFACE }, - { 6, LPGENW("Message Sessions") L"/" LPGENW("Tabs"), LPGENW("Hovered background"), "tab_bg_hottrack", 0xff000000 | COLOR_3DFACE }, - { 7, LPGENW("Message Sessions") L"/" LPGENW("Tabs"), LPGENW("Unread background"), "tab_bg_unread", 0xff000000 | COLOR_3DFACE } -}; - -extern LOGFONT lfDefault; - -static FontOptionsList IM_fontOptionsList[] = { - { LPGENW(">> Outgoing messages"), RGB(50, 50, 50), lfDefault.lfFaceName, DEFAULT_CHARSET, 0, -12 }, - { LPGENW(">> Outgoing misc events"), RGB(50, 50, 50), lfDefault.lfFaceName, DEFAULT_CHARSET, 0, -12 }, - { LPGENW("<< Incoming messages"), RGB(50, 50, 50), lfDefault.lfFaceName, DEFAULT_CHARSET, 0, -12 }, - { LPGENW("<< Incoming misc events"), RGB(50, 50, 50), lfDefault.lfFaceName, DEFAULT_CHARSET, 0, -12 }, - { LPGENW(">> Outgoing name"), RGB(50, 50, 50), lfDefault.lfFaceName, DEFAULT_CHARSET, FONTF_BOLD, -12 }, - { LPGENW(">> Outgoing timestamp"), RGB(50, 50, 50), lfDefault.lfFaceName, DEFAULT_CHARSET, FONTF_BOLD, -12 }, - { LPGENW("<< Incoming name"), RGB(50, 50, 50), lfDefault.lfFaceName, DEFAULT_CHARSET, FONTF_BOLD, -12 }, - { LPGENW("<< Incoming timestamp"), RGB(50, 50, 50), lfDefault.lfFaceName, DEFAULT_CHARSET, FONTF_BOLD, -12 }, - { LPGENW(">> Outgoing messages (old)"), RGB(50, 50, 50), lfDefault.lfFaceName, DEFAULT_CHARSET, 0, -12 }, - { LPGENW(">> Outgoing misc events (old)"), RGB(50, 50, 50), lfDefault.lfFaceName, DEFAULT_CHARSET, 0, -12 }, - { LPGENW("<< Incoming messages (old)"), RGB(50, 50, 50), lfDefault.lfFaceName, DEFAULT_CHARSET, 0, -12 }, - { LPGENW("<< Incoming misc events (old)"), RGB(50, 50, 50), lfDefault.lfFaceName, DEFAULT_CHARSET, 0, -12 }, - { LPGENW(">> Outgoing name (old)"), RGB(50, 50, 50), lfDefault.lfFaceName, DEFAULT_CHARSET, FONTF_BOLD, -12 }, - { LPGENW(">> Outgoing timestamp (old)"), RGB(50, 50, 50), lfDefault.lfFaceName, DEFAULT_CHARSET, FONTF_BOLD, -12 }, - { LPGENW("<< Incoming name (old)"), RGB(50, 50, 50), lfDefault.lfFaceName, DEFAULT_CHARSET, FONTF_BOLD, -12 }, - { LPGENW("<< Incoming timestamp (old)"), RGB(50, 50, 50), lfDefault.lfFaceName, DEFAULT_CHARSET, FONTF_BOLD, -12 }, - { LPGENW("* Message Input Area"), RGB(50, 50, 50), lfDefault.lfFaceName, DEFAULT_CHARSET, 0, -12 }, - { LPGENW("* Status changes"), RGB(50, 50, 50), lfDefault.lfFaceName, DEFAULT_CHARSET, 0, -12 }, - { LPGENW("* Dividers"), RGB(50, 50, 50), lfDefault.lfFaceName, DEFAULT_CHARSET, 0, -12 }, - { LPGENW("* Error and warning messages"), RGB(50, 50, 50), lfDefault.lfFaceName, DEFAULT_CHARSET, 0, -12 }, - { LPGENW("* Symbols (incoming)"), RGB(50, 50, 50), L"Webdings", SYMBOL_CHARSET, 0, -12 }, - { LPGENW("* Symbols (outgoing)"), RGB(50, 50, 50), L"Webdings", SYMBOL_CHARSET, 0, -12 }, -}; - -static FontOptionsList IP_fontOptionsList[] = { - { LPGENW("Nickname"), RGB(0, 0, 0), lfDefault.lfFaceName, DEFAULT_CHARSET, 0, -12 }, - { LPGENW("UIN"), RGB(0, 0, 0), lfDefault.lfFaceName, DEFAULT_CHARSET, 0, -12 }, - { LPGENW("Status"), RGB(0, 0, 0), lfDefault.lfFaceName, DEFAULT_CHARSET, 0, -12 }, - { LPGENW("Protocol"), RGB(0, 0, 0), lfDefault.lfFaceName, DEFAULT_CHARSET, 0, -12 }, - { LPGENW("Contacts local time"), RGB(0, 0, 0), lfDefault.lfFaceName, DEFAULT_CHARSET, 0, -12 }, - { LPGENW("Window caption (skinned mode)"), RGB(255, 255, 255), lfDefault.lfFaceName, DEFAULT_CHARSET, 0, -12 }, -}; - -static FontOptionsList *fontOptionsList = IM_fontOptionsList; -static int fontCount = MSGDLGFONTCOUNT; - -struct branch_t -{ - wchar_t* szDescr; - char* szDBName; - int iMode; - BYTE bDefault; - HTREEITEM hItem; -}; -static branch_t branch1[] = { - { LPGENW("Open new chat rooms in the default container"), "DefaultContainer", 0, 1, NULL }, - { LPGENW("Flash window when someone speaks"), "FlashWindow", 0, 0, NULL }, - { LPGENW("Flash window when a word is highlighted"), "FlashWindowHighlight", 0, 1, NULL }, - { LPGENW("Create tabs or windows for highlight events"), "CreateWindowOnHighlight", 0, 0, NULL }, - { LPGENW("Activate chat window on highlight"), "AnnoyingHighlight", 0, 0, NULL }, - { LPGENW("Show list of users in the chat room"), "ShowNicklist", 0, 1, NULL }, - { LPGENW("Colorize nicknames in member list"), "ColorizeNicks", 0, 1, NULL }, - { LPGENW("Show button menus when right clicking the buttons"), "RightClickFilter", 0, 1, NULL }, - { LPGENW("Show topic as status message on the contact list"), "TopicOnClist", 0, 1, NULL }, - { LPGENW("Do not pop up the window when joining a chat room"), "PopupOnJoin", 0, 0, NULL }, - { LPGENW("Hide or show the window by double click in the contact list"), "ToggleVisibility", 0, 0, NULL }, - { LPGENW("Sync splitter position with standard IM sessions"), "SyncSplitter", 0, 0, NULL }, - { LPGENW("Show contact's status modes if supported by the protocol"), "ShowContactStatus", 0, 1, NULL }, - { LPGENW("Display contact's status icon before user role icon"), "ContactStatusFirst", 0, 0, NULL }, - { LPGENW("Use IRC style status indicators in the nick list"), "ClassicIndicators", 0, 0, NULL }, - { LPGENW("Use alternative sorting method in member list"), "AlternativeSorting", 0, 1, NULL } -}; - -static branch_t branch2[] = { - { LPGENW("Prefix all events with a timestamp"), "ShowTimeStamp", 0, 1, NULL }, - { LPGENW("Timestamp only when event time differs"), "ShowTimeStampIfChanged", 0, 0, NULL }, - { LPGENW("Timestamp has same color as the event"), "TimeStampEventColour", 0, 0, NULL }, - { LPGENW("Indent the second line of a message"), "LogIndentEnabled", 0, 1, NULL }, - { LPGENW("Limit user names in the message log to 20 characters"), "LogLimitNames", 0, 1, NULL }, - { LPGENW("Add a colon (:) to auto-completed user names"), "AddColonToAutoComplete", 0, 1, NULL }, - { LPGENW("Add a comma instead of a colon to auto-completed user names"), "UseCommaAsColon", 0, 0, NULL }, - { LPGENW("Start private conversation on double click in nick list (insert nick if unchecked)"), "DoubleClick4Privat", 0, 0, NULL }, - { LPGENW("Strip colors from messages in the log"), "StripFormatting", 0, 0, NULL }, - { LPGENW("Enable the 'event filter' for new rooms"), "FilterEnabled", 0, 0, NULL }, - { LPGENW("Use IRC style status indicators in the log"), "LogClassicIndicators", 0, 0, NULL }, - { LPGENW("Allow clickable user names in the message log"), "ClickableNicks", 0, 1, NULL }, - { LPGENW("Add new line after names"), "NewlineAfterNames", 0, 0, NULL }, - { LPGENW("Colorize user names in message log"), "ColorizeNicksInLog", 0, 1, NULL }, - { LPGENW("Scale down icons to 10x10 pixels in the chat log"), "ScaleIcons", 0, 1, NULL } -}; - -static HWND hPathTip = 0; - -void LoadMsgDlgFont(int section, int i, LOGFONT *lf, COLORREF* colour, char *szMod) -{ - char str[32]; - int style; - int j = (i >= 100 ? i - 100 : i); - - FontOptionsList *fol = fontOptionsList; - switch (section) { - case FONTSECTION_IM: fol = IM_fontOptionsList; break; - case FONTSECTION_IP: fol = IP_fontOptionsList; break; - } - - if (colour) { - mir_snprintf(str, "Font%dCol", i); - *colour = M.GetDword(szMod, str, fol[j].defColour); - } - - if (lf) { - mir_snprintf(str, "Font%dSize", i); - lf->lfHeight = (char)M.GetByte(szMod, str, fol[j].defSize); - lf->lfWidth = 0; - lf->lfEscapement = 0; - lf->lfOrientation = 0; - mir_snprintf(str, "Font%dSty", i); - style = M.GetByte(szMod, str, fol[j].defStyle); - if (i == MSGFONTID_MESSAGEAREA && section == FONTSECTION_IM && M.GetByte("inputFontFix", 1) == 1) { - lf->lfWeight = FW_NORMAL; - lf->lfItalic = 0; - lf->lfUnderline = 0; - lf->lfStrikeOut = 0; - } - else { - lf->lfWeight = style & FONTF_BOLD ? FW_BOLD : FW_NORMAL; - lf->lfItalic = style & FONTF_ITALIC ? 1 : 0; - lf->lfUnderline = style & FONTF_UNDERLINE ? 1 : 0; - lf->lfStrikeOut = style & FONTF_STRIKEOUT ? 1 : 0; - } - mir_snprintf(str, "Font%dSet", i); - lf->lfCharSet = M.GetByte(szMod, str, fol[j].defCharset); - lf->lfOutPrecision = OUT_DEFAULT_PRECIS; - lf->lfClipPrecision = CLIP_DEFAULT_PRECIS; - lf->lfQuality = DEFAULT_QUALITY; - lf->lfPitchAndFamily = DEFAULT_PITCH | FF_DONTCARE; - mir_snprintf(str, "Font%d", i); - if ((i == 17 && !mir_strcmp(szMod, CHATFONT_MODULE)) || ((i == 20 || i == 21) && !mir_strcmp(szMod, FONTMODULE))) { - lf->lfCharSet = SYMBOL_CHARSET; - wcsncpy_s(lf->lfFaceName, L"Webdings", _TRUNCATE); - } - else { - ptrW tszDefFace(db_get_wsa(NULL, szMod, str)); - if (tszDefFace == NULL) - wcsncpy_s(lf->lfFaceName, fol[j].szDefFace, _TRUNCATE); - else - wcsncpy_s(lf->lfFaceName, tszDefFace, _TRUNCATE); - } - } -} - -static HTREEITEM InsertBranch(HWND hwndTree, wchar_t* pszDescr, BOOL bExpanded) -{ - TVINSERTSTRUCT tvis; - tvis.hParent = NULL; - tvis.hInsertAfter = TVI_LAST; - tvis.item.mask = TVIF_TEXT | TVIF_STATE | TVIF_IMAGE | TVIF_SELECTEDIMAGE; - tvis.item.pszText = TranslateW(pszDescr); - tvis.item.stateMask = TVIS_EXPANDED | TVIS_BOLD; - tvis.item.state = (bExpanded ? TVIS_EXPANDED : 0) | TVIS_BOLD; - tvis.item.iImage = tvis.item.iSelectedImage = (bExpanded ? IMG_GRPOPEN : IMG_GRPCLOSED); - return TreeView_InsertItem(hwndTree, &tvis); -} - -static void FillBranch(HWND hwndTree, HTREEITEM hParent, branch_t *branch, int nValues, DWORD defaultval) -{ - if (hParent == 0) - return; - - TVINSERTSTRUCT tvis = { 0 }; - - for (int i = 0; i < nValues; i++) { - tvis.hParent = hParent; - tvis.hInsertAfter = TVI_LAST; - tvis.item.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE; - tvis.item.pszText = TranslateW(branch[i].szDescr); - if (branch[i].iMode) - tvis.item.iImage = tvis.item.iSelectedImage = ((((M.GetDword(CHAT_MODULE, branch[i].szDBName, defaultval) & branch[i].iMode) & branch[i].iMode) != 0) ? IMG_CHECK : IMG_NOCHECK); - else - tvis.item.iImage = tvis.item.iSelectedImage = ((M.GetByte(CHAT_MODULE, branch[i].szDBName, branch[i].bDefault) != 0) ? IMG_CHECK : IMG_NOCHECK); - branch[i].hItem = TreeView_InsertItem(hwndTree, &tvis); - } -} - -static void SaveBranch(HWND hwndTree, branch_t *branch, int nValues) -{ - TVITEM tvi = { 0 }; - BYTE bChecked; - DWORD iState = 0; - - for (int i = 0; i < nValues; i++) { - tvi.mask = TVIF_HANDLE | TVIF_IMAGE; - tvi.hItem = branch[i].hItem; - TreeView_GetItem(hwndTree, &tvi); - bChecked = ((tvi.iImage == IMG_CHECK) ? 1 : 0); - if (branch[i].iMode) { - if (bChecked) - iState |= branch[i].iMode; - if (iState & GC_EVENT_ADDSTATUS) - iState |= GC_EVENT_REMOVESTATUS; - db_set_dw(0, CHAT_MODULE, branch[i].szDBName, iState); - } - else db_set_b(0, CHAT_MODULE, branch[i].szDBName, bChecked); - } -} - -static INT CALLBACK BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lp, LPARAM) -{ - char szDir[MAX_PATH]; - switch (uMsg) { - case BFFM_INITIALIZED: - SendMessage(hwnd, BFFM_SETSELECTION, TRUE, (LPARAM)M.getUserDir()); - break; - - case BFFM_SELCHANGED: - if (SHGetPathFromIDListA((LPITEMIDLIST)lp, szDir)) - SendMessage(hwnd, BFFM_SETSTATUSTEXT, 0, (LPARAM)szDir); - break; - } - return 0; -} - -static IconItem _icons[] = -{ - { LPGEN("Window Icon"), "chat_window", IDI_CHANMGR }, - { LPGEN("Icon overlay"), "chat_overlay", IDI_OVERLAY }, - - { LPGEN("Status 1 (10x10)"), "chat_status0", IDI_STATUS0 }, - { LPGEN("Status 2 (10x10)"), "chat_status1", IDI_STATUS1 }, - { LPGEN("Status 3 (10x10)"), "chat_status2", IDI_STATUS2 }, - { LPGEN("Status 4 (10x10)"), "chat_status3", IDI_STATUS3 }, - { LPGEN("Status 5 (10x10)"), "chat_status4", IDI_STATUS4 }, - { LPGEN("Status 6 (10x10)"), "chat_status5", IDI_STATUS5 } -}; - -static IconItem _logicons[] = -{ - { LPGEN("Message in (10x10)"), "chat_log_message_in", IDI_MESSAGE }, - { LPGEN("Message out (10x10)"), "chat_log_message_out", IDI_MESSAGEOUT }, - { LPGEN("Action (10x10)"), "chat_log_action", IDI_ACTION }, - { LPGEN("Add Status (10x10)"), "chat_log_addstatus", IDI_ADDSTATUS }, - { LPGEN("Remove Status (10x10)"), "chat_log_removestatus", IDI_REMSTATUS }, - { LPGEN("Join (10x10)"), "chat_log_join", IDI_JOIN }, - { LPGEN("Leave (10x10)"), "chat_log_part", IDI_PART }, - { LPGEN("Quit (10x10)"), "chat_log_quit", IDI_QUIT }, - { LPGEN("Kick (10x10)"), "chat_log_kick", IDI_KICK }, - { LPGEN("Notice (10x10)"), "chat_log_notice", IDI_NOTICE }, - { LPGEN("Nickchange (10x10)"), "chat_log_nick", IDI_NICK }, - { LPGEN("Topic (10x10)"), "chat_log_topic", IDI_TOPIC }, - { LPGEN("Highlight (10x10)"), "chat_log_highlight", IDI_HIGHLIGHT }, - { LPGEN("Information (10x10)"), "chat_log_info", IDI_INFO } -}; - -// add icons to the skinning module -void Chat_AddIcons(void) -{ - Icon_Register(g_hIconDLL, LPGEN("Message Sessions") "/" LPGEN("Group chat windows"), _icons, _countof(_icons)); - Icon_Register(g_hIconDLL, LPGEN("Message Sessions") "/" LPGEN("Group chat log"), _logicons, _countof(_logicons)); - pci->MM_IconsChanged(); -} - -/* - * get icon by name from the core icon library service - */ -HICON LoadIconEx(char *pszIcoLibName) -{ - char szTemp[256]; - mir_snprintf(szTemp, "chat_%s", pszIcoLibName); - return IcoLib_GetIcon(szTemp); -} - -static void InitSetting(wchar_t* &ppPointer, const char *pszSetting, const wchar_t *pszDefault) -{ - ptrW val(db_get_wsa(NULL, CHAT_MODULE, pszSetting)); - replaceStrW(ppPointer, (val != NULL) ? val : pszDefault); -} - -#define OPT_FIXHEADINGS (WM_USER+1) - -static UINT _o1controls[] = { IDC_CHECKBOXES, IDC_GROUP, IDC_STATIC_ADD }; - -HWND CreateToolTip(HWND hwndParent, LPTSTR ptszText, LPTSTR ptszTitle) -{ - HWND hwndTT = CreateWindowEx(WS_EX_TOPMOST, - TOOLTIPS_CLASS, NULL, - WS_POPUP | TTS_NOPREFIX, - CW_USEDEFAULT, CW_USEDEFAULT, - CW_USEDEFAULT, CW_USEDEFAULT, - hwndParent, NULL, g_hInst, NULL); - - SetWindowPos(hwndTT, HWND_TOPMOST, 0, 0, 0, 0, - SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE); - - TOOLINFO ti = { 0 }; - ti.cbSize = sizeof(TOOLINFO); - ti.uFlags = TTF_SUBCLASS | TTF_CENTERTIP; - ti.hwnd = hwndParent; - ti.hinst = g_hInst; - ti.lpszText = ptszText; - GetClientRect(hwndParent, &ti.rect); - ti.rect.left = -65; - - SendMessage(hwndTT, TTM_ADDTOOL, 0, (LPARAM)&ti); - SendMessage(hwndTT, TTM_SETTITLE, 1, (LPARAM)ptszTitle); - SendMessage(hwndTT, TTM_SETMAXTIPWIDTH, 0, (LPARAM)640); - return hwndTT; -} - -INT_PTR CALLBACK DlgProcOptions1(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) -{ - static HTREEITEM hListHeading1 = 0; - static HTREEITEM hListHeading2 = 0; - - switch (uMsg) { - case WM_INITDIALOG: - TranslateDialogDefault(hwndDlg); - { - SetWindowLongPtr(GetDlgItem(hwndDlg, IDC_CHECKBOXES), GWL_STYLE, GetWindowLongPtr(GetDlgItem(hwndDlg, IDC_CHECKBOXES), GWL_STYLE) | (TVS_NOHSCROLL)); - /* Replace image list, destroy old. */ - ImageList_Destroy(TreeView_SetImageList(GetDlgItem(hwndDlg, IDC_CHECKBOXES), CreateStateImageList(), TVSIL_NORMAL)); - - hListHeading1 = InsertBranch(GetDlgItem(hwndDlg, IDC_CHECKBOXES), TranslateT("Appearance and functionality of chat room windows"), TRUE); - hListHeading2 = InsertBranch(GetDlgItem(hwndDlg, IDC_CHECKBOXES), TranslateT("Appearance of the message log"), TRUE); - - FillBranch(GetDlgItem(hwndDlg, IDC_CHECKBOXES), hListHeading1, branch1, _countof(branch1), 0x0000); - FillBranch(GetDlgItem(hwndDlg, IDC_CHECKBOXES), hListHeading2, branch2, _countof(branch2), 0x0000); - - wchar_t* pszGroup = NULL; - InitSetting(pszGroup, "AddToGroup", L"Chat rooms"); - SetDlgItemText(hwndDlg, IDC_GROUP, pszGroup); - mir_free(pszGroup); - } - break; - - case WM_COMMAND: - if ((LOWORD(wParam) == IDC_GROUP) && (HIWORD(wParam) != EN_CHANGE || (HWND)lParam != GetFocus())) - return 0; - - if (lParam != 0) - SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - - case WM_NOTIFY: - switch (((LPNMHDR)lParam)->idFrom) { - case IDC_CHECKBOXES: - return TreeViewHandleClick(hwndDlg, ((LPNMHDR)lParam)->hwndFrom, wParam, lParam); - break; - - case 0: - switch (((LPNMHDR)lParam)->code) { - case PSN_APPLY: - int iLen; - wchar_t *pszText = NULL; - BYTE b; - - iLen = GetWindowTextLength(GetDlgItem(hwndDlg, IDC_GROUP)); - if (iLen > 0) { - pszText = (wchar_t*)mir_realloc(pszText, (iLen + 2) * sizeof(wchar_t)); - GetDlgItemText(hwndDlg, IDC_GROUP, pszText, iLen + 1); - db_set_ws(NULL, CHAT_MODULE, "AddToGroup", pszText); - } - else db_set_ws(NULL, CHAT_MODULE, "AddToGroup", L""); - - mir_free(pszText); - - b = M.GetByte(CHAT_MODULE, "Tabs", 1); - SaveBranch(GetDlgItem(hwndDlg, IDC_CHECKBOXES), branch1, _countof(branch1)); - SaveBranch(GetDlgItem(hwndDlg, IDC_CHECKBOXES), branch2, _countof(branch2)); - - pci->ReloadSettings(); - pci->MM_IconsChanged(); - pci->MM_FontsChanged(); - pci->SM_BroadcastMessage(NULL, GC_SETWNDPROPS, 0, 0, TRUE); - SM_ReconfigureFilters(); - return TRUE; - } - } - break; - - case WM_DESTROY: - BYTE b = TreeView_GetItemState(GetDlgItem(hwndDlg, IDC_CHECKBOXES), hListHeading1, TVIS_EXPANDED) & TVIS_EXPANDED ? 1 : 0; - db_set_b(0, CHAT_MODULE, "Branch1Exp", b); - b = TreeView_GetItemState(GetDlgItem(hwndDlg, IDC_CHECKBOXES), hListHeading2, TVIS_EXPANDED) & TVIS_EXPANDED ? 1 : 0; - db_set_b(0, CHAT_MODULE, "Branch2Exp", b); - TreeViewDestroy(GetDlgItem(hwndDlg, IDC_CHECKBOXES)); - } - return FALSE; -} - -static wchar_t* chatcolorsnames[] = -{ - LPGENW("Voiced"), - LPGENW("Half operators"), - LPGENW("Channel operators"), - LPGENW("Extended mode 1"), - LPGENW("Extended mode 2"), - LPGENW("Selection background"), - LPGENW("Selected text"), - LPGENW("Incremental search highlight") -}; - -void RegisterFontServiceFonts() -{ - char szTemp[100]; - LOGFONT lf; - FontIDW fid = { 0 }; - ColourIDW cid = { 0 }; - - fid.cbSize = sizeof(FontIDW); - cid.cbSize = sizeof(ColourIDW); - - strncpy(fid.dbSettingsGroup, FONTMODULE, _countof(fid.dbSettingsGroup)); - - for (int i = 0; i < _countof(IM_fontOptionsList); i++) { - fid.flags = FIDF_DEFAULTVALID | FIDF_ALLOWEFFECTS; - LoadMsgDlgFont(FONTSECTION_IM, i, &lf, &fontOptionsList[i].colour, FONTMODULE); - mir_snprintf(szTemp, "Font%d", i); - strncpy(fid.prefix, szTemp, _countof(fid.prefix)); - fid.order = i; - wcsncpy(fid.name, fontOptionsList[i].szDescr, _countof(fid.name)); - fid.deffontsettings.colour = fontOptionsList[i].colour; - fid.deffontsettings.size = (char)lf.lfHeight; - fid.deffontsettings.style = (lf.lfWeight >= FW_BOLD ? FONTF_BOLD : 0) | (lf.lfItalic ? FONTF_ITALIC : 0); - fid.deffontsettings.charset = lf.lfCharSet; - fid.flags = fid.flags & ~FIDF_CLASSMASK | (fid.deffontsettings.style&FONTF_BOLD ? FIDF_CLASSHEADER : FIDF_CLASSGENERAL); - wcsncpy(fid.deffontsettings.szFace, lf.lfFaceName, LF_FACESIZE); - wcsncpy(fid.backgroundGroup, LPGENW("Message Sessions") L"/" LPGENW("Single Messaging"), _countof(fid.backgroundGroup)); - wcsncpy(fid.group, LPGENW("Message Sessions") L"/" LPGENW("Single Messaging"), _countof(fid.group)); - switch (i) { - case MSGFONTID_MYMSG: - case 1: - case MSGFONTID_MYNAME: - case MSGFONTID_MYTIME: - case 21: - wcsncpy(fid.backgroundName, LPGENW("Outgoing background"), _countof(fid.backgroundName)); - break; - case 8: - case 9: - case 12: - case 13: - wcsncpy(fid.backgroundName, LPGENW("Outgoing background(old)"), _countof(fid.backgroundName)); - break; - case 10: - case 11: - case 14: - case 15: - wcsncpy(fid.backgroundName, LPGENW("Incoming background(old)"), _countof(fid.backgroundName)); - break; - case MSGFONTID_MESSAGEAREA: - wcsncpy(fid.group, LPGENW("Message Sessions"), _countof(fid.group)); - wcsncpy(fid.backgroundGroup, LPGENW("Message Sessions"), _countof(fid.backgroundGroup)); - wcsncpy(fid.backgroundName, LPGENW("Input area background"), _countof(fid.backgroundName)); - fid.flags |= FIDF_DISABLESTYLES; - fid.flags &= ~FIDF_ALLOWEFFECTS; - break; - case 17: - wcsncpy(fid.backgroundName, LPGENW("Status background"), _countof(fid.backgroundName)); - break; - case 18: - wcsncpy(fid.backgroundGroup, LPGENW("Message Sessions"), _countof(fid.backgroundGroup)); - wcsncpy(fid.backgroundName, LPGENW("Log background"), _countof(fid.backgroundName)); - break; - case 19: - wcsncpy(fid.backgroundName, L"", _countof(fid.backgroundName)); - break; - default: - wcsncpy(fid.backgroundName, LPGENW("Incoming background"), _countof(fid.backgroundName)); - break; - } - Font_RegisterW(&fid); - } - - fontOptionsList = IP_fontOptionsList; - fid.flags = FIDF_DEFAULTVALID | FIDF_ALLOWEFFECTS; - wcsncpy(fid.group, LPGENW("Message Sessions") L"/" LPGENW("Info Panel"), _countof(fid.group)); - wcsncpy(fid.backgroundGroup, LPGENW("Message Sessions") L"/" LPGENW("Info Panel"), _countof(fid.backgroundGroup)); - wcsncpy(fid.backgroundName, LPGENW("Fields background"), _countof(fid.backgroundName)); - for (int i = 0; i < IPFONTCOUNT; i++) { - LoadMsgDlgFont(FONTSECTION_IP, i + 100, &lf, &fontOptionsList[i].colour, FONTMODULE); - mir_snprintf(szTemp, "Font%d", i + 100); - strncpy(fid.prefix, szTemp, _countof(fid.prefix)); - fid.order = i + 100; - wcsncpy(fid.name, fontOptionsList[i].szDescr, _countof(fid.name)); - fid.deffontsettings.colour = fontOptionsList[i].colour; - fid.deffontsettings.size = (char)lf.lfHeight; - fid.deffontsettings.style = (lf.lfWeight >= FW_BOLD ? FONTF_BOLD : 0) | (lf.lfItalic ? FONTF_ITALIC : 0); - fid.deffontsettings.charset = lf.lfCharSet; - fid.flags = fid.flags & ~FIDF_CLASSMASK | (fid.deffontsettings.style&FONTF_BOLD ? FIDF_CLASSHEADER : FIDF_CLASSGENERAL); - fid.deffontsettings.charset = lf.lfCharSet; - wcsncpy(fid.deffontsettings.szFace, lf.lfFaceName, LF_FACESIZE); - if (i == IPFONTCOUNT - 1) { - wcsncpy(fid.backgroundGroup, L"", _countof(fid.backgroundGroup)); - wcsncpy(fid.backgroundName, L"", _countof(fid.backgroundName)); - wcsncpy(fid.group, LPGENW("Message Sessions"), _countof(fid.group)); - } - Font_RegisterW(&fid); - } - - wcsncpy(cid.group, LPGENW("Message Sessions") L"/" LPGENW("Group chats"), _countof(cid.group)); - strncpy(cid.dbSettingsGroup, CHAT_MODULE, _countof(cid.dbSettingsGroup)); - for (int i = 0; i <= 7; i++) { - mir_snprintf(szTemp, "NickColor%d", i); - wcsncpy(cid.name, chatcolorsnames[i], _countof(cid.name)); - cid.order = i + 1; - strncpy(cid.setting, szTemp, _countof(cid.setting)); - switch (i) { - case 5: - cid.defcolour = GetSysColor(COLOR_HIGHLIGHT); - break; - case 6: - cid.defcolour = GetSysColor(COLOR_HIGHLIGHTTEXT); - break; - default: - cid.defcolour = RGB(0, 0, 0); - break; - } - Colour_RegisterW(&cid); - } - cid.order++; - wcsncpy_s(cid.name, LPGENW("Nick list background"), _TRUNCATE); - strncpy_s(cid.setting, "ColorNicklistBG", _TRUNCATE); - cid.defcolour = SRMSGDEFSET_BKGCOLOUR; - Colour_RegisterW(&cid); - - cid.order++; - wcsncpy_s(cid.name, LPGENW("Group chat log background"), _TRUNCATE); - strncpy_s(cid.setting, "ColorLogBG", _TRUNCATE); - Colour_RegisterW(&cid); - - // static colors (info panel, tool bar background etc...) - strncpy(fid.dbSettingsGroup, FONTMODULE, _countof(fid.dbSettingsGroup)); - strncpy(cid.dbSettingsGroup, FONTMODULE, _countof(fid.dbSettingsGroup)); - - for (int i = 0; i < _countof(_clrs); i++) { - cid.order = _clrs[i].order; - wcsncpy(cid.group, _clrs[i].tszGroup, _countof(fid.group)); - wcsncpy(cid.name, _clrs[i].tszName, _countof(cid.name)); - strncpy(cid.setting, _clrs[i].szSetting, _countof(cid.setting)); - if (_clrs[i].def & 0xff000000) - cid.defcolour = GetSysColor(_clrs[i].def & 0x000000ff); - else - cid.defcolour = _clrs[i].def; - Colour_RegisterW(&cid); - } - - strncpy(cid.dbSettingsGroup, SRMSGMOD_T, _countof(fid.dbSettingsGroup)); - - // text and background colors for tabs - for (int i = 0; i < _countof(_tabclrs); i++) { - cid.order = _tabclrs[i].order; - wcsncpy(cid.group, _tabclrs[i].tszGroup, _countof(fid.group)); - wcsncpy(cid.name, _tabclrs[i].tszName, _countof(cid.name)); - strncpy(cid.setting, _tabclrs[i].szSetting, _countof(cid.setting)); - if (_tabclrs[i].def & 0xff000000) - cid.defcolour = GetSysColor(_tabclrs[i].def & 0x000000ff); - else - cid.defcolour = _tabclrs[i].def; - - Colour_RegisterW(&cid); - } -} - -int FontServiceFontsChanged(WPARAM, LPARAM) -{ - PluginConfig.reloadSettings(); - CSkin::initAeroEffect(); - CacheMsgLogIcons(); - CacheLogFonts(); - FreeTabConfig(); - ReloadTabConfig(); - Skin->setupAeroSkins(); - M.BroadcastMessage(DM_OPTIONSAPPLIED, 1, 0); - return 0; -} - -static UINT _o2chatcontrols[] = -{ - IDC_CHAT_SPIN2, IDC_LIMIT, IDC_CHAT_SPIN4, IDC_LOGTIMESTAMP, IDC_TIMESTAMP, - IDC_OUTSTAMP, IDC_FONTCHOOSE, IDC_LOGGING, IDC_LOGDIRECTORY, IDC_INSTAMP, IDC_CHAT_SPIN2, IDC_CHAT_SPIN3, IDC_NICKROW2, IDC_LOGLIMIT, - IDC_STATIC110, IDC_STATIC112, 0 -}; - -static UINT _o3chatcontrols[] = { 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); - - wchar_t tszTooltipText[2048]; - - mir_snwprintf(tszTooltipText, - L"%s - %s\n%s - %s\n%s - %s\n%s - %s\n\n" - L"%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" - L"%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 - L"%nick%", TranslateT("nick of current contact (if defined)"), - L"%proto%", TranslateT("protocol name of current contact (if defined). Account name is used when protocol supports multiple accounts"), - L"%accountname%", TranslateT("user-defined account name of current contact (if defined)."), - L"%userid%", TranslateT("user ID of current contact (if defined). It is like UIN for ICQ, JID for Jabber, etc."), - // global vars - L"%miranda_path%", TranslateT("path to Miranda root folder"), - L"%miranda_profilesdir%", TranslateT("path to folder containing Miranda profiles"), - L"%miranda_profilename%", TranslateT("name of current Miranda profile (filename, without extension)"), - L"%miranda_userdata%", TranslateT("will return parsed string %miranda_profilesdir%\\%miranda_profilename%"), - L"%miranda_logpath%", TranslateT("will return parsed string %miranda_userdata%\\Logs"), - L"%appdata%", TranslateT("same as environment variable %APPDATA% for currently logged-on Windows user"), - L"%username%", TranslateT("username for currently logged-on Windows user"), - L"%mydocuments%", TranslateT("\"My Documents\" folder for currently logged-on Windows user"), - L"%desktop%", TranslateT("\"Desktop\" folder for currently logged-on Windows user"), - L"%xxxxxxx%", TranslateT("any environment variable defined in current Windows session (like %systemroot%, %allusersprofile%, etc.)"), - // date/time vars - L"%d%", TranslateT("day of month, 1-31"), - L"%dd%", TranslateT("day of month, 01-31"), - L"%m%", TranslateT("month number, 1-12"), - L"%mm%", TranslateT("month number, 01-12"), - L"%mon%", TranslateT("abbreviated month name"), - L"%month%", TranslateT("full month name"), - L"%yy%", TranslateT("year without century, 01-99"), - L"%yyyy%", TranslateT("year with century, 1901-9999"), - L"%wday%", TranslateT("abbreviated weekday name"), - L"%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: - { - wchar_t tszTemp[MAX_PATH + 20]; - wcsncpy_s(tszTemp, g_Settings.pszLogDir, _TRUNCATE); - - wchar_t *p = tszTemp; - while (*p && (*p == '\\' || *p == '.')) - p++; - - if (*p) - if (wchar_t *p1 = wcschr(p, '\\')) - *p1 = 0; - - wchar_t tszInitialDir[_MAX_DRIVE + _MAX_PATH + 10]; - mir_snwprintf(tszInitialDir, L"%s%s", M.getChatLogPath(), p); - if (!PathFileExists(tszInitialDir)) - wcsncpy_s(tszInitialDir, M.getChatLogPath(), _TRUNCATE); - - wchar_t tszReturnName[MAX_PATH]; tszReturnName[0] = 0; - mir_snwprintf(tszTemp, L"%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 = L"log"; - GetOpenFileName(&ofn); - } - break; - - case IDC_FONTCHOOSE: - { - wchar_t 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 wchar_t *szUserDir = M.getUserDir(); - SHGetPathFromIDList(idList, tszDirectory); - mir_wstrcat(tszDirectory, L"\\"); - - wchar_t tszTemp[MAX_PATH]; - PathToRelativeW(tszDirectory, tszTemp, szUserDir); - SetDlgItemText(hwndDlg, IDC_LOGDIRECTORY, mir_wstrlen(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) { - wchar_t *pszText1 = (wchar_t*)mir_alloc(iLen*sizeof(wchar_t) + 2); - GetDlgItemText(hwndDlg, IDC_LOGDIRECTORY, pszText1, iLen + 1); - db_set_ws(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; -} - -#define NR_GC_EVENTS 12 - -static UINT _eventorder[] = -{ - GC_EVENT_ACTION, - GC_EVENT_MESSAGE, - GC_EVENT_NICK, - GC_EVENT_JOIN, - GC_EVENT_PART, - GC_EVENT_TOPIC, - GC_EVENT_ADDSTATUS, - GC_EVENT_INFORMATION, - GC_EVENT_QUIT, - GC_EVENT_KICK, - GC_EVENT_NOTICE, - GC_EVENT_HIGHLIGHT -}; - -// Dialog procedure for group chat options tab #3 (event filter configuration) -INT_PTR CALLBACK DlgProcOptions3(HWND hwndDlg, UINT uMsg, WPARAM, LPARAM lParam) -{ - switch (uMsg) { - case WM_INITDIALOG: - TranslateDialogDefault(hwndDlg); - { - DWORD dwFilterFlags = M.GetDword(CHAT_MODULE, "FilterFlags", GC_EVENT_ALL); - DWORD dwTrayFlags = M.GetDword(CHAT_MODULE, "TrayIconFlags", GC_EVENT_HIGHLIGHT); - DWORD dwPopupFlags = M.GetDword(CHAT_MODULE, "PopupFlags", GC_EVENT_HIGHLIGHT); - DWORD dwLogFlags = M.GetDword(CHAT_MODULE, "DiskLogFlags", GC_EVENT_ALL); - - for (int i = 0; i < _countof(_eventorder); i++) { - if (_eventorder[i] != GC_EVENT_HIGHLIGHT) { - CheckDlgButton(hwndDlg, IDC_1 + i, dwFilterFlags & _eventorder[i] ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_L1 + i, dwLogFlags & _eventorder[i] ? BST_CHECKED : BST_UNCHECKED); - } - CheckDlgButton(hwndDlg, IDC_P1 + i, dwPopupFlags & _eventorder[i] ? BST_CHECKED : BST_UNCHECKED); - CheckDlgButton(hwndDlg, IDC_T1 + i, dwTrayFlags & _eventorder[i] ? BST_CHECKED : BST_UNCHECKED); - } - } - SendDlgItemMessage(hwndDlg, IDC_LOGICONTYPE, CB_ADDSTRING, -1, (LPARAM)TranslateT("No markers")); - SendDlgItemMessage(hwndDlg, IDC_LOGICONTYPE, CB_ADDSTRING, -1, (LPARAM)TranslateT("Show as icons")); - SendDlgItemMessage(hwndDlg, IDC_LOGICONTYPE, CB_ADDSTRING, -1, (LPARAM)TranslateT("Show as text symbols")); - - SendDlgItemMessage(hwndDlg, IDC_LOGICONTYPE, CB_SETCURSEL, (g_Settings.bLogSymbols ? 2 : (g_Settings.dwIconFlags ? 1 : 0)), 0); - - CheckDlgButton(hwndDlg, IDC_TRAYONLYFORINACTIVE, M.GetByte(CHAT_MODULE, "TrayIconInactiveOnly", 0) ? BST_CHECKED : BST_UNCHECKED); - break; - - case WM_COMMAND: - if (lParam != 0) - SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - break; - - case WM_NOTIFY: - switch (((LPNMHDR)lParam)->idFrom) { - case 0: - switch (((LPNMHDR)lParam)->code) { - case PSN_APPLY: - DWORD dwFilterFlags = 0, dwTrayFlags = 0, - dwPopupFlags = 0, dwLogFlags = 0; - - for (int i = 0; i < _countof(_eventorder); i++) { - if (_eventorder[i] != GC_EVENT_HIGHLIGHT) { - dwFilterFlags |= (IsDlgButtonChecked(hwndDlg, IDC_1 + i) ? _eventorder[i] : 0); - dwLogFlags |= (IsDlgButtonChecked(hwndDlg, IDC_L1 + i) ? _eventorder[i] : 0); - } - dwPopupFlags |= (IsDlgButtonChecked(hwndDlg, IDC_P1 + i) ? _eventorder[i] : 0); - dwTrayFlags |= (IsDlgButtonChecked(hwndDlg, IDC_T1 + i) ? _eventorder[i] : 0); - } - db_set_dw(0, CHAT_MODULE, "FilterFlags", dwFilterFlags); - db_set_dw(0, CHAT_MODULE, "PopupFlags", dwPopupFlags); - db_set_dw(0, CHAT_MODULE, "TrayIconFlags", dwTrayFlags); - db_set_dw(0, CHAT_MODULE, "DiskLogFlags", dwLogFlags); - - LRESULT lr = SendDlgItemMessage(hwndDlg, IDC_LOGICONTYPE, CB_GETCURSEL, 0, 0); - - db_set_dw(0, CHAT_MODULE, "IconFlags", lr == 1 ? 1 : 0); - db_set_b(0, CHAT_MODULE, "LogSymbols", lr == 2 ? 1 : 0); - - db_set_b(0, CHAT_MODULE, "TrayIconInactiveOnly", IsDlgButtonChecked(hwndDlg, IDC_TRAYONLYFORINACTIVE) ? 1 : 0); - - pci->ReloadSettings(); - pci->MM_FontsChanged(); - pci->SM_BroadcastMessage(NULL, GC_SETWNDPROPS, 0, 0, TRUE); - SM_ReconfigureFilters(); - return TRUE; - } - } - break; - } - return FALSE; -} -- cgit v1.2.3