summaryrefslogtreecommitdiff
path: root/plugins/Ping/src/pingthread.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/Ping/src/pingthread.cpp')
-rw-r--r--plugins/Ping/src/pingthread.cpp635
1 files changed, 273 insertions, 362 deletions
diff --git a/plugins/Ping/src/pingthread.cpp b/plugins/Ping/src/pingthread.cpp
index c9b6e87421..ca291c835d 100644
--- a/plugins/Ping/src/pingthread.cpp
+++ b/plugins/Ping/src/pingthread.cpp
@@ -29,37 +29,41 @@ COLORREF bk_col = RGB(255, 255, 255);
static int transparentFocus = 1;
/////////////////
-bool get_thread_finished() {
+bool get_thread_finished()
+{
mir_cslock lck(thread_finished_cs);
bool retval = thread_finished;
return retval;
}
-void set_thread_finished(bool f) {
+void set_thread_finished(bool f)
+{
mir_cslock lck(thread_finished_cs);
thread_finished = f;
}
-bool get_list_changed() {
+bool get_list_changed()
+{
mir_cslock lck(list_changed_cs);
bool retval = list_changed;
return retval;
}
-void set_list_changed(bool f) {
+void set_list_changed(bool f)
+{
mir_cslock lck(list_changed_cs);
list_changed = f;
}
-void SetProtoStatus(TCHAR *pszLabel, char *pszProto, int if_status, int new_status) {
+void SetProtoStatus(TCHAR *pszLabel, char *pszProto, int if_status, int new_status)
+{
if (mir_strcmp(pszProto, Translate("<all>")) == 0) {
int num_protocols;
PROTOACCOUNT **pppDesc;
Proto_EnumAccounts(&num_protocols, &pppDesc);
- for (int i = 0; i < num_protocols; i++) {
+ for (int i = 0; i < num_protocols; i++)
SetProtoStatus(pszLabel, pppDesc[i]->szModuleName, if_status, new_status);
- }
}
else {
if (ProtoServiceExists(pszProto, PS_GETSTATUS)) {
@@ -78,8 +82,7 @@ void SetProtoStatus(TCHAR *pszLabel, char *pszProto, int if_status, int new_stat
void __cdecl sttCheckStatusThreadProc(void*)
{
clock_t start_t = clock(), end_t;
- while (!get_thread_finished())
- {
+ while (!get_thread_finished()) {
end_t = clock();
int wait = (int)((options.ping_period - ((end_t - start_t) / (double)CLOCKS_PER_SEC)) * 1000);
@@ -94,35 +97,35 @@ void __cdecl sttCheckStatusThreadProc(void*)
bool reply = false;
int count = 0;
- PINGADDRESS pa;
+ PINGADDRESS pa = { 0 };
HistPair history_entry;
-
- mir_cslock lck(data_list_cs);
- set_list_changed(false);
- size_t size = data_list.size();
-
- size_t index = 0;
- for (; index < size; index++)
+ size_t size;
{
mir_cslock lck(data_list_cs);
- size_t c = 0;
- for (pinglist_it i = data_list.begin(); i != data_list.end() && c <= index; ++i, c++)
+ set_list_changed(false);
+ size = data_list.size();
+ }
+
+ size_t index = 0;
+ for (; index < size; index++) {
{
- if (c == index)
- {
- // copy just what we need - i.e. not history, not command
- pa.get_status = i->get_status;
- pa.item_id = i->item_id;
- pa.miss_count = i->miss_count;
- pa.port = i->port;
- mir_tstrncpy(pa.pszLabel, i->pszLabel, _countof(pa.pszLabel));
- mir_tstrncpy(pa.pszName, i->pszName, _countof(pa.pszName));
- mir_strncpy(pa.pszProto, i->pszProto, _countof(pa.pszProto));
- pa.set_status = i->set_status;
- pa.status = i->status;
- break;
+ mir_cslock lck(data_list_cs);
+ size_t c = 0;
+ for (pinglist_it i = data_list.begin(); i != data_list.end() && c <= index; ++i, c++) {
+ if (c == index) {
+ // copy just what we need - i.e. not history, not command
+ pa.get_status = i->get_status;
+ pa.item_id = i->item_id;
+ pa.miss_count = i->miss_count;
+ pa.port = i->port;
+ mir_tstrncpy(pa.pszLabel, i->pszLabel, _countof(pa.pszLabel));
+ mir_tstrncpy(pa.pszName, i->pszName, _countof(pa.pszName));
+ mir_strncpy(pa.pszProto, i->pszProto, _countof(pa.pszProto));
+ pa.set_status = i->set_status;
+ pa.status = i->status;
+ break;
+ }
}
-
}
if (get_thread_finished()) break;
@@ -132,12 +135,9 @@ void __cdecl sttCheckStatusThreadProc(void*)
if (!options.no_test_icon) {
mir_cslock lck(data_list_cs);
for (pinglist_it i = data_list.begin(); i != data_list.end(); ++i)
- {
if (i->item_id == pa.item_id)
- {
i->status = PS_TESTING;
- }
- }
+
InvalidateRect(list_hwnd, 0, FALSE);
}
@@ -146,42 +146,40 @@ void __cdecl sttCheckStatusThreadProc(void*)
if (get_thread_finished()) break;
if (get_list_changed()) break;
- mir_cslock lck(data_list_cs);
- for (pinglist_it i = data_list.begin(); i != data_list.end(); ++i)
- {
- if (i->item_id == pa.item_id)
- {
- i->responding = pa.responding;
- i->round_trip_time = pa.round_trip_time;
- history_entry.first = i->round_trip_time;
- history_entry.second = time(0);
- history_map[i->item_id].push_back(history_entry);
- // maintain history (-1 represents no response)
- while (history_map[i->item_id].size() >= MAX_HISTORY)
- //history_map[i->item_id].pop_front();
- history_map[i->item_id].remove(history_map[i->item_id].begin().val());
-
- if (pa.responding)
- {
- if (pa.miss_count > 0)
- pa.miss_count = -1;
- else
- pa.miss_count--;
- pa.status = PS_RESPONDING;
- }
- else
- {
- if (pa.miss_count < 0)
- pa.miss_count = 1;
- else
- pa.miss_count++;
- pa.status = PS_NOTRESPONDING;
+ { mir_cslock lck(data_list_cs);
+
+ for (pinglist_it i = data_list.begin(); i != data_list.end(); ++i) {
+ if (i->item_id == pa.item_id) {
+ i->responding = pa.responding;
+ i->round_trip_time = pa.round_trip_time;
+ history_entry.first = i->round_trip_time;
+ history_entry.second = time(0);
+ history_map[i->item_id].push_back(history_entry);
+ // maintain history (-1 represents no response)
+ while (history_map[i->item_id].size() >= MAX_HISTORY)
+ //history_map[i->item_id].pop_front();
+ history_map[i->item_id].remove(history_map[i->item_id].begin().val());
+
+ if (pa.responding) {
+ if (pa.miss_count > 0)
+ pa.miss_count = -1;
+ else
+ pa.miss_count--;
+ pa.status = PS_RESPONDING;
+ }
+ else {
+ if (pa.miss_count < 0)
+ pa.miss_count = 1;
+ else
+ pa.miss_count++;
+ pa.status = PS_NOTRESPONDING;
+ }
+
+ i->miss_count = pa.miss_count;
+ i->status = pa.status;
+
+ break;
}
-
- i->miss_count = pa.miss_count;
- i->status = pa.status;
-
- break;
}
}
@@ -189,8 +187,7 @@ void __cdecl sttCheckStatusThreadProc(void*)
count++;
if (pa.miss_count == -1 - options.retries ||
- (((-pa.miss_count) % (options.retries + 1)) == 0 && !options.block_reps))
- {
+ (((-pa.miss_count) % (options.retries + 1)) == 0 && !options.block_reps)) {
reply = true;
if (options.show_popup2 && ServiceExists(MS_POPUP_SHOWMESSAGE)) {
ShowPopup(TranslateT("Ping Reply"), pa.pszLabel, 1);
@@ -204,10 +201,8 @@ void __cdecl sttCheckStatusThreadProc(void*)
SetProtoStatus(pa.pszLabel, pa.pszProto, pa.get_status, pa.set_status);
}
else {
-
if (pa.miss_count == 1 + options.retries ||
- ((pa.miss_count % (options.retries + 1)) == 0 && !options.block_reps))
- {
+ ((pa.miss_count % (options.retries + 1)) == 0 && !options.block_reps)) {
timeout = true;
if (options.show_popup)
ShowPopup(TranslateT("Ping Timeout"), pa.pszLabel, 0);
@@ -241,7 +236,8 @@ void start_ping_thread()
status_update_thread = mir_forkthread(sttCheckStatusThreadProc, 0);
}
-void stop_ping_thread() {
+void stop_ping_thread()
+{
set_thread_finished(true);
SetEvent(hWakeEvent);
//ICMP::get_instance()->stop();
@@ -251,14 +247,16 @@ void stop_ping_thread() {
status_update_thread = 0;
}
-bool FrameIsFloating() {
+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);
}
-int FillList(WPARAM, LPARAM) {
+int FillList(WPARAM, LPARAM)
+{
if (options.logging)
CallService(PLUG "/Log", (WPARAM)_T("ping address list reload"), 0);
@@ -267,20 +265,19 @@ int FillList(WPARAM, LPARAM) {
CallService(PLUG "/GetPingList", 0, (LPARAM)&pl);
SendMessage(list_hwnd, WM_SETREDRAW, FALSE, 0);
- mir_cslock lck(data_list_cs);
-
- data_list = pl;
- SendMessage(list_hwnd, LB_RESETCONTENT, 0, 0);
-
- int index = 0;
- for (pinglist_it j = data_list.begin(); j != data_list.end(); ++j, index++)
{
- SendMessage(list_hwnd, LB_INSERTSTRING, (WPARAM)-1, (LPARAM)&(*j));
- }
- set_list_changed(true);
+ mir_cslock lck(data_list_cs);
+ data_list = pl;
+ SendMessage(list_hwnd, LB_RESETCONTENT, 0, 0);
- list_size = data_list.size();
+ int index = 0;
+ for (pinglist_it j = data_list.begin(); j != data_list.end(); ++j, index++) {
+ SendMessage(list_hwnd, LB_INSERTSTRING, (WPARAM)-1, (LPARAM)&(*j));
+ }
+ set_list_changed(true);
+ list_size = data_list.size();
+ }
SendMessage(list_hwnd, WM_SETREDRAW, TRUE, 0);
InvalidateRect(list_hwnd, 0, FALSE);
@@ -295,8 +292,7 @@ int FillList(WPARAM, LPARAM) {
INT_PTR PingPlugShowWindow(WPARAM, LPARAM)
{
- if (hpwnd)
- {
+ if (hpwnd) {
if (frame_id != -1 && ServiceExists(MS_CLIST_FRAMES_SHFRAME))
CallService(MS_CLIST_FRAMES_SHFRAME, (WPARAM)frame_id, 0);
else
@@ -305,16 +301,11 @@ INT_PTR PingPlugShowWindow(WPARAM, LPARAM)
return 0;
}
-#define TIMER_ID 11042
-void CALLBACK TimerProc(
- HWND , // handle to window
- UINT, // WM_TIMER message
- UINT_PTR, // timer identifier
- DWORD // current system time
- )
+#define TIMER_ID 11042
+
+void CALLBACK TimerProc(HWND, UINT, UINT_PTR, DWORD)
{
- if (frame_id != -1 && ServiceExists(MS_CLIST_FRAMES_ADDFRAME))
- {
+ if (frame_id != -1 && ServiceExists(MS_CLIST_FRAMES_ADDFRAME)) {
TCHAR TBcapt[255];
if (total > 0)
mir_sntprintf(TBcapt, _countof(TBcapt), _T("Ping (%d/%d)"), upCount, total);
@@ -325,11 +316,6 @@ void CALLBACK TimerProc(
CallService(MS_CLIST_FRAMES_SETFRAMEOPTIONS, MAKEWPARAM(FO_TBTIPNAME | FO_TCHAR, frame_id), (LPARAM)TBcapt);
CallService(MS_CLIST_FRAMES_UPDATEFRAME, frame_id, FU_TBREDRAW);
}
- else {
- // if(options.attach_to_clist) {
- // AttachToClist(true);
- // }
- }
}
DWORD context_point;
@@ -340,13 +326,11 @@ LRESULT CALLBACK FrameWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPar
MEASUREITEMSTRUCT *mis;
LPDRAWITEMSTRUCT dis;
SIZE textSize;
- PINGADDRESS itemData;
RECT r;
LPARAM lp;
int sel;
- switch (msg)
- {
+ switch (msg) {
case WM_MEASUREITEM:
mis = (MEASUREITEMSTRUCT *)lParam;
@@ -360,25 +344,25 @@ LRESULT CALLBACK FrameWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPar
HBRUSH ttbrush = 0;
COLORREF tcol;
if (dis->itemID != -1) {
- mir_cslock lck(data_list_cs);
- itemData = *(PINGADDRESS *)dis->itemData;
-
+ PINGADDRESS itemData;
+ {
+ mir_cslock lck(data_list_cs);
+ itemData = *(PINGADDRESS *)dis->itemData;
+ }
SendMessage(list_hwnd, LB_SETITEMHEIGHT, 0, (LPARAM)options.row_height);
- //dis->rcItem.bottom = dis->rcItem.top + options.row_height;
LONG x, y;
if (context_point_valid) {
- RECT r;
GetWindowRect(list_hwnd, &r);
- x = LOWORD(context_point) - r.left,
- y = HIWORD(context_point) - r.top;
+ x = LOWORD(context_point) - r.left;
+ y = HIWORD(context_point) - r.top;
}
+ else x = y = 0;
GetClientRect(hwnd, &r);
if ((dis->itemState & ODS_SELECTED && dis->itemState & ODS_FOCUS)
- || (context_point_valid && (x >= dis->rcItem.left && x <= dis->rcItem.right) && (y >= dis->rcItem.top && y <= dis->rcItem.bottom)))
- {
+ || (context_point_valid && (x >= dis->rcItem.left && x <= dis->rcItem.right) && (y >= dis->rcItem.top && y <= dis->rcItem.bottom))) {
tcol = db_get_dw(NULL, "CLC", "SelBkColour", GetSysColor(COLOR_HIGHLIGHT));
SetBkColor(dis->hDC, tcol);
FillRect(dis->hDC, &dis->rcItem, (ttbrush = CreateSolidBrush(tcol)));
@@ -398,8 +382,6 @@ LRESULT CALLBACK FrameWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPar
SetBkMode(dis->hDC, TRANSPARENT);
HICON hIcon = (itemData.status != PS_DISABLED ? (itemData.status == PS_TESTING ? hIconTesting : (itemData.status == PS_RESPONDING ? hIconResponding : hIconNotResponding)) : hIconDisabled);
dis->rcItem.left += options.indent;
- //DrawIconEx(dis->hDC,dis->rcItem.left,(dis->rcItem.top + dis->rcItem.bottom - GetSystemMetrics(SM_CYSMICON))>>1,hIcon,GetSystemMetrics(SM_CXSMICON),GetSystemMetrics(SM_CYSMICON),0,NULL,DI_NORMAL);
- //DrawIconEx(dis->hDC,dis->rcItem.left,(dis->rcItem.top + dis->rcItem.bottom - GetSystemMetrics(SM_CYSMICON))>>1,hIcon,0, 0, 0, NULL, DI_NORMAL);
DrawIconEx(dis->hDC, dis->rcItem.left, dis->rcItem.top + ((options.row_height - 16) >> 1), hIcon, 0, 0, 0, NULL, DI_NORMAL);
GetTextExtentPoint32(dis->hDC, itemData.pszLabel, (int)mir_tstrlen(itemData.pszLabel), &textSize);
@@ -423,81 +405,72 @@ LRESULT CALLBACK FrameWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPar
if (ttbrush) DeleteObject(ttbrush);
return TRUE;
}
- //return DefWindowProc(hwnd, msg, wParam, lParam);
return TRUE;
case WM_CTLCOLORLISTBOX:
- {
- if (tbrush) DeleteObject(tbrush);
-
- return (BOOL)(tbrush = CreateSolidBrush(bk_col));
- }
+ if (tbrush)
+ DeleteObject(tbrush);
+ return (INT_PTR)(tbrush = CreateSolidBrush(bk_col));
case WM_ERASEBKGND:
- {
- RECT r;
GetClientRect(hwnd, &r);
- if (!tbrush) tbrush = CreateSolidBrush(bk_col);
+ if (!tbrush)
+ tbrush = CreateSolidBrush(bk_col);
FillRect((HDC)wParam, &r, tbrush);
- }
- return TRUE;
+ return TRUE;
case WM_CONTEXTMENU:
- {
- context_point = lParam;
- context_point_valid = true;
- InvalidateRect(list_hwnd, 0, FALSE);
- HMENU menu = LoadMenu(hInst, MAKEINTRESOURCE(IDR_MENU1)),
- submenu = GetSubMenu(menu, 0);
-
- POINT pt = { GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam) };
-
- RECT r;
- GetClientRect(list_hwnd, &r);
- ScreenToClient(list_hwnd, &pt);
-
- DWORD item = SendMessage(list_hwnd, LB_ITEMFROMPOINT, 0, MAKELPARAM(pt.x, pt.y));
- bool found = false;
- if (HIWORD(item) == 0) {
- int count = LOWORD(item);
- mir_cslock lck(data_list_cs);
- if (count >= 0 && count < (int)data_list.size()) {
- itemData = *(PINGADDRESS *)SendMessage(list_hwnd, LB_GETITEMDATA, count, 0);
- found = true;
+ {
+ context_point = lParam;
+ context_point_valid = true;
+ InvalidateRect(list_hwnd, 0, FALSE);
+ HMENU menu = LoadMenu(hInst, MAKEINTRESOURCE(IDR_MENU1)),
+ submenu = GetSubMenu(menu, 0);
+
+ POINT pt = { GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam) };
+
+ GetClientRect(list_hwnd, &r);
+ ScreenToClient(list_hwnd, &pt);
+
+ PINGADDRESS itemData;
+ DWORD item = SendMessage(list_hwnd, LB_ITEMFROMPOINT, 0, MAKELPARAM(pt.x, pt.y));
+ bool found = false;
+ if (HIWORD(item) == 0) {
+ int count = LOWORD(item);
+ mir_cslock lck(data_list_cs);
+ if (count >= 0 && count < (int)data_list.size()) {
+ itemData = *(PINGADDRESS *)SendMessage(list_hwnd, LB_GETITEMDATA, count, 0);
+
+ found = true;
+ EnableMenuItem(submenu, ID_MENU_GRAPH, MF_BYCOMMAND | MF_ENABLED);
+ EnableMenuItem(submenu, ID_MENU_EDIT, MF_BYCOMMAND | MF_ENABLED);
+ EnableMenuItem(submenu, ID_MENU_TOGGLE, MF_BYCOMMAND | MF_ENABLED);
+ if (itemData.status == PS_DISABLED)
+ ModifyMenu(submenu, ID_MENU_TOGGLE, MF_BYCOMMAND | MF_STRING, ID_MENU_TOGGLE, TranslateT("Enable"));
+ else
+ ModifyMenu(submenu, ID_MENU_TOGGLE, MF_BYCOMMAND | MF_STRING, ID_MENU_TOGGLE, TranslateT("Disable"));
+ }
}
- }
- if (found) {
- EnableMenuItem(submenu, ID_MENU_GRAPH, MF_BYCOMMAND | MF_ENABLED);
- EnableMenuItem(submenu, ID_MENU_EDIT, MF_BYCOMMAND | MF_ENABLED);
- EnableMenuItem(submenu, ID_MENU_TOGGLE, MF_BYCOMMAND | MF_ENABLED);
- if (itemData.status == PS_DISABLED) {
- ModifyMenu(submenu, ID_MENU_TOGGLE, MF_BYCOMMAND | MF_STRING, ID_MENU_TOGGLE, TranslateT("Enable"));
+ if (!found) {
+ EnableMenuItem(submenu, ID_MENU_GRAPH, MF_BYCOMMAND | MF_GRAYED);
+ EnableMenuItem(submenu, ID_MENU_EDIT, MF_BYCOMMAND | MF_GRAYED);
+ EnableMenuItem(submenu, ID_MENU_TOGGLE, MF_BYCOMMAND | MF_GRAYED);
}
- else {
- ModifyMenu(submenu, ID_MENU_TOGGLE, MF_BYCOMMAND | MF_STRING, ID_MENU_TOGGLE, TranslateT("Disable"));
- }
- }
- else {
- EnableMenuItem(submenu, ID_MENU_GRAPH, MF_BYCOMMAND | MF_GRAYED);
- EnableMenuItem(submenu, ID_MENU_EDIT, MF_BYCOMMAND | MF_GRAYED);
- EnableMenuItem(submenu, ID_MENU_TOGGLE, MF_BYCOMMAND | MF_GRAYED);
- }
- TranslateMenu(submenu);
+ TranslateMenu(submenu);
+
+ GetCursorPos(&pt);
+ BOOL ret = TrackPopupMenu(submenu, TPM_TOPALIGN | TPM_LEFTALIGN | TPM_RIGHTBUTTON | TPM_RETURNCMD, pt.x, pt.y, 0, hwnd, NULL);
+ DestroyMenu(menu);
+ if (ret)
+ SendMessage(hwnd, WM_COMMAND, ret, 0);
- //ClientToScreen(list_hwnd, &pt);
- GetCursorPos(&pt);
- BOOL ret = TrackPopupMenu(submenu, TPM_TOPALIGN | TPM_LEFTALIGN | TPM_RIGHTBUTTON | TPM_RETURNCMD, pt.x, pt.y, 0, hwnd, NULL);
- DestroyMenu(menu);
- if (ret) {
- SendMessage(hwnd, WM_COMMAND, ret, 0);
+ context_point_valid = false;
+ InvalidateRect(list_hwnd, 0, FALSE);
}
- context_point_valid = false;
- InvalidateRect(list_hwnd, 0, FALSE);
- }
- return TRUE;
+ return TRUE;
case WM_SYSCOLORCHANGE:
SendMessage(list_hwnd, msg, wParam, lParam);
@@ -509,18 +482,17 @@ LRESULT CALLBACK FrameWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPar
(WS_VISIBLE | WS_CHILD | LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_NOTIFY)
& ~WS_BORDER, 0, 0, 0, 0, hwnd, NULL, hInst, 0);
- if (db_get_b(NULL, "CList", "Transparent", 0))
- {
+ if (db_get_b(NULL, "CList", "Transparent", 0)) {
if (ServiceExists(MS_CLIST_FRAMES_ADDFRAME)) {
}
else {
-#ifdef WS_EX_LAYERED
+ #ifdef WS_EX_LAYERED
SetWindowLongPtr(hwnd, GWL_EXSTYLE, GetWindowLongPtr(hwnd, GWL_EXSTYLE) | WS_EX_LAYERED);
-#endif
-#ifdef LWA_ALPHA
+ #endif
+ #ifdef LWA_ALPHA
SetLayeredWindowAttributes(hwnd, RGB(0, 0, 0), (BYTE)db_get_b(NULL, "CList", "Alpha", SETTING_ALPHA_DEFAULT), LWA_ALPHA);
-#endif
+ #endif
}
}
@@ -541,9 +513,9 @@ LRESULT CALLBACK FrameWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPar
else {
if (db_get_b(NULL, "CList", "Transparent", SETTING_TRANSPARENT_DEFAULT)) {
KillTimer(hwnd, TM_AUTOALPHA);
-#ifdef LWA_ALPHA
+ #ifdef LWA_ALPHA
SetLayeredWindowAttributes(hwnd, RGB(0, 0, 0), (BYTE)db_get_b(NULL, "CList", "Alpha", SETTING_ALPHA_DEFAULT), LWA_ALPHA);
-#endif
+ #endif
transparentFocus = 1;
}
}
@@ -552,9 +524,9 @@ LRESULT CALLBACK FrameWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPar
case WM_SETCURSOR:
if (db_get_b(NULL, "CList", "Transparent", SETTING_TRANSPARENT_DEFAULT)) {
if (!transparentFocus && GetForegroundWindow() != hwnd) {
-#ifdef LWA_ALPHA
+ #ifdef LWA_ALPHA
SetLayeredWindowAttributes(hwnd, RGB(0, 0, 0), (BYTE)db_get_b(NULL, "CList", "Alpha", SETTING_ALPHA_DEFAULT), LWA_ALPHA);
-#endif
+ #endif
transparentFocus = 1;
SetTimer(hwnd, TM_AUTOALPHA, 250, NULL);
}
@@ -562,8 +534,7 @@ LRESULT CALLBACK FrameWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPar
return DefWindowProc(hwnd, msg, wParam, lParam);
case WM_TIMER:
- if ((int)wParam == TM_AUTOALPHA)
- {
+ if ((int)wParam == TM_AUTOALPHA) {
int inwnd;
if (GetForegroundWindow() == hwnd) {
@@ -578,13 +549,12 @@ LRESULT CALLBACK FrameWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPar
hwndPt = WindowFromPoint(pt);
inwnd = (hwndPt == hwnd || GetParent(hwndPt) == hwnd);
}
- if (inwnd != transparentFocus)
- { //change
+ if (inwnd != transparentFocus) { //change
transparentFocus = inwnd;
-#ifdef LWA_ALPHA
+ #ifdef LWA_ALPHA
if (transparentFocus) SetLayeredWindowAttributes(hwnd, RGB(0, 0, 0), (BYTE)db_get_b(NULL, "CList", "Alpha", SETTING_ALPHA_DEFAULT), LWA_ALPHA);
else SetLayeredWindowAttributes(hwnd, RGB(0, 0, 0), (BYTE)db_get_b(NULL, "CList", "AutoAlpha", SETTING_AUTOALPHA_DEFAULT), LWA_ALPHA);
-#endif
+ #endif
}
if (!transparentFocus) KillTimer(hwnd, TM_AUTOALPHA);
return TRUE;
@@ -592,135 +562,103 @@ LRESULT CALLBACK FrameWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPar
return FALSE;
case WM_SHOWWINDOW:
- {
- static int noRecurse = 0;
- if (lParam) break;
- if (noRecurse) break;
- if (!db_get_b(NULL, "CLUI", "FadeInOut", 0))
- break;
-#ifdef WS_EX_LAYERED
- if (GetWindowLongPtr(hwnd, GWL_EXSTYLE)&WS_EX_LAYERED) {
- DWORD thisTick, startTick;
- int sourceAlpha, destAlpha;
- if (wParam) {
- sourceAlpha = 0;
- destAlpha = (BYTE)db_get_b(NULL, "CList", "Alpha", SETTING_AUTOALPHA_DEFAULT);
-#ifdef LWA_ALPHA
- SetLayeredWindowAttributes(hwnd, RGB(0, 0, 0), 0, LWA_ALPHA);
-#endif
- noRecurse = 1;
- ShowWindow(hwnd, SW_SHOW);
- noRecurse = 0;
- }
- else {
- sourceAlpha = (BYTE)db_get_b(NULL, "CList", "Alpha", SETTING_AUTOALPHA_DEFAULT);
- destAlpha = 0;
- }
- for (startTick = GetTickCount();;) {
- thisTick = GetTickCount();
- if (thisTick >= startTick + 200) break;
-#ifdef LWA_ALPHA
- SetLayeredWindowAttributes(hwnd, RGB(0, 0, 0), (BYTE)(sourceAlpha + (destAlpha - sourceAlpha)*(int)(thisTick - startTick) / 200), LWA_ALPHA);
-#endif
+ {
+ static int noRecurse = 0;
+ if (lParam) break;
+ if (noRecurse) break;
+ if (!db_get_b(NULL, "CLUI", "FadeInOut", 0))
+ break;
+ #ifdef WS_EX_LAYERED
+ if (GetWindowLongPtr(hwnd, GWL_EXSTYLE)&WS_EX_LAYERED) {
+ DWORD thisTick, startTick;
+ int sourceAlpha, destAlpha;
+ if (wParam) {
+ sourceAlpha = 0;
+ destAlpha = (BYTE)db_get_b(NULL, "CList", "Alpha", SETTING_AUTOALPHA_DEFAULT);
+ #ifdef LWA_ALPHA
+ SetLayeredWindowAttributes(hwnd, RGB(0, 0, 0), 0, LWA_ALPHA);
+ #endif
+ noRecurse = 1;
+ ShowWindow(hwnd, SW_SHOW);
+ noRecurse = 0;
+ }
+ else {
+ sourceAlpha = (BYTE)db_get_b(NULL, "CList", "Alpha", SETTING_AUTOALPHA_DEFAULT);
+ destAlpha = 0;
+ }
+ for (startTick = GetTickCount();;) {
+ thisTick = GetTickCount();
+ if (thisTick >= startTick + 200) break;
+ #ifdef LWA_ALPHA
+ SetLayeredWindowAttributes(hwnd, RGB(0, 0, 0), (BYTE)(sourceAlpha + (destAlpha - sourceAlpha)*(int)(thisTick - startTick) / 200), LWA_ALPHA);
+ #endif
+ }
+ #ifdef LWA_ALPHA
+ SetLayeredWindowAttributes(hwnd, RGB(0, 0, 0), (BYTE)destAlpha, LWA_ALPHA);
+ #endif
}
-#ifdef LWA_ALPHA
- SetLayeredWindowAttributes(hwnd, RGB(0, 0, 0), (BYTE)destAlpha, LWA_ALPHA);
-#endif
+ else AnimateWindow(hwnd, 200, AW_BLEND | (wParam ? 0 : AW_HIDE));
+ #endif
}
- else {
- // if(wParam) SetForegroundWindow(hwnd);
- AnimateWindow(hwnd, 200, AW_BLEND | (wParam ? 0 : AW_HIDE));
- //SetWindowPos(label,0,0,0,0,0,SWP_NOZORDER|SWP_NOMOVE|SWP_NOSIZE|SWP_FRAMECHANGED);
- }
-#endif
- //int res = DefWindowProc(hwnd, msg, wParam, lParam);
- //return res;
- //break;
- //return FALSE; //break;
return DefWindowProc(hwnd, msg, wParam, lParam);
- }
-
- /*
- case WM_PAINT:
- {
- paintDC = BeginPaint(hwnd, &paintStruct); //
- //SelectObject(paintDC,TitleBarFont);
- //SetBkMode(paintDC,TRANSPARENT);
-
- //paintStruct.fErase=TRUE;
- //color=RGB(1,1,1);
- //brush=CreateSolidBrush(RGB(200,20,20));
-
- //GetClientRect(hwnd,&rect);
- //FillRect(paintDC,&rect,brush);
- //TextOut(paintDC,4,4,"cl1 Bottom window",sizeof("cl1 Bottom window")-1);
- //DeleteObject(brush);
- EndPaint(hwnd, &paintStruct); //
-
- };
- return TRUE;
- */
case WM_COMMAND:
- //CreateServiceFunction("PingPlug/DisableAll", PingPlugDisableAll);
- //CreateServiceFunction("PingPlug/EnableAll", PingPlugEnableAll);
switch (LOWORD(wParam)) {
case ID_MENU_GRAPH:
if (context_point_valid) {
- WORD x = LOWORD(context_point),
- y = HIWORD(context_point);
- RECT r;
+ WORD x = LOWORD(context_point), y = HIWORD(context_point);
GetWindowRect(list_hwnd, &r);
DWORD item = SendMessage(list_hwnd, LB_ITEMFROMPOINT, 0, MAKELPARAM(x - r.left, y - r.top));
if (HIWORD(item) == 0) {
int count = LOWORD(item);
bool found = false;
- mir_cslock lck(data_list_cs);
- if (count >= 0 && count < (int)data_list.size()) {
- itemData = *(PINGADDRESS *)SendMessage(list_hwnd, LB_GETITEMDATA, count, 0);
- found = true;
+ PINGADDRESS itemData;
+ {
+ mir_cslock lck(data_list_cs);
+ if (count >= 0 && count < (int)data_list.size()) {
+ itemData = *(PINGADDRESS *)SendMessage(list_hwnd, LB_GETITEMDATA, count, 0);
+ found = true;
+ }
}
if (found)
CallService(PLUG "/ShowGraph", (WPARAM)itemData.item_id, (LPARAM)itemData.pszLabel);
}
}
return TRUE;
+
case ID_MENU_TOGGLE:
if (context_point_valid) {
- WORD x = LOWORD(context_point),
- y = HIWORD(context_point);
- RECT r;
+ WORD x = LOWORD(context_point), y = HIWORD(context_point);
GetWindowRect(list_hwnd, &r);
DWORD item = SendMessage(list_hwnd, LB_ITEMFROMPOINT, 0, MAKELPARAM(x - r.left, y - r.top));
if (HIWORD(item) == 0) {
int count = LOWORD(item);
- bool found = false;
+
mir_cslock lck(data_list_cs);
if (count >= 0 && count < (int)data_list.size()) {
- itemData = *(PINGADDRESS *)SendMessage(list_hwnd, LB_GETITEMDATA, count, 0);
- found = true;
- }
- if (found)
+ PINGADDRESS itemData = *(PINGADDRESS *)SendMessage(list_hwnd, LB_GETITEMDATA, count, 0);
CallService(PLUG "/ToggleEnabled", (WPARAM)itemData.item_id, 0);
+ }
}
}
return TRUE;
+
case ID_MENU_EDIT:
if (context_point_valid) {
- WORD x = LOWORD(context_point),
- y = HIWORD(context_point);
- RECT r;
+ WORD x = LOWORD(context_point), y = HIWORD(context_point);
GetWindowRect(list_hwnd, &r);
DWORD item = SendMessage(list_hwnd, LB_ITEMFROMPOINT, 0, MAKELPARAM(x - r.left, y - r.top));
PINGADDRESS *temp = 0;
if (HIWORD(item) == 0) {
int count = LOWORD(item);
- mir_cslock lck(data_list_cs);
- if (count >= 0 && count < (int)data_list.size()) {
- temp = (PINGADDRESS *)SendMessage(list_hwnd, LB_GETITEMDATA, count, 0);
+ {
+ mir_cslock lck(data_list_cs);
+ if (count >= 0 && count < (int)data_list.size()) {
+ temp = (PINGADDRESS *)SendMessage(list_hwnd, LB_GETITEMDATA, count, 0);
+ }
}
if (temp) {
- itemData = *temp;
+ PINGADDRESS itemData = *temp;
if (Edit(hwnd, itemData)) {
mir_cslock lck(data_list_cs);
*temp = itemData;
@@ -730,42 +668,46 @@ LRESULT CALLBACK FrameWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPar
}
}
return TRUE;
+
case ID_MENU_DISABLEALLPINGS:
CallService(PLUG "/DisableAll", 0, 0);
return TRUE;
+
case ID_MENU_ENABLEALLPINGS:
CallService(PLUG "/EnableAll", 0, 0);
return TRUE;
+
case ID_MENU_OPTIONS:
- {
- OPENOPTIONSDIALOG oop = { 0 };
- oop.cbSize = sizeof(oop);
- oop.pszGroup = "Network";
- oop.pszPage = "Ping";
- oop.pszTab = "Settings";
- Options_Open(&oop);
- }
- return TRUE;
+ {
+ OPENOPTIONSDIALOG oop = { 0 };
+ oop.cbSize = sizeof(oop);
+ oop.pszGroup = "Network";
+ oop.pszPage = "Ping";
+ oop.pszTab = "Settings";
+ Options_Open(&oop);
+ }
+ return TRUE;
+
case ID_MENU_DESTINATIONS:
- {
- OPENOPTIONSDIALOG oop = { 0 };
- oop.cbSize = sizeof(oop);
- oop.pszGroup = "Network";
- oop.pszPage = "Ping";
- oop.pszTab = "Hosts";
- Options_Open(&oop);
- }
- return TRUE;
+ {
+ OPENOPTIONSDIALOG oop = { 0 };
+ oop.cbSize = sizeof(oop);
+ oop.pszGroup = "Network";
+ oop.pszPage = "Ping";
+ oop.pszTab = "Hosts";
+ Options_Open(&oop);
+ }
+ return TRUE;
}
+
if (HIWORD(wParam) == LBN_DBLCLK) {
sel = SendMessage(list_hwnd, LB_GETCURSEL, 0, 0);
if (sel != LB_ERR) {
lp = SendMessage(list_hwnd, LB_GETITEMDATA, sel, 0);
if (lp != LB_ERR) {
- PINGADDRESS *pItemData = (PINGADDRESS *)lp;
-
mir_cslock lck(data_list_cs);
+ PINGADDRESS *pItemData = (PINGADDRESS *)lp;
if (pItemData) {
DWORD item_id = pItemData->item_id;
@@ -778,7 +720,6 @@ LRESULT CALLBACK FrameWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPar
mir_sntprintf(buf, _T("%s - %s"), pItemData->pszLabel, (wake ? TranslateT("enabled") : TranslateT("double clicked")));
CallService(PLUG "/Log", (WPARAM)buf, 0);
}
-
}
}
}
@@ -789,26 +730,23 @@ LRESULT CALLBACK FrameWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPar
case WM_MOVE: // needed for docked frames in clist_mw (not needed in clist_modern)
if (FrameIsFloating())
break;
- case WM_SIZE:
- {
- //PostMessage(label, WM_SIZE, wParam, lParam);
+ case WM_SIZE:
GetClientRect(hwnd, &rect);
- //SetWindowPos(list_hwnd, 0, rect.left, rect.top, rect.right-rect.left, rect.bottom-rect.top, SWP_NOZORDER);
- //InvalidateRect(list_hwnd, &rect, FALSE);
- int winheight = rect.bottom - rect.top,
- itemheight = SendMessage(list_hwnd, LB_GETITEMHEIGHT, 0, 0),
- count = SendMessage(list_hwnd, LB_GETCOUNT, 0, 0),
-#ifdef min
- height = min(winheight - winheight % itemheight, itemheight * count);
-#else
- height = std::min(winheight - winheight % itemheight, itemheight * count);
-#endif
- SetWindowPos(list_hwnd, 0, rect.left, rect.top, rect.right - rect.left, height, SWP_NOZORDER);
- InvalidateRect(list_hwnd, 0, FALSE);
- }
- InvalidateRect(hwnd, 0, TRUE);
- return DefWindowProc(hwnd, msg, wParam, lParam);
+ {
+ int winheight = rect.bottom - rect.top,
+ itemheight = SendMessage(list_hwnd, LB_GETITEMHEIGHT, 0, 0),
+ count = SendMessage(list_hwnd, LB_GETCOUNT, 0, 0),
+ #ifdef min
+ height = min(winheight - winheight % itemheight, itemheight * count);
+ #else
+ height = std::min(winheight - winheight % itemheight, itemheight * count);
+ #endif
+ SetWindowPos(list_hwnd, 0, rect.left, rect.top, rect.right - rect.left, height, SWP_NOZORDER);
+ InvalidateRect(list_hwnd, 0, FALSE);
+ }
+ InvalidateRect(hwnd, 0, TRUE);
+ return DefWindowProc(hwnd, msg, wParam, lParam);
case WM_DESTROY:
if (!ServiceExists(MS_CLIST_FRAMES_ADDFRAME)) {
@@ -829,37 +767,7 @@ LRESULT CALLBACK FrameWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPar
return 0;
}
return DefWindowProc(hwnd, msg, wParam, lParam);
- /*
- case WM_POWERBROADCAST:
-
- if(options.logging) {
- std::ostringstream oss;
- switch(wParam) {
- case PBT_APMSUSPEND:
- CallService("PingPlug/Log", (WPARAM)"system suspend", 0);
- break;
- case PBT_APMRESUMESUSPEND:
- oss << "system resume";
- if(lParam == PBTF_APMRESUMEFROMFAILURE)
- oss << " [suspend failure!]";
- CallService("PingPlug/Log", (WPARAM)oss.str().c_str(), 0);
- break;
- case PBT_APMRESUMEAUTOMATIC:
- oss << "system resume (automatic)";
- if(lParam == PBTF_APMRESUMEFROMFAILURE)
- oss << " [suspend failure!]";
- CallService("PingPlug/Log", (WPARAM)oss.str().c_str(), 0);
- break;
- case PBT_APMRESUMECRITICAL:
- oss << "system resume (critical)";
- if(lParam == PBTF_APMRESUMEFROMFAILURE)
- oss << " [suspend failure!]";
- CallService("PingPlug/Log", (WPARAM)oss.str().c_str(), 0);
- break;
- }
- }
- break;
- */
+
default:
return DefWindowProc(hwnd, msg, wParam, lParam);
@@ -868,7 +776,8 @@ LRESULT CALLBACK FrameWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPar
return(TRUE);
};
-int ReloadFont(WPARAM, LPARAM) {
+int ReloadFont(WPARAM, LPARAM)
+{
if (hFont) DeleteObject(hFont);
LOGFONT log_font;
@@ -882,13 +791,15 @@ int ReloadFont(WPARAM, LPARAM) {
return 0;
}
-int RefreshWindow(WPARAM, LPARAM) {
+int RefreshWindow(WPARAM, LPARAM)
+{
InvalidateRect(list_hwnd, 0, TRUE);
InvalidateRect(hpwnd, 0, TRUE);
return 0;
}
-void UpdateFrame() {
+void UpdateFrame()
+{
if (IsWindowVisible(hwnd_clist) != IsWindowVisible(hpwnd))
ShowWindow(hpwnd, IsWindowVisible(hwnd_clist) ? SW_SHOW : SW_HIDE);
@@ -916,8 +827,7 @@ LRESULT APIENTRY ClistSubclassProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM l
if (uMsg == WM_NCCALCSIZE) { // possible window style change
if (GetWindowLongPtr(hwnd_clist, GWL_STYLE) != GetWindowLong(hpwnd, GWL_STYLE)
- || GetWindowLongPtr(hwnd_clist, GWL_STYLE) != GetWindowLongPtr(hpwnd, GWL_STYLE))
- {
+ || GetWindowLongPtr(hwnd_clist, GWL_STYLE) != GetWindowLongPtr(hpwnd, GWL_STYLE)) {
SetWindowLongPtr(hpwnd, GWL_STYLE, GetWindowLongPtr(hwnd_clist, GWL_STYLE));
SetWindowLongPtr(hpwnd, GWL_EXSTYLE, GetWindowLongPtr(hwnd_clist, GWL_EXSTYLE));
SetWindowPos(hpwnd, 0, 0, 0, 0, 0, SWP_FRAMECHANGED | SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE | SWP_NOSIZE);
@@ -1035,8 +945,9 @@ void InitList()
start_ping_thread();
}
-void DeinitList() {
+void DeinitList()
+{
DestroyWindow(hpwnd);
stop_ping_thread();
if (hFont) DeleteObject(hFont);
-} \ No newline at end of file
+}