From c1c83bf5790a1adfeccd1e948e321ac3a7e3e54c Mon Sep 17 00:00:00 2001 From: George Hazan Date: Fri, 20 Jul 2012 08:18:28 +0000 Subject: - skinning for a frame - human-readable protocol names - code cleaning git-svn-id: http://svn.miranda-ng.org/main/trunk@1066 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/MyDetails/commons.h | 3 - plugins/MyDetails/data.cpp | 54 +-- plugins/MyDetails/data.h | 2 +- plugins/MyDetails/frame.cpp | 756 ++++++++++++++++++------------------------ plugins/MyDetails/options.cpp | 173 +++++----- plugins/Utils/mir_options.cpp | 447 +++++++++++-------------- plugins/Utils/mir_smileys.cpp | 9 +- 7 files changed, 605 insertions(+), 839 deletions(-) diff --git a/plugins/MyDetails/commons.h b/plugins/MyDetails/commons.h index eeff18a681..51a1d02d52 100644 --- a/plugins/MyDetails/commons.h +++ b/plugins/MyDetails/commons.h @@ -82,7 +82,6 @@ extern long status_msg_dialog_open; #include "../utils/mir_options.h" #include "../utils/mir_icons.h" - #define PS_SETMYAVATAR "/SetMyAvatar" #define PS_GETMYAVATAR "/GetMyAvatar" #define PS_GETMYAVATARMAXSIZE "/GetMyAvatarMaxSize" @@ -91,7 +90,6 @@ extern long status_msg_dialog_open; #define PS_GETMYNICKNAMEMAXLENGTH "/GetMyNicknameMaxLength" - // See if a protocol service exists __inline static int ProtoServiceExists(const char *szModule,const char *szService) { @@ -101,7 +99,6 @@ __inline static int ProtoServiceExists(const char *szModule,const char *szServic return ServiceExists(str); } - // Helper static __inline int DRAW_TEXT(HDC hDC, LPCTSTR lpString, int nCount, LPRECT lpRect, UINT uFormat, const char *protocol, SmileysParseInfo parseInfo) diff --git a/plugins/MyDetails/data.cpp b/plugins/MyDetails/data.cpp index 63892b0785..ffe701cccd 100644 --- a/plugins/MyDetails/data.cpp +++ b/plugins/MyDetails/data.cpp @@ -21,46 +21,35 @@ Boston, MA 02111-1307, USA. #include "commons.h" #include "data.h" - static char *StatusModeToDbSetting(int status,const char *suffix); - - ProtocolArray *protocols = NULL; - void InitProtocolData() { - PROTOCOLDESCRIPTOR **protos; - int i, count; - - CallService(MS_PROTO_ENUMPROTOCOLS, (WPARAM)&count, (LPARAM)&protos); + PROTOACCOUNT **protos; + int count; + CallService(MS_PROTO_ENUMACCOUNTS, (WPARAM)&count, (LPARAM)&protos); protocols = new ProtocolArray(count); - for (i = 0; i < count; i++) - { - if (protos[i]->type != PROTOTYPE_PROTOCOL) + for (int i = 0; i < count; i++) { + PROTOACCOUNT* acc = protos[i]; + if (acc->type != PROTOTYPE_PROTOCOL) continue; - if (protos[i]->szName == NULL || protos[i]->szName[0] == '\0') + if (acc->szModuleName == NULL || acc->szModuleName[0] == '\0') continue; // Found a protocol - Protocol *p = new Protocol(protos[i]->szName); - - if (p->IsValid()) - { + Protocol *p = new Protocol(acc->szModuleName, acc->tszAccountName); + if ( p->IsValid()) protocols->Add(p); - } else - { delete p; - } } } - void DeInitProtocolData() { delete protocols; @@ -69,12 +58,11 @@ void DeInitProtocolData() // Protocol Class /////////////////////////////////////////////////////////////////////////////////////////// - -Protocol::Protocol(const char *aName) +Protocol::Protocol(const char *aName, const TCHAR* descr) { lstrcpynA(name, aName, SIZEOF(name)); + lstrcpyn(description, descr, SIZEOF(description)); - description[0] = _T('\0'); nickname[0] = _T('\0'); status_message[0] = _T('\0'); listening_to[0] = _T('\0'); @@ -85,12 +73,8 @@ Protocol::Protocol(const char *aName) data_changed = true; // Load services - - int caps; - - caps = CallProtoService(name, PS_GETCAPS, PFLAGNUM_1, 0); + int caps = CallProtoService(name, PS_GETCAPS, PFLAGNUM_1, 0); valid = (caps & PF1_IM) == PF1_IM && strcmp(aName, "MetaContacts"); - if ( !valid) return; @@ -106,10 +90,6 @@ Protocol::Protocol(const char *aName) if (ProtoServiceExists(name, PS_GETMYAVATARMAXSIZE)) CallProtoService(name, PS_GETMYAVATARMAXSIZE, (WPARAM) &avatar_max_width, (LPARAM) &avatar_max_height); - char tmp[100]; - CallProtoService(name, PS_GETNAME, SIZEOF(tmp), (LPARAM)tmp); - lstrcpyn(description, _A2T(tmp), SIZEOF(description)); - can_set_nick = ProtoServiceExists(name, PS_SETMYNICKNAME) != FALSE; // Initial value @@ -470,7 +450,7 @@ TCHAR * Protocol::GetListeningTo() } DBVARIANT dbv = {0}; - if (DBGetContactSettingTString(NULL, name, "ListeningTo", &dbv)) + if ( DBGetContactSettingTString(NULL, name, "ListeningTo", &dbv)) { lcopystr(listening_to, _T(""), SIZEOF(listening_to)); return listening_to; @@ -495,13 +475,9 @@ ProtocolArray::ProtocolArray(int max_size) ProtocolArray::~ProtocolArray() { - if (buffer != NULL) - { + if (buffer != NULL) { for ( int i = 0 ; i < buffer_len ; i++ ) - { delete buffer[i]; - } - free(buffer); } } @@ -622,7 +598,7 @@ void ProtocolArray::SetStatusMsgs(int status, const TCHAR *message) DBWriteContactSettingTString(NULL,"SRAway",StatusModeToDbSetting(status,"Msg"),message); // Save default also - if ( !DBGetContactSettingByte(NULL,"SRAway",StatusModeToDbSetting(status,"UsePrev"),0)) + if ( !db_get_b(NULL,"SRAway",StatusModeToDbSetting(status,"UsePrev"),0)) DBWriteContactSettingTString(NULL,"SRAway",StatusModeToDbSetting(status,"Default"),message); for ( int i = 0 ; i < buffer_len ; i++ ) diff --git a/plugins/MyDetails/data.h b/plugins/MyDetails/data.h index 4f3a560ce9..d8c75beda4 100644 --- a/plugins/MyDetails/data.h +++ b/plugins/MyDetails/data.h @@ -60,7 +60,7 @@ public: // Methods /////////////// - Protocol(const char *name); + Protocol(const char *name, const TCHAR *descr); ~Protocol(); bool IsValid(); diff --git a/plugins/MyDetails/frame.cpp b/plugins/MyDetails/frame.cpp index 03aecc7664..a4ce6f2afc 100644 --- a/plugins/MyDetails/frame.cpp +++ b/plugins/MyDetails/frame.cpp @@ -17,16 +17,12 @@ not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - #include "commons.h" -#include "frame.h" -#include "wingdi.h" -#include "winuser.h" +#include // Prototypes ///////////////////////////////////////////////////////////////////////////////////// - #define WINDOW_NAME_PREFIX "mydetails_window" #define WINDOW_CLASS_NAME _T("MyDetailsFrame") #define CONTAINER_CLASS_NAME _T("MyDetailsFrameContainer") @@ -92,8 +88,6 @@ INT_PTR ShowFrameFunc(WPARAM wParam, LPARAM lParam); INT_PTR HideFrameFunc(WPARAM wParam, LPARAM lParam); INT_PTR ShowHideFrameFunc(WPARAM wParam, LPARAM lParam); - - LRESULT CALLBACK FrameContainerWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); LRESULT CALLBACK FrameWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); void SetCycleTime(); @@ -158,7 +152,7 @@ struct MyDetailsFrameData int protocol_number; bool showing_menu; - + bool skinning; bool recalc_rectangles; bool get_status_messages; @@ -264,8 +258,7 @@ int CreateFrame() wndclass.lpszClassName = WINDOW_CLASS_NAME; RegisterClass(&wndclass); - if (ServiceExists(MS_CLIST_FRAMES_ADDFRAME)) - { + if (ServiceExists(MS_CLIST_FRAMES_ADDFRAME)) { hwnd_frame = CreateWindow(WINDOW_CLASS_NAME, TranslateT("My Details"), WS_CHILD | WS_VISIBLE, 0,0,10,10, (HWND)CallService(MS_CLUI_GETHWND, 0, 0), NULL, hInst, NULL); @@ -277,32 +270,27 @@ int CreateFrame() Frame.cbSize = sizeof(CLISTFrame); Frame.hWnd = hwnd_frame; Frame.align = alTop; - Frame.Flags = F_VISIBLE | F_SHOWTB | F_SHOWTBTIP | F_NOBORDER; + Frame.Flags = F_VISIBLE | F_SHOWTB | F_SHOWTBTIP | F_NOBORDER | F_SKINNED; Frame.height = 100; - frame_id = CallService(MS_CLIST_FRAMES_ADDFRAME, (WPARAM)&Frame, 0); - - if (DBGetContactSettingByte(NULL, "MyDetails", "ForceHideFrame", 0)) - { + if ( db_get_b(NULL, "MyDetails", "ForceHideFrame", 0)) { int flags = CallService(MS_CLIST_FRAMES_GETFRAMEOPTIONS, MAKEWPARAM(FO_FLAGS, frame_id), 0); if (flags & F_VISIBLE) CallService(MS_CLIST_FRAMES_SHFRAME, frame_id, 0); - DBDeleteContactSetting(NULL, "MyDetails", "ForceHideFrame"); + db_unset(NULL, "MyDetails", "ForceHideFrame"); } - if (DBGetContactSettingByte(NULL, "MyDetails", "ForceShowFrame", 0)) - { + if ( db_get_b(NULL, "MyDetails", "ForceShowFrame", 0)) { int flags = CallService(MS_CLIST_FRAMES_GETFRAMEOPTIONS, MAKEWPARAM(FO_FLAGS, frame_id), 0); if (!(flags & F_VISIBLE)) CallService(MS_CLIST_FRAMES_SHFRAME, frame_id, 0); - DBDeleteContactSetting(NULL, "MyDetails", "ForceShowFrame"); + db_unset(NULL, "MyDetails", "ForceShowFrame"); } } - else - { + else { wndclass.style = CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW;//CS_HREDRAW | CS_VREDRAW; wndclass.lpfnWndProc = FrameContainerWindowProc; wndclass.cbClsExtra = 0; @@ -340,8 +328,7 @@ int CreateFrame() menu.pszService= MODULE_NAME "/ShowHideMyDetails"; hMenuShowHideFrame = Menu_AddMainMenuItem(&menu); - if (DBGetContactSettingByte(0, MODULE_NAME, SETTING_FRAME_VISIBLE, 1) == 1) - { + if ( db_get_b(0, MODULE_NAME, SETTING_FRAME_VISIBLE, 1) == 1) { ShowWindow(hwnd_container, SW_SHOW); FixMainMenu(); } @@ -350,7 +337,6 @@ int CreateFrame() CreateServiceFunction(MS_MYDETAILS_SHOWFRAME, ShowFrameFunc); CreateServiceFunction(MS_MYDETAILS_HIDEFRAME, HideFrameFunc); CreateServiceFunction(MS_MYDETAILS_SHOWHIDEFRAME, ShowHideFrameFunc); - return 0; } @@ -358,35 +344,27 @@ int CreateFrame() bool FrameIsFloating() { if (frame_id == -1) - { return true; // no frames, always floating - } return (CallService(MS_CLIST_FRAMES_GETFRAMEOPTIONS, MAKEWPARAM(FO_FLOATING, frame_id), 0) != 0); } -LRESULT CALLBACK FrameContainerWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { - switch(msg) - { - case WM_SHOWWINDOW: - { - if ((BOOL)wParam) - Utils_RestoreWindowPosition(hwnd, 0, MODULE_NAME, WINDOW_NAME_PREFIX); - else - Utils_SaveWindowPosition(hwnd, 0, MODULE_NAME, WINDOW_NAME_PREFIX); - break; - } - - case WM_ERASEBKGND: - { - HWND child = (HWND)GetWindowLong(hwnd, GWLP_USERDATA); +LRESULT CALLBACK FrameContainerWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) +{ + switch(msg) { + case WM_SHOWWINDOW: + if ((BOOL)wParam) + Utils_RestoreWindowPosition(hwnd, 0, MODULE_NAME, WINDOW_NAME_PREFIX); + else + Utils_SaveWindowPosition(hwnd, 0, MODULE_NAME, WINDOW_NAME_PREFIX); + break; - SendMessage(child, WM_ERASEBKGND, wParam, lParam); - break; - } + case WM_ERASEBKGND: + SendMessage((HWND)GetWindowLong(hwnd, GWLP_USERDATA), WM_ERASEBKGND, wParam, lParam); + break; - case WM_SIZE: + case WM_SIZE: { HWND child = (HWND)GetWindowLong(hwnd, GWLP_USERDATA); RECT r; @@ -394,41 +372,33 @@ LRESULT CALLBACK FrameContainerWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LP SetWindowPos(child, 0, r.left, r.top, r.right - r.left, r.bottom - r.top, SWP_NOZORDER | SWP_NOACTIVATE); InvalidateRect(child, NULL, TRUE); - - return TRUE; } + return TRUE; - case WM_CLOSE: - { - DBWriteContactSettingByte(0, MODULE_NAME, SETTING_FRAME_VISIBLE, 0); - ShowWindow(hwnd, SW_HIDE); - FixMainMenu(); - return TRUE; - } + case WM_CLOSE: + DBWriteContactSettingByte(0, MODULE_NAME, SETTING_FRAME_VISIBLE, 0); + ShowWindow(hwnd, SW_HIDE); + FixMainMenu(); + return TRUE; } return DefWindowProc(hwnd, msg, wParam, lParam); } - BOOL ScreenToClient(HWND hWnd, LPRECT lpRect) { - BOOL ret; - POINT pt; - pt.x = lpRect->left; pt.y = lpRect->top; - ret = ScreenToClient(hWnd, &pt); - - if ( !ret) return ret; + BOOL ret = ScreenToClient(hWnd, &pt); + if ( !ret) + return ret; lpRect->left = pt.x; lpRect->top = pt.y; - pt.x = lpRect->right; pt.y = lpRect->bottom; @@ -440,17 +410,14 @@ BOOL ScreenToClient(HWND hWnd, LPRECT lpRect) return ret; } - BOOL MoveWindow(HWND hWnd, const RECT &rect, BOOL bRepaint) { return MoveWindow(hWnd, rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top, bRepaint); } - RECT GetInnerRect(const RECT &rc, const RECT &clipping) { RECT rc_ret = rc; - rc_ret.left = max(rc.left, clipping.left); rc_ret.top = max(rc.top, clipping.top); rc_ret.right = min(rc.right, clipping.right); @@ -459,7 +426,6 @@ RECT GetInnerRect(const RECT &rc, const RECT &clipping) return rc_ret; } - RECT GetRect(HDC hdc, RECT rc, SIZE s, UINT uFormat, int next_top, int text_left, bool frame = true, bool end_elipsis_on_frame = true) { @@ -545,60 +511,50 @@ RECT GetRect(HDC hdc, RECT rc, const TCHAR *text, const TCHAR *def_text, Protoco HWND CreateTooltip(HWND hwnd, RECT &rect) { - // struct specifying control classes to register - INITCOMMONCONTROLSEX iccex; - HWND hwndTT; // handle to the ToolTip control - // struct specifying info about tool in ToolTip control - TOOLINFO ti; - unsigned int uid = 0; // for ti initialization + // struct specifying control classes to register + INITCOMMONCONTROLSEX iccex; + HWND hwndTT; // handle to the ToolTip control + // struct specifying info about tool in ToolTip control + TOOLINFO ti; + unsigned int uid = 0; // for ti initialization // Load the ToolTip class from the DLL. - iccex.dwSize = sizeof(iccex); - iccex.dwICC = ICC_BAR_CLASSES; - - if (!InitCommonControlsEx(&iccex)) - return NULL; - - /* CREATE A TOOLTIP WINDOW */ - hwndTT = CreateWindowEx(WS_EX_TOPMOST, - TOOLTIPS_CLASS, - NULL, - WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP, - CW_USEDEFAULT, - CW_USEDEFAULT, - CW_USEDEFAULT, - CW_USEDEFAULT, - hwnd, - NULL, - hInst, - NULL - ); - - /* Gives problem with mToolTip - SetWindowPos(hwndTT, - HWND_TOPMOST, - 0, - 0, - 0, - 0, - SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE); - */ - - /* INITIALIZE MEMBERS OF THE TOOLINFO STRUCTURE */ - ti.cbSize = sizeof(TOOLINFO); - ti.uFlags = TTF_SUBCLASS; - ti.hwnd = hwnd; - ti.hinst = hInst; - ti.uId = uid; - ti.lpszText = LPSTR_TEXTCALLBACK; - // ToolTip control will cover the whole window - ti.rect.left = rect.left; - ti.rect.top = rect.top; - ti.rect.right = rect.right; - ti.rect.bottom = rect.bottom; - - /* SEND AN ADDTOOL MESSAGE TO THE TOOLTIP CONTROL WINDOW */ - SendMessage(hwndTT, TTM_ADDTOOL, 0, (LPARAM) (LPTOOLINFO) &ti); + iccex.dwSize = sizeof(iccex); + iccex.dwICC = ICC_BAR_CLASSES; + + if (!InitCommonControlsEx(&iccex)) + return NULL; + + /* CREATE A TOOLTIP WINDOW */ + hwndTT = CreateWindowEx(WS_EX_TOPMOST, + TOOLTIPS_CLASS, + NULL, + WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP, + CW_USEDEFAULT, + CW_USEDEFAULT, + CW_USEDEFAULT, + CW_USEDEFAULT, + hwnd, + NULL, + hInst, + NULL + ); + + /* INITIALIZE MEMBERS OF THE TOOLINFO STRUCTURE */ + ti.cbSize = sizeof(TOOLINFO); + ti.uFlags = TTF_SUBCLASS; + ti.hwnd = hwnd; + ti.hinst = hInst; + ti.uId = uid; + ti.lpszText = LPSTR_TEXTCALLBACK; + // ToolTip control will cover the whole window + ti.rect.left = rect.left; + ti.rect.top = rect.top; + ti.rect.right = rect.right; + ti.rect.bottom = rect.bottom; + + /* SEND AN ADDTOOL MESSAGE TO THE TOOLTIP CONTROL WINDOW */ + SendMessage(hwndTT, TTM_ADDTOOL, 0, (LPARAM) (LPTOOLINFO) &ti); SendMessage(hwndTT, TTM_SETDELAYTIME, (WPARAM) (DWORD) TTDT_AUTOPOP, (LPARAM) MAKELONG(24 * 60 * 60 * 1000, 0)); return hwndTT; @@ -606,38 +562,32 @@ HWND CreateTooltip(HWND hwnd, RECT &rect) void DeleteTooltipWindows(MyDetailsFrameData *data) { - if (data->nick_tt_hwnd != NULL) - { + if (data->nick_tt_hwnd != NULL) { DestroyWindow(data->nick_tt_hwnd); data->nick_tt_hwnd = NULL; } - if (data->status_tt_hwnd != NULL) - { + if (data->status_tt_hwnd != NULL) { DestroyWindow(data->status_tt_hwnd); data->status_tt_hwnd = NULL; } - if (data->next_proto_tt_hwnd != NULL) - { + if (data->next_proto_tt_hwnd != NULL) { DestroyWindow(data->next_proto_tt_hwnd); data->next_proto_tt_hwnd = NULL; } - if (data->prev_proto_tt_hwnd != NULL) - { + if (data->prev_proto_tt_hwnd != NULL) { DestroyWindow(data->prev_proto_tt_hwnd); data->prev_proto_tt_hwnd = NULL; } - if (data->away_msg_tt_hwnd != NULL) - { + if (data->away_msg_tt_hwnd != NULL) { DestroyWindow(data->away_msg_tt_hwnd); data->away_msg_tt_hwnd = NULL; } - if (data->listening_to_tt_hwnd != NULL) - { + if (data->listening_to_tt_hwnd != NULL) { DestroyWindow(data->listening_to_tt_hwnd); data->listening_to_tt_hwnd = NULL; } @@ -669,24 +619,18 @@ void CalcRectangles(HWND hwnd) DeleteTooltipWindows(data); - if (ServiceExists(MS_CLIST_FRAMES_SETFRAMEOPTIONS) && frame_id != -1) - { + if (ServiceExists(MS_CLIST_FRAMES_SETFRAMEOPTIONS) && frame_id != -1) { int flags = CallService(MS_CLIST_FRAMES_GETFRAMEOPTIONS, MAKEWPARAM(FO_FLAGS, frame_id), 0); - if (flags & F_UNCOLLAPSED) - { + if (flags & F_UNCOLLAPSED) { RECT rf; GetClientRect(hwnd, &rf); int size = 0; - if (rf.bottom - rf.top != size) - { - if (FrameIsFloating()) - { + if (rf.bottom - rf.top != size) { + if (FrameIsFloating()) { HWND parent = GetParent(hwnd); - - if (parent != NULL) - { + if (parent != NULL) { RECT rp_client, rp_window, r_window; GetClientRect(parent, &rp_client); GetWindowRect(parent, &rp_window); @@ -728,354 +672,312 @@ void CalcRectangles(HWND hwnd) next_top = r.top; text_left = r.left; - //if (r.right > r.left && r.bottom > r.top) - { - // Draw image? - //proto->GetAvatar(); - if (proto->CanGetAvatar()) - { - if (proto->avatar_bmp != NULL) - { - data->draw_img = true; + // Draw image? + if (proto->CanGetAvatar()) { + if (proto->avatar_bmp != NULL) { + data->draw_img = true; - BITMAP bmp; - if (GetObject(proto->avatar_bmp, sizeof(bmp), &bmp)) - { - // make bounds - RECT rc = r; + BITMAP bmp; + if (GetObject(proto->avatar_bmp, sizeof(bmp), &bmp)) { + // make bounds + RECT rc = r; - LONG width; - LONG height; + LONG width; + LONG height; - if (opts.draw_avatar_custom_size) - { - rc.right = opts.draw_avatar_custom_size_pixels; + if (opts.draw_avatar_custom_size) { + rc.right = opts.draw_avatar_custom_size_pixels; - width = opts.draw_avatar_custom_size_pixels; - height = opts.draw_avatar_custom_size_pixels; - } - else if (opts.resize_frame) - { - rc.right = rc.left + (rc.right - rc.left) / 3; + width = opts.draw_avatar_custom_size_pixels; + height = opts.draw_avatar_custom_size_pixels; + } + else if (opts.resize_frame) { + rc.right = rc.left + (rc.right - rc.left) / 3; - width = rc.right - rc.left; - height = rc.bottom - rc.top; - } - else - { - rc.right = rc.left + min((rc.right - rc.left) / 3, rc.bottom - rc.top); + width = rc.right - rc.left; + height = rc.bottom - rc.top; + } + else { + rc.right = rc.left + min((rc.right - rc.left) / 3, rc.bottom - rc.top); - width = rc.right - rc.left; - height = rc.bottom - rc.top; - } + width = rc.right - rc.left; + height = rc.bottom - rc.top; + } - // Fit to image proportions - if ( !opts.draw_avatar_allow_to_grow) - { - if (width > bmp.bmWidth) - width = bmp.bmWidth; + // Fit to image proportions + if ( !opts.draw_avatar_allow_to_grow) { + if (width > bmp.bmWidth) + width = bmp.bmWidth; - if (height > bmp.bmHeight) - height = bmp.bmHeight; - } + if (height > bmp.bmHeight) + height = bmp.bmHeight; + } - if ( !opts.resize_frame && height * bmp.bmWidth / bmp.bmHeight <= width) - { - width = height * bmp.bmWidth / bmp.bmHeight; - } - else - { - height = width * bmp.bmHeight / bmp.bmWidth; - } + if ( !opts.resize_frame && height * bmp.bmWidth / bmp.bmHeight <= width) + width = height * bmp.bmWidth / bmp.bmHeight; + else + height = width * bmp.bmHeight / bmp.bmWidth; - rc.right = rc.left + width; - rc.bottom = rc.top + height; + rc.right = rc.left + width; + rc.bottom = rc.top + height; - data->img_rect = rc; + data->img_rect = rc; - avatar_bottom = data->img_rect.bottom + SPACE_TEXT_TEXT; + avatar_bottom = data->img_rect.bottom + SPACE_TEXT_TEXT; - // Make space to nick - text_left = data->img_rect.right + SPACE_IMG_TEXT; - } + // Make space to nick + text_left = data->img_rect.right + SPACE_IMG_TEXT; } } + } - // Always draw nick - { - data->draw_nick = true; - - SelectObject(hdc, hFont[FONT_NICK]); - - data->nick_rect = GetRect(hdc, r, proto->nickname, DEFAULT_NICKNAME, proto, uFormat, - next_top, text_left); + // Always draw nick + data->draw_nick = true; + SelectObject(hdc, hFont[FONT_NICK]); - if (proto->nickname[0] != '\0') - data->nick_tt_hwnd = CreateTooltip(hwnd, data->nick_rect); + data->nick_rect = GetRect(hdc, r, proto->nickname, DEFAULT_NICKNAME, proto, uFormat, next_top, text_left); - next_top = data->nick_rect.bottom + SPACE_TEXT_TEXT; - } + if (proto->nickname[0] != '\0') + data->nick_tt_hwnd = CreateTooltip(hwnd, data->nick_rect); - // Fits more? - if (next_top > r.bottom) - goto finish; + next_top = data->nick_rect.bottom + SPACE_TEXT_TEXT; - if (next_top > avatar_bottom && opts.use_avatar_space_to_draw_text) - text_left = r.left; + // Fits more? + if (next_top > r.bottom) + goto finish; - // Protocol? - if (opts.draw_show_protocol_name) - { - data->draw_proto = true; + if (next_top > avatar_bottom && opts.use_avatar_space_to_draw_text) + text_left = r.left; - SelectObject(hdc, hFont[FONT_PROTO]); + // Protocol? + if (opts.draw_show_protocol_name) { + data->draw_proto = true; - RECT tmp_r = r; - int tmp_text_left = text_left; - if (opts.show_protocol_cycle_button) - { - tmp_r.right -= 2 * ICON_SIZE; - } + SelectObject(hdc, hFont[FONT_PROTO]); - data->proto_rect = GetRect(hdc, tmp_r, proto->description, _T(""), proto, uFormat, - next_top, tmp_text_left, false, true, false); + RECT tmp_r = r; + int tmp_text_left = text_left; + if (opts.show_protocol_cycle_button) + tmp_r.right -= 2 * ICON_SIZE; + data->proto_rect = GetRect(hdc, tmp_r, proto->description, _T(""), proto, uFormat, + next_top, tmp_text_left, false, true, false); - if (opts.show_protocol_cycle_button) - { - data->draw_proto_cycle= true; + if (opts.show_protocol_cycle_button) { + data->draw_proto_cycle= true; - RECT prev = r; - prev.top = next_top; - prev.bottom = min(r.bottom, prev.top + ICON_SIZE); + RECT prev = r; + prev.top = next_top; + prev.bottom = min(r.bottom, prev.top + ICON_SIZE); - int diff = (data->proto_rect.bottom - data->proto_rect.top) - (prev.bottom - prev.top); - if (diff < 0) - { - diff = -diff / 2; - data->proto_rect.top += diff; - data->proto_rect.bottom += diff; - } - else - { - diff = diff / 2; - prev.top += diff; - prev.bottom += diff; - } + int diff = (data->proto_rect.bottom - data->proto_rect.top) - (prev.bottom - prev.top); + if (diff < 0) { + diff = -diff / 2; + data->proto_rect.top += diff; + data->proto_rect.bottom += diff; + } + else { + diff = diff / 2; + prev.top += diff; + prev.bottom += diff; + } - prev.right -= ICON_SIZE; - prev.left = prev.right - ICON_SIZE; + prev.right -= ICON_SIZE; + prev.left = prev.right - ICON_SIZE; - RECT next = prev; - next.left += ICON_SIZE; - next.right += ICON_SIZE; + RECT next = prev; + next.left += ICON_SIZE; + next.right += ICON_SIZE; - prev.left = max(text_left, prev.left); - prev.right = min(r.right, prev.right); - next.left = max(text_left, next.left); - next.right = min(r.right, next.right); + prev.left = max(text_left, prev.left); + prev.right = min(r.right, prev.right); + next.left = max(text_left, next.left); + next.right = min(r.right, next.right); - data->prev_proto_rect = prev; - data->next_proto_rect = next; + data->prev_proto_rect = prev; + data->next_proto_rect = next; - data->next_proto_tt_hwnd = CreateTooltip(hwnd, data->next_proto_rect); - data->prev_proto_tt_hwnd = CreateTooltip(hwnd, data->prev_proto_rect); + data->next_proto_tt_hwnd = CreateTooltip(hwnd, data->next_proto_rect); + data->prev_proto_tt_hwnd = CreateTooltip(hwnd, data->prev_proto_rect); - next_top = max(data->next_proto_rect.bottom, data->proto_rect.bottom) + SPACE_TEXT_TEXT; - } - else - { - next_top = data->proto_rect.bottom + SPACE_TEXT_TEXT; - } + next_top = max(data->next_proto_rect.bottom, data->proto_rect.bottom) + SPACE_TEXT_TEXT; } + else next_top = data->proto_rect.bottom + SPACE_TEXT_TEXT; + } - // Fits more? - if (next_top + 2 * BORDER_SPACE > r.bottom) - goto finish; + // Fits more? + if (next_top + 2 * BORDER_SPACE > r.bottom) + goto finish; - if (next_top > avatar_bottom && opts.use_avatar_space_to_draw_text) - text_left = r.left; + if (next_top > avatar_bottom && opts.use_avatar_space_to_draw_text) + text_left = r.left; - // Status data? - { - data->draw_status = true; + // Status data? + { + data->draw_status = true; - SelectObject(hdc, hFont[FONT_STATUS]); + SelectObject(hdc, hFont[FONT_STATUS]); - // Text size - RECT r_tmp = r; - DrawText(hdc, proto->status_name, _tcslen(proto->status_name), &r_tmp, - DT_CALCRECT | (uFormat & ~DT_END_ELLIPSIS)); + // Text size + RECT r_tmp = r; + DrawText(hdc, proto->status_name, _tcslen(proto->status_name), &r_tmp, + DT_CALCRECT | (uFormat & ~DT_END_ELLIPSIS)); - SIZE s; - s.cy = max(r_tmp.bottom - r_tmp.top, ICON_SIZE); - s.cx = ICON_SIZE + SPACE_ICON_TEXT + r_tmp.right - r_tmp.left; + SIZE s; + s.cy = max(r_tmp.bottom - r_tmp.top, ICON_SIZE); + s.cx = ICON_SIZE + SPACE_ICON_TEXT + r_tmp.right - r_tmp.left; - // Status global rect - data->status_rect = GetRect(hdc, r, s, uFormat, next_top, text_left, true, false); + // Status global rect + data->status_rect = GetRect(hdc, r, s, uFormat, next_top, text_left, true, false); - if (proto->status_name[0] != '\0') - data->status_tt_hwnd = CreateTooltip(hwnd, data->status_rect); + if (proto->status_name[0] != '\0') + data->status_tt_hwnd = CreateTooltip(hwnd, data->status_rect); - next_top = data->status_rect.bottom + SPACE_TEXT_TEXT; + next_top = data->status_rect.bottom + SPACE_TEXT_TEXT; - RECT rc_inner = data->status_rect; - rc_inner.top += BORDER_SPACE; - rc_inner.bottom -= BORDER_SPACE; - rc_inner.left += BORDER_SPACE; - rc_inner.right -= BORDER_SPACE; + RECT rc_inner = data->status_rect; + rc_inner.top += BORDER_SPACE; + rc_inner.bottom -= BORDER_SPACE; + rc_inner.left += BORDER_SPACE; + rc_inner.right -= BORDER_SPACE; - // Icon - data->status_icon_rect = rc_inner; + // Icon + data->status_icon_rect = rc_inner; - if (opts.draw_text_align_right || opts.draw_text_rtl) - data->status_icon_rect.left = max(data->status_icon_rect.right - ICON_SIZE, rc_inner.left); - else - data->status_icon_rect.right = min(data->status_icon_rect.left + ICON_SIZE, rc_inner.right); + if (opts.draw_text_align_right || opts.draw_text_rtl) + data->status_icon_rect.left = max(data->status_icon_rect.right - ICON_SIZE, rc_inner.left); + else + data->status_icon_rect.right = min(data->status_icon_rect.left + ICON_SIZE, rc_inner.right); - if (r_tmp.bottom - r_tmp.top > ICON_SIZE) - { - data->status_icon_rect.top += (r_tmp.bottom - r_tmp.top - ICON_SIZE) / 2; - data->status_icon_rect.bottom = data->status_icon_rect.top + ICON_SIZE; - } + if (r_tmp.bottom - r_tmp.top > ICON_SIZE) { + data->status_icon_rect.top += (r_tmp.bottom - r_tmp.top - ICON_SIZE) / 2; + data->status_icon_rect.bottom = data->status_icon_rect.top + ICON_SIZE; + } - // Text - data->status_text_rect = GetInnerRect(rc_inner, r); + // Text + data->status_text_rect = GetInnerRect(rc_inner, r); - if (opts.draw_text_align_right || opts.draw_text_rtl) - data->status_text_rect.right = max(data->status_icon_rect.left - SPACE_ICON_TEXT, rc_inner.left); - else - data->status_text_rect.left = min(data->status_icon_rect.right + SPACE_ICON_TEXT, rc_inner.right); + if (opts.draw_text_align_right || opts.draw_text_rtl) + data->status_text_rect.right = max(data->status_icon_rect.left - SPACE_ICON_TEXT, rc_inner.left); + else + data->status_text_rect.left = min(data->status_icon_rect.right + SPACE_ICON_TEXT, rc_inner.right); - if (ICON_SIZE > r_tmp.bottom - r_tmp.top) - { - data->status_text_rect.top += (ICON_SIZE - (r_tmp.bottom - r_tmp.top)) / 2; - data->status_text_rect.bottom = data->status_text_rect.top + r_tmp.bottom - r_tmp.top; - } + if (ICON_SIZE > r_tmp.bottom - r_tmp.top) { + data->status_text_rect.top += (ICON_SIZE - (r_tmp.bottom - r_tmp.top)) / 2; + data->status_text_rect.bottom = data->status_text_rect.top + r_tmp.bottom - r_tmp.top; } + } - // Fits more? - if (next_top + 2 * BORDER_SPACE > r.bottom) - goto finish; + // Fits more? + if (next_top + 2 * BORDER_SPACE > r.bottom) + goto finish; - if (next_top > avatar_bottom && opts.use_avatar_space_to_draw_text) - text_left = r.left; + if (next_top > avatar_bottom && opts.use_avatar_space_to_draw_text) + text_left = r.left; - // Away msg? - if (proto->CanGetStatusMsg()) - { - data->draw_away_msg = true; + // Away msg? + if (proto->CanGetStatusMsg()) { + data->draw_away_msg = true; - SelectObject(hdc, hFont[FONT_AWAY_MSG]); + SelectObject(hdc, hFont[FONT_AWAY_MSG]); - data->away_msg_rect = GetRect(hdc, r, proto->status_message, DEFAULT_STATUS_MESSAGE, proto, uFormat, - next_top, text_left); + data->away_msg_rect = GetRect(hdc, r, proto->status_message, DEFAULT_STATUS_MESSAGE, proto, uFormat, next_top, text_left); - if (proto->status_message[0] != '\0') - data->away_msg_tt_hwnd = CreateTooltip(hwnd, data->away_msg_rect); + if (proto->status_message[0] != '\0') + data->away_msg_tt_hwnd = CreateTooltip(hwnd, data->away_msg_rect); - next_top = data->away_msg_rect.bottom + SPACE_TEXT_TEXT; - } + next_top = data->away_msg_rect.bottom + SPACE_TEXT_TEXT; + } - // Fits more? - if (next_top + 2 * BORDER_SPACE > r.bottom) - goto finish; + // Fits more? + if (next_top + 2 * BORDER_SPACE > r.bottom) + goto finish; - if (next_top > avatar_bottom && opts.use_avatar_space_to_draw_text) - text_left = r.left; + if (next_top > avatar_bottom && opts.use_avatar_space_to_draw_text) + text_left = r.left; - // Listening to - if (proto->ListeningToEnabled() && proto->GetStatus() > ID_STATUS_OFFLINE) - { - data->draw_listening_to = true; + // Listening to + if (proto->ListeningToEnabled() && proto->GetStatus() > ID_STATUS_OFFLINE) { + data->draw_listening_to = true; - if (proto->listening_to[0] == '\0') - { - SelectObject(hdc, hFont[FONT_LISTENING_TO]); + if (proto->listening_to[0] == '\0') { + SelectObject(hdc, hFont[FONT_LISTENING_TO]); - data->listening_to_rect = GetRect(hdc, r, proto->listening_to, DEFAULT_LISTENING_TO, proto, uFormat, - next_top, text_left); + data->listening_to_rect = GetRect(hdc, r, proto->listening_to, DEFAULT_LISTENING_TO, proto, uFormat, + next_top, text_left); - data->listening_to_text_rect = data->listening_to_rect; - ZeroMemory(&data->listening_to_icon_rect, sizeof(data->listening_to_icon_rect)); + data->listening_to_text_rect = data->listening_to_rect; + ZeroMemory(&data->listening_to_icon_rect, sizeof(data->listening_to_icon_rect)); - next_top = data->listening_to_rect.bottom + SPACE_TEXT_TEXT; - } - else - { - SelectObject(hdc, hFont[FONT_LISTENING_TO]); + next_top = data->listening_to_rect.bottom + SPACE_TEXT_TEXT; + } + else { + SelectObject(hdc, hFont[FONT_LISTENING_TO]); - // Text size - RECT r_tmp = r; - DrawText(hdc, proto->listening_to, _tcslen(proto->listening_to), &r_tmp, - DT_CALCRECT | (uFormat & ~DT_END_ELLIPSIS)); + // Text size + RECT r_tmp = r; + DrawText(hdc, proto->listening_to, _tcslen(proto->listening_to), &r_tmp, + DT_CALCRECT | (uFormat & ~DT_END_ELLIPSIS)); - SIZE s; - s.cy = max(r_tmp.bottom - r_tmp.top, ICON_SIZE); - s.cx = ICON_SIZE + SPACE_ICON_TEXT + r_tmp.right - r_tmp.left; + SIZE s; + s.cy = max(r_tmp.bottom - r_tmp.top, ICON_SIZE); + s.cx = ICON_SIZE + SPACE_ICON_TEXT + r_tmp.right - r_tmp.left; - // listening to global rect - data->listening_to_rect = GetRect(hdc, r, s, uFormat, next_top, text_left, true, false); + // listening to global rect + data->listening_to_rect = GetRect(hdc, r, s, uFormat, next_top, text_left, true, false); - data->listening_to_tt_hwnd = CreateTooltip(hwnd, data->listening_to_rect); + data->listening_to_tt_hwnd = CreateTooltip(hwnd, data->listening_to_rect); - next_top = data->listening_to_rect.bottom + SPACE_TEXT_TEXT; + next_top = data->listening_to_rect.bottom + SPACE_TEXT_TEXT; - RECT rc_inner = data->listening_to_rect; - rc_inner.top += BORDER_SPACE; - rc_inner.bottom -= BORDER_SPACE; - rc_inner.left += BORDER_SPACE; - rc_inner.right -= BORDER_SPACE; + RECT rc_inner = data->listening_to_rect; + rc_inner.top += BORDER_SPACE; + rc_inner.bottom -= BORDER_SPACE; + rc_inner.left += BORDER_SPACE; + rc_inner.right -= BORDER_SPACE; - // Icon - data->listening_to_icon_rect = rc_inner; + // Icon + data->listening_to_icon_rect = rc_inner; - if (opts.draw_text_align_right || opts.draw_text_rtl) - data->listening_to_icon_rect.left = max(data->listening_to_icon_rect.right - ICON_SIZE, rc_inner.left); - else - data->listening_to_icon_rect.right = min(data->listening_to_icon_rect.left + ICON_SIZE, rc_inner.right); + if (opts.draw_text_align_right || opts.draw_text_rtl) + data->listening_to_icon_rect.left = max(data->listening_to_icon_rect.right - ICON_SIZE, rc_inner.left); + else + data->listening_to_icon_rect.right = min(data->listening_to_icon_rect.left + ICON_SIZE, rc_inner.right); - if (r_tmp.bottom - r_tmp.top > ICON_SIZE) - { - data->listening_to_icon_rect.top += (r_tmp.bottom - r_tmp.top - ICON_SIZE) / 2; - data->listening_to_icon_rect.bottom = data->listening_to_icon_rect.top + ICON_SIZE; - } + if (r_tmp.bottom - r_tmp.top > ICON_SIZE) { + data->listening_to_icon_rect.top += (r_tmp.bottom - r_tmp.top - ICON_SIZE) / 2; + data->listening_to_icon_rect.bottom = data->listening_to_icon_rect.top + ICON_SIZE; + } - // Text - data->listening_to_text_rect = GetInnerRect(rc_inner, r); + // Text + data->listening_to_text_rect = GetInnerRect(rc_inner, r); - if (opts.draw_text_align_right || opts.draw_text_rtl) - data->listening_to_text_rect.right = max(data->listening_to_icon_rect.left - SPACE_ICON_TEXT, rc_inner.left); - else - data->listening_to_text_rect.left = min(data->listening_to_icon_rect.right + SPACE_ICON_TEXT, rc_inner.right); + if (opts.draw_text_align_right || opts.draw_text_rtl) + data->listening_to_text_rect.right = max(data->listening_to_icon_rect.left - SPACE_ICON_TEXT, rc_inner.left); + else + data->listening_to_text_rect.left = min(data->listening_to_icon_rect.right + SPACE_ICON_TEXT, rc_inner.right); - if (ICON_SIZE > r_tmp.bottom - r_tmp.top) - { - data->listening_to_text_rect.top += (ICON_SIZE - (r_tmp.bottom - r_tmp.top)) / 2; - data->listening_to_text_rect.bottom = data->listening_to_text_rect.top + r_tmp.bottom - r_tmp.top; - } + if (ICON_SIZE > r_tmp.bottom - r_tmp.top) { + data->listening_to_text_rect.top += (ICON_SIZE - (r_tmp.bottom - r_tmp.top)) / 2; + data->listening_to_text_rect.bottom = data->listening_to_text_rect.top + r_tmp.bottom - r_tmp.top; } } } r.bottom = max(next_top - SPACE_TEXT_TEXT, avatar_bottom); - if (opts.resize_frame && ServiceExists(MS_CLIST_FRAMES_SETFRAMEOPTIONS) && frame_id != -1) - { + if (opts.resize_frame && ServiceExists(MS_CLIST_FRAMES_SETFRAMEOPTIONS) && frame_id != -1) { RECT rf; GetClientRect(hwnd, &rf); int size = r.bottom + opts.borders[BOTTOM]; - if (rf.bottom - rf.top != size) - { - if (FrameIsFloating()) - { + if (rf.bottom - rf.top != size) { + if (FrameIsFloating()) { HWND parent = GetParent(hwnd); - if (parent != NULL) - { + if (parent != NULL) { RECT rp_client, rp_window, r_window; GetClientRect(parent, &rp_client); GetWindowRect(parent, &rp_window); @@ -1087,11 +989,9 @@ void CalcRectangles(HWND hwnd) SetWindowPos(parent, 0, 0, 0, rp_window.right - rp_window.left, size + diff, SWP_NOZORDER | SWP_NOMOVE | SWP_NOACTIVATE); } } - else if (IsWindowVisible(hwnd) && ServiceExists(MS_CLIST_FRAMES_ADDFRAME)) - { + else if (IsWindowVisible(hwnd) && ServiceExists(MS_CLIST_FRAMES_ADDFRAME)) { int flags = CallService(MS_CLIST_FRAMES_GETFRAMEOPTIONS, MAKEWPARAM(FO_FLAGS, frame_id), 0); - if (flags & F_VISIBLE) - { + if (flags & F_VISIBLE) { CallService(MS_CLIST_FRAMES_SETFRAMEOPTIONS, MAKEWPARAM(FO_HEIGHT, frame_id), (LPARAM)(size)); CallService(MS_CLIST_FRAMES_UPDATEFRAME, (WPARAM)frame_id, (LPARAM)(FU_TBREDRAW | FU_FMREDRAW | FU_FMPOS)); } @@ -1126,14 +1026,18 @@ HBITMAP CreateBitmap32(int cx, int cy) return DirectBitmap; } - void EraseBackground(HWND hwnd, HDC hdc) +void EraseBackground(HWND hwnd, HDC hdc, MyDetailsFrameData* data) { RECT r; GetClientRect(hwnd, &r); - HBRUSH hB = CreateSolidBrush((COLORREF) DBGetContactSettingDword(NULL,"MyDetails","BackgroundColor",GetSysColor(COLOR_BTNFACE))); - FillRect(hdc, &r, hB); - DeleteObject(hB); + if (data->skinning) + SkinDrawWindowBack(hwnd, hdc, &r, "Main,ID=Background"); + else { + HBRUSH hB = CreateSolidBrush((COLORREF) DBGetContactSettingDword(NULL,"MyDetails","BackgroundColor",GetSysColor(COLOR_BTNFACE))); + FillRect(hdc, &r, hB); + DeleteObject(hB); + } } void DrawTextWithRect(HDC hdc, const TCHAR *text, const TCHAR *def_text, RECT rc, UINT uFormat, @@ -1214,9 +1118,8 @@ void Draw(HWND hwnd, HDC hdc_orig) MyDetailsFrameData *data = (MyDetailsFrameData *)GetWindowLong(hwnd, GWLP_USERDATA); Protocol *proto = protocols->Get(data->protocol_number); - if (proto == NULL) - { - EraseBackground(hwnd, hdc_orig); + if (proto == NULL) { + EraseBackground(hwnd, hdc_orig, data); return; } @@ -1237,7 +1140,7 @@ void Draw(HWND hwnd, HDC hdc_orig) SetStretchBltMode(hdc, HALFTONE); // Erase - EraseBackground(hwnd, hdc); + EraseBackground(hwnd, hdc, data); r.left += min(opts.borders[LEFT], r.right); r.right = max(r.right - opts.borders[RIGHT], r.left); @@ -1732,12 +1635,11 @@ LRESULT CALLBACK FrameWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPar data->recalc_rectangles = true; data->get_status_messages = false; data->showing_menu = false; + data->skinning = ServiceExists(MS_SKIN_DRAWGLYPH) != 0; data->protocol_number = DBGetContactSettingWord(NULL,"MyDetails","ProtocolNumber",0); if (data->protocol_number >= protocols->GetSize()) - { data->protocol_number = 0; - } SetCycleTime(hwnd); SetStatusMessageRefreshTime(hwnd); @@ -1752,20 +1654,9 @@ LRESULT CALLBACK FrameWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPar return TRUE; } - /* - case WM_ERASEBKGND: - { - //EraseBackground(hwnd, (HDC)wParam); - Draw(hwnd, (HDC)wParam); - return TRUE; - } - */ - case WM_PRINTCLIENT: - { Draw(hwnd, (HDC)wParam); return TRUE; - } case WM_PAINT: { @@ -1906,8 +1797,7 @@ LRESULT CALLBACK FrameWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPar mii.cch = _tcslen(protocols->Get(i)->description); mii.wID = i + 1; - if (i == data->protocol_number) - { + if (i == data->protocol_number) { mii.fMask |= MIIM_STATE; mii.fState = MFS_DISABLED; } @@ -2615,20 +2505,10 @@ void FixMainMenu() void RedrawFrame() { -// MyDetailsFrameData *data = (MyDetailsFrameData *)GetWindowLong(hwnd_frame, GWLP_USERDATA); -// if (data != NULL) -// { -// data->recalc_rectangles = true; - - if (frame_id == -1) - { - InvalidateRect(hwnd_container, NULL, TRUE); - } - else - { - CallService(MS_CLIST_FRAMES_UPDATEFRAME, (WPARAM)frame_id, (LPARAM)FU_TBREDRAW | FU_FMREDRAW); - } -// } + if (frame_id == -1) + InvalidateRect(hwnd_container, NULL, TRUE); + else + CallService(MS_CLIST_FRAMES_UPDATEFRAME, (WPARAM)frame_id, (LPARAM)FU_TBREDRAW | FU_FMREDRAW); } void RefreshFrameAndCalcRects() diff --git a/plugins/MyDetails/options.cpp b/plugins/MyDetails/options.cpp index a8cf27ead3..6506e4a59f 100644 --- a/plugins/MyDetails/options.cpp +++ b/plugins/MyDetails/options.cpp @@ -28,34 +28,34 @@ Options opts; // Functions ////////////////////////////////////////////////////////////////////////////////////// static OptPageControl pageControls[] = { - { &opts.cycle_through_protocols, CONTROL_CHECKBOX, IDC_CYCLE_THROUGH_PROTOS, "CicleThroughtProtocols", (BYTE) 1 }, - { &opts.seconds_to_show_protocol, CONTROL_SPIN, IDC_CYCLE_TIME, "CicleTime", (WORD) 5, IDC_CYCLE_TIME_SPIN, (WORD) 1, (WORD) 255 }, - { &opts.draw_show_protocol_name, CONTROL_CHECKBOX, IDC_SHOW_PROTO_NAME, "ShowProtocolName", (BYTE) 1 }, - { &opts.show_protocol_cycle_button, CONTROL_CHECKBOX, IDC_SHOW_CYCLE_PROTO_BUTTON, "ShowProtocolCycleButton", (BYTE) 0 }, - { &opts.draw_text_rtl, CONTROL_CHECKBOX, IDC_TEXT_RTL, "TextRTL", (BYTE) 0 }, - { &opts.draw_text_align_right, CONTROL_CHECKBOX, IDC_TEXT_ALIGN_RIGHT, "TextAlignRight", (BYTE) 0 }, - { &opts.replace_smileys, CONTROL_CHECKBOX, IDC_REPLACE_SMILEYS, "ReplaceSmileys", (BYTE) 1 }, - { &opts.resize_smileys, CONTROL_CHECKBOX, IDC_RESIZE_SMILEYS, "ResizeSmileys", (BYTE) 0 }, - { &opts.use_contact_list_smileys, CONTROL_CHECKBOX, IDC_USE_CONTACT_LIST_SMILEYS, "UseContactListSmileys", (BYTE) 0 }, - { &opts.global_on_avatar, CONTROL_CHECKBOX, IDC_GLOBAL_ON_AVATAR, "GlobalOnAvatar", (BYTE) 0 }, - { &opts.global_on_nickname, CONTROL_CHECKBOX, IDC_GLOBAL_ON_NICKNAME, "GlobalOnNickname", (BYTE) 0 }, - { &opts.global_on_status, CONTROL_CHECKBOX, IDC_GLOBAL_ON_STATUS, "GlobalOnStatus", (BYTE) 0 }, - { &opts.global_on_status_message, CONTROL_CHECKBOX, IDC_GLOBAL_ON_STATUS_MESSAGE, "GlobalOnStatusMessage", (BYTE) 0 }, - { &opts.draw_avatar_allow_to_grow, CONTROL_CHECKBOX, IDC_AVATAR_ALLOW_TO_GROW, "AvatarAllowToGrow", (BYTE) 0 }, - { &opts.draw_avatar_custom_size, CONTROL_CHECKBOX, IDC_AVATAR_CUSTOM_SIZE_CHK, "AvatarCustomSize", (BYTE) 0 }, - { &opts.draw_avatar_custom_size_pixels, CONTROL_SPIN, IDC_AVATAR_CUSTOM_SIZE, "AvatarCustomSizePixels", (WORD) 30, IDC_AVATAR_CUSTOM_SIZE_SPIN, (WORD) 1, (WORD) 255 }, - { &opts.draw_avatar_border, CONTROL_CHECKBOX, IDC_AVATAR_DRAW_BORDER, "AvatarDrawBorders", (BYTE) 0 }, - { &opts.draw_avatar_border_color, CONTROL_COLOR, IDC_AVATAR_BORDER_COLOR, "AvatarBorderColor", (DWORD) RGB(0,0,0) }, - { &opts.draw_avatar_round_corner, CONTROL_CHECKBOX, IDC_AVATAR_ROUND_CORNERS, "AvatarRoundCorners", (BYTE) 1 }, - { &opts.draw_avatar_use_custom_corner_size, CONTROL_CHECKBOX, IDC_AVATAR_CUSTOM_CORNER_SIZE_CHECK, "AvatarUseCustomCornerSize", (BYTE) 0 }, - { &opts.draw_avatar_custom_corner_size, CONTROL_SPIN, IDC_AVATAR_CUSTOM_CORNER_SIZE, "AvatarCustomCornerSize", (WORD) 4, IDC_AVATAR_CUSTOM_CORNER_SIZE_SPIN, (WORD) 1, (WORD) 255 }, - { &opts.use_avatar_space_to_draw_text, CONTROL_CHECKBOX, IDC_AVATAR_USE_FREE_SPACE, "AvatarUseFreeSpaceToDrawText", (BYTE) 1 }, - { &opts.resize_frame, CONTROL_CHECKBOX, IDC_RESIZE_FRAME, "ResizeFrame", (BYTE) 0 }, - { &opts.borders[RIGHT], CONTROL_SPIN, IDC_BORDER_RIGHT, "BorderRight", (WORD) 8, IDC_BORDER_RIGHT_SPIN, (WORD) 0, (WORD) 255 }, - { &opts.borders[LEFT], CONTROL_SPIN, IDC_BORDER_LEFT, "BorderLeft", (WORD) 8, IDC_BORDER_LEFT_SPIN, (WORD) 0, (WORD) 255 }, - { &opts.borders[TOP], CONTROL_SPIN, IDC_BORDER_TOP, "BorderTop", (WORD) 8, IDC_BORDER_TOP_SPIN, (WORD) 0, (WORD) 255 }, - { &opts.borders[BOTTOM], CONTROL_SPIN, IDC_BORDER_BOTTOM, "BorderBottom", (WORD) 8, IDC_BORDER_BOTTOM_SPIN, (WORD) 0, (WORD) 255 }, - { &opts.bkg_color, CONTROL_COLOR, IDC_AVATAR_BKG_COLOR, "BackgroundColor", (DWORD) GetSysColor(COLOR_BTNFACE) } + { &opts.cycle_through_protocols, CONTROL_CHECKBOX, IDC_CYCLE_THROUGH_PROTOS, "CicleThroughtProtocols", (BYTE) 1 }, + { &opts.seconds_to_show_protocol, CONTROL_SPIN, IDC_CYCLE_TIME, "CicleTime", (WORD) 5, IDC_CYCLE_TIME_SPIN, (WORD) 1, (WORD) 255 }, + { &opts.draw_show_protocol_name, CONTROL_CHECKBOX, IDC_SHOW_PROTO_NAME, "ShowProtocolName", (BYTE) 1 }, + { &opts.show_protocol_cycle_button, CONTROL_CHECKBOX, IDC_SHOW_CYCLE_PROTO_BUTTON, "ShowProtocolCycleButton", (BYTE) 0 }, + { &opts.draw_text_rtl, CONTROL_CHECKBOX, IDC_TEXT_RTL, "TextRTL", (BYTE) 0 }, + { &opts.draw_text_align_right, CONTROL_CHECKBOX, IDC_TEXT_ALIGN_RIGHT, "TextAlignRight", (BYTE) 0 }, + { &opts.replace_smileys, CONTROL_CHECKBOX, IDC_REPLACE_SMILEYS, "ReplaceSmileys", (BYTE) 1 }, + { &opts.resize_smileys, CONTROL_CHECKBOX, IDC_RESIZE_SMILEYS, "ResizeSmileys", (BYTE) 0 }, + { &opts.use_contact_list_smileys, CONTROL_CHECKBOX, IDC_USE_CONTACT_LIST_SMILEYS, "UseContactListSmileys", (BYTE) 0 }, + { &opts.global_on_avatar, CONTROL_CHECKBOX, IDC_GLOBAL_ON_AVATAR, "GlobalOnAvatar", (BYTE) 0 }, + { &opts.global_on_nickname, CONTROL_CHECKBOX, IDC_GLOBAL_ON_NICKNAME, "GlobalOnNickname", (BYTE) 0 }, + { &opts.global_on_status, CONTROL_CHECKBOX, IDC_GLOBAL_ON_STATUS, "GlobalOnStatus", (BYTE) 0 }, + { &opts.global_on_status_message, CONTROL_CHECKBOX, IDC_GLOBAL_ON_STATUS_MESSAGE, "GlobalOnStatusMessage", (BYTE) 0 }, + { &opts.draw_avatar_allow_to_grow, CONTROL_CHECKBOX, IDC_AVATAR_ALLOW_TO_GROW, "AvatarAllowToGrow", (BYTE) 0 }, + { &opts.draw_avatar_custom_size, CONTROL_CHECKBOX, IDC_AVATAR_CUSTOM_SIZE_CHK, "AvatarCustomSize", (BYTE) 0 }, + { &opts.draw_avatar_custom_size_pixels, CONTROL_SPIN, IDC_AVATAR_CUSTOM_SIZE, "AvatarCustomSizePixels", (WORD) 30, IDC_AVATAR_CUSTOM_SIZE_SPIN, (WORD) 1, (WORD) 255 }, + { &opts.draw_avatar_border, CONTROL_CHECKBOX, IDC_AVATAR_DRAW_BORDER, "AvatarDrawBorders", (BYTE) 0 }, + { &opts.draw_avatar_border_color, CONTROL_COLOR, IDC_AVATAR_BORDER_COLOR, "AvatarBorderColor", (DWORD) RGB(0,0,0) }, + { &opts.draw_avatar_round_corner, CONTROL_CHECKBOX, IDC_AVATAR_ROUND_CORNERS, "AvatarRoundCorners", (BYTE) 1 }, + { &opts.draw_avatar_use_custom_corner_size, CONTROL_CHECKBOX, IDC_AVATAR_CUSTOM_CORNER_SIZE_CHECK, "AvatarUseCustomCornerSize", (BYTE) 0 }, + { &opts.draw_avatar_custom_corner_size, CONTROL_SPIN, IDC_AVATAR_CUSTOM_CORNER_SIZE, "AvatarCustomCornerSize", (WORD) 4, IDC_AVATAR_CUSTOM_CORNER_SIZE_SPIN, (WORD) 1, (WORD) 255 }, + { &opts.use_avatar_space_to_draw_text, CONTROL_CHECKBOX, IDC_AVATAR_USE_FREE_SPACE, "AvatarUseFreeSpaceToDrawText", (BYTE) 1 }, + { &opts.resize_frame, CONTROL_CHECKBOX, IDC_RESIZE_FRAME, "ResizeFrame", (BYTE) 0 }, + { &opts.borders[RIGHT], CONTROL_SPIN, IDC_BORDER_RIGHT, "BorderRight", (WORD) 8, IDC_BORDER_RIGHT_SPIN, (WORD) 0, (WORD) 255 }, + { &opts.borders[LEFT], CONTROL_SPIN, IDC_BORDER_LEFT, "BorderLeft", (WORD) 8, IDC_BORDER_LEFT_SPIN, (WORD) 0, (WORD) 255 }, + { &opts.borders[TOP], CONTROL_SPIN, IDC_BORDER_TOP, "BorderTop", (WORD) 8, IDC_BORDER_TOP_SPIN, (WORD) 0, (WORD) 255 }, + { &opts.borders[BOTTOM], CONTROL_SPIN, IDC_BORDER_BOTTOM, "BorderBottom", (WORD) 8, IDC_BORDER_BOTTOM_SPIN, (WORD) 0, (WORD) 255 }, + { &opts.bkg_color, CONTROL_COLOR, IDC_AVATAR_BKG_COLOR, "BackgroundColor", (DWORD) GetSysColor(COLOR_BTNFACE) } }; @@ -76,81 +76,62 @@ static INT_PTR CALLBACK DlgProcOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARA { BOOL ret = SaveOptsDlgProc(pageControls, SIZEOF(pageControls), MODULE_NAME, hwndDlg, msg, wParam, lParam); - switch (msg) - { - case WM_INITDIALOG: - { - if (!IsDlgButtonChecked(hwndDlg,IDC_AVATAR_DRAW_BORDER)) - { - EnableWindow(GetDlgItem(hwndDlg,IDC_AVATAR_BORDER_COLOR_L),FALSE); - EnableWindow(GetDlgItem(hwndDlg,IDC_AVATAR_BORDER_COLOR),FALSE); - } - if (!IsDlgButtonChecked(hwndDlg,IDC_AVATAR_ROUND_CORNERS)) - { - EnableWindow(GetDlgItem(hwndDlg,IDC_AVATAR_CUSTOM_CORNER_SIZE_CHECK),FALSE); - EnableWindow(GetDlgItem(hwndDlg,IDC_AVATAR_CUSTOM_CORNER_SIZE),FALSE); - EnableWindow(GetDlgItem(hwndDlg,IDC_AVATAR_CUSTOM_CORNER_SIZE_SPIN),FALSE); - } - if (!IsDlgButtonChecked(hwndDlg,IDC_SHOW_PROTO_NAME)) - { - EnableWindow(GetDlgItem(hwndDlg,IDC_SHOW_CYCLE_PROTO_BUTTON),FALSE); - } - if ( !ServiceExists(MS_SMILEYADD_BATCHPARSE)) - { - EnableWindow(GetDlgItem(hwndDlg,IDC_REPLACE_SMILEYS),FALSE); - EnableWindow(GetDlgItem(hwndDlg,IDC_USE_CONTACT_LIST_SMILEYS),FALSE); - EnableWindow(GetDlgItem(hwndDlg,IDC_RESIZE_SMILEYS),FALSE); - } - if ( !ServiceExists(MS_CLIST_FRAMES_SETFRAMEOPTIONS)) - { - EnableWindow(GetDlgItem(hwndDlg,IDC_RESIZE_FRAME),FALSE); - } + switch (msg) { + case WM_INITDIALOG: + if (!IsDlgButtonChecked(hwndDlg,IDC_AVATAR_DRAW_BORDER)) { + EnableWindow(GetDlgItem(hwndDlg,IDC_AVATAR_BORDER_COLOR_L),FALSE); + EnableWindow(GetDlgItem(hwndDlg,IDC_AVATAR_BORDER_COLOR),FALSE); + } - break; + if (!IsDlgButtonChecked(hwndDlg,IDC_AVATAR_ROUND_CORNERS)) { + EnableWindow(GetDlgItem(hwndDlg,IDC_AVATAR_CUSTOM_CORNER_SIZE_CHECK),FALSE); + EnableWindow(GetDlgItem(hwndDlg,IDC_AVATAR_CUSTOM_CORNER_SIZE),FALSE); + EnableWindow(GetDlgItem(hwndDlg,IDC_AVATAR_CUSTOM_CORNER_SIZE_SPIN),FALSE); } - case WM_COMMAND: - { - if (LOWORD(wParam)==IDC_AVATAR_DRAW_BORDER) - { - BOOL enabled = IsDlgButtonChecked(hwndDlg,IDC_AVATAR_DRAW_BORDER); - EnableWindow(GetDlgItem(hwndDlg,IDC_AVATAR_BORDER_COLOR_L),enabled); - EnableWindow(GetDlgItem(hwndDlg,IDC_AVATAR_BORDER_COLOR),enabled); - } - else if (LOWORD(wParam)==IDC_AVATAR_ROUND_CORNERS) - { - BOOL enabled = IsDlgButtonChecked(hwndDlg,IDC_AVATAR_ROUND_CORNERS); - EnableWindow(GetDlgItem(hwndDlg,IDC_AVATAR_CUSTOM_CORNER_SIZE_CHECK),enabled); - EnableWindow(GetDlgItem(hwndDlg,IDC_AVATAR_CUSTOM_CORNER_SIZE),enabled); - EnableWindow(GetDlgItem(hwndDlg,IDC_AVATAR_CUSTOM_CORNER_SIZE_SPIN),enabled); - } - else if (LOWORD(wParam)==IDC_SHOW_PROTO_NAME) - { - BOOL enabled = IsDlgButtonChecked(hwndDlg,IDC_SHOW_PROTO_NAME); - EnableWindow(GetDlgItem(hwndDlg,IDC_SHOW_CYCLE_PROTO_BUTTON),enabled); - } - break; + if (!IsDlgButtonChecked(hwndDlg,IDC_SHOW_PROTO_NAME)) + EnableWindow(GetDlgItem(hwndDlg,IDC_SHOW_CYCLE_PROTO_BUTTON),FALSE); + + if ( !ServiceExists(MS_SMILEYADD_BATCHPARSE)) { + EnableWindow(GetDlgItem(hwndDlg,IDC_REPLACE_SMILEYS),FALSE); + EnableWindow(GetDlgItem(hwndDlg,IDC_USE_CONTACT_LIST_SMILEYS),FALSE); + EnableWindow(GetDlgItem(hwndDlg,IDC_RESIZE_SMILEYS),FALSE); + } + + if ( !ServiceExists(MS_CLIST_FRAMES_SETFRAMEOPTIONS)) + EnableWindow(GetDlgItem(hwndDlg,IDC_RESIZE_FRAME),FALSE); + + break; + + case WM_COMMAND: + if (LOWORD(wParam)==IDC_AVATAR_DRAW_BORDER) { + BOOL enabled = IsDlgButtonChecked(hwndDlg,IDC_AVATAR_DRAW_BORDER); + EnableWindow(GetDlgItem(hwndDlg,IDC_AVATAR_BORDER_COLOR_L),enabled); + EnableWindow(GetDlgItem(hwndDlg,IDC_AVATAR_BORDER_COLOR),enabled); + } + else if (LOWORD(wParam)==IDC_AVATAR_ROUND_CORNERS) { + BOOL enabled = IsDlgButtonChecked(hwndDlg,IDC_AVATAR_ROUND_CORNERS); + EnableWindow(GetDlgItem(hwndDlg,IDC_AVATAR_CUSTOM_CORNER_SIZE_CHECK),enabled); + EnableWindow(GetDlgItem(hwndDlg,IDC_AVATAR_CUSTOM_CORNER_SIZE),enabled); + EnableWindow(GetDlgItem(hwndDlg,IDC_AVATAR_CUSTOM_CORNER_SIZE_SPIN),enabled); + } + else if (LOWORD(wParam)==IDC_SHOW_PROTO_NAME) { + BOOL enabled = IsDlgButtonChecked(hwndDlg,IDC_SHOW_PROTO_NAME); + EnableWindow(GetDlgItem(hwndDlg,IDC_SHOW_CYCLE_PROTO_BUTTON),enabled); } - case WM_NOTIFY: - { - switch (((LPNMHDR)lParam)->idFrom) - { - case 0: - { - switch (((LPNMHDR)lParam)->code) - { - case PSN_APPLY: - { - LoadOptions(); - - return TRUE; - } - } - break; - } + break; + + case WM_NOTIFY: + switch (((LPNMHDR)lParam)->idFrom) { + case 0: + switch (((LPNMHDR)lParam)->code) { + case PSN_APPLY: + LoadOptions(); + return TRUE; } break; } + break; } return ret; diff --git a/plugins/Utils/mir_options.cpp b/plugins/Utils/mir_options.cpp index ad3322e38a..8062c1180e 100644 --- a/plugins/Utils/mir_options.cpp +++ b/plugins/Utils/mir_options.cpp @@ -36,10 +36,8 @@ Boston, MA 02111-1307, USA. #include "mir_options.h" #include "mir_memory.h" - #define SIZEOF(_A_) ( sizeof(_A_) / sizeof(_A_[0])) - static TCHAR* MyDBGetContactSettingTString(HANDLE hContact, char* module, char* setting, TCHAR* out, size_t len, TCHAR *def) { DBVARIANT dbv = {0}; @@ -66,102 +64,82 @@ static TCHAR dbPath[MAX_PATH] = {0}; // database profile path (read at startup static int PathIsAbsolute(const TCHAR *path) { - if ( !path || !(lstrlen(path) > 2)) - return 0; - if ((path[1]==_T(':') && path[2]==_T('\\')) || (path[0]==_T('\\')&&path[1]==_T('\\'))) + if ( !path || !(lstrlen(path) > 2)) + return 0; + if ((path[1]==_T(':') && path[2]==_T('\\')) || (path[0]==_T('\\')&&path[1]==_T('\\'))) return 1; - return 0; + return 0; } static void PathToRelative(TCHAR *pOut, size_t outSize, const TCHAR *pSrc) { - if ( !PathIsAbsolute(pSrc)) - { + if ( !PathIsAbsolute(pSrc)) lstrcpyn(pOut, pSrc, (int)outSize); - } - else - { - if (dbPath[0] == _T('\0')) - { + else { + if (dbPath[0] == _T('\0')) { char tmp[1024]; - CallService(MS_DB_GETPROFILEPATH, SIZEOF(tmp), (LPARAM) tmp); + CallService(MS_DB_GETPROFILEPATH, SIZEOF(tmp), (LPARAM) tmp); mir_sntprintf(dbPath, SIZEOF(dbPath), _T(TCHAR_STR_PARAM) _T("\\"), tmp); } size_t len = lstrlen(dbPath); - if (_tcsnicmp(pSrc, dbPath, len)) - { - mir_sntprintf(pOut, outSize, _T("%s"), pSrc + len); - } - else - { - lstrcpyn(pOut, pSrc, (int)outSize); - } - } + if (_tcsnicmp(pSrc, dbPath, len)) + mir_sntprintf(pOut, outSize, _T("%s"), pSrc + len); + else + lstrcpyn(pOut, pSrc, (int)outSize); + } } static void PathToAbsolute(TCHAR *pOut, size_t outSize, const TCHAR *pSrc) { - if (PathIsAbsolute(pSrc) || !isalnum(pSrc[0])) - { - lstrcpyn(pOut, pSrc, (int)outSize); - } - else - { + if (PathIsAbsolute(pSrc) || !isalnum(pSrc[0])) + lstrcpyn(pOut, pSrc, (int)outSize); + else { if (dbPath[0] == _T('\0')) { char tmp[1024]; - CallService(MS_DB_GETPROFILEPATH, SIZEOF(tmp), (LPARAM) tmp); + CallService(MS_DB_GETPROFILEPATH, SIZEOF(tmp), (LPARAM) tmp); mir_sntprintf(dbPath, SIZEOF(dbPath), _T(TCHAR_STR_PARAM) _T("\\"), tmp); } - mir_sntprintf(pOut, outSize, _T("%s%s"), dbPath, pSrc); - } + mir_sntprintf(pOut, outSize, _T("%s%s"), dbPath, pSrc); + } } - static void LoadOpt(OptPageControl *ctrl, char *module) { if (ctrl->var == NULL) return; - switch(ctrl->type) - { - case CONTROL_CHECKBOX: - { - *((BYTE *) ctrl->var) = DBGetContactSettingByte(NULL, module, ctrl->setting, ctrl->dwDefValue); - break; - } - case CONTROL_SPIN: - { - *((WORD *) ctrl->var) = DBGetContactSettingWord(NULL, module, ctrl->setting, ctrl->dwDefValue); - break; - } - case CONTROL_COLOR: - { - *((COLORREF *) ctrl->var) = (COLORREF) DBGetContactSettingDword(NULL, module, ctrl->setting, ctrl->dwDefValue); - break; - } - case CONTROL_RADIO: - { - *((WORD *) ctrl->var) = DBGetContactSettingWord(NULL, module, ctrl->setting, ctrl->dwDefValue); - break; - } - case CONTROL_COMBO: - { - *((WORD *) ctrl->var) = DBGetContactSettingWord(NULL, module, ctrl->setting, ctrl->dwDefValue); - break; - } - case CONTROL_PROTOCOL_LIST: - { - break; - } - case CONTROL_TEXT: - { - MyDBGetContactSettingTString(NULL, module, ctrl->setting, ((TCHAR *) ctrl->var), min(ctrl->max <= 0 ? 1024 : ctrl->max, 1024), ctrl->tszDefValue == NULL ? NULL : TranslateTS(ctrl->tszDefValue)); - break; - } - case CONTROL_PASSWORD: + switch(ctrl->type) { + case CONTROL_CHECKBOX: + *((BYTE *) ctrl->var) = db_get_b(NULL, module, ctrl->setting, ctrl->dwDefValue); + break; + + case CONTROL_SPIN: + *((WORD *) ctrl->var) = DBGetContactSettingWord(NULL, module, ctrl->setting, ctrl->dwDefValue); + break; + + case CONTROL_COLOR: + *((COLORREF *) ctrl->var) = (COLORREF) DBGetContactSettingDword(NULL, module, ctrl->setting, ctrl->dwDefValue); + break; + + case CONTROL_RADIO: + *((WORD *) ctrl->var) = DBGetContactSettingWord(NULL, module, ctrl->setting, ctrl->dwDefValue); + break; + + case CONTROL_COMBO: + *((WORD *) ctrl->var) = DBGetContactSettingWord(NULL, module, ctrl->setting, ctrl->dwDefValue); + break; + + case CONTROL_PROTOCOL_LIST: + break; + + case CONTROL_TEXT: + MyDBGetContactSettingTString(NULL, module, ctrl->setting, ((TCHAR *) ctrl->var), min(ctrl->max <= 0 ? 1024 : ctrl->max, 1024), ctrl->tszDefValue == NULL ? NULL : TranslateTS(ctrl->tszDefValue)); + break; + + case CONTROL_PASSWORD: { char tmp[1024]; tmp[0]=0; @@ -181,140 +159,121 @@ static void LoadOpt(OptPageControl *ctrl, char *module) char *var = (char *) ctrl->var; int size = min(ctrl->max <= 0 ? 1024 : ctrl->max, 1024); lstrcpynA(var, tmp, size); - break; - } - case CONTROL_INT: - { - *((int *) ctrl->var) = (int) DBGetContactSettingDword(NULL, module, ctrl->setting, ctrl->dwDefValue); - break; } - case CONTROL_FILE: + break; + + case CONTROL_INT: + *((int *) ctrl->var) = (int) DBGetContactSettingDword(NULL, module, ctrl->setting, ctrl->dwDefValue); + break; + + case CONTROL_FILE: { TCHAR tmp[1024]; MyDBGetContactSettingTString(NULL, module, ctrl->setting, tmp, 1024, ctrl->tszDefValue == NULL ? NULL : ctrl->tszDefValue); PathToAbsolute(((TCHAR *) ctrl->var), min(ctrl->max <= 0 ? 1024 : ctrl->max, 1024), tmp); - break; - } - case CONTROL_COMBO_TEXT: - case CONTROL_COMBO_ITEMDATA: - { - MyDBGetContactSettingTString(NULL, module, ctrl->setting, ((TCHAR *) ctrl->var), min(ctrl->max <= 0 ? 1024 : ctrl->max, 1024), ctrl->tszDefValue == NULL ? NULL : TranslateTS(ctrl->tszDefValue)); - break; } + break; + + case CONTROL_COMBO_TEXT: + case CONTROL_COMBO_ITEMDATA: + MyDBGetContactSettingTString(NULL, module, ctrl->setting, ((TCHAR *) ctrl->var), min(ctrl->max <= 0 ? 1024 : ctrl->max, 1024), ctrl->tszDefValue == NULL ? NULL : TranslateTS(ctrl->tszDefValue)); + break; } } void LoadOpts(OptPageControl *controls, int controlsSize, char *module) { for (int i = 0 ; i < controlsSize ; i++) - { LoadOpt(&controls[i], module); - } } - - INT_PTR CALLBACK SaveOptsDlgProc(OptPageControl *controls, int controlsSize, char *module, HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { - switch (msg) - { - case WM_INITDIALOG: + switch (msg) { + case WM_INITDIALOG: + TranslateDialogDefault(hwndDlg); { - TranslateDialogDefault(hwndDlg); - - for (int i = 0 ; i < controlsSize ; i++) - { + for (int i = 0 ; i < controlsSize ; i++) { OptPageControl *ctrl = &controls[i]; if (GetDlgItem(hwndDlg, ctrl->nID) == NULL) continue; - switch(ctrl->type) - { - case CONTROL_CHECKBOX: - { - CheckDlgButton(hwndDlg, ctrl->nID, DBGetContactSettingByte(NULL, module, ctrl->setting, ctrl->dwDefValue) == 1 ? BST_CHECKED : BST_UNCHECKED); - break; - } - case CONTROL_SPIN: - { - SendDlgItemMessage(hwndDlg, ctrl->nIDSpin, UDM_SETBUDDY, (WPARAM)GetDlgItem(hwndDlg, ctrl->nID),0); - SendDlgItemMessage(hwndDlg, ctrl->nIDSpin, UDM_SETRANGE, 0, MAKELONG(ctrl->max, ctrl->min)); - SendDlgItemMessage(hwndDlg, ctrl->nIDSpin, UDM_SETPOS,0, MAKELONG(DBGetContactSettingWord(NULL, module, ctrl->setting, ctrl->dwDefValue), 0)); - break; - } - case CONTROL_COLOR: - { - SendDlgItemMessage(hwndDlg, ctrl->nID, CPM_SETCOLOUR, 0, (COLORREF) DBGetContactSettingDword(NULL, module, ctrl->setting, ctrl->dwDefValue)); - break; - } - case CONTROL_RADIO: - { - CheckDlgButton(hwndDlg, ctrl->nID, DBGetContactSettingWord(NULL, module, ctrl->setting, ctrl->dwDefValue) == ctrl->value ? BST_CHECKED : BST_UNCHECKED); - break; - } - case CONTROL_COMBO: - { - SendDlgItemMessage(hwndDlg, ctrl->nID, CB_SETCURSEL, DBGetContactSettingWord(NULL, module, ctrl->setting, ctrl->dwDefValue), 0); - break; - } - case CONTROL_PROTOCOL_LIST: + switch(ctrl->type) { + case CONTROL_CHECKBOX: + CheckDlgButton(hwndDlg, ctrl->nID, db_get_b(NULL, module, ctrl->setting, ctrl->dwDefValue) == 1 ? BST_CHECKED : BST_UNCHECKED); + break; + + case CONTROL_SPIN: + SendDlgItemMessage(hwndDlg, ctrl->nIDSpin, UDM_SETBUDDY, (WPARAM)GetDlgItem(hwndDlg, ctrl->nID),0); + SendDlgItemMessage(hwndDlg, ctrl->nIDSpin, UDM_SETRANGE, 0, MAKELONG(ctrl->max, ctrl->min)); + SendDlgItemMessage(hwndDlg, ctrl->nIDSpin, UDM_SETPOS,0, MAKELONG(DBGetContactSettingWord(NULL, module, ctrl->setting, ctrl->dwDefValue), 0)); + break; + + case CONTROL_COLOR: + SendDlgItemMessage(hwndDlg, ctrl->nID, CPM_SETCOLOUR, 0, (COLORREF) DBGetContactSettingDword(NULL, module, ctrl->setting, ctrl->dwDefValue)); + break; + + case CONTROL_RADIO: + CheckDlgButton(hwndDlg, ctrl->nID, DBGetContactSettingWord(NULL, module, ctrl->setting, ctrl->dwDefValue) == ctrl->value ? BST_CHECKED : BST_UNCHECKED); + break; + + case CONTROL_COMBO: + SendDlgItemMessage(hwndDlg, ctrl->nID, CB_SETCURSEL, DBGetContactSettingWord(NULL, module, ctrl->setting, ctrl->dwDefValue), 0); + break; + + case CONTROL_PROTOCOL_LIST: { // Fill list view HWND hwndProtocols = GetDlgItem(hwndDlg, ctrl->nID); LVCOLUMN lvc; LVITEM lvi; - + ListView_SetExtendedListViewStyle(hwndProtocols, LVS_EX_CHECKBOXES); - + ZeroMemory(&lvc, sizeof(lvc)); lvc.mask = LVCF_FMT; lvc.fmt = LVCFMT_IMAGE | LVCFMT_LEFT; ListView_InsertColumn(hwndProtocols, 0, &lvc); - + ZeroMemory(&lvi, sizeof(lvi)); lvi.mask = LVIF_TEXT | LVIF_PARAM; lvi.iSubItem = 0; lvi.iItem = 1000; - + PROTOACCOUNT **protos; int count; BOOL hasAccounts = ServiceExists(MS_PROTO_ENUMACCOUNTS); - if (hasAccounts) CallService(MS_PROTO_ENUMACCOUNTS, (WPARAM)&count, (LPARAM)&protos); else CallService(MS_PROTO_ENUMPROTOCOLS, (WPARAM)&count, (LPARAM)&protos); - - for (int i = 0; i < count; i++) - { + + for (int i = 0; i < count; i++) { if (protos[i]->type != PROTOTYPE_PROTOCOL) continue; if (protos[i]->szModuleName == NULL || protos[i]->szModuleName[0] == '\0') continue; - + if (ctrl->allowProtocol != NULL && !ctrl->allowProtocol(protos[i]->szModuleName)) continue; TCHAR *name; if (hasAccounts) - { name = mir_tstrdup(protos[i]->tszAccountName); - } - else - { + else { char szName[128]; CallProtoService(protos[i]->szModuleName, PS_GETNAME, sizeof(szName), (LPARAM)szName); name = mir_a2t(szName); } - + char *setting = (char *) mir_alloc(128 * sizeof(char)); mir_snprintf(setting, 128, ctrl->setting, protos[i]->szModuleName); - BOOL show = (BOOL)DBGetContactSettingByte(NULL, module, setting, ctrl->dwDefValue); - + BOOL show = (BOOL)db_get_b(NULL, module, setting, ctrl->dwDefValue); + lvi.lParam = (LPARAM)setting; lvi.pszText = TranslateTS(name); lvi.iItem = ListView_InsertItem(hwndProtocols, &lvi); @@ -322,26 +281,25 @@ INT_PTR CALLBACK SaveOptsDlgProc(OptPageControl *controls, int controlsSize, cha mir_free(name); } - + ListView_SetColumnWidth(hwndProtocols, 0, LVSCW_AUTOSIZE); ListView_Arrange(hwndProtocols, LVA_ALIGNLEFT | LVA_ALIGNTOP); - break; } - case CONTROL_TEXT: + break; + case CONTROL_TEXT: { TCHAR tmp[1024]; SetDlgItemText(hwndDlg, ctrl->nID, MyDBGetContactSettingTString(NULL, module, ctrl->setting, tmp, 1024, ctrl->tszDefValue == NULL ? NULL : TranslateTS(ctrl->tszDefValue))); SendDlgItemMessage(hwndDlg, ctrl->nID, EM_LIMITTEXT, min(ctrl->max <= 0 ? 1024 : ctrl->max, 1024), 0); - break; } - case CONTROL_PASSWORD: + break; + case CONTROL_PASSWORD: { char tmp[1024]; tmp[0]=0; DBVARIANT dbv = {0}; - if ( !DBGetContactSettingString(NULL, module, ctrl->setting, &dbv)) - { + if ( !DBGetContactSettingString(NULL, module, ctrl->setting, &dbv)) { lstrcpynA(tmp, dbv.pszVal, SIZEOF(tmp)); DBFreeVariant(&dbv); } @@ -353,16 +311,16 @@ INT_PTR CALLBACK SaveOptsDlgProc(OptPageControl *controls, int controlsSize, cha SetDlgItemTextA(hwndDlg, ctrl->nID, tmp); SendDlgItemMessage(hwndDlg, ctrl->nID, EM_LIMITTEXT, min(ctrl->max <= 0 ? 1024 : ctrl->max, 1024), 0); - break; } - case CONTROL_INT: + break; + case CONTROL_INT: { DWORD var = DBGetContactSettingDword(NULL, module, ctrl->setting, ctrl->dwDefValue); SetDlgItemInt(hwndDlg, ctrl->nID, var, ctrl->min <= 0); SendDlgItemMessage(hwndDlg, ctrl->nID, EM_LIMITTEXT, 9, 0); - break; } - case CONTROL_FILE: + break; + case CONTROL_FILE: { TCHAR tmp[1024]; MyDBGetContactSettingTString(NULL, module, ctrl->setting, tmp, 1024, ctrl->tszDefValue == NULL ? NULL : ctrl->tszDefValue); @@ -371,16 +329,16 @@ INT_PTR CALLBACK SaveOptsDlgProc(OptPageControl *controls, int controlsSize, cha SetDlgItemText(hwndDlg, ctrl->nID, abs); SendDlgItemMessage(hwndDlg, ctrl->nID, EM_LIMITTEXT, min(ctrl->max <= 0 ? 1024 : ctrl->max, 1024), 0); - break; } - case CONTROL_COMBO_TEXT: + break; + case CONTROL_COMBO_TEXT: { TCHAR tmp[1024]; MyDBGetContactSettingTString(NULL, module, ctrl->setting, tmp, 1024, ctrl->tszDefValue == NULL ? NULL : TranslateTS(ctrl->tszDefValue)); SendDlgItemMessage(hwndDlg, ctrl->nID, CB_SELECTSTRING, 0, (WPARAM) tmp); - break; } - case CONTROL_COMBO_ITEMDATA: + break; + case CONTROL_COMBO_ITEMDATA: { TCHAR tmp[1024]; MyDBGetContactSettingTString(NULL, module, ctrl->setting, tmp, 1024, ctrl->tszDefValue == NULL ? NULL : TranslateTS(ctrl->tszDefValue)); @@ -394,131 +352,115 @@ INT_PTR CALLBACK SaveOptsDlgProc(OptPageControl *controls, int controlsSize, cha } if (i < count) SendDlgItemMessage(hwndDlg, ctrl->nID, CB_SETCURSEL, i, 0); - break; } + break; } } break; } - case WM_COMMAND: + case WM_COMMAND: { - for (int i = 0 ; i < controlsSize ; i++) - { + for (int i = 0 ; i < controlsSize ; i++) { OptPageControl *ctrl = &controls[i]; - if (LOWORD(wParam) == ctrl->nID) - { - switch(ctrl->type) - { - case CONTROL_TEXT: - case CONTROL_SPIN: - case CONTROL_INT: - case CONTROL_PASSWORD: - { - // Don't make apply enabled during buddy set - if (HIWORD(wParam) != EN_CHANGE || (HWND)lParam != GetFocus()) - return 0; + if (LOWORD(wParam) == ctrl->nID) { + switch(ctrl->type) { + case CONTROL_TEXT: + case CONTROL_SPIN: + case CONTROL_INT: + case CONTROL_PASSWORD: + // Don't make apply enabled during buddy set + if (HIWORD(wParam) != EN_CHANGE || (HWND)lParam != GetFocus()) + return 0; - break; - } - case CONTROL_COMBO_ITEMDATA: - case CONTROL_COMBO_TEXT: - case CONTROL_COMBO: - { - if (HIWORD(wParam) != CBN_SELCHANGE || (HWND)lParam != GetFocus()) - return 0; + break; - break; - } + case CONTROL_COMBO_ITEMDATA: + case CONTROL_COMBO_TEXT: + case CONTROL_COMBO: + if (HIWORD(wParam) != CBN_SELCHANGE || (HWND)lParam != GetFocus()) + return 0; + break; } SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); } } - - break; } - case WM_NOTIFY: + break; + + case WM_NOTIFY: { LPNMHDR lpnmhdr = (LPNMHDR)lParam; - - if (lpnmhdr->idFrom == 0 && lpnmhdr->code == PSN_APPLY) - { - for (int i = 0 ; i < controlsSize ; i++) - { + if (lpnmhdr->idFrom == 0 && lpnmhdr->code == PSN_APPLY) { + for (int i = 0 ; i < controlsSize ; i++) { OptPageControl *ctrl = &controls[i]; if (GetDlgItem(hwndDlg, ctrl->nID) == NULL) continue; - switch(ctrl->type) - { - case CONTROL_CHECKBOX: - { - DBWriteContactSettingByte(NULL, module, ctrl->setting, (BYTE) IsDlgButtonChecked(hwndDlg, ctrl->nID)); - break; - } - case CONTROL_SPIN: - { - DBWriteContactSettingWord(NULL, module, ctrl->setting, (WORD) SendDlgItemMessage(hwndDlg, ctrl->nIDSpin, UDM_GETPOS, 0, 0)); - break; - } - case CONTROL_COLOR: - { - DBWriteContactSettingDword(NULL, module, ctrl->setting, (DWORD) SendDlgItemMessage(hwndDlg, ctrl->nID, CPM_GETCOLOUR, 0, 0)); - break; - } - case CONTROL_RADIO: - { - if (IsDlgButtonChecked(hwndDlg, ctrl->nID)) - DBWriteContactSettingWord(NULL, module, ctrl->setting, (BYTE) ctrl->value); - break; - } - case CONTROL_COMBO: - { - DBWriteContactSettingWord(NULL, module, ctrl->setting, (WORD) SendDlgItemMessage(hwndDlg, ctrl->nID, CB_GETCURSEL, 0, 0)); - break; - } - case CONTROL_PROTOCOL_LIST: + switch(ctrl->type) { + case CONTROL_CHECKBOX: + DBWriteContactSettingByte(NULL, module, ctrl->setting, (BYTE) IsDlgButtonChecked(hwndDlg, ctrl->nID)); + break; + + case CONTROL_SPIN: + DBWriteContactSettingWord(NULL, module, ctrl->setting, (WORD) SendDlgItemMessage(hwndDlg, ctrl->nIDSpin, UDM_GETPOS, 0, 0)); + break; + + case CONTROL_COLOR: + DBWriteContactSettingDword(NULL, module, ctrl->setting, (DWORD) SendDlgItemMessage(hwndDlg, ctrl->nID, CPM_GETCOLOUR, 0, 0)); + break; + + case CONTROL_RADIO: + if (IsDlgButtonChecked(hwndDlg, ctrl->nID)) + DBWriteContactSettingWord(NULL, module, ctrl->setting, (BYTE) ctrl->value); + break; + + case CONTROL_COMBO: + DBWriteContactSettingWord(NULL, module, ctrl->setting, (WORD) SendDlgItemMessage(hwndDlg, ctrl->nID, CB_GETCURSEL, 0, 0)); + break; + + case CONTROL_PROTOCOL_LIST: { LVITEM lvi = {0}; HWND hwndProtocols = GetDlgItem(hwndDlg, ctrl->nID); int i; - + lvi.mask = (UINT) LVIF_PARAM; - + for (i = 0; i < ListView_GetItemCount(hwndProtocols); i++) { lvi.iItem = i; ListView_GetItem(hwndProtocols, &lvi); - + char *setting = (char *)lvi.lParam; DBWriteContactSettingByte(NULL, module, setting, (BYTE)ListView_GetCheckState(hwndProtocols, i)); } - break; } - case CONTROL_TEXT: + break; + + case CONTROL_TEXT: { TCHAR tmp[1024]; GetDlgItemText(hwndDlg, ctrl->nID, tmp, SIZEOF(tmp)); DBWriteContactSettingTString(NULL, module, ctrl->setting, tmp); - break; } - case CONTROL_PASSWORD: + break; + + case CONTROL_PASSWORD: { char tmp[1024]; GetDlgItemTextA(hwndDlg, ctrl->nID, tmp, SIZEOF(tmp)); - if (ctrl->var != NULL) - { + if (ctrl->var != NULL) { char *var = (char *) ctrl->var; int size = min(ctrl->max <= 0 ? 1024 : ctrl->max, 1024); lstrcpynA(var, tmp, size); } - if (ctrl->checkboxID != 0 && !IsDlgButtonChecked(hwndDlg, ctrl->checkboxID)) - { - DBDeleteContactSetting(NULL, module, ctrl->setting); + if (ctrl->checkboxID != 0 && !IsDlgButtonChecked(hwndDlg, ctrl->checkboxID)) { + db_unset(NULL, module, ctrl->setting); continue; } @@ -528,7 +470,7 @@ INT_PTR CALLBACK SaveOptsDlgProc(OptPageControl *controls, int controlsSize, cha // Don't load from DB continue; } - case CONTROL_INT: + case CONTROL_INT: { BOOL trans; int val = GetDlgItemInt(hwndDlg, ctrl->nID, &trans, ctrl->min <= 0); @@ -539,48 +481,46 @@ INT_PTR CALLBACK SaveOptsDlgProc(OptPageControl *controls, int controlsSize, cha if (ctrl->min != 0) val = max(val, ctrl->min); DBWriteContactSettingDword(NULL, module, ctrl->setting, val); - break; } - case CONTROL_FILE: + break; + case CONTROL_FILE: { TCHAR tmp[1024]; GetDlgItemText(hwndDlg, ctrl->nID, tmp, 1024); TCHAR rel[1024]; PathToRelative(rel, 1024, tmp); DBWriteContactSettingTString(NULL, module, ctrl->setting, rel); - break; } - case CONTROL_COMBO_TEXT: + break; + case CONTROL_COMBO_TEXT: { TCHAR tmp[1024]; GetDlgItemText(hwndDlg, ctrl->nID, tmp, 1024); DBWriteContactSettingTString(NULL, module, ctrl->setting, tmp); - break; } - case CONTROL_COMBO_ITEMDATA: + break; + case CONTROL_COMBO_ITEMDATA: { int sel = SendDlgItemMessage(hwndDlg, ctrl->nID, CB_GETCURSEL, 0, 0); DBWriteContactSettingTString(NULL, module, ctrl->setting, (TCHAR *) SendDlgItemMessage(hwndDlg, ctrl->nID, CB_GETITEMDATA, (WPARAM) sel, 0)); - break; } + break; } LoadOpt(ctrl, module); } - + return TRUE; } else if (lpnmhdr->idFrom != 0 && lpnmhdr->code == LVN_ITEMCHANGED) { // Changed for protocols - for (int i = 0 ; i < controlsSize ; i++) - { + for (int i = 0 ; i < controlsSize ; i++) { OptPageControl *ctrl = &controls[i]; - if (ctrl->type == CONTROL_PROTOCOL_LIST && ctrl->nID == lpnmhdr->idFrom) - { + if (ctrl->type == CONTROL_PROTOCOL_LIST && ctrl->nID == lpnmhdr->idFrom) { NMLISTVIEW *nmlv = (NMLISTVIEW *)lParam; - + if (IsWindowVisible(GetDlgItem(hwndDlg, ctrl->nID)) && ((nmlv->uNewState ^ nmlv->uOldState) & LVIS_STATEIMAGEMASK)) SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); @@ -590,27 +530,24 @@ INT_PTR CALLBACK SaveOptsDlgProc(OptPageControl *controls, int controlsSize, cha } break; } - case WM_DESTROY: + case WM_DESTROY: { - for (int i = 0 ; i < controlsSize ; i++) - { + for (int i = 0 ; i < controlsSize ; i++) { OptPageControl *ctrl = &controls[i]; if (GetDlgItem(hwndDlg, ctrl->nID) == NULL) continue; - switch(ctrl->type) - { - case CONTROL_PROTOCOL_LIST: + switch(ctrl->type) { + case CONTROL_PROTOCOL_LIST: { LVITEM lvi = {0}; HWND hwndProtocols = GetDlgItem(hwndDlg, ctrl->nID); int i; - + lvi.mask = (UINT) LVIF_PARAM; - - for (i = 0; i < ListView_GetItemCount(hwndProtocols); i++) - { + + for (i = 0; i < ListView_GetItemCount(hwndProtocols); i++) { lvi.iItem = i; ListView_GetItem(hwndProtocols, &lvi); mir_free((char *) lvi.lParam); diff --git a/plugins/Utils/mir_smileys.cpp b/plugins/Utils/mir_smileys.cpp index 7313f093d8..d8dbf154db 100644 --- a/plugins/Utils/mir_smileys.cpp +++ b/plugins/Utils/mir_smileys.cpp @@ -33,8 +33,6 @@ Boston, MA 02111-1307, USA. #include #include - - // Prototypes #define TEXT_PIECE_TYPE_TEXT 0 @@ -56,17 +54,14 @@ typedef struct int smiley_height; }; }; -} TextPiece; - - +} + TextPiece; SortedList * ReplaceSmileys(const TCHAR *text, int text_size, const char *protocol, int *max_smiley_height); void DrawTextSmiley(HDC hdcMem, RECT free_rc, const TCHAR *szText, int len, SortedList *plText, UINT uTextFormat, int max_smiley_height); void DestroySmileyList( SortedList* p_list ); SIZE GetTextSize(HDC hdcMem, const TCHAR *szText, SortedList *plText, UINT uTextFormat, int max_smiley_height); - - // Functions int InitContactListSmileys() -- cgit v1.2.3