diff options
Diffstat (limited to 'src/crsm.cpp')
| -rw-r--r-- | src/crsm.cpp | 37 |
1 files changed, 19 insertions, 18 deletions
diff --git a/src/crsm.cpp b/src/crsm.cpp index e187123..be71967 100644 --- a/src/crsm.cpp +++ b/src/crsm.cpp @@ -569,9 +569,10 @@ void CRSM::ircMessageReceived(IrcMessage *message) IrcJoinMessage* joinMessage = (IrcJoinMessage*)message; QString joinChannel = joinMessage->channel(); - if(greetAllowed(ClientInfo::ircClient(joinMessage->nick(), joinMessage->channel()))) + auto setting = greetingSetting(ClientInfo::ircClient(joinMessage->nick(), joinMessage->channel())); + if(setting != GreetingSetting::Disabled) { - sendIrcMessage("Hallo, " + message->nick() + "!", joinChannel, false, false); + sendIrcMessage("Hallo, " + message->nick() + "!", joinChannel, false, setting == GreetingSetting::Notice); } if(joinChannel == Config.IRC.IngameChannel && Session.IRC.UseIngameChat) @@ -650,7 +651,7 @@ void CRSM::greet(QString pcName) const ClientInfo &info = Session.Clonk.Clients.value(pcName); - if(!greetAllowed(info)) + if(greetingSetting(info) == GreetingSetting::Disabled) { return; } @@ -2293,52 +2294,52 @@ void CRSM::sendIrcMessage(const QString& message, const QString& target, bool ac } } -bool CRSM::greetAllowed(const ClientInfo &client) +GreetingSetting::Mode CRSM::greetingSetting(const ClientInfo &client) { if(client.interface == Clonk && Config.CRSM.Greeting.contains(GreetingSetting::clonk()) && !Config.CRSM.Greeting.contains(GreetingSetting::clonk().invert())) { - return true; + return GreetingSetting::Normal; } else if(client.interface == IRC) { - int nickSetting = -1; - int chanSetting = -1; - int ircSetting = -1; + GreetingSetting::Mode nickSetting = GreetingSetting::Unset; + GreetingSetting::Mode chanSetting = GreetingSetting::Unset; + GreetingSetting::Mode ircSetting = GreetingSetting::Unset; foreach(const GreetingSetting& setting, Config.CRSM.Greeting) { if(setting.interface == IRC) { if(setting.target == client.nick) { - nickSetting = !setting.negative; + nickSetting = setting.mode; } else if(setting.target == client.target) { - chanSetting = !setting.negative; + chanSetting = setting.mode; } else if(setting.target.isEmpty()) { - ircSetting = !setting.negative; + ircSetting = setting.mode; } } } - if(nickSetting != -1) + if(nickSetting != GreetingSetting::Unset) { - return nickSetting != 0; + return nickSetting; } - if(chanSetting != -1) + if(chanSetting != GreetingSetting::Unset) { - return chanSetting != 0; + return chanSetting; } - if(ircSetting != -1) + if(ircSetting != GreetingSetting::Unset) { - return ircSetting != 0; + return ircSetting; } } - return false; + return GreetingSetting::Disabled; } void CRSM::handleIrcMessage(const ClientInfo &client, QString message, const QString &target, bool privateMessage, bool action, bool own) |
