1 #include "settingsdialog.h"
5 #include <QRadioButton>
11 #include <QFileDialog>
17 SettingsDialog::SettingsDialog(QWidget *parent) :
22 easyButton_ = new QRadioButton(tr("Easy"));
23 easyButton_->setChecked(true);
24 hardButton_ = new QRadioButton(tr("Hard"));
26 buttonLayout_ = new QHBoxLayout;
27 buttonLayout_->addWidget(easyButton_);
28 buttonLayout_->addWidget(hardButton_);
30 buttonGroup_ = new QGroupBox(tr("Difficulty"));
31 buttonGroup_->setLayout(buttonLayout_);
34 items << DEFAULT_IMAGE_TXT << RANDOM_IMAGE_TXT << SELECT_IMAGE_TXT;
36 imageCombo_ = new QComboBox;
37 imageCombo_->addItems(items);
39 selectedImageLabel_ = new QLabel(tr("n/a"));
41 mainLayout_ = new QVBoxLayout;
42 mainLayout_->addWidget(buttonGroup_);
43 mainLayout_->addWidget(imageCombo_);
44 mainLayout_->addWidget(selectedImageLabel_);
46 selectedImageLabel_->setVisible(false);
48 setLayout(mainLayout_);
50 connect(easyButton_, SIGNAL(toggled(bool)), this, SLOT(difficultySelectionChanged(bool)));
51 connect(imageCombo_, SIGNAL(currentIndexChanged(QString)), this, SLOT(imageSelectionChanged(QString)));
54 int SettingsDialog::exec()
56 // Making sure that a random image is picked when starting a new game after the first game (fix me)
57 if(imageCombo_->currentText() == RANDOM_IMAGE_TXT) {
58 imageSelectionChanged(RANDOM_IMAGE_TXT);
61 return QDialog::exec();
64 void SettingsDialog::difficultySelectionChanged(bool value)
67 Settings::instance()->setPieceCount(EASY_PIECE_COUNT);
70 Settings::instance()->setPieceCount(HARD_PIECE_COUNT);
74 void SettingsDialog::imageSelectionChanged(const QString &txt)
76 if(txt == RANDOM_IMAGE_TXT) {
77 qDebug() << "Random image selected";
79 // Get random image from ~/MyDocs/.images/
81 filters << "*.jpg" << "*.png" << "*.xpm";
83 QDir dir(QDir::homePath() + QLatin1String("/MyDocs/.images"));
84 //dir.setNameFilters(filters);
86 QStringList pics = dir.entryList(filters, QDir::Files | QDir::NoSymLinks);
88 qDebug() << QString("pics list contains %1 entries").arg(pics.count());
90 QString path = QDir::homePath() + QLatin1String("/MyDocs/.images/") + pics.at(qrand() % pics.count());
91 Settings::instance()->setImage(QPixmap(path));
92 Settings::instance()->setImagePath(path);
94 if(selectedImageLabel_->isVisible()) {
95 selectedImageLabel_->setVisible(false);
98 else if(txt == SELECT_IMAGE_TXT) {
99 qDebug() << "Select image... selected";
101 // Open file selection dialog
102 QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"),
103 QDir::homePath() + QLatin1String("/MyDocs/.images"),
104 tr("Images (*.png *.xpm *.jpg)"));
106 Settings::instance()->setImage(QPixmap(fileName));
107 Settings::instance()->setImagePath(fileName);
109 selectedImageLabel_->setText(fileName);
111 if(!selectedImageLabel_->isVisible() && !fileName.isEmpty()) {
112 selectedImageLabel_->setVisible(true);
116 qDebug() << "Default image selected";
118 Settings::instance()->setImage(0);
119 Settings::instance()->setImagePath("default");
121 if(selectedImageLabel_->isVisible()) {
122 selectedImageLabel_->setVisible(false);