DlgPrefController::DlgPrefController(QWidget* parent, Controller* controller, ControllerManager* controllerManager, UserSettingsPointer pConfig) : DlgPreferencePage(parent), m_pConfig(pConfig), m_pControllerManager(controllerManager), m_pController(controller), m_pDlgControllerLearning(NULL), m_pInputTableModel(NULL), m_pInputProxyModel(NULL), m_pOutputTableModel(NULL), m_pOutputProxyModel(NULL), m_bDirty(false) { m_ui.setupUi(this); initTableView(m_ui.m_pInputMappingTableView); initTableView(m_ui.m_pOutputMappingTableView); initTableView(m_ui.m_pScriptsTableWidget); connect(m_pController, SIGNAL(presetLoaded(ControllerPresetPointer)), this, SLOT(slotPresetLoaded(ControllerPresetPointer))); // TODO(rryan): Eh, this really isn't thread safe but it's the way it's been // since 1.11.0. We shouldn't be calling Controller methods because it lives // in a different thread. Booleans (like isOpen()) are fine but a complex // object like a preset involves QHash's and other data structures that // really don't like concurrent access. ControllerPresetPointer pPreset = m_pController->getPreset(); slotPresetLoaded(pPreset); m_ui.labelDeviceName->setText(m_pController->getName()); QString category = m_pController->getCategory(); if (!category.isEmpty()) { m_ui.labelDeviceCategory->setText(category); } else { m_ui.labelDeviceCategory->hide(); } // When the user picks a preset, load it. connect(m_ui.comboBoxPreset, SIGNAL(activated(int)), this, SLOT(slotLoadPreset(int))); // When the user toggles the Enabled checkbox, toggle. connect(m_ui.chkEnabledDevice, SIGNAL(clicked(bool)), this, SLOT(slotEnableDevice(bool))); // Connect our signals to controller manager. connect(this, SIGNAL(openController(Controller*)), m_pControllerManager, SLOT(openController(Controller*))); connect(this, SIGNAL(closeController(Controller*)), m_pControllerManager, SLOT(closeController(Controller*))); connect(this, SIGNAL(loadPreset(Controller*, ControllerPresetPointer)), m_pControllerManager, SLOT(loadPreset(Controller*, ControllerPresetPointer))); // Input mappings connect(m_ui.btnAddInputMapping, SIGNAL(clicked()), this, SLOT(addInputMapping())); connect(m_ui.btnRemoveInputMappings, SIGNAL(clicked()), this, SLOT(removeInputMappings())); connect(m_ui.btnLearningWizard, SIGNAL(clicked()), this, SLOT(showLearningWizard())); connect(m_ui.btnClearAllInputMappings, SIGNAL(clicked()), this, SLOT(clearAllInputMappings())); // Output mappings connect(m_ui.btnAddOutputMapping, SIGNAL(clicked()), this, SLOT(addOutputMapping())); connect(m_ui.btnRemoveOutputMappings, SIGNAL(clicked()), this, SLOT(removeOutputMappings())); connect(m_ui.btnClearAllOutputMappings, SIGNAL(clicked()), this, SLOT(clearAllOutputMappings())); // Scripts connect(m_ui.m_pScriptsTableWidget, SIGNAL(cellChanged(int, int)), this, SLOT(slotDirty())); connect(m_ui.btnAddScript, SIGNAL(clicked()), this, SLOT(addScript())); connect(m_ui.btnRemoveScript, SIGNAL(clicked()), this, SLOT(removeScript())); connect(m_ui.btnOpenScript, SIGNAL(clicked()), this, SLOT(openScript())); }
void HidController::visit(const HidControllerPreset* preset) { m_preset = *preset; // Emit presetLoaded with a clone of the preset. emit(presetLoaded(getPreset())); }
void MidiController::visit(const MidiControllerPreset* preset) { m_preset = *preset; emit(presetLoaded(getPreset())); }