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_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_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_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:
|
* 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",
|
"Example : /join jdev@conference.jabber.org mynick",
|
||||||
NULL } } },
|
NULL } } },
|
||||||
|
|
||||||
|
{ "/wins",
|
||||||
|
_cmd_wins,
|
||||||
|
{ "/wins", "List active windows.",
|
||||||
|
{ "/wins",
|
||||||
|
"-----",
|
||||||
|
"List all currently active windows and information about them.",
|
||||||
|
NULL } } },
|
||||||
|
|
||||||
{ "/sub",
|
{ "/sub",
|
||||||
_cmd_sub,
|
_cmd_sub,
|
||||||
{ "/sub <add|del|req|show> [jid]", "Manage subscriptions.",
|
{ "/sub <add|del|req|show> [jid]", "Manage subscriptions.",
|
||||||
@ -688,7 +697,7 @@ cmd_execute_default(const char * const inp)
|
|||||||
char *recipient = win_get_recipient();
|
char *recipient = win_get_recipient();
|
||||||
jabber_send_groupchat(inp, recipient);
|
jabber_send_groupchat(inp, recipient);
|
||||||
free(recipient);
|
free(recipient);
|
||||||
} else if (win_in_chat()) {
|
} else if (win_in_chat() || win_in_private_chat()) {
|
||||||
char *recipient = win_get_recipient();
|
char *recipient = win_get_recipient();
|
||||||
jabber_send(inp, recipient);
|
jabber_send(inp, recipient);
|
||||||
|
|
||||||
@ -940,6 +949,13 @@ _cmd_quit(const char * const inp, struct cmd_help_t help)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
_cmd_wins(const char * const inp, struct cmd_help_t help)
|
||||||
|
{
|
||||||
|
win_show_wins();
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
_cmd_help(const char * const inp, struct cmd_help_t help)
|
_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();
|
char *room_jid = win_get_recipient();
|
||||||
jabber_leave_chat_room(room_jid);
|
jabber_leave_chat_room(room_jid);
|
||||||
win_close_win();
|
win_close_win();
|
||||||
} else if (win_in_chat()) {
|
} else if (win_in_chat() || win_in_private_chat()) {
|
||||||
|
|
||||||
if (prefs_get_states()) {
|
if (prefs_get_states()) {
|
||||||
char *recipient = win_get_recipient();
|
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_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_room_member_online(const char * const room, const char * const nick);
|
||||||
void win_show_status(const char * const contact);
|
void win_show_status(const char * const contact);
|
||||||
|
void win_show_wins(void);
|
||||||
|
int win_in_private_chat(void);
|
||||||
|
|
||||||
// console window actions
|
// console window actions
|
||||||
void cons_about(void);
|
void cons_about(void);
|
||||||
|
@ -205,6 +205,59 @@ win_in_groupchat(void)
|
|||||||
return (_wins[_curr_prof_win].type == WIN_MUC);
|
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 *
|
char *
|
||||||
win_get_recipient(void)
|
win_get_recipient(void)
|
||||||
{
|
{
|
||||||
@ -535,7 +588,13 @@ win_show_outgoing_msg(const char * const from, const char * const to,
|
|||||||
|
|
||||||
// create new window
|
// create new window
|
||||||
if (win_index == NUM_WINS) {
|
if (win_index == NUM_WINS) {
|
||||||
|
|
||||||
|
if (room_is_active(to)) {
|
||||||
|
win_index = _new_prof_win(to, WIN_PRIVATE);
|
||||||
|
} else {
|
||||||
win_index = _new_prof_win(to, WIN_CHAT);
|
win_index = _new_prof_win(to, WIN_CHAT);
|
||||||
|
}
|
||||||
|
|
||||||
win = _wins[win_index].win;
|
win = _wins[win_index].win;
|
||||||
|
|
||||||
if (prefs_get_chlog() && prefs_get_history()) {
|
if (prefs_get_chlog() && prefs_get_history()) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user