1515#include " ui_TombRaiderLinuxLauncher.h"
1616#include < QLineEdit>
1717
18-
1918TombRaiderLinuxLauncher::TombRaiderLinuxLauncher (QWidget *parent)
2019 : QMainWindow(parent) {
2120 ui = new Ui::TombRaiderLinuxLauncher;
@@ -137,8 +136,7 @@ TombRaiderLinuxLauncher::TombRaiderLinuxLauncher(QWidget *parent)
137136 ui->listViewLevels ->verticalScrollBar (),
138137 &QScrollBar::valueChanged,
139138 this ,
140- &TombRaiderLinuxLauncher::levelListScrolled
141- );
139+ &TombRaiderLinuxLauncher::levelListScrolled);
142140
143141 connect (ui->checkBoxInstalled , &QCheckBox::toggled,
144142 levelListProxy, &LevelListProxy::setInstalledFilter);
@@ -167,6 +165,21 @@ TombRaiderLinuxLauncher::TombRaiderLinuxLauncher(QWidget *parent)
167165 }
168166}
169167
168+ void TombRaiderLinuxLauncher::setList () {
169+ QVector<QSharedPointer<ListItemData>> list;
170+ controller.getList (&list);
171+ InstalledStatus installedStatus = getInstalled ();
172+
173+ for (const auto &item : list) {
174+ Q_ASSERT (item != nullptr );
175+ bool trle = installedStatus.trle .value (item->m_trle_id , false );
176+ item->m_installed = trle;
177+ }
178+
179+ levelListModel->setLevels (list);
180+ loadMoreCovers ();
181+ }
182+
170183void TombRaiderLinuxLauncher::generateList (const QList<int >& availableGames) {
171184 // Update list only when 24 hours past
172185 QDateTime now = QDateTime::currentDateTime ();
@@ -191,31 +204,27 @@ void TombRaiderLinuxLauncher::generateList(const QList<int>& availableGames) {
191204 settings.setValue (" lastUpdated" , now.toString (Qt::ISODate));
192205 m_availableGames = availableGames;
193206 } else {
194- QVector<QSharedPointer<ListItemData>> list;
195- controller.getList (&list);
196- levelListModel->setLevels (list);
197- setInstalled ();
198- loadMoreCovers ();
207+ setList ();
199208 ui->stackedWidget ->setCurrentWidget (
200209 ui->stackedWidget ->findChild <QWidget*>(" select" ));
201210 }
202211}
203212
204- void TombRaiderLinuxLauncher::setInstalled () {
213+ InstalledStatus TombRaiderLinuxLauncher::getInstalled () {
205214 QStringList keys = settings.allKeys ();
206- QHash<int , bool > installedLevel;
207- QHash<int , bool > installedGame;
215+ InstalledStatus list;
208216 for (const auto &key : std::as_const (keys)) {
209217 if (key.startsWith (" installed/game" )) {
210- qint64 id = key.midRef (QString (" installed/game" ).length ()).toInt ();
211- installedGame.insert (id, settings.value (key).toBool ());
218+ quint64 id =
219+ key.midRef (QString (" installed/game" ).length ()).toUInt ();
220+ list.game .insert (id, settings.value (key).toBool ());
212221 } else if (key.startsWith (" installed/level" )) {
213- qint64 id = key.midRef (QString (" installed/level" ).length ()).toInt ();
214- installedLevel.insert (id, settings.value (key).toBool ());
222+ quint64 id =
223+ key.midRef (QString (" installed/level" ).length ()).toUInt ();
224+ list.trle .insert (id, settings.value (key).toBool ());
215225 }
216226 }
217- // levelListModel->setInstalledListOriginal(installedGame);
218- // levelListModel->setInstalledList(installedLevel);
227+ return list;
219228}
220229
221230bool TombRaiderLinuxLauncher::setStartupSetting (const StartupSetting settings) {
@@ -509,7 +518,7 @@ void TombRaiderLinuxLauncher::downloadClicked() {
509518void TombRaiderLinuxLauncher::infoClicked () {
510519 QModelIndex current = ui->listViewLevels ->currentIndex ();
511520 if (current.isValid ()) {
512- qint64 id = levelListProxy->getLid (current); // getLid(current);
521+ qint64 id = levelListProxy->getLid (current); // getLid(current);
513522 if (id != 0 ) {
514523 InfoData info = controller.getInfo (id);
515524 if (info.m_body == " " && info.m_imageList .size () == 0 ) {
@@ -597,7 +606,8 @@ void TombRaiderLinuxLauncher::loadMoreCovers() {
597606 levelListModel->reset ();
598607 }
599608 if (!levelListModel->stop ()) {
600- QVector<QSharedPointer<ListItemData>> buffer = levelListModel->getDataBuffer (100 );
609+ QVector<QSharedPointer<ListItemData>> buffer =
610+ levelListModel->getDataBuffer (100 );
601611 if (!buffer.isEmpty ()) {
602612 controller.getCoverList (buffer);
603613 } else {
@@ -631,8 +641,8 @@ void TombRaiderLinuxLauncher::workTick() {
631641 QModelIndex current = ui->listViewLevels ->currentIndex ();
632642 if (current.isValid ()) {
633643 qint64 id = levelListProxy->getLid (current);
634- // levelListProxy ->setInstalled(current);
635- if (levelListProxy->getItemType (current)) { // its the original game
644+ levelListModel ->setInstalled (current);
645+ if (levelListProxy->getItemType (current)) {
636646 settings.setValue (
637647 QString (" installed/game%1" ).arg (id),
638648 " true" );
@@ -679,11 +689,7 @@ void TombRaiderLinuxLauncher::downloadError(int status) {
679689void TombRaiderLinuxLauncher::UpdateLevelDone () {
680690 m_loadingIndicatorWidget->hide ();
681691 if (m_loadingDoneGoTo == " select" ) {
682- QVector<QSharedPointer<ListItemData>> list;
683- controller.getList (&list);
684- levelListModel->setLevels (list);
685- setInstalled ();
686- loadMoreCovers ();
692+ setList ();
687693 ui->stackedWidget ->setCurrentWidget (
688694 ui->stackedWidget ->findChild <QWidget*>(" select" ));
689695 } else if (m_loadingDoneGoTo == " info" ) {
0 commit comments