2011-07-02 23:03:18 +00:00
/*****************************************************************************
* PokerTH - The open source texas holdem engine *
* Copyright (C) 2006-2011 Felix Hammer, Florian Thauer, Lothar May *
* *
* This program is free software: you can redistribute it and/or modify *
* it under the terms of the GNU Affero General Public License as *
* published by the Free Software Foundation, either version 3 of the *
* License, or (at your option) any later version. *
* *
* This program 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 Affero General Public License for more details. *
* *
* You should have received a copy of the GNU Affero General Public License *
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
2011-07-03 19:45:08 +00:00
*****************************************************************************/
#include "myavatarlabel.h"
2008-05-05 07:46:19 +00:00
#include "gametableimpl.h"
2011-01-31 23:53:52 +00:00
#include "gametablestylereader.h"
2008-10-17 19:39:27 +00:00
#include "session.h"
#include "playerinterface.h"
#include "game.h"
2010-03-31 20:12:44 +00:00
#include "mymessagedialogimpl.h"
#include "chattools.h"
2008-05-05 07:46:19 +00:00
using namespace std ;
MyAvatarLabel :: MyAvatarLabel ( QGroupBox * parent )
2011-02-11 20:02:08 +00:00
: QLabel ( parent ), voteRunning ( FALSE ), transparent ( FALSE )
2008-05-05 07:46:19 +00:00
{
2011-02-11 20:02:08 +00:00
myContextMenu = new QMenu ;
2011-12-29 11:30:44 +00:00
action_EditTip = new QAction ( QIcon ( ":/gfx/user_properties.png" ), tr ( "Add/Edit/Remove tooltip" ), myContextMenu );
2011-02-11 20:02:08 +00:00
myContextMenu -> addAction ( action_EditTip );
action_VoteForKick = new QAction ( QIcon ( ":/gfx/list_remove_user.png" ), tr ( "Start vote to kick this player" ), myContextMenu );
myContextMenu -> addAction ( action_VoteForKick );
action_IgnorePlayer = new QAction ( QIcon ( ":/gfx/im-ban-user.png" ), tr ( "Ignore Player" ), myContextMenu );
myContextMenu -> addAction ( action_IgnorePlayer );
action_ReportBadAvatar = new QAction ( QIcon ( ":/gfx/emblem-important.png" ), tr ( "Report inappropriate avatar" ), myContextMenu );
myContextMenu -> addAction ( action_ReportBadAvatar );
2010-12-11 00:58:40 +00:00
2008-05-05 07:46:19 +00:00
2011-02-11 20:02:08 +00:00
connect ( action_VoteForKick , SIGNAL ( triggered () ), this , SLOT ( sendTriggerVoteOnKickSignal () ) );
connect ( action_IgnorePlayer , SIGNAL ( triggered () ), this , SLOT ( putPlayerOnIgnoreList () ) );
connect ( action_ReportBadAvatar , SIGNAL ( triggered () ), this , SLOT ( reportBadAvatar () ) );
connect ( action_EditTip , SIGNAL ( triggered () ), this , SLOT ( startEditTip () ) );
2008-05-05 07:46:19 +00:00
}
MyAvatarLabel ::~ MyAvatarLabel ()
{
}
2011-02-11 20:02:08 +00:00
void MyAvatarLabel :: contextMenuEvent ( QContextMenuEvent * event )
{
2008-05-05 07:46:19 +00:00
2011-02-11 20:02:08 +00:00
assert ( myW -> getSession () -> getCurrentGame ());
if ( myW -> getSession () -> isNetworkClientRunning ()) {
2008-12-07 21:47:53 +00:00
2011-02-11 20:02:08 +00:00
boost :: shared_ptr < PlayerInterface > humanPlayer = myW -> getSession () -> getCurrentGame () -> getSeatsList () -> front ();
//only active players are allowed to start a vote
if ( humanPlayer -> getMyActiveStatus ()) {
2008-10-17 19:39:27 +00:00
2011-01-12 22:37:33 +00:00
boost :: shared_ptr < Game > currentGame = myW -> getSession () -> getCurrentGame ();
2011-02-11 20:02:08 +00:00
PlayerListConstIterator it_c ;
int activePlayerCounter = 0 ;
PlayerList seatList = currentGame -> getSeatsList ();
2011-02-09 14:33:39 +00:00
for ( it_c = seatList -> begin (); it_c != seatList -> end (); ++ it_c ) {
2011-02-11 20:02:08 +00:00
if (( * it_c ) -> getMyActiveStatus ()) activePlayerCounter ++ ;
2011-01-31 23:53:52 +00:00
}
2011-02-11 20:02:08 +00:00
GameInfo info ( myW -> getSession () -> getClientGameInfo ( myW -> getSession () -> getClientCurrentGameId ()));
if ( activePlayerCounter > 2 && ! voteRunning && info . data . gameType != GAME_TYPE_RANKING && ! myW -> getGuestMode ()) {
setVoteOnKickContextMenuEnabled ( TRUE );
} else {
setVoteOnKickContextMenuEnabled ( FALSE );
2011-01-31 23:53:52 +00:00
}
2011-01-03 22:23:58 +00:00
2011-02-11 20:02:08 +00:00
action_IgnorePlayer -> setEnabled ( true );
action_EditTip -> setEnabled ( true );
int j = 0 ;
2011-02-09 14:33:39 +00:00
for ( it_c = seatList -> begin (); it_c != seatList -> end (); ++ it_c ) {
2011-01-03 21:55:35 +00:00
2011-02-11 20:02:08 +00:00
if ( myId == j ) {
if ( j == 0 ) {
action_EditTip -> setDisabled ( true );
}
if ( myW -> myStartWindow -> getSession () -> getGameType () == Session :: GAME_TYPE_NETWORK ) {
action_EditTip -> setDisabled ( true );
}
2011-01-03 21:55:35 +00:00
2011-02-11 20:02:08 +00:00
if ( myW -> getSession () -> getClientPlayerInfo (( * it_c ) -> getMyUniqueID ()). isGuest ) {
action_IgnorePlayer -> setDisabled ( true );
action_EditTip -> setDisabled ( true );
}
if ( myW -> getSession () -> getGameType () == Session :: GAME_TYPE_INTERNET && ! (( * it_c ) -> getMyAvatar (). empty ()) ) {
action_ReportBadAvatar -> setVisible ( TRUE );
} else {
action_ReportBadAvatar -> setVisible ( FALSE );
}
}
j ++ ;
}
int i = 0 ;
for ( it_c = seatList -> begin (); it_c != seatList -> end (); ++ it_c ) {
//also inactive player which stays on table can be voted to kick
if ( myContextMenuEnabled && myId != 0 && myId == i && ( * it_c ) -> getMyType () != PLAYER_TYPE_COMPUTER && ( ( * it_c ) -> getMyActiveStatus () || ( * it_c ) -> getMyStayOnTableStatus () ) )
showContextMenu ( event -> globalPos ());
i ++ ;
}
}
}
2008-05-05 07:46:19 +00:00
}
2011-02-11 20:02:08 +00:00
void MyAvatarLabel :: showContextMenu ( const QPoint & pos )
{
2008-05-05 07:46:19 +00:00
2011-02-11 20:02:08 +00:00
myContextMenu -> popup ( pos );
2008-09-23 08:15:33 +00:00
}
2011-01-31 23:53:52 +00:00
void MyAvatarLabel :: setPlayerRating ( QString playerInfo )
{
2011-02-11 20:02:08 +00:00
int found = 0 ;
QStringList playerInfoList = playerInfo . split ( " \" " , QString :: KeepEmptyParts , Qt :: CaseSensitive ), tipInfo ;
boost :: shared_ptr < Game > currentGame = myW -> myStartWindow -> getSession () -> getCurrentGame ();
PlayerListConstIterator it_c ;
PlayerList seatsList = currentGame -> getSeatsList ();
std :: list < std :: string > tipsList = myW -> getMyConfig () -> readConfigStringList ( "PlayerTooltips" );
std :: list < std :: string > result ;
std :: string separator = "(!#$%)" ;
std :: list < std :: string >:: iterator iterator ;
for ( iterator = tipsList . begin (); iterator != tipsList . end (); ++ iterator ) {
tipInfo = QString :: fromUtf8 ( iterator -> c_str ()). split ( "(!#$%)" , QString :: KeepEmptyParts , Qt :: CaseSensitive );
if ( tipInfo . at ( 0 ) == playerInfoList . at ( 0 )) {
result . push_back ( tipInfo . at ( 0 ). toUtf8 (). constData () + separator + tipInfo . at ( 1 ). toUtf8 (). constData () + separator + playerInfoList . at ( 1 ). toUtf8 (). constData () + separator );
found = 1 ;
} else {
result . push_back ( tipInfo . at ( 0 ). toUtf8 (). constData () + separator + tipInfo . at ( 1 ). toUtf8 (). constData () + separator + tipInfo . at ( 2 ). toUtf8 (). constData () + separator );
}
}
if ( found == 0 ) {
result . push_back ( playerInfoList . at ( 0 ). toUtf8 (). constData () + separator + separator + playerInfoList . at ( 1 ). toUtf8 (). constData () + separator );
}
myW -> getMyConfig () -> writeConfigStringList ( "PlayerTooltips" , result );
myW -> getMyConfig () -> writeBuffer ();
refreshStars ();
2011-01-31 23:53:52 +00:00
}
2011-02-11 20:02:08 +00:00
void MyAvatarLabel :: startChangePlayerTip ( QString playerName )
{
if ( myW -> tabWidget_Left -> widget ( 2 ) == myW -> tab_Kick ) {
myW -> tabWidget_Left -> insertTab ( 3 , myW -> tab_editTip , playerName );
myW -> tabWidget_Left -> setCurrentIndex ( 3 );
} else {
myW -> tabWidget_Left -> insertTab ( 2 , myW -> tab_editTip , playerName );
myW -> tabWidget_Left -> setCurrentIndex ( 2 );
}
myW -> textEdit_tipInput -> setPlainText ( getPlayerTip ( playerName ));
}
2011-01-31 23:53:52 +00:00
void MyAvatarLabel :: refreshStars ()
{
2011-02-11 20:02:08 +00:00
boost :: shared_ptr < Game > curGame = myW -> myStartWindow -> getSession () -> getCurrentGame ();
PlayerListConstIterator it_c ;
int seatPlace ;
PlayerList seatsList = curGame -> getSeatsList ();
for ( seatPlace = 0 , it_c = seatsList -> begin (); it_c != seatsList -> end (); ++ it_c , seatPlace ++ ) {
for ( int i = 1 ; i <= 5 ; i ++ ) myW -> playerStarsArray [ i ][ seatPlace ] -> setText ( "" );
if ( myW -> myStartWindow -> getSession () -> getGameType () == Session :: GAME_TYPE_INTERNET && ! myW -> getSession () -> getClientPlayerInfo (( * it_c ) -> getMyUniqueID ()). isGuest && ( * it_c ) -> getMyType () != PLAYER_TYPE_COMPUTER )
if (( * it_c ) -> getMyStayOnTableStatus () == TRUE && ( * it_c ) -> getMyName () != "" && seatPlace != 0 ) {
int playerStars = getPlayerRating ( QString :: fromUtf8 (( * it_c ) -> getMyName (). c_str ()));
for ( int i = 1 ; i <= 5 ; i ++ ) {
2012-01-01 21:41:32 +00:00
myW -> playerStarsArray [ i ][ seatPlace ] -> setText ( "<a style='color: #" + myW -> getMyGameTableStyle () -> getRatingStarsColor () + "; font-size: 12px;' href='" + QString :: fromUtf8 (( * it_c ) -> getMyName (). c_str ()) + " \" " + QString :: number ( i ) + "'>☆</a>" );
2011-02-11 20:02:08 +00:00
}
for ( int i = 1 ; i <= playerStars ; i ++ ) {
2012-01-01 21:41:32 +00:00
myW -> playerStarsArray [ i ][ seatPlace ] -> setText ( "<a style='color: #" + myW -> getMyGameTableStyle () -> getRatingStarsColor () + "; font-size: 12px;' href='" + QString :: fromUtf8 (( * it_c ) -> getMyName (). c_str ()) + " \" " + QString :: number ( i ) + "'>★</a>" );
2011-02-11 20:02:08 +00:00
}
2011-01-31 23:53:52 +00:00
2011-02-11 20:02:08 +00:00
}
2011-01-31 23:53:52 +00:00
}
}
2011-02-11 20:02:08 +00:00
void MyAvatarLabel :: refreshTooltips ()
{
2011-01-31 23:53:52 +00:00
boost :: shared_ptr < Game > currentGame = myW -> myStartWindow -> getSession () -> getCurrentGame ();
2011-02-11 20:02:08 +00:00
PlayerListConstIterator it_c ;
2011-01-31 23:53:52 +00:00
int seatPlace ;
2011-02-11 20:02:08 +00:00
PlayerList seatsList = currentGame -> getSeatsList ();
for ( seatPlace = 0 , it_c = seatsList -> begin (); it_c != seatsList -> end (); ++ it_c , seatPlace ++ ) {
if (( * it_c ) -> getMyStayOnTableStatus () == TRUE || ( * it_c ) -> getMyActiveStatus ()) {
bool computerPlayer = false ;
if (( * it_c ) -> getMyType () == PLAYER_TYPE_COMPUTER ) {
computerPlayer = true ;
}
2011-12-31 13:33:34 +00:00
if ( ! computerPlayer && getPlayerTip ( QString :: fromUtf8 (( * it_c ) -> getMyName (). c_str ())) != "" && seatPlace != 0 ) {
2011-02-11 20:02:08 +00:00
myW -> playerTipLabelArray [( * it_c ) -> getMyID ()] -> setText ( QString ( "<a style='text-decoration: none; color: #" + myW -> getMyGameTableStyle () -> getPlayerInfoHintTextColor () + "; font-size: 14px; font-weight: bold; font-family:serif;' href= \' " ) + QString :: fromUtf8 (( * it_c ) -> getMyName (). c_str ()) + " \' >i</a>" );
myW -> playerTipLabelArray [( * it_c ) -> getMyID ()] -> setToolTip ( getPlayerTip ( QString :: fromUtf8 (( * it_c ) -> getMyName (). c_str ())) );
myW -> playerAvatarLabelArray [( * it_c ) -> getMyID ()] -> setToolTip ( getPlayerTip ( QString :: fromUtf8 (( * it_c ) -> getMyName (). c_str ())) );
} else {
myW -> playerTipLabelArray [( * it_c ) -> getMyID ()] -> setText ( "" );
myW -> playerTipLabelArray [( * it_c ) -> getMyID ()] -> setToolTip ( "" );
myW -> playerAvatarLabelArray [( * it_c ) -> getMyID ()] -> setToolTip ( "" );
}
} else {
myW -> playerTipLabelArray [( * it_c ) -> getMyID ()] -> setText ( "" );
myW -> playerTipLabelArray [( * it_c ) -> getMyID ()] -> setToolTip ( "" );
myW -> playerAvatarLabelArray [( * it_c ) -> getMyID ()] -> setToolTip ( "" );
2011-01-31 23:53:52 +00:00
2011-02-11 20:02:08 +00:00
}
2011-01-31 23:53:52 +00:00
2011-02-11 20:02:08 +00:00
}
refreshStars ();
2011-01-31 23:53:52 +00:00
}
int MyAvatarLabel :: getPlayerRating ( QString playerName )
{
2011-02-11 20:02:08 +00:00
std :: list < std :: string > tipsList = myW -> getMyConfig () -> readConfigStringList ( "PlayerTooltips" );
std :: list < std :: string >:: iterator iterator ;
QStringList playerInfo ;
QString result = "0" ;
for ( iterator = tipsList . begin (); iterator != tipsList . end (); ++ iterator ) {
playerInfo = QString :: fromUtf8 ( iterator -> c_str ()). split ( "(!#$%)" , QString :: KeepEmptyParts , Qt :: CaseSensitive );
if ( playerInfo . at ( 0 ) == playerName ) {
result = playerInfo . at ( 2 );
break ;
2011-01-31 23:53:52 +00:00
}
2011-02-11 20:02:08 +00:00
}
return result . toInt ();
2011-01-31 23:53:52 +00:00
}
QString MyAvatarLabel :: getPlayerTip ( QString playerName )
{
2011-02-11 20:02:08 +00:00
std :: list < std :: string > tipsList = myW -> getMyConfig () -> readConfigStringList ( "PlayerTooltips" );
std :: list < std :: string >:: iterator iterator ;
QStringList playerInfo ;
for ( iterator = tipsList . begin (); iterator != tipsList . end (); ++ iterator ) {
playerInfo = QString :: fromUtf8 ( iterator -> c_str ()). split ( "(!#$%)" , QString :: KeepEmptyParts , Qt :: CaseSensitive );
if ( playerInfo . at ( 0 ) == playerName ) return playerInfo . at ( 1 );
}
return QString ( "" );
2011-01-31 23:53:52 +00:00
}
void MyAvatarLabel :: setPlayerTip ()
{
2011-02-11 20:02:08 +00:00
int found = 0 ;
2011-09-29 20:54:24 +00:00
//std::string rating="1";
std :: string separator = "(!#$%)" ;
2011-02-11 20:02:08 +00:00
std :: string tip = std :: string (( const char * ) myW -> textEdit_tipInput -> toPlainText (). toUtf8 ());
std :: string playerName ;
if ( myW -> tabWidget_Left -> widget ( 2 ) == myW -> tab_editTip ) playerName = myW -> tabWidget_Left -> tabText ( 2 ). toUtf8 (). constData ();
if ( myW -> tabWidget_Left -> widget ( 3 ) == myW -> tab_editTip ) playerName = myW -> tabWidget_Left -> tabText ( 3 ). toUtf8 (). constData ();
QStringList playerInfo ;
std :: list < std :: string > tipsList = myW -> getMyConfig () -> readConfigStringList ( "PlayerTooltips" );
std :: list < std :: string > result ;
std :: list < std :: string >:: iterator iterator ;
for ( iterator = tipsList . begin (); iterator != tipsList . end (); ++ iterator ) {
playerInfo = QString :: fromUtf8 ( iterator -> c_str ()). split ( "(!#$%)" , QString :: KeepEmptyParts , Qt :: CaseSensitive );
if ( QString :: fromUtf8 ( playerName . c_str ()) == playerInfo . at ( 0 )) {
result . push_back ( playerName + separator + QString :: fromUtf8 ( tip . c_str ()). toUtf8 (). constData () + separator + playerInfo . at ( 2 ). toStdString () + separator );
found = 1 ;
} else {
result . push_back ( playerInfo . at ( 0 ). toUtf8 (). constData () + separator + playerInfo . at ( 1 ). toUtf8 (). constData () + separator + playerInfo . at ( 2 ). toStdString () + separator );
}
}
if ( found == 0 ) {
result . push_back ( playerName . c_str () + separator + QString :: fromUtf8 ( tip . c_str ()). toUtf8 (). constData () + separator + QString ( "0" ). toStdString () + separator );
}
myW -> getMyConfig () -> writeConfigStringList ( "PlayerTooltips" , result );
myW -> getMyConfig () -> writeBuffer ();
2011-01-31 23:53:52 +00:00
2011-02-11 20:02:08 +00:00
if ( myW -> tabWidget_Left -> widget ( 3 ) == myW -> tab_editTip ) {
myW -> tabWidget_Left -> removeTab ( 3 );
} else if ( myW -> tabWidget_Left -> widget ( 2 ) == myW -> tab_editTip ) {
myW -> tabWidget_Left -> removeTab ( 2 );
}
refreshTooltips ();
2011-01-31 23:53:52 +00:00
}
2008-10-12 19:36:46 +00:00
void MyAvatarLabel :: sendTriggerVoteOnKickSignal ()
2008-09-23 08:15:33 +00:00
{
2011-02-11 20:02:08 +00:00
myW -> triggerVoteOnKick ( myId );
2008-10-12 19:36:46 +00:00
}
void MyAvatarLabel :: setEnabledContextMenu ( bool b )
{
2011-02-11 20:02:08 +00:00
myContextMenuEnabled = b ;
2008-05-05 07:46:19 +00:00
}
2008-11-17 16:02:11 +00:00
void MyAvatarLabel :: setVoteOnKickContextMenuEnabled ( bool b )
{
2011-02-11 20:02:08 +00:00
action_VoteForKick -> setEnabled ( b );
2009-04-22 22:32:45 +00:00
}
2011-02-11 20:02:08 +00:00
void MyAvatarLabel :: setPixmap ( const QPixmap & pix , const bool trans )
{
2009-04-22 22:32:45 +00:00
2011-02-11 20:02:08 +00:00
myPixmap = pix . scaled ( 50 , 50 , Qt :: IgnoreAspectRatio , Qt :: SmoothTransformation );
transparent = trans ;
update ();
2009-04-22 22:32:45 +00:00
}
2011-02-11 20:02:08 +00:00
void MyAvatarLabel :: setPixmapAndCountry ( const QPixmap & pix , QString countryString , int seatPlace , const bool trans )
{
QPixmap resultAvatar ( pix . scaled ( 50 , 50 , Qt :: IgnoreAspectRatio , Qt :: SmoothTransformation ));
QPainter painter ( & resultAvatar );
int showCountryFlags = myW -> getMyConfig () -> readConfigInt ( "ShowCountryFlagInAvatar" );
if ( showCountryFlags && ! countryString . isEmpty ()) {
if ( seatPlace <= 2 || seatPlace >= 8 ) {
painter . drawPixmap ( resultAvatar . width () - ( QPixmap ( countryString )). width (), resultAvatar . height () - ( QPixmap ( countryString )). height (), QPixmap ( countryString ));
} else {
painter . drawPixmap ( resultAvatar . width () - ( QPixmap ( countryString )). width (), 0 , QPixmap ( countryString ));
}
2010-10-26 17:31:41 +00:00
}
2011-02-11 20:02:08 +00:00
painter . end ();
myPixmap = resultAvatar ;
transparent = trans ;
update ();
2010-10-26 17:31:41 +00:00
}
2011-02-11 20:02:08 +00:00
void MyAvatarLabel :: paintEvent ( QPaintEvent * )
{
2009-04-22 22:32:45 +00:00
2011-02-11 20:02:08 +00:00
QPainter painter ( this );
if ( transparent )
painter . setOpacity ( 0.4 );
else
painter . setOpacity ( 1.0 );
2009-04-22 22:32:45 +00:00
2011-02-11 20:02:08 +00:00
painter . drawPixmap ( 0 , 0 , myPixmap );
2009-04-22 22:32:45 +00:00
}
2011-02-11 20:02:08 +00:00
bool MyAvatarLabel :: playerIsOnIgnoreList ( QString playerName )
{
2010-03-31 20:12:44 +00:00
2011-02-11 20:02:08 +00:00
list < std :: string > playerIgnoreList = myW -> getMyConfig () -> readConfigStringList ( "PlayerIgnoreList" );
list < std :: string >:: iterator it1 ;
2011-02-09 16:25:05 +00:00
for ( it1 = playerIgnoreList . begin (); it1 != playerIgnoreList . end (); ++ it1 ) {
2010-03-31 20:12:44 +00:00
2011-02-11 20:02:08 +00:00
if ( playerName == QString :: fromUtf8 ( it1 -> c_str ())) {
return true ;
}
}
return false ;
2010-03-31 20:12:44 +00:00
}
2011-02-11 20:02:08 +00:00
void MyAvatarLabel :: putPlayerOnIgnoreList ()
{
2010-03-31 20:12:44 +00:00
2011-02-11 20:02:08 +00:00
QStringList list ;
PlayerListConstIterator it_c ;
PlayerList seatList = myW -> getSession () -> getCurrentGame () -> getSeatsList ();
2011-02-09 14:33:39 +00:00
for ( it_c = seatList -> begin (); it_c != seatList -> end (); ++ it_c ) {
2011-02-11 20:02:08 +00:00
list << QString :: fromUtf8 (( * it_c ) -> getMyName (). c_str ());
}
2010-03-31 20:12:44 +00:00
2011-02-11 20:02:08 +00:00
if ( ! playerIsOnIgnoreList ( list . at ( myId ))) {
2010-03-31 20:12:44 +00:00
2011-02-11 20:02:08 +00:00
myMessageDialogImpl dialog ( myW -> getMyConfig (), this );
if ( dialog . exec ( 4 , tr ( "You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list?" ). arg ( list . at ( myId )), tr ( "PokerTH - Question" ), QPixmap ( ":/gfx/im-ban-user_64.png" ), QDialogButtonBox :: Yes | QDialogButtonBox :: No , false ) == QDialog :: Accepted ) {
2010-03-31 20:12:44 +00:00
2011-02-11 20:02:08 +00:00
std :: list < std :: string > playerIgnoreList = myW -> getMyConfig () -> readConfigStringList ( "PlayerIgnoreList" );
playerIgnoreList . push_back ( list . at ( myId ). toUtf8 (). constData ());
myW -> getMyConfig () -> writeConfigStringList ( "PlayerIgnoreList" , playerIgnoreList );
myW -> getMyConfig () -> writeBuffer ();
2010-03-31 20:12:44 +00:00
2011-02-11 20:02:08 +00:00
myW -> getMyChat () -> refreshIgnoreList ();
2011-01-31 23:53:52 +00:00
}
2011-02-11 20:02:08 +00:00
}
}
void MyAvatarLabel :: reportBadAvatar ()
{
boost :: shared_ptr < Game > currentGame = myW -> getSession () -> getCurrentGame ();
int j = 0 ;
PlayerListConstIterator it_c ;
PlayerList seatList = currentGame -> getSeatsList ();
for ( it_c = seatList -> begin (); it_c != seatList -> end (); ++ it_c ) {
if ( myId == j ) {
QString avatar = QString :: fromUtf8 (( * it_c ) -> getMyAvatar (). c_str ());
if ( ! avatar . isEmpty ()) {
QString nick = QString :: fromUtf8 (( * it_c ) -> getMyName (). c_str ());
int ret = QMessageBox :: question ( this , tr ( "PokerTH - Question" ),
tr ( "Are you sure you want to report the avatar of \" %1 \" as inappropriate?" ). arg ( nick ), QMessageBox :: Yes | QMessageBox :: No );
if ( ret == QMessageBox :: Yes ) {
QFileInfo fi ( avatar );
myW -> getSession () -> reportBadAvatar (( * it_c ) -> getMyUniqueID (), fi . baseName (). toStdString ());
}
}
break ;
}
j ++ ;
}
}
void MyAvatarLabel :: startEditTip ()
{
boost :: shared_ptr < Game > currentGame = myW -> getSession () -> getCurrentGame ();
int j = 0 ;
PlayerListConstIterator it_c ;
PlayerList seatList = currentGame -> getSeatsList ();
for ( it_c = seatList -> begin (); it_c != seatList -> end (); ++ it_c ) {
if ( myId == j ) {
QString nick = QString :: fromUtf8 (( * it_c ) -> getMyName (). c_str ());
startChangePlayerTip ( nick );
break ;
}
j ++ ;
2011-01-31 23:53:52 +00:00
}
}