35
38
gameListWidget->setModel(m_collection);
36
39
gameListWidget->setItemDelegate(delegate);
37
gameListWidget->setVerticalScrollMode(QListView::ScrollPerPixel);
40
gameListWidget->setVerticalScrollMode(QListView::ScrollPerPixel);
41
gameListWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
42
gameListWidget->setSelectionMode(QAbstractItemView::SingleSelection);
44
// Get the previous puzzle configuration.
45
KConfigGroup gameGroup (KGlobal::config(), "KSudokuGame");
46
m_selectedPuzzle = gameGroup.readEntry("SelectedPuzzle", 0);
47
m_difficulty = gameGroup.readEntry("Difficulty", (int) VeryEasy);
48
m_symmetry = gameGroup.readEntry("Symmetry" , (int) CENTRAL);
50
// This has to be a deferred call (presumably to allow the view's setup
51
// to complete), otherwise the selection fails to appear.
52
QMetaObject::invokeMethod (this, "setSelectedVariant",
54
Q_ARG (int, m_selectedPuzzle));
39
56
connect(gameListWidget->selectionModel(), SIGNAL(currentChanged(const QModelIndex&,const QModelIndex&)), this, SLOT(onCurrentVariantChange()));
41
58
connect(getNewGameButton, SIGNAL(clicked(bool)), this, SLOT(getNewVariant()));
42
59
// TODO disabled due to missing per-game config dialog
43
60
// connect(configureGameButton, SIGNAL(clicked(bool)), this, SLOT(configureVariant()));
61
// connect(playGameButton, SIGNAL(clicked(bool)), this, SLOT(playVariant())); // Disable old create-game code.
62
// connect(gameListWidget, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(playVariant())); // Disable old create-game code.
44
64
connect(startEmptyButton, SIGNAL(clicked(bool)), this, SLOT(startEmptyGame()));
45
connect(playGameButton, SIGNAL(clicked(bool)), this, SLOT(playVariant()));
46
connect(gameListWidget, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(playVariant()));
65
connect(puzzleGeneratorButton, SIGNAL(clicked(bool)), this, SLOT(generatePuzzle()));
66
connect(gameListWidget, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(generatePuzzle()));
48
68
// GHNS is not implemented yet, so don't show an unuseful button
49
69
getNewGameButton->hide();
52
72
GameVariant* WelcomeScreen::selectedVariant() const {
53
QModelIndex index = gameListWidget->selectionModel()->currentIndex();
73
QModelIndex index = gameListWidget->currentIndex();
54
74
return m_collection->variant(index);
77
void WelcomeScreen::setSelectedVariant(int row) {
78
gameListWidget->setCurrentIndex(gameListWidget->model()->index(row,0));
57
81
int WelcomeScreen::difficulty() const {
58
return difficultySlider->value();
61
85
void WelcomeScreen::setDifficulty(int difficulty) {
62
difficultySlider->setValue(difficulty);
86
m_difficulty = difficulty;
89
int WelcomeScreen::symmetry() const {
93
void WelcomeScreen::setSymmetry(int symmetry) {
94
m_symmetry = symmetry;
65
97
void WelcomeScreen::onCurrentVariantChange() {
66
QItemSelectionModel* selection = gameListWidget->selectionModel();
67
selection->select(selection->currentIndex(), QItemSelectionModel::Select);
69
98
GameVariant* variant = selectedVariant();
71
100
// TODO disabled due to missing per-game config dialog
72
101
// configureGameButton->setEnabled(false);
73
playGameButton->setEnabled(false);
102
// playGameButton->setEnabled(false);
103
puzzleGeneratorButton->setEnabled(false);
77
107
// TODO disabled due to missing per-game config dialog
78
108
// configureGameButton->setEnabled(variant->canConfigure());
79
109
startEmptyButton->setEnabled(variant->canStartEmpty());
80
playGameButton->setEnabled(true);
110
// playGameButton->setEnabled(true);
111
puzzleGeneratorButton->setEnabled(true);
83
114
void WelcomeScreen::getNewVariant() {
103
134
void WelcomeScreen::playVariant() {
104
GameVariant* variant = selectedVariant();
107
Game game = variant->createGame(difficulty());
135
return; // Disable old game-creation code.
136
GameVariant* variant = selectedVariant();
139
Game game = variant->createGame(difficulty(), 0);
141
emit newGameStarted(game, variant);
144
void WelcomeScreen::generatePuzzle() {
145
GameVariant* variant = selectedVariant();
148
Game game = variant->createGame(difficulty(), symmetry());
150
// Save the selected puzzle configuration.
151
QModelIndex index = gameListWidget->currentIndex();
152
m_selectedPuzzle = index.row();
154
KConfigGroup gameGroup (KGlobal::config(), "KSudokuGame");
155
gameGroup.writeEntry("SelectedPuzzle", m_selectedPuzzle);
156
gameGroup.writeEntry("Difficulty", m_difficulty);
157
gameGroup.writeEntry("Symmetry" , m_symmetry);
158
gameGroup.sync(); // Ensure that the entry goes to disk.
109
160
emit newGameStarted(game, variant);