diff options
-rw-r--r-- | Makefile.am | 1 | ||||
-rw-r--r-- | src/ui/core.c | 44 | ||||
-rw-r--r-- | src/ui/privwin.c | 85 |
3 files changed, 86 insertions, 44 deletions
diff --git a/Makefile.am b/Makefile.am index 3c7a28bc..21b0d3aa 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/ui/core.c b/src/ui/core.c index 17ff30e2..44860a3f 100644 --- a/src/ui/core.c +++ b/src/ui/core.c @@ -305,50 +305,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) { if (name) { diff --git a/src/ui/privwin.c b/src/ui/privwin.c new file mode 100644 index 00000000..ec6d558c --- /dev/null +++ b/src/ui/privwin.c @@ -0,0 +1,85 @@ +/* + * privwin.c + * + * Copyright (C) 2012 - 2015 James Booth <boothj5@gmail.com> + * + * 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 <http://www.gnu.org/licenses/>. + * + * 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 <glib.h> + +#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); +} + |