public void CommandPriority(CommandModel command)
{
if (command.DataArray.Length < 3) {
var builder = CreateMessageBuilder();
builder.AppendText(_("Priority for Available is: {0}"), Server.Priorities[PresenceStatus.Online]);
Session.AddMessageToFrontend(command, builder.ToMessage());
builder = CreateMessageBuilder();
builder.AppendText(_("Priority for Away is: {0}"), Server.Priorities[PresenceStatus.Away]);
Session.AddMessageToFrontend(command, builder.ToMessage());
return;
}
string subcmd = command.DataArray[1];
int prio;
if (!int.TryParse(command.DataArray[2], out prio) || prio < -128 || prio > 127) {
var builder = CreateMessageBuilder();
builder.AppendText(_("Invalid priority: {0} (valid priorities are between -128 and 127 inclusive)"), command.DataArray[2]);
Session.AddMessageToFrontend(command, builder.ToMessage());
return;
}
JabberClient.Priority = prio;
bool change_current_prio = false;
switch (subcmd) {
case "temp":
case "temporary":
change_current_prio = true;
// only set priority
break;
case "away":
Server.Priorities[PresenceStatus.Away] = prio;
change_current_prio = (JabberClient.Show == ShowType.away);
JabberClient.Priority = prio;
break;
case "online":
case "available":
Server.Priorities[PresenceStatus.Online] = prio;
change_current_prio = (JabberClient.Show == ShowType.NONE);
JabberClient.Priority = prio;
break;
default:
return;
}
if (change_current_prio) {
// set priority and keep all other presence info
JabberClient.SendMyPresence();
}
}