mirror of
https://github.com/profanity-im/profanity.git
synced 2024-11-03 19:37:16 -05:00
The /priority command now sets per account/status settings
This commit is contained in:
parent
e6596735c4
commit
b397a8c53e
@ -205,6 +205,12 @@ accounts_get_account(const char * const name)
|
||||
account->login_presence = strdup(presence);
|
||||
}
|
||||
|
||||
account->priority_online = g_key_file_get_integer(accounts, name, "priority.online", NULL);
|
||||
account->priority_chat = g_key_file_get_integer(accounts, name, "priority.chat", NULL);
|
||||
account->priority_away = g_key_file_get_integer(accounts, name, "priority.away", NULL);
|
||||
account->priority_xa = g_key_file_get_integer(accounts, name, "priority.xa", NULL);
|
||||
account->priority_dnd = g_key_file_get_integer(accounts, name, "priority.dnd", NULL);
|
||||
|
||||
return account;
|
||||
}
|
||||
}
|
||||
@ -381,34 +387,48 @@ accounts_set_priority_dnd(const char * const account_name, const gint value)
|
||||
}
|
||||
}
|
||||
|
||||
gint
|
||||
prefs_get_priority_online(const char * const account_name)
|
||||
void
|
||||
accounts_set_priority_all(const char * const account_name, const gint value)
|
||||
{
|
||||
return g_key_file_get_integer(accounts, account_name, "priority.online", NULL);
|
||||
if (accounts_account_exists(account_name)) {
|
||||
accounts_set_priority_online(account_name, value);
|
||||
accounts_set_priority_chat(account_name, value);
|
||||
accounts_set_priority_away(account_name, value);
|
||||
accounts_set_priority_xa(account_name, value);
|
||||
accounts_set_priority_dnd(account_name, value);
|
||||
_save_accounts();
|
||||
}
|
||||
}
|
||||
|
||||
gint
|
||||
prefs_get_priority_chat(const char * const account_name)
|
||||
accounts_get_priority_for_presence_type(const char * const account_name,
|
||||
jabber_presence_t presence_type)
|
||||
{
|
||||
return g_key_file_get_integer(accounts, account_name, "priority.chat", NULL);
|
||||
}
|
||||
gint result;
|
||||
|
||||
gint
|
||||
prefs_get_priority_away(const char * const account_name)
|
||||
{
|
||||
return g_key_file_get_integer(accounts, account_name, "priority.away", NULL);
|
||||
}
|
||||
switch (presence_type)
|
||||
{
|
||||
case (PRESENCE_ONLINE):
|
||||
result = g_key_file_get_integer(accounts, account_name, "priority.online", NULL);
|
||||
break;
|
||||
case (PRESENCE_CHAT):
|
||||
result = g_key_file_get_integer(accounts, account_name, "priority.chat", NULL);
|
||||
break;
|
||||
case (PRESENCE_AWAY):
|
||||
result = g_key_file_get_integer(accounts, account_name, "priority.away", NULL);
|
||||
break;
|
||||
case (PRESENCE_XA):
|
||||
result = g_key_file_get_integer(accounts, account_name, "priority.xa", NULL);
|
||||
break;
|
||||
case (PRESENCE_DND):
|
||||
result = g_key_file_get_integer(accounts, account_name, "priority.dnd", NULL);
|
||||
break;
|
||||
default:
|
||||
result = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
gint
|
||||
prefs_get_priority_xa(const char * const account_name)
|
||||
{
|
||||
return g_key_file_get_integer(accounts, account_name, "priority.xa", NULL);
|
||||
}
|
||||
|
||||
gint
|
||||
prefs_get_priority_dnd(const char * const account_name)
|
||||
{
|
||||
return g_key_file_get_integer(accounts, account_name, "priority.dnd", NULL);
|
||||
return result;
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -68,10 +68,8 @@ void accounts_set_priority_chat(const char * const account_name, const gint valu
|
||||
void accounts_set_priority_away(const char * const account_name, const gint value);
|
||||
void accounts_set_priority_xa(const char * const account_name, const gint value);
|
||||
void accounts_set_priority_dnd(const char * const account_name, const gint value);
|
||||
gint prefs_get_priority_online(const char * const account_name);
|
||||
gint prefs_get_priority_chat(const char * const account_name);
|
||||
gint prefs_get_priority_away(const char * const account_name);
|
||||
gint prefs_get_priority_xa(const char * const account_name);
|
||||
gint prefs_get_priority_dnd(const char * const account_name);
|
||||
void accounts_set_priority_all(const char * const account_name, const gint value);
|
||||
gint accounts_get_priority_for_presence_type(const char * const account_name,
|
||||
jabber_presence_t presence_type);
|
||||
|
||||
#endif
|
||||
|
@ -558,10 +558,11 @@ static struct cmd_t setting_commands[] =
|
||||
|
||||
{ "/priority",
|
||||
_cmd_set_priority, parse_args, 1, 1,
|
||||
{ "/priority value", "Set priority for connection.",
|
||||
{ "/priority value", "Set priority for the current account.",
|
||||
{ "/priority value",
|
||||
"---------------",
|
||||
"Set priority for the current session.",
|
||||
"Set priority for the current account, presence will be sent when calling this command.",
|
||||
"See the /account command for more specific priority settings per presence status.",
|
||||
"value : Number between -128 and 127. Default value is 0.",
|
||||
NULL } } },
|
||||
|
||||
@ -2189,11 +2190,19 @@ _cmd_set_autoaway(gchar **args, struct cmd_help_t help)
|
||||
static gboolean
|
||||
_cmd_set_priority(gchar **args, struct cmd_help_t help)
|
||||
{
|
||||
jabber_conn_status_t conn_status = jabber_get_connection_status();
|
||||
|
||||
if (conn_status != JABBER_CONNECTED) {
|
||||
cons_show("You are not currently connected.");
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
char *value = args[0];
|
||||
int intval;
|
||||
|
||||
if (_strtoi(value, &intval, -128, 127) == 0) {
|
||||
prefs_set_priority((int)intval);
|
||||
accounts_set_priority_all(jabber_get_account_name(), intval);
|
||||
//prefs_set_priority((int)intval);
|
||||
// update presence with new priority
|
||||
presence_update(jabber_get_presence_type(), jabber_get_presence_message(), 0);
|
||||
cons_show("Priority set to %d.", intval);
|
||||
|
@ -1259,23 +1259,28 @@ cons_show_account(ProfAccount *account)
|
||||
{
|
||||
cons_show("%s account details:", account->name);
|
||||
if (account->enabled) {
|
||||
cons_show("enabled : TRUE");
|
||||
cons_show ("enabled : TRUE");
|
||||
} else {
|
||||
cons_show("enabled : FALSE");
|
||||
cons_show ("enabled : FALSE");
|
||||
}
|
||||
cons_show("jid : %s", account->jid);
|
||||
cons_show ("jid : %s", account->jid);
|
||||
if (account->resource != NULL) {
|
||||
cons_show("resource : %s", account->resource);
|
||||
cons_show ("resource : %s", account->resource);
|
||||
}
|
||||
if (account->server != NULL) {
|
||||
cons_show("server : %s", account->server);
|
||||
cons_show ("server : %s", account->server);
|
||||
}
|
||||
if (account->last_presence != NULL) {
|
||||
cons_show("Last presence : %s", account->last_presence);
|
||||
cons_show ("Last presence : %s", account->last_presence);
|
||||
}
|
||||
if (account->login_presence != NULL) {
|
||||
cons_show("Login presence : %s", account->login_presence);
|
||||
cons_show ("Login presence : %s", account->login_presence);
|
||||
}
|
||||
cons_show ("Priority (online) : %d", account->priority_online);
|
||||
cons_show ("Priority (chat) : %d", account->priority_chat);
|
||||
cons_show ("Priority (away) : %d", account->priority_away);
|
||||
cons_show ("Priority (xa) : %d", account->priority_xa);
|
||||
cons_show ("Priority (dnd) : %d", account->priority_dnd);
|
||||
cons_show("");
|
||||
}
|
||||
|
||||
@ -1405,8 +1410,6 @@ cons_show_presence_prefs(void)
|
||||
cons_show("Presence preferences:");
|
||||
cons_show("");
|
||||
|
||||
cons_show("Priority (/priority) : %d", prefs_get_priority());
|
||||
|
||||
if (strcmp(prefs_get_autoaway_mode(), "off") == 0) {
|
||||
cons_show("Autoaway (/autoaway mode) : OFF");
|
||||
} else {
|
||||
|
@ -153,7 +153,8 @@ presence_update(jabber_presence_t presence_type, const char * const msg,
|
||||
if (jabber_get_connection_status() != JABBER_CONNECTED)
|
||||
return;
|
||||
|
||||
pri = prefs_get_priority();
|
||||
pri = accounts_get_priority_for_presence_type(jabber_get_account_name(),
|
||||
presence_type);
|
||||
if (pri < JABBER_PRIORITY_MIN || pri > JABBER_PRIORITY_MAX)
|
||||
pri = 0;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user