Skip to content

Commit a6cbbf7

Browse files
committed
add author search type
1 parent d10308a commit a6cbbf7

File tree

3 files changed

+55
-12
lines changed

3 files changed

+55
-12
lines changed

src/LevelViewList.cpp

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -230,22 +230,32 @@ void LevelListProxy::setSearchFilter(const QString &s) {
230230
invalidateFilter();
231231
}
232232

233+
void LevelListProxy::setSearchType(const QString &t) {
234+
if (t == "Level") {
235+
m_searchType = 0;
236+
} else if (t == "Author") {
237+
m_searchType = 1;
238+
}
239+
invalidateFilter();
240+
}
241+
233242
void LevelListProxy::setInstalledFilter(bool on) {
234243
m_installed = on;
235244
invalidateFilter();
236245
}
237246

238247
void LevelListProxy::setSortMode(SortMode mode) {
239-
qDebug() << "LevelListProxy::setSortMode";
240-
Qt::SortOrder order;
241-
if (m_sortMode == mode){
242-
order = Qt::AscendingOrder;
248+
if (m_sortMode == mode) {
249+
// same mode, toggle order
250+
m_sortOrder = (m_sortOrder == Qt::AscendingOrder) ?
251+
Qt::DescendingOrder : Qt::AscendingOrder;
243252
} else {
253+
// new mode, reset order
244254
m_sortMode = mode;
245-
order = Qt::DescendingOrder;
255+
m_sortOrder = Qt::DescendingOrder;
246256
}
247257
invalidate();
248-
this->sort(0, order);
258+
this->sort(0, m_sortOrder);
249259
}
250260

251261
bool LevelListProxy::lessThan(const QModelIndex &left,
@@ -314,10 +324,18 @@ bool LevelListProxy::filterAcceptsRow(int sourceRow,
314324
}
315325

316326
if (status == true) {
317-
auto title = sourceModel()->data(idx, Qt::DisplayRole).toString();
318-
if (!m_search.isEmpty() &&
319-
!title.contains(m_search, Qt::CaseInsensitive)) {
320-
status = false;
327+
if (m_searchType == 0) {
328+
auto title = sourceModel()->data(idx, Qt::DisplayRole).toString();
329+
if (!m_search.isEmpty() &&
330+
!title.contains(m_search, Qt::CaseInsensitive)) {
331+
status = false;
332+
}
333+
} else if (m_searchType == 1) {
334+
auto authors = sourceModel()->data(idx, Qt::UserRole+6).toString();
335+
if (!m_search.isEmpty() &&
336+
!authors.contains(m_search, Qt::CaseInsensitive)) {
337+
status = false;
338+
}
321339
}
322340
}
323341

src/LevelViewList.hpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ class LevelListProxy : public QSortFilterProxyModel {
101101
m_type(0),
102102
m_difficulty(0),
103103
m_duration(0),
104+
m_searchType(0),
104105
m_all(" - All -"),
105106
m_installed(false),
106107
m_sortMode(ReleaseDate)
@@ -115,6 +116,7 @@ class LevelListProxy : public QSortFilterProxyModel {
115116
void setDifficultyFilter(const QString &d);
116117
void setDurationFilter(const QString &d);
117118
void setSearchFilter(const QString &s);
119+
void setSearchType(const QString &t);
118120
void setInstalledFilter(bool on);
119121

120122
enum SortMode {
@@ -145,9 +147,11 @@ class LevelListProxy : public QSortFilterProxyModel {
145147
Qt::UserRole+3
146148
};
147149
SortMode m_sortMode = ReleaseDate;
150+
Qt::SortOrder m_sortOrder = Qt::DescendingOrder;
148151
quint64 m_class, m_type, m_difficulty, m_duration;
149152
const QString m_all;
150153
QString m_search;
154+
quint64 m_searchType;
151155
bool m_installed;
152156
};
153157

src/TombRaiderLinuxLauncher.cpp

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,10 +137,12 @@ TombRaiderLinuxLauncher::TombRaiderLinuxLauncher(QWidget *parent)
137137
this,
138138
&TombRaiderLinuxLauncher::onCurrentItemChanged);
139139

140-
141140
connect(ui->checkBoxInstalled, &QCheckBox::toggled,
142141
levelListProxy, &LevelListProxy::setInstalledFilter);
143142

143+
connect(ui->comboBoxSearch, &QComboBox::currentTextChanged,
144+
levelListProxy, &LevelListProxy::setSearchType);
145+
144146
connect(ui->lineEditSearch, &QLineEdit::textChanged,
145147
levelListProxy, &LevelListProxy::setSearchFilter);
146148

@@ -164,6 +166,9 @@ TombRaiderLinuxLauncher::TombRaiderLinuxLauncher(QWidget *parent)
164166
ui->Tabs->setTabEnabled(
165167
ui->Tabs->indexOf(ui->Tabs->findChild<QWidget*>("Modding")), false);
166168

169+
ui->Tabs->setTabEnabled(
170+
ui->Tabs->indexOf(ui->Tabs->findChild<QWidget*>("Controller")), false);
171+
167172
// Read settings
168173
QString value = g_settings.value("setup").toString();
169174
if (value != "yes") {
@@ -472,6 +477,10 @@ QVector<QPair<QString, QString>>
472477
void TombRaiderLinuxLauncher::runClicked() {
473478
if (m_current.isValid()) {
474479
ui->listViewLevels->setEnabled(false);
480+
ui->groupBoxSearch->setEnabled(false);
481+
ui->groupBoxFilter->setEnabled(false);
482+
ui->groupBoxToggle->setEnabled(false);
483+
ui->groupBoxSort->setEnabled(false);
475484
ui->pushButtonRun->setEnabled(false);
476485
ui->checkBoxSetup->setEnabled(false);
477486

@@ -543,6 +552,10 @@ void TombRaiderLinuxLauncher::runClicked() {
543552

544553
void TombRaiderLinuxLauncher::runningLevelDone() {
545554
ui->listViewLevels->setEnabled(true);
555+
ui->groupBoxSearch->setEnabled(true);
556+
ui->groupBoxFilter->setEnabled(true);
557+
ui->groupBoxToggle->setEnabled(true);
558+
ui->groupBoxSort->setEnabled(true);
546559
ui->pushButtonRun->setEnabled(true);
547560
ui->checkBoxSetup->setEnabled(true);
548561
}
@@ -551,8 +564,12 @@ void TombRaiderLinuxLauncher::downloadClicked() {
551564
if (m_current.isValid()) {
552565
qint64 id = levelListProxy->getLid(m_current);
553566
qDebug() << "void TombRaiderLinuxLauncher" <<
554-
"::downloadClicked() quint64 id: " << id;
567+
"::downloadClicked() qint64 id: " << id;
555568
ui->listViewLevels->setEnabled(false);
569+
ui->groupBoxSearch->setEnabled(false);
570+
ui->groupBoxFilter->setEnabled(false);
571+
ui->groupBoxToggle->setEnabled(false);
572+
ui->groupBoxSort->setEnabled(false);
556573
ui->progressBar->setValue(0);
557574
ui->stackedWidgetBar->setCurrentWidget(
558575
ui->stackedWidgetBar->findChild<QWidget*>("progress"));
@@ -687,6 +704,10 @@ void TombRaiderLinuxLauncher::workTick() {
687704
ui->stackedWidgetBar->setCurrentWidget(
688705
ui->stackedWidgetBar->findChild<QWidget*>("navigate"));
689706
ui->listViewLevels->setEnabled(true);
707+
ui->groupBoxSearch->setEnabled(true);
708+
ui->groupBoxFilter->setEnabled(true);
709+
ui->groupBoxToggle->setEnabled(true);
710+
ui->groupBoxSort->setEnabled(true);
690711
}
691712
}
692713
}

0 commit comments

Comments
 (0)