04 clearBoard;
05 if (qApp->isSessionRestored)
06 restoreState;
07 setWindowTitle(tr("Tic-Tac-Toe"));
08 }
В конструкторе мы стираем игровое поле и, если приложение было вызвано с опцией
01 void TicTacToe::clearBoard
02 {
03 for (int row= 0; row < 3; ++row) {
04 for (int column = 0; column < 3; ++column) {
05 board[row][column] = Empty;
06 }
07 }
08 turnNumber = 0;
09 }
В функции
01 QString TicTacToe::saveState const
02 {
03 QFile file(sessionFileName);
04 if (file.open(QIODevice::WriteOnly)) {
05 QTextStream out(&file);
06 for (int row = 0; row < 3; ++row) {
07 for (int column = 0; column < 3; ++column) {
08 out << board[row][column];
09 }
10 }
11 }
12 return file.fileName;
13 }
В функции
01 QString TicTacToe::sessionFileName const
02 {
03 return QDir::homePath + "/.tictactoe_"
04 + qApp->sessionId + "_" + qApp->sessionKey;
05 }
Закрытая функция
01 void TicTacToe::restoreState
02 {
03 QFile file(sessionFileName);
04 if (file.open(QIODevice::ReadOnly)) {
05 QTextStream in(&file);
06 for (int row = 0; row < 3; ++row) {
07 for (int column = 0; column < 3; ++column) {
08 in >> board[row][column];
09 if (board[row][column] != Empty)
10 ++turnNumber;
11 }
12 }
13 }
14 update;
15 }
В функции
В конструкторе
Тестирование и отладка программного кода по управлению сеансами могут быть достаточно утомительным делом, поскольку нам приходится все время входить и выходить из системы. Один из способов, позволяющий избежать этого, заключается в применении стандартной утилиты
Глава 21. Программирование встроенных систем