@@ -1420,12 +1420,14 @@ static struct cmd_t command_defs[] =
|
|||||||
CMD_TAG_UI)
|
CMD_TAG_UI)
|
||||||
CMD_SYN(
|
CMD_SYN(
|
||||||
"/tray on|off",
|
"/tray on|off",
|
||||||
"/tray read on|off")
|
"/tray read on|off",
|
||||||
|
"/tray timer <seconds>")
|
||||||
CMD_DESC(
|
CMD_DESC(
|
||||||
"Display an icon in the tray that will indicate new messages.")
|
"Display an icon in the tray that will indicate new messages.")
|
||||||
CMD_ARGS(
|
CMD_ARGS(
|
||||||
{ "on|off", "Show tray icon." },
|
{ "on|off", "Show tray icon." },
|
||||||
{ "read on|off", "Show tray icon when no unread messages." })
|
{ "read on|off", "Show tray icon when no unread messages." },
|
||||||
|
{ "timer <seconds>", "Set tray icon timer, seconds must be between 1-10" })
|
||||||
CMD_NOEXAMPLES
|
CMD_NOEXAMPLES
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -2868,6 +2870,7 @@ cmd_init(void)
|
|||||||
autocomplete_add(tray_ac, "on");
|
autocomplete_add(tray_ac, "on");
|
||||||
autocomplete_add(tray_ac, "off");
|
autocomplete_add(tray_ac, "off");
|
||||||
autocomplete_add(tray_ac, "read");
|
autocomplete_add(tray_ac, "read");
|
||||||
|
autocomplete_add(tray_ac, "timer");
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
@@ -5865,9 +5865,35 @@ gboolean
|
|||||||
cmd_tray(ProfWin *window, const char *const command, gchar **args)
|
cmd_tray(ProfWin *window, const char *const command, gchar **args)
|
||||||
{
|
{
|
||||||
#ifdef HAVE_GTK
|
#ifdef HAVE_GTK
|
||||||
if (g_strcmp0(args[0], "read") == 0) {
|
if (g_strcmp0(args[0], "timer") == 0) {
|
||||||
|
if (args[1] == NULL) {
|
||||||
|
cons_bad_cmd_usage(command);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
if (prefs_get_boolean(PREF_TRAY) == FALSE) {
|
if (prefs_get_boolean(PREF_TRAY) == FALSE) {
|
||||||
cons_show("Tray icon no currently enable, see /help tray");
|
cons_show("Tray icon not currently enabled, see /help tray");
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
int intval = 0;
|
||||||
|
char *err_msg = NULL;
|
||||||
|
gboolean res = strtoi_range(args[1], &intval, 1, 10, &err_msg);
|
||||||
|
if (res) {
|
||||||
|
cons_show("Tray timer set to %d seconds.", intval);
|
||||||
|
prefs_set_tray_timer(intval);
|
||||||
|
if (prefs_get_boolean(PREF_TRAY)) {
|
||||||
|
tray_set_timer(intval);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
cons_show(err_msg);
|
||||||
|
free(err_msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
} else if (g_strcmp0(args[0], "read") == 0) {
|
||||||
|
if (prefs_get_boolean(PREF_TRAY) == FALSE) {
|
||||||
|
cons_show("Tray icon not currently enabled, see /help tray");
|
||||||
} else if (g_strcmp0(args[1], "on") == 0) {
|
} else if (g_strcmp0(args[1], "on") == 0) {
|
||||||
prefs_set_boolean(PREF_TRAY_READ, TRUE);
|
prefs_set_boolean(PREF_TRAY_READ, TRUE);
|
||||||
cons_show("Tray icon enabled when no unread messages.");
|
cons_show("Tray icon enabled when no unread messages.");
|
||||||
@@ -5877,6 +5903,8 @@ cmd_tray(ProfWin *window, const char *const command, gchar **args)
|
|||||||
} else {
|
} else {
|
||||||
cons_bad_cmd_usage(command);
|
cons_bad_cmd_usage(command);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
} else {
|
} else {
|
||||||
gboolean old = prefs_get_boolean(PREF_TRAY);
|
gboolean old = prefs_get_boolean(PREF_TRAY);
|
||||||
_cmd_set_boolean_preference(args[0], command, "Tray icon", PREF_TRAY);
|
_cmd_set_boolean_preference(args[0], command, "Tray icon", PREF_TRAY);
|
||||||
@@ -5888,8 +5916,9 @@ cmd_tray(ProfWin *window, const char *const command, gchar **args)
|
|||||||
tray_disable();
|
tray_disable();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
return TRUE;
|
|
||||||
#else
|
#else
|
||||||
cons_show("This version of Profanity has not been built with GTK Tray Icon support enabled");
|
cons_show("This version of Profanity has not been built with GTK Tray Icon support enabled");
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|||||||
@@ -591,6 +591,25 @@ prefs_set_autoxa_time(gint value)
|
|||||||
_save_prefs();
|
_save_prefs();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
prefs_set_tray_timer(gint value)
|
||||||
|
{
|
||||||
|
g_key_file_set_integer(prefs, PREF_GROUP_NOTIFICATIONS, "tray.timer", value);
|
||||||
|
_save_prefs();
|
||||||
|
}
|
||||||
|
|
||||||
|
gint
|
||||||
|
prefs_get_tray_timer(void)
|
||||||
|
{
|
||||||
|
gint result = g_key_file_get_integer(prefs, PREF_GROUP_NOTIFICATIONS, "tray.timer", NULL);
|
||||||
|
|
||||||
|
if (result == 0) {
|
||||||
|
return 5;
|
||||||
|
} else {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
gchar**
|
gchar**
|
||||||
prefs_get_plugins(void)
|
prefs_get_plugins(void)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -224,6 +224,9 @@ void prefs_set_roster_presence_indent(gint value);
|
|||||||
|
|
||||||
void prefs_add_login(const char *jid);
|
void prefs_add_login(const char *jid);
|
||||||
|
|
||||||
|
void prefs_set_tray_timer(gint value);
|
||||||
|
gint prefs_get_tray_timer(void);
|
||||||
|
|
||||||
gboolean prefs_add_alias(const char *const name, const char *const value);
|
gboolean prefs_add_alias(const char *const name, const char *const value);
|
||||||
gboolean prefs_remove_alias(const char *const name);
|
gboolean prefs_remove_alias(const char *const name);
|
||||||
char* prefs_get_alias(const char *const name);
|
char* prefs_get_alias(const char *const name);
|
||||||
|
|||||||
11
src/tray.c
11
src/tray.c
@@ -192,13 +192,22 @@ tray_shutdown(void)
|
|||||||
g_string_free(icon_msg_filename, TRUE);
|
g_string_free(icon_msg_filename, TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
tray_set_timer(int interval)
|
||||||
|
{
|
||||||
|
g_source_remove(timer);
|
||||||
|
_tray_change_icon(NULL);
|
||||||
|
timer = g_timeout_add(interval * 1000, _tray_change_icon, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
tray_enable(void)
|
tray_enable(void)
|
||||||
{
|
{
|
||||||
prof_tray = gtk_status_icon_new_from_file(icon_filename->str);
|
prof_tray = gtk_status_icon_new_from_file(icon_filename->str);
|
||||||
shutting_down = FALSE;
|
shutting_down = FALSE;
|
||||||
_tray_change_icon(NULL);
|
_tray_change_icon(NULL);
|
||||||
timer = g_timeout_add(5000, _tray_change_icon, NULL);
|
int interval = prefs_get_tray_timer() * 1000;
|
||||||
|
timer = g_timeout_add(interval, _tray_change_icon, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
@@ -51,4 +51,6 @@ void tray_enable(void);
|
|||||||
*/
|
*/
|
||||||
void tray_disable(void);
|
void tray_disable(void);
|
||||||
|
|
||||||
|
void tray_set_timer(int interval);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -1193,6 +1193,9 @@ cons_tray_setting(void)
|
|||||||
cons_show("Tray icon read (/tray) : ON");
|
cons_show("Tray icon read (/tray) : ON");
|
||||||
else
|
else
|
||||||
cons_show("Tray icon read (/tray) : OFF");
|
cons_show("Tray icon read (/tray) : OFF");
|
||||||
|
|
||||||
|
int seconds = prefs_get_tray_timer();
|
||||||
|
cons_show("Tray timer (/tray) : %d seconds", seconds);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
Reference in New Issue
Block a user