<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>src/new_game_dialog.cpp</filename>
    </added>
    <added>
      <filename>src/new_game_dialog.h</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -1,3 +1,6 @@
+2009-09-19 Graeme Gott &lt;graeme@gottcode.org&gt;
+	* Add new game dialog.
+
 2009-09-18 Graeme Gott &lt;graeme@gottcode.org&gt;
 	* Make pause behavior consistent across platforms.
 	* FIXED: Scores were not sorted correctly.</diff>
      <filename>ChangeLog</filename>
    </modified>
    <modified>
      <diff>@@ -24,6 +24,7 @@ unix: !macx {
 HEADERS = src/board.h \
 	src/cell.h \
 	src/maze.h \
+	src/new_game_dialog.h \
 	src/path.h \
 	src/scores.h \
 	src/settings.h \
@@ -35,6 +36,7 @@ SOURCES = src/board.cpp \
 	src/cell.cpp \
 	src/main.cpp \
 	src/maze.cpp \
+	src/new_game_dialog.cpp \
 	src/path.cpp \
 	src/scores.cpp \
 	src/settings.cpp \</diff>
      <filename>cutemaze.pro</filename>
    </modified>
    <modified>
      <diff>@@ -116,14 +116,6 @@ Board::~Board()
 
 void Board::newGame()
 {
-	// Prompt user
-	if (!m_done) {
-		emit pauseChecked(true);
-		if (QMessageBox::question(this, tr(&quot;Question&quot;), tr(&quot;Abort current game?&quot;), QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes) == QMessageBox::No) {
-			return;
-		}
-	}
-
 	// Stop tracking time
 	m_status_timer-&gt;stop();
 </diff>
      <filename>src/board.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -37,7 +37,6 @@
 #include &lt;QPainter&gt;
 #include &lt;QPushButton&gt;
 #include &lt;QSettings&gt;
-#include &lt;QSpinBox&gt;
 #include &lt;QTabWidget&gt;
 #include &lt;QVBoxLayout&gt;
 
@@ -234,46 +233,6 @@ Settings::Settings(QWidget* parent)
 	gameplay_layout-&gt;addWidget(m_gameplay_smooth, 4, 1);
 
 
-	// Create Mazes tab
-	QWidget* mazes_tab = new QWidget;
-	tabs-&gt;addTab(mazes_tab, tr(&quot;Mazes&quot;));
-
-	m_mazes_preview = new QLabel(mazes_tab);
-
-	m_mazes_algorithm = new QComboBox(mazes_tab);
-	m_mazes_algorithm-&gt;setInsertPolicy(QComboBox::InsertAlphabetically);
-	connect(m_mazes_algorithm, SIGNAL(currentIndexChanged(int)), this, SLOT(algorithmSelected(int)));
-	m_mazes_algorithm-&gt;addItem(tr(&quot;Hunt and Kill&quot;), 0);
-	m_mazes_algorithm-&gt;addItem(tr(&quot;Kruskal&quot;), 1);
-	m_mazes_algorithm-&gt;addItem(tr(&quot;Prim&quot;), 2);
-	m_mazes_algorithm-&gt;addItem(tr(&quot;Recursive Backtracker&quot;), 3);
-	m_mazes_algorithm-&gt;addItem(tr(&quot;Stack&quot;), 4);
-	m_mazes_algorithm-&gt;addItem(tr(&quot;Stack 2&quot;), 5);
-	m_mazes_algorithm-&gt;addItem(tr(&quot;Stack 3&quot;), 6);
-	m_mazes_algorithm-&gt;addItem(tr(&quot;Stack 4&quot;), 7);
-	m_mazes_algorithm-&gt;addItem(tr(&quot;Stack 5&quot;), 8);
-
-	m_mazes_targets = new QSpinBox(mazes_tab);
-	m_mazes_targets-&gt;setRange(1, 99);
-
-	m_mazes_size = new QSpinBox(mazes_tab);
-	m_mazes_size-&gt;setRange(10, 99);
-
-	QGridLayout* mazes_layout = new QGridLayout(mazes_tab);
-	mazes_layout-&gt;setSpacing(6);
-	mazes_layout-&gt;setRowStretch(0, 1);
-	mazes_layout-&gt;setRowStretch(5, 1);
-	mazes_layout-&gt;setColumnStretch(0, 1);
-	mazes_layout-&gt;setColumnStretch(3, 1);
-	mazes_layout-&gt;addWidget(m_mazes_preview, 1, 2);
-	mazes_layout-&gt;addWidget(new QLabel(tr(&quot;Algorithm&quot;), mazes_tab), 2, 1, Qt::AlignRight | Qt::AlignVCenter);
-	mazes_layout-&gt;addWidget(m_mazes_algorithm, 2, 2);
-	mazes_layout-&gt;addWidget(new QLabel(tr(&quot;Targets&quot;), mazes_tab), 3, 1, Qt::AlignRight | Qt::AlignVCenter);
-	mazes_layout-&gt;addWidget(m_mazes_targets, 3, 2);
-	mazes_layout-&gt;addWidget(new QLabel(tr(&quot;Size&quot;), mazes_tab), 4, 1, Qt::AlignRight | Qt::AlignVCenter);
-	mazes_layout-&gt;addWidget(m_mazes_size, 4, 2);
-
-
 	// Create Controls tab
 	QWidget* controls_tab = new QWidget;
 	tabs-&gt;addTab(controls_tab, tr(&quot;Controls&quot;));
@@ -367,11 +326,6 @@ void Settings::accept()
 	settings.setValue(&quot;Show Time&quot;, m_gameplay_time-&gt;isChecked());
 	settings.setValue(&quot;Smooth Movement&quot;, m_gameplay_smooth-&gt;isChecked());
 
-	// Write new maze settings to disk
-	settings.setValue(&quot;New/Algorithm&quot;, m_mazes_algorithm-&gt;itemData(m_mazes_algorithm-&gt;currentIndex()));
-	settings.setValue(&quot;New/Targets&quot;, m_mazes_targets-&gt;value());
-	settings.setValue(&quot;New/Size&quot;, m_mazes_size-&gt;value());
-
 	// Write control button settings to disk
 	foreach (ControlButton* button, controls) {
 		settings.setValue(&quot;Controls/&quot; + button-&gt;objectName().mid(8), button-&gt;key);
@@ -395,15 +349,6 @@ void Settings::reject()
 
 // ============================================================================
 
-void Settings::algorithmSelected(int index)
-{
-	if (index != -1) {
-		m_mazes_preview-&gt;setPixmap( QString(&quot;:/preview%1.png&quot;).arg( m_mazes_algorithm-&gt;itemData(index).toInt()) );
-	}
-}
-
-// ============================================================================
-
 void Settings::themeSelected(const QString&amp; theme)
 {
 	if (!theme.isEmpty()) {
@@ -503,12 +448,6 @@ void Settings::loadSettings()
 	m_gameplay_time-&gt;setChecked(settings.value(&quot;Show Time&quot;, true).toBool());
 	m_gameplay_smooth-&gt;setChecked(settings.value(&quot;Smooth Movement&quot;, true).toBool());
 
-	// Read new maze settings from disk
-	int algorithm = settings.value(&quot;New/Algorithm&quot;, 4).toInt();
-	m_mazes_algorithm-&gt;setCurrentIndex(m_mazes_algorithm-&gt;findData(algorithm));
-	m_mazes_targets-&gt;setValue(settings.value(&quot;New/Targets&quot;, 3).toInt());
-	m_mazes_size-&gt;setValue(settings.value(&quot;New/Size&quot;, 50).toInt());
-
 	// Read control button settings from disk
 	foreach (ControlButton* button, controls) {
 		button-&gt;key = settings.value(&quot;Controls/&quot; + button-&gt;objectName().mid(8), button-&gt;default_key).toUInt();</diff>
      <filename>src/settings.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -21,13 +21,11 @@
 #define SETTINGS_H
 
 #include &lt;QDialog&gt;
-#include &lt;QList&gt;
 class QCheckBox;
 class QComboBox;
 class QLabel;
 class QListWidget;
 class QPushButton;
-class QSpinBox;
 class Theme;
 
 class Settings : public QDialog
@@ -43,7 +41,8 @@ signals:
 public slots:
 	virtual void accept();
 	virtual void reject();
-	void algorithmSelected(int index);
+
+private slots:
 	void themeSelected(const QString&amp; theme);
 	void addTheme();
 	void removeTheme();
@@ -57,11 +56,6 @@ private:
 	QCheckBox* m_gameplay_time;
 	QCheckBox* m_gameplay_smooth;
 
-	QLabel* m_mazes_preview;
-	QComboBox* m_mazes_algorithm;
-	QSpinBox* m_mazes_targets;
-	QSpinBox* m_mazes_size;
-
 	QListWidget* m_themes_selector;
 	QLabel* m_themes_preview;
 	QPushButton* m_themes_remove_button;</diff>
      <filename>src/settings.h</filename>
    </modified>
    <modified>
      <diff>@@ -20,6 +20,7 @@
 #include &quot;window.h&quot;
 
 #include &quot;board.h&quot;
+#include &quot;new_game_dialog.h&quot;
 #include &quot;scores.h&quot;
 #include &quot;settings.h&quot;
 
@@ -139,7 +140,7 @@ void Window::initActions()
 	m_hint_action = game_menu-&gt;addAction(tr(&quot;Hint&quot;), m_board, SLOT(hint()));
 	game_menu-&gt;addAction(tr(&quot;High Scores&quot;), m_scores, SLOT(exec()));
 	m_pause_action = game_menu-&gt;addAction(tr(&quot;Pause Game&quot;));
-	game_menu-&gt;addAction(tr(&quot;New Game&quot;), m_board, SLOT(newGame()));
+	game_menu-&gt;addAction(tr(&quot;New Game&quot;), this, SLOT(newGame()));
 #else
 	// Create menubar
 #if defined(Q_OS_MAC)
@@ -147,7 +148,7 @@ void Window::initActions()
 #endif
 
 	QMenu* game_menu = menuBar()-&gt;addMenu(tr(&quot;Game&quot;));
-	QAction* new_action = game_menu-&gt;addAction(fetchIcon(&quot;document-new&quot;), tr(&quot;New&quot;), m_board, SLOT(newGame()), tr(&quot;Ctrl+N&quot;));
+	QAction* new_action = game_menu-&gt;addAction(fetchIcon(&quot;document-new&quot;), tr(&quot;New&quot;), this, SLOT(newGame()), tr(&quot;Ctrl+N&quot;));
 	m_pause_action = game_menu-&gt;addAction(fetchIcon(&quot;media-playback-pause&quot;), tr(&quot;Pause&quot;));
 	m_pause_action-&gt;setShortcut(tr(&quot;P&quot;));
 	m_hint_action = game_menu-&gt;addAction(fetchIcon(&quot;games-hint&quot;), tr(&quot;Hint&quot;), m_board, SLOT(hint()), tr(&quot;H&quot;));
@@ -200,3 +201,13 @@ void Window::about()
 }
 
 // ============================================================================
+
+void Window::newGame()
+{
+	NewGameDialog dialog(this);
+	if (dialog.exec() == QDialog::Accepted) {
+		m_board-&gt;newGame();
+	}
+}
+
+// ============================================================================</diff>
      <filename>src/window.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -39,6 +39,7 @@ protected:
 
 private slots:
 	void about();
+	void newGame();
 
 private:
 	void initActions();</diff>
      <filename>src/window.h</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>602f42b573dd6418c95198f9d84544cf6cf3fc6d</id>
    </parent>
  </parents>
  <author>
    <name>Graeme Gott</name>
    <email>graeme@gottcode.org</email>
  </author>
  <url>http://github.com/gottcode/cutemaze/commit/e6179cf831af20a1db19d977fb6d25c6b2e14bbd</url>
  <id>e6179cf831af20a1db19d977fb6d25c6b2e14bbd</id>
  <committed-date>2009-09-21T08:23:54-07:00</committed-date>
  <authored-date>2009-09-19T07:16:19-07:00</authored-date>
  <message>Add new game dialog.</message>
  <tree>8219fcf9af9b7e7f2e8c5ee2ac01d0eca0891e47</tree>
  <committer>
    <name>Graeme Gott</name>
    <email>graeme@gottcode.org</email>
  </committer>
</commit>
