Refactoring window types, removing recipient and from references - wip

This commit is contained in:
James Booth
2014-12-18 23:57:19 +00:00
parent 76c665e986
commit 0146e62576
11 changed files with 760 additions and 605 deletions

View File

@@ -1612,12 +1612,6 @@ cmd_reset_autocomplete()
autocomplete_reset(notify_typing_ac);
autocomplete_reset(sub_ac);
if (ui_current_win_type() == WIN_MUC) {
char *recipient = ui_current_recipient();
muc_autocomplete_reset(recipient);
muc_jid_autocomplete_reset(recipient);
}
autocomplete_reset(who_room_ac);
autocomplete_reset(who_roster_ac);
autocomplete_reset(prefs_ac);
@@ -1664,19 +1658,24 @@ cmd_reset_autocomplete()
autocomplete_reset(time_ac);
autocomplete_reset(resource_ac);
if (ui_current_win_type() == WIN_MUC_CONFIG) {
ProfWin *window = wins_get_current();
ProfMucConfWin *confwin = (ProfMucConfWin*)window;
if (window && confwin->form) {
form_reset_autocompleters(confwin->form);
if (ui_current_win_type() == WIN_CHAT) {
ProfChatWin *chatwin = wins_get_current_chat();
PContact contact = roster_get_contact(chatwin->barejid);
if (contact) {
p_contact_resource_ac_reset(contact);
}
}
if (ui_current_win_type() == WIN_CHAT) {
char *recipient = ui_current_recipient();
PContact contact = roster_get_contact(recipient);
if (contact) {
p_contact_resource_ac_reset(contact);
if (ui_current_win_type() == WIN_MUC) {
ProfMucWin *mucwin = wins_get_current_muc();
muc_autocomplete_reset(mucwin->roomjid);
muc_jid_autocomplete_reset(mucwin->roomjid);
}
if (ui_current_win_type() == WIN_MUC_CONFIG) {
ProfMucConfWin *confwin = wins_get_current_muc_conf();
if (confwin->form) {
form_reset_autocompleters(confwin->form);
}
}
@@ -1754,7 +1753,6 @@ cmd_execute_default(const char * inp)
{
win_type_t win_type = ui_current_win_type();
jabber_conn_status_t status = jabber_get_connection_status();
char *recipient = ui_current_recipient();
// handle escaped commands - treat as normal message
if (g_str_has_prefix(inp, "//")) {
@@ -1773,6 +1771,7 @@ cmd_execute_default(const char * inp)
if (status != JABBER_CONNECTED) {
ui_current_print_line("You are not currently connected.");
} else {
ProfWin
message_send_groupchat(inp, recipient);
}
break;
@@ -1887,8 +1886,8 @@ _cmd_complete_parameters(char *input, int *size)
// autocomplete nickname in chat rooms
if (ui_current_win_type() == WIN_MUC) {
char *recipient = ui_current_recipient();
Autocomplete nick_ac = muc_roster_ac(recipient);
ProfMucWin *mucwin = wins_get_current_muc();
Autocomplete nick_ac = muc_roster_ac(mucwin->roomjid);
if (nick_ac != NULL) {
gchar *nick_choices[] = { "/msg", "/info", "/caps", "/status", "/software" } ;
@@ -2435,8 +2434,8 @@ _resource_autocomplete(char *input, int *size)
ProfWin *current = wins_get_current();
if (current && current->type == WIN_CHAT) {
char *recipient = ui_current_recipient();
PContact contact = roster_get_contact(recipient);
ProfChatWin *chatwin = wins_get_current_chat();
PContact contact = roster_get_contact(chatwin->barejid);
if (contact) {
Autocomplete ac = p_contact_resource_ac(contact);
found = autocomplete_param_with_ac(input, size, "/resource set", ac, FALSE);
@@ -2575,62 +2574,71 @@ static char *
_kick_autocomplete(char *input, int *size)
{
char *result = NULL;
char *recipient = ui_current_recipient();
Autocomplete nick_ac = muc_roster_ac(recipient);
if (nick_ac != NULL) {
result = autocomplete_param_with_ac(input, size, "/kick", nick_ac, TRUE);
if (result != NULL) {
return result;
if (ui_current_win_type() == WIN_MUC) {
ProfMucWin *mucwin = wins_get_current_muc();
Autocomplete nick_ac = muc_roster_ac(mucwin->roomjid);
if (nick_ac != NULL) {
result = autocomplete_param_with_ac(input, size, "/kick", nick_ac, TRUE);
if (result != NULL) {
return result;
}
}
}
return NULL;
return result;
}
static char *
_ban_autocomplete(char *input, int *size)
{
char *result = NULL;
char *recipient = ui_current_recipient();
Autocomplete jid_ac = muc_roster_jid_ac(recipient);
if (jid_ac != NULL) {
result = autocomplete_param_with_ac(input, size, "/ban", jid_ac, TRUE);
if (result != NULL) {
return result;
if (ui_current_win_type() == WIN_MUC) {
ProfMucWin *mucwin = wins_get_current_muc();
Autocomplete jid_ac = muc_roster_jid_ac(mucwin->roomjid);
if (jid_ac != NULL) {
result = autocomplete_param_with_ac(input, size, "/ban", jid_ac, TRUE);
if (result != NULL) {
return result;
}
}
}
return NULL;
return result;
}
static char *
_affiliation_autocomplete(char *input, int *size)
{
char *result = NULL;
char *recipient = ui_current_recipient();
gboolean parse_result;
Autocomplete jid_ac = muc_roster_jid_ac(recipient);
input[*size] = '\0';
gchar **args = parse_args(input, 3, 3, &parse_result);
if (ui_current_win_type() == WIN_MUC) {
ProfMucWin *mucwin = wins_get_current_muc();
gboolean parse_result;
Autocomplete jid_ac = muc_roster_jid_ac(mucwin->roomjid);
if ((strncmp(input, "/affiliation", 12) == 0) && (parse_result == TRUE)) {
GString *beginning = g_string_new("/affiliation ");
g_string_append(beginning, args[0]);
g_string_append(beginning, " ");
g_string_append(beginning, args[1]);
input[*size] = '\0';
gchar **args = parse_args(input, 3, 3, &parse_result);
result = autocomplete_param_with_ac(input, size, beginning->str, jid_ac, TRUE);
g_string_free(beginning, TRUE);
if (result != NULL) {
g_strfreev(args);
return result;
if ((strncmp(input, "/affiliation", 12) == 0) && (parse_result == TRUE)) {
GString *beginning = g_string_new("/affiliation ");
g_string_append(beginning, args[0]);
g_string_append(beginning, " ");
g_string_append(beginning, args[1]);
result = autocomplete_param_with_ac(input, size, beginning->str, jid_ac, TRUE);
g_string_free(beginning, TRUE);
if (result != NULL) {
g_strfreev(args);
return result;
}
}
}
g_strfreev(args);
g_strfreev(args);
}
result = autocomplete_param_with_ac(input, size, "/affiliation set", affiliation_ac, TRUE);
if (result != NULL) {
@@ -2647,35 +2655,38 @@ _affiliation_autocomplete(char *input, int *size)
return result;
}
return NULL;
return result;
}
static char *
_role_autocomplete(char *input, int *size)
{
char *result = NULL;
char *recipient = ui_current_recipient();
gboolean parse_result;
Autocomplete nick_ac = muc_roster_ac(recipient);
input[*size] = '\0';
gchar **args = parse_args(input, 3, 3, &parse_result);
if (ui_current_win_type() == WIN_MUC) {
ProfMucWin *mucwin = wins_get_current_muc();
gboolean parse_result;
Autocomplete nick_ac = muc_roster_ac(mucwin->roomjid);
if ((strncmp(input, "/role", 5) == 0) && (parse_result == TRUE)) {
GString *beginning = g_string_new("/role ");
g_string_append(beginning, args[0]);
g_string_append(beginning, " ");
g_string_append(beginning, args[1]);
input[*size] = '\0';
gchar **args = parse_args(input, 3, 3, &parse_result);
result = autocomplete_param_with_ac(input, size, beginning->str, nick_ac, TRUE);
g_string_free(beginning, TRUE);
if (result != NULL) {
g_strfreev(args);
return result;
if ((strncmp(input, "/role", 5) == 0) && (parse_result == TRUE)) {
GString *beginning = g_string_new("/role ");
g_string_append(beginning, args[0]);
g_string_append(beginning, " ");
g_string_append(beginning, args[1]);
result = autocomplete_param_with_ac(input, size, beginning->str, nick_ac, TRUE);
g_string_free(beginning, TRUE);
if (result != NULL) {
g_strfreev(args);
return result;
}
}
}
g_strfreev(args);
g_strfreev(args);
}
result = autocomplete_param_with_ac(input, size, "/role set", role_ac, TRUE);
if (result != NULL) {
@@ -2692,7 +2703,7 @@ _role_autocomplete(char *input, int *size)
return result;
}
return NULL;
return result;
}
static char *