11#include " view/Levels.hpp"
2+ #include " view/Levels/Select/StackedWidgetBar.hpp"
23#include < qapplication.h>
34#include < qcheckbox.h>
45#include < qlabel.h>
@@ -19,7 +20,10 @@ UiLevels::UiLevels(QWidget *parent)
1920 dialog(new Dialog(stackedWidget)),
2021 info(new Info(stackedWidget)),
2122 loading(new Loading(stackedWidget)),
22- select(new Select(stackedWidget))
23+ select(new Select(stackedWidget)),
24+ m_listSet(false ),
25+ m_wasDownloading(false ),
26+ m_wasDownloadingTimes(0 )
2327{
2428 setObjectName (" Levels" );
2529 layout = new QGridLayout (this );
@@ -118,6 +122,9 @@ UiLevels::UiLevels(QWidget *parent)
118122 connect (&Controller::getInstance (), SIGNAL (controllerDownloadError (int )),
119123 this , SLOT (downloadError (int )));
120124
125+ connect (&Controller::getInstance (), SIGNAL (controllerFileError (int )),
126+ this , SLOT (fileError (int )));
127+
121128 // Loading done signal connections
122129 connect (&Controller::getInstance (), SIGNAL (controllerLoadingDone ()),
123130 this , SLOT (updateLevelDone ()));
@@ -140,28 +147,78 @@ UiLevels::UiLevels(QWidget *parent)
140147}
141148
142149void UiLevels::downloadError (int status) {
150+ select->downloadingState (true );
143151 select->stackedWidgetBar ->progressWidgetBar ->progressBar ->setValue (0 );
144- select->stackedWidgetBar ->navigateWidgetBar ->pushButtonRun ->setEnabled (true );
145- select->stackedWidgetBar ->navigateWidgetBar ->pushButtonInfo ->setEnabled (true );
146- select->stackedWidgetBar ->navigateWidgetBar ->pushButtonDownload ->setEnabled (true );
147- select->stackedWidgetBar ->setCurrentWidget (
148- this ->findChild <QWidget*>(" navigateWidgetBar" ));
149- // ui->levels->select->levelViewList->setEnabled(true);
150- // QMessageBox msgBox;
151- // msgBox.setWindowTitle("Error");
152+ select->setCurrentWidgetBar (StackedWidgetBar::Navigate);
153+ select->levelViewList ->setEnabled (true );
154+ dialog->setOptions (QStringList ());
155+
152156 if (status == 1 ) {
153- qDebug () << " No internet" ;
154- // msgBox.setText("No internet");
157+ dialog->setMessage (QString (
158+ " No internet"
159+ ));
160+ this ->setStackedWidget (" dialog" );
155161 } else if (status == 2 ) {
156- qDebug () << " You seem to be missing ssl keys" ;
157- // msgBox.setText("You seem to be missing ssl keys");
162+ dialog->setMessage (QString (
163+ " The remote server's SSL certificate bad or out of date"
164+ ));
165+ this ->setStackedWidget (" dialog" );
166+ } else if (status == 3 ) {
167+ dialog->setMessage (QString (
168+ " Curl error"
169+ ));
170+ this ->setStackedWidget (" dialog" );
171+ } else if (status == 4 ) {
172+ dialog->setMessage (QString (
173+ " Downloaded zip is empty"
174+ ));
175+ this ->setStackedWidget (" dialog" );
176+ } else if (status == 5 ) {
177+ if (m_wasDownloadingTimes < 1 ) {
178+ m_wasDownloadingTimes++;
179+ m_wasDownloading = true ;
180+ qint64 lid = select->getLid ();
181+ controller.updateLevel (lid);
182+ loading->show ();
183+ this ->setStackedWidget (" loading" );
184+ }
158185 } else {
159- qDebug () << " Could not connect" ;
160- // msgBox.setText("Could not connect");
186+ dialog->setMessage (QString (
187+ " Could not connect or get the file"
188+ ));
189+ this ->setStackedWidget (" dialog" );
161190 }
162- // msgBox.setStandardButtons(QMessageBox::Ok);
163- // msgBox.setDefaultButton(QMessageBox::Ok);
164- // msgBox.exec();
191+ }
192+
193+ void UiLevels::fileError (int status) {
194+ select->downloadingState (true );
195+ select->stackedWidgetBar ->progressWidgetBar ->progressBar ->setValue (0 );
196+ select->setCurrentWidgetBar (StackedWidgetBar::Navigate);
197+ select->levelViewList ->setEnabled (true );
198+ dialog->setOptions (QStringList ());
199+
200+ if (status == 1 ) {
201+ dialog->setMessage (QString (
202+ " Failed to open zip file for writing"
203+ ));
204+ } else if (status == 2 ) {
205+ dialog->setMessage (QString (
206+ " Failed to get file info"
207+ ));
208+ } else if (status == 3 ) {
209+ dialog->setMessage (QString (
210+ " Failed to create directory"
211+ ));
212+ } else if (status == 4 ) {
213+ dialog->setMessage (QString (
214+ " Failed to extract file"
215+ ));
216+ } else {
217+ dialog->setMessage (QString (
218+ " Could not handle the file"
219+ ));
220+ }
221+ this ->setStackedWidget (" dialog" );
165222}
166223
167224void UiLevels::backClicked () {
@@ -210,6 +267,7 @@ void UiLevels::callbackDialog(QString selected) {
210267 select->setRemovedLevel ();
211268 }
212269 }
270+
213271 this ->setStackedWidget (" select" );
214272}
215273
@@ -295,6 +353,7 @@ void UiLevels::setSortMode(LevelListProxy::SortMode mode) {
295353}
296354
297355void UiLevels::setList () {
356+ m_listSet = true ;
298357 QVector<QSharedPointer<ListItemData>> list;
299358 controller.getList (&list);
300359 InstalledStatus installedStatus = getInstalled ();
@@ -418,18 +477,22 @@ void UiLevels::walkthroughClicked() {
418477void UiLevels::updateLevelDone () {
419478 loading->hide ();
420479 if (m_loadingDoneGoTo == " select" ) {
421- setList ();
422- this ->stackedWidget ->setCurrentWidget (
423- this ->stackedWidget ->findChild <QWidget*>(" select" ));
480+ if (!m_listSet) {
481+ setList ();
482+ }
483+ if (m_wasDownloading) {
484+ emit downloadOrRemoveClickedSignal ();
485+ m_wasDownloading = false ;
486+ }
487+ setStackedWidget (" select" );
424488 } else if (m_loadingDoneGoTo == " info" ) {
425489 qint64 id = select->getLid ();
426490 if (id != 0 ) {
427491 InfoData info = controller.getInfo (id);
428492 if (!(info.m_body == " " && info.m_imageList .size () == 0 )) {
429493 infoClicked ();
430494 } else {
431- this ->stackedWidget ->setCurrentWidget (
432- this ->stackedWidget ->findChild <QWidget*>(" select" ));
495+ setStackedWidget (" select" );
433496 }
434497 }
435498 } else {
@@ -459,8 +522,7 @@ void UiLevels::removeClicked(qint64 id) {
459522 << " Remove just Level files" );
460523 }
461524
462- stackedWidget->setCurrentWidget (
463- stackedWidget->findChild <QWidget*>(" dialog" ));
525+ this ->setStackedWidget (" dialog" );
464526}
465527
466528void UiLevels::downloadClicked (qint64 id) {
@@ -472,8 +534,7 @@ void UiLevels::downloadClicked(qint64 id) {
472534 //
473535 select->downloadingState (false );
474536 select->stackedWidgetBar ->progressWidgetBar ->progressBar ->setValue (0 );
475- select->stackedWidgetBar ->setCurrentWidget (
476- select->stackedWidgetBar ->findChild <QWidget*>(" progressWidgetBar" ));
537+ select->setCurrentWidgetBar (StackedWidgetBar::Progress);
477538
478539}
479540
@@ -510,9 +571,9 @@ void UiLevels::workTick() {
510571 QString (" installed/level%1" ).arg (id),
511572 " true" );
512573 }
513- this -> select -> stackedWidgetBar -> setCurrentWidget (
514- this -> select ->stackedWidgetBar -> findChild <QWidget*>( " navigateWidgetBar " ) );
515- this -> select ->downloadingState (true );
574+
575+ select->setCurrentWidgetBar (StackedWidgetBar::Navigate );
576+ select->downloadingState (true );
516577 levelDirSelected (id);
517578 }
518579}
0 commit comments