Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Donald Haase
Cockatrice
Commits
ead6ab3a
Commit
ead6ab3a
authored
Sep 17, 2015
by
Zach
Browse files
Merge pull request #1527 from woogerboy21/ban_mod_notify
Moderator ban notifications + Server PM functionality
parents
afc425e6
b0693299
Changes
6
Hide whitespace changes
Inline
Side-by-side
cockatrice/src/chatview.cpp
View file @
ead6ab3a
...
...
@@ -130,7 +130,7 @@ void ChatView::appendMessage(QString message, RoomMessageTypeFlags messageType,
lastSender
=
sender
;
// timestamp
if
(
showTimestamps
&&
!
sameSender
&&
!
sender
.
isEmpty
())
{
if
(
showTimestamps
&&
(
!
sameSender
||
sender
.
toLower
()
==
"servatrice"
)
&&
!
sender
.
isEmpty
())
{
QTextCharFormat
timeFormat
;
timeFormat
.
setForeground
(
QColor
(
SERVER_MESSAGE_COLOR
));
if
(
sender
.
isEmpty
())
...
...
@@ -139,31 +139,35 @@ void ChatView::appendMessage(QString message, RoomMessageTypeFlags messageType,
cursor
.
insertText
(
QDateTime
::
currentDateTime
().
toString
(
"[hh:mm:ss] "
));
}
// nickname
QTextCharFormat
senderFormat
;
if
(
tabSupervisor
&&
tabSupervisor
->
getUserInfo
()
&&
(
sender
==
QString
::
fromStdString
(
tabSupervisor
->
getUserInfo
()
->
name
())))
{
senderFormat
.
setForeground
(
QBrush
(
getCustomMentionColor
()));
senderFormat
.
setFontWeight
(
QFont
::
Bold
);
}
else
{
senderFormat
.
setForeground
(
QBrush
(
OTHER_USER_COLOR
));
if
(
playerBold
)
// nickname
if
(
sender
.
toLower
()
!=
"servatrice"
)
{
QTextCharFormat
senderFormat
;
if
(
tabSupervisor
&&
tabSupervisor
->
getUserInfo
()
&&
(
sender
==
QString
::
fromStdString
(
tabSupervisor
->
getUserInfo
()
->
name
())))
{
senderFormat
.
setForeground
(
QBrush
(
getCustomMentionColor
()));
senderFormat
.
setFontWeight
(
QFont
::
Bold
);
}
senderFormat
.
setAnchor
(
true
);
senderFormat
.
setAnchorHref
(
"user://"
+
QString
::
number
(
userLevel
)
+
"_"
+
sender
);
if
(
sameSender
)
{
cursor
.
insertText
(
" "
);
}
else
{
if
(
!
sender
.
isEmpty
()
&&
tabSupervisor
->
getUserListsTab
())
{
const
int
pixelSize
=
QFontInfo
(
cursor
.
charFormat
().
font
()).
pixelSize
();
QMap
<
QString
,
UserListTWI
*>
buddyList
=
tabSupervisor
->
getUserListsTab
()
->
getBuddyList
()
->
getUsers
();
cursor
.
insertImage
(
UserLevelPixmapGenerator
::
generatePixmap
(
pixelSize
,
userLevel
,
buddyList
.
contains
(
sender
)).
toImage
());
cursor
.
insertText
(
" "
);
}
else
{
senderFormat
.
setForeground
(
QBrush
(
OTHER_USER_COLOR
));
if
(
playerBold
)
senderFormat
.
setFontWeight
(
QFont
::
Bold
);
}
senderFormat
.
setAnchor
(
true
);
senderFormat
.
setAnchorHref
(
"user://"
+
QString
::
number
(
userLevel
)
+
"_"
+
sender
);
if
(
sameSender
)
{
cursor
.
insertText
(
" "
);
}
else
{
if
(
!
sender
.
isEmpty
()
&&
tabSupervisor
->
getUserListsTab
())
{
const
int
pixelSize
=
QFontInfo
(
cursor
.
charFormat
().
font
()).
pixelSize
();
QMap
<
QString
,
UserListTWI
*>
buddyList
=
tabSupervisor
->
getUserListsTab
()
->
getBuddyList
()
->
getUsers
();
cursor
.
insertImage
(
UserLevelPixmapGenerator
::
generatePixmap
(
pixelSize
,
userLevel
,
buddyList
.
contains
(
sender
)).
toImage
());
cursor
.
insertText
(
" "
);
}
cursor
.
setCharFormat
(
senderFormat
);
if
(
!
sender
.
isEmpty
())
sender
.
append
(
": "
);
cursor
.
insertText
(
sender
);
}
cursor
.
setCharFormat
(
senderFormat
);
if
(
!
sender
.
isEmpty
())
sender
.
append
(
": "
);
cursor
.
insertText
(
sender
);
}
// use different color for server messages
...
...
@@ -180,6 +184,9 @@ void ChatView::appendMessage(QString message, RoomMessageTypeFlags messageType,
defaultFormat
.
setFontItalic
(
true
);
break
;
}
}
else
if
(
sender
.
toLower
()
==
"servatrice"
)
{
defaultFormat
.
setForeground
(
Qt
::
darkGreen
);
defaultFormat
.
setFontWeight
(
QFont
::
Bold
);
}
cursor
.
setCharFormat
(
defaultFormat
);
...
...
cockatrice/src/tab_message.cpp
View file @
ead6ab3a
...
...
@@ -116,6 +116,8 @@ void TabMessage::processUserMessageEvent(const Event_UserMessage &event)
soundEngine
->
playSound
(
"private_message"
);
if
(
settingsCache
->
getShowMessagePopup
()
&&
shouldShowSystemPopup
(
event
))
showSystemPopup
(
event
);
if
(
QString
::
fromStdString
(
event
.
sender_name
()).
simplified
()
==
"Servatrice"
)
sayEdit
->
setDisabled
(
true
);
emit
userEvent
();
}
...
...
common/server.cpp
View file @
ead6ab3a
...
...
@@ -262,6 +262,18 @@ void Server::removeClient(Server_ProtocolHandler *client)
qDebug
()
<<
"Server::removeClient: removed"
<<
(
void
*
)
client
<<
";"
<<
clients
.
size
()
<<
"clients; "
<<
users
.
size
()
<<
"users left"
;
}
QList
<
QString
>
Server
::
getOnlineModeratorList
()
{
QList
<
QString
>
results
;
QReadLocker
clientsLocker
(
&
clientsLock
);
for
(
int
i
=
0
;
i
<
clients
.
size
();
++
i
)
{
ServerInfo_User
*
data
=
clients
[
i
]
->
getUserInfo
();
if
(
data
->
user_level
()
&
ServerInfo_User
::
IsModerator
||
data
->
user_level
()
&
ServerInfo_User
::
IsAdmin
)
//TODO: this line should be updated in the event there is any type of new user level created
results
<<
QString
::
fromStdString
(
data
->
name
()).
simplified
();
}
return
results
;
}
void
Server
::
externalUserJoined
(
const
ServerInfo_User
&
userInfo
)
{
// This function is always called from the main thread via signal/slot.
...
...
@@ -617,4 +629,4 @@ void Server::sendIsl_RoomCommand(const CommandContainer &item, int serverId, qin
cont
->
set_room_id
(
roomId
);
emit
sigSendIslMessage
(
msg
,
serverId
);
}
}
\ No newline at end of file
common/server.h
View file @
ead6ab3a
...
...
@@ -55,6 +55,7 @@ public:
virtual
QMap
<
QString
,
bool
>
getServerRequiredFeatureList
()
const
{
return
QMap
<
QString
,
bool
>
();
}
void
addClient
(
Server_ProtocolHandler
*
player
);
void
removeClient
(
Server_ProtocolHandler
*
player
);
QList
<
QString
>
getOnlineModeratorList
();
virtual
QString
getLoginMessage
()
const
{
return
QString
();
}
virtual
bool
permitUnregisteredUsers
()
const
{
return
true
;
}
virtual
bool
getGameShouldPing
()
const
{
return
false
;
}
...
...
servatrice/src/serversocketinterface.cpp
View file @
ead6ab3a
...
...
@@ -51,6 +51,7 @@
#include
"pb/event_add_to_list.pb.h"
#include
"pb/event_remove_from_list.pb.h"
#include
"pb/event_notify_user.pb.h"
#include
"pb/event_user_message.pb.h"
#include
"pb/response_ban_history.pb.h"
#include
"pb/response_deck_list.pb.h"
#include
"pb/response_deck_download.pb.h"
...
...
@@ -520,6 +521,20 @@ void ServerSocketInterface::deckDelDirHelper(int basePathId)
sqlInterface
->
execSqlQuery
(
query
);
}
void
ServerSocketInterface
::
sendServerMessage
(
const
QString
userName
,
const
QString
message
)
{
ServerSocketInterface
*
user
=
static_cast
<
ServerSocketInterface
*>
(
server
->
getUsers
().
value
(
userName
));
if
(
user
)
{
Event_UserMessage
event
;
event
.
set_sender_name
(
"Servatrice"
);
event
.
set_receiver_name
(
userName
.
toStdString
());
event
.
set_message
(
message
.
toStdString
());
SessionEvent
*
se
=
user
->
prepareSessionEvent
(
event
);
user
->
sendProtocolItem
(
*
se
);
delete
se
;
}
}
Response
::
ResponseCode
ServerSocketInterface
::
cmdDeckDelDir
(
const
Command_DeckDelDir
&
cmd
,
ResponseContainer
&
/*rc*/
)
{
if
(
authState
!=
PasswordRight
)
...
...
@@ -795,7 +810,7 @@ Response::ResponseCode ServerSocketInterface::cmdBanFromServer(const Command_Ban
if
(
!
userName
.
isEmpty
())
{
ServerSocketInterface
*
user
=
static_cast
<
ServerSocketInterface
*>
(
server
->
getUsers
().
value
(
userName
));
if
(
user
)
if
(
user
&&
!
userList
.
contains
(
user
)
)
userList
.
append
(
user
);
}
...
...
@@ -831,6 +846,23 @@ Response::ResponseCode ServerSocketInterface::cmdBanFromServer(const Command_Ban
}
servatrice
->
clientsLock
.
unlock
();
QList
<
QString
>
moderatorList
=
server
->
getOnlineModeratorList
();
QListIterator
<
QString
>
modIterator
(
moderatorList
);
foreach
(
QString
moderator
,
moderatorList
)
{
QString
notificationMessage
=
"A ban has been put in with the following details:"
;
if
(
!
userName
.
isEmpty
())
notificationMessage
.
append
(
"
\n
Username: "
+
userName
);
if
(
!
address
.
isEmpty
())
notificationMessage
.
append
(
"
\n
IP Address: "
+
address
);
if
(
!
clientID
.
isEmpty
())
notificationMessage
.
append
(
"
\n
Client ID: "
+
clientID
);
notificationMessage
.
append
(
"
\n
Length: "
+
QString
::
number
(
minutes
)
+
" minute(s)"
);
notificationMessage
.
append
(
"
\n
Internal Reason: "
+
QString
::
fromStdString
(
cmd
.
reason
()));
notificationMessage
.
append
(
"
\n
Visible Reason: "
+
QString
::
fromStdString
(
cmd
.
visible_reason
()));
sendServerMessage
(
moderator
.
simplified
(),
notificationMessage
);
}
return
Response
::
RespOk
;
}
...
...
@@ -863,6 +895,9 @@ Response::ResponseCode ServerSocketInterface::cmdRegisterAccount(const Command_R
return
Response
::
RespUsernameInvalid
;
}
if
(
userName
.
toLower
()
==
"servatrice"
)
return
Response
::
RespUsernameInvalid
;
if
(
sqlInterface
->
userExists
(
userName
))
return
Response
::
RespUserAlreadyExists
;
...
...
servatrice/src/serversocketinterface.h
View file @
ead6ab3a
...
...
@@ -86,6 +86,7 @@ private:
Response
::
ResponseCode
cmdDeckList
(
const
Command_DeckList
&
cmd
,
ResponseContainer
&
rc
);
Response
::
ResponseCode
cmdDeckNewDir
(
const
Command_DeckNewDir
&
cmd
,
ResponseContainer
&
rc
);
void
deckDelDirHelper
(
int
basePathId
);
void
sendServerMessage
(
const
QString
userName
,
const
QString
message
);
Response
::
ResponseCode
cmdDeckDelDir
(
const
Command_DeckDelDir
&
cmd
,
ResponseContainer
&
rc
);
Response
::
ResponseCode
cmdDeckDel
(
const
Command_DeckDel
&
cmd
,
ResponseContainer
&
rc
);
Response
::
ResponseCode
cmdDeckUpload
(
const
Command_DeckUpload
&
cmd
,
ResponseContainer
&
rc
);
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment