+
+void ControllerTab::SetupLastUsedProfile(void)
+{
+ int deviceNumIndex = deviceList->findData(profile[profileNum].device);
+ int mapNumIndex = mapNameList->findText(profile[profileNum].mapName);
+
+ if (deviceNumIndex == -1 || mapNumIndex == -1)
+ {
+ // We're doing the default, so set it up...
+ deviceNumIndex = 0;
+ mapNumIndex = 0;
+ profileNum = 0;
+ }
+
+ deviceList->setCurrentIndex(deviceNumIndex);
+ mapNameList->setCurrentIndex(mapNumIndex);
+
+ int controllerIndex = mapToList->findData(profile[profileNum].preferredSlot);
+ mapToList->setCurrentIndex(controllerIndex);
+
+ // We have to do this manually, since it's no longer done automagically...
+ ChangeDevice(deviceNumIndex);
+ ChangeMapName(mapNumIndex);
+}
+
+
+void ControllerTab::DefineAllKeys(void)
+{
+// char jagButtonName[21][10] = { "Up", "Down", "Left", "Right",
+// "*", "7", "4", "1", "0", "8", "5", "2", "#", "9", "6", "3",
+// "A", "B", "C", "Option", "Pause" };
+ int orderToDefine[21] = { 0, 1, 2, 3, 18, 17, 16, 20, 19, 7, 11, 15, 6, 10, 14, 5, 9, 13, 8, 4, 12 };
+ KeyGrabber keyGrab(this);
+
+ for(int i=BUTTON_FIRST; i<=BUTTON_LAST; i++)
+ {
+ keyGrab.SetKeyText(orderToDefine[i]);
+ keyGrab.exec();
+ int key = keyGrab.key;
+
+ if (key == Qt::Key_Escape)
+ break;
+
+ // Otherwise, populate the appropriate spot in the settings & update
+ // the screen...
+ controllerWidget->keys[orderToDefine[i]] = key;
+ controllerWidget->update();
+ profile[profileNum].map[orderToDefine[i]] = key;
+ }
+}
+
+
+void ControllerTab::UpdateProfileKeys(int mapPosition, uint32_t key)
+{
+ profile[profileNum].map[mapPosition] = key;
+}
+
+
+void ControllerTab::UpdateProfileConnections(int selection)
+{
+ profile[profileNum].preferredSlot = mapToList->itemData(selection).toInt();
+}
+
+
+void ControllerTab::ChangeDevice(int selection)
+{
+ int deviceNum = deviceList->itemData(selection).toInt();
+ mapNameList->clear();
+ int numberOfMappings = FindMappingsForDevice(deviceNum, mapNameList);
+ // Make sure to disable the "-" button is there's only one mapping for this
+ // device...
+ deleteMapName->setDisabled(numberOfMappings == 1 ? true : false);
+ // Set up new profile #...
+ ChangeMapName(0);
+}
+
+
+void ControllerTab::ChangeMapName(int selection)
+{
+ profileNum = mapNameList->itemData(selection).toInt();
+
+ for(int i=BUTTON_FIRST; i<=BUTTON_LAST; i++)
+ controllerWidget->keys[i] = profile[profileNum].map[i];
+
+ controllerWidget->update();
+ mapToList->setCurrentIndex(mapToList->findData(profile[profileNum].preferredSlot));
+}
+
+
+void ControllerTab::AddMapName(void)
+{
+ int freeProfile = GetFreeProfile();
+
+ if (freeProfile == -1)
+ {
+ // Oh crap, we're out of room! Alert the media!
+ QMessageBox::warning(this, tr("Houston, we have a problem..."), tr("Can't create any more profiles!"));
+
+ return;
+ }
+
+ QString text = QInputDialog::getText(this, tr("Add Map Name"), tr("Map name:"), QLineEdit::Normal);
+
+ if (text.isEmpty())
+ return;
+
+ // Add mapping...
+ profileNum = freeProfile;
+ profile[profileNum].device = deviceList->itemData(deviceList->currentIndex()).toInt();
+ strncpy(profile[profileNum].mapName, text.toUtf8().data(), 31);
+ profile[profileNum].mapName[31] = 0;
+ profile[profileNum].preferredSlot = CONTROLLER1;
+
+ for(int i=BUTTON_FIRST; i<=BUTTON_LAST; i++)
+ profile[profileNum].map[i] = '*';
+
+ mapNameList->addItem(text, profileNum);