diff --git a/Makefile.am b/Makefile.am index 38c88f35..e0082078 100644 --- a/Makefile.am +++ b/Makefile.am @@ -25,6 +25,7 @@ core_sources = \ src/ui/buffer.c src/ui/buffer.h \ src/ui/chatwin.c \ src/ui/mucwin.c \ + src/ui/privwin.c \ src/ui/mucconfwin.c \ src/ui/xmlwin.c \ src/command/command.h src/command/command.c \ diff --git a/src/command/commands.c b/src/command/commands.c index c87e3eaa..0331d691 100644 --- a/src/command/commands.c +++ b/src/command/commands.c @@ -1497,7 +1497,7 @@ cmd_msg(ProfWin *window, const char *const command, gchar **args) ProfPrivateWin *privwin = wins_get_private(full_jid->str); if (!privwin) { - privwin = ui_new_private_win(full_jid->str); + privwin = (ProfPrivateWin*)wins_new_private(full_jid->str); } ui_focus_win((ProfWin*)privwin); diff --git a/src/ui/core.c b/src/ui/core.c index 17ff30e2..83c8ed00 100644 --- a/src/ui/core.c +++ b/src/ui/core.c @@ -304,50 +304,6 @@ ui_contact_typing(const char *const barejid, const char *const resource) } } -void -ui_incoming_private_msg(const char *const fulljid, const char *const message, GDateTime *timestamp) -{ - char *display_from = NULL; - display_from = get_nick_from_full_jid(fulljid); - - ProfPrivateWin *privatewin = wins_get_private(fulljid); - if (privatewin == NULL) { - ProfWin *window = wins_new_private(fulljid); - privatewin = (ProfPrivateWin*)window; - } - - ProfWin *window = (ProfWin*) privatewin; - int num = wins_get_num(window); - - // currently viewing chat window with sender - if (wins_is_current(window)) { - win_print_incoming_message(window, timestamp, display_from, message, PROF_MSG_PLAIN); - title_bar_set_typing(FALSE); - status_bar_active(num); - - // not currently viewing chat window with sender - } else { - privatewin->unread++; - status_bar_new(num); - cons_show_incoming_message(display_from, num); - win_print_incoming_message(window, timestamp, display_from, message, PROF_MSG_PLAIN); - - if (prefs_get_boolean(PREF_FLASH)) { - flash(); - } - } - - if (prefs_get_boolean(PREF_BEEP)) { - beep(); - } - - if (prefs_get_boolean(PREF_NOTIFY_MESSAGE)) { - notify_message(window, display_from, message); - } - - free(display_from); -} - void ui_roster_add(const char *const barejid, const char *const name) { @@ -813,19 +769,6 @@ ui_print_system_msg_from_recipient(const char *const barejid, const char *messag win_vprint(window, '-', 0, NULL, 0, 0, "", "*%s %s", barejid, message); } -ProfPrivateWin* -ui_new_private_win(const char *const fulljid) -{ - ProfWin *window = wins_new_private(fulljid); - return (ProfPrivateWin*)window; -} - -void -ui_outgoing_private_msg(ProfPrivateWin *privwin, const char *const message) -{ - win_print((ProfWin*)privwin, '-', 0, NULL, 0, THEME_TEXT_ME, "me", message); -} - void ui_room_join(const char *const roomjid, gboolean focus) { diff --git a/src/ui/privwin.c b/src/ui/privwin.c new file mode 100644 index 00000000..487492b9 --- /dev/null +++ b/src/ui/privwin.c @@ -0,0 +1,90 @@ +/* + * privwin.c + * + * Copyright (C) 2012 - 2015 James Booth + * + * This file is part of Profanity. + * + * Profanity is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Profanity is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Profanity. If not, see . + * + * In addition, as a special exception, the copyright holders give permission to + * link the code of portions of this program with the OpenSSL library under + * certain conditions as described in each individual source file, and + * distribute linked combinations including the two. + * + * You must obey the GNU General Public License in all respects for all of the + * code used other than OpenSSL. If you modify file(s) with this exception, you + * may extend this exception to your version of the file(s), but you are not + * obligated to do so. If you do not wish to do so, delete this exception + * statement from your version. If you delete this exception statement from all + * source files in the program, then also delete it here. + * + */ + +#include + +#include "ui/win_types.h" +#include "ui/window.h" +#include "ui/titlebar.h" +#include "window_list.h" +#include "config/preferences.h" + +void +ui_incoming_private_msg(const char *const fulljid, const char *const message, GDateTime *timestamp) +{ + ProfPrivateWin *privatewin = wins_get_private(fulljid); + if (privatewin == NULL) { + ProfWin *window = wins_new_private(fulljid); + privatewin = (ProfPrivateWin*)window; + } + + ProfWin *window = (ProfWin*) privatewin; + int num = wins_get_num(window); + + char *display_from = get_nick_from_full_jid(fulljid); + + // currently viewing chat window with sender + if (wins_is_current(window)) { + win_print_incoming_message(window, timestamp, display_from, message, PROF_MSG_PLAIN); + title_bar_set_typing(FALSE); + status_bar_active(num); + + // not currently viewing chat window with sender + } else { + privatewin->unread++; + status_bar_new(num); + cons_show_incoming_message(display_from, num); + win_print_incoming_message(window, timestamp, display_from, message, PROF_MSG_PLAIN); + + if (prefs_get_boolean(PREF_FLASH)) { + flash(); + } + } + + if (prefs_get_boolean(PREF_BEEP)) { + beep(); + } + + if (prefs_get_boolean(PREF_NOTIFY_MESSAGE)) { + notify_message(window, display_from, message); + } + + free(display_from); +} + +void +ui_outgoing_private_msg(ProfPrivateWin *privwin, const char *const message) +{ + win_print((ProfWin*)privwin, '-', 0, NULL, 0, THEME_TEXT_ME, "me", message); +} diff --git a/src/ui/ui.h b/src/ui/ui.h index c3d65978..751e65ca 100644 --- a/src/ui/ui.h +++ b/src/ui/ui.h @@ -68,7 +68,6 @@ void ui_sigwinch_handler(int sig); void ui_handle_otr_error(const char *const barejid, const char *const message); unsigned long ui_get_idle_time(void); void ui_reset_idle_time(void); -ProfPrivateWin* ui_new_private_win(const char *const fulljid); void ui_print_system_msg_from_recipient(const char *const barejid, const char *message); void ui_close_connected_win(int index); int ui_close_all_wins(void); diff --git a/tests/unittests/ui/stub_ui.c b/tests/unittests/ui/stub_ui.c index 2d979af0..23520009 100644 --- a/tests/unittests/ui/stub_ui.c +++ b/tests/unittests/ui/stub_ui.c @@ -83,10 +83,6 @@ unsigned long ui_get_idle_time(void) } void ui_reset_idle_time(void) {} -ProfPrivateWin* ui_new_private_win(const char * const fulljid) -{ - return NULL; -} ProfChatWin* chatwin_new(const char * const barejid) {