mirror of
https://github.com/profanity-im/profanity.git
synced 2024-09-08 19:34:14 -04:00
Add preference/commands for carbons message
This commit is contained in:
parent
e3feacddd6
commit
2a12a4d93b
@ -858,6 +858,16 @@ static struct cmd_t command_defs[] =
|
||||
"shared : Share logs between all instances, accepts 'on' or 'off', defaults to 'on'.",
|
||||
NULL } } },
|
||||
|
||||
{ "/carbons",
|
||||
cmd_carbons, parse_args, 1, 1, &cons_carbons_setting,
|
||||
{ "/carbons on|off", "Message carbons.",
|
||||
{ "/carbons on|off",
|
||||
"---------------",
|
||||
"Enable or disable message carbons.",
|
||||
"",
|
||||
"Example : /carbons on",
|
||||
NULL } } },
|
||||
|
||||
{ "/reconnect",
|
||||
cmd_reconnect, parse_args, 1, 1, &cons_reconnect_setting,
|
||||
{ "/reconnect seconds", "Set reconnect interval.",
|
||||
|
@ -3882,6 +3882,22 @@ cmd_history(gchar **args, struct cmd_help_t help)
|
||||
return result;
|
||||
}
|
||||
|
||||
gboolean
|
||||
cmd_carbons(gchar **args, struct cmd_help_t help)
|
||||
{
|
||||
gboolean result = _cmd_set_boolean_preference(args[0], help,
|
||||
"Carbons message", PREF_CARBONS);
|
||||
|
||||
// enable carbons
|
||||
if (strcmp(args[0], "on") == 0) {
|
||||
iq_enable_carbons();
|
||||
}
|
||||
else if (strcmp(args[0], "off") == 0){
|
||||
iq_disable_carbons();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
gboolean
|
||||
cmd_away(gchar **args, struct cmd_help_t help)
|
||||
{
|
||||
|
@ -85,6 +85,7 @@ gboolean cmd_grlog(gchar **args, struct cmd_help_t help);
|
||||
gboolean cmd_group(gchar **args, struct cmd_help_t help);
|
||||
gboolean cmd_help(gchar **args, struct cmd_help_t help);
|
||||
gboolean cmd_history(gchar **args, struct cmd_help_t help);
|
||||
gboolean cmd_carbons(gchar **args, struct cmd_help_t help);
|
||||
gboolean cmd_info(gchar **args, struct cmd_help_t help);
|
||||
gboolean cmd_intype(gchar **args, struct cmd_help_t help);
|
||||
gboolean cmd_invite(gchar **args, struct cmd_help_t help);
|
||||
|
@ -558,6 +558,7 @@ _get_group(preference_t pref)
|
||||
return PREF_GROUP_PRESENCE;
|
||||
case PREF_CONNECT_ACCOUNT:
|
||||
case PREF_DEFAULT_ACCOUNT:
|
||||
case PREF_CARBONS:
|
||||
return PREF_GROUP_CONNECTION;
|
||||
case PREF_OTR_WARN:
|
||||
case PREF_OTR_LOG:
|
||||
@ -593,6 +594,8 @@ _get_key(preference_t pref)
|
||||
return "intype";
|
||||
case PREF_HISTORY:
|
||||
return "history";
|
||||
case PREF_CARBONS:
|
||||
return "carbons";
|
||||
case PREF_MOUSE:
|
||||
return "mouse";
|
||||
case PREF_OCCUPANTS:
|
||||
@ -698,7 +701,7 @@ _get_default_boolean(preference_t pref)
|
||||
case PREF_OCCUPANTS:
|
||||
case PREF_MUC_PRIVILEGES:
|
||||
case PREF_PRESENCE:
|
||||
case PREF_WRAP:
|
||||
case PREF_WRAP:
|
||||
case PREF_INPBLOCK_DYNAMIC:
|
||||
return TRUE;
|
||||
default:
|
||||
|
@ -59,6 +59,7 @@ typedef enum {
|
||||
PREF_FLASH,
|
||||
PREF_INTYPE,
|
||||
PREF_HISTORY,
|
||||
PREF_CARBONS,
|
||||
PREF_MOUSE,
|
||||
PREF_OCCUPANTS,
|
||||
PREF_OCCUPANTS_SIZE,
|
||||
|
@ -1167,6 +1167,15 @@ cons_history_setting(void)
|
||||
cons_show("Chat history (/history) : OFF");
|
||||
}
|
||||
|
||||
void
|
||||
cons_carbons_setting(void)
|
||||
{
|
||||
if (prefs_get_boolean(PREF_CARBONS))
|
||||
cons_show("Message carbons (/carbons) : ON");
|
||||
else
|
||||
cons_show("Message carbons (/carbons) : OFF");
|
||||
}
|
||||
|
||||
void
|
||||
cons_show_chat_prefs(void)
|
||||
{
|
||||
|
@ -308,6 +308,7 @@ void cons_outtype_setting(void);
|
||||
void cons_intype_setting(void);
|
||||
void cons_gone_setting(void);
|
||||
void cons_history_setting(void);
|
||||
void cons_carbons_setting(void);
|
||||
void cons_log_setting(void);
|
||||
void cons_chlog_setting(void);
|
||||
void cons_grlog_setting(void);
|
||||
|
@ -463,10 +463,14 @@ _connection_handler(xmpp_conn_t * const conn,
|
||||
message_add_handlers();
|
||||
presence_add_handlers();
|
||||
iq_add_handlers();
|
||||
iq_enable_carbons();
|
||||
|
||||
roster_request();
|
||||
bookmark_request();
|
||||
|
||||
if (prefs_get_boolean(PREF_CARBONS)){
|
||||
iq_enable_carbons();
|
||||
}
|
||||
|
||||
jabber_conn.conn_status = JABBER_CONNECTED;
|
||||
|
||||
if (prefs_get_reconnect() != 0) {
|
||||
|
@ -162,6 +162,16 @@ iq_enable_carbons()
|
||||
xmpp_stanza_release(iq);
|
||||
}
|
||||
|
||||
void
|
||||
iq_disable_carbons()
|
||||
{
|
||||
xmpp_conn_t * const conn = connection_get_conn();
|
||||
xmpp_ctx_t * const ctx = connection_get_ctx();
|
||||
xmpp_stanza_t *iq = stanza_disable_carbons(ctx);
|
||||
xmpp_send(conn, iq);
|
||||
xmpp_stanza_release(iq);
|
||||
}
|
||||
|
||||
void
|
||||
iq_disco_info_request(gchar *jid)
|
||||
{
|
||||
|
@ -206,12 +206,32 @@ stanza_enable_carbons(xmpp_ctx_t *ctx){
|
||||
xmpp_stanza_set_name(iq, STANZA_NAME_IQ);
|
||||
xmpp_stanza_set_type(iq, STANZA_TYPE_SET);
|
||||
xmpp_stanza_set_id(iq, id);
|
||||
free(id);
|
||||
|
||||
xmpp_stanza_t *carbon_enable = xmpp_stanza_new(ctx);
|
||||
xmpp_stanza_set_name(carbon_enable, STANZA_NAME_ENABLE);
|
||||
xmpp_stanza_set_ns(carbon_enable, STANZA_NS_CARBONS);
|
||||
xmpp_stanza_t *carbons_enable = xmpp_stanza_new(ctx);
|
||||
xmpp_stanza_set_name(carbons_enable, STANZA_NAME_ENABLE);
|
||||
xmpp_stanza_set_ns(carbons_enable, STANZA_NS_CARBONS);
|
||||
|
||||
xmpp_stanza_add_child(iq, carbon_enable);
|
||||
xmpp_stanza_add_child(iq, carbons_enable);
|
||||
|
||||
return iq;
|
||||
}
|
||||
|
||||
xmpp_stanza_t *
|
||||
stanza_disable_carbons(xmpp_ctx_t *ctx){
|
||||
xmpp_stanza_t *iq = xmpp_stanza_new(ctx);
|
||||
char *id = create_unique_id(NULL);
|
||||
|
||||
xmpp_stanza_set_name(iq, STANZA_NAME_IQ);
|
||||
xmpp_stanza_set_type(iq, STANZA_TYPE_SET);
|
||||
xmpp_stanza_set_id(iq, id);
|
||||
free(id);
|
||||
|
||||
xmpp_stanza_t *carbons_disable = xmpp_stanza_new(ctx);
|
||||
xmpp_stanza_set_name(carbons_disable, STANZA_NAME_DISABLE);
|
||||
xmpp_stanza_set_ns(carbons_disable, STANZA_NS_CARBONS);
|
||||
|
||||
xmpp_stanza_add_child(iq, carbons_disable);
|
||||
|
||||
return iq;
|
||||
}
|
||||
|
@ -78,6 +78,7 @@
|
||||
#define STANZA_NAME_DESTROY "destroy"
|
||||
#define STANZA_NAME_ACTOR "actor"
|
||||
#define STANZA_NAME_ENABLE "enable"
|
||||
#define STANZA_NAME_DISABLE "disable"
|
||||
|
||||
// error conditions
|
||||
#define STANZA_NAME_BAD_REQUEST "bad-request"
|
||||
@ -183,6 +184,8 @@ xmpp_stanza_t* stanza_create_bookmarks_storage_request(xmpp_ctx_t *ctx);
|
||||
|
||||
xmpp_stanza_t * stanza_enable_carbons(xmpp_ctx_t *ctx);
|
||||
|
||||
xmpp_stanza_t * stanza_disable_carbons(xmpp_ctx_t *ctx);
|
||||
|
||||
xmpp_stanza_t* stanza_create_chat_state(xmpp_ctx_t *ctx,
|
||||
const char * const fulljid, const char * const state);
|
||||
|
||||
|
@ -173,6 +173,7 @@ gboolean presence_sub_request_exists(const char * const bare_jid);
|
||||
|
||||
// iq functions
|
||||
void iq_enable_carbons();
|
||||
void iq_disable_carbons();
|
||||
void iq_send_software_version(const char * const fulljid);
|
||||
void iq_room_list_request(gchar *conferencejid);
|
||||
void iq_disco_info_request(gchar *jid);
|
||||
|
Loading…
Reference in New Issue
Block a user