Add xep-0107: User Mood support

Implementation of XEP 0107 - User Mood
This commit is contained in:
DebXWoody
2021-10-16 08:43:55 +02:00
committed by Michael Vetter
parent 9a9122c148
commit 23e886ed5e
8 changed files with 240 additions and 1 deletions

View File

@@ -129,6 +129,7 @@ static char* _url_autocomplete(ProfWin* window, const char* const input, gboolea
static char* _executable_autocomplete(ProfWin* window, const char* const input, gboolean previous);
static char* _lastactivity_autocomplete(ProfWin* window, const char* const input, gboolean previous);
static char* _intype_autocomplete(ProfWin* window, const char* const input, gboolean previous);
static char* _mood_autocomplete(ProfWin* window, const char* const input, gboolean previous);
static char* _script_autocomplete_func(const char* const prefix, gboolean previous, void* context);
@@ -269,6 +270,8 @@ static Autocomplete avatar_ac;
static Autocomplete url_ac;
static Autocomplete executable_ac;
static Autocomplete intype_ac;
static Autocomplete mood_ac;
static Autocomplete mood_type_ac;
/*!
* \brief Initialization of auto completion for commands.
@@ -1057,6 +1060,90 @@ cmd_ac_init(void)
intype_ac = autocomplete_new();
autocomplete_add(intype_ac, "console");
autocomplete_add(intype_ac, "titlebar");
mood_ac = autocomplete_new();
autocomplete_add(mood_ac, "set");
mood_type_ac = autocomplete_new();
autocomplete_add(mood_type_ac, "afraid");
autocomplete_add(mood_type_ac, "amazed");
autocomplete_add(mood_type_ac, "angry");
autocomplete_add(mood_type_ac, "amorous");
autocomplete_add(mood_type_ac, "annoyed");
autocomplete_add(mood_type_ac, "anxious");
autocomplete_add(mood_type_ac, "aroused");
autocomplete_add(mood_type_ac, "ashamed");
autocomplete_add(mood_type_ac, "bored");
autocomplete_add(mood_type_ac, "brave");
autocomplete_add(mood_type_ac, "calm");
autocomplete_add(mood_type_ac, "cautious");
autocomplete_add(mood_type_ac, "cold");
autocomplete_add(mood_type_ac, "confident");
autocomplete_add(mood_type_ac, "confused");
autocomplete_add(mood_type_ac, "contemplative");
autocomplete_add(mood_type_ac, "contented");
autocomplete_add(mood_type_ac, "cranky");
autocomplete_add(mood_type_ac, "crazy");
autocomplete_add(mood_type_ac, "creative");
autocomplete_add(mood_type_ac, "curious");
autocomplete_add(mood_type_ac, "dejected");
autocomplete_add(mood_type_ac, "depressed");
autocomplete_add(mood_type_ac, "disappointed");
autocomplete_add(mood_type_ac, "disgusted");
autocomplete_add(mood_type_ac, "dismayed");
autocomplete_add(mood_type_ac, "distracted");
autocomplete_add(mood_type_ac, "embarrassed");
autocomplete_add(mood_type_ac, "envious");
autocomplete_add(mood_type_ac, "excited");
autocomplete_add(mood_type_ac, "flirtatious");
autocomplete_add(mood_type_ac, "frustrated");
autocomplete_add(mood_type_ac, "grumpy");
autocomplete_add(mood_type_ac, "guilty");
autocomplete_add(mood_type_ac, "happy");
autocomplete_add(mood_type_ac, "hopeful");
autocomplete_add(mood_type_ac, "hot");
autocomplete_add(mood_type_ac, "humbled");
autocomplete_add(mood_type_ac, "humiliated");
autocomplete_add(mood_type_ac, "hungry");
autocomplete_add(mood_type_ac, "hurt");
autocomplete_add(mood_type_ac, "impressed");
autocomplete_add(mood_type_ac, "in_awe");
autocomplete_add(mood_type_ac, "in_love");
autocomplete_add(mood_type_ac, "indignant");
autocomplete_add(mood_type_ac, "interested");
autocomplete_add(mood_type_ac, "intoxicated");
autocomplete_add(mood_type_ac, "invincible");
autocomplete_add(mood_type_ac, "jealous");
autocomplete_add(mood_type_ac, "lonely");
autocomplete_add(mood_type_ac, "lucky");
autocomplete_add(mood_type_ac, "mean");
autocomplete_add(mood_type_ac, "moody");
autocomplete_add(mood_type_ac, "nervous");
autocomplete_add(mood_type_ac, "neutral");
autocomplete_add(mood_type_ac, "offended");
autocomplete_add(mood_type_ac, "outraged");
autocomplete_add(mood_type_ac, "playful");
autocomplete_add(mood_type_ac, "proud");
autocomplete_add(mood_type_ac, "relaxed");
autocomplete_add(mood_type_ac, "relieved");
autocomplete_add(mood_type_ac, "remorseful");
autocomplete_add(mood_type_ac, "restless");
autocomplete_add(mood_type_ac, "sad");
autocomplete_add(mood_type_ac, "sarcastic");
autocomplete_add(mood_type_ac, "serious");
autocomplete_add(mood_type_ac, "shocked");
autocomplete_add(mood_type_ac, "shy");
autocomplete_add(mood_type_ac, "sick");
autocomplete_add(mood_type_ac, "sleepy");
autocomplete_add(mood_type_ac, "spontaneous");
autocomplete_add(mood_type_ac, "stressed");
autocomplete_add(mood_type_ac, "strong");
autocomplete_add(mood_type_ac, "surprised");
autocomplete_add(mood_type_ac, "thankful");
autocomplete_add(mood_type_ac, "thirsty");
autocomplete_add(mood_type_ac, "tired");
autocomplete_add(mood_type_ac, "undefined");
autocomplete_add(mood_type_ac, "weak");
autocomplete_add(mood_type_ac, "worried");
}
void
@@ -1372,6 +1459,7 @@ cmd_ac_reset(ProfWin* window)
autocomplete_reset(url_ac);
autocomplete_reset(executable_ac);
autocomplete_reset(intype_ac);
autocomplete_reset(mood_ac);
autocomplete_reset(script_ac);
if (script_show_ac) {
@@ -1801,6 +1889,7 @@ _cmd_ac_complete_params(ProfWin* window, const char* const input, gboolean previ
g_hash_table_insert(ac_funcs, "/executable", _executable_autocomplete);
g_hash_table_insert(ac_funcs, "/lastactivity", _lastactivity_autocomplete);
g_hash_table_insert(ac_funcs, "/intype", _intype_autocomplete);
g_hash_table_insert(ac_funcs, "/mood", _mood_autocomplete);
int len = strlen(input);
char parsed[len + 1];
@@ -4147,3 +4236,28 @@ _intype_autocomplete(ProfWin* window, const char* const input, gboolean previous
result = autocomplete_param_with_ac(input, "/intype", intype_ac, FALSE, previous);
return result;
}
static char*
_mood_autocomplete(ProfWin* window, const char* const input, gboolean previous)
{
char* result = NULL;
result = autocomplete_param_with_ac(input, "/mood", status_ac, TRUE, previous);
if (result) {
return result;
}
//jabber_conn_status_t conn_status = connection_get_status();
//if (conn_status == JABBER_CONNECTED) {
result = autocomplete_param_with_ac(input, "/mood set", mood_type_ac, FALSE, previous);
if (result) {
return result;
}
// result = autocomplete_param_with_func(input, "/mood get", roster_barejid_autocomplete, previous, NULL);
// if (result) {
// return result;
// }
//}
return result;
}

View File

@@ -2679,6 +2679,19 @@ static struct cmd_t command_defs[] = {
"/register someuser my.xmppserv.er port 5443 tls force")
},
{ "/mood",
parse_args, 2, 3, NULL,
CMD_NOSUBFUNCS
CMD_MAINFUNC(cmd_mood)
CMD_TAGS(
CMD_TAG_CHAT)
CMD_SYN(
"/mood set <mood> [\"Text\"]")
CMD_DESC(
"Set your mood")
CMD_NOARGS
CMD_NOEXAMPLES
},
// NEXT-COMMAND (search helper)
};

View File

@@ -9645,3 +9645,18 @@ cmd_register(ProfWin* window, const char* const command, gchar** args)
log_info("we are leaving the registration process");
return TRUE;
}
gboolean
cmd_mood(ProfWin* window, const char* const command, gchar** args)
{
if (g_strcmp0(args[0], "set") == 0) {
cons_show("Your mood: %s", args[1]);
if (args[2]) {
publish_user_mood(args[1], args[2]);
} else {
publish_user_mood(args[1], args[1]);
}
}
return TRUE;
}

View File

@@ -249,5 +249,6 @@ gboolean cmd_editor(ProfWin* window, const char* const command, gchar** args);
gboolean cmd_correct_editor(ProfWin* window, const char* const command, gchar** args);
gboolean cmd_silence(ProfWin* window, const char* const command, gchar** args);
gboolean cmd_register(ProfWin* window, const char* const command, gchar** args);
gboolean cmd_mood(ProfWin* window, const char* const command, gchar** args);
#endif