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. --- src/sudokuwidget.cc | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) (limited to 'src/sudokuwidget.cc') 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); -- cgit v1.2.3