百人一首かるた自動読み上げソフト
Revisão | 6958d1f48d941095f6051c27a7e5404975b06a34 (tree) |
---|---|
Hora | 2011-10-21 23:58:33 |
Autor | arakaki <alucky4416@user...> |
Commiter | arakaki |
@@ -158,6 +158,7 @@ void PlaySequenceThread::run() | ||
158 | 158 | |
159 | 159 | ListIndex = 0; |
160 | 160 | PlayListCount = 0; |
161 | + prev_state = IDLE; | |
161 | 162 | |
162 | 163 | int event = 0; |
163 | 164 | while (!stopped) { |
@@ -183,7 +184,7 @@ void PlaySequenceThread::run() | ||
183 | 184 | ListIndex = 0; |
184 | 185 | PlayListCount = PlayNumList->count(); |
185 | 186 | FudaN = PlayNumList->at(ListIndex); |
186 | - if (FudaN != 0) { // FudaN == 0 is Special Card (MakuraKotoba) | |
187 | + if (FudaN != 0) { // FudaN == 0 is Special Card (Joka) | |
187 | 188 | playmusicTh->PlayMusic(GetMusicFilePath(PlayNumList->at(ListIndex), 1)); |
188 | 189 | state = PLAY_1; |
189 | 190 | } else { |
@@ -204,6 +205,7 @@ void PlaySequenceThread::run() | ||
204 | 205 | } else if (event == Ev_Pause) { |
205 | 206 | playmusicTh->StopMusic(); |
206 | 207 | state = PAUSE; |
208 | + prev_state = PLAY_1; | |
207 | 209 | } |
208 | 210 | break; |
209 | 211 | case WAIT_1: |
@@ -217,6 +219,7 @@ void PlaySequenceThread::run() | ||
217 | 219 | } else if (event == Ev_Pause) { |
218 | 220 | // Timer->stop(); |
219 | 221 | state = PAUSE; |
222 | + prev_state = WAIT_1; | |
220 | 223 | } |
221 | 224 | break; |
222 | 225 | case PLAY_2: |
@@ -243,6 +246,7 @@ void PlaySequenceThread::run() | ||
243 | 246 | } else if (event == Ev_Pause) { |
244 | 247 | playmusicTh->StopMusic(); |
245 | 248 | state = PAUSE; |
249 | + prev_state = PLAY_2; | |
246 | 250 | } |
247 | 251 | break; |
248 | 252 | case WAIT_2: |
@@ -256,18 +260,21 @@ void PlaySequenceThread::run() | ||
256 | 260 | } else if (event == Ev_Pause) { |
257 | 261 | // WaitTimer->stop(); |
258 | 262 | state = PAUSE; |
263 | + prev_state = WAIT_2; | |
259 | 264 | } |
260 | 265 | break; |
261 | 266 | case PAUSE: |
262 | 267 | if (event == Ev_Start) { |
263 | 268 | FudaN = PlayNumList->at(ListIndex); |
264 | - if (FudaN != 0) { // FudaN == 0 is Special Card (MakuraKotoba) | |
269 | + if (prev_state == WAIT_2 && ListIndex > 0) ListIndex--; // prev rewind when WAIT_2 | |
270 | + if (prev_state == PLAY_1 && FudaN != 0) { // FudaN == 0 is Special Card (Joka) | |
265 | 271 | playmusicTh->PlayMusic(GetMusicFilePath(PlayNumList->at(ListIndex), 1)); |
266 | 272 | state = PLAY_1; |
267 | 273 | } else { |
268 | 274 | playmusicTh->PlayMusic(GetMusicFilePath(PlayNumList->at(ListIndex), 2)); |
269 | 275 | state = PLAY_2; |
270 | 276 | } |
277 | + prev_state = IDLE; | |
271 | 278 | } else if (event == Ev_Abort) { |
272 | 279 | AbortProc(); |
273 | 280 | state = IDLE; |
@@ -55,7 +55,7 @@ private: | ||
55 | 55 | PLAY_2, // 3 Simo no ku yomiage |
56 | 56 | WAIT_2, // 4 next wait |
57 | 57 | PAUSE |
58 | - } state; | |
58 | + } state, prev_state; | |
59 | 59 | // State Machine, event Id |
60 | 60 | enum { Ev_Nop = 0, |
61 | 61 | Ev_Start, |
@@ -33,7 +33,7 @@ MainWindow::MainWindow(QWidget *parent) : | ||
33 | 33 | { |
34 | 34 | ui->setupUi(this); |
35 | 35 | QCoreApplication::setApplicationName("QtKarutaEishow"); |
36 | - QCoreApplication::setApplicationVersion("0.1 alpha"); | |
36 | + QCoreApplication::setApplicationVersion("0.1 beta"); | |
37 | 37 | this->setWindowTitle(QCoreApplication::applicationName()); |
38 | 38 | |
39 | 39 | // QTextCodec::setCodecForTr(QTextCodec::codecForLocale()); |