1515#include " ../src/globalTypes.hpp"
1616#include " ui_TombRaiderLinuxLauncher.h"
1717#include < QLineEdit>
18+ #include < qlogging.h>
1819
1920TombRaiderLinuxLauncher::TombRaiderLinuxLauncher (QWidget *parent)
2021 : QMainWindow(parent) {
@@ -158,8 +159,15 @@ TombRaiderLinuxLauncher::TombRaiderLinuxLauncher(QWidget *parent)
158159 m_dialogWidget = new Dialog (ui->dialog );
159160 ui->verticalLayout_17 ->addWidget (m_dialogWidget);
160161 connect (m_dialogWidget, &Dialog::okClicked, this , [this ]() {
161- qDebug () << " OK clicked, selected:" << m_dialogWidget->selectedOption ();
162- // handle it here
162+ const QString selected = m_dialogWidget->selectedOption ();
163+ qDebug () << " OK clicked, selected:" << selected;
164+ if (selected == " Remove zip file" ) {
165+ controller.deleteZip (levelListProxy->getLid (m_current));
166+ } else if (selected == " Remove Level" ) {
167+ // fileManager.removeFileOrDirectory(testLevel);
168+ }
169+ ui->stackedWidget ->setCurrentWidget (
170+ ui->stackedWidget ->findChild <QWidget*>(" select" ));
163171 });
164172
165173
@@ -245,6 +253,7 @@ void TombRaiderLinuxLauncher::generateList(const QList<int>& availableGames) {
245253}
246254
247255InstalledStatus TombRaiderLinuxLauncher::getInstalled () {
256+ // TODO: read from disk all the id.TRLE and Original.id directories.
248257 QStringList keys = g_settings.allKeys ();
249258 InstalledStatus list;
250259 for (const auto &key : std::as_const (keys)) {
@@ -369,23 +378,25 @@ void TombRaiderLinuxLauncher::levelDirSelected(qint64 id) {
369378 int state = controller.getItemState (id);
370379 // Activate or deactivate pushbuttons based on the selected item
371380 qDebug () << " Selected: " << id << Qt::endl;
372- // if state == 1 then only activate link button
373- // if state == 2 then only activate link and info button
374- // if state == 0 then only activate download button
381+ // if state == 0 We dont have (id).TRLE directory
382+ // if state == 1 We dont have Original.TR(id) directory
383+ // if state == 2 we have Original.TR(id) if id was negative or (id).TRLE
375384 // if state == -1 then de-activate all buttons
376-
377385 if (state == 1 ) {
378386 ui->pushButtonRun ->setEnabled (true );
379387 ui->pushButtonInfo ->setEnabled (false );
380- ui->pushButtonDownload ->setEnabled (false );
388+ ui->pushButtonDownload ->setEnabled (true );
389+ ui->pushButtonDownload ->setText (" Remove" );
381390 } else if (state == 2 ) {
382391 ui->pushButtonRun ->setEnabled (true );
383392 ui->pushButtonInfo ->setEnabled (true );
384- ui->pushButtonDownload ->setEnabled (false );
393+ ui->pushButtonDownload ->setEnabled (true );
394+ ui->pushButtonDownload ->setText (" Remove" );
385395 } else if (state == 0 ) {
386396 ui->pushButtonRun ->setEnabled (false );
387397 ui->pushButtonInfo ->setEnabled (true );
388398 ui->pushButtonDownload ->setEnabled (true );
399+ ui->pushButtonDownload ->setText (" Download and install" );
389400 } else {
390401 ui->pushButtonRun ->setEnabled (false );
391402 ui->pushButtonInfo ->setEnabled (false );
@@ -399,22 +410,8 @@ void TombRaiderLinuxLauncher::onCurrentItemChanged(
399410 m_current = levelListProxy->mapToSource (current);
400411 if (m_current.isValid ()) {
401412 qint64 id = levelListProxy->getLid (m_current);
413+ levelDirSelected (id);
402414 ui->lcdNumberLevelID ->display (QString::number (id));
403- if (levelListProxy->getItemType (m_current)) { // its the original game
404- if (levelListProxy->getInstalled (m_current)) {
405- ui->pushButtonRun ->setEnabled (true );
406- ui->pushButtonDownload ->setEnabled (false );
407- ui->pushButtonDownload ->setText (" Remove" );
408-
409- } else {
410- ui->pushButtonRun ->setEnabled (false );
411- ui->pushButtonDownload ->setText (" Download and install" );
412- ui->pushButtonDownload ->setEnabled (true );
413- }
414- ui->pushButtonInfo ->setEnabled (false );
415- } else {
416- levelDirSelected (id);
417- }
418415 ui->lineEditEnvironmentVariables ->setEnabled (true );
419416 ui->lineEditEnvironmentVariables ->setText (
420417 g_settings.value (QString (" level%1/EnvironmentVariables" )
@@ -563,20 +560,36 @@ void TombRaiderLinuxLauncher::runningLevelDone() {
563560void TombRaiderLinuxLauncher::downloadClicked () {
564561 if (m_current.isValid ()) {
565562 qint64 id = levelListProxy->getLid (m_current);
566- qDebug () << " void TombRaiderLinuxLauncher" <<
567- " ::downloadClicked() qint64 id: " << id;
568- ui->listViewLevels ->setEnabled (false );
569- ui->groupBoxSearch ->setEnabled (false );
570- ui->groupBoxFilter ->setEnabled (false );
571- ui->groupBoxToggle ->setEnabled (false );
572- ui->groupBoxSort ->setEnabled (false );
573- ui->progressBar ->setValue (0 );
574- ui->stackedWidgetBar ->setCurrentWidget (
575- ui->stackedWidgetBar ->findChild <QWidget*>(" progress" ));
576- if (levelListProxy->getItemType (m_current)) {
577- controller.setupGame (id);
563+ int state = controller.getItemState (id);
564+ if (state > 0 ) {
565+ // TODO: add the ability to remove the level without its save files
566+ QString text (
567+ " Select what you want to remove.\n "
568+ " For now we can only remove the zip file.\n "
569+ );
570+ m_dialogWidget->setMessage (text);
571+ m_dialogWidget->setOptions (QStringList ()
572+ << " Remove zip file" );
573+
574+ ui->stackedWidget ->setCurrentWidget (
575+ ui->stackedWidget ->findChild <QWidget*>(" dialog" ));
576+
578577 } else {
579- controller.setupLevel (id);
578+ qDebug () << " void TombRaiderLinuxLauncher" <<
579+ " ::downloadClicked() qint64 id: " << id;
580+ ui->listViewLevels ->setEnabled (false );
581+ ui->groupBoxSearch ->setEnabled (false );
582+ ui->groupBoxFilter ->setEnabled (false );
583+ ui->groupBoxToggle ->setEnabled (false );
584+ ui->groupBoxSort ->setEnabled (false );
585+ ui->progressBar ->setValue (0 );
586+ ui->stackedWidgetBar ->setCurrentWidget (
587+ ui->stackedWidgetBar ->findChild <QWidget*>(" progress" ));
588+ if (levelListProxy->getItemType (m_current)) {
589+ controller.setupGame (id);
590+ } else {
591+ controller.setupLevel (id);
592+ }
580593 }
581594 }
582595}
@@ -690,16 +703,10 @@ void TombRaiderLinuxLauncher::workTick() {
690703 g_settings.setValue (
691704 QString (" installed/game%1" ).arg (id),
692705 " true" );
693- ui->pushButtonRun ->setEnabled (true );
694- ui->pushButtonInfo ->setEnabled (false );
695- ui->pushButtonDownload ->setEnabled (false );
696706 } else {
697707 g_settings.setValue (
698708 QString (" installed/level%1" ).arg (id),
699709 " true" );
700- ui->pushButtonRun ->setEnabled (true );
701- ui->pushButtonInfo ->setEnabled (true );
702- ui->pushButtonDownload ->setEnabled (false );
703710 }
704711 ui->stackedWidgetBar ->setCurrentWidget (
705712 ui->stackedWidgetBar ->findChild <QWidget*>(" navigate" ));
@@ -708,6 +715,7 @@ void TombRaiderLinuxLauncher::workTick() {
708715 ui->groupBoxFilter ->setEnabled (true );
709716 ui->groupBoxToggle ->setEnabled (true );
710717 ui->groupBoxSort ->setEnabled (true );
718+ levelDirSelected (id);
711719 }
712720 }
713721}
@@ -783,15 +791,13 @@ void TombRaiderLinuxLauncher::LevelSaveClicked() {
783791 if (m_current.isValid ()) {
784792 qint64 id = levelListProxy->getLid (m_current);
785793
786- // settings.setValue(QString("level%1/CustomCommand")
787- // .arg(id), ui->lineEditCustomCommand->text());
788-
789794 g_settings.setValue (QString (" level%1/EnvironmentVariables" )
790795 .arg (id), ui->lineEditEnvironmentVariables ->text ());
791796
792797 g_settings.setValue (QString (" level%1/RunnerType" )
793798 .arg (id), ui->comboBoxRunnerType ->currentIndex ());
794799 }
800+ ui->pushButtonRun ->setText (ui->comboBoxRunnerType ->currentText ());
795801}
796802
797803void TombRaiderLinuxLauncher::LevelResetClicked () {
0 commit comments