@ -27,18 +27,18 @@
# include <QTimer>
IRC : : IRC ( IWinStatus & status )
: m_status ( status )
: m_status ( status )
{
static int idCount { 0 } ;
m_id = + + idCount ;
static int idCount { 0 } ;
m_id = + + idCount ;
}
void IRC : : disconnectForExit ( const QString & quitMessage )
{
m_disconnectForExit = true ;
std : : string quitMessageConv = quitMessage . toStdString ( ) ;
if ( disconnectFromServer ( quitMessageConv ) = = IRCError : : NotConnected )
qWarning ( ) < < " Trying to disconnect from an already closed connection. " ;
m_disconnectForExit = true ;
std : : string quitMessageConv = quitMessage . toStdString ( ) ;
if ( disconnectFromServer ( quitMessageConv ) = = IRCError : : NotConnected )
qWarning ( ) < < " Trying to disconnect from an already closed connection. " ;
}
int IRC : : channelAutoComplete ( int index , QString & pattern )
@ -76,21 +76,21 @@ Retry:
void IRC : : setIgnoreVerbosity ( const QStringList & commandsAndNumerics )
{
for ( const QString & entry : commandsAndNumerics )
m_ignoreVerbosity . push_back ( entry . toUpper ( ) ) ;
m_ignoreVerbosity . removeDuplicates ( ) ;
for ( const QString & entry : commandsAndNumerics )
m_ignoreVerbosity . push_back ( entry . toUpper ( ) ) ;
m_ignoreVerbosity . removeDuplicates ( ) ;
}
void IRC : : unsetIgnoreVerbosity ( const QStringList & commandsAndNumerics )
{
for ( const QString & entry : commandsAndNumerics )
m_ignoreVerbosity . removeOne ( entry . toUpper ( ) ) ;
for ( const QString & entry : commandsAndNumerics )
m_ignoreVerbosity . removeOne ( entry . toUpper ( ) ) ;
}
bool IRC : : ignoreVerbosity ( const std : : string & cmd )
{
QString qcmd { cmd . c_str ( ) } ;
return m_ignoreVerbosity . contains ( qcmd . toUpper ( ) ) ;
QString qcmd { cmd . c_str ( ) } ;
return m_ignoreVerbosity . contains ( qcmd . toUpper ( ) ) ;
}
void IRC : : setReconnectDetails ( bool ssl , const std : : string & host , const std : : string & port )
@ -103,13 +103,13 @@ void IRC::setReconnectDetails(bool ssl, const std::string& host, const std::stri
void IRC : : rejoinChannels ( )
{
QStringList targetList ;
for ( IWin * subwin : m_status . subWindows ( ) )
targetList < < subwin - > getButtonText ( ) ;
if ( targetList . isEmpty ( ) )
return ;
QString targets = targetList . join ( ' , ' ) ;
command ( Command : : IRC : : JOIN , { targets . toStdString ( ) } ) ;
QStringList targetList ;
for ( IWin * subwin : m_status . subWindows ( ) )
targetList < < subwin - > getButtonText ( ) ;
if ( targetList . isEmpty ( ) )
return ;
QString targets = targetList . join ( ' , ' ) ;
command ( Command : : IRC : : JOIN , { targets . toStdString ( ) } ) ;
}
void IRC : : onRegistered ( )
@ -118,14 +118,14 @@ void IRC::onRegistered()
emit registered ( ) ;
const auto & config = ConfigMgr : : instance ( ) ;
if ( config . common ( " RejoinChannelsOnConnect " ) = = " 1 " )
rejoinChannels ( ) ;
rejoinChannels ( ) ;
contextualScriptEvent ( & m_status , ScriptEvent : : Connected ) ;
}
void IRC : : onConnected ( )
{
emit connected ( ) ;
emit connected ( ) ;
}
void IRC : : onConnectedWithSSLExceptions ( const std : : vector < IRCError > & codes )
@ -139,21 +139,21 @@ void IRC::onConnectedWithSSLExceptions(const std::vector<IRCError>& codes)
void IRC : : onDisconnected ( )
{
emit disconnected ( ) ;
emit memberListClearedForAll ( ) ;
if ( m_disconnectForExit )
emit readyForExit ( ) ;
contextualScriptEvent ( & m_status , ScriptEvent : : Disconnected ) ;
if ( m_reconnectDetails . has_value ( ) ) {
setHostname ( m_reconnectDetails - > host , m_reconnectDetails - > ssl ) ;
setPort ( m_reconnectDetails - > port ) ;
m_reconnectDetails . reset ( ) ;
const auto e = tryConnect ( ) ;
if ( e ! = IRCError : : NoError )
qWarning ( ) < < " tryConnect returned: " < < QString : : fromStdString ( IRCErrorToString ( e ) ) ;
}
else {
emit disconnected ( ) ;
emit memberListClearedForAll ( ) ;
if ( m_disconnectForExit )
emit readyForExit ( ) ;
contextualScriptEvent ( & m_status , ScriptEvent : : Disconnected ) ;
if ( m_reconnectDetails . has_value ( ) ) {
setHostname ( m_reconnectDetails - > host , m_reconnectDetails - > ssl ) ;
setPort ( m_reconnectDetails - > port ) ;
m_reconnectDetails . reset ( ) ;
const auto e = tryConnect ( ) ;
if ( e ! = IRCError : : NoError )
qWarning ( ) < < " tryConnect returned: " < < QString : : fromStdString ( IRCErrorToString ( e ) ) ;
}
else {
auto & conf = ConfigMgr : : instance ( ) ;
bool reconnect = conf . common ( " Reconnect " ) . toInt ( ) ;
if ( reconnect & & ! m_expectDisconnect ) {
@ -193,18 +193,18 @@ void IRC::onMsgNick(const IRCPrefix& sender, const std::string& newNickname, con
else
msg = fmt : : format ( " {} is now known as {} " , sender . toString ( ) , newNickname ) ;
for ( const auto & channelName : channelsAffected ) {
auto channel = getChannel ( channelName ) ;
auto memberOpt = channel - > getMember ( newNickname ) ;
if ( ! memberOpt )
continue ;
for ( const auto & channelName : channelsAffected ) {
auto channel = getChannel ( channelName ) ;
auto memberOpt = channel - > getMember ( newNickname ) ;
if ( ! memberOpt )
continue ;
if ( ! ignoreVerbosity ( Command : : IRC : : NICK ) )
m_status . printTo ( channelName . c_str ( ) , PrintType : : Nick , msg . c_str ( ) ) ;
if ( ! ignoreVerbosity ( Command : : IRC : : NICK ) )
m_status . printTo ( channelName . c_str ( ) , PrintType : : Nick , msg . c_str ( ) ) ;
const auto & member = memberOpt - > get ( ) ;
emit memberChanged ( sender . toString ( ) . c_str ( ) , member ) ;
}
const auto & member = memberOpt - > get ( ) ;
emit memberChanged ( sender . toString ( ) . c_str ( ) , member ) ;
}
auto pm = MdiManager : : instance ( ) . findWindow ( & m_status , QString : : fromStdString ( sender . toString ( ) ) ) ;
auto pmNewExisting = MdiManager : : instance ( ) . findWindow ( & m_status , QString : : fromStdString ( newNickname ) ) ;
@ -218,16 +218,16 @@ void IRC::onMsgNick(const IRCPrefix& sender, const std::string& newNickname, con
pm - > refreshWindowTitle ( ) ;
}
contextualScriptEvent ( & m_status , ScriptEvent : : Nick , sender . toString ( ) , newNickname ) ;
contextualScriptEvent ( & m_status , ScriptEvent : : Nick , sender . toString ( ) , newNickname ) ;
}
void IRC : : onMsgMode ( const IRCPrefix & sender , const std : : string & target , const std : : string & modes , const std : : vector < std : : string > & args )
{
auto modemsg = modes ;
std : : for_each ( args . begin ( ) , args . end ( ) ,
[ & modemsg ] ( const std : : string & arg ) {
modemsg + = " " + arg ;
} ) ;
auto modemsg = modes ;
std : : for_each ( args . begin ( ) , args . end ( ) ,
[ & modemsg ] ( const std : : string & arg ) {
modemsg + = " " + arg ;
} ) ;
const auto & is = isupport ( ) ;
const auto & chantypes = is . at ( " CHANTYPES " ) ; // Chantypes is always present.
@ -266,20 +266,20 @@ void IRC::onMsgMode(const IRCPrefix& sender, const std::string& target, const st
/* User-mode changed */
else if ( ! ignoreVerbosity ( Command : : IRC : : MODE ) ) {
/* We changed our own usermode */
if ( target = = getNickname ( ) ) {
const std : : string msg = fmt : : format ( " Your usermode changed: {} " , modemsg ) ;
getStatus ( ) . print ( PrintType : : Mode , msg . c_str ( ) ) ;
}
/* We changed our own usermode */
if ( target = = getNickname ( ) ) {
const std : : string msg = fmt : : format ( " Your usermode changed: {} " , modemsg ) ;
getStatus ( ) . print ( PrintType : : Mode , msg . c_str ( ) ) ;
}
/* Probably not possible, but someone set someone elses usermode and we got the message about it */
else {
const std : : string msg = fmt : : format ( " {} changed usermode for {}: {} " , sender . toString ( ) , target , modemsg ) ;
getStatus ( ) . print ( PrintType : : Mode , msg . c_str ( ) ) ;
}
}
/* Probably not possible, but someone set someone elses usermode and we got the message about it */
else {
const std : : string msg = fmt : : format ( " {} changed usermode for {}: {} " , sender . toString ( ) , target , modemsg ) ;
getStatus ( ) . print ( PrintType : : Mode , msg . c_str ( ) ) ;
}
}
contextualScriptEvent ( & m_status , ScriptEvent : : Mode , sender . toString ( ) , target , modemsg ) ;
contextualScriptEvent ( & m_status , ScriptEvent : : Mode , sender . toString ( ) , target , modemsg ) ;
}
void IRC : : onMsgQuit ( const IRCPrefix & sender , const std : : string & message , const std : : vector < std : : string > & channelsAffected )
@ -293,157 +293,157 @@ void IRC::onMsgQuit(const IRCPrefix& sender, const std::string& message, const s
if ( channelsAffected . empty ( ) & & ! ignoreVerbosity ( Command : : IRC : : QUIT ) )
m_status . print ( PrintType : : Quit , msg . c_str ( ) ) ;
for ( const auto & channelName : channelsAffected ) {
auto channel = getChannel ( channelName ) ;
auto memberOpt = channel - > getMember ( sender . nickname ( ) ) ;
if ( ! memberOpt )
continue ;
for ( const auto & channelName : channelsAffected ) {
auto channel = getChannel ( channelName ) ;
auto memberOpt = channel - > getMember ( sender . nickname ( ) ) ;
if ( ! memberOpt )
continue ;
if ( ! ignoreVerbosity ( Command : : IRC : : QUIT ) ) {
m_status . printTo ( channelName . c_str ( ) , PrintType : : Quit , msg . c_str ( ) ) ;
}
if ( ! ignoreVerbosity ( Command : : IRC : : QUIT ) ) {
m_status . printTo ( channelName . c_str ( ) , PrintType : : Quit , msg . c_str ( ) ) ;
}
const auto & member = memberOpt - > get ( ) ;
emit memberRemoved ( channelName . c_str ( ) , member ) ;
}
const auto & member = memberOpt - > get ( ) ;
emit memberRemoved ( channelName . c_str ( ) , member ) ;
}
contextualScriptEvent ( & m_status , ScriptEvent : : Quit , sender . nickname ( ) , message ) ;
contextualScriptEvent ( & m_status , ScriptEvent : : Quit , sender . nickname ( ) , message ) ;
}
void IRC : : onMsgJoin ( const IRCPrefix & sender , const std : : string & target )
{
/* We joined a channel */
if ( sender . nickname ( ) = = getNickname ( ) ) {
auto * subwin = getStatus ( ) . createChannelWindow ( target . c_str ( ) ) ;
if ( ! ignoreVerbosity ( Command : : IRC : : JOIN ) ) {
const std : : string msg = fmt : : format ( " Now talking in {} " , target ) ;
subwin - > print ( PrintType : : ServerInfo , msg . c_str ( ) ) ;
}
subwin - > refreshWindowTitle ( ) ;
command ( Command : : IRC : : MODE , { target } ) ;
}
/* Someone else joined a channel */
else {
if ( ! ignoreVerbosity ( Command : : IRC : : JOIN ) ) {
const std : : string msg = fmt : : format ( " Join: {} ({}@{}) " , sender . nickname ( ) , sender . user ( ) , sender . host ( ) ) ;
getStatus ( ) . printTo ( target . c_str ( ) , PrintType : : Join , msg . c_str ( ) ) ;
}
auto channel = getChannel ( target ) ;
auto memberOpt = channel - > getMember ( sender . nickname ( ) ) ;
if ( memberOpt )
emit memberAdded ( target . c_str ( ) , memberOpt - > get ( ) ) ;
}
contextualScriptEvent ( & m_status , ScriptEvent : : Join , sender . nickname ( ) , target ) ;
/* We joined a channel */
if ( sender . nickname ( ) = = getNickname ( ) ) {
auto * subwin = getStatus ( ) . createChannelWindow ( target . c_str ( ) ) ;
if ( ! ignoreVerbosity ( Command : : IRC : : JOIN ) ) {
const std : : string msg = fmt : : format ( " Now talking in {} " , target ) ;
subwin - > print ( PrintType : : ServerInfo , msg . c_str ( ) ) ;
}
subwin - > refreshWindowTitle ( ) ;
command ( Command : : IRC : : MODE , { target } ) ;
}
/* Someone else joined a channel */
else {
if ( ! ignoreVerbosity ( Command : : IRC : : JOIN ) ) {
const std : : string msg = fmt : : format ( " Join: {} ({}@{}) " , sender . nickname ( ) , sender . user ( ) , sender . host ( ) ) ;
getStatus ( ) . printTo ( target . c_str ( ) , PrintType : : Join , msg . c_str ( ) ) ;
}
auto channel = getChannel ( target ) ;
auto memberOpt = channel - > getMember ( sender . nickname ( ) ) ;
if ( memberOpt )
emit memberAdded ( target . c_str ( ) , memberOpt - > get ( ) ) ;
}
contextualScriptEvent ( & m_status , ScriptEvent : : Join , sender . nickname ( ) , target ) ;
}
void IRC : : onMsgPart ( const IRCPrefix & sender , const std : : string & target , const std : : string & message )
{
if ( ! ignoreVerbosity ( Command : : IRC : : PART ) ) {
std : : string msg ;
if ( msg . empty ( ) )
msg = fmt : : format ( " Part: {} ({}@{}) " , sender . nickname ( ) , sender . user ( ) , sender . host ( ) ) ;
else
msg = fmt : : format ( " Part: {} ({}@{}) ({}) " , sender . nickname ( ) , sender . user ( ) , sender . host ( ) , message ) ;
getStatus ( ) . printTo ( target . c_str ( ) , PrintType : : Part , msg . c_str ( ) ) ;
}
if ( ! ignoreVerbosity ( Command : : IRC : : PART ) ) {
std : : string msg ;
if ( msg . empty ( ) )
msg = fmt : : format ( " Part: {} ({}@{}) " , sender . nickname ( ) , sender . user ( ) , sender . host ( ) ) ;
else
msg = fmt : : format ( " Part: {} ({}@{}) ({}) " , sender . nickname ( ) , sender . user ( ) , sender . host ( ) , message ) ;
getStatus ( ) . printTo ( target . c_str ( ) , PrintType : : Part , msg . c_str ( ) ) ;
}
/* We left a channel */
if ( sender . nickname ( ) = = getNickname ( ) )
emit memberListReloaded ( target . c_str ( ) ) ;
/* We left a channel */
if ( sender . nickname ( ) = = getNickname ( ) )
emit memberListReloaded ( target . c_str ( ) ) ;
/* Someone else left a channel */
else {
auto channel = getChannel ( target ) ;
auto memberOpt = channel - > getMember ( sender . nickname ( ) ) ;
if ( memberOpt )
emit memberRemoved ( target . c_str ( ) , memberOpt - > get ( ) ) ;
}
/* Someone else left a channel */
else {
auto channel = getChannel ( target ) ;
auto memberOpt = channel - > getMember ( sender . nickname ( ) ) ;
if ( memberOpt )
emit memberRemoved ( target . c_str ( ) , memberOpt - > get ( ) ) ;
}
contextualScriptEvent ( & m_status , ScriptEvent : : Part , sender . nickname ( ) , target , message ) ;
contextualScriptEvent ( & m_status , ScriptEvent : : Part , sender . nickname ( ) , target , message ) ;
}
void IRC : : onMsgTopic ( const IRCPrefix & sender , const std : : string & target , const std : : string & topic )
{
if ( ! ignoreVerbosity ( Command : : IRC : : TOPIC ) ) {
std : : string msg ;
if ( topic . empty ( ) )
if ( ! ignoreVerbosity ( Command : : IRC : : TOPIC ) ) {
std : : string msg ;
if ( topic . empty ( ) )
msg = fmt : : format ( " {} removed the topic " , sender . toString ( ) ) ;
else
else
msg = fmt : : format ( " {} set the topic to: {} " , sender . toString ( ) , topic ) ;
getStatus ( ) . printTo ( target . c_str ( ) , PrintType : : Topic , msg . c_str ( ) ) ;
}
getStatus ( ) . printTo ( target . c_str ( ) , PrintType : : Topic , msg . c_str ( ) ) ;
}
auto subwin = MdiManager : : instance ( ) . findWindow ( & getStatus ( ) , QString : : fromStdString ( target ) ) ;
if ( subwin )
subwin - > refreshWindowTitle ( ) ;
auto subwin = MdiManager : : instance ( ) . findWindow ( & getStatus ( ) , QString : : fromStdString ( target ) ) ;
if ( subwin )
subwin - > refreshWindowTitle ( ) ;
contextualScriptEvent ( & m_status , ScriptEvent : : Topic , sender . toString ( ) , target , topic ) ;
contextualScriptEvent ( & m_status , ScriptEvent : : Topic , sender . toString ( ) , target , topic ) ;
}
void IRC : : onMsgInvite ( const IRCPrefix & sender , const std : : string & target )
{
if ( ! ignoreVerbosity ( Command : : IRC : : INVITE ) ) {
const std : : string msg = fmt : : format ( " {} invited you to join {} " , sender . toString ( ) , target ) ;
if ( ! ignoreVerbosity ( Command : : IRC : : INVITE ) ) {
const std : : string msg = fmt : : format ( " {} invited you to join {} " , sender . toString ( ) , target ) ;
auto * win = getStatus ( ) . getActiveWindow ( ) ;
win - > print ( PrintType : : Invite , msg . c_str ( ) ) ;
MdiManager : : instance ( ) . highlight ( win , HL_Attention ) ;
emit showTrayMessage ( tr ( " Invited to channel " ) , QString : : fromStdString ( msg ) ) ;
}
}
contextualScriptEvent ( & m_status , ScriptEvent : : Invite , sender . toString ( ) , target ) ;
contextualScriptEvent ( & m_status , ScriptEvent : : Invite , sender . toString ( ) , target ) ;
}
void IRC : : onMsgKick ( const IRCPrefix & sender , const std : : string & target , const std : : string & who , const std : : string & reason )
{
std : : string msg ;
std : : string msg ;
/* We were kicked */
if ( who = = getNickname ( ) ) {
msg = fmt : : format ( " You were kicked out by {} ({}) " , sender . toString ( ) , reason ) ;
emit showTrayMessage ( tr ( " Kicked from channel " ) , QString : : fromStdString ( msg ) ) ;
emit memberListReset ( target . c_str ( ) ) ;
}
/* We were kicked */
if ( who = = getNickname ( ) ) {
msg = fmt : : format ( " You were kicked out by {} ({}) " , sender . toString ( ) , reason ) ;
emit showTrayMessage ( tr ( " Kicked from channel " ) , QString : : fromStdString ( msg ) ) ;
emit memberListReset ( target . c_str ( ) ) ;
}
/* Someone else were kicked */
else {
msg = fmt : : format ( " {} kicked out {} ({}) " , sender . toString ( ) , who , reason ) ;
/* Someone else were kicked */
else {
msg = fmt : : format ( " {} kicked out {} ({}) " , sender . toString ( ) , who , reason ) ;
auto channel = getChannel ( target ) ;
auto memberOpt = channel - > getMember ( who ) ;
if ( memberOpt )
emit memberRemoved ( target . c_str ( ) , memberOpt - > get ( ) ) ;
}
auto channel = getChannel ( target ) ;
auto memberOpt = channel - > getMember ( who ) ;
if ( memberOpt )
emit memberRemoved ( target . c_str ( ) , memberOpt - > get ( ) ) ;
}
if ( ! ignoreVerbosity ( Command : : IRC : : KICK ) ) {
if ( ! ignoreVerbosity ( Command : : IRC : : KICK ) ) {
auto * win = MdiManager : : instance ( ) . findWindow ( & getStatus ( ) , target . c_str ( ) ) ;
win - > print ( PrintType : : Kick , msg . c_str ( ) ) ;
if ( who = = getNickname ( ) )
MdiManager : : instance ( ) . highlight ( win , HL_Attention ) ;
}
contextualScriptEvent ( & m_status , ScriptEvent : : Kick , sender . toString ( ) , who , target , reason ) ;
contextualScriptEvent ( & m_status , ScriptEvent : : Kick , sender . toString ( ) , who , target , reason ) ;
}
void IRC : : onMsgPrivmsg ( const IRCPrefix & sender , const std : : string & target , const std : : string & message )
{
if ( ! ignoreVerbosity ( Command : : IRC : : PRIVMSG ) ) {
const auto & is = isupport ( ) ;
const auto & chantypes = is . at ( " CHANTYPES " ) ; // Chantypes is always present.
const auto messageHasMyNick = QString : : fromStdString ( message ) . contains ( QString : : fromStdString ( getNickname ( ) ) , Qt : : CaseInsensitive ) ;
if ( ! ignoreVerbosity ( Command : : IRC : : PRIVMSG ) ) {
const auto & is = isupport ( ) ;
const auto & chantypes = is . at ( " CHANTYPES " ) ; // Chantypes is always present.
const auto messageHasMyNick = QString : : fromStdString ( message ) . contains ( QString : : fromStdString ( getNickname ( ) ) , Qt : : CaseInsensitive ) ;
PrintType ptype = PrintType : : Normal ;
if ( sender . nickname ( ) = = getNickname ( ) )
ptype = PrintType : : OwnText ;
else if ( messageHasMyNick )
ptype = PrintType : : Highlight ;
PrintType ptype = PrintType : : Normal ;
if ( sender . nickname ( ) = = getNickname ( ) )
ptype = PrintType : : OwnText ;
else if ( messageHasMyNick )
ptype = PrintType : : Highlight ;
Highlight hl = messageHasMyNick ? HL_Attention : HL_Message ;
Highlight hl = messageHasMyNick ? HL_Attention : HL_Message ;
/* Message to a channel */
if ( chantypes . find_first_of ( target [ 0 ] ) ! = std : : string : : npos ) {
/* Message to a channel */
if ( chantypes . find_first_of ( target [ 0 ] ) ! = std : : string : : npos ) {
auto * window = MdiManager : : instance ( ) . findWindow ( & getStatus ( ) , target . c_str ( ) ) ;
auto & conf = ConfigMgr : : instance ( ) ;
std : : string msg ;
@ -470,58 +470,58 @@ void IRC::onMsgPrivmsg(const IRCPrefix& sender, const std::string& target, const
emit showTrayMessage ( QString : : fromStdString ( target ) , QString : : fromStdString ( msg ) ) ;
}
/* Private message */
else {
auto * window = getStatus ( ) . createPrivateWindow ( sender . toString ( ) . c_str ( ) , false , hl ) ;
/* Private message */
else {
auto * window = getStatus ( ) . createPrivateWindow ( sender . toString ( ) . c_str ( ) , false , hl ) ;
const std : : string msg = fmt : : format ( " <{}> {} " , sender . toString ( ) , message ) ;
window - > print ( ptype , msg . c_str ( ) ) ;
MdiManager : : instance ( ) . highlight ( window , hl ) ;
emit showTrayMessage ( tr ( " Private message " ) , QString : : fromStdString ( msg ) ) ;
}
}
}
}
contextualScriptEvent ( & m_status , ScriptEvent : : Privmsg , sender . toString ( ) , target , message ) ;
contextualScriptEvent ( & m_status , ScriptEvent : : Privmsg , sender . toString ( ) , target , message ) ;
}
void IRC : : onMsgNotice ( const IRCPrefix & sender , const std : : string & target , const std : : string & message )
{
if ( ! ignoreVerbosity ( Command : : IRC : : NOTICE ) ) {
IWin * window ;
std : : string msg ;
if ( isChannelSymbol ( target [ 0 ] ) ) {
if ( ! ignoreVerbosity ( Command : : IRC : : NOTICE ) ) {
IWin * window ;
std : : string msg ;
if ( isChannelSymbol ( target [ 0 ] ) ) {
msg = fmt : : format ( " -{}({})- {} " , sender . toString ( ) , target , message ) ;
window = MdiManager : : instance ( ) . findWindow ( & getStatus ( ) , QString : : fromStdString ( target ) ) ;
}
else {
else {
msg = fmt : : format ( " -{}- {} " , sender . toString ( ) , message ) ;
window = getStatus ( ) . getActiveWindow ( ) ;
}
window - > print ( PrintType : : Notice , msg . c_str ( ) ) ;
MdiManager : : instance ( ) . highlight ( window , HL_Attention ) ;
emit showTrayMessage ( tr ( " Notice " ) , QString : : fromStdString ( msg ) ) ;
}
}
contextualScriptEvent ( & m_status , ScriptEvent : : Notice , sender . toString ( ) , target , message ) ;
contextualScriptEvent ( & m_status , ScriptEvent : : Notice , sender . toString ( ) , target , message ) ;
}
void IRC : : onMsgKill ( const IRCPrefix & sender , const std : : string & reason )
{
if ( ! ignoreVerbosity ( Command : : IRC : : KILL ) ) {
std : : string msg ;
if ( ! ignoreVerbosity ( Command : : IRC : : KILL ) ) {
std : : string msg ;
if ( sender . type ( ) = = IRCPrefix : : Type : : user )
msg = fmt : : format ( " You were forcibly disconnected by {} ({}@{}) ({}) " ,
sender . nickname ( ) , sender . user ( ) , sender . host ( ) , reason ) ;
else
msg = fmt : : format ( " You were forcibly disconnected by {} ({}) " ,
sender . servername ( ) , reason ) ;
if ( sender . type ( ) = = IRCPrefix : : Type : : user )
msg = fmt : : format ( " You were forcibly disconnected by {} ({}@{}) ({}) " ,
sender . nickname ( ) , sender . user ( ) , sender . host ( ) , reason ) ;
else
msg = fmt : : format ( " You were forcibly disconnected by {} ({}) " ,
sender . servername ( ) , reason ) ;
getStatus ( ) . print ( PrintType : : ServerInfo , msg . c_str ( ) ) ;
getStatus ( ) . print ( PrintType : : ServerInfo , msg . c_str ( ) ) ;
MdiManager : : instance ( ) . highlight ( & getStatus ( ) , HL_Attention ) ;
emit showTrayMessage ( tr ( " Disconnected " ) , QString : : fromStdString ( msg ) ) ;
}
}
contextualScriptEvent ( & m_status , ScriptEvent : : Kill , sender . toString ( ) , reason ) ;
contextualScriptEvent ( & m_status , ScriptEvent : : Kill , sender . toString ( ) , reason ) ;
}
void IRC : : onMsgPing ( const std : : string & message )
@ -536,25 +536,25 @@ void IRC::onMsgPong(const std::string& message)
void IRC : : onMsgError ( const std : : string & message )
{
if ( ! ignoreVerbosity ( Command : : IRC : : ERROR_ ) ) {
if ( ! ignoreVerbosity ( Command : : IRC : : ERROR_ ) ) {
getStatus ( ) . print ( PrintType : : ServerInfo , message . c_str ( ) ) ;
MdiManager : : instance ( ) . highlight ( & getStatus ( ) , HL_Attention ) ;
emit showTrayMessage ( tr ( " Disconnected " ) , QString : : fromStdString ( message ) ) ;
}
contextualScriptEvent ( & m_status , ScriptEvent : : Error , message ) ;
contextualScriptEvent ( & m_status , ScriptEvent : : Error , message ) ;
}
void IRC : : onMsgWallops ( const IRCPrefix & sender , const std : : string & message )
{
if ( ! ignoreVerbosity ( Command : : IRC : : WALLOPS ) ) {
const std : : string msg = fmt : : format ( " !{}! {} " , sender . toString ( ) , message ) ;
getStatus ( ) . print ( PrintType : : Wallops , msg . c_str ( ) ) ;
if ( ! ignoreVerbosity ( Command : : IRC : : WALLOPS ) ) {
const std : : string msg = fmt : : format ( " !{}! {} " , sender . toString ( ) , message ) ;
getStatus ( ) . print ( PrintType : : Wallops , msg . c_str ( ) ) ;
MdiManager : : instance ( ) . highlight ( & getStatus ( ) , HL_Attention ) ;
emit showTrayMessage ( tr ( " Wallops " ) , QString : : fromStdString ( msg ) ) ;
}
}
contextualScriptEvent ( & m_status , ScriptEvent : : Wallops , sender . toString ( ) , message ) ;
contextualScriptEvent ( & m_status , ScriptEvent : : Wallops , sender . toString ( ) , message ) ;
}
void IRC : : onMsgNumeric ( const IRCPrefix & /*sender*/ , const std : : string & num , const std : : vector < std : : string > & args , const std : : string & message )
@ -827,7 +827,7 @@ void IRC::onMsgCTCPRequest(const IRCPrefix& sender, const std::string& target, c
ctcpResponse ( sender . toString ( ) , command , message ) ;
}
contextualScriptEvent ( & m_status , ScriptEvent : : CtcpRequest , sender . toString ( ) , target , command , message ) ;
contextualScriptEvent ( & m_status , ScriptEvent : : CtcpRequest , sender . toString ( ) , target , command , message ) ;
}
void IRC : : onMsgCTCPResponse ( const IRCPrefix & sender , const std : : string & target , const std : : string & command , const std : : string & message )
@ -879,5 +879,5 @@ void IRC::v3onMsgAway(const IRCPrefix& sender, const std::string& message, const
void IRC : : v3onMsgJoin ( const IRCPrefix & sender , const std : : string & channel , const std : : string & useraccount , const std : : string & realname )
{
onMsgJoin ( sender , channel ) ;
onMsgJoin ( sender , channel ) ;
}