mirror of
https://github.com/profanity-im/profanity.git
synced 2025-02-02 15:08:15 -05:00
Added /wins command to list active windows
This commit is contained in:
parent
a574f7ff40
commit
de2f060742
@ -114,6 +114,7 @@ static gboolean _cmd_dnd(const char * const inp, struct cmd_help_t help);
|
||||
static gboolean _cmd_chat(const char * const inp, struct cmd_help_t help);
|
||||
static gboolean _cmd_xa(const char * const inp, struct cmd_help_t help);
|
||||
static gboolean _cmd_status(const char * const inp, struct cmd_help_t help);
|
||||
static gboolean _cmd_wins(const char * const inp, struct cmd_help_t help);
|
||||
|
||||
/*
|
||||
* The commands are broken down into three groups:
|
||||
@ -219,6 +220,14 @@ static struct cmd_t main_commands[] =
|
||||
"Example : /join jdev@conference.jabber.org mynick",
|
||||
NULL } } },
|
||||
|
||||
{ "/wins",
|
||||
_cmd_wins,
|
||||
{ "/wins", "List active windows.",
|
||||
{ "/wins",
|
||||
"-----",
|
||||
"List all currently active windows and information about them.",
|
||||
NULL } } },
|
||||
|
||||
{ "/sub",
|
||||
_cmd_sub,
|
||||
{ "/sub <add|del|req|show> [jid]", "Manage subscriptions.",
|
||||
@ -688,7 +697,7 @@ cmd_execute_default(const char * const inp)
|
||||
char *recipient = win_get_recipient();
|
||||
jabber_send_groupchat(inp, recipient);
|
||||
free(recipient);
|
||||
} else if (win_in_chat()) {
|
||||
} else if (win_in_chat() || win_in_private_chat()) {
|
||||
char *recipient = win_get_recipient();
|
||||
jabber_send(inp, recipient);
|
||||
|
||||
@ -940,6 +949,13 @@ _cmd_quit(const char * const inp, struct cmd_help_t help)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
_cmd_wins(const char * const inp, struct cmd_help_t help)
|
||||
{
|
||||
win_show_wins();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
_cmd_help(const char * const inp, struct cmd_help_t help)
|
||||
{
|
||||
@ -1316,7 +1332,7 @@ _cmd_close(const char * const inp, struct cmd_help_t help)
|
||||
char *room_jid = win_get_recipient();
|
||||
jabber_leave_chat_room(room_jid);
|
||||
win_close_win();
|
||||
} else if (win_in_chat()) {
|
||||
} else if (win_in_chat() || win_in_private_chat()) {
|
||||
|
||||
if (prefs_get_states()) {
|
||||
char *recipient = win_get_recipient();
|
||||
|
2
src/ui.h
2
src/ui.h
@ -128,6 +128,8 @@ void win_show_room_subject(const char * const room_jid,
|
||||
void win_show_room_member_offline(const char * const room, const char * const nick);
|
||||
void win_show_room_member_online(const char * const room, const char * const nick);
|
||||
void win_show_status(const char * const contact);
|
||||
void win_show_wins(void);
|
||||
int win_in_private_chat(void);
|
||||
|
||||
// console window actions
|
||||
void cons_about(void);
|
||||
|
@ -205,6 +205,59 @@ win_in_groupchat(void)
|
||||
return (_wins[_curr_prof_win].type == WIN_MUC);
|
||||
}
|
||||
|
||||
int
|
||||
win_in_private_chat(void)
|
||||
{
|
||||
return (_wins[_curr_prof_win].type == WIN_PRIVATE);
|
||||
}
|
||||
|
||||
void
|
||||
win_show_wins(void)
|
||||
{
|
||||
int i = 0;
|
||||
int count = 0;
|
||||
|
||||
for (i = 1; i < NUM_WINS; i++) {
|
||||
if (_wins[i].type != WIN_UNUSED) {
|
||||
count++;
|
||||
}
|
||||
}
|
||||
|
||||
cons_show("");
|
||||
|
||||
if (count == 0) {
|
||||
cons_show("No active windows.");
|
||||
} else if (count == 1) {
|
||||
cons_show("1 active window:");
|
||||
} else {
|
||||
cons_show("%d active windows:", count);
|
||||
}
|
||||
|
||||
if (count != 0) {
|
||||
for (i = 1; i < NUM_WINS; i++) {
|
||||
if (_wins[i].type != WIN_UNUSED) {
|
||||
_win_show_time(_cons_win);
|
||||
wprintw(_cons_win, "[%d] - ", i + 1);
|
||||
|
||||
switch (_wins[i].type)
|
||||
{
|
||||
case WIN_CHAT:
|
||||
wprintw(_cons_win, "conversation : %s\n", _wins[i].from);
|
||||
break;
|
||||
case WIN_PRIVATE:
|
||||
wprintw(_cons_win, "private : %s\n", _wins[i].from);
|
||||
break;
|
||||
case WIN_MUC:
|
||||
wprintw(_cons_win, "chat room : %s\n", _wins[i].from);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
char *
|
||||
win_get_recipient(void)
|
||||
{
|
||||
@ -535,7 +588,13 @@ win_show_outgoing_msg(const char * const from, const char * const to,
|
||||
|
||||
// create new window
|
||||
if (win_index == NUM_WINS) {
|
||||
win_index = _new_prof_win(to, WIN_CHAT);
|
||||
|
||||
if (room_is_active(to)) {
|
||||
win_index = _new_prof_win(to, WIN_PRIVATE);
|
||||
} else {
|
||||
win_index = _new_prof_win(to, WIN_CHAT);
|
||||
}
|
||||
|
||||
win = _wins[win_index].win;
|
||||
|
||||
if (prefs_get_chlog() && prefs_get_history()) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user