add gamelist filter to the lobby
This commit is contained in:
@@ -29,7 +29,7 @@
|
|||||||
<property name="bottomMargin">
|
<property name="bottomMargin">
|
||||||
<number>4</number>
|
<number>4</number>
|
||||||
</property>
|
</property>
|
||||||
<item row="0" column="0" rowspan="3">
|
<item row="0" column="0" rowspan="4">
|
||||||
<widget class="QTreeWidget" name="treeWidget_NickList">
|
<widget class="QTreeWidget" name="treeWidget_NickList">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
<sizepolicy hsizetype="Fixed" vsizetype="Expanding">
|
<sizepolicy hsizetype="Fixed" vsizetype="Expanding">
|
||||||
@@ -65,7 +65,7 @@
|
|||||||
</column>
|
</column>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="2" rowspan="3">
|
<item row="0" column="2" rowspan="4">
|
||||||
<widget class="QGroupBox" name="groupBox_GameInfo">
|
<widget class="QGroupBox" name="groupBox_GameInfo">
|
||||||
<property name="enabled">
|
<property name="enabled">
|
||||||
<bool>false</bool>
|
<bool>false</bool>
|
||||||
@@ -368,7 +368,7 @@
|
|||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="1">
|
<item row="2" column="1">
|
||||||
<layout class="QHBoxLayout">
|
<layout class="QHBoxLayout">
|
||||||
<property name="spacing">
|
<property name="spacing">
|
||||||
<number>6</number>
|
<number>6</number>
|
||||||
@@ -415,7 +415,7 @@
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="1">
|
<item row="3" column="1">
|
||||||
<widget class="QGroupBox" name="groupBox_lobbyChat">
|
<widget class="QGroupBox" name="groupBox_lobbyChat">
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
@@ -423,6 +423,12 @@
|
|||||||
<height>0</height>
|
<height>0</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>16777215</width>
|
||||||
|
<height>230</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
<property name="title">
|
<property name="title">
|
||||||
<string>Lobby-Chat</string>
|
<string>Lobby-Chat</string>
|
||||||
</property>
|
</property>
|
||||||
@@ -442,7 +448,7 @@
|
|||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="0" colspan="3">
|
<item row="4" column="0" colspan="3">
|
||||||
<layout class="QHBoxLayout">
|
<layout class="QHBoxLayout">
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="label_connectedPlayersCounter">
|
<widget class="QLabel" name="label_connectedPlayersCounter">
|
||||||
@@ -494,7 +500,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="1">
|
<item row="1" column="1">
|
||||||
<widget class="QTreeView" name="treeView_GameList">
|
<widget class="QTreeView" name="treeView_GameList">
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
@@ -522,6 +528,70 @@ p, li { white-space: pre-wrap; }
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QComboBox" name="comboBox_gameListFilter">
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>0 - No game list filter</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>1 - Show open games</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>2 - Show open & non-full games</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>3 - Show open & non-full & non-private games</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>4 - Show open & non-full & private games</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>5 - Show open & non-private games</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>6 - Show open & private games</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>7 - Show non-full games</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>8 - Show non-full & non-private games</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>9 - Show non-full & private games</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>10 - Show non-private games</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>11 - Show private games</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<tabstops>
|
<tabstops>
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
//
|
//
|
||||||
//
|
//
|
||||||
#include "gamelobbydialogimpl.h"
|
#include "gamelobbydialogimpl.h"
|
||||||
|
#include "mygamelistsortfilterproxymodel.h"
|
||||||
#include "startwindowimpl.h"
|
#include "startwindowimpl.h"
|
||||||
#include "lobbychat.h"
|
#include "lobbychat.h"
|
||||||
#include "changecompleteblindsdialogimpl.h"
|
#include "changecompleteblindsdialogimpl.h"
|
||||||
@@ -45,7 +46,7 @@ gameLobbyDialogImpl::gameLobbyDialogImpl(startWindowImpl *parent, ConfigFile *c)
|
|||||||
waitStartGameMsgBoxTimer->setSingleShot(TRUE);
|
waitStartGameMsgBoxTimer->setSingleShot(TRUE);
|
||||||
|
|
||||||
myGameListModel = new QStandardItemModel(this);
|
myGameListModel = new QStandardItemModel(this);
|
||||||
myGameListSortFilterProxyModel = new QSortFilterProxyModel(this);
|
myGameListSortFilterProxyModel = new MyGameListSortFilterProxyModel(this);
|
||||||
myGameListSortFilterProxyModel->setSourceModel(myGameListModel);
|
myGameListSortFilterProxyModel->setSourceModel(myGameListModel);
|
||||||
myGameListSortFilterProxyModel->setDynamicSortFilter(TRUE);
|
myGameListSortFilterProxyModel->setDynamicSortFilter(TRUE);
|
||||||
treeView_GameList->setModel(myGameListSortFilterProxyModel);
|
treeView_GameList->setModel(myGameListSortFilterProxyModel);
|
||||||
@@ -78,7 +79,7 @@ gameLobbyDialogImpl::gameLobbyDialogImpl(startWindowImpl *parent, ConfigFile *c)
|
|||||||
connect( lineEdit_ChatInput, SIGNAL( textChanged (QString) ), myChat, SLOT( checkInputLength(QString) ) );
|
connect( lineEdit_ChatInput, SIGNAL( textChanged (QString) ), myChat, SLOT( checkInputLength(QString) ) );
|
||||||
connect( lineEdit_ChatInput, SIGNAL( textEdited (QString) ), myChat, SLOT( setChatTextEdited() ) );
|
connect( lineEdit_ChatInput, SIGNAL( textEdited (QString) ), myChat, SLOT( setChatTextEdited() ) );
|
||||||
connect( waitStartGameMsgBoxTimer, SIGNAL(timeout()), this, SLOT( showWaitStartGameMsgBox() ));
|
connect( waitStartGameMsgBoxTimer, SIGNAL(timeout()), this, SLOT( showWaitStartGameMsgBox() ));
|
||||||
|
connect( comboBox_gameListFilter, SIGNAL(currentIndexChanged(int)), this, SLOT(changeGameListFilter(int)));
|
||||||
|
|
||||||
lineEdit_ChatInput->installEventFilter(this);
|
lineEdit_ChatInput->installEventFilter(this);
|
||||||
|
|
||||||
@@ -198,6 +199,8 @@ void gameLobbyDialogImpl::joinGame()
|
|||||||
|
|
||||||
void gameLobbyDialogImpl::joinAnyGame() {
|
void gameLobbyDialogImpl::joinAnyGame() {
|
||||||
|
|
||||||
|
if(comboBox_gameListFilter->currentIndex() != 3 && comboBox_gameListFilter->currentIndex() != 0) comboBox_gameListFilter->setCurrentIndex(0);
|
||||||
|
|
||||||
bool found = FALSE;
|
bool found = FALSE;
|
||||||
|
|
||||||
int it = 0;
|
int it = 0;
|
||||||
@@ -208,12 +211,11 @@ void gameLobbyDialogImpl::joinAnyGame() {
|
|||||||
|
|
||||||
int players = myGameListModel->item(it, 1)->data(Qt::DisplayRole).toString().section("/",0,0).toInt();
|
int players = myGameListModel->item(it, 1)->data(Qt::DisplayRole).toString().section("/",0,0).toInt();
|
||||||
int maxPlayers = myGameListModel->item(it, 1)->data(Qt::DisplayRole).toString().section("/",1,1).toInt();
|
int maxPlayers = myGameListModel->item(it, 1)->data(Qt::DisplayRole).toString().section("/",1,1).toInt();
|
||||||
if (myGameListModel->item(it, 2)->data(Qt::DisplayRole) == tr("open") && myGameListModel->item(it, 3)->data(Qt::DisplayRole) == "" && players < maxPlayers)
|
if (myGameListModel->item(it, 2)->data(16) == "open" && myGameListModel->item(it, 3)->data(16) == "nonpriv" && players < maxPlayers)
|
||||||
{
|
{
|
||||||
if(players > mostConnectedPlayers) {
|
if(players > mostConnectedPlayers) {
|
||||||
mostConnectedPlayers = players;
|
mostConnectedPlayers = players;
|
||||||
gameToJoinId = it;
|
gameToJoinId = it;
|
||||||
qDebug() << mostConnectedPlayers << gameToJoinId;
|
|
||||||
}
|
}
|
||||||
found = TRUE;
|
found = TRUE;
|
||||||
}
|
}
|
||||||
@@ -224,7 +226,6 @@ void gameLobbyDialogImpl::joinAnyGame() {
|
|||||||
treeView_GameList->setCurrentIndex(myGameListSortFilterProxyModel->mapFromSource(myGameListModel->item(gameToJoinId)->index()));
|
treeView_GameList->setCurrentIndex(myGameListSortFilterProxyModel->mapFromSource(myGameListModel->item(gameToJoinId)->index()));
|
||||||
joinGame();
|
joinGame();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void gameLobbyDialogImpl::refresh(int actionID) {
|
void gameLobbyDialogImpl::refresh(int actionID) {
|
||||||
@@ -232,6 +233,14 @@ void gameLobbyDialogImpl::refresh(int actionID) {
|
|||||||
if (actionID == MSG_NET_GAME_CLIENT_START)
|
if (actionID == MSG_NET_GAME_CLIENT_START)
|
||||||
{
|
{
|
||||||
myGameListModel->clear();
|
myGameListModel->clear();
|
||||||
|
QStringList headerList;
|
||||||
|
headerList << tr("Game") << tr("Players") << tr("State") << tr("Private");
|
||||||
|
myGameListModel->setHorizontalHeaderLabels(headerList);
|
||||||
|
treeView_GameList->setColumnWidth(0,185);
|
||||||
|
treeView_GameList->setColumnWidth(1,65);
|
||||||
|
treeView_GameList->setColumnWidth(2,65);
|
||||||
|
treeView_GameList->setColumnWidth(3,65);
|
||||||
|
|
||||||
this->accept();
|
this->accept();
|
||||||
myW->show();
|
myW->show();
|
||||||
}
|
}
|
||||||
@@ -292,18 +301,26 @@ void gameLobbyDialogImpl::updateGameItem(QList <QStandardItem*> itemList, unsign
|
|||||||
QString playerStr;
|
QString playerStr;
|
||||||
playerStr.sprintf("%u/%u", (unsigned)info.players.size(), (unsigned)info.data.maxNumberOfPlayers);
|
playerStr.sprintf("%u/%u", (unsigned)info.players.size(), (unsigned)info.data.maxNumberOfPlayers);
|
||||||
itemList.at(1)->setData(playerStr, Qt::DisplayRole);
|
itemList.at(1)->setData(playerStr, Qt::DisplayRole);
|
||||||
|
if((unsigned)info.players.size() == (unsigned)info.data.maxNumberOfPlayers) { itemList.at(1)->setData("totalfull", 16); }
|
||||||
|
else { itemList.at(1)->setData("nonfull", 16); }\
|
||||||
|
|
||||||
if (info.mode == GAME_MODE_STARTED)
|
if (info.mode == GAME_MODE_STARTED) {
|
||||||
itemList.at(2)->setData(tr("running"), Qt::DisplayRole);
|
itemList.at(2)->setData(tr("running"), Qt::DisplayRole);
|
||||||
else
|
itemList.at(2)->setData("running", 16);
|
||||||
|
}
|
||||||
|
else {
|
||||||
itemList.at(2)->setData(tr("open"), Qt::DisplayRole);
|
itemList.at(2)->setData(tr("open"), Qt::DisplayRole);
|
||||||
|
itemList.at(2)->setData("open", 16);
|
||||||
|
}
|
||||||
|
|
||||||
if (info.isPasswordProtected) {
|
if (info.isPasswordProtected) {
|
||||||
itemList.at(3)->setIcon(QIcon(myAppDataPath+"gfx/gui/misc/lock.png"));
|
itemList.at(3)->setIcon(QIcon(myAppDataPath+"gfx/gui/misc/lock.png"));
|
||||||
itemList.at(3)->setData(" ", Qt::DisplayRole);
|
itemList.at(3)->setData(" ", Qt::DisplayRole);
|
||||||
|
itemList.at(3)->setData("private", 16);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
itemList.at(3)->setData("", Qt::DisplayRole);
|
itemList.at(3)->setData("", Qt::DisplayRole);
|
||||||
|
itemList.at(3)->setData("nonpriv", 16);
|
||||||
}
|
}
|
||||||
|
|
||||||
// treeView_GameList->sortByColumn(myConfig->readConfigInt("DlgGameLobbyGameListSortingSection"), (Qt::SortOrder)myConfig->readConfigInt("DlgGameLobbyGameListSortingOrder") );
|
// treeView_GameList->sortByColumn(myConfig->readConfigInt("DlgGameLobbyGameListSortingSection"), (Qt::SortOrder)myConfig->readConfigInt("DlgGameLobbyGameListSortingOrder") );
|
||||||
@@ -367,8 +384,8 @@ void gameLobbyDialogImpl::refreshGameStats() {
|
|||||||
|
|
||||||
int it = 0;
|
int it = 0;
|
||||||
while (myGameListModel->item(it)) {
|
while (myGameListModel->item(it)) {
|
||||||
if (myGameListModel->item(it, 2)->data(Qt::DisplayRole) == tr("running")) { runningGamesCounter++; }
|
if (myGameListModel->item(it, 2)->data(16) == "running") { runningGamesCounter++; }
|
||||||
if (myGameListModel->item(it, 2)->data(Qt::DisplayRole) == tr("open")) { openGamesCounter++; }
|
if (myGameListModel->item(it, 2)->data(16) == "open") { openGamesCounter++; }
|
||||||
++it;
|
++it;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -812,7 +829,7 @@ void gameLobbyDialogImpl::joinAnyGameButtonRefresh() {
|
|||||||
|
|
||||||
int players = myGameListModel->item(it, 1)->data(Qt::DisplayRole).toString().section("/",0,0).toInt();
|
int players = myGameListModel->item(it, 1)->data(Qt::DisplayRole).toString().section("/",0,0).toInt();
|
||||||
int maxPlayers = myGameListModel->item(it, 1)->data(Qt::DisplayRole).toString().section("/",1,1).toInt();
|
int maxPlayers = myGameListModel->item(it, 1)->data(Qt::DisplayRole).toString().section("/",1,1).toInt();
|
||||||
if (myGameListModel->item(it, 2)->data(Qt::DisplayRole) == tr("open") && myGameListModel->item(it, 3)->data(Qt::DisplayRole) == "" && players < maxPlayers) {
|
if (myGameListModel->item(it, 2)->data(16) == "open" && myGameListModel->item(it, 3)->data(16) == "nonpriv" && players < maxPlayers) {
|
||||||
openNonPrivateNonFullGamesCounter++;
|
openNonPrivateNonFullGamesCounter++;
|
||||||
}
|
}
|
||||||
++it;
|
++it;
|
||||||
@@ -845,8 +862,88 @@ void gameLobbyDialogImpl::writeDialogSettings()
|
|||||||
|
|
||||||
void gameLobbyDialogImpl::readDialogSettings()
|
void gameLobbyDialogImpl::readDialogSettings()
|
||||||
{
|
{
|
||||||
// qDebug() << myConfig->readConfigInt("DlgGameLobbyGameListSortingSection") << (Qt::SortOrder)myConfig->readConfigInt("DlgGameLobbyGameListSortingOrder");
|
|
||||||
// myGameListSortFilterProxyModel->sort(myConfig->readConfigInt("DlgGameLobbyGameListSortingSection"), (Qt::SortOrder)myConfig->readConfigInt("DlgGameLobbyGameListSortingOrder") );
|
|
||||||
treeView_GameList->sortByColumn(myConfig->readConfigInt("DlgGameLobbyGameListSortingSection"), (Qt::SortOrder)myConfig->readConfigInt("DlgGameLobbyGameListSortingOrder") );
|
treeView_GameList->sortByColumn(myConfig->readConfigInt("DlgGameLobbyGameListSortingSection"), (Qt::SortOrder)myConfig->readConfigInt("DlgGameLobbyGameListSortingOrder") );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void gameLobbyDialogImpl::changeGameListFilter(int index) {
|
||||||
|
|
||||||
|
switch(index) {
|
||||||
|
case 0: {
|
||||||
|
myGameListSortFilterProxyModel->setColumn1RegExp(QRegExp());
|
||||||
|
myGameListSortFilterProxyModel->setColumn2RegExp(QRegExp());
|
||||||
|
myGameListSortFilterProxyModel->setColumn3RegExp(QRegExp());
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 1: {
|
||||||
|
myGameListSortFilterProxyModel->setColumn1RegExp(QRegExp());
|
||||||
|
myGameListSortFilterProxyModel->setColumn2RegExp(QRegExp("open", Qt::CaseInsensitive, QRegExp::FixedString));
|
||||||
|
myGameListSortFilterProxyModel->setColumn3RegExp(QRegExp());
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 2: {
|
||||||
|
myGameListSortFilterProxyModel->setColumn1RegExp(QRegExp("nonfull", Qt::CaseInsensitive, QRegExp::FixedString));
|
||||||
|
myGameListSortFilterProxyModel->setColumn2RegExp(QRegExp("open", Qt::CaseInsensitive, QRegExp::FixedString));
|
||||||
|
myGameListSortFilterProxyModel->setColumn3RegExp(QRegExp());
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 3: {
|
||||||
|
myGameListSortFilterProxyModel->setColumn1RegExp(QRegExp("nonfull", Qt::CaseInsensitive, QRegExp::FixedString));
|
||||||
|
myGameListSortFilterProxyModel->setColumn2RegExp(QRegExp("open", Qt::CaseInsensitive, QRegExp::FixedString));
|
||||||
|
myGameListSortFilterProxyModel->setColumn3RegExp(QRegExp("nonpriv", Qt::CaseInsensitive, QRegExp::FixedString));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 4: {
|
||||||
|
myGameListSortFilterProxyModel->setColumn1RegExp(QRegExp("nonfull", Qt::CaseInsensitive, QRegExp::FixedString));
|
||||||
|
myGameListSortFilterProxyModel->setColumn2RegExp(QRegExp("open", Qt::CaseInsensitive, QRegExp::FixedString));
|
||||||
|
myGameListSortFilterProxyModel->setColumn3RegExp(QRegExp("private", Qt::CaseInsensitive, QRegExp::FixedString));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 5: {
|
||||||
|
myGameListSortFilterProxyModel->setColumn1RegExp(QRegExp());
|
||||||
|
myGameListSortFilterProxyModel->setColumn2RegExp(QRegExp("open", Qt::CaseInsensitive, QRegExp::FixedString));
|
||||||
|
myGameListSortFilterProxyModel->setColumn3RegExp(QRegExp("nonpriv", Qt::CaseInsensitive, QRegExp::FixedString));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 6: {
|
||||||
|
myGameListSortFilterProxyModel->setColumn1RegExp(QRegExp());
|
||||||
|
myGameListSortFilterProxyModel->setColumn2RegExp(QRegExp("open", Qt::CaseInsensitive, QRegExp::FixedString));
|
||||||
|
myGameListSortFilterProxyModel->setColumn3RegExp(QRegExp("private", Qt::CaseInsensitive, QRegExp::FixedString));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 7: {
|
||||||
|
myGameListSortFilterProxyModel->setColumn1RegExp(QRegExp("nonfull", Qt::CaseInsensitive, QRegExp::FixedString));
|
||||||
|
myGameListSortFilterProxyModel->setColumn2RegExp(QRegExp());
|
||||||
|
myGameListSortFilterProxyModel->setColumn3RegExp(QRegExp());
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 8: {
|
||||||
|
myGameListSortFilterProxyModel->setColumn1RegExp(QRegExp("nonfull", Qt::CaseInsensitive, QRegExp::FixedString));
|
||||||
|
myGameListSortFilterProxyModel->setColumn2RegExp(QRegExp());
|
||||||
|
myGameListSortFilterProxyModel->setColumn3RegExp(QRegExp("nonpriv", Qt::CaseInsensitive, QRegExp::FixedString));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 9: {
|
||||||
|
myGameListSortFilterProxyModel->setColumn1RegExp(QRegExp("nonfull", Qt::CaseInsensitive, QRegExp::FixedString));
|
||||||
|
myGameListSortFilterProxyModel->setColumn2RegExp(QRegExp());
|
||||||
|
myGameListSortFilterProxyModel->setColumn3RegExp(QRegExp("private", Qt::CaseInsensitive, QRegExp::FixedString));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 10: {
|
||||||
|
myGameListSortFilterProxyModel->setColumn1RegExp(QRegExp());
|
||||||
|
myGameListSortFilterProxyModel->setColumn2RegExp(QRegExp());
|
||||||
|
myGameListSortFilterProxyModel->setColumn3RegExp(QRegExp("nonpriv", Qt::CaseInsensitive, QRegExp::FixedString));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 11: {
|
||||||
|
myGameListSortFilterProxyModel->setColumn1RegExp(QRegExp());
|
||||||
|
myGameListSortFilterProxyModel->setColumn2RegExp(QRegExp());
|
||||||
|
myGameListSortFilterProxyModel->setColumn3RegExp(QRegExp("private", Qt::CaseInsensitive, QRegExp::FixedString));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:;
|
||||||
|
}
|
||||||
|
myGameListSortFilterProxyModel->setFilterRegExp(QString());
|
||||||
|
myGameListSortFilterProxyModel->setFilterKeyColumn(0);
|
||||||
|
|
||||||
|
}
|
||||||
|
|||||||
@@ -28,10 +28,12 @@ class Session;
|
|||||||
class ConfigFile;
|
class ConfigFile;
|
||||||
class LobbyChat;
|
class LobbyChat;
|
||||||
class startWindowImpl;
|
class startWindowImpl;
|
||||||
|
class MyGameListSortFilterProxyModel;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@author FThauer FHammer <webmaster@pokerth.net>
|
@author FThauer FHammer <webmaster@pokerth.net>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class gameLobbyDialogImpl: public QDialog, public Ui::gameLobbyDialog {
|
class gameLobbyDialogImpl: public QDialog, public Ui::gameLobbyDialog {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
@@ -106,6 +108,8 @@ public slots:
|
|||||||
void closeEvent(QCloseEvent *event);
|
void closeEvent(QCloseEvent *event);
|
||||||
void writeDialogSettings();
|
void writeDialogSettings();
|
||||||
void readDialogSettings();
|
void readDialogSettings();
|
||||||
|
void changeGameListFilter(int);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
gameTableImpl* myW;
|
gameTableImpl* myW;
|
||||||
@@ -124,7 +128,7 @@ private:
|
|||||||
QTimer *waitStartGameMsgBoxTimer;
|
QTimer *waitStartGameMsgBoxTimer;
|
||||||
QStandardItemModel *myGameListModel;
|
QStandardItemModel *myGameListModel;
|
||||||
QItemSelectionModel *myGameListSelectionModel;
|
QItemSelectionModel *myGameListSelectionModel;
|
||||||
QSortFilterProxyModel *myGameListSortFilterProxyModel;
|
MyGameListSortFilterProxyModel *myGameListSortFilterProxyModel;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool eventFilter(QObject *obj, QEvent *event);
|
bool eventFilter(QObject *obj, QEvent *event);
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
#include "mygamelistsortfilterproxymodel.h"
|
||||||
|
#include <QtGui>
|
||||||
|
#include <QtCore>
|
||||||
|
|
||||||
|
MyGameListSortFilterProxyModel::MyGameListSortFilterProxyModel(QObject *parent)
|
||||||
|
: QSortFilterProxyModel(parent)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool MyGameListSortFilterProxyModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const {
|
||||||
|
|
||||||
|
QModelIndex index1 = sourceModel()->index(sourceRow, 1, sourceParent);
|
||||||
|
QModelIndex index2 = sourceModel()->index(sourceRow, 2, sourceParent);
|
||||||
|
QModelIndex index3 = sourceModel()->index(sourceRow, 3, sourceParent);
|
||||||
|
|
||||||
|
return (sourceModel()->data(index1, 16).toString().contains(column1RegExp)
|
||||||
|
&& sourceModel()->data(index2, 16).toString().contains(column2RegExp)
|
||||||
|
&& sourceModel()->data(index3, 16).toString().contains(column3RegExp));
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
#ifndef MYGAMELISTSORTFILTERPROXYMODEL_H
|
||||||
|
#define MYGAMELISTSORTFILTERPROXYMODEL_H
|
||||||
|
|
||||||
|
#include <QSortFilterProxyModel>
|
||||||
|
|
||||||
|
class MyGameListSortFilterProxyModel : public QSortFilterProxyModel
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
MyGameListSortFilterProxyModel(QObject *parent = 0);
|
||||||
|
void setColumn1RegExp(QRegExp column1) { column1RegExp = column1; }
|
||||||
|
void setColumn2RegExp(QRegExp column2) { column2RegExp = column2; }
|
||||||
|
void setColumn3RegExp(QRegExp column3) { column3RegExp = column3; }
|
||||||
|
|
||||||
|
protected:
|
||||||
|
bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
QRegExp column1RegExp;
|
||||||
|
QRegExp column2RegExp;
|
||||||
|
QRegExp column3RegExp;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // MYGAMELISTSORTFILTERPROXYMODEL_H
|
||||||
Reference in New Issue
Block a user