Intent is to allow filtering by arbitrary flag combinations. This isn't actually working yet. No idea why. It seems it should. Tired though, so will look at it tomorrow. 0.9.21
authornemo
Sun, 04 Jan 2015 00:44:14 -0500
branch0.9.21
changeset 10743 1d16c5414fee
parent 10741 7fababf10b60
child 10745 fab746a3597e
Intent is to allow filtering by arbitrary flag combinations. This isn't actually working yet. No idea why. It seems it should. Tired though, so will look at it tomorrow.
QTfrontend/ui/page/pageroomslist.cpp
QTfrontend/ui/page/pageroomslist.h
--- a/QTfrontend/ui/page/pageroomslist.cpp	Sat Jan 03 18:14:45 2015 -0500
+++ b/QTfrontend/ui/page/pageroomslist.cpp	Sun Jan 04 00:44:14 2015 -0500
@@ -77,8 +77,16 @@
     showGamesInProgress = new QAction(QAction::tr("Show games in-progress"), stateMenu);
     showGamesInProgress->setCheckable(true);
     showGamesInProgress->setChecked(true);
+    showPassword = new QAction(QAction::tr("Show password protected"), stateMenu);
+    showPassword->setCheckable(true);
+    showPassword->setChecked(true);
+    showJoinRestricted = new QAction(QAction::tr("Show join restricted"), stateMenu);
+    showJoinRestricted->setCheckable(true);
+    showJoinRestricted->setChecked(true);
     stateMenu->addAction(showGamesInLobby);
     stateMenu->addAction(showGamesInProgress);
+    stateMenu->addAction(showPassword);
+    stateMenu->addAction(showJoinRestricted);
     btnState->setMenu(stateMenu);
 
     // Help/prompt message at top
@@ -186,6 +194,8 @@
     connect(roomsList, SIGNAL(clicked (const QModelIndex &)), searchText, SLOT(setFocus()));
     connect(showGamesInLobby, SIGNAL(triggered()), this, SLOT(onFilterChanged()));
     connect(showGamesInProgress, SIGNAL(triggered()), this, SLOT(onFilterChanged()));
+    connect(showPassword, SIGNAL(triggered()), this, SLOT(onFilterChanged()));
+    connect(showJoinRestricted, SIGNAL(triggered()), this, SLOT(onFilterChanged()));
     connect(searchText, SIGNAL(textChanged (const QString &)), this, SLOT(onFilterChanged()));
     connect(this, SIGNAL(askJoinConfirmation (const QString &)), this, SLOT(onJoinConfirmation(const QString &)), Qt::QueuedConnection);
 
@@ -630,13 +640,29 @@
 
     bool stateLobby = showGamesInLobby->isChecked();
     bool stateProgress = showGamesInProgress->isChecked();
+    bool statePassword = showPassword->isChecked();
+    bool stateJoinRestricted = showJoinRestricted->isChecked();
 
-    if (stateLobby && stateProgress)
-        stateFilteredModel->setFilterFixedString(QString()); // "any"
-    else if (stateLobby != stateProgress)
-        stateFilteredModel->setFilterFixedString(QString(stateProgress));
+    QString filter;
+    if (!stateLobby && !stateProgress)
+        filter = "O_o";
+    else if (stateLobby && stateProgress && statePassword && stateJoinRestricted)
+        filter = "";
     else
-        stateFilteredModel->setFilterFixedString(QString("none")); // Basically, none.
+    {
+        QString exclude = "[^";
+        if (!stateProgress) exclude += "g";
+        if (!statePassword) exclude += "p";
+        if (!stateJoinRestricted) exclude += "j";
+        exclude += "]*";
+        if (stateProgress && statePassword && stateJoinRestricted) exclude = ".*";
+        filter = "^" + exclude;
+        if (!stateLobby) filter += "g" + exclude;
+        filter += "$";
+    }
+    //qDebug() << filter;
+
+    stateFilteredModel->setFilterRegExp(filter);
 }
 
 void PageRoomsList::setSettings(QSettings *settings)
--- a/QTfrontend/ui/page/pageroomslist.h	Sat Jan 03 18:14:45 2015 -0500
+++ b/QTfrontend/ui/page/pageroomslist.h	Sun Jan 04 00:44:14 2015 -0500
@@ -96,6 +96,8 @@
         QSortFilterProxyModel * stateFilteredModel;
         QAction * showGamesInLobby;
         QAction * showGamesInProgress;
+        QAction * showPassword;
+        QAction * showJoinRestricted;
         QSplitter * m_splitter;
 
         AmmoSchemeModel * ammoSchemeModel;