int Preview() { MCONTACT hContact = db_find_first(); if (GlobalNudge.useByProtocol) { for (int i = 0; i < arNudges.getCount(); i++) { CNudgeElement &p = arNudges[i]; if (p.enabled) { SkinPlaySound(p.NudgeSoundname); if (p.showPopup) Nudge_ShowPopup(&p, hContact, p.recText); if (p.openContactList) OpenContactList(); if (p.shakeClist) ShakeClist(0, 0); if (p.openMessageWindow) CallService(MS_MSG_SENDMESSAGET, hContact, NULL); if (p.shakeChat) ShakeChat(hContact, (LPARAM)time(NULL)); } } } else { if (DefaultNudge.enabled) { SkinPlaySound(DefaultNudge.NudgeSoundname); if (DefaultNudge.showPopup) Nudge_ShowPopup(&DefaultNudge, hContact, DefaultNudge.recText); if (DefaultNudge.openContactList) OpenContactList(); if (DefaultNudge.shakeClist) ShakeClist(0, 0); if (DefaultNudge.openMessageWindow) CallService(MS_MSG_SENDMESSAGET, hContact, NULL); if (DefaultNudge.shakeChat) ShakeChat(hContact, (LPARAM)time(NULL)); } } return 0; }
int NudgeReceived(WPARAM hContact, LPARAM lParam) { char *protoName = GetContactProto(hContact); DWORD currentTimestamp = time(NULL); DWORD nudgeSentTimestamp = lParam ? (DWORD)lParam : currentTimestamp; int diff = currentTimestamp - db_get_dw(hContact, "Nudge", "LastReceived", currentTimestamp - 30); int diff2 = nudgeSentTimestamp - db_get_dw(hContact, "Nudge", "LastReceived2", nudgeSentTimestamp - 30); if (diff >= GlobalNudge.recvTimeSec) db_set_dw(hContact, "Nudge", "LastReceived", currentTimestamp); if (diff2 >= GlobalNudge.recvTimeSec) db_set_dw(hContact, "Nudge", "LastReceived2", nudgeSentTimestamp); if (GlobalNudge.useByProtocol) { for (int i = 0; i < arNudges.getCount(); i++) { CNudgeElement &p = arNudges[i]; if (!mir_strcmp(protoName, p.ProtocolName)) { if (p.enabled) { if (p.useIgnoreSettings && CallService(MS_IGNORE_ISIGNORED, hContact, IGNOREEVENT_USERONLINE)) return 0; DWORD Status = CallProtoService(protoName, PS_GETSTATUS, 0, 0); if (((p.statusFlags & NUDGE_ACC_ST0) && (Status <= ID_STATUS_OFFLINE)) || ((p.statusFlags & NUDGE_ACC_ST1) && (Status == ID_STATUS_ONLINE)) || ((p.statusFlags & NUDGE_ACC_ST2) && (Status == ID_STATUS_AWAY)) || ((p.statusFlags & NUDGE_ACC_ST3) && (Status == ID_STATUS_DND)) || ((p.statusFlags & NUDGE_ACC_ST4) && (Status == ID_STATUS_NA)) || ((p.statusFlags & NUDGE_ACC_ST5) && (Status == ID_STATUS_OCCUPIED)) || ((p.statusFlags & NUDGE_ACC_ST6) && (Status == ID_STATUS_FREECHAT)) || ((p.statusFlags & NUDGE_ACC_ST7) && (Status == ID_STATUS_INVISIBLE)) || ((p.statusFlags & NUDGE_ACC_ST8) && (Status == ID_STATUS_ONTHEPHONE)) || ((p.statusFlags & NUDGE_ACC_ST9) && (Status == ID_STATUS_OUTTOLUNCH))) { if (diff >= GlobalNudge.recvTimeSec) { if (p.showPopup) Nudge_ShowPopup(&p, hContact, p.recText); if (p.openContactList) OpenContactList(); if (p.shakeClist) ShakeClist(hContact, lParam); if (p.openMessageWindow) CallService(MS_MSG_SENDMESSAGET, hContact, 0); if (p.shakeChat) ShakeChat(hContact, lParam); if (p.autoResend) mir_forkthread(AutoResendNudge, (void*)hContact); SkinPlaySound(p.NudgeSoundname); } } if (diff2 >= GlobalNudge.recvTimeSec) if (p.showStatus) Nudge_ShowStatus(&p, hContact, nudgeSentTimestamp); } break; } } } else { if (DefaultNudge.enabled) { if (DefaultNudge.useIgnoreSettings && CallService(MS_IGNORE_ISIGNORED, hContact, IGNOREEVENT_USERONLINE)) return 0; DWORD Status = CallService(MS_CLIST_GETSTATUSMODE, 0, 0); if (((DefaultNudge.statusFlags & NUDGE_ACC_ST0) && (Status <= ID_STATUS_OFFLINE)) || ((DefaultNudge.statusFlags & NUDGE_ACC_ST1) && (Status == ID_STATUS_ONLINE)) || ((DefaultNudge.statusFlags & NUDGE_ACC_ST2) && (Status == ID_STATUS_AWAY)) || ((DefaultNudge.statusFlags & NUDGE_ACC_ST3) && (Status == ID_STATUS_DND)) || ((DefaultNudge.statusFlags & NUDGE_ACC_ST4) && (Status == ID_STATUS_NA)) || ((DefaultNudge.statusFlags & NUDGE_ACC_ST5) && (Status == ID_STATUS_OCCUPIED)) || ((DefaultNudge.statusFlags & NUDGE_ACC_ST6) && (Status == ID_STATUS_FREECHAT)) || ((DefaultNudge.statusFlags & NUDGE_ACC_ST7) && (Status == ID_STATUS_INVISIBLE)) || ((DefaultNudge.statusFlags & NUDGE_ACC_ST8) && (Status == ID_STATUS_ONTHEPHONE)) || ((DefaultNudge.statusFlags & NUDGE_ACC_ST9) && (Status == ID_STATUS_OUTTOLUNCH))) { if (diff >= GlobalNudge.recvTimeSec) { if (DefaultNudge.showPopup) Nudge_ShowPopup(&DefaultNudge, hContact, DefaultNudge.recText); if (DefaultNudge.openContactList) OpenContactList(); if (DefaultNudge.shakeClist) ShakeClist(hContact, lParam); if (DefaultNudge.openMessageWindow) CallService(MS_MSG_SENDMESSAGET, hContact, 0); if (DefaultNudge.shakeChat) ShakeChat(hContact, lParam); if (DefaultNudge.autoResend) mir_forkthread(AutoResendNudge, (void*)hContact); SkinPlaySound(DefaultNudge.NudgeSoundname); } } if (diff2 >= GlobalNudge.recvTimeSec) if (DefaultNudge.showStatus) Nudge_ShowStatus(&DefaultNudge, hContact, nudgeSentTimestamp); } } return 0; }
INT_PTR CALLBACK DlgProcShakeOpt(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam) { switch(msg) { case WM_INITDIALOG: TCHAR szBuf[20]; TranslateDialogDefault(hwnd); mir_sntprintf(szBuf, 10, _T("%d"), shake.nMoveClist); SetDlgItemText(hwnd,IDC_LNUMBER_CLIST,szBuf); mir_sntprintf(szBuf, 10, _T("%d"), shake.nMoveChat); SetDlgItemText(hwnd,IDC_LNUMBER_CHAT,szBuf); mir_sntprintf(szBuf, 10, _T("%d"), shake.nScaleClist); SetDlgItemText(hwnd,IDC_LSCALE_CLIST,szBuf); mir_sntprintf(szBuf, 10, _T("%d"), shake.nScaleChat); SetDlgItemText(hwnd,IDC_LSCALE_CHAT,szBuf); SendDlgItemMessage(hwnd, IDC_SNUMBER_CLIST, TBM_SETRANGE, 0, (LPARAM)MAKELONG(1, 60)); SendDlgItemMessage(hwnd, IDC_SNUMBER_CHAT, TBM_SETRANGE, 0, (LPARAM)MAKELONG(1, 60)); SendDlgItemMessage(hwnd, IDC_SSCALE_CLIST, TBM_SETRANGE, 0, (LPARAM)MAKELONG(1, 40)); SendDlgItemMessage(hwnd, IDC_SSCALE_CHAT, TBM_SETRANGE, 0, (LPARAM)MAKELONG(1, 40)); SendDlgItemMessage(hwnd, IDC_SNUMBER_CLIST, TBM_SETPOS, TRUE, shake.nMoveClist); SendDlgItemMessage(hwnd, IDC_SNUMBER_CHAT, TBM_SETPOS, TRUE, shake.nMoveChat); SendDlgItemMessage(hwnd, IDC_SSCALE_CLIST, TBM_SETPOS, TRUE, shake.nScaleClist); SendDlgItemMessage(hwnd, IDC_SSCALE_CHAT, TBM_SETPOS, TRUE, shake.nScaleChat); break; case WM_COMMAND: { WORD wNotifyCode = HIWORD(wParam); switch(LOWORD(wParam)) { case IDC_PREVIEW: ShakeClist(0,0); //SendMessage(GetParent(hwnd),PSM_CHANGED,0,0); break; } break; } case WM_HSCROLL: if((HWND)lParam == GetDlgItem(hwnd, IDC_SNUMBER_CLIST) || (HWND)lParam == GetDlgItem(hwnd, IDC_SNUMBER_CHAT) || (HWND)lParam == GetDlgItem(hwnd, IDC_SSCALE_CLIST) || (HWND)lParam == GetDlgItem(hwnd, IDC_SSCALE_CHAT)) { TCHAR szBuf[20]; DWORD dwPos = SendMessage((HWND) lParam, TBM_GETPOS, 0, 0); mir_sntprintf(szBuf, sizeof(szBuf), _T("%d"), dwPos); if ((HWND)lParam == GetDlgItem(hwnd, IDC_SNUMBER_CLIST)) SetDlgItemText(hwnd,IDC_LNUMBER_CLIST,szBuf); if ((HWND)lParam == GetDlgItem(hwnd, IDC_SNUMBER_CHAT)) SetDlgItemText(hwnd,IDC_LNUMBER_CHAT,szBuf); if ((HWND)lParam == GetDlgItem(hwnd, IDC_SSCALE_CLIST)) SetDlgItemText(hwnd,IDC_LSCALE_CLIST,szBuf); if ((HWND)lParam == GetDlgItem(hwnd, IDC_SSCALE_CHAT)) SetDlgItemText(hwnd,IDC_LSCALE_CHAT,szBuf); SendMessage(GetParent(hwnd), PSM_CHANGED, 0, 0); } break; case WM_SHOWWINDOW: break; case WM_NOTIFY: switch(((LPNMHDR)lParam)->idFrom) { case 0: switch(((LPNMHDR)lParam)->code) { case PSN_APPLY: { shake.nMoveClist = (int) SendMessage(GetDlgItem(hwnd, IDC_SNUMBER_CLIST), TBM_GETPOS, 0, 0); shake.nMoveChat = (int) SendMessage(GetDlgItem(hwnd, IDC_SNUMBER_CHAT), TBM_GETPOS, 0, 0); shake.nScaleClist = (int) SendMessage(GetDlgItem(hwnd, IDC_SSCALE_CLIST), TBM_GETPOS, 0, 0); shake.nScaleChat = (int) SendMessage(GetDlgItem(hwnd, IDC_SSCALE_CHAT), TBM_GETPOS, 0, 0); shake.Save(); } } } break; } return FALSE; }