Ejemplo n.º 1
0
void Protocol::GetStatusMsg(int aStatus, TCHAR *msg, size_t msg_size)
{
	if (!CanGetStatusMsg())
		lcopystr(msg, _T(""), msg_size);
	else if (aStatus == status && ProtoServiceExists(name, PS_GETMYAWAYMSG)) {
		ptrT tmp((TCHAR *)CallProtoService(name, PS_GETMYAWAYMSG, 0, SGMA_TCHAR));
		lcopystr(msg, tmp == NULL ? _T("") : tmp, msg_size);
	}
	else if (ServiceExists(MS_AWAYMSG_GETSTATUSMSGT)) {
		ptrT tmp((TCHAR *)CallService(MS_AWAYMSG_GETSTATUSMSGT, (WPARAM)aStatus, (LPARAM)name));
		lcopystr(msg, tmp == NULL ? _T("") : tmp, msg_size);
	}
}
Ejemplo n.º 2
0
bool Protocol::CanSetStatusMsg(int aStatus)
{
	return CanGetStatusMsg(aStatus);
}
Ejemplo n.º 3
0
void Protocol::GetStatusMsg(int aStatus, char *msg, size_t msg_size)
{
	if (!CanGetStatusMsg())
	{
		lstrcpyn(msg, "", msg_size);
		return;
	}

	bool isCurrentStatus = (aStatus == GetStatus());

	if (isCurrentStatus && CanCall(PS_GETMYAWAYMSG))
	{
		char *tmp = (char *) Call(PS_GETMYAWAYMSG);
		lstrcpyn(msg, tmp == NULL ? "" : tmp, msg_size);
	}
	else if (isCurrentStatus && ServiceExists(MS_SA_ISSARUNNING) && CallService(MS_SA_ISSARUNNING, 0, 0)) 
	{
		char *tmp = (char *) CallService(MS_AWAYMSG_GETSTATUSMSG, (WPARAM) ID_STATUS_CURRENT, (LPARAM) name.c_str());

		if (tmp != NULL)
		{
			lstrcpyn(msg, tmp, msg_size);
			mir_free(tmp);
		}
		else lstrcpyn(msg, "", msg_size);
		
	}
	else if (ServiceExists(MS_NAS_GETSTATE))
	{
		NAS_PROTOINFO pi;

		ZeroMemory(&pi, sizeof(pi));
		pi.cbSize = sizeof(NAS_PROTOINFO);
		pi.szProto = (char *) name.c_str();
		pi.status = (isCurrentStatus ? 0 : aStatus);
		pi.szMsg = NULL;

		if (CallService(MS_NAS_GETSTATE, (WPARAM) &pi, 1) == 0)
		{
			if (pi.szMsg == NULL)
			{
				pi.szProto = NULL;

				if (CallService(MS_NAS_GETSTATE, (WPARAM) &pi, 1) == 0)
				{
					if (pi.szMsg != NULL)
					{
						lstrcpyn(msg, pi.szMsg, msg_size);
						mir_free(pi.szMsg);
					}
					else lstrcpyn(msg, "", msg_size);
				}
				else lstrcpyn(msg, "", msg_size);
			}
			else // if (pi.szMsg != NULL)
			{
				lstrcpyn(msg, pi.szMsg, msg_size);
				mir_free(pi.szMsg);
			}
		}
		else lstrcpyn(msg, "", msg_size);

		if (ServiceExists(MS_VARS_FORMATSTRING))
		{
			char *tmp = variables_parse(msg, NULL, NULL);
			lstrcpyn(msg, tmp, msg_size);
			variables_free(tmp);
		}
	}
	// TODO: Remove when removing old NAS services support
	else if (ServiceExists("NewAwaySystem/GetState"))
	{
		NAS_PROTOINFO pi, *pii;

		ZeroMemory(&pi, sizeof(pi));
		pi.cbSize = sizeof(NAS_PROTOINFO);
		pi.szProto = (char *) name.c_str();
		pi.status = (isCurrentStatus ? 0 : aStatus);
		pi.szMsg = NULL;

		pii = π

		if (CallService("NewAwaySystem/GetState", (WPARAM) &pii, 1) == 0)
		{
			if (pi.szMsg == NULL)
			{
				pi.szProto = NULL;

				if (CallService("NewAwaySystem/GetState", (WPARAM) &pii, 1) == 0)
				{
					if (pi.szMsg != NULL)
					{
						lstrcpyn(msg, pi.szMsg, msg_size);
						mir_free(pi.szMsg);
					}
					else lstrcpyn(msg, "", msg_size);
				}
				else lstrcpyn(msg, "", msg_size);
			}
			else // if (pi.szMsg != NULL)
			{
				lstrcpyn(msg, pi.szMsg, msg_size);
				mir_free(pi.szMsg);
			}
		}
		else lstrcpyn(msg, "", msg_size);

		if (ServiceExists(MS_VARS_FORMATSTRING))
		{
			char *tmp = variables_parse(msg, NULL, NULL);
			lstrcpyn(msg, tmp, msg_size);
			variables_free(tmp);
		}
	}
	else if (ServiceExists(MS_AWAYMSG_GETSTATUSMSG))
	{
		char *tmp = (char *) CallService(MS_AWAYMSG_GETSTATUSMSG, (WPARAM)aStatus, 0);

		if (tmp != NULL)
		{
			lstrcpyn(msg, tmp, msg_size);
			mir_free(tmp);
		}
		else lstrcpyn(msg, "", msg_size);
	}
}
Ejemplo n.º 4
0
bool Protocol::CanGetStatusMsg()
{
	return CanGetStatusMsg(status);
}
Ejemplo n.º 5
0
bool Protocol::CanGetStatusMsg()
{
	return CanGetStatusMsg(GetStatus());
}