void ControllersWindow::OnGCPadConfigure() { size_t index; for (index = 0; index < m_gc_groups.size(); index++) { if (m_gc_buttons[index] == QObject::sender()) break; } MappingWindow::Type type; switch (m_gc_controller_boxes[index]->currentIndex()) { case 0: // None case 6: // GBA return; case 1: // Standard Controller type = MappingWindow::Type::MAPPING_GCPAD; break; case 2: // GameCube Adapter for Wii U GCPadWiiUConfigDialog(static_cast<int>(index), this).exec(); return; case 3: // Steering Wheel type = MappingWindow::Type::MAPPING_GC_STEERINGWHEEL; break; case 4: // Dance Mat type = MappingWindow::Type::MAPPING_GC_DANCEMAT; break; case 5: // DK Bongos type = MappingWindow::Type::MAPPING_GC_BONGOS; break; case 7: // Keyboard type = MappingWindow::Type::MAPPING_GC_KEYBOARD; break; default: return; } MappingWindow(this, type, static_cast<int>(index)).exec(); }
void ControllersWindow::OnWiimoteConfigure() { size_t index; for (index = 0; index < m_wiimote_groups.size(); index++) { if (m_wiimote_buttons[index] == QObject::sender()) break; } MappingWindow::Type type; switch (m_wiimote_boxes[index]->currentIndex()) { case 0: // None case 2: // Real Wii Remote return; case 1: // Emulated Wii Remote type = MappingWindow::Type::MAPPING_WIIMOTE_EMU; break; default: return; } MappingWindow(this, type, static_cast<int>(index)).exec(); }
void GameCubePane::OnConfigPressed(int slot) { QString filter; bool memcard = false; switch (m_slot_combos[slot]->currentIndex()) { // Memory card case 2: filter = tr("GameCube Memory Cards (*.raw *.gcp)"); memcard = true; break; // Advance Game Port case 5: filter = tr("Game Boy Advance Carts (*.gba)"); memcard = false; break; // Microphone case 6: MappingWindow(this, MappingWindow::Type::MAPPING_GC_MICROPHONE, slot).exec(); return; } QString filename = QFileDialog::getSaveFileName( this, tr("Choose a file to open"), QString::fromStdString(File::GetUserPath(D_GCUSER_IDX)), filter, 0, QFileDialog::DontConfirmOverwrite); if (filename.isEmpty()) return; QString path_abs = QFileInfo(filename).absoluteFilePath(); // Memcard validity checks if (memcard) { if (File::Exists(filename.toStdString())) { GCMemcard mc(filename.toStdString()); if (!mc.IsValid()) { QMessageBox::critical(this, tr("Error"), tr("Cannot use that file as a memory card.\n%1\n" "is not a valid GameCube memory card file") .arg(filename)); return; } } bool other_slot_memcard = m_slot_combos[slot == 0 ? SLOT_B_INDEX : SLOT_A_INDEX]->currentIndex() == EXP_MEMORYCARD; if (other_slot_memcard) { QString path_b = QFileInfo(QString::fromStdString(slot == 0 ? Config::Get(Config::MAIN_MEMCARD_B_PATH) : Config::Get(Config::MAIN_MEMCARD_A_PATH))) .absoluteFilePath(); if (path_abs == path_b) { QMessageBox::critical(this, tr("Error"), tr("The same file can't be used in both slots.")); return; } } } QString path_old; if (memcard) { path_old = QFileInfo(QString::fromStdString(slot == 0 ? Config::Get(Config::MAIN_MEMCARD_A_PATH) : Config::Get(Config::MAIN_MEMCARD_B_PATH))) .absoluteFilePath(); } else { path_old = QFileInfo(QString::fromStdString(slot == 0 ? SConfig::GetInstance().m_strGbaCartA : SConfig::GetInstance().m_strGbaCartB)) .absoluteFilePath(); } if (memcard) { if (slot == SLOT_A_INDEX) { Config::SetBase(Config::MAIN_MEMCARD_A_PATH, path_abs.toStdString()); } else { Config::SetBase(Config::MAIN_MEMCARD_B_PATH, path_abs.toStdString()); } } else { if (slot == SLOT_A_INDEX) { SConfig::GetInstance().m_strGbaCartA = path_abs.toStdString(); } else { SConfig::GetInstance().m_strGbaCartB = path_abs.toStdString(); } } if (Core::IsRunning() && path_abs != path_old) { ExpansionInterface::ChangeDevice( // SlotB is on channel 1, slotA and SP1 are on 0 slot, // The device enum to change to memcard ? ExpansionInterface::EXIDEVICE_MEMORYCARD : ExpansionInterface::EXIDEVICE_AGP, // SP1 is device 2, slots are device 0 0); } }