| 261 | } |
| 262 | |
| 263 | void StoreUtils::QueueMenuHandle(int &queueIndex, int &storeMode) { |
| 264 | if (!queueEntries.empty()) { |
| 265 | if ((1 + queueMenuIdx) > (int)queueEntries.size() - 1) queueMenuIdx = std::max<int>((int)(queueEntries.size() - 1) - 1, 0); // Ensure this really doesn't go below 0. |
| 266 | } |
| 267 | |
| 268 | if (hDown & KEY_TOUCH) { |
| 269 | /* Current Queue Cancel. */ |
| 270 | if (QueueSystem::RequestNeeded == NO_REQUEST && touching(touch, QueueBoxes[2])) { // Needs to be above the 0 one, otherwise the callback won't be accepted. |
| 271 | QueueSystem::CancelCallback = true; |
| 272 | |
| 273 | } else if (touching(touch, QueueBoxes[0])) { |
| 274 | if (QueueSystem::RequestNeeded != NO_REQUEST) { // -1 means no request. |
| 275 | switch(QueueSystem::RequestNeeded) { |
| 276 | case RMDIR_REQUEST: // Remove Directory message. |
| 277 | QueueSystem::RequestAnswer = Msg::promptMsg(QueueSystem::RequestMsg); |
| 278 | |
| 279 | QueueSystem::Wait = false; |
| 280 | QueueSystem::Resume(); |
| 281 | break; |
| 282 | |
| 283 | case PROMPT_REQUEST: // Skip prompt message. |
| 284 | QueueSystem::RequestAnswer = ScriptUtils::prompt(QueueSystem::RequestMsg, QueueSystem::RequestMsgName); |
| 285 | |
| 286 | QueueSystem::Wait = false; |
| 287 | QueueSystem::Resume(); |
| 288 | break; |
| 289 | } |
| 290 | |
| 291 | } else { |
| 292 | ShowQueueProgress = !ShowQueueProgress; // In case no request expected, switch from progress to total progress mode etc. |
| 293 | } |
| 294 | |
| 295 | /* Remove from Queue. */ |
| 296 | } else if (touching(touch, QueueBoxes[3])) { // Remove Queue entries. |
| 297 | if (queueEntries.size() > 1) queueEntries.erase(queueEntries.begin() + 1 + queueMenuIdx); |
| 298 | } |
| 299 | } |
| 300 | |
| 301 | if (hDown & KEY_DOWN) { |
| 302 | if (!queueEntries.empty()) { |
| 303 | if ((1 + queueMenuIdx) < (int)queueEntries.size() - 1) queueMenuIdx++; |
| 304 | } |
| 305 | } |
| 306 | |
| 307 | if (hDown & KEY_UP) { |
| 308 | if (queueMenuIdx > 0) queueMenuIdx--; |
| 309 | } |
| 310 | |
| 311 | if(hDown & KEY_A) { |
| 312 | if (QueueSystem::RequestNeeded != NO_REQUEST) { // -1 means no request. |
| 313 | switch(QueueSystem::RequestNeeded) { |
| 314 | case RMDIR_REQUEST: // Remove Directory message. |
| 315 | QueueSystem::RequestAnswer = Msg::promptMsg(QueueSystem::RequestMsg); |
| 316 | |
| 317 | QueueSystem::Wait = false; |
| 318 | QueueSystem::Resume(); |
| 319 | break; |
| 320 | |