summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Hazan <george.hazan@gmail.com>2012-07-20 08:18:28 +0000
committerGeorge Hazan <george.hazan@gmail.com>2012-07-20 08:18:28 +0000
commitc1c83bf5790a1adfeccd1e948e321ac3a7e3e54c (patch)
tree96238507bc618241b4598a3a1ab0df0286ebc43c
parent9984e12867718ad6b6c4973cf30e5b00d4005d14 (diff)
- 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
-rw-r--r--plugins/MyDetails/commons.h3
-rw-r--r--plugins/MyDetails/data.cpp54
-rw-r--r--plugins/MyDetails/data.h2
-rw-r--r--plugins/MyDetails/frame.cpp756
-rw-r--r--plugins/MyDetails/options.cpp173
-rw-r--r--plugins/Utils/mir_options.cpp447
-rw-r--r--plugins/Utils/mir_smileys.cpp9
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 <m_skin_eng.h>
// 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 <m_skin_eng.h>
#include <tchar.h>
-
-
// 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()