mirror of
https://github.com/profanity-im/profanity.git
synced 2024-12-04 14:46:46 -05:00
Merge branch 'master' into osx-functional
This commit is contained in:
commit
2a30e342d7
@ -950,7 +950,8 @@ static struct cmd_t command_defs[] =
|
|||||||
"/time main set <format>",
|
"/time main set <format>",
|
||||||
"/time main off",
|
"/time main off",
|
||||||
"/time statusbar set <format>",
|
"/time statusbar set <format>",
|
||||||
"/time statusbar off")
|
"/time statusbar off",
|
||||||
|
"/time lastactivity set <format>")
|
||||||
CMD_DESC(
|
CMD_DESC(
|
||||||
"Configure time display preferences. "
|
"Configure time display preferences. "
|
||||||
"Time formats are strings supported by g_date_time_format. "
|
"Time formats are strings supported by g_date_time_format. "
|
||||||
@ -961,11 +962,13 @@ static struct cmd_t command_defs[] =
|
|||||||
{ "main set <format>", "Change time format in main window." },
|
{ "main set <format>", "Change time format in main window." },
|
||||||
{ "main off", "Do not show time in main window." },
|
{ "main off", "Do not show time in main window." },
|
||||||
{ "statusbar set <format>", "Change time format in statusbar." },
|
{ "statusbar set <format>", "Change time format in statusbar." },
|
||||||
{ "statusbar off", "Change time format in status bar." })
|
{ "statusbar off", "Do not show time in status bar." },
|
||||||
|
{ "lastactivity set <format>", "Change time format for last activity." })
|
||||||
CMD_EXAMPLES(
|
CMD_EXAMPLES(
|
||||||
"/time main set \"%d-%m-%y %H:%M\"",
|
"/time main set \"%d-%m-%y %H:%M\"",
|
||||||
"/time main off",
|
"/time main off",
|
||||||
"/time statusbar set %H:%M")
|
"/time statusbar set %H:%M",
|
||||||
|
"/time lastactivity set \"%d-%m-%y %H:%M\"")
|
||||||
},
|
},
|
||||||
|
|
||||||
{ "/inpblock",
|
{ "/inpblock",
|
||||||
@ -2098,6 +2101,7 @@ cmd_init(void)
|
|||||||
time_ac = autocomplete_new();
|
time_ac = autocomplete_new();
|
||||||
autocomplete_add(time_ac, "main");
|
autocomplete_add(time_ac, "main");
|
||||||
autocomplete_add(time_ac, "statusbar");
|
autocomplete_add(time_ac, "statusbar");
|
||||||
|
autocomplete_add(time_ac, "lastactivity");
|
||||||
|
|
||||||
time_format_ac = autocomplete_new();
|
time_format_ac = autocomplete_new();
|
||||||
autocomplete_add(time_format_ac, "set");
|
autocomplete_add(time_format_ac, "set");
|
||||||
@ -3367,6 +3371,11 @@ _time_autocomplete(ProfWin *window, const char * const input)
|
|||||||
return found;
|
return found;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
found = autocomplete_param_with_ac(input, "/time lastactivity", time_format_ac, TRUE);
|
||||||
|
if (found) {
|
||||||
|
return found;
|
||||||
|
}
|
||||||
|
|
||||||
found = autocomplete_param_with_ac(input, "/time main", time_format_ac, TRUE);
|
found = autocomplete_param_with_ac(input, "/time main", time_format_ac, TRUE);
|
||||||
if (found) {
|
if (found) {
|
||||||
return found;
|
return found;
|
||||||
|
@ -3569,7 +3569,24 @@ cmd_wrap(ProfWin *window, const char * const command, gchar **args)
|
|||||||
gboolean
|
gboolean
|
||||||
cmd_time(ProfWin *window, const char * const command, gchar **args)
|
cmd_time(ProfWin *window, const char * const command, gchar **args)
|
||||||
{
|
{
|
||||||
if (g_strcmp0(args[0], "statusbar") == 0) {
|
if (g_strcmp0(args[0], "lastactivity") == 0) {
|
||||||
|
if (args[1] == NULL) {
|
||||||
|
cons_show("Current last activity time format is '%s'.", prefs_get_string(PREF_TIME_LASTACTIVITY));
|
||||||
|
return TRUE;
|
||||||
|
} else if (g_strcmp0(args[1], "set") == 0 && args[2] != NULL) {
|
||||||
|
prefs_set_string(PREF_TIME_LASTACTIVITY, args[2]);
|
||||||
|
cons_show("Last activity time format set to '%s'.", args[2]);
|
||||||
|
ui_redraw();
|
||||||
|
return TRUE;
|
||||||
|
} else if (g_strcmp0(args[1], "off") == 0) {
|
||||||
|
cons_show("Last activity time cannot be disabled.");
|
||||||
|
ui_redraw();
|
||||||
|
return TRUE;
|
||||||
|
} else {
|
||||||
|
cons_bad_cmd_usage(command);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
} else if (g_strcmp0(args[0], "statusbar") == 0) {
|
||||||
if (args[1] == NULL) {
|
if (args[1] == NULL) {
|
||||||
cons_show("Current status bar time format is '%s'.", prefs_get_string(PREF_TIME_STATUSBAR));
|
cons_show("Current status bar time format is '%s'.", prefs_get_string(PREF_TIME_STATUSBAR));
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
@ -602,6 +602,7 @@ _get_group(preference_t pref)
|
|||||||
case PREF_WINS_AUTO_TIDY:
|
case PREF_WINS_AUTO_TIDY:
|
||||||
case PREF_TIME:
|
case PREF_TIME:
|
||||||
case PREF_TIME_STATUSBAR:
|
case PREF_TIME_STATUSBAR:
|
||||||
|
case PREF_TIME_LASTACTIVITY:
|
||||||
case PREF_ROSTER:
|
case PREF_ROSTER:
|
||||||
case PREF_ROSTER_OFFLINE:
|
case PREF_ROSTER_OFFLINE:
|
||||||
case PREF_ROSTER_RESOURCE:
|
case PREF_ROSTER_RESOURCE:
|
||||||
@ -756,6 +757,8 @@ _get_key(preference_t pref)
|
|||||||
return "time";
|
return "time";
|
||||||
case PREF_TIME_STATUSBAR:
|
case PREF_TIME_STATUSBAR:
|
||||||
return "time.statusbar";
|
return "time.statusbar";
|
||||||
|
case PREF_TIME_LASTACTIVITY:
|
||||||
|
return "time.lastactivity";
|
||||||
case PREF_ROSTER:
|
case PREF_ROSTER:
|
||||||
return "roster";
|
return "roster";
|
||||||
case PREF_ROSTER_OFFLINE:
|
case PREF_ROSTER_OFFLINE:
|
||||||
@ -845,6 +848,8 @@ _get_default_string(preference_t pref)
|
|||||||
return "%H:%M:%S";
|
return "%H:%M:%S";
|
||||||
case PREF_TIME_STATUSBAR:
|
case PREF_TIME_STATUSBAR:
|
||||||
return "%H:%M";
|
return "%H:%M";
|
||||||
|
case PREF_TIME_LASTACTIVITY:
|
||||||
|
return "%d-%m-%y %H:%M:%S";
|
||||||
case PREF_PGP_LOG:
|
case PREF_PGP_LOG:
|
||||||
return "redact";
|
return "redact";
|
||||||
default:
|
default:
|
||||||
|
@ -72,6 +72,7 @@ typedef enum {
|
|||||||
PREF_WINS_AUTO_TIDY,
|
PREF_WINS_AUTO_TIDY,
|
||||||
PREF_TIME,
|
PREF_TIME,
|
||||||
PREF_TIME_STATUSBAR,
|
PREF_TIME_STATUSBAR,
|
||||||
|
PREF_TIME_LASTACTIVITY,
|
||||||
PREF_STATUSES,
|
PREF_STATUSES,
|
||||||
PREF_STATUSES_CONSOLE,
|
PREF_STATUSES_CONSOLE,
|
||||||
PREF_STATUSES_CHAT,
|
PREF_STATUSES_CHAT,
|
||||||
|
@ -434,6 +434,7 @@ _load_preferences(void)
|
|||||||
_set_boolean_preference("wins.autotidy", PREF_WINS_AUTO_TIDY);
|
_set_boolean_preference("wins.autotidy", PREF_WINS_AUTO_TIDY);
|
||||||
_set_string_preference("time", PREF_TIME);
|
_set_string_preference("time", PREF_TIME);
|
||||||
_set_string_preference("time.statusbar", PREF_TIME_STATUSBAR);
|
_set_string_preference("time.statusbar", PREF_TIME_STATUSBAR);
|
||||||
|
_set_string_preference("time.lastactivity", PREF_TIME_LASTACTIVITY);
|
||||||
|
|
||||||
_set_boolean_preference("resource.title", PREF_RESOURCE_TITLE);
|
_set_boolean_preference("resource.title", PREF_RESOURCE_TITLE);
|
||||||
_set_boolean_preference("resource.message", PREF_RESOURCE_MESSAGE);
|
_set_boolean_preference("resource.message", PREF_RESOURCE_MESSAGE);
|
||||||
|
@ -34,6 +34,7 @@
|
|||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <assert.h>
|
||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
@ -740,18 +741,63 @@ sv_ev_lastactivity_response(const char * const from, const int seconds, const ch
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// full jid or bare jid
|
GDateTime *now = g_date_time_new_now_local();
|
||||||
if (jidp->resourcepart || jidp->localpart) {
|
GDateTime *active = g_date_time_add_seconds(now, 0 - seconds);
|
||||||
|
|
||||||
|
gchar *date_fmt = NULL;
|
||||||
|
char *time_pref = prefs_get_string(PREF_TIME_LASTACTIVITY);
|
||||||
|
date_fmt = g_date_time_format(active, time_pref);
|
||||||
|
prefs_free_string(time_pref);
|
||||||
|
assert(date_fmt != NULL);
|
||||||
|
|
||||||
|
// full jid - last activity
|
||||||
|
if (jidp->resourcepart) {
|
||||||
|
if (seconds == 0) {
|
||||||
if (msg) {
|
if (msg) {
|
||||||
cons_show("%s last active %d seconds ago, status: %s", from, seconds, msg);
|
cons_show("%s currently active, status: %s", from, msg);
|
||||||
} else {
|
} else {
|
||||||
cons_show("%s last active %d seconds ago.", from, seconds);
|
cons_show("%s currently active", from);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (msg) {
|
||||||
|
cons_show("%s last active %s, status: %s", from, date_fmt, msg);
|
||||||
|
} else {
|
||||||
|
cons_show("%s last active %s", from, date_fmt);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// domain only
|
// barejid - last logged in
|
||||||
|
} else if (jidp->localpart) {
|
||||||
|
if (seconds == 0) {
|
||||||
|
if (msg) {
|
||||||
|
cons_show("%s currently logged in, status: %s", from, msg);
|
||||||
} else {
|
} else {
|
||||||
cons_show("%s uptime %d seconds", from, seconds);
|
cons_show("%s currently loggrd in", from);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (msg) {
|
||||||
|
cons_show("%s last logged in %s, status: %s", from, date_fmt, msg);
|
||||||
|
} else {
|
||||||
|
cons_show("%s last logged in %s", from, date_fmt);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// domain only - uptime
|
||||||
|
} else {
|
||||||
|
int left = seconds;
|
||||||
|
int days = seconds / 86400;
|
||||||
|
left = left - days * 86400;
|
||||||
|
int hours = left / 3600;
|
||||||
|
left = left - hours * 3600;
|
||||||
|
int minutes = left / 60;
|
||||||
|
left = left - minutes * 60;
|
||||||
|
int seconds = left;
|
||||||
|
|
||||||
|
cons_show("%s up since %s, uptime %d days, %d hrs, %d mins, %d secs", from, date_fmt, days, hours, minutes, seconds);
|
||||||
|
}
|
||||||
|
|
||||||
|
g_date_time_unref(now);
|
||||||
|
g_date_time_unref(active);
|
||||||
|
g_free(date_fmt);
|
||||||
jid_destroy(jidp);
|
jid_destroy(jidp);
|
||||||
}
|
}
|
||||||
|
@ -1010,6 +1010,10 @@ cons_time_setting(void)
|
|||||||
else
|
else
|
||||||
cons_show("Time statusbar (/time) : %s", pref_time_statusbar);
|
cons_show("Time statusbar (/time) : %s", pref_time_statusbar);
|
||||||
prefs_free_string(pref_time_statusbar);
|
prefs_free_string(pref_time_statusbar);
|
||||||
|
|
||||||
|
char *pref_time_lastactivity = prefs_get_string(PREF_TIME_LASTACTIVITY);
|
||||||
|
cons_show("Time last activity (/time) : %s", pref_time_lastactivity);
|
||||||
|
prefs_free_string(pref_time_lastactivity);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -852,22 +852,15 @@ win_show_status_string(ProfWin *window, const char * const from,
|
|||||||
win_vprint(window, '-', 0, NULL, NO_DATE | NO_EOL, presence_colour, "", " is %s", default_show);
|
win_vprint(window, '-', 0, NULL, NO_DATE | NO_EOL, presence_colour, "", " is %s", default_show);
|
||||||
|
|
||||||
if (last_activity) {
|
if (last_activity) {
|
||||||
GDateTime *now = g_date_time_new_now_local();
|
gchar *date_fmt = NULL;
|
||||||
GTimeSpan span = g_date_time_difference(now, last_activity);
|
char *time_pref = prefs_get_string(PREF_TIME_LASTACTIVITY);
|
||||||
g_date_time_unref(now);
|
date_fmt = g_date_time_format(last_activity, time_pref);
|
||||||
|
prefs_free_string(time_pref);
|
||||||
|
assert(date_fmt != NULL);
|
||||||
|
|
||||||
int hours = span / G_TIME_SPAN_HOUR;
|
win_vprint(window, '-', 0, NULL, NO_DATE | NO_EOL, presence_colour, "", ", last activity: %s", date_fmt);
|
||||||
span = span - hours * G_TIME_SPAN_HOUR;
|
|
||||||
int minutes = span / G_TIME_SPAN_MINUTE;
|
|
||||||
span = span - minutes * G_TIME_SPAN_MINUTE;
|
|
||||||
int seconds = span / G_TIME_SPAN_SECOND;
|
|
||||||
|
|
||||||
if (hours > 0) {
|
g_free(date_fmt);
|
||||||
win_vprint(window, '-', 0, NULL, NO_DATE | NO_EOL, presence_colour, "", ", idle %dh%dm%ds", hours, minutes, seconds);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
win_vprint(window, '-', 0, NULL, NO_DATE | NO_EOL, presence_colour, "", ", idle %dm%ds", minutes, seconds);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (status)
|
if (status)
|
||||||
|
@ -56,6 +56,7 @@ splash=true
|
|||||||
wrap=true
|
wrap=true
|
||||||
time=%d-%m-%y %H:%M
|
time=%d-%m-%y %H:%M
|
||||||
time.statusbar=%H:%M:%S
|
time.statusbar=%H:%M:%S
|
||||||
|
time.lastactivity=%d/%m/%y %H:%M:%S
|
||||||
privileges=true
|
privileges=true
|
||||||
presence=true
|
presence=true
|
||||||
intype=true
|
intype=true
|
||||||
|
Loading…
Reference in New Issue
Block a user