about summary refs log tree commit diff stats
path: root/src/command
diff options
context:
space:
mode:
Diffstat (limited to 'src/command')
-rw-r--r--src/command/cmd_defs.c22
-rw-r--r--src/command/cmd_funcs.c51
-rw-r--r--src/command/cmd_funcs.h1
3 files changed, 74 insertions, 0 deletions
diff --git a/src/command/cmd_defs.c b/src/command/cmd_defs.c
index e18b3bff..a9e45147 100644
--- a/src/command/cmd_defs.c
+++ b/src/command/cmd_defs.c
@@ -2414,6 +2414,28 @@ static struct cmd_t command_defs[] = {
               "/color own off")
     },
 
+    { "/stamp",
+      parse_args, 0, 2, NULL,
+      CMD_NOSUBFUNCS
+      CMD_MAINFUNC(cmd_stamp)
+      CMD_TAGS(
+              CMD_TAG_UI)
+      CMD_SYN("/stamp outgoing <string>",
+              "/stamp incoming <string>",
+              "/stamp unset outgoing|incoming")
+      CMD_DESC("Set chat window stamp. "
+               "The format of line in the chat window is: \"<timestamp> <encryption sign> <stamp> <message>\" "
+               "where <stamp> is \"me:\" for incoming messages or \"username@server/resource\" for outgoing messages. "
+               "This command allows to change <stamp> value.")
+      CMD_ARGS({ "outgoing", "Set outgoing stamp" },
+               { "incoming", "Set incoming stamp"},
+               { "unset outgoing|incoming", "Use the defaults"})
+      CMD_EXAMPLES(
+              "/stamp outgoing -->",
+              "/stamp incoming <--",
+              "/stamp unset incoming")
+    },
+
     { "/avatar",
       parse_args, 2, 2, NULL,
       CMD_NOSUBFUNCS
diff --git a/src/command/cmd_funcs.c b/src/command/cmd_funcs.c
index ebba224e..e76831fc 100644
--- a/src/command/cmd_funcs.c
+++ b/src/command/cmd_funcs.c
@@ -9054,6 +9054,57 @@ cmd_paste(ProfWin* window, const char* const command, gchar** args)
 }
 
 gboolean
+cmd_stamp(ProfWin* window, const char* const command, gchar** args)
+{
+    if (g_strv_length(args) == 0) {
+        char* def = prefs_get_string(PREF_OUTGOING_STAMP);
+        if (def) {
+            cons_show("The outgoing stamp is: %s", def);
+            free(def);
+        } else {
+            cons_show("The default outgoing stamp is used.");
+        }
+        def = prefs_get_string(PREF_INCOMING_STAMP);
+        if (def) {
+            cons_show("The incoming stamp is: %s", def);
+            free(def);
+        } else {
+            cons_show("The default incoming stamp is used.");
+        }
+        return TRUE;
+    }
+
+    if (g_strv_length(args) == 1) {
+        cons_bad_cmd_usage(command);
+        return TRUE;
+    }
+
+    if (g_strv_length(args) == 2) {
+        if (g_strcmp0(args[0], "outgoing") == 0) {
+            prefs_set_string(PREF_OUTGOING_STAMP, args[1]);
+            cons_show("Outgoing stamp set to: %s", args[1]);
+        } else if (g_strcmp0(args[0], "incoming") == 0) {
+            prefs_set_string(PREF_INCOMING_STAMP, args[1]);
+            cons_show("Incoming stamp set to: %s", args[1]);
+        } else if (g_strcmp0(args[0], "unset") == 0) {
+            if (g_strcmp0(args[1], "incoming") == 0) {
+                prefs_set_string(PREF_INCOMING_STAMP, NULL);
+                cons_show("Incoming stamp unset");
+            } else if (g_strcmp0(args[1], "outgoing") == 0) {
+                prefs_set_string(PREF_OUTGOING_STAMP, NULL);
+                cons_show("Outgoing stamp unset");
+            } else {
+                cons_bad_cmd_usage(command);
+            }
+        } else {
+            cons_bad_cmd_usage(command);
+        }
+    }
+
+    return TRUE;
+}
+
+gboolean
 cmd_color(ProfWin* window, const char* const command, gchar** args)
 {
     if (g_strcmp0(args[0], "on") == 0) {
diff --git a/src/command/cmd_funcs.h b/src/command/cmd_funcs.h
index f4cbe0bf..41074720 100644
--- a/src/command/cmd_funcs.h
+++ b/src/command/cmd_funcs.h
@@ -250,5 +250,6 @@ gboolean cmd_correct_editor(ProfWin* window, const char* const command, gchar**
 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);
+gboolean cmd_stamp(ProfWin* window, const char* const command, gchar** args);
 
 #endif