summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2013-07-13 12:38:46 +0000
committerStijn Buys <ingar@osirion.org>2013-07-13 12:38:46 +0000
commit29f38402c15b6c8a5516352a376e26fe1774711b (patch)
treee57d2b265b78745ef71db2e96240ab9a8beda637
parentd506fd676807f12d729f345d00774cfc05c0db6e (diff)
Adds a status bar.
-rw-r--r--TODO4
-rw-r--r--src/mainwindow.cc19
-rw-r--r--src/mainwindow.h35
-rw-r--r--src/solverwindow.cc24
-rw-r--r--src/solverwindow.h3
5 files changed, 61 insertions, 24 deletions
diff --git a/TODO b/TODO
index 0ffe961..d1716eb 100644
--- a/TODO
+++ b/TODO
@@ -2,10 +2,10 @@
SUDOKU SOLVER - TODO
- Add Game->Settings (colors, homepath)
- - Add status bar
- Fix homedir business on WIN32 (e.g. use Aplication data)
- Add windows exe icon
-
+
+ - [SOLVED] Add status bar
- [SOLVED] Add confirm dialgs on Quit and New
- [SOLVED] Remove sidebar buttons
- [SOLVED] Move->Step solves rules only. Have it search for a solution and pick a solved cell.
diff --git a/src/mainwindow.cc b/src/mainwindow.cc
index adb45e6..8ab6c70 100644
--- a/src/mainwindow.cc
+++ b/src/mainwindow.cc
@@ -40,7 +40,11 @@ MainWindow::MainWindow()
initMenus();
+ initStatus();
+
updateTitle();
+
+ connect(mainwindow_solverwindow, SIGNAL(statusChanged(const QString &)), this, SLOT(updateStatus(const QString &)));
}
@@ -142,6 +146,13 @@ void MainWindow::initMenus()
mainwindow_helpmenu->addAction(action_about);
}
+
+void MainWindow::initStatus()
+{
+ setStatusBar(new QStatusBar(this));
+ statusBar()->showMessage(PACKAGE_STRING);
+}
+
void MainWindow::updateTitle()
{
if (mainwindow_solverwindow->filename().isEmpty()) {
@@ -150,12 +161,18 @@ void MainWindow::updateTitle()
action_revert->setEnabled(false);
} else {
- setWindowTitle(mainwindow_solverwindow->filename() + " - " + PACKAGE_NAME);
+ QFileInfo fileinfo(mainwindow_solverwindow->filename());
+ setWindowTitle(fileinfo.baseName() + " - " + PACKAGE_NAME);
action_revert->setEnabled(true);
}
}
+void MainWindow::updateStatus(const QString & text)
+{
+ statusBar()->showMessage(text);
+}
+
void MainWindow::doNew()
{
mainwindow_solverwindow->doNew();
diff --git a/src/mainwindow.h b/src/mainwindow.h
index b928c68..def0bc8 100644
--- a/src/mainwindow.h
+++ b/src/mainwindow.h
@@ -17,13 +17,26 @@ class MainWindow : public QMainWindow
public:
MainWindow();
-private:
- void initActions();
+private slots:
+ void updateTitle();
+ void updateStatus(const QString & text);
- void initMenus();
+ void doNew();
+ void doOpen();
+ void doSave();
+ void doSaveAs();
+ void doRevert();
+ void doQuit();
- void updateTitle();
+ void doValidate();
+ void doAbout();
+
+private:
+ void initActions();
+ void initMenus();
+ void initStatus();
+
SolverWindow *mainwindow_solverwindow;
QMenu *mainwindow_gamemenu;
QMenu *mainwindow_movemenu;
@@ -47,20 +60,6 @@ private:
// Help menu actions
QAction *action_about;
-
-private slots:
-
- void doNew();
- void doOpen();
- void doSave();
- void doSaveAs();
- void doRevert();
- void doQuit();
-
- void doValidate();
-
- void doAbout();
-
};
#endif // __INCLUDED_SUDOKUSOLVER_MAINWINDOW__
diff --git a/src/solverwindow.cc b/src/solverwindow.cc
index 6102c09..9e0c782 100644
--- a/src/solverwindow.cc
+++ b/src/solverwindow.cc
@@ -3,6 +3,8 @@
#include "sudokuwidget.h"
#include "sudoku.h"
+#include "config.h"
+
#include <QtGui>
#include <QDir>
#include <QHBoxLayout>
@@ -41,10 +43,14 @@ void SolverWindow::openFromFile(const QString & filename)
QFile file(filename);
if (!file.open(QFile::ReadOnly | QFile::Text)) {
- QMessageBox::warning(this, tr("Open"),
+ QMessageBox::warning(this, tr("Error opening file"),
tr("Could not open file \"%1\":\n%2.")
.arg(filename)
.arg(file.errorString()));
+
+ QFileInfo fileinfo(filename);
+ emit statusChanged(tr("Could not open file \"%1\"").arg(fileinfo.fileName()));
+
return;
}
@@ -64,6 +70,9 @@ void SolverWindow::openFromFile(const QString & filename)
solverwindow_sudokuwidget->set_values(sudoku);
solverwindow_filename = filename;
+ QFileInfo fileinfo(filename);
+ emit statusChanged(tr("Opened file \"%1\"").arg(fileinfo.fileName()));
+
QApplication::restoreOverrideCursor();
}
@@ -72,10 +81,14 @@ void SolverWindow::saveToFile(const QString & filename)
{
QFile file(filename);
if (!file.open(QFile::WriteOnly | QFile::Text)) {
- QMessageBox::warning(this, tr("Save"),
- tr("Could not write to file \"%1\":\n%2.")
+ QMessageBox::warning(this, tr("Error saving file"),
+ tr("Could not save file \"%1\":\n%2.")
.arg(filename)
.arg(file.errorString()));
+
+ QFileInfo fileinfo(filename);
+ emit statusChanged(tr("Could not save file \"%1\"").arg(fileinfo.fileName()));
+
return;
}
@@ -106,6 +119,9 @@ void SolverWindow::saveToFile(const QString & filename)
solverwindow_filename = filename;
+ QFileInfo fileinfo(filename);
+ emit statusChanged(tr("Saved file \"%1\"").arg(fileinfo.fileName()));
+
QApplication::restoreOverrideCursor();
}
@@ -164,6 +180,8 @@ void SolverWindow::doNew()
Sudoku sudoku;
solverwindow_sudokuwidget->set_values(sudoku);
solverwindow_filename.clear();
+
+ emit statusChanged(PACKAGE_STRING);
}
}
diff --git a/src/solverwindow.h b/src/solverwindow.h
index 053e14a..d279a1a 100644
--- a/src/solverwindow.h
+++ b/src/solverwindow.h
@@ -47,6 +47,9 @@ public slots:
void doValidate();
+signals:
+ void statusChanged(const QString &text);
+
private:
void step_constraints();
void step_coverage();