From 850441d72ad73e6bcf3570e3f62287c28eaead31 Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Thu, 18 Jul 2013 20:52:33 +0000 Subject: Solves a bug where the overwrite file warning shows the wrong filename, adds a visual indication if a sudoku grid has been solved. --- TODO | 5 ++++- src/settings.cc | 3 ++- src/settings.h | 6 ++++++ src/solverwindow.cc | 2 +- src/solverwindow.h | 2 +- src/sudokuwidget.cc | 24 ++++++++++++++++-------- src/sudokuwidget.h | 4 +++- 7 files changed, 33 insertions(+), 13 deletions(-) diff --git a/TODO b/TODO index b0e56bf..5246be3 100644 --- a/TODO +++ b/TODO @@ -1,8 +1,11 @@ SUDOKU SOLVER - TODO + - Add generation choices to Game->New (Empty, easy, medium, hard) - Add Game->Settings (colors, homepath) - + - Add Undo/Redo + + - [SOLVED] Save As overwrite warning still shows the original filename - [SOLVED] Disable the built-in 'overwrite' warning in the Save As dialog, use the same warning for Save and Save As. - [SOLVED] Have the Move->Validate option tell if the sudoku can be solved through constrains, full search, or not at all - [SOLVED] Fix homedir business on WIN32 (uses Application data) diff --git a/src/settings.cc b/src/settings.cc index 94504d2..19e3c17 100644 --- a/src/settings.cc +++ b/src/settings.cc @@ -15,7 +15,8 @@ const Settings & globalSettings() Settings::Settings() : m_homePath(), m_colorInvalidValue(255, 0, 0), - m_colorInputError(195, 195, 195) + m_colorInputError(195, 195, 195), + m_colorSolved(192, 255, 192) { #ifdef _WIN32 // get the full path for "Applicaton Data" diff --git a/src/settings.h b/src/settings.h index 319bcb1..229d67a 100644 --- a/src/settings.h +++ b/src/settings.h @@ -22,10 +22,16 @@ public: return m_colorInputError; } + inline const QColor & colorSolved() const + { + return m_colorSolved; + } + private: QString m_homePath; QColor m_colorInvalidValue; QColor m_colorInputError; + QColor m_colorSolved; }; const Settings & globalSettings(); diff --git a/src/solverwindow.cc b/src/solverwindow.cc index 410868c..623caa3 100644 --- a/src/solverwindow.cc +++ b/src/solverwindow.cc @@ -133,7 +133,7 @@ void SolverWindow::doRevert() bool SolverWindow::confirmOverwrite(const QString & filename) { - QFile file (solverwindow_filename); + QFile file (filename); if (file.exists()) { QFileInfo fileinfo(file); return (QMessageBox::warning(this, tr("Overwrite file?"), tr("The file \"%1\" already exists.\nDo you wish to overwrite it?").arg(fileinfo.fileName()), QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes); diff --git a/src/solverwindow.h b/src/solverwindow.h index 3a7daf1..4729218 100644 --- a/src/solverwindow.h +++ b/src/solverwindow.h @@ -52,7 +52,7 @@ signals: private: void step_constraints(); - void step_coverage(); + void step_coverage(); void saveToFile(const QString & filename); void openFromFile(const QString & filename); diff --git a/src/sudokuwidget.cc b/src/sudokuwidget.cc index 78e90fd..387f5d4 100644 --- a/src/sudokuwidget.cc +++ b/src/sudokuwidget.cc @@ -20,7 +20,7 @@ SudokuWidget::SudokuWidget() } } -void SudokuWidget::verify(const QString & text) +void SudokuWidget::verify() { Sudoku values; for (int row = 0; row < 9; row++) { @@ -41,7 +41,7 @@ void SudokuWidget::verify(const QString & text) } } - values.validate(); + bool solved = values.solved(); for (int row = 0; row < 9; row++) { for (int column = 0; column < 9 ; column++) { @@ -49,7 +49,9 @@ void SudokuWidget::verify(const QString & text) int i = values.cell(row, column).value(); if ( (i > 0) && (i <= 9) ) { // set background color depending on the validity of the cell value - if (!values.cell(row, column).valid()) { + if (solved) { + child_palette.setColor(QPalette::Base, globalSettings().colorSolved()); + } else if (!values.cell(row, column).valid()) { child_palette.setColor(QPalette::Base, globalSettings().colorInvalidValue()); } sudokuwidget_value[row][column]->setPalette(child_palette); @@ -58,6 +60,10 @@ void SudokuWidget::verify(const QString & text) } } +void SudokuWidget::verify(const QString & text) { + verify(); +} + QSize SudokuWidget::sizeHint () const { return QSize(512, 512); @@ -83,6 +89,8 @@ void SudokuWidget::set_values(const Sudoku & values) sudokuwidget_value[row][column]->setPalette(child_palette); } } + + verify(); } void SudokuWidget::get_values(Sudoku & values) @@ -103,22 +111,22 @@ void SudokuWidget::get_values(Sudoku & values) void SudokuWidget::resizeEvent(QResizeEvent *event) { + // cell size int sgx = width() / 9; - int sgy = height() / 9; - - // offset + int sgy = height() / 9; if (sgx > sgy) { sgx = sgy; } else { sgy = sgx; } + + // offset, used to center the grid inside the widget int offset_x = (width() - 9 * sgx) / 2; int offset_y = (height() - 9 * sgy) / 2; QFont font("default", 16); font.setPixelSize(sgx / 2); - - + for (int row = 0; row < 9; row++) { for (int column = 0; column < 9 ; column++) { sudokuwidget_value[row][column]->setFont(font); diff --git a/src/sudokuwidget.h b/src/sudokuwidget.h index e4140a0..9ca6098 100644 --- a/src/sudokuwidget.h +++ b/src/sudokuwidget.h @@ -30,7 +30,7 @@ public: * @brief return the default size hint for this widget * */ virtual QSize sizeHint() const; - + protected: /** * @brief handle paint events @@ -46,6 +46,8 @@ private: QLineEdit * sudokuwidget_value[9][9]; private slots: + void verify(); + void verify(const QString & text); }; -- cgit v1.2.3