Exemplo n.º 1
0
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;
}
Exemplo n.º 2
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;
}
Exemplo n.º 3
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;
}