Fixing application crash if images directory empty
[impuzzle] / src / settingsdialog.cpp
index be783dc..b2cb6f8 100644 (file)
@@ -53,6 +53,7 @@ SettingsDialog::SettingsDialog(QWidget *parent) :
 
     imageCombo_ = new QComboBox;
     imageCombo_->addItems(items);
+    imageCombo_->setCurrentIndex(1);
 
     selectedImageLabel_ = new QLabel(tr("n/a"));
 
@@ -66,7 +67,8 @@ SettingsDialog::SettingsDialog(QWidget *parent) :
     setLayout(mainLayout_);
 
     connect(easyButton_, SIGNAL(toggled(bool)), this, SLOT(difficultySelectionChanged(bool)));
-    connect(imageCombo_, SIGNAL(currentIndexChanged(QString)), this, SLOT(imageSelectionChanged(QString)));
+    //connect(imageCombo_, SIGNAL(currentIndexChanged(QString)), this, SLOT(imageSelectionChanged(QString)));
+    connect(imageCombo_, SIGNAL(activated(QString)), this, SLOT(imageSelectionChanged(QString)));
 }
 
 int SettingsDialog::exec()
@@ -95,6 +97,7 @@ void SettingsDialog::imageSelectionChanged(const QString &txt)
         qDebug() << "Random image selected";
 
         // Get random image from ~/MyDocs/.images/
+        //TODO: images from other directories
         QStringList filters;
         filters << "*.jpg" << "*.png" << "*.xpm";
 
@@ -105,9 +108,15 @@ void SettingsDialog::imageSelectionChanged(const QString &txt)
 
         qDebug() << QString("pics list contains %1 entries").arg(pics.count());
 
-        QString path = QDir::homePath() + QLatin1String("/MyDocs/.images/") + pics.at(qrand() % pics.count());
-        Settings::instance()->setImage(QPixmap(path));
-        Settings::instance()->setImagePath(path);
+        if(!pics.isEmpty()) {
+            QString path = QDir::homePath() + QLatin1String("/MyDocs/.images/") + pics.at(qrand() % pics.count());
+            Settings::instance()->setImage(QPixmap(path));
+            Settings::instance()->setImagePath(path);
+        }
+        else {
+            Settings::instance()->setImage(0);
+            Settings::instance()->setImagePath("");
+        }
 
         if(selectedImageLabel_->isVisible()) {
             selectedImageLabel_->setVisible(false);
@@ -131,7 +140,7 @@ void SettingsDialog::imageSelectionChanged(const QString &txt)
         }
     }
     else {
-        qDebug() << "Default image selected";
+        //qDebug() << "Default image selected";
 
         Settings::instance()->setImage(0);
         Settings::instance()->setImagePath("default");