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