X-Git-Url: http://git.maemo.org/git/?p=impuzzle;a=blobdiff_plain;f=src%2Fsettingsdialog.cpp;h=6507153e1214c87029eb59e9fca64024b2d9a8ab;hp=0c2b751a85ec9e19e8c68db8cfcbdca3355cb6e4;hb=840d9cd16b3959f56aa0cac05d983f5747600193;hpb=fdcfe62bec5ff683a2e728b4b49c93c807edc316 diff --git a/src/settingsdialog.cpp b/src/settingsdialog.cpp index 0c2b751..6507153 100644 --- a/src/settingsdialog.cpp +++ b/src/settingsdialog.cpp @@ -7,6 +7,12 @@ #include #include #include +#include +#include +#include +#include + +#include SettingsDialog::SettingsDialog(QWidget *parent) : QDialog(parent) @@ -24,12 +30,35 @@ SettingsDialog::SettingsDialog(QWidget *parent) : buttonGroup_ = new QGroupBox(tr("Difficulty")); buttonGroup_->setLayout(buttonLayout_); + QStringList items; + items << DEFAULT_IMAGE_TXT << RANDOM_IMAGE_TXT << SELECT_IMAGE_TXT; + + imageCombo_ = new QComboBox; + imageCombo_->addItems(items); + + selectedImageLabel_ = new QLabel(tr("n/a")); + mainLayout_ = new QVBoxLayout; mainLayout_->addWidget(buttonGroup_); + mainLayout_->addWidget(imageCombo_); + mainLayout_->addWidget(selectedImageLabel_); + + selectedImageLabel_->setVisible(false); setLayout(mainLayout_); connect(easyButton_, SIGNAL(toggled(bool)), this, SLOT(difficultySelectionChanged(bool))); + connect(imageCombo_, SIGNAL(currentIndexChanged(QString)), this, SLOT(imageSelectionChanged(QString))); +} + +int SettingsDialog::exec() +{ + // Making sure that a random image is picked when starting a new game after the first game (fix me) + if(imageCombo_->currentText() == RANDOM_IMAGE_TXT) { + imageSelectionChanged(RANDOM_IMAGE_TXT); + } + + return QDialog::exec(); } void SettingsDialog::difficultySelectionChanged(bool value) @@ -41,3 +70,52 @@ void SettingsDialog::difficultySelectionChanged(bool value) Settings::instance()->setPieceCount(HARD_PIECE_COUNT); } } + +void SettingsDialog::imageSelectionChanged(const QString &txt) +{ + if(txt == RANDOM_IMAGE_TXT) { + qDebug() << "Random image selected"; + + // Get random image from ~/MyDocs/.images/ + QStringList filters; + filters << "*.jpg" << "*.png" << "*.xpm"; + + QDir dir(QDir::homePath() + QLatin1String("/MyDocs/.images")); + //dir.setNameFilters(filters); + + QStringList pics = dir.entryList(filters, QDir::Files | QDir::NoSymLinks); + + qDebug() << QString("pics list contains %1 entries").arg(pics.count()); + + Settings::instance()->setImage(QPixmap(QDir::homePath() + QLatin1String("/MyDocs/.images/") + pics.at(qrand() % pics.count()))); + + if(selectedImageLabel_->isVisible()) { + selectedImageLabel_->setVisible(false); + } + } + else if(txt == SELECT_IMAGE_TXT) { + qDebug() << "Select image... selected"; + + // Open file selection dialog + QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"), + QDir::homePath() + QLatin1String("/MyDocs/.images"), + tr("Images (*.png *.xpm *.jpg)")); + + Settings::instance()->setImage(QPixmap(fileName)); + + selectedImageLabel_->setText(fileName); + + if(!selectedImageLabel_->isVisible() && !fileName.isEmpty()) { + selectedImageLabel_->setVisible(true); + } + } + else { + qDebug() << "Default image selected"; + + Settings::instance()->setImage(0); + + if(selectedImageLabel_->isVisible()) { + selectedImageLabel_->setVisible(false); + } + } +}