ingame chat is disbaled for guest, ignore context menu ingame

This commit is contained in:
doitux
2010-03-31 20:12:44 +00:00
parent 43f477e299
commit c673c885f3
5 changed files with 2995 additions and 2914 deletions
+1 -1
View File
@@ -3561,7 +3561,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>1024</width> <width>1024</width>
<height>27</height> <height>26</height>
</rect> </rect>
</property> </property>
<widget class="QMenu" name="menuView"> <widget class="QMenu" name="menuView">
+22 -1
View File
@@ -58,7 +58,7 @@
using namespace std; using namespace std;
gameTableImpl::gameTableImpl(ConfigFile *c, QMainWindow *parent) gameTableImpl::gameTableImpl(ConfigFile *c, QMainWindow *parent)
: QMainWindow(parent), myChat(NULL), myConfig(c), gameSpeed(0), myActionIsBet(0), myActionIsRaise(0), pushButtonBetRaiseIsChecked(FALSE), pushButtonCallCheckIsChecked(FALSE), pushButtonFoldIsChecked(FALSE), pushButtonAllInIsChecked(FALSE), myButtonsAreCheckable(FALSE), breakAfterCurrentHand(FALSE), currentGameOver(FALSE), betSliderChangedByInput(FALSE), myLastPreActionBetValue(0) : QMainWindow(parent), myChat(NULL), myConfig(c), gameSpeed(0), myActionIsBet(0), myActionIsRaise(0), pushButtonBetRaiseIsChecked(FALSE), pushButtonCallCheckIsChecked(FALSE), pushButtonFoldIsChecked(FALSE), pushButtonAllInIsChecked(FALSE), myButtonsAreCheckable(FALSE), breakAfterCurrentHand(FALSE), currentGameOver(FALSE), betSliderChangedByInput(FALSE), guestMode(FALSE), myLastPreActionBetValue(0)
{ {
int i; int i;
@@ -2867,6 +2867,12 @@ void gameTableImpl::networkGameModification() {
//restore saved windows geometry //restore saved windows geometry
restoreGameTableGeometry(); restoreGameTableGeometry();
if(myStartWindow->getSession()->getClientPlayerInfo(myStartWindow->getSession()->getClientUniquePlayerId()).isGuest) {
guestUserMode();
}
else { registeredUserMode(); }
} }
void gameTableImpl::mouseOverFlipCards(bool front) { void gameTableImpl::mouseOverFlipCards(bool front) {
@@ -3392,3 +3398,18 @@ void gameTableImpl::netClientPlayerLeft(unsigned playerId) {
} }
} }
} }
void gameTableImpl::registeredUserMode()
{
lineEdit_ChatInput->clear();
lineEdit_ChatInput->setEnabled(true);
guestMode = false;
}
void gameTableImpl::guestUserMode()
{
lineEdit_ChatInput->setText("Chat is avaiable only for registered members");
lineEdit_ChatInput->setDisabled(true);
guestMode = true;
}
+9 -5
View File
@@ -59,14 +59,14 @@ public:
~gameTableImpl(); ~gameTableImpl();
boost::shared_ptr<Session> getSession(); boost::shared_ptr<Session> getSession();
void setStartWindow(startWindowImpl* s) { myStartWindow = s; }
void setLog(Log* l) { myLog = l; }
SDLPlayer* getMySDLPlayer() const { return mySDLPlayer; } SDLPlayer* getMySDLPlayer() const { return mySDLPlayer; }
ChatTools* getMyChat() const { return myChat; } ChatTools* getMyChat() const { return myChat; }
ConfigFile* getMyConfig() const { return myConfig; }
GameTableStyleReader* getMyGameTableStyle() const { return myGameTableStyle; } GameTableStyleReader* getMyGameTableStyle() const { return myGameTableStyle; }
bool getGuestMode() const { return guestMode; }
void setStartWindow(startWindowImpl* s) { myStartWindow = s; }
void setLog(Log* l) { myLog = l; }
void setSpeeds(); void setSpeeds();
@@ -303,6 +303,9 @@ public slots:
void restoreGameTableGeometry(); void restoreGameTableGeometry();
void netClientPlayerLeft(unsigned playerId); void netClientPlayerLeft(unsigned playerId);
void registeredUserMode();
void guestUserMode();
private: private:
boost::shared_ptr<GuiInterface> myServerGuiInterface; boost::shared_ptr<GuiInterface> myServerGuiInterface;
@@ -406,6 +409,7 @@ private:
bool currentGameOver; bool currentGameOver;
bool flipHolecardsAllInAlreadyDone; bool flipHolecardsAllInAlreadyDone;
bool betSliderChangedByInput; bool betSliderChangedByInput;
bool guestMode;
// statistic testing // statistic testing
int statisticArray[15]; int statisticArray[15];
+55 -2
View File
@@ -15,6 +15,8 @@
#include "session.h" #include "session.h"
#include "playerinterface.h" #include "playerinterface.h"
#include "game.h" #include "game.h"
#include "mymessagedialogimpl.h"
#include "chattools.h"
using namespace std; using namespace std;
@@ -23,10 +25,13 @@ MyAvatarLabel::MyAvatarLabel(QGroupBox* parent)
{ {
myContextMenu = new QMenu; myContextMenu = new QMenu;
action_VoteForKick = new QAction(QIcon(":/gfx/list_remove_user.png"), tr("Start vote to kick this user"), myContextMenu); action_VoteForKick = new QAction(QIcon(":/gfx/list_remove_user.png"), tr("Start vote to kick this player"), myContextMenu);
myContextMenu->addAction(action_VoteForKick); myContextMenu->addAction(action_VoteForKick);
action_IgnorePlayer = new QAction(QIcon(":/gfx/im-ban-user.png"), tr("Ignore Player"), myContextMenu);
myContextMenu->addAction(action_IgnorePlayer);
connect( action_VoteForKick, SIGNAL ( triggered() ), this, SLOT ( sendTriggerVoteOnKickSignal() ) ); connect( action_VoteForKick, SIGNAL ( triggered() ), this, SLOT ( sendTriggerVoteOnKickSignal() ) );
connect( action_IgnorePlayer, SIGNAL ( triggered() ), this, SLOT ( putPlayerOnIgnoreList() ) );
} }
@@ -37,7 +42,7 @@ MyAvatarLabel::~MyAvatarLabel()
void MyAvatarLabel::contextMenuEvent ( QContextMenuEvent *event ) { void MyAvatarLabel::contextMenuEvent ( QContextMenuEvent *event ) {
assert(myW->getSession()->getCurrentGame()); assert(myW->getSession()->getCurrentGame());
if (myW->getSession()->isNetworkClientRunning()) { if (myW->getSession()->isNetworkClientRunning() && !myW->getGuestMode()) {
PlayerListIterator it = myW->getSession()->getCurrentGame()->getSeatsList()->begin(); PlayerListIterator it = myW->getSession()->getCurrentGame()->getSeatsList()->begin();
//only active players are allowed to start a vote //only active players are allowed to start a vote
@@ -53,6 +58,17 @@ void MyAvatarLabel::contextMenuEvent ( QContextMenuEvent *event ) {
if(activePlayerCounter > 2 && !voteRunning ) setVoteOnKickContextMenuEnabled(TRUE); if(activePlayerCounter > 2 && !voteRunning ) setVoteOnKickContextMenuEnabled(TRUE);
else setVoteOnKickContextMenuEnabled(FALSE); else setVoteOnKickContextMenuEnabled(FALSE);
action_IgnorePlayer->setEnabled(true);
int j=0;
for (it_c=currentGame->getSeatsList()->begin(); it_c!=currentGame->getSeatsList()->end(); it_c++) {
if(myId == j && myW->getSession()->getClientPlayerInfo((*it_c)->getMyUniqueID()).isGuest) {
action_IgnorePlayer->setDisabled(true);
}
j++;
}
int i=0; int i=0;
for (it_c=currentGame->getSeatsList()->begin(); it_c!=currentGame->getSeatsList()->end(); it_c++) { for (it_c=currentGame->getSeatsList()->begin(); it_c!=currentGame->getSeatsList()->end(); it_c++) {
@@ -105,3 +121,40 @@ void MyAvatarLabel::paintEvent(QPaintEvent*) {
painter.drawPixmap(0,0,myPixmap); painter.drawPixmap(0,0,myPixmap);
} }
bool MyAvatarLabel::playerIsOnIgnoreList(QString playerName) {
list<std::string> playerIgnoreList = myW->getMyConfig()->readConfigStringList("PlayerIgnoreList");
list<std::string>::iterator it1;
for(it1= playerIgnoreList.begin(); it1 != playerIgnoreList.end(); it1++) {
if(playerName == QString::fromUtf8(it1->c_str())) {
return true;
}
}
return false;
}
void MyAvatarLabel::putPlayerOnIgnoreList() {
QStringList list;
PlayerListConstIterator it_c;
for (it_c=myW->getSession()->getCurrentGame()->getSeatsList()->begin(); it_c!=myW->getSession()->getCurrentGame()->getSeatsList()->end(); it_c++) {
list << QString::fromUtf8((*it_c)->getMyName().c_str());
}
if(!playerIsOnIgnoreList(list.at(myId))) {
myMessageDialogImpl dialog(myW->getMyConfig(), this);
if(dialog.exec(4, tr("You will no longer recieve 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) {
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();
myW->getMyChat()->refreshIgnoreList();
}
}
}
+5 -2
View File
@@ -37,15 +37,18 @@ public slots:
void setEnabledContextMenu(bool); void setEnabledContextMenu(bool);
void setVoteOnKickContextMenuEnabled(bool); void setVoteOnKickContextMenuEnabled(bool);
void setVoteRunning ( bool theValue ) { voteRunning = theValue; } void setVoteRunning ( bool theValue ) { voteRunning = theValue; }
void setPixmap ( const QPixmap &, const bool = FALSE); void setPixmap ( const QPixmap &, const bool = FALSE);
void paintEvent(QPaintEvent*); void paintEvent(QPaintEvent*);
void putPlayerOnIgnoreList();
bool playerIsOnIgnoreList(QString playerName);
private: private:
gameTableImpl *myW; gameTableImpl *myW;
QMenu *myContextMenu; QMenu *myContextMenu;
QAction *action_VoteForKick; QAction *action_VoteForKick;
QAction *action_IgnorePlayer;
QPixmap myPixmap; QPixmap myPixmap;
int myId; int myId;