Skip to content

Commit

Permalink
Merge pull request #3634 from Be-ing/controller_visitors
Browse files Browse the repository at this point in the history
remove ControllerVisitor
  • Loading branch information
uklotzde authored Feb 15, 2021
2 parents 613d8f6 + 0a19f93 commit cf62c81
Show file tree
Hide file tree
Showing 8 changed files with 40 additions and 97 deletions.
6 changes: 0 additions & 6 deletions src/controllers/bulk/bulkcontroller.h
Original file line number Diff line number Diff line change
Expand Up @@ -53,12 +53,6 @@ class BulkController : public Controller {
void visit(const LegacyMidiControllerMapping* mapping) override;
void visit(const LegacyHidControllerMapping* mapping) override;

void accept(ControllerVisitor* visitor) override {
if (visitor) {
visitor->visit(this);
}
}

bool isMappable() const override {
return m_mapping.isMappable();
}
Expand Down
3 changes: 0 additions & 3 deletions src/controllers/controller.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@

#include "controllers/controllermappinginfo.h"
#include "controllers/controllermappingvisitor.h"
#include "controllers/controllervisitor.h"
#include "controllers/legacycontrollermapping.h"
#include "controllers/legacycontrollermappingfilehandler.h"
#include "controllers/scripting/legacy/controllerscriptenginelegacy.h"
Expand Down Expand Up @@ -38,8 +37,6 @@ class Controller : public QObject, ConstLegacyControllerMappingVisitor {
mapping.accept(this);
}

virtual void accept(ControllerVisitor* visitor) = 0;

// Returns a clone of the Controller's loaded mapping.
virtual LegacyControllerMappingPointer getMapping() const = 0;

Expand Down
12 changes: 0 additions & 12 deletions src/controllers/controllervisitor.h

This file was deleted.

92 changes: 40 additions & 52 deletions src/controllers/dlgcontrollerlearning.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ DlgControllerLearning::DlgControllerLearning(QWidget* parent,
Controller* controller)
: QDialog(parent),
m_pController(controller),
m_pMidiController(nullptr),
m_controlPickerMenu(this),
m_messagesLearned(false) {
qRegisterMetaType<MidiInputMappings>("MidiInputMappings");
Expand Down Expand Up @@ -206,9 +205,46 @@ void DlgControllerLearning::slotChooseControlPressed() {
void DlgControllerLearning::startListening() {
// Start listening as soon as we're on this page -- that way advanced
// users don't have to specifically click the "Learn" button.
// Get the underlying type of the Controller. This will call
// one of the visit() methods below immediately.
m_pController->accept(this);
// Disconnect everything in both directions so we don't end up with duplicate connections
// after pressing the "Learn Another" button
MidiController* pMidiController = qobject_cast<MidiController*>(m_pController);
VERIFY_OR_DEBUG_ASSERT(pMidiController) {
// DlgControllerLearning should have only been created by DlgController if
// the Controller was a MidiController.
qWarning() << "Only MIDI controllers are supported by the learning wizard.";
return;
}
pMidiController->disconnect(this);
this->disconnect(pMidiController);

connect(pMidiController,
&MidiController::messageReceived,
this,
&DlgControllerLearning::slotMessageReceived);

connect(this,
&DlgControllerLearning::learnTemporaryInputMappings,
pMidiController,
&MidiController::learnTemporaryInputMappings);
connect(this,
&DlgControllerLearning::clearTemporaryInputMappings,
pMidiController,
&MidiController::clearTemporaryInputMappings);

connect(this,
&DlgControllerLearning::commitTemporaryInputMappings,
pMidiController,
&MidiController::commitTemporaryInputMappings);
connect(this,
&DlgControllerLearning::startLearning,
pMidiController,
&MidiController::startLearning);
connect(this,
&DlgControllerLearning::stopLearning,
pMidiController,
&MidiController::stopLearning);

emit startLearning();
emit listenForClicks();
}

Expand Down Expand Up @@ -395,54 +431,6 @@ void DlgControllerLearning::commitMapping() {
emit inputMappingsLearned(m_mappings);
}

void DlgControllerLearning::visit(MidiController* pMidiController) {
// Disconnect everything in both directions so we don't end up with duplicate connections
// after pressing the "Learn Another" button
pMidiController->disconnect(this);
this->disconnect(pMidiController);

m_pMidiController = pMidiController;

connect(m_pMidiController,
&MidiController::messageReceived,
this,
&DlgControllerLearning::slotMessageReceived);

connect(this,
&DlgControllerLearning::learnTemporaryInputMappings,
m_pMidiController,
&MidiController::learnTemporaryInputMappings);
connect(this,
&DlgControllerLearning::clearTemporaryInputMappings,
m_pMidiController,
&MidiController::clearTemporaryInputMappings);

connect(this,
&DlgControllerLearning::commitTemporaryInputMappings,
m_pMidiController,
&MidiController::commitTemporaryInputMappings);
connect(this,
&DlgControllerLearning::startLearning,
m_pMidiController,
&MidiController::startLearning);
connect(this,
&DlgControllerLearning::stopLearning,
m_pMidiController,
&MidiController::stopLearning);

emit startLearning();
}

void DlgControllerLearning::visit(HidController* pHidController) {
qWarning() << "ERROR: DlgControllerLearning does not support HID devices.";
Q_UNUSED(pHidController);
}

void DlgControllerLearning::visit(BulkController* pBulkController) {
qWarning() << "ERROR: DlgControllerLearning does not support Bulk devices.";
Q_UNUSED(pBulkController);
}

DlgControllerLearning::~DlgControllerLearning() {
// If the user hit done, we should save any pending mappings.
if (m_messagesLearned) {
Expand Down
7 changes: 0 additions & 7 deletions src/controllers/dlgcontrollerlearning.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
#include "controllers/bulk/bulkcontroller.h"
#include "controllers/midi/midimessage.h"
#include "controllers/controller.h"
#include "controllers/controllervisitor.h"
#include "preferences/usersettings.h"

class LegacyControllerMapping;
Expand All @@ -23,18 +22,13 @@ class LegacyControllerMapping;

/// The controller mapping learning wizard
class DlgControllerLearning : public QDialog,
public ControllerVisitor,
public Ui::DlgControllerLearning {
Q_OBJECT

public:
DlgControllerLearning(QWidget *parent, Controller *controller);
virtual ~DlgControllerLearning();

void visit(MidiController* pController);
void visit(HidController* pController);
void visit(BulkController* pController);

signals:
void learnTemporaryInputMappings(const MidiInputMappings& mappings);
void clearTemporaryInputMappings();
Expand Down Expand Up @@ -83,7 +77,6 @@ class DlgControllerLearning : public QDialog,
void populateComboBox();

Controller* m_pController;
MidiController* m_pMidiController;
ControlPickerMenu m_controlPickerMenu;
ConfigKey m_currentControl;
bool m_messagesLearned;
Expand Down
6 changes: 0 additions & 6 deletions src/controllers/hid/hidcontroller.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,6 @@ class HidController final : public Controller {
void visit(const LegacyMidiControllerMapping* mapping) override;
void visit(const LegacyHidControllerMapping* mapping) override;

void accept(ControllerVisitor* visitor) override {
if (visitor) {
visitor->visit(this);
}
}

bool isMappable() const override {
return m_mapping.isMappable();
}
Expand Down
6 changes: 0 additions & 6 deletions src/controllers/midi/midicontroller.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,6 @@ class MidiController : public Controller {
void visit(const LegacyMidiControllerMapping* mapping) override;
void visit(const LegacyHidControllerMapping* mapping) override;

void accept(ControllerVisitor* visitor) override {
if (visitor) {
visitor->visit(this);
}
}

bool isMappable() const override {
return m_mapping.isMappable();
}
Expand Down
5 changes: 0 additions & 5 deletions src/test/controller_mapping_validation_test.h
Original file line number Diff line number Diff line change
Expand Up @@ -51,11 +51,6 @@ class FakeController : public Controller {
m_hidMapping = *mapping;
}

void accept(ControllerVisitor* visitor) override {
// Do nothing since we aren't a normal controller.
Q_UNUSED(visitor);
}

bool isMappable() const override;

bool matchMapping(const MappingInfo& mapping) override {
Expand Down

0 comments on commit cf62c81

Please sign in to comment.