diff --git a/pokerth_game.pro b/pokerth_game.pro
index 7c4b78c6..31b5a65f 100644
--- a/pokerth_game.pro
+++ b/pokerth_game.pro
@@ -195,7 +195,8 @@ HEADERS += src/game.h \
src/gui/qt/settingsdialog/mystylelistitem.h \
src/gui/qt/gamelobbydialog/mygamelistsortfilterproxymodel.h \
src/gui/qt/internetgamelogindialog/internetgamelogindialogimpl.h \
- src/engine/local_engine/replay.h
+ src/engine/local_engine/replay.h \
+ src/gui/qt/gamelobbydialog/mynicklistsortfilterproxymodel.h
FORMS += src/gui/qt/gametable.ui \
src/gui/qt/aboutpokerth.ui \
src/gui/qt/connecttoserverdialog.ui \
@@ -262,8 +263,9 @@ SOURCES += src/pokerth.cpp \
src/gui/qt/settingsdialog/mystylelistitem.cpp \
src/gui/qt/gamelobbydialog/mygamelistsortfilterproxymodel.cpp \
src/gui/qt/internetgamelogindialog/internetgamelogindialogimpl.cpp \
- src/engine/local_engine/replay.cpp
-TRANSLATIONS = ts/pokerth_af.ts \
+ src/engine/local_engine/replay.cpp \
+ src/gui/qt/gamelobbydialog/mynicklistsortfilterproxymodel.cpp
+TRANSLATIONS = ts/pokerth_af.ts \
ts/pokerth_bg.ts \
ts/pokerth_zhcn.ts \
ts/pokerth_ca.ts \
@@ -330,12 +332,12 @@ win32 {
-lidn
LIBS += -lcurl
LIBS += -lz
- LIBS += -lboost_thread-mgw45-mt-1_44.dll
- LIBS += -lboost_filesystem-mgw45-mt-1_44.dll
- LIBS += -lboost_regex-mgw45-mt-1_44
- LIBS += -lboost_system-mgw45-mt-1_44.dll
- LIBS += -lboost_iostreams-mgw45-mt-1_44.dll
- LIBS += -lboost_zlib-mgw45-mt-1_44.dll
+ LIBS += -lboost_thread-mgw45-mt-1_44.dll
+ LIBS += -lboost_filesystem-mgw45-mt-1_44.dll
+ LIBS += -lboost_regex-mgw45-mt-1_44
+ LIBS += -lboost_system-mgw45-mt-1_44.dll
+ LIBS += -lboost_iostreams-mgw45-mt-1_44.dll
+ LIBS += -lboost_zlib-mgw45-mt-1_44.dll
}
LIBS += -lgdi32 \
-lcomdlg32 \
diff --git a/src/gui/qt/gamelobbydialog.ui b/src/gui/qt/gamelobbydialog.ui
index ffd439e2..9353cb61 100644
--- a/src/gui/qt/gamelobbydialog.ui
+++ b/src/gui/qt/gamelobbydialog.ui
@@ -175,7 +175,7 @@
0
0
248
- 178
+ 170
@@ -672,12 +672,12 @@
- -
+
-
400
- 0
+ 223
@@ -714,7 +714,7 @@
- -
+
-
-
@@ -842,6 +842,25 @@ p, li { white-space: pre-wrap; }
+ -
+
+
-
+
+ No sorting / filtering
+
+
+ -
+
+ Sort by flag
+
+
+ -
+
+ Filter idle players
+
+
+
+
diff --git a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp
index 001cff90..c4ea6927 100644
--- a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp
+++ b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp
@@ -12,6 +12,7 @@
//
#include "gamelobbydialogimpl.h"
#include "mygamelistsortfilterproxymodel.h"
+#include "mynicklistsortfilterproxymodel.h"
#include "startwindowimpl.h"
#include "chattools.h"
#include "changecompleteblindsdialogimpl.h"
@@ -85,7 +86,7 @@ gameLobbyDialogImpl::gameLobbyDialogImpl(startWindowImpl *parent, ConfigFile *c)
treeView_GameList->setAutoFillBackground(TRUE);
myNickListModel = new QStandardItemModel(this);
- myNickListSortFilterProxyModel = new QSortFilterProxyModel(this);
+ myNickListSortFilterProxyModel = new MyNickListSortFilterProxyModel(this);
myNickListSortFilterProxyModel->setSourceModel(myNickListModel);
myNickListSortFilterProxyModel->setDynamicSortFilter(TRUE);
myNickListSortFilterProxyModel->setSortCaseSensitivity(Qt::CaseInsensitive);
@@ -126,6 +127,7 @@ gameLobbyDialogImpl::gameLobbyDialogImpl(startWindowImpl *parent, ConfigFile *c)
connect( blinkingButtonAnimationTimer, SIGNAL(timeout()), this, SLOT( blinkingStartButtonAnimation() ));
connect( showInfoMsgBoxTimer, SIGNAL(timeout()), this, SLOT( showInfoMsgBox() ));
connect( comboBox_gameListFilter, SIGNAL(currentIndexChanged(int)), this, SLOT(changeGameListFilter(int)));
+ connect( comboBox_nickListFilter, SIGNAL(currentIndexChanged(int)), this, SLOT(changeNickListFilter(int)));
connect( treeView_NickList, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT( showNickListContextMenu(QPoint) ) );
connect( nickListInviteAction, SIGNAL(triggered()), this, SLOT( invitePlayerToCurrentGame() ));
connect( nickListIgnorePlayerAction, SIGNAL(triggered()), this, SLOT( putPlayerOnIgnoreList() ));
@@ -866,12 +868,15 @@ void gameLobbyDialogImpl::updatePlayer(unsigned playerId, QString newPlayerName)
if (myNickListModel->item(it1, 0)->data(Qt::UserRole) == playerId) {
oldNick = myNickListModel->item(it1, 0)->text();
myNickListModel->item(it1, 0)->setText(newPlayerName);
+
PlayerInfo playerInfo(mySession->getClientPlayerInfo(playerId));
- if(!playerInfo.isGuest) {
- myNickListModel->item(it1, 0)->setIcon(QIcon(QString(":/cflags/cflags/%1.png").arg(QString::fromUtf8(mySession->getClientPlayerInfo(playerId).countryCode.c_str()).toLower())));
+ QString countryString = QString::fromUtf8(playerInfo.countryCode.c_str()).toLower();
+ myNickListModel->item(it1, 0)->setData(countryString, 33);
+ if(playerInfo.isGuest || countryString.isEmpty()) {
+ myNickListModel->item(it1, 0)->setIcon(QIcon(":/cflags/cflags/undefined.png"));
}
else {
- myNickListModel->item(it1, 0)->setIcon(QIcon());
+ myNickListModel->item(it1, 0)->setIcon(QIcon(QString(":/cflags/cflags/%1.png").arg(countryString)));
}
break;
}
@@ -916,11 +921,19 @@ void gameLobbyDialogImpl::playerLeftLobby(unsigned playerId)
void gameLobbyDialogImpl::playerJoinedLobby(unsigned playerId, QString /*playerName TODO remove*/)
{
PlayerInfo playerInfo(mySession->getClientPlayerInfo(playerId));
+ QString countryString = QString::fromUtf8(playerInfo.countryCode.c_str()).toLower();
QStandardItem *item = new QStandardItem;
item->setText(QString::fromUtf8(playerInfo.playerName.c_str()));
item->setData(playerId, Qt::UserRole);
- item->setIcon(QIcon(QString(":/cflags/cflags/%1.png").arg(QString::fromUtf8(mySession->getClientPlayerInfo(playerId).countryCode.c_str()).toLower())));
+ item->setData(countryString, 33);
+ if(playerInfo.isGuest || countryString.isEmpty()) {
+ item->setIcon(QIcon(":/cflags/cflags/undefined.png"));
+ }
+ else {
+ item->setIcon(QIcon(QString(":/cflags/cflags/%1.png").arg(countryString)));
+ }
+
myNickListModel->appendRow(item);
refreshPlayerStats();
@@ -1343,6 +1356,28 @@ void gameLobbyDialogImpl::changeGameListFilter(int index) {
}
+void gameLobbyDialogImpl::changeNickListFilter(int state)
+{
+ myNickListSortFilterProxyModel->setFilterState(state);
+ myNickListModel->sort(0, Qt::DescendingOrder);
+
+// switch(state) {
+// case 0: {
+//
+// }
+// break;
+// case 1: {
+//
+// }
+// break;
+// case 2: {
+//
+// }
+// break;
+// }
+
+}
+
void gameLobbyDialogImpl::changeGameListSorting() {
writeDialogSettings(0);
diff --git a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.h b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.h
index 6bd4844b..9e297b1e 100644
--- a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.h
+++ b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.h
@@ -29,6 +29,7 @@ class ConfigFile;
class ChatTools;
class startWindowImpl;
class MyGameListSortFilterProxyModel;
+class MyNickListSortFilterProxyModel;
/**
@author FThauer FHammer
@@ -99,6 +100,7 @@ public slots:
void writeDialogSettings(int);
void readDialogSettings();
void changeGameListFilter(int);
+ void changeNickListFilter(int);
void changeGameListSorting();
void registeredUserMode();
void guestUserMode();
@@ -151,7 +153,7 @@ private:
QStandardItemModel *myNickListModel;
QItemSelectionModel *myNickListSelectionModel;
- QSortFilterProxyModel *myNickListSortFilterProxyModel;
+ MyNickListSortFilterProxyModel *myNickListSortFilterProxyModel;
protected:
bool eventFilter(QObject *obj, QEvent *event);
diff --git a/src/gui/qt/gamelobbydialog/mynicklistsortfilterproxymodel.cpp b/src/gui/qt/gamelobbydialog/mynicklistsortfilterproxymodel.cpp
new file mode 100644
index 00000000..4abe186e
--- /dev/null
+++ b/src/gui/qt/gamelobbydialog/mynicklistsortfilterproxymodel.cpp
@@ -0,0 +1,67 @@
+#include "mynicklistsortfilterproxymodel.h"
+#include
+#include
+
+MyNickListSortFilterProxyModel::MyNickListSortFilterProxyModel(QObject *parent)
+ : QSortFilterProxyModel(parent), filterState(0)
+{
+}
+
+bool MyNickListSortFilterProxyModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const
+{
+
+ switch(filterState) {
+
+ case 0: {
+ return QSortFilterProxyModel::filterAcceptsRow(sourceRow, sourceParent);
+ }
+ break;
+ case 1: {
+ return QSortFilterProxyModel::filterAcceptsRow(sourceRow, sourceParent);
+ }
+ break;
+ case 2: {
+ return QSortFilterProxyModel::filterAcceptsRow(sourceRow, sourceParent);
+ }
+ break;
+
+ }
+
+// QModelIndex index0 = sourceModel()->index(sourceRow, 0, sourceParent);
+// QModelIndex index1 = sourceModel()->index(sourceRow, 1, sourceParent);
+// QModelIndex index2 = sourceModel()->index(sourceRow, 2, sourceParent);
+// QModelIndex index3 = sourceModel()->index(sourceRow, 3, sourceParent);
+// QModelIndex index4 = sourceModel()->index(sourceRow, 4, sourceParent);
+//
+// return ((sourceModel()->data(index1, 16).toString().contains(column1RegExp)
+// && sourceModel()->data(index2, 16).toString().contains(column2RegExp)
+// && sourceModel()->data(index3, 16).toString().contains(column3RegExp)
+// && sourceModel()->data(index4, 16).toString().contains(column4RegExp)) || sourceModel()->data(index0, 16) == "MeInThisGame");
+}
+
+bool MyNickListSortFilterProxyModel::lessThan(const QModelIndex &left, const QModelIndex &right) const
+{
+ switch(filterState) {
+
+ case 0: {
+ return QSortFilterProxyModel::lessThan(left, right);
+ }
+ break;
+ case 1: {
+ QString leftCountryAndName(sourceModel()->data(left, 33).toString().toUpper()+sourceModel()->data(left, Qt::DisplayRole).toString().toLower());
+ QString rightCountryAndName(sourceModel()->data(right, 33).toString().toUpper()+sourceModel()->data(right, Qt::DisplayRole).toString().toLower());
+ return leftCountryAndName < rightCountryAndName;
+ }
+ break;
+ case 2: {
+ return QSortFilterProxyModel::lessThan(left, right);
+ }
+ break;
+ }
+}
+
+void MyNickListSortFilterProxyModel::setFilterState(int state)
+{
+ filterState = state;
+}
+
diff --git a/src/gui/qt/gamelobbydialog/mynicklistsortfilterproxymodel.h b/src/gui/qt/gamelobbydialog/mynicklistsortfilterproxymodel.h
new file mode 100644
index 00000000..bdae0094
--- /dev/null
+++ b/src/gui/qt/gamelobbydialog/mynicklistsortfilterproxymodel.h
@@ -0,0 +1,26 @@
+#ifndef MYNICKLISTSORTFILTERPROXYMODEL_H
+#define MYNICKLISTSORTFILTERPROXYMODEL_H
+
+#include
+
+class MyNickListSortFilterProxyModel : public QSortFilterProxyModel
+{
+ Q_OBJECT
+
+public:
+ MyNickListSortFilterProxyModel(QObject *parent = 0);
+
+ void setFilterState(int state);
+
+protected:
+ bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const;
+ bool lessThan(const QModelIndex &left, const QModelIndex &right) const;
+
+private:
+
+ int filterState;
+
+
+};
+
+#endif // MYGAMELISTSORTFILTERPROXYMODEL_H
diff --git a/src/gui/qt/gametable/gametableimpl.cpp b/src/gui/qt/gametable/gametableimpl.cpp
index b5582413..855994c3 100755
--- a/src/gui/qt/gametable/gametableimpl.cpp
+++ b/src/gui/qt/gametable/gametableimpl.cpp
@@ -2051,12 +2051,9 @@ void gameTableImpl::postRiverRunAnimation2() {
//Wenn einmal umgedreht dann fertig!!
flipHolecardsAllInAlreadyDone = TRUE;
}
- else {
- int tempCardsIntArray[2];
+ else {
for (it_c=currentHand->getActivePlayerList()->begin(); it_c!=currentHand->getActivePlayerList()->end(); it_c++) {
- (*it_c)->getMyCards(tempCardsIntArray);
if((*it_c)->getMyAction() != PLAYER_ACTION_FOLD) {
-
//set Player value (logging) for all in already shown cards
(*it_c)->setMyCardsFlip(1,3);
}
@@ -2321,7 +2318,6 @@ void gameTableImpl::showHoleCards(unsigned playerId, bool allIn)
}
}
//set Player value (logging)
- qDebug() << "currentHand->getCurrentRound()" << currentHand->getCurrentRound();
if(currentHand->getCurrentRound() < 3 || allIn) {
(*it_c)->setMyCardsFlip(1,2); //for bero before postriver or allin just log the hole cards
}
diff --git a/src/gui/qt/resources/cflags/ch.png b/src/gui/qt/resources/cflags/ch.png
index 242ec01a..605eb3d0 100755
Binary files a/src/gui/qt/resources/cflags/ch.png and b/src/gui/qt/resources/cflags/ch.png differ
diff --git a/src/gui/qt/resources/cflags/np.png b/src/gui/qt/resources/cflags/np.png
index aeb058b7..4e7dd3d2 100755
Binary files a/src/gui/qt/resources/cflags/np.png and b/src/gui/qt/resources/cflags/np.png differ
diff --git a/src/gui/qt/resources/cflags/undefined.png b/src/gui/qt/resources/cflags/undefined.png
new file mode 100644
index 00000000..86e37b49
Binary files /dev/null and b/src/gui/qt/resources/cflags/undefined.png differ
diff --git a/src/gui/qt/resources/pokerth.qrc b/src/gui/qt/resources/pokerth.qrc
index 0cdb07f9..63b6fba2 100644
--- a/src/gui/qt/resources/pokerth.qrc
+++ b/src/gui/qt/resources/pokerth.qrc
@@ -95,7 +95,6 @@
cflags/cd.png
cflags/cf.png
cflags/cg.png
- cflags/ch.png
cflags/ci.png
cflags/ck.png
cflags/cl.png
@@ -219,7 +218,6 @@
cflags/ni.png
cflags/nl.png
cflags/no.png
- cflags/np.png
cflags/nr.png
cflags/nu.png
cflags/nz.png
@@ -301,5 +299,8 @@
cflags/za.png
cflags/zm.png
cflags/zw.png
+ cflags/ch.png
+ cflags/np.png
+ cflags/undefined.png